diff options
Diffstat (limited to 'archiveviewwidget.cpp')
-rw-r--r-- | archiveviewwidget.cpp | 50 |
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; +} |