diff options
author | Arno <am@disconnect.de> | 2015-02-14 17:58:29 +0100 |
---|---|---|
committer | Arno <am@disconnect.de> | 2015-02-14 17:58:29 +0100 |
commit | d4708602ac2ec4f23161ae154eb86e3f6a2740fb (patch) | |
tree | a365d3516801e18bc7f6c0d21c7a74c7f1732423 | |
parent | afdb93e180808af02995053eb973d593a3545d55 (diff) | |
download | SheMov-d4708602ac2ec4f23161ae154eb86e3f6a2740fb.tar.gz SheMov-d4708602ac2ec4f23161ae154eb86e3f6a2740fb.tar.bz2 SheMov-d4708602ac2ec4f23161ae154eb86e3f6a2740fb.zip |
Implement gotoArchive
New context menu item for Filesystemwidget: select the seriespart when
goto archive is triggered... Selecting the partId from ArchiveModel was
deceptibly simple. Doom impending?
-rw-r--r-- | archivemodel.cpp | 12 | ||||
-rw-r--r-- | archivemodel.h | 1 | ||||
-rw-r--r-- | shemov.cpp | 23 | ||||
-rw-r--r-- | shemov.h | 2 |
4 files changed, 38 insertions, 0 deletions
diff --git a/archivemodel.cpp b/archivemodel.cpp index 1d6c8d0..695dd09 100644 --- a/archivemodel.cpp +++ b/archivemodel.cpp @@ -580,6 +580,18 @@ bool ArchiveModel::addSeriesPart(int partno, QString subtitle, const QModelIndex return false; } +int ArchiveModel::seriesPartIdFromMd5(const QString &md5){ + QSqlQuery partsIdQ(mDb); + partsIdQ.prepare("SELECT iseriespart_id FROM files WHERE cmd5sum = :md5"); + partsIdQ.bindValue(":md5", md5); + int retval = -1; + partsIdQ.exec(); + while(partsIdQ.next()){ + retval = partsIdQ.value(0).toInt(); + } + return retval; +} + void ArchiveModel::setOrder(int order) { mOrder = order; SmTreeItem *rootItem = readCache(mOrder); diff --git a/archivemodel.h b/archivemodel.h index 00bd46b..8dd60f8 100644 --- a/archivemodel.h +++ b/archivemodel.h @@ -55,6 +55,7 @@ class ArchiveModel : public SmTreeModel { void removeFiles(const QList<int> fileIds); bool deleteSeriesPart(int partId); bool addSeriesPart(int partno, QString subtitle, const QModelIndex &parent); + int seriesPartIdFromMd5(const QString &md5); signals: void needRefresh(); @@ -21,6 +21,7 @@ #include "shemov.h" #include "filesystemwidget.h" +#include "filesystemfileproxy.h" #include "fileview.h" #include "configurationdialog.h" #include "statisticsdialog.h" @@ -435,6 +436,8 @@ void SheMov::createActions(){ connect(mCdupA, SIGNAL(triggered()), mFSWidget, SLOT(parentDir())); mBackDirA = new QAction(QIcon(":/back_dick.png"), tr("Go back"), this); connect(mBackDirA, SIGNAL(triggered()), mFSWidget, SLOT(goBack())); + mGotoArchiveA = new QAction(tr("Goto archive..."), this); + connect(mGotoArchiveA, SIGNAL(triggered()), this, SLOT(gotoArchive())); mMarkFilesA = new QAction(tr("Select files..."), this); mMarkFilesA->setShortcut(tr("CTRL++")); mMarkFilesA->setShortcut(QKeySequence(Qt::CTRL + Qt::KeypadModifier + Qt::Key_Plus)); @@ -762,6 +765,7 @@ void SheMov::createMenus(){ mEditFSMenu = new QMenu(tr("&Edit"), this); mEditFSMenu->addAction(mCdupA); mEditFSMenu->addAction(mBackDirA); + mEditFSMenu->addAction(mGotoArchiveA); mEditFSMenu->addSeparator(); mEditFSMenu->addAction(mMarkFilesA); mEditFSMenu->addAction(mUnmarkFilesA); @@ -870,6 +874,7 @@ void SheMov::createMenus(){ mFSWidget->fileView()->addAction(mCdupA); mFSWidget->fileView()->addAction(mBackDirA); + mFSWidget->fileView()->addAction(mGotoArchiveA); mFSWidget->fileView()->addAction(createSeparator()); mFSWidget->fileView()->addAction(mMarkFilesA); //Menu text: Select files... @@ -1140,3 +1145,21 @@ void SheMov::searchResult(int seriesPartId){ c->archiveTree()->setFocus(); c->setSeriesPart(seriesPartId); } + +void SheMov::gotoArchive(){ + const QModelIndexList idxs = mFSWidget->fileView()->selectionModel()->selectedRows(SmDirModel::Md5sum); + if(idxs.isEmpty()){ + return; + } + QModelIndex first = idxs.first(); + if(first.data(SmDirModel::PresentRole).toInt() == SmDirModel::InNone){ + return; + } + QString md5Sum = first.data(SmDirModel::Md5sumRole).toString(); + ArchiveController *c = SmGlobals::instance()->archiveController(); + int seriesPartId = c->archiveTreeModel()->seriesPartIdFromMd5(md5Sum); + if(seriesPartId != -1){ + c->setSeriesPart(seriesPartId); + mTab->setCurrentIndex(Movies); + } +} @@ -55,6 +55,7 @@ class SheMov : public QMainWindow { void skipForward(); void skipBack(); void searchResult(int seriesPartId); + void gotoArchive(); void analyzeActors(); void analyzeGenres(); @@ -96,6 +97,7 @@ class SheMov : public QMainWindow { QAction *mRenameA; QAction *mCdupA; QAction *mBackDirA; + QAction *mGotoArchiveA; QAction *mMountDvdA; QAction *mConfigA; QAction *mAboutShemovA; |