From 40cedb64e32383f488000f89c2084c2bda98310f Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 7 Aug 2010 19:57:16 +0200 Subject: 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. --- newmoviewizard.cpp | 47 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 38 insertions(+), 9 deletions(-) (limited to 'newmoviewizard.cpp') 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 fileData = wizardModel->files(); QHash::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 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(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() << tr("Movie files") << QVariant() << QVariant() << QVariant(), root); + SmTreeItem *root = new SmTreeItem(5); + mMoviesItem= new SmTreeItem(QList() << tr("Movie files") << QVariant() << QVariant() << QVariant() << QVariant(), root); root->appendChild(mMoviesItem); - mCoversItem = new SmTreeItem(QList() << tr("Cover files") << QVariant() << QVariant() << QVariant(), root); + mCoversItem = new SmTreeItem(QList() << 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 WizardTreeModel::files() const{ +QHash WizardTreeModel::files() { QHash 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(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(); } -- cgit v1.2.3-70-g09d2