@@ -0,0 +1,82 @@
1+/*
2+ * Copyright (C) 2014 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 QtQuick 2.3
18+import Ubuntu.Components 1.1
19+import Ubuntu.Gestures 0.1
20+import "../Components"
21+import "." as LocalComponents
22+
23+TutorialPage {
24+ id: root
25+
26+ property alias edgeSize: dragArea.height
27+
28+ title: i18n.tr("Open special menus")
29+ text: i18n.tr("Swipe up from the bottom edge.")
30+ errorText: i18n.tr("You almost got it!") + "\n" + i18n.tr("Try again.")
31+ fullTextWidth: true
32+
33+ foreground {
34+ children: [
35+ LocalComponents.Slider {
36+ id: slider
37+ anchors {
38+ bottom: parent.bottom
39+ bottomMargin: width / 2 - height / 2
40+ horizontalCenter: parent.horizontalCenter
41+ }
42+ rotation: -90
43+ offset: dragArea.useTouchY ? -dragArea.touchY : 0
44+ active: dragArea.dragging
45+
46+ Behavior on offset {
47+ id: offsetAnimation
48+ UbuntuNumberAnimation {}
49+ }
50+ }
51+ ]
52+ }
53+
54+ EdgeDragArea {
55+ id: dragArea
56+ direction: Direction.Upwards
57+ anchors {
58+ bottom: parent.bottom
59+ left: parent.left
60+ right: parent.right
61+ }
62+
63+ property bool useTouchY
64+
65+ onDraggingChanged: {
66+ if (!dragging) {
67+ if (slider.percent >= 0.85) {
68+ root.hide();
69+ } else if (slider.percent >= 0.15) {
70+ root.showError();
71+ }
72+ }
73+
74+ // We use a separate vars here rather than just directly looking at
75+ // 'dragging' because we want to preserve our 'slider.offset'
76+ // value during the above percent check. Now that we made it,
77+ // we can have 'slider.offset' go back to zero.
78+ offsetAnimation.enabled = !dragging;
79+ useTouchY = dragging;
80+ }
81+ }
82+}