From 8eba6e7f033617f3e7ea3bd9913105df0de74ae2 Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 31 Jul 2010 16:26:10 +0200 Subject: Implement FilePropertiesDialog Implemented a dialog for file properties. When the mime type says it's a video, fork ffprobe to read the properties of all streams and show them in a QTreeView powered by a SmTreeModel. If the mime type is image, use QImage to read some properties and show them in the same dialog. This commit introduces the new class FilePropertiesDialog. I also had to implement a copy constructor for SmTreeItem. It obsoletes classes ActorWidget, ActorModel and MoviePropertiesDialog. --- filestreewidget.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'filestreewidget.cpp') diff --git a/filestreewidget.cpp b/filestreewidget.cpp index a348ac4..3161e57 100644 --- a/filestreewidget.cpp +++ b/filestreewidget.cpp @@ -28,6 +28,7 @@ #include "seriestreemodel.h" #include "helper.h" #include "pictureviewer.h" +#include "filepropertiesdialog.h" FilesTreeWidget::FilesTreeWidget(QWidget *parent) : QWidget(parent), mSelectedSize(0){ //the view @@ -158,6 +159,38 @@ void FilesTreeWidget::moveToDirectory(){ } } +void FilesTreeWidget::fileProperties(){ + QModelIndexList selected = mView->selectionModel()->selectedRows(); + if(selected.isEmpty()){ + return; + } + QModelIndex real = mProxy->mapToSource(selected.at(0)); + if(real.isValid()){ + int dvd = real.data(FilesTreeModel::DvdNoRole).toInt(); + if(dvd != -1){ + QMessageBox::critical(this, tr("Error"), tr("File is not available!")); + return; + } + QString fullPath = real.data(FilesTreeModel::FullPathRole).toString(); + QString mimeType = Helper::mimeType(fullPath); + FilePropertiesDialog dlg(this); + dlg.setFileName(real.data(FilesTreeModel::FileNameRole).toString()); + if(mimeType.startsWith("video")){ + QList > fileData = mModel->streamInfo(real); + dlg.setStreamData(fileData); + }else if(mimeType.startsWith("image")){ + QMap imageData = mModel->pictureInfo(real); + dlg.addData("Image data", imageData); + QMap textData = mModel->pictureMetaInfo(real); + if(!textData.isEmpty()){ + dlg.addData("Meta data", textData); + } + } + dlg.exec(); + } + +} + void FilesTreeWidget::fileSelectionChanged(const QModelIndex ¤t, const QModelIndex &previous){ Q_UNUSED(previous); int seriesPartId = current.data(FilesTreeModel::SeriesPartIdRole).toInt(); -- cgit v1.2.3-70-g09d2