summaryrefslogtreecommitdiffstats
path: root/filestreewidget.cpp
diff options
context:
space:
mode:
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){