#define CONNECTIONMANAGER_H
#include <QtCore/QObject>
+#include <QtCore/QTimerEvent>
#include <QtCore/QString>
-#include <conic/conic.h>
-#include <glib-object.h>
-#include <dbus/dbus-glib-lowlevel.h>
+#include <QtCore/QByteArray>
+#include <QtCore/QList>
+#include <QtDBus/QDBusInterface>
+#include <QtDBus/QDBusMessage>
class ConnectionManager : public QObject
{
- Q_OBJECT
+ Q_OBJECT
public:
- static ConnectionManager& instance();
- bool connect();
- bool disconnect();
- bool isConnected();
+
+ enum ConnectionType {NO_TYPE, WLAN, GPRS};
+ enum Error {NO_ERROR, NO_AVAILABLE_CONNECTIONS, INVALID_IAP, UNKNOWN_ERROR};
+
+ struct Connection
+ {
+ ConnectionType type;
+ QString id;
+ QString name;
+ int strength;
+ };
+
+ ConnectionManager(QObject* parent = 0);
+ ~ConnectionManager();
+ void setBlocking(bool value);
+ bool connect();
+ bool connect(Connection const& connection);
+ bool connect(QString const& id);
+ bool getBestConnection(Connection& connection, ConnectionType type = NO_TYPE);
+ bool disconnect(bool force = false);
+ bool isConnected();
+ bool scanConnections(QList<Connection>& connections, ConnectionType type = NO_TYPE);
+ Error error() const;
+ static unsigned int const TIMEOUT = 20000;
signals:
- void connected();
- void disconnected();
- void error(QString const& error);
+ void connectReply(bool connected);
+ void isConnectedReply(bool connected);
+ void newConnection(ConnectionManager::Connection const& connection);
+ void scanReady();
+
+protected:
+ virtual void timerEvent(QTimerEvent* event);
+private slots:
+ void stateChange(const QDBusMessage& rep);
+ void connectionChange(const QDBusMessage& rep);
+ void scanResult(const QDBusMessage& rep);
private:
- ConnectionManager();
- static void connectionHandler(ConIcConnection *connection,
- ConIcConnectionEvent *event,
- gpointer user_data);
- static ConnectionManager* instance_;
- ConIcConnection* connection_;
- bool connected_;
+ bool waitSignal(bool* ready);
+ bool blocking_;
+ bool stateReady_;
+ bool connectionReady_;
+ bool scanReady_;
+ static bool connected_;
+ bool timeout_;
+ int numberOfConnections_;
+ int scannedConnections_;
+ int timer_;
+ Error error_;
+ QList<Connection>* connections_;
+ QDBusInterface* icd2interface_;
};
#endif