From 73a1c0d8c76c5f6bd0213ad9c1bb759b1c86c2f8 Mon Sep 17 00:00:00 2001 From: Arno Date: Tue, 11 May 2010 17:12:48 +0200 Subject: 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. --- filesystemwidget.cpp | 50 +++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 41 insertions(+), 9 deletions(-) (limited to 'filesystemwidget.cpp') 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 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 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 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 FilesystemWidget::programData(const QString &prefix, const QString &preferred){ + QSettings s; + QString section = QString("programs_%1").arg(prefix); + QHash data = s.value(QString("%1/data").arg(section)).toHash(); + if(data.isEmpty()){ + return QPair(); + } + QString defaultProg = s.value(QString("%1/default").arg(section)).toString(); + QHash 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; -- cgit v1.2.3-70-g09d2