summaryrefslogtreecommitdiffstats
path: root/seriestreemodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'seriestreemodel.cpp')
-rw-r--r--seriestreemodel.cpp39
1 files changed, 25 insertions, 14 deletions
diff --git a/seriestreemodel.cpp b/seriestreemodel.cpp
index b3c9a34..f18ef4d 100644
--- a/seriestreemodel.cpp
+++ b/seriestreemodel.cpp
@@ -25,8 +25,6 @@ SeriesTreeModel::SeriesTreeModel(QStringList &headers, QObject *parent) : SmTree
mUpdateSeriesIdQuery->prepare("UPDATE seriesparts SET iseries_id = :newid WHERE iseries_id = :oldid");
mUpdateSeriesNameQuery = new QSqlQuery(mDb);
mUpdateSeriesNameQuery->prepare("UPDATE series SET tseries_name = :newname WHERE iseries_id = :id");
- mUpdateFavoriteQuery = new QSqlQuery(mDb);
- mUpdateFavoriteQuery->prepare("UPDATE seriesparts SET bfavorite = :fav WHERE iseriesparts_id = :id");
mDeleteSeriesQuery = new QSqlQuery(mDb);
mDeleteSeriesQuery->prepare("DELETE FROM series where iseries_id = :id");
mDeleteSeriesPartQuery = new QSqlQuery(mDb);
@@ -49,6 +47,10 @@ SeriesTreeModel::SeriesTreeModel(QStringList &headers, QObject *parent) : SmTree
mFavoriteSeriesIdQuery->prepare("SELECT DISTINCT(series.iseries_id), series.tseries_name FROM series, seriesparts WHERE seriesparts.bfavorite = true and seriesparts.iseries_id = series.iseries_id");
mFavoriteSeriesPartsQuery = new QSqlQuery(mDb);
mFavoriteSeriesPartsQuery->prepare("SELECT iseriesparts_id, iseriespart, tsubtitle FROM seriesparts WHERE iseries_id = :id AND bfavorite = true");
+ mUpdateGenericTemplate = QString("UPDATE seriesparts SET %1 = :value WHERE iseriesparts_id = :id");
+ mUpdateGenericMap.insert(Favorite, "bfavorite");
+ mUpdateGenericMap.insert(Subtitle, "tsubtitle");
+ mUpdateGenericMap.insert(SeriesPart, "iseriespart");
populate();
}
@@ -56,7 +58,6 @@ SeriesTreeModel::~SeriesTreeModel(){
delete mSeriesPartsQuery;
delete mUpdateSeriesIdQuery;
delete mUpdateSeriesNameQuery;
- delete mUpdateFavoriteQuery;
delete mDeleteSeriesQuery;
delete mDeleteSeriesPartQuery;
delete mSeriesInsertQuery;
@@ -146,6 +147,9 @@ QVariant SeriesTreeModel::data(const QModelIndex &index, int role) const{
if(role == FavoriteRole){
return item->data(Favorite);
}
+ if(role == SubtitleRole){
+ return item->data(Subtitle);
+ }
return QVariant();
}
@@ -171,11 +175,11 @@ bool SeriesTreeModel::setData(const QModelIndex &index, const QVariant &value, i
return renameSeries(index, value);
}
}
- }else if(index.data(TypeRole).toInt() == NewSeries){
- return setNewSeries(index, value);
}
- }else if(index.column() == Favorite){
- return setFavorite(index, value);
+ }else if(index.data(TypeRole).toInt() == NewSeries){
+ return setNewSeries(index, value);
+ }else{
+ return updateGeneric(index, value);
}
}
return false;
@@ -618,15 +622,22 @@ bool SeriesTreeModel::setNewSeries(const QModelIndex &source, const QVariant &va
return false;
}
-bool SeriesTreeModel::setFavorite(const QModelIndex &source, const QVariant &value){
+bool SeriesTreeModel::updateGeneric(const QModelIndex &source, const QVariant &value){
+ int column = source.column();
+ if(!mUpdateGenericMap.contains(column)){
+ return false;
+ }
SmTreeItem *item = static_cast<SmTreeItem*>(source.internalPointer());
+ QString table = mUpdateGenericMap.value(column);
+ QString queryString = QString(mUpdateGenericTemplate).arg(table);
mDb.transaction();
- mUpdateFavoriteQuery->bindValue(":fav", value);
- mUpdateFavoriteQuery->bindValue(":id", item->data(SeriesPartId));
- if(mUpdateFavoriteQuery->exec()){
- item->setData(Favorite, value);
- QModelIndex start = index(source.row(), 0, source.parent());
- emit dataChanged(start, source);
+ QSqlQuery query(mDb);
+ query.prepare(queryString);
+ query.bindValue(":id", item->data(SeriesPartId));
+ query.bindValue(":value", value);
+ if(query.exec()){
+ item->setData(column, value);
+ emit dataChanged(source, source);
mDb.commit();
return true;
}