summaryrefslogtreecommitdiffstats
path: root/filepropertiesdialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'filepropertiesdialog.cpp')
-rw-r--r--filepropertiesdialog.cpp99
1 files changed, 99 insertions, 0 deletions
diff --git a/filepropertiesdialog.cpp b/filepropertiesdialog.cpp
new file mode 100644
index 0000000..969eac4
--- /dev/null
+++ b/filepropertiesdialog.cpp
@@ -0,0 +1,99 @@
+/*
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation; either version
+ 2 of the License, or (at your option) any later version.
+*/
+
+#include <QVBoxLayout>
+#include <QHBoxLayout>
+#include <QLabel>
+#include <QTreeView>
+#include <QPushButton>
+
+#include "filepropertiesdialog.h"
+#include "smtreemodel.h"
+#include "smtreeitem.h"
+#include "helper.h"
+
+FilePropertiesDialog::FilePropertiesDialog(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f){
+ //main layout
+ QVBoxLayout *mainLayout = new QVBoxLayout;
+
+ //description
+ mDescriptionLabel = new QLabel(tr("Properties for [none]"));
+ mainLayout->addWidget(mDescriptionLabel);
+
+ //the view + model
+ mModel = new SmTreeModel((QStringList() << QString() << QString()), this);
+ mView = new QTreeView;
+ mView->setHeaderHidden(true);
+ mView->setEditTriggers(QAbstractItemView::NoEditTriggers);
+ mView->setModel(mModel);
+ mainLayout->addWidget(mView);
+
+ //ok button
+ QHBoxLayout *buttonLayout = new QHBoxLayout;
+ mClose = new QPushButton(tr("Close"));
+ connect(mClose, SIGNAL(clicked()), this, SLOT(accept()));
+ buttonLayout->setAlignment(Qt::AlignCenter);
+ buttonLayout->addWidget(mClose);
+ mainLayout->addLayout(buttonLayout);
+
+ setLayout(mainLayout);
+ setMinimumWidth(450);
+}
+
+void FilePropertiesDialog::setFileName(const QString &fileName){
+ QString text = QString(tr("Properties for %1")).arg(fileName);
+ mDescriptionLabel->setText(text);
+ setWindowTitle(text);
+}
+
+void FilePropertiesDialog::setStreamData(const QList<QMap<QString, QString> > &streamData){
+ SmTreeItem *root = new SmTreeItem(2);
+ for(int i = 0; i < streamData.size(); ++i){
+ QList<QVariant> titleData;
+ QString title = QString(tr("Stream %1")).arg(QString::number(i));
+ titleData << title << QVariant();
+ SmTreeItem *titleItem = new SmTreeItem(titleData, root);
+ root->appendChild(titleItem);
+ QMap<QString, QString>::const_iterator it = streamData.at(i).constBegin();
+ while(it != streamData.at(i).constEnd()){
+ QList<QVariant> itemData;
+ if(it.key() == "duration" && it.value() != "N/A"){
+ qint64 duration = it.value().toFloat();
+ itemData << it.key() << Helper::durationFromSecs(duration);
+ }else{
+ itemData << it.key() << it.value();
+ }
+ SmTreeItem *item = new SmTreeItem(itemData, titleItem);
+ titleItem->appendChild(item);
+ ++it;
+ }
+ }
+ mModel->setRoot(root);
+ mView->expandAll();
+ mView->resizeColumnToContents(0);
+ mView->resizeColumnToContents(1);
+}
+
+void FilePropertiesDialog::addData(const QString &caption, const QMap<QString, QString> &data){
+ SmTreeItem *root = new SmTreeItem(*mModel->root());
+ QList<QVariant> titleData;
+ titleData << caption << QVariant();
+ SmTreeItem *titleItem = new SmTreeItem(titleData, root);
+ root->appendChild(titleItem);
+ QMap<QString, QString>::const_iterator it = data.constBegin();
+ while(it != data.constEnd()){
+ QList<QVariant> itemData;
+ itemData << it.key() << it.value();
+ SmTreeItem *item = new SmTreeItem(itemData, titleItem);
+ titleItem->appendChild(item);
+ ++it;
+ }
+ mModel->setRoot(root);
+ mView->expandAll();
+ mView->resizeColumnToContents(0);
+ mView->resizeColumnToContents(1);
+}