From 0e27f8f8aaf1a0dbff9aed960e78f109517a387a Mon Sep 17 00:00:00 2001 From: Arno Date: Wed, 10 Dec 2014 07:13:29 +0100 Subject: Revamped MetadataWidget Split it up into a small QTreeView and a QTextEdit for the comment. QTreeView and horizontal scrollbars don't seem to play nice together. Qt never displays the bar even if ElideText is set to none. So add a QToolTip for the Subject/Name, since it's most likely not displayed completely. --- archivecontroller.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 4 deletions(-) (limited to 'archivecontroller.cpp') diff --git a/archivecontroller.cpp b/archivecontroller.cpp index a50023b..0cd0b1c 100644 --- a/archivecontroller.cpp +++ b/archivecontroller.cpp @@ -57,8 +57,9 @@ void ArchiveController::setMappingModels(QStandardItemModel *actorModel, QStanda mGenreModel = genreModel; } -void ArchiveController::setMetadata(QTextEdit *metadata){ - mMetadataView = metadata; +void ArchiveController::setMetadata(QStandardItemModel *model, QTextEdit *comment){ + mMetaModel = model; + mComment = comment; } void ArchiveController::init(){ @@ -230,6 +231,7 @@ void ArchiveController::addFiles(){ void ArchiveController::readConfig(){ mActorIcon = SmGlobals::instance()->iconFor("actor"); mGenreIcon = SmGlobals::instance()->iconFor("genre"); + mMetaIcon = QIcon(":/huge_bra.png"); } void ArchiveController::moveFilesToSeriespart(const QStringList &md5Sums, int newSeriesPart){ @@ -265,8 +267,46 @@ void ArchiveController::treeSelectionChanged(const QItemSelection &selected, con QStandardItem *newItem = new QStandardItem(mGenreIcon, genre); mGenreModel->appendRow(newItem); } - QString metaData = mArchiveModel->metadata(*ids.begin()); - mMetadataView->setHtml(metaData); + + mMetaModel->clear(); + QList metadata = mArchiveModel->metadataList(*ids.begin()); + QStandardItem *mRelI1 = new QStandardItem(mMetaIcon, tr("Rel. Year")); + QStandardItem *mRelI2 = new QStandardItem(metadata.at(ArchiveModel::ReleaseYear).toString()); + mMetaModel->appendRow(QList() << mRelI1 << mRelI2); + QStandardItem *mSrcI1 = new QStandardItem(mMetaIcon, tr("Source")); + QStandardItem *mSrcI2 = new QStandardItem(metadata.at(ArchiveModel::Source).toString()); + mMetaModel->appendRow(QList() << mSrcI1 << mSrcI2); + QStandardItem *mSubjI1 = new QStandardItem(mMetaIcon, tr("Subj./Name")); + QStandardItem *mSubjI2 = new QStandardItem(metadata.at(ArchiveModel::Subject).toString()); + mSubjI2->setToolTip(metadata.at(ArchiveModel::Subject).toString()); + mMetaModel->appendRow(QList() << mSubjI1 << mSubjI2); + QStandardItem *mAddI1 = new QStandardItem(mMetaIcon, tr("Added")); + QDateTime added = metadata.at(ArchiveModel::Added).toDateTime(); + QStandardItem *mAddI2 = new QStandardItem(added.toString("yyyy-MM-dd")); + mMetaModel->appendRow(QList() << mAddI1 << mAddI2); + if(!metadata.at(ArchiveModel::ReleaseGroup).toString().isEmpty()){ + QStandardItem *mGrpI1 = new QStandardItem(mMetaIcon, tr("Group")); + QStandardItem *mGrpI2 = new QStandardItem(metadata.at(ArchiveModel::ReleaseGroup).toString()); + mMetaModel->appendRow(QList() << mGrpI1 << mGrpI2); + } + if(!metadata.at(ArchiveModel::EncoderOpts).toString().isEmpty()){ + QStandardItem *mOptsI1 = new QStandardItem(mMetaIcon, tr("Enc. Opts")); + QStandardItem *mOptsI2 = new QStandardItem(metadata.at(ArchiveModel::EncoderOpts).toString()); + mMetaModel->appendRow(QList() << mOptsI1 << mOptsI2); + } + if(metadata.at(ArchiveModel::Passes).toInt() > 0){ + QStandardItem *mPasI1 = new QStandardItem(mMetaIcon, tr("Passes")); + QStandardItem *mPasI2 = new QStandardItem(metadata.at(ArchiveModel::Passes).toString()); + mMetaModel->appendRow(QList() << mPasI1 << mPasI2); + } + for(int i = 0; i < mMetaModel->rowCount(); ++i){ + QStandardItem *i1 = mMetaModel->item(i, 0); + i1->setEditable(false); + QStandardItem *i2 = mMetaModel->item(i, 1); + i2->setEditable(false); + } + mComment->setHtml(metadata.at(ArchiveModel::Comment).toString()); + int nodeType = sel.first().data(ArchiveModel::TypeRole).toInt(); foreach(QAction *a, mActionsForTree){ a->setEnabled(a->data().toInt() & nodeType); -- cgit v1.2.3-70-g09d2