diff options
Diffstat (limited to 'archivemodel.cpp')
-rw-r--r-- | archivemodel.cpp | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/archivemodel.cpp b/archivemodel.cpp index cbca042..59d1e74 100644 --- a/archivemodel.cpp +++ b/archivemodel.cpp @@ -112,18 +112,20 @@ bool ArchiveModel::setData(const QModelIndex &idx, const QVariant &value, int ro } SmTreeItem *item = itemAt(idx); int nodeType = item->data(Type).toInt(); - // handle duplicate key error!!! + QVariant id = item->data(GenericId); QSqlQuery updateQuery(mDb); if(nodeType == GenreNode){ - updateQuery.prepare("UPDATE genres SET tgenrename = :value WHERE igenres_id = :id"); + updateQuery.prepare("SELECT update_genres(:value, :id)"); }else if(nodeType == ActorNode){ - updateQuery.prepare("UPDATE actors SET tactorname = :value WHERE iactors_id = :id"); + updateQuery.prepare("SELECT update_actors(:value, :id)"); }else if(nodeType == SeriesNode){ - updateQuery.prepare("UPDATE series SET tseries_name = :value WHERE iseries_id = :id"); + updateQuery.prepare("SELECT update_series(:value, :id)"); + }else if(nodeType == SeriesPartNode){ + updateQuery.prepare("SELECT move_to_series(:value, :id)"); + id = item->data(SeriesPartId); }else{ return false; } - QVariant id = item->data(GenericId); updateQuery.bindValue(":value", value); updateQuery.bindValue(":id", id); mDb.transaction(); @@ -131,12 +133,10 @@ bool ArchiveModel::setData(const QModelIndex &idx, const QVariant &value, int ro mDb.commit(); item->setData(Name, value); emit dataChanged(idx, idx); - if(nodeType == SeriesNode){ - emit needRefresh(); - return true; - } + emit needRefresh(); writeCache(mOrder, root()); }else{ + // cannot happen! mDb.rollback(); emitDatabaseError(updateQuery.lastError()); } |