Lomiri
Loading...
Searching...
No Matches
AccountsService.h
1/*
2 * Copyright (C) 2013-2016 Canonical Ltd.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; version 3.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#ifndef LOMIRI_ACCOUNTSSERVICE_H
18#define LOMIRI_ACCOUNTSSERVICE_H
19
20#include <QHash>
21#include <QObject>
22#include <QString>
23#include <QStringList>
24#include <QVariant>
25
26class AccountsServiceDBusAdaptor;
27class QDBusInterface;
28
29class AccountsService: public QObject
30{
31 Q_OBJECT
32 Q_PROPERTY (QString user
33 READ user
34 WRITE setUser
35 NOTIFY userChanged)
36 Q_PROPERTY (bool demoEdges
37 READ demoEdges
38 WRITE setDemoEdges
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
56 READ 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
67 READ pincodeLength
68 NOTIFY pincodeLengthChanged)
69 Q_PROPERTY (uint failedLogins
70 READ failedLogins
71 WRITE setFailedLogins
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)
80
81public:
82 enum PasswordDisplayHint {
83 Keyboard,
84 Numeric,
85 };
86 Q_ENUM(PasswordDisplayHint)
87
88 explicit AccountsService(QObject *parent = 0, const QString & user = QString());
89 ~AccountsService() = default;
90
91 QString user() const;
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);
117
118Q_SIGNALS:
119 void userChanged();
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();
133 void emailChanged();
134 void keymapsChanged();
135 void pinCodePromptManagerChanged();
136
137private Q_SLOTS:
138 void onPropertiesChanged(const QString &user, const QString &interface, const QStringList &changed);
139 void onMaybeChanged(const QString &user);
140
141private:
142 typedef QVariant (*ProxyConverter)(const QVariant &);
143
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);
147
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);
151
152 void setProperty(const QString &interface, const QString &property, const QVariant &value);
153 QVariant getProperty(const QString &interface, const QString &property) const;
154
155 void emitChangedForProperty(const QString &interface, const QString &property);
156
157 struct PropertyInfo {
158 QVariant value{};
159 QString signal{};
160 QDBusInterface *proxyInterface{};
161 QString proxyMethod{};
162 ProxyConverter proxyConverter{};
163 };
164 typedef QHash< QString, QHash<QString, PropertyInfo> > PropertyHash;
165 QString m_defaultPinPromptManager;
166 PropertyHash m_properties;
167 AccountsServiceDBusAdaptor *m_service;
168 QDBusInterface *m_syscompInput;
169 QString m_user;
170};
171
172#endif