diff options
author | Arno <arno@disconnect.de> | 2018-04-03 05:39:11 +0200 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2018-04-03 05:39:11 +0200 |
commit | 71bbe75e92fc76619d2e2f60c05d94ebff3439bf (patch) | |
tree | aa9bab690d8c372030101079b2753cbb42ccb65b /fswidget.cpp | |
parent | d25b4fbaa68bce32fd514e4275d910534a78d89b (diff) | |
download | SheMov-71bbe75e92fc76619d2e2f60c05d94ebff3439bf.tar.gz SheMov-71bbe75e92fc76619d2e2f60c05d94ebff3439bf.tar.bz2 SheMov-71bbe75e92fc76619d2e2f60c05d94ebff3439bf.zip |
FSWidget: Implement Play with actions
Fill the submenu from readSettings so we can act on configuration
changes.
Diffstat (limited to 'fswidget.cpp')
-rw-r--r-- | fswidget.cpp | 26 |
1 files changed, 21 insertions, 5 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; |