summaryrefslogtreecommitdiffstats
path: root/archivemodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'archivemodel.cpp')
-rw-r--r--archivemodel.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/archivemodel.cpp b/archivemodel.cpp
index 3fb8188..774265f 100644
--- a/archivemodel.cpp
+++ b/archivemodel.cpp
@@ -106,6 +106,9 @@ QVariant ArchiveModel::data(const QModelIndex &index, int role) const{
if(role == SubtitleRole){
return item->data(Subtitle);
}
+ if(role == FavoriteRole){
+ return item->data(Favorite);
+ }
if(role == Qt::DecorationRole){
if(index.column() == 0){
return mNodeIcons.value(item->data(Type).toInt());
@@ -481,6 +484,25 @@ bool ArchiveModel::setPartNo(int partId, int newPartId, const QString &subtitle)
return true;
}
+bool ArchiveModel::setFavorite(int partId, bool favorite){
+ QSqlQuery favQ(mDb);
+ favQ.prepare("UPDATE seriesparts SET bfavorite = :fav WHERE iseriesparts_id = :id");
+ favQ.bindValue(":id", partId);
+ favQ.bindValue(":fav", favorite);
+ if(favQ.exec()){
+ QMutexLocker l(&mRootAccessMx);
+ QModelIndex idx = findRecursive(partId, SeriesPartId, rootIndex());
+ if(idx.isValid()){
+ SmTreeItem *item = itemAt(idx);
+ item->setData(Favorite, favorite);
+ emit dataChanged(idx, idx);
+ refresh();
+ return true;
+ }
+ }
+ return false;
+}
+
QStringList ArchiveModel::allSources() const{
QSqlQuery sQ("SELECT DISTINCT(tsourcemedium) FROM metadata ORDER BY tsourcemedium ASC", mDb);
QStringList retval;
@@ -545,9 +567,14 @@ void ArchiveModel::collectorFinished(QObject *thread){
if(t->isCancelled()){
return;
}
+ // don't block the GUI if we're already running again!
+ if(t->isRunning()){
+ return;
+ }
SmTreeItem *rootCopy = t->rootItem();
int sortOrder = t->sortOrder();
if(sortOrder == mOrder){
+ QMutexLocker l(&mRootAccessMx);
setRoot(rootCopy);
}
writeCache(sortOrder, rootCopy);