summaryrefslogtreecommitdiffstats
path: root/archivemodel.h
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2013-06-01 22:52:19 +0200
committerArno <am@disconnect.de>2013-06-01 22:52:19 +0200
commit6fec376f7f44145efa509668927a0179c8ffa65e (patch)
tree49bbc7fe883085ff39e24b5f12fbef25d8cf48c5 /archivemodel.h
parent6e92f5deb39aed43d72d8a64733f5b11e1650d5d (diff)
downloadSheMov-6fec376f7f44145efa509668927a0179c8ffa65e.tar.gz
SheMov-6fec376f7f44145efa509668927a0179c8ffa65e.tar.bz2
SheMov-6fec376f7f44145efa509668927a0179c8ffa65e.zip
Gather archive data in a thread
Fetching data sometimes takes a long time, so do it in a QThread and show a progress dialog. Some kludges included :)
Diffstat (limited to 'archivemodel.h')
-rw-r--r--archivemodel.h38
1 files changed, 33 insertions, 5 deletions
diff --git a/archivemodel.h b/archivemodel.h
index 1f39717..c07fc7b 100644
--- a/archivemodel.h
+++ b/archivemodel.h
@@ -8,11 +8,14 @@
#ifndef ARCHIVEMODEL_H
#define ARCHIVEMODEL_H
-#include <QSqlDatabase>
#include <QHash>
+#include <QSqlDatabase>
+#include <QThread>
#include "smtreemodel.h"
+class ArchiveCollector;
+
class ArchiveModel : public SmTreeModel {
Q_OBJECT
public:
@@ -24,14 +27,38 @@ class ArchiveModel : public SmTreeModel {
explicit ArchiveModel(const QStringList &headers, QObject *parent = 0);
const QStringList availableOrders() const;
const QHash<QString, int> availableOrdersHash() const { return mAvailableOrders; }
+ ArchiveCollector *collector() { return mCollector; }
virtual QVariant data(const QModelIndex &index, int role) const;
- signals:
-
public slots:
void setOrder(int order);
void setOrder(const QString &order);
+ private slots:
+ void collectorFinished();
+
+ private:
+ QSqlDatabase mDb;
+ QHash<QString, int> mAvailableOrders;
+ ArchiveCollector *mCollector;
+ int mOrder;
+};
+
+class ArchiveCollector : public QThread {
+ Q_OBJECT
+ public:
+ explicit ArchiveCollector(int numFields, QObject *parent = 0);
+ SmTreeItem *rootItem() { return mRootItem; }
+
+ public slots:
+ void populate(int order, SmTreeItem *rootItem);
+
+ signals:
+ void message(const QString message);
+
+ protected:
+ virtual void run();
+
private:
void populateBySeriesName();
void populateByGenre();
@@ -40,8 +67,9 @@ class ArchiveModel : public SmTreeModel {
void fetchSeries(const QVariant &id, SmTreeItem *parent);
void fetchParts(const QVariant &id, SmTreeItem *parent);
QSqlDatabase mDb;
- QHash<QString, int> mAvailableOrders;
- int mOrder;
+ SmTreeItem *mRootItem;
+ int mNumFields;
+ int mSortOrder;
};
#endif // ARCHIVEMODEL_H