summaryrefslogtreecommitdiffstats
path: root/archivetreeview.cpp
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2010-06-26 17:16:12 +0200
committerArno <am@disconnect.de>2010-06-26 17:16:12 +0200
commit8dc808a3bd6a8156db4f68e6faaaaae6a0534195 (patch)
tree36d0d4f09903884cb96ad290ce52ccfe2d105819 /archivetreeview.cpp
parent0b807eba97e65bf9e25f83387826ef2579b79c90 (diff)
downloadSheMov-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.cpp28
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);
+}