@@ -30,7 +30,9 @@ Item {
30 property bool keyboardVisible
30 property bool keyboardVisible
31 property var lastInputTimestamp
31 property var lastInputTimestamp
33− readonly property bool launcherEnabled: !running || tutorialLeftLoader.shown
33+ readonly property bool launcherEnabled: !running
34+ || tutorialLeftLoader.shown
35+ || tutorialLeftLongLoader.shown
34 readonly property bool spreadEnabled: !running || tutorialRightLoader.shown
36 readonly property bool spreadEnabled: !running || tutorialRightLoader.shown
35 readonly property bool panelEnabled: !running || tutorialTopLoader.shown
37 readonly property bool panelEnabled: !running || tutorialTopLoader.shown
36 readonly property bool running: tutorialLeftLoader.shown
38 readonly property bool running: tutorialLeftLoader.shown
@@ -101,6 +103,48 @@ Item {
107+ id: tutorialLeftLongLoader
108+ objectName: "tutorialLeftLongLoader"
109+ anchors.fill: parent
111+ readonly property bool skipped: !d.mobileScenario || d.haveShown("left-long")
112+ readonly property bool shown: item && item.shown
113+ active: !skipped || (item && item.visible)
114+ onSkippedChanged: if (skipped && shown) item.hide()
116+ sourceComponent: TutorialLeftLong {
117+ id: tutorialLeftLong
118+ objectName: "tutorialLeftLong"
119+ anchors.fill: parent
120+ launcher: root.launcher
121+ hides: [launcher, panel.indicators]
124+ skipped: tutorialLeftLongLoader.skipped
125+ isReady: tutorialLeftLoader.skipped && !skipped && !paused && !keyboardVisible &&
126+ !tutorialBottomLoader.shown && !tutorialBottomLoader.mightShow
129+ id: tutorialLeftLongTimer
130+ objectName: "tutorialLeftLongTimer"
133+ if (parent.isReady) {
134+ if (!parent.shown) {
137+ } else if (!parent.skipped) {
143+ onIsReadyChanged: if (isReady && !shown) tutorialLeftLongTimer.start()
144+ onFinished: AccountsService.markDemoEdgeCompleted("left-long")
105 id: tutorialTopLoader
149 id: tutorialTopLoader
106 objectName: "tutorialTopLoader"
150 objectName: "tutorialTopLoader"
@@ -119,8 +163,8 @@ Item {
119 hides: [launcher, panel.indicators]
163 hides: [launcher, panel.indicators]
120 paused: root.paused
164 paused: root.paused
122− isReady: tutorialLeftLoader.skipped && !tutorialTopLoader.skipped &&
166+ skipped: tutorialTopLoader.skipped
123− !paused && !keyboardVisible &&
167+ isReady: tutorialLeftLongLoader.skipped && !skipped && !paused && !keyboardVisible &&
124 !tutorialBottomLoader.shown && !tutorialBottomLoader.mightShow
168 !tutorialBottomLoader.shown && !tutorialBottomLoader.mightShow
126 // We fire 30s after left edge tutorial, with at least 3s of inactivity
170 // We fire 30s after left edge tutorial, with at least 3s of inactivity
@@ -162,8 +206,8 @@ Item {
162 hides: [launcher, panel.indicators]
206 hides: [launcher, panel.indicators]
163 paused: root.paused
207 paused: root.paused
165− isReady: tutorialTopLoader.skipped && !tutorialRightLoader.skipped &&
209+ skipped: tutorialRightLoader.skipped
166− !paused && !keyboardVisible &&
210+ isReady: tutorialTopLoader.skipped && !skipped && !paused && !keyboardVisible &&
167 !tutorialBottomLoader.shown && !tutorialBottomLoader.mightShow &&
211 !tutorialBottomLoader.shown && !tutorialBottomLoader.mightShow &&
168 ApplicationManager.count >= 3
212 ApplicationManager.count >= 3
@@ -231,6 +275,7 @@ Item {
231 stage: root.stage
275 stage: root.stage
232 application: d.focusedApp
276 application: d.focusedApp
278+ skipped: tutorialBottomLoader.skipped
234 isReady: !tutorialBottomLoader.skipped && !paused && !keyboardVisible &&
279 isReady: !tutorialBottomLoader.skipped && !paused && !keyboardVisible &&
235 !tutorialTopLoader.shown && !tutorialRightLoader.shown &&
280 !tutorialTopLoader.shown && !tutorialRightLoader.shown &&
236 tutorialBottomLoader.mightShow &&
281 tutorialBottomLoader.mightShow &&