on xenial help sign in
Move long-left tutorial after top tutorial and require an open app first
063b4ceMichael Terry
qml/Tutorial/TutorialContent.qml+28−31
@@ -56,10 +56,6 @@ Item {
56 root.usageScenario === "phone" ||
56 root.usageScenario === "phone" ||
57 root.usageScenario === "tablet"
57 root.usageScenario === "tablet"
58
58
59− property var focusedApp: ApplicationManager.focusedApplicationId
60− ? ApplicationManager.findApplication(ApplicationManager.focusedApplicationId)
61− : null
62−
63 function haveShown(tutorialId) {
59 function haveShown(tutorialId) {
64 return AccountsService.demoEdgesCompleted.indexOf(tutorialId) != -1;
60 return AccountsService.demoEdgesCompleted.indexOf(tutorialId) != -1;
65 }
61 }
@@ -102,70 +98,71 @@ Item {
102 }
98 }
103
99
104 Loader {
100 Loader {
105− id: tutorialLeftLongLoader
101+ id: tutorialTopLoader
106− objectName: "tutorialLeftLongLoader"
102+ objectName: "tutorialTopLoader"
107 anchors.fill: parent
103 anchors.fill: parent
108
104
109− readonly property bool skipped: !d.mobileScenario || d.haveShown("left-long")
105+ readonly property bool skipped: !d.mobileScenario || d.haveShown("top")
110 readonly property bool shown: item && item.shown
106 readonly property bool shown: item && item.shown
111 active: !skipped || (item && item.visible)
107 active: !skipped || (item && item.visible)
112 onSkippedChanged: if (skipped && shown) item.hide()
108 onSkippedChanged: if (skipped && shown) item.hide()
113
109
114− sourceComponent: TutorialLeftLong {
110+ sourceComponent: TutorialTop {
115− id: tutorialLeftLong
111+ id: tutorialTop
116− objectName: "tutorialLeftLong"
112+ objectName: "tutorialTop"
117 anchors.fill: parent
113 anchors.fill: parent
118− launcher: root.launcher
114+ panel: root.panel
119 hides: [launcher, panel.indicators]
115 hides: [launcher, panel.indicators]
120 paused: root.paused
116 paused: root.paused
121
117
122− skipped: tutorialLeftLongLoader.skipped
118+ skipped: tutorialTopLoader.skipped
123 isReady: tutorialLeftLoader.skipped && !skipped && !paused && !keyboardVisible
119 isReady: tutorialLeftLoader.skipped && !skipped && !paused && !keyboardVisible
124
120
125 InactivityTimer {
121 InactivityTimer {
126− id: tutorialLeftLongTimer
122+ id: tutorialTopTimer
127− objectName: "tutorialLeftLongTimer"
123+ objectName: "tutorialTopTimer"
128− interval: 10000
124+ interval: 60000
129 lastInputTimestamp: root.lastInputTimestamp
125 lastInputTimestamp: root.lastInputTimestamp
130 page: parent
126 page: parent
131 }
127 }
132
128
133− onIsReadyChanged: if (isReady && !shown) tutorialLeftLongTimer.start()
129+ onIsReadyChanged: if (isReady && !shown) tutorialTopTimer.start()
134− onFinished: AccountsService.markDemoEdgeCompleted("left-long")
130+ onFinished: AccountsService.markDemoEdgeCompleted("top")
135 }
131 }
136 }
132 }
137
133
138 Loader {
134 Loader {
139− id: tutorialTopLoader
135+ id: tutorialLeftLongLoader
140− objectName: "tutorialTopLoader"
136+ objectName: "tutorialLeftLongLoader"
141 anchors.fill: parent
137 anchors.fill: parent
142
138
143− readonly property bool skipped: !d.mobileScenario || d.haveShown("top")
139+ readonly property bool skipped: !d.mobileScenario || d.haveShown("left-long")
144 readonly property bool shown: item && item.shown
140 readonly property bool shown: item && item.shown
145 active: !skipped || (item && item.visible)
141 active: !skipped || (item && item.visible)
146 onSkippedChanged: if (skipped && shown) item.hide()
142 onSkippedChanged: if (skipped && shown) item.hide()
147
143
148− sourceComponent: TutorialTop {
144+ sourceComponent: TutorialLeftLong {
149− id: tutorialTop
145+ id: tutorialLeftLong
150− objectName: "tutorialTop"
146+ objectName: "tutorialLeftLong"
151 anchors.fill: parent
147 anchors.fill: parent
152− panel: root.panel
148+ launcher: root.launcher
153 hides: [launcher, panel.indicators]
149 hides: [launcher, panel.indicators]
154 paused: root.paused
150 paused: root.paused
155
151
152+ skipped: tutorialLeftLongLoader.skipped
156− skipped: tutorialTopLoader.skipped
153+ isReady: tutorialTopLoader.skipped && !skipped && !paused && !keyboardVisible &&
157− isReady: tutorialLeftLongLoader.skipped && !skipped && !paused && !keyboardVisible
154+ ApplicationManager.focusedApplicationId != "unity8-dash"
158
155
159 InactivityTimer {
156 InactivityTimer {
160− id: tutorialTopTimer
157+ id: tutorialLeftLongTimer
161− objectName: "tutorialTopTimer"
158+ objectName: "tutorialLeftLongTimer"
162− interval: 60000
159+ interval: 10000
163 lastInputTimestamp: root.lastInputTimestamp
160 lastInputTimestamp: root.lastInputTimestamp
164 page: parent
161 page: parent
165 }
162 }
166
163
167− onIsReadyChanged: if (isReady && !shown) tutorialTopTimer.start()
164+ onIsReadyChanged: if (isReady && !shown) tutorialLeftLongTimer.start()
168− onFinished: AccountsService.markDemoEdgeCompleted("top")
165+ onFinished: AccountsService.markDemoEdgeCompleted("left-long")
169 }
166 }
170 }
167 }
171
168
tests/qmltests/Tutorial/tst_Tutorial.qml+10−10
@@ -302,7 +302,7 @@ Rectangle {
302 var tutorialTopTimer = findInvisibleChild(tutorialTop, "tutorialTopTimer");
302 var tutorialTopTimer = findInvisibleChild(tutorialTop, "tutorialTopTimer");
303
303
304 tutorialTopTimer.interval = 1;
304 tutorialTopTimer.interval = 1;
305− AccountsService.demoEdgesCompleted = ["left", "left-long"];
305+ AccountsService.demoEdgesCompleted = ["left"];
306
306
307 tryCompare(tutorialLeftLoader, "active", false);
307 tryCompare(tutorialLeftLoader, "active", false);
308 tryCompare(tutorialTop, "shown", true);
308 tryCompare(tutorialTop, "shown", true);
@@ -314,7 +314,7 @@ Rectangle {
314 var tutorialRight = findChild(shell, "tutorialRight");
314 var tutorialRight = findChild(shell, "tutorialRight");
315 var tutorialRightTimer = findChild(tutorialRight, "tutorialRightTimer");
315 var tutorialRightTimer = findChild(tutorialRight, "tutorialRightTimer");
316
316
317− AccountsService.demoEdgesCompleted = ["left", "left-long", "top"];
317+ AccountsService.demoEdgesCompleted = ["left", "top", "left-long"];
318 ApplicationManager.startApplication("gallery-app");
318 ApplicationManager.startApplication("gallery-app");
319 ApplicationManager.startApplication("facebook-webapp");
319 ApplicationManager.startApplication("facebook-webapp");
320 ApplicationManager.startApplication("camera-app");
320 ApplicationManager.startApplication("camera-app");
@@ -442,7 +442,7 @@ Rectangle {
442 touchFlick(shell, halfWidth, 0, halfWidth, shell.height);
442 touchFlick(shell, halfWidth, 0, halfWidth, shell.height);
443
443
444 tryCompare(tutorialTop, "shown", false);
444 tryCompare(tutorialTop, "shown", false);
445− tryCompare(AccountsService, "demoEdgesCompleted", ["left", "left-long", "top"]);
445+ tryCompare(AccountsService, "demoEdgesCompleted", ["left", "top"]);
446 tryCompare(panel.indicators, "fullyOpened", true);
446 tryCompare(panel.indicators, "fullyOpened", true);
447 }
447 }
448
448
@@ -468,12 +468,12 @@ Rectangle {
468
468
469 var tutorialLeftLoader = findChild(shell, "tutorialLeftLoader");
469 var tutorialLeftLoader = findChild(shell, "tutorialLeftLoader");
470 var tutorialTop = findChild(shell, "tutorialTop");
470 var tutorialTop = findChild(shell, "tutorialTop");
471− AccountsService.demoEdgesCompleted = ["left", "left-long"];
471+ AccountsService.demoEdgesCompleted = ["left"];
472 tryCompare(tutorialLeftLoader, "active", false);
472 tryCompare(tutorialLeftLoader, "active", false);
473 verify(!tutorialTop.shown);
473 verify(!tutorialTop.shown);
474
474
475 touchFlick(shell, halfWidth, 0, halfWidth, shell.height);
475 touchFlick(shell, halfWidth, 0, halfWidth, shell.height);
476− tryCompare(AccountsService, "demoEdgesCompleted", ["left", "left-long", "top"]);
476+ tryCompare(AccountsService, "demoEdgesCompleted", ["left", "top"]);
477 }
477 }
478
478
479 function test_tutorialRightEdges() {
479 function test_tutorialRightEdges() {
@@ -504,7 +504,7 @@ Rectangle {
504 touchFlick(shell, shell.width, halfHeight, 0, halfHeight);
504 touchFlick(shell, shell.width, halfHeight, 0, halfHeight);
505
505
506 tryCompare(tutorialRight, "shown", false);
506 tryCompare(tutorialRight, "shown", false);
507− tryCompare(AccountsService, "demoEdgesCompleted", ["left", "left-long", "top", "right"]);
507+ tryCompare(AccountsService, "demoEdgesCompleted", ["left", "top", "left-long", "right"]);
508 }
508 }
509
509
510 function test_tutorialRightShortDrag() {
510 function test_tutorialRightShortDrag() {
@@ -537,7 +537,7 @@ Rectangle {
537 ApplicationManager.startApplication("camera-app");
537 ApplicationManager.startApplication("camera-app");
538 tryCompare(ApplicationManager, "count", 4);
538 tryCompare(ApplicationManager, "count", 4);
539
539
540− AccountsService.demoEdgesCompleted = ["left", "left-long", "top"];
540+ AccountsService.demoEdgesCompleted = ["left", "top", "left-long"];
541 verify(tutorialRightTimer.running);
541 verify(tutorialRightTimer.running);
542 verify(!tutorialRight.shown);
542 verify(!tutorialRight.shown);
543 tryCompare(tutorialRight, "shown", true);
543 tryCompare(tutorialRight, "shown", true);
@@ -547,11 +547,11 @@ Rectangle {
547 // Test that we skip the tutorial if user uses right edge themselves
547 // Test that we skip the tutorial if user uses right edge themselves
548
548
549 var tutorialLeftLoader = findChild(shell, "tutorialLeftLoader");
549 var tutorialLeftLoader = findChild(shell, "tutorialLeftLoader");
550− AccountsService.demoEdgesCompleted = ["left", "left-long"];
550+ AccountsService.demoEdgesCompleted = ["left"];
551 tryCompare(tutorialLeftLoader, "active", false);
551 tryCompare(tutorialLeftLoader, "active", false);
552
552
553 touchFlick(shell, shell.width, halfHeight, 0, halfHeight);
553 touchFlick(shell, shell.width, halfHeight, 0, halfHeight);
554− tryCompare(AccountsService, "demoEdgesCompleted", ["left", "left-long", "right"]);
554+ tryCompare(AccountsService, "demoEdgesCompleted", ["left", "right"]);
555 }
555 }
556
556
557 function test_activeCallInterruptsTutorial() {
557 function test_activeCallInterruptsTutorial() {
@@ -604,7 +604,7 @@ Rectangle {
604 verify(!tutorialRight.isReady);
604 verify(!tutorialRight.isReady);
605 verify(!tutorialRight.shown);
605 verify(!tutorialRight.shown);
606 verify(!tutorialRight.paused);
606 verify(!tutorialRight.paused);
607− compare(AccountsService.demoEdgesCompleted, ["left", "left-long", "top"]);
607+ compare(AccountsService.demoEdgesCompleted, ["left", "top", "left-long"]);
608 }
608 }
609
609
610 function test_desktopOnlyShowsTutorialRight() {
610 function test_desktopOnlyShowsTutorialRight() {