on xenial help sign in
Merge
49256b0Albert Astals
debian/changelog+25
@@ -1,3 +1,28 @@
1+unity8 (8.00+14.10.20140923-0ubuntu1) utopic; urgency=low
2+
3+ [ Michael Zanetti ]
4+ * fix swiping away the launcher from the left edge
5+ * fix indicators AP test
6+
7+ [ Florian Boucault ]
8+ * New Splash screen implementation that fakes real app
9+
10+ [ Albert Astals ]
11+ * We need this in build-depends so that qmluitests pass in CI
12+
13+ [ Daniel d'Andrada ]
14+ * New Splash screen implementation that fakes real app
15+
16+ [ Michael Terry ]
17+ * Fix LC_ALL and test harder by making both manual runs of
18+ timeformattertest and the whole test suite use the same locale
19+ settings.
20+
21+ [ CI bot ]
22+ * Resync trunk
23+
24+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Tue, 23 Sep 2014 09:26:18 +0000
25+
1unity8 (8.00+14.10.20140918.3-0ubuntu1) utopic; urgency=low
26unity8 (8.00+14.10.20140918.3-0ubuntu1) utopic; urgency=low
2
27
3 [ Michał Sawicz ]
28 [ Michał Sawicz ]
debian/control+4−3
@@ -7,6 +7,7 @@ Build-Depends: cmake,
7 debhelper (>= 9),
7 debhelper (>= 9),
8 doxyqml,
8 doxyqml,
9 graphviz,
9 graphviz,
10+ gsettings-ubuntu-schemas (>= 0.0.2+14.10.20140815),
10# We rely on C++11 features, and to prevent from ABI breaks
11# We rely on C++11 features, and to prevent from ABI breaks
11# in libstdc++ causing us issues, we explicitly select a G++
12# in libstdc++ causing us issues, we explicitly select a G++
12# version.
13# version.
@@ -24,7 +25,7 @@ Build-Depends: cmake,
24 libpulse-dev,
25 libpulse-dev,
25 libqmenumodel-dev (>= 0.2.8),
26 libqmenumodel-dev (>= 0.2.8),
26 libqt5xmlpatterns5-dev,
27 libqt5xmlpatterns5-dev,
27− libunity-api-dev (>= 7.90),
28+ libunity-api-dev (>= 7.91),
28 libusermetricsoutput1-dev,
29 libusermetricsoutput1-dev,
29 libxcb1-dev,
30 libxcb1-dev,
30 pkg-config,
31 pkg-config,
@@ -112,7 +113,7 @@ Depends: qml-module-qtquick-layouts,
112 qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 0.1.49) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 0.1.49),
113 qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 0.1.49) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 0.1.49),
113 qtdeclarative5-unity-notifications-plugin (>= 0.1.2) | unity-notifications-impl,
114 qtdeclarative5-unity-notifications-plugin (>= 0.1.2) | unity-notifications-impl,
114 ubuntu-thumbnailer-impl-0,
115 ubuntu-thumbnailer-impl-0,
115− unity-application-impl-3,
116+ unity-application-impl-4,
116 unity-notifications-impl-3,
117 unity-notifications-impl-3,
117 unity-plugin-scopes | unity-scopes-impl,
118 unity-plugin-scopes | unity-scopes-impl,
118 unity-scopes-impl-4,
119 unity-scopes-impl-4,
@@ -159,7 +160,7 @@ Pre-Depends: ${misc:Pre-Depends},
159Depends: ${misc:Depends},
160Depends: ${misc:Depends},
160 ${shlibs:Depends},
161 ${shlibs:Depends},
161Provides: unity-application-impl,
162Provides: unity-application-impl,
162− unity-application-impl-3,
163+ unity-application-impl-4,
163Description: Fake environment for running Unity 8 shell
164Description: Fake environment for running Unity 8 shell
164 Provides fake implementations of some QML modules used by Unity 8 shell
165 Provides fake implementations of some QML modules used by Unity 8 shell
165 (e.g Ubuntu.Application) so that you can run it in a sandboxed environment.
166 (e.g Ubuntu.Application) so that you can run it in a sandboxed environment.
plugins/Unity/Launcher/CMakeLists.txt+1−1
@@ -1,6 +1,6 @@
1include(FindPkgConfig)
1include(FindPkgConfig)
2pkg_check_modules(LAUNCHER_API REQUIRED unity-shell-launcher=4)
2pkg_check_modules(LAUNCHER_API REQUIRED unity-shell-launcher=4)
3−pkg_check_modules(APPLICATION_API REQUIRED unity-shell-application=3)
3+pkg_check_modules(APPLICATION_API REQUIRED unity-shell-application=4)
4pkg_check_modules(GSETTINGS_QT REQUIRED gsettings-qt)
4pkg_check_modules(GSETTINGS_QT REQUIRED gsettings-qt)
5
5
6add_definitions(-DSM_BUSNAME=systemBus)
6add_definitions(-DSM_BUSNAME=systemBus)
po/gd.po+32−32
@@ -8,13 +8,13 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-09-18 20:12+0800\n"
10"POT-Creation-Date: 2014-09-18 20:12+0800\n"
11−"PO-Revision-Date: 2014-09-12 16:34+0000\n"
11+"PO-Revision-Date: 2014-09-25 12:40+0000\n"
12"Last-Translator: GunChleoc <Unknown>\n"
12"Last-Translator: GunChleoc <Unknown>\n"
13"Language-Team: Fòram na Gàidhlig\n"
13"Language-Team: Fòram na Gàidhlig\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-20 06:33+0000\n"
17+"X-Launchpad-Export-Date: 2014-09-26 06:51+0000\n"
18"X-Generator: Launchpad (build 17196)\n"
18"X-Generator: Launchpad (build 17196)\n"
19"Language: gd\n"
19"Language: gd\n"
20
20
@@ -22,12 +22,12 @@ msgstr ""
22msgid "Password: "
22msgid "Password: "
23msgstr "Facal-faire: "
23msgstr "Facal-faire: "
24
24
25−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:44
26−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:74
27msgid "Pin shortcut"
27msgid "Pin shortcut"
28msgstr "Prìnich ath-ghoirid"
28msgstr "Prìnich ath-ghoirid"
29
29
30−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:74
31msgid "Unpin shortcut"
31msgid "Unpin shortcut"
32msgstr "Neo-phrìnich an ath-ghoirid"
32msgstr "Neo-phrìnich an ath-ghoirid"
33
33
@@ -83,9 +83,9 @@ msgstr "Cuir a' chumhachd dheth"
83
83
84#: qml/Components/Dialogs.qml:157
84#: qml/Components/Dialogs.qml:157
85msgid "Restart"
85msgid "Restart"
86−msgstr ""
86+msgstr "Ath-thòisich"
87
87
88−#: qml/Components/Dialogs.qml:157
88+#: qml/Components/Dialogs.qml:167
89msgid "Cancel"
89msgid "Cancel"
90msgstr "Sguir dheth"
90msgstr "Sguir dheth"
91
91
@@ -168,36 +168,36 @@ msgstr "Shin thu, %1"
168msgid "Hello"
168msgid "Hello"
169msgstr "Shin thu"
169msgstr "Shin thu"
170
170
171−#: qml/Dash/GenericScopeView.qml:361
171+#: qml/Dash/GenericScopeView.qml:364 qml/Dash/GenericScopeView.qml:483
172msgid "See less"
172msgid "See less"
173msgstr "Seall nas lugha"
173msgstr "Seall nas lugha"
174
174
175−#: qml/Dash/GenericScopeView.qml:361
175+#: qml/Dash/GenericScopeView.qml:364
176msgid "See all"
176msgid "See all"
177msgstr "Seall na h-uile"
177msgstr "Seall na h-uile"
178
178
179−#: qml/Dash/GenericScopeView.qml:424 qml/Dash/PageHeader.qml:260
179+#: qml/Dash/GenericScopeView.qml:427 qml/Dash/PageHeader.qml:258
180#: qml/Panel/SearchIndicator.qml:27
180#: qml/Panel/SearchIndicator.qml:27
181msgid "Search"
181msgid "Search"
182msgstr "Lorg"
182msgstr "Lorg"
183
183
184−#: qml/Dash/PageHeader.qml:270
184+#: qml/Dash/PageHeader.qml:268
185msgid "Settings"
185msgid "Settings"
186msgstr "Roghainnean"
186msgstr "Roghainnean"
187
187
188−#: qml/Dash/PageHeader.qml:279
188+#: qml/Dash/PageHeader.qml:275
189msgid "Remove from Favorites"
189msgid "Remove from Favorites"
190msgstr "Thoir air falbh o na h-annsachdan"
190msgstr "Thoir air falbh o na h-annsachdan"
191
191
192−#: qml/Dash/PageHeader.qml:279
192+#: qml/Dash/PageHeader.qml:275
193msgid "Add to Favorites"
193msgid "Add to Favorites"
194msgstr "Cuir ris na h-annsachdan"
194msgstr "Cuir ris na h-annsachdan"
195
195
196−#: qml/Dash/Previews/PreviewActionCombo.qml:34
196+#: qml/Dash/Previews/PreviewActionCombo.qml:35
197msgid "More..."
197msgid "More..."
198msgstr "Barrachd..."
198msgstr "Barrachd..."
199
199
200−#: qml/Dash/Previews/PreviewActionCombo.qml:34
200+#: qml/Dash/Previews/PreviewActionCombo.qml:35
201msgid "Less..."
201msgid "Less..."
202msgstr "Nas lugha..."
202msgstr "Nas lugha..."
203
203
@@ -213,15 +213,15 @@ msgstr "Cuir lèirmheas ris"
213msgid "Send"
213msgid "Send"
214msgstr "Cuir"
214msgstr "Cuir"
215
215
216−#: qml/Dash/ScopesOverview.qml:201
216+#: qml/Dash/ScopesOverview.qml:206
217msgid "Manage Dash"
217msgid "Manage Dash"
218msgstr "Stiùirich an deas-bhòrd"
218msgstr "Stiùirich an deas-bhòrd"
219
219
220−#: qml/Dash/ScopesOverview.qml:417
220+#: qml/Dash/ScopesOverview.qml:428
221msgid "Done"
221msgid "Done"
222msgstr "Deiseil"
222msgstr "Deiseil"
223
223
224−#: qml/Dash/ScopesOverview.qml:443
224+#: qml/Dash/ScopesOverview.qml:454
225msgid "Store"
225msgid "Store"
226msgstr "Am bùth"
226msgstr "Am bùth"
227
227
@@ -257,15 +257,15 @@ msgstr "Can rud a-nis..."
257msgid "Speaking..."
257msgid "Speaking..."
258msgstr "A' bruidhinn..."
258msgstr "A' bruidhinn..."
259
259
260−#: qml/Notifications/NotificationMenuItemFactory.qml:105
260+#: qml/Notifications/NotificationMenuItemFactory.qml:108
261msgid "Show password"
261msgid "Show password"
262msgstr "Seall am facal-faire"
262msgstr "Seall am facal-faire"
263
263
264−#: qml/Notifications/NotificationMenuItemFactory.qml:120
264+#: qml/Notifications/NotificationMenuItemFactory.qml:124
265msgid "Enter SIM PIN"
265msgid "Enter SIM PIN"
266msgstr "Cuir a-steach PIN an t-SIM"
266msgstr "Cuir a-steach PIN an t-SIM"
267
267
268−#: qml/Notifications/NotificationMenuItemFactory.qml:121
268+#: qml/Notifications/NotificationMenuItemFactory.qml:125
269msgid "Sorry, incorrect PIN"
269msgid "Sorry, incorrect PIN"
270msgstr "Duilich ach tha a' PIN cearr"
270msgstr "Duilich ach tha a' PIN cearr"
271
271
@@ -309,45 +309,45 @@ msgstr "Thoir a' ghlas far an SIM"
309msgid "Roaming"
309msgid "Roaming"
310msgstr "Air fàrsan"
310msgstr "Air fàrsan"
311
311
312−#: qml/Shell.qml:279
312+#: qml/Shell.qml:292
313msgid "Enter your passphrase"
313msgid "Enter your passphrase"
314msgstr "Cuir an abairt-fhaire agad a-steach"
314msgstr "Cuir an abairt-fhaire agad a-steach"
315
315
316−#: qml/Shell.qml:280
316+#: qml/Shell.qml:293
317msgid "Sorry, incorrect passphrase"
317msgid "Sorry, incorrect passphrase"
318msgstr "Duilich ach tha an abairt-fhaire cearr"
318msgstr "Duilich ach tha an abairt-fhaire cearr"
319
319
320−#: qml/Shell.qml:282
320+#: qml/Shell.qml:295
321msgid "Enter your passcode"
321msgid "Enter your passcode"
322msgstr "Cuir an còd-faire agad a-steach"
322msgstr "Cuir an còd-faire agad a-steach"
323
323
324−#: qml/Shell.qml:283
324+#: qml/Shell.qml:296
325msgid "Sorry, incorrect passcode"
325msgid "Sorry, incorrect passcode"
326msgstr "Duilich ach tha an còd-faire cearr"
326msgstr "Duilich ach tha an còd-faire cearr"
327
327
328−#: qml/Shell.qml:286
328+#: qml/Shell.qml:299
329#, qt-format
329#, qt-format
330msgid "Enter your %1"
330msgid "Enter your %1"
331msgstr "Cuir a-steach a' %1 agad"
331msgstr "Cuir a-steach a' %1 agad"
332
332
333−#: qml/Shell.qml:287
333+#: qml/Shell.qml:300
334#, qt-format
334#, qt-format
335msgid "Sorry, incorrect %1"
335msgid "Sorry, incorrect %1"
336msgstr "Duilich ach tha a' %1 cearr"
336msgstr "Duilich ach tha a' %1 cearr"
337
337
338−#: qml/Shell.qml:323
338+#: qml/Shell.qml:335
339msgid "Sorry, incorrect passphrase."
339msgid "Sorry, incorrect passphrase."
340msgstr "Duilich ach tha an abairt-fhaire cearr."
340msgstr "Duilich ach tha an abairt-fhaire cearr."
341
341
342−#: qml/Shell.qml:324
342+#: qml/Shell.qml:336
343msgid "Sorry, incorrect passcode."
343msgid "Sorry, incorrect passcode."
344msgstr "Duilich ach tha an còd-faire cearr."
344msgstr "Duilich ach tha an còd-faire cearr."
345
345
346−#: qml/Shell.qml:325
346+#: qml/Shell.qml:337
347msgid "This will be your last attempt."
347msgid "This will be your last attempt."
348msgstr "Seo an oidhirp mu dheireadh agad."
348msgstr "Seo an oidhirp mu dheireadh agad."
349
349
350−#: qml/Shell.qml:327
350+#: qml/Shell.qml:339
351msgid ""
351msgid ""
352"If passphrase is entered incorrectly, your phone will conduct a factory "
352"If passphrase is entered incorrectly, your phone will conduct a factory "
353"reset and all personal data will be deleted."
353"reset and all personal data will be deleted."
@@ -356,7 +356,7 @@ msgstr ""
356"ath-shuidheachadh air roghainnean an fhactaraidh agus thèid gach dàta "
356"ath-shuidheachadh air roghainnean an fhactaraidh agus thèid gach dàta "
357"pearsanta a sguabadh às."
357"pearsanta a sguabadh às."
358
358
359−#: qml/Shell.qml:328
359+#: qml/Shell.qml:340
360msgid ""
360msgid ""
361"If passcode is entered incorrectly, your phone will conduct a factory reset "
361"If passcode is entered incorrectly, your phone will conduct a factory reset "
362"and all personal data will be deleted."
362"and all personal data will be deleted."
qml/Shell.qml+4
@@ -568,6 +568,10 @@ Item {
568 if (ApplicationManager.focusedApplicationId != "unity8-dash") {
568 if (ApplicationManager.focusedApplicationId != "unity8-dash") {
569 showDash()
569 showDash()
570 }
570 }
571+ if (greeter.shown) {
572+ launcher.fadeOut()
573+ greeter.hideRight()
574+ }
571 }
575 }
572 onDashSwipeChanged: {
576 onDashSwipeChanged: {
573 if (dashSwipe) {
577 if (dashSwipe) {
qml/Stages/ApplicationWindow.qml+16−1
@@ -37,6 +37,12 @@ Item {
37 readonly property string name: root.application ? root.application.name : ""
37 readonly property string name: root.application ? root.application.name : ""
38 readonly property url icon: root.application ? root.application.icon : ""
38 readonly property url icon: root.application ? root.application.icon : ""
39 readonly property int applicationState: root.application ? root.application.state : -1
39 readonly property int applicationState: root.application ? root.application.state : -1
40+ readonly property string splashTitle: root.application ? root.application.splashTitle : ""
41+ readonly property url splashImage: root.application ? root.application.splashImage : ""
42+ readonly property bool splashShowHeader: root.application ? root.application.splashShowHeader : true
43+ readonly property color splashColor: root.application ? root.application.splashColor : "#00000000"
44+ readonly property color splashColorHeader: root.application ? root.application.splashColorHeader : "#00000000"
45+ readonly property color splashColorFooter: root.application ? root.application.splashColorFooter : "#00000000"
40
46
41 // Whether the Application had a surface before but lost it.
47 // Whether the Application had a surface before but lost it.
42 property bool hadSurface: sessionContainer.surfaceContainer.hadSurface
48 property bool hadSurface: sessionContainer.surfaceContainer.hadSurface
@@ -104,7 +110,16 @@ Item {
104 active: false
110 active: false
105 anchors.fill: parent
111 anchors.fill: parent
106 sourceComponent: Component {
112 sourceComponent: Component {
107− Splash { name: d.name; image: d.icon }
113+ Splash {
114+ id: splash
115+ title: d.splashTitle ? d.splashTitle : d.name
116+ imageSource: d.splashImage
117+ icon: d.icon
118+ showHeader: d.splashShowHeader
119+ backgroundColor: d.splashColor
120+ headerColor: d.splashColorHeader
121+ footerColor: d.splashColorFooter
122+ }
108 }
123 }
109 }
124 }
110
125
qml/Stages/Dot.qmldeleted−25
@@ -1,25 +0,0 @@
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.0
18−import Ubuntu.Components 0.1
19−
20−Rectangle {
21− radius: width
22− width: units.dp(6)
23− height: width
24− color: UbuntuColors.orange
25−}
qml/Stages/MainViewStyle.qmlnew file+79
@@ -0,0 +1,79 @@
1+/*
2+ * Copyright 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 Lesser 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 Lesser General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU Lesser General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+import QtQuick 2.0
17+import Ubuntu.Components 1.1
18+
19+// FIXME: copied with slight modifications from Ubuntu UI Toolkit's Ambiance's theme
20+Item {
21+ // styling properties
22+ anchors.fill: parent
23+ z: -1
24+ id: mainViewStyle
25+
26+ /*!
27+ The background texture of the main view. The image will be drawn over the background color,
28+ so if it has (semi-)transparent pixels, in those pixels the background color will be visible.
29+ */
30+ property url backgroundSource: "graphics/background_paper.png"
31+ property var theme
32+
33+ Gradient {
34+ id: backgroundGradient
35+ GradientStop { position: 0.0; color: styledItem.headerColor }
36+ GradientStop { position: 0.83; color: styledItem.backgroundColor }
37+ GradientStop { position: 1.0; color: styledItem.footerColor }
38+ }
39+
40+ Rectangle {
41+ id: backgroundColor
42+ anchors.fill: parent
43+ color: styledItem.backgroundColor
44+ gradient: internals.isGradient ? backgroundGradient : null
45+ }
46+
47+ Image {
48+ id: backgroundTexture
49+ anchors.fill: parent
50+ source: mainViewStyle.theme.name === "Ambiance" ? mainViewStyle.backgroundSource : ""
51+ fillMode: Image.Tile
52+ asynchronous: true
53+ cache: false
54+ visible: status === Image.Ready
55+ }
56+
57+ QtObject {
58+ id: internals
59+ property bool isGradient: styledItem.backgroundColor != styledItem.headerColor ||
60+ styledItem.backgroundColor != styledItem.footerColor
61+ /*
62+ As we don't know the order the property bindings and onXXXChanged signals are evaluated
63+ we should rely only on one property when changing the theme to avoid intermediate
64+ theme changes due to properties being evaluated separately.
65+
66+ Qt bug: https://bugreports.qt-project.org/browse/QTBUG-11712
67+ */
68+ property string theme: (ColorUtils.luminance(styledItem.backgroundColor) >= 0.85) ? "Ambiance" :
69+ (isGradient ? "SuruGradient" : "SuruDark")
70+ }
71+
72+ // automatically select the appropriate theme depending on the background colors
73+ Binding {
74+ target: theme
75+ property: "name"
76+ value: internals.theme
77+ when: internals.theme !== ""
78+ }
79+}
qml/Stages/PageHeadStyle.qmlnew file+76
@@ -0,0 +1,76 @@
1+/*
2+ * Copyright 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 Lesser 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 Lesser General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU Lesser General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+import QtQuick 2.2
17+import Ubuntu.Components 1.1
18+import Ubuntu.Components.Styles 1.1 as Style
19+
20+// FIXME: copied with large modifications from Ubuntu UI Toolkit's Ambiance's theme
21+Style.PageHeadStyle {
22+ id: headerStyle
23+
24+ contentHeight: units.gu(7)
25+ separatorSource: "graphics/PageHeaderBaseDividerLight.sci"
26+ separatorBottomSource: "graphics/PageHeaderBaseDividerBottom.png"
27+ fontWeight: Font.Light
28+ fontSize: "x-large"
29+ textColor: styledItem.config.foregroundColor
30+ textLeftMargin: units.gu(2)
31+
32+ implicitHeight: headerStyle.contentHeight
33+
34+ property var theme
35+
36+ Label {
37+ anchors {
38+ left: parent.left
39+ leftMargin: headerStyle.textLeftMargin
40+ right: parent.right
41+ verticalCenter: parent.verticalCenter
42+ }
43+ LayoutMirroring.enabled: Qt.application.layoutDirection == Qt.RightToLeft
44+ text: styledItem.title
45+ font.weight: headerStyle.fontWeight
46+ fontSize: headerStyle.fontSize
47+ color: headerStyle.textColor
48+ elide: Text.ElideRight
49+ }
50+
51+ BorderImage {
52+ id: separator
53+ anchors {
54+ top: parent.bottom
55+ topMargin: separatorBottom.height
56+ left: parent.left
57+ right: parent.right
58+ }
59+ source: headerStyle.separatorSource
60+ height: styledItem.config.sections.model !== undefined ? units.gu(3) : units.gu(2)
61+ asynchronous: true
62+ cache: true
63+ }
64+
65+ Image {
66+ id: separatorBottom
67+ anchors {
68+ top: separator.bottom
69+ left: parent.left
70+ right: parent.right
71+ }
72+ source: headerStyle.separatorBottomSource
73+ asynchronous: true
74+ cache: true
75+ }
76+}
qml/Stages/PhoneStage.qml+2−2
@@ -14,7 +14,7 @@
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
15 */
16
16
17−import QtQuick 2.0
17+import QtQuick 2.2
18import Ubuntu.Components 0.1
18import Ubuntu.Components 0.1
19import Ubuntu.Gestures 0.1
19import Ubuntu.Gestures 0.1
20import Unity.Application 0.1
20import Unity.Application 0.1
@@ -320,7 +320,7 @@ Rectangle {
320 !snapAnimation.running &&
320 !snapAnimation.running &&
321 priv.animateX
321 priv.animateX
322 UbuntuNumberAnimation {
322 UbuntuNumberAnimation {
323− duration: UbuntuAnimation.FastDuration
323+ duration: UbuntuAnimation.BriskDuration
324 onRunningChanged: {
324 onRunningChanged: {
325 if (!running && root.inverseProgress == 0) {
325 if (!running && root.inverseProgress == 0) {
326 spreadView.focusChanging = false;
326 spreadView.focusChanging = false;
qml/Stages/Splash.qml+107−13
@@ -14,16 +14,101 @@
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15*/
15*/
16
16
17−import QtQuick 2.0
17+import QtQuick 2.2
18+import Ubuntu.Components 1.1
18−import Ubuntu.Components 0.1
19+import Ubuntu.Components.Themes 0.1
19import "../Components"
20import "../Components"
20
21
21−Rectangle {
22+import Ubuntu.Components.Themes.Ambiance 1.1 as Ambiance
23+
24+Item {
22 id: root
25 id: root
23− color: "black"
24
26
25− property string name: ""
27+ property color backgroundColor: d.undefinedColor
28+ property color headerColor: d.undefinedColor
29+ property color footerColor: d.undefinedColor
30+ property alias imageSource: overlaidImage.source
26− property url image: ""
31+ property url icon
32+ property alias title: header.title
33+ property alias showHeader: header.visible
34+
35+ Ambiance.Palette {
36+ id: ambiancePalette
37+ }
38+
39+ QtObject {
40+ id: d
41+
42+ // As specified in qtmir, it will set the color value to this for fields left undefined
43+ // This is also the default value of a color property in QML.
44+ readonly property color undefinedColor: "#00000000"
45+
46+ readonly property color defaultBackgroundColor: header.visible ? ambiancePalette.normal.background : "black"
47+
48+ // Splash screen that shows the application icon and splashTitle
49+ readonly property bool showIcon: overlaidImage.status == Image.Null && !root.showHeader
50+ }
51+
52+ StyledItem {
53+ id: styledItem
54+ anchors.fill: parent
55+
56+ // mimic API of toolkit's MainView component required by MainViewStyle
57+ property color backgroundColor: Qt.colorEqual(root.backgroundColor, d.undefinedColor) ? d.defaultBackgroundColor
58+ : root.backgroundColor
59+ property color headerColor: Qt.colorEqual(root.headerColor, d.undefinedColor) ? styledItem.backgroundColor
60+ : root.headerColor
61+ property color footerColor: Qt.colorEqual(root.footerColor, d.undefinedColor) ? styledItem.backgroundColor
62+ : root.footerColor
63+
64+ // FIXME: fake a Theme object as to expose the Palette corresponding to the backgroundColor (see MainViewStyle.qml)
65+ property var theme: QtObject {
66+ property string name
67+ property Palette palette: Qt.createQmlObject("import QtQuick 2.2;\
68+ import Ubuntu.Components.Themes.%1 1.1;\
69+ Palette {}".arg(styledItem.theme.name),
70+ styledItem, "dynamicPalette");
71+ }
72+
73+ // FIXME: should instead use future toolkit API:
74+ // style: theme.createStyleComponent("MainViewStyle.qml", styledItem)
75+ style: Component { MainViewStyle {theme: styledItem.theme} }
76+ }
77+
78+ StyledItem {
79+ id: header
80+ anchors {
81+ left: parent.left
82+ right: parent.right
83+ }
84+ visible: false
85+
86+ // mimic API of toolkit's AppHeader component required by PageHeadStyle
87+ property Item pageStack
88+ property Item contents
89+ property string title
90+ property var tabsModel
91+ property var config: QtObject {
92+ property color foregroundColor: styledItem.theme.palette.selected.backgroundText
93+ property var sections: QtObject {}
94+ }
95+
96+ // FIXME: should instead use future toolkit API:
97+ // style: theme.createStyleComponent("PageHeadStyle.qml", header)
98+ style: Component { PageHeadStyle {theme: styledItem.theme} }
99+ }
100+
101+ Image {
102+ id: overlaidImage
103+ anchors.centerIn: parent
104+ anchors.verticalCenterOffset: header.visible ? header.height / 2 : 0
105+ sourceSize {
106+ width: root.width
107+ height: root.height
108+ }
109+ asynchronous: true
110+ cache: false
111+ }
27
112
28 UbuntuShape {
113 UbuntuShape {
29 id: iconShape
114 id: iconShape
@@ -33,6 +118,8 @@ Rectangle {
33 width: units.gu(8)
118 width: units.gu(8)
34 height: units.gu(7.5)
119 height: units.gu(7.5)
35
120
121+ visible: d.showIcon
122+
36 radius: "medium"
123 radius: "medium"
37 borderSource: "none"
124 borderSource: "none"
38
125
@@ -40,24 +127,31 @@ Rectangle {
40 id: iconImage
127 id: iconImage
41 sourceSize.width: iconShape.width
128 sourceSize.width: iconShape.width
42 sourceSize.height: iconShape.height
129 sourceSize.height: iconShape.height
43− source: root.image
130+ source: d.showIcon ? root.icon : ""
44 fillMode: Image.PreserveAspectCrop
131 fillMode: Image.PreserveAspectCrop
45 }
132 }
46 }
133 }
47
134
48 Label {
135 Label {
49− text: root.name
136+ text: root.title
50 anchors.horizontalCenter: parent.horizontalCenter
137 anchors.horizontalCenter: parent.horizontalCenter
51 anchors.top: iconShape.bottom
138 anchors.top: iconShape.bottom
52 anchors.topMargin: units.gu(2)
139 anchors.topMargin: units.gu(2)
53 fontSize: "large"
140 fontSize: "large"
141+
142+ color: styledItem.theme.palette.selected.backgroundText
143+ visible: d.showIcon
54 }
144 }
55
145
56− WaitingDots {
146+ ActivityIndicator {
57− visible: parent.visible
147+ anchors.centerIn: header.visible ? parent : undefined
148+ anchors.verticalCenterOffset: header.visible ? header.height / 2 : 0
149+
58− anchors.horizontalCenter: parent.horizontalCenter
150+ anchors.horizontalCenter: header.visible ? undefined : parent.horizontalCenter
59− anchors.bottom: parent.bottom
151+ anchors.bottom: header.visible ? undefined : parent.bottom
60− anchors.bottomMargin: units.gu(12)
152+ anchors.bottomMargin: header.visible ? 0 : units.gu(12)
153+
154+ running: true
61 }
155 }
62
156
63 MouseArea {
157 MouseArea {
qml/Stages/WaitingDots.qmldeleted−76
@@ -1,76 +0,0 @@
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.2
18−import Ubuntu.Components 0.1
19−
20−Item {
21− id: waitingDots
22−
23− // center in parent; waitingDots has no size therefore anchors.centerIn cannot be used
24− x: parent.width / 2
25− y: parent.height / 2
26−
27− property var dots: [dot1, dot2, dot3]
28− property var vertices: [[-units.gu(1), -units.gu(1)],
29− [units.gu(1), -units.gu(1)],
30− [0, units.gu(1)]]
31− property int shift: 0
32−
33− function cycle () {
34− var n = vertices.length;
35− shift = (shift + 1) % n;
36−
37− for (var i = 0; i < n; i++) {
38− dots[i].x = vertices[(i+shift) % n][0];
39− dots[i].y = vertices[(i+shift) % n][1];
40− }
41− }
42−
43− Timer {
44− interval: 800
45− running: waitingDots.visible
46− repeat: true
47− triggeredOnStart: true
48− onTriggered: waitingDots.cycle()
49− }
50−
51−
52− Dot {
53− id: dot1
54− x: vertices[0][0]
55− y: vertices[0][1]
56− Behavior on x {XAnimator {duration: UbuntuAnimation.BriskDuration; easing: UbuntuAnimation.StandardEasing}}
57− Behavior on y {YAnimator {duration: UbuntuAnimation.BriskDuration; easing: UbuntuAnimation.StandardEasing}}
58− }
59−
60− Dot {
61− id: dot2
62− x: vertices[1][0]
63− y: vertices[1][1]
64− Behavior on x {XAnimator {duration: UbuntuAnimation.BriskDuration; easing: UbuntuAnimation.StandardEasing}}
65− Behavior on y {YAnimator {duration: UbuntuAnimation.BriskDuration; easing: UbuntuAnimation.StandardEasing}}
66−
67− }
68−
69− Dot {
70− id: dot3
71− x: vertices[2][0]
72− y: vertices[2][1]
73− Behavior on x {XAnimator {duration: UbuntuAnimation.BriskDuration; easing: UbuntuAnimation.StandardEasing}}
74− Behavior on y {YAnimator {duration: UbuntuAnimation.BriskDuration; easing: UbuntuAnimation.StandardEasing}}
75− }
76−}
qml/Stages/graphics/PageHeaderBaseDividerBottom@18.pngnew file

Binary file not shown.

qml/Stages/graphics/PageHeaderBaseDividerLight@18.pngnew file

Binary file not shown.

qml/Stages/graphics/PageHeaderBaseDividerLight@18.scinew file+5
@@ -0,0 +1,5 @@
1+border.top: 4
2+border.bottom: 0
3+border.left: 0
4+border.right: 0
5+source: PageHeaderBaseDividerLight@18.png
qml/Stages/graphics/background_paper@27.pngnew file

Binary file not shown.

tests/autopilot/unity8/indicators/tests/test_indicators.py+1−1
@@ -72,7 +72,7 @@ class IndicatorPageTitleMatchesWidgetTestCase(IndicatorTestCase):
72 ('Bluetooth', dict(indicator_name='indicator-bluetooth',
72 ('Bluetooth', dict(indicator_name='indicator-bluetooth',
73 title='Bluetooth')),
73 title='Bluetooth')),
74 ('Datetime', dict(indicator_name='indicator-datetime',
74 ('Datetime', dict(indicator_name='indicator-datetime',
75− title='Upcoming')),
75+ title='Upcoming events')),
76 ('Location', dict(indicator_name='indicator-location',
76 ('Location', dict(indicator_name='indicator-location',
77 title='Location')),
77 title='Location')),
78 ('Messaging', dict(indicator_name='indicator-messages',
78 ('Messaging', dict(indicator_name='indicator-messages',
tests/mocks/Unity/Application/ApplicationInfo.h+7
@@ -68,6 +68,13 @@ public:
68 void setFocused(bool value);
68 void setFocused(bool value);
69 bool focused() const override { return m_focused; }
69 bool focused() const override { return m_focused; }
70
70
71+ QString splashTitle() const override { return QString(); }
72+ QUrl splashImage() const override { return QUrl(); }
73+ bool splashShowHeader() const override { return false; }
74+ QColor splashColor() const override { return QColor(0,0,0,0); }
75+ QColor splashColorHeader() const override { return QColor(0,0,0,0); }
76+ QColor splashColorFooter() const override { return QColor(0,0,0,0); }
77+
71 QString screenshot() const { return m_screenshotFileName; }
78 QString screenshot() const { return m_screenshotFileName; }
72
79
73 void setFullscreen(bool value);
80 void setFullscreen(bool value);
tests/mocks/Unity/Application/CMakeLists.txt+1−1
@@ -1,4 +1,4 @@
1−pkg_check_modules(APPLICATION_API REQUIRED unity-shell-application=3)
1+pkg_check_modules(APPLICATION_API REQUIRED unity-shell-application=4)
2
2
3set(FakeUnityApplicationQml_SOURCES
3set(FakeUnityApplicationQml_SOURCES
4 plugin.cpp
4 plugin.cpp
tests/plugins/Unity/Launcher/CMakeLists.txt+1−1
@@ -1,6 +1,6 @@
1pkg_check_modules(GSETTINGS_QT REQUIRED gsettings-qt)
1pkg_check_modules(GSETTINGS_QT REQUIRED gsettings-qt)
2pkg_check_modules(LAUNCHER_API REQUIRED unity-shell-launcher=4)
2pkg_check_modules(LAUNCHER_API REQUIRED unity-shell-launcher=4)
3−pkg_check_modules(APPLICATION_API REQUIRED unity-shell-application=3)
3+pkg_check_modules(APPLICATION_API REQUIRED unity-shell-application=4)
4
4
5include_directories(
5include_directories(
6 ${CMAKE_CURRENT_BINARY_DIR}
6 ${CMAKE_CURRENT_BINARY_DIR}
tests/plugins/Unity/Launcher/launchermodeltest.cpp+6−1
@@ -43,7 +43,12 @@ public:
43 ApplicationInfoInterface::Stage stage() const { return ApplicationInfoInterface::MainStage; }
43 ApplicationInfoInterface::Stage stage() const { return ApplicationInfoInterface::MainStage; }
44 ApplicationInfoInterface::State state() const { return ApplicationInfoInterface::Running; }
44 ApplicationInfoInterface::State state() const { return ApplicationInfoInterface::Running; }
45 bool focused() const { return m_focused; }
45 bool focused() const { return m_focused; }
46+ QString splashTitle() const override { return QString(); }
46− QUrl screenshot() const { return QUrl(); }
47+ QUrl splashImage() const override { return QUrl(); }
48+ bool splashShowHeader() const override { return true; }
49+ QColor splashColor() const override { return QColor(0,0,0,0); }
50+ QColor splashColorHeader() const override { return QColor(0,0,0,0); }
51+ QColor splashColorFooter() const override { return QColor(0,0,0,0); }
47
52
48 // Methods used for mocking (not in the interface)
53 // Methods used for mocking (not in the interface)
49 void setFocused(bool focused) { m_focused = focused; Q_EMIT focusedChanged(focused); }
54 void setFocused(bool focused) { m_focused = focused; Q_EMIT focusedChanged(focused); }
tests/plugins/Utils/CMakeLists.txt+2−2
@@ -7,11 +7,11 @@ include_directories(
7macro(run_tests)
7macro(run_tests)
8 set(_test_list "")
8 set(_test_list "")
9 foreach(_test ${ARGN})
9 foreach(_test ${ARGN})
10− set(testCommand ${CMAKE_CURRENT_BINARY_DIR}/${_test}Exec
10+ set(testCommand env "LC_ALL=C" ${CMAKE_CURRENT_BINARY_DIR}/${_test}Exec
11 -o ${CMAKE_BINARY_DIR}/${_test}.xml,xunitxml
11 -o ${CMAKE_BINARY_DIR}/${_test}.xml,xunitxml
12 -o -,txt)
12 -o -,txt)
13 add_test(NAME ${_test} COMMAND ${testCommand})
13 add_test(NAME ${_test} COMMAND ${testCommand})
14− add_custom_target(${_test} env "LC_ALL=C" ${testCommand})
14+ add_custom_target(${_test} ${testCommand})
15 add_executable(${_test}Exec ${_test}.cpp modeltest.cpp)
15 add_executable(${_test}Exec ${_test}.cpp modeltest.cpp)
16 qt5_use_modules(${_test}Exec Test Core Qml)
16 qt5_use_modules(${_test}Exec Test Core Qml)
17 target_link_libraries(${_test}Exec
17 target_link_libraries(${_test}Exec
tests/qmltests/CMakeLists.txt+1
@@ -87,3 +87,4 @@ add_qml_test(Stages PhoneStage ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/
87add_qml_test(Stages SpreadDelegate ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics:${CMAKE_BINARY_DIR}/tests/mocks/LightDM/single")
87add_qml_test(Stages SpreadDelegate ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics:${CMAKE_BINARY_DIR}/tests/mocks/LightDM/single")
88add_qml_test(Stages SurfaceContainer ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics:${CMAKE_BINARY_DIR}/tests/mocks/LightDM/single")
88add_qml_test(Stages SurfaceContainer ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics:${CMAKE_BINARY_DIR}/tests/mocks/LightDM/single")
89add_qml_test(Stages SessionContainer ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics:${CMAKE_BINARY_DIR}/tests/mocks/LightDM/single")
89add_qml_test(Stages SessionContainer ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics:${CMAKE_BINARY_DIR}/tests/mocks/LightDM/single")
90+add_qml_test(Stages Splash)
tests/qmltests/Components/tst_DragHandle/HorizontalShowable.qml+1−1
@@ -49,7 +49,7 @@ Showable {
49 showAnimation: StandardAnimation { property: animatedProp; to: propValueWhenShown }
49 showAnimation: StandardAnimation { property: animatedProp; to: propValueWhenShown }
50 hideAnimation: StandardAnimation { property: animatedProp; to: propValueWhenHidden }
50 hideAnimation: StandardAnimation { property: animatedProp; to: propValueWhenHidden }
51
51
52− Image { source: "UnityLogo.png"; anchors.fill: parent }
52+ Image { source: "../../UnityLogo.png"; anchors.fill: parent }
53
53
54 DragHandle {
54 DragHandle {
55 objectName: "leftwardsDragHandle"
55 objectName: "leftwardsDragHandle"
tests/qmltests/Components/tst_DragHandle/VerticalShowable.qml+1−1
@@ -49,7 +49,7 @@ Showable {
49 showAnimation: StandardAnimation { property: animatedProp; to: propValueWhenShown }
49 showAnimation: StandardAnimation { property: animatedProp; to: propValueWhenShown }
50 hideAnimation: StandardAnimation { property: animatedProp; to: propValueWhenHidden }
50 hideAnimation: StandardAnimation { property: animatedProp; to: propValueWhenHidden }
51
51
52− Image { source: "UnityLogo.png"; anchors.fill: parent }
52+ Image { source: "../../UnityLogo.png"; anchors.fill: parent }
53
53
54 DragHandle {
54 DragHandle {
55 objectName: "upwardsDragHandle"
55 objectName: "upwardsDragHandle"
tests/qmltests/Stages/tst_Splash.qmlnew file+117
@@ -0,0 +1,117 @@
1+/*
2+ * Copyright 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.0
18+import QtTest 1.0
19+import Unity.Test 0.1 as UT
20+import ".."
21+import "../../../qml/Stages"
22+import Ubuntu.Components 0.1
23+import Unity.Application 0.1
24+
25+Rectangle {
26+ color: "black"
27+ id: root
28+ width: units.gu(70)
29+ height: units.gu(70)
30+
31+ Component.onCompleted: {
32+ root.fakeApplication = ApplicationManager.add("gallery-app");
33+ root.fakeApplication.manualSurfaceCreation = true;
34+ root.fakeApplication.setState(ApplicationInfoInterface.Starting);
35+ }
36+ property QtObject fakeApplication
37+
38+ Component {
39+ id: splashComponent
40+ Splash {
41+ anchors.fill: parent
42+ title: "Splash Title"
43+ showHeader: showHeaderCheckbox.checked
44+ icon: fakeApplication ? fakeApplication.icon : ""
45+ imageSource: imageSourceCheckbox.checked ? "../UnityLogo.png" : ""
46+ backgroundColor: backgroundColorCheckbox.checked ? "darkorange" : "#00000000"
47+ headerColor: headerColorCheckbox.checked ? "mediumseagreen" : "#00000000"
48+ footerColor: footerColorCheckbox.checked ? "teal" : "#00000000"
49+ }
50+ }
51+ Loader {
52+ id: splashLoader
53+ anchors {
54+ top: parent.top
55+ bottom: parent.bottom
56+ left: parent.left
57+ }
58+ width: units.gu(40)
59+ sourceComponent: splashComponent
60+ }
61+
62+ Rectangle {
63+ color: "white"
64+ anchors {
65+ top: parent.top
66+ bottom: parent.bottom
67+ left: splashLoader.right
68+ right: parent.right
69+ }
70+
71+ Column {
72+ anchors { left: parent.left; right: parent.right; top: parent.top; margins: units.gu(1) }
73+ spacing: units.gu(1)
74+
75+ Row {
76+ anchors { left: parent.left; right: parent.right }
77+ CheckBox {id: showHeaderCheckbox; checked: false; }
78+ Label { text: "showHeader"; anchors.verticalCenter: parent.verticalCenter }
79+ }
80+ Row {
81+ anchors { left: parent.left; right: parent.right }
82+ CheckBox {id: imageSourceCheckbox; checked: false; }
83+ Label { text: "imageSource"; anchors.verticalCenter: parent.verticalCenter }
84+ }
85+ Row {
86+ anchors { left: parent.left; right: parent.right }
87+ CheckBox {id: backgroundColorCheckbox; checked: false; }
88+ Label { text: "custom backgroundColor"; anchors.verticalCenter: parent.verticalCenter }
89+ }
90+ Row {
91+ anchors { left: parent.left; right: parent.right }
92+ CheckBox {id: headerColorCheckbox; checked: false; }
93+ Label { text: "custom headerColor"; anchors.verticalCenter: parent.verticalCenter }
94+ }
95+ Row {
96+ anchors { left: parent.left; right: parent.right }
97+ CheckBox {id: footerColorCheckbox; checked: false; }
98+ Label { text: "custom footerColor"; anchors.verticalCenter: parent.verticalCenter }
99+ }
100+ }
101+ }
102+
103+ UT.UnityTestCase {
104+ id: testCase
105+ name: "Splash"
106+ when: windowShown
107+
108+ function cleanup() {
109+ // reload our test subject to get it in a fresh state once again
110+ splashLoader.active = false;
111+ surfaceCheckbox.checked = false;
112+ splashLoader.active = true;
113+ }
114+
115+ // No automated tests so far. Used only for manual testing at the moment.
116+ }
117+}
tests/qmltests/Components/tst_DragHandle/UnityLogo.png → tests/qmltests/UnityLogo.pngrenamed

Binary file not shown.

tests/qmltests/tst_Shell.qml+19
@@ -548,5 +548,24 @@ Row {
548 expectFail("", "Unlock on boot temporarily disabled");
548 expectFail("", "Unlock on boot temporarily disabled");
549 tryCompare(unlockAllModemsSpy, "count", 1)
549 tryCompare(unlockAllModemsSpy, "count", 1)
550 }
550 }
551+
552+ function test_leftEdgeDragOnGreeter_data() {
553+ return [
554+ {tag: "short swipe", targetX: shell.width / 3, unlocked: false},
555+ {tag: "long swipe", targetX: shell.width / 3 * 2, unlocked: true}
556+ ]
557+ }
558+
559+ function test_leftEdgeDragOnGreeter(data) {
560+ var greeter = findChild(shell, "greeter");
561+ greeter.show();
562+ tryCompare(greeter, "showProgress", 1);
563+
564+ var touchStartX = 2;
565+ var touchStartY = shell.height / 2;
566+ touchFlick(shell, touchStartX, touchStartY, data.targetX, touchStartY);
567+
568+ tryCompare(greeter, "showProgress", data.unlocked ? 0 : 1);
569+ }
551 }
570 }
552}
571}