on xenial help sign in
Pay attention to StatsWelcomeScreen setting and disable infographic on greeter if requested
commite6dbf005b40b86308fd62c8277dcb1db76497be1 authorMichael Terry <michael.terry@canonical.com> dateThu 5 Sep 2013, 13:24 (13 years ago) parent3500762
9 files changed+90−11
Greeter/GreeterContent.qml+9−4 Greeter/Infographics.qml+8−1 plugins/AccountsService/AccountsBindings.cpp+19 plugins/AccountsService/AccountsBindings.h+7 tests/mocks/AccountsService/AccountsBindings.cpp+13−1 tests/mocks/AccountsService/AccountsBindings.h+10 tests/mocks/libusermetrics/UserMetrics.cpp+5−1 tests/qmltests/Greeter/tst_Infographics.qml+4−4 tests/qmltests/Greeter/tst_Phone.qml+15
Greeter/GreeterContent.qml+9−4
@@ -134,18 +134,23 @@ MouseArea {
134134
135135 Infographics {
136136 id: infographics
137+ objectName: "infographics"
137138 height: narrowMode ? parent.height : 0.75 * parent.height
138139 model: greeterContentLoader.infographicModel
139140
140− Component.onCompleted: infographics.updateUsername(greeterContentLoader.currentIndex)
141+ property string selectedUser
142+ property string infographicUser: AccountsService.statsWelcomeScreen ? selectedUser : ""
143+ onInfographicUserChanged: updateUsername()
144+
145+ Component.onCompleted: selectedUser = greeterContentLoader.model.data(greeterContentLoader.currentIndex, LightDM.UserRoles.NameRole)
141146
142147 Connections {
143148 target: root
144− onSelected: infographics.updateUsername(uid)
149+ onSelected: infographics.selectedUser = greeterContentLoader.model.data(uid, LightDM.UserRoles.NameRole)
145150 }
146151
147− function updateUsername(uid) {
148− greeterContentLoader.infographicModel.username = greeterContentLoader.model.data(uid, LightDM.UserRoles.NameRole)
152+ function updateUsername() {
153+ greeterContentLoader.infographicModel.username = infographicUser;
149154 greeterContentLoader.infographicModel.readyForDataChangeSlot();
150155 }
151156
Greeter/Infographics.qml+8−1
@@ -29,13 +29,20 @@ Item {
2929 Connections {
3030 target: model
3131
32+ property bool appeared: false
33+
34+ onDataAboutToAppear: {
35+ // Don't 'hide' on first appearance, since there is no content yet
36+ if (appeared) startHideAnimation() // hide "no data" label
37+ appeared = true
38+ }
3239 onDataAppeared: startShowAnimation()
3340
3441 onDataAboutToChange: startHideAnimation()
35−
3642 onDataChanged: startShowAnimation()
3743
3844 onDataAboutToDisappear: startHideAnimation()
45+ onDataDisappeared: startShowAnimation() // show "no data" label
3946 }
4047
4148 function startShowAnimation() {
plugins/AccountsService/AccountsBindings.cpp+19
@@ -37,6 +37,7 @@ void AccountsBindings::setUser(const QString &user)
3737 m_user = user;
3838 updateDemoEdges();
3939 updateBackgroundFile();
40+ updateStatsWelcomeScreen();
4041}
4142
4243bool AccountsBindings::getDemoEdges()
@@ -55,6 +56,11 @@ QString AccountsBindings::getBackgroundFile()
5556 return m_backgroundFile;
5657}
5758
59+bool AccountsBindings::getStatsWelcomeScreen()
60+{
61+ return m_statsWelcomeScreen;
62+}
63+
5864void AccountsBindings::updateDemoEdges()
5965{
6066 auto demoEdges = m_service->getUserProperty(m_user, "com.canonical.unity.AccountsService", "demo-edges").toBool();
@@ -73,6 +79,15 @@ void AccountsBindings::updateBackgroundFile()
7379 }
7480}
7581
82+void AccountsBindings::updateStatsWelcomeScreen()
83+{
84+ auto statsWelcomeScreen = m_service->getUserProperty(m_user, "com.ubuntu.touch.AccountsService.SecurityPrivacy", "StatsWelcomeScreen").toBool();
85+ if (m_statsWelcomeScreen != statsWelcomeScreen) {
86+ m_statsWelcomeScreen = statsWelcomeScreen;
87+ Q_EMIT statsWelcomeScreenChanged();
88+ }
89+}
90+
7691void AccountsBindings::propertiesChanged(const QString &user, const QString &interface, const QStringList &changed)
7792{
7893 if (m_user != user) {
@@ -83,6 +98,10 @@ void AccountsBindings::propertiesChanged(const QString &user, const QString &int
8398 if (changed.contains("demo-edges")) {
8499 updateDemoEdges();
85100 }
101+ } else if (interface == "com.ubuntu.touch.AccountsService.SecurityPrivacy") {
102+ if (changed.contains("StatsWelcomeScreen")) {
103+ updateStatsWelcomeScreen();
104+ }
86105 }
87106}
88107
plugins/AccountsService/AccountsBindings.h+7
@@ -34,6 +34,9 @@ class AccountsBindings: public QObject
3434 Q_PROPERTY (QString backgroundFile
3535 READ getBackgroundFile
3636 NOTIFY backgroundFileChanged)
37+ Q_PROPERTY (bool statsWelcomeScreen
38+ READ getStatsWelcomeScreen
39+ NOTIFY statsWelcomeScreenChanged)
3740
3841public:
3942 explicit AccountsBindings(QObject *parent = 0);
@@ -43,10 +46,12 @@ public:
4346 bool getDemoEdges();
4447 void setDemoEdges(bool demoEdges);
4548 QString getBackgroundFile();
49+ bool getStatsWelcomeScreen();
4650
4751Q_SIGNALS:
4852 void demoEdgesChanged();
4953 void backgroundFileChanged();
54+ void statsWelcomeScreenChanged();
5055
5156private Q_SLOTS:
5257 void propertiesChanged(const QString &user, const QString &interface, const QStringList &changed);
@@ -55,11 +60,13 @@ private Q_SLOTS:
5560private:
5661 void updateDemoEdges();
5762 void updateBackgroundFile();
63+ void updateStatsWelcomeScreen();
5864
5965 AccountsService *m_service;
6066 QString m_user;
6167 bool m_demoEdges;
6268 QString m_backgroundFile;
69+ bool m_statsWelcomeScreen;
6370};
6471
6572#endif
tests/mocks/AccountsService/AccountsBindings.cpp+13−1
@@ -19,7 +19,8 @@
1919#include "AccountsBindings.h"
2020
2121AccountsBindings::AccountsBindings(QObject* parent)
22− : QObject(parent)
22+ : QObject(parent),
23+ m_statsWelcomeScreen(true)
2324{
2425}
2526
@@ -40,3 +41,14 @@ QString AccountsBindings::getBackgroundFile()
4041{
4142 return TOP_SRCDIR "/graphics/phone_background.jpg";
4243}
44+
45+bool AccountsBindings::getStatsWelcomeScreen()
46+{
47+ return m_statsWelcomeScreen;
48+}
49+
50+void AccountsBindings::setStatsWelcomeScreen(bool statsWelcomeScreen)
51+{
52+ m_statsWelcomeScreen = statsWelcomeScreen;
53+ statsWelcomeScreenChanged();
54+}
tests/mocks/AccountsService/AccountsBindings.h+10
@@ -34,6 +34,10 @@ class AccountsBindings: public QObject
3434 Q_PROPERTY (QString backgroundFile
3535 READ getBackgroundFile
3636 NOTIFY backgroundFileChanged)
37+ Q_PROPERTY (bool statsWelcomeScreen
38+ READ getStatsWelcomeScreen
39+ WRITE setStatsWelcomeScreen // addition for testing
40+ NOTIFY statsWelcomeScreenChanged)
3741
3842public:
3943 explicit AccountsBindings(QObject *parent = 0);
@@ -43,10 +47,16 @@ public:
4347 bool getDemoEdges();
4448 void setDemoEdges(bool demoEdges);
4549 QString getBackgroundFile();
50+ bool getStatsWelcomeScreen();
51+ void setStatsWelcomeScreen(bool statsWelcomeScreen);
4652
4753Q_SIGNALS:
4854 void demoEdgesChanged();
4955 void backgroundFileChanged();
56+ void statsWelcomeScreenChanged();
57+
58+private:
59+ bool m_statsWelcomeScreen;
5060};
5161
5262#endif
tests/mocks/libusermetrics/UserMetrics.cpp+5−1
@@ -407,7 +407,11 @@ UserMetrics::~UserMetrics()
407407
408408QString UserMetrics::label() const
409409{
410− return d_ptr->m_label;
410+ if (d_ptr->m_label.isEmpty()) {
411+ return "No data";
412+ } else {
413+ return d_ptr->m_label;
414+ }
411415}
412416
413417QString UserMetrics::username() const
tests/qmltests/Greeter/tst_Infographics.qml+4−4
@@ -64,15 +64,15 @@ Item {
6464
6565 function test_set_username_data() {
6666 return [
67− { username: "has-password" },
68− { username: "no-password" },
69− { username: "empty-name" }
67+ { username: "has-password", label: "<b>19</b> minutes talk time" },
68+ { username: "two-factor", label: "No data" },
69+ { username: "", label: "No data" },
7070 ]
7171 }
7272
7373 function test_set_username(data) {
7474 infographicModel.username = data.username
75− tryCompare(label, "text", "<b>19</b> minutes talk time")
75+ tryCompare(label, "text", data.label)
7676 }
7777 }
7878
tests/qmltests/Greeter/tst_Phone.qml+15
@@ -21,6 +21,7 @@ import "../../../Greeter"
2121import Ubuntu.Components 0.1
2222import LightDM 0.1 as LightDM
2323import Unity.Test 0.1 as UT
24+import AccountsService 0.1
2425
2526Item {
2627 width: units.gu(60)
@@ -51,6 +52,10 @@ Item {
5152 name: "Greeter"
5253 when: windowShown
5354
55+ function cleanup() {
56+ AccountsService.statsWelcomeScreen = true
57+ }
58+
5459 function test_properties() {
5560 compare(greeter.multiUser, false)
5661 compare(greeter.narrowMode, true)
@@ -102,5 +107,15 @@ Item {
102107 // Wait until we're back to 0
103108 tryCompareFunction(function() { return greeter.x;}, 0);
104109 }
110+
111+ function test_statsWelcomeScreen() {
112+ // Test logic in greeter that turns statsWelcomeScreen setting into infographic changes
113+ compare(AccountsService.statsWelcomeScreen, true)
114+ tryCompare(LightDM.Infographic, "username", "single")
115+ AccountsService.statsWelcomeScreen = false
116+ tryCompare(LightDM.Infographic, "username", "")
117+ AccountsService.statsWelcomeScreen = true
118+ tryCompare(LightDM.Infographic, "username", "single")
119+ }
105120 }
106121}