17 #ifndef UNITY_ACCOUNTSSERVICE_H 18 #define UNITY_ACCOUNTSSERVICE_H 23 #include <QStringList> 26 class AccountsServiceDBusAdaptor;
29 class AccountsService:
public QObject
32 Q_PROPERTY (QString user
36 Q_PROPERTY (
bool demoEdges
39 NOTIFY demoEdgesChanged)
40 Q_PROPERTY (QStringList demoEdgesCompleted
41 READ demoEdgesCompleted
42 NOTIFY demoEdgesCompletedChanged)
43 Q_PROPERTY (
bool enableFingerprintIdentification
44 READ enableFingerprintIdentification
45 NOTIFY enableFingerprintIdentificationChanged)
46 Q_PROPERTY (
bool enableLauncherWhileLocked
47 READ enableLauncherWhileLocked
48 NOTIFY enableLauncherWhileLockedChanged)
49 Q_PROPERTY (
bool enableIndicatorsWhileLocked
50 READ enableIndicatorsWhileLocked
51 NOTIFY enableIndicatorsWhileLockedChanged)
52 Q_PROPERTY (QString backgroundFile
54 NOTIFY backgroundFileChanged)
55 Q_PROPERTY (
bool statsWelcomeScreen
56 READ statsWelcomeScreen
57 NOTIFY statsWelcomeScreenChanged)
58 Q_PROPERTY (PasswordDisplayHint passwordDisplayHint
59 READ passwordDisplayHint
60 NOTIFY passwordDisplayHintChanged)
61 Q_PROPERTY (uint failedLogins
64 NOTIFY failedLoginsChanged)
65 Q_PROPERTY (uint failedFingerprintLogins
66 READ failedFingerprintLogins
67 WRITE setFailedFingerprintLogins
68 NOTIFY failedFingerprintLoginsChanged)
69 Q_PROPERTY(QString realName READ realName WRITE setRealName NOTIFY realNameChanged)
70 Q_PROPERTY(QString email READ email WRITE setEmail NOTIFY emailChanged)
71 Q_PROPERTY(QStringList keymaps READ keymaps WRITE setKeymaps NOTIFY keymapsChanged)
74 enum PasswordDisplayHint {
78 Q_ENUM(PasswordDisplayHint)
80 explicit AccountsService(QObject *parent = 0, const QString & user = QString());
81 ~AccountsService() = default;
84 void setUser(const QString &user);
85 bool demoEdges() const;
86 void setDemoEdges(
bool demoEdges);
87 QStringList demoEdgesCompleted() const;
88 Q_INVOKABLE
void markDemoEdgeCompleted(const QString &edge);
89 bool enableFingerprintIdentification() const;
90 bool enableLauncherWhileLocked() const;
91 bool enableIndicatorsWhileLocked() const;
92 QString backgroundFile() const;
93 bool statsWelcomeScreen() const;
94 PasswordDisplayHint passwordDisplayHint() const;
95 uint failedLogins() const;
96 void setFailedLogins(uint failedLogins);
97 uint failedFingerprintLogins() const;
98 void setFailedFingerprintLogins(uint failedFingerprintLogins);
99 QString realName() const;
100 void setRealName(const QString &realName);
101 QString email() const;
102 void setEmail(const QString &email);
103 QStringList keymaps() const;
104 void setKeymaps(const QStringList &keymaps);
108 void demoEdgesChanged();
109 void demoEdgesCompletedChanged();
110 void enableFingerprintIdentificationChanged();
111 void enableLauncherWhileLockedChanged();
112 void enableIndicatorsWhileLockedChanged();
113 void backgroundFileChanged();
114 void statsWelcomeScreenChanged();
115 void passwordDisplayHintChanged();
116 void failedLoginsChanged();
117 void failedFingerprintLoginsChanged();
118 void realNameChanged();
120 void keymapsChanged();
123 void onPropertiesChanged(const QString &user, const QString &interface, const QStringList &changed);
124 void onMaybeChanged(const QString &user);
127 typedef QVariant (*ProxyConverter)(const QVariant &);
129 void refresh(
bool async);
130 void registerProperty(const QString &interface, const QString &property, const QString &signal);
131 void registerProxy(const QString &interface, const QString &property, QDBusInterface *iface, const QString &method, ProxyConverter converter =
nullptr);
133 void updateAllProperties(const QString &interface,
bool async);
134 void updateProperty(const QString &interface, const QString &property);
135 void updateCache(const QString &interface, const QString &property, const QVariant &value);
137 void setProperty(const QString &interface, const QString &property, const QVariant &value);
138 QVariant getProperty(const QString &interface, const QString &property) const;
140 void emitChangedForProperty(const QString &interface, const QString &property);
142 struct PropertyInfo {
145 QDBusInterface *proxyInterface{};
146 QString proxyMethod{};
147 ProxyConverter proxyConverter{};
149 typedef QHash< QString, QHash<QString, PropertyInfo> > PropertyHash;
150 PropertyHash m_properties;
151 AccountsServiceDBusAdaptor *m_service;
152 QDBusInterface *m_unityInput;