From 057da448ad06de20b8054ae1ba5ed7f6fb656c1b Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 13 Jul 2013 06:42:57 +0200 Subject: Make all NodeTypes editable Use plpgsql functions to edit nodes. Makes the program logic much easier. Also, rename rename() to edit() :) --- archivemodel.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'archivemodel.cpp') 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()); } -- cgit v1.2.3-70-g09d2