summaryrefslogtreecommitdiffstats
path: root/actorwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'actorwidget.cpp')
-rw-r--r--actorwidget.cpp251
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;
-}