diff options
-rw-r--r-- | filesystemwidget.cpp | 24 | ||||
-rw-r--r-- | filesystemwidget.h | 2 | ||||
-rw-r--r-- | shemov.cpp | 23 | ||||
-rw-r--r-- | shemov.h | 8 |
4 files changed, 56 insertions, 1 deletions
diff --git a/filesystemwidget.cpp b/filesystemwidget.cpp index 5568db0..ac840bd 100644 --- a/filesystemwidget.cpp +++ b/filesystemwidget.cpp @@ -355,6 +355,30 @@ void FilesystemWidget::playSelected(const QString &player){ QProcess::startDetached(program, programArgs); } +void FilesystemWidget::playSelectedRepeat(int times){ + TimerHandler h(mFileModel->refreshTimer()); + QStringList files = selectedFiles(); + if(files.isEmpty()){ + statusbarMessage(tr("Nothing selected.")); + return; + } + QPair<QString, QStringList> data = programData("movieviewer", QString()); + QString program = data.first; + QStringList programArgs(data.second); + if(times == -1){ + programArgs << "--loop" << files; + }else{ + for(int i = 0; i < times; ++i){ + programArgs << files; + } + } + QProcess::startDetached(program, programArgs); +} + +void FilesystemWidget::playSelectedInfinite(){ + playSelectedRepeat(-1); +} + void FilesystemWidget::readSettings(){ QSettings s; QStringList expandedDirs = s.value("paths/expandeddirs").toStringList(); diff --git a/filesystemwidget.h b/filesystemwidget.h index efff13a..108d00a 100644 --- a/filesystemwidget.h +++ b/filesystemwidget.h @@ -60,6 +60,8 @@ class FilesystemWidget : public QWidget { void fromClipboard(); void renameFile(); void playSelected(const QString &player = QString()); + void playSelectedRepeat(int times); + void playSelectedInfinite(); void readSettings(); void writeSettings(); void configChanged(); @@ -391,6 +391,22 @@ void SheMov::createActions(){ //File menu mPlaySelectedFSA = new QAction(tr("Play selected movies..."), this); connect(mPlaySelectedFSA, SIGNAL(triggered()), mFSWidget, SLOT(playSelected())); + mOpenTimesFSAG = new QActionGroup(this); + mOpenTimesFSMapper = new QSignalMapper(this); + for(int i = 2; i < 6; ++i){ + QString actString = QString("Play %1 times...").arg(i); + QAction *playTimesA = new QAction(actString, this); + mOpenTimesFSMapper->setMapping(playTimesA, i); + connect(playTimesA, SIGNAL(triggered()), mOpenTimesFSMapper, SLOT(map())); + mOpenTimesFSAG->addAction(playTimesA); + } + connect(mOpenTimesFSMapper, SIGNAL(mapped(int)), mFSWidget, SLOT(playSelectedRepeat(int))); + mOpenTimesFSAG->addAction(createSeparator()); + QString infiniteTimes = QString(tr("Play %1 times")).arg(QChar(0x221E)); // infinite + mPlaySelectedInfTimesA = new QAction(infiniteTimes, this); + connect(mPlaySelectedInfTimesA, SIGNAL(triggered()), mFSWidget, SLOT(playSelectedInfinite())); + mOpenTimesFSAG->addAction(mPlaySelectedInfTimesA); + mPlaySelectedFSTimesA = new QAction(tr("Play repeat..."), this); mNewMovieWizardA = new QAction(tr("Archive movie..."), this); connect(mNewMovieWizardA, SIGNAL(triggered()), this, SLOT(newMovieWizard())); mArchiveSelectedMovsA = new QAction(QIcon(":/butt_plug.png"), tr("Archive selected movies..."), this); @@ -841,6 +857,13 @@ void SheMov::createMenus(){ mOpenWithMenuFSA = new QAction(tr("Open with"), this); mOpenWithMenuFSA->setMenu(mOpenWithMenuFS); mFSWidget->fileView()->addAction(mOpenWithMenuFSA); + + mPlaySelectedTimesMenuFS = new QMenu(tr("Play repeat..."), this); + mPlaySelectedTimesMenuFS->addActions(mOpenTimesFSAG->actions()); + mPlaySelectedTimesMenuFSA = new QAction(tr("Play repeat..."), this); + mPlaySelectedTimesMenuFSA->setMenu(mPlaySelectedTimesMenuFS); + mFSWidget->fileView()->addAction(mPlaySelectedTimesMenuFSA); + mFSWidget->fileView()->addAction(createSeparator()); mFSWidget->fileView()->addAction(mCdupA); @@ -102,7 +102,10 @@ class SheMov : public QMainWindow { QAction *mAboutQtA; QAction *mStatisticsA; QAction *mPlaySelectedFSA; + QAction *mPlaySelectedFSTimesA; + QAction *mPlaySelectedInfTimesA; QAction *mOpenWithMenuFSA; + QAction *mPlaySelectedTimesMenuFSA; QAction *mArchiveSelectedMovsA; QAction *mArchiveSelectedPicsA; QAction *mConsistencyA; @@ -186,17 +189,20 @@ class SheMov : public QMainWindow { QAction *mAnalyzePartsA; QSignalMapper *mOpenWithMapperFS; + QSignalMapper *mOpenTimesFSMapper; + QActionGroup *mOpenTimesFSAG; QMenu *mEditFSMenu; QMenu *mEditAVMenu; QMenu *mEditPicMenu; QMenu *mArchiveEditMenu; QMenu *mOpenWithMenuFS; + QMenu *mPlaySelectedTimesMenuFS; QMenu *mFSViewMenu; QMenu *mPicViewMenu; QMenu *mArchiveViewMenu; QMenu *mArchiveBrowserViewMenu; - QAction *mEditFSMenuA; + QAction *mEditFSMenuA; QAction *mEditPicMenuA; QAction *mViewFSMenuA; QAction *mViewPicMenuA; |