diff options
author | Arno <am@disconnect.de> | 2010-05-12 15:23:29 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2010-05-12 15:23:29 +0200 |
commit | 22cddc9dfb6bb8effe77e2c9b4dc4d654f1c1fc6 (patch) | |
tree | 68db4b7aa66c6f7781404be22eed4d81f84d7470 | |
parent | d2d6656531e5ec5c088a30ecb93318956e8fb096 (diff) | |
download | SheMov-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.cpp | 28 | ||||
-rw-r--r-- | shemov.cpp | 1 |
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()); } @@ -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(){ |