2 * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
17import AccountsService 0.1
18import LightDM 0.1 as LightDM
26 property Item launcher
27 property Item indicators
28 property Item underlay
30 property bool launcherEnabled: true
31 property bool dashEnabled: true
32 property bool panelEnabled: true
33 property bool panelContentEnabled: true
35 property bool paused: false
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
45 function hideEdgeDemoInShell() {
46 var user = LightDM.Users.data(greeter.currentIndex, LightDM.UserRoles.NameRole);
47 AccountsService.setUserProperty(user, "demo-edges", false);
48 d.showEdgeDemo = false;
52 function hideEdgeDemoInGreeter() {
53 // TODO: AccountsService.setUserProperty("lightdm", "demo-edges", false);
54 d.showEdgeDemoInGreeter = false;
57 function hideEdgeDemos() {
58 hideEdgeDemoInGreeter();
59 hideEdgeDemoInShell();
63 launcherEnabled = true
66 panelContentEnabled = true
67 if (d.rightEdgeDemo) d.rightEdgeDemo.destroy()
68 if (d.topEdgeDemo) d.topEdgeDemo.destroy()
69 if (d.bottomEdgeDemo) d.bottomEdgeDemo.destroy()
70 if (d.leftEdgeDemo) d.leftEdgeDemo.destroy()
71 if (d.finalEdgeDemo) d.finalEdgeDemo.destroy()
76 property Component overlay
77 property QtObject rightEdgeDemo
78 property QtObject topEdgeDemo
79 property QtObject bottomEdgeDemo
80 property QtObject leftEdgeDemo
81 property QtObject finalEdgeDemo
82 property bool showEdgeDemo: false
83 property bool showEdgeDemoInGreeter: d.showEdgeDemo // TODO: AccountsService.getUserProperty("lightdm", "demo-edges")
85 onShowEdgeDemoInGreeterChanged: {
86 if (!d.overlay && d.showEdgeDemoInGreeter) {
87 d.overlay = Qt.createComponent("EdgeDemoOverlay.qml")
93 function startRightEdgeDemo() {
94 launcherEnabled = false;
95 demo.dashEnabled = false;
96 demo.panelEnabled = false;
97 demo.panelContentEnabled = false;
99 d.rightEdgeDemo = d.overlay.createObject(demo.greeter, {
101 "title": i18n.tr("Right edge"),
102 "text": i18n.tr("Try swiping from the right edge to unlock the phone"),
103 "anchors.fill": demo.greeter,
106 if (d.rightEdgeDemo) {
107 d.rightEdgeDemo.onSkip.connect(demo.hideEdgeDemos)
117 if (d.rightEdgeDemo && d.rightEdgeDemo.available) {
118 d.rightEdgeDemo.hide()
119 hideEdgeDemoInGreeter()
125 onShownChanged: if (!greeter.shown) hide()
128 var user = LightDM.Users.data(uid, LightDM.UserRoles.NameRole)
129 d.showEdgeDemo = AccountsService.getUserProperty(user, "demo-edges")
133 function startTopEdgeDemo() {
134 demo.panelEnabled = true;
135 if (demo.dash && demo.underlay) {
136 d.topEdgeDemo = d.overlay.createObject(demo.underlay, {
138 "title": i18n.tr("Top edge"),
139 "text": i18n.tr("Try swiping from the top edge to access the indicators"),
140 "anchors.fill": demo.dash,
144 d.topEdgeDemo.onSkip.connect(demo.hideEdgeDemoInShell)
151 target: demo.indicators
152 onFullyOpenedChanged: {
153 if (d.topEdgeDemo && d.topEdgeDemo.available && demo.indicators.fullyOpened) {
154 d.topEdgeDemo.hideNow()
155 startBottomEdgeDemo()
160 function startBottomEdgeDemo() {
161 if (demo.indicators) {
162 d.bottomEdgeDemo = d.overlay.createObject(demo.indicators, {
164 "title": i18n.tr("Close"),
165 "text": i18n.tr("Swipe up again to close the settings screen"),
166 "anchors.fill": demo.indicators,
169 if (d.bottomEdgeDemo) {
170 d.bottomEdgeDemo.onSkip.connect(demo.hideEdgeDemoInShell)
177 target: demo.indicators
178 onPartiallyOpenedChanged: {
179 if (d.bottomEdgeDemo && d.bottomEdgeDemo.available && !demo.indicators.partiallyOpened && !demo.indicators.fullyOpened) {
180 d.bottomEdgeDemo.hideNow()
186 function startLeftEdgeDemo() {
187 demo.panelEnabled = false;
188 demo.launcherEnabled = true;
189 if (demo.dash && demo.underlay) {
190 d.leftEdgeDemo = d.overlay.createObject(demo.underlay, {
192 "title": i18n.tr("Left edge"),
193 "text": i18n.tr("Swipe from the left to reveal the launcher for quick access to apps"),
194 "anchors.fill": demo.dash,
197 if (d.leftEdgeDemo) {
198 d.leftEdgeDemo.onSkip.connect(demo.hideEdgeDemoInShell)
205 target: demo.launcher
207 if (d.leftEdgeDemo && d.leftEdgeDemo.available && launcher.state == "visible") {
208 d.leftEdgeDemo.hide()
215 function startFinalEdgeDemo() {
216 demo.launcherEnabled = false;
217 if (demo.dash && demo.underlay) {
218 d.finalEdgeDemo = d.overlay.createObject(demo.underlay, {
220 "title": i18n.tr("Well done"),
221 "text": i18n.tr("You have now mastered the edge gestures and can start using the phone<br><br>Tap anywhere to start"),
222 "anchors.fill": demo.dash,
226 if (d.finalEdgeDemo) {
227 d.finalEdgeDemo.onSkip.connect(demo.hideEdgeDemoInShell)
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list