examples/network/bearermonitor/bearermonitor.cpp
changeset 33 3e2da88830cd
parent 30 5dc02b23752f
--- a/examples/network/bearermonitor/bearermonitor.cpp	Tue Jul 06 15:10:48 2010 +0300
+++ b/examples/network/bearermonitor/bearermonitor.cpp	Wed Aug 18 10:37:55 2010 +0300
@@ -80,7 +80,7 @@
             break;
         }
     }
-
+    connect(&manager, SIGNAL(onlineStateChanged(bool)), this ,SLOT(onlineStateChanged(bool)));
     connect(&manager, SIGNAL(configurationAdded(const QNetworkConfiguration&)),
             this, SLOT(configurationAdded(const QNetworkConfiguration&)));
     connect(&manager, SIGNAL(configurationRemoved(const QNetworkConfiguration&)),
@@ -88,7 +88,6 @@
     connect(&manager, SIGNAL(configurationChanged(const QNetworkConfiguration&)),
             this, SLOT(configurationChanged(const QNetworkConfiguration)));
     connect(&manager, SIGNAL(updateCompleted()), this, SLOT(updateConfigurations()));
-    connect(&manager, SIGNAL(onlineStateChanged(bool)), this ,SLOT(onlineStateChanged(bool)));
 
 #ifdef Q_OS_WIN
     connect(registerButton, SIGNAL(clicked()), this, SLOT(registerNetwork()));
@@ -111,6 +110,10 @@
 #endif
     connect(scanButton, SIGNAL(clicked()),
             this, SLOT(performScan()));
+
+    // Just in case update all configurations so that all
+    // configurations are up to date.
+    manager.updateConfigurations();
 }
 
 BearerMonitor::~BearerMonitor()
@@ -177,10 +180,8 @@
 void BearerMonitor::updateSnapConfiguration(QTreeWidgetItem *parent, const QNetworkConfiguration &snap)
 {
     QMap<QString, QTreeWidgetItem *> itemMap;
-    for (int i = 0; i < parent->childCount(); ++i) {
-        QTreeWidgetItem *item = parent->child(i);
+    foreach (QTreeWidgetItem *item, parent->takeChildren())
         itemMap.insert(item->data(0, Qt::UserRole).toString(), item);
-    }
 
     QList<QNetworkConfiguration> allConfigurations = snap.children();
 
@@ -191,6 +192,8 @@
         if (item) {
             updateItem(item, config);
 
+            parent->addChild(item);
+
             if (config.type() == QNetworkConfiguration::ServiceNetwork)
                 updateSnapConfiguration(item, config);
         } else {
@@ -198,10 +201,7 @@
         }
     }
 
-    foreach (const QString &id, itemMap.keys())
-        delete itemMap.value(id);
-
-    itemMap.clear();
+    qDeleteAll(itemMap);
 }
 
 void BearerMonitor::updateConfigurations()
@@ -209,6 +209,10 @@
     progressBar->hide();
     scanButton->show();
 
+    // Just in case update online state, on Symbian platform
+    // WLAN scan needs to be triggered initially to have their true state.
+    onlineStateChanged(manager.isOnline());
+
     QList<QTreeWidgetItem *> items = treeWidget->findItems(QLatin1String("*"), Qt::MatchWildcard);
     QMap<QString, QTreeWidgetItem *> itemMap;
     while (!items.isEmpty()) {
@@ -232,8 +236,7 @@
         }
     }
 
-    foreach (const QString &id, itemMap.keys())
-        delete itemMap.value(id);
+    qDeleteAll(itemMap);
 }
 
 void BearerMonitor::onlineStateChanged(bool isOnline)