diff options
Diffstat (limited to 'actorwidget.cpp')
-rw-r--r-- | actorwidget.cpp | 251 |
1 files changed, 0 insertions, 251 deletions
diff --git a/actorwidget.cpp b/actorwidget.cpp deleted file mode 100644 index dac6a9b..0000000 --- a/actorwidget.cpp +++ /dev/null @@ -1,251 +0,0 @@ -#include <QLineEdit> -#include <QLabel> -#include <QPushButton> -#include <QTreeView> -#include <QHBoxLayout> -#include <QVBoxLayout> -#include <QGridLayout> -#include <QStandardItemModel> -#include <QStandardItem> -#include <QTreeView> -#include <QToolBar> -#include <QMenuBar> -#include <QSortFilterProxyModel> -#include <QHeaderView> -#include <QProgressBar> -#include <QSqlDatabase> -#include <QSqlQuery> -#include <QApplication> -#include <QSettings> - -#include "actorwidget.h" -#include "globals.h" - -ActorWidget::ActorWidget(QWidget *parent) : QWidget(parent) { - mDb = QSqlDatabase::database("shemovdb"); - if(!mDb.isOpen()){ - mDb.open(); - } - mAllQ = QSqlQuery(mDb); - mAllQ.prepare("SELECT tactorname, iactors_id FROM actors ORDER BY tactorname"); - mSeriesQ = QSqlQuery(mDb); - mSeriesQ.prepare("SELECT series.tseries_name FROM series, seriesparts_actormap, seriesparts, actors WHERE series.iseries_id = seriesparts.iseries_id AND seriesparts.iseriesparts_id = seriesparts_actormap.iseriesparts_id AND seriesparts_actormap.iactors_id = actors.iactors_id AND actors.iactors_id = :id GROUP BY series.iseries_id, series.tseries_name ORDER BY series.tseries_name"); - mGenresQ = QSqlQuery(mDb); - mGenresQ.prepare("SELECT DISTINCT(genres.tgenrename) FROM genres, seriesparts, seriesparts_actormap, seriesparts_genremap WHERE seriesparts_actormap.iseriesparts_id = seriesparts.iseriesparts_id AND seriesparts.iseriesparts_id = seriesparts_genremap.iseriesparts_id AND seriesparts_genremap.igenres_id = genres.igenres_id AND seriesparts_actormap.iactors_id = :id ORDER BY genres.tgenrename"); - mCountQ = QSqlQuery(mDb); - mCountQ.prepare("SELECT COUNT(*) FROM actors"); - setupGui(); -} - -ActorWidget::~ActorWidget(){ - writeSettings(); -} - -void ActorWidget::gatherData(){ - mProgress->reset(); - mProgress->setMaximum(0); - mCountQ.exec(); - while(mCountQ.next()){ - mProgress->setMaximum(mCountQ.value(0).toInt()); - } - mActorModel->clear(); - mActorModel->setHorizontalHeaderLabels(QStringList() << QChar(0x26A7) << tr("Name")); - int count = 0; - QStandardItem *root = mActorModel->invisibleRootItem(); - qApp->processEvents(); - - mAllQ.exec(); - while(mAllQ.next()){ - QList<QStandardItem*> aData = emptyList(); - aData[IconColumn]->setIcon(QIcon(":/huge_bra.png")); - int aId = mAllQ.value(1).toInt(); - aData[IconColumn]->setData(aId, IdRole); - aData[NameColumn]->setText(mAllQ.value(0).toString()); - root->appendRow(aData); - mProgress->setValue(++count); - } - mActorView->resizeColumnToContents(IconColumn); -} - -void ActorWidget::gatherSeries(){ - QModelIndexList sel = mActorView->selectionModel()->selectedRows(); - if(sel.isEmpty()){ - return; - } - mSeriesModel->clear(); - mSeriesModel->setHorizontalHeaderLabels(QStringList() << QChar(0x2640) << tr("Series")); - QStandardItem *root = mSeriesModel->invisibleRootItem(); - QModelIndex idx = sel.at(0); - QVariant id = idx.data(IdRole); - mSeriesQ.bindValue(":id", id); - mSeriesQ.exec(); - while(mSeriesQ.next()){ - QList<QStandardItem*> data = emptyList(); - data[IconColumn]->setIcon(QIcon(":/higheels.png")); - data[NameColumn]->setText(mSeriesQ.value(0).toString()); - root->appendRow(data); - } - mSeriesView->resizeColumnToContents(IconColumn); -} - -void ActorWidget::gatherGenres(){ - QModelIndexList sel = mActorView->selectionModel()->selectedRows(); - if(sel.isEmpty()){ - return; - } - mGenresModel->clear(); - mGenresModel->setHorizontalHeaderLabels(QStringList() << QChar(0x26A4) << tr("Genres")); - QStandardItem *root = mGenresModel->invisibleRootItem(); - QModelIndex idx = sel.at(0); - QVariant id = idx.data(IdRole); - mGenresQ.bindValue(":id", id); - mGenresQ.exec(); - while(mGenresQ.next()){ - QList<QStandardItem*> data = emptyList(); - data[IconColumn]->setIcon(QIcon(":/hourglass_figure.png")); - data[NameColumn]->setText(mGenresQ.value(0).toString()); - root->appendRow(data); - } - mGenresView->resizeColumnToContents(IconColumn); -} - -void ActorWidget::filter(){ - QString fs = mActor->text(); - mProxy->setFilterRegExp(fs); - if(fs.isEmpty()){ - mProxy->invalidate(); - } - mActorView->setFocus(); - if(mActorModel->rowCount()){ - QModelIndex idx = mActorModel->index(0, 0); - mActorView->selectionModel()->select(idx, QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows); - } -} - -void ActorWidget::clearFilter(){ - mActor->clear(); - filter(); - mActor->setFocus(); -} - -void ActorWidget::readSettings(){ - QSettings s; - QString f = s.value("actors/filter").toString(); - mActor->setText(f); - filter(); - QString n = s.value("actors/selectedactor").toString(); - QList<QStandardItem*> itemL = mActorModel->findItems(n, Qt::MatchExactly, NameColumn); - if(!itemL.isEmpty()){ - QModelIndex cur = mActorModel->indexFromItem(itemL.first()); - QModelIndex real = mProxy->mapFromSource(cur); - mActorView->selectionModel()->select(real, QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows); - } - mActorView->header()->restoreState(s.value("actors/actorheaders").toByteArray()); -} - -void ActorWidget::writeSettings(){ - QSettings s; - s.setValue("actors/filter", mActor->text()); - QModelIndexList sel = mActorView->selectionModel()->selectedRows(NameColumn); - if(!sel.isEmpty()){ - s.setValue("actors/selectedactor", sel.first().data()); - } - s.setValue("actors/actorheaders", mActorView->header()->saveState()); -} - -void ActorWidget::setupGui(){ - mActor = new QLineEdit; - connect(mActor, &QLineEdit::returnPressed, this, &ActorWidget::filter); - QLabel *filterL = new QLabel(tr("&Filter")); - filterL->setBuddy(mActor); - QPushButton *doFilter = new QPushButton(tr("Filter")); - connect(doFilter, &QPushButton::clicked, this, &ActorWidget::filter); - QPushButton *doClearFilter = new QPushButton(tr("&Clear")); - connect(doClearFilter, &QPushButton::clicked, this, &ActorWidget::clearFilter); - QHBoxLayout *buttonLayout = new QHBoxLayout; - buttonLayout->addWidget(filterL); - buttonLayout->addWidget(mActor); - buttonLayout->addWidget(doFilter); - buttonLayout->addWidget(doClearFilter); - - mActorView = new QTreeView; - mActorView->setSortingEnabled(true); - mActorView->setSelectionBehavior(QAbstractItemView::SelectRows); - mActorView->setSelectionMode(QAbstractItemView::SingleSelection); - mActorModel = new QStandardItemModel; - mProxy = new QSortFilterProxyModel; - mProxy->setSourceModel(mActorModel); - mProxy->setFilterKeyColumn(NameColumn); - mActorView->setModel(mProxy); - connect(mActorView->selectionModel(), &QItemSelectionModel::selectionChanged, this, &ActorWidget::gatherSeries); - connect(mActorView->selectionModel(), &QItemSelectionModel::selectionChanged, this, &ActorWidget::gatherGenres); - - mSeriesView = new QTreeView; - mSeriesView->setSelectionBehavior(QAbstractItemView::SelectRows); - mSeriesView->setSelectionMode(QAbstractItemView::ExtendedSelection); - mSeriesModel = new QStandardItemModel; - mSeriesView->setModel(mSeriesModel); - - mGenresView = new QTreeView; - mGenresView->setSelectionBehavior(QAbstractItemView::SelectRows); - mGenresView->setSelectionMode(QAbstractItemView::ExtendedSelection); - mGenresModel = new QStandardItemModel; - mGenresView->setModel(mGenresModel); - - QGridLayout *viewGridL = new QGridLayout; - viewGridL->addWidget(new QLabel(tr("Series")), 0, 0); - viewGridL->addWidget(new QLabel(tr("Genres")), 0, 1); - viewGridL->addWidget(mSeriesView, 1, 0); - viewGridL->addWidget(mGenresView, 1, 1); - - mMenuBar = new QMenuBar; - mToolBar = new QToolBar; - mToolBar->setIconSize(QSize(16, 16)); - createActions(); - - QVBoxLayout *mainLayout = new QVBoxLayout; - mainLayout->addWidget(mMenuBar); - mainLayout->addWidget(mToolBar); - mainLayout->addLayout(buttonLayout); - mainLayout->addWidget(new QLabel(tr("Found"))); - mainLayout->addWidget(mActorView); - mainLayout->addLayout(viewGridL); - setLayout(mainLayout); -} - -void ActorWidget::createActions(){ - QAction *refreshA = new QAction(QIcon(":/refresh.png"), tr("Refersh"), this); - connect(refreshA, &QAction::triggered, this, &ActorWidget::gatherData); - refreshA->setShortcut(tr("CTRL+R")); - - QMenu *fileMenu = new QMenu(tr("&File"), this); - fileMenu->addAction(Globals::instance()->action(Globals::QuitAction)); - - QMenu *editMenu = new QMenu(tr("&Edit"), this); - editMenu->addAction(refreshA); - editMenu->addSeparator(); - editMenu->addAction(Globals::instance()->action(Globals::ConfigAction)); - - mMenuBar->addMenu(fileMenu); - mMenuBar->addMenu(editMenu);; - - mToolBar->addAction(refreshA); - mToolBar->addAction(createSeparator()); - mToolBar->addAction(Globals::instance()->action(Globals::ConfigAction)); -} - -QList<QStandardItem*> ActorWidget::emptyList(){ - QList<QStandardItem*> retval; - for(int i = 0; i < ColumnCount; ++i){ - QStandardItem *item = new QStandardItem; - item->setEditable(false); - retval << item; - } - return retval; -} - -QAction *ActorWidget::createSeparator(){ - QAction *retval = new QAction(this); - retval->setSeparator(true); - return retval; -} |