summaryrefslogtreecommitdiffstats
path: root/archivemodel.h
diff options
context:
space:
mode:
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