From 11032ae73ea103d97d9fefb1375b957fa505eeaa Mon Sep 17 00:00:00 2001 From: Arno Date: Fri, 12 Jul 2013 11:44:04 +0200 Subject: Split MetadataEditor Again, split the editor into a widget and a dialog, so we can use the widget in NewMovieWizard. --- archiveview.cpp | 64 ++++++++++++++++++++++++++++++++++----------------------- archiveview.h | 21 ++++++++++++++++--- 2 files changed, 56 insertions(+), 29 deletions(-) diff --git a/archiveview.cpp b/archiveview.cpp index 2521113..f0b3cf6 100644 --- a/archiveview.cpp +++ b/archiveview.cpp @@ -326,22 +326,21 @@ void ArchiveTree::editMetadata(){ MetadataEditor e(this); ArchiveController *c = SmGlobals::instance()->archiveController(); QStringList sources = c->archiveTreeModel()->allSources(); - e.setSources(sources); + e.widget()->setSources(sources); QStringList relGroups = c->archiveTreeModel()->allReleaseGroups(); - e.setReleaseGroups(relGroups); + e.widget()->setReleaseGroups(relGroups); QModelIndex idx = currentIndex(); int pId = idx.data(ArchiveModel::SeriesPartIdRole).toInt(); QList curMetadata = c->archiveTreeModel()->metadataList(pId); - e.setMetadata(curMetadata); + e.widget()->setMetadata(curMetadata); int res = e.exec(); if(res == QDialog::Accepted){ - QList data = e.metadata(); + QList data = e.widget()->metadata(); mModel->setMetadata(pId, data); c->treeSelectionChanged(QItemSelection(), QItemSelection()); } } - void ArchiveTree::impossible(const QString msg){ QMessageBox::critical(this, tr("Error"), msg); } @@ -512,14 +511,9 @@ MappingEditor::MappingEditor(const QString &caption, QWidget *parent, Qt::Window setMinimumWidth(300); } +/* Metadata Editor Widget */ - - - - -/* Metadata Editor */ - -MetadataEditor::MetadataEditor(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f){ +MetadataEditorWidget::MetadataEditorWidget(QWidget *parent) : QWidget(parent) { QLabel *captionL = new QLabel(tr("Edit Metadata")); QFormLayout *dataLayout = new QFormLayout; @@ -548,33 +542,24 @@ MetadataEditor::MetadataEditor(QWidget *parent, Qt::WindowFlags f) : QDialog(par mComment = new QTextEdit; commentLayout->addWidget(mComment); - QHBoxLayout *buttonLayout = new QHBoxLayout; - buttonLayout->addStretch(); - mCancel = new QPushButton(tr("Cancel")); - connect(mCancel, SIGNAL(clicked()), this, SLOT(reject())); - buttonLayout->addWidget(mCancel); - mAccept = new QPushButton(tr("Accept")); - connect(mAccept, SIGNAL(clicked()), this, SLOT(accept())); - buttonLayout->addWidget(mAccept); + mWidgets << mReleaseYear << mSource << mRelGroup << mSubject << mEncoderOpts << mPasses << mComment; QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(captionL); mainLayout->addLayout(dataLayout); mainLayout->addLayout(commentLayout); - mainLayout->addLayout(buttonLayout); setLayout(mainLayout); - setMinimumWidth(400); } -void MetadataEditor::setSources(const QStringList &sources){ +void MetadataEditorWidget::setSources(const QStringList &sources){ mSource->addItems(sources); } -void MetadataEditor::setReleaseGroups(const QStringList &relGroups){ +void MetadataEditorWidget::setReleaseGroups(const QStringList &relGroups){ mRelGroup->addItems(relGroups); } -void MetadataEditor::setMetadata(const QList &data){ +void MetadataEditorWidget::setMetadata(const QList &data){ mReleaseYear->setValue(data.at(ArchiveModel::ReleaseYear).toInt()); mSource->setCurrentText(data.at(ArchiveModel::Source).toString()); mSubject->setText(data.at(ArchiveModel::Subject).toString()); @@ -585,7 +570,7 @@ void MetadataEditor::setMetadata(const QList &data){ mAdded = data.at(ArchiveModel::Added).toDate(); } -QList MetadataEditor::metadata() const{ +QList MetadataEditorWidget::metadata() const{ QList retval; for(int i = 0; i < ArchiveModel::MetadataNumFields; ++i){ retval << QVariant(); @@ -601,6 +586,33 @@ QList MetadataEditor::metadata() const{ return retval; } +void MetadataEditorWidget::setEnabledAll(bool enabled){ + foreach(QWidget *w, mWidgets){ + w->setEnabled(enabled); + } +} + +/* Metadata Editor */ + +MetadataEditor::MetadataEditor(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f){ + mWidget = new MetadataEditorWidget; + + QHBoxLayout *buttonLayout = new QHBoxLayout; + buttonLayout->addStretch(); + mCancel = new QPushButton(tr("Cancel")); + connect(mCancel, SIGNAL(clicked()), this, SLOT(reject())); + buttonLayout->addWidget(mCancel); + mAccept = new QPushButton(tr("Accept")); + connect(mAccept, SIGNAL(clicked()), this, SLOT(accept())); + buttonLayout->addWidget(mAccept); + + QVBoxLayout *mainLayout = new QVBoxLayout; + mainLayout->addWidget(mWidget); + mainLayout->addLayout(buttonLayout); + setLayout(mainLayout); + setMinimumWidth(400); +} + /* Delegate for File no. */ QString FileNoDelegate::displayText(const QVariant &value, const QLocale &locale) const{ diff --git a/archiveview.h b/archiveview.h index ed19e4e..41c86c3 100644 --- a/archiveview.h +++ b/archiveview.h @@ -179,15 +179,18 @@ class MappingEditor : public QDialog { MappingEditorWidget *mWidget; }; -class MetadataEditor : public QDialog { +class MetadataEditorWidget : public QWidget { Q_OBJECT public: - explicit MetadataEditor(QWidget *parent = 0, Qt::WindowFlags f = 0); + explicit MetadataEditorWidget(QWidget *parent = 0); void setSources(const QStringList &sources); void setReleaseGroups(const QStringList &relGroups); void setMetadata(const QList &data); QList metadata() const; + public slots: + void setEnabledAll(bool enabled); + private: QSpinBox *mReleaseYear; QComboBox *mSource; @@ -196,9 +199,21 @@ class MetadataEditor : public QDialog { QLineEdit *mEncoderOpts; QSpinBox *mPasses; QTextEdit *mComment; + QDate mAdded; + QList mWidgets; +}; + +class MetadataEditor : public QDialog { + Q_OBJECT + public: + explicit MetadataEditor(QWidget *parent = 0, Qt::WindowFlags f = 0); + MetadataEditorWidget *widget() { return mWidget; } + + private: + MetadataEditorWidget *mWidget; QPushButton *mCancel; QPushButton *mAccept; - QDate mAdded; + }; class FileNoDelegate : public QStyledItemDelegate { -- cgit v1.2.3-70-g09d2