summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2010-07-09 21:07:10 +0200
committerArno <am@disconnect.de>2010-07-09 21:07:10 +0200
commitd9d32f44d64834754650fc4fe70a4d7aae449e0c (patch)
tree9aab57b91222613020b9df1f369eda0c2358b7ab
parent4f313fb96ada615b209a6e37832da140abf63b07 (diff)
downloadSheMov-d9d32f44d64834754650fc4fe70a4d7aae449e0c.tar.gz
SheMov-d9d32f44d64834754650fc4fe70a4d7aae449e0c.tar.bz2
SheMov-d9d32f44d64834754650fc4fe70a4d7aae449e0c.zip
Final version of NewMovieWizard::accept() (hopefully)
Actually made this function work. Forgot to handle actors and genres. Also several bugfixes in other parts: -fix typo in FilesTreeModel query -commit changes ind MappingTableModel::addItem, making the genre and actor widgets work as intended -remove redundant MappingTableModel::find(), already implemented in SmTreeModel -call next() instead of exec() in SeriesTreeModel::addSeriesPart. Query is already executing if it's a select -use QModelIndex::row() instead of column() in MappingTableWidget::removeItem() -add partNo to layout in MovieInfopage::MovieInfoPage() -add convenience function setMappings() to MappingTableModel
-rw-r--r--filestreemodel.cpp2
-rw-r--r--mappingtablemodel.cpp26
-rw-r--r--mappingtablemodel.h4
-rw-r--r--mappingtablewidget.cpp3
-rw-r--r--newmoviewizard.cpp25
-rw-r--r--seriestreemodel.cpp2
-rw-r--r--smtreemodel.cpp1
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;