on xenial help sign in
Move display power checking out of the EdgeDemoOverlay class into the shell
fe2b269Michael Terry
Components/EdgeDemo.qml+29−10
@@ -31,19 +31,26 @@ Item {
31 property bool dashEnabled: true
31 property bool dashEnabled: true
32 property bool panelEnabled: true
32 property bool panelEnabled: true
33
33
34− property bool showEdgeDemo: false
34+ property bool paused: false
35− property bool showEdgeDemoInGreeter: showEdgeDemo // TODO: AccountsService.getUserProperty("lightdm", "demo-edges")
35+
36+ onPausedChanged: {
37+ if (d.rightEdgeDemo) d.rightEdgeDemo.paused = paused
38+ if (d.topEdgeDemo) d.topEdgeDemo.paused = paused
39+ if (d.bottomEdgeDemo) d.bottomEdgeDemo.paused = paused
40+ if (d.leftEdgeDemo) d.leftEdgeDemo.paused = paused
41+ if (d.finalEdgeDemo) d.finalEdgeDemo.paused = paused
42+ }
36
43
37 function hideEdgeDemoInShell() {
44 function hideEdgeDemoInShell() {
38 var user = LightDM.Users.data(greeter.currentIndex, LightDM.UserRoles.NameRole);
45 var user = LightDM.Users.data(greeter.currentIndex, LightDM.UserRoles.NameRole);
39 AccountsService.setUserProperty(user, "demo-edges", false);
46 AccountsService.setUserProperty(user, "demo-edges", false);
40− demo.showEdgeDemo = false;
47+ d.showEdgeDemo = false;
41 stopDemo();
48 stopDemo();
42 }
49 }
43
50
44 function hideEdgeDemoInGreeter() {
51 function hideEdgeDemoInGreeter() {
45 // TODO: AccountsService.setUserProperty("lightdm", "demo-edges", false);
52 // TODO: AccountsService.setUserProperty("lightdm", "demo-edges", false);
46− demo.showEdgeDemoInGreeter = false;
53+ d.showEdgeDemoInGreeter = false;
47 }
54 }
48
55
49 function hideEdgeDemos() {
56 function hideEdgeDemos() {
@@ -70,12 +77,14 @@ Item {
70 property QtObject bottomEdgeDemo
77 property QtObject bottomEdgeDemo
71 property QtObject leftEdgeDemo
78 property QtObject leftEdgeDemo
72 property QtObject finalEdgeDemo
79 property QtObject finalEdgeDemo
73− }
80+ property bool showEdgeDemo: false
81+ property bool showEdgeDemoInGreeter: d.showEdgeDemo // TODO: AccountsService.getUserProperty("lightdm", "demo-edges")
74
82
75− onShowEdgeDemoInGreeterChanged: {
83+ onShowEdgeDemoInGreeterChanged: {
76− if (!d.overlay && showEdgeDemoInGreeter) {
84+ if (!d.overlay && d.showEdgeDemoInGreeter) {
77− d.overlay = Qt.createComponent("EdgeDemoOverlay.qml")
85+ d.overlay = Qt.createComponent("EdgeDemoOverlay.qml")
78− startRightEdgeDemo()
86+ startRightEdgeDemo()
87+ }
79 }
88 }
80 }
89 }
81
90
@@ -90,6 +99,8 @@ Item {
90 "text": i18n.tr("Try swiping from the right edge to unlock the phone"),
99 "text": i18n.tr("Try swiping from the right edge to unlock the phone"),
91 "anchors.fill": demo.greeter,
100 "anchors.fill": demo.greeter,
92 });
101 });
102+ }
103+ if (d.rightEdgeDemo) {
93 d.rightEdgeDemo.onSkip.connect(demo.hideEdgeDemos)
104 d.rightEdgeDemo.onSkip.connect(demo.hideEdgeDemos)
94 } else {
105 } else {
95 stopDemo();
106 stopDemo();
@@ -112,7 +123,7 @@ Item {
112
123
113 onSelected: {
124 onSelected: {
114 var user = LightDM.Users.data(uid, LightDM.UserRoles.NameRole)
125 var user = LightDM.Users.data(uid, LightDM.UserRoles.NameRole)
115− showEdgeDemo = AccountsService.getUserProperty(user, "demo-edges")
126+ d.showEdgeDemo = true;//AccountsService.getUserProperty(user, "demo-edges")
116 }
127 }
117 }
128 }
118
129
@@ -125,6 +136,8 @@ Item {
125 "text": i18n.tr("Try swiping from the top edge to access the indicators"),
136 "text": i18n.tr("Try swiping from the top edge to access the indicators"),
126 "anchors.fill": demo.dash,
137 "anchors.fill": demo.dash,
127 });
138 });
139+ }
140+ if (d.topEdgeDemo) {
128 d.topEdgeDemo.onSkip.connect(demo.hideEdgeDemoInShell)
141 d.topEdgeDemo.onSkip.connect(demo.hideEdgeDemoInShell)
129 } else {
142 } else {
130 stopDemo();
143 stopDemo();
@@ -149,6 +162,8 @@ Item {
149 "text": i18n.tr("Swipe up again to close the settings screen"),
162 "text": i18n.tr("Swipe up again to close the settings screen"),
150 "anchors.fill": demo.indicators,
163 "anchors.fill": demo.indicators,
151 });
164 });
165+ }
166+ if (d.bottomEdgeDemo) {
152 d.bottomEdgeDemo.onSkip.connect(demo.hideEdgeDemoInShell)
167 d.bottomEdgeDemo.onSkip.connect(demo.hideEdgeDemoInShell)
153 } else {
168 } else {
154 stopDemo();
169 stopDemo();
@@ -175,6 +190,8 @@ Item {
175 "text": i18n.tr("Swipe from the left to reveal the launcher for quick access to apps"),
190 "text": i18n.tr("Swipe from the left to reveal the launcher for quick access to apps"),
176 "anchors.fill": demo.dash,
191 "anchors.fill": demo.dash,
177 });
192 });
193+ }
194+ if (d.leftEdgeDemo) {
178 d.leftEdgeDemo.onSkip.connect(demo.hideEdgeDemoInShell)
195 d.leftEdgeDemo.onSkip.connect(demo.hideEdgeDemoInShell)
179 } else {
196 } else {
180 stopDemo();
197 stopDemo();
@@ -201,6 +218,8 @@ Item {
201 "text": i18n.tr("You have now mastered the edge gestures and can start using the phone"),
218 "text": i18n.tr("You have now mastered the edge gestures and can start using the phone"),
202 "anchors.fill": demo.overlay,
219 "anchors.fill": demo.overlay,
203 });
220 });
221+ }
222+ if (d.finalEdgeDemo) {
204 d.finalEdgeDemo.onSkip.connect(demo.hideEdgeDemoInShell)
223 d.finalEdgeDemo.onSkip.connect(demo.hideEdgeDemoInShell)
205 } else {
224 } else {
206 stopDemo();
225 stopDemo();
Components/EdgeDemoOverlay.qml+5−15
@@ -48,6 +48,11 @@ Showable {
48 */
48 */
49 readonly property bool active: available && visible
49 readonly property bool active: available && visible
50
50
51+ /*
52+ * Whether animations are paused.
53+ */
54+ property alias paused: wholeAnimation.paused
55+
51 signal skip()
56 signal skip()
52
57
53 function doSkip() {
58 function doSkip() {
@@ -243,19 +248,4 @@ Showable {
243 }
248 }
244 }
249 }
245 }
250 }
246−
247− // Watch display, so we can turn off animation if it does. No reason to
248− // chew CPU when user isn't watching.
249− Connections {
250− id: powerConnection
251− target: Powerd
252−
253− onDisplayPowerStateChange: {
254− if (status == Powerd.Off && wholeAnimation.running) {
255− wholeAnimation.pause();
256− } else if (status == Powerd.On) {
257− wholeAnimation.resume();
258− }
259− }
260− }
261}
251}
Shell.qml+7
@@ -508,6 +508,13 @@ FocusScope {
508 } else if (status == Powerd.On) {
508 } else if (status == Powerd.On) {
509 powerConnection.setFocused(true);
509 powerConnection.setFocused(true);
510 }
510 }
511+
512+ // No reason to chew demo CPU when user isn't watching
513+ if (status == Powerd.Off) {
514+ edgeDemo.paused = true;
515+ } else if (status == Powerd.On) {
516+ edgeDemo.paused = false;
517+ }
511 }
518 }
512 }
519 }
513
520