From d345cf9458da222e89d4781eb9cdb3d1d95728d9 Mon Sep 17 00:00:00 2001 From: Torste Aikio Date: Tue, 6 Jul 2010 14:08:09 +0300 Subject: [PATCH] Connection selection dialog bug fix for selectremotedlg --- src/remotedbmgr.h | 1 + src/selectremotedlg.cpp | 23 ++++++++++++++++++++++- src/selectremotedlg.h | 2 ++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/remotedbmgr.h b/src/remotedbmgr.h index 11765d8..95750fa 100644 --- a/src/remotedbmgr.h +++ b/src/remotedbmgr.h @@ -15,6 +15,7 @@ public: RemoteDBMgr(); ~RemoteDBMgr(); +public slots: void getDBAsync(); signals: diff --git a/src/selectremotedlg.cpp b/src/selectremotedlg.cpp index 2ffc121..6b191a1 100644 --- a/src/selectremotedlg.cpp +++ b/src/selectremotedlg.cpp @@ -53,6 +53,11 @@ SelectRemoteDlg::SelectRemoteDlg(QWidget *parent) SelectRemoteDlg::~SelectRemoteDlg() { delete layout; + if (onlinePollerThread != NULL) { + onlinePollerThread->quit(); + delete onlinePollerThread; + onlinePollerThread = NULL; + } } void SelectRemoteDlg::setDB(RemoteDB *db) @@ -108,10 +113,26 @@ void SelectRemoteDlg::downloadRemote() } } +void SelectRemoteDlg::getDB() +{ + if (onlinePollerThread != NULL) { + onlinePollerThread->quit(); + delete onlinePollerThread; + onlinePollerThread = NULL; + } + remoteDBMgr.getDBAsync(); +} + void SelectRemoteDlg::refreshDB() { setBusy(true); - remoteDBMgr.getDBAsync(); + if (onlinePollerThread != NULL) { + delete onlinePollerThread; + } + onlinePollerThread = new OnlinePollerThread(this); + connect(onlinePollerThread, SIGNAL(online()), + this, SLOT(getDB())); + onlinePollerThread->run(); } void SelectRemoteDlg::showEvent(QShowEvent *event) diff --git a/src/selectremotedlg.h b/src/selectremotedlg.h index 8433318..109a7ef 100644 --- a/src/selectremotedlg.h +++ b/src/selectremotedlg.h @@ -29,6 +29,7 @@ public: public slots: void refreshDB(); + void getDB(); private slots: void alphabetItemChanged(QListWidgetItem *current, @@ -53,6 +54,7 @@ private: QListWidget *modelList; QPushButton *downloadBtn; RemoteDB *remoteDB; + OnlinePollerThread *onlinePollerThread; void setBusy(bool busy = true); }; -- 1.7.9.5