on xenial help sign in
Add edgeDemoForCurrentUser property to be more qml-like than edgeDemoForUser()
commitba246d2161d69c6a51cfe39bebc9ecdf68e1b083 authorMichael Terry <michael.terry@canonical.com> dateSat 31 Aug 2013, 10:15 (13 years ago) parent5a1e855
5 files changed+53−27
Greeter/GreeterEdgeDemo.qml+3−3 plugins/AccountsService/AccountsBindings.cpp+25−22 plugins/AccountsService/AccountsBindings.h+9−2 tests/mocks/AccountsService/AccountsBindings.cpp+9 tests/mocks/AccountsService/AccountsBindings.h+7
Greeter/GreeterEdgeDemo.qml+3−3
@@ -23,7 +23,7 @@ Item {
2323
2424 property Item greeter
2525
26− property bool active: true
26+ property bool active: false
2727 property bool paused: false
2828
2929 onPausedChanged: {
@@ -35,7 +35,7 @@ Item {
3535 }
3636
3737 function hideEdgeDemoInGreeter() {
38− AccountsService.setDemoEdgesForUser("lightdm", false);
38+ AccountsService.demoEdgesForCurrentUser = false;
3939 d.showEdgeDemoInGreeter = false;
4040 stopDemo();
4141 }
@@ -54,7 +54,7 @@ Item {
5454 id: d
5555 property Component overlay
5656 property QtObject rightEdgeDemo
57− property bool showEdgeDemoInGreeter: AccountsService.getDemoEdgesForUser("lightdm")
57+ property bool showEdgeDemoInGreeter: AccountsService.demoEdgesForCurrentUser
5858
5959 onShowEdgeDemoInGreeterChanged: {
6060 if (!d.overlay && d.showEdgeDemoInGreeter) {
plugins/AccountsService/AccountsBindings.cpp+25−22
@@ -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}
plugins/AccountsService/AccountsBindings.h+9−2
@@ -31,6 +31,10 @@ class AccountsBindings: public QObject
3131 READ getDemoEdges
3232 WRITE setDemoEdges
3333 NOTIFY demoEdgesChanged)
34+ Q_PROPERTY (bool demoEdgesForCurrentUser
35+ READ getDemoEdgesForCurrentUser
36+ WRITE setDemoEdgesForCurrentUser
37+ NOTIFY demoEdgesForCurrentUserChanged)
3438 Q_PROPERTY (QString backgroundFile
3539 READ getBackgroundFile
3640 NOTIFY backgroundFileChanged)
@@ -42,13 +46,14 @@ public:
4246
4347 bool getDemoEdges();
4448 void setDemoEdges(bool demoEdges);
45− Q_INVOKABLE bool getDemoEdgesForUser(const QString &user);
46− Q_INVOKABLE void setDemoEdgesForUser(const QString &user, bool demoEdges);
49+ bool getDemoEdgesForCurrentUser();
50+ void setDemoEdgesForCurrentUser(bool demoEdgesForCurrentUser);
4751
4852 QString getBackgroundFile();
4953
5054Q_SIGNALS:
5155 void demoEdgesChanged();
56+ void demoEdgesForCurrentUserChanged();
5257 void backgroundFileChanged();
5358
5459private Q_SLOTS:
@@ -57,11 +62,13 @@ private Q_SLOTS:
5762
5863private:
5964 void updateDemoEdges();
65+ void updateDemoEdgesForCurrentUser();
6066 void updateBackgroundFile();
6167
6268 AccountsService *m_service;
6369 QString m_user;
6470 bool m_demoEdges;
71+ bool m_demoEdgesForCurrentUser;
6572 QString m_backgroundFile;
6673};
6774
tests/mocks/AccountsService/AccountsBindings.cpp+9
@@ -36,6 +36,15 @@ void AccountsBindings::setDemoEdges(bool)
3636{
3737}
3838
39+bool AccountsBindings::getDemoEdgesForCurrentUser()
40+{
41+ return false;
42+}
43+
44+void AccountsBindings::setDemoEdgesForCurrentUser(bool)
45+{
46+}
47+
3948QString AccountsBindings::getBackgroundFile()
4049{
4150 return TOP_SRCDIR "/graphics/phone_background.jpg";
tests/mocks/AccountsService/AccountsBindings.h+7
@@ -31,6 +31,10 @@ class AccountsBindings: public QObject
3131 READ getDemoEdges
3232 WRITE setDemoEdges
3333 NOTIFY demoEdgesChanged)
34+ Q_PROPERTY (bool demoEdgesForCurrentUser
35+ READ getDemoEdgesForCurrentUser
36+ WRITE setDemoEdgesForCurrentUser
37+ NOTIFY demoEdgesForCurrentUserChanged)
3438 Q_PROPERTY (QString backgroundFile
3539 READ getBackgroundFile
3640 NOTIFY backgroundFileChanged)
@@ -42,10 +46,13 @@ public:
4246
4347 bool getDemoEdges();
4448 void setDemoEdges(bool demoEdges);
49+ bool getDemoEdgesForCurrentUser();
50+ void setDemoEdgesForCurrentUser(bool demoEdgesForCurrentUser);
4551 QString getBackgroundFile();
4652
4753Q_SIGNALS:
4854 void demoEdgesChanged();
55+ void demoEdgesForCurrentUserChanged();
4956 void backgroundFileChanged();
5057};
5158