summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fswidget.cpp30
-rw-r--r--fswidget.h5
2 files changed, 32 insertions, 3 deletions
diff --git a/fswidget.cpp b/fswidget.cpp
index 0215e3a..1e7f2b6 100644
--- a/fswidget.cpp
+++ b/fswidget.cpp
@@ -37,6 +37,8 @@ FSWidget::FSWidget(QWidget *parent) : QWidget(parent) {
mMovieWizard->setMinimumWidth(1024);
mViewer = new Viewer;
mNewPicsDlg = new NewPicsDialog;
+ mPlayer = new QProcess(qApp);
+ connect(mPlayer, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished), this, &FSWidget::doPlay);
setPalette(qApp->palette());
setupWidget();
}
@@ -588,19 +590,41 @@ void FSWidget::playSelected(int count, QString player){
wv->setVisible(true);
wv->player()->play();
}else{
+ if(mPlayer->state() != QProcess::NotRunning){
+ int retval = QMessageBox::question(this, tr("Terminate player?"), tr("Terminate running instance?"));
+ if(retval == QMessageBox::No){
+ return;
+ }
+ mPlayer->terminate();
+ mPlayer->waitForFinished();
+ }
if(player.isEmpty()){
QSettings s;
player = s.value("programs_movieviewer/default").toString();
}
QPair<QString, QStringList> playerData = Helper::programData("movieviewer", player);
- QStringList args = playerData.second;
+ mPlayerArgs = playerData.second;
+ mPlaylist.clear();
for(int i = 0; i < count; ++i){
- args << paths;
+ mPlaylist << paths;
}
- QProcess::startDetached(playerData.first, args);
+ mPlayer->setProgram(playerData.first);
+ doPlay();
}
}
+void FSWidget::doPlay(){
+ if(mPlaylist.isEmpty()){
+ emit message(tr("Playlist is empty!"));
+ return;
+ }
+ QStringList curArgs = mPlayerArgs;
+ curArgs << mPlaylist.takeFirst();
+ mPlayer->setArguments(curArgs);
+ mPlayer->start();
+
+}
+
void FSWidget::playQt(){
QModelIndexList selected = mFileView->selectionModel()->selectedRows();
if(selected.isEmpty()){
diff --git a/fswidget.h b/fswidget.h
index 25953a9..b2228d8 100644
--- a/fswidget.h
+++ b/fswidget.h
@@ -10,6 +10,7 @@ class QStandardItemModel;
class QSortFilterProxyModel;
class QContextMenuEvent;
class QAction;
+class QProcess;
class NewMovieWizard;
class NewPicsDialog;
class Viewer;
@@ -43,6 +44,7 @@ class FSWidget : public QWidget {
void doubleClicked(const QModelIndex &idx);
void preview();
void playSelected(int count, QString player);
+ void doPlay();
void playQt();
void selectFilter();
void calculateSelectionChanged();
@@ -58,6 +60,9 @@ class FSWidget : public QWidget {
void setupWidget();
QComboBox *mDirCB;
QComboBox *mFilterCB;
+ QProcess *mPlayer;
+ QStringList mPlayerArgs;
+ QStringList mPlaylist;
SmView *mFileView;
QStandardItemModel *mModel;
FSProxy *mProxy;