summaryrefslogtreecommitdiffstats
path: root/filestreewidget.cpp
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2012-08-29 17:05:42 +0200
committerArno <am@disconnect.de>2012-08-29 17:05:42 +0200
commite36afa2180ef93a1bbf0398b29be3d8c62ab90cc (patch)
treee113976315ac9793e03c3cfb60129b7110dbf687 /filestreewidget.cpp
parent61b5308d704af70fc133b37c21c730387c8a9cc3 (diff)
downloadSheMov-e36afa2180ef93a1bbf0398b29be3d8c62ab90cc.tar.gz
SheMov-e36afa2180ef93a1bbf0398b29be3d8c62ab90cc.tar.bz2
SheMov-e36afa2180ef93a1bbf0398b29be3d8c62ab90cc.zip
Play selected movies from archive
Well, it started out as a simple new QAction for the archive: Play selected movies, but ended up in cleaning up the context menu madness in shemov.cpp. Created a factory for context menu separators... Well, and we can now play selected movies from the FilesTreeWidget :)
Diffstat (limited to 'filestreewidget.cpp')
-rw-r--r--filestreewidget.cpp59
1 files changed, 41 insertions, 18 deletions
diff --git a/filestreewidget.cpp b/filestreewidget.cpp
index 2d36fdc..d510312 100644
--- a/filestreewidget.cpp
+++ b/filestreewidget.cpp
@@ -283,7 +283,19 @@ void FilesTreeWidget::suggest(){
}
QString message = QString(tr("Selected %1 items: %2")).arg(QString::number(selectedFiles.count())).arg(selectedFiles.join(", "));
emit statusMessage(message);
- mView->scrollTo(last, QAbstractItemView::PositionAtCenter);
+ mView->scrollTo(last, QAbstractItemView::PositionAtCenter);
+}
+
+void FilesTreeWidget::playSelected(){
+ QStringList fullPaths;
+ QModelIndexList selected = mView->selectionModel()->selectedRows();
+ if(selected.isEmpty()){
+ return;
+ }
+ foreach(QModelIndex idx, selected){
+ fullPaths << idx.data(FilesTreeModel::FullPathRole).toString();
+ }
+ playItems(fullPaths);
}
void FilesTreeWidget::fileSelectionChanged(){
@@ -316,25 +328,36 @@ void FilesTreeWidget::itemDoubleClicked(const QModelIndex &index){
QString mimeType = Helper::mimeType(file);
if(mimeType.startsWith("image")){
mPictureViewer->setFile(file);
+ mPictureViewer->show();
return;
- }else{
- int dvdNo = index.data(FilesTreeModel::DvdNoRole).toInt();
- if(dvdNo != -1){
- QString msg = QString(tr("%1 is archived on DVD %2.")).arg(index.data(FilesTreeModel::FileNameRole).toString()).arg(QString::number(index.data(FilesTreeModel::DvdNoRole).toInt()));
- QMessageBox::critical(this, tr("Error"), msg);
- return;
- }
- QPair<QString, QStringList> data = Helper::programData("movieviewer", QString());
- if(data.first.isEmpty()){
- QMessageBox::critical(this, tr("Error"), tr("No viedeo viewer configured."));
- return;
- }
- QString program = data.first;
- QStringList args = data.second;
- args << file;
- QProcess::startDetached(program, args);
+ }else if(mimeType.startsWith("video")){
+ playItems(QStringList() << file);
}
- }
+ }else{
+ QString msg = QString(tr("File %1 not found!")).arg(file);
+ QMessageBox::critical(this, tr("Error"), msg);
+ }
+}
+
+void FilesTreeWidget::playItems(const QStringList &paths){
+ if(paths.isEmpty()){
+ return;
+ }
+ QStringList existing;
+ foreach(QString p, paths){
+ QFileInfo fi(p);
+ if(fi.exists()){
+ existing << p;
+ }
+ }
+ if(existing.isEmpty()){
+ return;
+ }
+ QPair<QString, QStringList> pData = Helper::programData("movieviewer", QString());
+ QString prog = pData.first;
+ QStringList args = pData.second;
+ args << existing;
+ QProcess::startDetached(prog, args);
}
FilesTreeView::FilesTreeView(QWidget *parent) : QTreeView(parent), mHoverPics(false){