summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2010-05-12 15:23:29 +0200
committerArno <am@disconnect.de>2010-05-12 15:23:29 +0200
commit22cddc9dfb6bb8effe77e2c9b4dc4d654f1c1fc6 (patch)
tree68db4b7aa66c6f7781404be22eed4d81f84d7470
parentd2d6656531e5ec5c088a30ecb93318956e8fb096 (diff)
downloadSheMov-22cddc9dfb6bb8effe77e2c9b4dc4d654f1c1fc6.tar.gz
SheMov-22cddc9dfb6bb8effe77e2c9b4dc4d654f1c1fc6.tar.bz2
SheMov-22cddc9dfb6bb8effe77e2c9b4dc4d654f1c1fc6.zip
Implemented "Open with"
The contextmenu of Fileview got an "Open with" submenu containing all configured programs. Opening files does not depend on MIME-types. That means a movie can be opened with a pictureviewer and vice versa.
-rw-r--r--filesystemwidget.cpp28
-rw-r--r--shemov.cpp1
2 files changed, 19 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());
}
diff --git a/shemov.cpp b/shemov.cpp
index 4a6c94e..f7439e1 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -363,6 +363,7 @@ void SheMov::createActions(){
// misc
mOpenWithGroup = new QActionGroup(this);
mOpenWithMapper = new QSignalMapper(this);
+ connect(mOpenWithMapper, SIGNAL(mapped(QString)), mFSWidget, SLOT(playSelected(QString)));
}
void SheMov::createMenus(){