diff options
Diffstat (limited to 'fswidget.cpp')
-rw-r--r-- | fswidget.cpp | 55 |
1 files changed, 47 insertions, 8 deletions
diff --git a/fswidget.cpp b/fswidget.cpp index c084c12..0215e3a 100644 --- a/fswidget.cpp +++ b/fswidget.cpp @@ -19,6 +19,8 @@ #include <QProcess> #include <QSettings> #include <QApplication> +#include <QMediaPlayer> +#include <QMediaPlaylist> #include "fswidget.h" #include "helper.h" @@ -28,6 +30,7 @@ #include "fsproxy.h" #include "smview.h" #include "viewer.h" +#include "videoviewer.h" FSWidget::FSWidget(QWidget *parent) : QWidget(parent) { mMovieWizard = new NewMovieWizard(this); @@ -570,16 +573,52 @@ void FSWidget::playSelected(int count, QString player){ for(const QModelIndex &idx : selected){ paths << idx.data(FullPathRole).toString(); } - if(player.isEmpty()){ - QSettings s; - player = s.value("programs_movieviewer/default").toString(); + QSettings s; + bool useInternal = s.value("vw/internal").toBool(); + if(useInternal && player.isEmpty()){ + VideoViewer *wv = new VideoViewer; + QMediaPlaylist *pl = wv->player()->playlist(); + pl->clear(); + for(int i = 0; i < count; ++i){ + for(const QString &p : paths){ + pl->addMedia(QUrl::fromLocalFile(p)); + } + } + pl->setCurrentIndex(0); + wv->setVisible(true); + wv->player()->play(); + }else{ + if(player.isEmpty()){ + QSettings s; + player = s.value("programs_movieviewer/default").toString(); + } + QPair<QString, QStringList> playerData = Helper::programData("movieviewer", player); + QStringList args = playerData.second; + for(int i = 0; i < count; ++i){ + args << paths; + } + QProcess::startDetached(playerData.first, args); + } +} + +void FSWidget::playQt(){ + QModelIndexList selected = mFileView->selectionModel()->selectedRows(); + if(selected.isEmpty()){ + return; + } + QStringList paths; + for(const QModelIndex &idx : selected){ + paths << idx.data(FullPathRole).toString(); } - QPair<QString, QStringList> playerData = Helper::programData("movieviewer", player); - QStringList args = playerData.second; - for(int i = 0; i < count; ++i){ - args << paths; + VideoViewer *wv = new VideoViewer; + QMediaPlaylist *pl = wv->player()->playlist(); + pl->clear(); + for(const QString &p : paths){ + pl->addMedia(QUrl::fromLocalFile(p)); } - QProcess::startDetached(playerData.first, args); + pl->setCurrentIndex(0); + wv->setVisible(true); + wv->player()->play(); } void FSWidget::selectFilter(){ |