diff options
Diffstat (limited to 'filesystemwidget.cpp')
-rw-r--r-- | filesystemwidget.cpp | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/filesystemwidget.cpp b/filesystemwidget.cpp index 6b1e1a8..d857407 100644 --- a/filesystemwidget.cpp +++ b/filesystemwidget.cpp @@ -396,11 +396,15 @@ void FilesystemWidget::playSelected(const QString &player){ } QPair<QString, QStringList> data = programData("movieviewer", player); if(data.first.isEmpty()){ - QMessageBox::critical(this, tr("Error"), tr("No viedeo viewer configured.")); - return; + data = programData("pictureviewer", player); + if(data.first.isEmpty()){ + QString message = QString(tr("Cannot find program %1.")).arg(player); + QMessageBox::critical(this, tr("Error"), message); + return; + } } QString program = data.first; - QStringList programArgs = data.second; + QStringList programArgs(data.second); programArgs << files; QProcess::startDetached(program, programArgs); } @@ -470,15 +474,19 @@ QPair<QString, QStringList> FilesystemWidget::programData(const QString &prefix, if(data.isEmpty()){ return QPair<QString, QStringList>(); } - QString defaultProg = s.value(QString("%1/default").arg(section)).toString(); QHash<QString, QVariant> programData; - if(!preferred.isEmpty() && data.keys().contains(preferred)){ - programData = data.value(preferred).toHash(); - }else if(data.keys().contains(defaultProg)){ - programData = data.value(defaultProg).toHash(); - }else{ - programData = data.begin().value().toHash(); + if(!preferred.isEmpty()){ + if(data.keys().contains(preferred)){ + programData = data.value(preferred).toHash(); + return qMakePair(programData.value("path").toString(), programData.value("args").toStringList()); + } + return QPair<QString, QStringList>(); + } + QString defaultProg = s.value(QString("%1/default").arg(section)).toString(); + if(defaultProg.isEmpty()){ + return QPair<QString, QStringList>(); } + programData = data.value(defaultProg).toHash(); return qMakePair(programData.value("path").toString(), programData.value("args").toStringList()); } |