diff options
author | Arno <am@disconnect.de> | 2010-08-07 19:57:16 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2010-08-07 19:57:16 +0200 |
commit | 40cedb64e32383f488000f89c2084c2bda98310f (patch) | |
tree | 7a605eca9479e3573d64262ea9ca9d209113cb59 /newmoviewizard.cpp | |
parent | ef7524a3bb1ea0b1ec5e935c089925277ca278bf (diff) | |
download | SheMov-40cedb64e32383f488000f89c2084c2bda98310f.tar.gz SheMov-40cedb64e32383f488000f89c2084c2bda98310f.tar.bz2 SheMov-40cedb64e32383f488000f89c2084c2bda98310f.zip |
Bugfix in NewMovieWizard
Make Part no work in NewMovieWizard. The logic for this was totally
borked. Well, it was not really present. One could only assign one Part
number to all files.
Diffstat (limited to 'newmoviewizard.cpp')
-rw-r--r-- | newmoviewizard.cpp | 47 |
1 files changed, 38 insertions, 9 deletions
diff --git a/newmoviewizard.cpp b/newmoviewizard.cpp index df5c594..6d21a5b 100644 --- a/newmoviewizard.cpp +++ b/newmoviewizard.cpp @@ -81,12 +81,13 @@ void NewMovieWizard::accept(){ if(onDvd){ dvdNo = field("dvdNo").toInt(); } - int partNo = field("partNo").toInt(); + //int partNo = field("partNo").toInt(); QHash<QString, int> fileData = wizardModel->files(); QHash<QString, int>::const_iterator it = fileData.constBegin(); while(it != fileData.constEnd()){ QString path = it.key(); int type = it.value(); + int partNo = wizardModel->filesPart(path); if(filesModel->addFile(path, type, quality, partNo, seriesPartId, dvdNo)){ QString md5sum = Helper::md5Sum(path); Helper::moveToArchive(path, md5sum); @@ -94,7 +95,7 @@ void NewMovieWizard::accept(){ ++it; } if(onDvd){ - filesModel->addFile(tr("DVD"), FilesTreeModel::Movie, quality, partNo, seriesPartId, dvdNo); + filesModel->addFile(tr("DVD"), FilesTreeModel::Movie, quality, -1, seriesPartId, dvdNo); } //handle actors @@ -122,7 +123,7 @@ MovieInfoPage::MovieInfoPage(QWidget *parent) : QWizardPage(parent){ setPixmap(QWizard::LogoPixmap, QPixmap(":/shemov.png")); //files model setup - QStringList modelHeaders = QStringList() << tr("File name") << tr("Size") << tr("File Type") << tr("Full path"); + QStringList modelHeaders = QStringList() << tr("File name") << tr("Size") << tr("File Type") << tr("Part") << tr("Full path"); mFileModel = new WizardTreeModel(modelHeaders, this); initModel(); @@ -173,7 +174,8 @@ MovieInfoPage::MovieInfoPage(QWidget *parent) : QWizardPage(parent){ QLabel *l4 = new QLabel(tr("&Part no.")); mPartno = new QSpinBox; l4->setBuddy(mPartno); - mPartno->setMinimum(1); + mPartno->setMinimum(-1); + connect(mPartno, SIGNAL(valueChanged(int)), this, SLOT(seriesPartChanged(int))); numberLayout->addWidget(l4); numberLayout->addWidget(mPartno); QLabel *l5 = new QLabel(tr("&Quality")); @@ -241,7 +243,7 @@ void MovieInfoPage::addFiles(){ if(fi.exists()){ QList<QVariant> itemData; QModelIndex parent = QModelIndex(); - itemData << fi.fileName() << fi.size() << QVariant() << fi.absoluteFilePath(); + itemData << fi.fileName() << fi.size() << QVariant() << QVariant() << fi.absoluteFilePath(); QString mimeType = Helper::mimeType(fi.absoluteFilePath()); if(mimeType.startsWith("video")){ itemData[WizardTreeModel::FileType] = WizardTreeModel::Movie; @@ -297,6 +299,19 @@ void MovieInfoPage::typeChanged(QString type){ } +void MovieInfoPage::seriesPartChanged(int partNo){ + QModelIndexList selected = mFileView->selectionModel()->selectedRows(); + if(selected.isEmpty()){ + return; + } + //int partNo = mPartno->value(); + QModelIndex item = selected.at(0); + if(item.data(WizardTreeModel::FileTypeRole).toInt() == WizardTreeModel::Movie){ + QModelIndex seriesPartIdx = mFileModel->index(item.row(), WizardTreeModel::FilePart, item.parent()); + mFileModel->setData(seriesPartIdx, partNo, Qt::EditRole); + } +} + void MovieInfoPage::setNextDvdNo(){ SeriesTreeModel *seriesTreeModel = static_cast<SeriesTreeModel*>(SmGlobals::instance()->model("SeriesModel")); int nextdvd = seriesTreeModel->findNextDvdNo(); @@ -304,10 +319,10 @@ void MovieInfoPage::setNextDvdNo(){ } void MovieInfoPage::initModel(){ - SmTreeItem *root = new SmTreeItem(4); - mMoviesItem= new SmTreeItem(QList<QVariant>() << tr("Movie files") << QVariant() << QVariant() << QVariant(), root); + SmTreeItem *root = new SmTreeItem(5); + mMoviesItem= new SmTreeItem(QList<QVariant>() << tr("Movie files") << QVariant() << QVariant() << QVariant() << QVariant(), root); root->appendChild(mMoviesItem); - mCoversItem = new SmTreeItem(QList<QVariant>() << tr("Cover files") << QVariant() << QVariant() << QVariant(), root); + mCoversItem = new SmTreeItem(QList<QVariant>() << tr("Cover files") << QVariant() << QVariant() << QVariant() << QVariant(), root); root->appendChild(mCoversItem); mFileModel->setRoot(root); } @@ -341,19 +356,30 @@ Qt::ItemFlags WizardTreeModel::flags(const QModelIndex &index) const{ return Qt::ItemIsEnabled | Qt::ItemIsSelectable; } -QHash<QString, int> WizardTreeModel::files() const{ +QHash<QString, int> WizardTreeModel::files() { QHash<QString, int> retval; + mFilePartMap.clear(); SmTreeItem *rootItem = root(); for(int i = 0; i < rootItem->childCount(); ++i){ SmTreeItem *firstChild = rootItem->child(i); for(int j = 0; j < firstChild->childCount(); ++j){ SmTreeItem *secondChild = firstChild->child(j); retval.insert(secondChild->data(WizardTreeModel::FullPath).toString(), secondChild->data(WizardTreeModel::FileType).toInt()); + if(secondChild->data(WizardTreeModel::FilePart).isValid()){ + mFilePartMap.insert(secondChild->data(WizardTreeModel::FullPath).toString(), secondChild->data(WizardTreeModel::FilePart).toInt()); + } } } return retval; } +int WizardTreeModel::filesPart(const QString &fullPath) const{ + if(mFilePartMap.contains(fullPath)){ + return mFilePartMap.value(fullPath); + } + return -1; +} + QVariant WizardTreeModel::data(const QModelIndex &index, int role) const{ SmTreeItem *item = static_cast<SmTreeItem*>(index.internalPointer()); if(role == Qt::DisplayRole){ @@ -390,6 +416,9 @@ QVariant WizardTreeModel::data(const QModelIndex &index, int role) const{ if(role == FullPathRole){ return item->data(FullPath); } + if(role == FilePartRole){ + return item->data(FilePart); + } return QVariant(); } |