summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2015-02-14 17:58:29 +0100
committerArno <am@disconnect.de>2015-02-14 17:58:29 +0100
commitd4708602ac2ec4f23161ae154eb86e3f6a2740fb (patch)
treea365d3516801e18bc7f6c0d21c7a74c7f1732423
parentafdb93e180808af02995053eb973d593a3545d55 (diff)
downloadSheMov-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.cpp12
-rw-r--r--archivemodel.h1
-rw-r--r--shemov.cpp23
-rw-r--r--shemov.h2
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();
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;