--- a/qtmobility/src/bearer/qcorewlanengine_mac_p.h Thu May 27 13:42:11 2010 +0300
+++ b/qtmobility/src/bearer/qcorewlanengine_mac_p.h Fri Jun 11 14:26:25 2010 +0300
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
@@ -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