mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
improve DownloadDialog UI control
* Removes the InterfaceThread which is basically an unecessary proxy between the MainThread and the DownloadThread. * Use a state machine to control the DownloadWidget UI logic. Signed-off-by: Danilo Cesar Lemes de Paula <danilo.eu@gmail.com>
This commit is contained in:
parent
923b4cd9b1
commit
59da382613
2 changed files with 113 additions and 67 deletions
|
|
@ -15,24 +15,12 @@ struct device_data_t;
|
|||
class DownloadThread : public QThread{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit DownloadThread(device_data_t* data);
|
||||
explicit DownloadThread(QObject* parent, device_data_t* data);
|
||||
virtual void run();
|
||||
private:
|
||||
device_data_t *data;
|
||||
};
|
||||
|
||||
class InterfaceThread : public QThread{
|
||||
Q_OBJECT
|
||||
public:
|
||||
InterfaceThread(QObject *parent, device_data_t *data);
|
||||
virtual void run();
|
||||
|
||||
signals:
|
||||
void updateInterface(int value);
|
||||
private:
|
||||
device_data_t *data;
|
||||
};
|
||||
|
||||
class QStringListModel;
|
||||
class DownloadFromDCWidget : public QDialog{
|
||||
Q_OBJECT
|
||||
|
|
@ -41,19 +29,29 @@ public:
|
|||
static DownloadFromDCWidget *instance();
|
||||
void reject();
|
||||
|
||||
enum states {
|
||||
INITIAL,
|
||||
DOWNLOADING,
|
||||
CANCELLING,
|
||||
CANCELLED,
|
||||
DONE,
|
||||
};
|
||||
|
||||
public slots:
|
||||
void on_ok_clicked();
|
||||
void on_cancel_clicked();
|
||||
void runDialog();
|
||||
void stoppedDownloading();
|
||||
void on_vendor_currentIndexChanged(const QString& vendor);
|
||||
|
||||
void onDownloadThreadFinished();
|
||||
void updateProgressBar();
|
||||
void runDialog();
|
||||
|
||||
private:
|
||||
void markChildrenAsDisabled();
|
||||
void markChildrenAsEnabled();
|
||||
void markChildrenAsDisabled();
|
||||
void markChildrenAsEnabled();
|
||||
|
||||
Ui::DownloadFromDiveComputer *ui;
|
||||
InterfaceThread *thread;
|
||||
DownloadThread *thread;
|
||||
bool downloading;
|
||||
|
||||
QStringList vendorList;
|
||||
|
|
@ -65,8 +63,13 @@ private:
|
|||
QStringListModel *productModel;
|
||||
void fill_computer_list();
|
||||
|
||||
QTimer *timer;
|
||||
|
||||
public:
|
||||
bool preferDownloaded();
|
||||
void updateState(states state);
|
||||
states currentState;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue