17 #ifndef UNITY_ACCOUNTSSERVICE_H 18 #define UNITY_ACCOUNTSSERVICE_H 23 #include <QStringList> 26 class AccountsServiceDBusAdaptor;
29 class AccountsService:
public QObject
32 Q_ENUMS(PasswordDisplayHint)
33 Q_PROPERTY (QString user
37 Q_PROPERTY (
bool demoEdges
40 NOTIFY demoEdgesChanged)
41 Q_PROPERTY (QStringList demoEdgesCompleted
42 READ demoEdgesCompleted
43 NOTIFY demoEdgesCompletedChanged)
44 Q_PROPERTY (
bool enableFingerprintIdentification
45 READ enableFingerprintIdentification
46 NOTIFY enableFingerprintIdentificationChanged)
47 Q_PROPERTY (
bool enableLauncherWhileLocked
48 READ enableLauncherWhileLocked
49 NOTIFY enableLauncherWhileLockedChanged)
50 Q_PROPERTY (
bool enableIndicatorsWhileLocked
51 READ enableIndicatorsWhileLocked
52 NOTIFY enableIndicatorsWhileLockedChanged)
53 Q_PROPERTY (QString backgroundFile
55 NOTIFY backgroundFileChanged)
56 Q_PROPERTY (
bool statsWelcomeScreen
57 READ statsWelcomeScreen
58 NOTIFY statsWelcomeScreenChanged)
59 Q_PROPERTY (PasswordDisplayHint passwordDisplayHint
60 READ passwordDisplayHint
61 NOTIFY passwordDisplayHintChanged)
62 Q_PROPERTY (uint failedLogins
65 NOTIFY failedLoginsChanged)
66 Q_PROPERTY (uint failedFingerprintLogins
67 READ failedFingerprintLogins
68 WRITE setFailedFingerprintLogins
69 NOTIFY failedFingerprintLoginsChanged)
70 Q_PROPERTY(
bool hereEnabled
73 NOTIFY hereEnabledChanged)
74 Q_PROPERTY(QString hereLicensePath
76 NOTIFY hereLicensePathChanged)
77 Q_PROPERTY(
bool hereLicensePathValid
78 READ hereLicensePathValid
79 NOTIFY hereLicensePathChanged)
80 Q_PROPERTY(QString realName READ realName WRITE setRealName NOTIFY realNameChanged)
81 Q_PROPERTY(QString email READ email WRITE setEmail NOTIFY emailChanged)
82 Q_PROPERTY(QStringList keymaps READ keymaps WRITE setKeymaps NOTIFY keymapsChanged)
85 enum PasswordDisplayHint {
90 explicit AccountsService(QObject *parent = 0,
const QString & user = QString());
91 ~AccountsService() =
default;
94 void setUser(
const QString &user);
95 bool demoEdges()
const;
96 void setDemoEdges(
bool demoEdges);
97 QStringList demoEdgesCompleted()
const;
98 Q_INVOKABLE
void markDemoEdgeCompleted(
const QString &edge);
99 bool enableFingerprintIdentification()
const;
100 bool enableLauncherWhileLocked()
const;
101 bool enableIndicatorsWhileLocked()
const;
102 QString backgroundFile()
const;
103 bool statsWelcomeScreen()
const;
104 PasswordDisplayHint passwordDisplayHint()
const;
105 uint failedLogins()
const;
106 void setFailedLogins(uint failedLogins);
107 uint failedFingerprintLogins()
const;
108 void setFailedFingerprintLogins(uint failedFingerprintLogins);
109 bool hereEnabled()
const;
110 void setHereEnabled(
bool enabled);
111 QString hereLicensePath()
const;
112 bool hereLicensePathValid()
const;
113 QString realName()
const;
114 void setRealName(
const QString &realName);
115 QString email()
const;
116 void setEmail(
const QString &email);
117 QStringList keymaps()
const;
118 void setKeymaps(
const QStringList &keymaps);
122 void demoEdgesChanged();
123 void demoEdgesCompletedChanged();
124 void enableFingerprintIdentificationChanged();
125 void enableLauncherWhileLockedChanged();
126 void enableIndicatorsWhileLockedChanged();
127 void backgroundFileChanged();
128 void statsWelcomeScreenChanged();
129 void passwordDisplayHintChanged();
130 void failedLoginsChanged();
131 void failedFingerprintLoginsChanged();
132 void hereEnabledChanged();
133 void hereLicensePathChanged();
134 void realNameChanged();
136 void keymapsChanged();
139 void onPropertiesChanged(
const QString &user,
const QString &interface,
const QStringList &changed);
140 void onMaybeChanged(
const QString &user);
143 typedef QVariant (*ProxyConverter)(
const QVariant &);
145 void refresh(
bool async);
146 void registerProperty(
const QString &interface,
const QString &property,
const QString &signal);
147 void registerProxy(
const QString &interface,
const QString &property, QDBusInterface *iface,
const QString &method, ProxyConverter converter =
nullptr);
149 void updateAllProperties(
const QString &interface,
bool async);
150 void updateProperty(
const QString &interface,
const QString &property);
151 void updateCache(
const QString &interface,
const QString &property,
const QVariant &value);
153 void setProperty(
const QString &interface,
const QString &property,
const QVariant &value);
154 QVariant getProperty(
const QString &interface,
const QString &property)
const;
156 void emitChangedForProperty(
const QString &interface,
const QString &property);
158 struct PropertyInfo {
161 QDBusInterface *proxyInterface{};
162 QString proxyMethod{};
163 ProxyConverter proxyConverter{};
165 typedef QHash< QString, QHash<QString, PropertyInfo> > PropertyHash;
166 PropertyHash m_properties;
167 AccountsServiceDBusAdaptor *m_service;
168 QDBusInterface *m_unityInput;