@@ -1,238 +0,0 @@
1−/*
2− * Copyright (C) 2013 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import AccountsService 0.1
18−import LightDM 0.1 as LightDM
19−import QtQuick 2.0
20−
21−Item {
22− id: demo
23−
24− property Item greeter
25− property Item launcher
26− property Item indicators
27− property Item stages
28−
29− property bool launcherEnabled: true
30− property bool stagesEnabled: true
31− property bool panelEnabled: true
32− property bool panelContentEnabled: true
33− property bool running: !launcherEnabled || !stagesEnabled || !panelEnabled || !panelContentEnabled
34−
35− property bool paused: false
36−
37− onPausedChanged: {
38− if (d.rightEdgeDemo) d.rightEdgeDemo.paused = paused
39− if (d.topEdgeDemo) d.topEdgeDemo.paused = paused
40− if (d.bottomEdgeDemo) d.bottomEdgeDemo.paused = paused
41− if (d.leftEdgeDemo) d.leftEdgeDemo.paused = paused
42− if (d.finalEdgeDemo) d.finalEdgeDemo.paused = paused
43− }
44−
45− function hideEdgeDemoInShell() {
46− AccountsService.demoEdges = false;
47− stopDemo();
48− }
49−
50− function hideEdgeDemoInGreeter() {
51− // TODO: AccountsService.demoEdges = false as lightdm user
52− }
53−
54− function hideEdgeDemos() {
55− hideEdgeDemoInGreeter();
56− hideEdgeDemoInShell();
57− }
58−
59− function stopDemo() {
60− launcherEnabled = true
61− stagesEnabled = true
62− panelEnabled = true
63− panelContentEnabled = true
64− if (d.rightEdgeDemo) d.rightEdgeDemo.destroy()
65− if (d.topEdgeDemo) d.topEdgeDemo.destroy()
66− if (d.bottomEdgeDemo) d.bottomEdgeDemo.destroy()
67− if (d.leftEdgeDemo) d.leftEdgeDemo.destroy()
68− if (d.finalEdgeDemo) d.finalEdgeDemo.destroy()
69− }
70−
71− function startDemo() {
72− if (!d.overlay) {
73− d.overlay = Qt.createComponent("EdgeDemoOverlay.qml")
74− }
75−
76− launcherEnabled = false;
77− stagesEnabled = false;
78− panelEnabled = false;
79− panelContentEnabled = false;
80−
81− // Begin with either greeter or top, depending on which is visible
82− if (greeter && greeter.shown) {
83− startRightEdgeDemo()
84− } else {
85− startTopEdgeDemo()
86− }
87− }
88−
89− QtObject {
90− id: d
91− property Component overlay
92− property QtObject rightEdgeDemo
93− property QtObject topEdgeDemo
94− property QtObject bottomEdgeDemo
95− property QtObject leftEdgeDemo
96− property QtObject finalEdgeDemo
97− property bool showEdgeDemo: AccountsService.demoEdges
98− property bool showEdgeDemoInGreeter: AccountsService.demoEdges // TODO: AccountsService.demoEdges as lightdm user
99−
100− onShowEdgeDemoChanged: {
101− stopDemo()
102− if (d.showEdgeDemo) {
103− startDemo()
104− }
105− }
106− }
107−
108− function startRightEdgeDemo() {
109− if (demo.greeter) {
110− d.rightEdgeDemo = d.overlay.createObject(demo.greeter, {
111− "edge": "right",
112− "title": i18n.tr("Right edge"),
113− "text": i18n.tr("Try swiping from the right edge to unlock the phone"),
114− "anchors.fill": demo.greeter,
115− });
116− }
117− if (d.rightEdgeDemo) {
118− d.rightEdgeDemo.onSkip.connect(demo.hideEdgeDemos)
119− } else {
120− stopDemo();
121− }
122− }
123−
124− Connections {
125− target: demo.greeter
126−
127− function hide() {
128− if (d.rightEdgeDemo && d.rightEdgeDemo.available) {
129− d.rightEdgeDemo.hide()
130− hideEdgeDemoInGreeter()
131− startTopEdgeDemo()
132− }
133− }
134−
135− onUnlocked: hide()
136− onShownChanged: if (!greeter.shown) hide()
137− }
138−
139− function startTopEdgeDemo() {
140− demo.panelEnabled = true;
141− if (demo.stages) {
142− d.topEdgeDemo = d.overlay.createObject(demo.stages, {
143− "edge": "top",
144− "title": i18n.tr("Top edge"),
145− "text": i18n.tr("Try swiping from the top edge to access the indicators"),
146− "anchors.fill": demo.stages,
147− });
148− }
149− if (d.topEdgeDemo) {
150− d.topEdgeDemo.onSkip.connect(demo.hideEdgeDemoInShell)
151− } else {
152− stopDemo();
153− }
154− }
155−
156− Connections {
157− target: demo.indicators
158− onFullyOpenedChanged: {
159− if (d.topEdgeDemo && d.topEdgeDemo.available && demo.indicators.fullyOpened) {
160− d.topEdgeDemo.hideNow()
161− startBottomEdgeDemo()
162− }
163− }
164− }
165−
166− function startBottomEdgeDemo() {
167− if (demo.indicators) {
168− d.bottomEdgeDemo = d.overlay.createObject(demo.indicators, {
169− "edge": "bottom",
170− "title": i18n.tr("Close"),
171− "text": i18n.tr("Swipe up again to close the settings screen"),
172− "anchors.fill": demo.indicators.content,
173− });
174− }
175− if (d.bottomEdgeDemo) {
176− d.bottomEdgeDemo.onSkip.connect(demo.hideEdgeDemoInShell)
177− } else {
178− stopDemo();
179− }
180− }
181−
182− Connections {
183− target: demo.indicators
184− onPartiallyOpenedChanged: {
185− if (d.bottomEdgeDemo && d.bottomEdgeDemo.available && !demo.indicators.partiallyOpened && !demo.indicators.fullyOpened) {
186− d.bottomEdgeDemo.hideNow()
187− startLeftEdgeDemo()
188− }
189− }
190− }
191−
192− function startLeftEdgeDemo() {
193− demo.panelEnabled = false;
194− demo.launcherEnabled = true;
195− if (demo.stages) {
196− d.leftEdgeDemo = d.overlay.createObject(demo.stages, {
197− "edge": "left",
198− "title": i18n.tr("Left edge"),
199− "text": i18n.tr("Swipe from the left to reveal the launcher for quick access to apps"),
200− "anchors.fill": demo.stages,
201− });
202− }
203− if (d.leftEdgeDemo) {
204− d.leftEdgeDemo.onSkip.connect(demo.hideEdgeDemoInShell)
205− } else {
206− stopDemo();
207− }
208− }
209−
210− Connections {
211− target: demo.launcher
212− onStateChanged: {
213− if (d.leftEdgeDemo && d.leftEdgeDemo.available && launcher.state == "visible") {
214− d.leftEdgeDemo.hide()
215− launcher.hide()
216− startFinalEdgeDemo()
217− }
218− }
219− }
220−
221− function startFinalEdgeDemo() {
222− demo.launcherEnabled = false;
223− if (demo.stages) {
224− d.finalEdgeDemo = d.overlay.createObject(demo.stages, {
225− "edge": "none",
226− "title": i18n.tr("Well done"),
227− "text": i18n.tr("You have now mastered the edge gestures and can start using the phone<br><br>Tap on the screen to start"),
228− "anchors.fill": demo.stages,
229− "showSkip": false,
230− });
231− }
232− if (d.finalEdgeDemo) {
233− d.finalEdgeDemo.onSkip.connect(demo.hideEdgeDemoInShell)
234− } else {
235− stopDemo();
236− }
237− }
238−}