summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fswidget.cpp16
-rw-r--r--fswidget.h4
-rw-r--r--videoviewer.cpp3
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<int, QProcess::ExitStatus>::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 <QWidget>
#include <QSqlQuery>
+#include <QMediaPlayer>
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){