diff options
Diffstat (limited to 'archivemodel.h')
-rw-r--r-- | archivemodel.h | 38 |
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 |