diff options
-rw-r--r-- | archivebrowser.cpp | 24 | ||||
-rw-r--r-- | archivebrowser.h | 1 | ||||
-rw-r--r-- | shemov.cpp | 6 | ||||
-rw-r--r-- | shemov.h | 1 |
4 files changed, 32 insertions, 0 deletions
diff --git a/archivebrowser.cpp b/archivebrowser.cpp index d0c06be..5c919e2 100644 --- a/archivebrowser.cpp +++ b/archivebrowser.cpp @@ -15,12 +15,14 @@ #include <QDir> #include <QFileInfo> #include <QSortFilterProxyModel> +#include <QProcess> #include "archivebrowser.h" #include "archivebrowsermodel.h" #include "smtreeview.h" #include "smglobals.h" #include "delegates.h" +#include "helper.h" ArchiveBrowser::ArchiveBrowser(QWidget *parent) : QWidget(parent), mSelectedSize(0), mSelectedItems(0){ //prep @@ -139,6 +141,28 @@ void ArchiveBrowser::refresh() { mModel->refresh(); } +void ArchiveBrowser::playCurrent(){ + QPair<QString, QStringList> pgdata = Helper::programData("movieviewer"); + QModelIndexList sel = mTree->selectionModel()->selectedRows(); + QStringList movieFiles; + foreach(QModelIndex idx, sel){ + QModelIndex real = mProxy->mapToSource(idx); + QModelIndexList children = mModel->children(real); + foreach(QModelIndex ci, children){ + if(ci.data(ArchiveBrowserModel::FileTypeRole).toInt() == 1){ + movieFiles << ci.data(ArchiveBrowserModel::FullPathRole).toString(); + } + } + } + if(movieFiles.isEmpty()){ + return; + } + QString prg = pgdata.first; + QStringList args = pgdata.second; + args.append(movieFiles); + QProcess::startDetached(prg, args); +} + void ArchiveBrowser::setupQualityFilter(){ mQualityFilter->clear(); QList<int> qualities = mModel->availableQualities(); diff --git a/archivebrowser.h b/archivebrowser.h index ae606c3..41f624c 100644 --- a/archivebrowser.h +++ b/archivebrowser.h @@ -33,6 +33,7 @@ class ArchiveBrowser : public QWidget { void writeSettings(); void moveToBurn(); void refresh(); + void playCurrent(); private slots: void setupQualityFilter(); @@ -658,6 +658,8 @@ void SheMov::createActions(){ connect(mArchiveBrowserMoveToBurnA, SIGNAL(triggered()), mArchiveBrowser, SLOT(moveToBurn())); mArchiveBrowserRefreshA = new QAction(QIcon(":/refresh.png"), tr("Refresh"), this); connect(mArchiveBrowserRefreshA, SIGNAL(triggered()), mArchiveBrowser, SLOT(refresh())); + mArchiveBrowserPlaySelectedA = new QAction(QIcon(":/dildo.png"), tr("Play selected..."), this); + connect(mArchiveBrowserPlaySelectedA, SIGNAL(triggered()), mArchiveBrowser, SLOT(playCurrent())); // db analyzer dialogs // analyze actors @@ -771,6 +773,8 @@ void SheMov::createMenus(){ mArchiveBrowserViewMenu->addMenu(abHeaderMenu); mArchiveBrowserViewMenuA = menuBar()->addMenu(mArchiveBrowserViewMenu); mArchiveBrowserViewMenu->addSeparator(); + mArchiveBrowserViewMenu->addAction(mArchiveBrowserPlaySelectedA); + mArchiveBrowserViewMenu->addSeparator(); mArchiveBrowserViewMenu->addAction(mArchiveBrowserMoveToBurnA); mArchiveBrowserViewMenu->addAction(mArchiveBrowserRefreshA); @@ -862,6 +866,8 @@ void SheMov::createMenus(){ archiveFilesM->addActions(c->archiveFiles()->actions()); // ArchiveBrowser context menu + mArchiveBrowser->archiveTree()->addAction(mArchiveBrowserPlaySelectedA); + mArchiveBrowser->archiveTree()->addAction(createSeparator()); mArchiveBrowser->archiveTree()->addAction(mArchiveBrowserMoveToBurnA); mArchiveBrowser->archiveTree()->addAction(mArchiveBrowserRefreshA); @@ -153,6 +153,7 @@ class SheMov : public QMainWindow { QAction *mArchiveBrowserViewMenuA; QAction *mArchiveBrowserMoveToBurnA; QAction *mArchiveBrowserRefreshA; + QAction *mArchiveBrowserPlaySelectedA; QActionGroup *mArchiveBrowserAG; //ArchiveFiles actions |