diff options
author | Arno <am@disconnect.de> | 2010-05-11 17:12:48 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2010-05-11 17:12:48 +0200 |
commit | 73a1c0d8c76c5f6bd0213ad9c1bb759b1c86c2f8 (patch) | |
tree | 9803807a34ed6b487b05cd42654bf3321ba7bf06 | |
parent | 8e1b2c03076b9908fbc8eafe861845c2d11bd7f0 (diff) | |
download | SheMov-73a1c0d8c76c5f6bd0213ad9c1bb759b1c86c2f8.tar.gz SheMov-73a1c0d8c76c5f6bd0213ad9c1bb759b1c86c2f8.tar.bz2 SheMov-73a1c0d8c76c5f6bd0213ad9c1bb759b1c86c2f8.zip |
Make use of new Config-Values for programs
Double click and playSelected() now uses the default from a list of
several program. If no default program is set, the first element in the
Hash is used.
-rw-r--r-- | filesystemwidget.cpp | 50 | ||||
-rw-r--r-- | filesystemwidget.h | 4 |
2 files changed, 44 insertions, 10 deletions
diff --git a/filesystemwidget.cpp b/filesystemwidget.cpp index 187d92c..5ed80e3 100644 --- a/filesystemwidget.cpp +++ b/filesystemwidget.cpp @@ -139,16 +139,25 @@ void FilesystemWidget::fileViewActivated(const QModelIndex &idx){ } QString path = mModel->filePath(real); QString mt = Helper::mimeType(path); - QSettings s; QStringList programArgs; QString program; if(mt.toLower().startsWith("video")){ - program = s.value("paths/movieviewer").toString(); - programArgs = s.value("paths/movieviewerargs").toStringList(); + QPair<QString, QStringList> data = programData("movieviewer", QString()); + if(data.first.isEmpty()){ + QMessageBox::critical(this, tr("Error"), tr("No viedeo viewer configured.")); + return; + } + program = data.first; + programArgs = data.second; } if(mt.toLower().startsWith("image")){ - program = s.value("paths/pictureviewer").toString(); - programArgs = s.value("paths/pictureviewerargs").toStringList(); + QPair<QString, QStringList> data = programData("pictureviewer", QString()); + if(data.first.isEmpty()){ + QMessageBox::critical(this, tr("Error"), tr("No picture viewer configured.")); + return; + } + program = data.first; + programArgs = data.second; } programArgs << path; QProcess::startDetached(program, programArgs); @@ -378,15 +387,19 @@ void FilesystemWidget::refreshDir(const QString &dir){ mModel->refresh(idx); } -void FilesystemWidget::playSelected(){ +void FilesystemWidget::playSelected(const QString &player){ QStringList files = selectedFiles(); if(files.isEmpty()){ statusbarMessage(tr("Nothing selected.")); return; } - QSettings s; - QString program = s.value("paths/movieviewer").toString(); - QStringList programArgs = s.value("paths/movieviewerargs").toStringList(); + QPair<QString, QStringList> data = programData("movieviewer", player); + if(data.first.isEmpty()){ + QMessageBox::critical(this, tr("Error"), tr("No viedeo viewer configured.")); + return; + } + QString program = data.first; + QStringList programArgs = data.second; programArgs << files; QProcess::startDetached(program, programArgs); } @@ -449,6 +462,25 @@ void FilesystemWidget::deleteRecursive(const QFileInfo &start){ } } +QPair<QString, QStringList> FilesystemWidget::programData(const QString &prefix, const QString &preferred){ + QSettings s; + QString section = QString("programs_%1").arg(prefix); + QHash<QString, QVariant> data = s.value(QString("%1/data").arg(section)).toHash(); + 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(); + } + return qMakePair(programData.value("path").toString(), programData.value("args").toStringList()); +} + void FilesystemWidget::copyRecursive(const QFileInfo &start, const QString &destdir){ if(!start.isDir()){ return; diff --git a/filesystemwidget.h b/filesystemwidget.h index 6e8523c..6ee60f6 100644 --- a/filesystemwidget.h +++ b/filesystemwidget.h @@ -9,6 +9,7 @@ #define FILESYSTEMWIDGET_H #include <QWidget> +#include <QPair> class QDirModel; class QTreeView; @@ -53,7 +54,7 @@ class FilesystemWidget : public QWidget { void extract(const QString &destDir); void archiveFiles(); void refreshDir(const QString &dir); - void playSelected(); + void playSelected(const QString &player = QString()); void readSettings(); void writeSettings(); @@ -66,6 +67,7 @@ class FilesystemWidget : public QWidget { void setWindowTitle(const QString &dir); void deleteRecursive(const QFileInfo &start); void copyRecursive(const QFileInfo &start, const QString &destdir); + QPair<QString, QStringList> programData(const QString &prefix, const QString &preferred); QStringList selectedFiles(); QStringList mExpandedDirs; QAction *action(QWidget *widget, const QVariant &data) const; |