on xenial help sign in
Merge unity8
a2f099dAlbert Astals
CMakeLists.txt+1
@@ -53,6 +53,7 @@ find_package(Qt5Qml 5.2 REQUIRED)
53find_package(Qt5Quick 5.2 REQUIRED)
53find_package(Qt5Quick 5.2 REQUIRED)
54find_package(Qt5Gui 5.2 REQUIRED)
54find_package(Qt5Gui 5.2 REQUIRED)
55find_package(Qt5DBus 5.2 REQUIRED)
55find_package(Qt5DBus 5.2 REQUIRED)
56+find_package(Qt5Concurrent 5.2 REQUIRED)
56
57
57# Standard install paths
58# Standard install paths
58include(GNUInstallDirs)
59include(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+
1unity8 (8.01+15.04.20141107.2-0ubuntu1) vivid; urgency=low
61unity8 (8.01+15.04.20141107.2-0ubuntu1) vivid; urgency=low
2
62
3 [ Michael Terry ]
63 [ Michael Terry ]
debian/control+3−3
@@ -44,7 +44,7 @@ Build-Depends: cmake,
44 qtdeclarative5-private-dev (>= 5.2.1),
44 qtdeclarative5-private-dev (>= 5.2.1),
45 qtdeclarative5-qtmultimedia-plugin,
45 qtdeclarative5-qtmultimedia-plugin,
46 qtdeclarative5-ubuntu-settings-components (>= 0.4),
46 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),
48 ttf-ubuntu-font-family,
48 ttf-ubuntu-font-family,
49Standards-Version: 3.9.4
49Standards-Version: 3.9.4
50Homepage: http://launchpad.net/unity
50Homepage: http://launchpad.net/unity
@@ -58,7 +58,7 @@ X-Ubuntu-Use-Langpack: yes
58Package: indicators-client
58Package: indicators-client
59Architecture: amd64 armhf i386
59Architecture: amd64 armhf i386
60Depends: qmenumodel-qml (>= 0.2.8),
60Depends: 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),
62 unity8 (= ${binary:Version}),
62 unity8 (= ${binary:Version}),
63 ${misc:Depends},
63 ${misc:Depends},
64 ${shlibs:Depends},
64 ${shlibs:Depends},
@@ -108,7 +108,7 @@ Architecture: all
108Depends: qml-module-qtquick-layouts,
108Depends: qml-module-qtquick-layouts,
109 qtdeclarative5-ubuntu-settings-components (>= 0.4),
109 qtdeclarative5-ubuntu-settings-components (>= 0.4),
110 qtdeclarative5-ubuntu-thumbnailer0.1 | ubuntu-thumbnailer-impl,
110 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),
112 qtdeclarative5-unity-notifications-plugin (>= 0.1.2) | unity-notifications-impl,
112 qtdeclarative5-unity-notifications-plugin (>= 0.1.2) | unity-notifications-impl,
113 ubuntu-thumbnailer-impl-0,
113 ubuntu-thumbnailer-impl-0,
114 unity-application-impl-4,
114 unity-application-impl-4,
plugins/Dash/CardAttributes.qml+1−3
@@ -17,7 +17,6 @@
17import QtQuick 2.2
17import QtQuick 2.2
18import QtQuick.Layouts 1.1
18import QtQuick.Layouts 1.1
19import Ubuntu.Components 1.1
19import Ubuntu.Components 1.1
20−import Ubuntu.Settings.Components 0.1
21
20
22GridLayout {
21GridLayout {
23 id: grid
22 id: grid
@@ -47,10 +46,9 @@ GridLayout {
47 Layout.maximumWidth: Math.max(icon.width, label.x + label.implicitWidth)
46 Layout.maximumWidth: Math.max(icon.width, label.x + label.implicitWidth)
48 Layout.fillWidth: true
47 Layout.fillWidth: true
49 height: units.gu(2)
48 height: units.gu(2)
50− StatusIcon {
49+ Icon {
51 id: icon
50 id: icon
52 height: units.gu(2)
51 height: units.gu(2)
53− sets: ["actions", "status", "apps"]
54 source: "icon" in modelData && modelData["icon"] || ""
52 source: "icon" in modelData && modelData["icon"] || ""
55 color: grid.color
53 color: grid.color
56 }
54 }
plugins/Dash/CardCreator.js+1−1
@@ -225,7 +225,7 @@ var kTitleLabelCode = 'Label { \n\
225
225
226// %1 is used as extra anchors of emblemIcon
226// %1 is used as extra anchors of emblemIcon
227// %2 is used as color of emblemIcon
227// %2 is used as color of emblemIcon
228−var kEmblemIconCode = 'StatusIcon { \n\
228+var kEmblemIconCode = 'Icon { \n\
229 id: emblemIcon; \n\
229 id: emblemIcon; \n\
230 objectName: "emblemIcon"; \n\
230 objectName: "emblemIcon"; \n\
231 anchors { \n\
231 anchors { \n\
plugins/Utils/CMakeLists.txt+1−1
@@ -33,6 +33,6 @@ target_link_libraries(Utils-qml ${GIO_LDFLAGS})
33# files directly in targets.
33# files directly in targets.
34set_target_properties(Utils-qml PROPERTIES COMPILE_FLAGS -fvisibility=default)
34set_target_properties(Utils-qml PROPERTIES COMPILE_FLAGS -fvisibility=default)
35
35
36−qt5_use_modules(Utils-qml Qml Quick DBus Network XmlPatterns Gui Concurrent)
36+qt5_use_modules(Utils-qml Qml Quick DBus Network Gui)
37
37
38add_unity8_plugin(Utils 0.1 Utils TARGETS Utils-qml)
38add_unity8_plugin(Utils 0.1 Utils TARGETS Utils-qml)
po/ca.po+4−4
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\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-11-07 10:59+0100\n"
10"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"
12"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
12"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
13"Language-Team: Catalan <ca@li.org>\n"
13"Language-Team: Catalan <ca@li.org>\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"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-11-09 06:54+0000\n"
18+"X-Launchpad-Export-Date: 2014-11-11 07:11+0000\n"
19−"X-Generator: Launchpad (build 17231)\n"
19+"X-Generator: Launchpad (build 17241)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:130
21#: plugins/LightDM/Greeter.cpp:130
22msgid "Password: "
22msgid "Password: "
@@ -168,7 +168,7 @@ msgstr ""
168
168
169#: qml/Components/Lockscreen.qml:223
169#: qml/Components/Lockscreen.qml:223
170msgid "Return to Call"
170msgid "Return to Call"
171−msgstr ""
171+msgstr "Torna a la trucada"
172
172
173#: qml/Components/Lockscreen.qml:223
173#: qml/Components/Lockscreen.qml:223
174msgid "Emergency Call"
174msgid "Emergency Call"
po/ca@valencia.po+23−23
@@ -8,15 +8,15 @@ 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-11-07 10:59+0100\n"
10"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"
12"Last-Translator: Pau Iranzo <Unknown>\n"
12"Last-Translator: Pau Iranzo <Unknown>\n"
13"Language-Team: Catalan <ca@li.org>\n"
13"Language-Team: Catalan <ca@li.org>\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"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-11-09 06:54+0000\n"
18+"X-Launchpad-Export-Date: 2014-11-24 06:20+0000\n"
19−"X-Generator: Launchpad (build 17231)\n"
19+"X-Generator: Launchpad (build 17252)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:130
21#: plugins/LightDM/Greeter.cpp:130
22msgid "Password: "
22msgid "Password: "
@@ -168,7 +168,7 @@ msgstr ""
168
168
169#: qml/Components/Lockscreen.qml:223
169#: qml/Components/Lockscreen.qml:223
170msgid "Return to Call"
170msgid "Return to Call"
171−msgstr ""
171+msgstr "Torna a la trucada"
172
172
173#: qml/Components/Lockscreen.qml:223
173#: qml/Components/Lockscreen.qml:223
174msgid "Emergency Call"
174msgid "Emergency Call"
@@ -267,31 +267,31 @@ msgstr "Feu un toc per tornar a la cridada..."
267msgid "Conference"
267msgid "Conference"
268msgstr "Conferència"
268msgstr "Conferència"
269
269
270−#: qml/Panel/Indicators/MenuItemFactory.qml:643
270+#: qml/Panel/Indicators/MenuItemFactory.qml:615
271msgid "Nothing is playing"
271msgid "Nothing is playing"
272msgstr "No s'està reproduint res"
272msgstr "No s'està reproduint res"
273
273
274−#: qml/Panel/Indicators/MenuItemFactory.qml:791
274+#: qml/Panel/Indicators/MenuItemFactory.qml:763
275msgid "In queue…"
275msgid "In queue…"
276msgstr "A la cua..."
276msgstr "A la cua..."
277
277
278−#: qml/Panel/Indicators/MenuItemFactory.qml:795
278+#: qml/Panel/Indicators/MenuItemFactory.qml:767
279msgid "Downloading"
279msgid "Downloading"
280msgstr "S'està baixant"
280msgstr "S'està baixant"
281
281
282−#: qml/Panel/Indicators/MenuItemFactory.qml:797
282+#: qml/Panel/Indicators/MenuItemFactory.qml:769
283msgid "Paused, tap to resume"
283msgid "Paused, tap to resume"
284msgstr "En pausa, feu un toc per continuar"
284msgstr "En pausa, feu un toc per continuar"
285
285
286−#: qml/Panel/Indicators/MenuItemFactory.qml:799
286+#: qml/Panel/Indicators/MenuItemFactory.qml:771
287msgid "Canceled"
287msgid "Canceled"
288msgstr "S'ha cancel·lat"
288msgstr "S'ha cancel·lat"
289
289
290−#: qml/Panel/Indicators/MenuItemFactory.qml:801
290+#: qml/Panel/Indicators/MenuItemFactory.qml:773
291msgid "Finished"
291msgid "Finished"
292msgstr "S'ha finalitzat"
292msgstr "S'ha finalitzat"
293
293
294−#: qml/Panel/Indicators/MenuItemFactory.qml:803
294+#: qml/Panel/Indicators/MenuItemFactory.qml:775
295msgid "Failed, tap to retry"
295msgid "Failed, tap to retry"
296msgstr "Ha fallat, feu un toc per tornar-ho a intentar"
296msgstr "Ha fallat, feu un toc per tornar-ho a intentar"
297
297
@@ -303,49 +303,49 @@ msgstr "Desbloca la SIM"
303msgid "Roaming"
303msgid "Roaming"
304msgstr "Itinerància"
304msgstr "Itinerància"
305
305
306−#: qml/Shell.qml:391
306+#: qml/Shell.qml:381
307msgid "Enter passphrase"
307msgid "Enter passphrase"
308msgstr "Introduïu la contrasenya"
308msgstr "Introduïu la contrasenya"
309
309
310−#: qml/Shell.qml:392
310+#: qml/Shell.qml:382
311msgid "Sorry, incorrect passphrase"
311msgid "Sorry, incorrect passphrase"
312msgstr "La contrasenya no és correcta"
312msgstr "La contrasenya no és correcta"
313
313
314−#: qml/Shell.qml:393
314+#: qml/Shell.qml:383
315msgid "Please re-enter"
315msgid "Please re-enter"
316msgstr "Torneu-ho a introduir"
316msgstr "Torneu-ho a introduir"
317
317
318−#: qml/Shell.qml:395
318+#: qml/Shell.qml:385
319msgid "Enter passcode"
319msgid "Enter passcode"
320msgstr "Introduïu el codi d'accés"
320msgstr "Introduïu el codi d'accés"
321
321
322−#: qml/Shell.qml:396
322+#: qml/Shell.qml:386
323msgid "Sorry, incorrect passcode"
323msgid "Sorry, incorrect passcode"
324msgstr "El codi d'accés no és correcte"
324msgstr "El codi d'accés no és correcte"
325
325
326−#: qml/Shell.qml:399
326+#: qml/Shell.qml:389
327#, qt-format
327#, qt-format
328msgid "Enter %1"
328msgid "Enter %1"
329msgstr "Introduïu: %1"
329msgstr "Introduïu: %1"
330
330
331−#: qml/Shell.qml:400
331+#: qml/Shell.qml:390
332#, qt-format
332#, qt-format
333msgid "Sorry, incorrect %1"
333msgid "Sorry, incorrect %1"
334msgstr "Incorrecte (%1)"
334msgstr "Incorrecte (%1)"
335
335
336−#: qml/Shell.qml:441
336+#: qml/Shell.qml:431
337msgid "Sorry, incorrect passphrase."
337msgid "Sorry, incorrect passphrase."
338msgstr "La contrasenya és incorrecta"
338msgstr "La contrasenya és incorrecta"
339
339
340−#: qml/Shell.qml:442
340+#: qml/Shell.qml:432
341msgid "Sorry, incorrect passcode."
341msgid "Sorry, incorrect passcode."
342msgstr "El codi d'accés no és correcte"
342msgstr "El codi d'accés no és correcte"
343
343
344−#: qml/Shell.qml:443
344+#: qml/Shell.qml:433
345msgid "This will be your last attempt."
345msgid "This will be your last attempt."
346msgstr "Este serà el darrer intent."
346msgstr "Este serà el darrer intent."
347
347
348−#: qml/Shell.qml:445
348+#: qml/Shell.qml:435
349msgid ""
349msgid ""
350"If passphrase is entered incorrectly, your phone will conduct a factory "
350"If passphrase is entered incorrectly, your phone will conduct a factory "
351"reset and all personal data will be deleted."
351"reset and all personal data will be deleted."
@@ -354,7 +354,7 @@ msgstr ""
354"reinicialitzarà a l'estat de fàbrica i se suprimiran totes les dades "
354"reinicialitzarà a l'estat de fàbrica i se suprimiran totes les dades "
355"personals."
355"personals."
356
356
357−#: qml/Shell.qml:446
357+#: qml/Shell.qml:436
358msgid ""
358msgid ""
359"If passcode is entered incorrectly, your phone will conduct a factory reset "
359"If passcode is entered incorrectly, your phone will conduct a factory reset "
360"and all personal data will be deleted."
360"and all personal data will be deleted."
po/is.po+32−28
@@ -10,15 +10,15 @@ msgstr ""
10"Project-Id-Version: po_unity8-is\n"
10"Project-Id-Version: po_unity8-is\n"
11"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
12"POT-Creation-Date: 2014-11-07 10:59+0100\n"
12"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"
14"Last-Translator: Sveinn í Felli <sv1@fellsnet.is>\n"
14"Last-Translator: Sveinn í Felli <sv1@fellsnet.is>\n"
15"Language-Team: Icelandic <translation-team-is@lists.sourceforge.net>\n"
15"Language-Team: Icelandic <translation-team-is@lists.sourceforge.net>\n"
16"MIME-Version: 1.0\n"
16"MIME-Version: 1.0\n"
17"Content-Type: text/plain; charset=UTF-8\n"
17"Content-Type: text/plain; charset=UTF-8\n"
18"Content-Transfer-Encoding: 8bit\n"
18"Content-Transfer-Encoding: 8bit\n"
19"Plural-Forms: nplurals=2; plural=n != 1;\n"
19"Plural-Forms: nplurals=2; plural=n != 1;\n"
20−"X-Launchpad-Export-Date: 2014-11-09 06:54+0000\n"
20+"X-Launchpad-Export-Date: 2014-11-14 06:34+0000\n"
21−"X-Generator: Launchpad (build 17231)\n"
21+"X-Generator: Launchpad (build 17241)\n"
22"Language: is\n"
22"Language: is\n"
23
23
24#: plugins/LightDM/Greeter.cpp:130
24#: plugins/LightDM/Greeter.cpp:130
@@ -41,10 +41,14 @@ msgstr "Tæki læst"
41#: qml/Components/DelayedLockscreen.qml:62
41#: qml/Components/DelayedLockscreen.qml:62
42msgid "You have been locked out due to too many failed passphrase attempts."
42msgid "You have been locked out due to too many failed passphrase attempts."
43msgstr ""
43msgstr ""
44+"Það er búið að loka á þig vegna of margra tilrauna við innsetningu "
45+"lykilfrasa."
44
46
45#: qml/Components/DelayedLockscreen.qml:63
47#: qml/Components/DelayedLockscreen.qml:63
46msgid "You have been locked out due to too many failed passcode attempts."
48msgid "You have been locked out due to too many failed passcode attempts."
47msgstr ""
49msgstr ""
50+"Það er búið að loka á þig vegna of margra tilrauna við innsetningu "
51+"aðgangskóða."
48
52
49#: qml/Components/DelayedLockscreen.qml:72
53#: qml/Components/DelayedLockscreen.qml:72
50#, qt-format
54#, qt-format
@@ -162,7 +166,7 @@ msgstr ""
162
166
163#: qml/Components/Lockscreen.qml:223
167#: qml/Components/Lockscreen.qml:223
164msgid "Return to Call"
168msgid "Return to Call"
165−msgstr ""
169+msgstr "Snúa aftur í símtal"
166
170
167#: qml/Components/Lockscreen.qml:223
171#: qml/Components/Lockscreen.qml:223
168msgid "Emergency Call"
172msgid "Emergency Call"
@@ -219,7 +223,7 @@ msgstr "Senda"
219
223
220#: qml/Dash/PullToRefreshScopeStyle.qml:55
224#: qml/Dash/PullToRefreshScopeStyle.qml:55
221msgid "Pull to refresh…"
225msgid "Pull to refresh…"
222−msgstr ""
226+msgstr "Toga til að endurlesa..."
223
227
224#: qml/Dash/PullToRefreshScopeStyle.qml:60
228#: qml/Dash/PullToRefreshScopeStyle.qml:60
225msgid "Release to refresh…"
229msgid "Release to refresh…"
@@ -227,7 +231,7 @@ msgstr "Slepptu til að endurlesa..."
227
231
228#: qml/Dash/ScopesOverview.qml:215
232#: qml/Dash/ScopesOverview.qml:215
229msgid "Manage Scopes"
233msgid "Manage Scopes"
230−msgstr ""
234+msgstr "Sýsla með leitarsvið"
231
235
232#: qml/Dash/ScopesOverview.qml:437
236#: qml/Dash/ScopesOverview.qml:437
233msgid "Done"
237msgid "Done"
@@ -261,31 +265,31 @@ msgstr "Slá til að svara símtali..."
261msgid "Conference"
265msgid "Conference"
262msgstr "Ráðstefna"
266msgstr "Ráðstefna"
263
267
264−#: qml/Panel/Indicators/MenuItemFactory.qml:643
268+#: qml/Panel/Indicators/MenuItemFactory.qml:615
265msgid "Nothing is playing"
269msgid "Nothing is playing"
266−msgstr ""
270+msgstr "Ekkert er í afspilun"
267
271
268−#: qml/Panel/Indicators/MenuItemFactory.qml:791
272+#: qml/Panel/Indicators/MenuItemFactory.qml:763
269msgid "In queue…"
273msgid "In queue…"
270msgstr "Í biðröð..."
274msgstr "Í biðröð..."
271
275
272−#: qml/Panel/Indicators/MenuItemFactory.qml:795
276+#: qml/Panel/Indicators/MenuItemFactory.qml:767
273msgid "Downloading"
277msgid "Downloading"
274msgstr "Sæki"
278msgstr "Sæki"
275
279
276−#: qml/Panel/Indicators/MenuItemFactory.qml:797
280+#: qml/Panel/Indicators/MenuItemFactory.qml:769
277msgid "Paused, tap to resume"
281msgid "Paused, tap to resume"
278msgstr "Í bið, sláðu létt til að halda áfram"
282msgstr "Í bið, sláðu létt til að halda áfram"
279
283
280−#: qml/Panel/Indicators/MenuItemFactory.qml:799
284+#: qml/Panel/Indicators/MenuItemFactory.qml:771
281msgid "Canceled"
285msgid "Canceled"
282msgstr "Hætt við"
286msgstr "Hætt við"
283
287
284−#: qml/Panel/Indicators/MenuItemFactory.qml:801
288+#: qml/Panel/Indicators/MenuItemFactory.qml:773
285msgid "Finished"
289msgid "Finished"
286msgstr "Lokið"
290msgstr "Lokið"
287
291
288−#: qml/Panel/Indicators/MenuItemFactory.qml:803
292+#: qml/Panel/Indicators/MenuItemFactory.qml:775
289msgid "Failed, tap to retry"
293msgid "Failed, tap to retry"
290msgstr "Mistókst, sláðu létt til að reyna aftur"
294msgstr "Mistókst, sláðu létt til að reyna aftur"
291
295
@@ -297,49 +301,49 @@ msgstr "Aflæsa SIM-korti"
297msgid "Roaming"
301msgid "Roaming"
298msgstr "Ráphamur"
302msgstr "Ráphamur"
299
303
300−#: qml/Shell.qml:391
304+#: qml/Shell.qml:381
301msgid "Enter passphrase"
305msgid "Enter passphrase"
302−msgstr ""
306+msgstr "Settu inn lykilfrasa"
303
307
304−#: qml/Shell.qml:392
308+#: qml/Shell.qml:382
305msgid "Sorry, incorrect passphrase"
309msgid "Sorry, incorrect passphrase"
306msgstr "Því miður, rangt lykilorð"
310msgstr "Því miður, rangt lykilorð"
307
311
308−#: qml/Shell.qml:393
312+#: qml/Shell.qml:383
309msgid "Please re-enter"
313msgid "Please re-enter"
310msgstr "Settu aftur inn"
314msgstr "Settu aftur inn"
311
315
312−#: qml/Shell.qml:395
316+#: qml/Shell.qml:385
313msgid "Enter passcode"
317msgid "Enter passcode"
314−msgstr ""
318+msgstr "Settu inn aðgangskóða"
315
319
316−#: qml/Shell.qml:396
320+#: qml/Shell.qml:386
317msgid "Sorry, incorrect passcode"
321msgid "Sorry, incorrect passcode"
318msgstr "Því miður, rangur aðgangskóði"
322msgstr "Því miður, rangur aðgangskóði"
319
323
320−#: qml/Shell.qml:399
324+#: qml/Shell.qml:389
321#, qt-format
325#, qt-format
322msgid "Enter %1"
326msgid "Enter %1"
323msgstr "Settu inn %1"
327msgstr "Settu inn %1"
324
328
325−#: qml/Shell.qml:400
329+#: qml/Shell.qml:390
326#, qt-format
330#, qt-format
327msgid "Sorry, incorrect %1"
331msgid "Sorry, incorrect %1"
328msgstr "Því miður, rangt %1"
332msgstr "Því miður, rangt %1"
329
333
330−#: qml/Shell.qml:441
334+#: qml/Shell.qml:431
331msgid "Sorry, incorrect passphrase."
335msgid "Sorry, incorrect passphrase."
332msgstr "Því miður, rangt lykilorð."
336msgstr "Því miður, rangt lykilorð."
333
337
334−#: qml/Shell.qml:442
338+#: qml/Shell.qml:432
335msgid "Sorry, incorrect passcode."
339msgid "Sorry, incorrect passcode."
336msgstr "Því miður, rangur aðgangskóði."
340msgstr "Því miður, rangur aðgangskóði."
337
341
338−#: qml/Shell.qml:443
342+#: qml/Shell.qml:433
339msgid "This will be your last attempt."
343msgid "This will be your last attempt."
340msgstr "Þetta mun verða síðasta tilraunin þín."
344msgstr "Þetta mun verða síðasta tilraunin þín."
341
345
342−#: qml/Shell.qml:445
346+#: qml/Shell.qml:435
343msgid ""
347msgid ""
344"If passphrase is entered incorrectly, your phone will conduct a factory "
348"If passphrase is entered incorrectly, your phone will conduct a factory "
345"reset and all personal data will be deleted."
349"reset and all personal data will be deleted."
@@ -347,7 +351,7 @@ msgstr ""
347"Ef lykilorð er rangt, mun síminn frumstilla allt á verksmiðjustillingar og "
351"Ef lykilorð er rangt, mun síminn frumstilla allt á verksmiðjustillingar og "
348"öllum einkagögnum verður eytt."
352"öllum einkagögnum verður eytt."
349
353
350−#: qml/Shell.qml:446
354+#: qml/Shell.qml:436
351msgid ""
355msgid ""
352"If passcode is entered incorrectly, your phone will conduct a factory reset "
356"If passcode is entered incorrectly, your phone will conduct a factory reset "
353"and all personal data will be deleted."
357"and all personal data will be deleted."
po/ja.po+33−34
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\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-11-07 10:59+0100\n"
10"POT-Creation-Date: 2014-11-07 10:59+0100\n"
11−"PO-Revision-Date: 2014-09-18 09:47+0000\n"
11+"PO-Revision-Date: 2014-11-20 05:08+0000\n"
12−"Last-Translator: Mitsuya Shibata <mty.shibata@gmail.com>\n"
12+"Last-Translator: Kentaro Kazuhama <Unknown>\n"
13"Language-Team: Japanese <ja@li.org>\n"
13"Language-Team: Japanese <ja@li.org>\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"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-11-09 06:54+0000\n"
18+"X-Launchpad-Export-Date: 2014-11-21 06:49+0000\n"
19−"X-Generator: Launchpad (build 17231)\n"
19+"X-Generator: Launchpad (build 17252)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:130
21#: plugins/LightDM/Greeter.cpp:130
22msgid "Password: "
22msgid "Password: "
@@ -33,22 +33,21 @@ msgstr "ショートカットを削除する"
33
33
34#: qml/Components/DelayedLockscreen.qml:47
34#: qml/Components/DelayedLockscreen.qml:47
35msgid "Device Locked"
35msgid "Device Locked"
36−msgstr ""
36+msgstr "デバイスをロックしました"
37
37
38#: qml/Components/DelayedLockscreen.qml:62
38#: qml/Components/DelayedLockscreen.qml:62
39msgid "You have been locked out due to too many failed passphrase attempts."
39msgid "You have been locked out due to too many failed passphrase attempts."
40−msgstr ""
40+msgstr "パスフレーズの入力失敗が多すぎたため、デバイスをロックしました。"
41
41
42#: qml/Components/DelayedLockscreen.qml:63
42#: qml/Components/DelayedLockscreen.qml:63
43msgid "You have been locked out due to too many failed passcode attempts."
43msgid "You have been locked out due to too many failed passcode attempts."
44−msgstr ""
44+msgstr "パスコードの入力失敗が多すぎたため、デバイスをロックしました。"
45
45
46#: qml/Components/DelayedLockscreen.qml:72
46#: qml/Components/DelayedLockscreen.qml:72
47#, qt-format
47#, qt-format
48msgid "Please wait %1 minute and then try again…"
48msgid "Please wait %1 minute and then try again…"
49msgid_plural "Please wait %1 minutes and then try again…"
49msgid_plural "Please wait %1 minutes and then try again…"
50−msgstr[0] ""
50+msgstr[0] "%1 分待ってからやり直してください…"
51−msgstr[1] ""
52
51
53#: qml/Components/Dialogs.qml:74
52#: qml/Components/Dialogs.qml:74
54msgid "Log out"
53msgid "Log out"
@@ -212,15 +211,15 @@ msgstr "送信"
212
211
213#: qml/Dash/PullToRefreshScopeStyle.qml:55
212#: qml/Dash/PullToRefreshScopeStyle.qml:55
214msgid "Pull to refresh…"
213msgid "Pull to refresh…"
215−msgstr ""
214+msgstr "引いて更新…"
216
215
217#: qml/Dash/PullToRefreshScopeStyle.qml:60
216#: qml/Dash/PullToRefreshScopeStyle.qml:60
218msgid "Release to refresh…"
217msgid "Release to refresh…"
219−msgstr ""
218+msgstr "指を離して更新…"
220
219
221#: qml/Dash/ScopesOverview.qml:215
220#: qml/Dash/ScopesOverview.qml:215
222msgid "Manage Scopes"
221msgid "Manage Scopes"
223−msgstr ""
222+msgstr "Scopeの管理"
224
223
225#: qml/Dash/ScopesOverview.qml:437
224#: qml/Dash/ScopesOverview.qml:437
226msgid "Done"
225msgid "Done"
@@ -254,31 +253,31 @@ msgstr "タップすると通話に戻ります..."
254msgid "Conference"
253msgid "Conference"
255msgstr "グループ通話"
254msgstr "グループ通話"
256
255
257−#: qml/Panel/Indicators/MenuItemFactory.qml:643
256+#: qml/Panel/Indicators/MenuItemFactory.qml:615
258msgid "Nothing is playing"
257msgid "Nothing is playing"
259msgstr ""
258msgstr ""
260
259
261−#: qml/Panel/Indicators/MenuItemFactory.qml:791
260+#: qml/Panel/Indicators/MenuItemFactory.qml:763
262msgid "In queue…"
261msgid "In queue…"
263msgstr "開始待ち..."
262msgstr "開始待ち..."
264
263
265−#: qml/Panel/Indicators/MenuItemFactory.qml:795
264+#: qml/Panel/Indicators/MenuItemFactory.qml:767
266msgid "Downloading"
265msgid "Downloading"
267msgstr "ダウンロード中"
266msgstr "ダウンロード中"
268
267
269−#: qml/Panel/Indicators/MenuItemFactory.qml:797
268+#: qml/Panel/Indicators/MenuItemFactory.qml:769
270msgid "Paused, tap to resume"
269msgid "Paused, tap to resume"
271msgstr "停止中、再開するにはタップしてください"
270msgstr "停止中、再開するにはタップしてください"
272
271
273−#: qml/Panel/Indicators/MenuItemFactory.qml:799
272+#: qml/Panel/Indicators/MenuItemFactory.qml:771
274msgid "Canceled"
273msgid "Canceled"
275msgstr "中止しました"
274msgstr "中止しました"
276
275
277−#: qml/Panel/Indicators/MenuItemFactory.qml:801
276+#: qml/Panel/Indicators/MenuItemFactory.qml:773
278msgid "Finished"
277msgid "Finished"
279msgstr "完了しました"
278msgstr "完了しました"
280
279
281−#: qml/Panel/Indicators/MenuItemFactory.qml:803
280+#: qml/Panel/Indicators/MenuItemFactory.qml:775
282msgid "Failed, tap to retry"
281msgid "Failed, tap to retry"
283msgstr "失敗しました、再試行するにはタップしてください"
282msgstr "失敗しました、再試行するにはタップしてください"
284
283
@@ -290,55 +289,55 @@ msgstr "SIMのアンロック"
290msgid "Roaming"
289msgid "Roaming"
291msgstr "ローミング"
290msgstr "ローミング"
292
291
293−#: qml/Shell.qml:391
292+#: qml/Shell.qml:381
294msgid "Enter passphrase"
293msgid "Enter passphrase"
295msgstr "パスフレーズを入力"
294msgstr "パスフレーズを入力"
296
295
297−#: qml/Shell.qml:392
296+#: qml/Shell.qml:382
298msgid "Sorry, incorrect passphrase"
297msgid "Sorry, incorrect passphrase"
299msgstr "パスフレーズが違います"
298msgstr "パスフレーズが違います"
300
299
301−#: qml/Shell.qml:393
300+#: qml/Shell.qml:383
302msgid "Please re-enter"
301msgid "Please re-enter"
303−msgstr ""
302+msgstr "再入力してください"
304
303
305−#: qml/Shell.qml:395
304+#: qml/Shell.qml:385
306msgid "Enter passcode"
305msgid "Enter passcode"
307−msgstr ""
306+msgstr "パスコードを入力"
308
307
309−#: qml/Shell.qml:396
308+#: qml/Shell.qml:386
310msgid "Sorry, incorrect passcode"
309msgid "Sorry, incorrect passcode"
311msgstr "パスコードが違います"
310msgstr "パスコードが違います"
312
311
313−#: qml/Shell.qml:399
312+#: qml/Shell.qml:389
314#, qt-format
313#, qt-format
315msgid "Enter %1"
314msgid "Enter %1"
316−msgstr ""
315+msgstr "%1 を入力"
317
316
318−#: qml/Shell.qml:400
317+#: qml/Shell.qml:390
319#, qt-format
318#, qt-format
320msgid "Sorry, incorrect %1"
319msgid "Sorry, incorrect %1"
321msgstr "%1が違います"
320msgstr "%1が違います"
322
321
323−#: qml/Shell.qml:441
322+#: qml/Shell.qml:431
324msgid "Sorry, incorrect passphrase."
323msgid "Sorry, incorrect passphrase."
325msgstr "パスフレーズが間違っています。"
324msgstr "パスフレーズが間違っています。"
326
325
327−#: qml/Shell.qml:442
326+#: qml/Shell.qml:432
328msgid "Sorry, incorrect passcode."
327msgid "Sorry, incorrect passcode."
329msgstr "パスコードが間違っています。"
328msgstr "パスコードが間違っています。"
330
329
331−#: qml/Shell.qml:443
330+#: qml/Shell.qml:433
332msgid "This will be your last attempt."
331msgid "This will be your last attempt."
333msgstr "これが最後のチャンスです。"
332msgstr "これが最後のチャンスです。"
334
333
335−#: qml/Shell.qml:445
334+#: qml/Shell.qml:435
336msgid ""
335msgid ""
337"If passphrase is entered incorrectly, your phone will conduct a factory "
336"If passphrase is entered incorrectly, your phone will conduct a factory "
338"reset and all personal data will be deleted."
337"reset and all personal data will be deleted."
339msgstr "パスフレーズが間違っている場合、ファクトリーリセットを実施し、すべての個人データは削除されます。"
338msgstr "パスフレーズが間違っている場合、ファクトリーリセットを実施し、すべての個人データは削除されます。"
340
339
341−#: qml/Shell.qml:446
340+#: qml/Shell.qml:436
342msgid ""
341msgid ""
343"If passcode is entered incorrectly, your phone will conduct a factory reset "
342"If passcode is entered incorrectly, your phone will conduct a factory reset "
344"and all personal data will be deleted."
343"and all personal data will be deleted."
po/nb.po+24−24
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\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-11-07 10:59+0100\n"
10"POT-Creation-Date: 2014-11-07 10:59+0100\n"
11−"PO-Revision-Date: 2014-10-07 10:32+0000\n"
11+"PO-Revision-Date: 2014-11-12 19:57+0000\n"
12−"Last-Translator: Åka Sikrom <Unknown>\n"
12+"Last-Translator: Ari Börde Kröyer <Unknown>\n"
13"Language-Team: Norwegian Bokmal <nb@li.org>\n"
13"Language-Team: Norwegian Bokmal <nb@li.org>\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"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-11-09 06:54+0000\n"
18+"X-Launchpad-Export-Date: 2014-11-13 06:37+0000\n"
19−"X-Generator: Launchpad (build 17231)\n"
19+"X-Generator: Launchpad (build 17241)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:130
21#: plugins/LightDM/Greeter.cpp:130
22msgid "Password: "
22msgid "Password: "
@@ -160,7 +160,7 @@ msgstr ""
160
160
161#: qml/Components/Lockscreen.qml:223
161#: qml/Components/Lockscreen.qml:223
162msgid "Return to Call"
162msgid "Return to Call"
163−msgstr ""
163+msgstr "Tilbake til samtale"
164
164
165#: qml/Components/Lockscreen.qml:223
165#: qml/Components/Lockscreen.qml:223
166msgid "Emergency Call"
166msgid "Emergency Call"
@@ -259,31 +259,31 @@ msgstr "Trykk for å gå tilbake til anrop …"
259msgid "Conference"
259msgid "Conference"
260msgstr "Konferanse"
260msgstr "Konferanse"
261
261
262−#: qml/Panel/Indicators/MenuItemFactory.qml:643
262+#: qml/Panel/Indicators/MenuItemFactory.qml:615
263msgid "Nothing is playing"
263msgid "Nothing is playing"
264msgstr "Ingenting spilles nå"
264msgstr "Ingenting spilles nå"
265
265
266−#: qml/Panel/Indicators/MenuItemFactory.qml:791
266+#: qml/Panel/Indicators/MenuItemFactory.qml:763
267msgid "In queue…"
267msgid "In queue…"
268msgstr "I kø …"
268msgstr "I kø …"
269
269
270−#: qml/Panel/Indicators/MenuItemFactory.qml:795
270+#: qml/Panel/Indicators/MenuItemFactory.qml:767
271msgid "Downloading"
271msgid "Downloading"
272msgstr "Laster ned"
272msgstr "Laster ned"
273
273
274−#: qml/Panel/Indicators/MenuItemFactory.qml:797
274+#: qml/Panel/Indicators/MenuItemFactory.qml:769
275msgid "Paused, tap to resume"
275msgid "Paused, tap to resume"
276msgstr "Satt på pause (trykk for å fortsette)"
276msgstr "Satt på pause (trykk for å fortsette)"
277
277
278−#: qml/Panel/Indicators/MenuItemFactory.qml:799
278+#: qml/Panel/Indicators/MenuItemFactory.qml:771
279msgid "Canceled"
279msgid "Canceled"
280msgstr "Avbrutt"
280msgstr "Avbrutt"
281
281
282−#: qml/Panel/Indicators/MenuItemFactory.qml:801
282+#: qml/Panel/Indicators/MenuItemFactory.qml:773
283msgid "Finished"
283msgid "Finished"
284msgstr "Ferdig"
284msgstr "Ferdig"
285
285
286−#: qml/Panel/Indicators/MenuItemFactory.qml:803
286+#: qml/Panel/Indicators/MenuItemFactory.qml:775
287msgid "Failed, tap to retry"
287msgid "Failed, tap to retry"
288msgstr "Feilet. Trykk for å prøve på nytt"
288msgstr "Feilet. Trykk for å prøve på nytt"
289
289
@@ -295,49 +295,49 @@ msgstr "Lås opp SIM"
295msgid "Roaming"
295msgid "Roaming"
296msgstr "Fremmednett"
296msgstr "Fremmednett"
297
297
298−#: qml/Shell.qml:391
298+#: qml/Shell.qml:381
299msgid "Enter passphrase"
299msgid "Enter passphrase"
300msgstr "Skriv inn passordfrase"
300msgstr "Skriv inn passordfrase"
301
301
302−#: qml/Shell.qml:392
302+#: qml/Shell.qml:382
303msgid "Sorry, incorrect passphrase"
303msgid "Sorry, incorrect passphrase"
304msgstr "Feil passordfrase"
304msgstr "Feil passordfrase"
305
305
306−#: qml/Shell.qml:393
306+#: qml/Shell.qml:383
307msgid "Please re-enter"
307msgid "Please re-enter"
308msgstr "Skriv inn på nytt"
308msgstr "Skriv inn på nytt"
309
309
310−#: qml/Shell.qml:395
310+#: qml/Shell.qml:385
311msgid "Enter passcode"
311msgid "Enter passcode"
312msgstr "Tast kode"
312msgstr "Tast kode"
313
313
314−#: qml/Shell.qml:396
314+#: qml/Shell.qml:386
315msgid "Sorry, incorrect passcode"
315msgid "Sorry, incorrect passcode"
316msgstr "Feil kode"
316msgstr "Feil kode"
317
317
318−#: qml/Shell.qml:399
318+#: qml/Shell.qml:389
319#, qt-format
319#, qt-format
320msgid "Enter %1"
320msgid "Enter %1"
321msgstr "Skriv inn %1"
321msgstr "Skriv inn %1"
322
322
323−#: qml/Shell.qml:400
323+#: qml/Shell.qml:390
324#, qt-format
324#, qt-format
325msgid "Sorry, incorrect %1"
325msgid "Sorry, incorrect %1"
326msgstr "Feil %1"
326msgstr "Feil %1"
327
327
328−#: qml/Shell.qml:441
328+#: qml/Shell.qml:431
329msgid "Sorry, incorrect passphrase."
329msgid "Sorry, incorrect passphrase."
330msgstr "Feil passordfrase."
330msgstr "Feil passordfrase."
331
331
332−#: qml/Shell.qml:442
332+#: qml/Shell.qml:432
333msgid "Sorry, incorrect passcode."
333msgid "Sorry, incorrect passcode."
334msgstr "Feil kode."
334msgstr "Feil kode."
335
335
336−#: qml/Shell.qml:443
336+#: qml/Shell.qml:433
337msgid "This will be your last attempt."
337msgid "This will be your last attempt."
338msgstr "Dette er ditt siste forsøk."
338msgstr "Dette er ditt siste forsøk."
339
339
340−#: qml/Shell.qml:445
340+#: qml/Shell.qml:435
341msgid ""
341msgid ""
342"If passphrase is entered incorrectly, your phone will conduct a factory "
342"If passphrase is entered incorrectly, your phone will conduct a factory "
343"reset and all personal data will be deleted."
343"reset and all personal data will be deleted."
@@ -345,7 +345,7 @@ msgstr ""
345"Hvis du skriver feil passordfrase en gang til, tilbakestilles telefonen til "
345"Hvis du skriver feil passordfrase en gang til, tilbakestilles telefonen til "
346"fabrikkinnstillinger, og alle personlige data slettes."
346"fabrikkinnstillinger, og alle personlige data slettes."
347
347
348−#: qml/Shell.qml:446
348+#: qml/Shell.qml:436
349msgid ""
349msgid ""
350"If passcode is entered incorrectly, your phone will conduct a factory reset "
350"If passcode is entered incorrectly, your phone will conduct a factory reset "
351"and all personal data will be deleted."
351"and all personal data will be deleted."
po/ro.po+23−23
@@ -8,7 +8,7 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\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-11-07 10:59+0100\n"
10"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"
12"Last-Translator: Marian Vasile <marianvasile1972@gmail.com>\n"
12"Last-Translator: Marian Vasile <marianvasile1972@gmail.com>\n"
13"Language-Team: Romanian <ro@li.org>\n"
13"Language-Team: Romanian <ro@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 "
17"Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 "
18"== 0) && (n != 0))) ? 2: 1));\n"
18"== 0) && (n != 0))) ? 2: 1));\n"
19−"X-Launchpad-Export-Date: 2014-11-09 06:54+0000\n"
19+"X-Launchpad-Export-Date: 2014-11-19 06:24+0000\n"
20−"X-Generator: Launchpad (build 17231)\n"
20+"X-Generator: Launchpad (build 17252)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:130
22#: plugins/LightDM/Greeter.cpp:130
23msgid "Password: "
23msgid "Password: "
@@ -166,7 +166,7 @@ msgstr ""
166
166
167#: qml/Components/Lockscreen.qml:223
167#: qml/Components/Lockscreen.qml:223
168msgid "Return to Call"
168msgid "Return to Call"
169−msgstr ""
169+msgstr "Reveniți la funcția de apelare"
170
170
171#: qml/Components/Lockscreen.qml:223
171#: qml/Components/Lockscreen.qml:223
172msgid "Emergency Call"
172msgid "Emergency Call"
@@ -265,31 +265,31 @@ msgstr "Atingeți pentru a vă întoarce la convorbire..."
265msgid "Conference"
265msgid "Conference"
266msgstr "Conferință"
266msgstr "Conferință"
267
267
268−#: qml/Panel/Indicators/MenuItemFactory.qml:643
268+#: qml/Panel/Indicators/MenuItemFactory.qml:615
269msgid "Nothing is playing"
269msgid "Nothing is playing"
270msgstr "Nu se redă nimic"
270msgstr "Nu se redă nimic"
271
271
272−#: qml/Panel/Indicators/MenuItemFactory.qml:791
272+#: qml/Panel/Indicators/MenuItemFactory.qml:763
273msgid "In queue…"
273msgid "In queue…"
274msgstr "În așteptare..."
274msgstr "În așteptare..."
275
275
276−#: qml/Panel/Indicators/MenuItemFactory.qml:795
276+#: qml/Panel/Indicators/MenuItemFactory.qml:767
277msgid "Downloading"
277msgid "Downloading"
278msgstr "Se descarcă"
278msgstr "Se descarcă"
279
279
280−#: qml/Panel/Indicators/MenuItemFactory.qml:797
280+#: qml/Panel/Indicators/MenuItemFactory.qml:769
281msgid "Paused, tap to resume"
281msgid "Paused, tap to resume"
282msgstr "În pauză, atingeți pentru a relua"
282msgstr "În pauză, atingeți pentru a relua"
283
283
284−#: qml/Panel/Indicators/MenuItemFactory.qml:799
284+#: qml/Panel/Indicators/MenuItemFactory.qml:771
285msgid "Canceled"
285msgid "Canceled"
286msgstr "Anulată"
286msgstr "Anulată"
287
287
288−#: qml/Panel/Indicators/MenuItemFactory.qml:801
288+#: qml/Panel/Indicators/MenuItemFactory.qml:773
289msgid "Finished"
289msgid "Finished"
290msgstr "Finalizată"
290msgstr "Finalizată"
291
291
292−#: qml/Panel/Indicators/MenuItemFactory.qml:803
292+#: qml/Panel/Indicators/MenuItemFactory.qml:775
293msgid "Failed, tap to retry"
293msgid "Failed, tap to retry"
294msgstr "Eșec, atingeți pentru a încerca din nou"
294msgstr "Eșec, atingeți pentru a încerca din nou"
295
295
@@ -301,49 +301,49 @@ msgstr "Deblocare SIM"
301msgid "Roaming"
301msgid "Roaming"
302msgstr "Roaming"
302msgstr "Roaming"
303
303
304−#: qml/Shell.qml:391
304+#: qml/Shell.qml:381
305msgid "Enter passphrase"
305msgid "Enter passphrase"
306msgstr "Introduceți fraza parolă"
306msgstr "Introduceți fraza parolă"
307
307
308−#: qml/Shell.qml:392
308+#: qml/Shell.qml:382
309msgid "Sorry, incorrect passphrase"
309msgid "Sorry, incorrect passphrase"
310msgstr "Frază secretă incorectă"
310msgstr "Frază secretă incorectă"
311
311
312−#: qml/Shell.qml:393
312+#: qml/Shell.qml:383
313msgid "Please re-enter"
313msgid "Please re-enter"
314msgstr "Introduceți din nou"
314msgstr "Introduceți din nou"
315
315
316−#: qml/Shell.qml:395
316+#: qml/Shell.qml:385
317msgid "Enter passcode"
317msgid "Enter passcode"
318msgstr "Introduceți parola"
318msgstr "Introduceți parola"
319
319
320−#: qml/Shell.qml:396
320+#: qml/Shell.qml:386
321msgid "Sorry, incorrect passcode"
321msgid "Sorry, incorrect passcode"
322msgstr "Parolă incorectă"
322msgstr "Parolă incorectă"
323
323
324−#: qml/Shell.qml:399
324+#: qml/Shell.qml:389
325#, qt-format
325#, qt-format
326msgid "Enter %1"
326msgid "Enter %1"
327msgstr "Introducere %1"
327msgstr "Introducere %1"
328
328
329−#: qml/Shell.qml:400
329+#: qml/Shell.qml:390
330#, qt-format
330#, qt-format
331msgid "Sorry, incorrect %1"
331msgid "Sorry, incorrect %1"
332msgstr "%1 incorectă"
332msgstr "%1 incorectă"
333
333
334−#: qml/Shell.qml:441
334+#: qml/Shell.qml:431
335msgid "Sorry, incorrect passphrase."
335msgid "Sorry, incorrect passphrase."
336msgstr "Frază parolă greșită"
336msgstr "Frază parolă greșită"
337
337
338−#: qml/Shell.qml:442
338+#: qml/Shell.qml:432
339msgid "Sorry, incorrect passcode."
339msgid "Sorry, incorrect passcode."
340msgstr "Parolă greșită"
340msgstr "Parolă greșită"
341
341
342−#: qml/Shell.qml:443
342+#: qml/Shell.qml:433
343msgid "This will be your last attempt."
343msgid "This will be your last attempt."
344msgstr "Aceasta va fi ultima încercare"
344msgstr "Aceasta va fi ultima încercare"
345
345
346−#: qml/Shell.qml:445
346+#: qml/Shell.qml:435
347msgid ""
347msgid ""
348"If passphrase is entered incorrectly, your phone will conduct a factory "
348"If passphrase is entered incorrectly, your phone will conduct a factory "
349"reset and all personal data will be deleted."
349"reset and all personal data will be deleted."
@@ -352,7 +352,7 @@ msgstr ""
352"configurările inițiale, ale fabricantului, iar toate datele personale vor fi "
352"configurările inițiale, ale fabricantului, iar toate datele personale vor fi "
353"șterse."
353"șterse."
354
354
355−#: qml/Shell.qml:446
355+#: qml/Shell.qml:436
356msgid ""
356msgid ""
357"If passcode is entered incorrectly, your phone will conduct a factory reset "
357"If passcode is entered incorrectly, your phone will conduct a factory reset "
358"and all personal data will be deleted."
358"and all personal data will be deleted."
po/zh_TW.po+26−26
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\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-11-07 10:59+0100\n"
10"POT-Creation-Date: 2014-11-07 10:59+0100\n"
11−"PO-Revision-Date: 2014-10-16 14:55+0000\n"
11+"PO-Revision-Date: 2014-11-19 15:05+0000\n"
12−"Last-Translator: Po-Hsu Lin <po-hsu.lin@canonical.com>\n"
12+"Last-Translator: Walter Cheuk <wwycheuk@gmail.com>\n"
13"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
13"Language-Team: Chinese (Traditional) <zh_TW@li.org>\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"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-11-09 06:54+0000\n"
18+"X-Launchpad-Export-Date: 2014-11-20 06:27+0000\n"
19−"X-Generator: Launchpad (build 17231)\n"
19+"X-Generator: Launchpad (build 17252)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:130
21#: plugins/LightDM/Greeter.cpp:130
22msgid "Password: "
22msgid "Password: "
@@ -37,11 +37,11 @@ msgstr "裝置已鎖定"
37
37
38#: qml/Components/DelayedLockscreen.qml:62
38#: qml/Components/DelayedLockscreen.qml:62
39msgid "You have been locked out due to too many failed passphrase attempts."
39msgid "You have been locked out due to too many failed passphrase attempts."
40−msgstr ""
40+msgstr "因為嘗試輸入太多次錯誤的密碼,裝置已經被鎖定。"
41
41
42#: qml/Components/DelayedLockscreen.qml:63
42#: qml/Components/DelayedLockscreen.qml:63
43msgid "You have been locked out due to too many failed passcode attempts."
43msgid "You have been locked out due to too many failed passcode attempts."
44−msgstr ""
44+msgstr "因為嘗試輸入太多次錯誤的密碼,裝置已經被鎖定。"
45
45
46#: qml/Components/DelayedLockscreen.qml:72
46#: qml/Components/DelayedLockscreen.qml:72
47#, qt-format
47#, qt-format
@@ -252,31 +252,31 @@ msgstr "輕觸可返回通話…"
252msgid "Conference"
252msgid "Conference"
253msgstr "會議"
253msgstr "會議"
254
254
255−#: qml/Panel/Indicators/MenuItemFactory.qml:643
255+#: qml/Panel/Indicators/MenuItemFactory.qml:615
256msgid "Nothing is playing"
256msgid "Nothing is playing"
257−msgstr ""
257+msgstr "無影音播放中"
258
258
259−#: qml/Panel/Indicators/MenuItemFactory.qml:791
259+#: qml/Panel/Indicators/MenuItemFactory.qml:763
260msgid "In queue…"
260msgid "In queue…"
261msgstr "佇列中…"
261msgstr "佇列中…"
262
262
263−#: qml/Panel/Indicators/MenuItemFactory.qml:795
263+#: qml/Panel/Indicators/MenuItemFactory.qml:767
264msgid "Downloading"
264msgid "Downloading"
265msgstr "下載中"
265msgstr "下載中"
266
266
267−#: qml/Panel/Indicators/MenuItemFactory.qml:797
267+#: qml/Panel/Indicators/MenuItemFactory.qml:769
268msgid "Paused, tap to resume"
268msgid "Paused, tap to resume"
269msgstr "已暫停,輕觸可繼續"
269msgstr "已暫停,輕觸可繼續"
270
270
271−#: qml/Panel/Indicators/MenuItemFactory.qml:799
271+#: qml/Panel/Indicators/MenuItemFactory.qml:771
272msgid "Canceled"
272msgid "Canceled"
273msgstr "已取消"
273msgstr "已取消"
274
274
275−#: qml/Panel/Indicators/MenuItemFactory.qml:801
275+#: qml/Panel/Indicators/MenuItemFactory.qml:773
276msgid "Finished"
276msgid "Finished"
277msgstr "已完成"
277msgstr "已完成"
278
278
279−#: qml/Panel/Indicators/MenuItemFactory.qml:803
279+#: qml/Panel/Indicators/MenuItemFactory.qml:775
280msgid "Failed, tap to retry"
280msgid "Failed, tap to retry"
281msgstr "失敗,輕觸可重試"
281msgstr "失敗,輕觸可重試"
282
282
@@ -288,55 +288,55 @@ msgstr "為 SIM 卡解鎖"
288msgid "Roaming"
288msgid "Roaming"
289msgstr "漫遊"
289msgstr "漫遊"
290
290
291−#: qml/Shell.qml:391
291+#: qml/Shell.qml:381
292msgid "Enter passphrase"
292msgid "Enter passphrase"
293msgstr "輸入密語"
293msgstr "輸入密語"
294
294
295−#: qml/Shell.qml:392
295+#: qml/Shell.qml:382
296msgid "Sorry, incorrect passphrase"
296msgid "Sorry, incorrect passphrase"
297msgstr "抱歉,密語不對"
297msgstr "抱歉,密語不對"
298
298
299−#: qml/Shell.qml:393
299+#: qml/Shell.qml:383
300msgid "Please re-enter"
300msgid "Please re-enter"
301msgstr "請再輸入"
301msgstr "請再輸入"
302
302
303−#: qml/Shell.qml:395
303+#: qml/Shell.qml:385
304msgid "Enter passcode"
304msgid "Enter passcode"
305msgstr "輸入 passcode"
305msgstr "輸入 passcode"
306
306
307−#: qml/Shell.qml:396
307+#: qml/Shell.qml:386
308msgid "Sorry, incorrect passcode"
308msgid "Sorry, incorrect passcode"
309msgstr "抱歉,passcode 不對"
309msgstr "抱歉,passcode 不對"
310
310
311−#: qml/Shell.qml:399
311+#: qml/Shell.qml:389
312#, qt-format
312#, qt-format
313msgid "Enter %1"
313msgid "Enter %1"
314msgstr "輸入 %1"
314msgstr "輸入 %1"
315
315
316−#: qml/Shell.qml:400
316+#: qml/Shell.qml:390
317#, qt-format
317#, qt-format
318msgid "Sorry, incorrect %1"
318msgid "Sorry, incorrect %1"
319msgstr "抱歉,%1不對"
319msgstr "抱歉,%1不對"
320
320
321−#: qml/Shell.qml:441
321+#: qml/Shell.qml:431
322msgid "Sorry, incorrect passphrase."
322msgid "Sorry, incorrect passphrase."
323msgstr "抱歉,密語不對"
323msgstr "抱歉,密語不對"
324
324
325−#: qml/Shell.qml:442
325+#: qml/Shell.qml:432
326msgid "Sorry, incorrect passcode."
326msgid "Sorry, incorrect passcode."
327msgstr "抱歉,passcode 不對。"
327msgstr "抱歉,passcode 不對。"
328
328
329−#: qml/Shell.qml:443
329+#: qml/Shell.qml:433
330msgid "This will be your last attempt."
330msgid "This will be your last attempt."
331msgstr "這將會是您最後一次嘗試的機會。"
331msgstr "這將會是您最後一次嘗試的機會。"
332
332
333−#: qml/Shell.qml:445
333+#: qml/Shell.qml:435
334msgid ""
334msgid ""
335"If passphrase is entered incorrectly, your phone will conduct a factory "
335"If passphrase is entered incorrectly, your phone will conduct a factory "
336"reset and all personal data will be deleted."
336"reset and all personal data will be deleted."
337msgstr "如輸入的密語不對,本電話會進行重設,所有個人資料都會刪除。"
337msgstr "如輸入的密語不對,本電話會進行重設,所有個人資料都會刪除。"
338
338
339−#: qml/Shell.qml:446
339+#: qml/Shell.qml:436
340msgid ""
340msgid ""
341"If passcode is entered incorrectly, your phone will conduct a factory reset "
341"If passcode is entered incorrectly, your phone will conduct a factory reset "
342"and all personal data will be deleted."
342"and all personal data will be deleted."
qml/Components/Lockscreen.qml+15
@@ -56,6 +56,9 @@ Showable {
56 property int maxPinLength: -1
56 property int maxPinLength: -1
57
57
58 property url background: ""
58 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
59
62
60 readonly property string passphrase: (pinPadLoader.item && pinPadLoader.item.passphrase) ? pinPadLoader.item.passphrase : ""
63 readonly property string passphrase: (pinPadLoader.item && pinPadLoader.item.passphrase) ? pinPadLoader.item.passphrase : ""
61
64
@@ -100,10 +103,22 @@ Showable {
100 anchors {
103 anchors {
101 fill: parent
104 fill: parent
102 }
105 }
106+ // Limit how much memory we'll reserve for this image
107+ sourceSize.height: height
108+ sourceSize.width: width
103 source: root.required ? root.background : ""
109 source: root.required ? root.background : ""
104 fillMode: Image.PreserveAspectCrop
110 fillMode: Image.PreserveAspectCrop
105 }
111 }
106
112
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+
107 MouseArea {
122 MouseArea {
108 anchors.fill: root
123 anchors.fill: root
109 onClicked: {
124 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 {
178 property var model: []
178 property var model: []
179 property bool hasAttributes: {
179 property bool hasAttributes: {
180 var attributes = components["attributes"];
180 var attributes = components["attributes"];
181− var hasAttributesFlag = (attributes != undefined) && attributes["field"];
181+ var hasAttributesFlag = (attributes != undefined) && (attributes["field"] != undefined);
182
182
183 if (hasAttributesFlag) {
183 if (hasAttributesFlag) {
184 if (attributes["max-count"]) {
184 if (attributes["max-count"]) {
qml/Greeter/Greeter.qml+1−1
@@ -25,7 +25,7 @@ Showable {
25 enabled: shown
25 enabled: shown
26 created: greeterContentLoader.status == Loader.Ready && greeterContentLoader.item.ready
26 created: greeterContentLoader.status == Loader.Ready && greeterContentLoader.item.ready
27
27
28− property url defaultBackground
28+ property url background
29 property bool loadContent: required
29 property bool loadContent: required
30
30
31 // 1 when fully shown and 0 when fully hidden
31 // 1 when fully shown and 0 when fully hidden
qml/Greeter/GreeterContent.qml+1−18
@@ -48,9 +48,6 @@ Item {
48 color: "black"
48 color: "black"
49 }
49 }
50
50
51− property url backgroundValue: AccountsService.backgroundFile != undefined && AccountsService.backgroundFile.length > 0 ? AccountsService.backgroundFile : greeter.defaultBackground
52− onBackgroundValueChanged: background.source = backgroundValue
53−
54 CrossFadeImage {
51 CrossFadeImage {
55 id: background
52 id: background
56 objectName: "greeterBackground"
53 objectName: "greeterBackground"
@@ -62,21 +59,7 @@ Item {
62 // Limit how much memory we'll reserve for this image
59 // Limit how much memory we'll reserve for this image
63 sourceSize.height: height
60 sourceSize.height: height
64 sourceSize.width: width
61 sourceSize.width: width
65− }
62+ source: greeter.background
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− }
80 }
63 }
81
64
82 Rectangle {
65 Rectangle {
qml/Launcher/LauncherPanel.qml+33−7
@@ -38,18 +38,31 @@ Rectangle {
38 signal applicationSelected(string appId)
38 signal applicationSelected(string appId)
39 signal showDashHome()
39 signal showDashHome()
40
40
41+ onXChanged: {
42+ if (quickList.state == "open") {
43+ quickList.state = ""
44+ }
45+ }
46+
41 Column {
47 Column {
42 id: mainColumn
48 id: mainColumn
43 anchors {
49 anchors {
44 fill: parent
50 fill: parent
45 }
51 }
46
52
47− Rectangle {
53+ Item {
48 objectName: "buttonShowDashHome"
54 objectName: "buttonShowDashHome"
49 width: parent.width
55 width: parent.width
50 height: units.gu(7)
56 height: units.gu(7)
57+
58+ UbuntuShape {
59+ anchors {
60+ fill: parent
61+ topMargin: -units.gu(2)
62+ }
63+ borderSource: "none"
51− color: UbuntuColors.orange
64+ color: UbuntuColors.orange
52− z: 1
65+ }
53
66
54 Image {
67 Image {
55 objectName: "dashItem"
68 objectName: "dashItem"
@@ -131,6 +144,20 @@ Rectangle {
131 property bool draggingTransitionRunning: false
144 property bool draggingTransitionRunning: false
132 property int scheduledMoveTo: -1
145 property int scheduledMoveTo: -1
133
146
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+
134 displaced: Transition {
161 displaced: Transition {
135 NumberAnimation { properties: "x,y"; duration: UbuntuAnimation.FastDuration; easing: UbuntuAnimation.StandardEasing }
162 NumberAnimation { properties: "x,y"; duration: UbuntuAnimation.FastDuration; easing: UbuntuAnimation.StandardEasing }
136 }
163 }
@@ -336,10 +363,9 @@ Rectangle {
336 progressiveScrollingTimer.stop();
363 progressiveScrollingTimer.stop();
337 launcherListView.interactive = true;
364 launcherListView.interactive = true;
338 if (droppedIndex >= launcherListView.count - 2 && postDragging) {
365 if (droppedIndex >= launcherListView.count - 2 && postDragging) {
339− launcherListView.flick(0, -launcherListView.clickFlickSpeed);
366+ snapToBottomAnimation.start();
340− }
341− if (droppedIndex == 0 && postDragging) {
367+ } else if (droppedIndex < 2 && postDragging) {
342− launcherListView.flick(0, launcherListView.clickFlickSpeed);
368+ snapToTopAnimation.start();
343 }
369 }
344 }
370 }
345
371
qml/Notifications/NotificationMenuItemFactory.qml+6
@@ -127,6 +127,11 @@ Loader {
127 anchors.verticalCenter: checkBox.verticalCenter
127 anchors.verticalCenter: checkBox.verticalCenter
128 text: i18n.tr("Show password")
128 text: i18n.tr("Show password")
129 color: notification.sdFontColor
129 color: notification.sdFontColor
130+
131+ MouseArea {
132+ anchors.fill: parent
133+ onClicked: { checkBox.checked = !checkBox.checked }
134+ }
130 }
135 }
131 }
136 }
132 }
137 }
@@ -145,6 +150,7 @@ Loader {
145 errorText: errorAction.valid ? errorAction.state : ""
150 errorText: errorAction.valid ? errorAction.state : ""
146 retryText: notification.body
151 retryText: notification.body
147 background: shell.background
152 background: shell.background
153+ darkenBackground: 0.4
148
154
149 onEntered: {
155 onEntered: {
150 menuModel.changeState(menuIndex, passphrase);
156 menuModel.changeState(menuIndex, passphrase);
qml/Notifications/ShapedIcon.qml+1−1
@@ -35,6 +35,6 @@ Item {
35 anchors.fill: parent
35 anchors.fill: parent
36 visible: !shaped
36 visible: !shaped
37 source: fileSource
37 source: fileSource
38− fillMode: Image.PreserveAspectCrop
38+ fillMode: Image.PreserveAspectFit
39 }
39 }
40}
40}
qml/Panel/IndicatorItem.qml+1−2
@@ -99,12 +99,11 @@ IndicatorDelegate {
99
99
100 model: d.useFallbackIcon ? [ "image://theme/settings" ] : root.icons
100 model: d.useFallbackIcon ? [ "image://theme/settings" ] : root.icons
101
101
102− StatusIcon {
102+ Icon {
103 id: itemImage
103 id: itemImage
104 objectName: "icon"+index
104 objectName: "icon"+index
105 height: iconHeight
105 height: iconHeight
106 source: modelData
106 source: modelData
107− sets: ["status", "actions"]
108 color: root.color
107 color: root.color
109 Behavior on color { ColorAnimation { duration: UbuntuAnimation.FastDuration; easing: UbuntuAnimation.StandardEasing } }
108 Behavior on color { ColorAnimation { duration: UbuntuAnimation.FastDuration; easing: UbuntuAnimation.StandardEasing } }
110
109
qml/Shell.qml+41−32
@@ -51,7 +51,8 @@ Item {
51
51
52 property real edgeSize: units.gu(2)
52 property real edgeSize: units.gu(2)
53 property url defaultBackground: Qt.resolvedUrl(shell.width >= units.gu(60) ? "graphics/tablet_background.jpg" : "graphics/phone_background.jpg")
53 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
55 readonly property real panelHeight: panel.panelHeight
56 readonly property real panelHeight: panel.panelHeight
56
57
57 readonly property bool locked: LightDM.Greeter.active && !LightDM.Greeter.authenticated && !forcedUnlock
58 readonly property bool locked: LightDM.Greeter.active && !LightDM.Greeter.authenticated && !forcedUnlock
@@ -98,6 +99,31 @@ Item {
98 shell.activateApplication(app);
99 shell.activateApplication(app);
99 }
100 }
100
101
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+
101 Binding {
127 Binding {
102 target: LauncherModel
128 target: LauncherModel
103 property: "applicationManager"
129 property: "applicationManager"
@@ -114,15 +140,6 @@ Item {
114 }
140 }
115 }
141 }
116
142
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−
126 VolumeControl {
143 VolumeControl {
127 id: volumeControl
144 id: volumeControl
128 }
145 }
@@ -328,6 +345,7 @@ Item {
328 width: parent.width
345 width: parent.width
329 height: parent.height - panel.panelHeight
346 height: parent.height - panel.panelHeight
330 background: shell.background
347 background: shell.background
348+ darkenBackground: 0.4
331 alphaNumeric: AccountsService.passwordDisplayHint === AccountsService.Keyboard
349 alphaNumeric: AccountsService.passwordDisplayHint === AccountsService.Keyboard
332 minPinLength: 4
350 minPinLength: 4
333 maxPinLength: 4
351 maxPinLength: 4
@@ -523,7 +541,7 @@ Item {
523
541
524 locked: shell.locked
542 locked: shell.locked
525
543
526− defaultBackground: shell.background
544+ background: shell.background
527
545
528 width: parent.width
546 width: parent.width
529 height: parent.height
547 height: parent.height
@@ -587,7 +605,7 @@ Item {
587 Binding {
605 Binding {
588 target: ApplicationManager
606 target: ApplicationManager
589 property: "suspended"
607 property: "suspended"
590− value: greeter.shown && greeterWrapper.showProgress == 1
608+ value: (greeter.shown && greeterWrapper.showProgress == 1) || lockscreen.shown
591 }
609 }
592 }
610 }
593 }
611 }
@@ -746,19 +764,26 @@ Item {
746 margin: units.gu(1)
764 margin: units.gu(1)
747
765
748 y: topmostIsFullscreen ? 0 : panel.panelHeight
766 y: topmostIsFullscreen ? 0 : panel.panelHeight
749− width: parent.width
750 height: parent.height - (topmostIsFullscreen ? 0 : panel.panelHeight)
767 height: parent.height - (topmostIsFullscreen ? 0 : panel.panelHeight)
751
768
752 states: [
769 states: [
753 State {
770 State {
754 name: "narrow"
771 name: "narrow"
755 when: overlay.width <= units.gu(60)
772 when: overlay.width <= units.gu(60)
773+ AnchorChanges {
774+ target: notifications
756− AnchorChanges { target: notifications; anchors.left: parent.left }
775+ anchors.left: parent.left
776+ anchors.right: parent.right
777+ }
757 },
778 },
758 State {
779 State {
759 name: "wide"
780 name: "wide"
760 when: overlay.width > units.gu(60)
781 when: overlay.width > units.gu(60)
782+ AnchorChanges {
783+ target: notifications
761− AnchorChanges { target: notifications; anchors.left: undefined }
784+ anchors.left: undefined
785+ anchors.right: parent.right
786+ }
762 PropertyChanges { target: notifications; width: units.gu(38) }
787 PropertyChanges { target: notifications; width: units.gu(38) }
763 }
788 }
764 ]
789 ]
@@ -776,26 +801,10 @@ Item {
776 }
801 }
777 }
802 }
778
803
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−
795 EdgeDemo {
804 EdgeDemo {
796 id: edgeDemo
805 id: edgeDemo
797 objectName: "edgeDemo"
806 objectName: "edgeDemo"
798− z: alphaDisclaimerLabel.z + 10
807+ z: dialogs.z + 10
799 paused: Powerd.status === Powerd.Off // Saves power
808 paused: Powerd.status === Powerd.Off // Saves power
800 greeter: greeter
809 greeter: greeter
801 launcher: launcher
810 launcher: launcher
qml/Stages/PhoneStage.qml+2−2
@@ -33,7 +33,7 @@ Rectangle {
33 property real inverseProgress: 0 // This is the progress for left edge drags, in pixels.
33 property real inverseProgress: 0 // This is the progress for left edge drags, in pixels.
34 property int orientation: Qt.PortraitOrientation
34 property int orientation: Qt.PortraitOrientation
35
35
36− color: "black"
36+ color: "#111111"
37
37
38 function select(appId) {
38 function select(appId) {
39 spreadView.snapTo(priv.indexOf(appId));
39 spreadView.snapTo(priv.indexOf(appId));
@@ -286,7 +286,7 @@ Rectangle {
286 otherSelected: spreadView.selectedIndex >= 0 && !selected
286 otherSelected: spreadView.selectedIndex >= 0 && !selected
287 interactive: !spreadView.interactive && spreadView.phase === 0
287 interactive: !spreadView.interactive && spreadView.phase === 0
288 && spreadView.shiftedContentX === 0 && root.interactive && index === 0
288 && spreadView.shiftedContentX === 0 && root.interactive && index === 0
289− swipeToCloseEnabled: spreadView.interactive
289+ swipeToCloseEnabled: spreadView.interactive && !snapAnimation.running
290 maximizedAppTopMargin: root.maximizedAppTopMargin
290 maximizedAppTopMargin: root.maximizedAppTopMargin
291 dropShadow: spreadView.active ||
291 dropShadow: spreadView.active ||
292 (priv.focusedAppDelegate && priv.focusedAppDelegate.x !== 0)
292 (priv.focusedAppDelegate && priv.focusedAppDelegate.x !== 0)
qml/Stages/SessionContainer.qml+4
@@ -69,6 +69,10 @@ Item {
69 target: item; when: item
69 target: item; when: item
70 property: "orientation"; value: root.orientation
70 property: "orientation"; value: root.orientation
71 }
71 }
72+
73+ Component.onDestruction: {
74+ root.session.surface.forceActiveFocus();
75+ }
72 }
76 }
73 }
77 }
74
78
qml/Stages/SpreadDelegate.qml+12−2
@@ -75,6 +75,8 @@ Item {
75
75
76 property bool moving: false
76 property bool moving: false
77 property real distance: 0
77 property real distance: 0
78+ readonly property int threshold: units.gu(2)
79+ property int offset: 0
78
80
79 readonly property real minSpeedToClose: units.gu(40)
81 readonly property real minSpeedToClose: units.gu(40)
80
82
@@ -82,9 +84,17 @@ Item {
82 if (!dragging) {
84 if (!dragging) {
83 return;
85 return;
84 }
86 }
85− moving = moving || Math.abs(dragValue) > units.gu(1)
87+ moving = moving || Math.abs(dragValue) > threshold;
86 if (moving) {
88 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;
88 }
98 }
89 }
99 }
90
100
qml/Stages/TabletStage.qml+2−2
@@ -25,7 +25,7 @@ Rectangle {
25 id: root
25 id: root
26 objectName: "stages"
26 objectName: "stages"
27 anchors.fill: parent
27 anchors.fill: parent
28− color: "black"
28+ color: "#111111"
29
29
30 // Controls to be set from outside
30 // Controls to be set from outside
31 property bool shown: false
31 property bool shown: false
@@ -490,7 +490,7 @@ Rectangle {
490 otherSelected: spreadView.selectedIndex >= 0 && !selected
490 otherSelected: spreadView.selectedIndex >= 0 && !selected
491 isInSideStage: priv.sideStageAppId == model.appId
491 isInSideStage: priv.sideStageAppId == model.appId
492 interactive: !spreadView.interactive && spreadView.phase === 0 && root.interactive
492 interactive: !spreadView.interactive && spreadView.phase === 0 && root.interactive
493− swipeToCloseEnabled: spreadView.interactive
493+ swipeToCloseEnabled: spreadView.interactive && !snapAnimation.running
494 maximizedAppTopMargin: root.maximizedAppTopMargin
494 maximizedAppTopMargin: root.maximizedAppTopMargin
495 dragOffset: !isDash && model.appId == priv.mainStageAppId && root.inverseProgress > 0 ? root.inverseProgress : 0
495 dragOffset: !isDash && model.appId == priv.mainStageAppId && root.inverseProgress > 0 ? root.inverseProgress : 0
496 application: ApplicationManager.get(index)
496 application: ApplicationManager.get(index)
tests/mocks/Unity/Application/Session.h+1−1
@@ -56,7 +56,7 @@ public:
56
56
57 Q_INVOKABLE void addChildSession(Session* session);
57 Q_INVOKABLE void addChildSession(Session* session);
58 void insertChildSession(uint index, Session* session);
58 void insertChildSession(uint index, Session* session);
59− void removeChildSession(Session* session);
59+ Q_INVOKABLE void removeChildSession(Session* session);
60
60
61Q_SIGNALS:
61Q_SIGNALS:
62 void applicationChanged(ApplicationInfo*);
62 void applicationChanged(ApplicationInfo*);
tests/plugins/Dash/cardcreator/6.res+1−1
@@ -95,7 +95,7 @@ Item {
95 text: cardData && cardData["subtitle"] || "";
95 text: cardData && cardData["subtitle"] || "";
96 font.weight: Font.Light;
96 font.weight: Font.Light;
97 }
97 }
98−,StatusIcon {
98+,Icon {
99 id: emblemIcon;
99 id: emblemIcon;
100 objectName: "emblemIcon";
100 objectName: "emblemIcon";
101 anchors {
101 anchors {
tests/qmltests/CMakeLists.txt−1
@@ -28,7 +28,6 @@ add_qml_test(Components EdgeDemoOverlay)
28add_qml_test(Components LazyImage)
28add_qml_test(Components LazyImage)
29add_qml_test(Components Lockscreen)
29add_qml_test(Components Lockscreen)
30add_qml_test(Components Rating)
30add_qml_test(Components Rating)
31−add_qml_test(Components ResponsiveFlowView)
32add_qml_test(Components ResponsiveGridView)
31add_qml_test(Components ResponsiveGridView)
33add_qml_test(Components ResponsiveVerticalJournal IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/plugins)
32add_qml_test(Components ResponsiveVerticalJournal IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/plugins)
34add_qml_test(Components Showable)
33add_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 {
461
461
462 var innerHeader = findChild(header, "innerPageHeader");
462 var innerHeader = findChild(header, "innerPageHeader");
463 verify(innerHeader, "Could not find the inner header");
463 verify(innerHeader, "Could not find the inner header");
464− verify(Qt.colorEqual(innerHeader.textColor, data.foreground),
464+ verify(Qt.colorEqual(innerHeader.config.foregroundColor, data.foreground),
465− "Foreground color not equal: %1 != %2".arg(innerHeader.textColor).arg(data.foreground));
465+ "Foreground color not equal: %1 != %2".arg(innerHeader.config.foregroundColor).arg(data.foreground));
466
466
467 var background = findChild(header, "headerBackground");
467 var background = findChild(header, "headerBackground");
468 verify(background, "Could not find the background");
468 verify(background, "Could not find the background");
tests/qmltests/Dash/tst_PreviewListView.qml+2−2
@@ -100,8 +100,8 @@ Rectangle {
100
100
101 var innerHeader = findChild(header, "innerPageHeader");
101 var innerHeader = findChild(header, "innerPageHeader");
102 verify(innerHeader, "Could not find the inner header");
102 verify(innerHeader, "Could not find the inner header");
103− verify(Qt.colorEqual(innerHeader.textColor, UbuntuColors.darkGrey),
103+ verify(Qt.colorEqual(innerHeader.config.foregroundColor, UbuntuColors.darkGrey),
104− "Foreground color not equal: %1 != %2".arg(innerHeader.textColor).arg(UbuntuColors.darkGrey));
104+ "Foreground color not equal: %1 != %2".arg(innerHeader.config.foregroundColor).arg(UbuntuColors.darkGrey));
105
105
106 var background = findChild(header, "headerBackground");
106 var background = findChild(header, "headerBackground");
107 verify(background, "Could not find the background");
107 verify(background, "Could not find the background");
tests/qmltests/Launcher/tst_Launcher.qml+18
@@ -519,5 +519,23 @@ Item {
519 tryCompare(quickListShape, "visible", false)
519 tryCompare(quickListShape, "visible", false)
520 }
520 }
521 }
521 }
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+ }
522 }
540 }
523}
541}
tests/qmltests/Panel/tst_IndicatorsBar.qml+1−1
@@ -136,8 +136,8 @@ IndicatorTest {
136 var dataItem = findChild(indicatorsBar, root.originalModelData[data.index]["identifier"] + "-panelItem");
136 var dataItem = findChild(indicatorsBar, root.originalModelData[data.index]["identifier"] + "-panelItem");
137 verify(dataItem !== null);
137 verify(dataItem !== null);
138
138
139+ waitForRendering(dataItem);
139 var mappedPosition = indicatorsBar.mapFromItem(dataItem, dataItem.width/2, dataItem.height/2);
140 var mappedPosition = indicatorsBar.mapFromItem(dataItem, dataItem.width/2, dataItem.height/2);
140−
141 indicatorsBar.selectItemAt(mappedPosition.x);
141 indicatorsBar.selectItemAt(mappedPosition.x);
142 indicatorsBar.expanded = true;
142 indicatorsBar.expanded = true;
143 wait_for_expansion_to_settle();
143 wait_for_expansion_to_settle();
tests/qmltests/Stages/tst_PhoneStage.qml+33−3
@@ -274,7 +274,7 @@ Item {
274 compare(ApplicationManager.focusedApplicationId, selectedApp.appId);
274 compare(ApplicationManager.focusedApplicationId, selectedApp.appId);
275 }
275 }
276
276
277− function test_orientation_change_sent_to_focused_app() {
277+ function test_orientationChangeSentToFocusedApp() {
278 phoneStage.orientation = Qt.PortraitOrientation;
278 phoneStage.orientation = Qt.PortraitOrientation;
279 addApps(1);
279 addApps(1);
280
280
@@ -286,7 +286,7 @@ Item {
286 tryCompare(app, "orientation", Qt.LandscapeOrientation);
286 tryCompare(app, "orientation", Qt.LandscapeOrientation);
287 }
287 }
288
288
289− function test_orientation_change_not_sent_to_apps_while_spread_open() {
289+ function test_orientationChangeNotSentToAppsWhileSpreadOpen() {
290 phoneStage.orientation = Qt.PortraitOrientation;
290 phoneStage.orientation = Qt.PortraitOrientation;
291 addApps(1);
291 addApps(1);
292
292
@@ -299,7 +299,7 @@ Item {
299 tryCompare(app, "orientation", Qt.PortraitOrientation);
299 tryCompare(app, "orientation", Qt.PortraitOrientation);
300 }
300 }
301
301
302− function test_orientation_change_not_sent_to_unfocused_app_until_it_focused() {
302+ function test_orientationChangeNotSentToUnfocusedAppUntilItFocused() {
303 phoneStage.orientation = Qt.PortraitOrientation;
303 phoneStage.orientation = Qt.PortraitOrientation;
304 addApps(1);
304 addApps(1);
305
305
@@ -357,5 +357,35 @@ Item {
357 tryCompare(firstApp, "state", ApplicationInfoInterface.Running);
357 tryCompare(firstApp, "state", ApplicationInfoInterface.Running);
358 tryCompare(firstApp, "focused", true);
358 tryCompare(firstApp, "focused", true);
359 }
359 }
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+ }
360 }
390 }
361}
391}
tests/qmltests/Stages/tst_SessionContainer.qml+35
@@ -185,6 +185,41 @@ Rectangle {
185 tryCompare(sessionSpy, "count", data.count);
185 tryCompare(sessionSpy, "count", data.count);
186 }
186 }
187
187
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+
188 function test_nestedChildSessions_data() {
223 function test_nestedChildSessions_data() {
189 return [ { tag: "depth=2", depth: 2 },
224 return [ { tag: "depth=2", depth: 2 },
190 { tag: "depth=8", depth: 8 }
225 { tag: "depth=8", depth: 8 }
tests/qmltests/Stages/tst_SpreadDelegate.qml+4−1
@@ -137,7 +137,10 @@ Rectangle {
137
137
138 if (data.swipeToClose) {
138 if (data.swipeToClose) {
139 verify(appWindowWithShadow.y < 0);
139 verify(appWindowWithShadow.y < 0);
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
140− verify(Math.abs(Math.abs(appWindowWithShadow.y) - dragDistance) < units.gu(1));
143+ compare(Math.abs(Math.abs(appWindowWithShadow.y) - dragDistance), threshold);
141
144
142 touchRelease(spreadDelegateLoader.item, touchX, toY - units.gu(1));
145 touchRelease(spreadDelegateLoader.item, touchX, toY - units.gu(1));
143
146
tests/qmltests/tst_ShellWithPin.qml+27
@@ -444,5 +444,32 @@ Item {
444 tryCompare(lockscreen, "shown", false);
444 tryCompare(lockscreen, "shown", false);
445 tryCompare(LightDM.Greeter, "active", false);
445 tryCompare(LightDM.Greeter, "active", false);
446 }
446 }
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+
447 }
474 }
448}
475}