Bugfixes to previous commit
[irwi] / src / selectremotedlg.cpp
index 9b6e46a..ec435c6 100644 (file)
@@ -2,6 +2,7 @@
 
 #include "remote.h"
 #include "remotelistwidgetitem.h"
+#include "onlinepollerthread.h"
 
 #include <QHBoxLayout>
 #include <QLabel>
@@ -48,14 +49,16 @@ SelectRemoteDlg::SelectRemoteDlg(QWidget *parent)
     this->setLayout(layout);
     connect(&remoteDBMgr, SIGNAL(dbReady(RemoteDB*)),
             this, SLOT(setDB(RemoteDB*)));
-    remoteDBMgr.getDBAsync();
-    setBusy(true);
 }
 
-
 SelectRemoteDlg::~SelectRemoteDlg()
 {
     delete layout;
+    if (onlinePollerThread != NULL) {
+        onlinePollerThread->quit();
+        delete onlinePollerThread;
+        onlinePollerThread = NULL;
+    }
 }
 
 void SelectRemoteDlg::setDB(RemoteDB *db)
@@ -89,7 +92,7 @@ void SelectRemoteDlg::mfgItemChanged(QListWidgetItem *current,
     if (current)
     {
         RemoteList remotes =
-           (*remoteDB)[alphabetList->currentItem()->text()][current->text()];
+            (*remoteDB)[alphabetList->currentItem()->text()][current->text()];
         foreach(Remote *remote, remotes) {
             modelList->addItem(new RemoteListWidgetItem(remote));
         }
@@ -102,7 +105,40 @@ void SelectRemoteDlg::downloadRemote()
         static_cast<RemoteListWidgetItem *>(modelList->currentItem());
     if (currentModel)
     {
+        setBusy();
+        connect(currentModel->remote(), SIGNAL(saveFinished()),
+                this, SLOT(close()));
         currentModel->remote()->saveToFile();
+
+        emit remoteChanged(*(currentModel->remote()));
+    }
+}
+
+void SelectRemoteDlg::getDB()
+{
+    if (onlinePollerThread != NULL) {
+        onlinePollerThread->quit();
+        delete onlinePollerThread;
+        onlinePollerThread = NULL;
     }
+    remoteDBMgr.getDBAsync();
+}
+
+void SelectRemoteDlg::refreshDB()
+{
+    setBusy(true);
+    if (onlinePollerThread != NULL) {
+        delete onlinePollerThread;
+    }
+    onlinePollerThread = new OnlinePollerThread();
+    connect(onlinePollerThread, SIGNAL(online()),
+            this, SLOT(getDB()));
+    onlinePollerThread->run();
+}
+
+void SelectRemoteDlg::showEvent(QShowEvent *event)
+{
+    refreshDB();
+    QDialog::showEvent(event);
 }