1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
/*
* This file is part of libOnlineAccounts
*
* Copyright (C) 2015 Canonical Ltd.
*
* Contact: Alberto Mardegan <alberto.mardegan@canonical.com>
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License version 3, as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranties of
* MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "dbus_interface.h"
#include <QDBusMetaType>
#include <QDebug>
#include <QVariantMap>
#include <climits>
using namespace OnlineAccounts;
DBusInterface::DBusInterface(const QString &service,
const QString &path,
const char *interface,
const QDBusConnection &connection,
QObject *parent):
QDBusAbstractInterface(service, path, interface, connection, parent)
{
setTimeout(INT_MAX);
qDBusRegisterMetaType<AccountInfo>();
qDBusRegisterMetaType<QList<AccountInfo>>();
qDBusRegisterMetaType<QList<QVariantMap>>();
bool ok = connect("AccountChanged", "s(ua{sv})",
this, SLOT(onAccountChanged(const QString&,const OnlineAccounts::AccountInfo&)));
if (Q_UNLIKELY(!ok)) {
qCritical() << "Connection to AccountChanged signal failed";
}
}
DBusInterface::~DBusInterface()
{
}
QDBusPendingCall DBusInterface::getAccounts(const QVariantMap &filters)
{
return asyncCall(QStringLiteral("GetAccounts"), filters);
}
QDBusPendingCall DBusInterface::authenticate(AccountId accountId,
const QString &service,
bool interactive,
bool invalidate,
const QVariantMap ¶meters)
{
return asyncCall(QStringLiteral("Authenticate"), accountId, service,
interactive, invalidate, parameters);
}
QDBusPendingCall DBusInterface::requestAccess(const QString &service,
const QVariantMap ¶meters)
{
return asyncCall(QStringLiteral("RequestAccess"), service, parameters);
}
void DBusInterface::onAccountChanged(const QString &service,
const AccountInfo &info)
{
Q_EMIT accountChanged(service, info);
}
bool DBusInterface::connect(const char *signal, const char *signature,
QObject *receiver, const char *slot)
{
return connection().connect(service(), path(), interface(),
QLatin1String(signal),
QLatin1String(signature),
receiver, slot);
}
|