summaryrefslogtreecommitdiffstats
path: root/archiveviewwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'archiveviewwidget.cpp')
-rw-r--r--archiveviewwidget.cpp50
1 files changed, 47 insertions, 3 deletions
diff --git a/archiveviewwidget.cpp b/archiveviewwidget.cpp
index 22a51f1..42532c5 100644
--- a/archiveviewwidget.cpp
+++ b/archiveviewwidget.cpp
@@ -18,6 +18,7 @@
#include <QProcess>
#include <QDir>
#include <QRegExp>
+#include <QHash>
#include "archiveviewwidget.h"
#include "archivefileview.h"
@@ -155,9 +156,9 @@ void ArchiveViewWidget::showMovie(const QModelIndex &movie){
emit statusbarMessage(tr("Movie is not present on filesystem"));
return;
}
- QSettings s;
- QString playerPath = s.value("paths/movieviewer").toString();
- QStringList args = s.value("paths/movieviewerargs").toStringList();
+ QPair<QString, QStringList> pData = playerData(QString());
+ QString playerPath = pData.first;
+ QStringList args = pData.second;
args << real.data(MovieModel::FullPathRole).toString();
QProcess::startDetached(playerPath, args);
}
@@ -295,6 +296,18 @@ void ArchiveViewWidget::deleteFromArchive(){
}
}
+void ArchiveViewWidget::playSelected(const QString &player){
+ QStringList selectedMovies = selectedFiles();
+ if(selectedMovies.isEmpty()){
+ return;
+ }
+ QPair<QString, QStringList> pData = playerData(player);
+ QString prog = pData.first;
+ QStringList args = pData.second;
+ args << selectedMovies;
+ QProcess::startDetached(prog, args);
+}
+
void ArchiveViewWidget::rowChanged(const QModelIndex &/*current*/, const QModelIndex & /*prev*/){
QModelIndex idx = getSourceColumnZero();
mWindowTitle = QString(tr("%1 - %2")).arg(qApp->applicationName()).arg(idx.data().toString());
@@ -324,3 +337,34 @@ const QModelIndex ArchiveViewWidget::getSourceColumnZero(){
return retval;
}
+QPair<QString, QStringList> ArchiveViewWidget::playerData(const QString &preferred){
+ QSettings s;
+ QHash<QString, QVariant> data = s.value("programs_movieviewer/data").toHash();
+ if(!preferred.isEmpty()){
+ if(data.keys().contains(preferred)){
+ QHash<QString, QVariant> pData = data.value(preferred).toHash();
+ return qMakePair(pData.value("path").toString(), pData.value("args").toStringList());
+ }
+ return QPair<QString, QStringList>();
+ }
+ QString defaultPlayer = s.value("programs_movieviewer/default").toString();
+ if(data.keys().contains(defaultPlayer)){
+ QHash<QString, QVariant> pData = data.value(defaultPlayer).toHash();
+ return qMakePair(pData.value("path").toString(), pData.value("args").toStringList());
+ }
+ return QPair<QString, QStringList>();
+}
+
+QStringList ArchiveViewWidget::selectedFiles(){
+ QModelIndexList selected = fileView()->selectionModel()->selectedRows();
+ if(selected.isEmpty()){
+ return QStringList();
+ }
+ QStringList retval;
+ foreach(QModelIndex idx, selected){
+ if(idx.data(MovieModel::DvdRole).toInt() == -1){
+ retval << idx.data(MovieModel::FullPathRole).toString();
+ }
+ }
+ return retval;
+}