~boiko/telepathy-ofono/update_tp_qt

67.2.1 by Tiago Salem Herrmann
add initial ussd support
1
/**
2
 * Copyright (C) 2013 Canonical, Ltd.
3
 *
4
 * This program is free software: you can redistribute it and/or modify it under
5
 * the terms of the GNU Lesser General Public License version 3, as published by
6
 * the Free Software Foundation.
7
 *
8
 * This program is distributed in the hope that it will be useful, but WITHOUT
9
 * ANY WARRANTY; without even the implied warranties of MERCHANTABILITY,
10
 * SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11
 * Lesser General Public License for more details.
12
 *
13
 * You should have received a copy of the GNU Lesser General Public License
14
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
15
 *
16
 * Authors: Tiago Salem Herrmann <tiago.herrmann@canonical.com>
17
 */
18
19
#ifndef OFONOUSSDIFACE_H
20
#define OFONOUSSDIFACE_H
21
22
// telepathy-qt
23
#include <TelepathyQt/Constants>
24
#include <TelepathyQt/BaseConnection>
25
#include <TelepathyQt/AbstractAdaptor>
26
#include <TelepathyQt/DBusError>
27
#include <TelepathyQt/Callbacks>
28
29
class BaseConnectionUSSDInterface;
30
31
typedef Tp::SharedPtr<BaseConnectionUSSDInterface> BaseConnectionUSSDInterfacePtr;
32
33
#define TP_QT_IFACE_CONNECTION_USSD "com.canonical.Telephony.USSD"
34
35
class TP_QT_EXPORT BaseConnectionUSSDInterface : public Tp::AbstractConnectionInterface
36
{
37
    Q_OBJECT
38
    Q_DISABLE_COPY(BaseConnectionUSSDInterface)
39
40
public:
41
    static BaseConnectionUSSDInterfacePtr create() {
42
        return BaseConnectionUSSDInterfacePtr(new BaseConnectionUSSDInterface());
43
    }
44
    template<typename BaseConnectionUSSDInterfaceSubclass>
45
    static Tp::SharedPtr<BaseConnectionUSSDInterfaceSubclass> create() {
46
        return Tp::SharedPtr<BaseConnectionUSSDInterfaceSubclass>(
47
                   new BaseConnectionUSSDInterfaceSubclass());
48
    }
49
    QVariantMap immutableProperties() const;
50
    virtual ~BaseConnectionUSSDInterface();
51
52
    typedef Tp::Callback2<void, const QString&, Tp::DBusError*> InitiateCallback;
53
    void setInitiateCallback(const InitiateCallback &cb);
54
55
    typedef Tp::Callback2<void, const QString&, Tp::DBusError*> RespondCallback;
56
    void setRespondCallback(const RespondCallback &cb);
57
58
    typedef Tp::Callback1<void, Tp::DBusError*> CancelCallback;
59
    void setCancelCallback(const CancelCallback &cb);
60
67.2.7 by Tiago Salem Herrmann
add support for retrieving the IMEI
61
67.2.1 by Tiago Salem Herrmann
add initial ussd support
62
    QString state() const;
67.2.7 by Tiago Salem Herrmann
add support for retrieving the IMEI
63
    QString serial() const;
103.1.1 by Tiago Salem Herrmann
set model serial when it changes
64
65
public Q_SLOTS:
66
    void NotificationReceived(const QString &message);
67
    void RequestReceived(const QString &message);
68
69
    void InitiateUSSDComplete(const QString &ussdResp);
70
    void RespondComplete(bool success, const QString &ussdResp);
71
    void BarringComplete(const QString &ssOp, const QString &cbService, const QVariantMap &cbMap);
72
    void ForwardingComplete(const QString &ssOp, const QString &cfService, const QVariantMap &cfMap);
73
    void WaitingComplete(const QString &ssOp, const QVariantMap &cwMap);
74
    void CallingLinePresentationComplete(const QString &ssOp, const QString &status);
75
    void ConnectedLinePresentationComplete(const QString &ssOp, const QString &status);
76
    void CallingLineRestrictionComplete(const QString &ssOp, const QString &status);
77
    void ConnectedLineRestrictionComplete(const QString &ssOp, const QString &status);
78
    void InitiateFailed();
79
    void StateChanged(const QString &state);
80
67.2.7 by Tiago Salem Herrmann
add support for retrieving the IMEI
81
    void setSerial(const QString& serial) const;
67.2.1 by Tiago Salem Herrmann
add initial ussd support
82
protected:
83
    BaseConnectionUSSDInterface();
84
85
private:
86
    void createAdaptor();
87
88
    class Adaptee;
89
    friend class Adaptee;
90
    struct Private;
91
    friend struct Private;
92
    Private *mPriv;
93
};
94
95
96
class TP_QT_EXPORT ConnectionInterfaceUSSDAdaptor : public Tp::AbstractAdaptor
97
{
98
    Q_OBJECT
99
    Q_CLASSINFO("D-Bus Interface", TP_QT_IFACE_CONNECTION_USSD)
100
    Q_CLASSINFO("D-Bus Introspection", ""
101
"  <interface name=\"com.canonical.Telephony.USSD\">\n"
102
"    <property access=\"read\" type=\"s\" name=\"State\"/>\n"
67.2.7 by Tiago Salem Herrmann
add support for retrieving the IMEI
103
"    <property access=\"read\" type=\"s\" name=\"Serial\"/>\n"
67.2.1 by Tiago Salem Herrmann
add initial ussd support
104
"    <method name=\"Initiate\">\n"
67.2.2 by Tiago Salem Herrmann
fix dbus introspection
105
"      <arg direction=\"in\" type=\"s\" name=\"command\"/>\n"
67.2.1 by Tiago Salem Herrmann
add initial ussd support
106
"    </method>\n"
107
"    <method name=\"Respond\">\n"
67.2.2 by Tiago Salem Herrmann
fix dbus introspection
108
"      <arg direction=\"in\" type=\"s\" name=\"reply\"/>\n"
109
"    </method>\n"
110
"    <method name=\"Cancel\" />\n"
67.2.1 by Tiago Salem Herrmann
add initial ussd support
111
"    <signal name=\"NotificationReceived\">\n"
112
"      <arg type=\"s\" name=\"message\"/>\n"
113
"    </signal>\n"
114
"    <signal name=\"RequestReceived\">\n"
115
"      <arg type=\"s\" name=\"message\"/>\n"
116
"    </signal>\n"
117
"    <signal name=\"InitiateUSSDComplete\">\n"
118
"      <arg type=\"s\" name=\"response\"/>\n"
119
"    </signal>\n"
67.2.3 by Tiago Salem Herrmann
add respondComplete() signal
120
"    <signal name=\"RespondComplete\">\n"
121
"      <arg type=\"b\" name=\"success\"/>\n"
122
"      <arg type=\"s\" name=\"response\"/>\n"
123
"    </signal>\n"
67.2.1 by Tiago Salem Herrmann
add initial ussd support
124
"    <signal name=\"BarringComplete\">\n"
125
"      <arg type=\"s\" name=\"ssOp\"/>\n"
126
"      <arg type=\"s\" name=\"cbService\"/>\n"
127
"      <arg type=\"a{sv}\" name=\"cbMap\"/>\n"
67.2.2 by Tiago Salem Herrmann
fix dbus introspection
128
"    </signal>\n"
67.2.1 by Tiago Salem Herrmann
add initial ussd support
129
"    <signal name=\"ForwardingComplete\">\n"
130
"      <arg type=\"s\" name=\"ssOp\"/>\n"
131
"      <arg type=\"s\" name=\"cfService\"/>\n"
132
"      <arg type=\"a{sv}\" name=\"cfMap\"/>\n"
133
"    </signal>\n"
134
"    <signal name=\"WaitingComplete\">\n"
135
"      <arg type=\"s\" name=\"ssOp\"/>\n"
136
"      <arg type=\"a{sv}\" name=\"cwMap\"/>\n"
137
"    </signal>\n"
138
"    <signal name=\"CallingLinePresentationComplete\">\n"
139
"      <arg type=\"s\" name=\"ssOp\"/>\n"
140
"      <arg type=\"s\" name=\"status\"/>\n"
141
"    </signal>\n"
142
"    <signal name=\"ConnectedLinePresentationComplete\">\n"
143
"      <arg type=\"s\" name=\"ssOp\"/>\n"
144
"      <arg type=\"s\" name=\"status\"/>\n"
145
"    </signal>\n"
146
"    <signal name=\"CallingLineRestrictionComplete\">\n"
147
"      <arg type=\"s\" name=\"ssOp\"/>\n"
148
"      <arg type=\"s\" name=\"status\"/>\n"
149
"    </signal>\n"
150
"    <signal name=\"ConnectedLineRestrictionComplete\">\n"
151
"      <arg type=\"s\" name=\"ssOp\"/>\n"
152
"      <arg type=\"s\" name=\"status\"/>\n"
153
"    </signal>\n"
67.2.2 by Tiago Salem Herrmann
fix dbus introspection
154
"    <signal name=\"InitiateFailed\" />\n"
67.2.1 by Tiago Salem Herrmann
add initial ussd support
155
"    <signal name=\"StateChanged\">\n"
156
"      <arg type=\"s\" name=\"state\"/>\n"
157
"    </signal>\n"
158
"  </interface>\n"
159
"")
160
    Q_PROPERTY(QString State READ State)
67.2.7 by Tiago Salem Herrmann
add support for retrieving the IMEI
161
    Q_PROPERTY(QString Serial READ Serial)
67.2.1 by Tiago Salem Herrmann
add initial ussd support
162
163
public:
164
    ConnectionInterfaceUSSDAdaptor(const QDBusConnection& dbusConnection, QObject* adaptee, QObject* parent);
165
    virtual ~ConnectionInterfaceUSSDAdaptor();
166
167
    typedef Tp::MethodInvocationContextPtr< > InitiateContextPtr;
168
    typedef Tp::MethodInvocationContextPtr< > RespondContextPtr;
169
    typedef Tp::MethodInvocationContextPtr< > CancelContextPtr;
170
171
public Q_SLOTS: // METHODS
172
    void Initiate(const QString &command, const QDBusMessage& dbusMessage);
173
    void Respond(const QString &reply, const QDBusMessage& dbusMessage);
174
    void Cancel(const QDBusMessage& dbusMessage);
175
176
    QString State() const;
67.2.7 by Tiago Salem Herrmann
add support for retrieving the IMEI
177
    QString Serial() const;
67.2.1 by Tiago Salem Herrmann
add initial ussd support
178
179
Q_SIGNALS: // SIGNALS
180
    void NotificationReceived(const QString &message);
181
    void RequestReceived(const QString &message);
182
183
    void InitiateUSSDComplete(const QString &ussdResp);
67.2.3 by Tiago Salem Herrmann
add respondComplete() signal
184
    void RespondComplete(bool success, const QString &ussdResp);
67.2.1 by Tiago Salem Herrmann
add initial ussd support
185
    void BarringComplete(const QString &ssOp, const QString &cbService, const QVariantMap &cbMap);
186
    void ForwardingComplete(const QString &ssOp, const QString &cfService, const QVariantMap &cfMap);
187
    void WaitingComplete(const QString &ssOp, const QVariantMap &cwMap);
188
    void CallingLinePresentationComplete(const QString &ssOp, const QString &status);
189
    void ConnectedLinePresentationComplete(const QString &ssOp, const QString &status);
190
    void CallingLineRestrictionComplete(const QString &ssOp, const QString &status);
191
    void ConnectedLineRestrictionComplete(const QString &ssOp, const QString &status);
192
    void InitiateFailed();
193
194
    void StateChanged(const QString &state);
195
};
196
197
198
class TP_QT_NO_EXPORT BaseConnectionUSSDInterface::Adaptee : public QObject
199
{
200
    Q_OBJECT
201
    Q_PROPERTY(QString state READ state)
67.2.7 by Tiago Salem Herrmann
add support for retrieving the IMEI
202
    Q_PROPERTY(QString serial READ serial)
67.2.1 by Tiago Salem Herrmann
add initial ussd support
203
204
public:
205
    Adaptee(BaseConnectionUSSDInterface *interface);
206
    ~Adaptee();
207
    QString state() const
208
    {
209
        return mInterface->state();
210
    }
67.2.7 by Tiago Salem Herrmann
add support for retrieving the IMEI
211
    QString serial() const
212
    {
213
        return mInterface->serial();
214
    }
215
67.2.1 by Tiago Salem Herrmann
add initial ussd support
216
217
private Q_SLOTS:
218
    void initiate(const QString &command, const ConnectionInterfaceUSSDAdaptor::InitiateContextPtr &context);
219
    void respond(const QString &reply, const ConnectionInterfaceUSSDAdaptor::RespondContextPtr &context);
220
    void cancel(const ConnectionInterfaceUSSDAdaptor::CancelContextPtr &context);
221
222
Q_SIGNALS:
223
    void notificationReceived(const QString &message);
224
    void requestReceived(const QString &message);
225
226
    void initiateUSSDComplete(const QString &ussdResp);
227
    void barringComplete(const QString &ssOp, const QString &cbService, const QVariantMap &cbMap);
228
    void forwardingComplete(const QString &ssOp, const QString &cfService, const QVariantMap &cfMap);
229
    void waitingComplete(const QString &ssOp, const QVariantMap &cwMap);
230
    void callingLinePresentationComplete(const QString &ssOp, const QString &status);
231
    void connectedLinePresentationComplete(const QString &ssOp, const QString &status);
232
    void callingLineRestrictionComplete(const QString &ssOp, const QString &status);
233
    void connectedLineRestrictionComplete(const QString &ssOp, const QString &status);
234
    void initiateFailed();
67.2.3 by Tiago Salem Herrmann
add respondComplete() signal
235
    void respondComplete(bool success, const QString &response);
67.2.1 by Tiago Salem Herrmann
add initial ussd support
236
237
    void stateChanged(const QString &state);
238
239
public:
240
    BaseConnectionUSSDInterface *mInterface;
241
};
242
243
#endif