on xenial help sign in
Merge unity8
commita2f099dfe6ae2c9d2e84337b699a1121495ea0d1 authorAlbert Astals <albert.astals@canonical.com> dateWed 26 Nov 2014, 09:30 (12 years ago) parent98d2a72be59376
39 files changed+476−515
CMakeLists.txt+1 debian/changelog+60 debian/control+3−3 plugins/Dash/CardAttributes.qml+1−3 plugins/Dash/CardCreator.js+1−1 plugins/Utils/CMakeLists.txt+1−1 po/ca.po+4−4 po/ca@valencia.po+23−23 po/is.po+32−28 po/ja.po+33−34 po/nb.po+24−24 po/ro.po+23−23 po/zh_TW.po+26−26 qml/Components/Lockscreen.qml+15 qml/Components/ResponsiveFlowView.qml−74 qml/Dash/CardTool.qml+1−1 qml/Greeter/Greeter.qml+1−1 qml/Greeter/GreeterContent.qml+1−18 qml/Launcher/LauncherPanel.qml+33−7 qml/Notifications/NotificationMenuItemFactory.qml+6 qml/Notifications/ShapedIcon.qml+1−1 qml/Panel/IndicatorItem.qml+1−2 qml/Shell.qml+41−32 qml/Stages/PhoneStage.qml+2−2 qml/Stages/SessionContainer.qml+4 qml/Stages/SpreadDelegate.qml+12−2 qml/Stages/TabletStage.qml+2−2 tests/mocks/Unity/Application/Session.h+1−1 tests/plugins/Dash/cardcreator/6.res+1−1 tests/qmltests/CMakeLists.txt−1 tests/qmltests/Components/tst_ResponsiveFlowView.qml−191 tests/qmltests/Dash/tst_GenericScopeView.qml+2−2 tests/qmltests/Dash/tst_PreviewListView.qml+2−2 tests/qmltests/Launcher/tst_Launcher.qml+18 tests/qmltests/Panel/tst_IndicatorsBar.qml+1−1 tests/qmltests/Stages/tst_PhoneStage.qml+33−3 tests/qmltests/Stages/tst_SessionContainer.qml+35 tests/qmltests/Stages/tst_SpreadDelegate.qml+4−1 tests/qmltests/tst_ShellWithPin.qml+27
CMakeLists.txt+1
@@ -53,6 +53,7 @@ find_package(Qt5Qml 5.2 REQUIRED)
5353find_package(Qt5Quick 5.2 REQUIRED)
5454find_package(Qt5Gui 5.2 REQUIRED)
5555find_package(Qt5DBus 5.2 REQUIRED)
56+find_package(Qt5Concurrent 5.2 REQUIRED)
5657
5758# Standard install paths
5859include(GNUInstallDirs)
debian/changelog+60
@@ -1,3 +1,63 @@
1+unity8 (8.01+15.04.20141125.2-0ubuntu1) vivid; urgency=low
2+
3+ [ Michael Zanetti ]
4+ * improve snapping after dragging
5+ * Make the launcher BFB rounded on one end (LP: #1382596)
6+ * disable swipeToClose while some snapping is happening (LP: #1378938)
7+ * increase threshold and avoid jumping in SpreadDelegate dragging (LP:
8+ #1352842, #1350803)
9+
10+ [ Ying-Chun Liu ]
11+ * Notifications should be on right side when wide. (LP: 1379384) (LP:
12+ #1379384)
13+
14+ [ Albert Astals ]
15+ * Fix qml warnings
16+ * Fix some qmluitests
17+
18+ [ Lars Uebernickel ]
19+ * Use Icon instead of StatusIcon
20+
21+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Tue, 25 Nov 2014 13:54:47 +0000
22+
23+unity8 (8.01+15.04.20141117-0ubuntu1) vivid; urgency=low
24+
25+ [ josharenson ]
26+ * Return focus to the application after a tusted session overlay is
27+ closing. (LP: #1381292)
28+
29+ [ Josh Arenson ]
30+ * Return focus to the application after a tusted session overlay is
31+ closing. (LP: #1381292)
32+
33+ [ Albert Astals ]
34+ * Remove unused ResponsiveFlowView
35+ * Fix a few cmake warnings when running ./build.sh in a clean checkout
36+
37+ [ Mirco Müller ]
38+ * Make sure non-square icons are not cropped. (LP: #1378417)
39+
40+ [ Michael Terry ]
41+ * Drop the "EARLY ALPHA" scare label when running in testing mode.
42+
43+ [ Michael Zanetti ]
44+ * unify Greeter and Lockscreen wallpaper again
45+ * hide quicklist when launcher hides (LP: #1387088)
46+ * Keep applications suspended while lockscreen is shown (LP: #1378126)
47+ * change spread background color to 111111
48+
49+ [ Omer Akram ]
50+ * show password when tapped on the 'Show password' label, not just the
51+ checkbox. (LP: #1389832)
52+
53+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Mon, 17 Nov 2014 13:48:33 +0000
54+
55+unity8 (8.01+15.04.20141107.2-0ubuntu2) vivid; urgency=medium
56+
57+ * No-change rebuild against Qt 5.3.2.
58+
59+ -- Timo Jyrinki <timo-jyrinki@ubuntu.com> Sat, 08 Nov 2014 13:50:11 +0200
60+
161unity8 (8.01+15.04.20141107.2-0ubuntu1) vivid; urgency=low
262
363 [ Michael Terry ]
debian/control+3−3
@@ -44,7 +44,7 @@ Build-Depends: cmake,
4444 qtdeclarative5-private-dev (>= 5.2.1),
4545 qtdeclarative5-qtmultimedia-plugin,
4646 qtdeclarative5-ubuntu-settings-components (>= 0.4),
47− qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 0.1.49) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 0.1.49),
47+ qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.1.1239) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.1.1239),
4848 ttf-ubuntu-font-family,
4949Standards-Version: 3.9.4
5050Homepage: http://launchpad.net/unity
@@ -58,7 +58,7 @@ X-Ubuntu-Use-Langpack: yes
5858Package: indicators-client
5959Architecture: amd64 armhf i386
6060Depends: qmenumodel-qml (>= 0.2.8),
61− qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 0.1.49) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 0.1.49),
61+ qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.1.1239) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.1.1239),
6262 unity8 (= ${binary:Version}),
6363 ${misc:Depends},
6464 ${shlibs:Depends},
@@ -108,7 +108,7 @@ Architecture: all
108108Depends: qml-module-qtquick-layouts,
109109 qtdeclarative5-ubuntu-settings-components (>= 0.4),
110110 qtdeclarative5-ubuntu-thumbnailer0.1 | ubuntu-thumbnailer-impl,
111− qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 0.1.49) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 0.1.49),
111+ qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.1.1239) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.1.1239),
112112 qtdeclarative5-unity-notifications-plugin (>= 0.1.2) | unity-notifications-impl,
113113 ubuntu-thumbnailer-impl-0,
114114 unity-application-impl-4,
plugins/Dash/CardAttributes.qml+1−3
@@ -17,7 +17,6 @@
1717import QtQuick 2.2
1818import QtQuick.Layouts 1.1
1919import Ubuntu.Components 1.1
20−import Ubuntu.Settings.Components 0.1
2120
2221GridLayout {
2322 id: grid
@@ -47,10 +46,9 @@ GridLayout {
4746 Layout.maximumWidth: Math.max(icon.width, label.x + label.implicitWidth)
4847 Layout.fillWidth: true
4948 height: units.gu(2)
50− StatusIcon {
49+ Icon {
5150 id: icon
5251 height: units.gu(2)
53− sets: ["actions", "status", "apps"]
5452 source: "icon" in modelData && modelData["icon"] || ""
5553 color: grid.color
5654 }
plugins/Dash/CardCreator.js+1−1
@@ -225,7 +225,7 @@ var kTitleLabelCode = 'Label { \n\
225225
226226// %1 is used as extra anchors of emblemIcon
227227// %2 is used as color of emblemIcon
228−var kEmblemIconCode = 'StatusIcon { \n\
228+var kEmblemIconCode = 'Icon { \n\
229229 id: emblemIcon; \n\
230230 objectName: "emblemIcon"; \n\
231231 anchors { \n\
plugins/Utils/CMakeLists.txt+1−1
@@ -33,6 +33,6 @@ target_link_libraries(Utils-qml ${GIO_LDFLAGS})
3333# files directly in targets.
3434set_target_properties(Utils-qml PROPERTIES COMPILE_FLAGS -fvisibility=default)
3535
36−qt5_use_modules(Utils-qml Qml Quick DBus Network XmlPatterns Gui Concurrent)
36+qt5_use_modules(Utils-qml Qml Quick DBus Network Gui)
3737
3838add_unity8_plugin(Utils 0.1 Utils TARGETS Utils-qml)
po/ca.po+4−4
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-11-07 10:59+0100\n"
11−"PO-Revision-Date: 2014-10-07 10:51+0000\n"
11+"PO-Revision-Date: 2014-11-10 09:22+0000\n"
1212"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
1313"Language-Team: Catalan <ca@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-11-09 06:54+0000\n"
19−"X-Generator: Launchpad (build 17231)\n"
18+"X-Launchpad-Export-Date: 2014-11-11 07:11+0000\n"
19+"X-Generator: Launchpad (build 17241)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:130
2222msgid "Password: "
@@ -168,7 +168,7 @@ msgstr ""
168168
169169#: qml/Components/Lockscreen.qml:223
170170msgid "Return to Call"
171−msgstr ""
171+msgstr "Torna a la trucada"
172172
173173#: qml/Components/Lockscreen.qml:223
174174msgid "Emergency Call"
po/ca@valencia.po+23−23
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-11-07 10:59+0100\n"
11−"PO-Revision-Date: 2014-10-15 14:39+0000\n"
11+"PO-Revision-Date: 2014-11-23 07:17+0000\n"
1212"Last-Translator: Pau Iranzo <Unknown>\n"
1313"Language-Team: Catalan <ca@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-11-09 06:54+0000\n"
19−"X-Generator: Launchpad (build 17231)\n"
18+"X-Launchpad-Export-Date: 2014-11-24 06:20+0000\n"
19+"X-Generator: Launchpad (build 17252)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:130
2222msgid "Password: "
@@ -168,7 +168,7 @@ msgstr ""
168168
169169#: qml/Components/Lockscreen.qml:223
170170msgid "Return to Call"
171−msgstr ""
171+msgstr "Torna a la trucada"
172172
173173#: qml/Components/Lockscreen.qml:223
174174msgid "Emergency Call"
@@ -267,31 +267,31 @@ msgstr "Feu un toc per tornar a la cridada..."
267267msgid "Conference"
268268msgstr "Conferència"
269269
270−#: qml/Panel/Indicators/MenuItemFactory.qml:643
270+#: qml/Panel/Indicators/MenuItemFactory.qml:615
271271msgid "Nothing is playing"
272272msgstr "No s'està reproduint res"
273273
274−#: qml/Panel/Indicators/MenuItemFactory.qml:791
274+#: qml/Panel/Indicators/MenuItemFactory.qml:763
275275msgid "In queue…"
276276msgstr "A la cua..."
277277
278−#: qml/Panel/Indicators/MenuItemFactory.qml:795
278+#: qml/Panel/Indicators/MenuItemFactory.qml:767
279279msgid "Downloading"
280280msgstr "S'està baixant"
281281
282−#: qml/Panel/Indicators/MenuItemFactory.qml:797
282+#: qml/Panel/Indicators/MenuItemFactory.qml:769
283283msgid "Paused, tap to resume"
284284msgstr "En pausa, feu un toc per continuar"
285285
286−#: qml/Panel/Indicators/MenuItemFactory.qml:799
286+#: qml/Panel/Indicators/MenuItemFactory.qml:771
287287msgid "Canceled"
288288msgstr "S'ha cancel·lat"
289289
290−#: qml/Panel/Indicators/MenuItemFactory.qml:801
290+#: qml/Panel/Indicators/MenuItemFactory.qml:773
291291msgid "Finished"
292292msgstr "S'ha finalitzat"
293293
294−#: qml/Panel/Indicators/MenuItemFactory.qml:803
294+#: qml/Panel/Indicators/MenuItemFactory.qml:775
295295msgid "Failed, tap to retry"
296296msgstr "Ha fallat, feu un toc per tornar-ho a intentar"
297297
@@ -303,49 +303,49 @@ msgstr "Desbloca la SIM"
303303msgid "Roaming"
304304msgstr "Itinerància"
305305
306−#: qml/Shell.qml:391
306+#: qml/Shell.qml:381
307307msgid "Enter passphrase"
308308msgstr "Introduïu la contrasenya"
309309
310−#: qml/Shell.qml:392
310+#: qml/Shell.qml:382
311311msgid "Sorry, incorrect passphrase"
312312msgstr "La contrasenya no és correcta"
313313
314−#: qml/Shell.qml:393
314+#: qml/Shell.qml:383
315315msgid "Please re-enter"
316316msgstr "Torneu-ho a introduir"
317317
318−#: qml/Shell.qml:395
318+#: qml/Shell.qml:385
319319msgid "Enter passcode"
320320msgstr "Introduïu el codi d'accés"
321321
322−#: qml/Shell.qml:396
322+#: qml/Shell.qml:386
323323msgid "Sorry, incorrect passcode"
324324msgstr "El codi d'accés no és correcte"
325325
326−#: qml/Shell.qml:399
326+#: qml/Shell.qml:389
327327#, qt-format
328328msgid "Enter %1"
329329msgstr "Introduïu: %1"
330330
331−#: qml/Shell.qml:400
331+#: qml/Shell.qml:390
332332#, qt-format
333333msgid "Sorry, incorrect %1"
334334msgstr "Incorrecte (%1)"
335335
336−#: qml/Shell.qml:441
336+#: qml/Shell.qml:431
337337msgid "Sorry, incorrect passphrase."
338338msgstr "La contrasenya és incorrecta"
339339
340−#: qml/Shell.qml:442
340+#: qml/Shell.qml:432
341341msgid "Sorry, incorrect passcode."
342342msgstr "El codi d'accés no és correcte"
343343
344−#: qml/Shell.qml:443
344+#: qml/Shell.qml:433
345345msgid "This will be your last attempt."
346346msgstr "Este serà el darrer intent."
347347
348−#: qml/Shell.qml:445
348+#: qml/Shell.qml:435
349349msgid ""
350350"If passphrase is entered incorrectly, your phone will conduct a factory "
351351"reset and all personal data will be deleted."
@@ -354,7 +354,7 @@ msgstr ""
354354"reinicialitzarà a l'estat de fàbrica i se suprimiran totes les dades "
355355"personals."
356356
357−#: qml/Shell.qml:446
357+#: qml/Shell.qml:436
358358msgid ""
359359"If passcode is entered incorrectly, your phone will conduct a factory reset "
360360"and all personal data will be deleted."
po/is.po+32−28
@@ -10,15 +10,15 @@ msgstr ""
1010"Project-Id-Version: po_unity8-is\n"
1111"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1212"POT-Creation-Date: 2014-11-07 10:59+0100\n"
13−"PO-Revision-Date: 2014-10-09 10:49+0000\n"
13+"PO-Revision-Date: 2014-11-13 09:32+0000\n"
1414"Last-Translator: Sveinn í Felli <sv1@fellsnet.is>\n"
1515"Language-Team: Icelandic <translation-team-is@lists.sourceforge.net>\n"
1616"MIME-Version: 1.0\n"
1717"Content-Type: text/plain; charset=UTF-8\n"
1818"Content-Transfer-Encoding: 8bit\n"
1919"Plural-Forms: nplurals=2; plural=n != 1;\n"
20−"X-Launchpad-Export-Date: 2014-11-09 06:54+0000\n"
21−"X-Generator: Launchpad (build 17231)\n"
20+"X-Launchpad-Export-Date: 2014-11-14 06:34+0000\n"
21+"X-Generator: Launchpad (build 17241)\n"
2222"Language: is\n"
2323
2424#: plugins/LightDM/Greeter.cpp:130
@@ -41,10 +41,14 @@ msgstr "Tæki læst"
4141#: qml/Components/DelayedLockscreen.qml:62
4242msgid "You have been locked out due to too many failed passphrase attempts."
4343msgstr ""
44+"Það er búið að loka á þig vegna of margra tilrauna við innsetningu "
45+"lykilfrasa."
4446
4547#: qml/Components/DelayedLockscreen.qml:63
4648msgid "You have been locked out due to too many failed passcode attempts."
4749msgstr ""
50+"Það er búið að loka á þig vegna of margra tilrauna við innsetningu "
51+"aðgangskóða."
4852
4953#: qml/Components/DelayedLockscreen.qml:72
5054#, qt-format
@@ -162,7 +166,7 @@ msgstr ""
162166
163167#: qml/Components/Lockscreen.qml:223
164168msgid "Return to Call"
165−msgstr ""
169+msgstr "Snúa aftur í símtal"
166170
167171#: qml/Components/Lockscreen.qml:223
168172msgid "Emergency Call"
@@ -219,7 +223,7 @@ msgstr "Senda"
219223
220224#: qml/Dash/PullToRefreshScopeStyle.qml:55
221225msgid "Pull to refresh…"
222−msgstr ""
226+msgstr "Toga til að endurlesa..."
223227
224228#: qml/Dash/PullToRefreshScopeStyle.qml:60
225229msgid "Release to refresh…"
@@ -227,7 +231,7 @@ msgstr "Slepptu til að endurlesa..."
227231
228232#: qml/Dash/ScopesOverview.qml:215
229233msgid "Manage Scopes"
230−msgstr ""
234+msgstr "Sýsla með leitarsvið"
231235
232236#: qml/Dash/ScopesOverview.qml:437
233237msgid "Done"
@@ -261,31 +265,31 @@ msgstr "Slá til að svara símtali..."
261265msgid "Conference"
262266msgstr "Ráðstefna"
263267
264−#: qml/Panel/Indicators/MenuItemFactory.qml:643
268+#: qml/Panel/Indicators/MenuItemFactory.qml:615
265269msgid "Nothing is playing"
266−msgstr ""
270+msgstr "Ekkert er í afspilun"
267271
268−#: qml/Panel/Indicators/MenuItemFactory.qml:791
272+#: qml/Panel/Indicators/MenuItemFactory.qml:763
269273msgid "In queue…"
270274msgstr "Í biðröð..."
271275
272−#: qml/Panel/Indicators/MenuItemFactory.qml:795
276+#: qml/Panel/Indicators/MenuItemFactory.qml:767
273277msgid "Downloading"
274278msgstr "Sæki"
275279
276−#: qml/Panel/Indicators/MenuItemFactory.qml:797
280+#: qml/Panel/Indicators/MenuItemFactory.qml:769
277281msgid "Paused, tap to resume"
278282msgstr "Í bið, sláðu létt til að halda áfram"
279283
280−#: qml/Panel/Indicators/MenuItemFactory.qml:799
284+#: qml/Panel/Indicators/MenuItemFactory.qml:771
281285msgid "Canceled"
282286msgstr "Hætt við"
283287
284−#: qml/Panel/Indicators/MenuItemFactory.qml:801
288+#: qml/Panel/Indicators/MenuItemFactory.qml:773
285289msgid "Finished"
286290msgstr "Lokið"
287291
288−#: qml/Panel/Indicators/MenuItemFactory.qml:803
292+#: qml/Panel/Indicators/MenuItemFactory.qml:775
289293msgid "Failed, tap to retry"
290294msgstr "Mistókst, sláðu létt til að reyna aftur"
291295
@@ -297,49 +301,49 @@ msgstr "Aflæsa SIM-korti"
297301msgid "Roaming"
298302msgstr "Ráphamur"
299303
300−#: qml/Shell.qml:391
304+#: qml/Shell.qml:381
301305msgid "Enter passphrase"
302−msgstr ""
306+msgstr "Settu inn lykilfrasa"
303307
304−#: qml/Shell.qml:392
308+#: qml/Shell.qml:382
305309msgid "Sorry, incorrect passphrase"
306310msgstr "Því miður, rangt lykilorð"
307311
308−#: qml/Shell.qml:393
312+#: qml/Shell.qml:383
309313msgid "Please re-enter"
310314msgstr "Settu aftur inn"
311315
312−#: qml/Shell.qml:395
316+#: qml/Shell.qml:385
313317msgid "Enter passcode"
314−msgstr ""
318+msgstr "Settu inn aðgangskóða"
315319
316−#: qml/Shell.qml:396
320+#: qml/Shell.qml:386
317321msgid "Sorry, incorrect passcode"
318322msgstr "Því miður, rangur aðgangskóði"
319323
320−#: qml/Shell.qml:399
324+#: qml/Shell.qml:389
321325#, qt-format
322326msgid "Enter %1"
323327msgstr "Settu inn %1"
324328
325−#: qml/Shell.qml:400
329+#: qml/Shell.qml:390
326330#, qt-format
327331msgid "Sorry, incorrect %1"
328332msgstr "Því miður, rangt %1"
329333
330−#: qml/Shell.qml:441
334+#: qml/Shell.qml:431
331335msgid "Sorry, incorrect passphrase."
332336msgstr "Því miður, rangt lykilorð."
333337
334−#: qml/Shell.qml:442
338+#: qml/Shell.qml:432
335339msgid "Sorry, incorrect passcode."
336340msgstr "Því miður, rangur aðgangskóði."
337341
338−#: qml/Shell.qml:443
342+#: qml/Shell.qml:433
339343msgid "This will be your last attempt."
340344msgstr "Þetta mun verða síðasta tilraunin þín."
341345
342−#: qml/Shell.qml:445
346+#: qml/Shell.qml:435
343347msgid ""
344348"If passphrase is entered incorrectly, your phone will conduct a factory "
345349"reset and all personal data will be deleted."
@@ -347,7 +351,7 @@ msgstr ""
347351"Ef lykilorð er rangt, mun síminn frumstilla allt á verksmiðjustillingar og "
348352"öllum einkagögnum verður eytt."
349353
350−#: qml/Shell.qml:446
354+#: qml/Shell.qml:436
351355msgid ""
352356"If passcode is entered incorrectly, your phone will conduct a factory reset "
353357"and all personal data will be deleted."
po/ja.po+33−34
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-11-07 10:59+0100\n"
11−"PO-Revision-Date: 2014-09-18 09:47+0000\n"
12−"Last-Translator: Mitsuya Shibata <mty.shibata@gmail.com>\n"
11+"PO-Revision-Date: 2014-11-20 05:08+0000\n"
12+"Last-Translator: Kentaro Kazuhama <Unknown>\n"
1313"Language-Team: Japanese <ja@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-11-09 06:54+0000\n"
19−"X-Generator: Launchpad (build 17231)\n"
18+"X-Launchpad-Export-Date: 2014-11-21 06:49+0000\n"
19+"X-Generator: Launchpad (build 17252)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:130
2222msgid "Password: "
@@ -33,22 +33,21 @@ msgstr "ショートカットを削除する"
3333
3434#: qml/Components/DelayedLockscreen.qml:47
3535msgid "Device Locked"
36−msgstr ""
36+msgstr "デバイスをロックしました"
3737
3838#: qml/Components/DelayedLockscreen.qml:62
3939msgid "You have been locked out due to too many failed passphrase attempts."
40−msgstr ""
40+msgstr "パスフレーズの入力失敗が多すぎたため、デバイスをロックしました。"
4141
4242#: qml/Components/DelayedLockscreen.qml:63
4343msgid "You have been locked out due to too many failed passcode attempts."
44−msgstr ""
44+msgstr "パスコードの入力失敗が多すぎたため、デバイスをロックしました。"
4545
4646#: qml/Components/DelayedLockscreen.qml:72
4747#, qt-format
4848msgid "Please wait %1 minute and then try again…"
4949msgid_plural "Please wait %1 minutes and then try again…"
50−msgstr[0] ""
51−msgstr[1] ""
50+msgstr[0] "%1 分待ってからやり直してください…"
5251
5352#: qml/Components/Dialogs.qml:74
5453msgid "Log out"
@@ -212,15 +211,15 @@ msgstr "送信"
212211
213212#: qml/Dash/PullToRefreshScopeStyle.qml:55
214213msgid "Pull to refresh…"
215−msgstr ""
214+msgstr "引いて更新…"
216215
217216#: qml/Dash/PullToRefreshScopeStyle.qml:60
218217msgid "Release to refresh…"
219−msgstr ""
218+msgstr "指を離して更新…"
220219
221220#: qml/Dash/ScopesOverview.qml:215
222221msgid "Manage Scopes"
223−msgstr ""
222+msgstr "Scopeの管理"
224223
225224#: qml/Dash/ScopesOverview.qml:437
226225msgid "Done"
@@ -254,31 +253,31 @@ msgstr "タップすると通話に戻ります..."
254253msgid "Conference"
255254msgstr "グループ通話"
256255
257−#: qml/Panel/Indicators/MenuItemFactory.qml:643
256+#: qml/Panel/Indicators/MenuItemFactory.qml:615
258257msgid "Nothing is playing"
259258msgstr ""
260259
261−#: qml/Panel/Indicators/MenuItemFactory.qml:791
260+#: qml/Panel/Indicators/MenuItemFactory.qml:763
262261msgid "In queue…"
263262msgstr "開始待ち..."
264263
265−#: qml/Panel/Indicators/MenuItemFactory.qml:795
264+#: qml/Panel/Indicators/MenuItemFactory.qml:767
266265msgid "Downloading"
267266msgstr "ダウンロード中"
268267
269−#: qml/Panel/Indicators/MenuItemFactory.qml:797
268+#: qml/Panel/Indicators/MenuItemFactory.qml:769
270269msgid "Paused, tap to resume"
271270msgstr "停止中、再開するにはタップしてください"
272271
273−#: qml/Panel/Indicators/MenuItemFactory.qml:799
272+#: qml/Panel/Indicators/MenuItemFactory.qml:771
274273msgid "Canceled"
275274msgstr "中止しました"
276275
277−#: qml/Panel/Indicators/MenuItemFactory.qml:801
276+#: qml/Panel/Indicators/MenuItemFactory.qml:773
278277msgid "Finished"
279278msgstr "完了しました"
280279
281−#: qml/Panel/Indicators/MenuItemFactory.qml:803
280+#: qml/Panel/Indicators/MenuItemFactory.qml:775
282281msgid "Failed, tap to retry"
283282msgstr "失敗しました、再試行するにはタップしてください"
284283
@@ -290,55 +289,55 @@ msgstr "SIMのアンロック"
290289msgid "Roaming"
291290msgstr "ローミング"
292291
293−#: qml/Shell.qml:391
292+#: qml/Shell.qml:381
294293msgid "Enter passphrase"
295294msgstr "パスフレーズを入力"
296295
297−#: qml/Shell.qml:392
296+#: qml/Shell.qml:382
298297msgid "Sorry, incorrect passphrase"
299298msgstr "パスフレーズが違います"
300299
301−#: qml/Shell.qml:393
300+#: qml/Shell.qml:383
302301msgid "Please re-enter"
303−msgstr ""
302+msgstr "再入力してください"
304303
305−#: qml/Shell.qml:395
304+#: qml/Shell.qml:385
306305msgid "Enter passcode"
307−msgstr ""
306+msgstr "パスコードを入力"
308307
309−#: qml/Shell.qml:396
308+#: qml/Shell.qml:386
310309msgid "Sorry, incorrect passcode"
311310msgstr "パスコードが違います"
312311
313−#: qml/Shell.qml:399
312+#: qml/Shell.qml:389
314313#, qt-format
315314msgid "Enter %1"
316−msgstr ""
315+msgstr "%1 を入力"
317316
318−#: qml/Shell.qml:400
317+#: qml/Shell.qml:390
319318#, qt-format
320319msgid "Sorry, incorrect %1"
321320msgstr "%1が違います"
322321
323−#: qml/Shell.qml:441
322+#: qml/Shell.qml:431
324323msgid "Sorry, incorrect passphrase."
325324msgstr "パスフレーズが間違っています。"
326325
327−#: qml/Shell.qml:442
326+#: qml/Shell.qml:432
328327msgid "Sorry, incorrect passcode."
329328msgstr "パスコードが間違っています。"
330329
331−#: qml/Shell.qml:443
330+#: qml/Shell.qml:433
332331msgid "This will be your last attempt."
333332msgstr "これが最後のチャンスです。"
334333
335−#: qml/Shell.qml:445
334+#: qml/Shell.qml:435
336335msgid ""
337336"If passphrase is entered incorrectly, your phone will conduct a factory "
338337"reset and all personal data will be deleted."
339338msgstr "パスフレーズが間違っている場合、ファクトリーリセットを実施し、すべての個人データは削除されます。"
340339
341−#: qml/Shell.qml:446
340+#: qml/Shell.qml:436
342341msgid ""
343342"If passcode is entered incorrectly, your phone will conduct a factory reset "
344343"and all personal data will be deleted."
po/nb.po+24−24
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-11-07 10:59+0100\n"
11−"PO-Revision-Date: 2014-10-07 10:32+0000\n"
12−"Last-Translator: Åka Sikrom <Unknown>\n"
11+"PO-Revision-Date: 2014-11-12 19:57+0000\n"
12+"Last-Translator: Ari Börde Kröyer <Unknown>\n"
1313"Language-Team: Norwegian Bokmal <nb@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-11-09 06:54+0000\n"
19−"X-Generator: Launchpad (build 17231)\n"
18+"X-Launchpad-Export-Date: 2014-11-13 06:37+0000\n"
19+"X-Generator: Launchpad (build 17241)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:130
2222msgid "Password: "
@@ -160,7 +160,7 @@ msgstr ""
160160
161161#: qml/Components/Lockscreen.qml:223
162162msgid "Return to Call"
163−msgstr ""
163+msgstr "Tilbake til samtale"
164164
165165#: qml/Components/Lockscreen.qml:223
166166msgid "Emergency Call"
@@ -259,31 +259,31 @@ msgstr "Trykk for å gå tilbake til anrop …"
259259msgid "Conference"
260260msgstr "Konferanse"
261261
262−#: qml/Panel/Indicators/MenuItemFactory.qml:643
262+#: qml/Panel/Indicators/MenuItemFactory.qml:615
263263msgid "Nothing is playing"
264264msgstr "Ingenting spilles nå"
265265
266−#: qml/Panel/Indicators/MenuItemFactory.qml:791
266+#: qml/Panel/Indicators/MenuItemFactory.qml:763
267267msgid "In queue…"
268268msgstr "I kø …"
269269
270−#: qml/Panel/Indicators/MenuItemFactory.qml:795
270+#: qml/Panel/Indicators/MenuItemFactory.qml:767
271271msgid "Downloading"
272272msgstr "Laster ned"
273273
274−#: qml/Panel/Indicators/MenuItemFactory.qml:797
274+#: qml/Panel/Indicators/MenuItemFactory.qml:769
275275msgid "Paused, tap to resume"
276276msgstr "Satt på pause (trykk for å fortsette)"
277277
278−#: qml/Panel/Indicators/MenuItemFactory.qml:799
278+#: qml/Panel/Indicators/MenuItemFactory.qml:771
279279msgid "Canceled"
280280msgstr "Avbrutt"
281281
282−#: qml/Panel/Indicators/MenuItemFactory.qml:801
282+#: qml/Panel/Indicators/MenuItemFactory.qml:773
283283msgid "Finished"
284284msgstr "Ferdig"
285285
286−#: qml/Panel/Indicators/MenuItemFactory.qml:803
286+#: qml/Panel/Indicators/MenuItemFactory.qml:775
287287msgid "Failed, tap to retry"
288288msgstr "Feilet. Trykk for å prøve på nytt"
289289
@@ -295,49 +295,49 @@ msgstr "Lås opp SIM"
295295msgid "Roaming"
296296msgstr "Fremmednett"
297297
298−#: qml/Shell.qml:391
298+#: qml/Shell.qml:381
299299msgid "Enter passphrase"
300300msgstr "Skriv inn passordfrase"
301301
302−#: qml/Shell.qml:392
302+#: qml/Shell.qml:382
303303msgid "Sorry, incorrect passphrase"
304304msgstr "Feil passordfrase"
305305
306−#: qml/Shell.qml:393
306+#: qml/Shell.qml:383
307307msgid "Please re-enter"
308308msgstr "Skriv inn på nytt"
309309
310−#: qml/Shell.qml:395
310+#: qml/Shell.qml:385
311311msgid "Enter passcode"
312312msgstr "Tast kode"
313313
314−#: qml/Shell.qml:396
314+#: qml/Shell.qml:386
315315msgid "Sorry, incorrect passcode"
316316msgstr "Feil kode"
317317
318−#: qml/Shell.qml:399
318+#: qml/Shell.qml:389
319319#, qt-format
320320msgid "Enter %1"
321321msgstr "Skriv inn %1"
322322
323−#: qml/Shell.qml:400
323+#: qml/Shell.qml:390
324324#, qt-format
325325msgid "Sorry, incorrect %1"
326326msgstr "Feil %1"
327327
328−#: qml/Shell.qml:441
328+#: qml/Shell.qml:431
329329msgid "Sorry, incorrect passphrase."
330330msgstr "Feil passordfrase."
331331
332−#: qml/Shell.qml:442
332+#: qml/Shell.qml:432
333333msgid "Sorry, incorrect passcode."
334334msgstr "Feil kode."
335335
336−#: qml/Shell.qml:443
336+#: qml/Shell.qml:433
337337msgid "This will be your last attempt."
338338msgstr "Dette er ditt siste forsøk."
339339
340−#: qml/Shell.qml:445
340+#: qml/Shell.qml:435
341341msgid ""
342342"If passphrase is entered incorrectly, your phone will conduct a factory "
343343"reset and all personal data will be deleted."
@@ -345,7 +345,7 @@ msgstr ""
345345"Hvis du skriver feil passordfrase en gang til, tilbakestilles telefonen til "
346346"fabrikkinnstillinger, og alle personlige data slettes."
347347
348−#: qml/Shell.qml:446
348+#: qml/Shell.qml:436
349349msgid ""
350350"If passcode is entered incorrectly, your phone will conduct a factory reset "
351351"and all personal data will be deleted."
po/ro.po+23−23
@@ -8,7 +8,7 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-11-07 10:59+0100\n"
11−"PO-Revision-Date: 2014-10-07 15:54+0000\n"
11+"PO-Revision-Date: 2014-11-18 12:09+0000\n"
1212"Last-Translator: Marian Vasile <marianvasile1972@gmail.com>\n"
1313"Language-Team: Romanian <ro@li.org>\n"
1414"MIME-Version: 1.0\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 "
1818"== 0) && (n != 0))) ? 2: 1));\n"
19−"X-Launchpad-Export-Date: 2014-11-09 06:54+0000\n"
20−"X-Generator: Launchpad (build 17231)\n"
19+"X-Launchpad-Export-Date: 2014-11-19 06:24+0000\n"
20+"X-Generator: Launchpad (build 17252)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:130
2323msgid "Password: "
@@ -166,7 +166,7 @@ msgstr ""
166166
167167#: qml/Components/Lockscreen.qml:223
168168msgid "Return to Call"
169−msgstr ""
169+msgstr "Reveniți la funcția de apelare"
170170
171171#: qml/Components/Lockscreen.qml:223
172172msgid "Emergency Call"
@@ -265,31 +265,31 @@ msgstr "Atingeți pentru a vă întoarce la convorbire..."
265265msgid "Conference"
266266msgstr "Conferință"
267267
268−#: qml/Panel/Indicators/MenuItemFactory.qml:643
268+#: qml/Panel/Indicators/MenuItemFactory.qml:615
269269msgid "Nothing is playing"
270270msgstr "Nu se redă nimic"
271271
272−#: qml/Panel/Indicators/MenuItemFactory.qml:791
272+#: qml/Panel/Indicators/MenuItemFactory.qml:763
273273msgid "In queue…"
274274msgstr "În așteptare..."
275275
276−#: qml/Panel/Indicators/MenuItemFactory.qml:795
276+#: qml/Panel/Indicators/MenuItemFactory.qml:767
277277msgid "Downloading"
278278msgstr "Se descarcă"
279279
280−#: qml/Panel/Indicators/MenuItemFactory.qml:797
280+#: qml/Panel/Indicators/MenuItemFactory.qml:769
281281msgid "Paused, tap to resume"
282282msgstr "În pauză, atingeți pentru a relua"
283283
284−#: qml/Panel/Indicators/MenuItemFactory.qml:799
284+#: qml/Panel/Indicators/MenuItemFactory.qml:771
285285msgid "Canceled"
286286msgstr "Anulată"
287287
288−#: qml/Panel/Indicators/MenuItemFactory.qml:801
288+#: qml/Panel/Indicators/MenuItemFactory.qml:773
289289msgid "Finished"
290290msgstr "Finalizată"
291291
292−#: qml/Panel/Indicators/MenuItemFactory.qml:803
292+#: qml/Panel/Indicators/MenuItemFactory.qml:775
293293msgid "Failed, tap to retry"
294294msgstr "Eșec, atingeți pentru a încerca din nou"
295295
@@ -301,49 +301,49 @@ msgstr "Deblocare SIM"
301301msgid "Roaming"
302302msgstr "Roaming"
303303
304−#: qml/Shell.qml:391
304+#: qml/Shell.qml:381
305305msgid "Enter passphrase"
306306msgstr "Introduceți fraza parolă"
307307
308−#: qml/Shell.qml:392
308+#: qml/Shell.qml:382
309309msgid "Sorry, incorrect passphrase"
310310msgstr "Frază secretă incorectă"
311311
312−#: qml/Shell.qml:393
312+#: qml/Shell.qml:383
313313msgid "Please re-enter"
314314msgstr "Introduceți din nou"
315315
316−#: qml/Shell.qml:395
316+#: qml/Shell.qml:385
317317msgid "Enter passcode"
318318msgstr "Introduceți parola"
319319
320−#: qml/Shell.qml:396
320+#: qml/Shell.qml:386
321321msgid "Sorry, incorrect passcode"
322322msgstr "Parolă incorectă"
323323
324−#: qml/Shell.qml:399
324+#: qml/Shell.qml:389
325325#, qt-format
326326msgid "Enter %1"
327327msgstr "Introducere %1"
328328
329−#: qml/Shell.qml:400
329+#: qml/Shell.qml:390
330330#, qt-format
331331msgid "Sorry, incorrect %1"
332332msgstr "%1 incorectă"
333333
334−#: qml/Shell.qml:441
334+#: qml/Shell.qml:431
335335msgid "Sorry, incorrect passphrase."
336336msgstr "Frază parolă greșită"
337337
338−#: qml/Shell.qml:442
338+#: qml/Shell.qml:432
339339msgid "Sorry, incorrect passcode."
340340msgstr "Parolă greșită"
341341
342−#: qml/Shell.qml:443
342+#: qml/Shell.qml:433
343343msgid "This will be your last attempt."
344344msgstr "Aceasta va fi ultima încercare"
345345
346−#: qml/Shell.qml:445
346+#: qml/Shell.qml:435
347347msgid ""
348348"If passphrase is entered incorrectly, your phone will conduct a factory "
349349"reset and all personal data will be deleted."
@@ -352,7 +352,7 @@ msgstr ""
352352"configurările inițiale, ale fabricantului, iar toate datele personale vor fi "
353353"șterse."
354354
355−#: qml/Shell.qml:446
355+#: qml/Shell.qml:436
356356msgid ""
357357"If passcode is entered incorrectly, your phone will conduct a factory reset "
358358"and all personal data will be deleted."
po/zh_TW.po+26−26
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-11-07 10:59+0100\n"
11−"PO-Revision-Date: 2014-10-16 14:55+0000\n"
12−"Last-Translator: Po-Hsu Lin <po-hsu.lin@canonical.com>\n"
11+"PO-Revision-Date: 2014-11-19 15:05+0000\n"
12+"Last-Translator: Walter Cheuk <wwycheuk@gmail.com>\n"
1313"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-11-09 06:54+0000\n"
19−"X-Generator: Launchpad (build 17231)\n"
18+"X-Launchpad-Export-Date: 2014-11-20 06:27+0000\n"
19+"X-Generator: Launchpad (build 17252)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:130
2222msgid "Password: "
@@ -37,11 +37,11 @@ msgstr "裝置已鎖定"
3737
3838#: qml/Components/DelayedLockscreen.qml:62
3939msgid "You have been locked out due to too many failed passphrase attempts."
40−msgstr ""
40+msgstr "因為嘗試輸入太多次錯誤的密碼,裝置已經被鎖定。"
4141
4242#: qml/Components/DelayedLockscreen.qml:63
4343msgid "You have been locked out due to too many failed passcode attempts."
44−msgstr ""
44+msgstr "因為嘗試輸入太多次錯誤的密碼,裝置已經被鎖定。"
4545
4646#: qml/Components/DelayedLockscreen.qml:72
4747#, qt-format
@@ -252,31 +252,31 @@ msgstr "輕觸可返回通話…"
252252msgid "Conference"
253253msgstr "會議"
254254
255−#: qml/Panel/Indicators/MenuItemFactory.qml:643
255+#: qml/Panel/Indicators/MenuItemFactory.qml:615
256256msgid "Nothing is playing"
257−msgstr ""
257+msgstr "無影音播放中"
258258
259−#: qml/Panel/Indicators/MenuItemFactory.qml:791
259+#: qml/Panel/Indicators/MenuItemFactory.qml:763
260260msgid "In queue…"
261261msgstr "佇列中…"
262262
263−#: qml/Panel/Indicators/MenuItemFactory.qml:795
263+#: qml/Panel/Indicators/MenuItemFactory.qml:767
264264msgid "Downloading"
265265msgstr "下載中"
266266
267−#: qml/Panel/Indicators/MenuItemFactory.qml:797
267+#: qml/Panel/Indicators/MenuItemFactory.qml:769
268268msgid "Paused, tap to resume"
269269msgstr "已暫停,輕觸可繼續"
270270
271−#: qml/Panel/Indicators/MenuItemFactory.qml:799
271+#: qml/Panel/Indicators/MenuItemFactory.qml:771
272272msgid "Canceled"
273273msgstr "已取消"
274274
275−#: qml/Panel/Indicators/MenuItemFactory.qml:801
275+#: qml/Panel/Indicators/MenuItemFactory.qml:773
276276msgid "Finished"
277277msgstr "已完成"
278278
279−#: qml/Panel/Indicators/MenuItemFactory.qml:803
279+#: qml/Panel/Indicators/MenuItemFactory.qml:775
280280msgid "Failed, tap to retry"
281281msgstr "失敗,輕觸可重試"
282282
@@ -288,55 +288,55 @@ msgstr "為 SIM 卡解鎖"
288288msgid "Roaming"
289289msgstr "漫遊"
290290
291−#: qml/Shell.qml:391
291+#: qml/Shell.qml:381
292292msgid "Enter passphrase"
293293msgstr "輸入密語"
294294
295−#: qml/Shell.qml:392
295+#: qml/Shell.qml:382
296296msgid "Sorry, incorrect passphrase"
297297msgstr "抱歉,密語不對"
298298
299−#: qml/Shell.qml:393
299+#: qml/Shell.qml:383
300300msgid "Please re-enter"
301301msgstr "請再輸入"
302302
303−#: qml/Shell.qml:395
303+#: qml/Shell.qml:385
304304msgid "Enter passcode"
305305msgstr "輸入 passcode"
306306
307−#: qml/Shell.qml:396
307+#: qml/Shell.qml:386
308308msgid "Sorry, incorrect passcode"
309309msgstr "抱歉,passcode 不對"
310310
311−#: qml/Shell.qml:399
311+#: qml/Shell.qml:389
312312#, qt-format
313313msgid "Enter %1"
314314msgstr "輸入 %1"
315315
316−#: qml/Shell.qml:400
316+#: qml/Shell.qml:390
317317#, qt-format
318318msgid "Sorry, incorrect %1"
319319msgstr "抱歉,%1不對"
320320
321−#: qml/Shell.qml:441
321+#: qml/Shell.qml:431
322322msgid "Sorry, incorrect passphrase."
323323msgstr "抱歉,密語不對"
324324
325−#: qml/Shell.qml:442
325+#: qml/Shell.qml:432
326326msgid "Sorry, incorrect passcode."
327327msgstr "抱歉,passcode 不對。"
328328
329−#: qml/Shell.qml:443
329+#: qml/Shell.qml:433
330330msgid "This will be your last attempt."
331331msgstr "這將會是您最後一次嘗試的機會。"
332332
333−#: qml/Shell.qml:445
333+#: qml/Shell.qml:435
334334msgid ""
335335"If passphrase is entered incorrectly, your phone will conduct a factory "
336336"reset and all personal data will be deleted."
337337msgstr "如輸入的密語不對,本電話會進行重設,所有個人資料都會刪除。"
338338
339−#: qml/Shell.qml:446
339+#: qml/Shell.qml:436
340340msgid ""
341341"If passcode is entered incorrectly, your phone will conduct a factory reset "
342342"and all personal data will be deleted."
qml/Components/Lockscreen.qml+15
@@ -56,6 +56,9 @@ Showable {
5656 property int maxPinLength: -1
5757
5858 property url background: ""
59+ // Use this to put a black overlay above the background
60+ // 0: normal background, 1: black background
61+ property real darkenBackground: 0
5962
6063 readonly property string passphrase: (pinPadLoader.item && pinPadLoader.item.passphrase) ? pinPadLoader.item.passphrase : ""
6164
@@ -100,10 +103,22 @@ Showable {
100103 anchors {
101104 fill: parent
102105 }
106+ // Limit how much memory we'll reserve for this image
107+ sourceSize.height: height
108+ sourceSize.width: width
103109 source: root.required ? root.background : ""
104110 fillMode: Image.PreserveAspectCrop
105111 }
106112
113+ // This is to
114+ // a) align it with the greeter and
115+ // b) keep the white fonts readable on bright backgrounds
116+ Rectangle {
117+ anchors.fill: parent
118+ color: "black"
119+ opacity: root.darkenBackground
120+ }
121+
107122 MouseArea {
108123 anchors.fill: root
109124 onClicked: {
qml/Components/ResponsiveFlowView.qmldeleted−74
@@ -1,74 +0,0 @@
1−/*
2− * Copyright (C) 2013 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−Item {
21− id: root
22−
23− property int minimumHorizontalSpacing: units.gu(0.5)
24− // property int minimumNumberOfColumns: 2 // FIXME: not implemented
25− property int maximumNumberOfColumns: 6
26− readonly property int columns: flow.columns
27− property alias verticalSpacing: flow.verticalSpacing
28− property alias horizontalSpacing: flow.horizontalSpacing
29− property int referenceDelegateWidth
30− property alias model: repeater.model
31− property alias delegate: repeater.delegate
32− readonly property int cellWidth: referenceDelegateWidth + horizontalSpacing
33− readonly property int cellHeight: referenceDelegateWidth + verticalSpacing
34− property alias move: flow.move
35−
36− height: flow.height + flow.anchors.topMargin
37−
38− Flow {
39− id: flow
40− anchors {
41− left: parent.left
42− right: parent.right
43− top: parent.top
44− leftMargin: margin/2
45− rightMargin: margin/2
46− topMargin: verticalSpacing
47− }
48−
49− function pixelToGU(value) {
50− return Math.floor(value / units.gu(1));
51− }
52−
53− function spacingForColumns(columns) {
54− // spacing between columns as an integer number of GU, the remainder goes in the margins
55− var spacingGU = pixelToGU(allocatableVerticalSpace / columns);
56− return units.gu(spacingGU);
57− }
58−
59− function columnsForSpacing(space) {
60− // minimum margin is half of the spacing
61− return Math.floor((parent.width - space/2) / (referenceDelegateWidth + space));
62− }
63−
64− property real allocatableVerticalSpace: parent.width - columns * referenceDelegateWidth
65− property int columns: Math.min(columnsForSpacing(minimumHorizontalSpacing), maximumNumberOfColumns)
66− property real horizontalSpacing: spacingForColumns(columns)
67− property real verticalSpacing: horizontalSpacing
68− property int margin: allocatableVerticalSpace - columns * horizontalSpacing
69−
70− Repeater {
71− id: repeater
72− }
73− }
74−}
qml/Dash/CardTool.qml+1−1
@@ -178,7 +178,7 @@ Item {
178178 property var model: []
179179 property bool hasAttributes: {
180180 var attributes = components["attributes"];
181− var hasAttributesFlag = (attributes != undefined) && attributes["field"];
181+ var hasAttributesFlag = (attributes != undefined) && (attributes["field"] != undefined);
182182
183183 if (hasAttributesFlag) {
184184 if (attributes["max-count"]) {
qml/Greeter/Greeter.qml+1−1
@@ -25,7 +25,7 @@ Showable {
2525 enabled: shown
2626 created: greeterContentLoader.status == Loader.Ready && greeterContentLoader.item.ready
2727
28− property url defaultBackground
28+ property url background
2929 property bool loadContent: required
3030
3131 // 1 when fully shown and 0 when fully hidden
qml/Greeter/GreeterContent.qml+1−18
@@ -48,9 +48,6 @@ Item {
4848 color: "black"
4949 }
5050
51− property url backgroundValue: AccountsService.backgroundFile != undefined && AccountsService.backgroundFile.length > 0 ? AccountsService.backgroundFile : greeter.defaultBackground
52− onBackgroundValueChanged: background.source = backgroundValue
53−
5451 CrossFadeImage {
5552 id: background
5653 objectName: "greeterBackground"
@@ -62,21 +59,7 @@ Item {
6259 // Limit how much memory we'll reserve for this image
6360 sourceSize.height: height
6461 sourceSize.width: width
65− }
66−
67− // See Shell.qml's backgroundSettings treatment for why we need a separate
68− // Image, but it boils down to avoiding binding loop detection.
69− Image {
70− source: background.source
71− height: 0
72− width: 0
73− sourceSize.height: 0
74− sourceSize.width: 0
75− onStatusChanged: {
76− if (status == Image.Error && source != greeter.defaultBackground) {
77− background.source = greeter.defaultBackground
78− }
79− }
62+ source: greeter.background
8063 }
8164
8265 Rectangle {
qml/Launcher/LauncherPanel.qml+33−7
@@ -38,18 +38,31 @@ Rectangle {
3838 signal applicationSelected(string appId)
3939 signal showDashHome()
4040
41+ onXChanged: {
42+ if (quickList.state == "open") {
43+ quickList.state = ""
44+ }
45+ }
46+
4147 Column {
4248 id: mainColumn
4349 anchors {
4450 fill: parent
4551 }
4652
47− Rectangle {
53+ Item {
4854 objectName: "buttonShowDashHome"
4955 width: parent.width
5056 height: units.gu(7)
51− color: UbuntuColors.orange
52− z: 1
57+
58+ UbuntuShape {
59+ anchors {
60+ fill: parent
61+ topMargin: -units.gu(2)
62+ }
63+ borderSource: "none"
64+ color: UbuntuColors.orange
65+ }
5366
5467 Image {
5568 objectName: "dashItem"
@@ -131,6 +144,20 @@ Rectangle {
131144 property bool draggingTransitionRunning: false
132145 property int scheduledMoveTo: -1
133146
147+ UbuntuNumberAnimation {
148+ id: snapToBottomAnimation
149+ target: launcherListView
150+ property: "contentY"
151+ to: launcherListView.originY
152+ }
153+
154+ UbuntuNumberAnimation {
155+ id: snapToTopAnimation
156+ target: launcherListView
157+ property: "contentY"
158+ to: launcherListView.contentHeight - launcherListView.height + launcherListView.originY
159+ }
160+
134161 displaced: Transition {
135162 NumberAnimation { properties: "x,y"; duration: UbuntuAnimation.FastDuration; easing: UbuntuAnimation.StandardEasing }
136163 }
@@ -336,10 +363,9 @@ Rectangle {
336363 progressiveScrollingTimer.stop();
337364 launcherListView.interactive = true;
338365 if (droppedIndex >= launcherListView.count - 2 && postDragging) {
339− launcherListView.flick(0, -launcherListView.clickFlickSpeed);
340− }
341− if (droppedIndex == 0 && postDragging) {
342− launcherListView.flick(0, launcherListView.clickFlickSpeed);
366+ snapToBottomAnimation.start();
367+ } else if (droppedIndex < 2 && postDragging) {
368+ snapToTopAnimation.start();
343369 }
344370 }
345371
qml/Notifications/NotificationMenuItemFactory.qml+6
@@ -127,6 +127,11 @@ Loader {
127127 anchors.verticalCenter: checkBox.verticalCenter
128128 text: i18n.tr("Show password")
129129 color: notification.sdFontColor
130+
131+ MouseArea {
132+ anchors.fill: parent
133+ onClicked: { checkBox.checked = !checkBox.checked }
134+ }
130135 }
131136 }
132137 }
@@ -145,6 +150,7 @@ Loader {
145150 errorText: errorAction.valid ? errorAction.state : ""
146151 retryText: notification.body
147152 background: shell.background
153+ darkenBackground: 0.4
148154
149155 onEntered: {
150156 menuModel.changeState(menuIndex, passphrase);
qml/Notifications/ShapedIcon.qml+1−1
@@ -35,6 +35,6 @@ Item {
3535 anchors.fill: parent
3636 visible: !shaped
3737 source: fileSource
38− fillMode: Image.PreserveAspectCrop
38+ fillMode: Image.PreserveAspectFit
3939 }
4040}
qml/Panel/IndicatorItem.qml+1−2
@@ -99,12 +99,11 @@ IndicatorDelegate {
9999
100100 model: d.useFallbackIcon ? [ "image://theme/settings" ] : root.icons
101101
102− StatusIcon {
102+ Icon {
103103 id: itemImage
104104 objectName: "icon"+index
105105 height: iconHeight
106106 source: modelData
107− sets: ["status", "actions"]
108107 color: root.color
109108 Behavior on color { ColorAnimation { duration: UbuntuAnimation.FastDuration; easing: UbuntuAnimation.StandardEasing } }
110109
qml/Shell.qml+41−32
@@ -51,7 +51,8 @@ Item {
5151
5252 property real edgeSize: units.gu(2)
5353 property url defaultBackground: Qt.resolvedUrl(shell.width >= units.gu(60) ? "graphics/tablet_background.jpg" : "graphics/phone_background.jpg")
54− property url background
54+ property url background: asImageTester.status == Image.Ready ? asImageTester.source
55+ : gsImageTester.status == Image.Ready ? gsImageTester.source : defaultBackground
5556 readonly property real panelHeight: panel.panelHeight
5657
5758 readonly property bool locked: LightDM.Greeter.active && !LightDM.Greeter.authenticated && !forcedUnlock
@@ -98,6 +99,31 @@ Item {
9899 shell.activateApplication(app);
99100 }
100101
102+ // This is a dummy image to detect if the custom AS set wallpaper loads successfully.
103+ Image {
104+ id: asImageTester
105+ source: AccountsService.backgroundFile != undefined && AccountsService.backgroundFile.length > 0 ? AccountsService.backgroundFile : ""
106+ height: 0
107+ width: 0
108+ sourceSize.height: 0
109+ sourceSize.width: 0
110+ }
111+
112+ GSettings {
113+ id: backgroundSettings
114+ schema.id: "org.gnome.desktop.background"
115+ }
116+
117+ // This is a dummy image to detect if the custom GSettings set wallpaper loads successfully.
118+ Image {
119+ id: gsImageTester
120+ source: backgroundSettings.pictureUri != undefined && backgroundSettings.pictureUri.length > 0 ? backgroundSettings.pictureUri : ""
121+ height: 0
122+ width: 0
123+ sourceSize.height: 0
124+ sourceSize.width: 0
125+ }
126+
101127 Binding {
102128 target: LauncherModel
103129 property: "applicationManager"
@@ -114,15 +140,6 @@ Item {
114140 }
115141 }
116142
117− GSettings {
118− id: backgroundSettings
119− schema.id: "org.gnome.desktop.background"
120− }
121− property url gSettingsPicture: backgroundSettings.pictureUri != undefined && backgroundSettings.pictureUri.length > 0 ? backgroundSettings.pictureUri : shell.defaultBackground
122− onGSettingsPictureChanged: {
123− shell.background = gSettingsPicture
124− }
125−
126143 VolumeControl {
127144 id: volumeControl
128145 }
@@ -328,6 +345,7 @@ Item {
328345 width: parent.width
329346 height: parent.height - panel.panelHeight
330347 background: shell.background
348+ darkenBackground: 0.4
331349 alphaNumeric: AccountsService.passwordDisplayHint === AccountsService.Keyboard
332350 minPinLength: 4
333351 maxPinLength: 4
@@ -523,7 +541,7 @@ Item {
523541
524542 locked: shell.locked
525543
526− defaultBackground: shell.background
544+ background: shell.background
527545
528546 width: parent.width
529547 height: parent.height
@@ -587,7 +605,7 @@ Item {
587605 Binding {
588606 target: ApplicationManager
589607 property: "suspended"
590− value: greeter.shown && greeterWrapper.showProgress == 1
608+ value: (greeter.shown && greeterWrapper.showProgress == 1) || lockscreen.shown
591609 }
592610 }
593611 }
@@ -746,19 +764,26 @@ Item {
746764 margin: units.gu(1)
747765
748766 y: topmostIsFullscreen ? 0 : panel.panelHeight
749− width: parent.width
750767 height: parent.height - (topmostIsFullscreen ? 0 : panel.panelHeight)
751768
752769 states: [
753770 State {
754771 name: "narrow"
755772 when: overlay.width <= units.gu(60)
756− AnchorChanges { target: notifications; anchors.left: parent.left }
773+ AnchorChanges {
774+ target: notifications
775+ anchors.left: parent.left
776+ anchors.right: parent.right
777+ }
757778 },
758779 State {
759780 name: "wide"
760781 when: overlay.width > units.gu(60)
761− AnchorChanges { target: notifications; anchors.left: undefined }
782+ AnchorChanges {
783+ target: notifications
784+ anchors.left: undefined
785+ anchors.right: parent.right
786+ }
762787 PropertyChanges { target: notifications; width: units.gu(38) }
763788 }
764789 ]
@@ -776,26 +801,10 @@ Item {
776801 }
777802 }
778803
779− Label {
780− id: alphaDisclaimerLabel
781− anchors.centerIn: parent
782− visible: ApplicationManager.fake ? ApplicationManager.fake : false
783− z: dialogs.z + 10
784− text: "EARLY ALPHA\nNOT READY FOR USE"
785− color: "lightgrey"
786− opacity: 0.2
787− font.weight: Font.Black
788− horizontalAlignment: Text.AlignHCenter
789− verticalAlignment: Text.AlignVCenter
790− fontSizeMode: Text.Fit
791− rotation: -45
792− scale: Math.min(parent.width, parent.height) / width
793− }
794−
795804 EdgeDemo {
796805 id: edgeDemo
797806 objectName: "edgeDemo"
798− z: alphaDisclaimerLabel.z + 10
807+ z: dialogs.z + 10
799808 paused: Powerd.status === Powerd.Off // Saves power
800809 greeter: greeter
801810 launcher: launcher
qml/Stages/PhoneStage.qml+2−2
@@ -33,7 +33,7 @@ Rectangle {
3333 property real inverseProgress: 0 // This is the progress for left edge drags, in pixels.
3434 property int orientation: Qt.PortraitOrientation
3535
36− color: "black"
36+ color: "#111111"
3737
3838 function select(appId) {
3939 spreadView.snapTo(priv.indexOf(appId));
@@ -286,7 +286,7 @@ Rectangle {
286286 otherSelected: spreadView.selectedIndex >= 0 && !selected
287287 interactive: !spreadView.interactive && spreadView.phase === 0
288288 && spreadView.shiftedContentX === 0 && root.interactive && index === 0
289− swipeToCloseEnabled: spreadView.interactive
289+ swipeToCloseEnabled: spreadView.interactive && !snapAnimation.running
290290 maximizedAppTopMargin: root.maximizedAppTopMargin
291291 dropShadow: spreadView.active ||
292292 (priv.focusedAppDelegate && priv.focusedAppDelegate.x !== 0)
qml/Stages/SessionContainer.qml+4
@@ -69,6 +69,10 @@ Item {
6969 target: item; when: item
7070 property: "orientation"; value: root.orientation
7171 }
72+
73+ Component.onDestruction: {
74+ root.session.surface.forceActiveFocus();
75+ }
7276 }
7377 }
7478
qml/Stages/SpreadDelegate.qml+12−2
@@ -75,6 +75,8 @@ Item {
7575
7676 property bool moving: false
7777 property real distance: 0
78+ readonly property int threshold: units.gu(2)
79+ property int offset: 0
7880
7981 readonly property real minSpeedToClose: units.gu(40)
8082
@@ -82,9 +84,17 @@ Item {
8284 if (!dragging) {
8385 return;
8486 }
85− moving = moving || Math.abs(dragValue) > units.gu(1)
87+ moving = moving || Math.abs(dragValue) > threshold;
8688 if (moving) {
87− distance = dragValue;
89+ distance = dragValue + offset;
90+ }
91+ }
92+
93+ onMovingChanged: {
94+ if (moving) {
95+ offset = (dragValue > 0 ? -threshold: threshold)
96+ } else {
97+ offset = 0;
8898 }
8999 }
90100
qml/Stages/TabletStage.qml+2−2
@@ -25,7 +25,7 @@ Rectangle {
2525 id: root
2626 objectName: "stages"
2727 anchors.fill: parent
28− color: "black"
28+ color: "#111111"
2929
3030 // Controls to be set from outside
3131 property bool shown: false
@@ -490,7 +490,7 @@ Rectangle {
490490 otherSelected: spreadView.selectedIndex >= 0 && !selected
491491 isInSideStage: priv.sideStageAppId == model.appId
492492 interactive: !spreadView.interactive && spreadView.phase === 0 && root.interactive
493− swipeToCloseEnabled: spreadView.interactive
493+ swipeToCloseEnabled: spreadView.interactive && !snapAnimation.running
494494 maximizedAppTopMargin: root.maximizedAppTopMargin
495495 dragOffset: !isDash && model.appId == priv.mainStageAppId && root.inverseProgress > 0 ? root.inverseProgress : 0
496496 application: ApplicationManager.get(index)
tests/mocks/Unity/Application/Session.h+1−1
@@ -56,7 +56,7 @@ public:
5656
5757 Q_INVOKABLE void addChildSession(Session* session);
5858 void insertChildSession(uint index, Session* session);
59− void removeChildSession(Session* session);
59+ Q_INVOKABLE void removeChildSession(Session* session);
6060
6161Q_SIGNALS:
6262 void applicationChanged(ApplicationInfo*);
tests/plugins/Dash/cardcreator/6.res+1−1
@@ -95,7 +95,7 @@ Item {
9595 text: cardData && cardData["subtitle"] || "";
9696 font.weight: Font.Light;
9797 }
98−,StatusIcon {
98+,Icon {
9999 id: emblemIcon;
100100 objectName: "emblemIcon";
101101 anchors {
tests/qmltests/CMakeLists.txt−1
@@ -28,7 +28,6 @@ add_qml_test(Components EdgeDemoOverlay)
2828add_qml_test(Components LazyImage)
2929add_qml_test(Components Lockscreen)
3030add_qml_test(Components Rating)
31−add_qml_test(Components ResponsiveFlowView)
3231add_qml_test(Components ResponsiveGridView)
3332add_qml_test(Components ResponsiveVerticalJournal IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/plugins)
3433add_qml_test(Components Showable)
tests/qmltests/Components/tst_ResponsiveFlowView.qmldeleted−191
@@ -1,191 +0,0 @@
1−/*
2− * Copyright 2013 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 ".."
20−import "../../../qml/Components"
21−import Ubuntu.Components.ListItems 0.1 as ListItem
22−import Ubuntu.Components 0.1
23−import Unity.Test 0.1 as UT
24−
25−Item {
26− width: flowRect.width + controls.width
27− height: units.gu(80)
28−
29− Column {
30− id: controls
31− width: units.gu(40)
32− height: parent.height
33− anchors.top: parent.top
34− anchors.right: parent.right
35− ListItem.ValueSelector {
36− id: maxColumnsSelector
37− text: "maximumNumberOfColumns"
38− values: [2,4,8,13,1000]
39− selectedIndex: 1
40− }
41− ListItem.ValueSelector {
42− id: minHSpacingSelector
43− text: "minHorizontalSpacing"
44− values: [0,units.gu(2),units.gu(8),units.gu(25)]
45− selectedIndex: 0
46− }
47− }
48−
49− ListModel {
50− id: fakeModel
51− ListElement { name: "A" }
52− ListElement { name: "B" }
53− ListElement { name: "C" }
54− ListElement { name: "D" }
55− ListElement { name: "E" }
56− ListElement { name: "F" }
57− ListElement { name: "G" }
58− ListElement { name: "H" }
59− ListElement { name: "I" }
60− ListElement { name: "J" }
61− ListElement { name: "K" }
62− ListElement { name: "L" }
63− ListElement { name: "M" }
64− ListElement { name: "N" }
65− ListElement { name: "O" }
66− ListElement { name: "P" }
67− ListElement { name: "Q" }
68− ListElement { name: "R" }
69− ListElement { name: "S" }
70− ListElement { name: "T" }
71− ListElement { name: "U" }
72− }
73−
74− Rectangle {
75− id: flowRect
76− width: units.gu(80)
77− height: parent.height
78− color: "grey"
79− anchors.top: parent.top
80− anchors.left: parent.left
81−
82− ResponsiveFlowView {
83− id: flow
84− anchors.fill: parent
85− model: fakeModel
86− minimumHorizontalSpacing:
87− minHSpacingSelector.values[minHSpacingSelector.selectedIndex]
88− verticalSpacing: units.gu(2)
89− maximumNumberOfColumns:
90− maxColumnsSelector.values[maxColumnsSelector.selectedIndex]
91− referenceDelegateWidth: units.gu(6)
92−
93− delegate: Rectangle {
94− // So that it can be identified by test code
95− property bool isFlowDelegate: true
96− color: "grey"
97− border.color: "red"
98− border.width: 1
99−
100− // IMPORTANT: always use flow's cellWidth and cellHeight here to get
101− // ResponsiveFlowView's intended result
102− width: flow.cellWidth
103− height: flow.cellHeight
104−
105− Rectangle {
106− color: "green"
107− anchors.centerIn: parent
108− width: units.gu(6)
109− height: units.gu(6)
110− Text {
111− anchors.centerIn: parent
112− text: name
113− }
114− }
115−
116− Text { x:0; y:0; text:"(" + parent.x + ", " + parent.y + ")"}
117− }
118− }
119− }
120−
121− UT.UnityTestCase {
122− name: "ResponsiveFlowView"
123− when: windowShown
124−
125− function test_maximumNumberOfColumns_data() {
126− var data = new Array()
127−
128− data.push({selectedIndex: 0, maxColumnCount:2, columnCount: 2})
129− data.push({selectedIndex: 1, maxColumnCount:4, columnCount: 4})
130− data.push({selectedIndex: 2, maxColumnCount:8, columnCount: 8})
131− data.push({selectedIndex: 4, maxColumnCount:1000, columnCount: 13})
132−
133− return data
134− }
135−
136− /* Change ResponsiveFlowView's maximumNumberOfColumns property and check
137− that the resulting number of columns matches expectations */
138− function test_maximumNumberOfColumns(data) {
139− minHSpacingSelector.selectedIndex = 0
140−
141− // sanity checks
142− compare(maxColumnsSelector.values[data.selectedIndex], data.maxColumnCount)
143− compare(minHSpacingSelector.values[0], 0)
144−
145− maxColumnsSelector.selectedIndex = data.selectedIndex
146− tryCompareFunction(countFlowDelegatesOnFirstRow, data.columnCount);
147− compare(flow.columns, data.columnCount)
148− }
149−
150− function test_minimumHorizontalSpacing_data() {
151− var data = new Array()
152−
153− data.push({selectedIndex: 0, minHSpacing:0, columnCount: 13})
154− data.push({selectedIndex: 1, minHSpacing:units.gu(2), columnCount: 9})
155− data.push({selectedIndex: 2, minHSpacing:units.gu(8), columnCount: 5})
156− data.push({selectedIndex: 3, minHSpacing:units.gu(25), columnCount: 2})
157−
158− return data
159− }
160−
161− /* Change ResponsiveFlowView's minimumHorizontalSpacing property and check
162− that the resulting number of columns matches expectations */
163− function test_minimumHorizontalSpacing(data) {
164− maxColumnsSelector.selectedIndex = 4
165−
166− // sanity checks
167− compare(maxColumnsSelector.values[4], 1000)
168− compare(minHSpacingSelector.values[data.selectedIndex], data.minHSpacing)
169−
170− minHSpacingSelector.selectedIndex = data.selectedIndex
171− tryCompareFunction(countFlowDelegatesOnFirstRow, data.columnCount);
172− compare(flow.columns, data.columnCount)
173− }
174−
175− function countFlowDelegatesOnFirstRow() {
176− return __countFlowDelegatesOnFirstRow(flow.visibleChildren, 0)
177− }
178−
179− function __countFlowDelegatesOnFirstRow(objList, total) {
180− for (var i = 0; i < objList.length; ++i) {
181− var child = objList[i];
182− if (child.isFlowDelegate !== undefined && child.y === 0) {
183− ++total;
184− } else {
185− total = __countFlowDelegatesOnFirstRow(child.visibleChildren, total)
186− }
187− }
188− return total
189− }
190− }
191−}
tests/qmltests/Dash/tst_GenericScopeView.qml+2−2
@@ -461,8 +461,8 @@ Item {
461461
462462 var innerHeader = findChild(header, "innerPageHeader");
463463 verify(innerHeader, "Could not find the inner header");
464− verify(Qt.colorEqual(innerHeader.textColor, data.foreground),
465− "Foreground color not equal: %1 != %2".arg(innerHeader.textColor).arg(data.foreground));
464+ verify(Qt.colorEqual(innerHeader.config.foregroundColor, data.foreground),
465+ "Foreground color not equal: %1 != %2".arg(innerHeader.config.foregroundColor).arg(data.foreground));
466466
467467 var background = findChild(header, "headerBackground");
468468 verify(background, "Could not find the background");
tests/qmltests/Dash/tst_PreviewListView.qml+2−2
@@ -100,8 +100,8 @@ Rectangle {
100100
101101 var innerHeader = findChild(header, "innerPageHeader");
102102 verify(innerHeader, "Could not find the inner header");
103− verify(Qt.colorEqual(innerHeader.textColor, UbuntuColors.darkGrey),
104− "Foreground color not equal: %1 != %2".arg(innerHeader.textColor).arg(UbuntuColors.darkGrey));
103+ verify(Qt.colorEqual(innerHeader.config.foregroundColor, UbuntuColors.darkGrey),
104+ "Foreground color not equal: %1 != %2".arg(innerHeader.config.foregroundColor).arg(UbuntuColors.darkGrey));
105105
106106 var background = findChild(header, "headerBackground");
107107 verify(background, "Could not find the background");
tests/qmltests/Launcher/tst_Launcher.qml+18
@@ -519,5 +519,23 @@ Item {
519519 tryCompare(quickListShape, "visible", false)
520520 }
521521 }
522+
523+ function test_quicklistHideOnLauncherHide() {
524+ dragLauncherIntoView();
525+ var clickedItem = findChild(launcher, "launcherDelegate5")
526+ var quickList = findChild(launcher, "quickList")
527+
528+ // Initial state
529+ tryCompare(quickList, "state", "")
530+
531+ // Doing longpress
532+ mousePress(clickedItem, clickedItem.width / 2, clickedItem.height / 2)
533+ tryCompare(clickedItem, "itemOpacity", 0) // Wait for longpress to happen
534+ verify(quickList, "state", "open")
535+
536+ launcher.hide();
537+
538+ tryCompare(quickList, "state", "");
539+ }
522540 }
523541}
tests/qmltests/Panel/tst_IndicatorsBar.qml+1−1
@@ -136,8 +136,8 @@ IndicatorTest {
136136 var dataItem = findChild(indicatorsBar, root.originalModelData[data.index]["identifier"] + "-panelItem");
137137 verify(dataItem !== null);
138138
139+ waitForRendering(dataItem);
139140 var mappedPosition = indicatorsBar.mapFromItem(dataItem, dataItem.width/2, dataItem.height/2);
140−
141141 indicatorsBar.selectItemAt(mappedPosition.x);
142142 indicatorsBar.expanded = true;
143143 wait_for_expansion_to_settle();
tests/qmltests/Stages/tst_PhoneStage.qml+33−3
@@ -274,7 +274,7 @@ Item {
274274 compare(ApplicationManager.focusedApplicationId, selectedApp.appId);
275275 }
276276
277− function test_orientation_change_sent_to_focused_app() {
277+ function test_orientationChangeSentToFocusedApp() {
278278 phoneStage.orientation = Qt.PortraitOrientation;
279279 addApps(1);
280280
@@ -286,7 +286,7 @@ Item {
286286 tryCompare(app, "orientation", Qt.LandscapeOrientation);
287287 }
288288
289− function test_orientation_change_not_sent_to_apps_while_spread_open() {
289+ function test_orientationChangeNotSentToAppsWhileSpreadOpen() {
290290 phoneStage.orientation = Qt.PortraitOrientation;
291291 addApps(1);
292292
@@ -299,7 +299,7 @@ Item {
299299 tryCompare(app, "orientation", Qt.PortraitOrientation);
300300 }
301301
302− function test_orientation_change_not_sent_to_unfocused_app_until_it_focused() {
302+ function test_orientationChangeNotSentToUnfocusedAppUntilItFocused() {
303303 phoneStage.orientation = Qt.PortraitOrientation;
304304 addApps(1);
305305
@@ -357,5 +357,35 @@ Item {
357357 tryCompare(firstApp, "state", ApplicationInfoInterface.Running);
358358 tryCompare(firstApp, "focused", true);
359359 }
360+
361+ function test_cantCloseWhileSnapping() {
362+ addApps(2);
363+
364+ goToSpread();
365+
366+ var spreadView = findChild(phoneStage, "spreadView");
367+ var selectedApp = ApplicationManager.get(2);
368+
369+ goToSpread();
370+
371+ var app0 = findChild(spreadView, "appDelegate0");
372+ var app1 = findChild(spreadView, "appDelegate1");
373+ var app2 = findChild(spreadView, "appDelegate2");
374+
375+ var dragArea0 = findChild(app0, "dragArea");
376+ var dragArea1 = findChild(app1, "dragArea");
377+ var dragArea2 = findChild(app2, "dragArea");
378+
379+ compare(dragArea0.enabled, true);
380+ compare(dragArea1.enabled, true);
381+ compare(dragArea2.enabled, true);
382+
383+ phoneStage.select(selectedApp.appId);
384+
385+ // Make sure all drag areas are disabled instantly. Don't use tryCompare here!
386+ compare(dragArea0.enabled, false);
387+ compare(dragArea1.enabled, false);
388+ compare(dragArea2.enabled, false);
389+ }
360390 }
361391}
tests/qmltests/Stages/tst_SessionContainer.qml+35
@@ -185,6 +185,41 @@ Rectangle {
185185 tryCompare(sessionSpy, "count", data.count);
186186 }
187187
188+ function test_childSessionDestructionReturnsFocusToSiblingOrParent() {
189+ sessionCheckbox.checked = true;
190+ var sessionContainer = sessionContainerLoader.item;
191+ compare(sessionContainer.childSessions.count(), 0);
192+
193+ sessionContainer.interactive = true;
194+
195+ var i;
196+ var sessions = [];
197+ // 3 sessions should cover all edge cases
198+ for(i = 0; i < 3; i++) {
199+ var a_session = ApplicationTest.addChildSession(
200+ sessionContainer.session, "gallery"
201+ )
202+
203+ a_session.createSurface();
204+ sessionContainer.session.addChildSession(a_session);
205+ compare(sessionContainer.childSessions.count(), i + 1);
206+
207+ sessions.push(a_session);
208+ }
209+
210+ var a_session;
211+ while(a_session = sessions.pop()) {
212+ a_session.surface.forceActiveFocus();
213+ compare(a_session.surface.activeFocus, true);
214+
215+ var parentSession = a_session.parentSession;
216+ sessionContainer.session.removeChildSession(a_session);
217+ compare(a_session.surface.activeFocus, false);
218+
219+ compare(parentSession.surface.activeFocus, true);
220+ }
221+ }
222+
188223 function test_nestedChildSessions_data() {
189224 return [ { tag: "depth=2", depth: 2 },
190225 { tag: "depth=8", depth: 8 }
tests/qmltests/Stages/tst_SpreadDelegate.qml+4−1
@@ -137,7 +137,10 @@ Rectangle {
137137
138138 if (data.swipeToClose) {
139139 verify(appWindowWithShadow.y < 0);
140− verify(Math.abs(Math.abs(appWindowWithShadow.y) - dragDistance) < units.gu(1));
140+ var threshold = findChild(spreadDelegateLoader.item, "dragArea").threshold
141+ // Verify that the delegate started moving exactly "threshold" after the finger movement
142+ // and did not jump up to the finger, but lags the threshold behind
143+ compare(Math.abs(Math.abs(appWindowWithShadow.y) - dragDistance), threshold);
141144
142145 touchRelease(spreadDelegateLoader.item, touchX, toY - units.gu(1));
143146
tests/qmltests/tst_ShellWithPin.qml+27
@@ -444,5 +444,32 @@ Item {
444444 tryCompare(lockscreen, "shown", false);
445445 tryCompare(LightDM.Greeter, "active", false);
446446 }
447+
448+ function test_suspend() {
449+ var greeter = findChild(shell, "greeter");
450+
451+ // Put it to sleep
452+ Powerd.status = Powerd.Off;
453+
454+ // If locked, ApplicationManager.suspended should be true
455+ tryCompare(ApplicationManager, "suspended", true);
456+
457+ // And wake up
458+ Powerd.status = Powerd.On;
459+ tryCompare(greeter, "showProgress", 1);
460+
461+ // Swipe away greeter to focus app
462+ swipeAwayGreeter();
463+
464+ // We have a lockscreen, make sure we're still suspended
465+ tryCompare(ApplicationManager, "suspended", true);
466+
467+ enterPin("1234")
468+
469+ // Now that the lockscreen has gone too, make sure we're waking up
470+ tryCompare(ApplicationManager, "suspended", false);
471+
472+ }
473+
447474 }
448475}