examples/network/network-chat/main.cpp
changeset 33 3e2da88830cd
parent 30 5dc02b23752f
--- a/examples/network/network-chat/main.cpp	Tue Jul 06 15:10:48 2010 +0300
+++ b/examples/network/network-chat/main.cpp	Wed Aug 18 10:37:55 2010 +0300
@@ -41,16 +41,52 @@
 #include <QApplication>
 
 #include "chatdialog.h"
-#ifdef Q_OS_SYMBIAN
-#include "sym_iap_util.h"
-#endif
+
+#include <QtCore/QSettings>
+#include <QtNetwork/QNetworkConfigurationManager>
+#include <QtNetwork/QNetworkSession>
 
 int main(int argc, char *argv[])
 {
-#ifdef Q_OS_SYMBIAN
-    qt_SetDefaultIap();
-#endif
     QApplication app(argc, argv);
+
+    QNetworkConfigurationManager manager;
+    if (manager.capabilities() & QNetworkConfigurationManager::NetworkSessionRequired) {
+        // Get saved network configuration
+        QSettings settings(QSettings::UserScope, QLatin1String("Trolltech"));
+        settings.beginGroup(QLatin1String("QtNetwork"));
+        const QString id = settings.value(QLatin1String("DefaultNetworkConfiguration")).toString();
+        settings.endGroup();
+
+        // If the saved network configuration is not currently discovered use the system default
+        QNetworkConfiguration config = manager.configurationFromIdentifier(id);
+        if ((config.state() & QNetworkConfiguration::Discovered) !=
+            QNetworkConfiguration::Discovered) {
+            config = manager.defaultConfiguration();
+        }
+
+        QNetworkSession *networkSession = new QNetworkSession(config, &app);
+        networkSession->open();
+        networkSession->waitForOpened();
+
+        if (networkSession->isOpen()) {
+            // Save the used configuration
+            QNetworkConfiguration config = networkSession->configuration();
+            QString id;
+            if (config.type() == QNetworkConfiguration::UserChoice) {
+                id = networkSession->sessionProperty(
+                        QLatin1String("UserChoiceConfiguration")).toString();
+            } else {
+                id = config.identifier();
+            }
+
+            QSettings settings(QSettings::UserScope, QLatin1String("Trolltech"));
+            settings.beginGroup(QLatin1String("QtNetwork"));
+            settings.setValue(QLatin1String("DefaultNetworkConfiguration"), id);
+            settings.endGroup();
+        }
+    }
+
     ChatDialog dialog;
 #ifdef Q_OS_SYMBIAN
     // Make application better looking and more usable on small screen