summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fswidget.cpp26
-rw-r--r--fswidget.h4
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;
diff --git a/fswidget.h b/fswidget.h
index 252c487..9a9cc2e 100644
--- a/fswidget.h
+++ b/fswidget.h
@@ -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