19 #include "AccountsService.h"
20 #include "AccountsServiceDBusAdaptor.h"
22 #include <QStringList>
24 AccountsService::AccountsService(QObject* parent)
26 m_service(new AccountsServiceDBusAdaptor(this)),
27 m_user(qgetenv(
"USER")),
29 m_enableLauncherWhileLocked(false),
30 m_enableIndicatorsWhileLocked(false),
31 m_statsWelcomeScreen(false),
32 m_passwordDisplayHint(Keyboard),
35 connect(m_service, SIGNAL(propertiesChanged(
const QString &,
const QString &,
const QStringList &)),
36 this, SLOT(propertiesChanged(
const QString &,
const QString &,
const QStringList &)));
37 connect(m_service, SIGNAL(maybeChanged(
const QString &)),
38 this, SLOT(maybeChanged(
const QString &)));
41 QString AccountsService::user()
const
46 void AccountsService::setUser(
const QString &user)
52 updateEnableLauncherWhileLocked();
53 updateEnableIndicatorsWhileLocked();
54 updateBackgroundFile();
55 updateStatsWelcomeScreen();
56 updatePasswordDisplayHint();
60 bool AccountsService::demoEdges()
const
65 void AccountsService::setDemoEdges(
bool demoEdges)
67 m_demoEdges = demoEdges;
68 m_service->setUserProperty(m_user,
"com.canonical.unity.AccountsService",
"demo-edges", demoEdges);
71 bool AccountsService::enableLauncherWhileLocked()
const
73 return m_enableLauncherWhileLocked;
76 bool AccountsService::enableIndicatorsWhileLocked()
const
78 return m_enableIndicatorsWhileLocked;
81 QString AccountsService::backgroundFile()
const
83 return m_backgroundFile;
86 bool AccountsService::statsWelcomeScreen()
const
88 return m_statsWelcomeScreen;
91 AccountsService::PasswordDisplayHint AccountsService::passwordDisplayHint()
const
93 return m_passwordDisplayHint;
96 void AccountsService::updateDemoEdges()
98 auto demoEdges = m_service->getUserProperty(m_user,
"com.canonical.unity.AccountsService",
"demo-edges").toBool();
99 if (m_demoEdges != demoEdges) {
100 m_demoEdges = demoEdges;
101 Q_EMIT demoEdgesChanged();
105 void AccountsService::updateEnableLauncherWhileLocked()
107 auto enableLauncherWhileLocked = m_service->getUserProperty(m_user,
"com.ubuntu.AccountsService.SecurityPrivacy",
"EnableLauncherWhileLocked").toBool();
108 if (m_enableLauncherWhileLocked != enableLauncherWhileLocked) {
109 m_enableLauncherWhileLocked = enableLauncherWhileLocked;
110 Q_EMIT enableLauncherWhileLockedChanged();
114 void AccountsService::updateEnableIndicatorsWhileLocked()
116 auto enableIndicatorsWhileLocked = m_service->getUserProperty(m_user,
"com.ubuntu.AccountsService.SecurityPrivacy",
"EnableIndicatorsWhileLocked").toBool();
117 if (m_enableIndicatorsWhileLocked != enableIndicatorsWhileLocked) {
118 m_enableIndicatorsWhileLocked = enableIndicatorsWhileLocked;
119 Q_EMIT enableIndicatorsWhileLockedChanged();
123 void AccountsService::updateBackgroundFile()
125 auto backgroundFile = m_service->getUserProperty(m_user,
"org.freedesktop.Accounts.User",
"BackgroundFile").toString();
126 if (m_backgroundFile != backgroundFile) {
127 m_backgroundFile = backgroundFile;
128 Q_EMIT backgroundFileChanged();
132 void AccountsService::updateStatsWelcomeScreen()
134 bool statsWelcomeScreen = m_service->getUserProperty(m_user,
"com.ubuntu.touch.AccountsService.SecurityPrivacy",
"StatsWelcomeScreen").toBool();
135 if (m_statsWelcomeScreen != statsWelcomeScreen) {
136 m_statsWelcomeScreen = statsWelcomeScreen;
137 Q_EMIT statsWelcomeScreenChanged();
141 void AccountsService::updatePasswordDisplayHint()
143 PasswordDisplayHint passwordDisplayHint = (PasswordDisplayHint)m_service->getUserProperty(m_user,
"com.ubuntu.AccountsService.SecurityPrivacy",
"PasswordDisplayHint").toInt();
144 if (m_passwordDisplayHint != passwordDisplayHint) {
145 m_passwordDisplayHint = passwordDisplayHint;
146 Q_EMIT passwordDisplayHintChanged();
150 void AccountsService::updateFailedLogins()
152 uint failedLogins = m_service->getUserProperty(m_user,
"com.canonical.unity.AccountsService.Private",
"FailedLogins").toUInt();
153 if (m_failedLogins != failedLogins) {
154 m_failedLogins = failedLogins;
155 Q_EMIT failedLoginsChanged();
159 uint AccountsService::failedLogins()
const
161 return m_failedLogins;
164 void AccountsService::setFailedLogins(uint failedLogins)
166 m_failedLogins = failedLogins;
167 m_service->setUserProperty(m_user,
"com.canonical.unity.AccountsService.Private",
"FailedLogins", failedLogins);
170 void AccountsService::propertiesChanged(
const QString &user,
const QString &interface,
const QStringList &changed)
172 if (m_user != user) {
176 if (interface ==
"com.canonical.unity.AccountsService") {
177 if (changed.contains(
"demo-edges")) {
180 }
else if (interface ==
"com.canonical.unity.AccountsService.Private") {
181 if (changed.contains(
"FailedLogins")) {
182 updateFailedLogins();
184 }
else if (interface ==
"com.ubuntu.touch.AccountsService.SecurityPrivacy") {
185 if (changed.contains(
"StatsWelcomeScreen")) {
186 updateStatsWelcomeScreen();
188 }
else if (interface ==
"com.ubuntu.AccountsService.SecurityPrivacy") {
189 if (changed.contains(
"PasswordDisplayHint")) {
190 updatePasswordDisplayHint();
192 if (changed.contains(
"EnableLauncherWhileLocked")) {
193 updateEnableLauncherWhileLocked();
195 if (changed.contains(
"EnableIndicatorsWhileLocked")) {
196 updateEnableIndicatorsWhileLocked();
201 void AccountsService::maybeChanged(
const QString &user)
203 if (m_user != user) {
208 updateBackgroundFile();