@@ -30,6 +30,8 @@ AccountsBindings::AccountsBindings(QObject* parent)
3030 this, SLOT(propertiesChanged(const QString &, const QString &, const QStringList &)));
3131 connect(m_service, SIGNAL(maybeChanged(const QString &)),
3232 this, SLOT(maybeChanged(const QString &)));
33+
34+ updateDemoEdgesForCurrentUser();
3335}
3436
3537void AccountsBindings::setUser(const QString &user)
@@ -50,22 +52,15 @@ void AccountsBindings::setDemoEdges(bool demoEdges)
5052 m_service->setUserProperty(m_user, "com.canonical.unity.AccountsService", "demo-edges", demoEdges);
5153}
5254
53−bool AccountsBindings::getDemoEdgesForUser(const QString &user)
55+bool AccountsBindings::getDemoEdgesForCurrentUser()
5456{
55− if (m_user == user) {
56− return getDemoEdges();
57− } else {
58− return m_service->getUserProperty(user, "com.canonical.unity.AccountsService", "demo-edges").toBool();
59− }
57+ return m_demoEdgesForCurrentUser;
6058}
6159
62−void AccountsBindings::setDemoEdgesForUser(const QString &user, bool demoEdges)
60+void AccountsBindings::setDemoEdgesForCurrentUser(bool demoEdgesForCurrentUser)
6361{
64− if (m_user == user) {
65− setDemoEdges(demoEdges);
66− } else {
67− m_service->setUserProperty(user, "com.canonical.unity.AccountsService", "demo-edges", demoEdges);
68− }
62+ m_demoEdgesForCurrentUser = demoEdgesForCurrentUser;
63+ m_service->setUserProperty(qgetenv("USER"), "com.canonical.unity.AccountsService", "demo-edges", demoEdgesForCurrentUser);
6964}
7065
7166QString AccountsBindings::getBackgroundFile()
@@ -82,6 +77,15 @@ void AccountsBindings::updateDemoEdges()
8277 }
8378}
8479
80+void AccountsBindings::updateDemoEdgesForCurrentUser()
81+{
82+ auto demoEdgesForCurrentUser = m_service->getUserProperty(qgetenv("USER"), "com.canonical.unity.AccountsService", "demo-edges").toBool();
83+ if (m_demoEdgesForCurrentUser != demoEdgesForCurrentUser) {
84+ m_demoEdgesForCurrentUser = demoEdgesForCurrentUser;
85+ Q_EMIT demoEdgesForCurrentUserChanged();
86+ }
87+}
88+
8589void AccountsBindings::updateBackgroundFile()
8690{
8791 auto backgroundFile = m_service->getUserProperty(m_user, "org.freedesktop.Accounts.User", "BackgroundFile").toString();
@@ -93,23 +97,22 @@ void AccountsBindings::updateBackgroundFile()
9397
9498void AccountsBindings::propertiesChanged(const QString &user, const QString &interface, const QStringList &changed)
9599{
96− if (m_user != user) {
97− return;
98− }
99−
100100 if (interface == "com.canonical.unity.AccountsService") {
101101 if (changed.contains("demo-edges")) {
102− updateDemoEdges();
102+ if (qgetenv("USER") == user) {
103+ updateDemoEdgesForCurrentUser();
104+ }
105+ if (m_user != user) {
106+ updateDemoEdges();
107+ }
103108 }
104109 }
105110}
106111
107112void AccountsBindings::maybeChanged(const QString &user)
108113{
109− if (m_user != user) {
110− return;
114+ if (m_user == user) {
115+ // Standard properties might have changed
116+ updateBackgroundFile();
111117 }
112−
113− // Standard properties might have changed
114− updateBackgroundFile();
115118}