on xenial help sign in
Add edgeDemoForCurrentUser property to be more qml-like than edgeDemoForUser()
ba246d2Michael Terry
Greeter/GreeterEdgeDemo.qml+3−3
@@ -23,7 +23,7 @@ Item {
23
23
24 property Item greeter
24 property Item greeter
25
25
26− property bool active: true
26+ property bool active: false
27 property bool paused: false
27 property bool paused: false
28
28
29 onPausedChanged: {
29 onPausedChanged: {
@@ -35,7 +35,7 @@ Item {
35 }
35 }
36
36
37 function hideEdgeDemoInGreeter() {
37 function hideEdgeDemoInGreeter() {
38− AccountsService.setDemoEdgesForUser("lightdm", false);
38+ AccountsService.demoEdgesForCurrentUser = false;
39 d.showEdgeDemoInGreeter = false;
39 d.showEdgeDemoInGreeter = false;
40 stopDemo();
40 stopDemo();
41 }
41 }
@@ -54,7 +54,7 @@ Item {
54 id: d
54 id: d
55 property Component overlay
55 property Component overlay
56 property QtObject rightEdgeDemo
56 property QtObject rightEdgeDemo
57− property bool showEdgeDemoInGreeter: AccountsService.getDemoEdgesForUser("lightdm")
57+ property bool showEdgeDemoInGreeter: AccountsService.demoEdgesForCurrentUser
58
58
59 onShowEdgeDemoInGreeterChanged: {
59 onShowEdgeDemoInGreeterChanged: {
60 if (!d.overlay && d.showEdgeDemoInGreeter) {
60 if (!d.overlay && d.showEdgeDemoInGreeter) {
plugins/AccountsService/AccountsBindings.cpp+25−22
@@ -30,6 +30,8 @@ AccountsBindings::AccountsBindings(QObject* parent)
30 this, SLOT(propertiesChanged(const QString &, const QString &, const QStringList &)));
30 this, SLOT(propertiesChanged(const QString &, const QString &, const QStringList &)));
31 connect(m_service, SIGNAL(maybeChanged(const QString &)),
31 connect(m_service, SIGNAL(maybeChanged(const QString &)),
32 this, SLOT(maybeChanged(const QString &)));
32 this, SLOT(maybeChanged(const QString &)));
33+
34+ updateDemoEdgesForCurrentUser();
33}
35}
34
36
35void AccountsBindings::setUser(const QString &user)
37void AccountsBindings::setUser(const QString &user)
@@ -50,22 +52,15 @@ void AccountsBindings::setDemoEdges(bool demoEdges)
50 m_service->setUserProperty(m_user, "com.canonical.unity.AccountsService", "demo-edges", demoEdges);
52 m_service->setUserProperty(m_user, "com.canonical.unity.AccountsService", "demo-edges", demoEdges);
51}
53}
52
54
53−bool AccountsBindings::getDemoEdgesForUser(const QString &user)
55+bool AccountsBindings::getDemoEdgesForCurrentUser()
54{
56{
55− if (m_user == user) {
57+ return m_demoEdgesForCurrentUser;
56− return getDemoEdges();
57− } else {
58− return m_service->getUserProperty(user, "com.canonical.unity.AccountsService", "demo-edges").toBool();
59− }
60}
58}
61
59
62−void AccountsBindings::setDemoEdgesForUser(const QString &user, bool demoEdges)
60+void AccountsBindings::setDemoEdgesForCurrentUser(bool demoEdgesForCurrentUser)
63{
61{
64− if (m_user == user) {
62+ m_demoEdgesForCurrentUser = demoEdgesForCurrentUser;
65− setDemoEdges(demoEdges);
66− } else {
67− m_service->setUserProperty(user, "com.canonical.unity.AccountsService", "demo-edges", demoEdges);
63+ m_service->setUserProperty(qgetenv("USER"), "com.canonical.unity.AccountsService", "demo-edges", demoEdgesForCurrentUser);
68− }
69}
64}
70
65
71QString AccountsBindings::getBackgroundFile()
66QString AccountsBindings::getBackgroundFile()
@@ -82,6 +77,15 @@ void AccountsBindings::updateDemoEdges()
82 }
77 }
83}
78}
84
79
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+
85void AccountsBindings::updateBackgroundFile()
89void AccountsBindings::updateBackgroundFile()
86{
90{
87 auto backgroundFile = m_service->getUserProperty(m_user, "org.freedesktop.Accounts.User", "BackgroundFile").toString();
91 auto backgroundFile = m_service->getUserProperty(m_user, "org.freedesktop.Accounts.User", "BackgroundFile").toString();
@@ -93,23 +97,22 @@ void AccountsBindings::updateBackgroundFile()
93
97
94void AccountsBindings::propertiesChanged(const QString &user, const QString &interface, const QStringList &changed)
98void AccountsBindings::propertiesChanged(const QString &user, const QString &interface, const QStringList &changed)
95{
99{
96− if (m_user != user) {
97− return;
98− }
99−
100 if (interface == "com.canonical.unity.AccountsService") {
100 if (interface == "com.canonical.unity.AccountsService") {
101 if (changed.contains("demo-edges")) {
101 if (changed.contains("demo-edges")) {
102+ if (qgetenv("USER") == user) {
103+ updateDemoEdgesForCurrentUser();
104+ }
105+ if (m_user != user) {
102− updateDemoEdges();
106+ updateDemoEdges();
107+ }
103 }
108 }
104 }
109 }
105}
110}
106
111
107void AccountsBindings::maybeChanged(const QString &user)
112void AccountsBindings::maybeChanged(const QString &user)
108{
113{
109− if (m_user != user) {
114+ if (m_user == user) {
110− return;
115+ // Standard properties might have changed
116+ updateBackgroundFile();
111 }
117 }
112−
113− // Standard properties might have changed
114− updateBackgroundFile();
115}
118}
plugins/AccountsService/AccountsBindings.h+9−2
@@ -31,6 +31,10 @@ class AccountsBindings: public QObject
31 READ getDemoEdges
31 READ getDemoEdges
32 WRITE setDemoEdges
32 WRITE setDemoEdges
33 NOTIFY demoEdgesChanged)
33 NOTIFY demoEdgesChanged)
34+ Q_PROPERTY (bool demoEdgesForCurrentUser
35+ READ getDemoEdgesForCurrentUser
36+ WRITE setDemoEdgesForCurrentUser
37+ NOTIFY demoEdgesForCurrentUserChanged)
34 Q_PROPERTY (QString backgroundFile
38 Q_PROPERTY (QString backgroundFile
35 READ getBackgroundFile
39 READ getBackgroundFile
36 NOTIFY backgroundFileChanged)
40 NOTIFY backgroundFileChanged)
@@ -42,13 +46,14 @@ public:
42
46
43 bool getDemoEdges();
47 bool getDemoEdges();
44 void setDemoEdges(bool demoEdges);
48 void setDemoEdges(bool demoEdges);
45− Q_INVOKABLE bool getDemoEdgesForUser(const QString &user);
49+ bool getDemoEdgesForCurrentUser();
46− Q_INVOKABLE void setDemoEdgesForUser(const QString &user, bool demoEdges);
50+ void setDemoEdgesForCurrentUser(bool demoEdgesForCurrentUser);
47
51
48 QString getBackgroundFile();
52 QString getBackgroundFile();
49
53
50Q_SIGNALS:
54Q_SIGNALS:
51 void demoEdgesChanged();
55 void demoEdgesChanged();
56+ void demoEdgesForCurrentUserChanged();
52 void backgroundFileChanged();
57 void backgroundFileChanged();
53
58
54private Q_SLOTS:
59private Q_SLOTS:
@@ -57,11 +62,13 @@ private Q_SLOTS:
57
62
58private:
63private:
59 void updateDemoEdges();
64 void updateDemoEdges();
65+ void updateDemoEdgesForCurrentUser();
60 void updateBackgroundFile();
66 void updateBackgroundFile();
61
67
62 AccountsService *m_service;
68 AccountsService *m_service;
63 QString m_user;
69 QString m_user;
64 bool m_demoEdges;
70 bool m_demoEdges;
71+ bool m_demoEdgesForCurrentUser;
65 QString m_backgroundFile;
72 QString m_backgroundFile;
66};
73};
67
74
tests/mocks/AccountsService/AccountsBindings.cpp+9
@@ -36,6 +36,15 @@ void AccountsBindings::setDemoEdges(bool)
36{
36{
37}
37}
38
38
39+bool AccountsBindings::getDemoEdgesForCurrentUser()
40+{
41+ return false;
42+}
43+
44+void AccountsBindings::setDemoEdgesForCurrentUser(bool)
45+{
46+}
47+
39QString AccountsBindings::getBackgroundFile()
48QString AccountsBindings::getBackgroundFile()
40{
49{
41 return TOP_SRCDIR "/graphics/phone_background.jpg";
50 return TOP_SRCDIR "/graphics/phone_background.jpg";
tests/mocks/AccountsService/AccountsBindings.h+7
@@ -31,6 +31,10 @@ class AccountsBindings: public QObject
31 READ getDemoEdges
31 READ getDemoEdges
32 WRITE setDemoEdges
32 WRITE setDemoEdges
33 NOTIFY demoEdgesChanged)
33 NOTIFY demoEdgesChanged)
34+ Q_PROPERTY (bool demoEdgesForCurrentUser
35+ READ getDemoEdgesForCurrentUser
36+ WRITE setDemoEdgesForCurrentUser
37+ NOTIFY demoEdgesForCurrentUserChanged)
34 Q_PROPERTY (QString backgroundFile
38 Q_PROPERTY (QString backgroundFile
35 READ getBackgroundFile
39 READ getBackgroundFile
36 NOTIFY backgroundFileChanged)
40 NOTIFY backgroundFileChanged)
@@ -42,10 +46,13 @@ public:
42
46
43 bool getDemoEdges();
47 bool getDemoEdges();
44 void setDemoEdges(bool demoEdges);
48 void setDemoEdges(bool demoEdges);
49+ bool getDemoEdgesForCurrentUser();
50+ void setDemoEdgesForCurrentUser(bool demoEdgesForCurrentUser);
45 QString getBackgroundFile();
51 QString getBackgroundFile();
46
52
47Q_SIGNALS:
53Q_SIGNALS:
48 void demoEdgesChanged();
54 void demoEdgesChanged();
55+ void demoEdgesForCurrentUserChanged();
49 void backgroundFileChanged();
56 void backgroundFileChanged();
50};
57};
51
58