diff options
-rw-r--r-- | newmoviewizard.cpp | 123 | ||||
-rw-r--r-- | newmoviewizard.h | 23 |
2 files changed, 34 insertions, 112 deletions
diff --git a/newmoviewizard.cpp b/newmoviewizard.cpp index e8b3712..ad74f41 100644 --- a/newmoviewizard.cpp +++ b/newmoviewizard.cpp @@ -151,7 +151,7 @@ void NewMovieWizard::accept(){ } //files have landed //handle actors - MovieMappingPage *actorPage = static_cast<MovieMappingPage*>(page(1)); + MovieMappingPage *actorPage = qobject_cast<MovieMappingPage*>(page(1)); QStringList actors = actorPage->widget()->items(); QSqlQuery actorIdQ(db); actorIdQ.prepare("SELECT iactors_id FROM actors WHERE tactorname = :name"); @@ -185,7 +185,7 @@ void NewMovieWizard::accept(){ } //actors are in place! //handle genres - MovieMappingPage *genrePage = static_cast<MovieMappingPage*>(page(2)); + MovieMappingPage *genrePage = qobject_cast<MovieMappingPage*>(page(2)); QStringList genres = genrePage->widget()->items(); QSqlQuery genreIdQ(db); genreIdQ.prepare("SELECT igenres_id FROM genres WHERE tgenrename = :name"); @@ -223,14 +223,16 @@ void NewMovieWizard::accept(){ if(isEnabled){ QSqlQuery insertMetadataQ(db); insertMetadataQ.prepare("INSERT INTO metadata (iseriespart_id, sireleaseyear, tsourcemedium, tsubject, treleasegroup, tencoderopts, tcomment, sipasses, dadded) VALUES(:pid, :rely, :source, :sub, :group, :encopts, :comment, :passes, :added)"); + MovieMetadataPage *metadataPage = qobject_cast<MovieMetadataPage*>(page(3)); + QList<QVariant> metadata = metadataPage->widget()->metadata(); insertMetadataQ.bindValue(":pid", seriesPartId); - insertMetadataQ.bindValue(":rely", field("year")); - insertMetadataQ.bindValue(":source", mMetadataPage->sourceMedium()); - insertMetadataQ.bindValue(":sub", field("subject")); - insertMetadataQ.bindValue(":group", mMetadataPage->releaseGroup()); - insertMetadataQ.bindValue(":encopts", field("encoder")); - insertMetadataQ.bindValue(":comment", mMetadataPage->comment()); - insertMetadataQ.bindValue(":passes", field("passes")); + insertMetadataQ.bindValue(":rely", metadata.at(ArchiveModel::ReleaseYear)); + insertMetadataQ.bindValue(":source", metadata.at(ArchiveModel::Source)); + insertMetadataQ.bindValue(":sub", metadata.at(ArchiveModel::Subject)); + insertMetadataQ.bindValue(":group", metadata.at(ArchiveModel::ReleaseGroup)); + insertMetadataQ.bindValue(":encopts", metadata.at(ArchiveModel::EncoderOpts)); + insertMetadataQ.bindValue(":comment", metadata.at(ArchiveModel::Comment)); + insertMetadataQ.bindValue(":passes", metadata.at(ArchiveModel::Passes)); insertMetadataQ.bindValue(":added", QDate::currentDate()); if(!insertMetadataQ.exec()){ db.rollback(); @@ -426,111 +428,44 @@ void MovieMappingPage::initializePage(){ MovieMetadataPage::MovieMetadataPage(QWidget *parent) : QWizardPage(parent){ setTitle(tr("Edit movie metadata")); setSubTitle(tr("Set the movie metadata here, as far as known")); - mModel = static_cast<SeriesMetadataModel*>(SmGlobals::instance()->model("SeriesMetadata")); + //mModel = static_cast<SeriesMetadataModel*>(SmGlobals::instance()->model("SeriesMetadata")); setupGui(); } void MovieMetadataPage::setupGui(){ - QFormLayout *rowLayout = new QFormLayout; - mReleaseYear = new QSpinBox; - mReleaseYear->setMaximum(3000); - mReleaseYear->setMinimum(1900); - rowLayout->addRow(tr("Release year"), mReleaseYear); - mReleaseGroup = new QComboBox; - mPasses = new QSpinBox; - rowLayout->addRow(tr("Encoding passes"), mPasses); - mReleaseGroup->setEditable(true); - rowLayout->addRow(tr("Release group"), mReleaseGroup); - mSourceMedium = new QComboBox; - mSourceMedium->setEditable(true); - rowLayout->addRow(tr("Source medium"), mSourceMedium); - mSubject = new QLineEdit; - rowLayout->addRow(tr("Usenet subject"), mSubject); - mEncoderOpts = new QLineEdit; - rowLayout->addRow(tr("Encoder options"), mEncoderOpts); - QVBoxLayout *commentLayout = new QVBoxLayout; - QLabel *commentLabel = new QLabel(tr("Comment")); - commentLayout->addWidget(commentLabel); - mComment = new QPlainTextEdit; - commentLayout->addWidget(mComment); + mWidget = new MetadataEditorWidget; + QHBoxLayout *enabledLayout = new QHBoxLayout; enabledLayout->setAlignment(Qt::AlignRight); mMetadataEnabled = new QCheckBox(tr("Enable metadata")); enabledLayout->addWidget(mMetadataEnabled); connect(mMetadataEnabled, SIGNAL(stateChanged(int)), this, SLOT(toggleMetadata(int))); - - mWidgets << mReleaseYear << mReleaseGroup << mSourceMedium << mSubject << mEncoderOpts << mComment << mPasses; - toggleMetadata(Qt::Unchecked); + toggleMetadata(Qt::Unchecked); + registerField("enabled", mMetadataEnabled); QVBoxLayout *mainLayout = new QVBoxLayout; - mainLayout->addLayout(rowLayout); - mainLayout->addLayout(commentLayout); + mainLayout->addWidget(mWidget); mainLayout->addLayout(enabledLayout); setLayout(mainLayout); - - //expose data - registerField("year", mReleaseYear); - registerField("passes", mPasses); - registerField("group", mReleaseGroup); - registerField("source", mSourceMedium); - registerField("subject", mSubject); - registerField("encoder", mEncoderOpts); - registerField("comment", mComment); - registerField("enabled", mMetadataEnabled); } void MovieMetadataPage::initializePage(){ - //release groups - mReleaseGroup->clear(); - QSqlDatabase db = QSqlDatabase::database("treedb"); - db.open(); - QSqlQuery releaseGroupsQ("SELECT DISTINCT(treleasegroup) FROM metadata ORDER BY treleasegroup ASC", db); - QStringList relGroups; - while(releaseGroupsQ.next()){ - relGroups << releaseGroupsQ.value(0).toString(); - } - mReleaseGroup->addItems(relGroups); - int relg = mReleaseGroup->findText("unknown"); - if(relg != -1){ - mReleaseGroup->setCurrentIndex(relg); - } - - //source mediums - mSourceMedium->clear(); - QStringList sourceMediums; - QSqlQuery sourceMediumsQ("SELECT DISTINCT(tsourcemedium) FROM metadata ORDER BY tsourcemedium ASC", db); - while(sourceMediumsQ.next()){ - sourceMediums << sourceMediumsQ.value(0).toString(); - } - mSourceMedium->addItems(sourceMediums); - int uks = mSourceMedium->findText("unknown"); - if(uks != -1){ - mSourceMedium->setCurrentIndex(uks); + ArchiveController *c = SmGlobals::instance()->archiveController(); + mWidget->setReleaseGroups(c->archiveTreeModel()->allReleaseGroups()); + mWidget->setSources(c->archiveTreeModel()->allSources()); + QList<QVariant> curMetadata; + for(int i = 0; i < ArchiveModel::MetadataNumFields; ++i){ + curMetadata << QVariant(); } - mReleaseYear->setValue(QDate::currentDate().year()); - mPasses->setValue(0); - mSubject->clear(); - mEncoderOpts->clear(); - mComment->clear(); -} - -QString MovieMetadataPage::comment() const { - return mComment->toPlainText(); -} - -QString MovieMetadataPage::releaseGroup() const { - return mReleaseGroup->currentText(); -} - -QString MovieMetadataPage::sourceMedium() const { - return mSourceMedium->currentText(); + curMetadata[ArchiveModel::ReleaseYear] = QDate::currentDate().year(); + curMetadata[ArchiveModel::Source] = "unknown"; + curMetadata[ArchiveModel::ReleaseGroup] = "unknown"; + curMetadata[ArchiveModel::Added] = QDate::currentDate(); + mWidget->setMetadata(curMetadata); } void MovieMetadataPage::toggleMetadata(int state){ - bool isEnabled = (state == Qt::Checked); - foreach(QWidget *w, mWidgets){ - w->setEnabled(isEnabled); - } + mWidget->setEnabledAll(state == Qt::Checked); } WizardTreeModel::WizardTreeModel(QStringList &headers, QObject *parent) : SmTreeModel(headers, parent){ diff --git a/newmoviewizard.h b/newmoviewizard.h index 99646ca..0aae2d2 100644 --- a/newmoviewizard.h +++ b/newmoviewizard.h @@ -27,6 +27,7 @@ class PictureViewer2; class QCompleter; class QStringListModel; class MappingEditorWidget; +class MetadataEditorWidget; class NewMovieWizard : public QWizard { Q_OBJECT @@ -45,7 +46,6 @@ class NewMovieWizard : public QWizard { MovieMappingPage *mActorPage; MovieMappingPage *mGenrePage; MovieMetadataPage *mMetadataPage; - }; class MovieInfoPage : public QWizardPage { @@ -94,32 +94,19 @@ class MovieMappingPage : public QWizardPage { class MovieMetadataPage : public QWizardPage { Q_OBJECT - Q_PROPERTY(QString comment READ comment); - Q_PROPERTY(QString releaseGroup READ releaseGroup); - Q_PROPERTY(QString sourceMedium READ sourceMedium); public: explicit MovieMetadataPage(QWidget *parent = 0); - virtual ~MovieMetadataPage() {} + MetadataEditorWidget *widget() { return mWidget; } virtual void initializePage(); - QString comment() const; - QString releaseGroup() const; - QString sourceMedium() const; - private slots: + private slots: void toggleMetadata(int state); private: void setupGui(); - SeriesMetadataModel *mModel; - QSpinBox *mReleaseYear; - QComboBox *mSourceMedium; - QComboBox *mReleaseGroup; - QLineEdit *mSubject; - QLineEdit *mEncoderOpts; - QSpinBox *mPasses; - QPlainTextEdit *mComment; + /* defined in archiveview.h */ + MetadataEditorWidget *mWidget; QCheckBox *mMetadataEnabled; - QList<QWidget*> mWidgets; }; class WizardTreeModel : public SmTreeModel { |