/* 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 #include "filepropertiesdialog.h" #include "seriesmetadatamodel.h" #include "smtreemodel.h" #include "smtreeitem.h" #include "helper.h" FilePropertiesDialog::FilePropertiesDialog(int seriesPartId, QWidget *parent, Qt::WindowFlags f) : SmDialog(parent, f){ //tab mTab = new QTabWidget; //stream data widget QVBoxLayout *streamDataLayout = new QVBoxLayout; QWidget *streamData = new QWidget; //description mDescriptionLabel = new QLabel(tr("Properties for [none]")); mDescriptionLabel->setAutoFillBackground(true); mDescriptionLabel->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); streamDataLayout->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); streamDataLayout->addWidget(mView); streamData->setLayout(streamDataLayout); mTab->addTab(streamData, tr("Stream data")); //metadata widget mMetadata = new MetadataWidget; mMetadata->setSeriesPartId(seriesPartId); mTab->addTab(mMetadata, tr("Metadata")); //buttons QHBoxLayout *buttonLayout = new QHBoxLayout; mOk = new QPushButton(tr("Ok")); connect(mOk, SIGNAL(clicked()), this, SLOT(accept())); connect(mOk, SIGNAL(clicked()), mMetadata, SLOT(accept())); mCancel = new QPushButton(tr("Cancel")); connect(mCancel, SIGNAL(clicked()), this, SLOT(reject())); buttonLayout->setAlignment(Qt::AlignRight); buttonLayout->addWidget(mOk); buttonLayout->addWidget(mCancel); //main layout QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(mTab); 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); }