OnlinePollerThread now works as intended
[irwi] / src / onlinepollerthread.cpp
1 #include "onlinepollerthread.h"
2 #include <QNetworkConfigurationManager>
3 #include <QDBusMessage>
4 #include <QDBusConnection>
5
6 OnlinePollerThread::OnlinePollerThread()
7     : m_exiting(false)
8 {
9 }
10
11 OnlinePollerThread::~OnlinePollerThread()
12 {
13     m_exiting = true;
14     stop();
15     quit();
16     wait();
17 }
18
19 void OnlinePollerThread::run()
20 {
21     m_running = true;
22     QTM_PREPEND_NAMESPACE(QNetworkConfigurationManager) qncm;
23     bool connected = qncm.isOnline();
24     if (!connected) {
25         QDBusMessage m = QDBusMessage::createMethodCall(
26                 "com.nokia.icd_ui", "/com/nokia/icd_ui", 
27                 "com.nokia.icd_ui", "show_conn_dlg");
28         m << false;
29         QDBusConnection::systemBus().send(m);
30         while(m_running)
31         {
32             connected = qncm.isOnline();
33             if (connected) {
34                 m_running = false;
35             } else {
36                 msleep(250);
37             }
38         }
39     }
40
41     if (connected) {
42         emit online();
43     }
44
45     if (!m_exiting) {
46         exec();
47     }
48 }
49
50 void OnlinePollerThread::stop()
51 {
52     m_running = false;
53 }
54