diff options
Diffstat (limited to 'filestreemodel.cpp')
-rw-r--r-- | filestreemodel.cpp | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/filestreemodel.cpp b/filestreemodel.cpp index e59bd99..5fa926e 100644 --- a/filestreemodel.cpp +++ b/filestreemodel.cpp @@ -45,6 +45,8 @@ FilesTreeModel::FilesTreeModel(QStringList &headers, QObject *parent) : SmTreeMo mFileTypeQuery = new QSqlQuery(mDb); mFileTypeQuery->prepare("SELECT sifiletype FROM files WHERE cmd5sum = :md5"); mFileSizeLessThanQueryTemplate = QString("SELECT cmd5sum FROM files WHERE bisize <= :size AND sifiletype = 1 AND idvd = -1 ORDER BY bisize DESC LIMIT %1"); + mUpdateSeriesPartQuery = new QSqlQuery(mDb); + mUpdateSeriesPartQuery->prepare("UPDATE files SET iseriespart_id = :partid WHERE ifiles_id = :fileid"); //file types mFileTypes.insert(1, tr("Movie")); @@ -79,6 +81,7 @@ FilesTreeModel::~FilesTreeModel(){ } void FilesTreeModel::setIds(const QList<int> &seriesPartIds){ + mCurrentIds = seriesPartIds; QStringList ids; foreach(int s, seriesPartIds){ ids << QString::number(s); @@ -175,7 +178,7 @@ QVariant FilesTreeModel::data(const QModelIndex &index, int role) const{ if(index.column() == FileName){ if(item->data(Favorite).toBool() == true){ return mFavoriteColor; - }else if(item->data(DvdNo) == -1){ + }else if(item->data(DvdNo) == -1){ return mLocalColor; }else if(item->data(DvdNo).toInt() > 0){ return mArchivedColor; @@ -492,6 +495,25 @@ bool FilesTreeModel::deleteFiles(const QModelIndexList &files){ return true; } +bool FilesTreeModel::updateSeries(int newSeries, QList<QPersistentModelIndex> files){ + if(files.isEmpty()){ + return false; + } + mDb.transaction(); + foreach(QPersistentModelIndex idx, files){ + mUpdateSeriesPartQuery->bindValue(":partid", newSeries); + mUpdateSeriesPartQuery->bindValue(":fileid", idx.data(FilesTreeModel::FilesIdRole)); + if(!mUpdateSeriesPartQuery->exec()){ + mDb.rollback(); + return false; + } + } + mDb.commit(); + refresh(); + return true; +} + + void FilesTreeModel::readCache(){ QString settingsDir = QDesktopServices::storageLocation(QDesktopServices::DataLocation); QString cacheFile = QString("%1/%2").arg(settingsDir).arg("sizeduration.cache"); @@ -545,6 +567,10 @@ void FilesTreeModel::readSettings(){ mFavoriteColor = favorite.value<QColor>(); } +void FilesTreeModel::refresh(){ + setIds(mCurrentIds); +} + void FilesTreeModel::populate(QSqlQuery &filesQuery){ SmTreeItem *root = new SmTreeItem(16); SmTreeItem *files = new SmTreeItem(16, root); |