diff options
-rw-r--r-- | archivecontroller.cpp | 48 | ||||
-rw-r--r-- | archivecontroller.h | 6 | ||||
-rw-r--r-- | archivemodel.cpp | 23 | ||||
-rw-r--r-- | archivemodel.h | 1 | ||||
-rw-r--r-- | archiveview.cpp | 44 | ||||
-rw-r--r-- | archiveview.h | 5 |
6 files changed, 81 insertions, 46 deletions
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<QVariant> 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<QStandardItem*>() << mRelI1 << mRelI2); + QStandardItem *mSrcI1 = new QStandardItem(mMetaIcon, tr("Source")); + QStandardItem *mSrcI2 = new QStandardItem(metadata.at(ArchiveModel::Source).toString()); + mMetaModel->appendRow(QList<QStandardItem*>() << 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<QStandardItem*>() << 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<QStandardItem*>() << 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<QStandardItem*>() << 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<QStandardItem*>() << 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<QStandardItem*>() << 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); diff --git a/archivecontroller.h b/archivecontroller.h index 5c3974f..3b743bd 100644 --- a/archivecontroller.h +++ b/archivecontroller.h @@ -35,7 +35,7 @@ class ArchiveController : public QObject { void setArchiveFiles(ArchiveFiles *afiles, ArchiveFilesProxy *afilesproxy); void setModels(ArchiveModel *amodel, ArchiveFilesModel *afilesmodel); void setMappingModels(QStandardItemModel *actorModel, QStandardItemModel *genreModel); - void setMetadata(QTextEdit *metadata); + void setMetadata(QStandardItemModel *model, QTextEdit *comment); ArchiveFilesModel *archiveFilesModel() { return mArchiveFilesModel; } ArchiveFiles *archiveFiles() { return mArchiveFiles; } ArchiveModel *archiveTreeModel() { return mArchiveModel; } @@ -78,11 +78,13 @@ class ArchiveController : public QObject { QItemSelectionModel *mFileSelection; QStandardItemModel *mActorModel; QStandardItemModel *mGenreModel; - QTextEdit *mMetadataView; + QStandardItemModel *mMetaModel; + QTextEdit *mComment; QWidget *mParentWidget; QList<QAction*> mActionsForTree; QIcon mActorIcon; QIcon mGenreIcon; + QIcon mMetaIcon; QIcon mFileIcon; }; diff --git a/archivemodel.cpp b/archivemodel.cpp index ff37e73..1d6c8d0 100644 --- a/archivemodel.cpp +++ b/archivemodel.cpp @@ -394,29 +394,6 @@ void ArchiveModel::setGenres(int partId, const QStringList &genres){ mDb.commit(); } - -QString ArchiveModel::metadata(int partId) const{ - QString retval; - retval.append("<html><table>"); - QSqlQuery metadataQuery(mDb); - metadataQuery.prepare("SELECT sireleaseyear, tsourcemedium, tsubject, treleasegroup, tencoderopts, tcomment, sipasses, dadded FROM metadata WHERE iseriespart_id = :id"); - metadataQuery.bindValue(":id", partId); - metadataQuery.exec(); - while(metadataQuery.next()){ - retval.append(QString("<tr><td style=\"padding-right:10\"><i>Release year</i></td><td>%1</td></tr>").arg(QString::number(metadataQuery.value(0).toInt()))); - retval.append(QString("<tr><td><i>Source</i></td><td>%1</td></tr>").arg(metadataQuery.value(1).toString())); - retval.append(QString("<tr><td><i>Subject</i></td><td>%1</td></tr>").arg(metadataQuery.value(2).toString())); - retval.append(QString("<tr><td><i>Rel. Group</i></td><td>%1</td></tr>").arg(metadataQuery.value(3).toString())); - retval.append(QString("<tr><td><i>Enc. Opts</i></td><td>%1</td></tr>").arg(metadataQuery.value(4).toString())); - retval.append(QString("<tr><td><i>Passes</i></td><td>%1</td></tr>").arg(QString::number(metadataQuery.value(6).toInt()))); - QDate added = metadataQuery.value(7).toDate(); - retval.append(QString("<tr><td><i>Added</i></td><td>%1</td></tr>").arg(added.toString("yyyy-MM-dd"))); - retval.append(QString("<tr><td><i>Comment</i></td><td>%1</td></tr>").arg(metadataQuery.value(5).toString())); - } - retval.append("</table></html>"); - return retval; -} - QList<QVariant> ArchiveModel::metadataList(int partId) const{ QSqlQuery metadataQuery(mDb); metadataQuery.prepare("SELECT sireleaseyear, tsourcemedium, tsubject, treleasegroup, tencoderopts, tcomment, sipasses, dadded FROM metadata WHERE iseriespart_id = :id"); diff --git a/archivemodel.h b/archivemodel.h index 6903cfd..00bd46b 100644 --- a/archivemodel.h +++ b/archivemodel.h @@ -47,7 +47,6 @@ class ArchiveModel : public SmTreeModel { QStringList genres(const QSet<int> &genreIds) const; QStringList allGenres() const; void setGenres(int partId, const QStringList &genres); - QString metadata(int partId) const; QList<QVariant> metadataList(int partId) const; void setMetadata(int partId, const QList<QVariant> &data); bool setPartNo(int partId, int newPartId, const QString &subtitle); diff --git a/archiveview.cpp b/archiveview.cpp index 4cf24d0..b7ae5e6 100644 --- a/archiveview.cpp +++ b/archiveview.cpp @@ -115,7 +115,6 @@ ArchiveView::ArchiveView(QWidget *parent) : QWidget(parent) { mFilesProxy->setSourceModel(mFilesModel); mFiles->setModel(mFilesProxy); - QHBoxLayout *bottomRightLayout = new QHBoxLayout; mActorView = new SmTreeView; mActorView->setHeaderHidden(true); mActorModel = new QStandardItemModel(this); @@ -134,27 +133,39 @@ ArchiveView::ArchiveView(QWidget *parent) : QWidget(parent) { genreLayout->addWidget(mGenreView); genreBox->setLayout(genreLayout); - mMetadataView = new QTextEdit; - mMetadataView->setReadOnly(true); - QGroupBox *metadataBox = new QGroupBox("Metadata"); - QHBoxLayout *metadataLayout = new QHBoxLayout; - metadataLayout->addWidget(mMetadataView); + mMetaView = new SmTreeView; + mMetaView->setHeaderHidden(true); + mMetaModel = new QStandardItemModel(this); + mMetaView->setModel(mMetaModel); + mComment = new QTextEdit; + mComment->setReadOnly(true); + QGroupBox *metadataBox = new QGroupBox("Metadata/Comment"); + QVBoxLayout *metadataLayout = new QVBoxLayout; + metadataLayout->addWidget(mMetaView); + metadataLayout->addWidget(mComment); metadataBox->setLayout(metadataLayout); + QHBoxLayout *bottomRightLayout = new QHBoxLayout; bottomRightLayout->addWidget(actorBox); bottomRightLayout->addWidget(genreBox); bottomRightLayout->addWidget(metadataBox); - QVBoxLayout *rightLayout = new QVBoxLayout; - rightLayout->addWidget(mToolBar); - rightLayout->addWidget(mFiles); - rightLayout->addLayout(bottomRightLayout); - QWidget *rightWidget = new QWidget; - rightLayout->setStretchFactor(mFiles, 3); - rightWidget->setLayout(rightLayout); + QWidget *bottomRightWidget = new QWidget; + bottomRightWidget->setLayout(bottomRightLayout); + + QVBoxLayout *topRightLayout = new QVBoxLayout; + topRightLayout->addWidget(mToolBar); + topRightLayout->addWidget(mFiles); + QWidget *topRightWidget = new QWidget; + topRightWidget->setLayout(topRightLayout); + + mRightSplitter = new QSplitter(Qt::Vertical); + mRightSplitter->addWidget(topRightWidget); + mRightSplitter->addWidget(bottomRightWidget); + mRightSplitter->setStretchFactor(0, 4); mTreeSplitter = new QSplitter(Qt::Horizontal); mTreeSplitter->addWidget(treeWidget); - mTreeSplitter->addWidget(rightWidget); + mTreeSplitter->addWidget(mRightSplitter); mTreeSplitter->setStretchFactor(0, 1); mTreeSplitter->setStretchFactor(1, 4); QHBoxLayout *mainLayout = new QHBoxLayout; @@ -185,6 +196,8 @@ void ArchiveView::readSettings(){ mCurrentArchivePath = s.value("archivemodel/selectedseries").toStringList(); QByteArray splitterState = s.value("archivemodel/vsplitter").toByteArray(); mTreeSplitter->restoreState(splitterState); + QByteArray hSplitterState = s.value("archivemodel/hsplitter").toByteArray(); + mRightSplitter->restoreState(hSplitterState); doSelection(); mFiles->readHeaderConfig(); mFiles->setSortingEnabled(true); @@ -201,6 +214,7 @@ void ArchiveView::writeSettings() { s.setValue("archivemodel/expandedfavorites", mExpandedItems.value(ArchiveModel::FavoriteOrder)); s.setValue("archivemodel/selectedseries", mCurrentArchivePath); s.setValue("archivemodel/vsplitter", mTreeSplitter->saveState()); + s.setValue("archivemodel/hsplitter", mRightSplitter->saveState()); mFiles->writeHeaderConfig(); } @@ -272,7 +286,7 @@ void ArchiveView::initController(){ mController->setArchiveFiles(mFiles, mFilesProxy); mController->setModels(mArchiveModel, mFilesModel); mController->setMappingModels(mActorModel, mGenreModel); - mController->setMetadata(mMetadataView); + mController->setMetadata(mMetaModel, mComment); mController->init(); SmGlobals::instance()->setArchiveController(mController); } diff --git a/archiveview.h b/archiveview.h index 202e2f9..d0bb252 100644 --- a/archiveview.h +++ b/archiveview.h @@ -75,10 +75,13 @@ class ArchiveView : public QWidget { QStringList mCurrentArchivePath; SmTreeView *mActorView; SmTreeView *mGenreView; + SmTreeView *mMetaView; + QTextEdit *mComment; QStandardItemModel *mActorModel; QStandardItemModel *mGenreModel; + QStandardItemModel *mMetaModel; QSplitter *mTreeSplitter; - QTextEdit *mMetadataView; + QSplitter *mRightSplitter; QToolBar *mToolBar; }; |