summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--filesystemwidget.cpp24
-rw-r--r--filesystemwidget.h2
-rw-r--r--shemov.cpp23
-rw-r--r--shemov.h8
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();
diff --git a/shemov.cpp b/shemov.cpp
index 6e3943c..c56ed58 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -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);
diff --git a/shemov.h b/shemov.h
index 0d44cfe..81126b1 100644
--- a/shemov.h
+++ b/shemov.h
@@ -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;