From 45eab23107265a2a21414c65c4953014119593e2 Mon Sep 17 00:00:00 2001 From: Arno Date: Thu, 13 Sep 2018 17:16:30 +0200 Subject: Make VideoViewer local to FSWidget Now we can't have multiple VideoViewers, which is what we want :) --- fswidget.cpp | 16 ++++++++++++---- fswidget.h | 4 ++++ videoviewer.cpp | 3 ++- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/fswidget.cpp b/fswidget.cpp index c35f6cf..d003200 100644 --- a/fswidget.cpp +++ b/fswidget.cpp @@ -38,6 +38,9 @@ FSWidget::FSWidget(QWidget *parent) : QWidget(parent) { mViewer = new Viewer; mNewPicsDlg = new NewPicsDialog; mPlayer = new QProcess(qApp); + mVideoViewer = new VideoViewer; + mVideoViewer->setVisible(false); + connect(mVideoViewer->player(), &QMediaPlayer::stateChanged, this, &FSWidget::playerStateChanged); connect(mPlayer, QOverload::of(&QProcess::finished), this, &FSWidget::doPlay); setPalette(qApp->palette()); setupWidget(); @@ -580,8 +583,7 @@ void FSWidget::playSelected(int count, QString player){ QSettings s; bool useInternal = s.value("vw/internal").toBool(); if(useInternal && player.isEmpty()){ - VideoViewer *wv = new VideoViewer; - QMediaPlaylist *pl = wv->player()->playlist(); + QMediaPlaylist *pl = mVideoViewer->player()->playlist(); pl->clear(); for(int i = 0; i < count; ++i){ for(const QString &p : paths){ @@ -589,8 +591,8 @@ void FSWidget::playSelected(int count, QString player){ } } pl->setCurrentIndex(0); - wv->setVisible(true); - wv->player()->play(); + mVideoViewer->setVisible(true); + mVideoViewer->player()->play(); }else{ if(mPlayer->state() != QProcess::NotRunning){ int retval = QMessageBox::question(this, tr("Terminate player?"), tr("Terminate running instance?")); @@ -660,3 +662,9 @@ void FSWidget::calculateSelectionChanged(){ } emit selectionChanged(count, size, duration); } + +void FSWidget::playerStateChanged(QMediaPlayer::State s){ + if(s == QMediaPlayer::StoppedState){ + mVideoViewer->hide(); + } +} diff --git a/fswidget.h b/fswidget.h index b5d8ffb..a926fb7 100644 --- a/fswidget.h +++ b/fswidget.h @@ -3,6 +3,7 @@ #include #include +#include class QComboBox; class QTreeView; @@ -16,6 +17,7 @@ class NewPicsDialog; class Viewer; class FSProxy; class SmView; +class VideoViewer; class FSWidget : public QWidget { Q_OBJECT @@ -47,6 +49,7 @@ class FSWidget : public QWidget { void doPlay(); void selectFilter(); void calculateSelectionChanged(); + void playerStateChanged(QMediaPlayer::State s); signals: void message(QString msg); @@ -68,6 +71,7 @@ class FSWidget : public QWidget { NewMovieWizard *mMovieWizard; NewPicsDialog *mNewPicsDlg; Viewer *mViewer; + VideoViewer *mVideoViewer; int mQueryCount; QAction *mPlayWithA; }; diff --git a/videoviewer.cpp b/videoviewer.cpp index 1bf934f..dbc6421 100644 --- a/videoviewer.cpp +++ b/videoviewer.cpp @@ -43,7 +43,8 @@ void VideoViewer::writeSettings(){ void VideoViewer::keyPressEvent(QKeyEvent *e){ int keyNum = e->key(); if(keyNum == Qt::Key_Q){ - close(); + player()->stop(); + setHidden(true); }else if(keyNum == Qt::Key_F){ setFullScreen(isFullScreen() ? false : true); }else if(keyNum == Qt::Key_Right){ -- cgit v1.2.3-70-g09d2