summaryrefslogtreecommitdiffstats
path: root/fswidget.cpp
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2018-08-26 20:35:23 +0200
committerArno <arno@disconnect.de>2018-08-26 20:35:23 +0200
commit68ee6a0ec973940eb4f799b00f6518a902cbc4e5 (patch)
tree41ddac1434482ae0a20686c8bc8c8231bf9aed36 /fswidget.cpp
parent1aebcdcc41d60f891a12b70584d3ceb833d5bfdc (diff)
downloadSheMov-68ee6a0ec973940eb4f799b00f6518a902cbc4e5.tar.gz
SheMov-68ee6a0ec973940eb4f799b00f6518a902cbc4e5.tar.bz2
SheMov-68ee6a0ec973940eb4f799b00f6518a902cbc4e5.zip
Implement custom Video player
Well, well, well. Due to several unforseen circumstances I ventured into the sources again and implemented a Video player with Qt. Looks very promising so far. There are some bugs to weed out, but I'm getting there...
Diffstat (limited to 'fswidget.cpp')
-rw-r--r--fswidget.cpp27
1 files changed, 26 insertions, 1 deletions
diff --git a/fswidget.cpp b/fswidget.cpp
index c084c12..405d19d 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);
@@ -111,6 +114,8 @@ void FSWidget::setupWidget(){
toolbar->addAction(headerA);
toolbar->addSeparator();
toolbar->addAction(SmGlobals::instance()->globalAction());
+ QAction *playQtA = new QAction(QIcon(":/bizarre_amputee.png"), tr("Play with QT"), this);
+ connect(playQtA, &QAction::triggered, this, &FSWidget::playQt);
QAction *playSelectedA = new QAction(QIcon(":/spreadingpants.png"), tr("Play selected"), this);
connect(playSelectedA, &QAction::triggered, [=] { playSelected(1, QString()); });
playSelectedA->setShortcut(Qt::Key_Return);
@@ -191,7 +196,7 @@ void FSWidget::setupWidget(){
mFileView->sortByColumn(0, Qt::AscendingOrder);
connect(mFileView->selectionModel(), &QItemSelectionModel::selectionChanged, this, &FSWidget::calculateSelectionChanged);
- mFileView->addActions(QList<QAction*>() << playSelectedA << playRepeatMA << mPlayWithA << Helper::createSeparator(this) << backA << forwardA << Helper::createSeparator(this) << refreshA << deleteFilesA << Helper::createSeparator(this) << archiveMovieA << archivePicsA << Helper::createSeparator(this) << unpackA << previewA << selectFilterA << unselectAllA);
+ mFileView->addActions(QList<QAction*>() << playQtA << playSelectedA << playRepeatMA << mPlayWithA << Helper::createSeparator(this) << backA << forwardA << Helper::createSeparator(this) << refreshA << deleteFilesA << Helper::createSeparator(this) << archiveMovieA << archivePicsA << Helper::createSeparator(this) << unpackA << previewA << selectFilterA << unselectAllA);
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addLayout(topWL);
@@ -582,6 +587,26 @@ void FSWidget::playSelected(int count, QString player){
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();
+ }
+ VideoViewer *wv = new VideoViewer;
+ QMediaPlaylist *pl = wv->player()->playlist();
+ pl->clear();
+ for(const QString &p : paths){
+ pl->addMedia(QUrl::fromLocalFile(p));
+ }
+ pl->setCurrentIndex(0);
+ wv->setVisible(true);
+ wv->player()->play();
+}
+
void FSWidget::selectFilter(){
bool ok;
QString retval = QInputDialog::getText(this, tr("File selection by regex!"), tr("Select"), QLineEdit::Normal, "mkv$", &ok);