diff options
-rw-r--r-- | archivetreeview.cpp | 178 | ||||
-rw-r--r-- | archivetreeview.h | 58 | ||||
-rw-r--r-- | shemov.cpp | 17 | ||||
-rw-r--r-- | shemov.h | 2 |
4 files changed, 0 insertions, 255 deletions
diff --git a/archivetreeview.cpp b/archivetreeview.cpp index 4bcf584..2ccc043 100644 --- a/archivetreeview.cpp +++ b/archivetreeview.cpp @@ -83,9 +83,6 @@ ArchiveTreeView::ArchiveTreeView(QWidget *parent) : QWidget(parent), mShowAllFil verticalSplitter->setStretchFactor(1, 1); // misc - mNoCoverDialog = new NoCoverMovieDialog(this); - mNoCoverDialog->setHidden(true); - connect(mNoCoverDialog->view(), SIGNAL(doubleClicked(QModelIndex)), this, SLOT(selectMovie(QModelIndex))); mFilesWidget->filesTree()->setAlternatingRowColors(true); mSeriesWidget->seriesTree()->setAlternatingRowColors(true); @@ -174,10 +171,6 @@ void ArchiveTreeView::cleanDatabase(const QString &table){ } } -void ArchiveTreeView::showNoCoverDialog(){ - mNoCoverDialog->show(); -} - void ArchiveTreeView::selectMoviePart(int seriespartId, int seriesId){ QModelIndex seriesIdx = mSeriesModel->findValue(seriesId, QModelIndex(), SeriesTreeModel::SeriesId); QModelIndex partIdx = mSeriesModel->findValue(seriespartId, seriesIdx, SeriesTreeModel::SeriesPartId); @@ -189,24 +182,6 @@ void ArchiveTreeView::selectMoviePart(int seriespartId, int seriesId){ } } -void ArchiveTreeView::selectMovie(const QModelIndex &idx){ - if(!idx.isValid()){ - return; - } - QVariant movieName = idx.data(NoCoverMovieModel::SeriesNameRole); - QVariant part = idx.data(NoCoverMovieModel::SeriesPartRole); - QModelIndex movieIdx = mSeriesModel->findValue(movieName, QModelIndex(), SeriesTreeModel::Name); - if(!movieIdx.isValid()){ - return; - } - QModelIndex partIdx = mSeriesModel->findValue(part, movieIdx, SeriesTreeModel::SeriesPart, 0); - QModelIndex toSelect = partIdx.isValid() ? mSeriesWidget->seriesProxy()->mapFromSource(partIdx) : mSeriesWidget->seriesProxy()->mapFromSource(movieIdx); - mSeriesWidget->seriesTree()->expand(mSeriesWidget->seriesProxy()->mapFromSource(movieIdx)); - mSeriesWidget->seriesTree()->selectionModel()->select(toSelect, QItemSelectionModel::Clear | QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows); - mSeriesWidget->seriesTree()->scrollTo(toSelect, QAbstractItemView::PositionAtCenter); - mNoCoverDialog->hide(); -} - void ArchiveTreeView::copyPath(int type){ QModelIndexList selected = mFilesWidget->filesTree()->selectionModel()->selectedRows(); if(selected.isEmpty()){ @@ -363,156 +338,3 @@ const QString ArchiveTreeView::createWindowsPath(const QString &path) const{ retval = QString("%1\\%2").arg(s.value("paths/windowsdrive").toString()).arg(retval); return retval; } - -//NoCoverMovieModel - -NoCoverMovieModel::NoCoverMovieModel(const QStringList &headers, QObject *parent) : SmTreeModel(headers, parent){ - mDb = QSqlDatabase::database("treedb"); - mDataQuery = new QSqlQuery(mDb); - mDataQuery->prepare("SELECT files.iseriespart_id, series.tseries_name, seriesparts.iseriespart FROM files, series, seriesparts WHERE files.iseriespart_id = seriesparts.iseriesparts_id AND seriesparts.iseries_id = series.iseries_id GROUP BY files.iseriespart_id,series.tseries_name,seriesparts.iseriespart HAVING COUNT(iseriespart_id) = 1 ORDER BY series.tseries_name"); - refresh(); -} - -NoCoverMovieModel::~NoCoverMovieModel(){ - delete mDataQuery; - mDb = QSqlDatabase(); -} - -QVariant NoCoverMovieModel::data(const QModelIndex &index, int role) const{ - if(!index.isValid()){ - return QVariant(); - } - SmTreeItem *item = itemAt(index); - if(role == SeriesNameRole){ - return item->data(SeriesName); - } - if(role == SeriesPartRole){ - return item->data(SeriesPart); - } - if(role == SeriesIdRole){ - return item->data(SeriesId); - } - return SmTreeModel::data(index, role); -} void populate(); - - -void NoCoverMovieModel::refresh(){ - SmTreeItem *rootItem = new SmTreeItem(4); - mDataQuery->exec(); - while(mDataQuery->next()){ - QString displayName = QString("%1 %2").arg(mDataQuery->value(1).toString()).arg(QString::number(mDataQuery->value(2).toInt())); - QList<QVariant> data; - data << displayName << mDataQuery->value(1) << mDataQuery->value(2) << mDataQuery->value(0); - SmTreeItem *child = new SmTreeItem(data, rootItem); - rootItem->appendChild(child); - } - setRoot(rootItem); - emit refreshed(); -} - -Qt::ItemFlags NoCoverMovieModel::flags(const QModelIndex &index) const{ - if(!index.isValid()){ - return 0; - } - return Qt::ItemIsSelectable | Qt::ItemIsEnabled; -} - -//NoCoverMovieView - -NoCoverMovieView::NoCoverMovieView(QWidget *parent) : QTreeView(parent) {} - -void NoCoverMovieView::contextMenuEvent(QContextMenuEvent *e){ - QMenu ctxMenu; - foreach(QAction *a, actions()){ - ctxMenu.addAction(a); - } - ctxMenu.exec(e->globalPos()); -} - -//NoCoverMovieDialog - -NoCoverMovieDialog::NoCoverMovieDialog(QWidget *parent, Qt::WindowFlags flags) : SmDialog(parent, flags){ - //model + view - mView = new NoCoverMovieView; - QStringList headers = QStringList() << "Movie" << "Name" << "Part" << "Id"; - mModel = new NoCoverMovieModel(headers, this); - mView->setModel(mModel); - connect(mModel, SIGNAL(refreshed()), this, SLOT(updateLabel())); - mView->setColumnHidden(1, true); - mView->setColumnHidden(2, true); - mView->setColumnHidden(3, true); - mView->resizeColumnToContents(0); - - //actions - mBrowserA = new QAction(tr("Search with google..."), this); - connect(mBrowserA, SIGNAL(triggered()), this, SLOT(openInBrowser())); - mView->addAction(mBrowserA); - mCopyA = new QAction(tr("Copy name"), this); - connect(mCopyA, SIGNAL(triggered()), this, SLOT(copyToClipboard())); - mView->addAction(mCopyA); - - //buttons - QHBoxLayout *buttonLayout = new QHBoxLayout; - mClose = new QPushButton(tr("Close")); - connect(mClose, SIGNAL(clicked()), this, SLOT(hide())); - mRefresh = new QPushButton(tr("Refresh")); - connect(mRefresh, SIGNAL(clicked()), mModel, SLOT(refresh())); - buttonLayout->addWidget(mRefresh); - buttonLayout->addStretch(); - buttonLayout->addWidget(mClose); - - //label - mMovieLabel = new QLabel(labelText()); - - //main - QVBoxLayout *mainLayout = new QVBoxLayout; - mainLayout->addWidget(mMovieLabel); - mainLayout->addWidget(mView); - mainLayout->addLayout(buttonLayout); - setLayout(mainLayout); -} - -void NoCoverMovieDialog::openInBrowser(){ - QString selText = selectedText(); - if(selText.isEmpty()){ - return; - } - selText.append(" covers"); - QByteArray searchString = QUrl::toPercentEncoding(selText); - QString url = QString("http://www.google.com/search?hl=en&q=%1").arg(QString(searchString)); - QStringList args = QStringList() << "openURL" << url; - bool success = QProcess::startDetached("kfmclient", args); - if(!success){ - QMessageBox::critical(this, tr("Error"), tr("Launching browser failed. Most likely kfmclient is not installed")); - } -} - -void NoCoverMovieDialog::copyToClipboard(){ - QString selText = selectedText(); - if(selText.isEmpty()){ - return; - } - QClipboard *clip = QApplication::clipboard(); - clip->setText(selText); -} - -void NoCoverMovieDialog::updateLabel(){ - mMovieLabel->setText(labelText()); -} - -const QString NoCoverMovieDialog::selectedText() const{ - QModelIndexList selected = mView->selectionModel()->selectedRows(); - if(selected.isEmpty()){ - return QString(); - } - QModelIndex real = mModel->index(selected.at(0).row(), 0, selected.at(0).parent()); - if(!real.isValid()){ - return QString(); - } - return real.data().toString(); -} - -const QString NoCoverMovieDialog::labelText() const{ - QString retval = QString(tr("Movies without covers (%1)")).arg(QString::number(mModel->rowCount(QModelIndex()))); - return retval; -} diff --git a/archivetreeview.h b/archivetreeview.h index f784d14..5013414 100644 --- a/archivetreeview.h +++ b/archivetreeview.h @@ -49,8 +49,6 @@ class ArchiveTreeView : public QWidget void setFileViewMode(int mode); void showAllFiles(bool toggled); void cleanDatabase(const QString &table); - void showNoCoverDialog(); - void selectMovie(const QModelIndex &idx); void selectMoviePart(int seriespartId, int seriesId); void copyPath(int type); void readSettings(); @@ -84,60 +82,4 @@ class ArchiveTreeView : public QWidget NoCoverMovieDialog *mNoCoverDialog; bool mShowAllFiles; }; - -class NoCoverMovieModel : public SmTreeModel { - Q_OBJECT - public: - enum CustomRoles { SeriesNameRole = Qt::UserRole + 1, SeriesPartRole = Qt::UserRole + 2, SeriesIdRole = Qt::UserRole + 3 }; - enum Fields { Display = 0, SeriesName = 1, SeriesPart = 2, SeriesId = 3 }; - explicit NoCoverMovieModel(const QStringList &headers, QObject *parent = 0); - virtual ~NoCoverMovieModel(); - virtual QVariant data(const QModelIndex &index, int role) const; - Qt::ItemFlags flags(const QModelIndex &index) const; - - public slots: - void refresh(); - - signals: - void refreshed(); - - private: - QSqlDatabase mDb; - QSqlQuery *mDataQuery; -}; - -class NoCoverMovieView : public QTreeView { - Q_OBJECT - public: - explicit NoCoverMovieView(QWidget *parent = 0); - virtual ~NoCoverMovieView() {} - - protected: - void contextMenuEvent(QContextMenuEvent *e); -}; - -class NoCoverMovieDialog : public SmDialog { - Q_OBJECT - public: - explicit NoCoverMovieDialog(QWidget *parent = 0, Qt::WindowFlags flags = 0); - virtual ~NoCoverMovieDialog() {} - NoCoverMovieView *view() { return mView; } - - private slots: - void openInBrowser(); - void copyToClipboard(); - void updateLabel(); - - private: - const QString selectedText() const; - const QString labelText() const; - QPushButton *mClose; - QPushButton *mRefresh; - NoCoverMovieView *mView; - NoCoverMovieModel *mModel; - QLabel *mMovieLabel; - QAction *mCopyA; - QAction *mBrowserA; -}; - #endif @@ -326,16 +326,6 @@ void SheMov::createActions(){ connect(mNewMovieWizardA, SIGNAL(triggered()), this, SLOT(newMovieWizard())); mArchiveSelectedA = new QAction(tr("Archive selected..."), this); connect(mArchiveSelectedA, SIGNAL(triggered()), this, SLOT(newMovieWizardWithFiles())); - mCleanupMapper = new QSignalMapper(this); - mCleanupGroup = new QActionGroup(this); - QAction *cleanup1 = new QAction(tr("Cleanup actors..."), this); - connect(cleanup1, SIGNAL(triggered()), mCleanupMapper, SLOT(map())); - mCleanupMapper->setMapping(cleanup1, "actors"); - mCleanupGroup->addAction(cleanup1); - QAction *cleanup2 = new QAction(tr("Cleanup genres..."), this); - connect(cleanup2, SIGNAL(triggered()), mCleanupMapper, SLOT(map())); - mCleanupMapper->setMapping(cleanup2, "genres"); - mCleanupGroup->addAction(cleanup2); mConsistencyA = new QAction(tr("Check consisteny..."), this); connect(mConsistencyA, SIGNAL(triggered()), this, SLOT(checkConsistency())); mAnalyzerA = new QAction(tr("Analyze Db..."), this); @@ -611,11 +601,7 @@ void SheMov::createActions(){ mOpenWithMapperAV = new QSignalMapper(this); connect(mOpenWithMapperFS, SIGNAL(mapped(QString)), mFSWidget, SLOT(playSelected(QString))); connect(mOpenWithMapperAV, SIGNAL(mapped(QString)), mATree, SLOT(playSelected(QString))); - connect(mCleanupMapper, SIGNAL(mapped(QString)), mATree, SLOT(cleanDatabase(QString))); connect(viewMapper, SIGNAL(mapped(int)), mATree, SLOT(setFileViewMode(int))); - - //hover - } void SheMov::createMenus(){ @@ -624,9 +610,6 @@ void SheMov::createMenus(){ fileMenu->addAction(mPlaySelectedFSA); fileMenu->addSeparator(); fileMenu->addAction(mNewMovieWizardA); - QMenu *cleanupMenu = new QMenu(tr("Clean database"), this); - cleanupMenu->addActions(mCleanupGroup->actions()); - fileMenu->addMenu(cleanupMenu); fileMenu->addAction(mConsistencyA); fileMenu->addAction(mAnalyzerA); fileMenu->addAction(mShowNoCoverDialogA); @@ -159,7 +159,6 @@ class SheMov : public QMainWindow { QActionGroup *mOpenWithGroupFS; QActionGroup *mOpenWithGroupAV; - QActionGroup *mCleanupGroup; QActionGroup *mFilesTreeHeadersGroup; QActionGroup *mEditGroup; //EndActions @@ -167,7 +166,6 @@ class SheMov : public QMainWindow { QSignalMapper *mRenameMapper; QSignalMapper *mOpenWithMapperFS; QSignalMapper *mOpenWithMapperAV; - QSignalMapper *mCleanupMapper; QSignalMapper *mFilterMapper; QMenu *mEditFSMenu; |