summaryrefslogtreecommitdiffstats
path: root/archivemodel.h
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2013-06-26 10:09:24 +0200
committerArno <am@disconnect.de>2013-06-26 10:09:24 +0200
commit9e228a178d0e0b9382f5ce554083f905e65aac25 (patch)
treef1aa368086b0f90dc284d3964f95b3b0e260c3d1 /archivemodel.h
parenteb697d7a3b7fc8b8af052b6f025610dd85eb176b (diff)
downloadSheMov-9e228a178d0e0b9382f5ce554083f905e65aac25.tar.gz
SheMov-9e228a178d0e0b9382f5ce554083f905e65aac25.tar.bz2
SheMov-9e228a178d0e0b9382f5ce554083f905e65aac25.zip
Fix behavior of view when refreshing
Cancel the collectors if they're still running. Otherwise we may get outdated results when refreshing the view after an update or delete.
Diffstat (limited to 'archivemodel.h')
-rw-r--r--archivemodel.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/archivemodel.h b/archivemodel.h
index be69346..3848d94 100644
--- a/archivemodel.h
+++ b/archivemodel.h
@@ -61,7 +61,6 @@ class ArchiveModel : public SmTreeModel {
const QString cacheFile(int o) const;
QSqlDatabase mDb;
QHash<QString, int> mAvailableOrders;
- QMutex mDoneMx;
QList<ArchiveCollector*> mCollectors;
int mOrder;
};
@@ -72,6 +71,7 @@ class ArchiveCollector : public QThread {
explicit ArchiveCollector(int numFields, int order, QObject *parent = 0);
SmTreeItem *rootItem();
int sortOrder() const { return mSortOrder; }
+ void cancel();
signals:
void message(const QString message);
@@ -86,11 +86,14 @@ class ArchiveCollector : public QThread {
void fetchChildren(SmTreeItem *parent);
void fetchSeries(const QVariant &id, SmTreeItem *parent);
void fetchParts(const QVariant &id, SmTreeItem *parent);
+ void checkCancelled();
QSqlDatabase mDb;
SmTreeItem *mRootItem;
QMutex mAccessMx;
+ QMutex mCancelledMx;
int mNumFields;
int mSortOrder;
+ bool mCancelled;
};
#endif // ARCHIVEMODEL_H