diff options
author | Arno <am@disconnect.de> | 2010-06-26 17:16:12 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2010-06-26 17:16:12 +0200 |
commit | 8dc808a3bd6a8156db4f68e6faaaaae6a0534195 (patch) | |
tree | 36d0d4f09903884cb96ad290ce52ccfe2d105819 /archivetreeview.cpp | |
parent | 0b807eba97e65bf9e25f83387826ef2579b79c90 (diff) | |
download | SheMov-8dc808a3bd6a8156db4f68e6faaaaae6a0534195.tar.gz SheMov-8dc808a3bd6a8156db4f68e6faaaaae6a0534195.tar.bz2 SheMov-8dc808a3bd6a8156db4f68e6faaaaae6a0534195.zip |
Implemented playing a movie on doubleclick
Movie files are played in the default player when double clicking on a
movie, but not when doubleclicking on a series. The latter invokes the
edit event on the series. Don't yet know if this is a good thing or not.
Changes on the way there:
1. new helper function for finding the right player. Still need to fix
FileSystemWidget to also use the Helper::function. It's a simple copy &
paste from there.
2. added function SeriesTreeModel::findSortedMovies. It returns a
QFileInfoList sorted by seriespart and fileno.
Diffstat (limited to 'archivetreeview.cpp')
-rw-r--r-- | archivetreeview.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/archivetreeview.cpp b/archivetreeview.cpp index d77f8e3..ec58fb4 100644 --- a/archivetreeview.cpp +++ b/archivetreeview.cpp @@ -12,6 +12,10 @@ #include <QItemSelectionModel> #include <QAbstractItemModel> #include <QItemSelection> +#include <QFileInfoList> +#include <QSettings> +#include <QHash> +#include <QProcess> #include "archivetreeview.h" #include "smmodelsingleton.h" @@ -22,6 +26,7 @@ #include "seriestreemodel.h" #include "mappingtablewidget.h" #include "mappingtablemodel.h" +#include "helper.h" ArchiveTreeView::ArchiveTreeView(QWidget *parent) : QWidget(parent){ // models @@ -32,6 +37,7 @@ ArchiveTreeView::ArchiveTreeView(QWidget *parent) : QWidget(parent){ mSeriesWidget = new SeriesTreeWidget; QItemSelectionModel *selModel = mSeriesWidget->seriesTree()->selectionModel(); connect(selModel, SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(currentChanged(QItemSelection,QItemSelection))); + connect(mSeriesWidget->seriesTree(), SIGNAL(doubleClicked(QModelIndex)), this, SLOT(playSelected())); mSeriesModel = static_cast<SeriesTreeModel*>(SmModelSingleton::instance()->model("SeriesModel")); // files view @@ -130,3 +136,25 @@ void ArchiveTreeView::setMappingItems(QList<int>seriesPartIds, MappingTableModel widget->setCurrentId(-1); } } + +void ArchiveTreeView::playSelected(){ + QModelIndexList selected = mSeriesWidget->seriesTree()->selectionModel()->selectedRows(); + if(selected.isEmpty()){ + return; + } + QStringList files; + foreach(QModelIndex idx, selected){ + QModelIndex real = mSeriesWidget->mapToSource(idx); + QFileInfoList movies = mSeriesModel->findSortedMovies(real); + foreach(QFileInfo fi, movies){ + if(!files.contains(fi.absoluteFilePath())){ + files << fi.absoluteFilePath(); + } + } + } + QPair<QString, QStringList> progData = Helper::programData("movieviewer"); + QString program = progData.first; + QStringList args = progData.second; + args << files; + QProcess::startDetached(program, args); +} |