2
* This file is part of libOnlineAccounts
4
* Copyright (C) 2015 Canonical Ltd.
6
* Contact: Alberto Mardegan <alberto.mardegan@canonical.com>
8
* This program is free software: you can redistribute it and/or modify it
9
* under the terms of the GNU Lesser General Public License version 3, as
10
* published by the Free Software Foundation.
12
* This program is distributed in the hope that it will be useful, but
13
* WITHOUT ANY WARRANTY; without even the implied warranties of
14
* MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
15
* PURPOSE. See the GNU Lesser General Public License for more details.
17
* You should have received a copy of the GNU Lesser General Public License
18
* along with this program. If not, see <http://www.gnu.org/licenses/>.
21
#ifndef ONLINE_ACCOUNTS_ACCOUNT_INFO_H
22
#define ONLINE_ACCOUNTS_ACCOUNT_INFO_H
24
#include <QVariantMap>
26
#include "dbus_constants.h"
31
namespace OnlineAccounts {
40
AccountInfo(): accountId(0) {}
41
AccountInfo(AccountId accountId, const QVariantMap &details):
42
accountId(accountId), details(details) {}
44
AccountId id() const { return accountId; }
45
QString displayName() const {
46
return details.value(ONLINE_ACCOUNTS_INFO_KEY_DISPLAY_NAME).toString();
48
QString service() const {
49
return details.value(ONLINE_ACCOUNTS_INFO_KEY_SERVICE_ID).toString();
51
AuthenticationMethod authenticationMethod() const {
52
return AuthenticationMethod(details.value(ONLINE_ACCOUNTS_INFO_KEY_AUTH_METHOD).toInt());
54
ChangeType changeType() const {
55
switch (details.value(ONLINE_ACCOUNTS_INFO_KEY_CHANGE_TYPE).toUInt()) {
56
case ONLINE_ACCOUNTS_INFO_CHANGE_ENABLED: return Enabled;
57
case ONLINE_ACCOUNTS_INFO_CHANGE_DISABLED: return Disabled;
58
default: return Updated;
62
QVariant setting(const QString &key) const {
63
return details.value(ONLINE_ACCOUNTS_INFO_KEY_SETTINGS + key);
66
AccountInfo stripMetadata() const {
67
AccountInfo stripped = *this;
68
stripped.details.remove(ONLINE_ACCOUNTS_INFO_KEY_CHANGE_TYPE);
72
bool operator==(const AccountInfo &other) const {
73
return accountId == other.accountId && details == other.details;
76
bool operator!=(const AccountInfo &other) const {
77
return !(*this == other);
81
friend QDBusArgument &operator<<(QDBusArgument &, const AccountInfo &);
82
friend const QDBusArgument &operator>>(const QDBusArgument &, AccountInfo &);
87
QDBusArgument &operator<<(QDBusArgument &argument, const AccountInfo &info);
88
const QDBusArgument &operator>>(const QDBusArgument &argument, AccountInfo &info);
92
Q_DECLARE_METATYPE(OnlineAccounts::AccountInfo)
94
#endif // ONLINE_ACCOUNTS_ACCOUNT_INFO_H