diff options
-rw-r--r-- | filestreemodel.cpp | 2 | ||||
-rw-r--r-- | mappingtablemodel.cpp | 26 | ||||
-rw-r--r-- | mappingtablemodel.h | 4 | ||||
-rw-r--r-- | mappingtablewidget.cpp | 3 | ||||
-rw-r--r-- | newmoviewizard.cpp | 25 | ||||
-rw-r--r-- | seriestreemodel.cpp | 2 | ||||
-rw-r--r-- | smtreemodel.cpp | 1 |
7 files changed, 41 insertions, 22 deletions
diff --git a/filestreemodel.cpp b/filestreemodel.cpp index 76dca8b..01b088a 100644 --- a/filestreemodel.cpp +++ b/filestreemodel.cpp @@ -21,7 +21,7 @@ FilesTreeModel::FilesTreeModel(QStringList &headers, QObject *parent) : SmTreeMo mUpdateQualityQuery = new QSqlQuery(mDb); mUpdateQualityQuery->prepare("UPDATE files SET siquality = :quality WHERE ifiles_id = :id"); mInsertFileQuery = new QSqlQuery(mDb); - mInsertFileQuery->prepare("INSERT INTO files(iseriespart_id, tfilename, cmd5sum, bisize, idvd, sifiletype, sifileno, siqualiy) VALUES(:seriespartid, :fname, :md5, :size, :dvd, :type, :fileno, :quality)"); + mInsertFileQuery->prepare("INSERT INTO files(iseriespart_id, tfilename, cmd5sum, bisize, idvd, sifiletype, sifileno, siquality) VALUES(:seriespartid, :fname, :md5, :size, :dvd, :type, :fileno, :quality)"); } FilesTreeModel::~FilesTreeModel(){ diff --git a/mappingtablemodel.cpp b/mappingtablemodel.cpp index ad569ee..bcb601e 100644 --- a/mappingtablemodel.cpp +++ b/mappingtablemodel.cpp @@ -106,18 +106,19 @@ bool MappingTableModel::contains(const QString &value) const{ return mItemNames.contains(value); } -QModelIndex MappingTableModel::find(const QVariant &value, int column, const QModelIndex &parent) const{ - SmTreeItem *parentItem = root(); - if(parent.isValid()){ - parentItem = static_cast<SmTreeItem*>(parent.internalPointer()); - } - for(int i = 0; i < parentItem->childCount(); ++i){ - SmTreeItem *cur = parentItem->child(i); - if(cur->data(column) == value){ - return index(i, column, parent); +void MappingTableModel::setMappings(const QStringList &itemNames, int seriesPartId){ + if(seriesPartId == -1){ + return; + } + foreach(const QString name, itemNames){ + QModelIndex itemIdx = find(name); + if(!itemIdx.isValid()){ + addItem(name); } + itemIdx = find(name); + int itemId = itemIdx.data(ItemIdRole).toInt(); + addMapping(seriesPartId, itemId); } - return QModelIndex(); } bool MappingTableModel::addItem(const QVariant &name){ @@ -136,6 +137,7 @@ bool MappingTableModel::addItem(const QVariant &name){ data << newValue << newId; addRow(data, QModelIndex()); mItemNames << newValue; + mDb.commit(); emit needResort(); return true; } @@ -160,9 +162,9 @@ bool MappingTableModel::removeItem(const QModelIndex &idx){ return false; } -bool MappingTableModel::addMapping(int seriesId, int itemId){ +bool MappingTableModel::addMapping(int seriesPartId, int itemId){ mDb.transaction(); - mAddMappingQuery->bindValue(":id1", seriesId); + mAddMappingQuery->bindValue(":id1", seriesPartId); mAddMappingQuery->bindValue(":id2", itemId); if(!mAddMappingQuery->exec()){ mDb.rollback(); diff --git a/mappingtablemodel.h b/mappingtablemodel.h index d600437..ae64600 100644 --- a/mappingtablemodel.h +++ b/mappingtablemodel.h @@ -30,14 +30,14 @@ class MappingTableModel : public SmTreeModel{ virtual QVariant data(const QModelIndex &index, int role) const; virtual bool setData(const QModelIndex &index, const QVariant &value, int role); bool contains(const QString &value) const; - QModelIndex find(const QVariant &value, int column = 0, const QModelIndex &parent = QModelIndex()) const; + void setMappings(const QStringList &itemNames, int seriesPartId = -1); //add and remove items bool addItem(const QVariant &name); bool removeItem(const QModelIndex &idx); //mappings - bool addMapping(int seriesId, int itemId); + bool addMapping(int seriesPartId, int itemId); bool removeMapping(int seriesId, int itemId); QList<QVariant> mappings(int seriesId); diff --git a/mappingtablewidget.cpp b/mappingtablewidget.cpp index e4a177c..a96ff1d 100644 --- a/mappingtablewidget.cpp +++ b/mappingtablewidget.cpp @@ -94,6 +94,7 @@ void MappingTableWidget::addItem(){ mMappingModel->addMapping(mCurrentId, id); } } + mItemEdit->clear(); } void MappingTableWidget::removeItem(){ @@ -103,7 +104,7 @@ void MappingTableWidget::removeItem(){ } foreach(QPersistentModelIndex i, selected){ QString item = i.data().toString(); - mModel->removeRows(i.column(), 1); + mModel->removeRows(i.row(), 1); QModelIndex itemIdx = mMappingModel->find(item); if(itemIdx.isValid()){ mMappingModel->removeMapping(mCurrentId, itemIdx.data(MappingTableModel::ItemIdRole).toInt()); diff --git a/newmoviewizard.cpp b/newmoviewizard.cpp index 8a4cdd8..a38c6e9 100644 --- a/newmoviewizard.cpp +++ b/newmoviewizard.cpp @@ -87,10 +87,25 @@ void NewMovieWizard::accept(){ int type = it.value(); if(filesModel->addFile(path, type, quality, partNo, seriesPartId, dvdNo)){ QString md5sum = Helper::md5Sum(path); - //Helper::moveToArchive(path, md5sum); + Helper::moveToArchive(path, md5sum); } + ++it; } + //handle actors + MovieMappingPage *actorPage = static_cast<MovieMappingPage*>(page(1)); + MappingTableItemModel *actorItemModel = actorPage->model(); + QStringList actors = actorItemModel->stringList(); + MappingTableModel *actorModel = static_cast<MappingTableModel*>(SmModelSingleton::instance()->model("actors")); + actorModel->setMappings(actors, seriesPartId); + + //handle genres + MovieMappingPage *genrePage = static_cast<MovieMappingPage*>(page(2)); + MappingTableItemModel *genreItemModel = genrePage->model(); + QStringList genres = genreItemModel->stringList(); + MappingTableModel *genreModel = static_cast<MappingTableModel*>(SmModelSingleton::instance()->model("genres")); + genreModel->setMappings(genres, seriesPartId); + //done emit seriesAdded(series, seriesno); QDialog::accept(); @@ -159,6 +174,8 @@ MovieInfoPage::MovieInfoPage(QWidget *parent) : QWizardPage(parent){ mPartno = new QSpinBox; l4->setBuddy(mPartno); mPartno->setMinimum(1); + numberLayout->addWidget(l4); + numberLayout->addWidget(mPartno); QLabel *l5 = new QLabel(tr("&Quality")); mQuality = new QSpinBox; l5->setBuddy(mQuality); @@ -196,9 +213,9 @@ MovieInfoPage::MovieInfoPage(QWidget *parent) : QWizardPage(parent){ //expose data registerField("title*", mTitle); - registerField("seriesNo*", mSeriesNo); - registerField("partNo*", mPartno); - registerField("quality*", mQuality); + registerField("seriesNo", mSeriesNo); + registerField("partNo", mPartno); + registerField("quality", mQuality); registerField("dvdNo", mDvdNo); registerField("onDvd", mOnDvd); } diff --git a/seriestreemodel.cpp b/seriestreemodel.cpp index 4ff34e0..5113ae9 100644 --- a/seriestreemodel.cpp +++ b/seriestreemodel.cpp @@ -302,7 +302,7 @@ bool SeriesTreeModel::addSeriesPart(int seriesPart, const QModelIndex &parent){ mSeriesPartInsertQuery->bindValue(":id", seriesId); if(mSeriesPartInsertQuery->exec()){ QSqlQuery lastId("SELECT currval('seriesparts_seriesparts_id__seq')", mDb); - if(lastId.exec()){ + if(lastId.next()){ int id = lastId.value(0).toInt(); QList<QVariant> partData; partData << parent.data(NameRole) << seriesId << id << seriesPart << Part; diff --git a/smtreemodel.cpp b/smtreemodel.cpp index bc7b010..a39f718 100644 --- a/smtreemodel.cpp +++ b/smtreemodel.cpp @@ -189,7 +189,6 @@ bool SmTreeModel::removeRows(int row, int count, const QModelIndex &parent){ beginRemoveRows(parent, row, row + count - 1); for(int i = row + count; i > row; --i){ retval = parentItem->removeChild(i - 1); - } endRemoveRows(); return retval; |