qtmobility/src/bearer/qcorewlanengine_mac_p.h
branchRCL_3
changeset 5 4ea83c148e84
parent 1 5822d84012fb
child 6 4203353e74ea
--- a/qtmobility/src/bearer/qcorewlanengine_mac_p.h	Tue May 25 13:34:51 2010 +0300
+++ b/qtmobility/src/bearer/qcorewlanengine_mac_p.h	Wed Jun 09 10:36:00 2010 +0300
@@ -54,17 +54,23 @@
 //
 
 #include "qnetworksessionengine_p.h"
+#include "qnetworkconfiguration.h"
+
 #include <QMap>
 #include <QTimer>
 #include <SystemConfiguration/SystemConfiguration.h>
+#include <QThread>
+#include <QMutex>
 
 QTM_BEGIN_NAMESPACE
 
 class QNetworkConfigurationPrivate;
+class QScanThread;
 
 class QCoreWlanEngine : public QNetworkSessionEngine
 {
     Q_OBJECT
+    friend class QScanThread;
 
 public:
     QCoreWlanEngine(QObject *parent = 0);
@@ -82,30 +88,62 @@
     void requestUpdate();
 
     static QCoreWlanEngine *instance();
-    static bool getAllScInterfaces();
+    QString interfaceName;
 
 private:
     bool isWifiReady(const QString &dev);
-    QMap<uint, QString> configurationInterface;
     QTimer pollTimer;
-    QList<QNetworkConfigurationPrivate *> scanForSsids(const QString &interfaceName);
-
-    bool isKnownSsid(const QString &ssid);
     QList<QNetworkConfigurationPrivate *> foundConfigurations;
 
     SCDynamicStoreRef storeSession;
     CFRunLoopSourceRef runloopSource;
     bool hasWifi;
+    QScanThread *scanThread;
+    QMutex mutex;
+    static bool getAllScInterfaces();
+
+private Q_SLOTS:
+    void init();
 
 protected:
-   QMap<QString, QMap<QString,QString> > userProfiles;
+    void startNetworkChangeLoop();
+};
+
+class QScanThread : public QThread
+{
+    Q_OBJECT
 
-    void startNetworkChangeLoop();
-    void getUserConfigurations();
+public:
+    QScanThread(QObject *parent = 0);
+    ~QScanThread();
+
+    void quit();
+    QList<QNetworkConfigurationPrivate *> getConfigurations();
+    QString interfaceName;
+    QMap<QString, QString> configurationInterface;
+    void getUserProfiles();
     QString getNetworkNameFromSsid(const QString &ssid);
     QString getSsidFromNetworkName(const QString &name);
+    bool isKnownSsid(const QString &ssid);
+    QMap<QString, QMap<QString,QString> > userProfiles;
+
+signals:
+    void networksChanged();
+
+protected:
+    void run();
+
+private:
+    QList<QNetworkConfigurationPrivate *> fetchedConfigurations;
+    QMutex mutex;
+    QStringList foundNetwork(const QString &id, const QString &ssid,
+                             const QNetworkConfiguration::StateFlags state,
+                             const QString &interfaceName,
+                             const QNetworkConfiguration::Purpose purpose);
+
 };
 
+
 QTM_END_NAMESPACE
 
 #endif