diff options
author | Arno <arno@disconnect.de> | 2018-08-26 21:56:03 +0200 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2018-08-26 21:56:03 +0200 |
commit | 6fcc0807135bee7d2d505d40a243d21cca4a6daa (patch) | |
tree | e3275a8a57ba8eb30f8ed39dfbe34d9b2d525fa8 | |
parent | 02163d24e30d914f82c11edc7a98a9cc08d45310 (diff) | |
download | SheMov-6fcc0807135bee7d2d505d40a243d21cca4a6daa.tar.gz SheMov-6fcc0807135bee7d2d505d40a243d21cca4a6daa.tar.bz2 SheMov-6fcc0807135bee7d2d505d40a243d21cca4a6daa.zip |
Add option for using the internal viewer
Also use the new connect syntax for ProgramConfigurator.
-rw-r--r-- | fswidget.cpp | 38 | ||||
-rw-r--r-- | programconfigurator.cpp | 41 | ||||
-rw-r--r-- | 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<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); + 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); 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<QString, QStringList> 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<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); } - 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 <QtWidgets/QPushButton> -#include <QtWidgets/QComboBox> -#include <QtWidgets/QLineEdit> -#include <QtWidgets/QLabel> -#include <QtWidgets/QGridLayout> -#include <QtWidgets/QHBoxLayout> -#include <QtWidgets/QCompleter> +#include <QPushButton> +#include <QComboBox> +#include <QLineEdit> +#include <QLabel> +#include <QCheckBox> +#include <QGridLayout> +#include <QHBoxLayout> +#include <QCompleter> #include <QSettings> -#include <QtWidgets/QDirModel> -#include <QtWidgets/QMessageBox> +#include <QDirModel> +#include <QMessageBox> #include <QRegExp> #include <QFileInfo> @@ -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<const QString &>::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 <QtWidgets/QWidget> +#include <QWidget> #include <QString> #include <QHash> #include <QVariant> @@ -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<QString, QVariant> mData; QString mDefautProg; |