19 #ifndef UNITY_ACCOUNTSSERVICEDBUSADAPTOR_H
20 #define UNITY_ACCOUNTSSERVICEDBUSADAPTOR_H
22 #include <QDBusArgument>
23 #include <QDBusContext>
24 #include <QDBusInterface>
25 #include <QDBusPendingReply>
30 class AccountsServiceDBusAdaptor:
public QObject,
public QDBusContext
35 explicit AccountsServiceDBusAdaptor(QObject *parent = 0);
36 ~AccountsServiceDBusAdaptor() =
default;
38 Q_INVOKABLE QVariant getUserProperty(
const QString &user,
const QString &interface,
const QString &property);
39 Q_INVOKABLE QDBusPendingReply<QVariant> getUserPropertyAsync(
const QString &user,
const QString &interface,
const QString &property);
42 inline T getUserProperty(
const QString &user,
const QString &interface,
const QString &property) {
43 const QVariant variant = getUserProperty(user, interface, property);
44 if (variant.isValid() && variant.canConvert<QDBusArgument>()) {
45 return qdbus_cast<T>(variant.value<QDBusArgument>());
50 Q_INVOKABLE
void setUserProperty(
const QString &user,
const QString &interface,
const QString &property,
const QVariant &value);
51 Q_INVOKABLE QDBusPendingCall setUserPropertyAsync(
const QString &user,
const QString &interface,
const QString &property,
const QVariant &value);
54 void propertiesChanged(
const QString &user,
const QString &interface,
const QStringList &changed);
55 void maybeChanged(
const QString &user);
58 void propertiesChangedSlot(
const QString &interface,
const QVariantMap &changed,
const QStringList &invalid);
59 void maybeChangedSlot();
62 QDBusInterface *getUserInterface(
const QString &user);
63 QString getUserForPath(
const QString &path);
65 QDBusInterface *m_accountsManager;
66 QMap<QString, QDBusInterface *> m_users;
68 bool m_ignoreNextChanged;