17 #ifndef LOMIRI_ACCOUNTSSERVICE_H
18 #define LOMIRI_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(QString pinCodePromptManager READ pinCodePromptManager NOTIFY pinCodePromptManagerChanged)
62 Q_PROPERTY(QString defaultPinCodePromptManager READ defaultPinCodePromptManager CONSTANT)
63 Q_PROPERTY (uint pincodeLength
65 NOTIFY pincodeLengthChanged)
66 Q_PROPERTY (uint failedLogins
69 NOTIFY failedLoginsChanged)
70 Q_PROPERTY (uint failedFingerprintLogins
71 READ failedFingerprintLogins
72 WRITE setFailedFingerprintLogins
73 NOTIFY failedFingerprintLoginsChanged)
74 Q_PROPERTY(QString realName READ realName WRITE setRealName NOTIFY realNameChanged)
75 Q_PROPERTY(QString email READ email WRITE setEmail NOTIFY emailChanged)
76 Q_PROPERTY(QStringList keymaps READ keymaps WRITE setKeymaps NOTIFY keymapsChanged)
79 enum PasswordDisplayHint {
83 Q_ENUM(PasswordDisplayHint)
85 explicit AccountsService(QObject *parent = 0,
const QString & user = QString());
86 ~AccountsService() =
default;
89 void setUser(
const QString &user);
90 bool demoEdges()
const;
91 void setDemoEdges(
bool demoEdges);
92 QStringList demoEdgesCompleted()
const;
93 Q_INVOKABLE
void markDemoEdgeCompleted(
const QString &edge);
94 bool enableFingerprintIdentification()
const;
95 bool enableLauncherWhileLocked()
const;
96 bool enableIndicatorsWhileLocked()
const;
97 QString backgroundFile()
const;
98 bool statsWelcomeScreen()
const;
99 PasswordDisplayHint passwordDisplayHint()
const;
100 QString pinCodePromptManager()
const;
101 QString defaultPinCodePromptManager()
const;
102 uint pincodeLength()
const;
103 uint failedLogins()
const;
104 void setFailedLogins(uint failedLogins);
105 uint failedFingerprintLogins()
const;
106 void setFailedFingerprintLogins(uint failedFingerprintLogins);
107 QString realName()
const;
108 void setRealName(
const QString &realName);
109 QString email()
const;
110 void setEmail(
const QString &email);
111 QStringList keymaps()
const;
112 void setKeymaps(
const QStringList &keymaps);
116 void demoEdgesChanged();
117 void demoEdgesCompletedChanged();
118 void enableFingerprintIdentificationChanged();
119 void enableLauncherWhileLockedChanged();
120 void enableIndicatorsWhileLockedChanged();
121 void backgroundFileChanged();
122 void statsWelcomeScreenChanged();
123 void passwordDisplayHintChanged();
124 void pincodeLengthChanged();
125 void failedLoginsChanged();
126 void failedFingerprintLoginsChanged();
127 void realNameChanged();
129 void keymapsChanged();
130 void pinCodePromptManagerChanged();
133 void onPropertiesChanged(
const QString &user,
const QString &interface,
const QStringList &changed);
134 void onMaybeChanged(
const QString &user);
137 typedef QVariant (*ProxyConverter)(
const QVariant &);
139 void refresh(
bool async);
140 void registerProperty(
const QString &interface,
const QString &property,
const QString &signal);
141 void registerProxy(
const QString &interface,
const QString &property, QDBusInterface *iface,
const QString &method, ProxyConverter converter =
nullptr);
143 void updateAllProperties(
const QString &interface,
bool async);
144 void updateProperty(
const QString &interface,
const QString &property);
145 void updateCache(
const QString &interface,
const QString &property,
const QVariant &value);
147 void setProperty(
const QString &interface,
const QString &property,
const QVariant &value);
148 QVariant getProperty(
const QString &interface,
const QString &property)
const;
150 void emitChangedForProperty(
const QString &interface,
const QString &property);
152 struct PropertyInfo {
155 QDBusInterface *proxyInterface{};
156 QString proxyMethod{};
157 ProxyConverter proxyConverter{};
159 typedef QHash< QString, QHash<QString, PropertyInfo> > PropertyHash;
160 QString m_defaultPinPromptManager;
161 PropertyHash m_properties;
162 AccountsServiceDBusAdaptor *m_service;
163 QDBusInterface *m_syscompInput;