diff options
author | Arno <am@disconnect.de> | 2013-06-01 22:52:19 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2013-06-01 22:52:19 +0200 |
commit | 6fec376f7f44145efa509668927a0179c8ffa65e (patch) | |
tree | 49bbc7fe883085ff39e24b5f12fbef25d8cf48c5 /archivemodel.h | |
parent | 6e92f5deb39aed43d72d8a64733f5b11e1650d5d (diff) | |
download | SheMov-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.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 |