/* 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 #include #include #include #include #include #include #include #include #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]")); mDescriptionLabel->setAutoFillBackground(true); mDescriptionLabel->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); mainLayout->addWidget(mDescriptionLabel); QSettings s; QVariant varColor = s.value("ui/alternatecolor"); QColor labelColor = varColor.value(); QPalette labelPalette = mDescriptionLabel->palette(); labelPalette.setColor(QPalette::Window, labelColor); mDescriptionLabel->setPalette(labelPalette); //the view + model mModel = new SmTreeModel((QStringList() << QString() << QString()), this); mView = new QTreeView; mView->setHeaderHidden(true); mView->setAlternatingRowColors(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 > &streamData){ SmTreeItem *root = new SmTreeItem(2); for(int i = 0; i < streamData.size(); ++i){ QList titleData; QString title = QString(tr("Stream %1")).arg(QString::number(i)); titleData << title << QVariant(); SmTreeItem *titleItem = new SmTreeItem(titleData, root); root->appendChild(titleItem); QMap::const_iterator it = streamData.at(i).constBegin(); while(it != streamData.at(i).constEnd()){ QList 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 &data){ SmTreeItem *root = new SmTreeItem(*mModel->root()); QList titleData; titleData << caption << QVariant(); SmTreeItem *titleItem = new SmTreeItem(titleData, root); root->appendChild(titleItem); QMap::const_iterator it = data.constBegin(); while(it != data.constEnd()){ QList 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); }