From 6fcc0807135bee7d2d505d40a243d21cca4a6daa Mon Sep 17 00:00:00 2001 From: Arno Date: Sun, 26 Aug 2018 21:56:03 +0200 Subject: Add option for using the internal viewer Also use the new connect syntax for ProgramConfigurator. --- fswidget.cpp | 38 ++++++++++++++++++++++++++------------ programconfigurator.cpp | 41 +++++++++++++++++++++++++---------------- programconfigurator.h | 6 ++++-- 3 files changed, 55 insertions(+), 30 deletions(-) diff --git a/fswidget.cpp b/fswidget.cpp index 405d19d..0215e3a 100644 --- a/fswidget.cpp +++ b/fswidget.cpp @@ -114,8 +114,6 @@ 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); @@ -196,7 +194,7 @@ void FSWidget::setupWidget(){ mFileView->sortByColumn(0, Qt::AscendingOrder); connect(mFileView->selectionModel(), &QItemSelectionModel::selectionChanged, this, &FSWidget::calculateSelectionChanged); - mFileView->addActions(QList() << 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); + mFileView->addActions(QList() << 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); @@ -575,16 +573,32 @@ 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(); - } - QPair playerData = Helper::programData("movieviewer", player); - QStringList args = playerData.second; - for(int i = 0; i < count; ++i){ - args << paths; + 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 playerData = Helper::programData("movieviewer", player); + QStringList args = playerData.second; + for(int i = 0; i < count; ++i){ + args << paths; + } + QProcess::startDetached(playerData.first, args); } - QProcess::startDetached(playerData.first, args); } void FSWidget::playQt(){ diff --git a/programconfigurator.cpp b/programconfigurator.cpp index fa05e5c..ae272f5 100644 --- a/programconfigurator.cpp +++ b/programconfigurator.cpp @@ -5,16 +5,17 @@ 2 of the License, or (at your option) any later version. */ -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include #include -#include -#include +#include +#include #include #include @@ -56,15 +57,21 @@ ProgramConfigurator::ProgramConfigurator(const QString &prefix, const QString &d buttonLayout->addWidget(mUpdate); buttonLayout->addWidget(mDefault); buttonLayout->addStretch(); - mainLayout->addLayout(buttonLayout, 5, 0, 1, 2, Qt::AlignCenter); + mainLayout->addLayout(buttonLayout, 5, 0, 1, 2, Qt::AlignCenter); + mInternalViewer = new QCheckBox(tr("Use internal Viewer")); + QHBoxLayout *intViewerL = new QHBoxLayout; + intViewerL->addStretch(); + intViewerL->addWidget(mInternalViewer); + intViewerL->addStretch(); + mainLayout->addLayout(intViewerL, 6, 0, 1, 2, Qt::AlignCenter); QVBoxLayout *stretchLayout = new QVBoxLayout; stretchLayout->addStretch(); mainLayout->addLayout(stretchLayout, 6, 0, 1, 2); - connect(mProgramSelector, SIGNAL(currentIndexChanged(QString)), this, SLOT(programChanged(QString))); - connect(mAdd, SIGNAL(clicked()), this, SLOT(addProgram())); - connect(mRemove, SIGNAL(clicked()), this, SLOT(removeProgram())); - connect(mUpdate, SIGNAL(clicked()), this, SLOT(updateProgram())); - connect(mDefault, SIGNAL(clicked()), this, SLOT(setDefault())); + connect(mProgramSelector, QOverload::of(&QComboBox::currentIndexChanged), this, &ProgramConfigurator::programChanged); + connect(mAdd, &QPushButton::clicked, this, &ProgramConfigurator::addProgram); + connect(mRemove, &QPushButton::clicked, this, &ProgramConfigurator::removeProgram); + connect(mUpdate, &QPushButton::clicked, this, &ProgramConfigurator::updateProgram); + connect(mDefault, &QPushButton::clicked, this, &ProgramConfigurator::setDefault); readSettings(); setLayout(mainLayout); } @@ -76,6 +83,7 @@ void ProgramConfigurator::writeSettings(){ QSettings s; s.setValue(defaultString, mDefautProg); s.setValue(dataString, mData); + s.setValue("vw/internal", mInternalViewer->isChecked()); } void ProgramConfigurator::programChanged(const QString &program){ @@ -162,7 +170,7 @@ void ProgramConfigurator::readSettings(){ QSettings s; mData = s.value(dataString).toHash(); QStringList progs; - foreach(QString p, mData.keys()){ + for(QString p : mData.keys()){ progs << p; } mProgramSelector->addItems(progs); @@ -171,6 +179,7 @@ void ProgramConfigurator::readSettings(){ if(idx != -1){ mProgramSelector->setCurrentIndex(idx); } + mInternalViewer->setChecked(s.value("vw/internal").toBool()); setDefault(); } diff --git a/programconfigurator.h b/programconfigurator.h index 05e3e9e..3df66a5 100644 --- a/programconfigurator.h +++ b/programconfigurator.h @@ -8,7 +8,7 @@ #ifndef PROGRAMCONFIGURATOR_H #define PROGRAMCONFIGURATOR_H -#include +#include #include #include #include @@ -19,11 +19,12 @@ class QComboBox; class QStringList; class QLabel; class QStringList; +class QCheckBox; class ProgramConfigurator : public QWidget { Q_OBJECT public: - ProgramConfigurator(const QString &prefix, const QString &description, QWidget *parent = 0); + ProgramConfigurator(const QString &prefix, const QString &description, QWidget *parent = nullptr); ~ProgramConfigurator() {} public slots: @@ -50,6 +51,7 @@ class ProgramConfigurator : public QWidget { QPushButton *mRemove; QPushButton *mUpdate; QPushButton *mDefault; + QCheckBox *mInternalViewer; QLabel *mDefaultLabel; QHash mData; QString mDefautProg; -- cgit v1.2.3-70-g09d2