summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2010-05-11 17:12:48 +0200
committerArno <am@disconnect.de>2010-05-11 17:12:48 +0200
commit73a1c0d8c76c5f6bd0213ad9c1bb759b1c86c2f8 (patch)
tree9803807a34ed6b487b05cd42654bf3321ba7bf06
parent8e1b2c03076b9908fbc8eafe861845c2d11bd7f0 (diff)
downloadSheMov-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.cpp50
-rw-r--r--filesystemwidget.h4
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;