diff options
Diffstat (limited to 'filestreewidget.cpp')
-rw-r--r-- | filestreewidget.cpp | 59 |
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){ |