From d4708602ac2ec4f23161ae154eb86e3f6a2740fb Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 14 Feb 2015 17:58:29 +0100 Subject: 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? --- archivemodel.cpp | 12 ++++++++++++ archivemodel.h | 1 + shemov.cpp | 23 +++++++++++++++++++++++ shemov.h | 2 ++ 4 files changed, 38 insertions(+) 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 fileIds); bool deleteSeriesPart(int partId); bool addSeriesPart(int partno, QString subtitle, const QModelIndex &parent); + int seriesPartIdFromMd5(const QString &md5); signals: void needRefresh(); diff --git a/shemov.cpp b/shemov.cpp index 74352b0..9158106 100644 --- a/shemov.cpp +++ b/shemov.cpp @@ -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); + } +} diff --git a/shemov.h b/shemov.h index 81126b1..5675aeb 100644 --- a/shemov.h +++ b/shemov.h @@ -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; -- cgit v1.2.3-70-g09d2