summaryrefslogtreecommitdiffstats
path: root/archivemodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'archivemodel.cpp')
-rw-r--r--archivemodel.cpp44
1 files changed, 41 insertions, 3 deletions
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<int> &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<int> &seriesPartIds){
pictures->appendChild(newItem);
}
}
+ if(pictures->childCount()){
+ root->appendChild(pictures);
+ }else{
+ delete pictures;
+ }
setRoot(root);
}
+void ArchiveFilesModel::refresh(){
+ populate(mSeriesPartIds);
+}
+
/*
* ArchiveCollector BEGIN */