From 6fec376f7f44145efa509668927a0179c8ffa65e Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 1 Jun 2013 22:52:19 +0200 Subject: 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 :) --- archiveview.h | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) (limited to 'archiveview.h') diff --git a/archiveview.h b/archiveview.h index b76e487..a62fd66 100644 --- a/archiveview.h +++ b/archiveview.h @@ -8,20 +8,23 @@ #ifndef ARCHIVEVIEW_H #define ARCHIVEVIEW_H -#include -#include +#include #include +#include +#include #include "archivemodel.h" #include "smtreeview.h" -class QSortFilterProxyModel; class QComboBox; +class QLabel; class QLineEdit; +class QSortFilterProxyModel; class ArchiveTree; class ArchiveFiles; class ArchiveProxy; +class ArchiveProgressDialog; class ArchiveView : public QWidget { Q_OBJECT @@ -29,10 +32,16 @@ class ArchiveView : public QWidget { explicit ArchiveView(QWidget *parent = 0); int currentSortOrder() const; void writeSettings(); + // this is needed for displaying the progress dialog in the + // center of the main window... + void setConstructingDone() { mConstructing = false; } + QWidget *progressDialog(); private slots: void setFilter(); void clearFilter(); + void collectorStarted(); + void collectorFinished(); private: QComboBox *mSortOrder; @@ -41,6 +50,8 @@ class ArchiveView : public QWidget { ArchiveFiles *mFiles; ArchiveModel *mArchiveModel; ArchiveProxy *mProxy; + ArchiveProgressDialog *mProgress; + bool mConstructing; }; class ArchiveTree : public SmTreeView { @@ -52,6 +63,18 @@ class ArchiveTree : public SmTreeView { ArchiveModel *mModel; }; +class ArchiveProgressDialog : public QDialog { + Q_OBJECT + public: + explicit ArchiveProgressDialog(QWidget *parent = 0, Qt::WindowFlags f = Qt::WindowStaysOnTopHint); + + public slots: + void setMessage(const QString &msg); + + private: + QLabel *mMessage; +}; + class ArchiveFiles : public SmTreeView { public: explicit ArchiveFiles(QWidget *parent = 0); -- cgit v1.2.3-70-g09d2