diff -r d965ea371a4f -r 4ea83c148e84 qtmobility/src/bearer/qcorewlanengine_mac_p.h --- 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 #include #include +#include +#include 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 configurationInterface; QTimer pollTimer; - QList scanForSsids(const QString &interfaceName); - - bool isKnownSsid(const QString &ssid); QList foundConfigurations; SCDynamicStoreRef storeSession; CFRunLoopSourceRef runloopSource; bool hasWifi; + QScanThread *scanThread; + QMutex mutex; + static bool getAllScInterfaces(); + +private Q_SLOTS: + void init(); protected: - QMap > userProfiles; + void startNetworkChangeLoop(); +}; + +class QScanThread : public QThread +{ + Q_OBJECT - void startNetworkChangeLoop(); - void getUserConfigurations(); +public: + QScanThread(QObject *parent = 0); + ~QScanThread(); + + void quit(); + QList getConfigurations(); + QString interfaceName; + QMap configurationInterface; + void getUserProfiles(); QString getNetworkNameFromSsid(const QString &ssid); QString getSsidFromNetworkName(const QString &name); + bool isKnownSsid(const QString &ssid); + QMap > userProfiles; + +signals: + void networksChanged(); + +protected: + void run(); + +private: + QList 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