diff options
author | Arno <arno@disconnect.de> | 2018-04-02 19:37:23 +0200 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2018-04-02 19:37:23 +0200 |
commit | 096cf7474907cbdd7ab2c67ea57f19ebdab805d4 (patch) | |
tree | 500cbec3f0870c4927be1cff9183e68f426dc929 /fswidget.cpp | |
parent | eba5b555ddaaaa3d95a06226450c7bbc452ea2ef (diff) | |
download | SheMov-096cf7474907cbdd7ab2c67ea57f19ebdab805d4.tar.gz SheMov-096cf7474907cbdd7ab2c67ea57f19ebdab805d4.tar.bz2 SheMov-096cf7474907cbdd7ab2c67ea57f19ebdab805d4.zip |
FSWidget: Implement play selected and repeat
Well, lambdas make life so much easier! Thanks for that :)
Diffstat (limited to 'fswidget.cpp')
-rw-r--r-- | fswidget.cpp | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/fswidget.cpp b/fswidget.cpp index f11c93d..53df90f 100644 --- a/fswidget.cpp +++ b/fswidget.cpp @@ -71,6 +71,17 @@ void FSWidget::setupWidget(){ QAction *previewA = new QAction(QIcon(":/snapshot.png"), tr("Preview..."), this); 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); }); + 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); }); + } + QAction *playRepeatMA = new QAction(tr("Play repeat"), this); + playRepeatMA->setMenu(repeatMenu); QIcon plusIcon = Helper::icon(QColor(255,85,255), '+'); QIcon minusIcon = Helper::icon(QColor(255,85,255), '-'); @@ -135,7 +146,7 @@ void FSWidget::setupWidget(){ mFileView->setModel(mProxy); mFileView->sortByColumn(0, Qt::AscendingOrder); - addActions(QList<QAction*>() << backA << forwardA << Helper::createSeparator(this) << refreshA << deleteFilesA << Helper::createSeparator(this) << archiveMovieA << archivePicsA << unpackA << previewA); + addActions(QList<QAction*>() << playSelectedA << playRepeatMA << Helper::createSeparator(this) << backA << forwardA << Helper::createSeparator(this) << refreshA << deleteFilesA << Helper::createSeparator(this) << archiveMovieA << archivePicsA << unpackA << previewA); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addLayout(topWL); @@ -494,3 +505,20 @@ void FSWidget::preview(){ mViewer->showMaximized(); } } + +void FSWidget::playSelected(int count){ + QModelIndexList selected = mFileView->selectionModel()->selectedRows(); + if(selected.isEmpty()){ + return; + } + QStringList paths; + for(const QModelIndex &idx : selected){ + paths << idx.data(FullPathRole).toString(); + } + QPair<QString, QStringList> playerData = Helper::programData("movieviewer"); + QStringList args = playerData.second; + for(int i = 0; i < count; ++i){ + args << paths; + } + QProcess::startDetached(playerData.first, args); +} |