From 6484a0197f193bf10a9f764acd25c52896edb1e7 Mon Sep 17 00:00:00 2001 From: Arno Date: Sun, 7 Jul 2013 08:37:24 +0200 Subject: Implement actions for ArchiveFileView * make files double-clickable * implement edit actions for files --- archivemodel.cpp | 44 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 3 deletions(-) (limited to 'archivemodel.cpp') diff --git a/archivemodel.cpp b/archivemodel.cpp index 2dd151b..d6a30ef 100644 --- a/archivemodel.cpp +++ b/archivemodel.cpp @@ -416,6 +416,9 @@ QVariant ArchiveFilesModel::data(const QModelIndex &index, int role) const { } SmTreeItem *item = itemAt(index); int col = index.column(); + if(role == ExpansionRole){ + return item->data(Expansion); + } if(role == SeriesPartIdRole){ return item->data(SeriesPartId); } @@ -498,9 +501,10 @@ bool ArchiveFilesModel::setData(const QModelIndex &idx, const QVariant &value, i return SmTreeModel::setData(idx, value, role); } QString queryString = QString("UPDATE files SET %1 = :value WHERE ifiles_id = :id").arg(dbColumn); - QSqlQuery q(queryString, mDb); + QSqlQuery q(mDb); + q.prepare(queryString); q.bindValue(":value", value); - q.bindValue(":id", idx.data()); + q.bindValue(":id", idx.data(FileIdRole)); mDb.transaction(); bool success = q.exec(); if(success){ @@ -514,6 +518,8 @@ bool ArchiveFilesModel::setData(const QModelIndex &idx, const QVariant &value, i // check rename, too! if(success){ mDb.commit(); + SmTreeItem *item = itemAt(idx); + item->setData(idx.column(), value); emit dataChanged(idx, idx); return true; } @@ -522,17 +528,40 @@ bool ArchiveFilesModel::setData(const QModelIndex &idx, const QVariant &value, i return false; } +Qt::ItemFlags ArchiveFilesModel::flags(const QModelIndex &index) const{ + if(index.isValid()){ + QVariant v = index.data(ExpansionRole); + if(!v.isNull()){ + return Qt::ItemIsEnabled; + } + } + return SmTreeModel::flags(index); +} + +int ArchiveFilesModel::nextDvd() const{ + int retval; + QSqlQuery q("SELECT max(idvd) FROM files", mDb); + while(q.next()){ + retval = q.value(0).toInt(); + } + return retval + 1; +} + +bool ArchiveFilesModel::isMovie(const QModelIndex &idx) const{ + return idx.data(FileTypeRole).toInt() == Movie; +} + void ArchiveFilesModel::populate(const QSet &seriesPartIds){ if(seriesPartIds.isEmpty()){ return; } + mSeriesPartIds = seriesPartIds; SmTreeItem *root = new SmTreeItem(NumFields); SmTreeItem *movies = new SmTreeItem(NumFields, root); movies->setData(Expansion, QChar(0x2642)); root->appendChild(movies); SmTreeItem *pictures = new SmTreeItem(NumFields, root); pictures->setData(Expansion, QChar(0x2640)); - root->appendChild(pictures); QStringList ids; foreach(int i, seriesPartIds){ ids << QString::number(i); @@ -560,9 +589,18 @@ void ArchiveFilesModel::populate(const QSet &seriesPartIds){ pictures->appendChild(newItem); } } + if(pictures->childCount()){ + root->appendChild(pictures); + }else{ + delete pictures; + } setRoot(root); } +void ArchiveFilesModel::refresh(){ + populate(mSeriesPartIds); +} + /* * ArchiveCollector BEGIN */ -- cgit v1.2.3-70-g09d2