diff options
-rw-r--r-- | fswidget.cpp | 26 | ||||
-rw-r--r-- | fswidget.h | 4 |
2 files changed, 24 insertions, 6 deletions
diff --git a/fswidget.cpp b/fswidget.cpp index 733105d..75ecd28 100644 --- a/fswidget.cpp +++ b/fswidget.cpp @@ -75,17 +75,20 @@ void FSWidget::setupWidget(){ connect(previewA, &QAction::triggered, this, &FSWidget::preview); toolbar->addAction(previewA); QAction *playSelectedA = new QAction(QIcon(":/spreadingpants.png"), tr("Play selected"), this); - connect(playSelectedA, &QAction::triggered, [=] { playSelected(1); }); + connect(playSelectedA, &QAction::triggered, [=] { playSelected(1, QString()); }); playSelectedA->setShortcut(Qt::Key_Return); QMenu *repeatMenu = new QMenu; for(int i = 2; i < 6; ++i){ QString actionStr = QString(tr("Play %1 times")).arg(QString::number(i)); QAction *a = new QAction(actionStr, this); repeatMenu->addAction(a); - connect(a, &QAction::triggered, [=] { playSelected(i); }); + connect(a, &QAction::triggered, [=] { playSelected(i, QString()); }); } QAction *playRepeatMA = new QAction(tr("Play repeat"), this); playRepeatMA->setMenu(repeatMenu); + mPlayWithA = new QAction(tr("Play with"), this); + QMenu *playWithMenu = new QMenu; + mPlayWithA->setMenu(playWithMenu); QAction *selectFilterA = new QAction(tr("Select by filter..."), this); connect(selectFilterA, &QAction::triggered, this, &FSWidget::selectFilter); selectFilterA->setShortcut(tr("CTRL+j")); @@ -158,7 +161,7 @@ void FSWidget::setupWidget(){ mFileView->setModel(mProxy); mFileView->sortByColumn(0, Qt::AscendingOrder); - mFileView->addActions(QList<QAction*>() << playSelectedA << playRepeatMA << Helper::createSeparator(this) << backA << forwardA << Helper::createSeparator(this) << refreshA << deleteFilesA << Helper::createSeparator(this) << archiveMovieA << archivePicsA << 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 << unpackA << previewA << selectFilterA << unselectAllA); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addLayout(topWL); @@ -185,6 +188,15 @@ void FSWidget::readSettings(){ mFilterCB->addItems(filters); QString cFilter = s.value("fs/curfilter").toString(); mFilterCB->setCurrentText(cFilter); + QStringList players = s.value("programs_movieviewer/data").toHash().keys(); + std::sort(players.begin(), players.end()); + QMenu *pMenu = mPlayWithA->menu(); + pMenu->clear(); + for(const QString &p : players){ + QAction *a = new QAction(p, this); + connect(a, &QAction::triggered, [=] { playSelected(1, p); }); + pMenu->addAction(a); + } } void FSWidget::writeSettings(){ @@ -515,7 +527,7 @@ void FSWidget::preview(){ } } -void FSWidget::playSelected(int count){ +void FSWidget::playSelected(int count, QString player){ QModelIndexList selected = mFileView->selectionModel()->selectedRows(); if(selected.isEmpty()){ return; @@ -524,7 +536,11 @@ void FSWidget::playSelected(int count){ for(const QModelIndex &idx : selected){ paths << idx.data(FullPathRole).toString(); } - QPair<QString, QStringList> playerData = Helper::programData("movieviewer"); + 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; @@ -9,6 +9,7 @@ class QTreeView; class QStandardItemModel; class QSortFilterProxyModel; class QContextMenuEvent; +class QAction; class NewMovieWizard; class NewPicsDialog; class Viewer; @@ -40,7 +41,7 @@ class FSWidget : public QWidget { void unpack(); void doubleClicked(const QModelIndex &idx); void preview(); - void playSelected(int count = 1); + void playSelected(int count, QString player); void selectFilter(); signals: @@ -57,6 +58,7 @@ class FSWidget : public QWidget { NewPicsDialog *mNewPicsDlg; Viewer *mViewer; int mQueryCount; + QAction *mPlayWithA; }; #endif // FSWIDGET_H |