diff options
Diffstat (limited to 'seriestreemodel.cpp')
-rw-r--r-- | seriestreemodel.cpp | 39 |
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; } |