summaryrefslogtreecommitdiffstats
path: root/fswidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'fswidget.cpp')
-rw-r--r--fswidget.cpp55
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(){