17#ifndef LOMIRI_ACCOUNTSSERVICE_H
18#define LOMIRI_ACCOUNTSSERVICE_H
26class AccountsServiceDBusAdaptor;
29class 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 hideNotificationContentWhileLocked
50 READ hideNotificationContentWhileLocked
51 NOTIFY hideNotificationContentWhileLockedChanged)
52 Q_PROPERTY (
bool enableIndicatorsWhileLocked
53 READ enableIndicatorsWhileLocked
54 NOTIFY enableIndicatorsWhileLockedChanged)
55 Q_PROPERTY (QString backgroundFile
57 NOTIFY backgroundFileChanged)
58 Q_PROPERTY (
bool statsWelcomeScreen
59 READ statsWelcomeScreen
60 NOTIFY statsWelcomeScreenChanged)
61 Q_PROPERTY (PasswordDisplayHint passwordDisplayHint
62 READ passwordDisplayHint
63 NOTIFY passwordDisplayHintChanged)
64 Q_PROPERTY(QString pinCodePromptManager READ pinCodePromptManager NOTIFY pinCodePromptManagerChanged)
65 Q_PROPERTY(QString defaultPinCodePromptManager READ defaultPinCodePromptManager CONSTANT)
66 Q_PROPERTY (uint pincodeLength
68 NOTIFY pincodeLengthChanged)
69 Q_PROPERTY (uint failedLogins
72 NOTIFY failedLoginsChanged)
73 Q_PROPERTY (uint failedFingerprintLogins
74 READ failedFingerprintLogins
75 WRITE setFailedFingerprintLogins
76 NOTIFY failedFingerprintLoginsChanged)
77 Q_PROPERTY(QString realName READ realName WRITE setRealName NOTIFY realNameChanged)
78 Q_PROPERTY(QString email READ email WRITE setEmail NOTIFY emailChanged)
79 Q_PROPERTY(QStringList keymaps READ keymaps WRITE setKeymaps NOTIFY keymapsChanged)
82 enum PasswordDisplayHint {
86 Q_ENUM(PasswordDisplayHint)
88 explicit AccountsService(QObject *parent = 0,
const QString & user = QString());
89 ~AccountsService() =
default;
92 void setUser(
const QString &user);
93 bool demoEdges()
const;
94 void setDemoEdges(
bool demoEdges);
95 QStringList demoEdgesCompleted()
const;
96 Q_INVOKABLE
void markDemoEdgeCompleted(
const QString &edge);
97 bool enableFingerprintIdentification()
const;
98 bool enableLauncherWhileLocked()
const;
99 bool enableIndicatorsWhileLocked()
const;
100 bool hideNotificationContentWhileLocked()
const;
101 QString backgroundFile()
const;
102 bool statsWelcomeScreen()
const;
103 PasswordDisplayHint passwordDisplayHint()
const;
104 QString pinCodePromptManager()
const;
105 QString defaultPinCodePromptManager()
const;
106 uint pincodeLength()
const;
107 uint failedLogins()
const;
108 void setFailedLogins(uint failedLogins);
109 uint failedFingerprintLogins()
const;
110 void setFailedFingerprintLogins(uint failedFingerprintLogins);
111 QString realName()
const;
112 void setRealName(
const QString &realName);
113 QString email()
const;
114 void setEmail(
const QString &email);
115 QStringList keymaps()
const;
116 void setKeymaps(
const QStringList &keymaps);
120 void demoEdgesChanged();
121 void demoEdgesCompletedChanged();
122 void enableFingerprintIdentificationChanged();
123 void enableLauncherWhileLockedChanged();
124 void enableIndicatorsWhileLockedChanged();
125 void hideNotificationContentWhileLockedChanged();
126 void backgroundFileChanged();
127 void statsWelcomeScreenChanged();
128 void passwordDisplayHintChanged();
129 void pincodeLengthChanged();
130 void failedLoginsChanged();
131 void failedFingerprintLoginsChanged();
132 void realNameChanged();
134 void keymapsChanged();
135 void pinCodePromptManagerChanged();
138 void onPropertiesChanged(
const QString &user,
const QString &interface,
const QStringList &changed);
139 void onMaybeChanged(
const QString &user);
142 typedef QVariant (*ProxyConverter)(
const QVariant &);
144 void refresh(
bool async);
145 void registerProperty(
const QString &interface,
const QString &property,
const QString &signal);
146 void registerProxy(
const QString &interface,
const QString &property, QDBusInterface *iface,
const QString &method, ProxyConverter converter =
nullptr);
148 void updateAllProperties(
const QString &interface,
bool async);
149 void updateProperty(
const QString &interface,
const QString &property);
150 void updateCache(
const QString &interface,
const QString &property,
const QVariant &value);
152 void setProperty(
const QString &interface,
const QString &property,
const QVariant &value);
153 QVariant getProperty(
const QString &interface,
const QString &property)
const;
155 void emitChangedForProperty(
const QString &interface,
const QString &property);
157 struct PropertyInfo {
160 QDBusInterface *proxyInterface{};
161 QString proxyMethod{};
162 ProxyConverter proxyConverter{};
164 typedef QHash< QString, QHash<QString, PropertyInfo> > PropertyHash;
165 QString m_defaultPinPromptManager;
166 PropertyHash m_properties;
167 AccountsServiceDBusAdaptor *m_service;
168 QDBusInterface *m_syscompInput;