Changed daemon to auto disconnect if network connection was initialized by itself.
[jenirok] / src / common / connectionmanager.h
1 /*
2  * This file is part of Jenirok.
3  *
4  * Jenirok is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * Jenirok is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with Jenirok.  If not, see <http://www.gnu.org/licenses/>.
16  *
17  */
18
19 #ifndef CONNECTIONMANAGER_H
20 #define CONNECTIONMANAGER_H
21
22 #include <QtCore/QObject>
23 #include <QtCore/QTimerEvent>
24 #include <QtCore/QString>
25 #include <QtCore/QByteArray>
26 #include <QtCore/QList>
27 #include <QtDBus/QDBusInterface>
28 #include <QtDBus/QDBusMessage>
29
30 class ConnectionManager : public QObject
31 {
32     Q_OBJECT
33
34 public:
35
36     struct Connection
37     {
38         QString serviceType;
39         unsigned int serviceAttributes;
40         QString serviceID;
41         QString networkName;
42         QString networkType;
43         unsigned int networkAttributes;
44         QByteArray networkID;
45     };
46
47     ConnectionManager(QObject* parent = 0);
48     ~ConnectionManager();
49     void setBlocking(bool value);
50     bool connect();
51     bool connect(Connection const& connection);
52     bool disconnect(bool force = false);
53     bool isConnected();
54     bool scanConnections(QList<Connection>& connections);
55     static unsigned int const TIMEOUT = 25000;
56
57 signals:
58     void connectReply(bool connected);
59     void isConnectedReply(bool connected);
60     void newConnection(ConnectionManager::Connection const& connection);
61     void scanReady();
62
63 protected:
64     virtual void timerEvent(QTimerEvent* event);
65
66 private slots:
67     void stateChange(const QDBusMessage& rep);
68     void connectionChange(const QDBusMessage& rep);
69     void scanResult(const QDBusMessage& rep);
70
71 private:
72     bool waitSignal(bool* ready);
73     bool blocking_;
74     bool stateReady_;
75     bool connectionReady_;
76     bool scanReady_;
77     bool connected_;
78     bool timeout_;
79     int numberOfConnections_;
80     int scannedConnections_;
81     int timer_;
82     QList<Connection>* connections_;
83     QDBusInterface *icd2interface_;
84 };
85
86 #endif