examples/network/bearermonitor/bearermonitor.cpp
changeset 33 3e2da88830cd
parent 30 5dc02b23752f
equal deleted inserted replaced
30:5dc02b23752f 33:3e2da88830cd
    78             treeWidget->setCurrentItem(item);
    78             treeWidget->setCurrentItem(item);
    79             showConfigurationFor(item);
    79             showConfigurationFor(item);
    80             break;
    80             break;
    81         }
    81         }
    82     }
    82     }
    83 
    83     connect(&manager, SIGNAL(onlineStateChanged(bool)), this ,SLOT(onlineStateChanged(bool)));
    84     connect(&manager, SIGNAL(configurationAdded(const QNetworkConfiguration&)),
    84     connect(&manager, SIGNAL(configurationAdded(const QNetworkConfiguration&)),
    85             this, SLOT(configurationAdded(const QNetworkConfiguration&)));
    85             this, SLOT(configurationAdded(const QNetworkConfiguration&)));
    86     connect(&manager, SIGNAL(configurationRemoved(const QNetworkConfiguration&)),
    86     connect(&manager, SIGNAL(configurationRemoved(const QNetworkConfiguration&)),
    87             this, SLOT(configurationRemoved(const QNetworkConfiguration&)));
    87             this, SLOT(configurationRemoved(const QNetworkConfiguration&)));
    88     connect(&manager, SIGNAL(configurationChanged(const QNetworkConfiguration&)),
    88     connect(&manager, SIGNAL(configurationChanged(const QNetworkConfiguration&)),
    89             this, SLOT(configurationChanged(const QNetworkConfiguration)));
    89             this, SLOT(configurationChanged(const QNetworkConfiguration)));
    90     connect(&manager, SIGNAL(updateCompleted()), this, SLOT(updateConfigurations()));
    90     connect(&manager, SIGNAL(updateCompleted()), this, SLOT(updateConfigurations()));
    91     connect(&manager, SIGNAL(onlineStateChanged(bool)), this ,SLOT(onlineStateChanged(bool)));
       
    92 
    91 
    93 #ifdef Q_OS_WIN
    92 #ifdef Q_OS_WIN
    94     connect(registerButton, SIGNAL(clicked()), this, SLOT(registerNetwork()));
    93     connect(registerButton, SIGNAL(clicked()), this, SLOT(registerNetwork()));
    95     connect(unregisterButton, SIGNAL(clicked()), this, SLOT(unregisterNetwork()));
    94     connect(unregisterButton, SIGNAL(clicked()), this, SLOT(unregisterNetwork()));
    96 #else
    95 #else
   109     connect(deleteSessionButton, SIGNAL(clicked()),
   108     connect(deleteSessionButton, SIGNAL(clicked()),
   110             this, SLOT(deleteSession()));
   109             this, SLOT(deleteSession()));
   111 #endif
   110 #endif
   112     connect(scanButton, SIGNAL(clicked()),
   111     connect(scanButton, SIGNAL(clicked()),
   113             this, SLOT(performScan()));
   112             this, SLOT(performScan()));
       
   113 
       
   114     // Just in case update all configurations so that all
       
   115     // configurations are up to date.
       
   116     manager.updateConfigurations();
   114 }
   117 }
   115 
   118 
   116 BearerMonitor::~BearerMonitor()
   119 BearerMonitor::~BearerMonitor()
   117 {
   120 {
   118 }
   121 }
   175 }
   178 }
   176 
   179 
   177 void BearerMonitor::updateSnapConfiguration(QTreeWidgetItem *parent, const QNetworkConfiguration &snap)
   180 void BearerMonitor::updateSnapConfiguration(QTreeWidgetItem *parent, const QNetworkConfiguration &snap)
   178 {
   181 {
   179     QMap<QString, QTreeWidgetItem *> itemMap;
   182     QMap<QString, QTreeWidgetItem *> itemMap;
   180     for (int i = 0; i < parent->childCount(); ++i) {
   183     foreach (QTreeWidgetItem *item, parent->takeChildren())
   181         QTreeWidgetItem *item = parent->child(i);
       
   182         itemMap.insert(item->data(0, Qt::UserRole).toString(), item);
   184         itemMap.insert(item->data(0, Qt::UserRole).toString(), item);
   183     }
       
   184 
   185 
   185     QList<QNetworkConfiguration> allConfigurations = snap.children();
   186     QList<QNetworkConfiguration> allConfigurations = snap.children();
   186 
   187 
   187     while (!allConfigurations.isEmpty()) {
   188     while (!allConfigurations.isEmpty()) {
   188         QNetworkConfiguration config = allConfigurations.takeFirst();
   189         QNetworkConfiguration config = allConfigurations.takeFirst();
   189 
   190 
   190         QTreeWidgetItem *item = itemMap.take(config.identifier());
   191         QTreeWidgetItem *item = itemMap.take(config.identifier());
   191         if (item) {
   192         if (item) {
   192             updateItem(item, config);
   193             updateItem(item, config);
       
   194 
       
   195             parent->addChild(item);
   193 
   196 
   194             if (config.type() == QNetworkConfiguration::ServiceNetwork)
   197             if (config.type() == QNetworkConfiguration::ServiceNetwork)
   195                 updateSnapConfiguration(item, config);
   198                 updateSnapConfiguration(item, config);
   196         } else {
   199         } else {
   197             configurationAdded(config, parent);
   200             configurationAdded(config, parent);
   198         }
   201         }
   199     }
   202     }
   200 
   203 
   201     foreach (const QString &id, itemMap.keys())
   204     qDeleteAll(itemMap);
   202         delete itemMap.value(id);
       
   203 
       
   204     itemMap.clear();
       
   205 }
   205 }
   206 
   206 
   207 void BearerMonitor::updateConfigurations()
   207 void BearerMonitor::updateConfigurations()
   208 {
   208 {
   209     progressBar->hide();
   209     progressBar->hide();
   210     scanButton->show();
   210     scanButton->show();
       
   211 
       
   212     // Just in case update online state, on Symbian platform
       
   213     // WLAN scan needs to be triggered initially to have their true state.
       
   214     onlineStateChanged(manager.isOnline());
   211 
   215 
   212     QList<QTreeWidgetItem *> items = treeWidget->findItems(QLatin1String("*"), Qt::MatchWildcard);
   216     QList<QTreeWidgetItem *> items = treeWidget->findItems(QLatin1String("*"), Qt::MatchWildcard);
   213     QMap<QString, QTreeWidgetItem *> itemMap;
   217     QMap<QString, QTreeWidgetItem *> itemMap;
   214     while (!items.isEmpty()) {
   218     while (!items.isEmpty()) {
   215         QTreeWidgetItem *item = items.takeFirst();
   219         QTreeWidgetItem *item = items.takeFirst();
   230         } else {
   234         } else {
   231             configurationAdded(config);
   235             configurationAdded(config);
   232         }
   236         }
   233     }
   237     }
   234 
   238 
   235     foreach (const QString &id, itemMap.keys())
   239     qDeleteAll(itemMap);
   236         delete itemMap.value(id);
       
   237 }
   240 }
   238 
   241 
   239 void BearerMonitor::onlineStateChanged(bool isOnline)
   242 void BearerMonitor::onlineStateChanged(bool isOnline)
   240 {
   243 {
   241     if (isOnline)
   244     if (isOnline)