/* 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 "addmoviewizard.h" #include "listmodelsingleton.h" #include "actorwidget.h" #include "listeditor.h" #include "moviemodelsingleton.h" #include "moviemodel.h" AddMovieWizard::AddMovieWizard(QWidget *parent) : QWizard(parent){ addPage(new MovieNamePage); addPage(new MovieActorPage); addPage(new MovieGenrePage); } void AddMovieWizard::accept(){ QString movieName = field("movieName").toString(); int partno = field("partNo").toInt(); int seriesno = field("seriesNo").toInt(); int quality = field("quality").toInt(); QStringList actors = field("actors").toStringList(); QString genre = field("genre").toString(); int dvdno = field("dvdNo").toInt(); MovieModel *model = MovieModelSingleton::instance(); ListModel *genreModel = ListModelSingleton::instance()->model("genre"); ListModel *actorModel = ListModelSingleton::instance()->model("actor"); QList movieData; movieData << movieName; for(int i = 1; i < MovieItem::NumRows; ++i){ movieData << QVariant(); } QString md5(32, '0'); QModelIndex genreIdx = genreModel->index(genre); int genreId = genreModel->defaultId(); if(genreIdx.isValid()){ genreId = genreIdx.data(ListModel::IdRole).toInt(); } QList actorIds; foreach(QVariant a, actors){ QModelIndex actorIdx = actorModel->index(a.toString()); if(actorIdx.isValid()){ actorIds << actorIdx.data(ListModel::IdRole).toInt(); } } movieData[MovieItem::Md5Sum] = md5; movieData[MovieItem::Genre] = genreId; movieData[MovieItem::Dvd] = dvdno; movieData[MovieItem::Filename] = tr("(DVD)"); movieData[MovieItem::Size] = Q_INT64_C(4707319808); movieData[MovieItem::Quality] = quality; movieData[MovieItem::SeriesNo] = seriesno; movieData[MovieItem::PartNo] = partno; model->addMovie(movieData, actorIds, QList()); QDialog::accept(); } /* MovieNamePage */ MovieNamePage::MovieNamePage(QWidget *parent) : QWizardPage(parent){ setTitle(tr("Basic Movie Information")); setSubTitle(tr("Enter basic Movie information here. The series no. is the series part, e.g. Rogue adventures 14. The part no. only has to be set if the movie is split in several parts. Set -1 for none.")); setPixmap(QWizard::LogoPixmap, QPixmap(":/shemov.png")); QGridLayout *mainLayout = new QGridLayout; QLabel *l1 = new QLabel(tr("Movie name")); mainLayout->addWidget(l1, 0, 0); mMovieName = new QLineEdit; mainLayout->addWidget(mMovieName, 0, 1); QLabel *l2 = new QLabel(tr("Series no.")); mainLayout->addWidget(l2, 1, 0); mSeriesNo = new QSpinBox; mSeriesNo->setMinimum(-1); mSeriesNo->setValue(-1); mainLayout->addWidget(mSeriesNo, 1, 1); QLabel *l3 = new QLabel(tr("Part no.")); mainLayout->addWidget(l3, 2, 0); mPartNo = new QSpinBox; mPartNo->setMinimum(-1); mPartNo->setValue(-1); mainLayout->addWidget(mPartNo, 2, 1); QLabel *l4 = new QLabel(tr("Quality")); mainLayout->addWidget(l4, 3, 0); mQuality = new QSpinBox; mQuality->setMaximum(10); mQuality->setMinimum(0); mQuality->setValue(10); mainLayout->addWidget(mQuality, 3, 1); MovieModel *movieModel = MovieModelSingleton::instance(); int dvdno = movieModel->maxValue(MovieItem::Dvd).toInt(); QLabel *l5 = new QLabel(tr("DVD no.")); mainLayout->addWidget(l5, 4, 0); mDvdNo = new QSpinBox; mDvdNo->setMinimum(0); mDvdNo->setValue(++dvdno); mainLayout->addWidget(mDvdNo, 4, 1); registerField("movieName*", mMovieName); registerField("seriesNo", mSeriesNo); registerField("partNo", mPartNo); registerField("quality", mQuality); registerField("dvdNo", mDvdNo); setLayout(mainLayout); } /* MovieActorPage */ MovieActorPage::MovieActorPage(QWidget *parent) : QWizardPage(parent){ setTitle(tr("Actors")); setSubTitle(tr("Enter actors here")); setPixmap(QWizard::LogoPixmap, QPixmap(":/shemov.png")); QHBoxLayout *mainLayout = new QHBoxLayout; mActorWidget = new ActorWidget; mainLayout->addWidget(mActorWidget); QVBoxLayout *actorEditorLayout = new QVBoxLayout; QLabel *l1 = new QLabel(" "); actorEditorLayout->addWidget(l1); ListEditor *actorsEditor = new ListEditor(ListModelSingleton::instance()->model("actor")); actorEditorLayout->addWidget(actorsEditor); actorEditorLayout->addStretch(); mainLayout->addLayout(actorEditorLayout); connect(actorsEditor, SIGNAL(itemAdded(const QString &)), this, SLOT(addActor(const QString &))); registerField("actors", mActorWidget, "actors"); setLayout(mainLayout); } void MovieActorPage::addActor(const QString &actor){ mActorWidget->addActor(actor); } /* MovieGenrePage */ MovieGenrePage::MovieGenrePage(QWidget *parent) : QWizardPage(parent){ setTitle(tr("Genre")); setSubTitle(tr("Set the genre of the movie")); setPixmap(QWizard::LogoPixmap, QPixmap(":/shemov.png")); QVBoxLayout *selectionLayout = new QVBoxLayout; QLabel *l1 = new QLabel(tr("Select genre")); selectionLayout->addWidget(l1); mGenre = new QComboBox; mGenre->setModel(ListModelSingleton::instance()->model("genre")); int idx = mGenre->findText("shemale"); if(idx != -1){ mGenre->setCurrentIndex(idx); } selectionLayout->addWidget(mGenre); selectionLayout->addStretch(); QVBoxLayout *editorLayout = new QVBoxLayout; ListEditor *genreEditor = new ListEditor(ListModelSingleton::instance()->model("genre")); editorLayout->addWidget(genreEditor); editorLayout->addStretch(); registerField("genre", mGenre, "currentText"); QHBoxLayout *mainLayout = new QHBoxLayout; mainLayout->addLayout(selectionLayout); mainLayout->addStretch(); mainLayout->addLayout(editorLayout); setLayout(mainLayout); }