diff options
Diffstat (limited to 'filepropertiesdialog.cpp')
-rw-r--r-- | filepropertiesdialog.cpp | 99 |
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); +} |