on xenial help sign in
Merge lp:~unity-team/unity8/side-stage-redesign
b60fb6bMichał Sawicz
CMakeLists.txt+2−1
@@ -58,6 +58,7 @@ find_package(Qt5Concurrent 5.4 REQUIRED)
58find_package(Qt5Sql 5.4 REQUIRED)
58find_package(Qt5Sql 5.4 REQUIRED)
59
59
60pkg_check_modules(APPLICATION_API REQUIRED unity-shell-application=14)
60pkg_check_modules(APPLICATION_API REQUIRED unity-shell-application=14)
61+pkg_check_modules(GEONAMES REQUIRED geonames)
61pkg_check_modules(GIO REQUIRED gio-2.0>=2.32)
62pkg_check_modules(GIO REQUIRED gio-2.0>=2.32)
62pkg_check_modules(GLIB REQUIRED glib-2.0>=2.32)
63pkg_check_modules(GLIB REQUIRED glib-2.0>=2.32)
63pkg_check_modules(QMENUMODEL REQUIRED qmenumodel)
64pkg_check_modules(QMENUMODEL REQUIRED qmenumodel)
@@ -131,7 +132,7 @@ if(NOT QUIET_LOGGER)
131 set(STDOUT_LOGGER "-o" "-,txt")
132 set(STDOUT_LOGGER "-o" "-,txt")
132endif()
133endif()
133
134
134−execute_process(COMMAND arch OUTPUT_VARIABLE ARCH)
135+execute_process(COMMAND dpkg-architecture -qDEB_HOST_ARCH OUTPUT_VARIABLE ARCH)
135if (NOT ARCH MATCHES "arm*")
136if (NOT ARCH MATCHES "arm*")
136 set(ENABLE_TOUCH_EMULATION true)
137 set(ENABLE_TOUCH_EMULATION true)
137 add_definitions(-DUNITY8_ENABLE_TOUCH_EMULATION)
138 add_definitions(-DUNITY8_ENABLE_TOUCH_EMULATION)
CODING+2
@@ -54,6 +54,8 @@ $ ./run.sh -p OR -k
54Notes
54Notes
55-----
55-----
56- to navigate, utilize the mouse left button as you would your finger
56- to navigate, utilize the mouse left button as you would your finger
57+- a three point drag (for side stage operations) can be performed by using
58+ the Shift+Control+Alt (all together) keyboard modifiers while using the mouse.
57- to get the translations work, currently you have to do make install to
59- to get the translations work, currently you have to do make install to
58 put the *.mo files into correct structure. We'll look for a better solution
60 put the *.mo files into correct structure. We'll look for a better solution
59 later.
61 later.
cmake/modules/QmlTest.cmake+1−1
@@ -183,7 +183,7 @@ function(add_manual_test COMPONENT_NAME TARGET)
183 cmake_parse_arguments(QMLTEST "${QMLTEST_OPTIONS}" "${QMLTEST_SINGLE}" "${QMLTEST_MULTI}" ${ARGN})
183 cmake_parse_arguments(QMLTEST "${QMLTEST_OPTIONS}" "${QMLTEST_SINGLE}" "${QMLTEST_MULTI}" ${ARGN})
184 mangle_arguments()
184 mangle_arguments()
185
185
186− bake_arguments("${QMLTEST_ARG_PREFIX}" args -qmljsdebugger=port:3768)
186+ bake_arguments("${QMLTEST_ARG_PREFIX}" args -qmljsdebugger=port:3768,3800)
187
187
188 set(qmltry_command
188 set(qmltry_command
189 $<TARGET_FILE:${TARGET}>
189 $<TARGET_FILE:${TARGET}>
data/com.canonical.Unity8.gschema.xml+11
@@ -27,6 +27,17 @@
27 <summary>Maximum push needed to overcome edge barrier</summary>
27 <summary>Maximum push needed to overcome edge barrier</summary>
28 <description>How much you have to push (in grid units) the mouse against an edge barrier when sensibility is 1.</description>
28 <description>How much you have to push (in grid units) the mouse against an edge barrier when sensibility is 1.</description>
29 </key>
29 </key>
30+ <key type="b" name="autohide-launcher">
31+ <default>true</default>
32+ <summary>Autohide the launcher</summary>
33+ <description>This will only be applied in windowed mode. In staged mode, the launcher will always hide.</description>
34+ </key>
35+ <key type="u" name="launcher-width">
36+ <default>8</default>
37+ <range min="6" max="12"/>
38+ <summary>Width of the launcher in grid units.</summary>
39+ <description>Changes the width of the launcher in all usage modes.</description>
40+ </key>
30 </schema>
41 </schema>
31
42
32 <schema path="/com/canonical/unity8/greeter/" id="com.canonical.Unity8.Greeter" gettext-domain="unity8">
43 <schema path="/com/canonical/unity8/greeter/" id="com.canonical.Unity8.Greeter" gettext-domain="unity8">
data/unity8-dash.conf+1
@@ -14,6 +14,7 @@ kill timeout 120
14oom score 50
14oom score 50
15
15
16respawn
16respawn
17+respawn limit unlimited
17
18
18env APP_ID=unity8-dash
19env APP_ID=unity8-dash
19
20
debian/changelog+161
@@ -1,3 +1,164 @@
1+unity8 (8.13+15.04.20150914-0ubuntu1) UNRELEASED; urgency=medium
2+
3+ * bump version to fix OOBE build
4+
5+ -- Lukas Tinkl <ltinkl@canonical.com> Mon, 14 Sep 2015 19:19:23 +0200
6+
7+unity8 (8.11+16.04.20160310.4-0ubuntu1) xenial; urgency=medium
8+
9+ [ Albert Astals Cid ]
10+ * Add context for Re-dock as asked by translators (LP: #1534608)
11+ * Add emblem to the preview header widget (LP: #1424720)
12+ * Add haptics to ScopesListCategoryItem buttons
13+ * Audio Cards: Make some of the image loading async (LP: #1533432)
14+ * Do not create fallback code for the card tool fake card (LP:
15+ #1545865)
16+ * Fix resizing the dash bringing temp scopes size out of sync (LP:
17+ #1543130)
18+ * Minor fixes for unity-scope-tool
19+ * Resolve title alignment on card creator time instead of on runtime
20+ * Use fixedHeaderHeight only in the non cardtool cards
21+ * Use the new undeprecated connectivityqt::Connectivity
22+ * asynchronous is only false on the fake card in cardtool
23+ * clazy fixes
24+
25+ [ Albert Astals Cid, CI Train Bot ]
26+ * click scope: Add the else branch so we reset the card size in all
27+ situations
28+
29+ [ Andrea Cimitan ]
30+ * PreviewSharing widget now accepts both string and array of
31+ widgetData["share-data"]["uri"] (LP: #1549056)
32+ * Update AP tests for new single preview
33+ * Use Text.Wrap for body notification text (LP: #1544909)
34+
35+ [ Andrea Cimitan, Lukáš Tinkl, Michael Zanetti, Nick Dedekind ]
36+ * some fixes for the new palette (LP: #1554616)
37+
38+ [ CI Train Bot ]
39+ * Resync trunk.
40+ * Update translation template
41+
42+ [ CI Train Bot, Daniel d'Andrada ]
43+ * Ensure the QML engine doesn't delete our mock MirSurfaces on its
44+ own.
45+
46+ [ Daniel d'Andrada ]
47+ * tst_Shell: Remove unused qml items
48+
49+ [ Josh Arenson ]
50+ * Allow the shell to blacklist input devices and force the OSK shown.
51+ (LP: #1542224)
52+
53+ [ Lukáš Tinkl ]
54+ * Disallow resizing windows up, past the Panel (LP: #1544766)
55+ * Elide the window title not to let it overflow into the indicators
56+ area (LP: #1535767)
57+ * Enable the PIN lockscreen to be used with a HW keyboard (LP:
58+ #1550359)
59+ * Fix tiny windows when switching stages
60+ * Provide a range of ports to QML JS Debugger
61+ * Watch for launcher item icon changes (LP: #1543290)
62+
63+ [ Michael Terry ]
64+ * Proxy more mouse and touchpad properties to USC (LP: #1540398) (LP:
65+ #1543344, #1540398)
66+ * Refactor the AccountsService plugin and make it slightly faster.
67+ * To let the user log in if a mouse is connected, hide the greeter
68+ cover page on a mouse click (but NOT a touch click). (LP: #1540497)
69+ * Watch AccountsService for changes to the user's real name. This was
70+ preventing us from noticing when the user set their name in the
71+ welcome wizard.
72+
73+ [ Michael Zanetti ]
74+ * Allow alt+tabbing in staged mode too (LP: #1540502)
75+ * Allow invoking the staged mode spreads by mouse right edge pushes
76+ too (LP: #1540392)
77+ * Allow loading the device configuration from an external file
78+ * Implement Launcher's keyboard navigation and updated pip design
79+ * Make launcher scalable, allow it locking (LP: #1511015)
80+ * Properly parent launcher items in all cases (LP: #1495732)
81+ * Read inputMethod surface from the new property int QtMir (LP:
82+ #1545286)
83+ * Some visual updates and rotation lock for the virtual touchpad (LP:
84+ #1549087)
85+ * Visual updates for the windowed spread (LP: #1488148)
86+ * stabilize swipeAwayGreeter()
87+
88+ [ Michał Sawicz ]
89+ * Add udev rules to make sure we have access to uinput
90+ * Make dash respawn indefinitely (LP: #1550056)
91+ * Use dpkg-architecture, not arch, to disable touch emulation
92+
93+ [ Vesa Rautiainen ]
94+ * Fixing the vertical position of desktop spread item icon.
95+
96+ -- Michał Sawicz <michal.sawicz@canonical.com> Thu, 10 Mar 2016 22:44:16 +0000
97+
98+unity8 (8.11+16.04.20160308-0ubuntu1) xenial; urgency=medium
99+
100+ [ Albert Astals Cid ]
101+ * Make these tests pass with the new SDK
102+
103+ [ Andrea Cimitan, Nick Dedekind ]
104+ * replace selected.backgroundText with normal.backgroundText in
105+ Splash, Notifications, Wizard
106+
107+ [ CI Train Bot ]
108+ * Update translation template
109+
110+ [ Michał Sawicz, Nick Dedekind ]
111+ * Fixed colours palette value set. Moved ModemItem to USC.
112+
113+ [ Michał Sawicz, Tim Peeters ]
114+ * Update headers for Dash and Splash to work properly with the new UI
115+ toolkit release.
116+
117+ [ Zoltán Balogh, Zsombor Egri ]
118+ * Use SuruDark theme instead of the deprecated SuruGradient.
119+
120+ -- Zoltan Balogh <zoltan.balogh@canonical.com> Tue, 08 Mar 2016 20:59:34 +0000
121+
122+unity8 (8.11+16.04.20160307-0ubuntu1) xenial; urgency=medium
123+
124+ [ CI Train Bot ]
125+ * Resync trunk.
126+ * Update translation template
127+
128+ [ Rodney Dawes ]
129+ * Re-enable the purchaseCancelled signal.
130+
131+ -- Rodney Dawes <ci-train-bot@canonical.com> Mon, 07 Mar 2016 14:12:08 +0000
132+
133+unity8 (8.11+16.04.20160301-0ubuntu1) xenial; urgency=medium
134+
135+ [ Albert Astals Cid ]
136+ * Hook the new scope.activationInProgress property (LP: #1537132)
137+
138+ [ Andrea Cimitan ]
139+ * Updated the Preview view to use a single PreviewModel instead old
140+ PreviewStack, using a Loader instead ListView (LP: #1541967)
141+
142+ [ CI Train Bot ]
143+ * Resync trunk.
144+ * Update translation template
145+
146+ [ Michał Sawicz ]
147+ * Add autopilot as DEP-8 tests added: debian/tests/autopilot.sh
148+
149+ -- Pawel Stolowski <ci-train-bot@canonical.com> Tue, 01 Mar 2016 10:28:52 +0000
150+
151+unity8 (8.11+16.04.20160216.1-0ubuntu1) xenial; urgency=medium
152+
153+ [ Albert Astals Cid ]
154+ * Make the audio previews create a playlist (LP: #1540477)
155+
156+ [ CI Train Bot ]
157+ * Resync trunk. added: po/aa.po
158+ * Update translation template
159+
160+ -- Pawel Stolowski <ci-train-bot@canonical.com> Tue, 16 Feb 2016 03:24:46 +0000
161+
1unity8 (8.11+16.04.20160212-0ubuntu1) xenial; urgency=medium
162unity8 (8.11+16.04.20160212-0ubuntu1) xenial; urgency=medium
2
163
3 [ Albert Astals Cid ]
164 [ Albert Astals Cid ]
debian/control+14−12
@@ -8,13 +8,14 @@ Build-Depends: cmake,
8 doxyqml,
8 doxyqml,
9# To allow cross-compiling to work, we also must append :native
9# To allow cross-compiling to work, we also must append :native
10# to g++ so we don't try to run armhf g++
10# to g++ so we don't try to run armhf g++
11−# on an x86 CPU for eaxmple, when cross-compiling.
11+# on an x86 CPU for example, when cross-compiling.
12 g++:native,
12 g++:native,
13 libandroid-properties-dev,
13 libandroid-properties-dev,
14 graphviz,
14 graphviz,
15 gsettings-ubuntu-schemas (>= 0.0.2+14.10.20140815),
15 gsettings-ubuntu-schemas (>= 0.0.2+14.10.20140815),
16− libconnectivity-qt1-dev,
16+ libconnectivity-qt1-dev (>= 0.7.1),
17 libevdev-dev,
17 libevdev-dev,
18+ libgeonames-dev (>= 0.2),
18 libgl1-mesa-dev[!armhf] | libgl-dev[!armhf],
19 libgl1-mesa-dev[!armhf] | libgl-dev[!armhf],
19 libgl1-mesa-dri,
20 libgl1-mesa-dri,
20 libgles2-mesa-dev[armhf],
21 libgles2-mesa-dev[armhf],
@@ -29,7 +30,7 @@ Build-Depends: cmake,
29 libqt5xmlpatterns5-dev,
30 libqt5xmlpatterns5-dev,
30 libsystemsettings-dev,
31 libsystemsettings-dev,
31 libudev-dev,
32 libudev-dev,
32− libunity-api-dev (>= 7.107),
33+ libunity-api-dev (>= 7.108),
33 libusermetricsoutput1-dev,
34 libusermetricsoutput1-dev,
34# Need those X11 libs touch emulation from mouse events in manual QML tests on a X11 desktop
35# Need those X11 libs touch emulation from mouse events in manual QML tests on a X11 desktop
35 libx11-dev[!armhf],
36 libx11-dev[!armhf],
@@ -54,8 +55,8 @@ Build-Depends: cmake,
54 qtdeclarative5-private-dev (>= 5.4),
55 qtdeclarative5-private-dev (>= 5.4),
55 qtdeclarative5-qtmultimedia-plugin (>= 5.4.1-1ubuntu19~overlay2),
56 qtdeclarative5-qtmultimedia-plugin (>= 5.4.1-1ubuntu19~overlay2),
56 qtdeclarative5-ubuntu-content1,
57 qtdeclarative5-ubuntu-content1,
57− qtdeclarative5-ubuntu-settings-components (>= 0.6),
58+ qtdeclarative5-ubuntu-settings-components (>= 0.7),
58− qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.3.1676) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.3.1676),
59+ qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.3.1845) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.3.1845),
59 qtdeclarative5-ubuntu-web-plugin,
60 qtdeclarative5-ubuntu-web-plugin,
60 ttf-ubuntu-font-family,
61 ttf-ubuntu-font-family,
61Standards-Version: 3.9.4
62Standards-Version: 3.9.4
@@ -70,7 +71,7 @@ X-Ubuntu-Use-Langpack: yes
70Package: indicators-client
71Package: indicators-client
71Architecture: amd64 armhf i386
72Architecture: amd64 armhf i386
72Depends: qmenumodel-qml (>= 0.2.9),
73Depends: qmenumodel-qml (>= 0.2.9),
73− qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.3.1627) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.3.1627),
74+ qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.3.1845) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.3.1845),
74 unity8 (= ${binary:Version}),
75 unity8 (= ${binary:Version}),
75 ${misc:Depends},
76 ${misc:Depends},
76 ${shlibs:Depends},
77 ${shlibs:Depends},
@@ -101,8 +102,7 @@ Depends: dmz-cursor-theme,
101 qml-module-qt-labs-folderlistmodel,
102 qml-module-qt-labs-folderlistmodel,
102 qml-module-qtquick-xmllistmodel,
103 qml-module-qtquick-xmllistmodel,
103 qml-module-qtsysteminfo,
104 qml-module-qtsysteminfo,
104− qtdeclarative5-gsettings1.0,
105+ qtdeclarative5-qtmir-plugin (>= 0.4.8),
105− qtdeclarative5-qtmir-plugin (>= 0.4.5),
106 qtdeclarative5-ubuntu-telephony0.1,
106 qtdeclarative5-ubuntu-telephony0.1,
107 qtdeclarative5-ubuntu-web-plugin,
107 qtdeclarative5-ubuntu-web-plugin,
108 ubuntu-system-settings,
108 ubuntu-system-settings,
@@ -126,15 +126,15 @@ Description: Unity 8 shell
126Package: unity8-common
126Package: unity8-common
127Architecture: all
127Architecture: all
128Depends: qml-module-qtquick-layouts,
128Depends: qml-module-qtquick-layouts,
129− qtdeclarative5-ubuntu-settings-components (>= 0.6),
129+ qtdeclarative5-ubuntu-settings-components (>= 0.7),
130 qtdeclarative5-ubuntu-thumbnailer0.1 | ubuntu-thumbnailer-impl,
130 qtdeclarative5-ubuntu-thumbnailer0.1 | ubuntu-thumbnailer-impl,
131− qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.3.1627) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.3.1627),
131+ qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.3.1845) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.3.1845),
132 qtdeclarative5-unity-notifications-plugin (>= 0.1.2) | unity-notifications-impl,
132 qtdeclarative5-unity-notifications-plugin (>= 0.1.2) | unity-notifications-impl,
133 ubuntu-thumbnailer-impl-0,
133 ubuntu-thumbnailer-impl-0,
134 unity-application-impl-14,
134 unity-application-impl-14,
135 unity-notifications-impl-3,
135 unity-notifications-impl-3,
136 unity-plugin-scopes | unity-scopes-impl,
136 unity-plugin-scopes | unity-scopes-impl,
137− unity-scopes-impl-9,
137+ unity-scopes-impl-10,
138 unity8-fake-env | unity-application-impl,
138 unity8-fake-env | unity-application-impl,
139 ${misc:Depends},
139 ${misc:Depends},
140Breaks: unity8 (<< 7.86),
140Breaks: unity8 (<< 7.86),
@@ -158,7 +158,7 @@ Depends: autopilot-qt5 (>= 1.4),
158 python3-fixtures,
158 python3-fixtures,
159 python3-gi,
159 python3-gi,
160 qttestability-autopilot (>= 1.4),
160 qttestability-autopilot (>= 1.4),
161− ubuntu-ui-toolkit-autopilot (>= 1.2.1485+15.04.20150417.1-0ubuntu1),
161+ ubuntu-ui-toolkit-autopilot (>= 1.3.1845),
162 unity-scope-click,
162 unity-scope-click,
163 unity8 (= ${source:Version}),
163 unity8 (= ${source:Version}),
164 unity8-fake-env (= ${source:Version}),
164 unity8-fake-env (= ${source:Version}),
@@ -192,6 +192,8 @@ Depends: accountsservice-ubuntu-schemas (>= 0.0.5),
192 libhardware2,
192 libhardware2,
193 pay-service,
193 pay-service,
194 unity-schemas (>= 7.3.1+14.10.20140915),
194 unity-schemas (>= 7.3.1+14.10.20140915),
195+ qtdeclarative5-gsettings1.0,
196+ qml-module-qtmultimedia,
195 ${misc:Depends},
197 ${misc:Depends},
196 ${shlibs:Depends},
198 ${shlibs:Depends},
197Provides: unity-launcher-impl,
199Provides: unity-launcher-impl,
debian/tests/autopilot.shnew file+13
@@ -0,0 +1,13 @@
1+#!/bin/sh
2+
3+# log all commands and abort on error
4+set -xe
5+
6+if [ ! -f /system/build.prop ]; then
7+ echo "WARNING: Skipping autopilot test, will only run on devices at the moment."
8+ exit 0
9+fi
10+
11+initctl --session stop unity8
12+autopilot3 run --verbose --format xml --output "${ADT_ARTIFACTS}/unity8.xml" unity8
13+initctl --session start unity8
debian/tests/control+5
@@ -3,3 +3,8 @@ Restrictions: allow-stderr
3Depends: @,
3Depends: @,
4 @builddeps@,
4 @builddeps@,
5 xvfb,
5 xvfb,
6+
7+Tests: autopilot.sh
8+Restrictions: allow-stderr,
9+ isolation-machine,
10+Depends: unity8-autopilot,
debian/unity8-common.udevnew file+2
@@ -0,0 +1,2 @@
1+# Make local foreground session able to inject input
2+KERNEL=="uinput", SUBSYSTEM=="misc", TAG+="uaccess"
debian/unity8-doc.install+1
@@ -1 +1,2 @@
1+doc/devices.conf usr/share/doc/unity8/
1usr/share/doc/unity8/*
2usr/share/doc/unity8/*
doc/devices.confnew file+30
@@ -0,0 +1,30 @@
1+# This file can hold multiple device configs. Devices are separated by sections.
2+#
3+# SupportedOrientations holds a list of all enabled orientations. A standard
4+# phone will usually have Portrait,Landcape,InvertedLandscape in order to
5+# disable upside down usage.
6+#
7+# PrimaryOrientation gives the orientation the device will start up with
8+# when there is no orientations sensor input available (yet) or lock to
9+# when an application specifies to be locked to PrimaryOrientation.
10+#
11+# The other Orientation settings can be used to re-map the orientations.
12+# A device might be used with different orientations than how the screen
13+# is physically mounted on the hardware.
14+#
15+# Category can be phone, tablet, or desktop. This option determines
16+# whether the side stage is shown (tablet) or not (phone). Using
17+# desktop will load the shell in windowed mode. Note that the user
18+# can override/change this by connecting input hardware or change
19+# user settings.
20+#
21+# Any options not listed will default to the values of the example below.
22+
23+[devicename]
24+SupportedOrientations=Portrait,InvertedPortrait,Landscape,InvertedLandscape
25+PrimaryOrientation=PrimaryOrienation
26+PortraitOrientation=Portrait
27+InvertedPortraitOrientation=InvertedPortrait
28+LandscapeOrientation=Landscape
29+InvertedLandscapeOrientation=InvertedLandscape
30+Category=phone
libs/UbuntuGestures/Timer.h+5
@@ -35,6 +35,11 @@ public:
35 virtual int interval() const = 0;
35 virtual int interval() const = 0;
36 virtual void setInterval(int msecs) = 0;
36 virtual void setInterval(int msecs) = 0;
37 virtual void start() { m_isRunning = true; }
37 virtual void start() { m_isRunning = true; }
38+ virtual void start(int msecs)
39+ {
40+ setInterval(msecs);
41+ start();
42+ }
38 virtual void stop() { m_isRunning = false; }
43 virtual void stop() { m_isRunning = false; }
39 bool isRunning() const { return m_isRunning; }
44 bool isRunning() const { return m_isRunning; }
40 virtual bool isSingleShot() const = 0;
45 virtual bool isSingleShot() const = 0;
libs/UbuntuGestures/TouchRegistry.cpp+15−10
@@ -359,10 +359,6 @@ void TouchRegistry::removeCandidateOwnerForTouchByIndex(Pool<TouchRegistry::Touc
359
359
360void TouchRegistry::requestTouchOwnership(int id, QQuickItem *candidate)
360void TouchRegistry::requestTouchOwnership(int id, QQuickItem *candidate)
361{
361{
362− #if TOUCHREGISTRY_DEBUG
363− UG_DEBUG << "requestTouchOwnership id " << id << "candidate" << candidate;
364− #endif
365−
366 Pool<TouchInfo>::Iterator touchInfo = findTouchInfo(id);
362 Pool<TouchInfo>::Iterator touchInfo = findTouchInfo(id);
367 if (!touchInfo) { qFatal("TouchRegistry: Failed to find TouchInfo"); }
363 if (!touchInfo) { qFatal("TouchRegistry: Failed to find TouchInfo"); }
368
364
@@ -379,6 +375,9 @@ void TouchRegistry::requestTouchOwnership(int id, QQuickItem *candidate)
379 break;
375 break;
380 }
376 }
381 }
377 }
378+ #if TOUCHREGISTRY_DEBUG
379+ UG_DEBUG << "requestTouchOwnership id " << id << "candidate" << candidate << "index: " << candidateIndex;
380+ #endif
382
381
383 // add it as a candidate if not present yet
382 // add it as a candidate if not present yet
384 if (candidateIndex < 0) {
383 if (candidateIndex < 0) {
@@ -533,16 +532,22 @@ void TouchRegistry::TouchInfo::notifyCandidatesOfOwnershipResolution()
533 << " gained) to candidate" << candidates[0].item;
532 << " gained) to candidate" << candidates[0].item;
534 #endif
533 #endif
535
534
536− TouchOwnershipEvent gainedOwnershipEvent(id, true /*gained*/);
535+ // need to take a copy of the item list in case
537− QCoreApplication::sendEvent(candidates[0].item, &gainedOwnershipEvent);
536+ // we call back in to remove candidate during the lost ownership event.
537+ QList<QPointer<QQuickItem>> items;
538+ Q_FOREACH(const CandidateInfo& info, candidates) {
539+ items << info.item;
540+ }
538
541
542+ TouchOwnershipEvent gainedOwnershipEvent(id, true /*gained*/);
543+ QCoreApplication::sendEvent(items[0], &gainedOwnershipEvent);
539
544
540 TouchOwnershipEvent lostOwnershipEvent(id, false /*gained*/);
545 TouchOwnershipEvent lostOwnershipEvent(id, false /*gained*/);
541− for (int i = 1; i < candidates.count(); ++i) {
546+ for (int i = 1; i < items.count(); ++i) {
542 #if TOUCHREGISTRY_DEBUG
547 #if TOUCHREGISTRY_DEBUG
543− UG_DEBUG << "sending TouchWonershipEvent(id =" << id << " lost) to candidate"
548+ UG_DEBUG << "sending TouchOwnershipEvent(id =" << id << " lost) to candidate"
544− << candidates[i].item;
549+ << items[i];
545 #endif
550 #endif
546− QCoreApplication::sendEvent(candidates[i].item, &lostOwnershipEvent);
551+ QCoreApplication::sendEvent(items[i], &lostOwnershipEvent);
547 }
552 }
548}
553}
plugins/AccountsService/AccountsService.cpp+207−336
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013, 2015 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
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
5 * it under the terms of the GNU General Public License as published by
@@ -12,8 +12,6 @@
12 *
12 *
13 * You should have received a copy of the GNU General Public License
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/>.
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Author: Michael Terry <michael.terry@canonical.com>
17 */
15 */
18
16
19#include "AccountsService.h"
17#include "AccountsService.h"
@@ -24,17 +22,54 @@
24#include <QStringList>
22#include <QStringList>
25#include <QDebug>
23#include <QDebug>
26
24
25+#define IFACE_ACCOUNTS_USER QStringLiteral("org.freedesktop.Accounts.User")
26+#define IFACE_LOCATION_HERE QStringLiteral("com.ubuntu.location.providers.here.AccountsService")
27+#define IFACE_UBUNTU_INPUT QStringLiteral("com.ubuntu.AccountsService.Input")
28+#define IFACE_UBUNTU_SECURITY QStringLiteral("com.ubuntu.AccountsService.SecurityPrivacy")
29+#define IFACE_UBUNTU_SECURITY_OLD QStringLiteral("com.ubuntu.touch.AccountsService.SecurityPrivacy")
30+#define IFACE_UNITY QStringLiteral("com.canonical.unity.AccountsService")
31+#define IFACE_UNITY_PRIVATE QStringLiteral("com.canonical.unity.AccountsService.Private")
32+
33+#define PROP_BACKGROUND_FILE QStringLiteral("BackgroundFile")
34+#define PROP_DEMO_EDGES QStringLiteral("demo-edges")
35+#define PROP_EMAIL QStringLiteral("Email")
36+#define PROP_ENABLE_INDICATORS_WHILE_LOCKED QStringLiteral("EnableIndicatorsWhileLocked")
37+#define PROP_ENABLE_LAUNCHER_WHILE_LOCKED QStringLiteral("EnableLauncherWhileLocked")
38+#define PROP_FAILED_LOGINS QStringLiteral("FailedLogins")
39+#define PROP_LICENSE_ACCEPTED QStringLiteral("LicenseAccepted")
40+#define PROP_LICENSE_BASE_PATH QStringLiteral("LicenseBasePath")
41+#define PROP_MOUSE_CURSOR_SPEED QStringLiteral("MouseCursorSpeed")
42+#define PROP_MOUSE_DOUBLE_CLICK_SPEED QStringLiteral("MouseDoubleClickSpeed")
43+#define PROP_MOUSE_PRIMARY_BUTTON QStringLiteral("MousePrimaryButton")
44+#define PROP_MOUSE_SCROLL_SPEED QStringLiteral("MouseScrollSpeed")
45+#define PROP_PASSWORD_DISPLAY_HINT QStringLiteral("PasswordDisplayHint")
46+#define PROP_REAL_NAME QStringLiteral("RealName")
47+#define PROP_STATS_WELCOME_SCREEN QStringLiteral("StatsWelcomeScreen")
48+#define PROP_TOUCHPAD_CURSOR_SPEED QStringLiteral("TouchpadCursorSpeed")
49+#define PROP_TOUCHPAD_DISABLE_WHILE_TYPING QStringLiteral("TouchpadDisableWhileTyping")
50+#define PROP_TOUCHPAD_DISABLE_WITH_MOUSE QStringLiteral("TouchpadDisableWithMouse")
51+#define PROP_TOUCHPAD_DOUBLE_CLICK_SPEED QStringLiteral("TouchpadDoubleClickSpeed")
52+#define PROP_TOUCHPAD_PRIMARY_BUTTON QStringLiteral("TouchpadPrimaryButton")
53+#define PROP_TOUCHPAD_SCROLL_SPEED QStringLiteral("TouchpadScrollSpeed")
54+#define PROP_TOUCHPAD_TAP_TO_CLICK QStringLiteral("TouchpadTapToClick")
55+#define PROP_TOUCHPAD_TWO_FINGER_SCROLL QStringLiteral("TouchpadTwoFingerScroll")
56+
57+
58+QVariant primaryButtonConverter(const QVariant &value)
59+{
60+ QString stringValue = value.toString();
61+ if (stringValue == "left") {
62+ return QVariant::fromValue(0);
63+ } else if (stringValue == "right") {
64+ return QVariant::fromValue(1); // Mir is less clear on this -- any non-zero value is the same
65+ } else {
66+ return QVariant::fromValue(0); // default to left
67+ }
68+}
69+
27AccountsService::AccountsService(QObject* parent, const QString &user)
70AccountsService::AccountsService(QObject* parent, const QString &user)
28− : QObject(parent),
71+ : QObject(parent)
29− m_service(new AccountsServiceDBusAdaptor(this)),
72+ , m_service(new AccountsServiceDBusAdaptor(this))
30− m_demoEdges(false),
31− m_enableLauncherWhileLocked(false),
32− m_enableIndicatorsWhileLocked(false),
33− m_statsWelcomeScreen(false),
34− m_passwordDisplayHint(Keyboard),
35− m_failedLogins(0),
36− m_hereEnabled(false),
37− m_hereLicensePath() // null means not set yet
38{
73{
39 m_unityInput = new QDBusInterface(QStringLiteral("com.canonical.Unity.Input"),
74 m_unityInput = new QDBusInterface(QStringLiteral("com.canonical.Unity.Input"),
40 QStringLiteral("/com/canonical/Unity/Input"),
75 QStringLiteral("/com/canonical/Unity/Input"),
@@ -44,6 +79,45 @@ AccountsService::AccountsService(QObject* parent, const QString &user)
44 connect(m_service, &AccountsServiceDBusAdaptor::propertiesChanged, this, &AccountsService::onPropertiesChanged);
79 connect(m_service, &AccountsServiceDBusAdaptor::propertiesChanged, this, &AccountsService::onPropertiesChanged);
45 connect(m_service, &AccountsServiceDBusAdaptor::maybeChanged, this, &AccountsService::onMaybeChanged);
80 connect(m_service, &AccountsServiceDBusAdaptor::maybeChanged, this, &AccountsService::onMaybeChanged);
46
81
82+ registerProperty(IFACE_ACCOUNTS_USER, PROP_BACKGROUND_FILE, QStringLiteral("backgroundFileChanged"));
83+ registerProperty(IFACE_ACCOUNTS_USER, PROP_EMAIL, QStringLiteral("emailChanged"));
84+ registerProperty(IFACE_ACCOUNTS_USER, PROP_REAL_NAME, QStringLiteral("realNameChanged"));
85+ registerProperty(IFACE_LOCATION_HERE, PROP_LICENSE_ACCEPTED, QStringLiteral("hereEnabledChanged"));
86+ registerProperty(IFACE_LOCATION_HERE, PROP_LICENSE_BASE_PATH, QStringLiteral("hereLicensePathChanged"));
87+ registerProperty(IFACE_UBUNTU_SECURITY, PROP_ENABLE_LAUNCHER_WHILE_LOCKED, QStringLiteral("enableLauncherWhileLockedChanged"));
88+ registerProperty(IFACE_UBUNTU_SECURITY, PROP_ENABLE_INDICATORS_WHILE_LOCKED, QStringLiteral("enableIndicatorsWhileLockedChanged"));
89+ registerProperty(IFACE_UBUNTU_SECURITY, PROP_PASSWORD_DISPLAY_HINT, QStringLiteral("passwordDisplayHintChanged"));
90+ registerProperty(IFACE_UBUNTU_SECURITY_OLD, PROP_STATS_WELCOME_SCREEN, QStringLiteral("statsWelcomeScreenChanged"));
91+ registerProperty(IFACE_UNITY, PROP_DEMO_EDGES, QStringLiteral("demoEdgesChanged"));
92+ registerProperty(IFACE_UNITY_PRIVATE, PROP_FAILED_LOGINS, QStringLiteral("failedLoginsChanged"));
93+
94+ registerProxy(IFACE_UBUNTU_INPUT, PROP_MOUSE_CURSOR_SPEED,
95+ m_unityInput, QStringLiteral("setMouseCursorSpeed"));
96+ registerProxy(IFACE_UBUNTU_INPUT, PROP_MOUSE_DOUBLE_CLICK_SPEED,
97+ m_unityInput, QStringLiteral("setMouseDoubleClickSpeed"));
98+ registerProxy(IFACE_UBUNTU_INPUT, PROP_MOUSE_PRIMARY_BUTTON,
99+ m_unityInput, QStringLiteral("setMousePrimaryButton"),
100+ primaryButtonConverter);
101+ registerProxy(IFACE_UBUNTU_INPUT, PROP_MOUSE_SCROLL_SPEED,
102+ m_unityInput, QStringLiteral("setMouseScrollSpeed"));
103+ registerProxy(IFACE_UBUNTU_INPUT, PROP_TOUCHPAD_CURSOR_SPEED,
104+ m_unityInput, QStringLiteral("setTouchpadCursorSpeed"));
105+ registerProxy(IFACE_UBUNTU_INPUT, PROP_TOUCHPAD_SCROLL_SPEED,
106+ m_unityInput, QStringLiteral("setTouchpadScrollSpeed"));
107+ registerProxy(IFACE_UBUNTU_INPUT, PROP_TOUCHPAD_DISABLE_WHILE_TYPING,
108+ m_unityInput, QStringLiteral("setTouchpadDisableWhileTyping"));
109+ registerProxy(IFACE_UBUNTU_INPUT, PROP_TOUCHPAD_DISABLE_WITH_MOUSE,
110+ m_unityInput, QStringLiteral("setTouchpadDisableWithMouse"));
111+ registerProxy(IFACE_UBUNTU_INPUT, PROP_TOUCHPAD_DOUBLE_CLICK_SPEED,
112+ m_unityInput, QStringLiteral("setTouchpadDoubleClickSpeed"));
113+ registerProxy(IFACE_UBUNTU_INPUT, PROP_TOUCHPAD_PRIMARY_BUTTON,
114+ m_unityInput, QStringLiteral("setTouchpadPrimaryButton"),
115+ primaryButtonConverter);
116+ registerProxy(IFACE_UBUNTU_INPUT, PROP_TOUCHPAD_TAP_TO_CLICK,
117+ m_unityInput, QStringLiteral("setTouchpadTapToClick"));
118+ registerProxy(IFACE_UBUNTU_INPUT, PROP_TOUCHPAD_TWO_FINGER_SCROLL,
119+ m_unityInput, QStringLiteral("setTouchpadTwoFingerScroll"));
120+
47 setUser(!user.isEmpty() ? user : QString::fromUtf8(qgetenv("USER")));
121 setUser(!user.isEmpty() ? user : QString::fromUtf8(qgetenv("USER")));
48}
122}
49
123
@@ -57,410 +131,222 @@ void AccountsService::setUser(const QString &user)
57 if (user.isEmpty() || m_user == user)
131 if (user.isEmpty() || m_user == user)
58 return;
132 return;
59
133
134+ bool wasEmpty = m_user.isEmpty();
135+
60 m_user = user;
136 m_user = user;
61 Q_EMIT userChanged();
137 Q_EMIT userChanged();
62
138
63− updateDemoEdges(false);
139+ // Do the first update synchronously, as a cheap way to block rendering
64− updateEnableLauncherWhileLocked(false);
140+ // until we have the right values on bootup.
65− updateEnableIndicatorsWhileLocked(false);
141+ refresh(!wasEmpty);
66− updateBackgroundFile(false);
67− updateMouseCursorSpeed();
68− updateTouchpadCursorSpeed();
69− updateStatsWelcomeScreen(false);
70− updatePasswordDisplayHint(false);
71− updateFailedLogins(false);
72− updateHereEnabled(false);
73− updateHereLicensePath(false);
74}
142}
75
143
76bool AccountsService::demoEdges() const
144bool AccountsService::demoEdges() const
77{
145{
78− return m_demoEdges;
146+ auto value = getProperty(IFACE_UNITY, PROP_DEMO_EDGES);
147+ return value.toBool();
79}
148}
80
149
81void AccountsService::setDemoEdges(bool demoEdges)
150void AccountsService::setDemoEdges(bool demoEdges)
82{
151{
83− if (m_demoEdges != demoEdges) {
152+ setProperty(IFACE_UNITY, PROP_DEMO_EDGES, demoEdges);
84− m_demoEdges = demoEdges;
85− m_service->setUserPropertyAsync(m_user, QStringLiteral("com.canonical.unity.AccountsService"), QStringLiteral("demo-edges"), demoEdges);
86−
87− Q_EMIT demoEdgesChanged();
88− }
89}
153}
90
154
91bool AccountsService::enableLauncherWhileLocked() const
155bool AccountsService::enableLauncherWhileLocked() const
92{
156{
93− return m_enableLauncherWhileLocked;
157+ auto value = getProperty(IFACE_UBUNTU_SECURITY, PROP_ENABLE_LAUNCHER_WHILE_LOCKED);
158+ return value.toBool();
94}
159}
95
160
96bool AccountsService::enableIndicatorsWhileLocked() const
161bool AccountsService::enableIndicatorsWhileLocked() const
97{
162{
98− return m_enableIndicatorsWhileLocked;
163+ auto value = getProperty(IFACE_UBUNTU_SECURITY, PROP_ENABLE_INDICATORS_WHILE_LOCKED);
164+ return value.toBool();
99}
165}
100
166
101QString AccountsService::backgroundFile() const
167QString AccountsService::backgroundFile() const
102{
168{
103− return m_backgroundFile;
169+ auto value = getProperty(IFACE_ACCOUNTS_USER, PROP_BACKGROUND_FILE);
170+ return value.toString();
104}
171}
105
172
106bool AccountsService::statsWelcomeScreen() const
173bool AccountsService::statsWelcomeScreen() const
107{
174{
108− return m_statsWelcomeScreen;
175+ auto value = getProperty(IFACE_UBUNTU_SECURITY_OLD, PROP_STATS_WELCOME_SCREEN);
176+ return value.toBool();
109}
177}
110
178
111AccountsService::PasswordDisplayHint AccountsService::passwordDisplayHint() const
179AccountsService::PasswordDisplayHint AccountsService::passwordDisplayHint() const
112{
180{
113− return m_passwordDisplayHint;
181+ auto value = getProperty(IFACE_UBUNTU_SECURITY, PROP_PASSWORD_DISPLAY_HINT);
182+ return (PasswordDisplayHint)value.toInt();
114}
183}
115
184
116bool AccountsService::hereEnabled() const
185bool AccountsService::hereEnabled() const
117{
186{
118− return m_hereEnabled;
187+ auto value = getProperty(IFACE_LOCATION_HERE, PROP_LICENSE_ACCEPTED);
188+ return value.toBool();
119}
189}
120
190
121void AccountsService::setHereEnabled(bool enabled)
191void AccountsService::setHereEnabled(bool enabled)
122{
192{
123− if (m_hereEnabled != enabled) {
193+ setProperty(IFACE_LOCATION_HERE, PROP_LICENSE_ACCEPTED, enabled);
124− m_hereEnabled = enabled;
125− m_service->setUserPropertyAsync(m_user, QStringLiteral("com.ubuntu.location.providers.here.AccountsService"), QStringLiteral("LicenseAccepted"), enabled);
126−
127− Q_EMIT hereEnabledChanged();
128− }
129}
194}
130
195
131QString AccountsService::hereLicensePath() const
196QString AccountsService::hereLicensePath() const
132{
197{
133− return m_hereLicensePath;
198+ auto value = getProperty(IFACE_LOCATION_HERE, PROP_LICENSE_BASE_PATH);
199+ QString hereLicensePath = value.toString();
200+ if (hereLicensePath.isEmpty() || !QFile::exists(hereLicensePath))
201+ hereLicensePath = QStringLiteral("");
202+ return hereLicensePath;
134}
203}
135
204
136bool AccountsService::hereLicensePathValid() const
205bool AccountsService::hereLicensePathValid() const
137{
206{
207+ auto value = getProperty(IFACE_LOCATION_HERE, PROP_LICENSE_BASE_PATH);
138− return !m_hereLicensePath.isNull();
208+ return !value.toString().isNull();
139}
209}
140
210
141−void AccountsService::updateDemoEdges(bool async)
211+QString AccountsService::realName() const
142{
212{
143− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
213+ auto value = getProperty(IFACE_ACCOUNTS_USER, PROP_REAL_NAME);
144− QStringLiteral("com.canonical.unity.AccountsService"),
145− QStringLiteral("demo-edges"));
146− QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
147−
148− connect(watcher, &QDBusPendingCallWatcher::finished,
149− this, [this](QDBusPendingCallWatcher* watcher) {
150−
151− QDBusPendingReply<QDBusVariant> reply = *watcher;
152− watcher->deleteLater();
153− if (reply.isError()) {
154− qWarning() << "Failed to get 'demo-edges' property - " << reply.error().message();
155− return;
214+ return value.toString();
156− }
157−
158− auto demoEdges = reply.value().variant().toBool();
159− if (m_demoEdges != demoEdges) {
160− m_demoEdges = demoEdges;
161− Q_EMIT demoEdgesChanged();
162− }
163− });
164− if (!async) {
165− watcher->waitForFinished();
166− delete watcher;
167− }
168}
215}
169
216
170−void AccountsService::updateEnableLauncherWhileLocked(bool async)
217+void AccountsService::setRealName(const QString &realName)
171{
218{
172− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
219+ setProperty(IFACE_ACCOUNTS_USER, PROP_REAL_NAME, realName);
173− QStringLiteral("com.ubuntu.AccountsService.SecurityPrivacy"),
174− QStringLiteral("EnableLauncherWhileLocked"));
175− QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
176−
177− connect(watcher, &QDBusPendingCallWatcher::finished,
178− this, [this](QDBusPendingCallWatcher* watcher) {
179−
180− QDBusPendingReply<QVariant> reply = *watcher;
181− watcher->deleteLater();
182− if (reply.isError()) {
183− qWarning() << "Failed to get 'EnableLauncherWhileLocked' property - " << reply.error().message();
184− return;
185− }
186−
187− const bool enableLauncherWhileLocked = reply.value().toBool();
188− if (m_enableLauncherWhileLocked != enableLauncherWhileLocked) {
189− m_enableLauncherWhileLocked = enableLauncherWhileLocked;
190− Q_EMIT enableLauncherWhileLockedChanged();
191− }
192− });
193− if (!async) {
194− watcher->waitForFinished();
195− delete watcher;
196− }
197}
220}
198
221
199−void AccountsService::updateEnableIndicatorsWhileLocked(bool async)
222+QString AccountsService::email() const
200{
223{
201− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
224+ auto value = getProperty(IFACE_ACCOUNTS_USER, PROP_EMAIL);
202− QStringLiteral("com.ubuntu.AccountsService.SecurityPrivacy"),
203− QStringLiteral("EnableIndicatorsWhileLocked"));
204− QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
205−
206− connect(watcher, &QDBusPendingCallWatcher::finished,
207− this, [this](QDBusPendingCallWatcher* watcher) {
208−
209− QDBusPendingReply<QVariant> reply = *watcher;
210− watcher->deleteLater();
211− if (reply.isError()) {
212− qWarning() << "Failed to get 'EnableIndicatorsWhileLocked' property - " << reply.error().message();
213− return;
225+ return value.toString();
214− }
215−
216− const bool enableIndicatorsWhileLocked = reply.value().toBool();
217− if (m_enableIndicatorsWhileLocked != enableIndicatorsWhileLocked) {
218− m_enableIndicatorsWhileLocked = enableIndicatorsWhileLocked;
219− Q_EMIT enableIndicatorsWhileLockedChanged();
220− }
221− });
222− if (!async) {
223− watcher->waitForFinished();
224− delete watcher;
225− }
226}
226}
227
227
228−void AccountsService::updateBackgroundFile(bool async)
228+void AccountsService::setEmail(const QString &email)
229{
229{
230− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
230+ setProperty(IFACE_ACCOUNTS_USER, PROP_EMAIL, email);
231− QStringLiteral("org.freedesktop.Accounts.User"),
232− QStringLiteral("BackgroundFile"));
233− QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
234−
235− connect(watcher, &QDBusPendingCallWatcher::finished,
236− this, [this](QDBusPendingCallWatcher* watcher) {
237−
238− QDBusPendingReply<QVariant> reply = *watcher;
239− watcher->deleteLater();
240− if (reply.isError()) {
241− qWarning() << "Failed to get 'BackgroundFile' property - " << reply.error().message();
242− return;
243− }
244−
245− const QString backgroundFile = reply.value().toString();
246− if (m_backgroundFile != backgroundFile) {
247− m_backgroundFile = backgroundFile;
248− Q_EMIT backgroundFileChanged();
249− }
250− });
251− if (!async) {
252− watcher->waitForFinished();
253− delete watcher;
254− }
255}
231}
256
232
257−void AccountsService::updateMouseCursorSpeed()
233+uint AccountsService::failedLogins() const
258{
234{
259− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
235+ return getProperty(IFACE_UNITY_PRIVATE, PROP_FAILED_LOGINS).toUInt();
260− QStringLiteral("com.ubuntu.AccountsService.Input"),
261− QStringLiteral("MouseCursorSpeed"));
262− QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
263−
264− connect(watcher, &QDBusPendingCallWatcher::finished,
265− this, [this](QDBusPendingCallWatcher* watcher) {
266−
267− QDBusPendingReply<QVariant> reply = *watcher;
268− watcher->deleteLater();
269− if (reply.isError()) {
270− qWarning() << "Failed to get 'MouseCursorSpeed' property - " << reply.error().message();
271− return;
272− }
273−
274− // Merely proxy this along to USC. We don't care about keeping a copy
275− // or exporting it internally.
276− m_unityInput->asyncCall(QStringLiteral("setMouseCursorSpeed"), reply.value());
277− });
278}
236}
279
237
280−void AccountsService::updateTouchpadCursorSpeed()
238+void AccountsService::setFailedLogins(uint failedLogins)
281{
239{
282− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
240+ setProperty(IFACE_UNITY_PRIVATE, PROP_FAILED_LOGINS, failedLogins);
283− QStringLiteral("com.ubuntu.AccountsService.Input"),
241+}
284− QStringLiteral("TouchpadCursorSpeed"));
285− QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
286−
287− connect(watcher, &QDBusPendingCallWatcher::finished,
288− this, [this](QDBusPendingCallWatcher* watcher) {
289
242
290− QDBusPendingReply<QVariant> reply = *watcher;
243+// ====================================================
291− watcher->deleteLater();
244+// Everything below this line is generic helper methods
292− if (reply.isError()) {
245+// ====================================================
293− qWarning() << "Failed to get 'TouchpadCursorSpeed' property - " << reply.error().message();
294− return;
295− }
296
246
297− // Merely proxy this along to USC. We don't care about keeping a copy
247+void AccountsService::emitChangedForProperty(const QString &interface, const QString &property)
298− // or exporting it internally.
248+{
299− m_unityInput->asyncCall(QStringLiteral("setTouchpadCursorSpeed"), reply.value());
249+ QString signalName = m_properties[interface][property].signal;
300− });
250+ QMetaObject::invokeMethod(this, signalName.toUtf8().data());
301}
251}
302
252
303−void AccountsService::updateStatsWelcomeScreen(bool async)
253+QVariant AccountsService::getProperty(const QString &interface, const QString &property) const
304{
254{
305− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
255+ return m_properties[interface][property].value;
306− QStringLiteral("com.ubuntu.touch.AccountsService.SecurityPrivacy"),
307− QStringLiteral("StatsWelcomeScreen"));
308− QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
309−
310− connect(watcher, &QDBusPendingCallWatcher::finished,
311− this, [this](QDBusPendingCallWatcher* watcher) {
312−
313− QDBusPendingReply<QVariant> reply = *watcher;
314− watcher->deleteLater();
315− if (reply.isError()) {
316− qWarning() << "Failed to get 'StatsWelcomeScreen' property - " << reply.error().message();
317− return;
318− }
319−
320− const bool statsWelcomeScreen = reply.value().toBool();
321− if (m_statsWelcomeScreen != statsWelcomeScreen) {
322− m_statsWelcomeScreen = statsWelcomeScreen;
323− Q_EMIT statsWelcomeScreenChanged();
324− }
325− });
326− if (!async) {
327− watcher->waitForFinished();
328− delete watcher;
329− }
330}
256}
331
257
332−void AccountsService::updatePasswordDisplayHint(bool async)
258+void AccountsService::setProperty(const QString &interface, const QString &property, const QVariant &value)
333{
259{
334− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
260+ if (m_properties[interface][property].value != value) {
335− QStringLiteral("com.ubuntu.AccountsService.SecurityPrivacy"),
261+ m_properties[interface][property].value = value;
336− QStringLiteral("PasswordDisplayHint"));
262+ m_service->setUserPropertyAsync(m_user, interface, property, value);
337− QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
263+ emitChangedForProperty(interface, property);
338−
339− connect(watcher, &QDBusPendingCallWatcher::finished,
340− this, [this](QDBusPendingCallWatcher* watcher) {
341−
342− QDBusPendingReply<QVariant> reply = *watcher;
343− watcher->deleteLater();
344− if (reply.isError()) {
345− qWarning() << "Failed to get 'PasswordDisplayHint' property - " << reply.error().message();
346− return;
347− }
348−
349− const PasswordDisplayHint passwordDisplayHint = (PasswordDisplayHint)reply.value().toInt();
350− if (m_passwordDisplayHint != passwordDisplayHint) {
351− m_passwordDisplayHint = passwordDisplayHint;
352− Q_EMIT passwordDisplayHintChanged();
353− }
354− });
355− if (!async) {
356− watcher->waitForFinished();
357− delete watcher;
358 }
264 }
359}
265}
360
266
361−void AccountsService::updateFailedLogins(bool async)
267+void AccountsService::updateCache(const QString &interface, const QString &property, const QVariant &value)
362{
268{
363− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
269+ PropertyInfo &info = m_properties[interface][property];
364− QStringLiteral("com.canonical.unity.AccountsService.Private"),
270+
365− QStringLiteral("FailedLogins"));
271+ if (info.proxyInterface) {
366− QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
272+ QVariant finalValue;
367−
273+ if (info.proxyConverter) {
368− connect(watcher, &QDBusPendingCallWatcher::finished,
274+ finalValue = info.proxyConverter(value);
369− this, [this](QDBusPendingCallWatcher* watcher) {
275+ } else {
370−
276+ finalValue = value;
371− QDBusPendingReply<QVariant> reply = *watcher;
372− watcher->deleteLater();
373− if (reply.isError()) {
374− qWarning() << "Failed to get 'FailedLogins' property - " << reply.error().message();
375− return;
376 }
277 }
278+ info.proxyInterface->asyncCall(info.proxyMethod, finalValue);
279+ return; // don't bother saving a copy
280+ }
377
281
378− const uint failedLogins = reply.value().toUInt();
282+ if (info.value != value) {
379− if (m_failedLogins != failedLogins) {
283+ info.value = value;
380− m_failedLogins = failedLogins;
284+ emitChangedForProperty(interface, property);
381− Q_EMIT failedLoginsChanged();
382− }
383− });
384− if (!async) {
385− watcher->waitForFinished();
386− delete watcher;
387 }
285 }
388}
286}
389
287
390−void AccountsService::updateHereEnabled(bool async)
288+void AccountsService::updateProperty(const QString &interface, const QString &property)
391{
289{
392 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
290 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
393− QStringLiteral("com.ubuntu.location.providers.here.AccountsService"),
291+ interface,
394− QStringLiteral("LicenseAccepted"));
292+ property);
395 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
293 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
396
294
397 connect(watcher, &QDBusPendingCallWatcher::finished,
295 connect(watcher, &QDBusPendingCallWatcher::finished,
398− this, [this](QDBusPendingCallWatcher* watcher) {
296+ this, [this, interface, property](QDBusPendingCallWatcher* watcher) {
399
297
400 QDBusPendingReply<QVariant> reply = *watcher;
298 QDBusPendingReply<QVariant> reply = *watcher;
401 watcher->deleteLater();
299 watcher->deleteLater();
402 if (reply.isError()) {
300 if (reply.isError()) {
403− qWarning() << "Failed to get 'LicenseAccepted' property - " << reply.error().message();
301+ qWarning() << "Failed to get '" << property << "' property:" << reply.error().message();
404 return;
302 return;
405 }
303 }
406
304
407− const bool hereEnabled = reply.value().toBool();
305+ updateCache(interface, property, reply.value());
408− if (m_hereEnabled != hereEnabled) {
409− m_hereEnabled = hereEnabled;
410− Q_EMIT hereEnabledChanged();
411− }
412 });
306 });
413− if (!async) {
414− watcher->waitForFinished();
415− delete watcher;
416− }
417}
307}
418
308
419−void AccountsService::updateHereLicensePath(bool async)
309+void AccountsService::updateAllProperties(const QString &interface, bool async)
420{
310{
421− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
311+ QDBusPendingCall pendingReply = m_service->getAllPropertiesAsync(m_user,
422− QStringLiteral("com.ubuntu.location.providers.here.AccountsService"),
312+ interface);
423− QStringLiteral("LicenseBasePath"));
424 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
313 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
425
314
426 connect(watcher, &QDBusPendingCallWatcher::finished,
315 connect(watcher, &QDBusPendingCallWatcher::finished,
427− this, [this](QDBusPendingCallWatcher* watcher) {
316+ this, [this, interface](QDBusPendingCallWatcher* watcher) {
428
317
429− QDBusPendingReply<QVariant> reply = *watcher;
318+ QDBusPendingReply< QHash<QString, QVariant> > reply = *watcher;
430 watcher->deleteLater();
319 watcher->deleteLater();
431 if (reply.isError()) {
320 if (reply.isError()) {
432− qWarning() << "Failed to get 'LicenseBasePath' property - " << reply.error().message();
321+ qWarning() << "Failed to get all properties for" << interface << ":" << reply.error().message();
433 return;
322 return;
434 }
323 }
435
324
436− QString hereLicensePath = reply.value().toString();
325+ auto valueHash = reply.value();
437− if (hereLicensePath.isEmpty() || !QFile::exists(hereLicensePath))
326+ auto i = valueHash.constBegin();
438− hereLicensePath = QLatin1String("");
327+ while (i != valueHash.constEnd()) {
439−
328+ updateCache(interface, i.key(), i.value());
440− if (m_hereLicensePath.isNull() || m_hereLicensePath != hereLicensePath) {
329+ ++i;
441− m_hereLicensePath = hereLicensePath;
442− Q_EMIT hereLicensePathChanged();
443 }
330 }
444 });
331 });
445 if (!async) {
332 if (!async) {
446 watcher->waitForFinished();
333 watcher->waitForFinished();
447− delete watcher;
448 }
334 }
449}
335}
450
336
451−uint AccountsService::failedLogins() const
337+void AccountsService::registerProxy(const QString &interface, const QString &property, QDBusInterface *iface, const QString &method, ProxyConverter converter)
452{
338{
453− return m_failedLogins;
339+ registerProperty(interface, property, nullptr);
340+
341+ m_properties[interface][property].proxyInterface = iface;
342+ m_properties[interface][property].proxyMethod = method;
343+ m_properties[interface][property].proxyConverter = converter;
454}
344}
455
345
456−void AccountsService::setFailedLogins(uint failedLogins)
346+void AccountsService::registerProperty(const QString &interface, const QString &property, const QString &signal)
457{
347{
458− if (m_failedLogins != failedLogins) {
348+ m_properties[interface][property] = PropertyInfo();
459− m_failedLogins = failedLogins;
349+ m_properties[interface][property].signal = signal;
460− m_service->setUserPropertyAsync(m_user, QStringLiteral("com.canonical.unity.AccountsService.Private"), QStringLiteral("FailedLogins"), failedLogins);
461−
462− Q_EMIT failedLoginsChanged();
463− }
464}
350}
465
351
466void AccountsService::onPropertiesChanged(const QString &user, const QString &interface, const QStringList &changed)
352void AccountsService::onPropertiesChanged(const QString &user, const QString &interface, const QStringList &changed)
@@ -469,42 +355,13 @@ void AccountsService::onPropertiesChanged(const QString &user, const QString &in
469 return;
355 return;
470 }
356 }
471
357
472− if (interface == QLatin1String("com.canonical.unity.AccountsService")) {
358+ auto propHash = m_properties.value(interface);
473− if (changed.contains(QStringLiteral("demo-edges"))) {
359+ auto i = propHash.constBegin();
474− updateDemoEdges();
360+ while (i != propHash.constEnd()) {
475− }
476− } else if (interface == QLatin1String("com.canonical.unity.AccountsService.Private")) {
477− if (changed.contains(QStringLiteral("FailedLogins"))) {
478− updateFailedLogins();
479− }
480− } else if (interface == QLatin1String("com.ubuntu.AccountsService.Input")) {
481− if (changed.contains(QStringLiteral("MouseCursorSpeed"))) {
482− updateMouseCursorSpeed();
483− }
484− if (changed.contains(QStringLiteral("TouchpadCursorSpeed"))) {
485− updateTouchpadCursorSpeed();
486− }
487− } else if (interface == QLatin1String("com.ubuntu.touch.AccountsService.SecurityPrivacy")) {
488− if (changed.contains(QStringLiteral("StatsWelcomeScreen"))) {
489− updateStatsWelcomeScreen();
490− }
491− } else if (interface == QLatin1String("com.ubuntu.AccountsService.SecurityPrivacy")) {
492− if (changed.contains(QStringLiteral("PasswordDisplayHint"))) {
493− updatePasswordDisplayHint();
494− }
495− if (changed.contains(QStringLiteral("EnableLauncherWhileLocked"))) {
361+ if (changed.contains(i.key())) {
496− updateEnableLauncherWhileLocked();
362+ updateProperty(interface, i.key());
497− }
498− if (changed.contains(QStringLiteral("EnableIndicatorsWhileLocked"))) {
499− updateEnableIndicatorsWhileLocked();
500− }
501− } else if (interface == QLatin1String("com.ubuntu.location.providers.here.AccountsService")) {
502− if (changed.contains(QStringLiteral("LicenseAccepted"))) {
503− updateHereEnabled();
504− }
505− if (changed.contains(QStringLiteral("LicenseBasePath"))) {
506− updateHereLicensePath();
507 }
363 }
364+ ++i;
508 }
365 }
509}
366}
510
367
@@ -514,6 +371,20 @@ void AccountsService::onMaybeChanged(const QString &user)
514 return;
371 return;
515 }
372 }
516
373
517− // Standard properties might have changed
374+ // Any of the standard properties might have changed!
518− updateBackgroundFile();
375+ auto propHash = m_properties.value(IFACE_ACCOUNTS_USER);
376+ auto i = propHash.constBegin();
377+ while (i != propHash.constEnd()) {
378+ updateProperty(IFACE_ACCOUNTS_USER, i.key());
379+ ++i;
380+ }
381+}
382+
383+void AccountsService::refresh(bool async)
384+{
385+ auto i = m_properties.constBegin();
386+ while (i != m_properties.constEnd()) {
387+ updateAllProperties(i.key(), async);
388+ ++i;
389+ }
519}
390}
plugins/AccountsService/AccountsService.h+34−23
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013, 2015 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
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
5 * it under the terms of the GNU General Public License as published by
@@ -12,15 +12,15 @@
12 *
12 *
13 * You should have received a copy of the GNU General Public License
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/>.
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors: Michael Terry <michael.terry@canonical.com>
17 */
15 */
18
16
19#ifndef UNITY_ACCOUNTSSERVICE_H
17#ifndef UNITY_ACCOUNTSSERVICE_H
20#define UNITY_ACCOUNTSSERVICE_H
18#define UNITY_ACCOUNTSSERVICE_H
21
19
20+#include <QHash>
22#include <QObject>
21#include <QObject>
23#include <QString>
22#include <QString>
23+#include <QVariant>
24
24
25class AccountsServiceDBusAdaptor;
25class AccountsServiceDBusAdaptor;
26class QDBusInterface;
26class QDBusInterface;
@@ -66,6 +66,8 @@ class AccountsService: public QObject
66 Q_PROPERTY(bool hereLicensePathValid // qml sees a null string as "", so we use proxy setting for that
66 Q_PROPERTY(bool hereLicensePathValid // qml sees a null string as "", so we use proxy setting for that
67 READ hereLicensePathValid
67 READ hereLicensePathValid
68 NOTIFY hereLicensePathChanged)
68 NOTIFY hereLicensePathChanged)
69+ Q_PROPERTY(QString realName READ realName WRITE setRealName NOTIFY realNameChanged)
70+ Q_PROPERTY(QString email READ email WRITE setEmail NOTIFY emailChanged)
69
71
70public:
72public:
71 enum PasswordDisplayHint {
73 enum PasswordDisplayHint {
@@ -91,6 +93,10 @@ public:
91 void setHereEnabled(bool enabled);
93 void setHereEnabled(bool enabled);
92 QString hereLicensePath() const;
94 QString hereLicensePath() const;
93 bool hereLicensePathValid() const;
95 bool hereLicensePathValid() const;
96+ QString realName() const;
97+ void setRealName(const QString &realName);
98+ QString email() const;
99+ void setEmail(const QString &email);
94
100
95Q_SIGNALS:
101Q_SIGNALS:
96 void userChanged();
102 void userChanged();
@@ -103,36 +109,41 @@ Q_SIGNALS:
103 void failedLoginsChanged();
109 void failedLoginsChanged();
104 void hereEnabledChanged();
110 void hereEnabledChanged();
105 void hereLicensePathChanged();
111 void hereLicensePathChanged();
112+ void realNameChanged();
113+ void emailChanged();
106
114
107private Q_SLOTS:
115private Q_SLOTS:
108 void onPropertiesChanged(const QString &user, const QString &interface, const QStringList &changed);
116 void onPropertiesChanged(const QString &user, const QString &interface, const QStringList &changed);
109 void onMaybeChanged(const QString &user);
117 void onMaybeChanged(const QString &user);
110
118
111private:
119private:
112− void updateDemoEdges(bool async = true);
120+ typedef QVariant (*ProxyConverter)(const QVariant &);
113− void updateEnableLauncherWhileLocked(bool async = true);
121+
114− void updateEnableIndicatorsWhileLocked(bool async = true);
122+ void refresh(bool async);
115− void updateBackgroundFile(bool async = true);
123+ void registerProperty(const QString &interface, const QString &property, const QString &signal);
116− void updateMouseCursorSpeed();
124+ void registerProxy(const QString &interface, const QString &property, QDBusInterface *iface, const QString &method, ProxyConverter converter = nullptr);
117− void updateTouchpadCursorSpeed();
125+
118− void updateStatsWelcomeScreen(bool async = true);
126+ void updateAllProperties(const QString &interface, bool async);
119− void updatePasswordDisplayHint(bool async = true);
127+ void updateProperty(const QString &interface, const QString &property);
120− void updateFailedLogins(bool async = true);
128+ void updateCache(const QString &interface, const QString &property, const QVariant &value);
121− void updateHereEnabled(bool async = true);
122− void updateHereLicensePath(bool async = true);
123
129
130+ void setProperty(const QString &interface, const QString &property, const QVariant &value);
131+ QVariant getProperty(const QString &interface, const QString &property) const;
132+
133+ void emitChangedForProperty(const QString &interface, const QString &property);
134+
135+ struct PropertyInfo {
136+ QVariant value{};
137+ QString signal{};
138+ QDBusInterface *proxyInterface{};
139+ QString proxyMethod{};
140+ ProxyConverter proxyConverter{};
141+ };
142+ typedef QHash< QString, QHash<QString, PropertyInfo> > PropertyHash;
143+ PropertyHash m_properties;
124 AccountsServiceDBusAdaptor *m_service;
144 AccountsServiceDBusAdaptor *m_service;
125 QDBusInterface *m_unityInput;
145 QDBusInterface *m_unityInput;
126 QString m_user;
146 QString m_user;
127− bool m_demoEdges;
128− bool m_enableLauncherWhileLocked;
129− bool m_enableIndicatorsWhileLocked;
130− QString m_backgroundFile;
131− bool m_statsWelcomeScreen;
132− PasswordDisplayHint m_passwordDisplayHint;
133− uint m_failedLogins;
134− bool m_hereEnabled;
135− QString m_hereLicensePath;
136};
147};
137
148
138#endif
149#endif
plugins/AccountsService/AccountsServiceDBusAdaptor.cpp+11−4
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013-2016 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
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
5 * it under the terms of the GNU General Public License as published by
@@ -12,8 +12,6 @@
12 *
12 *
13 * You should have received a copy of the GNU General Public License
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/>.
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Author: Michael Terry <michael.terry@canonical.com>
17 */
15 */
18
16
19#include "AccountsServiceDBusAdaptor.h"
17#include "AccountsServiceDBusAdaptor.h"
@@ -37,6 +35,15 @@ AccountsServiceDBusAdaptor::AccountsServiceDBusAdaptor(QObject* parent)
37 connection, this);
35 connection, this);
38}
36}
39
37
38+QDBusPendingReply<QVariantMap> AccountsServiceDBusAdaptor::getAllPropertiesAsync(const QString &user, const QString &interface)
39+{
40+ QDBusInterface *iface = getUserInterface(user);
41+ if (iface != nullptr && iface->isValid()) {
42+ return iface->asyncCall(QStringLiteral("GetAll"), interface);
43+ }
44+ return QDBusPendingReply<QVariantMap>(QDBusMessage::createError(QDBusError::Other, QStringLiteral("Invalid Interface")));
45+}
46+
40QDBusPendingReply<QVariant> AccountsServiceDBusAdaptor::getUserPropertyAsync(const QString &user, const QString &interface, const QString &property)
47QDBusPendingReply<QVariant> AccountsServiceDBusAdaptor::getUserPropertyAsync(const QString &user, const QString &interface, const QString &property)
41{
48{
42 QDBusInterface *iface = getUserInterface(user);
49 QDBusInterface *iface = getUserInterface(user);
@@ -80,7 +87,7 @@ void AccountsServiceDBusAdaptor::maybeChangedSlot()
80 m_ignoreNextChanged = false;
87 m_ignoreNextChanged = false;
81}
88}
82
89
83−QString AccountsServiceDBusAdaptor::getUserForPath(const QString &path)
90+QString AccountsServiceDBusAdaptor::getUserForPath(const QString &path) const
84{
91{
85 QMap<QString, QDBusInterface *>::const_iterator i;
92 QMap<QString, QDBusInterface *>::const_iterator i;
86 for (i = m_users.constBegin(); i != m_users.constEnd(); ++i) {
93 for (i = m_users.constBegin(); i != m_users.constEnd(); ++i) {
plugins/AccountsService/AccountsServiceDBusAdaptor.h+5−6
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013-2016 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
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
5 * it under the terms of the GNU General Public License as published by
@@ -12,8 +12,6 @@
12 *
12 *
13 * You should have received a copy of the GNU General Public License
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/>.
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors: Michael Terry <michael.terry@canonical.com>
17 */
15 */
18
16
19#ifndef UNITY_ACCOUNTSSERVICEDBUSADAPTOR_H
17#ifndef UNITY_ACCOUNTSSERVICEDBUSADAPTOR_H
@@ -35,8 +33,9 @@ public:
35 explicit AccountsServiceDBusAdaptor(QObject *parent = 0);
33 explicit AccountsServiceDBusAdaptor(QObject *parent = 0);
36 ~AccountsServiceDBusAdaptor() = default;
34 ~AccountsServiceDBusAdaptor() = default;
37
35
36+ QDBusPendingReply<QVariantMap> getAllPropertiesAsync(const QString &user, const QString &interface);
38− Q_INVOKABLE QDBusPendingReply<QVariant> getUserPropertyAsync(const QString &user, const QString &interface, const QString &property);
37+ QDBusPendingReply<QVariant> getUserPropertyAsync(const QString &user, const QString &interface, const QString &property);
39− Q_INVOKABLE QDBusPendingCall setUserPropertyAsync(const QString &user, const QString &interface, const QString &property, const QVariant &value);
38+ QDBusPendingCall setUserPropertyAsync(const QString &user, const QString &interface, const QString &property, const QVariant &value);
40
39
41Q_SIGNALS:
40Q_SIGNALS:
42 void propertiesChanged(const QString &user, const QString &interface, const QStringList &changed);
41 void propertiesChanged(const QString &user, const QString &interface, const QStringList &changed);
@@ -48,7 +47,7 @@ private Q_SLOTS:
48
47
49private:
48private:
50 QDBusInterface *getUserInterface(const QString &user);
49 QDBusInterface *getUserInterface(const QString &user);
51− QString getUserForPath(const QString &path);
50+ QString getUserForPath(const QString &path) const;
52
51
53 QDBusInterface *m_accountsManager;
52 QDBusInterface *m_accountsManager;
54 QMap<QString, QDBusInterface *> m_users;
53 QMap<QString, QDBusInterface *> m_users;
plugins/Cursor/Cursor.qmltypesnew file+78
@@ -0,0 +1,78 @@
1+import QtQuick.tooling 1.1
2+
3+// This file describes the plugin-supplied types contained in the library.
4+// It is used for QML tooling purposes only.
5+//
6+// This file was auto-generated by:
7+// 'qmlplugindump -notrelocatable Cursor 1.0 plugins'
8+
9+Module {
10+ Component {
11+ name: "MirMousePointerInterface"
12+ defaultProperty: "data"
13+ prototype: "QQuickItem"
14+ Property { name: "cursorName"; type: "string"; isReadonly: true }
15+ Property { name: "themeName"; type: "string"; isReadonly: true }
16+ Property { name: "hotspotX"; type: "double"; isReadonly: true }
17+ Property { name: "hotspotY"; type: "double"; isReadonly: true }
18+ Signal {
19+ name: "cursorNameChanged"
20+ Parameter { name: "name"; type: "string" }
21+ }
22+ Signal {
23+ name: "themeNameChanged"
24+ Parameter { name: "name"; type: "string" }
25+ }
26+ Signal {
27+ name: "hotspotXChanged"
28+ Parameter { name: "value"; type: "double" }
29+ }
30+ Signal {
31+ name: "hotspotYChanged"
32+ Parameter { name: "value"; type: "double" }
33+ }
34+ Method {
35+ name: "handleMouseEvent"
36+ Parameter { name: "timestamp"; type: "ulong" }
37+ Parameter { name: "movement"; type: "QPointF" }
38+ Parameter { name: "buttons"; type: "Qt::MouseButtons" }
39+ Parameter { name: "modifiers"; type: "Qt::KeyboardModifiers" }
40+ }
41+ Method {
42+ name: "handleWheelEvent"
43+ Parameter { name: "timestamp"; type: "ulong" }
44+ Parameter { name: "angleDelta"; type: "QPoint" }
45+ Parameter { name: "modifiers"; type: "Qt::KeyboardModifiers" }
46+ }
47+ }
48+ Component {
49+ name: "MousePointer"
50+ defaultProperty: "data"
51+ prototype: "MirMousePointerInterface"
52+ exports: ["Cursor/MousePointer 1.0"]
53+ exportMetaObjectRevisions: [0]
54+ Signal {
55+ name: "pushedLeftBoundary"
56+ Parameter { name: "amount"; type: "double" }
57+ Parameter { name: "buttons"; type: "Qt::MouseButtons" }
58+ }
59+ Signal {
60+ name: "pushedRightBoundary"
61+ Parameter { name: "amount"; type: "double" }
62+ Parameter { name: "buttons"; type: "Qt::MouseButtons" }
63+ }
64+ Method {
65+ name: "handleMouseEvent"
66+ Parameter { name: "timestamp"; type: "ulong" }
67+ Parameter { name: "movement"; type: "QPointF" }
68+ Parameter { name: "buttons"; type: "Qt::MouseButtons" }
69+ Parameter { name: "modifiers"; type: "Qt::KeyboardModifiers" }
70+ }
71+ Method {
72+ name: "handleWheelEvent"
73+ Parameter { name: "timestamp"; type: "ulong" }
74+ Parameter { name: "angleDelta"; type: "QPoint" }
75+ Parameter { name: "modifiers"; type: "Qt::KeyboardModifiers" }
76+ }
77+ }
78+}
plugins/Dash/AudioProgressBar.qml+1
@@ -31,6 +31,7 @@ Item {
31 anchors { left: parent.left; right: parent.right }
31 anchors { left: parent.left; right: parent.right }
32 height: units.dp(6)
32 height: units.dp(6)
33 source: "graphics/music_progress_bg.png"
33 source: "graphics/music_progress_bg.png"
34+ asynchronous: true
34 sourceSize.width: width
35 sourceSize.width: width
35 sourceSize.height: height
36 sourceSize.height: height
36 }
37 }
plugins/Dash/CardCreator.js+69−34
@@ -18,12 +18,13 @@
18
18
19// %1 is the template["card-background"]["elements"][0]
19// %1 is the template["card-background"]["elements"][0]
20// %2 is the template["card-background"]["elements"][1]
20// %2 is the template["card-background"]["elements"][1]
21+// %3 is whether the loader should be asynchronous or not
21−// %3 is the template["card-background"] string
22+// %4 is the template["card-background"] string
22var kBackgroundLoaderCode = 'Loader {\n\
23var kBackgroundLoaderCode = 'Loader {\n\
23 id: backgroundLoader; \n\
24 id: backgroundLoader; \n\
24 objectName: "backgroundLoader"; \n\
25 objectName: "backgroundLoader"; \n\
25 anchors.fill: parent; \n\
26 anchors.fill: parent; \n\
26− asynchronous: root.asynchronous; \n\
27+ asynchronous: %3; \n\
27 visible: status == Loader.Ready; \n\
28 visible: status == Loader.Ready; \n\
28 sourceComponent: UbuntuShape { \n\
29 sourceComponent: UbuntuShape { \n\
29 objectName: "background"; \n\
30 objectName: "background"; \n\
@@ -46,7 +47,7 @@ var kBackgroundLoaderCode = 'Loader {\n\
46 objectName: "backgroundImage"; \n\
47 objectName: "backgroundImage"; \n\
47 source: { \n\
48 source: { \n\
48 if (cardData && typeof cardData["background"] === "string") return cardData["background"]; \n\
49 if (cardData && typeof cardData["background"] === "string") return cardData["background"]; \n\
49− else return %3; \n\
50+ else return %4; \n\
50 } \n\
51 } \n\
51 } \n\
52 } \n\
52 function getColor(index) { \n\
53 function getColor(index) { \n\
@@ -63,8 +64,9 @@ var kBackgroundLoaderCode = 'Loader {\n\
63// %3 is used as image height
64// %3 is used as image height
64// %4 is used for artShapeSource.hideSource and inner Loader visible
65// %4 is used for artShapeSource.hideSource and inner Loader visible
65// %5 is used as aspect ratio fallback
66// %5 is used as aspect ratio fallback
67+// %6 is whether the loader should be asynchronous or not
66−// %6 is injected as code to artImage
68+// %7 is injected as code to artImage
67−// %7 is used as image fallback
69+// %8 is used as image fallback
68var kArtShapeHolderCode = 'Item { \n\
70var kArtShapeHolderCode = 'Item { \n\
69 id: artShapeHolder; \n\
71 id: artShapeHolder; \n\
70 height: root.fixedArtShapeSize.height > 0 ? root.fixedArtShapeSize.height : artShapeLoader.height; \n\
72 height: root.fixedArtShapeSize.height > 0 ? root.fixedArtShapeSize.height : artShapeLoader.height; \n\
@@ -73,9 +75,9 @@ var kArtShapeHolderCode = 'Item { \n\
73 Loader { \n\
75 Loader { \n\
74 id: artShapeLoader; \n\
76 id: artShapeLoader; \n\
75 objectName: "artShapeLoader"; \n\
77 objectName: "artShapeLoader"; \n\
76− readonly property string cardArt: cardData && cardData["art"] || %7; \n\
78+ readonly property string cardArt: cardData && cardData["art"] || %8; \n\
77 active: cardArt != ""; \n\
79 active: cardArt != ""; \n\
78− asynchronous: root.asynchronous; \n\
80+ asynchronous: %6; \n\
79 visible: status == Loader.Ready; \n\
81 visible: status == Loader.Ready; \n\
80 sourceComponent: Item { \n\
82 sourceComponent: Item { \n\
81 id: artShape; \n\
83 id: artShape; \n\
@@ -132,10 +134,10 @@ var kArtShapeHolderCode = 'Item { \n\
132 id: artImage; \n\
134 id: artImage; \n\
133 objectName: "artImage"; \n\
135 objectName: "artImage"; \n\
134 source: artShapeLoader.cardArt; \n\
136 source: artShapeLoader.cardArt; \n\
135− asynchronous: root.asynchronous; \n\
137+ asynchronous: %6; \n\
136 width: %2; \n\
138 width: %2; \n\
137 height: %3; \n\
139 height: %3; \n\
138− %6 \n\
140+ %7 \n\
139 } \n\
141 } \n\
140 } \n\
142 } \n\
141 } \n\
143 } \n\
@@ -144,6 +146,7 @@ var kArtShapeHolderCode = 'Item { \n\
144// %1 is anchors.fill
146// %1 is anchors.fill
145// %2 is width
147// %2 is width
146// %3 is height
148// %3 is height
149+// %4 is whether the icon should be asynchronous or not
147var kAudioButtonCode = 'AbstractButton { \n\
150var kAudioButtonCode = 'AbstractButton { \n\
148 id: audioButton; \n\
151 id: audioButton; \n\
149 anchors.fill: %1; \n\
152 anchors.fill: %1; \n\
@@ -169,6 +172,7 @@ var kAudioButtonCode = 'AbstractButton { \n\
169 opacity: 0.9; \n\
172 opacity: 0.9; \n\
170 name: DashAudioPlayer.playing && AudioUrlComparer.compare(parent.source, DashAudioPlayer.currentSource) ? "media-playback-pause" : "media-playback-start"; \n\
173 name: DashAudioPlayer.playing && AudioUrlComparer.compare(parent.source, DashAudioPlayer.currentSource) ? "media-playback-pause" : "media-playback-start"; \n\
171 color: "white"; \n\
174 color: "white"; \n\
175+ asynchronous: %4; \n\
172 } \n\
176 } \n\
173 onClicked: { \n\
177 onClicked: { \n\
174 if (AudioUrlComparer.compare(source, DashAudioPlayer.currentSource)) { \n\
178 if (AudioUrlComparer.compare(source, DashAudioPlayer.currentSource)) { \n\
@@ -187,12 +191,14 @@ var kAudioButtonCode = 'AbstractButton { \n\
187 } \n\
191 } \n\
188 }';
192 }';
189
193
194+// %1 is whether the loader should be asynchronous or not
195+// %2 is the header height code
190var kOverlayLoaderCode = 'Loader { \n\
196var kOverlayLoaderCode = 'Loader { \n\
191 id: overlayLoader; \n\
197 id: overlayLoader; \n\
192− readonly property real overlayHeight: (fixedHeaderHeight > 0 ? fixedHeaderHeight : headerHeight) + units.gu(2); \n\
198+ readonly property real overlayHeight: %2 + units.gu(2); \n\
193 anchors.fill: artShapeHolder; \n\
199 anchors.fill: artShapeHolder; \n\
194 active: artShapeLoader.active && artShapeLoader.item && artShapeLoader.item.image.status === Image.Ready || false; \n\
200 active: artShapeLoader.active && artShapeLoader.item && artShapeLoader.item.image.status === Image.Ready || false; \n\
195− asynchronous: root.asynchronous; \n\
201+ asynchronous: %1; \n\
196 visible: showHeader && status == Loader.Ready; \n\
202 visible: showHeader && status == Loader.Ready; \n\
197 sourceComponent: UbuntuShapeOverlay { \n\
203 sourceComponent: UbuntuShapeOverlay { \n\
198 id: overlay; \n\
204 id: overlay; \n\
@@ -211,17 +217,19 @@ function kHeaderRowCodeGenerator() {
211 objectName: "outerRow"; \n\
217 objectName: "outerRow"; \n\
212 property real margins: units.gu(1); \n\
218 property real margins: units.gu(1); \n\
213 spacing: margins; \n\
219 spacing: margins; \n\
214− height: root.fixedHeaderHeight != -1 ? root.fixedHeaderHeight : implicitHeight; \n\
220+ %2\
215 anchors { %1 } \n\
221 anchors { %1 } \n\
216 anchors.right: parent.right; \n\
222 anchors.right: parent.right; \n\
217 anchors.margins: margins; \n\
223 anchors.margins: margins; \n\
218 anchors.rightMargin: 0; \n\
224 anchors.rightMargin: 0; \n\
219 data: [ \n\
225 data: [ \n\
220− %2 \n\
226+ %3 \n\
221 ] \n\
227 ] \n\
222 }\n';
228 }\n';
223 var args = Array.prototype.slice.call(arguments);
229 var args = Array.prototype.slice.call(arguments);
230+ var isCardTool = args.shift();
231+ var heightCode = isCardTool ? "" : "height: root.fixedHeaderHeight; \n";
224− var code = kHeaderRowCodeTemplate.arg(args.shift()).arg(args.join(',\n'));
232+ var code = kHeaderRowCodeTemplate.arg(args.shift()).arg(heightCode).arg(args.join(',\n'));
225 return code;
233 return code;
226}
234}
227
235
@@ -242,10 +250,11 @@ function kHeaderContainerCodeGenerator() {
242}
250}
243
251
244// %1 is used as anchors of mascotShapeLoader
252// %1 is used as anchors of mascotShapeLoader
253+// %2 is whether the loader should be asynchronous or not
245var kMascotShapeLoaderCode = 'Loader { \n\
254var kMascotShapeLoaderCode = 'Loader { \n\
246 id: mascotShapeLoader; \n\
255 id: mascotShapeLoader; \n\
247 objectName: "mascotShapeLoader"; \n\
256 objectName: "mascotShapeLoader"; \n\
248− asynchronous: root.asynchronous; \n\
257+ asynchronous: %2; \n\
249 active: mascotImage.status === Image.Ready; \n\
258 active: mascotImage.status === Image.Ready; \n\
250 visible: showHeader && active && status == Loader.Ready; \n\
259 visible: showHeader && active && status == Loader.Ready; \n\
251 width: units.gu(6); \n\
260 width: units.gu(6); \n\
@@ -275,6 +284,7 @@ var kMascotImageCode = 'CroppedImageMinimumSourceSize { \n\
275// %2 is used as color of titleLabel
284// %2 is used as color of titleLabel
276// %3 is used as extra condition for visible of titleLabel
285// %3 is used as extra condition for visible of titleLabel
277// %4 is used as title width
286// %4 is used as title width
287+// %5 is used as horizontal alignment
278var kTitleLabelCode = 'Label { \n\
288var kTitleLabelCode = 'Label { \n\
279 id: titleLabel; \n\
289 id: titleLabel; \n\
280 objectName: "titleLabel"; \n\
290 objectName: "titleLabel"; \n\
@@ -289,7 +299,7 @@ var kTitleLabelCode = 'Label { \n\
289 width: %4; \n\
299 width: %4; \n\
290 text: root.title; \n\
300 text: root.title; \n\
291 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal; \n\
301 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal; \n\
292− horizontalAlignment: root.titleAlignment; \n\
302+ horizontalAlignment: %5; \n\
293 }\n';
303 }\n';
294
304
295// %1 is used as extra anchors of emblemIcon
305// %1 is used as extra anchors of emblemIcon
@@ -398,7 +408,7 @@ function sanitizeColor(colorString) {
398 return colorString;
408 return colorString;
399}
409}
400
410
401−function cardString(template, components) {
411+function cardString(template, components, isCardTool) {
402 var code;
412 var code;
403
413
404 var templateInteractive = (template == null ? true : (template["non-interactive"] !== undefined ? !template["non-interactive"] : true)) ? "true" : "false";
414 var templateInteractive = (template == null ? true : (template["non-interactive"] !== undefined ? !template["non-interactive"] : true)) ? "true" : "false";
@@ -410,16 +420,16 @@ function cardString(template, components) {
410 property string backgroundShapeStyle: "inset"; \n\
420 property string backgroundShapeStyle: "inset"; \n\
411 property real fontScale: 1.0; \n\
421 property real fontScale: 1.0; \n\
412 property var scopeStyle: null; \n\
422 property var scopeStyle: null; \n\
413− property int titleAlignment: Text.AlignLeft; \n\
423+ %2\
414− property int fixedHeaderHeight: -1; \n\
415 property size fixedArtShapeSize: Qt.size(-1, -1); \n\
424 property size fixedArtShapeSize: Qt.size(-1, -1); \n\
416 readonly property string title: cardData && cardData["title"] || ""; \n\
425 readonly property string title: cardData && cardData["title"] || ""; \n\
417− property bool asynchronous: true; \n\
418 property bool showHeader: true; \n\
426 property bool showHeader: true; \n\
419 implicitWidth: childrenRect.width; \n\
427 implicitWidth: childrenRect.width; \n\
420 enabled: %1; \n\
428 enabled: %1; \n\
421 \n'.arg(templateInteractive);
429 \n'.arg(templateInteractive);
422
430
431+ code = code.arg(isCardTool ? "" : "property int fixedHeaderHeight: -1; \n");
432+
423 var hasArt = components["art"] && components["art"]["field"] || false;
433 var hasArt = components["art"] && components["art"]["field"] || false;
424 var hasSummary = components["summary"] || false;
434 var hasSummary = components["summary"] || false;
425 var isConciergeMode = components["art"] && components["art"]["conciergeMode"] || false;
435 var isConciergeMode = components["art"] && components["art"]["conciergeMode"] || false;
@@ -435,6 +445,7 @@ function cardString(template, components) {
435 var hasHeaderRow = hasMascot && hasTitle;
445 var hasHeaderRow = hasMascot && hasTitle;
436 var hasAttributes = hasTitle && components["attributes"] && components["attributes"]["field"] || false;
446 var hasAttributes = hasTitle && components["attributes"] && components["attributes"]["field"] || false;
437 var isAudio = template["quick-preview-type"] === "audio";
447 var isAudio = template["quick-preview-type"] === "audio";
448+ var asynchronous = isCardTool ? "false" : "true";
438
449
439 if (isAudio) {
450 if (isAudio) {
440 // For now we only support audio cards with [optional] art, title, subtitle
451 // For now we only support audio cards with [optional] art, title, subtitle
@@ -468,7 +479,7 @@ function cardString(template, components) {
468 backgroundElements1 = '"%1"'.arg(element1);
479 backgroundElements1 = '"%1"'.arg(element1);
469 }
480 }
470 }
481 }
471− code += kBackgroundLoaderCode.arg(backgroundElements0).arg(backgroundElements1).arg(templateCardBackground);
482+ code += kBackgroundLoaderCode.arg(backgroundElements0).arg(backgroundElements1).arg(asynchronous).arg(templateCardBackground);
472 }
483 }
473
484
474 if (hasArt) {
485 if (hasArt) {
@@ -497,23 +508,31 @@ function cardString(template, components) {
497 if (isNaN(aspectRatio)) {
508 if (isNaN(aspectRatio)) {
498 aspectRatio = 1;
509 aspectRatio = 1;
499 }
510 }
500− var fallback = components["art"] && components["art"]["fallback"] || "";
511+ var fallback = !isCardTool && components["art"] && components["art"]["fallback"] || "";
501 fallback = encodeURI(fallback);
512 fallback = encodeURI(fallback);
502 var fallbackStatusCode = "";
513 var fallbackStatusCode = "";
503 var fallbackURICode = '""';
514 var fallbackURICode = '""';
504 if (fallback !== "") {
515 if (fallback !== "") {
505 // fallbackStatusCode has %6 in it because we want to substitute it for fallbackURICode
516 // fallbackStatusCode has %6 in it because we want to substitute it for fallbackURICode
506− // which in kArtShapeHolderCode is %7
517+ // which in kArtShapeHolderCode is %8
507− fallbackStatusCode += 'onStatusChanged: if (status === Image.Error) source = %7;';
518+ fallbackStatusCode += 'onStatusChanged: if (status === Image.Error) source = %8;';
508 fallbackURICode = 'decodeURI("%1")'.arg(fallback);
519 fallbackURICode = 'decodeURI("%1")'.arg(fallback);
509 }
520 }
510− code += kArtShapeHolderCode.arg(artAnchors).arg(widthCode).arg(heightCode).arg(isConciergeMode ? "false" : "true").arg(aspectRatio).arg(fallbackStatusCode).arg(fallbackURICode);
521+ code += kArtShapeHolderCode.arg(artAnchors)
522+ .arg(widthCode)
523+ .arg(heightCode)
524+ .arg(isConciergeMode ? "false" : "true")
525+ .arg(aspectRatio)
526+ .arg(asynchronous)
527+ .arg(fallbackStatusCode)
528+ .arg(fallbackURICode);
511 } else {
529 } else {
512 code += 'readonly property size artShapeSize: Qt.size(-1, -1);\n'
530 code += 'readonly property size artShapeSize: Qt.size(-1, -1);\n'
513 }
531 }
514
532
515 if (headerAsOverlay) {
533 if (headerAsOverlay) {
534+ var headerHeightCode = isCardTool ? "headerHeight" : "root.fixedHeaderHeight";
516− code += kOverlayLoaderCode;
535+ code += kOverlayLoaderCode.arg(asynchronous).arg(headerHeightCode);
517 }
536 }
518
537
519 var headerVerticalAnchors;
538 var headerVerticalAnchors;
@@ -595,11 +614,11 @@ function cardString(template, components) {
595 }
614 }
596
615
597 if (useMascotShape) {
616 if (useMascotShape) {
598− mascotShapeCode = kMascotShapeLoaderCode.arg(mascotAnchors);
617+ mascotShapeCode = kMascotShapeLoaderCode.arg(mascotAnchors).arg(asynchronous);
599 }
618 }
600
619
601 var mascotImageVisible = useMascotShape ? 'false' : 'showHeader';
620 var mascotImageVisible = useMascotShape ? 'false' : 'showHeader';
602− var fallback = components["mascot"] && components["mascot"]["fallback"] || "";
621+ var fallback = !isCardTool && components["mascot"] && components["mascot"]["fallback"] || "";
603 fallback = encodeURI(fallback);
622 fallback = encodeURI(fallback);
604 var fallbackStatusCode = "";
623 var fallbackStatusCode = "";
605 var fallbackURICode = '""';
624 var fallbackURICode = '""';
@@ -715,9 +734,24 @@ function cardString(template, components) {
715 }
734 }
716 }
735 }
717
736
737+ var titleAlignment = "Text.AlignHCenter";
738+ if (template["card-layout"] === "horizontal"
739+ || typeof components["title"] !== "object"
740+ || components["title"]["align"] === "left") titleAlignment = "Text.AlignLeft";
741+ var keys = ["mascot", "emblem", "subtitle", "attributes", "summary"];
742+ for (var key in keys) {
743+ key = keys[key];
744+ try {
745+ if (typeof components[key] === "string"
746+ || typeof components[key]["field"] === "string") titleAlignment = "Text.AlignLeft";
747+ } catch (e) {
748+ continue;
749+ }
750+ }
751+
718 // code for different elements
752 // code for different elements
719 var titleLabelVisibleExtra = (headerAsOverlay ? '&& overlayLoader.active': '');
753 var titleLabelVisibleExtra = (headerAsOverlay ? '&& overlayLoader.active': '');
720− var titleCode = kTitleLabelCode.arg(titleAnchors).arg(titleColor).arg(titleLabelVisibleExtra).arg(titleWidth);
754+ var titleCode = kTitleLabelCode.arg(titleAnchors).arg(titleColor).arg(titleLabelVisibleExtra).arg(titleWidth).arg(titleAlignment);
721 var subtitleCode;
755 var subtitleCode;
722 var attributesCode;
756 var attributesCode;
723
757
@@ -759,7 +793,7 @@ function cardString(template, components) {
759 if (mascotShapeCode != '') {
793 if (mascotShapeCode != '') {
760 rowCode.unshift(mascotShapeCode);
794 rowCode.unshift(mascotShapeCode);
761 }
795 }
762− code += kHeaderRowCodeGenerator(headerVerticalAnchors + headerLeftAnchor, rowCode)
796+ code += kHeaderRowCodeGenerator(isCardTool, headerVerticalAnchors + headerLeftAnchor, rowCode)
763 } else {
797 } else {
764 code += mascotShapeCode + mascotCode + titleSubtitleCode;
798 code += mascotShapeCode + mascotCode + titleSubtitleCode;
765 }
799 }
@@ -783,9 +817,10 @@ function cardString(template, components) {
783 } else {
817 } else {
784 audioButtonAnchorsFill = 'undefined';
818 audioButtonAnchorsFill = 'undefined';
785 audioButtonWidth = 'height';
819 audioButtonWidth = 'height';
786− audioButtonHeight = '(root.fixedHeaderHeight > 0 ? root.fixedHeaderHeight : headerHeight) + 2 * units.gu(1)';
820+ audioButtonHeight = isCardTool ? 'headerHeight + 2 * units.gu(1)'
821+ : 'root.fixedHeaderHeight + 2 * units.gu(1)';
787 }
822 }
788− code += kAudioButtonCode.arg(audioButtonAnchorsFill).arg(audioButtonWidth).arg(audioButtonHeight);
823+ code += kAudioButtonCode.arg(audioButtonAnchorsFill).arg(audioButtonWidth).arg(audioButtonHeight).arg(asynchronous);
789 }
824 }
790
825
791 if (hasSummary) {
826 if (hasSummary) {
@@ -854,13 +889,13 @@ function cardString(template, components) {
854 return code;
889 return code;
855}
890}
856
891
857−function createCardComponent(parent, template, components, identifier) {
892+function createCardComponent(parent, template, components, isCardTool, identifier) {
858 var imports = 'import QtQuick 2.4; \n\
893 var imports = 'import QtQuick 2.4; \n\
859 import Ubuntu.Components 1.3; \n\
894 import Ubuntu.Components 1.3; \n\
860 import Ubuntu.Settings.Components 0.1; \n\
895 import Ubuntu.Settings.Components 0.1; \n\
861 import Dash 0.1;\n\
896 import Dash 0.1;\n\
862 import Utils 0.1;\n';
897 import Utils 0.1;\n';
863− var card = cardString(template, components);
898+ var card = cardString(template, components, isCardTool);
864 var code = imports + 'Component {\n' + card + '}\n';
899 var code = imports + 'Component {\n' + card + '}\n';
865
900
866 try {
901 try {
plugins/Dash/CardCreatorCache.qml+3−3
@@ -23,16 +23,16 @@ QtObject {
23
23
24 property var cache: new Object();
24 property var cache: new Object();
25
25
26− function getCardComponent(template, components) {
26+ function getCardComponent(template, components, isCardTool) {
27 if (template === undefined || components === undefined)
27 if (template === undefined || components === undefined)
28 return undefined;
28 return undefined;
29
29
30 var tString = JSON.stringify(template);
30 var tString = JSON.stringify(template);
31 var cString = JSON.stringify(components);
31 var cString = JSON.stringify(components);
32− var allString = tString + cString;
32+ var allString = tString + cString + isCardTool;
33 var component = cache[allString];
33 var component = cache[allString];
34 if (component === undefined) {
34 if (component === undefined) {
35− component = CardCreator.createCardComponent(root, template, components, allString);
35+ component = CardCreator.createCardComponent(root, template, components, isCardTool, allString);
36 cache[allString] = component;
36 cache[allString] = component;
37 }
37 }
38 return component;
38 return component;
plugins/Dash/plugin.cpp+6−6
@@ -28,12 +28,12 @@
28static QUrl oauthCleanedUrl(QUrl u)
28static QUrl oauthCleanedUrl(QUrl u)
29{
29{
30 QUrlQuery q(u);
30 QUrlQuery q(u);
31− q.removeQueryItem("oauth_nonce");
31+ q.removeQueryItem(QStringLiteral("oauth_nonce"));
32− q.removeQueryItem("oauth_timestamp");
32+ q.removeQueryItem(QStringLiteral("oauth_timestamp"));
33− q.removeQueryItem("oauth_consumer_key");
33+ q.removeQueryItem(QStringLiteral("oauth_consumer_key"));
34− q.removeQueryItem("oauth_signature_method");
34+ q.removeQueryItem(QStringLiteral("oauth_signature_method"));
35− q.removeQueryItem("oauth_version");
35+ q.removeQueryItem(QStringLiteral("oauth_version"));
36− q.removeQueryItem("oauth_signature");
36+ q.removeQueryItem(QStringLiteral("oauth_signature"));
37 u.setQuery(q);
37 u.setQuery(q);
38 return u;
38 return u;
39}
39}
plugins/GlobalShortcut/GlobalShortcut.qmltypesnew file+31
@@ -0,0 +1,31 @@
1+import QtQuick.tooling 1.1
2+
3+// This file describes the plugin-supplied types contained in the library.
4+// It is used for QML tooling purposes only.
5+//
6+// This file was auto-generated by:
7+// 'qmlplugindump -notrelocatable GlobalShortcut 1.0 plugins'
8+
9+Module {
10+ Component {
11+ name: "GlobalShortcut"
12+ defaultProperty: "data"
13+ prototype: "QQuickItem"
14+ exports: ["GlobalShortcut/GlobalShortcut 1.0"]
15+ exportMetaObjectRevisions: [0]
16+ Property { name: "shortcut"; type: "QVariant" }
17+ Property { name: "active"; type: "bool" }
18+ Signal {
19+ name: "shortcutChanged"
20+ Parameter { name: "shortcut"; type: "QVariant" }
21+ }
22+ Signal {
23+ name: "triggered"
24+ Parameter { name: "shortcut"; type: "string" }
25+ }
26+ Signal {
27+ name: "activeChanged"
28+ Parameter { name: "active"; type: "bool" }
29+ }
30+ }
31+}
plugins/GlobalShortcut/globalshortcutregistry.cpp+4−4
@@ -35,13 +35,13 @@ GlobalShortcutList GlobalShortcutRegistry::shortcuts() const
35
35
36bool GlobalShortcutRegistry::hasShortcut(const QVariant &seq) const
36bool GlobalShortcutRegistry::hasShortcut(const QVariant &seq) const
37{
37{
38− return m_shortcuts.keys().contains(seq);
38+ return m_shortcuts.contains(seq);
39}
39}
40
40
41void GlobalShortcutRegistry::addShortcut(const QVariant &seq, GlobalShortcut *sc)
41void GlobalShortcutRegistry::addShortcut(const QVariant &seq, GlobalShortcut *sc)
42{
42{
43 if (sc) {
43 if (sc) {
44− if (!m_shortcuts.keys().contains(seq)) { // create a new entry
44+ if (!m_shortcuts.contains(seq)) { // create a new entry
45 m_shortcuts.insert(seq, {sc});
45 m_shortcuts.insert(seq, {sc});
46 } else { // append to an existing one
46 } else { // append to an existing one
47 auto shortcuts = m_shortcuts[seq];
47 auto shortcuts = m_shortcuts[seq];
@@ -75,8 +75,8 @@ bool GlobalShortcutRegistry::eventFilter(QObject *obj, QEvent *event)
75
75
76 if (event->type() == QEvent::KeyPress) {
76 if (event->type() == QEvent::KeyPress) {
77 QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
77 QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
78− QKeySequence seq = QKeySequence(keyEvent->key() + keyEvent->modifiers());
78+ int seq = keyEvent->key() + keyEvent->modifiers();
79− if (m_shortcuts.keys().contains(seq)) {
79+ if (m_shortcuts.contains(seq)) {
80 const auto shortcuts = m_shortcuts.value(seq);
80 const auto shortcuts = m_shortcuts.value(seq);
81 Q_FOREACH(const auto &shortcut, shortcuts) {
81 Q_FOREACH(const auto &shortcut, shortcuts) {
82 if (shortcut) {
82 if (shortcut) {
plugins/IntegratedLightDM/liblightdm/CMakeLists.txt+16−3
@@ -5,13 +5,16 @@ set(LibLightDM_SOURCES
5 UsersModel.cpp
5 UsersModel.cpp
6 GreeterPrivate.cpp
6 GreeterPrivate.cpp
7 UsersModelPrivate.cpp
7 UsersModelPrivate.cpp
8+ ${CMAKE_SOURCE_DIR}/plugins/AccountsService/AccountsServiceDBusAdaptor.cpp
8 ${CMAKE_SOURCE_DIR}/plugins/Utils/qvariantlistmodel.cpp
9 ${CMAKE_SOURCE_DIR}/plugins/Utils/qvariantlistmodel.cpp
9 )
10 )
10
11
11add_library(integratedLightDM STATIC ${LibLightDM_SOURCES})
12add_library(integratedLightDM STATIC ${LibLightDM_SOURCES})
13+add_library(integratedLightDMSession STATIC ${LibLightDM_SOURCES})
12add_library(MockLightDM-demo-shared SHARED ${LibLightDM_SOURCES})
14add_library(MockLightDM-demo-shared SHARED ${LibLightDM_SOURCES})
13
15
14include_directories(
16include_directories(
17+ ${CMAKE_SOURCE_DIR}/plugins/AccountsService
15 ${CMAKE_CURRENT_BINARY_DIR}
18 ${CMAKE_CURRENT_BINARY_DIR}
16 ${GLIB_INCLUDE_DIRS}
19 ${GLIB_INCLUDE_DIRS}
17 ${LIBUSERMETRICSOUTPUT_INCLUDE_DIRS}
20 ${LIBUSERMETRICSOUTPUT_INCLUDE_DIRS}
@@ -22,17 +25,27 @@ target_link_libraries(integratedLightDM
22 ${LIBUSERMETRICSOUTPUT_LDFLAGS}
25 ${LIBUSERMETRICSOUTPUT_LDFLAGS}
23 -lpam
26 -lpam
24)
27)
28+target_link_libraries(integratedLightDMSession
29+ ${GLIB_LIBRARIES}
30+ ${LIBUSERMETRICSOUTPUT_LDFLAGS}
31+ -lpam
32+)
25target_link_libraries(MockLightDM-demo-shared
33target_link_libraries(MockLightDM-demo-shared
26 ${GLIB_LIBRARIES}
34 ${GLIB_LIBRARIES}
27 ${LIBUSERMETRICSOUTPUT_LDFLAGS}
35 ${LIBUSERMETRICSOUTPUT_LDFLAGS}
28 -lpam
36 -lpam
29)
37)
30
38
31−qt5_use_modules(integratedLightDM Concurrent Gui)
39+qt5_use_modules(integratedLightDM Concurrent DBus Gui)
40+qt5_use_modules(integratedLightDMSession Concurrent DBus Gui)
32−qt5_use_modules(MockLightDM-demo-shared Concurrent Gui)
41+qt5_use_modules(MockLightDM-demo-shared Concurrent DBus Gui)
33
42
34−set_target_properties(integratedLightDM PROPERTIES COMPILE_FLAGS -fPIC)
43+set_target_properties(integratedLightDM PROPERTIES
44+ COMPILE_FLAGS "-DSM_BUSNAME=systemBus -fPIC")
45+set_target_properties(integratedLightDMSession PROPERTIES
46+ COMPILE_FLAGS "-DSM_BUSNAME=sessionBus -fPIC")
35set_target_properties(MockLightDM-demo-shared PROPERTIES
47set_target_properties(MockLightDM-demo-shared PROPERTIES
48+ COMPILE_FLAGS "-DSM_BUSNAME=systemBus"
36 OUTPUT_NAME lightdm-qt5-2)
49 OUTPUT_NAME lightdm-qt5-2)
37
50
38install(TARGETS MockLightDM-demo-shared
51install(TARGETS MockLightDM-demo-shared
plugins/IntegratedLightDM/liblightdm/UsersModel.cpp+4−18
@@ -54,24 +54,10 @@ UsersModel::UsersModel(QObject *parent) :
54 roles[ImagePathRole] = "imagePath";
54 roles[ImagePathRole] = "imagePath";
55 setRoleNames(roles);
55 setRoleNames(roles);
56
56
57− // Now modify our mock user backgrounds
57+ connect(d_ptr, &UsersModelPrivate::dataChanged, this, [this](int i) {
58− QDir bgdir = QDir(QStringLiteral("/usr/share/demo-assets/shell/backgrounds/"));
58+ QModelIndex index = createIndex(i, 0);
59− QStringList backgrounds = bgdir.entryList(QDir::Files | QDir::NoDotAndDotDot);
59+ Q_EMIT dataChanged(index, index);
60−
60+ });
61− for (int i = 0, j = 0; i < d->entries.size(); i++) {
62− Entry &entry = d->entries[i];
63− if (entry.background.isNull() && !backgrounds.isEmpty()) {
64− entry.background = bgdir.filePath(backgrounds[j++]);
65− if (j >= backgrounds.length()) {
66− j = 0;
67− }
68− }
69− }
70−}
71−
72−UsersModel::~UsersModel()
73−{
74− delete d_ptr;
75}
61}
76
62
77int UsersModel::rowCount(const QModelIndex &parent) const
63int UsersModel::rowCount(const QModelIndex &parent) const
plugins/IntegratedLightDM/liblightdm/UsersModel.h+1−1
@@ -41,7 +41,7 @@ class Q_DECL_EXPORT UsersModel : public QAbstractListModel
41
41
42public:
42public:
43 explicit UsersModel(QObject *parent = 0);
43 explicit UsersModel(QObject *parent = 0);
44− virtual ~UsersModel();
44+ virtual ~UsersModel() = default;
45
45
46 enum UserModelRoles {NameRole = Qt::UserRole,
46 enum UserModelRoles {NameRole = Qt::UserRole,
47 RealNameRole,
47 RealNameRole,
plugins/IntegratedLightDM/liblightdm/UsersModelPrivate.cpp+43−9
@@ -18,7 +18,11 @@
18
18
19#include "UsersModelPrivate.h"
19#include "UsersModelPrivate.h"
20
20
21+#include "AccountsServiceDBusAdaptor.h"
22+#include "UsersModel.h"
23+
21#include <glib.h>
24#include <glib.h>
25+#include <QDebug>
22#include <QDir>
26#include <QDir>
23#include <QSettings>
27#include <QSettings>
24#include <QStringList>
28#include <QStringList>
@@ -27,7 +31,9 @@ namespace QLightDM
27{
31{
28
32
29UsersModelPrivate::UsersModelPrivate(UsersModel* parent)
33UsersModelPrivate::UsersModelPrivate(UsersModel* parent)
34+ : QObject(parent),
30− : q_ptr(parent)
35+ q_ptr(parent),
36+ m_service(new AccountsServiceDBusAdaptor(this))
31{
37{
32 QFileInfo demoFile(QDir::homePath() + "/.unity8-greeter-demo");
38 QFileInfo demoFile(QDir::homePath() + "/.unity8-greeter-demo");
33 QString currentUser = g_get_user_name();
39 QString currentUser = g_get_user_name();
@@ -43,15 +49,43 @@ UsersModelPrivate::UsersModelPrivate(UsersModel* parent)
43 entries.append({user, name, 0, 0, false, false, 0, 0});
49 entries.append({user, name, 0, 0, false, false, 0, 0});
44 }
50 }
45 } else {
51 } else {
46− // If we were using the actual liblightdm, we could just ask it
52+ entries.append({currentUser, 0, 0, 0, false, false, 0, 0});
47− // for the user's real name. But we aren't. We *should* ask
53+
48− // AccountsService for the real name, like liblightdm does internally,
54+ connect(m_service, &AccountsServiceDBusAdaptor::maybeChanged,
49− // but this is close enough since AS and passwd are always in sync.
55+ this, [this](const QString &user) {
50− QString realName = QString::fromUtf8(g_get_real_name()); // gets name from passwd entry
56+ if (user == entries[0].username) {
51− if (realName == QStringLiteral("Unknown")) { // glib doesn't translate this string
57+ updateName(true);
52− realName.clear();
58+ }
59+ });
60+ updateName(false);
61+ }
62+}
63+
64+void UsersModelPrivate::updateName(bool async)
65+{
66+ auto pendingReply = m_service->getUserPropertyAsync(entries[0].username,
67+ QStringLiteral("org.freedesktop.Accounts.User"),
68+ QStringLiteral("RealName"));
69+ auto *watcher = new QDBusPendingCallWatcher(pendingReply, this);
70+
71+ connect(watcher, &QDBusPendingCallWatcher::finished,
72+ this, [this](QDBusPendingCallWatcher* watcher) {
73+
74+ QDBusPendingReply<QVariant> reply = *watcher;
75+ watcher->deleteLater();
76+ if (reply.isError()) {
77+ qWarning() << "Failed to get 'RealName' property - " << reply.error().message();
78+ return;
79+ }
80+
81+ const QString realName = reply.value().toString();
82+ if (entries[0].real_name != realName) {
83+ entries[0].real_name = realName;
84+ Q_EMIT dataChanged(0);
53 }
85 }
54− entries.append({currentUser, realName, 0, 0, false, false, 0, 0});
86+ });
87+ if (!async) {
88+ watcher->waitForFinished();
55 }
89 }
56}
90}
57
91
plugins/IntegratedLightDM/liblightdm/UsersModelPrivate.h+15−3
@@ -19,8 +19,11 @@
19#ifndef UNITY_MOCK_USERSMODEL_PRIVATE_H
19#ifndef UNITY_MOCK_USERSMODEL_PRIVATE_H
20#define UNITY_MOCK_USERSMODEL_PRIVATE_H
20#define UNITY_MOCK_USERSMODEL_PRIVATE_H
21
21
22−#include <QtCore/QList>
22+#include <QList>
23−#include <QtCore/QString>
23+#include <QObject>
24+#include <QString>
25+
26+class AccountsServiceDBusAdaptor;
24
27
25namespace QLightDM
28namespace QLightDM
26{
29{
@@ -39,19 +42,28 @@ public:
39 QString infographic;
42 QString infographic;
40};
43};
41
44
42−class UsersModelPrivate
45+class UsersModelPrivate : public QObject
43{
46{
47+ Q_OBJECT
48+
44public:
49public:
45 explicit UsersModelPrivate(UsersModel *parent = 0);
50 explicit UsersModelPrivate(UsersModel *parent = 0);
46 virtual ~UsersModelPrivate() = default;
51 virtual ~UsersModelPrivate() = default;
47
52
48 QList<Entry> entries;
53 QList<Entry> entries;
49
54
55+Q_SIGNALS:
56+ void dataChanged(int);
57+
50protected:
58protected:
51 UsersModel * const q_ptr;
59 UsersModel * const q_ptr;
52
60
53private:
61private:
54 Q_DECLARE_PUBLIC(UsersModel)
62 Q_DECLARE_PUBLIC(UsersModel)
63+
64+ void updateName(bool async);
65+
66+ AccountsServiceDBusAdaptor *m_service;
55};
67};
56
68
57}
69}
plugins/Ubuntu/Gestures/CMakeLists.txt+1
@@ -11,6 +11,7 @@ set(UbuntuGesturesQml_SOURCES
11 PressedOutsideNotifier.cpp
11 PressedOutsideNotifier.cpp
12 TouchDispatcher.cpp
12 TouchDispatcher.cpp
13 TouchGate.cpp
13 TouchGate.cpp
14+ TouchGestureArea.cpp
14)
15)
15
16
16add_definitions(-DUBUNTUGESTURESQML_LIBRARY)
17add_definitions(-DUBUNTUGESTURESQML_LIBRARY)
plugins/Ubuntu/Gestures/DirectionalDragArea.cpp+3
@@ -606,6 +606,9 @@ void DirectionalDragAreaPrivate::setStatus(Status newStatus)
606 Q_EMIT q->pressedChanged(true);
606 Q_EMIT q->pressedChanged(true);
607 break;
607 break;
608 case Recognized:
608 case Recognized:
609+ if (oldStatus == WaitingForTouch) { // for immediate recognition
610+ Q_EMIT q->pressedChanged(true);
611+ }
609 Q_EMIT q->draggingChanged(true);
612 Q_EMIT q->draggingChanged(true);
610 break;
613 break;
611 default:
614 default:
plugins/Ubuntu/Gestures/Gestures.qmltypes+86−45
@@ -34,7 +34,8 @@ Module {
34 "Leftwards": 1,
34 "Leftwards": 1,
35 "Downwards": 2,
35 "Downwards": 2,
36 "Upwards": 3,
36 "Upwards": 3,
37− "Horizontal": 4
37+ "Horizontal": 4,
38+ "Vertical": 5
38 }
39 }
39 }
40 }
40 Method {
41 Method {
@@ -59,14 +60,6 @@ Module {
59 prototype: "QQuickItem"
60 prototype: "QQuickItem"
60 exports: ["Ubuntu.Gestures/DirectionalDragArea 0.1"]
61 exports: ["Ubuntu.Gestures/DirectionalDragArea 0.1"]
61 exportMetaObjectRevisions: [0]
62 exportMetaObjectRevisions: [0]
62− Enum {
63− name: "Status"
64− values: {
65− "WaitingForTouch": 0,
66− "Undecided": 1,
67− "Recognized": 2
68− }
69− }
70 Property { name: "direction"; type: "Direction::Type" }
63 Property { name: "direction"; type: "Direction::Type" }
71 Property { name: "distance"; type: "double"; isReadonly: true }
64 Property { name: "distance"; type: "double"; isReadonly: true }
72 Property { name: "sceneDistance"; type: "double"; isReadonly: true }
65 Property { name: "sceneDistance"; type: "double"; isReadonly: true }
@@ -74,24 +67,19 @@ Module {
74 Property { name: "touchY"; type: "double"; isReadonly: true }
67 Property { name: "touchY"; type: "double"; isReadonly: true }
75 Property { name: "touchSceneX"; type: "double"; isReadonly: true }
68 Property { name: "touchSceneX"; type: "double"; isReadonly: true }
76 Property { name: "touchSceneY"; type: "double"; isReadonly: true }
69 Property { name: "touchSceneY"; type: "double"; isReadonly: true }
77− Property { name: "status"; type: "Status"; isReadonly: true }
78 Property { name: "dragging"; type: "bool"; isReadonly: true }
70 Property { name: "dragging"; type: "bool"; isReadonly: true }
79− Property { name: "maxDeviation"; type: "double" }
71+ Property { name: "pressed"; type: "bool"; isReadonly: true }
80− Property { name: "wideningAngle"; type: "double" }
81− Property { name: "distanceThreshold"; type: "double" }
72+ Property { name: "immediateRecognition"; type: "bool" }
82− Property { name: "minSpeed"; type: "double" }
83− Property { name: "maxSilenceTime"; type: "int" }
84− Property { name: "compositionTime"; type: "int" }
85 Signal {
73 Signal {
86 name: "directionChanged"
74 name: "directionChanged"
87 Parameter { name: "direction"; type: "Direction::Type" }
75 Parameter { name: "direction"; type: "Direction::Type" }
88 }
76 }
89 Signal {
77 Signal {
90− name: "statusChanged"
78+ name: "draggingChanged"
91− Parameter { name: "value"; type: "Status" }
79+ Parameter { name: "value"; type: "bool" }
92 }
80 }
93 Signal {
81 Signal {
94− name: "draggingChanged"
82+ name: "pressedChanged"
95 Parameter { name: "value"; type: "bool" }
83 Parameter { name: "value"; type: "bool" }
96 }
84 }
97 Signal {
85 Signal {
@@ -102,30 +90,6 @@ Module {
102 name: "sceneDistanceChanged"
90 name: "sceneDistanceChanged"
103 Parameter { name: "value"; type: "double" }
91 Parameter { name: "value"; type: "double" }
104 }
92 }
105− Signal {
106− name: "maxDeviationChanged"
107− Parameter { name: "value"; type: "double" }
108− }
109− Signal {
110− name: "wideningAngleChanged"
111− Parameter { name: "value"; type: "double" }
112− }
113− Signal {
114− name: "distanceThresholdChanged"
115− Parameter { name: "value"; type: "double" }
116− }
117− Signal {
118− name: "minSpeedChanged"
119− Parameter { name: "value"; type: "double" }
120− }
121− Signal {
122− name: "maxSilenceTimeChanged"
123− Parameter { name: "value"; type: "int" }
124− }
125− Signal {
126− name: "compositionTimeChanged"
127− Parameter { name: "value"; type: "int" }
128− }
129 Signal {
93 Signal {
130 name: "touchXChanged"
94 name: "touchXChanged"
131 Parameter { name: "value"; type: "double" }
95 Parameter { name: "value"; type: "double" }
@@ -142,7 +106,35 @@ Module {
142 name: "touchSceneYChanged"
106 name: "touchSceneYChanged"
143 Parameter { name: "value"; type: "double" }
107 Parameter { name: "value"; type: "double" }
144 }
108 }
145− Signal { name: "tapped" }
109+ Signal {
110+ name: "immediateRecognitionChanged"
111+ Parameter { name: "value"; type: "bool" }
112+ }
113+ Method { name: "removeTimeConstraints" }
114+ }
115+ Component {
116+ name: "FloatingFlickable"
117+ defaultProperty: "data"
118+ prototype: "QQuickItem"
119+ exports: ["Ubuntu.Gestures/FloatingFlickable 0.1"]
120+ exportMetaObjectRevisions: [0]
121+ Property { name: "contentWidth"; type: "double" }
122+ Property { name: "contentHeight"; type: "double" }
123+ Property { name: "contentX"; type: "double" }
124+ Property { name: "contentY"; type: "double" }
125+ Property { name: "direction"; type: "Direction::Type" }
126+ }
127+ Component {
128+ name: "GestureTouchPoint"
129+ prototype: "QObject"
130+ exports: ["Ubuntu.Gestures/GestureTouchPoint 0.1"]
131+ isCreatable: false
132+ exportMetaObjectRevisions: [0]
133+ Property { name: "pointId"; type: "int"; isReadonly: true }
134+ Property { name: "pressed"; type: "bool"; isReadonly: true }
135+ Property { name: "x"; type: "double"; isReadonly: true }
136+ Property { name: "y"; type: "double"; isReadonly: true }
137+ Property { name: "dragging"; type: "bool"; isReadonly: true }
146 }
138 }
147 Component {
139 Component {
148 name: "PressedOutsideNotifier"
140 name: "PressedOutsideNotifier"
@@ -163,6 +155,55 @@ Module {
163 name: "targetItemChanged"
155 name: "targetItemChanged"
164 Parameter { name: "item"; type: "QQuickItem"; isPointer: true }
156 Parameter { name: "item"; type: "QQuickItem"; isPointer: true }
165 }
157 }
158+ }
159+ Component {
160+ name: "TouchGestureArea"
161+ defaultProperty: "data"
162+ prototype: "QQuickItem"
163+ exports: ["Ubuntu.Gestures/TouchGestureArea 0.1"]
164+ exportMetaObjectRevisions: [0]
165+ Enum {
166+ name: "Status"
167+ values: {
168+ "WaitingForTouch": 0,
169+ "Undecided": 1,
170+ "Recognized": 2,
171+ "Rejected": 3
172+ }
173+ }
174+ Property { name: "touchPoints"; type: "GestureTouchPoint"; isList: true; isReadonly: true }
175+ Property { name: "dragging"; type: "bool"; isReadonly: true }
176+ Property { name: "minimumTouchPoints"; type: "int" }
177+ Property { name: "maximumTouchPoints"; type: "int" }
178+ Signal {
179+ name: "statusChanged"
180+ Parameter { name: "status"; type: "Status" }
181+ }
182+ Signal { name: "touchPointsUpdated" }
183+ Signal {
184+ name: "draggingChanged"
185+ Parameter { name: "dragging"; type: "bool" }
186+ }
187+ Signal {
188+ name: "minimumTouchPointsChanged"
189+ Parameter { name: "value"; type: "bool" }
190+ }
191+ Signal {
192+ name: "maximumTouchPointsChanged"
193+ Parameter { name: "value"; type: "bool" }
194+ }
195+ Signal {
166− Signal { name: "pressed" }
196+ name: "pressed"
197+ Parameter { name: "points"; type: "QList<QObject*>" }
198+ }
199+ Signal {
200+ name: "released"
201+ Parameter { name: "points"; type: "QList<QObject*>" }
202+ }
203+ Signal {
204+ name: "updated"
205+ Parameter { name: "points"; type: "QList<QObject*>" }
206+ }
207+ Signal { name: "clicked" }
167 }
208 }
168}
209}
plugins/Ubuntu/Gestures/TouchGestureArea.cppnew file+875
@@ -0,0 +1,875 @@
1+/*
2+ * Copyright (C) 2016 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+#include "TouchGestureArea.h"
18+
19+// local
20+#include "TouchOwnershipEvent.h"
21+#include "TouchRegistry.h"
22+#include "UnownedTouchEvent.h"
23+
24+#include <QGuiApplication>
25+#include <QStyleHints>
26+#include <private/qquickwindow_p.h>
27+
28+#define TOUCHGESTUREAREA_DEBUG 0
29+
30+// TODO - understand more about why we lose touch event releases.
31+// Workaround for now is to monitor all the touch points from first touch till
32+// all have been released; no matter if we've rejected the gesture.
33+
34+namespace {
35+
36+struct InternalStatus {
37+ enum Status {
38+ WaitingForTouch,
39+ WaitingForMoreTouches,
40+ WaitingForOwnership, //Recognizing,
41+ Recognized,
42+ WaitingForRejection,
43+ Rejected
44+ };
45+};
46+
47+TouchGestureArea::Status internalStatusToGestureStatus(int internalStatus) {
48+ switch (internalStatus) {
49+ case InternalStatus::WaitingForTouch: return TouchGestureArea::WaitingForTouch;
50+ case InternalStatus::WaitingForMoreTouches: return TouchGestureArea::Undecided;
51+ case InternalStatus::WaitingForOwnership: return TouchGestureArea::Undecided;
52+ case InternalStatus::Recognized: return TouchGestureArea::Recognized;
53+ case InternalStatus::WaitingForRejection: return TouchGestureArea::Recognized;
54+ case InternalStatus::Rejected: return TouchGestureArea::Rejected;
55+ }
56+ return TouchGestureArea::WaitingForTouch;
57+}
58+
59+}
60+
61+#if TOUCHGESTUREAREA_DEBUG
62+#define tgaDebug(params) qDebug().nospace() << "[TGA(" << qPrintable(objectName()) << ")] " << params
63+#include "DebugHelpers.h"
64+
65+namespace {
66+
67+const char *statusToString(int status)
68+{
69+ if (status == InternalStatus::WaitingForTouch) {
70+ return "WaitingForTouch";
71+ } else if (status == InternalStatus::WaitingForMoreTouches) {
72+ return "WaitingForMoreTouches";
73+ } else if (status == InternalStatus::WaitingForOwnership) {
74+ return "WaitingForOwnership";
75+ } else if (status == InternalStatus::Rejected) {
76+ return "Rejected";
77+ } else if (status == InternalStatus::WaitingForRejection) {
78+ return "WaitingForRejection";
79+ } else {
80+ return "Recognized";
81+ }
82+ return "Unknown";
83+}
84+
85+QString touchState(Qt::TouchPointState state) {
86+ switch (state) {
87+ case Qt::TouchPointPressed: return "pressed";
88+ case Qt::TouchPointMoved: return "moved";
89+ case Qt::TouchPointStationary: return "stationary";
90+ case Qt::TouchPointReleased: return "released";
91+ break;
92+ }
93+ return "unknown";
94+}
95+
96+QString touchesString(const QList<QObject*> touches) {
97+ QString str;
98+ Q_FOREACH(QObject* object, touches) {
99+ GestureTouchPoint* touchPoint = qobject_cast<GestureTouchPoint*>(object);
100+ if (touchPoint) {
101+ str += QStringLiteral("[%1 @ (%2, %3)], ").arg(touchPoint->id())
102+ .arg(touchPoint->x())
103+ .arg(touchPoint->y());
104+ }
105+ }
106+ return str;
107+}
108+
109+QString touchEventString(QTouchEvent* event) {
110+ if (!event) return QString();
111+ QString str;
112+ Q_FOREACH(const auto& touchPoint, event->touchPoints()) {
113+ str += QStringLiteral("[%1:%2 @ (%3, %4)], ").arg(touchPoint.id())
114+ .arg(touchState(touchPoint.state()))
115+ .arg(touchPoint.pos().x())
116+ .arg(touchPoint.pos().y());
117+ }
118+ return str;
119+}
120+
121+
122+} // namespace {
123+#else // TOUCHGESTUREAREA_DEBUG
124+#define tgaDebug(params) ((void)0)
125+#endif // TOUCHGESTUREAREA_DEBUG
126+
127+TouchGestureArea::TouchGestureArea(QQuickItem* parent)
128+ : QQuickItem(parent)
129+ , m_status(WaitingForTouch)
130+ , m_recognitionTimer(nullptr)
131+ , m_dragging(false)
132+ , m_minimumTouchPoints(1)
133+ , m_maximumTouchPoints(INT_MAX)
134+ , m_recognitionPeriod(50)
135+ , m_releaseRejectPeriod(100)
136+{
137+ setRecognitionTimer(new UbuntuGestures::Timer(this));
138+ m_recognitionTimer->setInterval(m_recognitionPeriod);
139+ m_recognitionTimer->setSingleShot(true);
140+}
141+
142+TouchGestureArea::~TouchGestureArea()
143+{
144+ clearTouchLists();
145+ qDeleteAll(m_liveTouchPoints);
146+ m_liveTouchPoints.clear();
147+ qDeleteAll(m_cachedTouchPoints);
148+ m_cachedTouchPoints.clear();
149+}
150+
151+bool TouchGestureArea::event(QEvent *event)
152+{
153+ // Process unowned touch events (handles update/release for incomplete gestures)
154+ if (event->type() == TouchOwnershipEvent::touchOwnershipEventType()) {
155+ touchOwnershipEvent(static_cast<TouchOwnershipEvent *>(event));
156+ return true;
157+ } else if (event->type() == UnownedTouchEvent::unownedTouchEventType()) {
158+ unownedTouchEvent(static_cast<UnownedTouchEvent *>(event)->touchEvent());
159+ return true;
160+ }
161+
162+ return QQuickItem::event(event);
163+}
164+
165+void TouchGestureArea::touchOwnershipEvent(TouchOwnershipEvent *event)
166+{
167+ int touchId = event->touchId();
168+ tgaDebug("touchOwnershipEvent - id:" << touchId << ", gained:" << event->gained());
169+
170+ if (event->gained()) {
171+ grabTouchPoints(QVector<int>() << touchId);
172+ m_candidateTouches.remove(touchId);
173+ TouchRegistry::instance()->addTouchWatcher(touchId, this);
174+ m_watchedTouches.insert(touchId);
175+
176+ if (m_watchedTouches.count() >= m_minimumTouchPoints) {
177+ setInternalStatus(InternalStatus::Recognized);
178+ }
179+ } else {
180+ rejectGesture();
181+ }
182+}
183+
184+void TouchGestureArea::touchEvent(QTouchEvent *event)
185+{
186+ if (!isEnabled() || !isVisible()) {
187+ tgaDebug(QString("NOT ENABLED touchEvent(%1) %2").arg(statusToString(m_status)).arg(touchEventString(event)));
188+ QQuickItem::touchEvent(event);
189+ return;
190+ }
191+
192+ tgaDebug(QString("touchEvent(%1) %2").arg(statusToString(m_status)).arg(touchEventString(event)));
193+
194+ switch (m_status) {
195+ case InternalStatus::WaitingForTouch:
196+ touchEvent_waitingForTouch(event);
197+ break;
198+ case InternalStatus::WaitingForMoreTouches:
199+ touchEvent_waitingForMoreTouches(event);
200+ break;
201+ case InternalStatus::WaitingForOwnership:
202+ touchEvent_waitingForOwnership(event);
203+ break;
204+ case InternalStatus::Recognized:
205+ case InternalStatus::WaitingForRejection:
206+ touchEvent_recognized(event);
207+ break;
208+ case InternalStatus::Rejected:
209+ touchEvent_rejected(event);
210+ break;
211+ default: // Recognized:
212+ break;
213+ }
214+
215+ updateTouchPoints(event);
216+}
217+
218+void TouchGestureArea::touchEvent_waitingForTouch(QTouchEvent *event)
219+{
220+ Q_FOREACH(const QTouchEvent::TouchPoint& touchPoint, event->touchPoints()) {
221+ Qt::TouchPointState touchPointState = touchPoint.state();
222+ int touchId = touchPoint.id();
223+
224+ if (touchPointState == Qt::TouchPointPressed) {
225+ if (!m_candidateTouches.contains(touchId)) {
226+ TouchRegistry::instance()->addCandidateOwnerForTouch(touchId, this);
227+ m_candidateTouches.insert(touchId);
228+ }
229+ }
230+ }
231+ event->ignore();
232+
233+ if (m_candidateTouches.count() > m_maximumTouchPoints) {
234+ rejectGesture();
235+ } else if (m_candidateTouches.count() >= m_minimumTouchPoints) {
236+ setInternalStatus(InternalStatus::WaitingForOwnership);
237+
238+ QSet<int> tmpCandidates(m_candidateTouches);
239+ Q_FOREACH(int candidateTouchId, tmpCandidates) {
240+ TouchRegistry::instance()->requestTouchOwnership(candidateTouchId, this);
241+ }
242+ // We accept the gesture; so don't pass to lower items
243+ event->accept();
244+ } else if (m_candidateTouches.count() > 0) {
245+ setInternalStatus(InternalStatus::WaitingForMoreTouches);
246+ }
247+}
248+
249+void TouchGestureArea::touchEvent_waitingForMoreTouches(QTouchEvent *event)
250+{
251+ Q_FOREACH(const QTouchEvent::TouchPoint& touchPoint, event->touchPoints()) {
252+ Qt::TouchPointState touchPointState = touchPoint.state();
253+ int touchId = touchPoint.id();
254+
255+ if (touchPointState == Qt::TouchPointPressed) {
256+ if (!m_candidateTouches.contains(touchId)) {
257+ TouchRegistry::instance()->addCandidateOwnerForTouch(touchId, this);
258+ m_candidateTouches.insert(touchId);
259+ }
260+ }
261+ }
262+ event->ignore();
263+
264+ if (m_candidateTouches.count() > m_maximumTouchPoints) {
265+ rejectGesture();
266+ } else if (m_candidateTouches.count() >= m_minimumTouchPoints) {
267+ setInternalStatus(InternalStatus::WaitingForOwnership);
268+
269+ QSet<int> tmpCandidates(m_candidateTouches);
270+ Q_FOREACH(int candidateTouchId, tmpCandidates) {
271+ TouchRegistry::instance()->requestTouchOwnership(candidateTouchId, this);
272+ }
273+ // We accept the gesture; so don't pass to lower items
274+ event->accept();
275+ }
276+}
277+
278+void TouchGestureArea::touchEvent_waitingForOwnership(QTouchEvent *event)
279+{
280+ Q_FOREACH(const QTouchEvent::TouchPoint& touchPoint, event->touchPoints()) {
281+ Qt::TouchPointState touchPointState = touchPoint.state();
282+ int touchId = touchPoint.id();
283+
284+ if (touchPointState == Qt::TouchPointPressed) {
285+ if (!m_watchedTouches.contains(touchId)) {
286+ TouchRegistry::instance()->addTouchWatcher(touchId, this);
287+ m_watchedTouches.insert(touchId);
288+ }
289+ }
290+ }
291+}
292+
293+void TouchGestureArea::touchEvent_recognized(QTouchEvent *event)
294+{
295+ Q_FOREACH(const QTouchEvent::TouchPoint& touchPoint, event->touchPoints()) {
296+ Qt::TouchPointState touchPointState = touchPoint.state();
297+ int touchId = touchPoint.id();
298+
299+ if (touchPointState == Qt::TouchPointPressed) {
300+ if (!m_watchedTouches.contains(touchId)) {
301+ TouchRegistry::instance()->addTouchWatcher(touchId, this);
302+ m_watchedTouches.insert(touchId);
303+ }
304+ }
305+ }
306+
307+ if (m_watchedTouches.count() > m_maximumTouchPoints) {
308+ rejectGesture();
309+ } else if (m_watchedTouches.count() >= m_minimumTouchPoints &&
310+ m_status==InternalStatus::WaitingForRejection) {
311+ setInternalStatus(InternalStatus::Recognized);
312+ }
313+}
314+
315+void TouchGestureArea::touchEvent_rejected(QTouchEvent *event)
316+{
317+ Q_FOREACH(const QTouchEvent::TouchPoint& touchPoint, event->touchPoints()) {
318+ Qt::TouchPointState touchPointState = touchPoint.state();
319+ int touchId = touchPoint.id();
320+
321+ if (touchPointState == Qt::TouchPointPressed) {
322+ if (!m_watchedTouches.contains(touchId)) {
323+ TouchRegistry::instance()->addTouchWatcher(touchId, this);
324+ m_watchedTouches.insert(touchId);
325+ }
326+ }
327+ }
328+}
329+
330+void TouchGestureArea::unownedTouchEvent(QTouchEvent *unownedTouchEvent)
331+{
332+ tgaDebug(QString("unownedTouchEvent(%1) %2").arg(statusToString(m_status)).arg(touchEventString(unownedTouchEvent)));
333+
334+ // Only monitor unowned touch events for presses/releases
335+ if ((unownedTouchEvent->touchPointStates() & (Qt::TouchPointPressed|Qt::TouchPointReleased)) == 0) {
336+ return;
337+ }
338+
339+ switch (m_status) {
340+ case InternalStatus::WaitingForTouch:
341+ break;
342+ case InternalStatus::WaitingForMoreTouches:
343+ unownedTouchEvent_waitingForMoreTouches(unownedTouchEvent);
344+ // do nothing
345+ break;
346+ case InternalStatus::WaitingForOwnership:
347+ unownedTouchEvent_waitingForOwnership(unownedTouchEvent);
348+ break;
349+ case InternalStatus::Recognized:
350+ case InternalStatus::WaitingForRejection:
351+ unownedTouchEvent_recognised(unownedTouchEvent);
352+ break;
353+ case InternalStatus::Rejected:
354+ unownedTouchEvent_rejected(unownedTouchEvent);
355+ break;
356+ default:
357+ break;
358+ }
359+
360+ updateTouchPoints(unownedTouchEvent);
361+}
362+
363+void TouchGestureArea::unownedTouchEvent_waitingForMoreTouches(QTouchEvent *event)
364+{
365+ Q_FOREACH(const QTouchEvent::TouchPoint& touchPoint, event->touchPoints()) {
366+ Qt::TouchPointState touchPointState = touchPoint.state();
367+ int touchId = touchPoint.id();
368+
369+ if (touchPointState == Qt::TouchPointReleased) {
370+ if (m_candidateTouches.contains(touchId)) {
371+ TouchRegistry::instance()->removeCandidateOwnerForTouch(touchId, this);
372+ m_candidateTouches.remove(touchId);
373+ }
374+ }
375+ }
376+
377+ if (m_candidateTouches.count() == 0) {
378+ setInternalStatus(InternalStatus::WaitingForTouch);
379+ }
380+}
381+
382+void TouchGestureArea::unownedTouchEvent_waitingForOwnership(QTouchEvent *event)
383+{
384+ Q_FOREACH(const QTouchEvent::TouchPoint& touchPoint, event->touchPoints()) {
385+ Qt::TouchPointState touchPointState = touchPoint.state();
386+ int touchId = touchPoint.id();
387+
388+ if (touchPointState == Qt::TouchPointReleased) {
389+ if (m_candidateTouches.contains(touchId)) {
390+ TouchRegistry::instance()->removeCandidateOwnerForTouch(touchId, this);
391+ m_candidateTouches.remove(touchId);
392+ }
393+ if (m_watchedTouches.contains(touchId)) {
394+ m_watchedTouches.remove(touchId);
395+ }
396+ }
397+ }
398+
399+ if (m_candidateTouches.count() + m_watchedTouches.count() == 0) {
400+ setInternalStatus(InternalStatus::WaitingForTouch);
401+ }
402+}
403+
404+void TouchGestureArea::unownedTouchEvent_recognised(QTouchEvent *event)
405+{
406+ Q_FOREACH(const QTouchEvent::TouchPoint& touchPoint, event->touchPoints()) {
407+ Qt::TouchPointState touchPointState = touchPoint.state();
408+ int touchId = touchPoint.id();
409+
410+ if (touchPointState == Qt::TouchPointReleased) {
411+ if (m_watchedTouches.contains(touchId)) {
412+ m_watchedTouches.remove(touchId);
413+ }
414+ }
415+ }
416+
417+ if (m_watchedTouches.count() < m_minimumTouchPoints && m_status==InternalStatus::Recognized) {
418+ setInternalStatus(InternalStatus::WaitingForRejection);
419+ }
420+}
421+
422+void TouchGestureArea::unownedTouchEvent_rejected(QTouchEvent *event)
423+{
424+ Q_FOREACH(const QTouchEvent::TouchPoint& touchPoint, event->touchPoints()) {
425+ Qt::TouchPointState touchPointState = touchPoint.state();
426+ int touchId = touchPoint.id();
427+
428+ if (touchPointState == Qt::TouchPointPressed) {
429+ if (!m_watchedTouches.contains(touchId)) {
430+ TouchRegistry::instance()->addTouchWatcher(touchId, this);
431+ m_watchedTouches.insert(touchId);
432+ }
433+ }
434+ if (touchPointState == Qt::TouchPointReleased) {
435+ if (m_watchedTouches.contains(touchId)) {
436+ m_watchedTouches.remove(touchId);
437+ }
438+ }
439+ }
440+
441+ if (m_watchedTouches.count() == 0) {
442+ setInternalStatus(InternalStatus::WaitingForTouch);
443+ }
444+}
445+
446+void TouchGestureArea::updateTouchPoints(QTouchEvent *touchEvent)
447+{
448+ bool added = false;
449+ bool ended = false;
450+ bool moved = false;
451+
452+ const int dragThreshold = qApp->styleHints()->startDragDistance();
453+ const int dragVelocity = qApp->styleHints()->startDragVelocity();
454+
455+ clearTouchLists();
456+ bool updateable = m_status != InternalStatus::WaitingForRejection;
457+
458+ Q_FOREACH(const QTouchEvent::TouchPoint& touchPoint, touchEvent->touchPoints()) {
459+ Qt::TouchPointState touchPointState = touchPoint.state();
460+ int touchId = touchPoint.id();
461+
462+ if (touchPointState & Qt::TouchPointReleased) {
463+ GestureTouchPoint* gtp = m_liveTouchPoints.value(touchId);
464+ if (!gtp) continue;
465+
466+ gtp->setPos(touchPoint.pos());
467+ gtp->setPressed(false);
468+ m_releasedTouchPoints.append(gtp);
469+ m_liveTouchPoints.remove(touchId);
470+
471+ if (updateable) {
472+ if (m_cachedTouchPoints.contains(touchId)) {
473+ GestureTouchPoint* cachedPoint = m_cachedTouchPoints.take(touchId);
474+ cachedPoint->deleteLater();
475+ }
476+ }
477+ ended = true;
478+ } else {
479+ GestureTouchPoint* gtp = m_liveTouchPoints.value(touchPoint.id(), nullptr);
480+ if (!gtp) {
481+ gtp = addTouchPoint(&touchPoint);
482+ m_pressedTouchPoints.append(gtp);
483+
484+ if (updateable) {
485+ if (m_cachedTouchPoints.contains(touchId)) {
486+ m_cachedTouchPoints[touchId]->setPos(touchPoint.pos());
487+ } else {
488+ m_cachedTouchPoints[touchId] = new GestureTouchPoint(*gtp);
489+ }
490+ }
491+ added = true;
492+ } else if (touchPointState & Qt::TouchPointMoved) {
493+ gtp->setPos(touchPoint.pos());
494+ m_movedTouchPoints.append(gtp);
495+ moved = true;
496+
497+ const QPointF &currentPos = touchPoint.scenePos();
498+ const QPointF &startPos = touchPoint.startScenePos();
499+
500+ bool overDragThreshold = false;
501+ bool supportsVelocity = (touchEvent->device()->capabilities() & QTouchDevice::Velocity) && dragVelocity;
502+ overDragThreshold |= qAbs(currentPos.x() - startPos.x()) > dragThreshold ||
503+ qAbs(currentPos.y() - startPos.y()) > dragThreshold;
504+ if (supportsVelocity) {
505+ QVector2D velocityVec = touchPoint.velocity();
506+ overDragThreshold |= qAbs(velocityVec.x()) > dragVelocity;
507+ overDragThreshold |= qAbs(velocityVec.y()) > dragVelocity;
508+ }
509+
510+ if (overDragThreshold) {
511+ gtp->setDragging(true);
512+ }
513+
514+ if (updateable) {
515+ if (m_cachedTouchPoints.contains(touchId)) {
516+ m_cachedTouchPoints[touchId]->setPos(touchPoint.pos());
517+ if (overDragThreshold) {
518+ m_cachedTouchPoints[touchId]->setDragging(true);
519+ }
520+ }
521+ }
522+ }
523+ }
524+ }
525+
526+ if (updateable) {
527+ if (!dragging() && m_status == InternalStatus::Recognized) {
528+ bool allWantDrag = !m_liveTouchPoints.isEmpty();
529+ Q_FOREACH(auto point, m_liveTouchPoints) {
530+ allWantDrag &= point->dragging();
531+ }
532+ // only dragging if all points are dragging.
533+ if (allWantDrag) {
534+ setDragging(true);
535+ }
536+ }
537+
538+ if (ended) {
539+ if (m_liveTouchPoints.isEmpty()) {
540+ if (!dragging()) Q_EMIT clicked();
541+ setDragging(false);
542+ }
543+ tgaDebug("Released " << touchesString(m_releasedTouchPoints));
544+ Q_EMIT released(m_releasedTouchPoints);
545+ }
546+ if (added) {
547+ tgaDebug("Pressed " << touchesString(m_pressedTouchPoints));
548+ Q_EMIT pressed(m_pressedTouchPoints);
549+ }
550+ if (moved) {
551+ tgaDebug("Updated " << touchesString(m_movedTouchPoints));
552+ Q_EMIT updated(m_movedTouchPoints);
553+ }
554+ if (added || ended || moved) {
555+ Q_EMIT touchPointsUpdated();
556+ }
557+ }
558+}
559+
560+void TouchGestureArea::clearTouchLists()
561+{
562+ Q_FOREACH (QObject *gtp, m_releasedTouchPoints) {
563+ delete gtp;
564+ }
565+ m_releasedTouchPoints.clear();
566+ m_pressedTouchPoints.clear();
567+ m_movedTouchPoints.clear();
568+}
569+
570+void TouchGestureArea::setInternalStatus(uint newStatus)
571+{
572+ if (newStatus == m_status)
573+ return;
574+
575+ uint oldStatus = m_status;
576+
577+ m_status = newStatus;
578+ Q_EMIT statusChanged(status());
579+
580+ if (oldStatus == InternalStatus::WaitingForMoreTouches || oldStatus == InternalStatus::WaitingForRejection) {
581+ m_recognitionTimer->stop();
582+ }
583+
584+ tgaDebug(statusToString(oldStatus) << " -> " << statusToString(newStatus));
585+
586+ switch (newStatus) {
587+ case InternalStatus::WaitingForTouch:
588+ resyncCachedTouchPoints();
589+ break;
590+ case InternalStatus::WaitingForMoreTouches:
591+ m_recognitionTimer->start(m_recognitionPeriod);
592+ break;
593+ case InternalStatus::Recognized:
594+ resyncCachedTouchPoints();
595+ break;
596+ case InternalStatus::WaitingForRejection:
597+ m_recognitionTimer->start(m_releaseRejectPeriod);
598+ break;
599+ case InternalStatus::Rejected:
600+ resyncCachedTouchPoints();
601+ break;
602+ default:
603+ // no-op
604+ break;
605+ }
606+}
607+
608+void TouchGestureArea::setRecognitionTimer(UbuntuGestures::AbstractTimer *timer)
609+{
610+ int interval = 0;
611+ bool timerWasRunning = false;
612+ bool wasSingleShot = false;
613+
614+ // can be null when called from the constructor
615+ if (m_recognitionTimer) {
616+ interval = m_recognitionTimer->interval();
617+ timerWasRunning = m_recognitionTimer->isRunning();
618+ if (m_recognitionTimer->parent() == this) {
619+ delete m_recognitionTimer;
620+ }
621+ }
622+
623+ m_recognitionTimer = timer;
624+ timer->setInterval(interval);
625+ timer->setSingleShot(wasSingleShot);
626+ connect(timer, SIGNAL(timeout()),
627+ this, SLOT(rejectGesture()));
628+ if (timerWasRunning) {
629+ m_recognitionTimer->start();
630+ }
631+}
632+
633+int TouchGestureArea::status() const
634+{
635+ return internalStatusToGestureStatus(m_status);
636+}
637+
638+bool TouchGestureArea::dragging() const
639+{
640+ return m_dragging;
641+}
642+
643+QQmlListProperty<GestureTouchPoint> TouchGestureArea::touchPoints()
644+{
645+ return QQmlListProperty<GestureTouchPoint>(this,
646+ 0,
647+ nullptr,
648+ TouchGestureArea::touchPoint_count,
649+ TouchGestureArea::touchPoint_at,
650+ 0);
651+}
652+
653+int TouchGestureArea::minimumTouchPoints() const
654+{
655+ return m_minimumTouchPoints;
656+}
657+
658+void TouchGestureArea::setMinimumTouchPoints(int value)
659+{
660+ if (m_minimumTouchPoints != value) {
661+ m_minimumTouchPoints = value;
662+ Q_EMIT minimumTouchPointsChanged(value);
663+ }
664+}
665+
666+int TouchGestureArea::maximumTouchPoints() const
667+{
668+ return m_maximumTouchPoints;
669+}
670+
671+void TouchGestureArea::setMaximumTouchPoints(int value)
672+{
673+ if (m_maximumTouchPoints != value) {
674+ m_maximumTouchPoints = value;
675+ Q_EMIT maximumTouchPointsChanged(value);
676+ }
677+}
678+
679+int TouchGestureArea::recognitionPeriod() const
680+{
681+ return m_recognitionPeriod;
682+}
683+
684+void TouchGestureArea::setRecognitionPeriod(int value)
685+{
686+ if (value != m_recognitionPeriod) {
687+ m_recognitionPeriod = value;
688+ Q_EMIT recognitionPeriodChanged(value);
689+ }
690+}
691+
692+int TouchGestureArea::releaseRejectPeriod() const
693+{
694+ return m_releaseRejectPeriod;
695+}
696+
697+void TouchGestureArea::setReleaseRejectPeriod(int value)
698+{
699+ if (value != m_releaseRejectPeriod) {
700+ m_releaseRejectPeriod = value;
701+ Q_EMIT releaseRejectPeriodChanged(value);
702+ }
703+}
704+
705+void TouchGestureArea::rejectGesture()
706+{
707+ tgaDebug("rejectGesture");
708+ ungrabTouchPoints();
709+
710+ Q_FOREACH(int touchId, m_candidateTouches) {
711+ TouchRegistry::instance()->removeCandidateOwnerForTouch(touchId, this);
712+ }
713+
714+ // Monitor the candidates
715+ Q_FOREACH(int touchId, m_candidateTouches) {
716+ TouchRegistry::instance()->addTouchWatcher(touchId, this);
717+ m_watchedTouches.insert(touchId);
718+ }
719+ m_candidateTouches.clear();
720+
721+ if (m_watchedTouches.count() == 0) {
722+ setInternalStatus(InternalStatus::WaitingForTouch);
723+ } else {
724+ setInternalStatus(InternalStatus::Rejected);
725+ }
726+}
727+
728+void TouchGestureArea::resyncCachedTouchPoints()
729+{
730+ clearTouchLists();
731+
732+ bool added = false;
733+ bool ended = false;
734+ bool moved = false;
735+ bool wantsDrag = false;
736+
737+ // list of deletes
738+ QMutableHashIterator<int, GestureTouchPoint*> removeIter(m_cachedTouchPoints);
739+ while(removeIter.hasNext()) {
740+ removeIter.next();
741+ if (!m_liveTouchPoints.contains(removeIter.key())) {
742+ m_releasedTouchPoints.append(removeIter.value());
743+ removeIter.remove();
744+ ended = true;
745+ }
746+ }
747+
748+ // list of adds/moves
749+ Q_FOREACH(GestureTouchPoint* touchPoint, m_liveTouchPoints) {
750+ if (m_cachedTouchPoints.contains(touchPoint->id())) {
751+ GestureTouchPoint* cachedPoint = m_cachedTouchPoints[touchPoint->id()];
752+
753+ if (*cachedPoint != *touchPoint) {
754+ *cachedPoint = *touchPoint;
755+ m_movedTouchPoints.append(touchPoint);
756+ moved = true;
757+ }
758+ } else {
759+ m_cachedTouchPoints.insert(touchPoint->id(), new GestureTouchPoint(*touchPoint));
760+ m_pressedTouchPoints.append(touchPoint);
761+ added = true;
762+ }
763+ }
764+
765+ if (wantsDrag && !dragging()) {
766+ setDragging(true);
767+ }
768+
769+ if (ended) {
770+ if (m_cachedTouchPoints.isEmpty()) {
771+ if (!dragging()) Q_EMIT clicked();
772+ setDragging(false);
773+ }
774+ tgaDebug("Cached Release " << touchesString(m_releasedTouchPoints));
775+ Q_EMIT released(m_releasedTouchPoints);
776+ }
777+ if (added) {
778+ tgaDebug("Cached Press " << touchesString(m_pressedTouchPoints));
779+ Q_EMIT pressed(m_pressedTouchPoints);
780+ }
781+ if (moved) {
782+ tgaDebug("Cached Update " << touchesString(m_movedTouchPoints));
783+ Q_EMIT updated(m_movedTouchPoints);
784+ }
785+ if (added || ended || moved) Q_EMIT touchPointsUpdated();
786+}
787+
788+int TouchGestureArea::touchPoint_count(QQmlListProperty<GestureTouchPoint> *list)
789+{
790+ TouchGestureArea *q = static_cast<TouchGestureArea*>(list->object);
791+ return q->m_cachedTouchPoints.count();
792+}
793+
794+GestureTouchPoint *TouchGestureArea::touchPoint_at(QQmlListProperty<GestureTouchPoint> *list, int index)
795+{
796+ TouchGestureArea *q = static_cast<TouchGestureArea*>(list->object);
797+ return (q->m_cachedTouchPoints.begin()+index).value();
798+}
799+
800+GestureTouchPoint* TouchGestureArea::addTouchPoint(QTouchEvent::TouchPoint const* tp)
801+{
802+ GestureTouchPoint* gtp = new GestureTouchPoint();
803+ gtp->setId(tp->id());
804+ gtp->setPressed(true);
805+ gtp->setPos(tp->pos());
806+ m_liveTouchPoints.insert(tp->id(), gtp);
807+ return gtp;
808+}
809+
810+void TouchGestureArea::itemChange(ItemChange change, const ItemChangeData &value)
811+{
812+ if (change == QQuickItem::ItemSceneChange) {
813+ if (value.window != nullptr) {
814+ value.window->installEventFilter(TouchRegistry::instance());
815+ }
816+ }
817+}
818+
819+void TouchGestureArea::setDragging(bool dragging)
820+{
821+ if (m_dragging == dragging)
822+ return;
823+
824+ tgaDebug("setDragging " << dragging);
825+
826+ m_dragging = dragging;
827+ Q_EMIT draggingChanged(m_dragging);
828+}
829+
830+void GestureTouchPoint::setId(int id)
831+{
832+ if (m_id == id)
833+ return;
834+ m_id = id;
835+ Q_EMIT idChanged();
836+}
837+
838+void GestureTouchPoint::setPressed(bool pressed)
839+{
840+ if (m_pressed == pressed)
841+ return;
842+ m_pressed = pressed;
843+ Q_EMIT pressedChanged();
844+}
845+
846+void GestureTouchPoint::setX(qreal x)
847+{
848+ if (m_x == x)
849+ return;
850+ m_x = x;
851+ Q_EMIT xChanged();
852+}
853+
854+void GestureTouchPoint::setY(qreal y)
855+{
856+ if (m_y == y)
857+ return;
858+ m_y = y;
859+ Q_EMIT yChanged();
860+}
861+
862+void GestureTouchPoint::setDragging(bool dragging)
863+{
864+ if (m_dragging == dragging)
865+ return;
866+
867+ m_dragging = dragging;
868+ Q_EMIT draggingChanged();
869+}
870+
871+void GestureTouchPoint::setPos(const QPointF &pos)
872+{
873+ setX(pos.x());
874+ setY(pos.y());
875+}
plugins/Ubuntu/Gestures/TouchGestureArea.hnew file+229
@@ -0,0 +1,229 @@
1+/*
2+ * Copyright (C) 2016 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+#ifndef TOUCHGESTUREAREA_H
18+#define TOUCHGESTUREAREA_H
19+
20+#include "UbuntuGesturesQmlGlobal.h"
21+
22+#include <QQuickItem>
23+
24+// lib UbuntuGestures
25+#include <Timer.h>
26+
27+class TouchOwnershipEvent;
28+class UnownedTouchEvent;
29+
30+class GestureTouchPoint : public QObject
31+{
32+ Q_OBJECT
33+ Q_PROPERTY(int id READ id NOTIFY idChanged)
34+ Q_PROPERTY(bool pressed READ pressed NOTIFY pressedChanged)
35+ Q_PROPERTY(qreal x READ x NOTIFY xChanged)
36+ Q_PROPERTY(qreal y READ y NOTIFY yChanged)
37+ Q_PROPERTY(bool dragging READ dragging NOTIFY draggingChanged)
38+public:
39+ GestureTouchPoint()
40+ : m_id(-1)
41+ , m_pressed(false)
42+ , m_x(0)
43+ , m_y(0)
44+ , m_dragging(false)
45+ {
46+ }
47+
48+ GestureTouchPoint(const GestureTouchPoint& other)
49+ : QObject(nullptr)
50+ {
51+ operator=(other);
52+ }
53+
54+ int id() const { return m_id; }
55+ void setId(int id);
56+
57+ bool pressed() const { return m_pressed; }
58+ void setPressed(bool pressed);
59+
60+ qreal x() const { return m_x; }
61+ void setX(qreal x);
62+
63+ qreal y() const { return m_y; }
64+ void setY(qreal y);
65+
66+ bool dragging() const { return m_dragging; }
67+ void setDragging(bool dragging);
68+
69+ GestureTouchPoint& operator=(const GestureTouchPoint& rhs) {
70+ if (&rhs == this) return *this;
71+ m_id = rhs.m_id;
72+ m_pressed = rhs.m_pressed;
73+ m_x = rhs.m_x;
74+ m_y = rhs.m_y;
75+ m_dragging = rhs.m_dragging;
76+ return *this;
77+ }
78+
79+ bool operator=(const GestureTouchPoint& rhs) const {
80+ if (&rhs == this) return true;
81+ return m_id == rhs.m_id &&
82+ m_pressed == rhs.m_pressed &&
83+ m_x == rhs.m_x &&
84+ m_y == rhs.m_y &&
85+ m_dragging == rhs.m_dragging;
86+ }
87+ bool operator!=(const GestureTouchPoint& rhs) const { return !operator=(rhs); }
88+
89+ void setPos(const QPointF &pos);
90+
91+Q_SIGNALS:
92+ void idChanged();
93+ void pressedChanged();
94+ void xChanged();
95+ void yChanged();
96+ void draggingChanged();
97+
98+private:
99+ int m_id;
100+ bool m_pressed;
101+ qreal m_x;
102+ qreal m_y;
103+ bool m_dragging;
104+};
105+
106+/*
107+ An area that detects multi-finger gestures.
108+
109+ We can use this to detect gestures contstrained by a minimim and/or maximum number of touch points.
110+ This components uses the touch registry to apply for ownership of touch points.
111+ This way we can use the component in conjuntion with the directional drag area to compete for ownwership
112+ or gestures; unlike the MultiPointTouchArea.
113+ */
114+class UBUNTUGESTURESQML_EXPORT TouchGestureArea : public QQuickItem
115+{
116+ Q_OBJECT
117+ Q_ENUMS(Status)
118+
119+ Q_PROPERTY(int status READ status NOTIFY statusChanged)
120+ Q_PROPERTY(bool dragging READ dragging NOTIFY draggingChanged)
121+ Q_PROPERTY(QQmlListProperty<GestureTouchPoint> touchPoints READ touchPoints NOTIFY touchPointsUpdated)
122+
123+ Q_PROPERTY(int minimumTouchPoints READ minimumTouchPoints WRITE setMinimumTouchPoints NOTIFY minimumTouchPointsChanged)
124+ Q_PROPERTY(int maximumTouchPoints READ maximumTouchPoints WRITE setMaximumTouchPoints NOTIFY maximumTouchPointsChanged)
125+
126+ // Time(ms) the component will wait for after receiving an initial touch to recognise a gesutre before rejecting it.
127+ Q_PROPERTY(int recognitionPeriod READ recognitionPeriod WRITE setRecognitionPeriod NOTIFY recognitionPeriodChanged)
128+ // Time(ms) the component will allow a recognised gesture to intermitently release a touch point before rejecting the gesture.
129+ // This is so we will not immediately reject a gesture if there are fleeting touch point releases while dragging.
130+ Q_PROPERTY(int releaseRejectPeriod READ releaseRejectPeriod WRITE setReleaseRejectPeriod NOTIFY releaseRejectPeriodChanged)
131+
132+public:
133+ // Describes the state of the touch gesture area.
134+ enum Status {
135+ WaitingForTouch,
136+ Undecided,
137+ Recognized,
138+ Rejected
139+ };
140+ TouchGestureArea(QQuickItem* parent = NULL);
141+ ~TouchGestureArea();
142+
143+ bool event(QEvent *e) override;
144+
145+ void setRecognitionTimer(UbuntuGestures::AbstractTimer *timer);
146+
147+ int status() const;
148+ bool dragging() const;
149+ QQmlListProperty<GestureTouchPoint> touchPoints();
150+
151+ int minimumTouchPoints() const;
152+ void setMinimumTouchPoints(int value);
153+
154+ int maximumTouchPoints() const;
155+ void setMaximumTouchPoints(int value);
156+
157+ int recognitionPeriod() const;
158+ void setRecognitionPeriod(int value);
159+
160+ int releaseRejectPeriod() const;
161+ void setReleaseRejectPeriod(int value);
162+
163+Q_SIGNALS:
164+ void statusChanged(int status);
165+
166+ void touchPointsUpdated();
167+ void draggingChanged(bool dragging);
168+ void minimumTouchPointsChanged(bool value);
169+ void maximumTouchPointsChanged(bool value);
170+ void recognitionPeriodChanged(bool value);
171+ void releaseRejectPeriodChanged(bool value);
172+
173+ void pressed(const QList<QObject*>& points);
174+ void released(const QList<QObject*>& points);
175+ void updated(const QList<QObject*>& points);
176+ void clicked();
177+
178+protected:
179+ void itemChange(ItemChange change, const ItemChangeData &value);
180+
181+private Q_SLOTS:
182+ void rejectGesture();
183+
184+private:
185+ void touchEvent(QTouchEvent *event) override;
186+ void touchEvent_waitingForTouch(QTouchEvent *event);
187+ void touchEvent_waitingForMoreTouches(QTouchEvent *event);
188+ void touchEvent_waitingForOwnership(QTouchEvent *event);
189+ void touchEvent_recognized(QTouchEvent *event);
190+ void touchEvent_rejected(QTouchEvent *event);
191+
192+ void unownedTouchEvent(QTouchEvent *unownedTouchEvent);
193+ void unownedTouchEvent_waitingForMoreTouches(QTouchEvent *unownedTouchEvent);
194+ void unownedTouchEvent_waitingForOwnership(QTouchEvent *unownedTouchEvent);
195+ void unownedTouchEvent_recognised(QTouchEvent *unownedTouchEvent);
196+ void unownedTouchEvent_rejected(QTouchEvent *unownedTouchEvent);
197+
198+ void touchOwnershipEvent(TouchOwnershipEvent *event);
199+ void updateTouchPoints(QTouchEvent *event);
200+
201+ GestureTouchPoint* addTouchPoint(const QTouchEvent::TouchPoint *tp);
202+ void clearTouchLists();
203+ void setDragging(bool dragging);
204+ void setInternalStatus(uint status);
205+ void resyncCachedTouchPoints();
206+
207+ static int touchPoint_count(QQmlListProperty<GestureTouchPoint> *list);
208+ static GestureTouchPoint* touchPoint_at(QQmlListProperty<GestureTouchPoint> *list, int index);
209+
210+ uint m_status;
211+ QSet<int> m_candidateTouches;
212+ QSet<int> m_watchedTouches;
213+ UbuntuGestures::AbstractTimer *m_recognitionTimer;
214+
215+ bool m_dragging;
216+ QHash<int, GestureTouchPoint*> m_liveTouchPoints;
217+ QHash<int, GestureTouchPoint*> m_cachedTouchPoints;
218+ QList<QObject*> m_releasedTouchPoints;
219+ QList<QObject*> m_pressedTouchPoints;
220+ QList<QObject*> m_movedTouchPoints;
221+ int m_minimumTouchPoints;
222+ int m_maximumTouchPoints;
223+ int m_recognitionPeriod;
224+ int m_releaseRejectPeriod;
225+};
226+
227+QML_DECLARE_TYPE(GestureTouchPoint)
228+
229+#endif // TOUCHGESTUREAREA_H
plugins/Ubuntu/Gestures/plugin.cpp+3
@@ -21,6 +21,7 @@
21#include "FloatingFlickable.h"
21#include "FloatingFlickable.h"
22#include "PressedOutsideNotifier.h"
22#include "PressedOutsideNotifier.h"
23#include "TouchGate.h"
23#include "TouchGate.h"
24+#include "TouchGestureArea.h"
24
25
25#include <qqml.h>
26#include <qqml.h>
26
27
@@ -38,4 +39,6 @@ void UbuntuGesturesQmlPlugin::registerTypes(const char *uri)
38 qmlRegisterType<FloatingFlickable>(uri, 0, 1, "FloatingFlickable");
39 qmlRegisterType<FloatingFlickable>(uri, 0, 1, "FloatingFlickable");
39 qmlRegisterType<PressedOutsideNotifier>(uri, 0, 1, "PressedOutsideNotifier");
40 qmlRegisterType<PressedOutsideNotifier>(uri, 0, 1, "PressedOutsideNotifier");
40 qmlRegisterType<TouchGate>(uri, 0, 1, "TouchGate");
41 qmlRegisterType<TouchGate>(uri, 0, 1, "TouchGate");
42+ qmlRegisterType<TouchGestureArea>(uri, 0, 1, "TouchGestureArea");
43+ qmlRegisterUncreatableType<GestureTouchPoint>(uri, 0, 1, "GestureTouchPoint", "Cannot create GestureTouchPoints");
41}
44}
plugins/Unity/Indicators/indicatorsmanager.cpp+2−2
@@ -116,7 +116,7 @@ void IndicatorsManager::loadFile(const QFileInfo& file_info)
116 QSettings indicator_settings(file_info.absoluteFilePath(), QSettings::IniFormat, this);
116 QSettings indicator_settings(file_info.absoluteFilePath(), QSettings::IniFormat, this);
117 const QString name = indicator_settings.value(QStringLiteral("Indicator Service/Name")).toString();
117 const QString name = indicator_settings.value(QStringLiteral("Indicator Service/Name")).toString();
118
118
119− if (m_platform.isPC() && name == "indicator-keyboard") {
119+ if (m_platform.isPC() && name == QLatin1String("indicator-keyboard")) {
120 return; // convergence: skip this indicator until it works in Mir
120 return; // convergence: skip this indicator until it works in Mir
121 }
121 }
122
122
@@ -293,7 +293,7 @@ Indicator::Ptr IndicatorsManager::indicator(const QString& indicator_name)
293 // The rest of the indicators respect their default profile (which is "phone", even on desktop PCs)
293 // The rest of the indicators respect their default profile (which is "phone", even on desktop PCs)
294 if ((new_indicator->identifier() == QStringLiteral("indicator-session") && m_platform.isMultiSession())
294 if ((new_indicator->identifier() == QStringLiteral("indicator-session") && m_platform.isMultiSession())
295 || (new_indicator->identifier() == QStringLiteral("indicator-power") && m_platform.isPC())) {
295 || (new_indicator->identifier() == QStringLiteral("indicator-power") && m_platform.isPC())) {
296− new_indicator->setProfile("desktop");
296+ new_indicator->setProfile(QStringLiteral("desktop"));
297 } else {
297 } else {
298 new_indicator->setProfile(m_profile);
298 new_indicator->setProfile(m_profile);
299 }
299 }
plugins/Unity/Indicators/rootstateparser.h+1
@@ -23,6 +23,7 @@
23
23
24class UNITYINDICATORS_EXPORT RootStateParser : public ActionStateParser
24class UNITYINDICATORS_EXPORT RootStateParser : public ActionStateParser
25{
25{
26+Q_OBJECT
26public:
27public:
27 RootStateParser(QObject* parent = nullptr);
28 RootStateParser(QObject* parent = nullptr);
28 virtual QVariant toQVariant(GVariant* state) const override;
29 virtual QVariant toQVariant(GVariant* state) const override;
plugins/Unity/InputInfo/InputInfo.qmltypesnew file+71
@@ -0,0 +1,71 @@
1+import QtQuick.tooling 1.1
2+
3+// This file describes the plugin-supplied types contained in the library.
4+// It is used for QML tooling purposes only.
5+//
6+// This file was auto-generated by:
7+// 'qmlplugindump -notrelocatable Unity.InputInfo 0.1 plugins'
8+
9+Module {
10+ Component {
11+ name: "QDeclarativeInputDeviceModel"
12+ prototype: "QAbstractListModel"
13+ exports: ["Unity.InputInfo/InputDeviceModel 0.1"]
14+ exportMetaObjectRevisions: [0]
15+ Property { name: "deviceFilter"; type: "QInputDevice::InputType" }
16+ Property { name: "count"; type: "int"; isReadonly: true }
17+ Signal {
18+ name: "deviceAdded"
19+ Parameter { name: "devicePath"; type: "string" }
20+ }
21+ Signal {
22+ name: "deviceRemoved"
23+ Parameter { name: "devicePath"; type: "string" }
24+ }
25+ Signal {
26+ name: "deviceFilterChanged"
27+ Parameter { name: "filter"; type: "QInputDevice::InputType" }
28+ }
29+ Method { name: "updateDeviceList" }
30+ Method {
31+ name: "indexOf"
32+ type: "int"
33+ Parameter { name: "devicePath"; type: "string" }
34+ }
35+ Method {
36+ name: "get"
37+ type: "QInputDevice*"
38+ Parameter { name: "index"; type: "int" }
39+ }
40+ }
41+ Component {
42+ name: "QInputDevice"
43+ prototype: "QObject"
44+ exports: ["Unity.InputInfo/InputInfo 0.1"]
45+ exportMetaObjectRevisions: [0]
46+ Enum {
47+ name: "InputType"
48+ values: {
49+ "Unknown": 0,
50+ "Button": 1,
51+ "Mouse": 2,
52+ "TouchPad": 4,
53+ "TouchScreen": 8,
54+ "Keyboard": 16,
55+ "Switch": 32
56+ }
57+ }
58+ Enum {
59+ name: "InputTypeFlags"
60+ values: {
61+ "Unknown": 0,
62+ "Button": 1,
63+ "Mouse": 2,
64+ "TouchPad": 4,
65+ "TouchScreen": 8,
66+ "Keyboard": 16,
67+ "Switch": 32
68+ }
69+ }
70+ }
71+}
plugins/Unity/Launcher/desktopfilehandler.cpp+2−2
@@ -146,9 +146,9 @@ QString DesktopFileHandler::icon() const
146 QString iconString = settings.value(QStringLiteral("Icon")).toString();
146 QString iconString = settings.value(QStringLiteral("Icon")).toString();
147 QString pathString = settings.value(QStringLiteral("Path")).toString();
147 QString pathString = settings.value(QStringLiteral("Path")).toString();
148
148
149− if (QFileInfo(iconString).exists()) {
149+ if (QFileInfo::exists(iconString)) {
150 return QFileInfo(iconString).absoluteFilePath();
150 return QFileInfo(iconString).absoluteFilePath();
151− } else if (QFileInfo(pathString + '/' + iconString).exists()) {
151+ } else if (QFileInfo::exists(pathString + '/' + iconString)) {
152 return pathString + '/' + iconString;
152 return pathString + '/' + iconString;
153 }
153 }
154 return "image://theme/" + iconString;
154 return "image://theme/" + iconString;
plugins/Unity/Launcher/launcheritem.cpp+1
@@ -37,6 +37,7 @@ LauncherItem::LauncherItem(const QString &appId, const QString &name, const QStr
37 m_alerting(false),
37 m_alerting(false),
38 m_quickList(new QuickListModel(this))
38 m_quickList(new QuickListModel(this))
39{
39{
40+ Q_ASSERT(parent != nullptr);
40 QuickListEntry nameAction;
41 QuickListEntry nameAction;
41 nameAction.setActionId(QStringLiteral("launch_item"));
42 nameAction.setActionId(QStringLiteral("launch_item"));
42 nameAction.setText(m_name);
43 nameAction.setText(m_name);
plugins/Unity/Launcher/launcheritem.h+1−1
@@ -32,7 +32,7 @@ class LauncherItem: public LauncherItemInterface
32{
32{
33 Q_OBJECT
33 Q_OBJECT
34public:
34public:
35− LauncherItem(const QString &appId, const QString &name, const QString &icon, QObject *parent = 0);
35+ LauncherItem(const QString &appId, const QString &name, const QString &icon, QObject *parent);
36
36
37 QString appId() const override;
37 QString appId() const override;
38 QString name() const override;
38 QString name() const override;
plugins/Unity/Launcher/launchermodel.cpp+15−5
@@ -103,7 +103,7 @@ void LauncherModel::setAlerting(const QString &appId, bool alerting) {
103 LauncherItem *item = m_list.at(index);
103 LauncherItem *item = m_list.at(index);
104 if (!item->focused()) {
104 if (!item->focused()) {
105 item->setAlerting(alerting);
105 item->setAlerting(alerting);
106− Q_EMIT dataChanged(modelIndex, modelIndex, QVector<int>() << RoleAlerting);
106+ Q_EMIT dataChanged(modelIndex, modelIndex, {RoleAlerting});
107 }
107 }
108 }
108 }
109}
109}
@@ -389,7 +389,8 @@ void LauncherModel::countVisibleChanged(const QString &appId, bool countVisible)
389 if (countVisible && desktopFile.isValid()) {
389 if (countVisible && desktopFile.isValid()) {
390 LauncherItem *item = new LauncherItem(appId,
390 LauncherItem *item = new LauncherItem(appId,
391 desktopFile.displayName(),
391 desktopFile.displayName(),
392− desktopFile.icon());
392+ desktopFile.icon(),
393+ this);
393 item->setCountVisible(true);
394 item->setCountVisible(true);
394 beginInsertRows(QModelIndex(), m_list.count(), m_list.count());
395 beginInsertRows(QModelIndex(), m_list.count(), m_list.count());
395 m_list.append(item);
396 m_list.append(item);
@@ -414,10 +415,19 @@ void LauncherModel::refresh()
414 } else {
415 } else {
415 int idx = m_list.indexOf(item);
416 int idx = m_list.indexOf(item);
416 item->setName(desktopFile.displayName());
417 item->setName(desktopFile.displayName());
417− item->setIcon(desktopFile.icon());
418 item->setPinned(item->pinned()); // update pinned text if needed
418 item->setPinned(item->pinned()); // update pinned text if needed
419 item->setRunning(item->running());
419 item->setRunning(item->running());
420− Q_EMIT dataChanged(index(idx), index(idx), {RoleName, RoleIcon, RoleRunning});
420+ Q_EMIT dataChanged(index(idx), index(idx), {RoleName, RoleRunning});
421+
422+ const QString oldIcon = item->icon();
423+ if (oldIcon == desktopFile.icon()) { // same icon file, perhaps different contents, simulate changing the icon name to force reload
424+ item->setIcon(QString());
425+ Q_EMIT dataChanged(index(idx), index(idx), {RoleIcon});
426+ }
427+
428+ // now set the icon for real
429+ item->setIcon(desktopFile.icon());
430+ Q_EMIT dataChanged(index(idx), index(idx), {RoleIcon});
421 }
431 }
422 }
432 }
423
433
@@ -489,7 +499,7 @@ void LauncherModel::alert(const QString &appId)
489 if (idx >= 0) {
499 if (idx >= 0) {
490 LauncherItem *item = m_list.at(idx);
500 LauncherItem *item = m_list.at(idx);
491 setAlerting(item->appId(), true);
501 setAlerting(item->appId(), true);
492− Q_EMIT dataChanged(index(idx), index(idx), QVector<int>() << RoleAlerting);
502+ Q_EMIT dataChanged(index(idx), index(idx), {RoleAlerting});
493 }
503 }
494}
504}
495
505
plugins/Unity/Launcher/launchermodel.h+1−1
@@ -38,7 +38,7 @@ class LauncherModel: public LauncherModelInterface
38 Q_OBJECT
38 Q_OBJECT
39
39
40public:
40public:
41− LauncherModel(QObject *parent = 0);
41+ LauncherModel(QObject *parent = nullptr);
42 ~LauncherModel();
42 ~LauncherModel();
43
43
44 int rowCount(const QModelIndex &parent = QModelIndex()) const override;
44 int rowCount(const QModelIndex &parent = QModelIndex()) const override;
plugins/Unity/Platform/Platform.qmltypesnew file+20
@@ -0,0 +1,20 @@
1+import QtQuick.tooling 1.1
2+
3+// This file describes the plugin-supplied types contained in the library.
4+// It is used for QML tooling purposes only.
5+//
6+// This file was auto-generated by:
7+// 'qmlplugindump -notrelocatable Unity.Platform 1.0 plugins'
8+
9+Module {
10+ Component {
11+ name: "Platform"
12+ prototype: "QObject"
13+ exports: ["Unity.Platform/Platform 1.0"]
14+ isCreatable: false
15+ isSingleton: true
16+ exportMetaObjectRevisions: [0]
17+ Property { name: "chassis"; type: "string"; isReadonly: true }
18+ Property { name: "isPC"; type: "bool"; isReadonly: true }
19+ }
20+}
plugins/Utils/CMakeLists.txt+2
@@ -23,6 +23,8 @@ set(QMLPLUGIN_SRC
23 windowstatestorage.cpp
23 windowstatestorage.cpp
24 timezoneFormatter.cpp
24 timezoneFormatter.cpp
25 inputeventgenerator.cpp
25 inputeventgenerator.cpp
26+ deviceconfigparser.cpp
27+ globalfunctions.cpp
26 plugin.cpp
28 plugin.cpp
27 )
29 )
28
30
plugins/Utils/deviceconfigparser.cppnew file+150
@@ -0,0 +1,150 @@
1+/*
2+ * Copyright 2016 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU Lesser General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU Lesser General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU Lesser General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#include "deviceconfigparser.h"
18+
19+#include <QSettings>
20+#include <QFileInfo>
21+#include <QDebug>
22+#include <QStandardPaths>
23+
24+DeviceConfigParser::DeviceConfigParser(QObject *parent): QObject(parent)
25+{
26+ QString path;
27+ Q_FOREACH (const QString &standardPath, QStandardPaths::standardLocations(QStandardPaths::GenericConfigLocation)) {
28+ if (QFileInfo(standardPath + "/devices.conf").exists()) {
29+ path = standardPath + "/devices.conf";
30+ break;
31+ }
32+ }
33+
34+ if (path.isEmpty()) {
35+ path = "/etc/ubuntu/devices.conf";
36+ }
37+ qDebug() << "Using" << path << "as device configuration file";
38+ m_config = new QSettings(path, QSettings::IniFormat, this);
39+}
40+
41+QString DeviceConfigParser::name() const
42+{
43+ return m_name;
44+}
45+
46+void DeviceConfigParser::setName(const QString &name)
47+{
48+ if (m_name == name) {
49+ return;
50+ }
51+ m_name = name;
52+ Q_EMIT changed();
53+}
54+
55+Qt::ScreenOrientation DeviceConfigParser::primaryOrientation() const
56+{
57+ return stringToOrientation(readOrientationFromConfig("PrimaryOrientation"), Qt::PrimaryOrientation);
58+}
59+
60+Qt::ScreenOrientations DeviceConfigParser::supportedOrientations() const
61+{
62+ QStringList values = readOrientationsFromConfig("SupportedOrientations");
63+ if (values.isEmpty()) {
64+ return Qt::PortraitOrientation
65+ | Qt::InvertedPortraitOrientation
66+ | Qt::LandscapeOrientation
67+ | Qt::InvertedLandscapeOrientation;
68+ }
69+
70+ Qt::ScreenOrientations ret = Qt::PrimaryOrientation;
71+ Q_FOREACH(const QString &orientationString, values) {
72+ ret |= stringToOrientation(orientationString, Qt::PrimaryOrientation);
73+ }
74+ return ret;
75+}
76+
77+Qt::ScreenOrientation DeviceConfigParser::landscapeOrientation() const
78+{
79+ return stringToOrientation(readOrientationFromConfig("LandscapeOrientation"), Qt::LandscapeOrientation);
80+}
81+
82+Qt::ScreenOrientation DeviceConfigParser::invertedLandscapeOrientation() const
83+{
84+ return stringToOrientation(readOrientationFromConfig("InvertedLandscapeOrientation"), Qt::InvertedLandscapeOrientation);
85+}
86+
87+Qt::ScreenOrientation DeviceConfigParser::portraitOrientation() const
88+{
89+ return stringToOrientation(readOrientationFromConfig("PortraitOrientation"), Qt::PortraitOrientation);
90+}
91+
92+Qt::ScreenOrientation DeviceConfigParser::invertedPortraitOrientation() const
93+{
94+ return stringToOrientation(readOrientationFromConfig("InvertedPortraitOrientation"), Qt::InvertedPortraitOrientation);
95+}
96+
97+QString DeviceConfigParser::category() const
98+{
99+ QStringList supportedValues = {"phone", "tablet", "desktop"};
100+ m_config->beginGroup(m_name);
101+ QString value = m_config->value("Category", "phone").toString();
102+ if (!supportedValues.contains(value)) {
103+ qWarning().nospace().noquote() << "Unknown option \"" << value << "\" in " << m_config->fileName()
104+ << ". Supported options are: " << supportedValues.join(", ") << ".";
105+ return "phone";
106+ }
107+ m_config->endGroup();
108+ return value;
109+}
110+
111+QStringList DeviceConfigParser::readOrientationsFromConfig(const QString &key) const
112+{
113+ m_config->beginGroup(m_name);
114+
115+ QStringList ret;
116+ if (m_config->contains(key)) {
117+ ret = m_config->value(key).toStringList();
118+ }
119+
120+ m_config->endGroup();
121+ return ret;
122+}
123+
124+QString DeviceConfigParser::readOrientationFromConfig(const QString &key) const
125+{
126+ QStringList ret = readOrientationsFromConfig(key);
127+ return ret.count() > 0 ? ret.first() : QString();
128+}
129+
130+Qt::ScreenOrientation DeviceConfigParser::stringToOrientation(const QString &orientationString, Qt::ScreenOrientation defaultValue) const
131+{
132+ if (orientationString == "Landscape") {
133+ return Qt::LandscapeOrientation;
134+ }
135+ if (orientationString == "InvertedLandscape") {
136+ return Qt::InvertedLandscapeOrientation;
137+ }
138+ if (orientationString == "Portrait") {
139+ return Qt::PortraitOrientation;
140+ }
141+ if (orientationString == "InvertedPortrait") {
142+ return Qt::InvertedPortraitOrientation;
143+ }
144+ if (!orientationString.isEmpty()) {
145+ // Some option we don't know. Give some hint on what went wrong.
146+ qWarning().nospace().noquote() << "Unknown option \"" << orientationString << "\" in " << m_config->fileName()
147+ << ". Supported options are: Landscape, InvertedLandscape, Portrait and InvertedPortrait.";
148+ }
149+ return defaultValue;
150+}
plugins/Utils/deviceconfigparser.hnew file+62
@@ -0,0 +1,62 @@
1+/*
2+ * Copyright 2016 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU Lesser General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU Lesser General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU Lesser General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#ifndef DEVICECONFIGPARSER_H
18+#define DEVICECONFIGPARSER_H
19+
20+#include <QObject>
21+#include <QSettings>
22+
23+class DeviceConfigParser: public QObject
24+{
25+ Q_OBJECT
26+ Q_PROPERTY(QString name READ name WRITE setName NOTIFY changed)
27+
28+ Q_PROPERTY(Qt::ScreenOrientation primaryOrientation READ primaryOrientation NOTIFY changed)
29+ Q_PROPERTY(Qt::ScreenOrientations supportedOrientations READ supportedOrientations NOTIFY changed)
30+ Q_PROPERTY(Qt::ScreenOrientation landscapeOrientation READ landscapeOrientation NOTIFY changed)
31+ Q_PROPERTY(Qt::ScreenOrientation invertedLandscapeOrientation READ invertedLandscapeOrientation NOTIFY changed)
32+ Q_PROPERTY(Qt::ScreenOrientation portraitOrientation READ portraitOrientation NOTIFY changed)
33+ Q_PROPERTY(Qt::ScreenOrientation invertedPortraitOrientation READ invertedPortraitOrientation NOTIFY changed)
34+ Q_PROPERTY(QString category READ category NOTIFY changed)
35+
36+public:
37+ DeviceConfigParser(QObject *parent = nullptr);
38+
39+ QString name() const;
40+ void setName(const QString &name);
41+
42+ Qt::ScreenOrientation primaryOrientation() const;
43+ Qt::ScreenOrientations supportedOrientations() const;
44+ Qt::ScreenOrientation landscapeOrientation() const;
45+ Qt::ScreenOrientation invertedLandscapeOrientation() const;
46+ Qt::ScreenOrientation portraitOrientation() const;
47+ Qt::ScreenOrientation invertedPortraitOrientation() const;
48+ QString category() const;
49+
50+Q_SIGNALS:
51+ void changed();
52+
53+private:
54+ QString m_name;
55+ QSettings *m_config;
56+
57+ QStringList readOrientationsFromConfig(const QString &key) const;
58+ QString readOrientationFromConfig(const QString &key) const;
59+ Qt::ScreenOrientation stringToOrientation(const QString &orientationString, Qt::ScreenOrientation defaultValue) const;
60+};
61+
62+#endif
plugins/Utils/globalfunctions.cppnew file+56
@@ -0,0 +1,56 @@
1+/*
2+ * Copyright 2015 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU Lesser General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU Lesser General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU Lesser General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+*/
16+
17+#include "globalfunctions.h"
18+
19+#pragma GCC diagnostic push
20+#pragma GCC diagnostic ignored "-pedantic"
21+#include <private/qquickitem_p.h>
22+#pragma GCC diagnostic pop
23+#include <QQmlEngine>
24+
25+GlobalFunctions::GlobalFunctions(QObject *parent)
26+ : QObject(parent)
27+{
28+}
29+
30+QQuickItem *GlobalFunctions::itemAt(QQuickItem* parent, int x, int y, QJSValue matcher)
31+{
32+ if (!parent) return nullptr;
33+ QList<QQuickItem *> children = QQuickItemPrivate::get(parent)->paintOrderChildItems();
34+
35+ for (int i = children.count() - 1; i >= 0; --i) {
36+ QQuickItem *child = children.at(i);
37+
38+ // Map coordinates to the child element's coordinate space
39+ QPointF point = parent->mapToItem(child, QPointF(x, y));
40+ if (child->isVisible() && point.x() >= 0
41+ && child->width() >= point.x()
42+ && point.y() >= 0
43+ && child->height() >= point.y()) {
44+ if (!matcher.isCallable()) return child;
45+
46+ QQmlEngine* engine = qmlEngine(child);
47+ if (!engine) return child;
48+
49+ QJSValue newObj = engine->newQObject(child);
50+ if (matcher.call(QJSValueList() << newObj).toBool()) {
51+ return child;
52+ }
53+ }
54+ }
55+ return nullptr;
56+}
plugins/Utils/globalfunctions.hnew file+42
@@ -0,0 +1,42 @@
1+/*
2+ * Copyright 2015 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU Lesser General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU Lesser General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU Lesser General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+*/
16+
17+#ifndef GLOBALFUNCTIONS_H
18+#define GLOBALFUNCTIONS_H
19+
20+#include <QObject>
21+#include <QJSValue>
22+class QQuickItem;
23+
24+/**
25+ * @brief The GlobalFunctions class
26+ *
27+ * This singleton class exposes utility functions to QML
28+ *
29+ */
30+class GlobalFunctions : public QObject
31+{
32+ Q_OBJECT
33+public:
34+ explicit GlobalFunctions(QObject *parent = 0);
35+
36+ static Q_INVOKABLE QQuickItem* itemAt(QQuickItem* parent,
37+ int x,
38+ int y,
39+ QJSValue matcher);
40+};
41+
42+#endif // GLOBALFUNCTIONS_H
plugins/Utils/plugin.cpp+11
@@ -37,6 +37,8 @@
37#include "timezoneFormatter.h"
37#include "timezoneFormatter.h"
38#include "applicationsfiltermodel.h"
38#include "applicationsfiltermodel.h"
39#include "inputeventgenerator.h"
39#include "inputeventgenerator.h"
40+#include "deviceconfigparser.h"
41+#include "globalfunctions.h"
40
42
41static QObject *createWindowStateStorage(QQmlEngine *engine, QJSEngine *scriptEngine)
43static QObject *createWindowStateStorage(QQmlEngine *engine, QJSEngine *scriptEngine)
42{
44{
@@ -52,6 +54,13 @@ static QObject *createConstants(QQmlEngine *engine, QJSEngine *scriptEngine)
52 return new Constants();
54 return new Constants();
53}
55}
54
56
57+static QObject *createGlobalFunctions(QQmlEngine *engine, QJSEngine *scriptEngine)
58+{
59+ Q_UNUSED(engine)
60+ Q_UNUSED(scriptEngine)
61+ return new GlobalFunctions();
62+}
63+
55void UtilsPlugin::registerTypes(const char *uri)
64void UtilsPlugin::registerTypes(const char *uri)
56{
65{
57 Q_ASSERT(uri == QLatin1String("Utils"));
66 Q_ASSERT(uri == QLatin1String("Utils"));
@@ -70,6 +79,8 @@ void UtilsPlugin::registerTypes(const char *uri)
70 qmlRegisterType<ActiveFocusLogger>(uri, 0, 1, "ActiveFocusLogger");
79 qmlRegisterType<ActiveFocusLogger>(uri, 0, 1, "ActiveFocusLogger");
71 qmlRegisterType<ApplicationsFilterModel>(uri, 0, 1, "ApplicationsFilterModel");
80 qmlRegisterType<ApplicationsFilterModel>(uri, 0, 1, "ApplicationsFilterModel");
72 qmlRegisterType<InputEventGenerator>(uri, 0, 1, "InputEventGenerator");
81 qmlRegisterType<InputEventGenerator>(uri, 0, 1, "InputEventGenerator");
82+ qmlRegisterType<DeviceConfigParser>(uri, 0, 1, "DeviceConfigParser");
83+ qmlRegisterSingletonType<GlobalFunctions>(uri, 0, 1, "Functions", createGlobalFunctions);
73}
84}
74
85
75void UtilsPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
86void UtilsPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
plugins/Utils/timezoneFormatter.cpp+10
@@ -33,3 +33,13 @@ QString TimezoneFormatter::currentTimeInTimezone(const QVariant &tzId) const
33 }
33 }
34 return QString();
34 return QString();
35}
35}
36+
37+QString TimezoneFormatter::currentTimeInTimezoneWithAbbrev(const QVariant &tzId) const
38+{
39+ QTimeZone tz(tzId.toByteArray());
40+ if (tz.isValid()) {
41+ const QDateTime now = QDateTime::currentDateTime().toTimeZone(tz);
42+ return QStringLiteral("%1 %2").arg(now.time().toString(QStringLiteral("h:mm"))).arg(tz.abbreviation(now));
43+ }
44+ return QString();
45+}
plugins/Utils/timezoneFormatter.h+1
@@ -27,6 +27,7 @@ public:
27 ~TimezoneFormatter() = default;
27 ~TimezoneFormatter() = default;
28
28
29 Q_INVOKABLE QString currentTimeInTimezone(const QVariant &tzId) const;
29 Q_INVOKABLE QString currentTimeInTimezone(const QVariant &tzId) const;
30+ Q_INVOKABLE QString currentTimeInTimezoneWithAbbrev(const QVariant &tzId) const;
30};
31};
31
32
32#endif
33#endif
plugins/Utils/windowstatestorage.cpp+36−4
@@ -23,9 +23,14 @@
23#include <QSqlError>
23#include <QSqlError>
24#include <QSqlResult>
24#include <QSqlResult>
25#include <QRect>
25#include <QRect>
26+#include <unity/shell/application/ApplicationInfoInterface.h>
26
27
27QMutex WindowStateStorage::s_mutex;
28QMutex WindowStateStorage::s_mutex;
28
29
30+inline QString sanitiseString(QString string) {
31+ return string.remove("\"").remove("'").remove("\\");
32+}
33+
29WindowStateStorage::WindowStateStorage(QObject *parent):
34WindowStateStorage::WindowStateStorage(QObject *parent):
30 QObject(parent)
35 QObject(parent)
31{
36{
@@ -50,7 +55,7 @@ WindowStateStorage::~WindowStateStorage()
50void WindowStateStorage::saveState(const QString &windowId, WindowStateStorage::WindowState state)
55void WindowStateStorage::saveState(const QString &windowId, WindowStateStorage::WindowState state)
51{
56{
52 const QString queryString = QStringLiteral("INSERT OR REPLACE INTO state (windowId, state) values ('%1', '%2');")
57 const QString queryString = QStringLiteral("INSERT OR REPLACE INTO state (windowId, state) values ('%1', '%2');")
53− .arg(windowId)
58+ .arg(sanitiseString(windowId))
54 .arg((int)state);
59 .arg((int)state);
55
60
56 saveValue(queryString);
61 saveValue(queryString);
@@ -59,7 +64,7 @@ void WindowStateStorage::saveState(const QString &windowId, WindowStateStorage::
59WindowStateStorage::WindowState WindowStateStorage::getState(const QString &windowId, WindowStateStorage::WindowState defaultValue) const
64WindowStateStorage::WindowState WindowStateStorage::getState(const QString &windowId, WindowStateStorage::WindowState defaultValue) const
60{
65{
61 const QString queryString = QStringLiteral("SELECT * FROM state WHERE windowId = '%1';")
66 const QString queryString = QStringLiteral("SELECT * FROM state WHERE windowId = '%1';")
62− .arg(windowId);
67+ .arg(sanitiseString(windowId));
63
68
64 QSqlQuery query = getValue(queryString);
69 QSqlQuery query = getValue(queryString);
65
70
@@ -72,7 +77,7 @@ WindowStateStorage::WindowState WindowStateStorage::getState(const QString &wind
72void WindowStateStorage::saveGeometry(const QString &windowId, const QRect rect)
77void WindowStateStorage::saveGeometry(const QString &windowId, const QRect rect)
73{
78{
74 const QString queryString = QStringLiteral("INSERT OR REPLACE INTO geometry (windowId, x, y, width, height) values ('%1', '%2', '%3', '%4', '%5');")
79 const QString queryString = QStringLiteral("INSERT OR REPLACE INTO geometry (windowId, x, y, width, height) values ('%1', '%2', '%3', '%4', '%5');")
75− .arg(windowId)
80+ .arg(sanitiseString(windowId))
76 .arg(rect.x())
81 .arg(rect.x())
77 .arg(rect.y())
82 .arg(rect.y())
78 .arg(rect.width())
83 .arg(rect.width())
@@ -81,6 +86,28 @@ void WindowStateStorage::saveGeometry(const QString &windowId, const QRect rect)
81 saveValue(queryString);
86 saveValue(queryString);
82}
87}
83
88
89+void WindowStateStorage::saveStage(const QString &appId, int stage)
90+{
91+ const QString queryString = QStringLiteral("INSERT OR REPLACE INTO stage (appId, stage) values ('%1', '%2');")
92+ .arg(sanitiseString(appId))
93+ .arg((int)stage);
94+
95+ saveValue(queryString);
96+}
97+
98+int WindowStateStorage::getStage(const QString &appId) const
99+{
100+ const QString queryString = QStringLiteral("SELECT * FROM stage WHERE appId = '%1';")
101+ .arg(sanitiseString(appId));
102+
103+ QSqlQuery query = getValue(queryString);
104+
105+ if (!query.first()) {
106+ return unity::shell::application::ApplicationInfoInterface::MainStage;
107+ }
108+ return query.value("stage").toInt();
109+}
110+
84void WindowStateStorage::executeAsyncQuery(const QString &queryString)
111void WindowStateStorage::executeAsyncQuery(const QString &queryString)
85{
112{
86 QMutexLocker l(&s_mutex);
113 QMutexLocker l(&s_mutex);
@@ -97,7 +124,7 @@ void WindowStateStorage::executeAsyncQuery(const QString &queryString)
97QRect WindowStateStorage::getGeometry(const QString &windowId, const QRect defaultValue) const
124QRect WindowStateStorage::getGeometry(const QString &windowId, const QRect defaultValue) const
98{
125{
99 QString queryString = QStringLiteral("SELECT * FROM geometry WHERE windowId = '%1';")
126 QString queryString = QStringLiteral("SELECT * FROM geometry WHERE windowId = '%1';")
100− .arg(windowId);
127+ .arg(sanitiseString(windowId));
101
128
102 QSqlQuery query = getValue(queryString);
129 QSqlQuery query = getValue(queryString);
103
130
@@ -124,6 +151,11 @@ void WindowStateStorage::initdb()
124 QSqlQuery query;
151 QSqlQuery query;
125 query.exec(QStringLiteral("CREATE TABLE state(windowId TEXT UNIQUE, state INTEGER);"));
152 query.exec(QStringLiteral("CREATE TABLE state(windowId TEXT UNIQUE, state INTEGER);"));
126 }
153 }
154+
155+ if (!m_db.tables().contains(QStringLiteral("stage"))) {
156+ QSqlQuery query;
157+ query.exec(QStringLiteral("CREATE TABLE stage(appId TEXT UNIQUE, stage INTEGER);"));
158+ }
127}
159}
128
160
129void WindowStateStorage::saveValue(const QString &queryString)
161void WindowStateStorage::saveValue(const QString &queryString)
plugins/Utils/windowstatestorage.h+3
@@ -38,6 +38,9 @@ public:
38 Q_INVOKABLE void saveGeometry(const QString &windowId, const QRect rect);
38 Q_INVOKABLE void saveGeometry(const QString &windowId, const QRect rect);
39 Q_INVOKABLE QRect getGeometry(const QString &windowId, const QRect defaultValue) const;
39 Q_INVOKABLE QRect getGeometry(const QString &windowId, const QRect defaultValue) const;
40
40
41+ Q_INVOKABLE void saveStage(const QString &appId, int stage);
42+ Q_INVOKABLE int getStage(const QString &appId) const;
43+
41private:
44private:
42 void initdb();
45 void initdb();
43
46
plugins/Wizard/CMakeLists.txt+7−1
@@ -1,10 +1,16 @@
1+include_directories(${GLIB_INCLUDE_DIRS} ${GEONAMES_INCLUDE_DIRS})
2+
1add_library(Wizard-qml MODULE
3add_library(Wizard-qml MODULE
2 plugin.cpp
4 plugin.cpp
3 PageList.cpp
5 PageList.cpp
4 System.cpp
6 System.cpp
7+ LocalePlugin.cpp
8+ timezonemodel.cpp
9+ Status.cpp
5)
10)
6
11
7−qt5_use_modules(Wizard-qml DBus Qml)
12+qt5_use_modules(Wizard-qml DBus Qml Concurrent)
13+target_link_libraries(Wizard-qml ${GLIB_LDFLAGS} ${GEONAMES_LDFLAGS})
8add_unity8_plugin(Wizard 0.1 Wizard TARGETS Wizard-qml)
14add_unity8_plugin(Wizard 0.1 Wizard TARGETS Wizard-qml)
9
15
10set(POLKIT_LIB_DIR "${CMAKE_INSTALL_LOCALSTATEDIR}/lib/polkit-1")
16set(POLKIT_LIB_DIR "${CMAKE_INSTALL_LOCALSTATEDIR}/lib/polkit-1")
plugins/Wizard/LocalePlugin.cppnew file+291
@@ -0,0 +1,291 @@
1+/*
2+ * Copyright (C) 2015 Canonical Ltd.
3+ *
4+ * This program is free software: you can redistribute it and/or modify it
5+ * under the terms of the GNU General Public License version 3, as published
6+ * by the Free Software Foundation.
7+ *
8+ * This program is distributed in the hope that it will be useful, but
9+ * WITHOUT ANY WARRANTY; without even the implied warranties of
10+ * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
11+ * PURPOSE. See the GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License along
14+ * with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#include <QLocale>
18+#include <QStringList>
19+
20+#include <libintl.h>
21+
22+#include "LocalePlugin.h"
23+
24+class LocalePrivate {
25+public:
26+ LocalePrivate() {
27+ m_mccCodes = QHash<int, QString>
28+ ({{202,"gr"},
29+ {204,"nl"},
30+ {206,"be"},
31+ {208,"fr"},
32+ {212,"mc"},
33+ {213,"ad"},
34+ {214,"es"},
35+ {216,"hu"},
36+ {218,"ba"},
37+ {219,"hr"},
38+ {220,"rs"},
39+ {222,"it"},
40+ {226,"ro"},
41+ {228,"ch"},
42+ {230,"cz"},
43+ {231,"sk"},
44+ {232,"at"},
45+ {234,"gb"},
46+ {235,"gb"},
47+ {238,"dk"},
48+ {240,"se"},
49+ {242,"no"},
50+ {244,"fi"},
51+ {246,"lt"},
52+ {247,"lv"},
53+ {248,"ee"},
54+ {250,"ru"},
55+ {255,"ua"},
56+ {257,"by"},
57+ {259,"md"},
58+ {260,"pl"},
59+ {262,"de"},
60+ {266,"gi"},
61+ {268,"pt"},
62+ {270,"lu"},
63+ {272,"ie"},
64+ {274,"is"},
65+ {276,"al"},
66+ {278,"mt"},
67+ {280,"cy"},
68+ {282,"ge"},
69+ {283,"am"},
70+ {284,"bg"},
71+ {286,"tr"},
72+ {288,"fo"},
73+ {289,"ge"},
74+ {290,"gl"},
75+ {292,"sm"},
76+ {293,"si"},
77+ {294,"mk"},
78+ {295,"li"},
79+ {297,"me"},
80+ {302,"ca"},
81+ {308,"pm"},
82+ {310,"gu"},
83+ {310,"us"},
84+ {311,"gu"},
85+ {311,"us"},
86+ {312,"us"},
87+ {316,"us"},
88+ {330,"pr"},
89+ {334,"mx"},
90+ {338,"jm"},
91+ {340,"fg"},
92+ {340,"gp"},
93+ {340,"mq"},
94+ {342,"bb"},
95+ {344,"ag"},
96+ {346,"ky"},
97+ {348,"vg"},
98+ {350,"bm"},
99+ {352,"gd"},
100+ {354,"ms"},
101+ {356,"kn"},
102+ {358,"lc"},
103+ {360,"vc"},
104+ {362,"an"},
105+ {362,"cw"},
106+ {363,"aw"},
107+ {364,"bs"},
108+ {365,"ai"},
109+ {366,"dm"},
110+ {368,"cu"},
111+ {370,"do"},
112+ {372,"ht"},
113+ {374,"tt"},
114+ {376,"tc"},
115+ {376,"vi"},
116+ {400,"az"},
117+ {401,"kz"},
118+ {402,"bt"},
119+ {404,"in"},
120+ {405,"in"},
121+ {410,"pk"},
122+ {412,"af"},
123+ {413,"lk"},
124+ {414,"mm"},
125+ {415,"lb"},
126+ {416,"jo"},
127+ {417,"sy"},
128+ {418,"iq"},
129+ {419,"kw"},
130+ {420,"sa"},
131+ {421,"ye"},
132+ {422,"om"},
133+ {424,"ae"},
134+ {425,"il"},
135+ {425,"ps"},
136+ {426,"bh"},
137+ {427,"qa"},
138+ {428,"mn"},
139+ {429,"np"},
140+ {430,"ae"},
141+ {431,"ae"},
142+ {432,"ir"},
143+ {434,"uz"},
144+ {436,"tk"},
145+ {437,"kg"},
146+ {438,"tm"},
147+ {440,"jp"},
148+ {441,"jp"},
149+ {450,"kr"},
150+ {452,"vn"},
151+ {454,"hk"},
152+ {455,"mo"},
153+ {456,"kh"},
154+ {457,"la"},
155+ {460,"cn"},
156+ {466,"tw"},
157+ {467,"kp"},
158+ {470,"bd"},
159+ {472,"mv"},
160+ {502,"my"},
161+ {505,"au"},
162+ {510,"id"},
163+ {514,"tp"},
164+ {515,"ph"},
165+ {520,"th"},
166+ {525,"sg"},
167+ {528,"bn"},
168+ {530,"nz"},
169+ {537,"pg"},
170+ {539,"to"},
171+ {540,"sb"},
172+ {541,"vu"},
173+ {542,"fj"},
174+ {544,"as"},
175+ {545,"ki"},
176+ {546,"nc"},
177+ {547,"pf"},
178+ {548,"ck"},
179+ {549,"ws"},
180+ {550,"fm"},
181+ {552,"pw"},
182+ {553,"tv"},
183+ {555,"nu"},
184+ {602,"eg"},
185+ {603,"dz"},
186+ {604,"ma"},
187+ {605,"tn"},
188+ {606,"ly"},
189+ {607,"gm"},
190+ {608,"sn"},
191+ {609,"mr"},
192+ {610,"ml"},
193+ {611,"gn"},
194+ {612,"ci"},
195+ {613,"bf"},
196+ {614,"ne"},
197+ {615,"tg"},
198+ {616,"bj"},
199+ {617,"mu"},
200+ {618,"lr"},
201+ {619,"sl"},
202+ {620,"gh"},
203+ {621,"ng"},
204+ {622,"td"},
205+ {623,"cf"},
206+ {624,"cm"},
207+ {625,"cv"},
208+ {626,"st"},
209+ {627,"gq"},
210+ {628,"ga"},
211+ {629,"cg"},
212+ {630,"cd"},
213+ {631,"ao"},
214+ {632,"gw"},
215+ {633,"sc"},
216+ {634,"sd"},
217+ {635,"rw"},
218+ {636,"et"},
219+ {637,"so"},
220+ {638,"dj"},
221+ {639,"ke"},
222+ {640,"tz"},
223+ {641,"ug"},
224+ {642,"bi"},
225+ {643,"mz"},
226+ {645,"zm"},
227+ {646,"mg"},
228+ {647,"re"},
229+ {648,"zw"},
230+ {649,"na"},
231+ {650,"mw"},
232+ {651,"ls"},
233+ {652,"bw"},
234+ {653,"sz"},
235+ {654,"km"},
236+ {655,"za"},
237+ {657,"er"},
238+ {659,"ss"},
239+ {702,"bz"},
240+ {704,"gt"},
241+ {706,"sv"},
242+ {708,"hn"},
243+ {710,"ni"},
244+ {712,"cr"},
245+ {714,"pa"},
246+ {716,"pe"},
247+ {722,"ar"},
248+ {724,"br"},
249+ {730,"cl"},
250+ {732,"co"},
251+ {734,"ve"},
252+ {736,"bo"},
253+ {738,"gy"},
254+ {740,"ec"},
255+ {744,"py"},
256+ {746,"sr"},
257+ {748,"uy"},
258+ {750,"fk"}}
259+ );
260+ }
261+
262+ QString mccToCountryCode(int mcc) const {
263+ return m_mccCodes.value(mcc, "us").toUpper();
264+ }
265+
266+private:
267+ // MCC = Mobile Country Code, see https://en.wikipedia.org/wiki/Mobile_country_code
268+ QHash<int,QString> m_mccCodes;
269+};
270+
271+Q_GLOBAL_STATIC(LocalePrivate, d)
272+
273+LocaleAttached::LocaleAttached(QObject* parent)
274+ : QObject(parent)
275+{
276+}
277+
278+QString LocaleAttached::mccToCountryCode(int mcc) const
279+{
280+ return d->mccToCountryCode(mcc);
281+}
282+
283+LocalePlugin::LocalePlugin(QObject* parent)
284+ : QObject(parent)
285+{
286+}
287+
288+LocaleAttached* LocalePlugin::qmlAttachedProperties(QObject* parent)
289+{
290+ return new LocaleAttached(parent);
291+}
plugins/Wizard/LocalePlugin.hnew file+58
@@ -0,0 +1,58 @@
1+/*
2+ * Copyright (C) 2015 Canonical Ltd.
3+ *
4+ * This program is free software: you can redistribute it and/or modify it
5+ * under the terms of the GNU General Public License version 3, as published
6+ * by the Free Software Foundation.
7+ *
8+ * This program is distributed in the hope that it will be useful, but
9+ * WITHOUT ANY WARRANTY; without even the implied warranties of
10+ * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
11+ * PURPOSE. See the GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License along
14+ * with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#ifndef LOCALE_PLUGIN_H
18+#define LOCALE_PLUGIN_H
19+
20+#include <QObject>
21+#include <QString>
22+#include <QJsonObject>
23+#include <QtQml>
24+
25+class LocaleAttached: public QObject
26+{
27+ Q_OBJECT
28+protected:
29+ explicit LocaleAttached(QObject *parent = 0);
30+
31+public:
32+ Q_INVOKABLE QString mccToCountryCode(int mcc) const;
33+
34+ friend class LocalePlugin;
35+};
36+
37+/**
38+ * A simplified wrapper around QLocale.
39+ *
40+ * The wrapper is implemented as an attached property, which makes it possible
41+ * to use it as if its methods were static:
42+ *
43+ * @code
44+ * var langs = LocalePlugin.languages();
45+ * @endcode
46+ */
47+class LocalePlugin: public QObject
48+{
49+ Q_OBJECT
50+public:
51+ explicit LocalePlugin(QObject *parent = 0);
52+
53+ static LocaleAttached* qmlAttachedProperties(QObject *parent);
54+};
55+
56+QML_DECLARE_TYPEINFO(LocalePlugin, QML_HAS_ATTACHED_PROPERTIES)
57+
58+#endif // LOCALE_PLUGIN_H
plugins/Wizard/PageList.cpp+4−4
@@ -40,20 +40,20 @@ PageList::PageList(QObject *parent)
40 m_index(-1),
40 m_index(-1),
41 m_pages()
41 m_pages()
42{
42{
43− QString qmlSuffix = QStringLiteral(".qml");
43+ const QString qmlSuffix = QStringLiteral(".qml");
44− QString disabledSuffix = QStringLiteral(".disabled");
44+ const QString disabledSuffix = QStringLiteral(".disabled");
45 QSet<QString> disabledPages;
45 QSet<QString> disabledPages;
46 QStringList dataDirs;
46 QStringList dataDirs;
47
47
48 if (!isRunningInstalled() && getenv("WIZARD_TESTING") == nullptr) {
48 if (!isRunningInstalled() && getenv("WIZARD_TESTING") == nullptr) {
49− dataDirs = QStringList() << qmlDirectory();
49+ dataDirs << qmlDirectory();
50 } else {
50 } else {
51 dataDirs = shellDataDirs();
51 dataDirs = shellDataDirs();
52 }
52 }
53
53
54 Q_FOREACH(const QString &dataDir, dataDirs) {
54 Q_FOREACH(const QString &dataDir, dataDirs) {
55 QDir dir(dataDir + "/Wizard/Pages");
55 QDir dir(dataDir + "/Wizard/Pages");
56− QStringList entries = dir.entryList(QStringList(QStringLiteral("[0-9]*")), QDir::Files | QDir::Readable);
56+ const QStringList entries = dir.entryList(QStringList(QStringLiteral("[0-9]*")), QDir::Files | QDir::Readable);
57 Q_FOREACH(const QString &entry, entries) {
57 Q_FOREACH(const QString &entry, entries) {
58 if (!m_pages.contains(entry) && entry.endsWith(qmlSuffix))
58 if (!m_pages.contains(entry) && entry.endsWith(qmlSuffix))
59 m_pages.insert(entry, dir.absoluteFilePath(entry));
59 m_pages.insert(entry, dir.absoluteFilePath(entry));
plugins/Wizard/Status.cppnew file+143
@@ -0,0 +1,143 @@
1+/*
2+ * Copyright (C) 2015 Canonical Ltd.
3+ *
4+ * This program is free software: you can redistribute it and/or modify it
5+ * under the terms of the GNU General Public License version 3, as published
6+ * by the Free Software Foundation.
7+ *
8+ * This program is distributed in the hope that it will be useful, but
9+ * WITHOUT ANY WARRANTY; without even the implied warranties of
10+ * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
11+ * PURPOSE. See the GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License along
14+ * with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#include <QDebug>
18+#include <QDBusConnection>
19+
20+#include "Status.h"
21+
22+Status::Status()
23+{
24+ initNM();
25+ initUPower();
26+}
27+
28+void Status::initNM()
29+{
30+ m_nmIface = new QDBusInterface("org.freedesktop.NetworkManager", "/org/freedesktop/NetworkManager", "org.freedesktop.NetworkManager",
31+ QDBusConnection::systemBus(), this);
32+
33+ QDBusConnection::systemBus().connect("org.freedesktop.NetworkManager", "/org/freedesktop/NetworkManager", "org.freedesktop.NetworkManager", "PropertiesChanged",
34+ this, SLOT(onNMPropertiesChanged(QVariantMap)));
35+}
36+
37+void Status::onNMPropertiesChanged(const QVariantMap &changedProps)
38+{
39+ if (changedProps.contains("State") || changedProps.contains("Connectivity")) {
40+ Q_EMIT onlineChanged();
41+ Q_EMIT networkIconChanged();
42+ }
43+
44+ if (changedProps.contains("PrimaryConnection") || changedProps.contains("SpecificObject") || changedProps.contains("Strength")) {
45+ Q_EMIT networkIconChanged();
46+ }
47+}
48+
49+bool Status::online() const
50+{
51+ if (!m_nmIface->isValid())
52+ return false;
53+
54+ return m_nmIface->property("State").toUInt() == 70;
55+}
56+
57+QString Status::networkIcon()
58+{
59+ QString iconName = QStringLiteral("nm-no-connection");
60+
61+ if (!online()) {
62+ return iconName;
63+ }
64+
65+ const QString primaryConn = m_nmIface->property("PrimaryConnection").value<QDBusObjectPath>().path();
66+ const QString primaryConnType = m_nmIface->property("PrimaryConnectionType").toString();
67+
68+ if (primaryConn.isEmpty()) {
69+ qWarning() << "Empty primary connection";
70+ return iconName;
71+ }
72+
73+ if (primaryConnType == "802-11-wireless") {
74+ QDBusInterface activeConn("org.freedesktop.NetworkManager", primaryConn, "org.freedesktop.NetworkManager.Connection.Active", QDBusConnection::systemBus());
75+
76+ if (activeConn.isValid()) {
77+ const QString apPath = activeConn.property("SpecificObject").value<QDBusObjectPath>().path();
78+
79+ if (apPath.isEmpty()) {
80+ qWarning() << "No AP path";
81+ return iconName;
82+ }
83+
84+ QDBusConnection::systemBus().connect("org.freedesktop.NetworkManager", primaryConn, "org.freedesktop.NetworkManager.Connection.Active", "PropertiesChanged",
85+ this, SLOT(onNMPropertiesChanged(QVariantMap)));
86+
87+ QDBusInterface ap("org.freedesktop.NetworkManager", apPath, "org.freedesktop.NetworkManager.AccessPoint", QDBusConnection::systemBus());
88+
89+ if (!ap.isValid()) {
90+ qWarning() << "Invalid AP";
91+ return iconName;
92+ }
93+
94+ QDBusConnection::systemBus().connect("org.freedesktop.NetworkManager", apPath, "org.freedesktop.NetworkManager.AccessPoint", "PropertiesChanged",
95+ this, SLOT(onNMPropertiesChanged(QVariantMap)));
96+
97+ const uint strength = ap.property("Strength").toUInt();
98+ const uint flags = ap.property("Flags").toUInt();
99+
100+ if (strength == 0) {
101+ iconName = "nm-signal-00";
102+ } else if (strength <= 25) {
103+ iconName = "nm-signal-25";
104+ } else if (strength <= 50) {
105+ iconName = "nm-signal-50";
106+ } else if (strength <= 75) {
107+ iconName = "nm-signal-75";
108+ } else if (strength <= 100) {
109+ iconName = "nm-signal-100";
110+ }
111+
112+ if (flags >= 1) {
113+ iconName += "-secure";
114+ }
115+ }
116+ }
117+
118+ return iconName;
119+}
120+
121+void Status::initUPower()
122+{
123+ m_upowerIface = new QDBusInterface("org.freedesktop.UPower", "/org/freedesktop/UPower/devices/DisplayDevice", "org.freedesktop.UPower.Device",
124+ QDBusConnection::systemBus(), this);
125+ QDBusConnection::systemBus().connect("org.freedesktop.UPower", "/org/freedesktop/UPower/devices/DisplayDevice", "org.freedesktop.DBus.Properties",
126+ "PropertiesChanged", this, SLOT(onUPowerPropertiesChanged(QString,QVariantMap,QStringList)));
127+}
128+
129+void Status::onUPowerPropertiesChanged(const QString &iface, const QVariantMap &changedProps, const QStringList &invalidatedProps)
130+{
131+ Q_UNUSED(iface)
132+ Q_UNUSED(invalidatedProps)
133+
134+ if (changedProps.contains("IconName")) {
135+ Q_EMIT batteryIconChanged();
136+ }
137+}
138+
139+QString Status::batteryIcon() const
140+{
141+ const QString iconName = m_upowerIface->property("IconName").toString();
142+ return iconName;
143+}
plugins/Wizard/Status.hnew file+60
@@ -0,0 +1,60 @@
1+/*
2+ * Copyright (C) 2015 Canonical Ltd.
3+ *
4+ * This program is free software: you can redistribute it and/or modify it
5+ * under the terms of the GNU General Public License version 3, as published
6+ * by the Free Software Foundation.
7+ *
8+ * This program is distributed in the hope that it will be useful, but
9+ * WITHOUT ANY WARRANTY; without even the implied warranties of
10+ * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
11+ * PURPOSE. See the GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License along
14+ * with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#ifndef WIZARD_STATUS_H
18+#define WIZARD_STATUS_H
19+
20+#include <QObject>
21+#include <QString>
22+#include <QDBusInterface>
23+
24+class Status: public QObject
25+{
26+ Q_OBJECT
27+ Q_PROPERTY(bool online READ online NOTIFY onlineChanged)
28+ Q_PROPERTY(QString networkIcon READ networkIcon NOTIFY networkIconChanged)
29+ Q_PROPERTY(QString batteryIcon READ batteryIcon NOTIFY batteryIconChanged)
30+public:
31+ Status();
32+ ~Status() = default;
33+
34+ bool online() const;
35+ QString networkIcon();
36+
37+ QString batteryIcon() const;
38+
39+Q_SIGNALS:
40+ void networkIconChanged();
41+ void onlineChanged();
42+ void batteryIconChanged();
43+
44+private Q_SLOTS:
45+ void onNMPropertiesChanged(const QVariantMap &changedProps);
46+ void onUPowerPropertiesChanged(const QString &iface, const QVariantMap &changedProps, const QStringList &invalidatedProps);
47+
48+private:
49+ Q_DISABLE_COPY(Status)
50+
51+ // network status
52+ void initNM();
53+ QDBusInterface * m_nmIface = nullptr;
54+
55+ // battery status
56+ void initUPower();
57+ QDBusInterface * m_upowerIface = nullptr;
58+};
59+
60+#endif
plugins/Wizard/System.cpp+5−4
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2014 Canonical Ltd.
2+ * Copyright (C) 2014-2015 Canonical Ltd.
3 *
3 *
4 * This program is free software: you can redistribute it and/or modify it
4 * This program is free software: you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License version 3, as published
5 * under the terms of the GNU General Public License version 3, as published
@@ -25,10 +25,10 @@
25#include <QLocale>
25#include <QLocale>
26#include <QMap>
26#include <QMap>
27#include <QProcess>
27#include <QProcess>
28+#include <QDebug>
28
29
29System::System()
30System::System()
30− : QObject(),
31+ : QObject()
31− m_fsWatcher()
32{
32{
33 // Register the argument needed for UpdateActivationEnvironment below
33 // Register the argument needed for UpdateActivationEnvironment below
34 qDBusRegisterMetaType<QMap<QString,QString>>();
34 qDBusRegisterMetaType<QMap<QString,QString>>();
@@ -88,7 +88,7 @@ void System::setSessionVariable(const QString &variable, const QString &value)
88 QDBusConnection::sessionBus().asyncCall(msg);
88 QDBusConnection::sessionBus().asyncCall(msg);
89}
89}
90
90
91−void System::updateSessionLanguage(const QString &locale)
91+void System::updateSessionLocale(const QString &locale)
92{
92{
93 const QString language = locale.split(QStringLiteral("."))[0];
93 const QString language = locale.split(QStringLiteral("."))[0];
94
94
@@ -106,5 +106,6 @@ void System::updateSessionLanguage(const QString &locale)
106 initctl stop smart-scopes-proxy; \
106 initctl stop smart-scopes-proxy; \
107 initctl emit --no-wait indicator-services-start; \
107 initctl emit --no-wait indicator-services-start; \
108 initctl restart --no-wait maliit-server; \
108 initctl restart --no-wait maliit-server; \
109+ initctl restart --no-wait indicator-messages; \
109 initctl restart --no-wait unity8-dash\""));
110 initctl restart --no-wait unity8-dash\""));
110}
111}
plugins/Wizard/System.h+3−2
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2014 Canonical Ltd.
2+ * Copyright (C) 2014-2015 Canonical Ltd.
3 *
3 *
4 * This program is free software: you can redistribute it and/or modify it
4 * This program is free software: you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License version 3, as published
5 * under the terms of the GNU General Public License version 3, as published
@@ -28,12 +28,13 @@ class System : public QObject
28
28
29public:
29public:
30 System();
30 System();
31+ ~System() = default;
31
32
32 bool wizardEnabled() const;
33 bool wizardEnabled() const;
33 void setWizardEnabled(bool enabled);
34 void setWizardEnabled(bool enabled);
34
35
35public Q_SLOTS:
36public Q_SLOTS:
36− void updateSessionLanguage(const QString &locale);
37+ void updateSessionLocale(const QString &locale);
37
38
38Q_SIGNALS:
39Q_SIGNALS:
39 void wizardEnabledChanged();
40 void wizardEnabledChanged();
plugins/Wizard/plugin.cpp+7−8
@@ -17,19 +17,18 @@
17#include "plugin.h"
17#include "plugin.h"
18#include "PageList.h"
18#include "PageList.h"
19#include "System.h"
19#include "System.h"
20+#include "timezonemodel.h"
21+#include "LocalePlugin.h"
22+#include "Status.h"
20
23
21#include <QtQml/qqml.h>
24#include <QtQml/qqml.h>
22
25
23−static QObject *system_provider(QQmlEngine *engine, QJSEngine *scriptEngine)
24−{
25− Q_UNUSED(engine)
26− Q_UNUSED(scriptEngine)
27− return new System();
28−}
29−
30void WizardPlugin::registerTypes(const char *uri)
26void WizardPlugin::registerTypes(const char *uri)
31{
27{
32 Q_ASSERT(uri == QLatin1String("Wizard"));
28 Q_ASSERT(uri == QLatin1String("Wizard"));
33 qmlRegisterType<PageList>(uri, 0, 1, "PageList");
29 qmlRegisterType<PageList>(uri, 0, 1, "PageList");
34− qmlRegisterSingletonType<System>(uri, 0, 1, "System", system_provider);
30+ qmlRegisterSingletonType<System>(uri, 0, 1, "System", [](QQmlEngine*, QJSEngine*) -> QObject* { return new System; });
31+ qmlRegisterSingletonType<Status>(uri, 0, 1, "Status", [](QQmlEngine*, QJSEngine*) -> QObject* { return new Status; });
32+ qmlRegisterType<TimeZoneLocationModel>(uri, 0, 1, "TimeZoneModel");
33+ qmlRegisterType<LocalePlugin>(uri, 0, 1, "LocalePlugin");
35}
34}
plugins/Wizard/plugin.h+1−2
@@ -17,13 +17,12 @@
17#ifndef WIZARD_PLUGIN_H
17#ifndef WIZARD_PLUGIN_H
18#define WIZARD_PLUGIN_H
18#define WIZARD_PLUGIN_H
19
19
20−#include <QtQml/QQmlEngine>
21#include <QtQml/QQmlExtensionPlugin>
20#include <QtQml/QQmlExtensionPlugin>
22
21
23class WizardPlugin : public QQmlExtensionPlugin
22class WizardPlugin : public QQmlExtensionPlugin
24{
23{
25 Q_OBJECT
24 Q_OBJECT
26− Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
25+ Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid)
27
26
28public:
27public:
29 void registerTypes(const char *uri) override;
28 void registerTypes(const char *uri) override;
plugins/Wizard/timezonemodel.cppnew file+239
@@ -0,0 +1,239 @@
1+/*
2+ * Copyright (C) 2016 Canonical Ltd.
3+ *
4+ * This program is free software: you can redistribute it and/or modify it
5+ * under the terms of the GNU General Public License version 3, as published
6+ * by the Free Software Foundation.
7+ *
8+ * This program is distributed in the hope that it will be useful, but
9+ * WITHOUT ANY WARRANTY; without even the implied warranties of
10+ * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
11+ * PURPOSE. See the GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License along
14+ * with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#include <QDebug>
18+
19+#include <glib.h>
20+#include <glib-object.h>
21+
22+#include "LocalePlugin.h"
23+#include "timezonemodel.h"
24+
25+TimeZoneLocationModel::TimeZoneLocationModel(QObject *parent):
26+ QAbstractListModel(parent),
27+ m_listUpdating(false),
28+ m_cancellable(nullptr)
29+{
30+ m_roleNames[Qt::DisplayRole] = "displayName";
31+ m_roleNames[TimeZoneRole] = "timeZone";
32+ m_roleNames[CityRole] = "city";
33+ m_roleNames[CountryRole] = "country";
34+ m_roleNames[OffsetRole] = "offset";
35+ m_roleNames[LatitudeRole] = "latitude";
36+ m_roleNames[LongitudeRole] = "longitude";
37+}
38+
39+int TimeZoneLocationModel::rowCount(const QModelIndex &parent) const
40+{
41+ if (parent.isValid()) {
42+ return 0;
43+ } else if (m_filter.isEmpty()) {
44+ return m_countryLocations.count();
45+ } else {
46+ return m_locations.count();
47+ }
48+}
49+
50+QVariant TimeZoneLocationModel::data(const QModelIndex &index, int role) const
51+{
52+ GeonamesCity *city;
53+ if (m_filter.isEmpty()) {
54+ city = m_countryLocations.value(index.row());
55+ } else {
56+ city = m_locations.value(index.row());
57+ }
58+ if (!city)
59+ return QVariant();
60+
61+ switch (role) {
62+ case Qt::DisplayRole:
63+ return QStringLiteral("%1, %2, %3").arg(geonames_city_get_name(city))
64+ .arg(geonames_city_get_state(city))
65+ .arg(geonames_city_get_country(city));
66+ case SimpleRole:
67+ return QStringLiteral("%1, %2").arg(geonames_city_get_name(city))
68+ .arg(geonames_city_get_country(city));
69+ case TimeZoneRole:
70+ return geonames_city_get_timezone(city);
71+ case CountryRole:
72+ return geonames_city_get_country(city);
73+ case CityRole:
74+ return geonames_city_get_name(city);
75+ case OffsetRole: {
76+ QTimeZone tmp(geonames_city_get_timezone(city));
77+ return static_cast<double>(tmp.standardTimeOffset(QDateTime::currentDateTime())) / 3600;
78+ }
79+ case LatitudeRole:
80+ return geonames_city_get_latitude(city);
81+ case LongitudeRole:
82+ return geonames_city_get_longitude(city);
83+ default:
84+ qWarning() << Q_FUNC_INFO << "Unknown role";
85+ return QVariant();
86+ }
87+}
88+
89+QHash<int, QByteArray> TimeZoneLocationModel::roleNames() const
90+{
91+ return m_roleNames;
92+}
93+
94+void TimeZoneLocationModel::setModel(const QList<GeonamesCity *> &locations)
95+{
96+ beginResetModel();
97+
98+ Q_FOREACH(GeonamesCity *city, m_locations) {
99+ geonames_city_free(city);
100+ }
101+
102+ m_locations = locations;
103+ endResetModel();
104+}
105+
106+void TimeZoneLocationModel::filterFinished(GObject *source_object,
107+ GAsyncResult *res,
108+ gpointer user_data)
109+{
110+ Q_UNUSED(source_object);
111+
112+ g_autofree gint *cities = nullptr;
113+ guint cities_len = 0;
114+ g_autoptr(GError) error = nullptr;
115+
116+ cities = geonames_query_cities_finish(res, &cities_len, &error);
117+ if (error) {
118+ if (!g_error_matches(error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
119+ TimeZoneLocationModel *model = static_cast<TimeZoneLocationModel *>(user_data);
120+ g_clear_object(&model->m_cancellable);
121+ model->setListUpdating(false);
122+ qWarning() << "Could not filter timezones:" << error->message;
123+ }
124+ return;
125+ }
126+
127+ QList<GeonamesCity *> locations;
128+
129+ for (guint i = 0; i < cities_len; ++i) {
130+ GeonamesCity *city = geonames_get_city(cities[i]);
131+ if (city) {
132+ locations.append(city);
133+ }
134+ }
135+
136+ TimeZoneLocationModel *model = static_cast<TimeZoneLocationModel *>(user_data);
137+
138+ g_clear_object(&model->m_cancellable);
139+
140+ model->setModel(locations);
141+ model->setListUpdating(false);
142+}
143+
144+bool TimeZoneLocationModel::listUpdating() const
145+{
146+ return m_listUpdating;
147+}
148+
149+void TimeZoneLocationModel::setListUpdating(bool listUpdating)
150+{
151+ if (m_listUpdating != listUpdating) {
152+ m_listUpdating = listUpdating;
153+ Q_EMIT listUpdatingChanged();
154+ }
155+}
156+
157+QString TimeZoneLocationModel::filter() const
158+{
159+ return m_filter;
160+}
161+
162+void TimeZoneLocationModel::setFilter(const QString &filter)
163+{
164+ if (filter != m_filter) {
165+ m_filter = filter;
166+ Q_EMIT filterChanged();
167+ }
168+
169+ setListUpdating(true);
170+
171+ if (m_cancellable) {
172+ g_cancellable_cancel(m_cancellable);
173+ g_clear_object(&m_cancellable);
174+ }
175+
176+ setModel(QList<GeonamesCity *>());
177+
178+ if (filter.isEmpty()) {
179+ setListUpdating(false);
180+ return;
181+ }
182+
183+ m_cancellable = g_cancellable_new();
184+ geonames_query_cities(filter.toUtf8().data(),
185+ GEONAMES_QUERY_DEFAULT,
186+ m_cancellable,
187+ filterFinished,
188+ this);
189+}
190+
191+QString TimeZoneLocationModel::country() const
192+{
193+ return m_country;
194+}
195+
196+static bool citycmp(GeonamesCity *a, GeonamesCity *b)
197+{
198+ return geonames_city_get_population(b) < geonames_city_get_population(a);
199+}
200+
201+void TimeZoneLocationModel::setCountry(const QString &country)
202+{
203+ if (m_country == country)
204+ return;
205+
206+ m_country = country;
207+
208+ Q_FOREACH(GeonamesCity *city, m_countryLocations) {
209+ geonames_city_free(city);
210+ }
211+
212+ gint num_cities = geonames_get_n_cities();
213+ for (gint i = 0; i < num_cities; i++) {
214+ GeonamesCity *city = geonames_get_city(i);
215+ if (city && m_country == geonames_city_get_country_code(city)) {
216+ m_countryLocations.append(city);
217+ }
218+ }
219+
220+ std::sort(m_countryLocations.begin(), m_countryLocations.end(), citycmp);
221+
222+ Q_EMIT countryChanged(country);
223+}
224+
225+TimeZoneLocationModel::~TimeZoneLocationModel()
226+{
227+ if (m_cancellable) {
228+ g_cancellable_cancel(m_cancellable);
229+ g_clear_object(&m_cancellable);
230+ }
231+
232+ Q_FOREACH(GeonamesCity *city, m_countryLocations) {
233+ geonames_city_free(city);
234+ }
235+
236+ Q_FOREACH(GeonamesCity *city, m_locations) {
237+ geonames_city_free(city);
238+ }
239+}
plugins/Wizard/timezonemodel.hnew file+80
@@ -0,0 +1,80 @@
1+/*
2+ * Copyright (C) 2016 Canonical Ltd.
3+ *
4+ * This program is free software: you can redistribute it and/or modify it
5+ * under the terms of the GNU General Public License version 3, as published
6+ * by the Free Software Foundation.
7+ *
8+ * This program is distributed in the hope that it will be useful, but
9+ * WITHOUT ANY WARRANTY; without even the implied warranties of
10+ * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
11+ * PURPOSE. See the GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License along
14+ * with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#ifndef TIMEZONEMODEL_H
18+#define TIMEZONEMODEL_H
19+
20+#include <geonames.h>
21+#include <glib.h>
22+#include <QAbstractListModel>
23+
24+class TimeZoneLocationModel: public QAbstractListModel
25+{
26+ Q_OBJECT
27+ Q_PROPERTY(bool listUpdating READ listUpdating NOTIFY listUpdatingChanged)
28+ Q_PROPERTY(QString filter READ filter WRITE setFilter NOTIFY filterChanged)
29+ Q_PROPERTY(QString country READ country WRITE setCountry NOTIFY countryChanged)
30+ Q_ENUMS(Roles)
31+
32+public:
33+ explicit TimeZoneLocationModel(QObject *parent = nullptr);
34+ ~TimeZoneLocationModel();
35+
36+ enum Roles {
37+ TimeZoneRole = Qt::UserRole + 1,
38+ CityRole,
39+ CountryRole,
40+ SimpleRole,
41+ OffsetRole,
42+ LatitudeRole,
43+ LongitudeRole
44+ };
45+
46+ int rowCount(const QModelIndex &parent = QModelIndex()) const override;
47+ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
48+ QHash<int, QByteArray> roleNames() const override;
49+
50+ bool listUpdating() const;
51+
52+ QString filter() const;
53+ void setFilter(const QString &filter);
54+
55+ QString country() const;
56+ void setCountry(const QString &country);
57+
58+Q_SIGNALS:
59+ void listUpdatingChanged();
60+ void filterChanged();
61+ void countryChanged(const QString &country);
62+
63+private:
64+ void setModel(const QList<GeonamesCity *> &locations);
65+ void setListUpdating(bool listUpdating);
66+ static void filterFinished(GObject *source_object,
67+ GAsyncResult *res,
68+ gpointer user_data);
69+
70+
71+ bool m_listUpdating;
72+ QString m_filter;
73+ QString m_country;
74+ GCancellable *m_cancellable;
75+ QHash<int, QByteArray> m_roleNames;
76+ QList<GeonamesCity *> m_locations;
77+ QList<GeonamesCity *> m_countryLocations;
78+};
79+
80+#endif
po/aa.po+11−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2016-02-12 10:18+0000\n"
11"PO-Revision-Date: 2016-02-12 10:18+0000\n"
12"Last-Translator: Charif AYFARAH <ayfarah@ymail.com>\n"
12"Last-Translator: Charif AYFARAH <ayfarah@ymail.com>\n"
13"Language-Team: Afar <aa@li.org>\n"
13"Language-Team: Afar <aa@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:36+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:57+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171msgid "Close all"
171msgid "Close all"
172msgstr "Inkih alif"
172msgstr "Inkih alif"
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177msgstr ""
177msgstr ""
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr "Goranto"
182msgstr "Goranto"
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr "Massosu"
187msgstr "Massosu"
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr ""
191msgstr ""
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr ""
195msgstr ""
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr ""
199msgstr ""
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr ""
203msgstr ""
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr "Goranto"
208msgstr "Goranto"
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416msgid "Call back"
416msgid "Call back"
417msgstr ""
417msgstr ""
418
418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427#: qml/Tutorial/TutorialBottom.qml:28
419#: qml/Tutorial/TutorialBottom.qml:28
428msgid "Open special menus"
420msgid "Open special menus"
429msgstr ""
421msgstr ""
po/am.po+20−22
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-11-19 19:27+0000\n"
11"PO-Revision-Date: 2015-11-19 19:27+0000\n"
12"Last-Translator: samson <Unknown>\n"
12"Last-Translator: samson <Unknown>\n"
13"Language-Team: Amharic <am@li.org>\n"
13"Language-Team: Amharic <am@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:36+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:57+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -173,38 +173,38 @@ msgstr "አሁን እንደገና መገናኛ!"
173msgid "Close all"
173msgid "Close all"
174msgstr "ሁሉንም መዝጊያ"
174msgstr "ሁሉንም መዝጊያ"
175
175
176−#: qml/Dash/DashPageHeader.qml:266
176+#: qml/Dash/DashPageHeader.qml:270
177msgctxt "Button: Open the Ubuntu Store"
177msgctxt "Button: Open the Ubuntu Store"
178msgid "Store"
178msgid "Store"
179msgstr "ማስቀመጫ"
179msgstr "ማስቀመጫ"
180
180
181−#: qml/Dash/DashPageHeader.qml:273
181+#: qml/Dash/DashPageHeader.qml:277
182msgctxt "Button: Start a search in the current dash scope"
182msgctxt "Button: Start a search in the current dash scope"
183msgid "Search"
183msgid "Search"
184msgstr "መፈለጊያ"
184msgstr "መፈለጊያ"
185
185
186−#: qml/Dash/DashPageHeader.qml:283
186+#: qml/Dash/DashPageHeader.qml:287
187msgctxt "Button: Show the current dash scope settings"
187msgctxt "Button: Show the current dash scope settings"
188msgid "Settings"
188msgid "Settings"
189msgstr "ማሰናጃዎች"
189msgstr "ማሰናጃዎች"
190
190
191−#: qml/Dash/DashPageHeader.qml:290
191+#: qml/Dash/DashPageHeader.qml:294
192msgid "Remove from Favorites"
192msgid "Remove from Favorites"
193msgstr "ከምወዳቸው ማስወገጃ"
193msgstr "ከምወዳቸው ማስወገጃ"
194
194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196msgid "Add to Favorites"
196msgid "Add to Favorites"
197msgstr "ወደምወዳቸው መጨመሪያ"
197msgstr "ወደምወዳቸው መጨመሪያ"
198
198
199−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
199+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
200msgid "See less"
200msgid "See less"
201msgstr "አነስተኛ መመልከቻ"
201msgstr "አነስተኛ መመልከቻ"
202
202
203−#: qml/Dash/GenericScopeView.qml:587
203+#: qml/Dash/GenericScopeView.qml:565
204msgid "See all"
204msgid "See all"
205msgstr "ሁሉንም መመልከቻ"
205msgstr "ሁሉንም መመልከቻ"
206
206
207−#: qml/Dash/GenericScopeView.qml:649
207+#: qml/Dash/GenericScopeView.qml:627
208msgctxt "Label: Hint for dash search line edit"
208msgctxt "Label: Hint for dash search line edit"
209msgid "Search"
209msgid "Search"
210msgstr "መፈለጊያ"
210msgstr "መፈለጊያ"
@@ -423,14 +423,6 @@ msgctxt "Button: Call back on phone"
423msgid "Call back"
423msgid "Call back"
424msgstr "መልሶ መደወያ"
424msgstr "መልሶ መደወያ"
425
425
426−#: qml/Panel/Indicators/ModemInfoItem.qml:105
427−msgid "Unlock SIM"
428−msgstr "ሲም መክፈቻ"
429−
430−#: qml/Panel/Indicators/RoamingIndication.qml:27
431−msgid "Roaming"
432−msgstr "ማዘዋወሪያ"
433−
434#: qml/Tutorial/TutorialBottom.qml:28
426#: qml/Tutorial/TutorialBottom.qml:28
435msgid "Open special menus"
427msgid "Open special menus"
436msgstr "የተለዩ ዝርዝሮች መክፈቻ"
428msgstr "የተለዩ ዝርዝሮች መክፈቻ"
@@ -495,7 +487,7 @@ msgstr "ሰላም"
495
487
496#: qml/Wizard/Pages/10-welcome.qml:44
488#: qml/Wizard/Pages/10-welcome.qml:44
497msgid "Welcome to your Ubuntu device."
489msgid "Welcome to your Ubuntu device."
498−msgstr ""
490+msgstr "እንኳን ድህና መጡ ወደ ኡቡንቱ"
499
491
500#: qml/Wizard/Pages/10-welcome.qml:52
492#: qml/Wizard/Pages/10-welcome.qml:52
501msgid "Let’s get started."
493msgid "Let’s get started."
@@ -526,7 +518,7 @@ msgstr "ደህንነት መቆለፊያ"
526
518
527#: qml/Wizard/Pages/30-passwd-type.qml:79
519#: qml/Wizard/Pages/30-passwd-type.qml:79
528msgid "Please select how you’d like to unlock your device."
520msgid "Please select how you’d like to unlock your device."
529−msgstr ""
521+msgstr "እባክዎን የ እርስዎን አካል እንዴት እንደሚከፈት ይምረጡ"
530
522
531#: qml/Wizard/Pages/30-passwd-type.qml:102
523#: qml/Wizard/Pages/30-passwd-type.qml:102
532msgctxt "Label: Type of security method"
524msgctxt "Label: Type of security method"
@@ -630,7 +622,7 @@ msgstr "ጥሩ ሰርተዋል!"
630
622
631#: qml/Wizard/Pages/80-finished.qml:46
623#: qml/Wizard/Pages/80-finished.qml:46
632msgid "Your device is now ready to use."
624msgid "Your device is now ready to use."
633−msgstr ""
625+msgstr "የ እርስዎ አካል አሁን ዝግጁ ነው"
634
626
635#: qml/Wizard/Pages/80-finished.qml:53
627#: qml/Wizard/Pages/80-finished.qml:53
636msgid "Finish"
628msgid "Finish"
@@ -751,12 +743,18 @@ msgstr "%1 〉"
751#~ msgid "Settings"
743#~ msgid "Settings"
752#~ msgstr "ማሰናጃ"
744#~ msgstr "ማሰናጃ"
753
745
746+#~ msgid "Unlock SIM"
747+#~ msgstr "ሲም መክፈቻ"
748+
754#~ msgid ""
749#~ msgid ""
755#~ "You have now mastered the edge gestures and can start using the "
750#~ "You have now mastered the edge gestures and can start using the "
756#~ "phone<br><br>Tap on the screen to start"
751#~ "phone<br><br>Tap on the screen to start"
757#~ msgstr ""
752#~ msgstr ""
758#~ "አሁን የ ጠርዝ እንቅስቃሴን አውቀዋል እና መጀመር ይችላሉ ስልኩን መጠቀም <br><br>መመልከቻውን መታ ያድርጉ ለመጀመር"
753#~ "አሁን የ ጠርዝ እንቅስቃሴን አውቀዋል እና መጀመር ይችላሉ ስልኩን መጠቀም <br><br>መመልከቻውን መታ ያድርጉ ለመጀመር"
759
754
755+#~ msgid "Roaming"
756+#~ msgstr "ማዘዋወሪያ"
757+
760#~ msgid "Restart"
758#~ msgid "Restart"
761#~ msgstr "እንደገና ማስጀመሪያ"
759#~ msgstr "እንደገና ማስጀመሪያ"
762
760
po/ar.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-07-29 09:41+0000\n"
11"PO-Revision-Date: 2015-07-29 09:41+0000\n"
12"Last-Translator: Ibrahim Saed <ibraheem5000@gmail.com>\n"
12"Last-Translator: Ibrahim Saed <ibraheem5000@gmail.com>\n"
13"Language-Team: Arabic <ar@li.org>\n"
13"Language-Team: Arabic <ar@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n % 100 >= "
17"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n % 100 >= "
18"3 && n % 100 <= 10 ? 3 : n % 100 >= 11 && n % 100 <= 99 ? 4 : 5;\n"
18"3 && n % 100 <= 10 ? 3 : n % 100 >= 11 && n % 100 <= 99 ? 4 : 5;\n"
19−"X-Launchpad-Export-Date: 2016-02-16 05:36+0000\n"
19+"X-Launchpad-Export-Date: 2016-03-10 05:57+0000\n"
20−"X-Generator: Launchpad (build 17925)\n"
20+"X-Generator: Launchpad (build 17936)\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -180,38 +180,38 @@ msgstr ""
180msgid "Close all"
180msgid "Close all"
181msgstr ""
181msgstr ""
182
182
183−#: qml/Dash/DashPageHeader.qml:266
183+#: qml/Dash/DashPageHeader.qml:270
184msgctxt "Button: Open the Ubuntu Store"
184msgctxt "Button: Open the Ubuntu Store"
185msgid "Store"
185msgid "Store"
186msgstr "المتجر"
186msgstr "المتجر"
187
187
188−#: qml/Dash/DashPageHeader.qml:273
188+#: qml/Dash/DashPageHeader.qml:277
189msgctxt "Button: Start a search in the current dash scope"
189msgctxt "Button: Start a search in the current dash scope"
190msgid "Search"
190msgid "Search"
191msgstr "بحث"
191msgstr "بحث"
192
192
193−#: qml/Dash/DashPageHeader.qml:283
193+#: qml/Dash/DashPageHeader.qml:287
194msgctxt "Button: Show the current dash scope settings"
194msgctxt "Button: Show the current dash scope settings"
195msgid "Settings"
195msgid "Settings"
196msgstr "الإعدادات"
196msgstr "الإعدادات"
197
197
198−#: qml/Dash/DashPageHeader.qml:290
198+#: qml/Dash/DashPageHeader.qml:294
199msgid "Remove from Favorites"
199msgid "Remove from Favorites"
200msgstr "حذف من المفضلات"
200msgstr "حذف من المفضلات"
201
201
202−#: qml/Dash/DashPageHeader.qml:290
202+#: qml/Dash/DashPageHeader.qml:294
203msgid "Add to Favorites"
203msgid "Add to Favorites"
204msgstr "إضافة إلى المفضلات"
204msgstr "إضافة إلى المفضلات"
205
205
206−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
206+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
207msgid "See less"
207msgid "See less"
208msgstr "شاهد أقل"
208msgstr "شاهد أقل"
209
209
210−#: qml/Dash/GenericScopeView.qml:587
210+#: qml/Dash/GenericScopeView.qml:565
211msgid "See all"
211msgid "See all"
212msgstr "عرض الكل"
212msgstr "عرض الكل"
213
213
214−#: qml/Dash/GenericScopeView.qml:649
214+#: qml/Dash/GenericScopeView.qml:627
215msgctxt "Label: Hint for dash search line edit"
215msgctxt "Label: Hint for dash search line edit"
216msgid "Search"
216msgid "Search"
217msgstr "بحث"
217msgstr "بحث"
@@ -441,14 +441,6 @@ msgctxt "Button: Call back on phone"
441msgid "Call back"
441msgid "Call back"
442msgstr ""
442msgstr ""
443
443
444−#: qml/Panel/Indicators/ModemInfoItem.qml:105
445−msgid "Unlock SIM"
446−msgstr "فتح قفل بطاقة SIM"
447−
448−#: qml/Panel/Indicators/RoamingIndication.qml:27
449−msgid "Roaming"
450−msgstr "التجوال"
451−
452#: qml/Tutorial/TutorialBottom.qml:28
444#: qml/Tutorial/TutorialBottom.qml:28
453msgid "Open special menus"
445msgid "Open special menus"
454msgstr "فتح قوائم خاصة"
446msgstr "فتح قوائم خاصة"
@@ -786,6 +778,9 @@ msgstr ""
786#~ msgid "Please re-enter"
778#~ msgid "Please re-enter"
787#~ msgstr "برجاء إعادة إدخالها"
779#~ msgstr "برجاء إعادة إدخالها"
788
780
781+#~ msgid "Roaming"
782+#~ msgstr "التجوال"
783+
789#~ msgid "Welcome to your Ubuntu phone."
784#~ msgid "Welcome to your Ubuntu phone."
790#~ msgstr "مرحبا بك في أوبونتو للهواتف."
785#~ msgstr "مرحبا بك في أوبونتو للهواتف."
791
786
@@ -794,3 +789,6 @@ msgstr ""
794
789
795#~ msgid "Your phone is now ready to use."
790#~ msgid "Your phone is now ready to use."
796#~ msgstr "هاتفك جاهز الآن للاستخدام."
791#~ msgstr "هاتفك جاهز الآن للاستخدام."
792+
793+#~ msgid "Unlock SIM"
794+#~ msgstr "فتح قفل بطاقة SIM"
po/ast.po+28−28
@@ -7,16 +7,16 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11−"PO-Revision-Date: 2015-10-06 12:07+0000\n"
11+"PO-Revision-Date: 2016-02-19 19:39+0000\n"
12"Last-Translator: Xuacu Saturio <xuacusk8@gmail.com>\n"
12"Last-Translator: Xuacu Saturio <xuacusk8@gmail.com>\n"
13"Language-Team: Asturian <ast@li.org>\n"
13"Language-Team: Asturian <ast@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: 2016-02-16 05:36+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:57+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -152,60 +152,62 @@ msgstr "Aceutar"
152
152
153#: qml/Components/ModeSwitchWarningDialog.qml:32
153#: qml/Components/ModeSwitchWarningDialog.qml:32
154msgid "Apps may have unsaved data:"
154msgid "Apps may have unsaved data:"
155−msgstr ""
155+msgstr "Apps que pueden tener datos sin guardar:"
156
156
157#: qml/Components/ModeSwitchWarningDialog.qml:57
157#: qml/Components/ModeSwitchWarningDialog.qml:57
158msgid "Re-dock, save your work and close these apps to continue."
158msgid "Re-dock, save your work and close these apps to continue."
159msgstr ""
159msgstr ""
160+"Pa siguir coneuta nuevamente'l preséu, guarda'l trabayu y zarra estes "
161+"aplicaciones."
160
162
161#: qml/Components/ModeSwitchWarningDialog.qml:63
163#: qml/Components/ModeSwitchWarningDialog.qml:63
162msgid "Or force close now (unsaved data will be lost)."
164msgid "Or force close now (unsaved data will be lost)."
163−msgstr ""
165+msgstr "O fuerza salir agora (perderás tolos datos sin guardar)."
164
166
165#: qml/Components/ModeSwitchWarningDialog.qml:75
167#: qml/Components/ModeSwitchWarningDialog.qml:75
166msgid "OK, I will reconnect"
168msgid "OK, I will reconnect"
167−msgstr ""
169+msgstr "D'alcuerdu, reconeutaré"
168
170
169#: qml/Components/ModeSwitchWarningDialog.qml:76
171#: qml/Components/ModeSwitchWarningDialog.qml:76
170msgid "Reconnect now!"
172msgid "Reconnect now!"
171−msgstr ""
173+msgstr "Reconeutar agora."
172
174
173#: qml/Components/ModeSwitchWarningDialog.qml:88
175#: qml/Components/ModeSwitchWarningDialog.qml:88
174msgid "Close all"
176msgid "Close all"
175−msgstr ""
177+msgstr "Zarrar too"
176
178
177−#: qml/Dash/DashPageHeader.qml:266
179+#: qml/Dash/DashPageHeader.qml:270
178msgctxt "Button: Open the Ubuntu Store"
180msgctxt "Button: Open the Ubuntu Store"
179msgid "Store"
181msgid "Store"
180msgstr "Tienda"
182msgstr "Tienda"
181
183
182−#: qml/Dash/DashPageHeader.qml:273
184+#: qml/Dash/DashPageHeader.qml:277
183msgctxt "Button: Start a search in the current dash scope"
185msgctxt "Button: Start a search in the current dash scope"
184msgid "Search"
186msgid "Search"
185msgstr "Guetar"
187msgstr "Guetar"
186
188
187−#: qml/Dash/DashPageHeader.qml:283
189+#: qml/Dash/DashPageHeader.qml:287
188msgctxt "Button: Show the current dash scope settings"
190msgctxt "Button: Show the current dash scope settings"
189msgid "Settings"
191msgid "Settings"
190msgstr "Axustes"
192msgstr "Axustes"
191
193
192−#: qml/Dash/DashPageHeader.qml:290
194+#: qml/Dash/DashPageHeader.qml:294
193msgid "Remove from Favorites"
195msgid "Remove from Favorites"
194msgstr "Desaniciar de favoritos"
196msgstr "Desaniciar de favoritos"
195
197
196−#: qml/Dash/DashPageHeader.qml:290
198+#: qml/Dash/DashPageHeader.qml:294
197msgid "Add to Favorites"
199msgid "Add to Favorites"
198msgstr "Amestar a favoritos"
200msgstr "Amestar a favoritos"
199
201
200−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
202+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
201msgid "See less"
203msgid "See less"
202msgstr "Ver menos"
204msgstr "Ver menos"
203
205
204−#: qml/Dash/GenericScopeView.qml:587
206+#: qml/Dash/GenericScopeView.qml:565
205msgid "See all"
207msgid "See all"
206msgstr "Ver too"
208msgstr "Ver too"
207
209
208−#: qml/Dash/GenericScopeView.qml:649
210+#: qml/Dash/GenericScopeView.qml:627
209msgctxt "Label: Hint for dash search line edit"
211msgctxt "Label: Hint for dash search line edit"
210msgid "Search"
212msgid "Search"
211msgstr "Guetar"
213msgstr "Guetar"
@@ -233,7 +235,7 @@ msgstr "Amestar una reseña"
233
235
234#: qml/Dash/Previews/PreviewSharing.qml:50
236#: qml/Dash/Previews/PreviewSharing.qml:50
235msgid "Preview Share Item"
237msgid "Preview Share Item"
236−msgstr ""
238+msgstr "Entever l'elementu compartíu"
237
239
238#: qml/Dash/PullToRefreshScopeStyle.qml:55
240#: qml/Dash/PullToRefreshScopeStyle.qml:55
239msgid "Pull to refresh…"
241msgid "Pull to refresh…"
@@ -411,7 +413,7 @@ msgstr "Falló, toca pa reintentar"
411#: qml/Panel/Indicators/MessageMenuItemFactory.qml:214
413#: qml/Panel/Indicators/MessageMenuItemFactory.qml:214
412msgctxt "Button: Send a reply message"
414msgctxt "Button: Send a reply message"
413msgid "Send"
415msgid "Send"
414−msgstr ""
416+msgstr "Unviar"
415
417
416#: qml/Panel/Indicators/MessageMenuItemFactory.qml:156
418#: qml/Panel/Indicators/MessageMenuItemFactory.qml:156
417msgctxt "Label: Hint in message indicator line edit"
419msgctxt "Label: Hint in message indicator line edit"
@@ -421,15 +423,7 @@ msgstr "Responder"
421#: qml/Panel/Indicators/MessageMenuItemFactory.qml:213
423#: qml/Panel/Indicators/MessageMenuItemFactory.qml:213
422msgctxt "Button: Call back on phone"
424msgctxt "Button: Call back on phone"
423msgid "Call back"
425msgid "Call back"
424−msgstr ""
426+msgstr "Devolver llamada"
425−
426−#: qml/Panel/Indicators/ModemInfoItem.qml:105
427−msgid "Unlock SIM"
428−msgstr "Desbloquiar SIM"
429−
430−#: qml/Panel/Indicators/RoamingIndication.qml:27
431−msgid "Roaming"
432−msgstr "Roaming"
433
427
434#: qml/Tutorial/TutorialBottom.qml:28
428#: qml/Tutorial/TutorialBottom.qml:28
435msgid "Open special menus"
429msgid "Open special menus"
@@ -761,9 +755,15 @@ msgstr "%1 〉"
761#~ msgid "All"
755#~ msgid "All"
762#~ msgstr "Too"
756#~ msgstr "Too"
763
757
758+#~ msgid "Unlock SIM"
759+#~ msgstr "Desbloquiar SIM"
760+
764#~ msgid "Store"
761#~ msgid "Store"
765#~ msgstr "Tienda"
762#~ msgstr "Tienda"
766
763
764+#~ msgid "Roaming"
765+#~ msgstr "Roaming"
766+
767#~ msgid "Restart"
767#~ msgid "Restart"
768#~ msgstr "Reaniciar"
768#~ msgstr "Reaniciar"
769
769
po/az.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2014-09-03 16:39+0000\n"
11"PO-Revision-Date: 2014-09-03 16:39+0000\n"
12"Last-Translator: Nicat Məmmədov <n1c4t97@gmail.com>\n"
12"Last-Translator: Nicat Məmmədov <n1c4t97@gmail.com>\n"
13"Language-Team: Azerbaijani <az@li.org>\n"
13"Language-Team: Azerbaijani <az@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:36+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:57+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171msgid "Close all"
171msgid "Close all"
172msgstr ""
172msgstr ""
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177msgstr ""
177msgstr ""
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr ""
182msgstr ""
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr ""
187msgstr ""
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr "Seçilmişlәrdәn çıxart"
191msgstr "Seçilmişlәrdәn çıxart"
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr "Seçilmişlәrә әlavә et"
195msgstr "Seçilmişlәrә әlavә et"
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr "Daha azını gör"
199msgstr "Daha azını gör"
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr "Hamısını gör"
203msgstr "Hamısını gör"
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr ""
208msgstr ""
@@ -420,14 +420,6 @@ msgctxt "Button: Call back on phone"
420msgid "Call back"
420msgid "Call back"
421msgstr ""
421msgstr ""
422
422
423−#: qml/Panel/Indicators/ModemInfoItem.qml:105
424−msgid "Unlock SIM"
425−msgstr "SIM kilidini aç"
426−
427−#: qml/Panel/Indicators/RoamingIndication.qml:27
428−msgid "Roaming"
429−msgstr "Rominq"
430−
431#: qml/Tutorial/TutorialBottom.qml:28
423#: qml/Tutorial/TutorialBottom.qml:28
432msgid "Open special menus"
424msgid "Open special menus"
433msgstr ""
425msgstr ""
@@ -713,6 +705,12 @@ msgstr ""
713#~ msgid "Done"
705#~ msgid "Done"
714#~ msgstr "Başa çatdı"
706#~ msgstr "Başa çatdı"
715
707
708+#~ msgid "Unlock SIM"
709+#~ msgstr "SIM kilidini aç"
710+
711+#~ msgid "Roaming"
712+#~ msgstr "Rominq"
713+
716#~ msgid "Log out"
714#~ msgid "Log out"
717#~ msgstr "Çıxış"
715#~ msgstr "Çıxış"
718
716
po/be.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-12-13 13:12+0000\n"
11"PO-Revision-Date: 2015-12-13 13:12+0000\n"
12"Last-Translator: Mikhail_SaTuRn <mikhail_saturn@tut.by>\n"
12"Last-Translator: Mikhail_SaTuRn <mikhail_saturn@tut.by>\n"
13"Language-Team: Belarusian <be@li.org>\n"
13"Language-Team: Belarusian <be@li.org>\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%10==1 && n%100!=11 ? 0 : n%10>=2 && "
17"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
19−"X-Launchpad-Export-Date: 2016-02-16 05:37+0000\n"
19+"X-Launchpad-Export-Date: 2016-03-10 05:57+0000\n"
20−"X-Generator: Launchpad (build 17925)\n"
20+"X-Generator: Launchpad (build 17936)\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -178,38 +178,38 @@ msgstr "Перападлучыцца зараз!"
178msgid "Close all"
178msgid "Close all"
179msgstr "Зачыніць усё"
179msgstr "Зачыніць усё"
180
180
181−#: qml/Dash/DashPageHeader.qml:266
181+#: qml/Dash/DashPageHeader.qml:270
182msgctxt "Button: Open the Ubuntu Store"
182msgctxt "Button: Open the Ubuntu Store"
183msgid "Store"
183msgid "Store"
184msgstr "Крама"
184msgstr "Крама"
185
185
186−#: qml/Dash/DashPageHeader.qml:273
186+#: qml/Dash/DashPageHeader.qml:277
187msgctxt "Button: Start a search in the current dash scope"
187msgctxt "Button: Start a search in the current dash scope"
188msgid "Search"
188msgid "Search"
189msgstr "Пошук"
189msgstr "Пошук"
190
190
191−#: qml/Dash/DashPageHeader.qml:283
191+#: qml/Dash/DashPageHeader.qml:287
192msgctxt "Button: Show the current dash scope settings"
192msgctxt "Button: Show the current dash scope settings"
193msgid "Settings"
193msgid "Settings"
194msgstr "Налады"
194msgstr "Налады"
195
195
196−#: qml/Dash/DashPageHeader.qml:290
196+#: qml/Dash/DashPageHeader.qml:294
197msgid "Remove from Favorites"
197msgid "Remove from Favorites"
198msgstr "Выдаліць з абранага"
198msgstr "Выдаліць з абранага"
199
199
200−#: qml/Dash/DashPageHeader.qml:290
200+#: qml/Dash/DashPageHeader.qml:294
201msgid "Add to Favorites"
201msgid "Add to Favorites"
202msgstr "Дадаць да абранага"
202msgstr "Дадаць да абранага"
203
203
204−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
204+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
205msgid "See less"
205msgid "See less"
206msgstr "Карацей"
206msgstr "Карацей"
207
207
208−#: qml/Dash/GenericScopeView.qml:587
208+#: qml/Dash/GenericScopeView.qml:565
209msgid "See all"
209msgid "See all"
210msgstr "Больш падрабязна"
210msgstr "Больш падрабязна"
211
211
212−#: qml/Dash/GenericScopeView.qml:649
212+#: qml/Dash/GenericScopeView.qml:627
213msgctxt "Label: Hint for dash search line edit"
213msgctxt "Label: Hint for dash search line edit"
214msgid "Search"
214msgid "Search"
215msgstr "Пошук"
215msgstr "Пошук"
@@ -430,14 +430,6 @@ msgctxt "Button: Call back on phone"
430msgid "Call back"
430msgid "Call back"
431msgstr "Патэлефанаваць"
431msgstr "Патэлефанаваць"
432
432
433−#: qml/Panel/Indicators/ModemInfoItem.qml:105
434−msgid "Unlock SIM"
435−msgstr "Разблакаваць SIM"
436−
437−#: qml/Panel/Indicators/RoamingIndication.qml:27
438−msgid "Roaming"
439−msgstr "Роўмінг"
440−
441#: qml/Tutorial/TutorialBottom.qml:28
433#: qml/Tutorial/TutorialBottom.qml:28
442msgid "Open special menus"
434msgid "Open special menus"
443msgstr "Адкрыць спецыяльныя меню"
435msgstr "Адкрыць спецыяльныя меню"
@@ -705,6 +697,12 @@ msgstr "%1 〉"
705#~ msgid "Confirm"
697#~ msgid "Confirm"
706#~ msgstr "Пацвердзіць"
698#~ msgstr "Пацвердзіць"
707
699
700+#~ msgid "Unlock SIM"
701+#~ msgstr "Разблакаваць SIM"
702+
703+#~ msgid "Roaming"
704+#~ msgstr "Роўмінг"
705+
708#~ msgid "Try swiping from the right edge to unlock the phone"
706#~ msgid "Try swiping from the right edge to unlock the phone"
709#~ msgstr "Правядзіце пальцам з правага краю, каб разблакаваць тэлефон"
707#~ msgstr "Правядзіце пальцам з правага краю, каб разблакаваць тэлефон"
710
708
po/bg.po+11−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-04-12 14:43+0000\n"
11"PO-Revision-Date: 2015-04-12 14:43+0000\n"
12"Last-Translator: George Karavasilev <kokoto-java@ubuntu.com>\n"
12"Last-Translator: George Karavasilev <kokoto-java@ubuntu.com>\n"
13"Language-Team: Bulgarian <bg@li.org>\n"
13"Language-Team: Bulgarian <bg@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -173,38 +173,38 @@ msgstr ""
173msgid "Close all"
173msgid "Close all"
174msgstr ""
174msgstr ""
175
175
176−#: qml/Dash/DashPageHeader.qml:266
176+#: qml/Dash/DashPageHeader.qml:270
177msgctxt "Button: Open the Ubuntu Store"
177msgctxt "Button: Open the Ubuntu Store"
178msgid "Store"
178msgid "Store"
179msgstr ""
179msgstr ""
180
180
181−#: qml/Dash/DashPageHeader.qml:273
181+#: qml/Dash/DashPageHeader.qml:277
182msgctxt "Button: Start a search in the current dash scope"
182msgctxt "Button: Start a search in the current dash scope"
183msgid "Search"
183msgid "Search"
184msgstr ""
184msgstr ""
185
185
186−#: qml/Dash/DashPageHeader.qml:283
186+#: qml/Dash/DashPageHeader.qml:287
187msgctxt "Button: Show the current dash scope settings"
187msgctxt "Button: Show the current dash scope settings"
188msgid "Settings"
188msgid "Settings"
189msgstr ""
189msgstr ""
190
190
191−#: qml/Dash/DashPageHeader.qml:290
191+#: qml/Dash/DashPageHeader.qml:294
192msgid "Remove from Favorites"
192msgid "Remove from Favorites"
193msgstr ""
193msgstr ""
194
194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196msgid "Add to Favorites"
196msgid "Add to Favorites"
197msgstr ""
197msgstr ""
198
198
199−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
199+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
200msgid "See less"
200msgid "See less"
201msgstr ""
201msgstr ""
202
202
203−#: qml/Dash/GenericScopeView.qml:587
203+#: qml/Dash/GenericScopeView.qml:565
204msgid "See all"
204msgid "See all"
205msgstr ""
205msgstr ""
206
206
207−#: qml/Dash/GenericScopeView.qml:649
207+#: qml/Dash/GenericScopeView.qml:627
208msgctxt "Label: Hint for dash search line edit"
208msgctxt "Label: Hint for dash search line edit"
209msgid "Search"
209msgid "Search"
210msgstr ""
210msgstr ""
@@ -418,14 +418,6 @@ msgctxt "Button: Call back on phone"
418msgid "Call back"
418msgid "Call back"
419msgstr ""
419msgstr ""
420
420
421−#: qml/Panel/Indicators/ModemInfoItem.qml:105
422−msgid "Unlock SIM"
423−msgstr ""
424−
425−#: qml/Panel/Indicators/RoamingIndication.qml:27
426−msgid "Roaming"
427−msgstr ""
428−
429#: qml/Tutorial/TutorialBottom.qml:28
421#: qml/Tutorial/TutorialBottom.qml:28
430msgid "Open special menus"
422msgid "Open special menus"
431msgstr ""
423msgstr ""
po/bn.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-11-27 19:38+0000\n"
11"PO-Revision-Date: 2015-11-27 19:38+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Bengali <bn@li.org>\n"
13"Language-Team: Bengali <bn@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:57+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -173,38 +173,38 @@ msgstr ""
173msgid "Close all"
173msgid "Close all"
174msgstr ""
174msgstr ""
175
175
176−#: qml/Dash/DashPageHeader.qml:266
176+#: qml/Dash/DashPageHeader.qml:270
177msgctxt "Button: Open the Ubuntu Store"
177msgctxt "Button: Open the Ubuntu Store"
178msgid "Store"
178msgid "Store"
179msgstr "স্টোর"
179msgstr "স্টোর"
180
180
181−#: qml/Dash/DashPageHeader.qml:273
181+#: qml/Dash/DashPageHeader.qml:277
182msgctxt "Button: Start a search in the current dash scope"
182msgctxt "Button: Start a search in the current dash scope"
183msgid "Search"
183msgid "Search"
184msgstr "খুঁজুন"
184msgstr "খুঁজুন"
185
185
186−#: qml/Dash/DashPageHeader.qml:283
186+#: qml/Dash/DashPageHeader.qml:287
187msgctxt "Button: Show the current dash scope settings"
187msgctxt "Button: Show the current dash scope settings"
188msgid "Settings"
188msgid "Settings"
189msgstr "সেটিংস"
189msgstr "সেটিংস"
190
190
191−#: qml/Dash/DashPageHeader.qml:290
191+#: qml/Dash/DashPageHeader.qml:294
192msgid "Remove from Favorites"
192msgid "Remove from Favorites"
193msgstr "পছন্দ থেকে মুছে ফেলুন"
193msgstr "পছন্দ থেকে মুছে ফেলুন"
194
194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196msgid "Add to Favorites"
196msgid "Add to Favorites"
197msgstr "পছন্দতে যোগ করুন"
197msgstr "পছন্দতে যোগ করুন"
198
198
199−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
199+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
200msgid "See less"
200msgid "See less"
201msgstr "কম দেখুন"
201msgstr "কম দেখুন"
202
202
203−#: qml/Dash/GenericScopeView.qml:587
203+#: qml/Dash/GenericScopeView.qml:565
204msgid "See all"
204msgid "See all"
205msgstr "সব দেখুন"
205msgstr "সব দেখুন"
206
206
207−#: qml/Dash/GenericScopeView.qml:649
207+#: qml/Dash/GenericScopeView.qml:627
208msgctxt "Label: Hint for dash search line edit"
208msgctxt "Label: Hint for dash search line edit"
209msgid "Search"
209msgid "Search"
210msgstr "খুঁজুন"
210msgstr "খুঁজুন"
@@ -419,14 +419,6 @@ msgctxt "Button: Call back on phone"
419msgid "Call back"
419msgid "Call back"
420msgstr "কল ব্যাক"
420msgstr "কল ব্যাক"
421
421
422−#: qml/Panel/Indicators/ModemInfoItem.qml:105
423−msgid "Unlock SIM"
424−msgstr "সিম লক খুলুন করুন"
425−
426−#: qml/Panel/Indicators/RoamingIndication.qml:27
427−msgid "Roaming"
428−msgstr "রোমিং"
429−
430#: qml/Tutorial/TutorialBottom.qml:28
422#: qml/Tutorial/TutorialBottom.qml:28
431msgid "Open special menus"
423msgid "Open special menus"
432msgstr ""
424msgstr ""
@@ -726,6 +718,12 @@ msgstr ""
726#~ msgid "Speak Now..."
718#~ msgid "Speak Now..."
727#~ msgstr "এখন বলুন..."
719#~ msgstr "এখন বলুন..."
728
720
721+#~ msgid "Unlock SIM"
722+#~ msgstr "সিম লক খুলুন করুন"
723+
724+#~ msgid "Roaming"
725+#~ msgstr "রোমিং"
726+
729#~ msgid "Please re-enter"
727#~ msgid "Please re-enter"
730#~ msgstr "অনুগ্রহ করে আবার লিখুন"
728#~ msgstr "অনুগ্রহ করে আবার লিখুন"
731
729
po/br.po+32−30
@@ -7,16 +7,16 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11−"PO-Revision-Date: 2015-10-05 06:47+0000\n"
11+"PO-Revision-Date: 2016-02-22 12:29+0000\n"
12"Last-Translator: Fohanno Thierry <thierry.fohanno@ofis-bzh.org>\n"
12"Last-Translator: Fohanno Thierry <thierry.fohanno@ofis-bzh.org>\n"
13"Language-Team: Breton <br@li.org>\n"
13"Language-Team: Breton <br@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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:57+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -155,60 +155,62 @@ msgstr "Mat eo"
155
155
156#: qml/Components/ModeSwitchWarningDialog.qml:32
156#: qml/Components/ModeSwitchWarningDialog.qml:32
157msgid "Apps may have unsaved data:"
157msgid "Apps may have unsaved data:"
158−msgstr ""
158+msgstr "Roadennoù ha n'int ket enrollet a c'hall bezañ gant an arloadoù :"
159
159
160#: qml/Components/ModeSwitchWarningDialog.qml:57
160#: qml/Components/ModeSwitchWarningDialog.qml:57
161msgid "Re-dock, save your work and close these apps to continue."
161msgid "Re-dock, save your work and close these apps to continue."
162msgstr ""
162msgstr ""
163+"Adlugit, enrollit ho labour ha serrit an arloadoù-mañ evit kenderc'hel."
163
164
164#: qml/Components/ModeSwitchWarningDialog.qml:63
165#: qml/Components/ModeSwitchWarningDialog.qml:63
165msgid "Or force close now (unsaved data will be lost)."
166msgid "Or force close now (unsaved data will be lost)."
166msgstr ""
167msgstr ""
168+"Pe rediañ da serriñ bremañ (kollet e vo ar roadennoù n'int ket bet enrollet)."
167
169
168#: qml/Components/ModeSwitchWarningDialog.qml:75
170#: qml/Components/ModeSwitchWarningDialog.qml:75
169msgid "OK, I will reconnect"
171msgid "OK, I will reconnect"
170−msgstr ""
172+msgstr "Mat eo, ez an da adkevreañ"
171
173
172#: qml/Components/ModeSwitchWarningDialog.qml:76
174#: qml/Components/ModeSwitchWarningDialog.qml:76
173msgid "Reconnect now!"
175msgid "Reconnect now!"
174−msgstr ""
176+msgstr "Adkevreañ bremañ !"
175
177
176#: qml/Components/ModeSwitchWarningDialog.qml:88
178#: qml/Components/ModeSwitchWarningDialog.qml:88
177msgid "Close all"
179msgid "Close all"
178−msgstr ""
180+msgstr "Serriñ pep tra"
179
181
180−#: qml/Dash/DashPageHeader.qml:266
182+#: qml/Dash/DashPageHeader.qml:270
181msgctxt "Button: Open the Ubuntu Store"
183msgctxt "Button: Open the Ubuntu Store"
182msgid "Store"
184msgid "Store"
183msgstr "Stal"
185msgstr "Stal"
184
186
185−#: qml/Dash/DashPageHeader.qml:273
187+#: qml/Dash/DashPageHeader.qml:277
186msgctxt "Button: Start a search in the current dash scope"
188msgctxt "Button: Start a search in the current dash scope"
187msgid "Search"
189msgid "Search"
188msgstr "Klask"
190msgstr "Klask"
189
191
190−#: qml/Dash/DashPageHeader.qml:283
192+#: qml/Dash/DashPageHeader.qml:287
191msgctxt "Button: Show the current dash scope settings"
193msgctxt "Button: Show the current dash scope settings"
192msgid "Settings"
194msgid "Settings"
193msgstr "Arventennoù"
195msgstr "Arventennoù"
194
196
195−#: qml/Dash/DashPageHeader.qml:290
197+#: qml/Dash/DashPageHeader.qml:294
196msgid "Remove from Favorites"
198msgid "Remove from Favorites"
197msgstr "Lemel eus ar sinedoù"
199msgstr "Lemel eus ar sinedoù"
198
200
199−#: qml/Dash/DashPageHeader.qml:290
201+#: qml/Dash/DashPageHeader.qml:294
200msgid "Add to Favorites"
202msgid "Add to Favorites"
201msgstr "Ouzhpennañ d'ar sinedoù"
203msgstr "Ouzhpennañ d'ar sinedoù"
202
204
203−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
205+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
204msgid "See less"
206msgid "See less"
205msgstr "Gwelet nebeutoc'h"
207msgstr "Gwelet nebeutoc'h"
206
208
207−#: qml/Dash/GenericScopeView.qml:587
209+#: qml/Dash/GenericScopeView.qml:565
208msgid "See all"
210msgid "See all"
209msgstr "Gwelet pep tra"
211msgstr "Gwelet pep tra"
210
212
211−#: qml/Dash/GenericScopeView.qml:649
213+#: qml/Dash/GenericScopeView.qml:627
212msgctxt "Label: Hint for dash search line edit"
214msgctxt "Label: Hint for dash search line edit"
213msgid "Search"
215msgid "Search"
214msgstr "Klask"
216msgstr "Klask"
@@ -236,7 +238,7 @@ msgstr "Ouzhpennañ un ali"
236
238
237#: qml/Dash/Previews/PreviewSharing.qml:50
239#: qml/Dash/Previews/PreviewSharing.qml:50
238msgid "Preview Share Item"
240msgid "Preview Share Item"
239−msgstr ""
241+msgstr "Rakwelet an elfenn lodet"
240
242
241#: qml/Dash/PullToRefreshScopeStyle.qml:55
243#: qml/Dash/PullToRefreshScopeStyle.qml:55
242msgid "Pull to refresh…"
244msgid "Pull to refresh…"
@@ -267,6 +269,8 @@ msgid ""
267"Your device is now connected to an external display. Use this screen as a "
269"Your device is now connected to an external display. Use this screen as a "
268"touch pad to interact with the mouse."
270"touch pad to interact with the mouse."
269msgstr ""
271msgstr ""
272+"N'eo ket kevreet ho penveg ouzh un diskwel diavaez. Implijit ar skramm-mañ "
273+"da douch evit ober gant al logodenn."
270
274
271#: qml/Greeter/CoverPage.qml:107
275#: qml/Greeter/CoverPage.qml:107
272msgid "Unlock"
276msgid "Unlock"
@@ -414,7 +418,7 @@ msgstr "C'hwitet, touchit evit adkregiñ"
414#: qml/Panel/Indicators/MessageMenuItemFactory.qml:214
418#: qml/Panel/Indicators/MessageMenuItemFactory.qml:214
415msgctxt "Button: Send a reply message"
419msgctxt "Button: Send a reply message"
416msgid "Send"
420msgid "Send"
417−msgstr ""
421+msgstr "Kas"
418
422
419#: qml/Panel/Indicators/MessageMenuItemFactory.qml:156
423#: qml/Panel/Indicators/MessageMenuItemFactory.qml:156
420msgctxt "Label: Hint in message indicator line edit"
424msgctxt "Label: Hint in message indicator line edit"
@@ -424,15 +428,7 @@ msgstr "Respont"
424#: qml/Panel/Indicators/MessageMenuItemFactory.qml:213
428#: qml/Panel/Indicators/MessageMenuItemFactory.qml:213
425msgctxt "Button: Call back on phone"
429msgctxt "Button: Call back on phone"
426msgid "Call back"
430msgid "Call back"
427−msgstr ""
431+msgstr "Gervel en-dro"
428−
429−#: qml/Panel/Indicators/ModemInfoItem.qml:105
430−msgid "Unlock SIM"
431−msgstr "Dibrennañ ar gartenn SIM"
432−
433−#: qml/Panel/Indicators/RoamingIndication.qml:27
434−msgid "Roaming"
435−msgstr "O kantren"
436
432
437#: qml/Tutorial/TutorialBottom.qml:28
433#: qml/Tutorial/TutorialBottom.qml:28
438msgid "Open special menus"
434msgid "Open special menus"
@@ -498,7 +494,7 @@ msgstr "Salud deoc'h !"
498
494
499#: qml/Wizard/Pages/10-welcome.qml:44
495#: qml/Wizard/Pages/10-welcome.qml:44
500msgid "Welcome to your Ubuntu device."
496msgid "Welcome to your Ubuntu device."
501−msgstr ""
497+msgstr "Donemat en ho penveg Ubuntu"
502
498
503#: qml/Wizard/Pages/10-welcome.qml:52
499#: qml/Wizard/Pages/10-welcome.qml:52
504msgid "Let’s get started."
500msgid "Let’s get started."
@@ -529,7 +525,7 @@ msgstr "Surentez ar prennañ"
529
525
530#: qml/Wizard/Pages/30-passwd-type.qml:79
526#: qml/Wizard/Pages/30-passwd-type.qml:79
531msgid "Please select how you’d like to unlock your device."
527msgid "Please select how you’d like to unlock your device."
532−msgstr ""
528+msgstr "Diuzit penaos e fell deoc'h dibrennañ ho penveg, mar plij."
533
529
534#: qml/Wizard/Pages/30-passwd-type.qml:102
530#: qml/Wizard/Pages/30-passwd-type.qml:102
535msgctxt "Label: Type of security method"
531msgctxt "Label: Type of security method"
@@ -637,7 +633,7 @@ msgstr "Gwellat labour !"
637
633
638#: qml/Wizard/Pages/80-finished.qml:46
634#: qml/Wizard/Pages/80-finished.qml:46
639msgid "Your device is now ready to use."
635msgid "Your device is now ready to use."
640−msgstr ""
636+msgstr "Prest eo ho penveg da vezañ implijet bremañ."
641
637
642#: qml/Wizard/Pages/80-finished.qml:53
638#: qml/Wizard/Pages/80-finished.qml:53
643msgid "Finish"
639msgid "Finish"
@@ -752,6 +748,12 @@ msgstr "%1 〉"
752#~ msgid "All"
748#~ msgid "All"
753#~ msgstr "An holl anezho"
749#~ msgstr "An holl anezho"
754
750
751+#~ msgid "Unlock SIM"
752+#~ msgstr "Dibrennañ ar gartenn SIM"
753+
754+#~ msgid "Roaming"
755+#~ msgstr "O kantren"
756+
755#~ msgid "Favorites"
757#~ msgid "Favorites"
756#~ msgstr "Gwellañ deuet"
758#~ msgstr "Gwellañ deuet"
757
759
po/bs.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-12-01 20:06+0000\n"
11"PO-Revision-Date: 2015-12-01 20:06+0000\n"
12"Last-Translator: Kenan Gutić <Unknown>\n"
12"Last-Translator: Kenan Gutić <Unknown>\n"
13"Language-Team: Bosnian <bs@li.org>\n"
13"Language-Team: Bosnian <bs@li.org>\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%10==1 && n%100!=11 ? 0 : n%10>=2 && "
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-02-16 05:37+0000\n"
19+"X-Launchpad-Export-Date: 2016-03-10 05:57+0000\n"
20−"X-Generator: Launchpad (build 17925)\n"
20+"X-Generator: Launchpad (build 17936)\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -177,38 +177,38 @@ msgstr "Ponovo poveži sada"
177msgid "Close all"
177msgid "Close all"
178msgstr "Zatvori sve"
178msgstr "Zatvori sve"
179
179
180−#: qml/Dash/DashPageHeader.qml:266
180+#: qml/Dash/DashPageHeader.qml:270
181msgctxt "Button: Open the Ubuntu Store"
181msgctxt "Button: Open the Ubuntu Store"
182msgid "Store"
182msgid "Store"
183msgstr "Trgovina"
183msgstr "Trgovina"
184
184
185−#: qml/Dash/DashPageHeader.qml:273
185+#: qml/Dash/DashPageHeader.qml:277
186msgctxt "Button: Start a search in the current dash scope"
186msgctxt "Button: Start a search in the current dash scope"
187msgid "Search"
187msgid "Search"
188msgstr "Pretraživanje"
188msgstr "Pretraživanje"
189
189
190−#: qml/Dash/DashPageHeader.qml:283
190+#: qml/Dash/DashPageHeader.qml:287
191msgctxt "Button: Show the current dash scope settings"
191msgctxt "Button: Show the current dash scope settings"
192msgid "Settings"
192msgid "Settings"
193msgstr "Podešavanja"
193msgstr "Podešavanja"
194
194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196msgid "Remove from Favorites"
196msgid "Remove from Favorites"
197msgstr "Ukloni iz Omiljenih"
197msgstr "Ukloni iz Omiljenih"
198
198
199−#: qml/Dash/DashPageHeader.qml:290
199+#: qml/Dash/DashPageHeader.qml:294
200msgid "Add to Favorites"
200msgid "Add to Favorites"
201msgstr "Dodaj u Omiljene"
201msgstr "Dodaj u Omiljene"
202
202
203−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
203+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
204msgid "See less"
204msgid "See less"
205msgstr "Pogledati manje"
205msgstr "Pogledati manje"
206
206
207−#: qml/Dash/GenericScopeView.qml:587
207+#: qml/Dash/GenericScopeView.qml:565
208msgid "See all"
208msgid "See all"
209msgstr "Pogledati sve"
209msgstr "Pogledati sve"
210
210
211−#: qml/Dash/GenericScopeView.qml:649
211+#: qml/Dash/GenericScopeView.qml:627
212msgctxt "Label: Hint for dash search line edit"
212msgctxt "Label: Hint for dash search line edit"
213msgid "Search"
213msgid "Search"
214msgstr "Pretraži"
214msgstr "Pretraži"
@@ -429,14 +429,6 @@ msgctxt "Button: Call back on phone"
429msgid "Call back"
429msgid "Call back"
430msgstr "Uzvrati poziv"
430msgstr "Uzvrati poziv"
431
431
432−#: qml/Panel/Indicators/ModemInfoItem.qml:105
433−msgid "Unlock SIM"
434−msgstr "Otključajte SIM"
435−
436−#: qml/Panel/Indicators/RoamingIndication.qml:27
437−msgid "Roaming"
438−msgstr "Roaming"
439−
440#: qml/Tutorial/TutorialBottom.qml:28
432#: qml/Tutorial/TutorialBottom.qml:28
441msgid "Open special menus"
433msgid "Open special menus"
442msgstr "Otvorite posebne menije"
434msgstr "Otvorite posebne menije"
@@ -699,6 +691,12 @@ msgstr "%1 〉"
699#~ msgid "Please re-enter"
691#~ msgid "Please re-enter"
700#~ msgstr "Molimo ponovo unesite"
692#~ msgstr "Molimo ponovo unesite"
701
693
694+#~ msgid "Unlock SIM"
695+#~ msgstr "Otključajte SIM"
696+
697+#~ msgid "Roaming"
698+#~ msgstr "Roaming"
699+
702#~ msgid "Welcome to your Ubuntu phone."
700#~ msgid "Welcome to your Ubuntu phone."
703#~ msgstr "Dobrodošli u vaš Ubuntu telefon."
701#~ msgstr "Dobrodošli u vaš Ubuntu telefon."
704
702
po/ca.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-07-04 09:48+0000\n"
11"PO-Revision-Date: 2015-07-04 09:48+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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -179,38 +179,38 @@ msgstr "Torna a connectar"
179msgid "Close all"
179msgid "Close all"
180msgstr "Tanca-ho tot"
180msgstr "Tanca-ho tot"
181
181
182−#: qml/Dash/DashPageHeader.qml:266
182+#: qml/Dash/DashPageHeader.qml:270
183msgctxt "Button: Open the Ubuntu Store"
183msgctxt "Button: Open the Ubuntu Store"
184msgid "Store"
184msgid "Store"
185msgstr "Botiga"
185msgstr "Botiga"
186
186
187−#: qml/Dash/DashPageHeader.qml:273
187+#: qml/Dash/DashPageHeader.qml:277
188msgctxt "Button: Start a search in the current dash scope"
188msgctxt "Button: Start a search in the current dash scope"
189msgid "Search"
189msgid "Search"
190msgstr "Cerca"
190msgstr "Cerca"
191
191
192−#: qml/Dash/DashPageHeader.qml:283
192+#: qml/Dash/DashPageHeader.qml:287
193msgctxt "Button: Show the current dash scope settings"
193msgctxt "Button: Show the current dash scope settings"
194msgid "Settings"
194msgid "Settings"
195msgstr "Paràmetres"
195msgstr "Paràmetres"
196
196
197−#: qml/Dash/DashPageHeader.qml:290
197+#: qml/Dash/DashPageHeader.qml:294
198msgid "Remove from Favorites"
198msgid "Remove from Favorites"
199msgstr "Suprimeix dels preferits"
199msgstr "Suprimeix dels preferits"
200
200
201−#: qml/Dash/DashPageHeader.qml:290
201+#: qml/Dash/DashPageHeader.qml:294
202msgid "Add to Favorites"
202msgid "Add to Favorites"
203msgstr "Afegeix als preferits"
203msgstr "Afegeix als preferits"
204
204
205−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
205+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
206msgid "See less"
206msgid "See less"
207msgstr "Mostra'n menys"
207msgstr "Mostra'n menys"
208
208
209−#: qml/Dash/GenericScopeView.qml:587
209+#: qml/Dash/GenericScopeView.qml:565
210msgid "See all"
210msgid "See all"
211msgstr "Mostra-ho tot"
211msgstr "Mostra-ho tot"
212
212
213−#: qml/Dash/GenericScopeView.qml:649
213+#: qml/Dash/GenericScopeView.qml:627
214msgctxt "Label: Hint for dash search line edit"
214msgctxt "Label: Hint for dash search line edit"
215msgid "Search"
215msgid "Search"
216msgstr "Cerca"
216msgstr "Cerca"
@@ -430,14 +430,6 @@ msgctxt "Button: Call back on phone"
430msgid "Call back"
430msgid "Call back"
431msgstr "Retorna la trucada"
431msgstr "Retorna la trucada"
432
432
433−#: qml/Panel/Indicators/ModemInfoItem.qml:105
434−msgid "Unlock SIM"
435−msgstr "Desbloca la SIM"
436−
437−#: qml/Panel/Indicators/RoamingIndication.qml:27
438−msgid "Roaming"
439−msgstr "Itinerància"
440−
441#: qml/Tutorial/TutorialBottom.qml:28
433#: qml/Tutorial/TutorialBottom.qml:28
442msgid "Open special menus"
434msgid "Open special menus"
443msgstr "Obre els menús especials"
435msgstr "Obre els menús especials"
@@ -747,12 +739,18 @@ msgstr "%1 〉"
747#~ "Ja heu après com utilitzar els gestos de les vores per fer servir el "
739#~ "Ja heu après com utilitzar els gestos de les vores per fer servir el "
748#~ "telèfon<br><br>Feu un toc a la pantalla per començar"
740#~ "telèfon<br><br>Feu un toc a la pantalla per començar"
749
741
742+#~ msgid "Unlock SIM"
743+#~ msgstr "Desbloca la SIM"
744+
750#~ msgid "Store"
745#~ msgid "Store"
751#~ msgstr "Botiga"
746#~ msgstr "Botiga"
752
747
753#~ msgid "Done"
748#~ msgid "Done"
754#~ msgstr "Fet"
749#~ msgstr "Fet"
755
750
751+#~ msgid "Roaming"
752+#~ msgstr "Itinerància"
753+
756#~ msgid "Favorites"
754#~ msgid "Favorites"
757#~ msgstr "Preferides"
755#~ msgstr "Preferides"
758
756
po/ca@valencia.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-02-22 15:22+0000\n"
11"PO-Revision-Date: 2015-02-22 15: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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -177,38 +177,38 @@ msgstr ""
177msgid "Close all"
177msgid "Close all"
178msgstr ""
178msgstr ""
179
179
180−#: qml/Dash/DashPageHeader.qml:266
180+#: qml/Dash/DashPageHeader.qml:270
181msgctxt "Button: Open the Ubuntu Store"
181msgctxt "Button: Open the Ubuntu Store"
182msgid "Store"
182msgid "Store"
183msgstr ""
183msgstr ""
184
184
185−#: qml/Dash/DashPageHeader.qml:273
185+#: qml/Dash/DashPageHeader.qml:277
186msgctxt "Button: Start a search in the current dash scope"
186msgctxt "Button: Start a search in the current dash scope"
187msgid "Search"
187msgid "Search"
188msgstr ""
188msgstr ""
189
189
190−#: qml/Dash/DashPageHeader.qml:283
190+#: qml/Dash/DashPageHeader.qml:287
191msgctxt "Button: Show the current dash scope settings"
191msgctxt "Button: Show the current dash scope settings"
192msgid "Settings"
192msgid "Settings"
193msgstr ""
193msgstr ""
194
194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196msgid "Remove from Favorites"
196msgid "Remove from Favorites"
197msgstr "Suprimeix dels preferits"
197msgstr "Suprimeix dels preferits"
198
198
199−#: qml/Dash/DashPageHeader.qml:290
199+#: qml/Dash/DashPageHeader.qml:294
200msgid "Add to Favorites"
200msgid "Add to Favorites"
201msgstr "Afig als preferits"
201msgstr "Afig als preferits"
202
202
203−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
203+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
204msgid "See less"
204msgid "See less"
205msgstr "Mostra'n menys"
205msgstr "Mostra'n menys"
206
206
207−#: qml/Dash/GenericScopeView.qml:587
207+#: qml/Dash/GenericScopeView.qml:565
208msgid "See all"
208msgid "See all"
209msgstr "Mostra-ho tot"
209msgstr "Mostra-ho tot"
210
210
211−#: qml/Dash/GenericScopeView.qml:649
211+#: qml/Dash/GenericScopeView.qml:627
212msgctxt "Label: Hint for dash search line edit"
212msgctxt "Label: Hint for dash search line edit"
213msgid "Search"
213msgid "Search"
214msgstr ""
214msgstr ""
@@ -428,14 +428,6 @@ msgctxt "Button: Call back on phone"
428msgid "Call back"
428msgid "Call back"
429msgstr ""
429msgstr ""
430
430
431−#: qml/Panel/Indicators/ModemInfoItem.qml:105
432−msgid "Unlock SIM"
433−msgstr "Desbloca la SIM"
434−
435−#: qml/Panel/Indicators/RoamingIndication.qml:27
436−msgid "Roaming"
437−msgstr "Itinerància"
438−
439#: qml/Tutorial/TutorialBottom.qml:28
431#: qml/Tutorial/TutorialBottom.qml:28
440msgid "Open special menus"
432msgid "Open special menus"
441msgstr ""
433msgstr ""
@@ -771,6 +763,12 @@ msgstr "%1 〉"
771#~ msgid "Speaking..."
763#~ msgid "Speaking..."
772#~ msgstr "S'està parlant..."
764#~ msgstr "S'està parlant..."
773
765
766+#~ msgid "Unlock SIM"
767+#~ msgstr "Desbloca la SIM"
768+
769+#~ msgid "Roaming"
770+#~ msgstr "Itinerància"
771+
774#~ msgid "Please re-enter"
772#~ msgid "Please re-enter"
775#~ msgstr "Torneu-ho a introduir"
773#~ msgstr "Torneu-ho a introduir"
776
774
po/ce.po+11−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-02-15 04:01+0000\n"
11"PO-Revision-Date: 2015-02-15 04:01+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Chechen <ce@li.org>\n"
13"Language-Team: Chechen <ce@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171msgid "Close all"
171msgid "Close all"
172msgstr ""
172msgstr ""
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177msgstr ""
177msgstr ""
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr ""
182msgstr ""
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr ""
187msgstr ""
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr ""
191msgstr ""
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr ""
195msgstr ""
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr ""
199msgstr ""
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr ""
203msgstr ""
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr ""
208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416msgid "Call back"
416msgid "Call back"
417msgstr ""
417msgstr ""
418
418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427#: qml/Tutorial/TutorialBottom.qml:28
419#: qml/Tutorial/TutorialBottom.qml:28
428msgid "Open special menus"
420msgid "Open special menus"
429msgstr ""
421msgstr ""
po/ckb.po+11−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2014-01-21 11:05+0000\n"
11"PO-Revision-Date: 2014-01-21 11:05+0000\n"
12"Last-Translator: Aras <aras.noori@gmail.com>\n"
12"Last-Translator: Aras <aras.noori@gmail.com>\n"
13"Language-Team: Kurdish (Sorani) <ckb@li.org>\n"
13"Language-Team: Kurdish (Sorani) <ckb@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171msgid "Close all"
171msgid "Close all"
172msgstr ""
172msgstr ""
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177msgstr ""
177msgstr ""
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr ""
182msgstr ""
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr ""
187msgstr ""
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr ""
191msgstr ""
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr ""
195msgstr ""
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr ""
199msgstr ""
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr ""
203msgstr ""
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr ""
208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416msgid "Call back"
416msgid "Call back"
417msgstr ""
417msgstr ""
418
418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427#: qml/Tutorial/TutorialBottom.qml:28
419#: qml/Tutorial/TutorialBottom.qml:28
428msgid "Open special menus"
420msgid "Open special menus"
429msgstr ""
421msgstr ""
po/cs.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-07-07 10:44+0000\n"
11"PO-Revision-Date: 2015-07-07 10:44+0000\n"
12"Last-Translator: Vojtěch Daněk <vdanek@outlook.com>\n"
12"Last-Translator: Vojtěch Daněk <vdanek@outlook.com>\n"
13"Language-Team: Czech <cs@li.org>\n"
13"Language-Team: Czech <cs@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
17"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
18−"X-Launchpad-Export-Date: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20"Language: cs\n"
20"Language: cs\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -177,38 +177,38 @@ msgstr ""
177msgid "Close all"
177msgid "Close all"
178msgstr ""
178msgstr ""
179
179
180−#: qml/Dash/DashPageHeader.qml:266
180+#: qml/Dash/DashPageHeader.qml:270
181msgctxt "Button: Open the Ubuntu Store"
181msgctxt "Button: Open the Ubuntu Store"
182msgid "Store"
182msgid "Store"
183msgstr "Obchod"
183msgstr "Obchod"
184
184
185−#: qml/Dash/DashPageHeader.qml:273
185+#: qml/Dash/DashPageHeader.qml:277
186msgctxt "Button: Start a search in the current dash scope"
186msgctxt "Button: Start a search in the current dash scope"
187msgid "Search"
187msgid "Search"
188msgstr "Hledat"
188msgstr "Hledat"
189
189
190−#: qml/Dash/DashPageHeader.qml:283
190+#: qml/Dash/DashPageHeader.qml:287
191msgctxt "Button: Show the current dash scope settings"
191msgctxt "Button: Show the current dash scope settings"
192msgid "Settings"
192msgid "Settings"
193msgstr "Nastavení"
193msgstr "Nastavení"
194
194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196msgid "Remove from Favorites"
196msgid "Remove from Favorites"
197msgstr "Odstranit z oblíbených"
197msgstr "Odstranit z oblíbených"
198
198
199−#: qml/Dash/DashPageHeader.qml:290
199+#: qml/Dash/DashPageHeader.qml:294
200msgid "Add to Favorites"
200msgid "Add to Favorites"
201msgstr "Přidat do oblíbených"
201msgstr "Přidat do oblíbených"
202
202
203−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
203+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
204msgid "See less"
204msgid "See less"
205msgstr "Zobrazit méně"
205msgstr "Zobrazit méně"
206
206
207−#: qml/Dash/GenericScopeView.qml:587
207+#: qml/Dash/GenericScopeView.qml:565
208msgid "See all"
208msgid "See all"
209msgstr "Zobrazit vše"
209msgstr "Zobrazit vše"
210
210
211−#: qml/Dash/GenericScopeView.qml:649
211+#: qml/Dash/GenericScopeView.qml:627
212msgctxt "Label: Hint for dash search line edit"
212msgctxt "Label: Hint for dash search line edit"
213msgid "Search"
213msgid "Search"
214msgstr "Hledat"
214msgstr "Hledat"
@@ -429,14 +429,6 @@ msgctxt "Button: Call back on phone"
429msgid "Call back"
429msgid "Call back"
430msgstr ""
430msgstr ""
431
431
432−#: qml/Panel/Indicators/ModemInfoItem.qml:105
433−msgid "Unlock SIM"
434−msgstr "Odemknout SIM"
435−
436−#: qml/Panel/Indicators/RoamingIndication.qml:27
437−msgid "Roaming"
438−msgstr "Roaming"
439−
440#: qml/Tutorial/TutorialBottom.qml:28
432#: qml/Tutorial/TutorialBottom.qml:28
441msgid "Open special menus"
433msgid "Open special menus"
442msgstr "Otevřít speciální menu"
434msgstr "Otevřít speciální menu"
@@ -734,6 +726,12 @@ msgstr "%1 〉"
734#~ msgid "Please re-enter"
726#~ msgid "Please re-enter"
735#~ msgstr "Vložte znovu"
727#~ msgstr "Vložte znovu"
736
728
729+#~ msgid "Unlock SIM"
730+#~ msgstr "Odemknout SIM"
731+
732+#~ msgid "Roaming"
733+#~ msgstr "Roaming"
734+
737#~ msgid "Welcome to your Ubuntu phone."
735#~ msgid "Welcome to your Ubuntu phone."
738#~ msgstr "Vítejte ve vašem Ubuntu telefonu."
736#~ msgstr "Vítejte ve vašem Ubuntu telefonu."
739
737
po/cy.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-07-31 13:21+0000\n"
11"PO-Revision-Date: 2015-07-31 13:21+0000\n"
12"Last-Translator: Owen Llywelyn <owen.llywelyn@gmail.com>\n"
12"Last-Translator: Owen Llywelyn <owen.llywelyn@gmail.com>\n"
13"Language-Team: Welsh <cy@li.org>\n"
13"Language-Team: Welsh <cy@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=4; plural=n==1 ? 0 : n==2 ? 1 : (n != 8 && n != 11) ? "
17"Plural-Forms: nplurals=4; plural=n==1 ? 0 : n==2 ? 1 : (n != 8 && n != 11) ? "
18"2 : 3;\n"
18"2 : 3;\n"
19−"X-Launchpad-Export-Date: 2016-02-16 05:37+0000\n"
19+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
20−"X-Generator: Launchpad (build 17925)\n"
20+"X-Generator: Launchpad (build 17936)\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -178,38 +178,38 @@ msgstr ""
178msgid "Close all"
178msgid "Close all"
179msgstr ""
179msgstr ""
180
180
181−#: qml/Dash/DashPageHeader.qml:266
181+#: qml/Dash/DashPageHeader.qml:270
182msgctxt "Button: Open the Ubuntu Store"
182msgctxt "Button: Open the Ubuntu Store"
183msgid "Store"
183msgid "Store"
184msgstr "Marchnad"
184msgstr "Marchnad"
185
185
186−#: qml/Dash/DashPageHeader.qml:273
186+#: qml/Dash/DashPageHeader.qml:277
187msgctxt "Button: Start a search in the current dash scope"
187msgctxt "Button: Start a search in the current dash scope"
188msgid "Search"
188msgid "Search"
189msgstr "Chwilio"
189msgstr "Chwilio"
190
190
191−#: qml/Dash/DashPageHeader.qml:283
191+#: qml/Dash/DashPageHeader.qml:287
192msgctxt "Button: Show the current dash scope settings"
192msgctxt "Button: Show the current dash scope settings"
193msgid "Settings"
193msgid "Settings"
194msgstr "Gosodiadau"
194msgstr "Gosodiadau"
195
195
196−#: qml/Dash/DashPageHeader.qml:290
196+#: qml/Dash/DashPageHeader.qml:294
197msgid "Remove from Favorites"
197msgid "Remove from Favorites"
198msgstr "Tynnu o Ffefrynnau"
198msgstr "Tynnu o Ffefrynnau"
199
199
200−#: qml/Dash/DashPageHeader.qml:290
200+#: qml/Dash/DashPageHeader.qml:294
201msgid "Add to Favorites"
201msgid "Add to Favorites"
202msgstr "Ychwanegu at Ffefrynnau"
202msgstr "Ychwanegu at Ffefrynnau"
203
203
204−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
204+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
205msgid "See less"
205msgid "See less"
206msgstr "Gweld llai"
206msgstr "Gweld llai"
207
207
208−#: qml/Dash/GenericScopeView.qml:587
208+#: qml/Dash/GenericScopeView.qml:565
209msgid "See all"
209msgid "See all"
210msgstr "Gweld y cyfan"
210msgstr "Gweld y cyfan"
211
211
212−#: qml/Dash/GenericScopeView.qml:649
212+#: qml/Dash/GenericScopeView.qml:627
213msgctxt "Label: Hint for dash search line edit"
213msgctxt "Label: Hint for dash search line edit"
214msgid "Search"
214msgid "Search"
215msgstr "Chwilio"
215msgstr "Chwilio"
@@ -433,14 +433,6 @@ msgctxt "Button: Call back on phone"
433msgid "Call back"
433msgid "Call back"
434msgstr ""
434msgstr ""
435
435
436−#: qml/Panel/Indicators/ModemInfoItem.qml:105
437−msgid "Unlock SIM"
438−msgstr "Datgloi SIM"
439−
440−#: qml/Panel/Indicators/RoamingIndication.qml:27
441−msgid "Roaming"
442−msgstr "Crwydrol"
443−
444#: qml/Tutorial/TutorialBottom.qml:28
436#: qml/Tutorial/TutorialBottom.qml:28
445msgid "Open special menus"
437msgid "Open special menus"
446msgstr "Agor dewislenni arbennig"
438msgstr "Agor dewislenni arbennig"
@@ -717,6 +709,12 @@ msgstr "%1 〉"
717#~ msgid "Tomorrow %H:%M"
709#~ msgid "Tomorrow %H:%M"
718#~ msgstr "Yfory %H:%M"
710#~ msgstr "Yfory %H:%M"
719
711
712+#~ msgid "Unlock SIM"
713+#~ msgstr "Datgloi SIM"
714+
715+#~ msgid "Roaming"
716+#~ msgstr "Crwydrol"
717+
720#~ msgid "Welcome to your Ubuntu phone."
718#~ msgid "Welcome to your Ubuntu phone."
721#~ msgstr "Croeso i'ch ffôn Ubuntu."
719#~ msgstr "Croeso i'ch ffôn Ubuntu."
722
720
po/da.po+17−19
@@ -8,7 +8,7 @@ msgid ""
8msgstr ""
8msgstr ""
9"Project-Id-Version: unity8\n"
9"Project-Id-Version: unity8\n"
10"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
11+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
12"PO-Revision-Date: 2015-07-06 12:05+0000\n"
12"PO-Revision-Date: 2015-07-06 12:05+0000\n"
13"Last-Translator: Folmer Fredslund <Unknown>\n"
13"Last-Translator: Folmer Fredslund <Unknown>\n"
14"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
14"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Type: text/plain; charset=UTF-8\n"
17"Content-Transfer-Encoding: 8bit\n"
17"Content-Transfer-Encoding: 8bit\n"
18"Plural-Forms: nplurals=2; plural=n != 1;\n"
18"Plural-Forms: nplurals=2; plural=n != 1;\n"
19−"X-Launchpad-Export-Date: 2016-02-16 05:37+0000\n"
19+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
20−"X-Generator: Launchpad (build 17925)\n"
20+"X-Generator: Launchpad (build 17936)\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -178,38 +178,38 @@ msgstr ""
178msgid "Close all"
178msgid "Close all"
179msgstr ""
179msgstr ""
180
180
181−#: qml/Dash/DashPageHeader.qml:266
181+#: qml/Dash/DashPageHeader.qml:270
182msgctxt "Button: Open the Ubuntu Store"
182msgctxt "Button: Open the Ubuntu Store"
183msgid "Store"
183msgid "Store"
184msgstr "Butik"
184msgstr "Butik"
185
185
186−#: qml/Dash/DashPageHeader.qml:273
186+#: qml/Dash/DashPageHeader.qml:277
187msgctxt "Button: Start a search in the current dash scope"
187msgctxt "Button: Start a search in the current dash scope"
188msgid "Search"
188msgid "Search"
189msgstr "Søg"
189msgstr "Søg"
190
190
191−#: qml/Dash/DashPageHeader.qml:283
191+#: qml/Dash/DashPageHeader.qml:287
192msgctxt "Button: Show the current dash scope settings"
192msgctxt "Button: Show the current dash scope settings"
193msgid "Settings"
193msgid "Settings"
194msgstr "Indstillinger"
194msgstr "Indstillinger"
195
195
196−#: qml/Dash/DashPageHeader.qml:290
196+#: qml/Dash/DashPageHeader.qml:294
197msgid "Remove from Favorites"
197msgid "Remove from Favorites"
198msgstr "Fjern fra Favoritter"
198msgstr "Fjern fra Favoritter"
199
199
200−#: qml/Dash/DashPageHeader.qml:290
200+#: qml/Dash/DashPageHeader.qml:294
201msgid "Add to Favorites"
201msgid "Add to Favorites"
202msgstr "Tilføj til Favoritter"
202msgstr "Tilføj til Favoritter"
203
203
204−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
204+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
205msgid "See less"
205msgid "See less"
206msgstr "Vis mindre"
206msgstr "Vis mindre"
207
207
208−#: qml/Dash/GenericScopeView.qml:587
208+#: qml/Dash/GenericScopeView.qml:565
209msgid "See all"
209msgid "See all"
210msgstr "Se alle"
210msgstr "Se alle"
211
211
212−#: qml/Dash/GenericScopeView.qml:649
212+#: qml/Dash/GenericScopeView.qml:627
213msgctxt "Label: Hint for dash search line edit"
213msgctxt "Label: Hint for dash search line edit"
214msgid "Search"
214msgid "Search"
215msgstr "Søg"
215msgstr "Søg"
@@ -427,14 +427,6 @@ msgctxt "Button: Call back on phone"
427msgid "Call back"
427msgid "Call back"
428msgstr ""
428msgstr ""
429
429
430−#: qml/Panel/Indicators/ModemInfoItem.qml:105
431−msgid "Unlock SIM"
432−msgstr "Lås SIM-kort op"
433−
434−#: qml/Panel/Indicators/RoamingIndication.qml:27
435−msgid "Roaming"
436−msgstr "Roaming"
437−
438#: qml/Tutorial/TutorialBottom.qml:28
430#: qml/Tutorial/TutorialBottom.qml:28
439msgid "Open special menus"
431msgid "Open special menus"
440msgstr "Åben specialmenuer"
432msgstr "Åben specialmenuer"
@@ -738,6 +730,9 @@ msgstr "%1 〉"
738#~ "Du mestrer nu kantbevægelserne og kan begynde at bruge telefonen<br><br>Tryk "
730#~ "Du mestrer nu kantbevægelserne og kan begynde at bruge telefonen<br><br>Tryk "
739#~ "på skærmen for at starte"
731#~ "på skærmen for at starte"
740
732
733+#~ msgid "Unlock SIM"
734+#~ msgstr "Lås SIM-kort op"
735+
741#~ msgid "Please re-enter"
736#~ msgid "Please re-enter"
742#~ msgstr "Vær venlig at genindtaste"
737#~ msgstr "Vær venlig at genindtaste"
743
738
@@ -750,6 +745,9 @@ msgstr "%1 〉"
750#~ msgid "Welcome to your Ubuntu phone."
745#~ msgid "Welcome to your Ubuntu phone."
751#~ msgstr "Velkommen til din Ubuntu-telefon."
746#~ msgstr "Velkommen til din Ubuntu-telefon."
752
747
748+#~ msgid "Roaming"
749+#~ msgstr "Roaming"
750+
753#~ msgid "%a %d %b %H:%M"
751#~ msgid "%a %d %b %H:%M"
754#~ msgstr "%a %b. %d %H:%M"
752#~ msgstr "%a %b. %d %H:%M"
755
753
po/de.po+24−24
@@ -7,16 +7,16 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11−"PO-Revision-Date: 2015-07-24 18:03+0000\n"
11+"PO-Revision-Date: 2016-02-17 19:16+0000\n"
12−"Last-Translator: Torsten Franz <Unknown>\n"
12+"Last-Translator: schuko24 <gerdsaenger@t-online.de>\n"
13"Language-Team: German <de@li.org>\n"
13"Language-Team: German <de@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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -179,38 +179,38 @@ msgstr "Jetzt verbinden!"
179msgid "Close all"
179msgid "Close all"
180msgstr "Alle schließen"
180msgstr "Alle schließen"
181
181
182−#: qml/Dash/DashPageHeader.qml:266
182+#: qml/Dash/DashPageHeader.qml:270
183msgctxt "Button: Open the Ubuntu Store"
183msgctxt "Button: Open the Ubuntu Store"
184msgid "Store"
184msgid "Store"
185msgstr "Speichern"
185msgstr "Speichern"
186
186
187−#: qml/Dash/DashPageHeader.qml:273
187+#: qml/Dash/DashPageHeader.qml:277
188msgctxt "Button: Start a search in the current dash scope"
188msgctxt "Button: Start a search in the current dash scope"
189msgid "Search"
189msgid "Search"
190msgstr "Suchen"
190msgstr "Suchen"
191
191
192−#: qml/Dash/DashPageHeader.qml:283
192+#: qml/Dash/DashPageHeader.qml:287
193msgctxt "Button: Show the current dash scope settings"
193msgctxt "Button: Show the current dash scope settings"
194msgid "Settings"
194msgid "Settings"
195msgstr "Einstellungen"
195msgstr "Einstellungen"
196
196
197−#: qml/Dash/DashPageHeader.qml:290
197+#: qml/Dash/DashPageHeader.qml:294
198msgid "Remove from Favorites"
198msgid "Remove from Favorites"
199msgstr "Aus den Favoriten entfernen"
199msgstr "Aus den Favoriten entfernen"
200
200
201−#: qml/Dash/DashPageHeader.qml:290
201+#: qml/Dash/DashPageHeader.qml:294
202msgid "Add to Favorites"
202msgid "Add to Favorites"
203msgstr "Zu Favoriten hinzufügen"
203msgstr "Zu Favoriten hinzufügen"
204
204
205−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
205+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
206msgid "See less"
206msgid "See less"
207msgstr "Weniger ansehen"
207msgstr "Weniger ansehen"
208
208
209−#: qml/Dash/GenericScopeView.qml:587
209+#: qml/Dash/GenericScopeView.qml:565
210msgid "See all"
210msgid "See all"
211msgstr "Alle anzeigen"
211msgstr "Alle anzeigen"
212
212
213−#: qml/Dash/GenericScopeView.qml:649
213+#: qml/Dash/GenericScopeView.qml:627
214msgctxt "Label: Hint for dash search line edit"
214msgctxt "Label: Hint for dash search line edit"
215msgid "Search"
215msgid "Search"
216msgstr "Suchen"
216msgstr "Suchen"
@@ -269,6 +269,8 @@ msgid ""
269"Your device is now connected to an external display. Use this screen as a "
269"Your device is now connected to an external display. Use this screen as a "
270"touch pad to interact with the mouse."
270"touch pad to interact with the mouse."
271msgstr ""
271msgstr ""
272+"Ihr Gerät ist nun mit einer externen Anzeige verbunden. Benutzen Sie diesen "
273+"Bildschirm als Touchpad zur Steuerung des Mauszeigers."
272
274
273#: qml/Greeter/CoverPage.qml:107
275#: qml/Greeter/CoverPage.qml:107
274msgid "Unlock"
276msgid "Unlock"
@@ -428,14 +430,6 @@ msgctxt "Button: Call back on phone"
428msgid "Call back"
430msgid "Call back"
429msgstr "Zurückrufen"
431msgstr "Zurückrufen"
430
432
431−#: qml/Panel/Indicators/ModemInfoItem.qml:105
432−msgid "Unlock SIM"
433−msgstr "SIM-Karte entsperren"
434−
435−#: qml/Panel/Indicators/RoamingIndication.qml:27
436−msgid "Roaming"
437−msgstr "Roaming"
438−
439#: qml/Tutorial/TutorialBottom.qml:28
433#: qml/Tutorial/TutorialBottom.qml:28
440msgid "Open special menus"
434msgid "Open special menus"
441msgstr "Spezielle Menüs öffnen"
435msgstr "Spezielle Menüs öffnen"
@@ -501,7 +495,7 @@ msgstr "Hallo!"
501
495
502#: qml/Wizard/Pages/10-welcome.qml:44
496#: qml/Wizard/Pages/10-welcome.qml:44
503msgid "Welcome to your Ubuntu device."
497msgid "Welcome to your Ubuntu device."
504−msgstr ""
498+msgstr "Willkommen auf Ihrem Ubuntu-Gerät."
505
499
506#: qml/Wizard/Pages/10-welcome.qml:52
500#: qml/Wizard/Pages/10-welcome.qml:52
507msgid "Let’s get started."
501msgid "Let’s get started."
@@ -532,7 +526,7 @@ msgstr "Sicherheit nach dem Sperren"
532
526
533#: qml/Wizard/Pages/30-passwd-type.qml:79
527#: qml/Wizard/Pages/30-passwd-type.qml:79
534msgid "Please select how you’d like to unlock your device."
528msgid "Please select how you’d like to unlock your device."
535−msgstr ""
529+msgstr "Bitte wählen Sie, wie Sie dieses Gerät entsperren möchten."
536
530
537#: qml/Wizard/Pages/30-passwd-type.qml:102
531#: qml/Wizard/Pages/30-passwd-type.qml:102
538msgctxt "Label: Type of security method"
532msgctxt "Label: Type of security method"
@@ -641,7 +635,7 @@ msgstr "Gute Arbeit!"
641
635
642#: qml/Wizard/Pages/80-finished.qml:46
636#: qml/Wizard/Pages/80-finished.qml:46
643msgid "Your device is now ready to use."
637msgid "Your device is now ready to use."
644−msgstr ""
638+msgstr "Ihr Gerät ist nun einsatzbereit."
645
639
646#: qml/Wizard/Pages/80-finished.qml:53
640#: qml/Wizard/Pages/80-finished.qml:53
647msgid "Finish"
641msgid "Finish"
@@ -748,6 +742,9 @@ msgstr "%1 〉"
748#~ msgid "All"
742#~ msgid "All"
749#~ msgstr "Alle"
743#~ msgstr "Alle"
750
744
745+#~ msgid "Roaming"
746+#~ msgstr "Roaming"
747+
751#~ msgid "Done"
748#~ msgid "Done"
752#~ msgstr "Erledigt"
749#~ msgstr "Erledigt"
753
750
@@ -775,6 +772,9 @@ msgstr "%1 〉"
775#~ msgid "Restart"
772#~ msgid "Restart"
776#~ msgstr "Neustarten"
773#~ msgstr "Neustarten"
777
774
775+#~ msgid "Unlock SIM"
776+#~ msgstr "SIM-Karte entsperren"
777+
778#~ msgid "Manage Scopes"
778#~ msgid "Manage Scopes"
779#~ msgstr "Filter verwalten"
779#~ msgstr "Filter verwalten"
780
780
po/el.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-12-04 09:38+0000\n"
11"PO-Revision-Date: 2015-12-04 09:38+0000\n"
12"Last-Translator: Aggelos Arnaoutis <angelosarn@hotmail.com>\n"
12"Last-Translator: Aggelos Arnaoutis <angelosarn@hotmail.com>\n"
13"Language-Team: Greek <el@li.org>\n"
13"Language-Team: Greek <el@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -179,38 +179,38 @@ msgstr "Επανασύνδεση τώρα!"
179msgid "Close all"
179msgid "Close all"
180msgstr "Κλείσιμο όλων"
180msgstr "Κλείσιμο όλων"
181
181
182−#: qml/Dash/DashPageHeader.qml:266
182+#: qml/Dash/DashPageHeader.qml:270
183msgctxt "Button: Open the Ubuntu Store"
183msgctxt "Button: Open the Ubuntu Store"
184msgid "Store"
184msgid "Store"
185msgstr "Κατάστημα"
185msgstr "Κατάστημα"
186
186
187−#: qml/Dash/DashPageHeader.qml:273
187+#: qml/Dash/DashPageHeader.qml:277
188msgctxt "Button: Start a search in the current dash scope"
188msgctxt "Button: Start a search in the current dash scope"
189msgid "Search"
189msgid "Search"
190msgstr "Αναζήτηση"
190msgstr "Αναζήτηση"
191
191
192−#: qml/Dash/DashPageHeader.qml:283
192+#: qml/Dash/DashPageHeader.qml:287
193msgctxt "Button: Show the current dash scope settings"
193msgctxt "Button: Show the current dash scope settings"
194msgid "Settings"
194msgid "Settings"
195msgstr "Ρυθμίσεις"
195msgstr "Ρυθμίσεις"
196
196
197−#: qml/Dash/DashPageHeader.qml:290
197+#: qml/Dash/DashPageHeader.qml:294
198msgid "Remove from Favorites"
198msgid "Remove from Favorites"
199msgstr "Αφαίρεση από τα αγαπημένα"
199msgstr "Αφαίρεση από τα αγαπημένα"
200
200
201−#: qml/Dash/DashPageHeader.qml:290
201+#: qml/Dash/DashPageHeader.qml:294
202msgid "Add to Favorites"
202msgid "Add to Favorites"
203msgstr "Προσθήκη στα αγαπημένα"
203msgstr "Προσθήκη στα αγαπημένα"
204
204
205−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
205+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
206msgid "See less"
206msgid "See less"
207msgstr "Λιγότερα"
207msgstr "Λιγότερα"
208
208
209−#: qml/Dash/GenericScopeView.qml:587
209+#: qml/Dash/GenericScopeView.qml:565
210msgid "See all"
210msgid "See all"
211msgstr "Εμφάνιση όλων"
211msgstr "Εμφάνιση όλων"
212
212
213−#: qml/Dash/GenericScopeView.qml:649
213+#: qml/Dash/GenericScopeView.qml:627
214msgctxt "Label: Hint for dash search line edit"
214msgctxt "Label: Hint for dash search line edit"
215msgid "Search"
215msgid "Search"
216msgstr "Αναζήτηση"
216msgstr "Αναζήτηση"
@@ -430,14 +430,6 @@ msgctxt "Button: Call back on phone"
430msgid "Call back"
430msgid "Call back"
431msgstr "Επανάκληση"
431msgstr "Επανάκληση"
432
432
433−#: qml/Panel/Indicators/ModemInfoItem.qml:105
434−msgid "Unlock SIM"
435−msgstr "Ξεκλείδωμα SIM"
436−
437−#: qml/Panel/Indicators/RoamingIndication.qml:27
438−msgid "Roaming"
439−msgstr "Περιαγωγή"
440−
441#: qml/Tutorial/TutorialBottom.qml:28
433#: qml/Tutorial/TutorialBottom.qml:28
442msgid "Open special menus"
434msgid "Open special menus"
443msgstr "Άνοιγμα ειδικών μενού"
435msgstr "Άνοιγμα ειδικών μενού"
@@ -756,6 +748,12 @@ msgstr "%1 〉"
756#~ msgid "All"
748#~ msgid "All"
757#~ msgstr "Όλα"
749#~ msgstr "Όλα"
758
750
751+#~ msgid "Unlock SIM"
752+#~ msgstr "Ξεκλείδωμα SIM"
753+
754+#~ msgid "Roaming"
755+#~ msgstr "Περιαγωγή"
756+
759#~ msgid "Favorites"
757#~ msgid "Favorites"
760#~ msgstr "Αγαπημένα"
758#~ msgstr "Αγαπημένα"
761
759
po/en_AU.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2016-02-12 23:22+0000\n"
11"PO-Revision-Date: 2016-02-12 23:22+0000\n"
12"Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
12"Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
13"Language-Team: English (Australia) <en_AU@li.org>\n"
13"Language-Team: English (Australia) <en_AU@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -173,38 +173,38 @@ msgstr "Reconnect now!"
173msgid "Close all"
173msgid "Close all"
174msgstr "Close all"
174msgstr "Close all"
175
175
176−#: qml/Dash/DashPageHeader.qml:266
176+#: qml/Dash/DashPageHeader.qml:270
177msgctxt "Button: Open the Ubuntu Store"
177msgctxt "Button: Open the Ubuntu Store"
178msgid "Store"
178msgid "Store"
179msgstr "Store"
179msgstr "Store"
180
180
181−#: qml/Dash/DashPageHeader.qml:273
181+#: qml/Dash/DashPageHeader.qml:277
182msgctxt "Button: Start a search in the current dash scope"
182msgctxt "Button: Start a search in the current dash scope"
183msgid "Search"
183msgid "Search"
184msgstr "Search"
184msgstr "Search"
185
185
186−#: qml/Dash/DashPageHeader.qml:283
186+#: qml/Dash/DashPageHeader.qml:287
187msgctxt "Button: Show the current dash scope settings"
187msgctxt "Button: Show the current dash scope settings"
188msgid "Settings"
188msgid "Settings"
189msgstr "Settings"
189msgstr "Settings"
190
190
191−#: qml/Dash/DashPageHeader.qml:290
191+#: qml/Dash/DashPageHeader.qml:294
192msgid "Remove from Favorites"
192msgid "Remove from Favorites"
193msgstr "Remove from Favourites"
193msgstr "Remove from Favourites"
194
194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196msgid "Add to Favorites"
196msgid "Add to Favorites"
197msgstr "Add to Favourites"
197msgstr "Add to Favourites"
198
198
199−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
199+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
200msgid "See less"
200msgid "See less"
201msgstr "See less"
201msgstr "See less"
202
202
203−#: qml/Dash/GenericScopeView.qml:587
203+#: qml/Dash/GenericScopeView.qml:565
204msgid "See all"
204msgid "See all"
205msgstr "See all"
205msgstr "See all"
206
206
207−#: qml/Dash/GenericScopeView.qml:649
207+#: qml/Dash/GenericScopeView.qml:627
208msgctxt "Label: Hint for dash search line edit"
208msgctxt "Label: Hint for dash search line edit"
209msgid "Search"
209msgid "Search"
210msgstr "Search"
210msgstr "Search"
@@ -424,14 +424,6 @@ msgctxt "Button: Call back on phone"
424msgid "Call back"
424msgid "Call back"
425msgstr "Call back"
425msgstr "Call back"
426
426
427−#: qml/Panel/Indicators/ModemInfoItem.qml:105
428−msgid "Unlock SIM"
429−msgstr "Unlock SIM"
430−
431−#: qml/Panel/Indicators/RoamingIndication.qml:27
432−msgid "Roaming"
433−msgstr "Roaming"
434−
435#: qml/Tutorial/TutorialBottom.qml:28
427#: qml/Tutorial/TutorialBottom.qml:28
436msgid "Open special menus"
428msgid "Open special menus"
437msgstr "Open special menus"
429msgstr "Open special menus"
@@ -735,6 +727,9 @@ msgstr "%1 〉"
735#~ msgid "All"
727#~ msgid "All"
736#~ msgstr "All"
728#~ msgstr "All"
737
729
730+#~ msgid "Unlock SIM"
731+#~ msgstr "Unlock SIM"
732+
738#~ msgid "Favorites"
733#~ msgid "Favorites"
739#~ msgstr "Favourites"
734#~ msgstr "Favourites"
740
735
@@ -747,6 +742,9 @@ msgstr "%1 〉"
747#~ msgid "Done"
742#~ msgid "Done"
748#~ msgstr "Done"
743#~ msgstr "Done"
749
744
745+#~ msgid "Roaming"
746+#~ msgstr "Roaming"
747+
750#~ msgid "Log out"
748#~ msgid "Log out"
751#~ msgstr "Log out"
749#~ msgstr "Log out"
752
750
po/en_GB.po+20−22
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-04-23 12:59+0000\n"
11"PO-Revision-Date: 2015-04-23 12:59+0000\n"
12"Last-Translator: Andi Chandler <Unknown>\n"
12"Last-Translator: Andi Chandler <Unknown>\n"
13"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
13"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -173,38 +173,38 @@ msgstr "Reconnect now!"
173msgid "Close all"
173msgid "Close all"
174msgstr "Close all"
174msgstr "Close all"
175
175
176−#: qml/Dash/DashPageHeader.qml:266
176+#: qml/Dash/DashPageHeader.qml:270
177msgctxt "Button: Open the Ubuntu Store"
177msgctxt "Button: Open the Ubuntu Store"
178msgid "Store"
178msgid "Store"
179msgstr "Store"
179msgstr "Store"
180
180
181−#: qml/Dash/DashPageHeader.qml:273
181+#: qml/Dash/DashPageHeader.qml:277
182msgctxt "Button: Start a search in the current dash scope"
182msgctxt "Button: Start a search in the current dash scope"
183msgid "Search"
183msgid "Search"
184msgstr "Search"
184msgstr "Search"
185
185
186−#: qml/Dash/DashPageHeader.qml:283
186+#: qml/Dash/DashPageHeader.qml:287
187msgctxt "Button: Show the current dash scope settings"
187msgctxt "Button: Show the current dash scope settings"
188msgid "Settings"
188msgid "Settings"
189msgstr "Settings"
189msgstr "Settings"
190
190
191−#: qml/Dash/DashPageHeader.qml:290
191+#: qml/Dash/DashPageHeader.qml:294
192msgid "Remove from Favorites"
192msgid "Remove from Favorites"
193msgstr "Remove from Favourites"
193msgstr "Remove from Favourites"
194
194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196msgid "Add to Favorites"
196msgid "Add to Favorites"
197msgstr "Add to Favourites"
197msgstr "Add to Favourites"
198
198
199−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
199+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
200msgid "See less"
200msgid "See less"
201msgstr "See less"
201msgstr "See less"
202
202
203−#: qml/Dash/GenericScopeView.qml:587
203+#: qml/Dash/GenericScopeView.qml:565
204msgid "See all"
204msgid "See all"
205msgstr "See all"
205msgstr "See all"
206
206
207−#: qml/Dash/GenericScopeView.qml:649
207+#: qml/Dash/GenericScopeView.qml:627
208msgctxt "Label: Hint for dash search line edit"
208msgctxt "Label: Hint for dash search line edit"
209msgid "Search"
209msgid "Search"
210msgstr "Search"
210msgstr "Search"
@@ -424,14 +424,6 @@ msgctxt "Button: Call back on phone"
424msgid "Call back"
424msgid "Call back"
425msgstr "Call back"
425msgstr "Call back"
426
426
427−#: qml/Panel/Indicators/ModemInfoItem.qml:105
428−msgid "Unlock SIM"
429−msgstr "Unlock SIM"
430−
431−#: qml/Panel/Indicators/RoamingIndication.qml:27
432−msgid "Roaming"
433−msgstr "Roaming"
434−
435#: qml/Tutorial/TutorialBottom.qml:28
427#: qml/Tutorial/TutorialBottom.qml:28
436msgid "Open special menus"
428msgid "Open special menus"
437msgstr "Open special menus"
429msgstr "Open special menus"
@@ -496,7 +488,7 @@ msgstr "Hi!"
496
488
497#: qml/Wizard/Pages/10-welcome.qml:44
489#: qml/Wizard/Pages/10-welcome.qml:44
498msgid "Welcome to your Ubuntu device."
490msgid "Welcome to your Ubuntu device."
499−msgstr ""
491+msgstr "Welcome to your Ubuntu device."
500
492
501#: qml/Wizard/Pages/10-welcome.qml:52
493#: qml/Wizard/Pages/10-welcome.qml:52
502msgid "Let’s get started."
494msgid "Let’s get started."
@@ -527,7 +519,7 @@ msgstr "Lock security"
527
519
528#: qml/Wizard/Pages/30-passwd-type.qml:79
520#: qml/Wizard/Pages/30-passwd-type.qml:79
529msgid "Please select how you’d like to unlock your device."
521msgid "Please select how you’d like to unlock your device."
530−msgstr ""
522+msgstr "Please select how you would like to unlock your device."
531
523
532#: qml/Wizard/Pages/30-passwd-type.qml:102
524#: qml/Wizard/Pages/30-passwd-type.qml:102
533msgctxt "Label: Type of security method"
525msgctxt "Label: Type of security method"
@@ -634,7 +626,7 @@ msgstr "Nice work!"
634
626
635#: qml/Wizard/Pages/80-finished.qml:46
627#: qml/Wizard/Pages/80-finished.qml:46
636msgid "Your device is now ready to use."
628msgid "Your device is now ready to use."
637−msgstr ""
629+msgstr "Your device is now ready to use."
638
630
639#: qml/Wizard/Pages/80-finished.qml:53
631#: qml/Wizard/Pages/80-finished.qml:53
640msgid "Finish"
632msgid "Finish"
@@ -738,6 +730,9 @@ msgstr "%1 〉"
738#~ msgid "All"
730#~ msgid "All"
739#~ msgstr "All"
731#~ msgstr "All"
740
732
733+#~ msgid "Unlock SIM"
734+#~ msgstr "Unlock SIM"
735+
741#~ msgid "Favorites"
736#~ msgid "Favorites"
742#~ msgstr "Favourites"
737#~ msgstr "Favourites"
743
738
@@ -747,6 +742,9 @@ msgstr "%1 〉"
747#~ msgid "Done"
742#~ msgid "Done"
748#~ msgstr "Done"
743#~ msgstr "Done"
749
744
745+#~ msgid "Roaming"
746+#~ msgstr "Roaming"
747+
750#~ msgid "Log out"
748#~ msgid "Log out"
751#~ msgstr "Log out"
749#~ msgstr "Log out"
752
750
po/eo.po+53−28
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-06-06 23:37+0000\n"
11"PO-Revision-Date: 2015-06-06 23:37+0000\n"
12"Last-Translator: Eliovir <Unknown>\n"
12"Last-Translator: Eliovir <Unknown>\n"
13"Language-Team: Esperanto <eo@li.org>\n"
13"Language-Team: Esperanto <eo@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -29,7 +29,7 @@ msgstr ""
29
29
30#: plugins/Unity/Launcher/launcheritem.cpp:52
30#: plugins/Unity/Launcher/launcheritem.cpp:52
31msgid "Quit"
31msgid "Quit"
32−msgstr ""
32+msgstr "Ĉesi"
33
33
34#: plugins/Unity/Launcher/launcheritem.cpp:106
34#: plugins/Unity/Launcher/launcheritem.cpp:106
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
@@ -37,7 +37,7 @@ msgstr ""
37
37
38#: qml/Components/DelayedLockscreen.qml:49
38#: qml/Components/DelayedLockscreen.qml:49
39msgid "Device Locked"
39msgid "Device Locked"
40−msgstr ""
40+msgstr "Aparato ŝlosita"
41
41
42#: qml/Components/DelayedLockscreen.qml:64
42#: qml/Components/DelayedLockscreen.qml:64
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
@@ -171,38 +171,38 @@ msgstr ""
171msgid "Close all"
171msgid "Close all"
172msgstr ""
172msgstr ""
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177−msgstr ""
177+msgstr "Programarejo"
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr "Serĉi"
182msgstr "Serĉi"
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr "Agordoj"
187msgstr "Agordoj"
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr ""
191msgstr ""
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr "Aldoni al favoritoj"
195msgstr "Aldoni al favoritoj"
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr ""
199msgstr ""
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr ""
203msgstr ""
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr "Serĉi"
208msgstr "Serĉi"
@@ -213,7 +213,7 @@ msgstr "Pli…"
213
213
214#: qml/Dash/Previews/PreviewActionCombo.qml:35
214#: qml/Dash/Previews/PreviewActionCombo.qml:35
215msgid "Less..."
215msgid "Less..."
216−msgstr ""
216+msgstr "Malpli..."
217
217
218#: qml/Dash/Previews/PreviewCommentInput.qml:68
218#: qml/Dash/Previews/PreviewCommentInput.qml:68
219#: qml/Dash/Previews/PreviewRatingInput.qml:174
219#: qml/Dash/Previews/PreviewRatingInput.qml:174
@@ -246,11 +246,11 @@ msgstr ""
246
246
247#: qml/Dash/ScopesList.qml:67
247#: qml/Dash/ScopesList.qml:67
248msgid "Manage"
248msgid "Manage"
249−msgstr ""
249+msgstr "Administri"
250
250
251#: qml/Dash/ScopesList.qml:113
251#: qml/Dash/ScopesList.qml:113
252msgid "Home"
252msgid "Home"
253−msgstr ""
253+msgstr "Hejmo"
254
254
255#: qml/Dash/ScopesList.qml:114
255#: qml/Dash/ScopesList.qml:114
256msgid "Also installed"
256msgid "Also installed"
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416msgid "Call back"
416msgid "Call back"
417msgstr ""
417msgstr ""
418
418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr "Retmigrado"
426−
427#: qml/Tutorial/TutorialBottom.qml:28
419#: qml/Tutorial/TutorialBottom.qml:28
428msgid "Open special menus"
420msgid "Open special menus"
429msgstr ""
421msgstr ""
@@ -544,12 +536,12 @@ msgstr ""
544#: qml/Wizard/Pages/30-passwd-type.qml:108
536#: qml/Wizard/Pages/30-passwd-type.qml:108
545msgctxt "Label: Type of security method"
537msgctxt "Label: Type of security method"
546msgid "Passphrase"
538msgid "Passphrase"
547−msgstr ""
539+msgstr "Pasfrazo"
548
540
549#: qml/Wizard/Pages/30-passwd-type.qml:109
541#: qml/Wizard/Pages/30-passwd-type.qml:109
550msgctxt "Label: Description of security method"
542msgctxt "Label: Description of security method"
551msgid "Numbers and letters"
543msgid "Numbers and letters"
552−msgstr ""
544+msgstr "Ciferoj kaj literoj"
553
545
554#: qml/Wizard/Pages/40-wifi.qml:29
546#: qml/Wizard/Pages/40-wifi.qml:29
555msgid "Connect to Wi‑Fi"
547msgid "Connect to Wi‑Fi"
@@ -616,7 +608,7 @@ msgstr ""
616
608
617#: qml/Wizard/Pages/80-finished.qml:39
609#: qml/Wizard/Pages/80-finished.qml:39
618msgid "Nice work!"
610msgid "Nice work!"
619−msgstr ""
611+msgstr "Bone farita!"
620
612
621#: qml/Wizard/Pages/80-finished.qml:46
613#: qml/Wizard/Pages/80-finished.qml:46
622msgid "Your device is now ready to use."
614msgid "Your device is now ready to use."
@@ -663,5 +655,38 @@ msgstr "〈 %1"
663msgid "%1 〉"
655msgid "%1 〉"
664msgstr "%1 〉"
656msgstr "%1 〉"
665
657
658+#~ msgid "Roaming"
659+#~ msgstr "Retmigrado"
660+
666#~ msgid "Welcome to your Ubuntu phone."
661#~ msgid "Welcome to your Ubuntu phone."
667#~ msgstr "Bonvenon al via Ubuntu-telefono."
662#~ msgstr "Bonvenon al via Ubuntu-telefono."
663+
664+#~ msgid "%a %l:%M %p"
665+#~ msgstr "%a %l:%M %p"
666+
667+#~ msgid "Tomorrow %l:%M %p"
668+#~ msgstr "Morgaŭ %l:%M %p"
669+
670+#~ msgid "%l:%M %p"
671+#~ msgstr "%l:%M %p"
672+
673+#~ msgid "Yesterday %l:%M %p"
674+#~ msgstr "Hieraŭ %l:%M %p"
675+
676+#~ msgid "%H:%M"
677+#~ msgstr "%H:%M"
678+
679+#~ msgid "Yesterday %H:%M"
680+#~ msgstr "Hieraŭ %H:%M"
681+
682+#~ msgid "%a %d %b %l:%M %p"
683+#~ msgstr "%a %d %b %l:%M %p"
684+
685+#~ msgid "%a %d %b %H:%M"
686+#~ msgstr "%a %d %b %H:%M"
687+
688+#~ msgid "%a %H:%M"
689+#~ msgstr "%a %H:%M"
690+
691+#~ msgid "Tomorrow %H:%M"
692+#~ msgstr "Morgaŭ %H:%M"
po/es.po+20−22
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2016-01-15 14:48+0000\n"
11"PO-Revision-Date: 2016-01-15 14:48+0000\n"
12"Last-Translator: Víctor R. Ruiz <Unknown>\n"
12"Last-Translator: Víctor R. Ruiz <Unknown>\n"
13"Language-Team: Spanish <es@li.org>\n"
13"Language-Team: Spanish <es@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -179,38 +179,38 @@ msgstr "¡Reconectar ahora!"
179msgid "Close all"
179msgid "Close all"
180msgstr "Cerrar todo"
180msgstr "Cerrar todo"
181
181
182−#: qml/Dash/DashPageHeader.qml:266
182+#: qml/Dash/DashPageHeader.qml:270
183msgctxt "Button: Open the Ubuntu Store"
183msgctxt "Button: Open the Ubuntu Store"
184msgid "Store"
184msgid "Store"
185msgstr "Tienda"
185msgstr "Tienda"
186
186
187−#: qml/Dash/DashPageHeader.qml:273
187+#: qml/Dash/DashPageHeader.qml:277
188msgctxt "Button: Start a search in the current dash scope"
188msgctxt "Button: Start a search in the current dash scope"
189msgid "Search"
189msgid "Search"
190msgstr "Buscar"
190msgstr "Buscar"
191
191
192−#: qml/Dash/DashPageHeader.qml:283
192+#: qml/Dash/DashPageHeader.qml:287
193msgctxt "Button: Show the current dash scope settings"
193msgctxt "Button: Show the current dash scope settings"
194msgid "Settings"
194msgid "Settings"
195msgstr "Ajustes"
195msgstr "Ajustes"
196
196
197−#: qml/Dash/DashPageHeader.qml:290
197+#: qml/Dash/DashPageHeader.qml:294
198msgid "Remove from Favorites"
198msgid "Remove from Favorites"
199msgstr "Quitar de favoritos"
199msgstr "Quitar de favoritos"
200
200
201−#: qml/Dash/DashPageHeader.qml:290
201+#: qml/Dash/DashPageHeader.qml:294
202msgid "Add to Favorites"
202msgid "Add to Favorites"
203msgstr "Añadir a favoritos"
203msgstr "Añadir a favoritos"
204
204
205−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
205+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
206msgid "See less"
206msgid "See less"
207msgstr "Ver menos"
207msgstr "Ver menos"
208
208
209−#: qml/Dash/GenericScopeView.qml:587
209+#: qml/Dash/GenericScopeView.qml:565
210msgid "See all"
210msgid "See all"
211msgstr "Ver todo"
211msgstr "Ver todo"
212
212
213−#: qml/Dash/GenericScopeView.qml:649
213+#: qml/Dash/GenericScopeView.qml:627
214msgctxt "Label: Hint for dash search line edit"
214msgctxt "Label: Hint for dash search line edit"
215msgid "Search"
215msgid "Search"
216msgstr "Búsqueda"
216msgstr "Búsqueda"
@@ -430,14 +430,6 @@ msgctxt "Button: Call back on phone"
430msgid "Call back"
430msgid "Call back"
431msgstr "Devolver llamada"
431msgstr "Devolver llamada"
432
432
433−#: qml/Panel/Indicators/ModemInfoItem.qml:105
434−msgid "Unlock SIM"
435−msgstr "Desbloquear SIM"
436−
437−#: qml/Panel/Indicators/RoamingIndication.qml:27
438−msgid "Roaming"
439−msgstr "Itinerancia"
440−
441#: qml/Tutorial/TutorialBottom.qml:28
433#: qml/Tutorial/TutorialBottom.qml:28
442msgid "Open special menus"
434msgid "Open special menus"
443msgstr "Abrir menús especiales"
435msgstr "Abrir menús especiales"
@@ -502,7 +494,7 @@ msgstr "¡Hola!"
502
494
503#: qml/Wizard/Pages/10-welcome.qml:44
495#: qml/Wizard/Pages/10-welcome.qml:44
504msgid "Welcome to your Ubuntu device."
496msgid "Welcome to your Ubuntu device."
505−msgstr ""
497+msgstr "Bienvenido a su dispositivo Ubuntu."
506
498
507#: qml/Wizard/Pages/10-welcome.qml:52
499#: qml/Wizard/Pages/10-welcome.qml:52
508msgid "Let’s get started."
500msgid "Let’s get started."
@@ -533,7 +525,7 @@ msgstr "Seguridad de bloqueo"
533
525
534#: qml/Wizard/Pages/30-passwd-type.qml:79
526#: qml/Wizard/Pages/30-passwd-type.qml:79
535msgid "Please select how you’d like to unlock your device."
527msgid "Please select how you’d like to unlock your device."
536−msgstr ""
528+msgstr "Por favor, seleccione cómo desea desbloquear el dispositivo."
537
529
538#: qml/Wizard/Pages/30-passwd-type.qml:102
530#: qml/Wizard/Pages/30-passwd-type.qml:102
539msgctxt "Label: Type of security method"
531msgctxt "Label: Type of security method"
@@ -640,7 +632,7 @@ msgstr "¡Buen trabajo!"
640
632
641#: qml/Wizard/Pages/80-finished.qml:46
633#: qml/Wizard/Pages/80-finished.qml:46
642msgid "Your device is now ready to use."
634msgid "Your device is now ready to use."
643−msgstr ""
635+msgstr "El dispositivo ya está listo."
644
636
645#: qml/Wizard/Pages/80-finished.qml:53
637#: qml/Wizard/Pages/80-finished.qml:53
646msgid "Finish"
638msgid "Finish"
@@ -744,9 +736,15 @@ msgstr "%1 〉"
744#~ msgid "Power off"
736#~ msgid "Power off"
745#~ msgstr "Apagar"
737#~ msgstr "Apagar"
746
738
739+#~ msgid "Roaming"
740+#~ msgstr "Itinerancia"
741+
747#~ msgid "All"
742#~ msgid "All"
748#~ msgstr "Todo"
743#~ msgstr "Todo"
749
744
745+#~ msgid "Unlock SIM"
746+#~ msgstr "Desbloquear SIM"
747+
750#~ msgid "Favorites"
748#~ msgid "Favorites"
751#~ msgstr "Favoritos"
749#~ msgstr "Favoritos"
752
750
po/eu.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-07-13 23:29+0000\n"
11"PO-Revision-Date: 2015-07-13 23:29+0000\n"
12"Last-Translator: Ibai Oihanguren Sala <Unknown>\n"
12"Last-Translator: Ibai Oihanguren Sala <Unknown>\n"
13"Language-Team: Basque <eu@li.org>\n"
13"Language-Team: Basque <eu@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:57+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -174,38 +174,38 @@ msgstr ""
174msgid "Close all"
174msgid "Close all"
175msgstr ""
175msgstr ""
176
176
177−#: qml/Dash/DashPageHeader.qml:266
177+#: qml/Dash/DashPageHeader.qml:270
178msgctxt "Button: Open the Ubuntu Store"
178msgctxt "Button: Open the Ubuntu Store"
179msgid "Store"
179msgid "Store"
180msgstr "Denda"
180msgstr "Denda"
181
181
182−#: qml/Dash/DashPageHeader.qml:273
182+#: qml/Dash/DashPageHeader.qml:277
183msgctxt "Button: Start a search in the current dash scope"
183msgctxt "Button: Start a search in the current dash scope"
184msgid "Search"
184msgid "Search"
185msgstr "Bilatu"
185msgstr "Bilatu"
186
186
187−#: qml/Dash/DashPageHeader.qml:283
187+#: qml/Dash/DashPageHeader.qml:287
188msgctxt "Button: Show the current dash scope settings"
188msgctxt "Button: Show the current dash scope settings"
189msgid "Settings"
189msgid "Settings"
190msgstr "Ezarpenak"
190msgstr "Ezarpenak"
191
191
192−#: qml/Dash/DashPageHeader.qml:290
192+#: qml/Dash/DashPageHeader.qml:294
193msgid "Remove from Favorites"
193msgid "Remove from Favorites"
194msgstr "Kendu gogokoetatik"
194msgstr "Kendu gogokoetatik"
195
195
196−#: qml/Dash/DashPageHeader.qml:290
196+#: qml/Dash/DashPageHeader.qml:294
197msgid "Add to Favorites"
197msgid "Add to Favorites"
198msgstr "Gehitu gogokoetara"
198msgstr "Gehitu gogokoetara"
199
199
200−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
200+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
201msgid "See less"
201msgid "See less"
202msgstr "Ikusi gutxiago"
202msgstr "Ikusi gutxiago"
203
203
204−#: qml/Dash/GenericScopeView.qml:587
204+#: qml/Dash/GenericScopeView.qml:565
205msgid "See all"
205msgid "See all"
206msgstr "Ikusi guztiak"
206msgstr "Ikusi guztiak"
207
207
208−#: qml/Dash/GenericScopeView.qml:649
208+#: qml/Dash/GenericScopeView.qml:627
209msgctxt "Label: Hint for dash search line edit"
209msgctxt "Label: Hint for dash search line edit"
210msgid "Search"
210msgid "Search"
211msgstr "Bilatu"
211msgstr "Bilatu"
@@ -423,14 +423,6 @@ msgctxt "Button: Call back on phone"
423msgid "Call back"
423msgid "Call back"
424msgstr ""
424msgstr ""
425
425
426−#: qml/Panel/Indicators/ModemInfoItem.qml:105
427−msgid "Unlock SIM"
428−msgstr "Desblokeatu SIMa"
429−
430−#: qml/Panel/Indicators/RoamingIndication.qml:27
431−msgid "Roaming"
432−msgstr "Ibiltaritza"
433−
434#: qml/Tutorial/TutorialBottom.qml:28
426#: qml/Tutorial/TutorialBottom.qml:28
435msgid "Open special menus"
427msgid "Open special menus"
436msgstr "Ireki menu bereziak"
428msgstr "Ireki menu bereziak"
@@ -749,6 +741,12 @@ msgstr "%1 〉"
749#~ msgid "All"
741#~ msgid "All"
750#~ msgstr "Guztiak"
742#~ msgstr "Guztiak"
751
743
744+#~ msgid "Unlock SIM"
745+#~ msgstr "Desblokeatu SIMa"
746+
747+#~ msgid "Roaming"
748+#~ msgstr "Ibiltaritza"
749+
752#~ msgid "Favorites"
750#~ msgid "Favorites"
753#~ msgstr "Gogokoak"
751#~ msgstr "Gogokoak"
754
752
po/fa.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-07-11 15:43+0000\n"
11"PO-Revision-Date: 2015-07-11 15:43+0000\n"
12"Last-Translator: Danial Behzadi <dani.behzi@gmail.com>\n"
12"Last-Translator: Danial Behzadi <dani.behzi@gmail.com>\n"
13"Language-Team: Persian <fa@li.org>\n"
13"Language-Team: Persian <fa@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -174,38 +174,38 @@ msgstr "هم‌اکنون دوباره وصل شود"
174msgid "Close all"
174msgid "Close all"
175msgstr "بستن همه"
175msgstr "بستن همه"
176
176
177−#: qml/Dash/DashPageHeader.qml:266
177+#: qml/Dash/DashPageHeader.qml:270
178msgctxt "Button: Open the Ubuntu Store"
178msgctxt "Button: Open the Ubuntu Store"
179msgid "Store"
179msgid "Store"
180msgstr "ذخیره"
180msgstr "ذخیره"
181
181
182−#: qml/Dash/DashPageHeader.qml:273
182+#: qml/Dash/DashPageHeader.qml:277
183msgctxt "Button: Start a search in the current dash scope"
183msgctxt "Button: Start a search in the current dash scope"
184msgid "Search"
184msgid "Search"
185msgstr "جست‌وجو"
185msgstr "جست‌وجو"
186
186
187−#: qml/Dash/DashPageHeader.qml:283
187+#: qml/Dash/DashPageHeader.qml:287
188msgctxt "Button: Show the current dash scope settings"
188msgctxt "Button: Show the current dash scope settings"
189msgid "Settings"
189msgid "Settings"
190msgstr "تنظیمات"
190msgstr "تنظیمات"
191
191
192−#: qml/Dash/DashPageHeader.qml:290
192+#: qml/Dash/DashPageHeader.qml:294
193msgid "Remove from Favorites"
193msgid "Remove from Favorites"
194msgstr "برداشتن از برگزیده‌ها"
194msgstr "برداشتن از برگزیده‌ها"
195
195
196−#: qml/Dash/DashPageHeader.qml:290
196+#: qml/Dash/DashPageHeader.qml:294
197msgid "Add to Favorites"
197msgid "Add to Favorites"
198msgstr "افزودن به برگزیده‌ها"
198msgstr "افزودن به برگزیده‌ها"
199
199
200−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
200+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
201msgid "See less"
201msgid "See less"
202msgstr "کم‌تر ببینید"
202msgstr "کم‌تر ببینید"
203
203
204−#: qml/Dash/GenericScopeView.qml:587
204+#: qml/Dash/GenericScopeView.qml:565
205msgid "See all"
205msgid "See all"
206msgstr "دیدن همه"
206msgstr "دیدن همه"
207
207
208−#: qml/Dash/GenericScopeView.qml:649
208+#: qml/Dash/GenericScopeView.qml:627
209msgctxt "Label: Hint for dash search line edit"
209msgctxt "Label: Hint for dash search line edit"
210msgid "Search"
210msgid "Search"
211msgstr "جست‌وجو"
211msgstr "جست‌وجو"
@@ -420,14 +420,6 @@ msgctxt "Button: Call back on phone"
420msgid "Call back"
420msgid "Call back"
421msgstr "پاسخ تماس"
421msgstr "پاسخ تماس"
422
422
423−#: qml/Panel/Indicators/ModemInfoItem.qml:105
424−msgid "Unlock SIM"
425−msgstr "باز کردن قفل سیم‌کارت"
426−
427−#: qml/Panel/Indicators/RoamingIndication.qml:27
428−msgid "Roaming"
429−msgstr "رومینگ"
430−
431#: qml/Tutorial/TutorialBottom.qml:28
423#: qml/Tutorial/TutorialBottom.qml:28
432msgid "Open special menus"
424msgid "Open special menus"
433msgstr "باز کردن فهرست‌های مخصوص"
425msgstr "باز کردن فهرست‌های مخصوص"
@@ -733,6 +725,9 @@ msgstr "%1 〉"
733#~ msgid "All"
725#~ msgid "All"
734#~ msgstr "همه"
726#~ msgstr "همه"
735
727
728+#~ msgid "Unlock SIM"
729+#~ msgstr "باز کردن قفل سیم‌کارت"
730+
736#~ msgid "Favorites"
731#~ msgid "Favorites"
737#~ msgstr "برگزیده‌ها"
732#~ msgstr "برگزیده‌ها"
738
733
@@ -745,6 +740,9 @@ msgstr "%1 〉"
745#~ msgid "Done"
740#~ msgid "Done"
746#~ msgstr "انجام شد"
741#~ msgstr "انجام شد"
747
742
743+#~ msgid "Roaming"
744+#~ msgstr "رومینگ"
745+
748#~ msgid "Power"
746#~ msgid "Power"
749#~ msgstr "توان"
747#~ msgstr "توان"
750
748
po/fi.po+20−22
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-07-04 18:32+0000\n"
11"PO-Revision-Date: 2015-07-04 18:32+0000\n"
12"Last-Translator: Jiri Grönroos <Unknown>\n"
12"Last-Translator: Jiri Grönroos <Unknown>\n"
13"Language-Team: Finnish <fi@li.org>\n"
13"Language-Team: Finnish <fi@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -177,38 +177,38 @@ msgstr "Yhdistä uudelleen nyt!"
177msgid "Close all"
177msgid "Close all"
178msgstr "Sulje kaikki"
178msgstr "Sulje kaikki"
179
179
180−#: qml/Dash/DashPageHeader.qml:266
180+#: qml/Dash/DashPageHeader.qml:270
181msgctxt "Button: Open the Ubuntu Store"
181msgctxt "Button: Open the Ubuntu Store"
182msgid "Store"
182msgid "Store"
183msgstr "Kauppa"
183msgstr "Kauppa"
184
184
185−#: qml/Dash/DashPageHeader.qml:273
185+#: qml/Dash/DashPageHeader.qml:277
186msgctxt "Button: Start a search in the current dash scope"
186msgctxt "Button: Start a search in the current dash scope"
187msgid "Search"
187msgid "Search"
188msgstr "Etsi"
188msgstr "Etsi"
189
189
190−#: qml/Dash/DashPageHeader.qml:283
190+#: qml/Dash/DashPageHeader.qml:287
191msgctxt "Button: Show the current dash scope settings"
191msgctxt "Button: Show the current dash scope settings"
192msgid "Settings"
192msgid "Settings"
193msgstr "Asetukset"
193msgstr "Asetukset"
194
194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196msgid "Remove from Favorites"
196msgid "Remove from Favorites"
197msgstr "Poista suosikeista"
197msgstr "Poista suosikeista"
198
198
199−#: qml/Dash/DashPageHeader.qml:290
199+#: qml/Dash/DashPageHeader.qml:294
200msgid "Add to Favorites"
200msgid "Add to Favorites"
201msgstr "Lisää suosikkeihin"
201msgstr "Lisää suosikkeihin"
202
202
203−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
203+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
204msgid "See less"
204msgid "See less"
205msgstr "Näytä vähemmän"
205msgstr "Näytä vähemmän"
206
206
207−#: qml/Dash/GenericScopeView.qml:587
207+#: qml/Dash/GenericScopeView.qml:565
208msgid "See all"
208msgid "See all"
209msgstr "Näytä kaikki"
209msgstr "Näytä kaikki"
210
210
211−#: qml/Dash/GenericScopeView.qml:649
211+#: qml/Dash/GenericScopeView.qml:627
212msgctxt "Label: Hint for dash search line edit"
212msgctxt "Label: Hint for dash search line edit"
213msgid "Search"
213msgid "Search"
214msgstr "Etsi"
214msgstr "Etsi"
@@ -428,14 +428,6 @@ msgctxt "Button: Call back on phone"
428msgid "Call back"
428msgid "Call back"
429msgstr "Soita takaisin"
429msgstr "Soita takaisin"
430
430
431−#: qml/Panel/Indicators/ModemInfoItem.qml:105
432−msgid "Unlock SIM"
433−msgstr "Avaa SIM-kortin lukitus"
434−
435−#: qml/Panel/Indicators/RoamingIndication.qml:27
436−msgid "Roaming"
437−msgstr "Verkkovierailu"
438−
439#: qml/Tutorial/TutorialBottom.qml:28
431#: qml/Tutorial/TutorialBottom.qml:28
440msgid "Open special menus"
432msgid "Open special menus"
441msgstr "Avaa erikoisvalikot"
433msgstr "Avaa erikoisvalikot"
@@ -500,7 +492,7 @@ msgstr "Hei!"
500
492
501#: qml/Wizard/Pages/10-welcome.qml:44
493#: qml/Wizard/Pages/10-welcome.qml:44
502msgid "Welcome to your Ubuntu device."
494msgid "Welcome to your Ubuntu device."
503−msgstr ""
495+msgstr "Tervetuloa Ubuntu-laitteesi pariin."
504
496
505#: qml/Wizard/Pages/10-welcome.qml:52
497#: qml/Wizard/Pages/10-welcome.qml:52
506msgid "Let’s get started."
498msgid "Let’s get started."
@@ -533,7 +525,7 @@ msgstr "Lukitusturva"
533
525
534#: qml/Wizard/Pages/30-passwd-type.qml:79
526#: qml/Wizard/Pages/30-passwd-type.qml:79
535msgid "Please select how you’d like to unlock your device."
527msgid "Please select how you’d like to unlock your device."
536−msgstr ""
528+msgstr "Valitse kuinka haluat avata laitteen lukituksen."
537
529
538#: qml/Wizard/Pages/30-passwd-type.qml:102
530#: qml/Wizard/Pages/30-passwd-type.qml:102
539msgctxt "Label: Type of security method"
531msgctxt "Label: Type of security method"
@@ -639,7 +631,7 @@ msgstr "Hyvä!"
639
631
640#: qml/Wizard/Pages/80-finished.qml:46
632#: qml/Wizard/Pages/80-finished.qml:46
641msgid "Your device is now ready to use."
633msgid "Your device is now ready to use."
642−msgstr ""
634+msgstr "Laitteesi on nyt valmis käytettäväksi."
643
635
644#: qml/Wizard/Pages/80-finished.qml:53
636#: qml/Wizard/Pages/80-finished.qml:53
645msgid "Finish"
637msgid "Finish"
@@ -737,6 +729,9 @@ msgstr "%1 〉"
737#~ "Hallitset nyt reunaeleet, joten voit aloittaa puhelimen "
729#~ "Hallitset nyt reunaeleet, joten voit aloittaa puhelimen "
738#~ "käytön<br><br>Napauta näyttöä aloittaaksesi"
730#~ "käytön<br><br>Napauta näyttöä aloittaaksesi"
739
731
732+#~ msgid "Unlock SIM"
733+#~ msgstr "Avaa SIM-kortin lukitus"
734+
740#~ msgid "All"
735#~ msgid "All"
741#~ msgstr "Kaikki"
736#~ msgstr "Kaikki"
742
737
@@ -752,6 +747,9 @@ msgstr "%1 〉"
752#~ msgid "Done"
747#~ msgid "Done"
753#~ msgstr "Valmis"
748#~ msgstr "Valmis"
754
749
750+#~ msgid "Roaming"
751+#~ msgstr "Verkkovierailu"
752+
755#~ msgid "Log out"
753#~ msgid "Log out"
756#~ msgstr "Kirjaudu ulos"
754#~ msgstr "Kirjaudu ulos"
757
755
po/fo.po+11−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2014-01-14 20:08+0000\n"
11"PO-Revision-Date: 2014-01-14 20:08+0000\n"
12"Last-Translator: Jógvan Olsen <jeggy@jebster.net>\n"
12"Last-Translator: Jógvan Olsen <jeggy@jebster.net>\n"
13"Language-Team: Faroese <fo@li.org>\n"
13"Language-Team: Faroese <fo@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171msgid "Close all"
171msgid "Close all"
172msgstr ""
172msgstr ""
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177msgstr ""
177msgstr ""
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr ""
182msgstr ""
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr ""
187msgstr ""
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr ""
191msgstr ""
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr ""
195msgstr ""
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr ""
199msgstr ""
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr ""
203msgstr ""
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr ""
208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416msgid "Call back"
416msgid "Call back"
417msgstr ""
417msgstr ""
418
418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427#: qml/Tutorial/TutorialBottom.qml:28
419#: qml/Tutorial/TutorialBottom.qml:28
428msgid "Open special menus"
420msgid "Open special menus"
429msgstr ""
421msgstr ""
po/fr.po+22−22
@@ -7,16 +7,16 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11−"PO-Revision-Date: 2016-02-13 09:30+0000\n"
11+"PO-Revision-Date: 2016-02-28 17:22+0000\n"
12"Last-Translator: Anne <anneonyme017@gmail.com>\n"
12"Last-Translator: Anne <anneonyme017@gmail.com>\n"
13"Language-Team: French <fr@li.org>\n"
13"Language-Team: French <fr@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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -181,38 +181,38 @@ msgstr "Se reconnecter maintenant !"
181msgid "Close all"
181msgid "Close all"
182msgstr "Tout fermer"
182msgstr "Tout fermer"
183
183
184−#: qml/Dash/DashPageHeader.qml:266
184+#: qml/Dash/DashPageHeader.qml:270
185msgctxt "Button: Open the Ubuntu Store"
185msgctxt "Button: Open the Ubuntu Store"
186msgid "Store"
186msgid "Store"
187msgstr "Logithèque"
187msgstr "Logithèque"
188
188
189−#: qml/Dash/DashPageHeader.qml:273
189+#: qml/Dash/DashPageHeader.qml:277
190msgctxt "Button: Start a search in the current dash scope"
190msgctxt "Button: Start a search in the current dash scope"
191msgid "Search"
191msgid "Search"
192msgstr "Rechercher"
192msgstr "Rechercher"
193
193
194−#: qml/Dash/DashPageHeader.qml:283
194+#: qml/Dash/DashPageHeader.qml:287
195msgctxt "Button: Show the current dash scope settings"
195msgctxt "Button: Show the current dash scope settings"
196msgid "Settings"
196msgid "Settings"
197msgstr "Paramètres"
197msgstr "Paramètres"
198
198
199−#: qml/Dash/DashPageHeader.qml:290
199+#: qml/Dash/DashPageHeader.qml:294
200msgid "Remove from Favorites"
200msgid "Remove from Favorites"
201msgstr "Retirer des favoris"
201msgstr "Retirer des favoris"
202
202
203−#: qml/Dash/DashPageHeader.qml:290
203+#: qml/Dash/DashPageHeader.qml:294
204msgid "Add to Favorites"
204msgid "Add to Favorites"
205msgstr "Ajouter aux favoris"
205msgstr "Ajouter aux favoris"
206
206
207−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
207+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
208msgid "See less"
208msgid "See less"
209msgstr "Voir moins"
209msgstr "Voir moins"
210
210
211−#: qml/Dash/GenericScopeView.qml:587
211+#: qml/Dash/GenericScopeView.qml:565
212msgid "See all"
212msgid "See all"
213msgstr "Tout voir"
213msgstr "Tout voir"
214
214
215−#: qml/Dash/GenericScopeView.qml:649
215+#: qml/Dash/GenericScopeView.qml:627
216msgctxt "Label: Hint for dash search line edit"
216msgctxt "Label: Hint for dash search line edit"
217msgid "Search"
217msgid "Search"
218msgstr "Rechercher"
218msgstr "Rechercher"
@@ -434,14 +434,6 @@ msgctxt "Button: Call back on phone"
434msgid "Call back"
434msgid "Call back"
435msgstr "Rappeler"
435msgstr "Rappeler"
436
436
437−#: qml/Panel/Indicators/ModemInfoItem.qml:105
438−msgid "Unlock SIM"
439−msgstr "Déverrouiller la carte SIM"
440−
441−#: qml/Panel/Indicators/RoamingIndication.qml:27
442−msgid "Roaming"
443−msgstr "Roaming"
444−
445#: qml/Tutorial/TutorialBottom.qml:28
437#: qml/Tutorial/TutorialBottom.qml:28
446msgid "Open special menus"
438msgid "Open special menus"
447msgstr "Ouvrir les menus spéciaux"
439msgstr "Ouvrir les menus spéciaux"
@@ -506,7 +498,7 @@ msgstr "Salut !"
506
498
507#: qml/Wizard/Pages/10-welcome.qml:44
499#: qml/Wizard/Pages/10-welcome.qml:44
508msgid "Welcome to your Ubuntu device."
500msgid "Welcome to your Ubuntu device."
509−msgstr ""
501+msgstr "Bienvenue sur votre appareil Ubuntu."
510
502
511#: qml/Wizard/Pages/10-welcome.qml:52
503#: qml/Wizard/Pages/10-welcome.qml:52
512msgid "Let’s get started."
504msgid "Let’s get started."
@@ -540,6 +532,8 @@ msgstr "Sécurité de verrouillage"
540#: qml/Wizard/Pages/30-passwd-type.qml:79
532#: qml/Wizard/Pages/30-passwd-type.qml:79
541msgid "Please select how you’d like to unlock your device."
533msgid "Please select how you’d like to unlock your device."
542msgstr ""
534msgstr ""
535+"Veuillez sélectionner la façon dont vous souhaitez déverrouiller votre "
536+"appareil."
543
537
544#: qml/Wizard/Pages/30-passwd-type.qml:102
538#: qml/Wizard/Pages/30-passwd-type.qml:102
545msgctxt "Label: Type of security method"
539msgctxt "Label: Type of security method"
@@ -649,7 +643,7 @@ msgstr "Beau travail !"
649
643
650#: qml/Wizard/Pages/80-finished.qml:46
644#: qml/Wizard/Pages/80-finished.qml:46
651msgid "Your device is now ready to use."
645msgid "Your device is now ready to use."
652−msgstr ""
646+msgstr "Votre appareil est maintenant prêt à être utilisé."
653
647
654#: qml/Wizard/Pages/80-finished.qml:53
648#: qml/Wizard/Pages/80-finished.qml:53
655msgid "Finish"
649msgid "Finish"
@@ -754,6 +748,9 @@ msgstr "%1 〉"
754#~ "Faites glisser votre doigt à partir du bord gauche pour afficher le lanceur "
748#~ "Faites glisser votre doigt à partir du bord gauche pour afficher le lanceur "
755#~ "d'applications."
749#~ "d'applications."
756
750
751+#~ msgid "Unlock SIM"
752+#~ msgstr "Déverrouiller la carte SIM"
753+
757#~ msgid "Power off"
754#~ msgid "Power off"
758#~ msgstr "Éteindre"
755#~ msgstr "Éteindre"
759
756
@@ -769,6 +766,9 @@ msgstr "%1 〉"
769#~ msgid "Favorites"
766#~ msgid "Favorites"
770#~ msgstr "Favorites"
767#~ msgstr "Favorites"
771
768
769+#~ msgid "Roaming"
770+#~ msgstr "Roaming"
771+
772#~ msgid "Log out"
772#~ msgid "Log out"
773#~ msgstr "Se déconnecter"
773#~ msgstr "Se déconnecter"
774
774
po/ga.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2016-01-25 11:33+0000\n"
11"PO-Revision-Date: 2016-01-25 11:33+0000\n"
12"Last-Translator: Joshua Kiley <Unknown>\n"
12"Last-Translator: Joshua Kiley <Unknown>\n"
13"Language-Team: Irish <ga@li.org>\n"
13"Language-Team: Irish <ga@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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=3; plural=n==1 ? 0 : n==2 ? 1 : 2;\n"
17"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n==2 ? 1 : 2;\n"
18−"X-Launchpad-Export-Date: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -174,38 +174,38 @@ msgstr "Athnasc anois!"
174msgid "Close all"
174msgid "Close all"
175msgstr "Dún Gach Rud"
175msgstr "Dún Gach Rud"
176
176
177−#: qml/Dash/DashPageHeader.qml:266
177+#: qml/Dash/DashPageHeader.qml:270
178msgctxt "Button: Open the Ubuntu Store"
178msgctxt "Button: Open the Ubuntu Store"
179msgid "Store"
179msgid "Store"
180msgstr "Siopa"
180msgstr "Siopa"
181
181
182−#: qml/Dash/DashPageHeader.qml:273
182+#: qml/Dash/DashPageHeader.qml:277
183msgctxt "Button: Start a search in the current dash scope"
183msgctxt "Button: Start a search in the current dash scope"
184msgid "Search"
184msgid "Search"
185msgstr "Cuardach"
185msgstr "Cuardach"
186
186
187−#: qml/Dash/DashPageHeader.qml:283
187+#: qml/Dash/DashPageHeader.qml:287
188msgctxt "Button: Show the current dash scope settings"
188msgctxt "Button: Show the current dash scope settings"
189msgid "Settings"
189msgid "Settings"
190msgstr "Socruithe"
190msgstr "Socruithe"
191
191
192−#: qml/Dash/DashPageHeader.qml:290
192+#: qml/Dash/DashPageHeader.qml:294
193msgid "Remove from Favorites"
193msgid "Remove from Favorites"
194msgstr "Bain ó Cheanáin"
194msgstr "Bain ó Cheanáin"
195
195
196−#: qml/Dash/DashPageHeader.qml:290
196+#: qml/Dash/DashPageHeader.qml:294
197msgid "Add to Favorites"
197msgid "Add to Favorites"
198msgstr "Cuir le Ceanáin"
198msgstr "Cuir le Ceanáin"
199
199
200−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
200+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
201msgid "See less"
201msgid "See less"
202msgstr "Taispeáin níos lú"
202msgstr "Taispeáin níos lú"
203
203
204−#: qml/Dash/GenericScopeView.qml:587
204+#: qml/Dash/GenericScopeView.qml:565
205msgid "See all"
205msgid "See all"
206msgstr "Taispeáin gach rud"
206msgstr "Taispeáin gach rud"
207
207
208−#: qml/Dash/GenericScopeView.qml:649
208+#: qml/Dash/GenericScopeView.qml:627
209msgctxt "Label: Hint for dash search line edit"
209msgctxt "Label: Hint for dash search line edit"
210msgid "Search"
210msgid "Search"
211msgstr "Cuardach"
211msgstr "Cuardach"
@@ -426,14 +426,6 @@ msgctxt "Button: Call back on phone"
426msgid "Call back"
426msgid "Call back"
427msgstr "Glaoch Ar Ais"
427msgstr "Glaoch Ar Ais"
428
428
429−#: qml/Panel/Indicators/ModemInfoItem.qml:105
430−msgid "Unlock SIM"
431−msgstr "Díghlasail an SIM"
432−
433−#: qml/Panel/Indicators/RoamingIndication.qml:27
434−msgid "Roaming"
435−msgstr "Fánaíocht"
436−
437#: qml/Tutorial/TutorialBottom.qml:28
429#: qml/Tutorial/TutorialBottom.qml:28
438msgid "Open special menus"
430msgid "Open special menus"
439msgstr "Oscail Roghchláir Speisialta"
431msgstr "Oscail Roghchláir Speisialta"
@@ -680,6 +672,12 @@ msgstr ""
680msgid "%1 〉"
672msgid "%1 〉"
681msgstr ""
673msgstr ""
682
674
675+#~ msgid "Unlock SIM"
676+#~ msgstr "Díghlasail an SIM"
677+
678+#~ msgid "Roaming"
679+#~ msgstr "Fánaíocht"
680+
683#~ msgid "Welcome to your Ubuntu phone."
681#~ msgid "Welcome to your Ubuntu phone."
684#~ msgstr "Tá fáilte romhat chuig do fhón Ubuntu."
682#~ msgstr "Tá fáilte romhat chuig do fhón Ubuntu."
685
683
po/gd.po+20−21
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-07-16 10:56+0000\n"
11"PO-Revision-Date: 2015-07-16 10:56+0000\n"
12"Last-Translator: GunChleoc <Unknown>\n"
12"Last-Translator: GunChleoc <Unknown>\n"
13"Language-Team: Fòram na Gàidhlig\n"
13"Language-Team: Fòram na Gàidhlig\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : "
17"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : "
18"(n > 2 && n < 20) ? 2 : 3;\n"
18"(n > 2 && n < 20) ? 2 : 3;\n"
19−"X-Launchpad-Export-Date: 2016-02-16 05:37+0000\n"
19+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
20−"X-Generator: Launchpad (build 17925)\n"
20+"X-Generator: Launchpad (build 17936)\n"
21"Language: gd\n"
21"Language: gd\n"
22
22
23#: plugins/IntegratedLightDM/Greeter.cpp:112
23#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -183,38 +183,38 @@ msgstr "Ath-cheangail an-dràsta!"
183msgid "Close all"
183msgid "Close all"
184msgstr "Dùin na h-uile"
184msgstr "Dùin na h-uile"
185
185
186−#: qml/Dash/DashPageHeader.qml:266
186+#: qml/Dash/DashPageHeader.qml:270
187msgctxt "Button: Open the Ubuntu Store"
187msgctxt "Button: Open the Ubuntu Store"
188msgid "Store"
188msgid "Store"
189msgstr "Am bùth"
189msgstr "Am bùth"
190
190
191−#: qml/Dash/DashPageHeader.qml:273
191+#: qml/Dash/DashPageHeader.qml:277
192msgctxt "Button: Start a search in the current dash scope"
192msgctxt "Button: Start a search in the current dash scope"
193msgid "Search"
193msgid "Search"
194msgstr "Lorg"
194msgstr "Lorg"
195
195
196−#: qml/Dash/DashPageHeader.qml:283
196+#: qml/Dash/DashPageHeader.qml:287
197msgctxt "Button: Show the current dash scope settings"
197msgctxt "Button: Show the current dash scope settings"
198msgid "Settings"
198msgid "Settings"
199msgstr "Roghainnean"
199msgstr "Roghainnean"
200
200
201−#: qml/Dash/DashPageHeader.qml:290
201+#: qml/Dash/DashPageHeader.qml:294
202msgid "Remove from Favorites"
202msgid "Remove from Favorites"
203msgstr "Thoir air falbh o na h-annsachdan"
203msgstr "Thoir air falbh o na h-annsachdan"
204
204
205−#: qml/Dash/DashPageHeader.qml:290
205+#: qml/Dash/DashPageHeader.qml:294
206msgid "Add to Favorites"
206msgid "Add to Favorites"
207msgstr "Cuir ris na h-annsachdan"
207msgstr "Cuir ris na h-annsachdan"
208
208
209−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
209+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
210msgid "See less"
210msgid "See less"
211msgstr "Seall nas lugha"
211msgstr "Seall nas lugha"
212
212
213−#: qml/Dash/GenericScopeView.qml:587
213+#: qml/Dash/GenericScopeView.qml:565
214msgid "See all"
214msgid "See all"
215msgstr "Seall na h-uile"
215msgstr "Seall na h-uile"
216
216
217−#: qml/Dash/GenericScopeView.qml:649
217+#: qml/Dash/GenericScopeView.qml:627
218msgctxt "Label: Hint for dash search line edit"
218msgctxt "Label: Hint for dash search line edit"
219msgid "Search"
219msgid "Search"
220msgstr "Lorg"
220msgstr "Lorg"
@@ -443,14 +443,6 @@ msgctxt "Button: Call back on phone"
443msgid "Call back"
443msgid "Call back"
444msgstr "Fònaig air ais"
444msgstr "Fònaig air ais"
445
445
446−#: qml/Panel/Indicators/ModemInfoItem.qml:105
447−msgid "Unlock SIM"
448−msgstr "Thoir a' ghlas far an SIM"
449−
450−#: qml/Panel/Indicators/RoamingIndication.qml:27
451−msgid "Roaming"
452−msgstr "Air fàrsan"
453−
454#: qml/Tutorial/TutorialBottom.qml:28
446#: qml/Tutorial/TutorialBottom.qml:28
455msgid "Open special menus"
447msgid "Open special menus"
456msgstr "Fosgail na clàran-taice sònraichte"
448msgstr "Fosgail na clàran-taice sònraichte"
@@ -515,7 +507,7 @@ msgstr "Shin thu!"
515
507
516#: qml/Wizard/Pages/10-welcome.qml:44
508#: qml/Wizard/Pages/10-welcome.qml:44
517msgid "Welcome to your Ubuntu device."
509msgid "Welcome to your Ubuntu device."
518−msgstr ""
510+msgstr "Fàilte dhan uidheam Ubuntu agad."
519
511
520#: qml/Wizard/Pages/10-welcome.qml:52
512#: qml/Wizard/Pages/10-welcome.qml:52
521msgid "Let’s get started."
513msgid "Let’s get started."
@@ -547,6 +539,7 @@ msgstr "Glas tèarainteachd"
547#: qml/Wizard/Pages/30-passwd-type.qml:79
539#: qml/Wizard/Pages/30-passwd-type.qml:79
548msgid "Please select how you’d like to unlock your device."
540msgid "Please select how you’d like to unlock your device."
549msgstr ""
541msgstr ""
542+"Tagh an dòigh sa tha thu airson a' ghlas a thoirt far an uidheam agad."
550
543
551#: qml/Wizard/Pages/30-passwd-type.qml:102
544#: qml/Wizard/Pages/30-passwd-type.qml:102
552msgctxt "Label: Type of security method"
545msgctxt "Label: Type of security method"
@@ -658,7 +651,7 @@ msgstr "Shin thu!"
658
651
659#: qml/Wizard/Pages/80-finished.qml:46
652#: qml/Wizard/Pages/80-finished.qml:46
660msgid "Your device is now ready to use."
653msgid "Your device is now ready to use."
661−msgstr ""
654+msgstr "Tha an t-uidheam agad ullamh a-nis."
662
655
663#: qml/Wizard/Pages/80-finished.qml:53
656#: qml/Wizard/Pages/80-finished.qml:53
664msgid "Finish"
657msgid "Finish"
@@ -765,6 +758,9 @@ msgstr "%1 〉"
765#~ msgid "All"
758#~ msgid "All"
766#~ msgstr "Na h-uile"
759#~ msgstr "Na h-uile"
767
760
761+#~ msgid "Unlock SIM"
762+#~ msgstr "Thoir a' ghlas far an SIM"
763+
768#~ msgid "Favorites"
764#~ msgid "Favorites"
769#~ msgstr "Annsachdan"
765#~ msgstr "Annsachdan"
770
766
@@ -777,6 +773,9 @@ msgstr "%1 〉"
777#~ msgid "Done"
773#~ msgid "Done"
778#~ msgstr "Deiseil"
774#~ msgstr "Deiseil"
779
775
776+#~ msgid "Roaming"
777+#~ msgstr "Air fàrsan"
778+
780#~ msgid "Log out"
779#~ msgid "Log out"
781#~ msgstr "Clàraich a-mach"
780#~ msgstr "Clàraich a-mach"
782
781
po/gl.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2016-01-15 14:56+0000\n"
11"PO-Revision-Date: 2016-01-15 14:56+0000\n"
12"Last-Translator: Marcos Lans <Unknown>\n"
12"Last-Translator: Marcos Lans <Unknown>\n"
13"Language-Team: Galician <gl@li.org>\n"
13"Language-Team: Galician <gl@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -173,38 +173,38 @@ msgstr "Reconectar agora."
173msgid "Close all"
173msgid "Close all"
174msgstr "Pechar todo"
174msgstr "Pechar todo"
175
175
176−#: qml/Dash/DashPageHeader.qml:266
176+#: qml/Dash/DashPageHeader.qml:270
177msgctxt "Button: Open the Ubuntu Store"
177msgctxt "Button: Open the Ubuntu Store"
178msgid "Store"
178msgid "Store"
179msgstr "Tenda"
179msgstr "Tenda"
180
180
181−#: qml/Dash/DashPageHeader.qml:273
181+#: qml/Dash/DashPageHeader.qml:277
182msgctxt "Button: Start a search in the current dash scope"
182msgctxt "Button: Start a search in the current dash scope"
183msgid "Search"
183msgid "Search"
184msgstr "Buscar"
184msgstr "Buscar"
185
185
186−#: qml/Dash/DashPageHeader.qml:283
186+#: qml/Dash/DashPageHeader.qml:287
187msgctxt "Button: Show the current dash scope settings"
187msgctxt "Button: Show the current dash scope settings"
188msgid "Settings"
188msgid "Settings"
189msgstr "Axustes"
189msgstr "Axustes"
190
190
191−#: qml/Dash/DashPageHeader.qml:290
191+#: qml/Dash/DashPageHeader.qml:294
192msgid "Remove from Favorites"
192msgid "Remove from Favorites"
193msgstr "Eliminar dos favoritos"
193msgstr "Eliminar dos favoritos"
194
194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196msgid "Add to Favorites"
196msgid "Add to Favorites"
197msgstr "Engadir aos favoritos"
197msgstr "Engadir aos favoritos"
198
198
199−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
199+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
200msgid "See less"
200msgid "See less"
201msgstr "Ver menos"
201msgstr "Ver menos"
202
202
203−#: qml/Dash/GenericScopeView.qml:587
203+#: qml/Dash/GenericScopeView.qml:565
204msgid "See all"
204msgid "See all"
205msgstr "Ver todo"
205msgstr "Ver todo"
206
206
207−#: qml/Dash/GenericScopeView.qml:649
207+#: qml/Dash/GenericScopeView.qml:627
208msgctxt "Label: Hint for dash search line edit"
208msgctxt "Label: Hint for dash search line edit"
209msgid "Search"
209msgid "Search"
210msgstr "Buscar"
210msgstr "Buscar"
@@ -424,14 +424,6 @@ msgctxt "Button: Call back on phone"
424msgid "Call back"
424msgid "Call back"
425msgstr "Chamar de volta"
425msgstr "Chamar de volta"
426
426
427−#: qml/Panel/Indicators/ModemInfoItem.qml:105
428−msgid "Unlock SIM"
429−msgstr "Desbloquear a SIM"
430−
431−#: qml/Panel/Indicators/RoamingIndication.qml:27
432−msgid "Roaming"
433−msgstr "Itinerancia"
434−
435#: qml/Tutorial/TutorialBottom.qml:28
427#: qml/Tutorial/TutorialBottom.qml:28
436msgid "Open special menus"
428msgid "Open special menus"
437msgstr "Abrir menús especiais"
429msgstr "Abrir menús especiais"
@@ -738,6 +730,9 @@ msgstr "%1 〉"
738#~ msgid "All"
730#~ msgid "All"
739#~ msgstr "Todos"
731#~ msgstr "Todos"
740
732
733+#~ msgid "Unlock SIM"
734+#~ msgstr "Desbloquear a SIM"
735+
741#~ msgid "Favorites"
736#~ msgid "Favorites"
742#~ msgstr "Favoritos"
737#~ msgstr "Favoritos"
743
738
@@ -750,6 +745,9 @@ msgstr "%1 〉"
750#~ msgid "Done"
745#~ msgid "Done"
751#~ msgstr "Feito"
746#~ msgstr "Feito"
752
747
748+#~ msgid "Roaming"
749+#~ msgstr "Itinerancia"
750+
753#~ msgid "Log out"
751#~ msgid "Log out"
754#~ msgstr "Saír da sesión"
752#~ msgstr "Saír da sesión"
755
753
po/gv.po+11−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-04-02 14:24+0000\n"
11"PO-Revision-Date: 2015-04-02 14:24+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Manx <gv@li.org>\n"
13"Language-Team: Manx <gv@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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=3; plural=n == 1 ? 0 : (n == 2 ? 1 : 2);\n"
17"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : (n == 2 ? 1 : 2);\n"
18−"X-Launchpad-Export-Date: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -178,38 +178,38 @@ msgstr ""
178msgid "Close all"
178msgid "Close all"
179msgstr ""
179msgstr ""
180
180
181−#: qml/Dash/DashPageHeader.qml:266
181+#: qml/Dash/DashPageHeader.qml:270
182msgctxt "Button: Open the Ubuntu Store"
182msgctxt "Button: Open the Ubuntu Store"
183msgid "Store"
183msgid "Store"
184msgstr ""
184msgstr ""
185
185
186−#: qml/Dash/DashPageHeader.qml:273
186+#: qml/Dash/DashPageHeader.qml:277
187msgctxt "Button: Start a search in the current dash scope"
187msgctxt "Button: Start a search in the current dash scope"
188msgid "Search"
188msgid "Search"
189msgstr ""
189msgstr ""
190
190
191−#: qml/Dash/DashPageHeader.qml:283
191+#: qml/Dash/DashPageHeader.qml:287
192msgctxt "Button: Show the current dash scope settings"
192msgctxt "Button: Show the current dash scope settings"
193msgid "Settings"
193msgid "Settings"
194msgstr ""
194msgstr ""
195
195
196−#: qml/Dash/DashPageHeader.qml:290
196+#: qml/Dash/DashPageHeader.qml:294
197msgid "Remove from Favorites"
197msgid "Remove from Favorites"
198msgstr "Jean scughey woish Reihyn"
198msgstr "Jean scughey woish Reihyn"
199
199
200−#: qml/Dash/DashPageHeader.qml:290
200+#: qml/Dash/DashPageHeader.qml:294
201msgid "Add to Favorites"
201msgid "Add to Favorites"
202msgstr "Cur ayns Reihyn"
202msgstr "Cur ayns Reihyn"
203
203
204−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
204+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
205msgid "See less"
205msgid "See less"
206msgstr "Faik ny sloo"
206msgstr "Faik ny sloo"
207
207
208−#: qml/Dash/GenericScopeView.qml:587
208+#: qml/Dash/GenericScopeView.qml:565
209msgid "See all"
209msgid "See all"
210msgstr "Faik ooilley"
210msgstr "Faik ooilley"
211
211
212−#: qml/Dash/GenericScopeView.qml:649
212+#: qml/Dash/GenericScopeView.qml:627
213msgctxt "Label: Hint for dash search line edit"
213msgctxt "Label: Hint for dash search line edit"
214msgid "Search"
214msgid "Search"
215msgstr ""
215msgstr ""
@@ -423,14 +423,6 @@ msgctxt "Button: Call back on phone"
423msgid "Call back"
423msgid "Call back"
424msgstr ""
424msgstr ""
425
425
426−#: qml/Panel/Indicators/ModemInfoItem.qml:105
427−msgid "Unlock SIM"
428−msgstr ""
429−
430−#: qml/Panel/Indicators/RoamingIndication.qml:27
431−msgid "Roaming"
432−msgstr ""
433−
434#: qml/Tutorial/TutorialBottom.qml:28
426#: qml/Tutorial/TutorialBottom.qml:28
435msgid "Open special menus"
427msgid "Open special menus"
436msgstr ""
428msgstr ""
po/he.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-07-12 08:47+0000\n"
11"PO-Revision-Date: 2015-07-12 08:47+0000\n"
12"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
12"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
13"Language-Team: Hebrew <he@li.org>\n"
13"Language-Team: Hebrew <he@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171msgid "Close all"
171msgid "Close all"
172msgstr ""
172msgstr ""
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177msgstr "חנות"
177msgstr "חנות"
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr "חיפוש"
182msgstr "חיפוש"
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr "הגדרות"
187msgstr "הגדרות"
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr "הסרה מהמועדפים"
191msgstr "הסרה מהמועדפים"
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr "הוספה למועדפים"
195msgstr "הוספה למועדפים"
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr "לראות פחות"
199msgstr "לראות פחות"
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr "להציג הכול"
203msgstr "להציג הכול"
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr "חיפוש"
208msgstr "חיפוש"
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416msgid "Call back"
416msgid "Call back"
417msgstr ""
417msgstr ""
418
418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr "שחרור נעילת ה־SIM"
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr "נדידה"
426−
427#: qml/Tutorial/TutorialBottom.qml:28
419#: qml/Tutorial/TutorialBottom.qml:28
428msgid "Open special menus"
420msgid "Open special menus"
429msgstr "פתיחת תפריטים מיוחדים"
421msgstr "פתיחת תפריטים מיוחדים"
@@ -730,9 +722,15 @@ msgstr ""
730#~ msgid "All"
722#~ msgid "All"
731#~ msgstr "הכול"
723#~ msgstr "הכול"
732
724
725+#~ msgid "Roaming"
726+#~ msgstr "נדידה"
727+
733#~ msgid "Favorites"
728#~ msgid "Favorites"
734#~ msgstr "מועדפים"
729#~ msgstr "מועדפים"
735
730
731+#~ msgid "Unlock SIM"
732+#~ msgstr "שחרור נעילת ה־SIM"
733+
736#~ msgid "Welcome to your Ubuntu phone."
734#~ msgid "Welcome to your Ubuntu phone."
737#~ msgstr "ברוך בואך לטלפון האובונטו שלך."
735#~ msgstr "ברוך בואך לטלפון האובונטו שלך."
738
736
po/hi.po+11−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2014-01-15 01:49+0000\n"
11"PO-Revision-Date: 2014-01-15 01:49+0000\n"
12"Last-Translator: Siddhanathan Shanmugam <Unknown>\n"
12"Last-Translator: Siddhanathan Shanmugam <Unknown>\n"
13"Language-Team: Hindi <hi@li.org>\n"
13"Language-Team: Hindi <hi@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171msgid "Close all"
171msgid "Close all"
172msgstr ""
172msgstr ""
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177msgstr ""
177msgstr ""
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr ""
182msgstr ""
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr ""
187msgstr ""
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr ""
191msgstr ""
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr ""
195msgstr ""
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr ""
199msgstr ""
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr ""
203msgstr ""
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr ""
208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416msgid "Call back"
416msgid "Call back"
417msgstr ""
417msgstr ""
418
418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427#: qml/Tutorial/TutorialBottom.qml:28
419#: qml/Tutorial/TutorialBottom.qml:28
428msgid "Open special menus"
420msgid "Open special menus"
429msgstr ""
421msgstr ""
po/hr.po+20−22
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2013-06-27 04:14+0000\n"
11"PO-Revision-Date: 2013-06-27 04:14+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Croatian <hr@li.org>\n"
13"Language-Team: Croatian <hr@li.org>\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%10==1 && n%100!=11 ? 0 : n%10>=2 && "
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-02-16 05:37+0000\n"
19+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
20−"X-Generator: Launchpad (build 17925)\n"
20+"X-Generator: Launchpad (build 17936)\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -176,38 +176,38 @@ msgstr "Ponovno poveži odmah!"
176msgid "Close all"
176msgid "Close all"
177msgstr "Zatvori sve"
177msgstr "Zatvori sve"
178
178
179−#: qml/Dash/DashPageHeader.qml:266
179+#: qml/Dash/DashPageHeader.qml:270
180msgctxt "Button: Open the Ubuntu Store"
180msgctxt "Button: Open the Ubuntu Store"
181msgid "Store"
181msgid "Store"
182msgstr "Trgovina"
182msgstr "Trgovina"
183
183
184−#: qml/Dash/DashPageHeader.qml:273
184+#: qml/Dash/DashPageHeader.qml:277
185msgctxt "Button: Start a search in the current dash scope"
185msgctxt "Button: Start a search in the current dash scope"
186msgid "Search"
186msgid "Search"
187msgstr "Pretraži"
187msgstr "Pretraži"
188
188
189−#: qml/Dash/DashPageHeader.qml:283
189+#: qml/Dash/DashPageHeader.qml:287
190msgctxt "Button: Show the current dash scope settings"
190msgctxt "Button: Show the current dash scope settings"
191msgid "Settings"
191msgid "Settings"
192msgstr "Postavke"
192msgstr "Postavke"
193
193
194−#: qml/Dash/DashPageHeader.qml:290
194+#: qml/Dash/DashPageHeader.qml:294
195msgid "Remove from Favorites"
195msgid "Remove from Favorites"
196msgstr "Ukloni iz omiljenih"
196msgstr "Ukloni iz omiljenih"
197
197
198−#: qml/Dash/DashPageHeader.qml:290
198+#: qml/Dash/DashPageHeader.qml:294
199msgid "Add to Favorites"
199msgid "Add to Favorites"
200msgstr "Dodaj u omiljene"
200msgstr "Dodaj u omiljene"
201
201
202−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
202+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
203msgid "See less"
203msgid "See less"
204msgstr "Prikaži manje"
204msgstr "Prikaži manje"
205
205
206−#: qml/Dash/GenericScopeView.qml:587
206+#: qml/Dash/GenericScopeView.qml:565
207msgid "See all"
207msgid "See all"
208msgstr "Prikaži sve"
208msgstr "Prikaži sve"
209
209
210−#: qml/Dash/GenericScopeView.qml:649
210+#: qml/Dash/GenericScopeView.qml:627
211msgctxt "Label: Hint for dash search line edit"
211msgctxt "Label: Hint for dash search line edit"
212msgid "Search"
212msgid "Search"
213msgstr "Pretraži"
213msgstr "Pretraži"
@@ -430,14 +430,6 @@ msgctxt "Button: Call back on phone"
430msgid "Call back"
430msgid "Call back"
431msgstr "Uzvrati poziv"
431msgstr "Uzvrati poziv"
432
432
433−#: qml/Panel/Indicators/ModemInfoItem.qml:105
434−msgid "Unlock SIM"
435−msgstr "Otključaj SIM"
436−
437−#: qml/Panel/Indicators/RoamingIndication.qml:27
438−msgid "Roaming"
439−msgstr "Roaming"
440−
441#: qml/Tutorial/TutorialBottom.qml:28
433#: qml/Tutorial/TutorialBottom.qml:28
442msgid "Open special menus"
434msgid "Open special menus"
443msgstr "Otvori posebne izbornike"
435msgstr "Otvori posebne izbornike"
@@ -502,7 +494,7 @@ msgstr "Bok!"
502
494
503#: qml/Wizard/Pages/10-welcome.qml:44
495#: qml/Wizard/Pages/10-welcome.qml:44
504msgid "Welcome to your Ubuntu device."
496msgid "Welcome to your Ubuntu device."
505−msgstr ""
497+msgstr "Dobrodošli u svoj Ubuntu uređaj."
506
498
507#: qml/Wizard/Pages/10-welcome.qml:52
499#: qml/Wizard/Pages/10-welcome.qml:52
508msgid "Let’s get started."
500msgid "Let’s get started."
@@ -533,7 +525,7 @@ msgstr "Sigurnosno zaključavanje"
533
525
534#: qml/Wizard/Pages/30-passwd-type.qml:79
526#: qml/Wizard/Pages/30-passwd-type.qml:79
535msgid "Please select how you’d like to unlock your device."
527msgid "Please select how you’d like to unlock your device."
536−msgstr ""
528+msgstr "Odaberite kako želite otključavati svoj uređaj."
537
529
538#: qml/Wizard/Pages/30-passwd-type.qml:102
530#: qml/Wizard/Pages/30-passwd-type.qml:102
539msgctxt "Label: Type of security method"
531msgctxt "Label: Type of security method"
@@ -641,7 +633,7 @@ msgstr "Dobro obavljeno!"
641
633
642#: qml/Wizard/Pages/80-finished.qml:46
634#: qml/Wizard/Pages/80-finished.qml:46
643msgid "Your device is now ready to use."
635msgid "Your device is now ready to use."
644−msgstr ""
636+msgstr "Vaš uređaj je sada spreman za upotrebu."
645
637
646#: qml/Wizard/Pages/80-finished.qml:53
638#: qml/Wizard/Pages/80-finished.qml:53
647msgid "Finish"
639msgid "Finish"
@@ -702,6 +694,12 @@ msgstr "%1 〉"
702#~ msgid "Search"
694#~ msgid "Search"
703#~ msgstr "Pretraživanje"
695#~ msgstr "Pretraživanje"
704
696
697+#~ msgid "Unlock SIM"
698+#~ msgstr "Otključaj SIM"
699+
700+#~ msgid "Roaming"
701+#~ msgstr "Roaming"
702+
705#~ msgid "%a %l:%M %p"
703#~ msgid "%a %l:%M %p"
706#~ msgstr "%a %l:%M %p"
704#~ msgstr "%a %l:%M %p"
707
705
po/hu.po+21−23
@@ -7,16 +7,16 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11−"PO-Revision-Date: 2015-12-30 09:49+0000\n"
11+"PO-Revision-Date: 2016-02-16 07:23+0000\n"
12"Last-Translator: Richard Somlói <ricsipontaz@gmail.com>\n"
12"Last-Translator: Richard Somlói <ricsipontaz@gmail.com>\n"
13"Language-Team: Hungarian <hu@li.org>\n"
13"Language-Team: Hungarian <hu@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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -175,38 +175,38 @@ msgstr "Újracsatlakozás most!"
175msgid "Close all"
175msgid "Close all"
176msgstr "Minden bezárása"
176msgstr "Minden bezárása"
177
177
178−#: qml/Dash/DashPageHeader.qml:266
178+#: qml/Dash/DashPageHeader.qml:270
179msgctxt "Button: Open the Ubuntu Store"
179msgctxt "Button: Open the Ubuntu Store"
180msgid "Store"
180msgid "Store"
181msgstr "Áruház"
181msgstr "Áruház"
182
182
183−#: qml/Dash/DashPageHeader.qml:273
183+#: qml/Dash/DashPageHeader.qml:277
184msgctxt "Button: Start a search in the current dash scope"
184msgctxt "Button: Start a search in the current dash scope"
185msgid "Search"
185msgid "Search"
186msgstr "Keresés"
186msgstr "Keresés"
187
187
188−#: qml/Dash/DashPageHeader.qml:283
188+#: qml/Dash/DashPageHeader.qml:287
189msgctxt "Button: Show the current dash scope settings"
189msgctxt "Button: Show the current dash scope settings"
190msgid "Settings"
190msgid "Settings"
191msgstr "Beállítások"
191msgstr "Beállítások"
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Remove from Favorites"
194msgid "Remove from Favorites"
195msgstr "Eltávolítás a kedvencek közül"
195msgstr "Eltávolítás a kedvencek közül"
196
196
197−#: qml/Dash/DashPageHeader.qml:290
197+#: qml/Dash/DashPageHeader.qml:294
198msgid "Add to Favorites"
198msgid "Add to Favorites"
199msgstr "Hozzáadás a kedvencekhez"
199msgstr "Hozzáadás a kedvencekhez"
200
200
201−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
201+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
202msgid "See less"
202msgid "See less"
203msgstr "Kevesebb"
203msgstr "Kevesebb"
204
204
205−#: qml/Dash/GenericScopeView.qml:587
205+#: qml/Dash/GenericScopeView.qml:565
206msgid "See all"
206msgid "See all"
207msgstr "Összes megtekintése"
207msgstr "Összes megtekintése"
208
208
209−#: qml/Dash/GenericScopeView.qml:649
209+#: qml/Dash/GenericScopeView.qml:627
210msgctxt "Label: Hint for dash search line edit"
210msgctxt "Label: Hint for dash search line edit"
211msgid "Search"
211msgid "Search"
212msgstr "Keresés"
212msgstr "Keresés"
@@ -426,14 +426,6 @@ msgctxt "Button: Call back on phone"
426msgid "Call back"
426msgid "Call back"
427msgstr "Visszahívás"
427msgstr "Visszahívás"
428
428
429−#: qml/Panel/Indicators/ModemInfoItem.qml:105
430−msgid "Unlock SIM"
431−msgstr "SIM feloldása"
432−
433−#: qml/Panel/Indicators/RoamingIndication.qml:27
434−msgid "Roaming"
435−msgstr "Barangolás"
436−
437#: qml/Tutorial/TutorialBottom.qml:28
429#: qml/Tutorial/TutorialBottom.qml:28
438msgid "Open special menus"
430msgid "Open special menus"
439msgstr "Speciális menük elérése"
431msgstr "Speciális menük elérése"
@@ -498,7 +490,7 @@ msgstr "Üdvözöljük!"
498
490
499#: qml/Wizard/Pages/10-welcome.qml:44
491#: qml/Wizard/Pages/10-welcome.qml:44
500msgid "Welcome to your Ubuntu device."
492msgid "Welcome to your Ubuntu device."
501−msgstr ""
493+msgstr "Köszönti az Ubuntus eszköze."
502
494
503#: qml/Wizard/Pages/10-welcome.qml:52
495#: qml/Wizard/Pages/10-welcome.qml:52
504msgid "Let’s get started."
496msgid "Let’s get started."
@@ -531,7 +523,7 @@ msgstr "Képernyőzárolás"
531
523
532#: qml/Wizard/Pages/30-passwd-type.qml:79
524#: qml/Wizard/Pages/30-passwd-type.qml:79
533msgid "Please select how you’d like to unlock your device."
525msgid "Please select how you’d like to unlock your device."
534−msgstr ""
526+msgstr "Válassza ki, hogy milyen módon szeretné feloldani az eszközét."
535
527
536#: qml/Wizard/Pages/30-passwd-type.qml:102
528#: qml/Wizard/Pages/30-passwd-type.qml:102
537msgctxt "Label: Type of security method"
529msgctxt "Label: Type of security method"
@@ -638,7 +630,7 @@ msgstr "Szép munka!"
638
630
639#: qml/Wizard/Pages/80-finished.qml:46
631#: qml/Wizard/Pages/80-finished.qml:46
640msgid "Your device is now ready to use."
632msgid "Your device is now ready to use."
641−msgstr ""
633+msgstr "Az eszköze készen áll a használatra."
642
634
643#: qml/Wizard/Pages/80-finished.qml:53
635#: qml/Wizard/Pages/80-finished.qml:53
644msgid "Finish"
636msgid "Finish"
@@ -744,6 +736,12 @@ msgstr "%1 〉"
744#~ msgid "All"
736#~ msgid "All"
745#~ msgstr "Összes"
737#~ msgstr "Összes"
746
738
739+#~ msgid "Unlock SIM"
740+#~ msgstr "SIM feloldása"
741+
742+#~ msgid "Roaming"
743+#~ msgstr "Barangolás"
744+
747#~ msgid "Favorites"
745#~ msgid "Favorites"
748#~ msgstr "Kedvencek"
746#~ msgstr "Kedvencek"
749
747
po/hy.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2014-10-28 06:34+0000\n"
11"PO-Revision-Date: 2014-10-28 06:34+0000\n"
12"Last-Translator: Vahan Harutyunyan <Unknown>\n"
12"Last-Translator: Vahan Harutyunyan <Unknown>\n"
13"Language-Team: Armenian <hy@li.org>\n"
13"Language-Team: Armenian <hy@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:36+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:57+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -175,38 +175,38 @@ msgstr ""
175msgid "Close all"
175msgid "Close all"
176msgstr ""
176msgstr ""
177
177
178−#: qml/Dash/DashPageHeader.qml:266
178+#: qml/Dash/DashPageHeader.qml:270
179msgctxt "Button: Open the Ubuntu Store"
179msgctxt "Button: Open the Ubuntu Store"
180msgid "Store"
180msgid "Store"
181msgstr ""
181msgstr ""
182
182
183−#: qml/Dash/DashPageHeader.qml:273
183+#: qml/Dash/DashPageHeader.qml:277
184msgctxt "Button: Start a search in the current dash scope"
184msgctxt "Button: Start a search in the current dash scope"
185msgid "Search"
185msgid "Search"
186msgstr ""
186msgstr ""
187
187
188−#: qml/Dash/DashPageHeader.qml:283
188+#: qml/Dash/DashPageHeader.qml:287
189msgctxt "Button: Show the current dash scope settings"
189msgctxt "Button: Show the current dash scope settings"
190msgid "Settings"
190msgid "Settings"
191msgstr ""
191msgstr ""
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Remove from Favorites"
194msgid "Remove from Favorites"
195msgstr "Հեռացնել ընտրյալների ցուցակից"
195msgstr "Հեռացնել ընտրյալների ցուցակից"
196
196
197−#: qml/Dash/DashPageHeader.qml:290
197+#: qml/Dash/DashPageHeader.qml:294
198msgid "Add to Favorites"
198msgid "Add to Favorites"
199msgstr "Ավելացնել ընտրյալների ցուցակում"
199msgstr "Ավելացնել ընտրյալների ցուցակում"
200
200
201−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
201+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
202msgid "See less"
202msgid "See less"
203msgstr ""
203msgstr ""
204
204
205−#: qml/Dash/GenericScopeView.qml:587
205+#: qml/Dash/GenericScopeView.qml:565
206msgid "See all"
206msgid "See all"
207msgstr "Տեսնել բոլորը"
207msgstr "Տեսնել բոլորը"
208
208
209−#: qml/Dash/GenericScopeView.qml:649
209+#: qml/Dash/GenericScopeView.qml:627
210msgctxt "Label: Hint for dash search line edit"
210msgctxt "Label: Hint for dash search line edit"
211msgid "Search"
211msgid "Search"
212msgstr ""
212msgstr ""
@@ -420,14 +420,6 @@ msgctxt "Button: Call back on phone"
420msgid "Call back"
420msgid "Call back"
421msgstr ""
421msgstr ""
422
422
423−#: qml/Panel/Indicators/ModemInfoItem.qml:105
424−msgid "Unlock SIM"
425−msgstr "Ապաբլոկավորել SIM-ը"
426−
427−#: qml/Panel/Indicators/RoamingIndication.qml:27
428−msgid "Roaming"
429−msgstr "Ռոումինգ"
430−
431#: qml/Tutorial/TutorialBottom.qml:28
423#: qml/Tutorial/TutorialBottom.qml:28
432msgid "Open special menus"
424msgid "Open special menus"
433msgstr ""
425msgstr ""
@@ -733,6 +725,12 @@ msgstr ""
733#~ msgid "All"
725#~ msgid "All"
734#~ msgstr "Բոլորը"
726#~ msgstr "Բոլորը"
735
727
728+#~ msgid "Unlock SIM"
729+#~ msgstr "Ապաբլոկավորել SIM-ը"
730+
731+#~ msgid "Roaming"
732+#~ msgstr "Ռոումինգ"
733+
736#~ msgid "Please re-enter"
734#~ msgid "Please re-enter"
737#~ msgstr "Խնդրում ենք նորից մուտքագրել"
735#~ msgstr "Խնդրում ենք նորից մուտքագրել"
738
736
po/ia.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-08-25 19:31+0000\n"
11"PO-Revision-Date: 2015-08-25 19:31+0000\n"
12"Last-Translator: karm <melo@carmu.com>\n"
12"Last-Translator: karm <melo@carmu.com>\n"
13"Language-Team: Interlingua <ia@li.org>\n"
13"Language-Team: Interlingua <ia@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -176,38 +176,38 @@ msgstr "Reconnecter nunc!"
176msgid "Close all"
176msgid "Close all"
177msgstr "Clauder toto"
177msgstr "Clauder toto"
178
178
179−#: qml/Dash/DashPageHeader.qml:266
179+#: qml/Dash/DashPageHeader.qml:270
180msgctxt "Button: Open the Ubuntu Store"
180msgctxt "Button: Open the Ubuntu Store"
181msgid "Store"
181msgid "Store"
182msgstr "Salva"
182msgstr "Salva"
183
183
184−#: qml/Dash/DashPageHeader.qml:273
184+#: qml/Dash/DashPageHeader.qml:277
185msgctxt "Button: Start a search in the current dash scope"
185msgctxt "Button: Start a search in the current dash scope"
186msgid "Search"
186msgid "Search"
187msgstr "Cerca"
187msgstr "Cerca"
188
188
189−#: qml/Dash/DashPageHeader.qml:283
189+#: qml/Dash/DashPageHeader.qml:287
190msgctxt "Button: Show the current dash scope settings"
190msgctxt "Button: Show the current dash scope settings"
191msgid "Settings"
191msgid "Settings"
192msgstr "Configurationes"
192msgstr "Configurationes"
193
193
194−#: qml/Dash/DashPageHeader.qml:290
194+#: qml/Dash/DashPageHeader.qml:294
195msgid "Remove from Favorites"
195msgid "Remove from Favorites"
196msgstr "Remover ex le Favoritos"
196msgstr "Remover ex le Favoritos"
197
197
198−#: qml/Dash/DashPageHeader.qml:290
198+#: qml/Dash/DashPageHeader.qml:294
199msgid "Add to Favorites"
199msgid "Add to Favorites"
200msgstr "Adder al Favoritos"
200msgstr "Adder al Favoritos"
201
201
202−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
202+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
203msgid "See less"
203msgid "See less"
204msgstr "Vider minus"
204msgstr "Vider minus"
205
205
206−#: qml/Dash/GenericScopeView.qml:587
206+#: qml/Dash/GenericScopeView.qml:565
207msgid "See all"
207msgid "See all"
208msgstr "Vider toto"
208msgstr "Vider toto"
209
209
210−#: qml/Dash/GenericScopeView.qml:649
210+#: qml/Dash/GenericScopeView.qml:627
211msgctxt "Label: Hint for dash search line edit"
211msgctxt "Label: Hint for dash search line edit"
212msgid "Search"
212msgid "Search"
213msgstr "Cerca"
213msgstr "Cerca"
@@ -425,14 +425,6 @@ msgctxt "Button: Call back on phone"
425msgid "Call back"
425msgid "Call back"
426msgstr "Appellar retro"
426msgstr "Appellar retro"
427
427
428−#: qml/Panel/Indicators/ModemInfoItem.qml:105
429−msgid "Unlock SIM"
430−msgstr "Liberar le SIM"
431−
432−#: qml/Panel/Indicators/RoamingIndication.qml:27
433−msgid "Roaming"
434−msgstr "Roaming"
435−
436#: qml/Tutorial/TutorialBottom.qml:28
428#: qml/Tutorial/TutorialBottom.qml:28
437msgid "Open special menus"
429msgid "Open special menus"
438msgstr "Aperi le menus special"
430msgstr "Aperi le menus special"
@@ -757,6 +749,12 @@ msgstr "%1 〉"
757#~ msgid "Speaking..."
749#~ msgid "Speaking..."
758#~ msgstr "Parlante..."
750#~ msgstr "Parlante..."
759
751
752+#~ msgid "Unlock SIM"
753+#~ msgstr "Liberar le SIM"
754+
755+#~ msgid "Roaming"
756+#~ msgstr "Roaming"
757+
760#~ msgid "Please re-enter"
758#~ msgid "Please re-enter"
761#~ msgstr "Per favor re-inserer"
759#~ msgstr "Per favor re-inserer"
762
760
po/id.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2013-06-26 22:35+0000\n"
11"PO-Revision-Date: 2013-06-26 22:35+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Indonesian <id@li.org>\n"
13"Language-Team: Indonesian <id@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -174,38 +174,38 @@ msgstr ""
174msgid "Close all"
174msgid "Close all"
175msgstr ""
175msgstr ""
176
176
177−#: qml/Dash/DashPageHeader.qml:266
177+#: qml/Dash/DashPageHeader.qml:270
178msgctxt "Button: Open the Ubuntu Store"
178msgctxt "Button: Open the Ubuntu Store"
179msgid "Store"
179msgid "Store"
180msgstr ""
180msgstr ""
181
181
182−#: qml/Dash/DashPageHeader.qml:273
182+#: qml/Dash/DashPageHeader.qml:277
183msgctxt "Button: Start a search in the current dash scope"
183msgctxt "Button: Start a search in the current dash scope"
184msgid "Search"
184msgid "Search"
185msgstr ""
185msgstr ""
186
186
187−#: qml/Dash/DashPageHeader.qml:283
187+#: qml/Dash/DashPageHeader.qml:287
188msgctxt "Button: Show the current dash scope settings"
188msgctxt "Button: Show the current dash scope settings"
189msgid "Settings"
189msgid "Settings"
190msgstr ""
190msgstr ""
191
191
192−#: qml/Dash/DashPageHeader.qml:290
192+#: qml/Dash/DashPageHeader.qml:294
193msgid "Remove from Favorites"
193msgid "Remove from Favorites"
194msgstr "Hapus dari Favorit"
194msgstr "Hapus dari Favorit"
195
195
196−#: qml/Dash/DashPageHeader.qml:290
196+#: qml/Dash/DashPageHeader.qml:294
197msgid "Add to Favorites"
197msgid "Add to Favorites"
198msgstr "Tambah ke Favorit"
198msgstr "Tambah ke Favorit"
199
199
200−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
200+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
201msgid "See less"
201msgid "See less"
202msgstr "Lihat lebih sedikit"
202msgstr "Lihat lebih sedikit"
203
203
204−#: qml/Dash/GenericScopeView.qml:587
204+#: qml/Dash/GenericScopeView.qml:565
205msgid "See all"
205msgid "See all"
206msgstr "Lihat semua"
206msgstr "Lihat semua"
207
207
208−#: qml/Dash/GenericScopeView.qml:649
208+#: qml/Dash/GenericScopeView.qml:627
209msgctxt "Label: Hint for dash search line edit"
209msgctxt "Label: Hint for dash search line edit"
210msgid "Search"
210msgid "Search"
211msgstr ""
211msgstr ""
@@ -423,14 +423,6 @@ msgctxt "Button: Call back on phone"
423msgid "Call back"
423msgid "Call back"
424msgstr ""
424msgstr ""
425
425
426−#: qml/Panel/Indicators/ModemInfoItem.qml:105
427−msgid "Unlock SIM"
428−msgstr "Buka Kunci SIM"
429−
430−#: qml/Panel/Indicators/RoamingIndication.qml:27
431−msgid "Roaming"
432−msgstr "Roaming"
433−
434#: qml/Tutorial/TutorialBottom.qml:28
426#: qml/Tutorial/TutorialBottom.qml:28
435msgid "Open special menus"
427msgid "Open special menus"
436msgstr ""
428msgstr ""
@@ -745,6 +737,12 @@ msgstr ""
745#~ msgid "Favorites"
737#~ msgid "Favorites"
746#~ msgstr "Favorit"
738#~ msgstr "Favorit"
747
739
740+#~ msgid "Roaming"
741+#~ msgstr "Roaming"
742+
743+#~ msgid "Unlock SIM"
744+#~ msgstr "Buka Kunci SIM"
745+
748#~ msgid "Manage Scopes"
746#~ msgid "Manage Scopes"
749#~ msgstr "Kelola Skup"
747#~ msgstr "Kelola Skup"
750
748
po/is.po+17−19
@@ -9,7 +9,7 @@ msgid ""
9msgstr ""
9msgstr ""
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: 2016-02-12 00:28+0000\n"
12+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
13"PO-Revision-Date: 2014-11-13 09:32+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"
@@ -17,8 +17,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
20+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
21−"X-Generator: Launchpad (build 17925)\n"
21+"X-Generator: Launchpad (build 17936)\n"
22"Language: is\n"
22"Language: is\n"
23
23
24#: plugins/IntegratedLightDM/Greeter.cpp:112
24#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -180,38 +180,38 @@ msgstr ""
180msgid "Close all"
180msgid "Close all"
181msgstr ""
181msgstr ""
182
182
183−#: qml/Dash/DashPageHeader.qml:266
183+#: qml/Dash/DashPageHeader.qml:270
184msgctxt "Button: Open the Ubuntu Store"
184msgctxt "Button: Open the Ubuntu Store"
185msgid "Store"
185msgid "Store"
186msgstr ""
186msgstr ""
187
187
188−#: qml/Dash/DashPageHeader.qml:273
188+#: qml/Dash/DashPageHeader.qml:277
189msgctxt "Button: Start a search in the current dash scope"
189msgctxt "Button: Start a search in the current dash scope"
190msgid "Search"
190msgid "Search"
191msgstr ""
191msgstr ""
192
192
193−#: qml/Dash/DashPageHeader.qml:283
193+#: qml/Dash/DashPageHeader.qml:287
194msgctxt "Button: Show the current dash scope settings"
194msgctxt "Button: Show the current dash scope settings"
195msgid "Settings"
195msgid "Settings"
196msgstr ""
196msgstr ""
197
197
198−#: qml/Dash/DashPageHeader.qml:290
198+#: qml/Dash/DashPageHeader.qml:294
199msgid "Remove from Favorites"
199msgid "Remove from Favorites"
200msgstr "Fjarlægja úr Eftirlæti"
200msgstr "Fjarlægja úr Eftirlæti"
201
201
202−#: qml/Dash/DashPageHeader.qml:290
202+#: qml/Dash/DashPageHeader.qml:294
203msgid "Add to Favorites"
203msgid "Add to Favorites"
204msgstr "Bæta við Eftirlæti"
204msgstr "Bæta við Eftirlæti"
205
205
206−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
206+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
207msgid "See less"
207msgid "See less"
208msgstr "Sjá minna"
208msgstr "Sjá minna"
209
209
210−#: qml/Dash/GenericScopeView.qml:587
210+#: qml/Dash/GenericScopeView.qml:565
211msgid "See all"
211msgid "See all"
212msgstr "Sjá allt"
212msgstr "Sjá allt"
213
213
214−#: qml/Dash/GenericScopeView.qml:649
214+#: qml/Dash/GenericScopeView.qml:627
215msgctxt "Label: Hint for dash search line edit"
215msgctxt "Label: Hint for dash search line edit"
216msgid "Search"
216msgid "Search"
217msgstr ""
217msgstr ""
@@ -429,14 +429,6 @@ msgctxt "Button: Call back on phone"
429msgid "Call back"
429msgid "Call back"
430msgstr ""
430msgstr ""
431
431
432−#: qml/Panel/Indicators/ModemInfoItem.qml:105
433−msgid "Unlock SIM"
434−msgstr "Aflæsa SIM-korti"
435−
436−#: qml/Panel/Indicators/RoamingIndication.qml:27
437−msgid "Roaming"
438−msgstr "Ráphamur"
439−
440#: qml/Tutorial/TutorialBottom.qml:28
432#: qml/Tutorial/TutorialBottom.qml:28
441msgid "Open special menus"
433msgid "Open special menus"
442msgstr ""
434msgstr ""
@@ -756,6 +748,9 @@ msgstr ""
756#~ msgid "All"
748#~ msgid "All"
757#~ msgstr "Allt"
749#~ msgstr "Allt"
758
750
751+#~ msgid "Unlock SIM"
752+#~ msgstr "Aflæsa SIM-korti"
753+
759#~ msgid "Favorites"
754#~ msgid "Favorites"
760#~ msgstr "Eftirlæti"
755#~ msgstr "Eftirlæti"
761
756
@@ -765,6 +760,9 @@ msgstr ""
765#~ msgid "Done"
760#~ msgid "Done"
766#~ msgstr "Lokið"
761#~ msgstr "Lokið"
767
762
763+#~ msgid "Roaming"
764+#~ msgstr "Ráphamur"
765+
768#~ msgid "Please re-enter"
766#~ msgid "Please re-enter"
769#~ msgstr "Settu aftur inn"
767#~ msgstr "Settu aftur inn"
770
768
po/it.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-09-18 08:24+0000\n"
11"PO-Revision-Date: 2015-09-18 08:24+0000\n"
12"Last-Translator: Claudio Arseni <claudio.arseni@gmail.com>\n"
12"Last-Translator: Claudio Arseni <claudio.arseni@gmail.com>\n"
13"Language-Team: Italian <it@li.org>\n"
13"Language-Team: Italian <it@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -179,38 +179,38 @@ msgstr "Collegare ora."
179msgid "Close all"
179msgid "Close all"
180msgstr "Chiudi tutto"
180msgstr "Chiudi tutto"
181
181
182−#: qml/Dash/DashPageHeader.qml:266
182+#: qml/Dash/DashPageHeader.qml:270
183msgctxt "Button: Open the Ubuntu Store"
183msgctxt "Button: Open the Ubuntu Store"
184msgid "Store"
184msgid "Store"
185msgstr "Store"
185msgstr "Store"
186
186
187−#: qml/Dash/DashPageHeader.qml:273
187+#: qml/Dash/DashPageHeader.qml:277
188msgctxt "Button: Start a search in the current dash scope"
188msgctxt "Button: Start a search in the current dash scope"
189msgid "Search"
189msgid "Search"
190msgstr "Cerca"
190msgstr "Cerca"
191
191
192−#: qml/Dash/DashPageHeader.qml:283
192+#: qml/Dash/DashPageHeader.qml:287
193msgctxt "Button: Show the current dash scope settings"
193msgctxt "Button: Show the current dash scope settings"
194msgid "Settings"
194msgid "Settings"
195msgstr "Impostazioni"
195msgstr "Impostazioni"
196
196
197−#: qml/Dash/DashPageHeader.qml:290
197+#: qml/Dash/DashPageHeader.qml:294
198msgid "Remove from Favorites"
198msgid "Remove from Favorites"
199msgstr "Rimuovi dai preferiti"
199msgstr "Rimuovi dai preferiti"
200
200
201−#: qml/Dash/DashPageHeader.qml:290
201+#: qml/Dash/DashPageHeader.qml:294
202msgid "Add to Favorites"
202msgid "Add to Favorites"
203msgstr "Aggiungi ai preferiti"
203msgstr "Aggiungi ai preferiti"
204
204
205−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
205+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
206msgid "See less"
206msgid "See less"
207msgstr "Mostra meno"
207msgstr "Mostra meno"
208
208
209−#: qml/Dash/GenericScopeView.qml:587
209+#: qml/Dash/GenericScopeView.qml:565
210msgid "See all"
210msgid "See all"
211msgstr "Mostra tutto"
211msgstr "Mostra tutto"
212
212
213−#: qml/Dash/GenericScopeView.qml:649
213+#: qml/Dash/GenericScopeView.qml:627
214msgctxt "Label: Hint for dash search line edit"
214msgctxt "Label: Hint for dash search line edit"
215msgid "Search"
215msgid "Search"
216msgstr "Cerca"
216msgstr "Cerca"
@@ -428,14 +428,6 @@ msgctxt "Button: Call back on phone"
428msgid "Call back"
428msgid "Call back"
429msgstr "Richiama"
429msgstr "Richiama"
430
430
431−#: qml/Panel/Indicators/ModemInfoItem.qml:105
432−msgid "Unlock SIM"
433−msgstr "Sblocca SIM"
434−
435−#: qml/Panel/Indicators/RoamingIndication.qml:27
436−msgid "Roaming"
437−msgstr "Roaming"
438−
439#: qml/Tutorial/TutorialBottom.qml:28
431#: qml/Tutorial/TutorialBottom.qml:28
440msgid "Open special menus"
432msgid "Open special menus"
441msgstr "Apri menù speciali"
433msgstr "Apri menù speciali"
@@ -743,6 +735,9 @@ msgstr "%1 〉"
743#~ msgid "All"
735#~ msgid "All"
744#~ msgstr "Tutto"
736#~ msgstr "Tutto"
745
737
738+#~ msgid "Unlock SIM"
739+#~ msgstr "Sblocca SIM"
740+
746#~ msgid "Favorites"
741#~ msgid "Favorites"
747#~ msgstr "Preferiti"
742#~ msgstr "Preferiti"
748
743
@@ -755,6 +750,9 @@ msgstr "%1 〉"
755#~ msgid "Done"
750#~ msgid "Done"
756#~ msgstr "Fatto"
751#~ msgstr "Fatto"
757
752
753+#~ msgid "Roaming"
754+#~ msgstr "Roaming"
755+
758#~ msgid "Log out"
756#~ msgid "Log out"
759#~ msgstr "Termina sessione"
757#~ msgstr "Termina sessione"
760
758
po/ja.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-10-05 10:05+0000\n"
11"PO-Revision-Date: 2015-10-05 10:05+0000\n"
12"Last-Translator: Kentaro Kazuhama <Unknown>\n"
12"Last-Translator: Kentaro Kazuhama <Unknown>\n"
13"Language-Team: Japanese <ja@li.org>\n"
13"Language-Team: Japanese <ja@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -170,38 +170,38 @@ msgstr ""
170msgid "Close all"
170msgid "Close all"
171msgstr ""
171msgstr ""
172
172
173−#: qml/Dash/DashPageHeader.qml:266
173+#: qml/Dash/DashPageHeader.qml:270
174msgctxt "Button: Open the Ubuntu Store"
174msgctxt "Button: Open the Ubuntu Store"
175msgid "Store"
175msgid "Store"
176msgstr ""
176msgstr ""
177
177
178−#: qml/Dash/DashPageHeader.qml:273
178+#: qml/Dash/DashPageHeader.qml:277
179msgctxt "Button: Start a search in the current dash scope"
179msgctxt "Button: Start a search in the current dash scope"
180msgid "Search"
180msgid "Search"
181msgstr ""
181msgstr ""
182
182
183−#: qml/Dash/DashPageHeader.qml:283
183+#: qml/Dash/DashPageHeader.qml:287
184msgctxt "Button: Show the current dash scope settings"
184msgctxt "Button: Show the current dash scope settings"
185msgid "Settings"
185msgid "Settings"
186msgstr ""
186msgstr ""
187
187
188−#: qml/Dash/DashPageHeader.qml:290
188+#: qml/Dash/DashPageHeader.qml:294
189msgid "Remove from Favorites"
189msgid "Remove from Favorites"
190msgstr "お気に入りから削除する"
190msgstr "お気に入りから削除する"
191
191
192−#: qml/Dash/DashPageHeader.qml:290
192+#: qml/Dash/DashPageHeader.qml:294
193msgid "Add to Favorites"
193msgid "Add to Favorites"
194msgstr "お気に入りに追加する"
194msgstr "お気に入りに追加する"
195
195
196−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
196+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
197msgid "See less"
197msgid "See less"
198msgstr "隠す"
198msgstr "隠す"
199
199
200−#: qml/Dash/GenericScopeView.qml:587
200+#: qml/Dash/GenericScopeView.qml:565
201msgid "See all"
201msgid "See all"
202msgstr "すべて表示する"
202msgstr "すべて表示する"
203
203
204−#: qml/Dash/GenericScopeView.qml:649
204+#: qml/Dash/GenericScopeView.qml:627
205msgctxt "Label: Hint for dash search line edit"
205msgctxt "Label: Hint for dash search line edit"
206msgid "Search"
206msgid "Search"
207msgstr ""
207msgstr ""
@@ -415,14 +415,6 @@ msgctxt "Button: Call back on phone"
415msgid "Call back"
415msgid "Call back"
416msgstr ""
416msgstr ""
417
417
418−#: qml/Panel/Indicators/ModemInfoItem.qml:105
419−msgid "Unlock SIM"
420−msgstr "SIMのアンロック"
421−
422−#: qml/Panel/Indicators/RoamingIndication.qml:27
423−msgid "Roaming"
424−msgstr "ローミング"
425−
426#: qml/Tutorial/TutorialBottom.qml:28
418#: qml/Tutorial/TutorialBottom.qml:28
427msgid "Open special menus"
419msgid "Open special menus"
428msgstr ""
420msgstr ""
@@ -722,6 +714,12 @@ msgstr ""
722#~ msgid "Favorites"
714#~ msgid "Favorites"
723#~ msgstr "お気に入り"
715#~ msgstr "お気に入り"
724
716
717+#~ msgid "Unlock SIM"
718+#~ msgstr "SIMのアンロック"
719+
720+#~ msgid "Roaming"
721+#~ msgstr "ローミング"
722+
725#~ msgid "Done"
723#~ msgid "Done"
726#~ msgstr "完了"
724#~ msgstr "完了"
727
725
po/km.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2014-08-20 02:48+0000\n"
11"PO-Revision-Date: 2014-08-20 02:48+0000\n"
12"Last-Translator: Sophea Sok <sksophea@gmail.com>\n"
12"Last-Translator: Sophea Sok <sksophea@gmail.com>\n"
13"Language-Team: Khmer <km@li.org>\n"
13"Language-Team: Khmer <km@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -173,38 +173,38 @@ msgstr ""
173msgid "Close all"
173msgid "Close all"
174msgstr ""
174msgstr ""
175
175
176−#: qml/Dash/DashPageHeader.qml:266
176+#: qml/Dash/DashPageHeader.qml:270
177msgctxt "Button: Open the Ubuntu Store"
177msgctxt "Button: Open the Ubuntu Store"
178msgid "Store"
178msgid "Store"
179msgstr "រក្សាទុក"
179msgstr "រក្សាទុក"
180
180
181−#: qml/Dash/DashPageHeader.qml:273
181+#: qml/Dash/DashPageHeader.qml:277
182msgctxt "Button: Start a search in the current dash scope"
182msgctxt "Button: Start a search in the current dash scope"
183msgid "Search"
183msgid "Search"
184msgstr "ស្វែងរក"
184msgstr "ស្វែងរក"
185
185
186−#: qml/Dash/DashPageHeader.qml:283
186+#: qml/Dash/DashPageHeader.qml:287
187msgctxt "Button: Show the current dash scope settings"
187msgctxt "Button: Show the current dash scope settings"
188msgid "Settings"
188msgid "Settings"
189msgstr "ការ​កំណត់"
189msgstr "ការ​កំណត់"
190
190
191−#: qml/Dash/DashPageHeader.qml:290
191+#: qml/Dash/DashPageHeader.qml:294
192msgid "Remove from Favorites"
192msgid "Remove from Favorites"
193msgstr "យក​ចេញពី​សំណព្វ"
193msgstr "យក​ចេញពី​សំណព្វ"
194
194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196msgid "Add to Favorites"
196msgid "Add to Favorites"
197msgstr "បន្ថែម​ទៅ​សណព្វ"
197msgstr "បន្ថែម​ទៅ​សណព្វ"
198
198
199−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
199+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
200msgid "See less"
200msgid "See less"
201msgstr "មើល​តិច​ជាង"
201msgstr "មើល​តិច​ជាង"
202
202
203−#: qml/Dash/GenericScopeView.qml:587
203+#: qml/Dash/GenericScopeView.qml:565
204msgid "See all"
204msgid "See all"
205msgstr "មើល​ទាំងអស់"
205msgstr "មើល​ទាំងអស់"
206
206
207−#: qml/Dash/GenericScopeView.qml:649
207+#: qml/Dash/GenericScopeView.qml:627
208msgctxt "Label: Hint for dash search line edit"
208msgctxt "Label: Hint for dash search line edit"
209msgid "Search"
209msgid "Search"
210msgstr "ស្វែងរក"
210msgstr "ស្វែងរក"
@@ -424,14 +424,6 @@ msgctxt "Button: Call back on phone"
424msgid "Call back"
424msgid "Call back"
425msgstr ""
425msgstr ""
426
426
427−#: qml/Panel/Indicators/ModemInfoItem.qml:105
428−msgid "Unlock SIM"
429−msgstr "ដោះ​សោ​ស៊ីម"
430−
431−#: qml/Panel/Indicators/RoamingIndication.qml:27
432−msgid "Roaming"
433−msgstr "រ៉ូមីង"
434−
435#: qml/Tutorial/TutorialBottom.qml:28
427#: qml/Tutorial/TutorialBottom.qml:28
436msgid "Open special menus"
428msgid "Open special menus"
437msgstr ""
429msgstr ""
@@ -731,6 +723,9 @@ msgstr "%1 〉"
731#~ msgid "All"
723#~ msgid "All"
732#~ msgstr "ទាំងអស់"
724#~ msgstr "ទាំងអស់"
733
725
726+#~ msgid "Unlock SIM"
727+#~ msgstr "ដោះ​សោ​ស៊ីម"
728+
734#~ msgid "Favorites"
729#~ msgid "Favorites"
735#~ msgstr "និយម"
730#~ msgstr "និយម"
736
731
@@ -743,6 +738,9 @@ msgstr "%1 〉"
743#~ msgid "Done"
738#~ msgid "Done"
744#~ msgstr "ធ្វើរួច"
739#~ msgstr "ធ្វើរួច"
745
740
741+#~ msgid "Roaming"
742+#~ msgstr "រ៉ូមីង"
743+
746#~ msgid "Power"
744#~ msgid "Power"
747#~ msgstr "បីទ/បើក"
745#~ msgstr "បីទ/បើក"
748
746
po/kn.po+11−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2013-06-27 05:43+0000\n"
11"PO-Revision-Date: 2013-06-27 05:43+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Kannada <kn@li.org>\n"
13"Language-Team: Kannada <kn@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171msgid "Close all"
171msgid "Close all"
172msgstr ""
172msgstr ""
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177msgstr ""
177msgstr ""
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr ""
182msgstr ""
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr ""
187msgstr ""
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr ""
191msgstr ""
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr ""
195msgstr ""
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr ""
199msgstr ""
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr ""
203msgstr ""
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr ""
208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416msgid "Call back"
416msgid "Call back"
417msgstr ""
417msgstr ""
418
418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427#: qml/Tutorial/TutorialBottom.qml:28
419#: qml/Tutorial/TutorialBottom.qml:28
428msgid "Open special menus"
420msgid "Open special menus"
429msgstr ""
421msgstr ""
po/ko.po+20−22
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2014-08-19 13:02+0000\n"
11"PO-Revision-Date: 2014-08-19 13:02+0000\n"
12"Last-Translator: MinSik CHO <Unknown>\n"
12"Last-Translator: MinSik CHO <Unknown>\n"
13"Language-Team: Korean <ko@li.org>\n"
13"Language-Team: Korean <ko@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -170,38 +170,38 @@ msgstr "지급 다시 접속!"
170msgid "Close all"
170msgid "Close all"
171msgstr "모두 닫기"
171msgstr "모두 닫기"
172
172
173−#: qml/Dash/DashPageHeader.qml:266
173+#: qml/Dash/DashPageHeader.qml:270
174msgctxt "Button: Open the Ubuntu Store"
174msgctxt "Button: Open the Ubuntu Store"
175msgid "Store"
175msgid "Store"
176msgstr "상점"
176msgstr "상점"
177
177
178−#: qml/Dash/DashPageHeader.qml:273
178+#: qml/Dash/DashPageHeader.qml:277
179msgctxt "Button: Start a search in the current dash scope"
179msgctxt "Button: Start a search in the current dash scope"
180msgid "Search"
180msgid "Search"
181msgstr "검색"
181msgstr "검색"
182
182
183−#: qml/Dash/DashPageHeader.qml:283
183+#: qml/Dash/DashPageHeader.qml:287
184msgctxt "Button: Show the current dash scope settings"
184msgctxt "Button: Show the current dash scope settings"
185msgid "Settings"
185msgid "Settings"
186msgstr "설정"
186msgstr "설정"
187
187
188−#: qml/Dash/DashPageHeader.qml:290
188+#: qml/Dash/DashPageHeader.qml:294
189msgid "Remove from Favorites"
189msgid "Remove from Favorites"
190msgstr "즐겨찾기에서 제거"
190msgstr "즐겨찾기에서 제거"
191
191
192−#: qml/Dash/DashPageHeader.qml:290
192+#: qml/Dash/DashPageHeader.qml:294
193msgid "Add to Favorites"
193msgid "Add to Favorites"
194msgstr "즐겨찾기에 추가"
194msgstr "즐겨찾기에 추가"
195
195
196−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
196+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
197msgid "See less"
197msgid "See less"
198msgstr "간단히 표시"
198msgstr "간단히 표시"
199
199
200−#: qml/Dash/GenericScopeView.qml:587
200+#: qml/Dash/GenericScopeView.qml:565
201msgid "See all"
201msgid "See all"
202msgstr "모두 보기"
202msgstr "모두 보기"
203
203
204−#: qml/Dash/GenericScopeView.qml:649
204+#: qml/Dash/GenericScopeView.qml:627
205msgctxt "Label: Hint for dash search line edit"
205msgctxt "Label: Hint for dash search line edit"
206msgid "Search"
206msgid "Search"
207msgstr "검색"
207msgstr "검색"
@@ -412,14 +412,6 @@ msgctxt "Button: Call back on phone"
412msgid "Call back"
412msgid "Call back"
413msgstr "부재중 번호로 전화"
413msgstr "부재중 번호로 전화"
414
414
415−#: qml/Panel/Indicators/ModemInfoItem.qml:105
416−msgid "Unlock SIM"
417−msgstr "심 카드 잠금 해제"
418−
419−#: qml/Panel/Indicators/RoamingIndication.qml:27
420−msgid "Roaming"
421−msgstr "로밍"
422−
423#: qml/Tutorial/TutorialBottom.qml:28
415#: qml/Tutorial/TutorialBottom.qml:28
424msgid "Open special menus"
416msgid "Open special menus"
425msgstr "특별 메뉴 열기"
417msgstr "특별 메뉴 열기"
@@ -484,7 +476,7 @@ msgstr "안녕!"
484
476
485#: qml/Wizard/Pages/10-welcome.qml:44
477#: qml/Wizard/Pages/10-welcome.qml:44
486msgid "Welcome to your Ubuntu device."
478msgid "Welcome to your Ubuntu device."
487−msgstr ""
479+msgstr "우분투를 사용해주셔서 감사합니다."
488
480
489#: qml/Wizard/Pages/10-welcome.qml:52
481#: qml/Wizard/Pages/10-welcome.qml:52
490msgid "Let’s get started."
482msgid "Let’s get started."
@@ -515,7 +507,7 @@ msgstr "보안 잠금"
515
507
516#: qml/Wizard/Pages/30-passwd-type.qml:79
508#: qml/Wizard/Pages/30-passwd-type.qml:79
517msgid "Please select how you’d like to unlock your device."
509msgid "Please select how you’d like to unlock your device."
518−msgstr ""
510+msgstr "장치의 잠금 해제 방법을 선택해주십시오."
519
511
520#: qml/Wizard/Pages/30-passwd-type.qml:102
512#: qml/Wizard/Pages/30-passwd-type.qml:102
521msgctxt "Label: Type of security method"
513msgctxt "Label: Type of security method"
@@ -616,7 +608,7 @@ msgstr "잘 하셨습니다!"
616
608
617#: qml/Wizard/Pages/80-finished.qml:46
609#: qml/Wizard/Pages/80-finished.qml:46
618msgid "Your device is now ready to use."
610msgid "Your device is now ready to use."
619−msgstr ""
611+msgstr "이제 장치를 사용할 수 있습니다."
620
612
621#: qml/Wizard/Pages/80-finished.qml:53
613#: qml/Wizard/Pages/80-finished.qml:53
622msgid "Finish"
614msgid "Finish"
@@ -695,6 +687,9 @@ msgstr "%1 〉"
695#~ msgid "All"
687#~ msgid "All"
696#~ msgstr "모두"
688#~ msgstr "모두"
697
689
690+#~ msgid "Roaming"
691+#~ msgstr "로밍"
692+
698#~ msgid "Favorites"
693#~ msgid "Favorites"
699#~ msgstr "즐겨찾기"
694#~ msgstr "즐겨찾기"
700
695
@@ -731,6 +726,9 @@ msgstr "%1 〉"
731#~ msgid "Loading. Please Wait..."
726#~ msgid "Loading. Please Wait..."
732#~ msgstr "불러오는 중 입니다. 짐시 기다려주십시오..."
727#~ msgstr "불러오는 중 입니다. 짐시 기다려주십시오..."
733
728
729+#~ msgid "Unlock SIM"
730+#~ msgstr "심 카드 잠금 해제"
731+
734#~ msgid "Try swiping from the top edge to access the indicators"
732#~ msgid "Try swiping from the top edge to access the indicators"
735#~ msgstr "위쪽 가장자리에서 쓸면 알림에 접근할 수 있습니다."
733#~ msgstr "위쪽 가장자리에서 쓸면 알림에 접근할 수 있습니다."
736
734
po/ku.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2014-09-10 13:14+0000\n"
11"PO-Revision-Date: 2014-09-10 13:14+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Kurdish <ku@li.org>\n"
13"Language-Team: Kurdish <ku@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -173,38 +173,38 @@ msgstr ""
173msgid "Close all"
173msgid "Close all"
174msgstr ""
174msgstr ""
175
175
176−#: qml/Dash/DashPageHeader.qml:266
176+#: qml/Dash/DashPageHeader.qml:270
177msgctxt "Button: Open the Ubuntu Store"
177msgctxt "Button: Open the Ubuntu Store"
178msgid "Store"
178msgid "Store"
179msgstr ""
179msgstr ""
180
180
181−#: qml/Dash/DashPageHeader.qml:273
181+#: qml/Dash/DashPageHeader.qml:277
182msgctxt "Button: Start a search in the current dash scope"
182msgctxt "Button: Start a search in the current dash scope"
183msgid "Search"
183msgid "Search"
184msgstr ""
184msgstr ""
185
185
186−#: qml/Dash/DashPageHeader.qml:283
186+#: qml/Dash/DashPageHeader.qml:287
187msgctxt "Button: Show the current dash scope settings"
187msgctxt "Button: Show the current dash scope settings"
188msgid "Settings"
188msgid "Settings"
189msgstr ""
189msgstr ""
190
190
191−#: qml/Dash/DashPageHeader.qml:290
191+#: qml/Dash/DashPageHeader.qml:294
192msgid "Remove from Favorites"
192msgid "Remove from Favorites"
193msgstr "Ji nav Bijareyan rake"
193msgstr "Ji nav Bijareyan rake"
194
194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196msgid "Add to Favorites"
196msgid "Add to Favorites"
197msgstr "Li Bijareyan zêde bike"
197msgstr "Li Bijareyan zêde bike"
198
198
199−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
199+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
200msgid "See less"
200msgid "See less"
201msgstr "Hindiktir bibîne"
201msgstr "Hindiktir bibîne"
202
202
203−#: qml/Dash/GenericScopeView.qml:587
203+#: qml/Dash/GenericScopeView.qml:565
204msgid "See all"
204msgid "See all"
205msgstr "Tevî bibîne"
205msgstr "Tevî bibîne"
206
206
207−#: qml/Dash/GenericScopeView.qml:649
207+#: qml/Dash/GenericScopeView.qml:627
208msgctxt "Label: Hint for dash search line edit"
208msgctxt "Label: Hint for dash search line edit"
209msgid "Search"
209msgid "Search"
210msgstr ""
210msgstr ""
@@ -422,14 +422,6 @@ msgctxt "Button: Call back on phone"
422msgid "Call back"
422msgid "Call back"
423msgstr ""
423msgstr ""
424
424
425−#: qml/Panel/Indicators/ModemInfoItem.qml:105
426−msgid "Unlock SIM"
427−msgstr "Kilîda SIMê veke"
428−
429−#: qml/Panel/Indicators/RoamingIndication.qml:27
430−msgid "Roaming"
431−msgstr "Geriyan"
432−
433#: qml/Tutorial/TutorialBottom.qml:28
425#: qml/Tutorial/TutorialBottom.qml:28
434msgid "Open special menus"
426msgid "Open special menus"
435msgstr ""
427msgstr ""
@@ -752,3 +744,9 @@ msgstr ""
752
744
753#~ msgid "Speaking..."
745#~ msgid "Speaking..."
754#~ msgstr "Diaxive..."
746#~ msgstr "Diaxive..."
747+
748+#~ msgid "Unlock SIM"
749+#~ msgstr "Kilîda SIMê veke"
750+
751+#~ msgid "Roaming"
752+#~ msgstr "Geriyan"
po/ky.po+11−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2013-06-27 06:17+0000\n"
11"PO-Revision-Date: 2013-06-27 06:17+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Kirghiz <ky@li.org>\n"
13"Language-Team: Kirghiz <ky@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171msgid "Close all"
171msgid "Close all"
172msgstr ""
172msgstr ""
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177msgstr ""
177msgstr ""
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr ""
182msgstr ""
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr ""
187msgstr ""
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr ""
191msgstr ""
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr ""
195msgstr ""
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr ""
199msgstr ""
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr ""
203msgstr ""
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr ""
208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416msgid "Call back"
416msgid "Call back"
417msgstr ""
417msgstr ""
418
418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427#: qml/Tutorial/TutorialBottom.qml:28
419#: qml/Tutorial/TutorialBottom.qml:28
428msgid "Open special menus"
420msgid "Open special menus"
429msgstr ""
421msgstr ""
po/lo.po+11−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2013-10-02 10:00+0000\n"
11"PO-Revision-Date: 2013-10-02 10:00+0000\n"
12"Last-Translator: Anousak <anousak@gmail.com>\n"
12"Last-Translator: Anousak <anousak@gmail.com>\n"
13"Language-Team: Lao <lo@li.org>\n"
13"Language-Team: Lao <lo@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171msgid "Close all"
171msgid "Close all"
172msgstr ""
172msgstr ""
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177msgstr ""
177msgstr ""
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr ""
182msgstr ""
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr ""
187msgstr ""
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr ""
191msgstr ""
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr ""
195msgstr ""
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr ""
199msgstr ""
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr ""
203msgstr ""
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr ""
208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416msgid "Call back"
416msgid "Call back"
417msgstr ""
417msgstr ""
418
418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427#: qml/Tutorial/TutorialBottom.qml:28
419#: qml/Tutorial/TutorialBottom.qml:28
428msgid "Open special menus"
420msgid "Open special menus"
429msgstr ""
421msgstr ""
po/lt.po+11−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2014-05-19 17:15+0000\n"
11"PO-Revision-Date: 2014-05-19 17:15+0000\n"
12"Last-Translator: Mantas Kriaučiūnas <mantas@akl.lt>\n"
12"Last-Translator: Mantas Kriaučiūnas <mantas@akl.lt>\n"
13"Language-Team: Lithuanian <lt@li.org>\n"
13"Language-Team: Lithuanian <lt@li.org>\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%10==1 && n%100!=11 ? 0 : n%10>=2 && "
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"(n%100<10 || n%100>=20) ? 1 : 2;\n"
18"(n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-02-16 05:37+0000\n"
19+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
20−"X-Generator: Launchpad (build 17925)\n"
20+"X-Generator: Launchpad (build 17936)\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -172,38 +172,38 @@ msgstr ""
172msgid "Close all"
172msgid "Close all"
173msgstr ""
173msgstr ""
174
174
175−#: qml/Dash/DashPageHeader.qml:266
175+#: qml/Dash/DashPageHeader.qml:270
176msgctxt "Button: Open the Ubuntu Store"
176msgctxt "Button: Open the Ubuntu Store"
177msgid "Store"
177msgid "Store"
178msgstr ""
178msgstr ""
179
179
180−#: qml/Dash/DashPageHeader.qml:273
180+#: qml/Dash/DashPageHeader.qml:277
181msgctxt "Button: Start a search in the current dash scope"
181msgctxt "Button: Start a search in the current dash scope"
182msgid "Search"
182msgid "Search"
183msgstr ""
183msgstr ""
184
184
185−#: qml/Dash/DashPageHeader.qml:283
185+#: qml/Dash/DashPageHeader.qml:287
186msgctxt "Button: Show the current dash scope settings"
186msgctxt "Button: Show the current dash scope settings"
187msgid "Settings"
187msgid "Settings"
188msgstr ""
188msgstr ""
189
189
190−#: qml/Dash/DashPageHeader.qml:290
190+#: qml/Dash/DashPageHeader.qml:294
191msgid "Remove from Favorites"
191msgid "Remove from Favorites"
192msgstr ""
192msgstr ""
193
193
194−#: qml/Dash/DashPageHeader.qml:290
194+#: qml/Dash/DashPageHeader.qml:294
195msgid "Add to Favorites"
195msgid "Add to Favorites"
196msgstr ""
196msgstr ""
197
197
198−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
198+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
199msgid "See less"
199msgid "See less"
200msgstr ""
200msgstr ""
201
201
202−#: qml/Dash/GenericScopeView.qml:587
202+#: qml/Dash/GenericScopeView.qml:565
203msgid "See all"
203msgid "See all"
204msgstr ""
204msgstr ""
205
205
206−#: qml/Dash/GenericScopeView.qml:649
206+#: qml/Dash/GenericScopeView.qml:627
207msgctxt "Label: Hint for dash search line edit"
207msgctxt "Label: Hint for dash search line edit"
208msgid "Search"
208msgid "Search"
209msgstr ""
209msgstr ""
@@ -417,14 +417,6 @@ msgctxt "Button: Call back on phone"
417msgid "Call back"
417msgid "Call back"
418msgstr ""
418msgstr ""
419
419
420−#: qml/Panel/Indicators/ModemInfoItem.qml:105
421−msgid "Unlock SIM"
422−msgstr ""
423−
424−#: qml/Panel/Indicators/RoamingIndication.qml:27
425−msgid "Roaming"
426−msgstr ""
427−
428#: qml/Tutorial/TutorialBottom.qml:28
420#: qml/Tutorial/TutorialBottom.qml:28
429msgid "Open special menus"
421msgid "Open special menus"
430msgstr ""
422msgstr ""
po/lv.po+17−19
@@ -8,7 +8,7 @@ msgid ""
8msgstr ""
8msgstr ""
9"Project-Id-Version: unity\n"
9"Project-Id-Version: unity\n"
10"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
11+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
12"PO-Revision-Date: 2015-11-22 19:13+0000\n"
12"PO-Revision-Date: 2015-11-22 19:13+0000\n"
13"Last-Translator: Klavs Anson <anson.klavs@gmail.com>\n"
13"Last-Translator: Klavs Anson <anson.klavs@gmail.com>\n"
14"Language-Team: Latvian <lata-l10n@googlegroups.com>\n"
14"Language-Team: Latvian <lata-l10n@googlegroups.com>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Type: text/plain; charset=UTF-8\n"
17"Content-Transfer-Encoding: 8bit\n"
17"Content-Transfer-Encoding: 8bit\n"
18"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n"
18"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-02-16 05:37+0000\n"
19+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
20−"X-Generator: Launchpad (build 17925)\n"
20+"X-Generator: Launchpad (build 17936)\n"
21"Language: lv\n"
21"Language: lv\n"
22
22
23#: plugins/IntegratedLightDM/Greeter.cpp:112
23#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -176,38 +176,38 @@ msgstr ""
176msgid "Close all"
176msgid "Close all"
177msgstr ""
177msgstr ""
178
178
179−#: qml/Dash/DashPageHeader.qml:266
179+#: qml/Dash/DashPageHeader.qml:270
180msgctxt "Button: Open the Ubuntu Store"
180msgctxt "Button: Open the Ubuntu Store"
181msgid "Store"
181msgid "Store"
182msgstr "Veikals"
182msgstr "Veikals"
183
183
184−#: qml/Dash/DashPageHeader.qml:273
184+#: qml/Dash/DashPageHeader.qml:277
185msgctxt "Button: Start a search in the current dash scope"
185msgctxt "Button: Start a search in the current dash scope"
186msgid "Search"
186msgid "Search"
187msgstr "Meklēt"
187msgstr "Meklēt"
188
188
189−#: qml/Dash/DashPageHeader.qml:283
189+#: qml/Dash/DashPageHeader.qml:287
190msgctxt "Button: Show the current dash scope settings"
190msgctxt "Button: Show the current dash scope settings"
191msgid "Settings"
191msgid "Settings"
192msgstr "Iestatījumi"
192msgstr "Iestatījumi"
193
193
194−#: qml/Dash/DashPageHeader.qml:290
194+#: qml/Dash/DashPageHeader.qml:294
195msgid "Remove from Favorites"
195msgid "Remove from Favorites"
196msgstr "Izņemt no izlases"
196msgstr "Izņemt no izlases"
197
197
198−#: qml/Dash/DashPageHeader.qml:290
198+#: qml/Dash/DashPageHeader.qml:294
199msgid "Add to Favorites"
199msgid "Add to Favorites"
200msgstr "Pievienot izlasei"
200msgstr "Pievienot izlasei"
201
201
202−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
202+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
203msgid "See less"
203msgid "See less"
204msgstr "Skatīt mazāk"
204msgstr "Skatīt mazāk"
205
205
206−#: qml/Dash/GenericScopeView.qml:587
206+#: qml/Dash/GenericScopeView.qml:565
207msgid "See all"
207msgid "See all"
208msgstr "Skatīt visus"
208msgstr "Skatīt visus"
209
209
210−#: qml/Dash/GenericScopeView.qml:649
210+#: qml/Dash/GenericScopeView.qml:627
211msgctxt "Label: Hint for dash search line edit"
211msgctxt "Label: Hint for dash search line edit"
212msgid "Search"
212msgid "Search"
213msgstr "Meklēt"
213msgstr "Meklēt"
@@ -428,14 +428,6 @@ msgctxt "Button: Call back on phone"
428msgid "Call back"
428msgid "Call back"
429msgstr "Atzvanīt"
429msgstr "Atzvanīt"
430
430
431−#: qml/Panel/Indicators/ModemInfoItem.qml:105
432−msgid "Unlock SIM"
433−msgstr "Atbloķēt SIM"
434−
435−#: qml/Panel/Indicators/RoamingIndication.qml:27
436−msgid "Roaming"
437−msgstr "Viesabonēšana"
438−
439#: qml/Tutorial/TutorialBottom.qml:28
431#: qml/Tutorial/TutorialBottom.qml:28
440msgid "Open special menus"
432msgid "Open special menus"
441msgstr "Atvērt īpašas izvēlnes"
433msgstr "Atvērt īpašas izvēlnes"
@@ -729,12 +721,18 @@ msgstr "%1 〉"
729#~ msgid "All"
721#~ msgid "All"
730#~ msgstr "Visi"
722#~ msgstr "Visi"
731
723
724+#~ msgid "Unlock SIM"
725+#~ msgstr "Atbloķēt SIM"
726+
732#~ msgid "Favorites"
727#~ msgid "Favorites"
733#~ msgstr "Iecienītās"
728#~ msgstr "Iecienītās"
734
729
735#~ msgid "Done"
730#~ msgid "Done"
736#~ msgstr "Pabeigts"
731#~ msgstr "Pabeigts"
737
732
733+#~ msgid "Roaming"
734+#~ msgstr "Viesabonēšana"
735+
738#~ msgid "Store"
736#~ msgid "Store"
739#~ msgstr "Veikals"
737#~ msgstr "Veikals"
740
738
po/ml.po+11−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2013-11-23 11:44+0000\n"
11"PO-Revision-Date: 2013-11-23 11:44+0000\n"
12"Last-Translator: ST Alfas <Unknown>\n"
12"Last-Translator: ST Alfas <Unknown>\n"
13"Language-Team: Malayalam <ml@li.org>\n"
13"Language-Team: Malayalam <ml@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171msgid "Close all"
171msgid "Close all"
172msgstr ""
172msgstr ""
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177msgstr ""
177msgstr ""
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr ""
182msgstr ""
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr ""
187msgstr ""
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr ""
191msgstr ""
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr ""
195msgstr ""
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr ""
199msgstr ""
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr ""
203msgstr ""
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr ""
208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416msgid "Call back"
416msgid "Call back"
417msgstr ""
417msgstr ""
418
418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427#: qml/Tutorial/TutorialBottom.qml:28
419#: qml/Tutorial/TutorialBottom.qml:28
428msgid "Open special menus"
420msgid "Open special menus"
429msgstr ""
421msgstr ""
po/mr.po+11−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2014-01-14 19:54+0000\n"
11"PO-Revision-Date: 2014-01-14 19:54+0000\n"
12"Last-Translator: Rohan Deshmukh <Unknown>\n"
12"Last-Translator: Rohan Deshmukh <Unknown>\n"
13"Language-Team: Marathi <mr@li.org>\n"
13"Language-Team: Marathi <mr@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171msgid "Close all"
171msgid "Close all"
172msgstr ""
172msgstr ""
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177msgstr ""
177msgstr ""
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr "शोध"
182msgstr "शोध"
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr ""
187msgstr ""
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr "आवड पासून काढूण टाका"
191msgstr "आवड पासून काढूण टाका"
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr "आवड मध्ये जोडा"
195msgstr "आवड मध्ये जोडा"
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr ""
199msgstr ""
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr ""
203msgstr ""
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr "शोध"
208msgstr "शोध"
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416msgid "Call back"
416msgid "Call back"
417msgstr ""
417msgstr ""
418
418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427#: qml/Tutorial/TutorialBottom.qml:28
419#: qml/Tutorial/TutorialBottom.qml:28
428msgid "Open special menus"
420msgid "Open special menus"
429msgstr ""
421msgstr ""
po/ms.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2014-01-17 09:05+0000\n"
11"PO-Revision-Date: 2014-01-17 09:05+0000\n"
12"Last-Translator: abuyop <Unknown>\n"
12"Last-Translator: abuyop <Unknown>\n"
13"Language-Team: Malay <ms@li.org>\n"
13"Language-Team: Malay <ms@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -173,38 +173,38 @@ msgstr "Sambung semula sekarang!"
173msgid "Close all"
173msgid "Close all"
174msgstr "Tutup semua"
174msgstr "Tutup semua"
175
175
176−#: qml/Dash/DashPageHeader.qml:266
176+#: qml/Dash/DashPageHeader.qml:270
177msgctxt "Button: Open the Ubuntu Store"
177msgctxt "Button: Open the Ubuntu Store"
178msgid "Store"
178msgid "Store"
179msgstr "Kedai"
179msgstr "Kedai"
180
180
181−#: qml/Dash/DashPageHeader.qml:273
181+#: qml/Dash/DashPageHeader.qml:277
182msgctxt "Button: Start a search in the current dash scope"
182msgctxt "Button: Start a search in the current dash scope"
183msgid "Search"
183msgid "Search"
184msgstr "Gelintar"
184msgstr "Gelintar"
185
185
186−#: qml/Dash/DashPageHeader.qml:283
186+#: qml/Dash/DashPageHeader.qml:287
187msgctxt "Button: Show the current dash scope settings"
187msgctxt "Button: Show the current dash scope settings"
188msgid "Settings"
188msgid "Settings"
189msgstr "Tetapan"
189msgstr "Tetapan"
190
190
191−#: qml/Dash/DashPageHeader.qml:290
191+#: qml/Dash/DashPageHeader.qml:294
192msgid "Remove from Favorites"
192msgid "Remove from Favorites"
193msgstr "Buang dari Kegemaran"
193msgstr "Buang dari Kegemaran"
194
194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196msgid "Add to Favorites"
196msgid "Add to Favorites"
197msgstr "Tambah ke Kegemaran"
197msgstr "Tambah ke Kegemaran"
198
198
199−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
199+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
200msgid "See less"
200msgid "See less"
201msgstr "Lihat kurang"
201msgstr "Lihat kurang"
202
202
203−#: qml/Dash/GenericScopeView.qml:587
203+#: qml/Dash/GenericScopeView.qml:565
204msgid "See all"
204msgid "See all"
205msgstr "Lihat semua"
205msgstr "Lihat semua"
206
206
207−#: qml/Dash/GenericScopeView.qml:649
207+#: qml/Dash/GenericScopeView.qml:627
208msgctxt "Label: Hint for dash search line edit"
208msgctxt "Label: Hint for dash search line edit"
209msgid "Search"
209msgid "Search"
210msgstr "Gelintar"
210msgstr "Gelintar"
@@ -422,14 +422,6 @@ msgctxt "Button: Call back on phone"
422msgid "Call back"
422msgid "Call back"
423msgstr "Panggilan semula"
423msgstr "Panggilan semula"
424
424
425−#: qml/Panel/Indicators/ModemInfoItem.qml:105
426−msgid "Unlock SIM"
427−msgstr "Buka SIM"
428−
429−#: qml/Panel/Indicators/RoamingIndication.qml:27
430−msgid "Roaming"
431−msgstr "Perayauan"
432−
433#: qml/Tutorial/TutorialBottom.qml:28
425#: qml/Tutorial/TutorialBottom.qml:28
434msgid "Open special menus"
426msgid "Open special menus"
435msgstr "Buka menu khas"
427msgstr "Buka menu khas"
@@ -758,12 +750,18 @@ msgstr "%1 〉"
758#~ msgid "Done"
750#~ msgid "Done"
759#~ msgstr "Selesai"
751#~ msgstr "Selesai"
760
752
753+#~ msgid "Roaming"
754+#~ msgstr "Perayauan"
755+
761#~ msgid "Please re-enter"
756#~ msgid "Please re-enter"
762#~ msgstr "Sila masuk-semula"
757#~ msgstr "Sila masuk-semula"
763
758
764#~ msgid "Manage Scopes"
759#~ msgid "Manage Scopes"
765#~ msgstr "Urus Skop"
760#~ msgstr "Urus Skop"
766
761
762+#~ msgid "Unlock SIM"
763+#~ msgstr "Buka SIM"
764+
767#~ msgid ""
765#~ msgid ""
768#~ "You have now mastered the edge gestures and can start using the "
766#~ "You have now mastered the edge gestures and can start using the "
769#~ "phone<br><br>Tap on the screen to start"
767#~ "phone<br><br>Tap on the screen to start"
po/my.po+14−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2013-12-12 11:12+0000\n"
11"PO-Revision-Date: 2013-12-12 11:12+0000\n"
12"Last-Translator: Pyae Sone <Unknown>\n"
12"Last-Translator: Pyae Sone <Unknown>\n"
13"Language-Team: Burmese <my@li.org>\n"
13"Language-Team: Burmese <my@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171msgid "Close all"
171msgid "Close all"
172msgstr ""
172msgstr ""
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177msgstr "မှတ်သားပါ"
177msgstr "မှတ်သားပါ"
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr "ရှာဖွေရန်"
182msgstr "ရှာဖွေရန်"
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr "ချိန်ညှိစရာများ"
187msgstr "ချိန်ညှိစရာများ"
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr "နှစ်သက်မှုအဖြစ်မှပယ်ဖျက်ပါ"
191msgstr "နှစ်သက်မှုအဖြစ်မှပယ်ဖျက်ပါ"
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr "နှစ်သက်မှုအဖြစ်ထည့်ပါ"
195msgstr "နှစ်သက်မှုအဖြစ်ထည့်ပါ"
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr ""
199msgstr ""
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr ""
203msgstr ""
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr "ရှာဖွေရန်"
208msgstr "ရှာဖွေရန်"
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416msgid "Call back"
416msgid "Call back"
417msgstr ""
417msgstr ""
418
418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr "Roaming"
426−
427#: qml/Tutorial/TutorialBottom.qml:28
419#: qml/Tutorial/TutorialBottom.qml:28
428msgid "Open special menus"
420msgid "Open special menus"
429msgstr ""
421msgstr ""
@@ -698,3 +690,6 @@ msgstr ""
698
690
699#~ msgid "Well done"
691#~ msgid "Well done"
700#~ msgstr "ကောင်းအောင်ပြုလုပ်ခဲ့သည်"
692#~ msgstr "ကောင်းအောင်ပြုလုပ်ခဲ့သည်"
693+
694+#~ msgid "Roaming"
695+#~ msgstr "Roaming"
po/nb.po+22−22
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-07-05 19:44+0000\n"
11"PO-Revision-Date: 2015-07-05 19:44+0000\n"
12"Last-Translator: Mathias Bynke <Unknown>\n"
12"Last-Translator: Mathias Bynke <Unknown>\n"
13"Language-Team: Norwegian Bokmal <nb@li.org>\n"
13"Language-Team: Norwegian Bokmal <nb@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -177,38 +177,38 @@ msgstr "Koble til nå!"
177msgid "Close all"
177msgid "Close all"
178msgstr "Lukk alle"
178msgstr "Lukk alle"
179
179
180−#: qml/Dash/DashPageHeader.qml:266
180+#: qml/Dash/DashPageHeader.qml:270
181msgctxt "Button: Open the Ubuntu Store"
181msgctxt "Button: Open the Ubuntu Store"
182msgid "Store"
182msgid "Store"
183msgstr "Butikk"
183msgstr "Butikk"
184
184
185−#: qml/Dash/DashPageHeader.qml:273
185+#: qml/Dash/DashPageHeader.qml:277
186msgctxt "Button: Start a search in the current dash scope"
186msgctxt "Button: Start a search in the current dash scope"
187msgid "Search"
187msgid "Search"
188msgstr "Søk"
188msgstr "Søk"
189
189
190−#: qml/Dash/DashPageHeader.qml:283
190+#: qml/Dash/DashPageHeader.qml:287
191msgctxt "Button: Show the current dash scope settings"
191msgctxt "Button: Show the current dash scope settings"
192msgid "Settings"
192msgid "Settings"
193msgstr "Innstillinger"
193msgstr "Innstillinger"
194
194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196msgid "Remove from Favorites"
196msgid "Remove from Favorites"
197msgstr "Fjern fra favoritter"
197msgstr "Fjern fra favoritter"
198
198
199−#: qml/Dash/DashPageHeader.qml:290
199+#: qml/Dash/DashPageHeader.qml:294
200msgid "Add to Favorites"
200msgid "Add to Favorites"
201msgstr "Legg til i favoritter"
201msgstr "Legg til i favoritter"
202
202
203−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
203+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
204msgid "See less"
204msgid "See less"
205msgstr "Vis mindre"
205msgstr "Vis mindre"
206
206
207−#: qml/Dash/GenericScopeView.qml:587
207+#: qml/Dash/GenericScopeView.qml:565
208msgid "See all"
208msgid "See all"
209msgstr "Vis alt"
209msgstr "Vis alt"
210
210
211−#: qml/Dash/GenericScopeView.qml:649
211+#: qml/Dash/GenericScopeView.qml:627
212msgctxt "Label: Hint for dash search line edit"
212msgctxt "Label: Hint for dash search line edit"
213msgid "Search"
213msgid "Search"
214msgstr "Søk"
214msgstr "Søk"
@@ -267,6 +267,8 @@ msgid ""
267"Your device is now connected to an external display. Use this screen as a "
267"Your device is now connected to an external display. Use this screen as a "
268"touch pad to interact with the mouse."
268"touch pad to interact with the mouse."
269msgstr ""
269msgstr ""
270+"Enheten er nå koblet til en ekstern skjerm. Bruk denne skjermen som "
271+"styreplate."
270
272
271#: qml/Greeter/CoverPage.qml:107
273#: qml/Greeter/CoverPage.qml:107
272msgid "Unlock"
274msgid "Unlock"
@@ -426,14 +428,6 @@ msgctxt "Button: Call back on phone"
426msgid "Call back"
428msgid "Call back"
427msgstr "Ring tilbake"
429msgstr "Ring tilbake"
428
430
429−#: qml/Panel/Indicators/ModemInfoItem.qml:105
430−msgid "Unlock SIM"
431−msgstr "Lås opp SIM"
432−
433−#: qml/Panel/Indicators/RoamingIndication.qml:27
434−msgid "Roaming"
435−msgstr "Fremmednett"
436−
437#: qml/Tutorial/TutorialBottom.qml:28
431#: qml/Tutorial/TutorialBottom.qml:28
438msgid "Open special menus"
432msgid "Open special menus"
439msgstr "Åpne spesialmenyer"
433msgstr "Åpne spesialmenyer"
@@ -498,7 +492,7 @@ msgstr "Hei!"
498
492
499#: qml/Wizard/Pages/10-welcome.qml:44
493#: qml/Wizard/Pages/10-welcome.qml:44
500msgid "Welcome to your Ubuntu device."
494msgid "Welcome to your Ubuntu device."
501−msgstr ""
495+msgstr "Velkommen til Ubuntu-enheten din."
502
496
503#: qml/Wizard/Pages/10-welcome.qml:52
497#: qml/Wizard/Pages/10-welcome.qml:52
504msgid "Let’s get started."
498msgid "Let’s get started."
@@ -529,7 +523,7 @@ msgstr "Låsesikkerhet"
529
523
530#: qml/Wizard/Pages/30-passwd-type.qml:79
524#: qml/Wizard/Pages/30-passwd-type.qml:79
531msgid "Please select how you’d like to unlock your device."
525msgid "Please select how you’d like to unlock your device."
532−msgstr ""
526+msgstr "Velg hvordan du vil låse opp enheten."
533
527
534#: qml/Wizard/Pages/30-passwd-type.qml:102
528#: qml/Wizard/Pages/30-passwd-type.qml:102
535msgctxt "Label: Type of security method"
529msgctxt "Label: Type of security method"
@@ -636,7 +630,7 @@ msgstr "Godt jobba!"
636
630
637#: qml/Wizard/Pages/80-finished.qml:46
631#: qml/Wizard/Pages/80-finished.qml:46
638msgid "Your device is now ready to use."
632msgid "Your device is now ready to use."
639−msgstr ""
633+msgstr "Enheten er nå klar til bruk."
640
634
641#: qml/Wizard/Pages/80-finished.qml:53
635#: qml/Wizard/Pages/80-finished.qml:53
642msgid "Finish"
636msgid "Finish"
@@ -731,6 +725,9 @@ msgstr "%1 〉"
731#~ msgid "All"
725#~ msgid "All"
732#~ msgstr "Alt"
726#~ msgstr "Alt"
733
727
728+#~ msgid "Unlock SIM"
729+#~ msgstr "Lås opp SIM"
730+
734#~ msgid "Favorites"
731#~ msgid "Favorites"
735#~ msgstr "Favoritter"
732#~ msgstr "Favoritter"
736
733
@@ -743,6 +740,9 @@ msgstr "%1 〉"
743#~ msgid "Done"
740#~ msgid "Done"
744#~ msgstr "Ferdig"
741#~ msgstr "Ferdig"
745
742
743+#~ msgid "Roaming"
744+#~ msgstr "Fremmednett"
745+
746#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
746#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
747#~ msgstr "Skyv fra venstre for å få tilgang til programoppstarteren"
747#~ msgstr "Skyv fra venstre for å få tilgang til programoppstarteren"
748
748
po/ne.po+11−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-12-06 15:11+0000\n"
11"PO-Revision-Date: 2015-12-06 15:11+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Nepali <ne@li.org>\n"
13"Language-Team: Nepali <ne@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171msgid "Close all"
171msgid "Close all"
172msgstr ""
172msgstr ""
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177msgstr ""
177msgstr ""
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr ""
182msgstr ""
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr ""
187msgstr ""
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr ""
191msgstr ""
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr ""
195msgstr ""
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr ""
199msgstr ""
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr ""
203msgstr ""
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr ""
208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416msgid "Call back"
416msgid "Call back"
417msgstr ""
417msgstr ""
418
418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427#: qml/Tutorial/TutorialBottom.qml:28
419#: qml/Tutorial/TutorialBottom.qml:28
428msgid "Open special menus"
420msgid "Open special menus"
429msgstr ""
421msgstr ""
po/nl.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-07-07 07:14+0000\n"
11"PO-Revision-Date: 2015-07-07 07:14+0000\n"
12"Last-Translator: Hannie Dumoleyn <Unknown>\n"
12"Last-Translator: Hannie Dumoleyn <Unknown>\n"
13"Language-Team: Dutch <nl@li.org>\n"
13"Language-Team: Dutch <nl@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -177,38 +177,38 @@ msgstr ""
177msgid "Close all"
177msgid "Close all"
178msgstr ""
178msgstr ""
179
179
180−#: qml/Dash/DashPageHeader.qml:266
180+#: qml/Dash/DashPageHeader.qml:270
181msgctxt "Button: Open the Ubuntu Store"
181msgctxt "Button: Open the Ubuntu Store"
182msgid "Store"
182msgid "Store"
183msgstr "Winkel"
183msgstr "Winkel"
184
184
185−#: qml/Dash/DashPageHeader.qml:273
185+#: qml/Dash/DashPageHeader.qml:277
186msgctxt "Button: Start a search in the current dash scope"
186msgctxt "Button: Start a search in the current dash scope"
187msgid "Search"
187msgid "Search"
188msgstr "Zoeken"
188msgstr "Zoeken"
189
189
190−#: qml/Dash/DashPageHeader.qml:283
190+#: qml/Dash/DashPageHeader.qml:287
191msgctxt "Button: Show the current dash scope settings"
191msgctxt "Button: Show the current dash scope settings"
192msgid "Settings"
192msgid "Settings"
193msgstr "Instellingen"
193msgstr "Instellingen"
194
194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196msgid "Remove from Favorites"
196msgid "Remove from Favorites"
197msgstr "Verwijderen uit favorieten"
197msgstr "Verwijderen uit favorieten"
198
198
199−#: qml/Dash/DashPageHeader.qml:290
199+#: qml/Dash/DashPageHeader.qml:294
200msgid "Add to Favorites"
200msgid "Add to Favorites"
201msgstr "Toevoegen aan favorieten"
201msgstr "Toevoegen aan favorieten"
202
202
203−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
203+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
204msgid "See less"
204msgid "See less"
205msgstr "Minder zien"
205msgstr "Minder zien"
206
206
207−#: qml/Dash/GenericScopeView.qml:587
207+#: qml/Dash/GenericScopeView.qml:565
208msgid "See all"
208msgid "See all"
209msgstr "Alles zien"
209msgstr "Alles zien"
210
210
211−#: qml/Dash/GenericScopeView.qml:649
211+#: qml/Dash/GenericScopeView.qml:627
212msgctxt "Label: Hint for dash search line edit"
212msgctxt "Label: Hint for dash search line edit"
213msgid "Search"
213msgid "Search"
214msgstr "Zoeken"
214msgstr "Zoeken"
@@ -426,14 +426,6 @@ msgctxt "Button: Call back on phone"
426msgid "Call back"
426msgid "Call back"
427msgstr ""
427msgstr ""
428
428
429−#: qml/Panel/Indicators/ModemInfoItem.qml:105
430−msgid "Unlock SIM"
431−msgstr "Simkaart deblokkeren"
432−
433−#: qml/Panel/Indicators/RoamingIndication.qml:27
434−msgid "Roaming"
435−msgstr "Roaming"
436−
437#: qml/Tutorial/TutorialBottom.qml:28
429#: qml/Tutorial/TutorialBottom.qml:28
438msgid "Open special menus"
430msgid "Open special menus"
439msgstr "Speciale menu's openen"
431msgstr "Speciale menu's openen"
@@ -746,6 +738,9 @@ msgstr "%1 〉"
746#~ msgid "Store"
738#~ msgid "Store"
747#~ msgstr "Winkel"
739#~ msgstr "Winkel"
748
740
741+#~ msgid "Roaming"
742+#~ msgstr "Roaming"
743+
749#~ msgid "Done"
744#~ msgid "Done"
750#~ msgstr "Klaar"
745#~ msgstr "Klaar"
751
746
@@ -767,6 +762,9 @@ msgstr "%1 〉"
767#~ msgid "Power"
762#~ msgid "Power"
768#~ msgstr "Energie"
763#~ msgstr "Energie"
769
764
765+#~ msgid "Unlock SIM"
766+#~ msgstr "Simkaart deblokkeren"
767+
770#~ msgid "Restart"
768#~ msgid "Restart"
771#~ msgstr "Herstarten"
769#~ msgstr "Herstarten"
772
770
po/nn.po+11−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-05-12 11:32+0000\n"
11"PO-Revision-Date: 2015-05-12 11:32+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Norwegian Nynorsk <nn@li.org>\n"
13"Language-Team: Norwegian Nynorsk <nn@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171msgid "Close all"
171msgid "Close all"
172msgstr ""
172msgstr ""
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177msgstr ""
177msgstr ""
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr ""
182msgstr ""
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr ""
187msgstr ""
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr ""
191msgstr ""
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr ""
195msgstr ""
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr ""
199msgstr ""
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr ""
203msgstr ""
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr ""
208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416msgid "Call back"
416msgid "Call back"
417msgstr ""
417msgstr ""
418
418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427#: qml/Tutorial/TutorialBottom.qml:28
419#: qml/Tutorial/TutorialBottom.qml:28
428msgid "Open special menus"
420msgid "Open special menus"
429msgstr ""
421msgstr ""
po/oc.po+11−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-02-05 20:35+0000\n"
11"PO-Revision-Date: 2015-02-05 20:35+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Occitan (post 1500) <oc@li.org>\n"
13"Language-Team: Occitan (post 1500) <oc@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171msgid "Close all"
171msgid "Close all"
172msgstr ""
172msgstr ""
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177msgstr ""
177msgstr ""
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr ""
182msgstr ""
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr ""
187msgstr ""
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr ""
191msgstr ""
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr ""
195msgstr ""
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr ""
199msgstr ""
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr ""
203msgstr ""
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr ""
208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416msgid "Call back"
416msgid "Call back"
417msgstr ""
417msgstr ""
418
418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427#: qml/Tutorial/TutorialBottom.qml:28
419#: qml/Tutorial/TutorialBottom.qml:28
428msgid "Open special menus"
420msgid "Open special menus"
429msgstr ""
421msgstr ""
po/or.po+11−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-03-21 05:28+0000\n"
11"PO-Revision-Date: 2015-03-21 05:28+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Oriya <or@li.org>\n"
13"Language-Team: Oriya <or@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171msgid "Close all"
171msgid "Close all"
172msgstr ""
172msgstr ""
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177msgstr ""
177msgstr ""
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr ""
182msgstr ""
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr ""
187msgstr ""
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr ""
191msgstr ""
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr ""
195msgstr ""
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr ""
199msgstr ""
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr ""
203msgstr ""
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr ""
208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416msgid "Call back"
416msgid "Call back"
417msgstr ""
417msgstr ""
418
418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427#: qml/Tutorial/TutorialBottom.qml:28
419#: qml/Tutorial/TutorialBottom.qml:28
428msgid "Open special menus"
420msgid "Open special menus"
429msgstr ""
421msgstr ""
po/pa.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-04-24 04:29+0000\n"
11"PO-Revision-Date: 2015-04-24 04:29+0000\n"
12"Last-Translator: Gursharnjit_Singh <ubuntuser13@gmail.com>\n"
12"Last-Translator: Gursharnjit_Singh <ubuntuser13@gmail.com>\n"
13"Language-Team: Punjabi <pa@li.org>\n"
13"Language-Team: Punjabi <pa@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -173,38 +173,38 @@ msgstr ""
173msgid "Close all"
173msgid "Close all"
174msgstr ""
174msgstr ""
175
175
176−#: qml/Dash/DashPageHeader.qml:266
176+#: qml/Dash/DashPageHeader.qml:270
177msgctxt "Button: Open the Ubuntu Store"
177msgctxt "Button: Open the Ubuntu Store"
178msgid "Store"
178msgid "Store"
179msgstr "ਸਟੋਰ"
179msgstr "ਸਟੋਰ"
180
180
181−#: qml/Dash/DashPageHeader.qml:273
181+#: qml/Dash/DashPageHeader.qml:277
182msgctxt "Button: Start a search in the current dash scope"
182msgctxt "Button: Start a search in the current dash scope"
183msgid "Search"
183msgid "Search"
184msgstr "ਖੋਜ"
184msgstr "ਖੋਜ"
185
185
186−#: qml/Dash/DashPageHeader.qml:283
186+#: qml/Dash/DashPageHeader.qml:287
187msgctxt "Button: Show the current dash scope settings"
187msgctxt "Button: Show the current dash scope settings"
188msgid "Settings"
188msgid "Settings"
189msgstr "ਸੈਟਿੰਗ"
189msgstr "ਸੈਟਿੰਗ"
190
190
191−#: qml/Dash/DashPageHeader.qml:290
191+#: qml/Dash/DashPageHeader.qml:294
192msgid "Remove from Favorites"
192msgid "Remove from Favorites"
193msgstr "ਪਸੰਦ ਵਿੱਚੋਂ ਹਟਾਓ"
193msgstr "ਪਸੰਦ ਵਿੱਚੋਂ ਹਟਾਓ"
194
194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196msgid "Add to Favorites"
196msgid "Add to Favorites"
197msgstr "ਪਸੰਦ ਵਿੱਚ ਜੋੜੋ"
197msgstr "ਪਸੰਦ ਵਿੱਚ ਜੋੜੋ"
198
198
199−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
199+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
200msgid "See less"
200msgid "See less"
201msgstr "ਘੱਟ ਵੇਖੋ"
201msgstr "ਘੱਟ ਵੇਖੋ"
202
202
203−#: qml/Dash/GenericScopeView.qml:587
203+#: qml/Dash/GenericScopeView.qml:565
204msgid "See all"
204msgid "See all"
205msgstr "ਸਾਰਾ ਵੇਖੋ"
205msgstr "ਸਾਰਾ ਵੇਖੋ"
206
206
207−#: qml/Dash/GenericScopeView.qml:649
207+#: qml/Dash/GenericScopeView.qml:627
208msgctxt "Label: Hint for dash search line edit"
208msgctxt "Label: Hint for dash search line edit"
209msgid "Search"
209msgid "Search"
210msgstr "ਖੋਜ"
210msgstr "ਖੋਜ"
@@ -422,14 +422,6 @@ msgctxt "Button: Call back on phone"
422msgid "Call back"
422msgid "Call back"
423msgstr ""
423msgstr ""
424
424
425−#: qml/Panel/Indicators/ModemInfoItem.qml:105
426−msgid "Unlock SIM"
427−msgstr "ਅਣਲਾਕ SIM"
428−
429−#: qml/Panel/Indicators/RoamingIndication.qml:27
430−msgid "Roaming"
431−msgstr "ਰੋਮਿੰਗ"
432−
433#: qml/Tutorial/TutorialBottom.qml:28
425#: qml/Tutorial/TutorialBottom.qml:28
434msgid "Open special menus"
426msgid "Open special menus"
435msgstr "ਖਾਸ਼ ਮੀਨੂੰ ਖੋਲ੍ਹੋ"
427msgstr "ਖਾਸ਼ ਮੀਨੂੰ ਖੋਲ੍ਹੋ"
@@ -714,6 +706,12 @@ msgstr "%1 〉"
714#~ msgid "Please re-enter"
706#~ msgid "Please re-enter"
715#~ msgstr "ਕਿਰਪਾ ਕਰਕੇ ਮੁੜ-ਦਰਜ ਕਰੋ"
707#~ msgstr "ਕਿਰਪਾ ਕਰਕੇ ਮੁੜ-ਦਰਜ ਕਰੋ"
716
708
709+#~ msgid "Unlock SIM"
710+#~ msgstr "ਅਣਲਾਕ SIM"
711+
712+#~ msgid "Roaming"
713+#~ msgstr "ਰੋਮਿੰਗ"
714+
717#~ msgid "Please select how you’d like to unlock your phone."
715#~ msgid "Please select how you’d like to unlock your phone."
718#~ msgstr ""
716#~ msgstr ""
719#~ "ਕਿਰਪਾ ਕਰਕੇ ਚੁਣੋ ਤੁਸੀਂ ਆਪਣੇ ਫ਼ੋਨ ਨੂੰ ਕਿਸ ਤਰ੍ਹਾਂ ਅਣ-ਲਾਕ ਕਰਨਾ ਪਸੰਦ ਕਰੋਗੇ।"
717#~ "ਕਿਰਪਾ ਕਰਕੇ ਚੁਣੋ ਤੁਸੀਂ ਆਪਣੇ ਫ਼ੋਨ ਨੂੰ ਕਿਸ ਤਰ੍ਹਾਂ ਅਣ-ਲਾਕ ਕਰਨਾ ਪਸੰਦ ਕਰੋਗੇ।"
po/pl.po+20−22
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-07-12 09:46+0000\n"
11"PO-Revision-Date: 2015-07-12 09:46+0000\n"
12"Last-Translator: Seweryn Opyd <Unknown>\n"
12"Last-Translator: Seweryn Opyd <Unknown>\n"
13"Language-Team: Polish <pl@li.org>\n"
13"Language-Team: Polish <pl@li.org>\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%10>=2 && n%10<=4 && (n%100<10 "
17"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
18"|| n%100>=20) ? 1 : 2;\n"
18"|| n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-02-16 05:37+0000\n"
19+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
20−"X-Generator: Launchpad (build 17925)\n"
20+"X-Generator: Launchpad (build 17936)\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -175,38 +175,38 @@ msgstr "Ponownie połącz teraz!"
175msgid "Close all"
175msgid "Close all"
176msgstr "Zamknij wszystko"
176msgstr "Zamknij wszystko"
177
177
178−#: qml/Dash/DashPageHeader.qml:266
178+#: qml/Dash/DashPageHeader.qml:270
179msgctxt "Button: Open the Ubuntu Store"
179msgctxt "Button: Open the Ubuntu Store"
180msgid "Store"
180msgid "Store"
181msgstr "Sklep"
181msgstr "Sklep"
182
182
183−#: qml/Dash/DashPageHeader.qml:273
183+#: qml/Dash/DashPageHeader.qml:277
184msgctxt "Button: Start a search in the current dash scope"
184msgctxt "Button: Start a search in the current dash scope"
185msgid "Search"
185msgid "Search"
186msgstr "Wyszukaj"
186msgstr "Wyszukaj"
187
187
188−#: qml/Dash/DashPageHeader.qml:283
188+#: qml/Dash/DashPageHeader.qml:287
189msgctxt "Button: Show the current dash scope settings"
189msgctxt "Button: Show the current dash scope settings"
190msgid "Settings"
190msgid "Settings"
191msgstr "Ustawienia"
191msgstr "Ustawienia"
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Remove from Favorites"
194msgid "Remove from Favorites"
195msgstr "Usuń z ulubionych"
195msgstr "Usuń z ulubionych"
196
196
197−#: qml/Dash/DashPageHeader.qml:290
197+#: qml/Dash/DashPageHeader.qml:294
198msgid "Add to Favorites"
198msgid "Add to Favorites"
199msgstr "Dodaj do ulubionych"
199msgstr "Dodaj do ulubionych"
200
200
201−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
201+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
202msgid "See less"
202msgid "See less"
203msgstr "Zobacz mniej"
203msgstr "Zobacz mniej"
204
204
205−#: qml/Dash/GenericScopeView.qml:587
205+#: qml/Dash/GenericScopeView.qml:565
206msgid "See all"
206msgid "See all"
207msgstr "Zobacz wszystko"
207msgstr "Zobacz wszystko"
208
208
209−#: qml/Dash/GenericScopeView.qml:649
209+#: qml/Dash/GenericScopeView.qml:627
210msgctxt "Label: Hint for dash search line edit"
210msgctxt "Label: Hint for dash search line edit"
211msgid "Search"
211msgid "Search"
212msgstr "Szukaj"
212msgstr "Szukaj"
@@ -429,14 +429,6 @@ msgctxt "Button: Call back on phone"
429msgid "Call back"
429msgid "Call back"
430msgstr "Oddzwoń"
430msgstr "Oddzwoń"
431
431
432−#: qml/Panel/Indicators/ModemInfoItem.qml:105
433−msgid "Unlock SIM"
434−msgstr "Odblokuj kartę SIM"
435−
436−#: qml/Panel/Indicators/RoamingIndication.qml:27
437−msgid "Roaming"
438−msgstr "Roaming"
439−
440#: qml/Tutorial/TutorialBottom.qml:28
432#: qml/Tutorial/TutorialBottom.qml:28
441msgid "Open special menus"
433msgid "Open special menus"
442msgstr "Otwórz menu specjalne"
434msgstr "Otwórz menu specjalne"
@@ -501,7 +493,7 @@ msgstr "Witaj!"
501
493
502#: qml/Wizard/Pages/10-welcome.qml:44
494#: qml/Wizard/Pages/10-welcome.qml:44
503msgid "Welcome to your Ubuntu device."
495msgid "Welcome to your Ubuntu device."
504−msgstr ""
496+msgstr "Witaj w swoim urządzeniu Ubuntu."
505
497
506#: qml/Wizard/Pages/10-welcome.qml:52
498#: qml/Wizard/Pages/10-welcome.qml:52
507msgid "Let’s get started."
499msgid "Let’s get started."
@@ -533,7 +525,7 @@ msgstr "Blokada"
533
525
534#: qml/Wizard/Pages/30-passwd-type.qml:79
526#: qml/Wizard/Pages/30-passwd-type.qml:79
535msgid "Please select how you’d like to unlock your device."
527msgid "Please select how you’d like to unlock your device."
536−msgstr ""
528+msgstr "Prosimy wybrać sposób, w jaki chcesz odblokować swoje urządzenie."
537
529
538#: qml/Wizard/Pages/30-passwd-type.qml:102
530#: qml/Wizard/Pages/30-passwd-type.qml:102
539msgctxt "Label: Type of security method"
531msgctxt "Label: Type of security method"
@@ -640,7 +632,7 @@ msgstr "Dobra robota!"
640
632
641#: qml/Wizard/Pages/80-finished.qml:46
633#: qml/Wizard/Pages/80-finished.qml:46
642msgid "Your device is now ready to use."
634msgid "Your device is now ready to use."
643−msgstr ""
635+msgstr "Twoje urządzenie jest już gotowe do użytku."
644
636
645#: qml/Wizard/Pages/80-finished.qml:53
637#: qml/Wizard/Pages/80-finished.qml:53
646msgid "Finish"
638msgid "Finish"
@@ -740,6 +732,9 @@ msgstr "%1 〉"
740#~ "Wydawanie poleceń krawędzi zostało opanowane. Urządzenie gotowe do "
732#~ "Wydawanie poleceń krawędzi zostało opanowane. Urządzenie gotowe do "
741#~ "pracy.<br><br>Dotknij ekranu by rozpocząć"
733#~ "pracy.<br><br>Dotknij ekranu by rozpocząć"
742
734
735+#~ msgid "Unlock SIM"
736+#~ msgstr "Odblokuj kartę SIM"
737+
743#~ msgid "Log out"
738#~ msgid "Log out"
744#~ msgstr "Wyloguj"
739#~ msgstr "Wyloguj"
745
740
@@ -764,6 +759,9 @@ msgstr "%1 〉"
764#~ msgid "Settings"
759#~ msgid "Settings"
765#~ msgstr "Ustawienia"
760#~ msgstr "Ustawienia"
766
761
762+#~ msgid "Roaming"
763+#~ msgstr "Roaming"
764+
767#~ msgid "Please re-enter"
765#~ msgid "Please re-enter"
768#~ msgstr "Proszę wprowadź ponownie"
766#~ msgstr "Proszę wprowadź ponownie"
769
767
po/pt.po+28−30
@@ -7,16 +7,16 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11−"PO-Revision-Date: 2015-12-20 09:20+0000\n"
11+"PO-Revision-Date: 2016-02-18 01:11+0000\n"
12"Last-Translator: Ivo Xavier <ivofernandes12@gmail.com>\n"
12"Last-Translator: Ivo Xavier <ivofernandes12@gmail.com>\n"
13"Language-Team: Portuguese <pt@li.org>\n"
13"Language-Team: Portuguese <pt@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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -143,7 +143,7 @@ msgstr "Reiniciar"
143
143
144#: qml/Components/Lockscreen.qml:245
144#: qml/Components/Lockscreen.qml:245
145msgid "Return to Call"
145msgid "Return to Call"
146−msgstr "Volte para chamada"
146+msgstr "Volte para a chamada"
147
147
148#: qml/Components/Lockscreen.qml:245
148#: qml/Components/Lockscreen.qml:245
149msgid "Emergency Call"
149msgid "Emergency Call"
@@ -177,38 +177,38 @@ msgstr "Volte a ligar agora!"
177msgid "Close all"
177msgid "Close all"
178msgstr "Fechar tudo"
178msgstr "Fechar tudo"
179
179
180−#: qml/Dash/DashPageHeader.qml:266
180+#: qml/Dash/DashPageHeader.qml:270
181msgctxt "Button: Open the Ubuntu Store"
181msgctxt "Button: Open the Ubuntu Store"
182msgid "Store"
182msgid "Store"
183msgstr "Store"
183msgstr "Store"
184
184
185−#: qml/Dash/DashPageHeader.qml:273
185+#: qml/Dash/DashPageHeader.qml:277
186msgctxt "Button: Start a search in the current dash scope"
186msgctxt "Button: Start a search in the current dash scope"
187msgid "Search"
187msgid "Search"
188msgstr "Procurar"
188msgstr "Procurar"
189
189
190−#: qml/Dash/DashPageHeader.qml:283
190+#: qml/Dash/DashPageHeader.qml:287
191msgctxt "Button: Show the current dash scope settings"
191msgctxt "Button: Show the current dash scope settings"
192msgid "Settings"
192msgid "Settings"
193msgstr "Definições"
193msgstr "Definições"
194
194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196msgid "Remove from Favorites"
196msgid "Remove from Favorites"
197msgstr "Remover dos favoritos"
197msgstr "Remover dos favoritos"
198
198
199−#: qml/Dash/DashPageHeader.qml:290
199+#: qml/Dash/DashPageHeader.qml:294
200msgid "Add to Favorites"
200msgid "Add to Favorites"
201msgstr "Adicionar aos favoritos"
201msgstr "Adicionar aos favoritos"
202
202
203−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
203+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
204msgid "See less"
204msgid "See less"
205msgstr "Ver menos"
205msgstr "Ver menos"
206
206
207−#: qml/Dash/GenericScopeView.qml:587
207+#: qml/Dash/GenericScopeView.qml:565
208msgid "See all"
208msgid "See all"
209msgstr "Ver todos"
209msgstr "Ver todos"
210
210
211−#: qml/Dash/GenericScopeView.qml:649
211+#: qml/Dash/GenericScopeView.qml:627
212msgctxt "Label: Hint for dash search line edit"
212msgctxt "Label: Hint for dash search line edit"
213msgid "Search"
213msgid "Search"
214msgstr "Procurar"
214msgstr "Procurar"
@@ -347,7 +347,7 @@ msgstr "Mostrar palavra-passe"
347
347
348#: qml/Panel/ActiveCallHint.qml:79
348#: qml/Panel/ActiveCallHint.qml:79
349msgid "Tap to return to call..."
349msgid "Tap to return to call..."
350−msgstr "Toque para voltar a chamar..."
350+msgstr "Toque para voltar à chamada..."
351
351
352#: qml/Panel/ActiveCallHint.qml:92
352#: qml/Panel/ActiveCallHint.qml:92
353msgid "Conference"
353msgid "Conference"
@@ -428,14 +428,6 @@ msgctxt "Button: Call back on phone"
428msgid "Call back"
428msgid "Call back"
429msgstr "Ligar de volta"
429msgstr "Ligar de volta"
430
430
431−#: qml/Panel/Indicators/ModemInfoItem.qml:105
432−msgid "Unlock SIM"
433−msgstr "Desbloquear SIM"
434−
435−#: qml/Panel/Indicators/RoamingIndication.qml:27
436−msgid "Roaming"
437−msgstr "Roaming"
438−
439#: qml/Tutorial/TutorialBottom.qml:28
431#: qml/Tutorial/TutorialBottom.qml:28
440msgid "Open special menus"
432msgid "Open special menus"
441msgstr "Abrir menus especiais"
433msgstr "Abrir menus especiais"
@@ -500,7 +492,7 @@ msgstr "Olá!"
500
492
501#: qml/Wizard/Pages/10-welcome.qml:44
493#: qml/Wizard/Pages/10-welcome.qml:44
502msgid "Welcome to your Ubuntu device."
494msgid "Welcome to your Ubuntu device."
503−msgstr ""
495+msgstr "Bem-vindo ao seu dispositivo Ubuntu."
504
496
505#: qml/Wizard/Pages/10-welcome.qml:52
497#: qml/Wizard/Pages/10-welcome.qml:52
506msgid "Let’s get started."
498msgid "Let’s get started."
@@ -532,7 +524,7 @@ msgstr "Bloqueio de segurança"
532
524
533#: qml/Wizard/Pages/30-passwd-type.qml:79
525#: qml/Wizard/Pages/30-passwd-type.qml:79
534msgid "Please select how you’d like to unlock your device."
526msgid "Please select how you’d like to unlock your device."
535−msgstr ""
527+msgstr "Escolha como quer desbloquear o seu dispositivo."
536
528
537#: qml/Wizard/Pages/30-passwd-type.qml:102
529#: qml/Wizard/Pages/30-passwd-type.qml:102
538msgctxt "Label: Type of security method"
530msgctxt "Label: Type of security method"
@@ -607,7 +599,7 @@ msgstr "De modo nenhum"
607
599
608#: qml/Wizard/Pages/50-location.qml:124
600#: qml/Wizard/Pages/50-location.qml:124
609msgid "You can change your mind later in <b>System Settings</b>."
601msgid "You can change your mind later in <b>System Settings</b>."
610−msgstr "Pode mudar de ideias mais tarde em <b>Definições</b>."
602+msgstr "Pode mudar de ideias mais tarde nas <b>Definições</b>."
611
603
612#: qml/Wizard/Pages/60-reporting.qml:26
604#: qml/Wizard/Pages/60-reporting.qml:26
613msgid "Improving your experience"
605msgid "Improving your experience"
@@ -626,8 +618,8 @@ msgid ""
626"This can be disabled in <b>System Settings</b> under <b>Security &amp; "
618"This can be disabled in <b>System Settings</b> under <b>Security &amp; "
627"Privacy</b>"
619"Privacy</b>"
628msgstr ""
620msgstr ""
629−"Isto pode ser desligado nas <b>Definições do Sistema</b> debaixo da "
621+"Isto pode ser desligado nas <b>Definições</b> debaixo da <b>Segurança eamp; "
630−"<b>Segurança eamp; Privacidade</b>"
622+"Privacidade</b>"
631
623
632#: qml/Wizard/Pages/80-finished.qml:24
624#: qml/Wizard/Pages/80-finished.qml:24
633msgid "All done"
625msgid "All done"
@@ -639,7 +631,7 @@ msgstr "Bom trabalho!"
639
631
640#: qml/Wizard/Pages/80-finished.qml:46
632#: qml/Wizard/Pages/80-finished.qml:46
641msgid "Your device is now ready to use."
633msgid "Your device is now ready to use."
642−msgstr ""
634+msgstr "O seu dispositivo está pronto."
643
635
644#: qml/Wizard/Pages/80-finished.qml:53
636#: qml/Wizard/Pages/80-finished.qml:53
645msgid "Finish"
637msgid "Finish"
@@ -655,7 +647,7 @@ msgstr "Confirmar a palavra-passe"
655
647
656#: qml/Wizard/Pages/passwd-confirm.qml:50
648#: qml/Wizard/Pages/passwd-confirm.qml:50
657msgid "Confirm passcode"
649msgid "Confirm passcode"
658−msgstr "Confirmar código"
650+msgstr "Confirme o código"
659
651
660#: qml/Wizard/Pages/passwd-confirm.qml:53
652#: qml/Wizard/Pages/passwd-confirm.qml:53
661#: qml/Wizard/Pages/passwd-confirm.qml:54
653#: qml/Wizard/Pages/passwd-confirm.qml:54
@@ -664,7 +656,7 @@ msgstr "Por favor, tente novamente."
664
656
665#: qml/Wizard/Pages/passwd-set.qml:61
657#: qml/Wizard/Pages/passwd-set.qml:61
666msgid "Choose your passcode"
658msgid "Choose your passcode"
667−msgstr "Escolha o seu código"
659+msgstr "Escolha o código"
668
660
669#: qml/Wizard/Pages/passwd-set.qml:68
661#: qml/Wizard/Pages/passwd-set.qml:68
670msgid "Passphrase must be 4 characters long"
662msgid "Passphrase must be 4 characters long"
@@ -721,6 +713,9 @@ msgstr "%1 〉"
721#~ msgid "All"
713#~ msgid "All"
722#~ msgstr "Todos"
714#~ msgstr "Todos"
723
715
716+#~ msgid "Unlock SIM"
717+#~ msgstr "Desbloquear SIM"
718+
724#~ msgid "Favorites"
719#~ msgid "Favorites"
725#~ msgstr "Favoritos"
720#~ msgstr "Favoritos"
726
721
@@ -730,6 +725,9 @@ msgstr "%1 〉"
730#~ msgid "Done"
725#~ msgid "Done"
731#~ msgstr "Concluído"
726#~ msgstr "Concluído"
732
727
728+#~ msgid "Roaming"
729+#~ msgstr "Roaming"
730+
733#~ msgid "Log out"
731#~ msgid "Log out"
734#~ msgstr "Terminar sessão"
732#~ msgstr "Terminar sessão"
735
733
po/pt_BR.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-08-05 04:40+0000\n"
11"PO-Revision-Date: 2015-08-05 04:40+0000\n"
12"Last-Translator: Julio Alexander Sieg <julio.sieg@gmail.com>\n"
12"Last-Translator: Julio Alexander Sieg <julio.sieg@gmail.com>\n"
13"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
13"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -175,38 +175,38 @@ msgstr ""
175msgid "Close all"
175msgid "Close all"
176msgstr ""
176msgstr ""
177
177
178−#: qml/Dash/DashPageHeader.qml:266
178+#: qml/Dash/DashPageHeader.qml:270
179msgctxt "Button: Open the Ubuntu Store"
179msgctxt "Button: Open the Ubuntu Store"
180msgid "Store"
180msgid "Store"
181msgstr "Loja"
181msgstr "Loja"
182
182
183−#: qml/Dash/DashPageHeader.qml:273
183+#: qml/Dash/DashPageHeader.qml:277
184msgctxt "Button: Start a search in the current dash scope"
184msgctxt "Button: Start a search in the current dash scope"
185msgid "Search"
185msgid "Search"
186msgstr "Pesquisar"
186msgstr "Pesquisar"
187
187
188−#: qml/Dash/DashPageHeader.qml:283
188+#: qml/Dash/DashPageHeader.qml:287
189msgctxt "Button: Show the current dash scope settings"
189msgctxt "Button: Show the current dash scope settings"
190msgid "Settings"
190msgid "Settings"
191msgstr "Configurações"
191msgstr "Configurações"
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Remove from Favorites"
194msgid "Remove from Favorites"
195msgstr "Remover dos favoritos"
195msgstr "Remover dos favoritos"
196
196
197−#: qml/Dash/DashPageHeader.qml:290
197+#: qml/Dash/DashPageHeader.qml:294
198msgid "Add to Favorites"
198msgid "Add to Favorites"
199msgstr "Adicionar aos favoritos"
199msgstr "Adicionar aos favoritos"
200
200
201−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
201+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
202msgid "See less"
202msgid "See less"
203msgstr "Ver menos"
203msgstr "Ver menos"
204
204
205−#: qml/Dash/GenericScopeView.qml:587
205+#: qml/Dash/GenericScopeView.qml:565
206msgid "See all"
206msgid "See all"
207msgstr "Ver todos"
207msgstr "Ver todos"
208
208
209−#: qml/Dash/GenericScopeView.qml:649
209+#: qml/Dash/GenericScopeView.qml:627
210msgctxt "Label: Hint for dash search line edit"
210msgctxt "Label: Hint for dash search line edit"
211msgid "Search"
211msgid "Search"
212msgstr "Pesquisar"
212msgstr "Pesquisar"
@@ -424,14 +424,6 @@ msgctxt "Button: Call back on phone"
424msgid "Call back"
424msgid "Call back"
425msgstr ""
425msgstr ""
426
426
427−#: qml/Panel/Indicators/ModemInfoItem.qml:105
428−msgid "Unlock SIM"
429−msgstr "Desbloquear SIM"
430−
431−#: qml/Panel/Indicators/RoamingIndication.qml:27
432−msgid "Roaming"
433−msgstr "Roaming"
434−
435#: qml/Tutorial/TutorialBottom.qml:28
427#: qml/Tutorial/TutorialBottom.qml:28
436msgid "Open special menus"
428msgid "Open special menus"
437msgstr "Abrir menus especiais"
429msgstr "Abrir menus especiais"
@@ -737,6 +729,9 @@ msgstr "%1 〉"
737#~ "Agora você já domina os gestos das bordas e pode começar a usar o "
729#~ "Agora você já domina os gestos das bordas e pode começar a usar o "
738#~ "telefone<br><br>Toque na tela para iniciar"
730#~ "telefone<br><br>Toque na tela para iniciar"
739
731
732+#~ msgid "Unlock SIM"
733+#~ msgstr "Desbloquear SIM"
734+
740#~ msgid "Store"
735#~ msgid "Store"
741#~ msgstr "Loja"
736#~ msgstr "Loja"
742
737
@@ -749,6 +744,9 @@ msgstr "%1 〉"
749#~ msgid "Favorites"
744#~ msgid "Favorites"
750#~ msgstr "Favoritos"
745#~ msgstr "Favoritos"
751
746
747+#~ msgid "Roaming"
748+#~ msgstr "Roaming"
749+
752#~ msgid "All"
750#~ msgid "All"
753#~ msgstr "Tudo"
751#~ msgstr "Tudo"
754
752
po/ro.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-07-06 17:47+0000\n"
11"PO-Revision-Date: 2015-07-06 17:47+0000\n"
12"Last-Translator: Meriuță Cornel <meriutacornel@neacornel.eu>\n"
12"Last-Translator: Meriuță Cornel <meriutacornel@neacornel.eu>\n"
13"Language-Team: Romanian <ro@li.org>\n"
13"Language-Team: Romanian <ro@li.org>\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: 2016-02-16 05:37+0000\n"
19+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
20−"X-Generator: Launchpad (build 17925)\n"
20+"X-Generator: Launchpad (build 17936)\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -178,38 +178,38 @@ msgstr ""
178msgid "Close all"
178msgid "Close all"
179msgstr ""
179msgstr ""
180
180
181−#: qml/Dash/DashPageHeader.qml:266
181+#: qml/Dash/DashPageHeader.qml:270
182msgctxt "Button: Open the Ubuntu Store"
182msgctxt "Button: Open the Ubuntu Store"
183msgid "Store"
183msgid "Store"
184msgstr "Magazin"
184msgstr "Magazin"
185
185
186−#: qml/Dash/DashPageHeader.qml:273
186+#: qml/Dash/DashPageHeader.qml:277
187msgctxt "Button: Start a search in the current dash scope"
187msgctxt "Button: Start a search in the current dash scope"
188msgid "Search"
188msgid "Search"
189msgstr "Căutare"
189msgstr "Căutare"
190
190
191−#: qml/Dash/DashPageHeader.qml:283
191+#: qml/Dash/DashPageHeader.qml:287
192msgctxt "Button: Show the current dash scope settings"
192msgctxt "Button: Show the current dash scope settings"
193msgid "Settings"
193msgid "Settings"
194msgstr "Configurări"
194msgstr "Configurări"
195
195
196−#: qml/Dash/DashPageHeader.qml:290
196+#: qml/Dash/DashPageHeader.qml:294
197msgid "Remove from Favorites"
197msgid "Remove from Favorites"
198msgstr "Șterge din favorite"
198msgstr "Șterge din favorite"
199
199
200−#: qml/Dash/DashPageHeader.qml:290
200+#: qml/Dash/DashPageHeader.qml:294
201msgid "Add to Favorites"
201msgid "Add to Favorites"
202msgstr "Adaugă la favorite"
202msgstr "Adaugă la favorite"
203
203
204−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
204+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
205msgid "See less"
205msgid "See less"
206msgstr "Afișează mai puține"
206msgstr "Afișează mai puține"
207
207
208−#: qml/Dash/GenericScopeView.qml:587
208+#: qml/Dash/GenericScopeView.qml:565
209msgid "See all"
209msgid "See all"
210msgstr "Afișează tot"
210msgstr "Afișează tot"
211
211
212−#: qml/Dash/GenericScopeView.qml:649
212+#: qml/Dash/GenericScopeView.qml:627
213msgctxt "Label: Hint for dash search line edit"
213msgctxt "Label: Hint for dash search line edit"
214msgid "Search"
214msgid "Search"
215msgstr "Căutare"
215msgstr "Căutare"
@@ -432,14 +432,6 @@ msgctxt "Button: Call back on phone"
432msgid "Call back"
432msgid "Call back"
433msgstr ""
433msgstr ""
434
434
435−#: qml/Panel/Indicators/ModemInfoItem.qml:105
436−msgid "Unlock SIM"
437−msgstr "Deblocare SIM"
438−
439−#: qml/Panel/Indicators/RoamingIndication.qml:27
440−msgid "Roaming"
441−msgstr "Roaming"
442−
443#: qml/Tutorial/TutorialBottom.qml:28
435#: qml/Tutorial/TutorialBottom.qml:28
444msgid "Open special menus"
436msgid "Open special menus"
445msgstr "Deschide meniurile speciale"
437msgstr "Deschide meniurile speciale"
@@ -751,6 +743,9 @@ msgstr "%1 〉"
751#~ msgid "All"
743#~ msgid "All"
752#~ msgstr "Tot"
744#~ msgstr "Tot"
753
745
746+#~ msgid "Unlock SIM"
747+#~ msgstr "Deblocare SIM"
748+
754#~ msgid "Favorites"
749#~ msgid "Favorites"
755#~ msgstr "Favorite"
750#~ msgstr "Favorite"
756
751
@@ -763,6 +758,9 @@ msgstr "%1 〉"
763#~ msgid "Done"
758#~ msgid "Done"
764#~ msgstr "Finalizat"
759#~ msgstr "Finalizat"
765
760
761+#~ msgid "Roaming"
762+#~ msgstr "Roaming"
763+
766#~ msgid "Log out"
764#~ msgid "Log out"
767#~ msgstr "Închide sesiunea"
765#~ msgstr "Închide sesiunea"
768
766
po/ru.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-07-06 05:33+0000\n"
11"PO-Revision-Date: 2015-07-06 05:33+0000\n"
12"Last-Translator: ☠Jay ZDLin☠ <Unknown>\n"
12"Last-Translator: ☠Jay ZDLin☠ <Unknown>\n"
13"Language-Team: Russian <ru@li.org>\n"
13"Language-Team: Russian <ru@li.org>\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%10==1 && n%100!=11 ? 0 : n%10>=2 && "
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-02-16 05:37+0000\n"
19+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
20−"X-Generator: Launchpad (build 17925)\n"
20+"X-Generator: Launchpad (build 17936)\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -179,38 +179,38 @@ msgstr "Переподключиться сейчас!"
179msgid "Close all"
179msgid "Close all"
180msgstr "Закрыть все"
180msgstr "Закрыть все"
181
181
182−#: qml/Dash/DashPageHeader.qml:266
182+#: qml/Dash/DashPageHeader.qml:270
183msgctxt "Button: Open the Ubuntu Store"
183msgctxt "Button: Open the Ubuntu Store"
184msgid "Store"
184msgid "Store"
185msgstr "Магазин"
185msgstr "Магазин"
186
186
187−#: qml/Dash/DashPageHeader.qml:273
187+#: qml/Dash/DashPageHeader.qml:277
188msgctxt "Button: Start a search in the current dash scope"
188msgctxt "Button: Start a search in the current dash scope"
189msgid "Search"
189msgid "Search"
190msgstr "Найти"
190msgstr "Найти"
191
191
192−#: qml/Dash/DashPageHeader.qml:283
192+#: qml/Dash/DashPageHeader.qml:287
193msgctxt "Button: Show the current dash scope settings"
193msgctxt "Button: Show the current dash scope settings"
194msgid "Settings"
194msgid "Settings"
195msgstr "Настройки"
195msgstr "Настройки"
196
196
197−#: qml/Dash/DashPageHeader.qml:290
197+#: qml/Dash/DashPageHeader.qml:294
198msgid "Remove from Favorites"
198msgid "Remove from Favorites"
199msgstr "Удалить из избранного"
199msgstr "Удалить из избранного"
200
200
201−#: qml/Dash/DashPageHeader.qml:290
201+#: qml/Dash/DashPageHeader.qml:294
202msgid "Add to Favorites"
202msgid "Add to Favorites"
203msgstr "Добавить в избранное"
203msgstr "Добавить в избранное"
204
204
205−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
205+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
206msgid "See less"
206msgid "See less"
207msgstr "Вкратце"
207msgstr "Вкратце"
208
208
209−#: qml/Dash/GenericScopeView.qml:587
209+#: qml/Dash/GenericScopeView.qml:565
210msgid "See all"
210msgid "See all"
211msgstr "Показать всё"
211msgstr "Показать всё"
212
212
213−#: qml/Dash/GenericScopeView.qml:649
213+#: qml/Dash/GenericScopeView.qml:627
214msgctxt "Label: Hint for dash search line edit"
214msgctxt "Label: Hint for dash search line edit"
215msgid "Search"
215msgid "Search"
216msgstr "Поиск"
216msgstr "Поиск"
@@ -431,14 +431,6 @@ msgctxt "Button: Call back on phone"
431msgid "Call back"
431msgid "Call back"
432msgstr "Позвонить"
432msgstr "Позвонить"
433
433
434−#: qml/Panel/Indicators/ModemInfoItem.qml:105
435−msgid "Unlock SIM"
436−msgstr "Разблокировать SIM-карту"
437−
438−#: qml/Panel/Indicators/RoamingIndication.qml:27
439−msgid "Roaming"
440−msgstr "Роуминг"
441−
442#: qml/Tutorial/TutorialBottom.qml:28
434#: qml/Tutorial/TutorialBottom.qml:28
443msgid "Open special menus"
435msgid "Open special menus"
444msgstr "Открытие специальных меню"
436msgstr "Открытие специальных меню"
@@ -747,12 +739,18 @@ msgstr "%1 〉"
747#~ "Вы научились пользоваться Ubuntu и можете начать использовать свой "
739#~ "Вы научились пользоваться Ubuntu и можете начать использовать свой "
748#~ "телефон<br><br>Нажмите на экран"
740#~ "телефон<br><br>Нажмите на экран"
749
741
742+#~ msgid "Unlock SIM"
743+#~ msgstr "Разблокировать SIM-карту"
744+
750#~ msgid "Power off"
745#~ msgid "Power off"
751#~ msgstr "Отключить"
746#~ msgstr "Отключить"
752
747
753#~ msgid "All"
748#~ msgid "All"
754#~ msgstr "Все"
749#~ msgstr "Все"
755
750
751+#~ msgid "Roaming"
752+#~ msgstr "Роуминг"
753+
756#~ msgid "Favorites"
754#~ msgid "Favorites"
757#~ msgstr "Избранное"
755#~ msgstr "Избранное"
758
756
po/shn.po+11−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-11-10 12:09+0000\n"
11"PO-Revision-Date: 2015-11-10 12:09+0000\n"
12"Last-Translator: Rockworld <sumoisrock@gmail.com>\n"
12"Last-Translator: Rockworld <sumoisrock@gmail.com>\n"
13"Language-Team: Shan <shn@li.org>\n"
13"Language-Team: Shan <shn@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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) ? 0 : 1;\n"
17"Plural-Forms: nplurals=2; plural=(n == 1) ? 0 : 1;\n"
18−"X-Launchpad-Export-Date: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171msgid "Close all"
171msgid "Close all"
172msgstr ""
172msgstr ""
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177msgstr ""
177msgstr ""
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr ""
182msgstr ""
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr ""
187msgstr ""
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr ""
191msgstr ""
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr ""
195msgstr ""
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr ""
199msgstr ""
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr ""
203msgstr ""
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr ""
208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416msgid "Call back"
416msgid "Call back"
417msgstr ""
417msgstr ""
418
418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427#: qml/Tutorial/TutorialBottom.qml:28
419#: qml/Tutorial/TutorialBottom.qml:28
428msgid "Open special menus"
420msgid "Open special menus"
429msgstr ""
421msgstr ""
po/si.po+11−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2013-06-26 22:36+0000\n"
11"PO-Revision-Date: 2013-06-26 22:36+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Sinhalese <si@li.org>\n"
13"Language-Team: Sinhalese <si@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -173,38 +173,38 @@ msgstr ""
173msgid "Close all"
173msgid "Close all"
174msgstr ""
174msgstr ""
175
175
176−#: qml/Dash/DashPageHeader.qml:266
176+#: qml/Dash/DashPageHeader.qml:270
177msgctxt "Button: Open the Ubuntu Store"
177msgctxt "Button: Open the Ubuntu Store"
178msgid "Store"
178msgid "Store"
179msgstr ""
179msgstr ""
180
180
181−#: qml/Dash/DashPageHeader.qml:273
181+#: qml/Dash/DashPageHeader.qml:277
182msgctxt "Button: Start a search in the current dash scope"
182msgctxt "Button: Start a search in the current dash scope"
183msgid "Search"
183msgid "Search"
184msgstr ""
184msgstr ""
185
185
186−#: qml/Dash/DashPageHeader.qml:283
186+#: qml/Dash/DashPageHeader.qml:287
187msgctxt "Button: Show the current dash scope settings"
187msgctxt "Button: Show the current dash scope settings"
188msgid "Settings"
188msgid "Settings"
189msgstr ""
189msgstr ""
190
190
191−#: qml/Dash/DashPageHeader.qml:290
191+#: qml/Dash/DashPageHeader.qml:294
192msgid "Remove from Favorites"
192msgid "Remove from Favorites"
193msgstr ""
193msgstr ""
194
194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196msgid "Add to Favorites"
196msgid "Add to Favorites"
197msgstr ""
197msgstr ""
198
198
199−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
199+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
200msgid "See less"
200msgid "See less"
201msgstr ""
201msgstr ""
202
202
203−#: qml/Dash/GenericScopeView.qml:587
203+#: qml/Dash/GenericScopeView.qml:565
204msgid "See all"
204msgid "See all"
205msgstr ""
205msgstr ""
206
206
207−#: qml/Dash/GenericScopeView.qml:649
207+#: qml/Dash/GenericScopeView.qml:627
208msgctxt "Label: Hint for dash search line edit"
208msgctxt "Label: Hint for dash search line edit"
209msgid "Search"
209msgid "Search"
210msgstr ""
210msgstr ""
@@ -418,14 +418,6 @@ msgctxt "Button: Call back on phone"
418msgid "Call back"
418msgid "Call back"
419msgstr ""
419msgstr ""
420
420
421−#: qml/Panel/Indicators/ModemInfoItem.qml:105
422−msgid "Unlock SIM"
423−msgstr ""
424−
425−#: qml/Panel/Indicators/RoamingIndication.qml:27
426−msgid "Roaming"
427−msgstr ""
428−
429#: qml/Tutorial/TutorialBottom.qml:28
421#: qml/Tutorial/TutorialBottom.qml:28
430msgid "Open special menus"
422msgid "Open special menus"
431msgstr ""
423msgstr ""
po/sk.po+179−157
@@ -7,577 +7,587 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11−"PO-Revision-Date: 2015-04-10 09:15+0000\n"
11+"PO-Revision-Date: 2016-03-02 01:54+0000\n"
12−"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12+"Last-Translator: P_E_T_O <Unknown>\n"
13"Language-Team: Slovak <sk@li.org>\n"
13"Language-Team: Slovak <sk@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=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
17"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
18−"X-Launchpad-Export-Date: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20+"Language: sk\n"
20
21
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
23msgid "Password: "
23−msgstr ""
24+msgstr "Heslo: "
24
25
25#: plugins/Unity/Launcher/launcheritem.cpp:47
26#: plugins/Unity/Launcher/launcheritem.cpp:47
26#: plugins/Unity/Launcher/launcheritem.cpp:106
27#: plugins/Unity/Launcher/launcheritem.cpp:106
27msgid "Pin shortcut"
28msgid "Pin shortcut"
28−msgstr ""
29+msgstr "Pripnúť odkaz"
29
30
30#: plugins/Unity/Launcher/launcheritem.cpp:52
31#: plugins/Unity/Launcher/launcheritem.cpp:52
31msgid "Quit"
32msgid "Quit"
32−msgstr ""
33+msgstr "Ukončiť"
33
34
34#: plugins/Unity/Launcher/launcheritem.cpp:106
35#: plugins/Unity/Launcher/launcheritem.cpp:106
35msgid "Unpin shortcut"
36msgid "Unpin shortcut"
36−msgstr ""
37+msgstr "Odopnúť odkaz"
37
38
38#: qml/Components/DelayedLockscreen.qml:49
39#: qml/Components/DelayedLockscreen.qml:49
39msgid "Device Locked"
40msgid "Device Locked"
40−msgstr ""
41+msgstr "Zariadenie zamknuté"
41
42
42#: qml/Components/DelayedLockscreen.qml:64
43#: qml/Components/DelayedLockscreen.qml:64
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
45msgstr ""
46+"Boli ste zablokovaný z dôvodu príliš veľkého počtu neúspešných pokusov o "
47+"prístupovú frázu."
45
48
46#: qml/Components/DelayedLockscreen.qml:65
49#: qml/Components/DelayedLockscreen.qml:65
47msgid "You have been locked out due to too many failed passcode attempts."
50msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
51msgstr ""
52+"Boli ste zablokovaný z dôvodu príliš veľkého počtu neúspešných pokusov o "
53+"prístupové heslo."
49
54
50#: qml/Components/DelayedLockscreen.qml:74
55#: qml/Components/DelayedLockscreen.qml:74
51#, qt-format
56#, qt-format
52msgid "Please wait %1 minute and then try again…"
57msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
58msgid_plural "Please wait %1 minutes and then try again…"
54−msgstr[0] ""
59+msgstr[0] "Prosím počkajte %1 minút a skúste znova…"
55−msgstr[1] ""
60+msgstr[1] "Prosím počkajte %1 minútu a skúste znova…"
61+msgstr[2] "Prosím počkajte %1 minúty a skúste znova…"
56
62
57#: qml/Components/Dialogs.qml:144
63#: qml/Components/Dialogs.qml:144
58msgctxt "Title: Lock/Log out dialog"
64msgctxt "Title: Lock/Log out dialog"
59msgid "Log out"
65msgid "Log out"
60−msgstr ""
66+msgstr "Odhlásiť sa"
61
67
62#: qml/Components/Dialogs.qml:145
68#: qml/Components/Dialogs.qml:145
63msgid "Are you sure you want to log out?"
69msgid "Are you sure you want to log out?"
64−msgstr ""
70+msgstr "Ste si istý, že sa chcete odhlásiť?"
65
71
66#: qml/Components/Dialogs.qml:147
72#: qml/Components/Dialogs.qml:147
67msgctxt "Button: Lock the system"
73msgctxt "Button: Lock the system"
68msgid "Lock"
74msgid "Lock"
69−msgstr ""
75+msgstr "Zamknúť"
70
76
71#: qml/Components/Dialogs.qml:154
77#: qml/Components/Dialogs.qml:154
72msgctxt "Button: Log out from the system"
78msgctxt "Button: Log out from the system"
73msgid "Log Out"
79msgid "Log Out"
74−msgstr ""
80+msgstr "Odhlásiť"
75
81
76#: qml/Components/Dialogs.qml:161 qml/Components/Dialogs.qml:194
82#: qml/Components/Dialogs.qml:161 qml/Components/Dialogs.qml:194
77#: qml/Components/Dialogs.qml:253
83#: qml/Components/Dialogs.qml:253
78msgid "Cancel"
84msgid "Cancel"
79−msgstr ""
85+msgstr "Zrušiť"
80
86
81#: qml/Components/Dialogs.qml:173
87#: qml/Components/Dialogs.qml:173
82msgctxt "Title: Reboot/Shut down dialog"
88msgctxt "Title: Reboot/Shut down dialog"
83msgid "Shut down"
89msgid "Shut down"
84−msgstr ""
90+msgstr "Vypnúť"
85
91
86#: qml/Components/Dialogs.qml:174
92#: qml/Components/Dialogs.qml:174
87msgid "Are you sure you want to shut down?"
93msgid "Are you sure you want to shut down?"
88−msgstr ""
94+msgstr "Chcete skutočne vypnúť zariadenie?"
89
95
90#: qml/Components/Dialogs.qml:176
96#: qml/Components/Dialogs.qml:176
91msgctxt "Button: Reboot the system"
97msgctxt "Button: Reboot the system"
92msgid "Reboot"
98msgid "Reboot"
93−msgstr ""
99+msgstr "Reštartovať"
94
100
95#: qml/Components/Dialogs.qml:185
101#: qml/Components/Dialogs.qml:185
96msgctxt "Button: Shut down the system"
102msgctxt "Button: Shut down the system"
97msgid "Shut down"
103msgid "Shut down"
98−msgstr ""
104+msgstr "Vypnúť"
99
105
100#: qml/Components/Dialogs.qml:207
106#: qml/Components/Dialogs.qml:207
101msgctxt "Title: Reboot dialog"
107msgctxt "Title: Reboot dialog"
102msgid "Reboot"
108msgid "Reboot"
103−msgstr ""
109+msgstr "Reštartovať"
104
110
105#: qml/Components/Dialogs.qml:208
111#: qml/Components/Dialogs.qml:208
106msgid "Are you sure you want to reboot?"
112msgid "Are you sure you want to reboot?"
107−msgstr ""
113+msgstr "Ste si istý, že chcete zariadenie reštartovať?"
108
114
109#: qml/Components/Dialogs.qml:210
115#: qml/Components/Dialogs.qml:210
110msgid "No"
116msgid "No"
111−msgstr ""
117+msgstr "Nie"
112
118
113#: qml/Components/Dialogs.qml:217
119#: qml/Components/Dialogs.qml:217
114msgid "Yes"
120msgid "Yes"
115−msgstr ""
121+msgstr "Áno"
116
122
117#: qml/Components/Dialogs.qml:232
123#: qml/Components/Dialogs.qml:232
118msgctxt "Title: Power off/Restart dialog"
124msgctxt "Title: Power off/Restart dialog"
119msgid "Power"
125msgid "Power"
120−msgstr ""
126+msgstr "Napájanie"
121
127
122#: qml/Components/Dialogs.qml:233
128#: qml/Components/Dialogs.qml:233
123msgid ""
129msgid ""
124"Are you sure you would like\n"
130"Are you sure you would like\n"
125"to power off?"
131"to power off?"
126msgstr ""
132msgstr ""
133+"Naozaj chcete zariadenie\n"
134+"vypnúť?"
127
135
128#: qml/Components/Dialogs.qml:235
136#: qml/Components/Dialogs.qml:235
129msgctxt "Button: Power off the system"
137msgctxt "Button: Power off the system"
130msgid "Power off"
138msgid "Power off"
131−msgstr ""
139+msgstr "Vypnúť"
132
140
133#: qml/Components/Dialogs.qml:244
141#: qml/Components/Dialogs.qml:244
134msgctxt "Button: Restart the system"
142msgctxt "Button: Restart the system"
135msgid "Restart"
143msgid "Restart"
136−msgstr ""
144+msgstr "Reštartovať"
137
145
138#: qml/Components/Lockscreen.qml:245
146#: qml/Components/Lockscreen.qml:245
139msgid "Return to Call"
147msgid "Return to Call"
140−msgstr ""
148+msgstr "Návrat k hovoru"
141
149
142#: qml/Components/Lockscreen.qml:245
150#: qml/Components/Lockscreen.qml:245
143msgid "Emergency Call"
151msgid "Emergency Call"
144−msgstr ""
152+msgstr "Tiesňový hovor"
145
153
146#: qml/Components/Lockscreen.qml:277
154#: qml/Components/Lockscreen.qml:277
147msgid "OK"
155msgid "OK"
148−msgstr ""
156+msgstr "OK"
149
157
150#: qml/Components/ModeSwitchWarningDialog.qml:32
158#: qml/Components/ModeSwitchWarningDialog.qml:32
151msgid "Apps may have unsaved data:"
159msgid "Apps may have unsaved data:"
152−msgstr ""
160+msgstr "Aplikácia môže mať neuložené údaje:"
153
161
154#: qml/Components/ModeSwitchWarningDialog.qml:57
162#: qml/Components/ModeSwitchWarningDialog.qml:57
155msgid "Re-dock, save your work and close these apps to continue."
163msgid "Re-dock, save your work and close these apps to continue."
156msgstr ""
164msgstr ""
165+"Re-dock, uložte si prácu a zatvorte tieto aplikácie pre pokračovanie."
157
166
158#: qml/Components/ModeSwitchWarningDialog.qml:63
167#: qml/Components/ModeSwitchWarningDialog.qml:63
159msgid "Or force close now (unsaved data will be lost)."
168msgid "Or force close now (unsaved data will be lost)."
160−msgstr ""
169+msgstr "Alebo vynútiť ukončenie (neuložené údaje budú stratené)."
161
170
162#: qml/Components/ModeSwitchWarningDialog.qml:75
171#: qml/Components/ModeSwitchWarningDialog.qml:75
163msgid "OK, I will reconnect"
172msgid "OK, I will reconnect"
164−msgstr ""
173+msgstr "OK, chcem sa znovu pripojiť"
165
174
166#: qml/Components/ModeSwitchWarningDialog.qml:76
175#: qml/Components/ModeSwitchWarningDialog.qml:76
167msgid "Reconnect now!"
176msgid "Reconnect now!"
168−msgstr ""
177+msgstr "Znova pripojiť!"
169
178
170#: qml/Components/ModeSwitchWarningDialog.qml:88
179#: qml/Components/ModeSwitchWarningDialog.qml:88
171msgid "Close all"
180msgid "Close all"
172−msgstr ""
181+msgstr "Zavrieť všetko"
173
182
174−#: qml/Dash/DashPageHeader.qml:266
183+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
184msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
185msgid "Store"
177−msgstr ""
186+msgstr "Obchod"
178
187
179−#: qml/Dash/DashPageHeader.qml:273
188+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
189msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
190msgid "Search"
182−msgstr ""
191+msgstr "Hľadať"
183
192
184−#: qml/Dash/DashPageHeader.qml:283
193+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
194msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
195msgid "Settings"
187−msgstr ""
196+msgstr "Nastavenia"
188
197
189−#: qml/Dash/DashPageHeader.qml:290
198+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
199msgid "Remove from Favorites"
191−msgstr ""
200+msgstr "Odstrániť z obľúbených"
192
201
193−#: qml/Dash/DashPageHeader.qml:290
202+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
203msgid "Add to Favorites"
195−msgstr ""
204+msgstr "Pridať k obľúbeným"
196
205
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
206+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
207msgid "See less"
199−msgstr ""
208+msgstr "Zobraziť menej"
200
209
201−#: qml/Dash/GenericScopeView.qml:587
210+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
211msgid "See all"
203−msgstr ""
212+msgstr "Zobraziť všetko"
204
213
205−#: qml/Dash/GenericScopeView.qml:649
214+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
215msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
216msgid "Search"
208−msgstr ""
217+msgstr "Hľadať"
209
218
210#: qml/Dash/Previews/PreviewActionCombo.qml:35
219#: qml/Dash/Previews/PreviewActionCombo.qml:35
211msgid "More..."
220msgid "More..."
212−msgstr ""
221+msgstr "Viac..."
213
222
214#: qml/Dash/Previews/PreviewActionCombo.qml:35
223#: qml/Dash/Previews/PreviewActionCombo.qml:35
215msgid "Less..."
224msgid "Less..."
216−msgstr ""
225+msgstr "Menej..."
217
226
218#: qml/Dash/Previews/PreviewCommentInput.qml:68
227#: qml/Dash/Previews/PreviewCommentInput.qml:68
219#: qml/Dash/Previews/PreviewRatingInput.qml:174
228#: qml/Dash/Previews/PreviewRatingInput.qml:174
220msgid "Send"
229msgid "Send"
221−msgstr ""
230+msgstr "Poslať"
222
231
223#: qml/Dash/Previews/PreviewRatingInput.qml:84
232#: qml/Dash/Previews/PreviewRatingInput.qml:84
224msgid "Rate this"
233msgid "Rate this"
225−msgstr ""
234+msgstr "Ohodnotiť"
226
235
227#: qml/Dash/Previews/PreviewRatingInput.qml:129
236#: qml/Dash/Previews/PreviewRatingInput.qml:129
228msgid "Add a review"
237msgid "Add a review"
229−msgstr ""
238+msgstr "Pridať recenziu"
230
239
231#: qml/Dash/Previews/PreviewSharing.qml:50
240#: qml/Dash/Previews/PreviewSharing.qml:50
232msgid "Preview Share Item"
241msgid "Preview Share Item"
233−msgstr ""
242+msgstr "Náhľad zdieľaných položiek"
234
243
235#: qml/Dash/PullToRefreshScopeStyle.qml:55
244#: qml/Dash/PullToRefreshScopeStyle.qml:55
236msgid "Pull to refresh…"
245msgid "Pull to refresh…"
237−msgstr ""
246+msgstr "Potiahnúť pre obnovenie..."
238
247
239#: qml/Dash/PullToRefreshScopeStyle.qml:60
248#: qml/Dash/PullToRefreshScopeStyle.qml:60
240msgid "Release to refresh…"
249msgid "Release to refresh…"
241−msgstr ""
250+msgstr "Uvoľniť pre obnovenie..."
242
251
243#: qml/Dash/ScopeSettings/ScopeSettingBoolean.qml:43
252#: qml/Dash/ScopeSettings/ScopeSettingBoolean.qml:43
244msgid "Enable location data"
253msgid "Enable location data"
245−msgstr ""
254+msgstr "Zapnúť údaje o polohe"
246
255
247#: qml/Dash/ScopesList.qml:67
256#: qml/Dash/ScopesList.qml:67
248msgid "Manage"
257msgid "Manage"
249−msgstr ""
258+msgstr "Spravovať"
250
259
251#: qml/Dash/ScopesList.qml:113
260#: qml/Dash/ScopesList.qml:113
252msgid "Home"
261msgid "Home"
253−msgstr ""
262+msgstr "Domov"
254
263
255#: qml/Dash/ScopesList.qml:114
264#: qml/Dash/ScopesList.qml:114
256msgid "Also installed"
265msgid "Also installed"
257−msgstr ""
266+msgstr "Tiež nainštalované"
258
267
259#: qml/DisabledScreenNotice.qml:87
268#: qml/DisabledScreenNotice.qml:87
260msgid ""
269msgid ""
261"Your device is now connected to an external display. Use this screen as a "
270"Your device is now connected to an external display. Use this screen as a "
262"touch pad to interact with the mouse."
271"touch pad to interact with the mouse."
263msgstr ""
272msgstr ""
273+"Zariadenie je pripojené k externej obrazovke. Použite obrazovku ako touchpad "
274+"pre spoluprácu s myšou."
264
275
265#: qml/Greeter/CoverPage.qml:107
276#: qml/Greeter/CoverPage.qml:107
266msgid "Unlock"
277msgid "Unlock"
267−msgstr ""
278+msgstr "Odomknúť"
268
279
269#: qml/Greeter/LoginList.qml:239
280#: qml/Greeter/LoginList.qml:239
270msgid "Retry"
281msgid "Retry"
271−msgstr ""
282+msgstr "Skúsiť znova"
272
283
273#: qml/Greeter/LoginList.qml:240
284#: qml/Greeter/LoginList.qml:240
274msgid "Tap to unlock"
285msgid "Tap to unlock"
275−msgstr ""
286+msgstr "Kliknúť pre odomknutie"
276
287
277#: qml/Greeter/NarrowView.qml:54 qml/Wizard/Pages/passwd-confirm.qml:53
288#: qml/Greeter/NarrowView.qml:54 qml/Wizard/Pages/passwd-confirm.qml:53
278msgid "Sorry, incorrect passphrase."
289msgid "Sorry, incorrect passphrase."
279−msgstr ""
290+msgstr "Prepáčte, nesprávna prístupová fráza."
280
291
281#: qml/Greeter/NarrowView.qml:55 qml/Wizard/Pages/passwd-confirm.qml:54
292#: qml/Greeter/NarrowView.qml:55 qml/Wizard/Pages/passwd-confirm.qml:54
282msgid "Sorry, incorrect passcode."
293msgid "Sorry, incorrect passcode."
283−msgstr ""
294+msgstr "Prepáčte, nesprávne prístupové heslo."
284
295
285#: qml/Greeter/NarrowView.qml:56
296#: qml/Greeter/NarrowView.qml:56
286msgid "This will be your last attempt."
297msgid "This will be your last attempt."
287−msgstr ""
298+msgstr "Bude to váš posledný pokus."
288
299
289#: qml/Greeter/NarrowView.qml:58
300#: qml/Greeter/NarrowView.qml:58
290msgid ""
301msgid ""
291"If passphrase is entered incorrectly, your phone will conduct a factory "
302"If passphrase is entered incorrectly, your phone will conduct a factory "
292"reset and all personal data will be deleted."
303"reset and all personal data will be deleted."
293msgstr ""
304msgstr ""
305+"Ak bude zle zadaná prístupová fráza, váš telefón vykoná továrenský reset a "
306+"všetky osobné údaje budú vymazané."
294
307
295#: qml/Greeter/NarrowView.qml:59
308#: qml/Greeter/NarrowView.qml:59
296msgid ""
309msgid ""
297"If passcode is entered incorrectly, your phone will conduct a factory reset "
310"If passcode is entered incorrectly, your phone will conduct a factory reset "
298"and all personal data will be deleted."
311"and all personal data will be deleted."
299msgstr ""
312msgstr ""
313+"Ak bude zle zadané heslo, váš telefón vykoná továrenský reset a všetky "
314+"osobné údaje budú vymazané."
300
315
301#: qml/Greeter/NarrowView.qml:116
316#: qml/Greeter/NarrowView.qml:116
302#, qt-format
317#, qt-format
303msgid "Enter %1"
318msgid "Enter %1"
304−msgstr ""
319+msgstr "Zadajte %1"
305
320
306#: qml/Greeter/NarrowView.qml:117 qml/Wizard/Pages/passwd-set.qml:60
321#: qml/Greeter/NarrowView.qml:117 qml/Wizard/Pages/passwd-set.qml:60
307msgid "Enter passphrase"
322msgid "Enter passphrase"
308−msgstr ""
323+msgstr "Zadajte prístupovú frázu"
309
324
310#: qml/Greeter/NarrowView.qml:118
325#: qml/Greeter/NarrowView.qml:118
311msgid "Enter passcode"
326msgid "Enter passcode"
312−msgstr ""
327+msgstr "Zadajte heslo"
313
328
314#: qml/Greeter/NarrowView.qml:119
329#: qml/Greeter/NarrowView.qml:119
315#, qt-format
330#, qt-format
316msgid "Sorry, incorrect %1"
331msgid "Sorry, incorrect %1"
317−msgstr ""
332+msgstr "Prepáčte, nesprávne %1"
318
333
319#: qml/Greeter/NarrowView.qml:120
334#: qml/Greeter/NarrowView.qml:120
320msgid "Sorry, incorrect passphrase"
335msgid "Sorry, incorrect passphrase"
321−msgstr ""
336+msgstr "Prepáčte, nesprávna prístupová fráza"
322
337
323#: qml/Greeter/NarrowView.qml:121
338#: qml/Greeter/NarrowView.qml:121
324msgctxt "passphrase"
339msgctxt "passphrase"
325msgid "Please re-enter"
340msgid "Please re-enter"
326−msgstr ""
341+msgstr "Zadajte znova"
327
342
328#: qml/Greeter/NarrowView.qml:122
343#: qml/Greeter/NarrowView.qml:122
329msgid "Sorry, incorrect passcode"
344msgid "Sorry, incorrect passcode"
330−msgstr ""
345+msgstr "Prepáčte, nesprávne heslo"
331
346
332#: qml/Notifications/NotificationMenuItemFactory.qml:129
347#: qml/Notifications/NotificationMenuItemFactory.qml:129
333msgid "Show password"
348msgid "Show password"
334−msgstr ""
349+msgstr "Zobraziť heslo"
335
350
336#: qml/Panel/ActiveCallHint.qml:79
351#: qml/Panel/ActiveCallHint.qml:79
337msgid "Tap to return to call..."
352msgid "Tap to return to call..."
338−msgstr ""
353+msgstr "Kliknúť pre návrat k hovoru..."
339
354
340#: qml/Panel/ActiveCallHint.qml:92
355#: qml/Panel/ActiveCallHint.qml:92
341msgid "Conference"
356msgid "Conference"
342−msgstr ""
357+msgstr "Konferencia"
343
358
344#: qml/Panel/Indicators/MenuItemFactory.qml:753
359#: qml/Panel/Indicators/MenuItemFactory.qml:753
345msgid "Nothing is playing"
360msgid "Nothing is playing"
346−msgstr ""
361+msgstr "Nič nehrá"
347
362
348#: qml/Panel/Indicators/MenuItemFactory.qml:882
363#: qml/Panel/Indicators/MenuItemFactory.qml:882
349#, qt-format
364#, qt-format
350msgid "%1 hour"
365msgid "%1 hour"
351msgid_plural "%1 hours"
366msgid_plural "%1 hours"
352−msgstr[0] ""
367+msgstr[0] "%1 hodín"
353−msgstr[1] ""
368+msgstr[1] "%1 hodina"
369+msgstr[2] "%1 hodiny"
354
370
355#: qml/Panel/Indicators/MenuItemFactory.qml:886
371#: qml/Panel/Indicators/MenuItemFactory.qml:886
356#, qt-format
372#, qt-format
357msgid "%1 minute"
373msgid "%1 minute"
358msgid_plural "%1 minutes"
374msgid_plural "%1 minutes"
359−msgstr[0] ""
375+msgstr[0] "%1 minút"
360−msgstr[1] ""
376+msgstr[1] "%1 minúta"
377+msgstr[2] "%1 minúty"
361
378
362#: qml/Panel/Indicators/MenuItemFactory.qml:891
379#: qml/Panel/Indicators/MenuItemFactory.qml:891
363#, qt-format
380#, qt-format
364msgid "%1 second"
381msgid "%1 second"
365msgid_plural "%1 seconds"
382msgid_plural "%1 seconds"
366−msgstr[0] ""
383+msgstr[0] "%1 sekúnd"
367−msgstr[1] ""
384+msgstr[1] "%1 sekunda"
385+msgstr[2] "%1 sekundy"
368
386
369#: qml/Panel/Indicators/MenuItemFactory.qml:894
387#: qml/Panel/Indicators/MenuItemFactory.qml:894
370msgid "0 seconds"
388msgid "0 seconds"
371−msgstr ""
389+msgstr "0 sekúnd"
372
390
373#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
391#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
374#: qml/Panel/Indicators/MenuItemFactory.qml:896
392#: qml/Panel/Indicators/MenuItemFactory.qml:896
375#, qt-format
393#, qt-format
376msgid "%1 remaining"
394msgid "%1 remaining"
377−msgstr ""
395+msgstr "Zostáva %1"
378
396
379#: qml/Panel/Indicators/MenuItemFactory.qml:902
397#: qml/Panel/Indicators/MenuItemFactory.qml:902
380msgid "In queue…"
398msgid "In queue…"
381−msgstr ""
399+msgstr "V poradí..."
382
400
383#: qml/Panel/Indicators/MenuItemFactory.qml:906
401#: qml/Panel/Indicators/MenuItemFactory.qml:906
384msgid "Downloading"
402msgid "Downloading"
385−msgstr ""
403+msgstr "Sťahuje sa"
386
404
387#: qml/Panel/Indicators/MenuItemFactory.qml:908
405#: qml/Panel/Indicators/MenuItemFactory.qml:908
388msgid "Paused, tap to resume"
406msgid "Paused, tap to resume"
389−msgstr ""
407+msgstr "Pauza, kliknúť pre pokračovanie"
390
408
391#: qml/Panel/Indicators/MenuItemFactory.qml:910
409#: qml/Panel/Indicators/MenuItemFactory.qml:910
392msgid "Canceled"
410msgid "Canceled"
393−msgstr ""
411+msgstr "Zrušené"
394
412
395#: qml/Panel/Indicators/MenuItemFactory.qml:912
413#: qml/Panel/Indicators/MenuItemFactory.qml:912
396msgid "Finished"
414msgid "Finished"
397−msgstr ""
415+msgstr "Ukončené"
398
416
399#: qml/Panel/Indicators/MenuItemFactory.qml:914
417#: qml/Panel/Indicators/MenuItemFactory.qml:914
400msgid "Failed, tap to retry"
418msgid "Failed, tap to retry"
401−msgstr ""
419+msgstr "Zlyhanie, kliknúť pre zopakovanie"
402
420
403#: qml/Panel/Indicators/MessageMenuItemFactory.qml:155
421#: qml/Panel/Indicators/MessageMenuItemFactory.qml:155
404#: qml/Panel/Indicators/MessageMenuItemFactory.qml:214
422#: qml/Panel/Indicators/MessageMenuItemFactory.qml:214
405msgctxt "Button: Send a reply message"
423msgctxt "Button: Send a reply message"
406msgid "Send"
424msgid "Send"
407−msgstr ""
425+msgstr "Poslať"
408
426
409#: qml/Panel/Indicators/MessageMenuItemFactory.qml:156
427#: qml/Panel/Indicators/MessageMenuItemFactory.qml:156
410msgctxt "Label: Hint in message indicator line edit"
428msgctxt "Label: Hint in message indicator line edit"
411msgid "Reply"
429msgid "Reply"
412−msgstr ""
430+msgstr "Odpoveď"
413
431
414#: qml/Panel/Indicators/MessageMenuItemFactory.qml:213
432#: qml/Panel/Indicators/MessageMenuItemFactory.qml:213
415msgctxt "Button: Call back on phone"
433msgctxt "Button: Call back on phone"
416msgid "Call back"
434msgid "Call back"
417−msgstr ""
435+msgstr "Zavolať naspäť"
418−
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426
436
427#: qml/Tutorial/TutorialBottom.qml:28
437#: qml/Tutorial/TutorialBottom.qml:28
428msgid "Open special menus"
438msgid "Open special menus"
429−msgstr ""
439+msgstr "Otvoriť špeciálne menu"
430
440
431#: qml/Tutorial/TutorialBottom.qml:29
441#: qml/Tutorial/TutorialBottom.qml:29
432msgid "Swipe up from the bottom edge."
442msgid "Swipe up from the bottom edge."
433−msgstr ""
443+msgstr "Potiahnite nahor od spodného okraja."
434
444
435#: qml/Tutorial/TutorialBottomFinish.qml:24
445#: qml/Tutorial/TutorialBottomFinish.qml:24
436msgid "This action does different things for different apps"
446msgid "This action does different things for different apps"
437−msgstr ""
447+msgstr "Táto akcia robí rôzne veci pre rôzne aplikácie"
438
448
439#: qml/Tutorial/TutorialBottomFinish.qml:25
449#: qml/Tutorial/TutorialBottomFinish.qml:25
440msgid "Tap here to finish."
450msgid "Tap here to finish."
441−msgstr ""
451+msgstr "Klik tu pre ukončenie."
442
452
443#: qml/Tutorial/TutorialContent.qml:80 qml/Tutorial/TutorialLeftFinish.qml:25
453#: qml/Tutorial/TutorialContent.qml:80 qml/Tutorial/TutorialLeftFinish.qml:25
444#: qml/Tutorial/TutorialRight.qml:144
454#: qml/Tutorial/TutorialRight.qml:144
445msgid "Tap here to continue."
455msgid "Tap here to continue."
446−msgstr ""
456+msgstr "Klik tu pre pokračovanie."
447
457
448#: qml/Tutorial/TutorialLeft.qml:26
458#: qml/Tutorial/TutorialLeft.qml:26
449msgid "Open the launcher"
459msgid "Open the launcher"
450−msgstr ""
460+msgstr "Otvoriť Launcher"
451
461
452#: qml/Tutorial/TutorialLeft.qml:27
462#: qml/Tutorial/TutorialLeft.qml:27
453msgid "Short swipe from the left edge."
463msgid "Short swipe from the left edge."
454−msgstr ""
464+msgstr "Krátke potiahnutie od ľavého okraja."
455
465
456#: qml/Tutorial/TutorialLeftFinish.qml:24
466#: qml/Tutorial/TutorialLeftFinish.qml:24
457msgid "These are the shortcuts to favorite apps"
467msgid "These are the shortcuts to favorite apps"
458−msgstr ""
468+msgstr "Toto sú skratky pre obľúbené aplikácie"
459
469
460#: qml/Tutorial/TutorialPage.qml:178
470#: qml/Tutorial/TutorialPage.qml:178
461msgid "You almost got it!"
471msgid "You almost got it!"
462−msgstr ""
472+msgstr "Skoro to máte!"
463
473
464#: qml/Tutorial/TutorialPage.qml:195
474#: qml/Tutorial/TutorialPage.qml:195
465msgid "Try again."
475msgid "Try again."
466−msgstr ""
476+msgstr "Skúste znova."
467
477
468#: qml/Tutorial/TutorialRight.qml:31
478#: qml/Tutorial/TutorialRight.qml:31
469msgid "To view open apps"
479msgid "To view open apps"
470−msgstr ""
480+msgstr "Ak chcete zobraziť otvorené aplikácie"
471
481
472#: qml/Tutorial/TutorialRight.qml:32
482#: qml/Tutorial/TutorialRight.qml:32
473msgid "Long swipe from the right edge."
483msgid "Long swipe from the right edge."
474−msgstr ""
484+msgstr "Dlhé potiahnutie od pravého okraja."
475
485
476#: qml/Tutorial/TutorialRight.qml:122
486#: qml/Tutorial/TutorialRight.qml:122
477msgid "View all your running tasks."
487msgid "View all your running tasks."
478−msgstr ""
488+msgstr "Zobraziť všetky bežiace procesy."
479
489
480#: qml/Wizard/Page.qml:89
490#: qml/Wizard/Page.qml:89
481msgctxt "Button: Go back one page in the Wizard"
491msgctxt "Button: Go back one page in the Wizard"
482msgid "Back"
492msgid "Back"
483−msgstr ""
493+msgstr "Naspäť"
484
494
485#: qml/Wizard/Pages/10-welcome.qml:27
495#: qml/Wizard/Pages/10-welcome.qml:27
486msgid "Hi!"
496msgid "Hi!"
487−msgstr ""
497+msgstr "Ahoj!"
488
498
489#: qml/Wizard/Pages/10-welcome.qml:44
499#: qml/Wizard/Pages/10-welcome.qml:44
490msgid "Welcome to your Ubuntu device."
500msgid "Welcome to your Ubuntu device."
491−msgstr ""
501+msgstr "Vitajte vo svojom Ubuntu zariadení."
492
502
493#: qml/Wizard/Pages/10-welcome.qml:52
503#: qml/Wizard/Pages/10-welcome.qml:52
494msgid "Let’s get started."
504msgid "Let’s get started."
495−msgstr ""
505+msgstr "Začíname."
496
506
497#: qml/Wizard/Pages/10-welcome.qml:88 qml/Wizard/Pages/30-passwd-type.qml:133
507#: qml/Wizard/Pages/10-welcome.qml:88 qml/Wizard/Pages/30-passwd-type.qml:133
498#: qml/Wizard/Pages/40-wifi.qml:215 qml/Wizard/Pages/50-location.qml:131
508#: qml/Wizard/Pages/40-wifi.qml:215 qml/Wizard/Pages/50-location.qml:131
499#: qml/Wizard/Pages/60-reporting.qml:60 qml/Wizard/Pages/passwd-confirm.qml:82
509#: qml/Wizard/Pages/60-reporting.qml:60 qml/Wizard/Pages/passwd-confirm.qml:82
500#: qml/Wizard/Pages/passwd-set.qml:90
510#: qml/Wizard/Pages/passwd-set.qml:90
501msgid "Continue"
511msgid "Continue"
502−msgstr ""
512+msgstr "Pokračovať"
503
513
504#: qml/Wizard/Pages/20-sim.qml:25
514#: qml/Wizard/Pages/20-sim.qml:25
505msgid "Add a SIM card and restart your device"
515msgid "Add a SIM card and restart your device"
506−msgstr ""
516+msgstr "Vložte SIM kartu a reštartujte zariadenie"
507
517
508#: qml/Wizard/Pages/20-sim.qml:59
518#: qml/Wizard/Pages/20-sim.qml:59
509msgid "Without it, you won’t be able to make calls or use text messaging."
519msgid "Without it, you won’t be able to make calls or use text messaging."
510−msgstr ""
520+msgstr "Bez nej nebudete môcť volať alebo používať textové správy."
511
521
512#: qml/Wizard/Pages/20-sim.qml:73 qml/Wizard/Pages/40-wifi.qml:215
522#: qml/Wizard/Pages/20-sim.qml:73 qml/Wizard/Pages/40-wifi.qml:215
513msgid "Skip"
523msgid "Skip"
514−msgstr ""
524+msgstr "Preskočiť"
515
525
516#: qml/Wizard/Pages/30-passwd-type.qml:39
526#: qml/Wizard/Pages/30-passwd-type.qml:39
517msgid "Lock security"
527msgid "Lock security"
518−msgstr ""
528+msgstr "Bezpečnosť uzamknutia"
519
529
520#: qml/Wizard/Pages/30-passwd-type.qml:79
530#: qml/Wizard/Pages/30-passwd-type.qml:79
521msgid "Please select how you’d like to unlock your device."
531msgid "Please select how you’d like to unlock your device."
522−msgstr ""
532+msgstr "Prosím vyberte, ako by ste chceli odblokovať zariadenie."
523
533
524#: qml/Wizard/Pages/30-passwd-type.qml:102
534#: qml/Wizard/Pages/30-passwd-type.qml:102
525msgctxt "Label: Type of security method"
535msgctxt "Label: Type of security method"
526msgid "Swipe"
536msgid "Swipe"
527−msgstr ""
537+msgstr "Potiahnuť"
528
538
529#: qml/Wizard/Pages/30-passwd-type.qml:103
539#: qml/Wizard/Pages/30-passwd-type.qml:103
530msgctxt "Label: Description of security method"
540msgctxt "Label: Description of security method"
531msgid "No security"
541msgid "No security"
532−msgstr ""
542+msgstr "Bez ochrany"
533
543
534#: qml/Wizard/Pages/30-passwd-type.qml:105
544#: qml/Wizard/Pages/30-passwd-type.qml:105
535msgctxt "Label: Type of security method"
545msgctxt "Label: Type of security method"
536msgid "Passcode"
546msgid "Passcode"
537−msgstr ""
547+msgstr "Heslo"
538
548
539#: qml/Wizard/Pages/30-passwd-type.qml:106
549#: qml/Wizard/Pages/30-passwd-type.qml:106
540msgctxt "Label: Description of security method"
550msgctxt "Label: Description of security method"
541msgid "4 digits only"
551msgid "4 digits only"
542−msgstr ""
552+msgstr "Len 4 číslice"
543
553
544#: qml/Wizard/Pages/30-passwd-type.qml:108
554#: qml/Wizard/Pages/30-passwd-type.qml:108
545msgctxt "Label: Type of security method"
555msgctxt "Label: Type of security method"
546msgid "Passphrase"
556msgid "Passphrase"
547−msgstr ""
557+msgstr "Prístupová fráza"
548
558
549#: qml/Wizard/Pages/30-passwd-type.qml:109
559#: qml/Wizard/Pages/30-passwd-type.qml:109
550msgctxt "Label: Description of security method"
560msgctxt "Label: Description of security method"
551msgid "Numbers and letters"
561msgid "Numbers and letters"
552−msgstr ""
562+msgstr "Čísla a písmená"
553
563
554#: qml/Wizard/Pages/40-wifi.qml:29
564#: qml/Wizard/Pages/40-wifi.qml:29
555msgid "Connect to Wi‑Fi"
565msgid "Connect to Wi‑Fi"
556−msgstr ""
566+msgstr "Pripojiť k Wifi"
557
567
558#: qml/Wizard/Pages/40-wifi.qml:168
568#: qml/Wizard/Pages/40-wifi.qml:168
559msgid "Available networks…"
569msgid "Available networks…"
560−msgstr ""
570+msgstr "Dostupné siete..."
561
571
562#: qml/Wizard/Pages/40-wifi.qml:169
572#: qml/Wizard/Pages/40-wifi.qml:169
563msgid "No available networks."
573msgid "No available networks."
564−msgstr ""
574+msgstr "Žiadne dostupné siete."
565
575
566#: qml/Wizard/Pages/50-location.qml:27
576#: qml/Wizard/Pages/50-location.qml:27
567msgid "Location"
577msgid "Location"
568−msgstr ""
578+msgstr "Poloha"
569
579
570#: qml/Wizard/Pages/50-location.qml:62
580#: qml/Wizard/Pages/50-location.qml:62
571msgid "Let the phone detect your location:"
581msgid "Let the phone detect your location:"
572−msgstr ""
582+msgstr "Nechajte telefón zisťovať vašu polohu:"
573
583
574#: qml/Wizard/Pages/50-location.qml:69
584#: qml/Wizard/Pages/50-location.qml:69
575msgid "Using GPS only (less accurate)"
585msgid "Using GPS only (less accurate)"
576−msgstr ""
586+msgstr "Použiť len GPS (menej presné)"
577
587
578#: qml/Wizard/Pages/50-location.qml:86
588#: qml/Wizard/Pages/50-location.qml:86
579msgid "Using GPS, anonymized Wi-Fi and cellular network info (recommended)"
589msgid "Using GPS, anonymized Wi-Fi and cellular network info (recommended)"
580−msgstr ""
590+msgstr "Použiť GPS, anonymné informácie Wifi a mobilnej siete (odporúčané)"
581
591
582#. Translators: HERE is a trademark for Nokia's location service, you probably shouldn't translate it
592#. Translators: HERE is a trademark for Nokia's location service, you probably shouldn't translate it
583#: qml/Wizard/Pages/50-location.qml:103
593#: qml/Wizard/Pages/50-location.qml:103
@@ -585,80 +595,92 @@ msgid ""
585"By selecting this option you agree to the Nokia HERE <a href='#'>terms and "
595"By selecting this option you agree to the Nokia HERE <a href='#'>terms and "
586"conditions</a>."
596"conditions</a>."
587msgstr ""
597msgstr ""
598+"Vybraním tejto možnosti súhlasíte s Nokia HERE <a href='#'>terms and "
599+"conditions</a>."
588
600
589#: qml/Wizard/Pages/50-location.qml:112
601#: qml/Wizard/Pages/50-location.qml:112
590msgid "Not at all"
602msgid "Not at all"
591−msgstr ""
603+msgstr "Vôbec"
592
604
593#: qml/Wizard/Pages/50-location.qml:124
605#: qml/Wizard/Pages/50-location.qml:124
594msgid "You can change your mind later in <b>System Settings</b>."
606msgid "You can change your mind later in <b>System Settings</b>."
595−msgstr ""
607+msgstr "Svoj názor môžete zmeniť neskôr v <b>Systémové nastavenia</b>."
596
608
597#: qml/Wizard/Pages/60-reporting.qml:26
609#: qml/Wizard/Pages/60-reporting.qml:26
598msgid "Improving your experience"
610msgid "Improving your experience"
599−msgstr ""
611+msgstr "Zlepšovanie vašich skúseností"
600
612
601#: qml/Wizard/Pages/60-reporting.qml:46
613#: qml/Wizard/Pages/60-reporting.qml:46
602msgid ""
614msgid ""
603"Your phone is set up to automatically report errors to Canonical and its "
615"Your phone is set up to automatically report errors to Canonical and its "
604"partners, the makers of the operating system."
616"partners, the makers of the operating system."
605msgstr ""
617msgstr ""
618+"Telefón je nastavený tak, aby automaticky hlásil chyby Canonical-u a jeho "
619+"partnerom, tvorcom operačného systému."
606
620
607#: qml/Wizard/Pages/60-reporting.qml:53
621#: qml/Wizard/Pages/60-reporting.qml:53
608msgid ""
622msgid ""
609"This can be disabled in <b>System Settings</b> under <b>Security &amp; "
623"This can be disabled in <b>System Settings</b> under <b>Security &amp; "
610"Privacy</b>"
624"Privacy</b>"
611msgstr ""
625msgstr ""
626+"Môžete to vypnúť v <b>Systémové nastavenia</b> pod <b>Zabezpečenie a "
627+"súkromie</b>"
612
628
613#: qml/Wizard/Pages/80-finished.qml:24
629#: qml/Wizard/Pages/80-finished.qml:24
614msgid "All done"
630msgid "All done"
615−msgstr ""
631+msgstr "Hotovo"
616
632
617#: qml/Wizard/Pages/80-finished.qml:39
633#: qml/Wizard/Pages/80-finished.qml:39
618msgid "Nice work!"
634msgid "Nice work!"
619−msgstr ""
635+msgstr "Dobrá práca!"
620
636
621#: qml/Wizard/Pages/80-finished.qml:46
637#: qml/Wizard/Pages/80-finished.qml:46
622msgid "Your device is now ready to use."
638msgid "Your device is now ready to use."
623−msgstr ""
639+msgstr "Vaše zariadenie je teraz pripravené."
624
640
625#: qml/Wizard/Pages/80-finished.qml:53
641#: qml/Wizard/Pages/80-finished.qml:53
626msgid "Finish"
642msgid "Finish"
627−msgstr ""
643+msgstr "Dokončiť"
628
644
629#: qml/Wizard/Pages/here-terms.qml:27
645#: qml/Wizard/Pages/here-terms.qml:27
630msgid "Terms & Conditions"
646msgid "Terms & Conditions"
631−msgstr ""
647+msgstr "Všeobecné obchodné podmienky"
632
648
633#: qml/Wizard/Pages/passwd-confirm.qml:49
649#: qml/Wizard/Pages/passwd-confirm.qml:49
634msgid "Confirm passphrase"
650msgid "Confirm passphrase"
635−msgstr ""
651+msgstr "Potvrdiť prístupovú frázu"
636
652
637#: qml/Wizard/Pages/passwd-confirm.qml:50
653#: qml/Wizard/Pages/passwd-confirm.qml:50
638msgid "Confirm passcode"
654msgid "Confirm passcode"
639−msgstr ""
655+msgstr "Potvrdiť heslo"
640
656
641#: qml/Wizard/Pages/passwd-confirm.qml:53
657#: qml/Wizard/Pages/passwd-confirm.qml:53
642#: qml/Wizard/Pages/passwd-confirm.qml:54
658#: qml/Wizard/Pages/passwd-confirm.qml:54
643msgid "Please try again."
659msgid "Please try again."
644−msgstr ""
660+msgstr "Prosím, skúste znovu."
645
661
646#: qml/Wizard/Pages/passwd-set.qml:61
662#: qml/Wizard/Pages/passwd-set.qml:61
647msgid "Choose your passcode"
663msgid "Choose your passcode"
648−msgstr ""
664+msgstr "Zvoliť heslo"
649
665
650#: qml/Wizard/Pages/passwd-set.qml:68
666#: qml/Wizard/Pages/passwd-set.qml:68
651msgid "Passphrase must be 4 characters long"
667msgid "Passphrase must be 4 characters long"
652−msgstr ""
668+msgstr "Prístupová fráza musí mať 4 znaky"
653
669
654#. Translators: This is the arrow for "Back" buttons
670#. Translators: This is the arrow for "Back" buttons
655#: qml/Wizard/StackButton.qml:39
671#: qml/Wizard/StackButton.qml:39
656#, qt-format
672#, qt-format
657msgid "〈 %1"
673msgid "〈 %1"
658−msgstr ""
674+msgstr "〈 %1"
659
675
660#. Translators: This is the arrow for "Forward" buttons
676#. Translators: This is the arrow for "Forward" buttons
661#: qml/Wizard/StackButton.qml:42
677#: qml/Wizard/StackButton.qml:42
662#, qt-format
678#, qt-format
663msgid "%1 〉"
679msgid "%1 〉"
664−msgstr ""
680+msgstr "%1 〉"
681+
682+#~ msgid "Unlock SIM"
683+#~ msgstr "Odomknúť SIM"
684+
685+#~ msgid "Roaming"
686+#~ msgstr "Roaming"
po/sl.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2016-01-31 18:34+0000\n"
11"PO-Revision-Date: 2016-01-31 18:34+0000\n"
12"Last-Translator: Bernard Banko <Unknown>\n"
12"Last-Translator: Bernard Banko <Unknown>\n"
13"Language-Team: Slovenian <sl@li.org>\n"
13"Language-Team: Slovenian <sl@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || "
17"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || "
18"n%100==4 ? 3 : 0);\n"
18"n%100==4 ? 3 : 0);\n"
19−"X-Launchpad-Export-Date: 2016-02-16 05:37+0000\n"
19+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
20−"X-Generator: Launchpad (build 17925)\n"
20+"X-Generator: Launchpad (build 17936)\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -178,38 +178,38 @@ msgstr "Ponovno priključi sedaj!"
178msgid "Close all"
178msgid "Close all"
179msgstr "Zapri vse"
179msgstr "Zapri vse"
180
180
181−#: qml/Dash/DashPageHeader.qml:266
181+#: qml/Dash/DashPageHeader.qml:270
182msgctxt "Button: Open the Ubuntu Store"
182msgctxt "Button: Open the Ubuntu Store"
183msgid "Store"
183msgid "Store"
184msgstr "Trgovina"
184msgstr "Trgovina"
185
185
186−#: qml/Dash/DashPageHeader.qml:273
186+#: qml/Dash/DashPageHeader.qml:277
187msgctxt "Button: Start a search in the current dash scope"
187msgctxt "Button: Start a search in the current dash scope"
188msgid "Search"
188msgid "Search"
189msgstr "Iskanje"
189msgstr "Iskanje"
190
190
191−#: qml/Dash/DashPageHeader.qml:283
191+#: qml/Dash/DashPageHeader.qml:287
192msgctxt "Button: Show the current dash scope settings"
192msgctxt "Button: Show the current dash scope settings"
193msgid "Settings"
193msgid "Settings"
194msgstr "Nastavitve"
194msgstr "Nastavitve"
195
195
196−#: qml/Dash/DashPageHeader.qml:290
196+#: qml/Dash/DashPageHeader.qml:294
197msgid "Remove from Favorites"
197msgid "Remove from Favorites"
198msgstr "Odstrani iz priljubljenih"
198msgstr "Odstrani iz priljubljenih"
199
199
200−#: qml/Dash/DashPageHeader.qml:290
200+#: qml/Dash/DashPageHeader.qml:294
201msgid "Add to Favorites"
201msgid "Add to Favorites"
202msgstr "Dodaj med priljubljene"
202msgstr "Dodaj med priljubljene"
203
203
204−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
204+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
205msgid "See less"
205msgid "See less"
206msgstr "Pokaži manj"
206msgstr "Pokaži manj"
207
207
208−#: qml/Dash/GenericScopeView.qml:587
208+#: qml/Dash/GenericScopeView.qml:565
209msgid "See all"
209msgid "See all"
210msgstr "Pokaži vse"
210msgstr "Pokaži vse"
211
211
212−#: qml/Dash/GenericScopeView.qml:649
212+#: qml/Dash/GenericScopeView.qml:627
213msgctxt "Label: Hint for dash search line edit"
213msgctxt "Label: Hint for dash search line edit"
214msgid "Search"
214msgid "Search"
215msgstr "Iskanje"
215msgstr "Iskanje"
@@ -435,14 +435,6 @@ msgctxt "Button: Call back on phone"
435msgid "Call back"
435msgid "Call back"
436msgstr "Pokliči nazaj"
436msgstr "Pokliči nazaj"
437
437
438−#: qml/Panel/Indicators/ModemInfoItem.qml:105
439−msgid "Unlock SIM"
440−msgstr "Odkleni SIM"
441−
442−#: qml/Panel/Indicators/RoamingIndication.qml:27
443−msgid "Roaming"
444−msgstr "Gostovanje"
445−
446#: qml/Tutorial/TutorialBottom.qml:28
438#: qml/Tutorial/TutorialBottom.qml:28
447msgid "Open special menus"
439msgid "Open special menus"
448msgstr "Odpri posebne menije"
440msgstr "Odpri posebne menije"
@@ -759,6 +751,12 @@ msgstr "%1 〉"
759#~ msgid "All"
751#~ msgid "All"
760#~ msgstr "Vse"
752#~ msgstr "Vse"
761
753
754+#~ msgid "Unlock SIM"
755+#~ msgstr "Odkleni SIM"
756+
757+#~ msgid "Roaming"
758+#~ msgstr "Gostovanje"
759+
762#~ msgid "Favorites"
760#~ msgid "Favorites"
763#~ msgstr "Priljubljeni"
761#~ msgstr "Priljubljeni"
764
762
po/sq.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-11-30 21:05+0000\n"
11"PO-Revision-Date: 2015-11-30 21:05+0000\n"
12"Last-Translator: Indrit Bashkimi <indrit.bashkimi@gmail.com>\n"
12"Last-Translator: Indrit Bashkimi <indrit.bashkimi@gmail.com>\n"
13"Language-Team: Albanian <sq@li.org>\n"
13"Language-Team: Albanian <sq@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:36+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:57+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -171,38 +171,38 @@ msgstr "Rilidhu tani!"
171msgid "Close all"
171msgid "Close all"
172msgstr "Mbylli të gjitha"
172msgstr "Mbylli të gjitha"
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177msgstr "Ruaje"
177msgstr "Ruaje"
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr "Kërko"
182msgstr "Kërko"
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr "Parametrat"
187msgstr "Parametrat"
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr "Hiq nga të preferuarit"
191msgstr "Hiq nga të preferuarit"
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr "Shto në të preferuarit"
195msgstr "Shto në të preferuarit"
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr "Shfaq më pak"
199msgstr "Shfaq më pak"
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr "Shfaqe të tërin"
203msgstr "Shfaqe të tërin"
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr "Kërko"
208msgstr "Kërko"
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416msgid "Call back"
416msgid "Call back"
417msgstr ""
417msgstr ""
418
418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr "Zhblloko SIM"
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr "Roaming"
426−
427#: qml/Tutorial/TutorialBottom.qml:28
419#: qml/Tutorial/TutorialBottom.qml:28
428msgid "Open special menus"
420msgid "Open special menus"
429msgstr ""
421msgstr ""
@@ -682,11 +674,17 @@ msgstr "%1 〉"
682#~ msgid "Right edge"
674#~ msgid "Right edge"
683#~ msgstr "Cepi djathtas"
675#~ msgstr "Cepi djathtas"
684
676
677+#~ msgid "Unlock SIM"
678+#~ msgstr "Zhblloko SIM"
679+
685#~ msgid "Welcome to your Ubuntu phone."
680#~ msgid "Welcome to your Ubuntu phone."
686#~ msgstr "Mirëseerdhët në telefonin tuaj Ubuntu."
681#~ msgstr "Mirëseerdhët në telefonin tuaj Ubuntu."
687
682
688#~ msgid "Your phone is now ready to use."
683#~ msgid "Your phone is now ready to use."
689#~ msgstr "Telefoni juaj tani është gati për përdorim."
684#~ msgstr "Telefoni juaj tani është gati për përdorim."
690
685
686+#~ msgid "Roaming"
687+#~ msgstr "Roaming"
688+
691#~ msgid "Please select how you’d like to unlock your phone."
689#~ msgid "Please select how you’d like to unlock your phone."
692#~ msgstr "Zgjidhni mënyrën e zhbllokimit të telefonit."
690#~ msgstr "Zgjidhni mënyrën e zhbllokimit të telefonit."
po/sr.po+68−70
@@ -8,8 +8,8 @@ msgid ""
8msgstr ""
8msgstr ""
9"Project-Id-Version: unity\n"
9"Project-Id-Version: unity\n"
10"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
11+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
12−"PO-Revision-Date: 2016-02-10 21:21+0000\n"
12+"PO-Revision-Date: 2016-03-09 21:47+0000\n"
13"Last-Translator: Bojan Bogdanović <Unknown>\n"
13"Last-Translator: Bojan Bogdanović <Unknown>\n"
14"Language-Team: српски <xfce4@xfce4.org>\n"
14"Language-Team: српски <xfce4@xfce4.org>\n"
15"MIME-Version: 1.0\n"
15"MIME-Version: 1.0\n"
@@ -17,8 +17,8 @@ msgstr ""
17"Content-Transfer-Encoding: 8bit\n"
17"Content-Transfer-Encoding: 8bit\n"
18"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
19"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
20−"X-Launchpad-Export-Date: 2016-02-16 05:37+0000\n"
20+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
21−"X-Generator: Launchpad (build 17925)\n"
21+"X-Generator: Launchpad (build 17936)\n"
22"Language: sr\n"
22"Language: sr\n"
23
23
24#: plugins/IntegratedLightDM/Greeter.cpp:112
24#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -54,9 +54,9 @@ msgstr "Закључано је због превише погрешних по
54#, qt-format
54#, qt-format
55msgid "Please wait %1 minute and then try again…"
55msgid "Please wait %1 minute and then try again…"
56msgid_plural "Please wait %1 minutes and then try again…"
56msgid_plural "Please wait %1 minutes and then try again…"
57−msgstr[0] "Молим, сачекајте %1 минута, па покушајте поново…"
57+msgstr[0] "Сачекајте %1 минут, па покушајте поново…"
58−msgstr[1] "Молим, сачекајте %1 минута, па покушајте поново…"
58+msgstr[1] "Сачекајте %1 минута, па покушајте поново…"
59−msgstr[2] "Молим, сачекајте %1 минута, па покушајте поново…"
59+msgstr[2] "Сачекајте %1 минута, па покушајте поново…"
60
60
61#: qml/Components/Dialogs.qml:144
61#: qml/Components/Dialogs.qml:144
62msgctxt "Title: Lock/Log out dialog"
62msgctxt "Title: Lock/Log out dialog"
@@ -75,7 +75,7 @@ msgstr "Закључај"
75#: qml/Components/Dialogs.qml:154
75#: qml/Components/Dialogs.qml:154
76msgctxt "Button: Log out from the system"
76msgctxt "Button: Log out from the system"
77msgid "Log Out"
77msgid "Log Out"
78−msgstr "Одјава"
78+msgstr "Одјави ме"
79
79
80#: qml/Components/Dialogs.qml:161 qml/Components/Dialogs.qml:194
80#: qml/Components/Dialogs.qml:161 qml/Components/Dialogs.qml:194
81#: qml/Components/Dialogs.qml:253
81#: qml/Components/Dialogs.qml:253
@@ -85,7 +85,7 @@ msgstr "Откажи"
85#: qml/Components/Dialogs.qml:173
85#: qml/Components/Dialogs.qml:173
86msgctxt "Title: Reboot/Shut down dialog"
86msgctxt "Title: Reboot/Shut down dialog"
87msgid "Shut down"
87msgid "Shut down"
88−msgstr "Угаси"
88+msgstr "Гашење"
89
89
90#: qml/Components/Dialogs.qml:174
90#: qml/Components/Dialogs.qml:174
91msgid "Are you sure you want to shut down?"
91msgid "Are you sure you want to shut down?"
@@ -104,11 +104,11 @@ msgstr "Угаси"
104#: qml/Components/Dialogs.qml:207
104#: qml/Components/Dialogs.qml:207
105msgctxt "Title: Reboot dialog"
105msgctxt "Title: Reboot dialog"
106msgid "Reboot"
106msgid "Reboot"
107−msgstr "Поново покрени"
107+msgstr "Поновно покретање"
108
108
109#: qml/Components/Dialogs.qml:208
109#: qml/Components/Dialogs.qml:208
110msgid "Are you sure you want to reboot?"
110msgid "Are you sure you want to reboot?"
111−msgstr "Сигурно желите да поново покренете?"
111+msgstr "Сигурно желите поново да покренете?"
112
112
113#: qml/Components/Dialogs.qml:210
113#: qml/Components/Dialogs.qml:210
114msgid "No"
114msgid "No"
@@ -143,7 +143,7 @@ msgstr "Покрени поново"
143
143
144#: qml/Components/Lockscreen.qml:245
144#: qml/Components/Lockscreen.qml:245
145msgid "Return to Call"
145msgid "Return to Call"
146−msgstr "Пређи поново на позив"
146+msgstr "Врати се на позив"
147
147
148#: qml/Components/Lockscreen.qml:245
148#: qml/Components/Lockscreen.qml:245
149msgid "Emergency Call"
149msgid "Emergency Call"
@@ -155,61 +155,61 @@ msgstr "У реду"
155
155
156#: qml/Components/ModeSwitchWarningDialog.qml:32
156#: qml/Components/ModeSwitchWarningDialog.qml:32
157msgid "Apps may have unsaved data:"
157msgid "Apps may have unsaved data:"
158−msgstr "Апликације можда имају несачуванх података:"
158+msgstr "Програми можда имају несачуванх података:"
159
159
160#: qml/Components/ModeSwitchWarningDialog.qml:57
160#: qml/Components/ModeSwitchWarningDialog.qml:57
161msgid "Re-dock, save your work and close these apps to continue."
161msgid "Re-dock, save your work and close these apps to continue."
162msgstr ""
162msgstr ""
163−"Поново убаците у док, счувајте рад и затворите те апликације да наставите."
163+"Поново убаците у док, сачувајте рад и затворите те програме да наставите."
164
164
165#: qml/Components/ModeSwitchWarningDialog.qml:63
165#: qml/Components/ModeSwitchWarningDialog.qml:63
166msgid "Or force close now (unsaved data will be lost)."
166msgid "Or force close now (unsaved data will be lost)."
167−msgstr "Или форсирајте затварање одмах (несачувани подаци биће изгубљени)."
167+msgstr "Или сада приморајте затварање (несачувани подаци биће изгубљени)."
168
168
169#: qml/Components/ModeSwitchWarningDialog.qml:75
169#: qml/Components/ModeSwitchWarningDialog.qml:75
170msgid "OK, I will reconnect"
170msgid "OK, I will reconnect"
171−msgstr "ОК, поново ћу се повезати"
171+msgstr "У реду, поново ћу се повезати"
172
172
173#: qml/Components/ModeSwitchWarningDialog.qml:76
173#: qml/Components/ModeSwitchWarningDialog.qml:76
174msgid "Reconnect now!"
174msgid "Reconnect now!"
175−msgstr "Поновоно повезивање одмах!"
175+msgstr "Поново се повежи!"
176
176
177#: qml/Components/ModeSwitchWarningDialog.qml:88
177#: qml/Components/ModeSwitchWarningDialog.qml:88
178msgid "Close all"
178msgid "Close all"
179msgstr "Затворите све"
179msgstr "Затворите све"
180
180
181−#: qml/Dash/DashPageHeader.qml:266
181+#: qml/Dash/DashPageHeader.qml:270
182msgctxt "Button: Open the Ubuntu Store"
182msgctxt "Button: Open the Ubuntu Store"
183msgid "Store"
183msgid "Store"
184msgstr "Продавница"
184msgstr "Продавница"
185
185
186−#: qml/Dash/DashPageHeader.qml:273
186+#: qml/Dash/DashPageHeader.qml:277
187msgctxt "Button: Start a search in the current dash scope"
187msgctxt "Button: Start a search in the current dash scope"
188msgid "Search"
188msgid "Search"
189msgstr "Тражи"
189msgstr "Тражи"
190
190
191−#: qml/Dash/DashPageHeader.qml:283
191+#: qml/Dash/DashPageHeader.qml:287
192msgctxt "Button: Show the current dash scope settings"
192msgctxt "Button: Show the current dash scope settings"
193msgid "Settings"
193msgid "Settings"
194msgstr "Подешавања"
194msgstr "Подешавања"
195
195
196−#: qml/Dash/DashPageHeader.qml:290
196+#: qml/Dash/DashPageHeader.qml:294
197msgid "Remove from Favorites"
197msgid "Remove from Favorites"
198msgstr "Уклони из омиљених"
198msgstr "Уклони из омиљених"
199
199
200−#: qml/Dash/DashPageHeader.qml:290
200+#: qml/Dash/DashPageHeader.qml:294
201msgid "Add to Favorites"
201msgid "Add to Favorites"
202−msgstr "Додај међу омиљене"
202+msgstr "Додај у омиљене"
203
203
204−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
204+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
205msgid "See less"
205msgid "See less"
206msgstr "Сажетије"
206msgstr "Сажетије"
207
207
208−#: qml/Dash/GenericScopeView.qml:587
208+#: qml/Dash/GenericScopeView.qml:565
209msgid "See all"
209msgid "See all"
210msgstr "Опширније"
210msgstr "Опширније"
211
211
212−#: qml/Dash/GenericScopeView.qml:649
212+#: qml/Dash/GenericScopeView.qml:627
213msgctxt "Label: Hint for dash search line edit"
213msgctxt "Label: Hint for dash search line edit"
214msgid "Search"
214msgid "Search"
215msgstr "Претрага"
215msgstr "Претрага"
@@ -237,7 +237,7 @@ msgstr "Напиши оцену"
237
237
238#: qml/Dash/Previews/PreviewSharing.qml:50
238#: qml/Dash/Previews/PreviewSharing.qml:50
239msgid "Preview Share Item"
239msgid "Preview Share Item"
240−msgstr "Предпреглед дељене ставке"
240+msgstr "Преглед дељене ставке"
241
241
242#: qml/Dash/PullToRefreshScopeStyle.qml:55
242#: qml/Dash/PullToRefreshScopeStyle.qml:55
243msgid "Pull to refresh…"
243msgid "Pull to refresh…"
@@ -268,8 +268,8 @@ msgid ""
268"Your device is now connected to an external display. Use this screen as a "
268"Your device is now connected to an external display. Use this screen as a "
269"touch pad to interact with the mouse."
269"touch pad to interact with the mouse."
270msgstr ""
270msgstr ""
271−"Ваш уређај је сада повезан на спољњи монитор. Користите овај екран као "
271+"Ваш уређај је сада повезан на спољни монитор. Користите овај екран као "
272−"додирну плочу да остварите интеракцију са мишем."
272+"додирну плочу да радите са мишем."
273
273
274#: qml/Greeter/CoverPage.qml:107
274#: qml/Greeter/CoverPage.qml:107
275msgid "Unlock"
275msgid "Unlock"
@@ -281,15 +281,15 @@ msgstr "Покушај поново"
281
281
282#: qml/Greeter/LoginList.qml:240
282#: qml/Greeter/LoginList.qml:240
283msgid "Tap to unlock"
283msgid "Tap to unlock"
284−msgstr "Додирните да откључате"
284+msgstr "Лупните да откључате"
285
285
286#: qml/Greeter/NarrowView.qml:54 qml/Wizard/Pages/passwd-confirm.qml:53
286#: qml/Greeter/NarrowView.qml:54 qml/Wizard/Pages/passwd-confirm.qml:53
287msgid "Sorry, incorrect passphrase."
287msgid "Sorry, incorrect passphrase."
288−msgstr "Жао ми је, погрешна приступна фраза."
288+msgstr "Извините, погрешна приступна фраза."
289
289
290#: qml/Greeter/NarrowView.qml:55 qml/Wizard/Pages/passwd-confirm.qml:54
290#: qml/Greeter/NarrowView.qml:55 qml/Wizard/Pages/passwd-confirm.qml:54
291msgid "Sorry, incorrect passcode."
291msgid "Sorry, incorrect passcode."
292−msgstr "Жао нам је, погрешан приступни код."
292+msgstr "Извините, погрешан приступни код."
293
293
294#: qml/Greeter/NarrowView.qml:56
294#: qml/Greeter/NarrowView.qml:56
295msgid "This will be your last attempt."
295msgid "This will be your last attempt."
@@ -300,16 +300,16 @@ msgid ""
300"If passphrase is entered incorrectly, your phone will conduct a factory "
300"If passphrase is entered incorrectly, your phone will conduct a factory "
301"reset and all personal data will be deleted."
301"reset and all personal data will be deleted."
302msgstr ""
302msgstr ""
303−"Ако се унесе погрешна присупна фраза, ваш телефон ће се ресетовати и сви "
303+"Ако се унесе погрешна присупна фраза, ваш телефон ће се вратити на фабричка "
304−"лични подаци ће бити обрисани."
304+"подешавања и сви лични подаци биће обрисани."
305
305
306#: qml/Greeter/NarrowView.qml:59
306#: qml/Greeter/NarrowView.qml:59
307msgid ""
307msgid ""
308"If passcode is entered incorrectly, your phone will conduct a factory reset "
308"If passcode is entered incorrectly, your phone will conduct a factory reset "
309"and all personal data will be deleted."
309"and all personal data will be deleted."
310msgstr ""
310msgstr ""
311−"Ако се унесе погрешан приступни код, ваш телефон ће се ресетовати и сви "
311+"Ако се унесе погрешан приступни код, ваш телефон ће се вратити на фабричка "
312−"лични подаци ће бити обрисани."
312+"подешавања и сви лични подаци биће обрисани."
313
313
314#: qml/Greeter/NarrowView.qml:116
314#: qml/Greeter/NarrowView.qml:116
315#, qt-format
315#, qt-format
@@ -327,20 +327,20 @@ msgstr "Унесите приступни код"
327#: qml/Greeter/NarrowView.qml:119
327#: qml/Greeter/NarrowView.qml:119
328#, qt-format
328#, qt-format
329msgid "Sorry, incorrect %1"
329msgid "Sorry, incorrect %1"
330−msgstr "Жао ми је, погрешан %1"
330+msgstr "Извините, погрешан %1"
331
331
332#: qml/Greeter/NarrowView.qml:120
332#: qml/Greeter/NarrowView.qml:120
333msgid "Sorry, incorrect passphrase"
333msgid "Sorry, incorrect passphrase"
334−msgstr "Жао ми је, погрешна приступна фраза"
334+msgstr "Извините, погрешна приступна фраза"
335
335
336#: qml/Greeter/NarrowView.qml:121
336#: qml/Greeter/NarrowView.qml:121
337msgctxt "passphrase"
337msgctxt "passphrase"
338msgid "Please re-enter"
338msgid "Please re-enter"
339−msgstr "Молим, унесите поново"
339+msgstr "Поново унесите"
340
340
341#: qml/Greeter/NarrowView.qml:122
341#: qml/Greeter/NarrowView.qml:122
342msgid "Sorry, incorrect passcode"
342msgid "Sorry, incorrect passcode"
343−msgstr "Жао ми је, погрешанприступни код"
343+msgstr "Извините, погрешан приступни код"
344
344
345#: qml/Notifications/NotificationMenuItemFactory.qml:129
345#: qml/Notifications/NotificationMenuItemFactory.qml:129
346msgid "Show password"
346msgid "Show password"
@@ -348,7 +348,7 @@ msgstr "Прикажи лозинку"
348
348
349#: qml/Panel/ActiveCallHint.qml:79
349#: qml/Panel/ActiveCallHint.qml:79
350msgid "Tap to return to call..."
350msgid "Tap to return to call..."
351−msgstr "Тапните да се вратите на позив..."
351+msgstr "Лупните да се вратите на позив..."
352
352
353#: qml/Panel/ActiveCallHint.qml:92
353#: qml/Panel/ActiveCallHint.qml:92
354msgid "Conference"
354msgid "Conference"
@@ -356,7 +356,7 @@ msgstr "Конференција"
356
356
357#: qml/Panel/Indicators/MenuItemFactory.qml:753
357#: qml/Panel/Indicators/MenuItemFactory.qml:753
358msgid "Nothing is playing"
358msgid "Nothing is playing"
359−msgstr "Ништа се не репродукује"
359+msgstr "Ништа се не пушта"
360
360
361#: qml/Panel/Indicators/MenuItemFactory.qml:882
361#: qml/Panel/Indicators/MenuItemFactory.qml:882
362#, qt-format
362#, qt-format
@@ -384,17 +384,17 @@ msgstr[2] "%1 секунди"
384
384
385#: qml/Panel/Indicators/MenuItemFactory.qml:894
385#: qml/Panel/Indicators/MenuItemFactory.qml:894
386msgid "0 seconds"
386msgid "0 seconds"
387−msgstr "0 секунди"
387+msgstr "0 секунде"
388
388
389#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
389#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
390#: qml/Panel/Indicators/MenuItemFactory.qml:896
390#: qml/Panel/Indicators/MenuItemFactory.qml:896
391#, qt-format
391#, qt-format
392msgid "%1 remaining"
392msgid "%1 remaining"
393−msgstr "%1 преостало"
393+msgstr "Преостаје %1"
394
394
395#: qml/Panel/Indicators/MenuItemFactory.qml:902
395#: qml/Panel/Indicators/MenuItemFactory.qml:902
396msgid "In queue…"
396msgid "In queue…"
397−msgstr "Је заказано…"
397+msgstr "Заказано…"
398
398
399#: qml/Panel/Indicators/MenuItemFactory.qml:906
399#: qml/Panel/Indicators/MenuItemFactory.qml:906
400msgid "Downloading"
400msgid "Downloading"
@@ -402,7 +402,7 @@ msgstr "Преузимање"
402
402
403#: qml/Panel/Indicators/MenuItemFactory.qml:908
403#: qml/Panel/Indicators/MenuItemFactory.qml:908
404msgid "Paused, tap to resume"
404msgid "Paused, tap to resume"
405−msgstr "Заустављено, тапните да наставите"
405+msgstr "Заустављено, лупните да наставите"
406
406
407#: qml/Panel/Indicators/MenuItemFactory.qml:910
407#: qml/Panel/Indicators/MenuItemFactory.qml:910
408msgid "Canceled"
408msgid "Canceled"
@@ -414,7 +414,7 @@ msgstr "Завршено"
414
414
415#: qml/Panel/Indicators/MenuItemFactory.qml:914
415#: qml/Panel/Indicators/MenuItemFactory.qml:914
416msgid "Failed, tap to retry"
416msgid "Failed, tap to retry"
417−msgstr "Неуспешно, тапните да покушате поново"
417+msgstr "Неуспело, лупните да покушате поново"
418
418
419#: qml/Panel/Indicators/MessageMenuItemFactory.qml:155
419#: qml/Panel/Indicators/MessageMenuItemFactory.qml:155
420#: qml/Panel/Indicators/MessageMenuItemFactory.qml:214
420#: qml/Panel/Indicators/MessageMenuItemFactory.qml:214
@@ -432,14 +432,6 @@ msgctxt "Button: Call back on phone"
432msgid "Call back"
432msgid "Call back"
433msgstr "Позови назад"
433msgstr "Позови назад"
434
434
435−#: qml/Panel/Indicators/ModemInfoItem.qml:105
436−msgid "Unlock SIM"
437−msgstr "Откључај СИМ картицу"
438−
439−#: qml/Panel/Indicators/RoamingIndication.qml:27
440−msgid "Roaming"
441−msgstr "Роминг"
442−
443#: qml/Tutorial/TutorialBottom.qml:28
435#: qml/Tutorial/TutorialBottom.qml:28
444msgid "Open special menus"
436msgid "Open special menus"
445msgstr "Отвори нарочите изборнике"
437msgstr "Отвори нарочите изборнике"
@@ -454,12 +446,12 @@ msgstr "Ова радња ради различите ствари за разл
454
446
455#: qml/Tutorial/TutorialBottomFinish.qml:25
447#: qml/Tutorial/TutorialBottomFinish.qml:25
456msgid "Tap here to finish."
448msgid "Tap here to finish."
457−msgstr "Тапните овде за завршетак."
449+msgstr "Лупните овде да завршите."
458
450
459#: qml/Tutorial/TutorialContent.qml:80 qml/Tutorial/TutorialLeftFinish.qml:25
451#: qml/Tutorial/TutorialContent.qml:80 qml/Tutorial/TutorialLeftFinish.qml:25
460#: qml/Tutorial/TutorialRight.qml:144
452#: qml/Tutorial/TutorialRight.qml:144
461msgid "Tap here to continue."
453msgid "Tap here to continue."
462−msgstr "Тапните овде за наставак."
454+msgstr "Лупните овде да наставите."
463
455
464#: qml/Tutorial/TutorialLeft.qml:26
456#: qml/Tutorial/TutorialLeft.qml:26
465msgid "Open the launcher"
457msgid "Open the launcher"
@@ -491,7 +483,7 @@ msgstr "Дуго превуците са десне ивице."
491
483
492#: qml/Tutorial/TutorialRight.qml:122
484#: qml/Tutorial/TutorialRight.qml:122
493msgid "View all your running tasks."
485msgid "View all your running tasks."
494−msgstr "Прегледајте покренуте задатке."
486+msgstr "Прегледајте све покренуте задатке."
495
487
496#: qml/Wizard/Page.qml:89
488#: qml/Wizard/Page.qml:89
497msgctxt "Button: Go back one page in the Wizard"
489msgctxt "Button: Go back one page in the Wizard"
@@ -504,7 +496,7 @@ msgstr "Здраво!"
504
496
505#: qml/Wizard/Pages/10-welcome.qml:44
497#: qml/Wizard/Pages/10-welcome.qml:44
506msgid "Welcome to your Ubuntu device."
498msgid "Welcome to your Ubuntu device."
507−msgstr ""
499+msgstr "Добро дошли у Убунту уређај."
508
500
509#: qml/Wizard/Pages/10-welcome.qml:52
501#: qml/Wizard/Pages/10-welcome.qml:52
510msgid "Let’s get started."
502msgid "Let’s get started."
@@ -535,7 +527,7 @@ msgstr "Безбедносно закључавање"
535
527
536#: qml/Wizard/Pages/30-passwd-type.qml:79
528#: qml/Wizard/Pages/30-passwd-type.qml:79
537msgid "Please select how you’d like to unlock your device."
529msgid "Please select how you’d like to unlock your device."
538−msgstr ""
530+msgstr "Изаберите како желите да откључате уређај."
539
531
540#: qml/Wizard/Pages/30-passwd-type.qml:102
532#: qml/Wizard/Pages/30-passwd-type.qml:102
541msgctxt "Label: Type of security method"
533msgctxt "Label: Type of security method"
@@ -585,7 +577,7 @@ msgstr "Положај"
585
577
586#: qml/Wizard/Pages/50-location.qml:62
578#: qml/Wizard/Pages/50-location.qml:62
587msgid "Let the phone detect your location:"
579msgid "Let the phone detect your location:"
588−msgstr "Допустите да телефон препозна Ваш положај:"
580+msgstr "Допустите да телефон препозна ваш положај:"
589
581
590#: qml/Wizard/Pages/50-location.qml:69
582#: qml/Wizard/Pages/50-location.qml:69
591msgid "Using GPS only (less accurate)"
583msgid "Using GPS only (less accurate)"
@@ -594,7 +586,7 @@ msgstr "Користећи само ГПС (мања тачност)"
594#: qml/Wizard/Pages/50-location.qml:86
586#: qml/Wizard/Pages/50-location.qml:86
595msgid "Using GPS, anonymized Wi-Fi and cellular network info (recommended)"
587msgid "Using GPS, anonymized Wi-Fi and cellular network info (recommended)"
596msgstr ""
588msgstr ""
597−"Помоћу GPS-a, заштићених података о бежичним и мобилним мрежама (препоручено)"
589+"Користећи ГПС, заштићене податке о бежичним и мобилним мрежама (препоручено)"
598
590
599#. Translators: HERE is a trademark for Nokia's location service, you probably shouldn't translate it
591#. Translators: HERE is a trademark for Nokia's location service, you probably shouldn't translate it
600#: qml/Wizard/Pages/50-location.qml:103
592#: qml/Wizard/Pages/50-location.qml:103
@@ -602,7 +594,7 @@ msgid ""
602"By selecting this option you agree to the Nokia HERE <a href='#'>terms and "
594"By selecting this option you agree to the Nokia HERE <a href='#'>terms and "
603"conditions</a>."
595"conditions</a>."
604msgstr ""
596msgstr ""
605−"Избором ове могућности се слажете са <a href='#'>условима и одредбама</a> "
597+"Избором ове могућности слажете се са <a href='#'>условима и одредбама</a> "
606"Nokia HERE-а."
598"Nokia HERE-а."
607
599
608#: qml/Wizard/Pages/50-location.qml:112
600#: qml/Wizard/Pages/50-location.qml:112
@@ -611,18 +603,18 @@ msgstr "Нимало"
611
603
612#: qml/Wizard/Pages/50-location.qml:124
604#: qml/Wizard/Pages/50-location.qml:124
613msgid "You can change your mind later in <b>System Settings</b>."
605msgid "You can change your mind later in <b>System Settings</b>."
614−msgstr "Можете да измените поставке касније у <b>Поставкама система</b>."
606+msgstr "Можете да измените поставке касније у <b>Подешавањима система</b>."
615
607
616#: qml/Wizard/Pages/60-reporting.qml:26
608#: qml/Wizard/Pages/60-reporting.qml:26
617msgid "Improving your experience"
609msgid "Improving your experience"
618−msgstr "Унапређивање доживљаја"
610+msgstr "Побољшање искуства"
619
611
620#: qml/Wizard/Pages/60-reporting.qml:46
612#: qml/Wizard/Pages/60-reporting.qml:46
621msgid ""
613msgid ""
622"Your phone is set up to automatically report errors to Canonical and its "
614"Your phone is set up to automatically report errors to Canonical and its "
623"partners, the makers of the operating system."
615"partners, the makers of the operating system."
624msgstr ""
616msgstr ""
625−"Телефон је подешен да аутоматски пријављује грешке Каноникалу и сарадницима, "
617+"Телефон је подешен да сам пријављује грешке Каноникалу и сарадницима, "
626"творцима оперативног система."
618"творцима оперативног система."
627
619
628#: qml/Wizard/Pages/60-reporting.qml:53
620#: qml/Wizard/Pages/60-reporting.qml:53
@@ -630,7 +622,7 @@ msgid ""
630"This can be disabled in <b>System Settings</b> under <b>Security &amp; "
622"This can be disabled in <b>System Settings</b> under <b>Security &amp; "
631"Privacy</b>"
623"Privacy</b>"
632msgstr ""
624msgstr ""
633−"Ово може да се онемогући у <b>Поставкама система</b> под ставком "
625+"Ово можете да искључите у <b>Подешавањима система</b> под ставком "
634"<b>Безбедност и приватност</b>"
626"<b>Безбедност и приватност</b>"
635
627
636#: qml/Wizard/Pages/80-finished.qml:24
628#: qml/Wizard/Pages/80-finished.qml:24
@@ -643,7 +635,7 @@ msgstr "Лепо одрађено!"
643
635
644#: qml/Wizard/Pages/80-finished.qml:46
636#: qml/Wizard/Pages/80-finished.qml:46
645msgid "Your device is now ready to use."
637msgid "Your device is now ready to use."
646−msgstr ""
638+msgstr "Ваш уређај је сада спреман за употребу."
647
639
648#: qml/Wizard/Pages/80-finished.qml:53
640#: qml/Wizard/Pages/80-finished.qml:53
649msgid "Finish"
641msgid "Finish"
@@ -664,11 +656,11 @@ msgstr "Потврдите приступни код"
664#: qml/Wizard/Pages/passwd-confirm.qml:53
656#: qml/Wizard/Pages/passwd-confirm.qml:53
665#: qml/Wizard/Pages/passwd-confirm.qml:54
657#: qml/Wizard/Pages/passwd-confirm.qml:54
666msgid "Please try again."
658msgid "Please try again."
667−msgstr "Молим, покушајте поново."
659+msgstr "Покушајте поново."
668
660
669#: qml/Wizard/Pages/passwd-set.qml:61
661#: qml/Wizard/Pages/passwd-set.qml:61
670msgid "Choose your passcode"
662msgid "Choose your passcode"
671−msgstr "Изаберите ваш приступни код"
663+msgstr "Изаберите приступни код"
672
664
673#: qml/Wizard/Pages/passwd-set.qml:68
665#: qml/Wizard/Pages/passwd-set.qml:68
674msgid "Passphrase must be 4 characters long"
666msgid "Passphrase must be 4 characters long"
@@ -771,6 +763,12 @@ msgstr "%1 〉"
771#~ msgid "Done"
763#~ msgid "Done"
772#~ msgstr "Готово"
764#~ msgstr "Готово"
773
765
766+#~ msgid "Unlock SIM"
767+#~ msgstr "Откључај СИМ картицу"
768+
769+#~ msgid "Roaming"
770+#~ msgstr "Роминг"
771+
774#~ msgid "Restart"
772#~ msgid "Restart"
775#~ msgstr "Поново покрени"
773#~ msgstr "Поново покрени"
776
774
po/sv.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-07-12 22:17+0000\n"
11"PO-Revision-Date: 2015-07-12 22:17+0000\n"
12"Last-Translator: Josef Andersson <Unknown>\n"
12"Last-Translator: Josef Andersson <Unknown>\n"
13"Language-Team: Swedish\n"
13"Language-Team: Swedish\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20"Language: sv\n"
20"Language: sv\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -175,38 +175,38 @@ msgstr "Återanslut nu!"
175msgid "Close all"
175msgid "Close all"
176msgstr "Stäng alla"
176msgstr "Stäng alla"
177
177
178−#: qml/Dash/DashPageHeader.qml:266
178+#: qml/Dash/DashPageHeader.qml:270
179msgctxt "Button: Open the Ubuntu Store"
179msgctxt "Button: Open the Ubuntu Store"
180msgid "Store"
180msgid "Store"
181msgstr "Förråd"
181msgstr "Förråd"
182
182
183−#: qml/Dash/DashPageHeader.qml:273
183+#: qml/Dash/DashPageHeader.qml:277
184msgctxt "Button: Start a search in the current dash scope"
184msgctxt "Button: Start a search in the current dash scope"
185msgid "Search"
185msgid "Search"
186msgstr "Sök"
186msgstr "Sök"
187
187
188−#: qml/Dash/DashPageHeader.qml:283
188+#: qml/Dash/DashPageHeader.qml:287
189msgctxt "Button: Show the current dash scope settings"
189msgctxt "Button: Show the current dash scope settings"
190msgid "Settings"
190msgid "Settings"
191msgstr "Inställningar"
191msgstr "Inställningar"
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Remove from Favorites"
194msgid "Remove from Favorites"
195msgstr "Ta bort från Favoriter"
195msgstr "Ta bort från Favoriter"
196
196
197−#: qml/Dash/DashPageHeader.qml:290
197+#: qml/Dash/DashPageHeader.qml:294
198msgid "Add to Favorites"
198msgid "Add to Favorites"
199msgstr "Lägg till Favoriter"
199msgstr "Lägg till Favoriter"
200
200
201−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
201+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
202msgid "See less"
202msgid "See less"
203msgstr "Visa mindre"
203msgstr "Visa mindre"
204
204
205−#: qml/Dash/GenericScopeView.qml:587
205+#: qml/Dash/GenericScopeView.qml:565
206msgid "See all"
206msgid "See all"
207msgstr "Visa alla"
207msgstr "Visa alla"
208
208
209−#: qml/Dash/GenericScopeView.qml:649
209+#: qml/Dash/GenericScopeView.qml:627
210msgctxt "Label: Hint for dash search line edit"
210msgctxt "Label: Hint for dash search line edit"
211msgid "Search"
211msgid "Search"
212msgstr "Sök"
212msgstr "Sök"
@@ -426,14 +426,6 @@ msgctxt "Button: Call back on phone"
426msgid "Call back"
426msgid "Call back"
427msgstr "Ring upp"
427msgstr "Ring upp"
428
428
429−#: qml/Panel/Indicators/ModemInfoItem.qml:105
430−msgid "Unlock SIM"
431−msgstr "Lås upp SIM-kort"
432−
433−#: qml/Panel/Indicators/RoamingIndication.qml:27
434−msgid "Roaming"
435−msgstr "Roaming"
436−
437#: qml/Tutorial/TutorialBottom.qml:28
429#: qml/Tutorial/TutorialBottom.qml:28
438msgid "Open special menus"
430msgid "Open special menus"
439msgstr "Öppna specialmenyer"
431msgstr "Öppna specialmenyer"
@@ -736,6 +728,12 @@ msgstr "%1 〉"
736#~ msgid "Speaking..."
728#~ msgid "Speaking..."
737#~ msgstr "Talar…"
729#~ msgstr "Talar…"
738
730
731+#~ msgid "Unlock SIM"
732+#~ msgstr "Lås upp SIM-kort"
733+
734+#~ msgid "Roaming"
735+#~ msgstr "Roaming"
736+
739#~ msgid "Favorites"
737#~ msgid "Favorites"
740#~ msgstr "Favoriter"
738#~ msgstr "Favoriter"
741
739
po/sw.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-07-17 20:02+0000\n"
11"PO-Revision-Date: 2015-07-17 20:02+0000\n"
12"Last-Translator: Valentine <mwangi_valentino@yahoo.com>\n"
12"Last-Translator: Valentine <mwangi_valentino@yahoo.com>\n"
13"Language-Team: Swahili <sw@li.org>\n"
13"Language-Team: Swahili <sw@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -173,38 +173,38 @@ msgstr ""
173msgid "Close all"
173msgid "Close all"
174msgstr ""
174msgstr ""
175
175
176−#: qml/Dash/DashPageHeader.qml:266
176+#: qml/Dash/DashPageHeader.qml:270
177msgctxt "Button: Open the Ubuntu Store"
177msgctxt "Button: Open the Ubuntu Store"
178msgid "Store"
178msgid "Store"
179msgstr "Duka"
179msgstr "Duka"
180
180
181−#: qml/Dash/DashPageHeader.qml:273
181+#: qml/Dash/DashPageHeader.qml:277
182msgctxt "Button: Start a search in the current dash scope"
182msgctxt "Button: Start a search in the current dash scope"
183msgid "Search"
183msgid "Search"
184msgstr "Tafuta"
184msgstr "Tafuta"
185
185
186−#: qml/Dash/DashPageHeader.qml:283
186+#: qml/Dash/DashPageHeader.qml:287
187msgctxt "Button: Show the current dash scope settings"
187msgctxt "Button: Show the current dash scope settings"
188msgid "Settings"
188msgid "Settings"
189msgstr "Mipangilio"
189msgstr "Mipangilio"
190
190
191−#: qml/Dash/DashPageHeader.qml:290
191+#: qml/Dash/DashPageHeader.qml:294
192msgid "Remove from Favorites"
192msgid "Remove from Favorites"
193msgstr "Toa kutoka nilizopenda"
193msgstr "Toa kutoka nilizopenda"
194
194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196msgid "Add to Favorites"
196msgid "Add to Favorites"
197msgstr "Ongeza kwenye nilizopenda"
197msgstr "Ongeza kwenye nilizopenda"
198
198
199−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
199+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
200msgid "See less"
200msgid "See less"
201msgstr "Onyesha kidogo"
201msgstr "Onyesha kidogo"
202
202
203−#: qml/Dash/GenericScopeView.qml:587
203+#: qml/Dash/GenericScopeView.qml:565
204msgid "See all"
204msgid "See all"
205msgstr "Onyesha zote"
205msgstr "Onyesha zote"
206
206
207−#: qml/Dash/GenericScopeView.qml:649
207+#: qml/Dash/GenericScopeView.qml:627
208msgctxt "Label: Hint for dash search line edit"
208msgctxt "Label: Hint for dash search line edit"
209msgid "Search"
209msgid "Search"
210msgstr "Tafuta"
210msgstr "Tafuta"
@@ -422,14 +422,6 @@ msgctxt "Button: Call back on phone"
422msgid "Call back"
422msgid "Call back"
423msgstr ""
423msgstr ""
424
424
425−#: qml/Panel/Indicators/ModemInfoItem.qml:105
426−msgid "Unlock SIM"
427−msgstr "Fungua SIM"
428−
429−#: qml/Panel/Indicators/RoamingIndication.qml:27
430−msgid "Roaming"
431−msgstr "Uzururaji"
432−
433#: qml/Tutorial/TutorialBottom.qml:28
425#: qml/Tutorial/TutorialBottom.qml:28
434msgid "Open special menus"
426msgid "Open special menus"
435msgstr "Fungua orodha maalum"
427msgstr "Fungua orodha maalum"
@@ -711,6 +703,12 @@ msgstr ""
711#~ msgid "Please re-enter"
703#~ msgid "Please re-enter"
712#~ msgstr "Tafadhali bonyeza tena"
704#~ msgstr "Tafadhali bonyeza tena"
713
705
706+#~ msgid "Unlock SIM"
707+#~ msgstr "Fungua SIM"
708+
709+#~ msgid "Roaming"
710+#~ msgstr "Uzururaji"
711+
714#~ msgid "Please select how you’d like to unlock your phone."
712#~ msgid "Please select how you’d like to unlock your phone."
715#~ msgstr "Tafadhali chagua vile ungependa kufunga simu."
713#~ msgstr "Tafadhali chagua vile ungependa kufunga simu."
716
714
po/ta.po+11−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2013-10-24 11:36+0000\n"
11"PO-Revision-Date: 2013-10-24 11:36+0000\n"
12"Last-Translator: Arun Kumar - அருண் குமார் <thangam.arunx@gmail.com>\n"
12"Last-Translator: Arun Kumar - அருண் குமார் <thangam.arunx@gmail.com>\n"
13"Language-Team: Ubuntu Tamil Team/Free Tamil Computing/Thamizha\n"
13"Language-Team: Ubuntu Tamil Team/Free Tamil Computing/Thamizha\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20"Language: ta\n"
20"Language: ta\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -172,38 +172,38 @@ msgstr ""
172msgid "Close all"
172msgid "Close all"
173msgstr ""
173msgstr ""
174
174
175−#: qml/Dash/DashPageHeader.qml:266
175+#: qml/Dash/DashPageHeader.qml:270
176msgctxt "Button: Open the Ubuntu Store"
176msgctxt "Button: Open the Ubuntu Store"
177msgid "Store"
177msgid "Store"
178msgstr ""
178msgstr ""
179
179
180−#: qml/Dash/DashPageHeader.qml:273
180+#: qml/Dash/DashPageHeader.qml:277
181msgctxt "Button: Start a search in the current dash scope"
181msgctxt "Button: Start a search in the current dash scope"
182msgid "Search"
182msgid "Search"
183msgstr ""
183msgstr ""
184
184
185−#: qml/Dash/DashPageHeader.qml:283
185+#: qml/Dash/DashPageHeader.qml:287
186msgctxt "Button: Show the current dash scope settings"
186msgctxt "Button: Show the current dash scope settings"
187msgid "Settings"
187msgid "Settings"
188msgstr ""
188msgstr ""
189
189
190−#: qml/Dash/DashPageHeader.qml:290
190+#: qml/Dash/DashPageHeader.qml:294
191msgid "Remove from Favorites"
191msgid "Remove from Favorites"
192msgstr ""
192msgstr ""
193
193
194−#: qml/Dash/DashPageHeader.qml:290
194+#: qml/Dash/DashPageHeader.qml:294
195msgid "Add to Favorites"
195msgid "Add to Favorites"
196msgstr ""
196msgstr ""
197
197
198−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
198+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
199msgid "See less"
199msgid "See less"
200msgstr ""
200msgstr ""
201
201
202−#: qml/Dash/GenericScopeView.qml:587
202+#: qml/Dash/GenericScopeView.qml:565
203msgid "See all"
203msgid "See all"
204msgstr ""
204msgstr ""
205
205
206−#: qml/Dash/GenericScopeView.qml:649
206+#: qml/Dash/GenericScopeView.qml:627
207msgctxt "Label: Hint for dash search line edit"
207msgctxt "Label: Hint for dash search line edit"
208msgid "Search"
208msgid "Search"
209msgstr ""
209msgstr ""
@@ -417,14 +417,6 @@ msgctxt "Button: Call back on phone"
417msgid "Call back"
417msgid "Call back"
418msgstr ""
418msgstr ""
419
419
420−#: qml/Panel/Indicators/ModemInfoItem.qml:105
421−msgid "Unlock SIM"
422−msgstr ""
423−
424−#: qml/Panel/Indicators/RoamingIndication.qml:27
425−msgid "Roaming"
426−msgstr ""
427−
428#: qml/Tutorial/TutorialBottom.qml:28
420#: qml/Tutorial/TutorialBottom.qml:28
429msgid "Open special menus"
421msgid "Open special menus"
430msgstr ""
422msgstr ""
po/te.po+11−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2014-07-19 10:04+0000\n"
11"PO-Revision-Date: 2014-07-19 10:04+0000\n"
12"Last-Translator: Praveen Illa <mail2ipn@gmail.com>\n"
12"Last-Translator: Praveen Illa <mail2ipn@gmail.com>\n"
13"Language-Team: Telugu <te@li.org>\n"
13"Language-Team: Telugu <te@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171msgid "Close all"
171msgid "Close all"
172msgstr ""
172msgstr ""
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177msgstr ""
177msgstr ""
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr ""
182msgstr ""
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr ""
187msgstr ""
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr ""
191msgstr ""
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr ""
195msgstr ""
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr ""
199msgstr ""
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr ""
203msgstr ""
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr ""
208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416msgid "Call back"
416msgid "Call back"
417msgstr ""
417msgstr ""
418
418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427#: qml/Tutorial/TutorialBottom.qml:28
419#: qml/Tutorial/TutorialBottom.qml:28
428msgid "Open special menus"
420msgid "Open special menus"
429msgstr ""
421msgstr ""
po/th.po+11−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2014-10-02 04:55+0000\n"
11"PO-Revision-Date: 2014-10-02 04:55+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Thai <th@li.org>\n"
13"Language-Team: Thai <th@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171msgid "Close all"
171msgid "Close all"
172msgstr ""
172msgstr ""
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177msgstr ""
177msgstr ""
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr ""
182msgstr ""
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr ""
187msgstr ""
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr ""
191msgstr ""
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr ""
195msgstr ""
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr ""
199msgstr ""
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr ""
203msgstr ""
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr ""
208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416msgid "Call back"
416msgid "Call back"
417msgstr ""
417msgstr ""
418
418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427#: qml/Tutorial/TutorialBottom.qml:28
419#: qml/Tutorial/TutorialBottom.qml:28
428msgid "Open special menus"
420msgid "Open special menus"
429msgstr ""
421msgstr ""
po/tr.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-03-22 15:56+0000\n"
11"PO-Revision-Date: 2015-03-22 15:56+0000\n"
12"Last-Translator: Arda Ünlü <aarda.uunlu@gmail.com>\n"
12"Last-Translator: Arda Ünlü <aarda.uunlu@gmail.com>\n"
13"Language-Team: Turkish <tr@li.org>\n"
13"Language-Team: Turkish <tr@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171msgid "Close all"
171msgid "Close all"
172msgstr ""
172msgstr ""
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177msgstr "Mağaza"
177msgstr "Mağaza"
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr "Ara"
182msgstr "Ara"
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr "Ayarlar"
187msgstr "Ayarlar"
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr "Sık kullanılanlardan kaldır"
191msgstr "Sık kullanılanlardan kaldır"
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr "Yer İmlerine Ekle"
195msgstr "Yer İmlerine Ekle"
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr "Daha azını gör"
199msgstr "Daha azını gör"
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr "Tümünü gör"
203msgstr "Tümünü gör"
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr "Ara"
208msgstr "Ara"
@@ -420,14 +420,6 @@ msgctxt "Button: Call back on phone"
420msgid "Call back"
420msgid "Call back"
421msgstr ""
421msgstr ""
422
422
423−#: qml/Panel/Indicators/ModemInfoItem.qml:105
424−msgid "Unlock SIM"
425−msgstr "SIM kilidini aç"
426−
427−#: qml/Panel/Indicators/RoamingIndication.qml:27
428−msgid "Roaming"
429−msgstr "Dolaşım"
430−
431#: qml/Tutorial/TutorialBottom.qml:28
423#: qml/Tutorial/TutorialBottom.qml:28
432msgid "Open special menus"
424msgid "Open special menus"
433msgstr "Özel menüleri aç"
425msgstr "Özel menüleri aç"
@@ -739,6 +731,9 @@ msgstr "%1 〉"
739#~ msgid "Store"
731#~ msgid "Store"
740#~ msgstr "Mağaza"
732#~ msgstr "Mağaza"
741
733
734+#~ msgid "Unlock SIM"
735+#~ msgstr "SIM kilidini aç"
736+
742#~ msgid "Reboot"
737#~ msgid "Reboot"
743#~ msgstr "Yeniden başlat"
738#~ msgstr "Yeniden başlat"
744
739
@@ -760,6 +755,9 @@ msgstr "%1 〉"
760#~ msgid "Restart"
755#~ msgid "Restart"
761#~ msgstr "Yeniden başlat"
756#~ msgstr "Yeniden başlat"
762
757
758+#~ msgid "Roaming"
759+#~ msgstr "Dolaşım"
760+
763#~ msgid "Please re-enter"
761#~ msgid "Please re-enter"
764#~ msgstr "Lütfen yeniden girin"
762#~ msgstr "Lütfen yeniden girin"
765
763
po/ug.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-12-01 07:37+0000\n"
11"PO-Revision-Date: 2015-12-01 07:37+0000\n"
12"Last-Translator: Eltikin <eltikinuyghur@hotmail.com>\n"
12"Last-Translator: Eltikin <eltikinuyghur@hotmail.com>\n"
13"Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
13"Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -172,38 +172,38 @@ msgstr ""
172msgid "Close all"
172msgid "Close all"
173msgstr ""
173msgstr ""
174
174
175−#: qml/Dash/DashPageHeader.qml:266
175+#: qml/Dash/DashPageHeader.qml:270
176msgctxt "Button: Open the Ubuntu Store"
176msgctxt "Button: Open the Ubuntu Store"
177msgid "Store"
177msgid "Store"
178msgstr "ساقلا"
178msgstr "ساقلا"
179
179
180−#: qml/Dash/DashPageHeader.qml:273
180+#: qml/Dash/DashPageHeader.qml:277
181msgctxt "Button: Start a search in the current dash scope"
181msgctxt "Button: Start a search in the current dash scope"
182msgid "Search"
182msgid "Search"
183msgstr "ئىزدە"
183msgstr "ئىزدە"
184
184
185−#: qml/Dash/DashPageHeader.qml:283
185+#: qml/Dash/DashPageHeader.qml:287
186msgctxt "Button: Show the current dash scope settings"
186msgctxt "Button: Show the current dash scope settings"
187msgid "Settings"
187msgid "Settings"
188msgstr "تەڭشەك"
188msgstr "تەڭشەك"
189
189
190−#: qml/Dash/DashPageHeader.qml:290
190+#: qml/Dash/DashPageHeader.qml:294
191msgid "Remove from Favorites"
191msgid "Remove from Favorites"
192msgstr "يىغقۇچتىن چىقىرىۋەت"
192msgstr "يىغقۇچتىن چىقىرىۋەت"
193
193
194−#: qml/Dash/DashPageHeader.qml:290
194+#: qml/Dash/DashPageHeader.qml:294
195msgid "Add to Favorites"
195msgid "Add to Favorites"
196msgstr "يىغقۇچقا قوش"
196msgstr "يىغقۇچقا قوش"
197
197
198−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
198+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
199msgid "See less"
199msgid "See less"
200msgstr "ئازراق كۆرۈش"
200msgstr "ئازراق كۆرۈش"
201
201
202−#: qml/Dash/GenericScopeView.qml:587
202+#: qml/Dash/GenericScopeView.qml:565
203msgid "See all"
203msgid "See all"
204msgstr "ھەممىنى كۆرۈش…"
204msgstr "ھەممىنى كۆرۈش…"
205
205
206−#: qml/Dash/GenericScopeView.qml:649
206+#: qml/Dash/GenericScopeView.qml:627
207msgctxt "Label: Hint for dash search line edit"
207msgctxt "Label: Hint for dash search line edit"
208msgid "Search"
208msgid "Search"
209msgstr "ئىزدە"
209msgstr "ئىزدە"
@@ -418,14 +418,6 @@ msgctxt "Button: Call back on phone"
418msgid "Call back"
418msgid "Call back"
419msgstr "تىلفۇن ئۇرلىۋاتىدۇ"
419msgstr "تىلفۇن ئۇرلىۋاتىدۇ"
420
420
421−#: qml/Panel/Indicators/ModemInfoItem.qml:105
422−msgid "Unlock SIM"
423−msgstr "SIM نى قۇلۇپسىزلاش"
424−
425−#: qml/Panel/Indicators/RoamingIndication.qml:27
426−msgid "Roaming"
427−msgstr "كەزمە"
428−
429#: qml/Tutorial/TutorialBottom.qml:28
421#: qml/Tutorial/TutorialBottom.qml:28
430msgid "Open special menus"
422msgid "Open special menus"
431msgstr "تىزملىكنى ئاچ"
423msgstr "تىزملىكنى ئاچ"
@@ -756,6 +748,12 @@ msgstr "%1 〉"
756#~ msgid "All"
748#~ msgid "All"
757#~ msgstr "ھەممىسى"
749#~ msgstr "ھەممىسى"
758
750
751+#~ msgid "Unlock SIM"
752+#~ msgstr "SIM نى قۇلۇپسىزلاش"
753+
754+#~ msgid "Roaming"
755+#~ msgstr "كەزمە"
756+
759#~ msgid "Restart"
757#~ msgid "Restart"
760#~ msgstr "قايتا قوزغات"
758#~ msgstr "قايتا قوزغات"
761
759
po/uk.po+20−22
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-07-04 05:53+0000\n"
11"PO-Revision-Date: 2015-07-04 05:53+0000\n"
12"Last-Translator: Yuri Chornoivan <yurchor@gmail.com>\n"
12"Last-Translator: Yuri Chornoivan <yurchor@gmail.com>\n"
13"Language-Team: Ukrainian <uk@li.org>\n"
13"Language-Team: Ukrainian <uk@li.org>\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%10==1 && n%100!=11 ? 0 : n%10>=2 && "
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-02-16 05:37+0000\n"
19+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
20−"X-Generator: Launchpad (build 17925)\n"
20+"X-Generator: Launchpad (build 17936)\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -180,38 +180,38 @@ msgstr "Перепід’єднатися зараз!"
180msgid "Close all"
180msgid "Close all"
181msgstr "Закрити усе"
181msgstr "Закрити усе"
182
182
183−#: qml/Dash/DashPageHeader.qml:266
183+#: qml/Dash/DashPageHeader.qml:270
184msgctxt "Button: Open the Ubuntu Store"
184msgctxt "Button: Open the Ubuntu Store"
185msgid "Store"
185msgid "Store"
186msgstr "Крамниця"
186msgstr "Крамниця"
187
187
188−#: qml/Dash/DashPageHeader.qml:273
188+#: qml/Dash/DashPageHeader.qml:277
189msgctxt "Button: Start a search in the current dash scope"
189msgctxt "Button: Start a search in the current dash scope"
190msgid "Search"
190msgid "Search"
191msgstr "Пошук"
191msgstr "Пошук"
192
192
193−#: qml/Dash/DashPageHeader.qml:283
193+#: qml/Dash/DashPageHeader.qml:287
194msgctxt "Button: Show the current dash scope settings"
194msgctxt "Button: Show the current dash scope settings"
195msgid "Settings"
195msgid "Settings"
196msgstr "Параметри"
196msgstr "Параметри"
197
197
198−#: qml/Dash/DashPageHeader.qml:290
198+#: qml/Dash/DashPageHeader.qml:294
199msgid "Remove from Favorites"
199msgid "Remove from Favorites"
200msgstr "Вилучити з вибраного"
200msgstr "Вилучити з вибраного"
201
201
202−#: qml/Dash/DashPageHeader.qml:290
202+#: qml/Dash/DashPageHeader.qml:294
203msgid "Add to Favorites"
203msgid "Add to Favorites"
204msgstr "Додати до вибраного"
204msgstr "Додати до вибраного"
205
205
206−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
206+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
207msgid "See less"
207msgid "See less"
208msgstr "Стисліше"
208msgstr "Стисліше"
209
209
210−#: qml/Dash/GenericScopeView.qml:587
210+#: qml/Dash/GenericScopeView.qml:565
211msgid "See all"
211msgid "See all"
212msgstr "Детальніше"
212msgstr "Детальніше"
213
213
214−#: qml/Dash/GenericScopeView.qml:649
214+#: qml/Dash/GenericScopeView.qml:627
215msgctxt "Label: Hint for dash search line edit"
215msgctxt "Label: Hint for dash search line edit"
216msgid "Search"
216msgid "Search"
217msgstr "Пошук"
217msgstr "Пошук"
@@ -434,14 +434,6 @@ msgctxt "Button: Call back on phone"
434msgid "Call back"
434msgid "Call back"
435msgstr "Зворотний виклик"
435msgstr "Зворотний виклик"
436
436
437−#: qml/Panel/Indicators/ModemInfoItem.qml:105
438−msgid "Unlock SIM"
439−msgstr "Розблокувати SIM"
440−
441−#: qml/Panel/Indicators/RoamingIndication.qml:27
442−msgid "Roaming"
443−msgstr "Роумінг"
444−
445#: qml/Tutorial/TutorialBottom.qml:28
437#: qml/Tutorial/TutorialBottom.qml:28
446msgid "Open special menus"
438msgid "Open special menus"
447msgstr "Відкрити спеціальні меню"
439msgstr "Відкрити спеціальні меню"
@@ -506,7 +498,7 @@ msgstr "Привіт!"
506
498
507#: qml/Wizard/Pages/10-welcome.qml:44
499#: qml/Wizard/Pages/10-welcome.qml:44
508msgid "Welcome to your Ubuntu device."
500msgid "Welcome to your Ubuntu device."
509−msgstr ""
501+msgstr "Вітаємо у вашому пристрої Ubuntu."
510
502
511#: qml/Wizard/Pages/10-welcome.qml:52
503#: qml/Wizard/Pages/10-welcome.qml:52
512msgid "Let’s get started."
504msgid "Let’s get started."
@@ -537,7 +529,7 @@ msgstr "Захист блокування"
537
529
538#: qml/Wizard/Pages/30-passwd-type.qml:79
530#: qml/Wizard/Pages/30-passwd-type.qml:79
539msgid "Please select how you’d like to unlock your device."
531msgid "Please select how you’d like to unlock your device."
540−msgstr ""
532+msgstr "Будь ласка, виберіть спосіб розблокування вашого пристрою."
541
533
542#: qml/Wizard/Pages/30-passwd-type.qml:102
534#: qml/Wizard/Pages/30-passwd-type.qml:102
543msgctxt "Label: Type of security method"
535msgctxt "Label: Type of security method"
@@ -647,7 +639,7 @@ msgstr "Чудова робота!"
647
639
648#: qml/Wizard/Pages/80-finished.qml:46
640#: qml/Wizard/Pages/80-finished.qml:46
649msgid "Your device is now ready to use."
641msgid "Your device is now ready to use."
650−msgstr ""
642+msgstr "Пристрій готовий до використання."
651
643
652#: qml/Wizard/Pages/80-finished.qml:53
644#: qml/Wizard/Pages/80-finished.qml:53
653msgid "Finish"
645msgid "Finish"
@@ -751,6 +743,9 @@ msgstr "%1 〉"
751#~ msgid "All"
743#~ msgid "All"
752#~ msgstr "Все"
744#~ msgstr "Все"
753
745
746+#~ msgid "Unlock SIM"
747+#~ msgstr "Розблокувати SIM"
748+
754#~ msgid "Favorites"
749#~ msgid "Favorites"
755#~ msgstr "Улюблене"
750#~ msgstr "Улюблене"
756
751
@@ -763,6 +758,9 @@ msgstr "%1 〉"
763#~ msgid "Done"
758#~ msgid "Done"
764#~ msgstr "Виконано"
759#~ msgstr "Виконано"
765
760
761+#~ msgid "Roaming"
762+#~ msgstr "Роумінг"
763+
766#~ msgid "Log out"
764#~ msgid "Log out"
767#~ msgstr "Вийти"
765#~ msgstr "Вийти"
768
766
po/unity8.pot+34−40
@@ -8,7 +8,7 @@ msgid ""
8msgstr ""
8msgstr ""
9"Project-Id-Version: unity8\n"
9"Project-Id-Version: unity8\n"
10"Report-Msgid-Bugs-To: \n"
10"Report-Msgid-Bugs-To: \n"
11−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
11+"POT-Creation-Date: 2016-03-10 22:48+0000\n"
12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14"Language-Team: LANGUAGE <LL@li.org>\n"
14"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -22,16 +22,16 @@ msgstr ""
22msgid "Password: "
22msgid "Password: "
23msgstr ""
23msgstr ""
24
24
25−#: plugins/Unity/Launcher/launcheritem.cpp:47
25+#: plugins/Unity/Launcher/launcheritem.cpp:48
26−#: plugins/Unity/Launcher/launcheritem.cpp:106
26+#: plugins/Unity/Launcher/launcheritem.cpp:107
27msgid "Pin shortcut"
27msgid "Pin shortcut"
28msgstr ""
28msgstr ""
29
29
30−#: plugins/Unity/Launcher/launcheritem.cpp:52
30+#: plugins/Unity/Launcher/launcheritem.cpp:53
31msgid "Quit"
31msgid "Quit"
32msgstr ""
32msgstr ""
33
33
34−#: plugins/Unity/Launcher/launcheritem.cpp:106
34+#: plugins/Unity/Launcher/launcheritem.cpp:107
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr ""
36msgstr ""
37
37
@@ -135,15 +135,15 @@ msgctxt "Button: Restart the system"
135msgid "Restart"
135msgid "Restart"
136msgstr ""
136msgstr ""
137
137
138−#: qml/Components/Lockscreen.qml:245
138+#: qml/Components/Lockscreen.qml:231
139msgid "Return to Call"
139msgid "Return to Call"
140msgstr ""
140msgstr ""
141
141
142−#: qml/Components/Lockscreen.qml:245
142+#: qml/Components/Lockscreen.qml:231
143msgid "Emergency Call"
143msgid "Emergency Call"
144msgstr ""
144msgstr ""
145
145
146−#: qml/Components/Lockscreen.qml:277
146+#: qml/Components/Lockscreen.qml:263
147msgid "OK"
147msgid "OK"
148msgstr ""
148msgstr ""
149
149
@@ -152,6 +152,8 @@ msgid "Apps may have unsaved data:"
152msgstr ""
152msgstr ""
153
153
154#: qml/Components/ModeSwitchWarningDialog.qml:57
154#: qml/Components/ModeSwitchWarningDialog.qml:57
155+msgctxt ""
156+"Re-dock means connect the device again to an external screen/mouse/keyboard"
155msgid "Re-dock, save your work and close these apps to continue."
157msgid "Re-dock, save your work and close these apps to continue."
156msgstr ""
158msgstr ""
157
159
@@ -171,38 +173,38 @@ msgstr ""
171msgid "Close all"
173msgid "Close all"
172msgstr ""
174msgstr ""
173
175
174−#: qml/Dash/DashPageHeader.qml:266
176+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
177msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
178msgid "Store"
177msgstr ""
179msgstr ""
178
180
179−#: qml/Dash/DashPageHeader.qml:273
181+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
182msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
183msgid "Search"
182msgstr ""
184msgstr ""
183
185
184−#: qml/Dash/DashPageHeader.qml:283
186+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
187msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
188msgid "Settings"
187msgstr ""
189msgstr ""
188
190
189−#: qml/Dash/DashPageHeader.qml:290
191+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
192msgid "Remove from Favorites"
191msgstr ""
193msgstr ""
192
194
193−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
196msgid "Add to Favorites"
195msgstr ""
197msgstr ""
196
198
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
199+#: qml/Dash/GenericScopeView.qml:567 qml/Dash/GenericScopeView.qml:725
198msgid "See less"
200msgid "See less"
199msgstr ""
201msgstr ""
200
202
201−#: qml/Dash/GenericScopeView.qml:587
203+#: qml/Dash/GenericScopeView.qml:567
202msgid "See all"
204msgid "See all"
203msgstr ""
205msgstr ""
204
206
205−#: qml/Dash/GenericScopeView.qml:649
207+#: qml/Dash/GenericScopeView.qml:629
206msgctxt "Label: Hint for dash search line edit"
208msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
209msgid "Search"
208msgstr ""
210msgstr ""
@@ -228,7 +230,7 @@ msgstr ""
228msgid "Add a review"
230msgid "Add a review"
229msgstr ""
231msgstr ""
230
232
231−#: qml/Dash/Previews/PreviewSharing.qml:50
233+#: qml/Dash/Previews/PreviewSharing.qml:66
232msgid "Preview Share Item"
234msgid "Preview Share Item"
233msgstr ""
235msgstr ""
234
236
@@ -256,13 +258,13 @@ msgstr ""
256msgid "Also installed"
258msgid "Also installed"
257msgstr ""
259msgstr ""
258
260
259−#: qml/DisabledScreenNotice.qml:87
261+#: qml/DisabledScreenNotice.qml:104
260msgid ""
262msgid ""
261"Your device is now connected to an external display. Use this screen as a "
263"Your device is now connected to an external display. Use this screen as a "
262−"touch pad to interact with the mouse."
264+"touch pad to interact with the pointer."
263msgstr ""
265msgstr ""
264
266
265−#: qml/Greeter/CoverPage.qml:107
267+#: qml/Greeter/CoverPage.qml:118
266msgid "Unlock"
268msgid "Unlock"
267msgstr ""
269msgstr ""
268
270
@@ -341,62 +343,62 @@ msgstr ""
341msgid "Conference"
343msgid "Conference"
342msgstr ""
344msgstr ""
343
345
344−#: qml/Panel/Indicators/MenuItemFactory.qml:753
346+#: qml/Panel/Indicators/MenuItemFactory.qml:752
345msgid "Nothing is playing"
347msgid "Nothing is playing"
346msgstr ""
348msgstr ""
347
349
348−#: qml/Panel/Indicators/MenuItemFactory.qml:882
350+#: qml/Panel/Indicators/MenuItemFactory.qml:881
349#, qt-format
351#, qt-format
350msgid "%1 hour"
352msgid "%1 hour"
351msgid_plural "%1 hours"
353msgid_plural "%1 hours"
352msgstr[0] ""
354msgstr[0] ""
353msgstr[1] ""
355msgstr[1] ""
354
356
355−#: qml/Panel/Indicators/MenuItemFactory.qml:886
357+#: qml/Panel/Indicators/MenuItemFactory.qml:885
356#, qt-format
358#, qt-format
357msgid "%1 minute"
359msgid "%1 minute"
358msgid_plural "%1 minutes"
360msgid_plural "%1 minutes"
359msgstr[0] ""
361msgstr[0] ""
360msgstr[1] ""
362msgstr[1] ""
361
363
362−#: qml/Panel/Indicators/MenuItemFactory.qml:891
364+#: qml/Panel/Indicators/MenuItemFactory.qml:890
363#, qt-format
365#, qt-format
364msgid "%1 second"
366msgid "%1 second"
365msgid_plural "%1 seconds"
367msgid_plural "%1 seconds"
366msgstr[0] ""
368msgstr[0] ""
367msgstr[1] ""
369msgstr[1] ""
368
370
369−#: qml/Panel/Indicators/MenuItemFactory.qml:894
371+#: qml/Panel/Indicators/MenuItemFactory.qml:893
370msgid "0 seconds"
372msgid "0 seconds"
371msgstr ""
373msgstr ""
372
374
373#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
375#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
374−#: qml/Panel/Indicators/MenuItemFactory.qml:896
376+#: qml/Panel/Indicators/MenuItemFactory.qml:895
375#, qt-format
377#, qt-format
376msgid "%1 remaining"
378msgid "%1 remaining"
377msgstr ""
379msgstr ""
378
380
379−#: qml/Panel/Indicators/MenuItemFactory.qml:902
381+#: qml/Panel/Indicators/MenuItemFactory.qml:901
380msgid "In queue…"
382msgid "In queue…"
381msgstr ""
383msgstr ""
382
384
383−#: qml/Panel/Indicators/MenuItemFactory.qml:906
385+#: qml/Panel/Indicators/MenuItemFactory.qml:905
384msgid "Downloading"
386msgid "Downloading"
385msgstr ""
387msgstr ""
386
388
387−#: qml/Panel/Indicators/MenuItemFactory.qml:908
389+#: qml/Panel/Indicators/MenuItemFactory.qml:907
388msgid "Paused, tap to resume"
390msgid "Paused, tap to resume"
389msgstr ""
391msgstr ""
390
392
391−#: qml/Panel/Indicators/MenuItemFactory.qml:910
393+#: qml/Panel/Indicators/MenuItemFactory.qml:909
392msgid "Canceled"
394msgid "Canceled"
393msgstr ""
395msgstr ""
394
396
395−#: qml/Panel/Indicators/MenuItemFactory.qml:912
397+#: qml/Panel/Indicators/MenuItemFactory.qml:911
396msgid "Finished"
398msgid "Finished"
397msgstr ""
399msgstr ""
398
400
399−#: qml/Panel/Indicators/MenuItemFactory.qml:914
401+#: qml/Panel/Indicators/MenuItemFactory.qml:913
400msgid "Failed, tap to retry"
402msgid "Failed, tap to retry"
401msgstr ""
403msgstr ""
402
404
@@ -416,14 +418,6 @@ msgctxt "Button: Call back on phone"
416msgid "Call back"
418msgid "Call back"
417msgstr ""
419msgstr ""
418
420
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427#: qml/Tutorial/TutorialBottom.qml:28
421#: qml/Tutorial/TutorialBottom.qml:28
428msgid "Open special menus"
422msgid "Open special menus"
429msgstr ""
423msgstr ""
po/ur.po+11−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-05-05 03:12+0000\n"
11"PO-Revision-Date: 2015-05-05 03:12+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Urdu <ur@li.org>\n"
13"Language-Team: Urdu <ur@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171msgid "Close all"
171msgid "Close all"
172msgstr ""
172msgstr ""
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177msgstr ""
177msgstr ""
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr ""
182msgstr ""
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr ""
187msgstr ""
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr ""
191msgstr ""
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr ""
195msgstr ""
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr ""
199msgstr ""
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr ""
203msgstr ""
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr ""
208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416msgid "Call back"
416msgid "Call back"
417msgstr ""
417msgstr ""
418
418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427#: qml/Tutorial/TutorialBottom.qml:28
419#: qml/Tutorial/TutorialBottom.qml:28
428msgid "Open special menus"
420msgid "Open special menus"
429msgstr ""
421msgstr ""
po/uz.po+11−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-07-04 16:03+0000\n"
11"PO-Revision-Date: 2015-07-04 16:03+0000\n"
12"Last-Translator: Learner <muzaffar.habibullayev@yandex.ru>\n"
12"Last-Translator: Learner <muzaffar.habibullayev@yandex.ru>\n"
13"Language-Team: Uzbek <uz@li.org>\n"
13"Language-Team: Uzbek <uz@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171msgid "Close all"
171msgid "Close all"
172msgstr ""
172msgstr ""
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177msgstr ""
177msgstr ""
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr ""
182msgstr ""
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr ""
187msgstr ""
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr ""
191msgstr ""
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr ""
195msgstr ""
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr ""
199msgstr ""
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr ""
203msgstr ""
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr ""
208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416msgid "Call back"
416msgid "Call back"
417msgstr ""
417msgstr ""
418
418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427#: qml/Tutorial/TutorialBottom.qml:28
419#: qml/Tutorial/TutorialBottom.qml:28
428msgid "Open special menus"
420msgid "Open special menus"
429msgstr ""
421msgstr ""
po/vi.po+11−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2014-01-15 01:19+0000\n"
11"PO-Revision-Date: 2014-01-15 01:19+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Vietnamese <vi@li.org>\n"
13"Language-Team: Vietnamese <vi@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171msgid "Close all"
171msgid "Close all"
172msgstr ""
172msgstr ""
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177msgstr ""
177msgstr ""
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr ""
182msgstr ""
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr ""
187msgstr ""
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr ""
191msgstr ""
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr ""
195msgstr ""
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr ""
199msgstr ""
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr ""
203msgstr ""
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr ""
208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416msgid "Call back"
416msgid "Call back"
417msgstr ""
417msgstr ""
418
418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427#: qml/Tutorial/TutorialBottom.qml:28
419#: qml/Tutorial/TutorialBottom.qml:28
428msgid "Open special menus"
420msgid "Open special menus"
429msgstr ""
421msgstr ""
po/wo.po+17−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-10-29 11:16+0000\n"
11"PO-Revision-Date: 2015-10-29 11:16+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Wolof <wo@li.org>\n"
13"Language-Team: Wolof <wo@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171msgid "Close all"
171msgid "Close all"
172msgstr ""
172msgstr ""
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177msgstr "Ja"
177msgstr "Ja"
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr "Seet"
182msgstr "Seet"
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr "Jekkal"
187msgstr "Jekkal"
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr "Dindee ci Tànneef yi"
191msgstr "Dindee ci Tànneef yi"
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr "Yokk ci Tànneef yi"
195msgstr "Yokk ci Tànneef yi"
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr "Gis lu néew"
199msgstr "Gis lu néew"
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr "Gis lépp"
203msgstr "Gis lépp"
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr "Seet"
208msgstr "Seet"
@@ -420,14 +420,6 @@ msgctxt "Button: Call back on phone"
420msgid "Call back"
420msgid "Call back"
421msgstr ""
421msgstr ""
422
422
423−#: qml/Panel/Indicators/ModemInfoItem.qml:105
424−msgid "Unlock SIM"
425−msgstr "Tijji SIM"
426−
427−#: qml/Panel/Indicators/RoamingIndication.qml:27
428−msgid "Roaming"
429−msgstr "Roaming"
430−
431#: qml/Tutorial/TutorialBottom.qml:28
423#: qml/Tutorial/TutorialBottom.qml:28
432msgid "Open special menus"
424msgid "Open special menus"
433msgstr "Open njëli jagleel"
425msgstr "Open njëli jagleel"
@@ -755,6 +747,12 @@ msgstr "%1 〉"
755#~ msgid "Confirm"
747#~ msgid "Confirm"
756#~ msgstr "Dëggal"
748#~ msgstr "Dëggal"
757
749
750+#~ msgid "Unlock SIM"
751+#~ msgstr "Tijji SIM"
752+
753+#~ msgid "Roaming"
754+#~ msgstr "Roaming"
755+
758#~ msgid "Please re-enter"
756#~ msgid "Please re-enter"
759#~ msgstr "Di la ñaan nga duggalaat"
757#~ msgstr "Di la ñaan nga duggalaat"
760
758
po/xh.po+11−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2013-09-28 13:20+0000\n"
11"PO-Revision-Date: 2013-09-28 13:20+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Xhosa <xh@li.org>\n"
13"Language-Team: Xhosa <xh@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171msgid "Close all"
171msgid "Close all"
172msgstr ""
172msgstr ""
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177msgstr ""
177msgstr ""
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr ""
182msgstr ""
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr ""
187msgstr ""
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr ""
191msgstr ""
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr ""
195msgstr ""
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr ""
199msgstr ""
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr ""
203msgstr ""
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr ""
208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416msgid "Call back"
416msgid "Call back"
417msgstr ""
417msgstr ""
418
418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427#: qml/Tutorial/TutorialBottom.qml:28
419#: qml/Tutorial/TutorialBottom.qml:28
428msgid "Open special menus"
420msgid "Open special menus"
429msgstr ""
421msgstr ""
po/zh_CN.po+20−22
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2015-07-27 10:26+0000\n"
11"PO-Revision-Date: 2015-07-27 10:26+0000\n"
12"Last-Translator: Ian Li <Unknown>\n"
12"Last-Translator: Ian Li <Unknown>\n"
13"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
13"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -172,38 +172,38 @@ msgstr "即刻重新连接!"
172msgid "Close all"
172msgid "Close all"
173msgstr "关闭所有"
173msgstr "关闭所有"
174
174
175−#: qml/Dash/DashPageHeader.qml:266
175+#: qml/Dash/DashPageHeader.qml:270
176msgctxt "Button: Open the Ubuntu Store"
176msgctxt "Button: Open the Ubuntu Store"
177msgid "Store"
177msgid "Store"
178msgstr "商店"
178msgstr "商店"
179
179
180−#: qml/Dash/DashPageHeader.qml:273
180+#: qml/Dash/DashPageHeader.qml:277
181msgctxt "Button: Start a search in the current dash scope"
181msgctxt "Button: Start a search in the current dash scope"
182msgid "Search"
182msgid "Search"
183msgstr "搜索"
183msgstr "搜索"
184
184
185−#: qml/Dash/DashPageHeader.qml:283
185+#: qml/Dash/DashPageHeader.qml:287
186msgctxt "Button: Show the current dash scope settings"
186msgctxt "Button: Show the current dash scope settings"
187msgid "Settings"
187msgid "Settings"
188msgstr "设置"
188msgstr "设置"
189
189
190−#: qml/Dash/DashPageHeader.qml:290
190+#: qml/Dash/DashPageHeader.qml:294
191msgid "Remove from Favorites"
191msgid "Remove from Favorites"
192msgstr "从收藏夹中移除"
192msgstr "从收藏夹中移除"
193
193
194−#: qml/Dash/DashPageHeader.qml:290
194+#: qml/Dash/DashPageHeader.qml:294
195msgid "Add to Favorites"
195msgid "Add to Favorites"
196msgstr "添加到收藏夹"
196msgstr "添加到收藏夹"
197
197
198−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
198+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
199msgid "See less"
199msgid "See less"
200msgstr "显示更少"
200msgstr "显示更少"
201
201
202−#: qml/Dash/GenericScopeView.qml:587
202+#: qml/Dash/GenericScopeView.qml:565
203msgid "See all"
203msgid "See all"
204msgstr "查看全部"
204msgstr "查看全部"
205
205
206−#: qml/Dash/GenericScopeView.qml:649
206+#: qml/Dash/GenericScopeView.qml:627
207msgctxt "Label: Hint for dash search line edit"
207msgctxt "Label: Hint for dash search line edit"
208msgid "Search"
208msgid "Search"
209msgstr "搜索"
209msgstr "搜索"
@@ -414,14 +414,6 @@ msgctxt "Button: Call back on phone"
414msgid "Call back"
414msgid "Call back"
415msgstr "回电"
415msgstr "回电"
416
416
417−#: qml/Panel/Indicators/ModemInfoItem.qml:105
418−msgid "Unlock SIM"
419−msgstr "解开 SIM"
420−
421−#: qml/Panel/Indicators/RoamingIndication.qml:27
422−msgid "Roaming"
423−msgstr "漫游"
424−
425#: qml/Tutorial/TutorialBottom.qml:28
417#: qml/Tutorial/TutorialBottom.qml:28
426msgid "Open special menus"
418msgid "Open special menus"
427msgstr "打开专题菜单"
419msgstr "打开专题菜单"
@@ -486,7 +478,7 @@ msgstr "您好!"
486
478
487#: qml/Wizard/Pages/10-welcome.qml:44
479#: qml/Wizard/Pages/10-welcome.qml:44
488msgid "Welcome to your Ubuntu device."
480msgid "Welcome to your Ubuntu device."
489−msgstr ""
481+msgstr "欢迎使用您的Ubuntu设备。"
490
482
491#: qml/Wizard/Pages/10-welcome.qml:52
483#: qml/Wizard/Pages/10-welcome.qml:52
492msgid "Let’s get started."
484msgid "Let’s get started."
@@ -517,7 +509,7 @@ msgstr "锁屏安全设定"
517
509
518#: qml/Wizard/Pages/30-passwd-type.qml:79
510#: qml/Wizard/Pages/30-passwd-type.qml:79
519msgid "Please select how you’d like to unlock your device."
511msgid "Please select how you’d like to unlock your device."
520−msgstr ""
512+msgstr "请选择你偏好的设备解锁方式。"
521
513
522#: qml/Wizard/Pages/30-passwd-type.qml:102
514#: qml/Wizard/Pages/30-passwd-type.qml:102
523msgctxt "Label: Type of security method"
515msgctxt "Label: Type of security method"
@@ -618,7 +610,7 @@ msgstr "干得好!"
618
610
619#: qml/Wizard/Pages/80-finished.qml:46
611#: qml/Wizard/Pages/80-finished.qml:46
620msgid "Your device is now ready to use."
612msgid "Your device is now ready to use."
621−msgstr ""
613+msgstr "您的设备已就绪。"
622
614
623#: qml/Wizard/Pages/80-finished.qml:53
615#: qml/Wizard/Pages/80-finished.qml:53
624msgid "Finish"
616msgid "Finish"
@@ -717,6 +709,9 @@ msgstr "%1 〉"
717#~ msgid "All"
709#~ msgid "All"
718#~ msgstr "所有"
710#~ msgstr "所有"
719
711
712+#~ msgid "Unlock SIM"
713+#~ msgstr "解开 SIM"
714+
720#~ msgid "Favorites"
715#~ msgid "Favorites"
721#~ msgstr "收藏夹"
716#~ msgstr "收藏夹"
722
717
@@ -729,6 +724,9 @@ msgstr "%1 〉"
729#~ msgid "Done"
724#~ msgid "Done"
730#~ msgstr "完成"
725#~ msgstr "完成"
731
726
727+#~ msgid "Roaming"
728+#~ msgstr "漫游"
729+
732#~ msgid "Please re-enter"
730#~ msgid "Please re-enter"
733#~ msgstr "请重新输入"
731#~ msgstr "请重新输入"
734
732
po/zh_HK.po+11−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11"PO-Revision-Date: 2014-08-10 11:45+0000\n"
11"PO-Revision-Date: 2014-08-10 11:45+0000\n"
12"Last-Translator: Daniel Cheung <daniel.2345@hotmail.com>\n"
12"Last-Translator: Daniel Cheung <daniel.2345@hotmail.com>\n"
13"Language-Team: Chinese (Hong Kong) <zh_HK@li.org>\n"
13"Language-Team: Chinese (Hong Kong) <zh_HK@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171msgid "Close all"
171msgid "Close all"
172msgstr ""
172msgstr ""
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177msgstr ""
177msgstr ""
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr ""
182msgstr ""
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr ""
187msgstr ""
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr ""
191msgstr ""
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr ""
195msgstr ""
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr "縮減查看"
199msgstr "縮減查看"
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr "查看全部"
203msgstr "查看全部"
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr ""
208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416msgid "Call back"
416msgid "Call back"
417msgstr ""
417msgstr ""
418
418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427#: qml/Tutorial/TutorialBottom.qml:28
419#: qml/Tutorial/TutorialBottom.qml:28
428msgid "Open special menus"
420msgid "Open special menus"
429msgstr ""
421msgstr ""
po/zh_TW.po+22−24
@@ -7,16 +7,16 @@ msgid ""
7msgstr ""
7msgstr ""
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: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11−"PO-Revision-Date: 2015-07-31 09:29+0000\n"
11+"PO-Revision-Date: 2016-02-24 04:40+0000\n"
12"Last-Translator: Po-Hsu Lin <po-hsu.lin@canonical.com>\n"
12"Last-Translator: Po-Hsu Lin <po-hsu.lin@canonical.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: 2016-02-16 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
19+"X-Generator: Launchpad (build 17936)\n"
20"Language: zh_TW\n"
20"Language: zh_TW\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -171,38 +171,38 @@ msgstr "即刻重新連線!"
171msgid "Close all"
171msgid "Close all"
172msgstr "全部關閉"
172msgstr "全部關閉"
173
173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175msgctxt "Button: Open the Ubuntu Store"
175msgctxt "Button: Open the Ubuntu Store"
176msgid "Store"
176msgid "Store"
177msgstr "商城"
177msgstr "商城"
178
178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180msgctxt "Button: Start a search in the current dash scope"
180msgctxt "Button: Start a search in the current dash scope"
181msgid "Search"
181msgid "Search"
182msgstr "搜尋"
182msgstr "搜尋"
183
183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185msgctxt "Button: Show the current dash scope settings"
185msgctxt "Button: Show the current dash scope settings"
186msgid "Settings"
186msgid "Settings"
187msgstr "設定"
187msgstr "設定"
188
188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190msgid "Remove from Favorites"
190msgid "Remove from Favorites"
191msgstr "自「最愛」移除"
191msgstr "自「最愛」移除"
192
192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194msgid "Add to Favorites"
194msgid "Add to Favorites"
195msgstr "加入到「最愛」"
195msgstr "加入到「最愛」"
196
196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198msgid "See less"
198msgid "See less"
199msgstr "縮減查看"
199msgstr "縮減查看"
200
200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202msgid "See all"
202msgid "See all"
203msgstr "查看全部"
203msgstr "查看全部"
204
204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206msgctxt "Label: Hint for dash search line edit"
206msgctxt "Label: Hint for dash search line edit"
207msgid "Search"
207msgid "Search"
208msgstr "搜尋"
208msgstr "搜尋"
@@ -401,7 +401,7 @@ msgstr "失敗,點按可重試"
401#: qml/Panel/Indicators/MessageMenuItemFactory.qml:214
401#: qml/Panel/Indicators/MessageMenuItemFactory.qml:214
402msgctxt "Button: Send a reply message"
402msgctxt "Button: Send a reply message"
403msgid "Send"
403msgid "Send"
404−msgstr ""
404+msgstr "傳送"
405
405
406#: qml/Panel/Indicators/MessageMenuItemFactory.qml:156
406#: qml/Panel/Indicators/MessageMenuItemFactory.qml:156
407msgctxt "Label: Hint in message indicator line edit"
407msgctxt "Label: Hint in message indicator line edit"
@@ -413,14 +413,6 @@ msgctxt "Button: Call back on phone"
413msgid "Call back"
413msgid "Call back"
414msgstr "回撥"
414msgstr "回撥"
415
415
416−#: qml/Panel/Indicators/ModemInfoItem.qml:105
417−msgid "Unlock SIM"
418−msgstr "解鎖 SIM 卡"
419−
420−#: qml/Panel/Indicators/RoamingIndication.qml:27
421−msgid "Roaming"
422−msgstr "漫遊"
423−
424#: qml/Tutorial/TutorialBottom.qml:28
416#: qml/Tutorial/TutorialBottom.qml:28
425msgid "Open special menus"
417msgid "Open special menus"
426msgstr "開啟特殊選單"
418msgstr "開啟特殊選單"
@@ -485,7 +477,7 @@ msgstr "您好!"
485
477
486#: qml/Wizard/Pages/10-welcome.qml:44
478#: qml/Wizard/Pages/10-welcome.qml:44
487msgid "Welcome to your Ubuntu device."
479msgid "Welcome to your Ubuntu device."
488−msgstr ""
480+msgstr "歡迎使用您的 Ubuntu 裝置"
489
481
490#: qml/Wizard/Pages/10-welcome.qml:52
482#: qml/Wizard/Pages/10-welcome.qml:52
491msgid "Let’s get started."
483msgid "Let’s get started."
@@ -516,7 +508,7 @@ msgstr "安全鎖"
516
508
517#: qml/Wizard/Pages/30-passwd-type.qml:79
509#: qml/Wizard/Pages/30-passwd-type.qml:79
518msgid "Please select how you’d like to unlock your device."
510msgid "Please select how you’d like to unlock your device."
519−msgstr ""
511+msgstr "請選擇您想要的裝置解鎖方式。"
520
512
521#: qml/Wizard/Pages/30-passwd-type.qml:102
513#: qml/Wizard/Pages/30-passwd-type.qml:102
522msgctxt "Label: Type of security method"
514msgctxt "Label: Type of security method"
@@ -617,7 +609,7 @@ msgstr "做得漂亮!"
617
609
618#: qml/Wizard/Pages/80-finished.qml:46
610#: qml/Wizard/Pages/80-finished.qml:46
619msgid "Your device is now ready to use."
611msgid "Your device is now ready to use."
620−msgstr ""
612+msgstr "您的裝置已準備就緒。"
621
613
622#: qml/Wizard/Pages/80-finished.qml:53
614#: qml/Wizard/Pages/80-finished.qml:53
623msgid "Finish"
615msgid "Finish"
@@ -743,12 +735,18 @@ msgstr "%1 〉"
743#~ msgid "Done"
735#~ msgid "Done"
744#~ msgstr "完成"
736#~ msgstr "完成"
745
737
738+#~ msgid "Roaming"
739+#~ msgstr "漫遊"
740+
746#~ msgid "Restart"
741#~ msgid "Restart"
747#~ msgstr "重新啟動"
742#~ msgstr "重新啟動"
748
743
749#~ msgid "Please re-enter"
744#~ msgid "Please re-enter"
750#~ msgstr "請再輸入"
745#~ msgstr "請再輸入"
751
746
747+#~ msgid "Unlock SIM"
748+#~ msgstr "解鎖 SIM 卡"
749+
752#~ msgid "Welcome to your Ubuntu phone."
750#~ msgid "Welcome to your Ubuntu phone."
753#~ msgstr "歡迎使用您的 Ubuntu 手機。"
751#~ msgstr "歡迎使用您的 Ubuntu 手機。"
754
752
qml/Components/EdgeBarrier.qml+1−1
@@ -105,7 +105,7 @@ Item {
105 },
105 },
106 Transition {
106 Transition {
107 from: "resisting"; to: "passed"
107 from: "resisting"; to: "passed"
108− UbuntuNumberAnimation { target: materialContainer; property: "opacity" }
108+ UbuntuNumberAnimation { duration: UbuntuAnimation.BriskDuration; target: materialContainer; property: "opacity" }
109 }
109 }
110 ]
110 ]
111}
111}
qml/Components/Header.qml+1
@@ -18,6 +18,7 @@ import Ubuntu.Components 1.3
18import Ubuntu.Components.Themes.Ambiance 1.3
18import Ubuntu.Components.Themes.Ambiance 1.3
19
19
20PageHeadStyle {
20PageHeadStyle {
21+ // FIXME: Don't use this but PageHeader from Ubuntu.Components 1.3.
21 id: root
22 id: root
22
23
23 property var styledItem: root
24 property var styledItem: root
qml/Components/InputMethod.qml+1−9
@@ -22,15 +22,6 @@ import Ubuntu.Gestures 0.1
22Item {
22Item {
23 id: root
23 id: root
24
24
25− Connections {
26− target: SurfaceManager
27− onSurfaceCreated: {
28− if (surface.type == Mir.InputMethodType) {
29− surfaceItem.surface = surface;
30− }
31− }
32− }
33−
34 property int transitionDuration: UbuntuAnimation.FastDuration
25 property int transitionDuration: UbuntuAnimation.FastDuration
35
26
36 MirSurfaceItem {
27 MirSurfaceItem {
@@ -41,6 +32,7 @@ Item {
41
32
42 surfaceWidth: width
33 surfaceWidth: width
43 surfaceHeight: height
34 surfaceHeight: height
35+ surface: SurfaceManager.inputMethodSurface
44
36
45 onLiveChanged: {
37 onLiveChanged: {
46 if (surface !== null && !live) {
38 if (surface !== null && !live) {
qml/Components/Lockscreen.qml+80−94
@@ -121,108 +121,94 @@ Showable {
121 opacity: root.darkenBackground
121 opacity: root.darkenBackground
122 }
122 }
123
123
124− MouseArea {
124+ Loader {
125− anchors.fill: root
125+ id: pinPadLoader
126− onClicked: {
126+ objectName: "pinPadLoader"
127− if (pinPadLoader.item)
128− pinPadLoader.item.forceActiveFocus()
129− }
130− }
131−
132− FocusScope {
133− id: loaderScope
134 anchors.fill: parent
127 anchors.fill: parent
135−
128+ property bool resetting: false
136− Loader {
129+ property bool waiting: false
137− id: pinPadLoader
130+ property bool showWrongText: false
138− objectName: "pinPadLoader"
131+ focus: true
139− anchors.fill: parent
132+
140− property bool resetting: false
133+ source: {
141− property bool waiting: false
134+ if (resetting || !root.required) {
142− property bool showWrongText: false
135+ return ""
143−
136+ } else if (root.delayMinutes > 0) {
144− source: {
137+ return "DelayedLockscreen.qml"
145− if (resetting || !root.required) {
138+ } else if (root.alphaNumeric) {
146− return ""
139+ return "PassphraseLockscreen.qml"
147− } else if (root.delayMinutes > 0) {
140+ } else {
148− return "DelayedLockscreen.qml"
141+ return "PinLockscreen.qml"
149− } else if (root.alphaNumeric) {
150− return "PassphraseLockscreen.qml"
151− } else {
152− return "PinLockscreen.qml"
153− }
154− }
155− onSourceChanged: {
156− waiting = false
157− showWrongText = false
158− if (loaderScope.activeFocus && pinPadLoader.item)
159− pinPadLoader.item.forceActiveFocus()
160 }
142 }
143+ }
144+ onSourceChanged: {
145+ waiting = false
146+ showWrongText = false
147+ }
161
148
162− Connections {
149+ Connections {
163− target: pinPadLoader.item
150+ target: pinPadLoader.item
164−
165− onEntered: {
166− pinPadLoader.waiting = true
167− root.entered(passphrase);
168− }
169
151
170− onCancel: {
152+ onEntered: {
171− root.cancel()
153+ pinPadLoader.waiting = true
172− }
154+ root.entered(passphrase);
173 }
155 }
174
156
175− Binding {
157+ onCancel: {
176− target: pinPadLoader.item
158+ root.cancel()
177− property: "minPinLength"
178− value: root.minPinLength
179− }
180− Binding {
181− target: pinPadLoader.item
182− property: "maxPinLength"
183− value: root.maxPinLength
184− }
185− Binding {
186− target: pinPadLoader.item
187− property: "infoText"
188− value: root.infoText
189− }
190− Binding {
191− target: pinPadLoader.item
192− property: "retryText"
193− value: root.retryText
194− }
195− Binding {
196− target: pinPadLoader.item
197− property: "errorText"
198− value: pinPadLoader.showWrongText ? root.errorText : ""
199− }
200− Binding {
201− target: pinPadLoader.item
202− property: "entryEnabled"
203− value: !pinPadLoader.waiting
204− }
205− Binding {
206− target: pinPadLoader.item
207− property: "alphaNumeric"
208− value: root.alphaNumeric
209− }
210− Binding {
211− target: pinPadLoader.item
212− property: "delayMinutes"
213− value: root.delayMinutes
214− }
215− Binding {
216− target: pinPadLoader.item
217− property: "showCancelButton"
218− value: root.showCancelButton
219− }
220− Binding {
221− target: pinPadLoader.item
222− property: "foregroundColor"
223− value: root.foregroundColor
224 }
159 }
225 }
160 }
161+
162+ Binding {
163+ target: pinPadLoader.item
164+ property: "minPinLength"
165+ value: root.minPinLength
166+ }
167+ Binding {
168+ target: pinPadLoader.item
169+ property: "maxPinLength"
170+ value: root.maxPinLength
171+ }
172+ Binding {
173+ target: pinPadLoader.item
174+ property: "infoText"
175+ value: root.infoText
176+ }
177+ Binding {
178+ target: pinPadLoader.item
179+ property: "retryText"
180+ value: root.retryText
181+ }
182+ Binding {
183+ target: pinPadLoader.item
184+ property: "errorText"
185+ value: pinPadLoader.showWrongText ? root.errorText : ""
186+ }
187+ Binding {
188+ target: pinPadLoader.item
189+ property: "entryEnabled"
190+ value: !pinPadLoader.waiting
191+ }
192+ Binding {
193+ target: pinPadLoader.item
194+ property: "alphaNumeric"
195+ value: root.alphaNumeric
196+ }
197+ Binding {
198+ target: pinPadLoader.item
199+ property: "delayMinutes"
200+ value: root.delayMinutes
201+ }
202+ Binding {
203+ target: pinPadLoader.item
204+ property: "showCancelButton"
205+ value: root.showCancelButton
206+ }
207+ Binding {
208+ target: pinPadLoader.item
209+ property: "foregroundColor"
210+ value: root.foregroundColor
211+ }
226 }
212 }
227
213
228 Item {
214 Item {
qml/Components/ModeSwitchWarningDialog.qml+1−1
@@ -54,7 +54,7 @@ ShellDialog {
54 }
54 }
55
55
56 Label {
56 Label {
57− text: i18n.tr("Re-dock, save your work and close these apps to continue.")
57+ text: i18n.ctr("Re-dock means connect the device again to an external screen/mouse/keyboard", "Re-dock, save your work and close these apps to continue.")
58 wrapMode: Text.WordWrap
58 wrapMode: Text.WordWrap
59 color: "#888888"
59 color: "#888888"
60 }
60 }
qml/Components/PassphraseLockscreen.qml+5−4
@@ -18,10 +18,11 @@ import QtQuick 2.4
18import Ubuntu.Components 1.3
18import Ubuntu.Components 1.3
19import "../Components"
19import "../Components"
20
20
21−Item {
21+FocusScope {
22 id: root
22 id: root
23 y: units.gu(4)
23 y: units.gu(4)
24 height: shakeContainer.height
24 height: shakeContainer.height
25+ focus: true
25
26
26 property string infoText
27 property string infoText
27 property string errorText
28 property string errorText
@@ -42,8 +43,6 @@ Item {
42 }
43 }
43 }
44 }
44
45
45− onActiveFocusChanged: if (activeFocus) pinentryField.forceActiveFocus()
46−
47 Column {
46 Column {
48 id: shakeContainer
47 id: shakeContainer
49 anchors.horizontalCenter: parent.horizontalCenter
48 anchors.horizontalCenter: parent.horizontalCenter
@@ -59,14 +58,16 @@ Item {
59 text: root.infoText
58 text: root.infoText
60 }
59 }
61
60
62− Item {
61+ FocusScope {
63 id: entryContainer
62 id: entryContainer
64 anchors { left: parent.left; right: parent.right; margins: units.gu(2) }
63 anchors { left: parent.left; right: parent.right; margins: units.gu(2) }
65 height: units.gu(4)
64 height: units.gu(4)
65+ focus: true
66
66
67 TextInput {
67 TextInput {
68 id: pinentryField
68 id: pinentryField
69 objectName: "pinentryField"
69 objectName: "pinentryField"
70+ focus: true
70
71
71 property bool incorrectOverride: false
72 property bool incorrectOverride: false
72
73
qml/Components/PhysicalKeysMapper.qml+24
@@ -42,12 +42,15 @@ Item {
42 signal screenshotTriggered;
42 signal screenshotTriggered;
43
43
44 readonly property bool altTabPressed: d.altTabPressed
44 readonly property bool altTabPressed: d.altTabPressed
45+ readonly property bool superPressed: d.superPressed
46+ readonly property bool superTabPressed: d.superTabPressed
45
47
46 property int powerKeyLongPressTime: 2000
48 property int powerKeyLongPressTime: 2000
47
49
48 // For testing. If running windowed (e.g. tryShell), Alt+Tab is taken by the
50 // For testing. If running windowed (e.g. tryShell), Alt+Tab is taken by the
49 // running desktop, set this to true to use Ctrl+Tab instead.
51 // running desktop, set this to true to use Ctrl+Tab instead.
50 property bool controlInsteadOfAlt: false
52 property bool controlInsteadOfAlt: false
53+ property bool controlInsteadOfSuper: false
51
54
52 QtObject {
55 QtObject {
53 id: d
56 id: d
@@ -59,6 +62,9 @@ Item {
59 property bool altPressed: false
62 property bool altPressed: false
60 property bool altTabPressed: false
63 property bool altTabPressed: false
61
64
65+ property bool superPressed: false
66+ property bool superTabPressed: false
67+
62 property var powerButtonPressStart: 0
68 property var powerButtonPressStart: 0
63
69
64 // We need to eat ALT presses until we know what they're for (Alt+Tab or going to the app?)
70 // We need to eat ALT presses until we know what they're for (Alt+Tab or going to the app?)
@@ -119,11 +125,23 @@ Item {
119 event.accepted = true;
125 event.accepted = true;
120 d.altPressInjected = false;
126 d.altPressInjected = false;
121 }
127 }
128+
129+ // Adding MetaModifier here because that's what keyboards do. Pressing Super_L actually gives
130+ // Super_L + MetaModifier. This helps to make sure we only invoke superPressed if no other
131+ // Modifier is pressed too.
132+ } else if (((event.key == Qt.Key_Super_L || event.key == Qt.Key_Super_R) && event.modifiers === Qt.MetaModifier)
133+ || (root.controlInsteadOfSuper && event.key == Qt.Key_Control)
134+ ) {
135+ d.superPressed = true;
122 } else if (event.key == Qt.Key_Tab) {
136 } else if (event.key == Qt.Key_Tab) {
123 if (d.altPressed && !d.altTabPressed) {
137 if (d.altPressed && !d.altTabPressed) {
124 d.altTabPressed = true;
138 d.altTabPressed = true;
125 event.accepted = true;
139 event.accepted = true;
126 }
140 }
141+ if (d.superPressed && !d.superTabPressed) {
142+ d.superTabPressed = true;
143+ event.accepted = true;
144+ }
127 }
145 }
128 }
146 }
129
147
@@ -154,6 +172,12 @@ Item {
154 if (d.altTabPressed) {
172 if (d.altTabPressed) {
155 event.accepted = true;
173 event.accepted = true;
156 }
174 }
175+ } else if (event.key == Qt.Key_Super_L || event.key == Qt.Key_Super_R || (root.controlInsteadOfSuper && event.key == Qt.Key_Control)) {
176+ d.superPressed = false;
177+ if (d.superTabPressed) {
178+ d.superTabPressed = false;
179+ event.accepted = true;
180+ }
157 }
181 }
158 }
182 }
159}
183}
qml/Components/PinLockscreen.qml+22−1
@@ -19,8 +19,9 @@ import Ubuntu.Components 1.3
19import Ubuntu.Components.ListItems 1.3
19import Ubuntu.Components.ListItems 1.3
20import "../Components"
20import "../Components"
21
21
22−Item {
22+FocusScope {
23 id: root
23 id: root
24+ focus: true
24
25
25 property string infoText
26 property string infoText
26 property string retryText
27 property string retryText
@@ -45,6 +46,24 @@ Item {
45 }
46 }
46 }
47 }
47
48
49+ Keys.onPressed: {
50+ if (pinentryField.text.length == root.maxPinLength)
51+ return;
52+
53+ if (event.key === Qt.Key_Backspace) {
54+ pinentryField.backspace();
55+ } else if (event.key === Qt.Key_Delete || event.key === Qt.Key_Escape) {
56+ closeButton.clicked()
57+ } else if (event.key === Qt.Key_Enter || event.key === Qt.Key_Return) {
58+ confirmButton.clicked()
59+ } else {
60+ var digit = parseInt(event.text);
61+ if (!isNaN(digit) && typeof digit == "number") {
62+ pinentryField.appendNumber(digit);
63+ }
64+ }
65+ }
66+
48 Column {
67 Column {
49 anchors {
68 anchors {
50 left: parent.left;
69 left: parent.left;
@@ -204,6 +223,7 @@ Item {
204 width: numbersGrid.buttonWidth
223 width: numbersGrid.buttonWidth
205 }
224 }
206 PinPadButton {
225 PinPadButton {
226+ id: closeButton
207 iconName: "close"
227 iconName: "close"
208 height: units.gu(5) // visual spec has this row a little closer in
228 height: units.gu(5) // visual spec has this row a little closer in
209 width: numbersGrid.buttonWidth
229 width: numbersGrid.buttonWidth
@@ -216,6 +236,7 @@ Item {
216 width: numbersGrid.buttonWidth
236 width: numbersGrid.buttonWidth
217 }
237 }
218 PinPadButton {
238 PinPadButton {
239+ id: confirmButton
219 iconName: "tick"
240 iconName: "tick"
220 objectName: "confirmButton"
241 objectName: "confirmButton"
221 height: units.gu(5)
242 height: units.gu(5)
qml/Components/ShellDialog.qml+8
@@ -37,7 +37,15 @@ Dialog {
37
37
38 focus: true
38 focus: true
39
39
40+ // FIXME: this is a hack because Dialog subtheming seems broken atm
41+ // https://bugs.launchpad.net/ubuntu/+source/ubuntu-ui-toolkit/+bug/1555548
42+ ThemeSettings {
43+ id: themeHack
44+ name: "Ubuntu.Components.Themes.Ambiance"
45+ }
46+
40 Component.onCompleted: {
47 Component.onCompleted: {
48+ __foreground.theme = themeHack
41 show();
49 show();
42 }
50 }
43}
51}
qml/Components/Showable.qml+10
@@ -31,6 +31,7 @@ Item {
31 property bool required
31 property bool required
32 property bool __shouldShow: false
32 property bool __shouldShow: false
33 property bool __skipShowAnimation: false
33 property bool __skipShowAnimation: false
34+ property bool __skipHideAnimation: false
34
35
35 property list<QtObject> hides
36 property list<QtObject> hides
36 property var showAnimation
37 property var showAnimation
@@ -120,12 +121,21 @@ Item {
120 if (!hideAnimation.running) {
121 if (!hideAnimation.running) {
121 hideAnimation.restart()
122 hideAnimation.restart()
122 }
123 }
124+ if (__skipHideAnimation) {
125+ hideAnimation.complete();
126+ }
123 } else {
127 } else {
124 visible = false
128 visible = false
125 required = false
129 required = false
126 }
130 }
127
131
128 shown = false
132 shown = false
133+ __skipHideAnimation = false;
134+ }
135+
136+ function hideNow() {
137+ __skipHideAnimation = true;
138+ hide();
129 }
139 }
130
140
131 Connections {
141 Connections {
qml/Dash/CardCarousel.qml−1
@@ -66,7 +66,6 @@ DashRenderer {
66 item.cardData = Qt.binding(function() { return model; });
66 item.cardData = Qt.binding(function() { return model; });
67 item.fontScale = Qt.binding(function() { return carousel.fontScale; });
67 item.fontScale = Qt.binding(function() { return carousel.fontScale; });
68 item.showHeader = Qt.binding(function() { return loader.explicitlyScaled; });
68 item.showHeader = Qt.binding(function() { return loader.explicitlyScaled; });
69− item.titleAlignment = Qt.binding(function() { return cardTool.titleAlignment; });
70 item.artShapeStyle = "shadow";
69 item.artShapeStyle = "shadow";
71 item.scopeStyle = cardCarousel.scopeStyle;
70 item.scopeStyle = cardCarousel.scopeStyle;
72 }
71 }
qml/Dash/CardGrid.qml−1
@@ -70,7 +70,6 @@ DashRenderer {
70 item.fixedHeaderHeight = Qt.binding(function() { return cardTool.headerHeight; });
70 item.fixedHeaderHeight = Qt.binding(function() { return cardTool.headerHeight; });
71 item.fixedArtShapeSize = Qt.binding(function() { return cardTool.artShapeSize; });
71 item.fixedArtShapeSize = Qt.binding(function() { return cardTool.artShapeSize; });
72 item.cardData = Qt.binding(function() { return model; });
72 item.cardData = Qt.binding(function() { return model; });
73− item.titleAlignment = Qt.binding(function() { return cardTool.titleAlignment; });
74 item.scopeStyle = root.scopeStyle;
73 item.scopeStyle = root.scopeStyle;
75 item.artShapeStyle = root.artShapeStyle;
74 item.artShapeStyle = root.artShapeStyle;
76 item.backgroundShapeStyle = root.backgroundShapeStyle;
75 item.backgroundShapeStyle = root.backgroundShapeStyle;
qml/Dash/CardHorizontalList.qml−1
@@ -53,7 +53,6 @@ DashRenderer {
53 item.fixedArtShapeSize = Qt.binding(function() { return cardTool.artShapeSize; });
53 item.fixedArtShapeSize = Qt.binding(function() { return cardTool.artShapeSize; });
54 item.fixedHeaderHeight = Qt.binding(function() { return cardTool.headerHeight; });
54 item.fixedHeaderHeight = Qt.binding(function() { return cardTool.headerHeight; });
55 item.cardData = Qt.binding(function() { return model; });
55 item.cardData = Qt.binding(function() { return model; });
56− item.titleAlignment = Qt.binding(function() { return cardTool.titleAlignment; });
57 item.scopeStyle = root.scopeStyle;
56 item.scopeStyle = root.scopeStyle;
58 }
57 }
59 Connections {
58 Connections {
qml/Dash/CardTool.qml+2−26
@@ -66,7 +66,7 @@ Item {
66 return layout;
66 return layout;
67 }
67 }
68
68
69− property var cardComponent: CardCreatorCache.getCardComponent(cardTool.template, cardTool.components);
69+ property var cardComponent: CardCreatorCache.getCardComponent(cardTool.template, cardTool.components, false);
70
70
71 // FIXME: Saviq
71 // FIXME: Saviq
72 // Only way for the card below to actually be laid out completely.
72 // Only way for the card below to actually be laid out completely.
@@ -139,29 +139,6 @@ Item {
139 readonly property int headerHeight: cardLoader.item ? cardLoader.item.headerHeight : 0
139 readonly property int headerHeight: cardLoader.item ? cardLoader.item.headerHeight : 0
140 property size artShapeSize: cardLoader.item ? cardLoader.item.artShapeSize : 0
140 property size artShapeSize: cardLoader.item ? cardLoader.item.artShapeSize : 0
141
141
142− /*!
143− \brief Desired alignment of title
144− */
145− readonly property int titleAlignment: {
146− if (template["card-layout"] === "horizontal"
147− || typeof components["title"] !== "object"
148− || components["title"]["align"] === "left") return Text.AlignLeft;
149−
150− var keys = ["mascot", "emblem", "subtitle", "attributes", "summary"];
151−
152− for (var key in keys) {
153− key = keys[key];
154− try {
155− if (typeof components[key] === "string"
156− || typeof components[key]["field"] === "string") return Text.AlignLeft;
157− } catch (e) {
158− continue;
159− }
160− }
161−
162− return Text.AlignHCenter;
163− }
164−
165 QtObject {
142 QtObject {
166 id: carouselTool
143 id: carouselTool
167
144
@@ -216,10 +193,9 @@ Item {
216 "summary": "—\n—\n—\n—\n—",
193 "summary": "—\n—\n—\n—\n—",
217 "attributes": attributesModel.model
194 "attributes": attributesModel.model
218 }
195 }
219− sourceComponent: cardTool.cardComponent
196+ sourceComponent: CardCreatorCache.getCardComponent(cardTool.template, cardTool.components, true);
220 onLoaded: {
197 onLoaded: {
221 item.objectName = "cardToolCard";
198 item.objectName = "cardToolCard";
222− item.asynchronous = false;
223 item.width = Qt.binding(function() { return cardTool.cardWidth !== -1 ? cardTool.cardWidth : item.implicitWidth; });
199 item.width = Qt.binding(function() { return cardTool.cardWidth !== -1 ? cardTool.cardWidth : item.implicitWidth; });
224 item.height = Qt.binding(function() { return cardTool.cardHeight !== -1 ? cardTool.cardHeight : item.implicitHeight; });
200 item.height = Qt.binding(function() { return cardTool.cardHeight !== -1 ? cardTool.cardHeight : item.implicitHeight; });
225 }
201 }
qml/Dash/CardVerticalJournal.qml−1
@@ -72,7 +72,6 @@ DashRenderer {
72 item.fixedArtShapeSize = Qt.binding(function() { return cardTool.artShapeSize; });
72 item.fixedArtShapeSize = Qt.binding(function() { return cardTool.artShapeSize; });
73 item.fixedHeaderHeight = Qt.binding(function() { return cardTool.headerHeight; });
73 item.fixedHeaderHeight = Qt.binding(function() { return cardTool.headerHeight; });
74 item.cardData = Qt.binding(function() { return model; });
74 item.cardData = Qt.binding(function() { return model; });
75− item.titleAlignment = Qt.binding(function() { return cardTool.titleAlignment; });
76 item.scopeStyle = root.scopeStyle;
75 item.scopeStyle = root.scopeStyle;
77 }
76 }
78 Connections {
77 Connections {
qml/Dash/Dash.qml+11−11
@@ -37,6 +37,7 @@ Showable {
37 }
37 }
38
38
39 property bool windowActive: window.active
39 property bool windowActive: window.active
40+ property bool showOverlayScope: false
40
41
41 DashCommunicatorService {
42 DashCommunicatorService {
42 objectName: "dashCommunicatorService"
43 objectName: "dashCommunicatorService"
@@ -80,7 +81,7 @@ Showable {
80 return
81 return
81 }
82 }
82
83
83− closeOverlayScope();
84+ dash.showOverlayScope = false;
84
85
85 dashContent.closePreview();
86 dashContent.closePreview();
86
87
@@ -93,12 +94,6 @@ Showable {
93 dashContent.setCurrentScopeAtIndex(scopeIndex, animate, reset)
94 dashContent.setCurrentScopeAtIndex(scopeIndex, animate, reset)
94 }
95 }
95
96
96− function closeOverlayScope() {
97− if (dashContent.x != 0) {
98− dashContent.x = 0;
99− }
100− }
101−
102 Scopes {
97 Scopes {
103 id: scopes
98 id: scopes
104 }
99 }
@@ -133,12 +128,13 @@ Showable {
133 height: dash.height
128 height: dash.height
134 scopes: scopes
129 scopes: scopes
135 visible: x != -width
130 visible: x != -width
131+ x: dash.showOverlayScope ? -width : 0
136 onGotoScope: {
132 onGotoScope: {
137 dash.setCurrentScope(scopeId, true, false);
133 dash.setCurrentScope(scopeId, true, false);
138 }
134 }
139 onOpenScope: {
135 onOpenScope: {
140 scopeItem.scope = scope;
136 scopeItem.scope = scope;
141− x = -width;
137+ dash.showOverlayScope = true;
142 }
138 }
143 Behavior on x {
139 Behavior on x {
144 UbuntuNumberAnimation {
140 UbuntuNumberAnimation {
@@ -207,7 +203,7 @@ Showable {
207 bottomEdgeController.enableAnimation = true;
203 bottomEdgeController.enableAnimation = true;
208 bottomEdgeController.progress = 0;
204 bottomEdgeController.progress = 0;
209 scopeItem.scope = scope;
205 scopeItem.scope = scope;
210− dashContent.x = -dashContent.width;
206+ dash.showOverlayScope = true;
211 }
207 }
212 onGotoScope: {
208 onGotoScope: {
213 bottomEdgeController.enableAnimation = true;
209 bottomEdgeController.enableAnimation = true;
@@ -226,7 +222,7 @@ Showable {
226 id: scopeItem
222 id: scopeItem
227 objectName: "dashTempScopeItem"
223 objectName: "dashTempScopeItem"
228
224
229− x: dashContent.x + width
225+ x: dash.showOverlayScope ? 0 : width
230 y: dashContent.y
226 y: dashContent.y
231 width: parent.width
227 width: parent.width
232 height: parent.height
228 height: parent.height
@@ -234,7 +230,7 @@ Showable {
234 hasBackAction: true
230 hasBackAction: true
235 isCurrent: visible
231 isCurrent: visible
236 onBackClicked: {
232 onBackClicked: {
237− closeOverlayScope();
233+ dash.showOverlayScope = false;
238 closePreview();
234 closePreview();
239 }
235 }
240
236
@@ -250,6 +246,10 @@ Showable {
250 scopes.closeScope(oldScope);
246 scopes.closeScope(oldScope);
251 }
247 }
252 }
248 }
249+
250+ Behavior on x {
251+ UbuntuNumberAnimation { }
252+ }
253 }
253 }
254
254
255 Rectangle {
255 Rectangle {
qml/Dash/DashPageHeader.qml+4
@@ -170,6 +170,7 @@ Item {
170 anchors { left: parent.left; right: parent.right }
170 anchors { left: parent.left; right: parent.right }
171
171
172 PageHeadStyle {
172 PageHeadStyle {
173+ // FIXME: Replace PageHeadStyle from the Ambiance theme by the new PageHeader from Ubuntu.Components 1.3.
173 id: searchHeader
174 id: searchHeader
174 anchors { left: parent.left; right: parent.right }
175 anchors { left: parent.left; right: parent.right }
175 opacity: headerContainer.clip || headerContainer.showSearch ? 1 : 0 // setting visible false cause column to relayout
176 opacity: headerContainer.clip || headerContainer.showSearch ? 1 : 0 // setting visible false cause column to relayout
@@ -179,6 +180,7 @@ Item {
179 property color dividerColor: "transparent" // Doesn't matter as we don't have PageHeadSections
180 property color dividerColor: "transparent" // Doesn't matter as we don't have PageHeadSections
180 property color panelColor: background.topColor
181 property color panelColor: background.topColor
181 panelForegroundColor: config.foregroundColor
182 panelForegroundColor: config.foregroundColor
183+ backgroundColor: "transparent"
182 config: PageHeadConfiguration {
184 config: PageHeadConfiguration {
183 foregroundColor: root.scopeStyle ? root.scopeStyle.headerForeground : theme.palette.normal.baseText
185 foregroundColor: root.scopeStyle ? root.scopeStyle.headerForeground : theme.palette.normal.baseText
184 backAction: Action {
186 backAction: Action {
@@ -241,6 +243,7 @@ Item {
241 }
243 }
242
244
243 PageHeadStyle {
245 PageHeadStyle {
246+ // FIXME: Replace PageHeadStyle from the Ambiance theme by the new PageHeader from Ubuntu.Components 1.3.
244 id: header
247 id: header
245 objectName: "innerPageHeader"
248 objectName: "innerPageHeader"
246 anchors { left: parent.left; right: parent.right }
249 anchors { left: parent.left; right: parent.right }
@@ -251,6 +254,7 @@ Item {
251 property color dividerColor: "transparent" // Doesn't matter as we don't have PageHeadSections
254 property color dividerColor: "transparent" // Doesn't matter as we don't have PageHeadSections
252 property color panelColor: background.topColor
255 property color panelColor: background.topColor
253 panelForegroundColor: config.foregroundColor
256 panelForegroundColor: config.foregroundColor
257+ backgroundColor: "transparent"
254 config: PageHeadConfiguration {
258 config: PageHeadConfiguration {
255 title: root.title
259 title: root.title
256 foregroundColor: root.scopeStyle ? root.scopeStyle.headerForeground : theme.palette.normal.baseText
260 foregroundColor: root.scopeStyle ? root.scopeStyle.headerForeground : theme.palette.normal.baseText
qml/Dash/GenericScopeView.qml+16−42
@@ -47,7 +47,7 @@ FocusScope {
47 style: scope ? scope.customizations : {}
47 style: scope ? scope.customizations : {}
48 }
48 }
49
49
50− readonly property bool processing: scope ? scope.searchInProgress || subPageLoader.processing : false
50+ readonly property bool processing: scope ? (scope.searchInProgress || scope.activationInProgress || subPageLoader.processing) : false
51
51
52 signal backClicked()
52 signal backClicked()
53
53
@@ -73,49 +73,30 @@ FocusScope {
73 }
73 }
74
74
75 property var maybePreviewResult;
75 property var maybePreviewResult;
76− property int maybePreviewIndex;
77− property var maybePreviewResultsModel;
78− property int maybePreviewLimitedCategoryItemCount;
79 property string maybePreviewCategoryId;
76 property string maybePreviewCategoryId;
80
77
81 function clearMaybePreviewData() {
78 function clearMaybePreviewData() {
82 scopeView.maybePreviewResult = undefined;
79 scopeView.maybePreviewResult = undefined;
83− scopeView.maybePreviewIndex = -1;
84− scopeView.maybePreviewResultsModel = undefined;
85− scopeView.maybePreviewLimitedCategoryItemCount = -1;
86 scopeView.maybePreviewCategoryId = "";
80 scopeView.maybePreviewCategoryId = "";
87 }
81 }
88
82
89− function itemClicked(index, result, itemModel, resultsModel, limitedCategoryItemCount, categoryId) {
83+ function itemClicked(result, categoryId) {
90 scopeView.maybePreviewResult = result;
84 scopeView.maybePreviewResult = result;
91− scopeView.maybePreviewIndex = index;
92− scopeView.maybePreviewResultsModel = resultsModel;
93− scopeView.maybePreviewLimitedCategoryItemCount = limitedCategoryItemCount;
94 scopeView.maybePreviewCategoryId = categoryId;
85 scopeView.maybePreviewCategoryId = categoryId;
95
86
96 scope.activate(result, categoryId);
87 scope.activate(result, categoryId);
97 }
88 }
98
89
99− function itemPressedAndHeld(index, result, resultsModel, limitedCategoryItemCount, categoryId) {
90+ function itemPressedAndHeld(result, categoryId) {
100 clearMaybePreviewData();
91 clearMaybePreviewData();
101
92
102− openPreview(result, index, resultsModel, limitedCategoryItemCount, categoryId);
93+ openPreview(result, categoryId);
103 }
94 }
104
95
105− function openPreview(result, index, resultsModel, limitedCategoryItemCount, categoryId) {
96+ function openPreview(result, categoryId) {
106− var previewStack = scope.preview(result, categoryId);
97+ var previewModel = scope.preview(result, categoryId);
107− if (previewStack) {
98+ if (previewModel) {
108− if (limitedCategoryItemCount > 0) {
99+ subPageLoader.previewModel = previewModel;
109− previewLimitModel.model = resultsModel;
110− previewLimitModel.limit = limitedCategoryItemCount;
111− subPageLoader.model = previewLimitModel;
112− } else {
113− subPageLoader.model = resultsModel;
114− }
115− subPageLoader.initialIndex = -1;
116− subPageLoader.initialIndex = index;
117− subPageLoader.categoryId = categoryId;
118− subPageLoader.previewStack = previewStack;
119 subPageLoader.openSubPage("preview");
100 subPageLoader.openSubPage("preview");
120 }
101 }
121 }
102 }
@@ -166,9 +147,6 @@ FocusScope {
166 onPreviewRequested: { // (QVariant const& result)
147 onPreviewRequested: { // (QVariant const& result)
167 if (result === scopeView.maybePreviewResult) {
148 if (result === scopeView.maybePreviewResult) {
168 openPreview(result,
149 openPreview(result,
169− scopeView.maybePreviewIndex,
170− scopeView.maybePreviewResultsModel,
171− scopeView.maybePreviewLimitedCategoryItemCount,
172 scopeView.maybePreviewCategoryId);
150 scopeView.maybePreviewCategoryId);
173
151
174 clearMaybePreviewData();
152 clearMaybePreviewData();
@@ -392,6 +370,8 @@ FocusScope {
392 } else {
370 } else {
393 cardTool.cardWidth = units.gu(10);
371 cardTool.cardWidth = units.gu(10);
394 }
372 }
373+ } else {
374+ cardTool.cardWidth = units.gu(12);
395 }
375 }
396 item.minimumHorizontalSpacing = item.defaultMinimumHorizontalSpacing;
376 item.minimumHorizontalSpacing = item.defaultMinimumHorizontalSpacing;
397 }
377 }
@@ -400,11 +380,11 @@ FocusScope {
400 Connections {
380 Connections {
401 target: rendererLoader.item
381 target: rendererLoader.item
402 onClicked: { // (int index, var result, var item, var itemModel)
382 onClicked: { // (int index, var result, var item, var itemModel)
403− scopeView.itemClicked(index, result, itemModel, target.model, categoryItemCount(), baseItem.category);
383+ scopeView.itemClicked(result, baseItem.category);
404 }
384 }
405
385
406 onPressAndHold: { // (int index, var result, var itemModel)
386 onPressAndHold: { // (int index, var result, var itemModel)
407− scopeView.itemPressedAndHeld(index, result, target.model, categoryItemCount(), baseItem.category);
387+ scopeView.itemPressedAndHeld(result, baseItem.category);
408 }
388 }
409
389
410 function categoryItemCount() {
390 function categoryItemCount() {
@@ -779,13 +759,10 @@ FocusScope {
779 property var scope: scopeView.scope
759 property var scope: scopeView.scope
780 property var scopeStyle: scopeView.scopeStyle
760 property var scopeStyle: scopeView.scopeStyle
781 property int initialIndex: -1
761 property int initialIndex: -1
782− property var previewStack;
762+ property var previewModel;
783− property string categoryId
784− property var model: null
785
763
786 readonly property bool processing: item && item.processing || false
764 readonly property bool processing: item && item.processing || false
787 readonly property int count: item && item.count || 0
765 readonly property int count: item && item.count || 0
788− readonly property int currentIndex: item && item.currentIndex || 0
789 readonly property var currentItem: item && item.currentItem || null
766 readonly property var currentItem: item && item.currentItem || null
790
767
791 property string subPage: ""
768 property string subPage: ""
@@ -800,7 +777,7 @@ FocusScope {
800 }
777 }
801
778
802 source: switch(subPage) {
779 source: switch(subPage) {
803− case "preview": return "PreviewListView.qml";
780+ case "preview": return "PreviewView.qml";
804 case "settings": return "ScopeSettingsPage.qml";
781 case "settings": return "ScopeSettingsPage.qml";
805 default: return "";
782 default: return "";
806 }
783 }
@@ -810,11 +787,8 @@ FocusScope {
810 item.scopeStyle = Qt.binding(function() { return subPageLoader.scopeStyle; } )
787 item.scopeStyle = Qt.binding(function() { return subPageLoader.scopeStyle; } )
811 if (subPage == "preview") {
788 if (subPage == "preview") {
812 item.open = Qt.binding(function() { return subPageLoader.open; } )
789 item.open = Qt.binding(function() { return subPageLoader.open; } )
813− item.initialIndex = Qt.binding(function() { return subPageLoader.initialIndex; } )
790+ item.previewModel = subPageLoader.previewModel;
814− item.model = Qt.binding(function() { return subPageLoader.model; } )
791+ subPageLoader.previewModel = null;
815− item.categoryId = Qt.binding(function() { return subPageLoader.categoryId; } )
816− item.initialIndexPreviewStack = subPageLoader.previewStack;
817− subPageLoader.previewStack = null;
818 }
792 }
819 open = true;
793 open = true;
820 }
794 }
qml/Dash/PreviewListView.qmldeleted−140
@@ -1,140 +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.4
18−import Ubuntu.Components 1.3
19−import Unity 0.2
20−import "../Components"
21−import "Previews" as Previews
22−
23−Item {
24− id: root
25−
26− property int initialIndex: -1
27− property var initialIndexPreviewStack: null
28− property var scope: null
29− property var scopeStyle: null
30− property string categoryId
31− property bool usedInitialIndex: false
32−
33− property alias showSignatureLine: header.showSignatureLine
34−
35− property alias open: previewListView.open
36− property alias model: previewListView.model
37− property alias currentIndex: previewListView.currentIndex
38− property alias currentItem: previewListView.currentItem
39− property alias count: previewListView.count
40−
41− readonly property bool processing: currentItem && (!currentItem.previewModel.loaded
42− || currentItem.previewModel.processingAction)
43−
44− signal backClicked()
45−
46− DashPageHeader {
47− id: header
48− objectName: "pageHeader"
49− width: parent.width
50− title: root.scope ? root.scope.name : ""
51− showBackButton: true
52− searchEntryEnabled: false
53− scopeStyle: root.scopeStyle
54−
55− onBackClicked: root.backClicked()
56− }
57−
58− ListView {
59− id: previewListView
60− objectName: "listView"
61− anchors {
62− top: header.bottom
63− bottom: parent.bottom
64− left: parent.left
65− right: parent.right
66− }
67− orientation: ListView.Horizontal
68− highlightRangeMode: ListView.StrictlyEnforceRange
69− snapMode: ListView.SnapOneItem
70− boundsBehavior: Flickable.DragAndOvershootBounds
71− highlightMoveDuration: 250
72− flickDeceleration: units.gu(625)
73− maximumFlickVelocity: width * 5
74− cacheBuffer: 0
75−
76− property bool open: false
77−
78− onOpenChanged: {
79− if (!open) {
80− // Cancel any pending preview requests or actions
81− if (previewListView.currentItem && previewListView.currentItem.previewData !== undefined) {
82− previewListView.currentItem.previewData.cancelAction();
83− }
84− root.scope.cancelActivation();
85− model = undefined;
86− }
87− }
88−
89− onModelChanged: {
90− if (count > 0 && initialIndex >= 0 && !usedInitialIndex) {
91− usedInitialIndex = true;
92− previewListView.positionViewAtIndex(initialIndex, ListView.SnapPosition);
93− }
94− }
95−
96− delegate: Previews.Preview {
97− id: preview
98− objectName: "preview" + index
99− height: previewListView.height
100− width: previewListView.width
101−
102− isCurrent: ListView.isCurrentItem
103−
104− readonly property var previewStack: {
105− if (root.open) {
106− if (index === root.initialIndex) {
107− return root.initialIndexPreviewStack;
108− } else {
109− return root.scope.preview(result, root.categoryId);
110− }
111− } else {
112− return null;
113− }
114− }
115−
116− previewModel: {
117− if (previewStack) {
118− return previewStack.getPreviewModel(0);
119− } else {
120− return null;
121− }
122− }
123−
124− scopeStyle: root.scopeStyle
125− }
126− }
127−
128− MouseArea {
129− id: processingMouseArea
130− objectName: "processingMouseArea"
131− anchors {
132− left: parent.left
133− right: parent.right
134− top: header.bottom
135− bottom: parent.bottom
136− }
137−
138− enabled: root.processing
139− }
140−}
qml/Dash/PreviewView.qmlnew file+76
@@ -0,0 +1,76 @@
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.4
18+import Ubuntu.Components 1.3
19+import Unity 0.2
20+import "../Components"
21+import "Previews" as Previews
22+
23+Item {
24+ id: root
25+
26+ property bool open: false
27+ property var scope: null
28+ property var scopeStyle: null
29+ property alias showSignatureLine: header.showSignatureLine
30+ property alias previewModel: preview.previewModel
31+ readonly property bool processing: previewModel && (!previewModel.loaded || previewModel.processingAction)
32+
33+ signal backClicked()
34+
35+ DashPageHeader {
36+ id: header
37+ objectName: "pageHeader"
38+ width: parent.width
39+ title: root.scope ? root.scope.name : ""
40+ showBackButton: true
41+ searchEntryEnabled: false
42+ scopeStyle: root.scopeStyle
43+
44+ onBackClicked: root.backClicked()
45+ }
46+
47+ onOpenChanged: {
48+ if (!open) {
49+ root.scope.cancelActivation();
50+ }
51+ }
52+
53+ Previews.Preview {
54+ id: preview
55+ objectName: "preview"
56+ anchors {
57+ top: header.bottom
58+ bottom: parent.bottom
59+ left: parent.left
60+ right: parent.right
61+ }
62+ scopeStyle: root.scopeStyle
63+ }
64+
65+ MouseArea {
66+ id: processingMouseArea
67+ objectName: "processingMouseArea"
68+ anchors {
69+ top: header.bottom
70+ bottom: parent.bottom
71+ left: parent.left
72+ right: parent.right
73+ }
74+ enabled: root.processing
75+ }
76+}
qml/Dash/Previews/Preview.qml−4
@@ -34,9 +34,6 @@ Item {
34 */
34 */
35 property var previewModel
35 property var previewModel
36
36
37− //! \brief Should be set to true if this preview is currently displayed.
38− property bool isCurrent: false
39−
40 //! \brief The ScopeStyle component.
37 //! \brief The ScopeStyle component.
41 property var scopeStyle: null
38 property var scopeStyle: null
42
39
@@ -88,7 +85,6 @@ Item {
88 widgetId: model.widgetId
85 widgetId: model.widgetId
89 widgetType: model.type
86 widgetType: model.type
90 widgetData: model.properties
87 widgetData: model.properties
91− isCurrentPreview: root.isCurrent
92 scopeStyle: root.scopeStyle
88 scopeStyle: root.scopeStyle
93 parentFlickable: column
89 parentFlickable: column
94
90
qml/Dash/Previews/PreviewAudioPlayback.qml+5−1
@@ -85,7 +85,11 @@ PreviewWidget {
85 DashAudioPlayer.play();
85 DashAudioPlayer.play();
86 }
86 }
87 } else {
87 } else {
88− DashAudioPlayer.playSource(sourceUrl);
88+ var playlist = [];
89+ for (var i = 0; i < trackRepeater.count; ++i) {
90+ playlist.push(trackRepeater.itemAt(i).sourceUrl);
91+ }
92+ DashAudioPlayer.playSource(sourceUrl, playlist);
89 }
93 }
90 }
94 }
91 }
95 }
qml/Dash/Previews/PreviewExpandable.qml−1
@@ -84,7 +84,6 @@ PreviewWidget {
84 widgetId: model.widgetId
84 widgetId: model.widgetId
85 widgetType: model.type
85 widgetType: model.type
86 widgetData: model.properties
86 widgetData: model.properties
87− isCurrentPreview: root.isCurrentPreview
88 scopeStyle: root.scopeStyle
87 scopeStyle: root.scopeStyle
89 anchors {
88 anchors {
90 left: parent.left
89 left: parent.left
qml/Dash/Previews/PreviewHeader.qml+37−9
@@ -25,6 +25,7 @@ import "../"
25 * The mascot fall back image comes in widgetData["fallback"]
25 * The mascot fall back image comes in widgetData["fallback"]
26 * The subtitle comes in widgetData["subtitle"]
26 * The subtitle comes in widgetData["subtitle"]
27 * The attributes comes in widgetData["attributes"]
27 * The attributes comes in widgetData["attributes"]
28+ * The emblem comes in widgetData["emblem"]
28 */
29 */
29
30
30PreviewWidget {
31PreviewWidget {
@@ -40,6 +41,7 @@ PreviewWidget {
40 readonly property string title: root.widgetData["title"] || ""
41 readonly property string title: root.widgetData["title"] || ""
41 readonly property string subtitle: root.widgetData["subtitle"] || ""
42 readonly property string subtitle: root.widgetData["subtitle"] || ""
42 readonly property var attributes: root.widgetData["attributes"] || null
43 readonly property var attributes: root.widgetData["attributes"] || null
44+ readonly property url emblem: root.widgetData["emblem"] || ""
43 readonly property color fontColor: root.scopeStyle ? root.scopeStyle.foreground : theme.palette.normal.baseText
45 readonly property color fontColor: root.scopeStyle ? root.scopeStyle.foreground : theme.palette.normal.baseText
44
46
45 // Rewire the source since we may have unwired it on onStatusChanged
47 // Rewire the source since we may have unwired it on onStatusChanged
@@ -98,16 +100,42 @@ PreviewWidget {
98 spacing: units.dp(2)
100 spacing: units.dp(2)
99 anchors.verticalCenter: parent.verticalCenter
101 anchors.verticalCenter: parent.verticalCenter
100
102
101− Label {
103+ Item {
102− id: titleLabel
103− objectName: "titleLabel"
104 anchors { left: parent.left; right: parent.right }
104 anchors { left: parent.left; right: parent.right }
105− elide: Text.ElideRight
105+ height: titleLabel.height
106− font.weight: Font.Normal
106+
107− fontSize: "large"
107+ Label {
108− wrapMode: Text.Wrap
108+ id: titleLabel
109− color: headerRoot.fontColor
109+ objectName: "titleLabel"
110− text: headerRoot.title
110+ anchors {
111+ left: parent.left;
112+ right: iconLoader.right
113+ rightMargin: iconLoader.width > 0 ? units.gu(0.5) : 0
114+ }
115+ elide: Text.ElideRight
116+ font.weight: Font.Normal
117+ fontSize: "large"
118+ wrapMode: Text.Wrap
119+ color: headerRoot.fontColor
120+ text: headerRoot.title
121+ }
122+
123+ Loader {
124+ id: iconLoader
125+ active: headerRoot.emblem != ""
126+ anchors {
127+ bottom: titleLabel.baseline
128+ right: parent.right
129+ }
130+ sourceComponent: Icon {
131+ objectName: "emblemIcon"
132+ source: headerRoot.emblem
133+ color: headerRoot.fontColor
134+ height: source != "" ? titleLabel.font.pixelSize : 0
135+ // FIXME Workaround for bug https://bugs.launchpad.net/ubuntu/+source/ubuntu-ui-toolkit/+bug/1421293
136+ width: implicitWidth > 0 && implicitHeight > 0 ? (implicitWidth / implicitHeight * height) : implicitWidth
137+ }
138+ }
111 }
139 }
112
140
113 Loader {
141 Loader {
qml/Dash/Previews/PreviewOverlay.qml+1−1
@@ -158,7 +158,7 @@ Rectangle {
158 anchors.centerIn: parent
158 anchors.centerIn: parent
159 width: units.gu(2.5)
159 width: units.gu(2.5)
160 height: width
160 height: width
161− color: theme.palette.normal.foregroundText
161+ color: "white"
162 name: "close"
162 name: "close"
163 }
163 }
164 }
164 }
qml/Dash/Previews/PreviewPayments.qml+1−3
@@ -65,9 +65,7 @@ PreviewWidget {
65 }
65 }
66 onPurchaseCancelled: {
66 onPurchaseCancelled: {
67 paymentButton.opacity = 1;
67 paymentButton.opacity = 1;
68− // DO NOT emit the signal right now, as it causes a new
68+ root.triggered(widgetId, "purchaseCancelled", source);
69− // preview to be requested, when that is not what we want.
70− //root.triggered(widgetId, "purchaseCancelled", source);
71 }
69 }
72 }
70 }
73 }
71 }
qml/Dash/Previews/PreviewRatingDisplay.qml−1
@@ -40,7 +40,6 @@ PreviewWidget {
40 id: root
40 id: root
41 implicitHeight: childrenRect.height
41 implicitHeight: childrenRect.height
42
42
43− onIsCurrentPreviewChanged: ratingsList.updateRanges();
44 onParentFlickableChanged: ratingsList.updateRanges();
43 onParentFlickableChanged: ratingsList.updateRanges();
45
44
46 Connections {
45 Connections {
qml/Dash/Previews/PreviewRatingEdit.qml−1
@@ -68,7 +68,6 @@ PreviewWidget {
68
68
69 widgetId: root.widgetId
69 widgetId: root.widgetId
70 widgetData: root.widgetData
70 widgetData: root.widgetData
71− isCurrentPreview: root.isCurrentPreview
72 scopeStyle: root.scopeStyle
71 scopeStyle: root.scopeStyle
73
72
74 ratingValue: widgetData["rating"]
73 ratingValue: widgetData["rating"]
qml/Dash/Previews/PreviewSharing.qml+17−7
@@ -44,6 +44,22 @@ Item {
44 }
44 }
45 }
45 }
46
46
47+ function createExportedItems(url) {
48+ var items = new Array();
49+ if (typeof url === "string") {
50+ var exportItem = exportItemComponent.createObject();
51+ exportItem.url = url;
52+ items.push(exportItem);
53+ } else {
54+ for (var i = 0; i < url.length; i++) {
55+ var exportItem = exportItemComponent.createObject();
56+ exportItem.url = url[i];
57+ items.push(exportItem);
58+ }
59+ }
60+ return items;
61+ }
62+
47 Component {
63 Component {
48 id: exportItemComponent
64 id: exportItemComponent
49 ContentItem {
65 ContentItem {
@@ -76,13 +92,7 @@ Item {
76 onPeerSelected: {
92 onPeerSelected: {
77 var transfer = peer.request();
93 var transfer = peer.request();
78 if (transfer.state === ContentTransfer.InProgress) {
94 if (transfer.state === ContentTransfer.InProgress) {
79− var items = new Array();
95+ transfer.items = createExportedItems(url);
80− for (var i = 0; i < url.length; i++) {
81− var exportItem = exportItemComponent.createObject();
82− exportItem.url = url[i];
83− items.push(exportItem);
84− }
85− transfer.items = items;
86 transfer.state = ContentTransfer.Charged;
96 transfer.state = ContentTransfer.Charged;
87 }
97 }
88 peerPicker.visible = false;
98 peerPicker.visible = false;
qml/Dash/Previews/PreviewWidget.qml−3
@@ -19,9 +19,6 @@ import QtQuick 2.4
19/*! Interface for preview widgets. */
19/*! Interface for preview widgets. */
20
20
21Item {
21Item {
22− //! Specifies the preview widget being currently used or not
23− property bool isCurrentPreview: true
24−
25 //! The widget identifier
22 //! The widget identifier
26 property string widgetId
23 property string widgetId
27
24
qml/Dash/Previews/PreviewWidgetFactory.qml−4
@@ -37,9 +37,6 @@ Loader {
37 //! Should the widget show in expanded mode (For those that support it)
37 //! Should the widget show in expanded mode (For those that support it)
38 property bool expanded: widgetType !== "expandable" || widgetData["expanded"] === true
38 property bool expanded: widgetType !== "expandable" || widgetData["expanded"] === true
39
39
40− //! Set to true if the parent preview is displayed.
41− property bool isCurrentPreview: false
42−
43 //! Set margins width.
40 //! Set margins width.
44 property real widgetMargins: status === Loader.Ready ? item.widgetMargins : units.gu(1)
41 property real widgetMargins: status === Loader.Ready ? item.widgetMargins : units.gu(1)
45
42
@@ -82,7 +79,6 @@ Loader {
82 onLoaded: {
79 onLoaded: {
83 item.widgetId = Qt.binding(function() { return root.widgetId } )
80 item.widgetId = Qt.binding(function() { return root.widgetId } )
84 item.widgetData = Qt.binding(function() { return root.widgetData } )
81 item.widgetData = Qt.binding(function() { return root.widgetData } )
85− item.isCurrentPreview = Qt.binding(function() { return root.isCurrentPreview } )
86 item.expanded = Qt.binding(function() { return root.expanded } )
82 item.expanded = Qt.binding(function() { return root.expanded } )
87 item.scopeStyle = Qt.binding(function() { return root.scopeStyle } )
83 item.scopeStyle = Qt.binding(function() { return root.scopeStyle } )
88 item.parentFlickable = Qt.binding(function() { return root.parentFlickable } )
84 item.parentFlickable = Qt.binding(function() { return root.parentFlickable } )
qml/Dash/ScopesList.qml+1−1
@@ -24,7 +24,7 @@ Item {
24 property var scope: null
24 property var scope: null
25
25
26 // Properties used by parent
26 // Properties used by parent
27− readonly property bool processing: scope ? scope.searchInProgress : false
27+ readonly property bool processing: scope ? (scope.searchInProgress || scope.activationInProgress) : false
28
28
29 // Signals
29 // Signals
30 signal backClicked()
30 signal backClicked()
qml/Dash/ScopesListCategoryItem.qml+8−4
@@ -18,7 +18,7 @@ import QtQuick 2.4
18import QtQuick.Layouts 1.1
18import QtQuick.Layouts 1.1
19import Ubuntu.Components 1.3
19import Ubuntu.Components 1.3
20
20
21−MouseArea {
21+AbstractButton {
22 id: root
22 id: root
23
23
24 signal requestFavorite(string scopeId, bool favorite)
24 signal requestFavorite(string scopeId, bool favorite)
@@ -84,15 +84,19 @@ MouseArea {
84 visible: text != ""
84 visible: text != ""
85 }
85 }
86 }
86 }
87− MouseArea {
87+ AbstractButton {
88 id: starArea
88 id: starArea
89 objectName: "starArea"
89 objectName: "starArea"
90 height: parent.height
90 height: parent.height
91 width: height
91 width: height
92 anchors.right: parent.right
92 anchors.right: parent.right
93 onClicked: if (!editMode) root.requestFavorite(model.scopeId, !isFavorite);
93 onClicked: if (!editMode) root.requestFavorite(model.scopeId, !isFavorite);
94− onPressed: if (editMode) root.handlePressed(starArea);
94+ onPressedChanged: {
95− onReleased: if (editMode) root.handleReleased(starArea);
95+ if (editMode) {
96+ if (pressed) root.handlePressed(starArea.__mouseArea);
97+ else root.handleReleased(starArea.__mouseArea);
98+ }
99+ }
96 visible: editMode || showStar
100 visible: editMode || showStar
97 Icon {
101 Icon {
98 id: star
102 id: star
qml/DeviceConfiguration.qml+54−16
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2015 Canonical, Ltd.
2+ * Copyright (C) 2015-2016 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
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
5 * it under the terms of the GNU General Public License as published by
@@ -15,6 +15,7 @@
15 */
15 */
16
16
17import QtQuick 2.4
17import QtQuick 2.4
18+import Utils 0.1
18
19
19QtObject {
20QtObject {
20 id: root
21 id: root
@@ -34,57 +35,83 @@ QtObject {
34
35
35 readonly property alias category: priv.category
36 readonly property alias category: priv.category
36
37
38+ readonly property var deviceConfigParser: DeviceConfigParser {
39+ name: root.name
40+ }
41+
37 readonly property var priv: StateGroup {
42 readonly property var priv: StateGroup {
38 id: priv
43 id: priv
39
44
40− property int primaryOrientation: root.useNativeOrientation
45+ property int primaryOrientation: deviceConfigParser.primaryOrientation == Qt.PrimaryOrientation ?
46+ root.useNativeOrientation : deviceConfigParser.primaryOrientation
41
47
42− property int supportedOrientations: Qt.PortraitOrientation
48+ property int supportedOrientations: deviceConfigParser.supportedOrientations
43− | Qt.InvertedPortraitOrientation
44− | Qt.LandscapeOrientation
45− | Qt.InvertedLandscapeOrientation
46
49
47− property int landscapeOrientation: Qt.LandscapeOrientation
50+ property int landscapeOrientation: deviceConfigParser.landscapeOrientation
48− property int invertedLandscapeOrientation: Qt.InvertedLandscapeOrientation
51+ property int invertedLandscapeOrientation: deviceConfigParser.invertedLandscapeOrientation
49− property int portraitOrientation: Qt.PortraitOrientation
52+ property int portraitOrientation: deviceConfigParser.portraitOrientation
50− property int invertedPortraitOrientation: Qt.InvertedPortraitOrientation
53+ property int invertedPortraitOrientation: deviceConfigParser.invertedPortraitOrientation
51−
54+ property string category: deviceConfigParser.category
52− // Supported values so far:
53− // "phone", "tablet" or "desktop"
54− property string category: "phone"
55
55
56 states: [
56 states: [
57 State {
57 State {
58 name: "mako"
58 name: "mako"
59 PropertyChanges {
59 PropertyChanges {
60 target: priv
60 target: priv
61+ primaryOrientation: root.useNativeOrientation
61 supportedOrientations: Qt.PortraitOrientation
62 supportedOrientations: Qt.PortraitOrientation
62 | Qt.LandscapeOrientation
63 | Qt.LandscapeOrientation
63 | Qt.InvertedLandscapeOrientation
64 | Qt.InvertedLandscapeOrientation
65+ landscapeOrientation: Qt.LandscapeOrientation
66+ invertedLandscapeOrientation: Qt.InvertedLandscapeOrientation
67+ portraitOrientation: Qt.PortraitOrientation
68+ invertedPortraitOrientation: Qt.InvertedPortraitOrientation
69+ category: "phone"
64 }
70 }
65 },
71 },
66 State {
72 State {
67 name: "krillin"
73 name: "krillin"
68 PropertyChanges {
74 PropertyChanges {
69 target: priv
75 target: priv
76+ primaryOrientation: root.useNativeOrientation
70 supportedOrientations: Qt.PortraitOrientation
77 supportedOrientations: Qt.PortraitOrientation
71 | Qt.LandscapeOrientation
78 | Qt.LandscapeOrientation
72 | Qt.InvertedLandscapeOrientation
79 | Qt.InvertedLandscapeOrientation
80+ landscapeOrientation: Qt.LandscapeOrientation
81+ invertedLandscapeOrientation: Qt.InvertedLandscapeOrientation
82+ portraitOrientation: Qt.PortraitOrientation
83+ invertedPortraitOrientation: Qt.InvertedPortraitOrientation
84+ category: "phone"
73 }
85 }
74 },
86 },
75 State {
87 State {
76 name: "arale"
88 name: "arale"
77 PropertyChanges {
89 PropertyChanges {
78 target: priv
90 target: priv
91+ primaryOrientation: root.useNativeOrientation
79 supportedOrientations: Qt.PortraitOrientation
92 supportedOrientations: Qt.PortraitOrientation
80 | Qt.LandscapeOrientation
93 | Qt.LandscapeOrientation
81 | Qt.InvertedLandscapeOrientation
94 | Qt.InvertedLandscapeOrientation
95+ landscapeOrientation: Qt.LandscapeOrientation
96+ invertedLandscapeOrientation: Qt.InvertedLandscapeOrientation
97+ portraitOrientation: Qt.PortraitOrientation
98+ invertedPortraitOrientation: Qt.InvertedPortraitOrientation
99+ category: "phone"
82 }
100 }
83 },
101 },
84 State {
102 State {
85 name: "manta"
103 name: "manta"
86 PropertyChanges {
104 PropertyChanges {
87 target: priv
105 target: priv
106+ primaryOrientation: root.useNativeOrientation
107+ supportedOrientations: Qt.PortraitOrientation
108+ | Qt.InvertedPortraitOrientation
109+ | Qt.LandscapeOrientation
110+ | Qt.InvertedLandscapeOrientation
111+ landscapeOrientation: Qt.LandscapeOrientation
112+ invertedLandscapeOrientation: Qt.InvertedLandscapeOrientation
113+ portraitOrientation: Qt.PortraitOrientation
114+ invertedPortraitOrientation: Qt.InvertedPortraitOrientation
88 category: "tablet"
115 category: "tablet"
89 }
116 }
90 },
117 },
@@ -92,9 +119,15 @@ QtObject {
92 name: "flo"
119 name: "flo"
93 PropertyChanges {
120 PropertyChanges {
94 target: priv
121 target: priv
122+ primaryOrientation: Qt.InvertedLandscapeOrientation
123+ supportedOrientations: Qt.PortraitOrientation
124+ | Qt.InvertedPortraitOrientation
125+ | Qt.LandscapeOrientation
126+ | Qt.InvertedLandscapeOrientation
95 landscapeOrientation: Qt.InvertedLandscapeOrientation
127 landscapeOrientation: Qt.InvertedLandscapeOrientation
96 invertedLandscapeOrientation: Qt.LandscapeOrientation
128 invertedLandscapeOrientation: Qt.LandscapeOrientation
97− primaryOrientation: Qt.InvertedLandscapeOrientation
129+ portraitOrientation: Qt.PortraitOrientation
130+ invertedPortraitOrientation: Qt.InvertedPortraitOrientation
98 category: "tablet"
131 category: "tablet"
99 }
132 }
100 },
133 },
@@ -102,8 +135,13 @@ QtObject {
102 name: "desktop"
135 name: "desktop"
103 PropertyChanges {
136 PropertyChanges {
104 target: priv
137 target: priv
105− category: "desktop"
138+ primaryOrientation: root.useNativeOrientation
106 supportedOrientations: root.useNativeOrientation
139 supportedOrientations: root.useNativeOrientation
140+ landscapeOrientation: Qt.LandscapeOrientation
141+ invertedLandscapeOrientation: Qt.InvertedLandscapeOrientation
142+ portraitOrientation: Qt.PortraitOrientation
143+ invertedPortraitOrientation: Qt.InvertedPortraitOrientation
144+ category: "desktop"
107 }
145 }
108 }
146 }
109 ]
147 ]
qml/DisabledScreenNotice.qml+44−20
@@ -17,6 +17,7 @@
17import QtQuick 2.4
17import QtQuick 2.4
18import QtQuick.Layouts 1.1
18import QtQuick.Layouts 1.1
19import Ubuntu.Components 1.3
19import Ubuntu.Components 1.3
20+import Unity.Session 0.1
20import QtQuick.Window 2.2
21import QtQuick.Window 2.2
21import "Components"
22import "Components"
22
23
@@ -25,19 +26,36 @@ Item {
25
26
26 property bool infoNoteDisplayed: true
27 property bool infoNoteDisplayed: true
27
28
28− WallpaperResolver {
29+ // For testing
29− width: root.width
30+ property var screen: Screen
30− id: wallpaperResolver
31+ property var orientationLock: OrientationLock
32+
33+ DeviceConfiguration {
34+ id: deviceConfiguration
35+ name: applicationArguments.deviceName
31 }
36 }
32
37
33 Item {
38 Item {
34 id: contentContainer
39 id: contentContainer
40+ objectName: "contentContainer"
35 anchors.centerIn: parent
41 anchors.centerIn: parent
36 height: rotation == 90 || rotation == 270 ? parent.width : parent.height
42 height: rotation == 90 || rotation == 270 ? parent.width : parent.height
37 width: rotation == 90 || rotation == 270 ? parent.height : parent.width
43 width: rotation == 90 || rotation == 270 ? parent.height : parent.width
38
44
45+ property int savedOrientation: deviceConfiguration.primaryOrientation == deviceConfiguration.useNativeOrientation
46+ ? (root.width > root.height ? Qt.LandscapeOrientation : Qt.PortraitOrientation)
47+ : deviceConfiguration.primaryOrientation
48+
39 rotation: {
49 rotation: {
40− switch (Screen.orientation) {
50+ var usedOrientation = root.screen.orientation;
51+
52+ if (root.orientationLock.enabled) {
53+ usedOrientation = savedOrientation;
54+ }
55+
56+ savedOrientation = usedOrientation;
57+
58+ switch (usedOrientation) {
41 case Qt.PortraitOrientation:
59 case Qt.PortraitOrientation:
42 return 0;
60 return 0;
43 case Qt.LandscapeOrientation:
61 case Qt.LandscapeOrientation:
@@ -47,6 +65,8 @@ Item {
47 case Qt.InvertedLandscapeOrientation:
65 case Qt.InvertedLandscapeOrientation:
48 return 90;
66 return 90;
49 }
67 }
68+
69+ return 0;
50 }
70 }
51 transformOrigin: Item.Center
71 transformOrigin: Item.Center
52
72
@@ -60,9 +80,9 @@ Item {
60 }
80 }
61 }
81 }
62
82
63− Image {
83+ Rectangle {
64 anchors.fill: parent
84 anchors.fill: parent
65− source: wallpaperResolver.background
85+ color: "#3b3b3b"
66 }
86 }
67
87
68 Item {
88 Item {
@@ -74,22 +94,26 @@ Item {
74 UbuntuNumberAnimation { }
94 UbuntuNumberAnimation { }
75 }
95 }
76
96
77− Rectangle {
97+ Column {
78− anchors.fill: parent
79− color: "black"
80− opacity: 0.4
81− }
82−
83− Label {
84− id: text
85 anchors.centerIn: parent
98 anchors.centerIn: parent
86 width: parent.width - units.gu(8)
99 width: parent.width - units.gu(8)
87− text: i18n.tr("Your device is now connected to an external display. Use this screen as a touch pad to interact with the mouse.")
100+ spacing: units.gu(4)
88− color: "white"
101+
89− horizontalAlignment: Text.AlignHCenter
102+ Label {
90− verticalAlignment: Text.AlignVCenter
103+ id: text
91− fontSize: "x-large"
104+ text: i18n.tr("Your device is now connected to an external display. Use this screen as a touch pad to interact with the pointer.")
92− wrapMode: Text.Wrap
105+ color: "white"
106+ width: parent.width
107+ fontSize: "large"
108+ wrapMode: Text.Wrap
109+ }
110+ Icon {
111+ height: units.gu(8)
112+ width: height
113+ name: "input-touchpad-symbolic"
114+ color: "white"
115+ anchors.horizontalCenter: parent.horizontalCenter
116+ }
93 }
117 }
94 }
118 }
95
119
qml/Greeter/CoverPage.qml+13−2
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2013,2014,2015 Canonical, Ltd.
2+ * Copyright (C) 2013-2016 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
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
5 * it under the terms of the GNU General Public License as published by
@@ -34,6 +34,7 @@ Showable {
34 readonly property real showProgress: MathUtils.clamp((width - Math.abs(x)) / width, 0, 1)
34 readonly property real showProgress: MathUtils.clamp((width - Math.abs(x)) / width, 0, 1)
35
35
36 signal tease()
36 signal tease()
37+ signal clicked()
37
38
38 function hideRight() {
39 function hideRight() {
39 d.forceRightOnNextHideAnimation = true;
40 d.forceRightOnNextHideAnimation = true;
@@ -55,7 +56,17 @@ Showable {
55 // instead, we can get a little extra horizontal push by using transforms.
56 // instead, we can get a little extra horizontal push by using transforms.
56 transform: Translate { id: translation; x: root.draggable ? launcherOffset : 0 }
57 transform: Translate { id: translation; x: root.draggable ? launcherOffset : 0 }
57
58
58− MouseArea { anchors.fill: parent; }
59+ // Eat events elsewhere on the coverpage, except mouse clicks which we pass
60+ // up (they are used in the NarrowView to hide the cover page)
61+ MouseArea {
62+ anchors.fill: parent
63+ onClicked: root.clicked()
64+
65+ MultiPointTouchArea {
66+ anchors.fill: parent
67+ mouseEnabled: false
68+ }
69+ }
59
70
60 Rectangle {
71 Rectangle {
61 // In case background fails to load
72 // In case background fails to load
qml/Greeter/Infographics.qml+2−1
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013-2016 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
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
5 * it under the terms of the GNU General Public License as published by
@@ -402,6 +402,7 @@ Item {
402
402
403 MouseArea {
403 MouseArea {
404 anchors.fill: dataCircle
404 anchors.fill: dataCircle
405+ enabled: notification.text != ""
405
406
406 onDoubleClicked: {
407 onDoubleClicked: {
407 if (!d.animating) {
408 if (!d.animating) {
qml/Greeter/NarrowView.qml+14−1
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2015 Canonical, Ltd.
2+ * Copyright (C) 2015-2016 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
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
5 * it under the terms of the GNU General Public License as published by
@@ -125,6 +125,18 @@ FocusScope {
125 onCancel: coverPage.show()
125 onCancel: coverPage.show()
126 onEmergencyCall: root.emergencyCall()
126 onEmergencyCall: root.emergencyCall()
127
127
128+ onEnabledChanged: {
129+ if (enabled) {
130+ lockscreen.forceActiveFocus();
131+ }
132+ }
133+
134+ onVisibleChanged: {
135+ if (visible) {
136+ lockscreen.forceActiveFocus();
137+ }
138+ }
139+
128 function maybeShow() {
140 function maybeShow() {
129 if (root.locked && !shown) {
141 if (root.locked && !shown) {
130 showNow();
142 showNow();
@@ -145,6 +157,7 @@ FocusScope {
145 width: parent.width
157 width: parent.width
146 background: root.background
158 background: root.background
147 onTease: root.tease()
159 onTease: root.tease()
160+ onClicked: hide()
148
161
149 onShowProgressChanged: {
162 onShowProgressChanged: {
150 if (showProgress === 1) {
163 if (showProgress === 1) {
qml/Launcher/Launcher.qml+144−11
@@ -19,21 +19,26 @@ import "../Components"
19import Ubuntu.Components 1.3
19import Ubuntu.Components 1.3
20import Ubuntu.Gestures 0.1
20import Ubuntu.Gestures 0.1
21import Unity.Launcher 0.1
21import Unity.Launcher 0.1
22+import GlobalShortcut 1.0
22
23
23−Item {
24+FocusScope {
24 id: root
25 id: root
25
26
26 property bool autohideEnabled: false
27 property bool autohideEnabled: false
28+ property bool lockedVisible: false
27 property bool available: true // can be used to disable all interactions
29 property bool available: true // can be used to disable all interactions
28 property alias inverted: panel.inverted
30 property alias inverted: panel.inverted
29 property bool shadeBackground: true // can be used to disable background shade when launcher is visible
31 property bool shadeBackground: true // can be used to disable background shade when launcher is visible
30
32
31− property int panelWidth: units.gu(8)
33+ property int panelWidth: units.gu(10)
32 property int dragAreaWidth: units.gu(1)
34 property int dragAreaWidth: units.gu(1)
33 property int minimizeDistance: units.gu(26)
35 property int minimizeDistance: units.gu(26)
34 property real progress: dragArea.dragging && dragArea.touchX > panelWidth ?
36 property real progress: dragArea.dragging && dragArea.touchX > panelWidth ?
35 (width * (dragArea.touchX-panelWidth) / (width - panelWidth)) : 0
37 (width * (dragArea.touchX-panelWidth) / (width - panelWidth)) : 0
36
38
39+ property bool superPressed: false
40+ property bool superTabPressed: false
41+
37 readonly property bool dragging: dragArea.dragging
42 readonly property bool dragging: dragArea.dragging
38 readonly property real dragDistance: dragArea.dragging ? dragArea.touchX : 0
43 readonly property real dragDistance: dragArea.dragging ? dragArea.touchX : 0
39 readonly property real visibleWidth: panel.width + panel.x
44 readonly property real visibleWidth: panel.width + panel.x
@@ -57,12 +62,55 @@ Item {
57 }
62 }
58 }
63 }
59
64
65+ onSuperPressedChanged: {
66+ if (superPressed) {
67+ superPressTimer.start();
68+ superLongPressTimer.start();
69+ } else {
70+ superPressTimer.stop();
71+ superLongPressTimer.stop();
72+ launcher.switchToNextState("");
73+ panel.shortcutHintsShown = false;
74+ }
75+ }
76+
77+ onSuperTabPressedChanged: {
78+ if (superTabPressed) {
79+ switchToNextState("visible")
80+ panel.highlightIndex = -1;
81+ root.focus = true;
82+ superPressTimer.stop();
83+ superLongPressTimer.stop();
84+ } else {
85+ if (panel.highlightIndex == -1) {
86+ showDashHome();
87+ } else if (panel.highlightIndex >= 0){
88+ launcherApplicationSelected(LauncherModel.get(panel.highlightIndex).appId);
89+ }
90+ panel.highlightIndex = -2;
91+ switchToNextState("");
92+ root.focus = false;
93+ }
94+ }
95+
96+ onLockedVisibleChanged: {
97+ if (lockedVisible && state == "") {
98+ panel.dismissTimer.stop();
99+ fadeOutAnimation.stop();
100+ switchToNextState("visible")
101+ } else if (!lockedVisible && state == "visible") {
102+ hide();
103+ }
104+ }
105+
60 function hide() {
106 function hide() {
61 switchToNextState("")
107 switchToNextState("")
62 }
108 }
63
109
64 function fadeOut() {
110 function fadeOut() {
65− fadeOutAnimation.start();
111+ if (!root.lockedVisible) {
112+ fadeOutAnimation.start();
113+ }
66 }
114 }
67
115
68 function switchToNextState(state) {
116 function switchToNextState(state) {
@@ -90,6 +138,77 @@ Item {
90 }
138 }
91 }
139 }
92
140
141+ function openForKeyboardNavigation() {
142+ panel.highlightIndex = -1; // The BFB
143+ root.focus = true;
144+ switchToNextState("visible")
145+ }
146+
147+ Keys.onPressed: {
148+ switch (event.key) {
149+ case Qt.Key_Backtab:
150+ panel.highlightPrevious();
151+ event.accepted = true;
152+ break;
153+ case Qt.Key_Up:
154+ if (root.inverted) {
155+ panel.highlightNext()
156+ } else {
157+ panel.highlightPrevious();
158+ }
159+ event.accepted = true;
160+ break;
161+ case Qt.Key_Tab:
162+ panel.highlightNext();
163+ event.accepted = true;
164+ break;
165+ case Qt.Key_Down:
166+ if (root.inverted) {
167+ panel.highlightPrevious();
168+ } else {
169+ panel.highlightNext();
170+ }
171+ event.accepted = true;
172+ break;
173+ case Qt.Key_Right:
174+ panel.openQuicklist(panel.highlightIndex)
175+ event.accepted = true;
176+ break;
177+ case Qt.Key_Escape:
178+ panel.highlightIndex = -2;
179+ // Falling through intentionally
180+ case Qt.Key_Enter:
181+ case Qt.Key_Return:
182+ case Qt.Key_Space:
183+ if (panel.highlightIndex == -1) {
184+ showDashHome();
185+ } else if (panel.highlightIndex >= 0) {
186+ launcherApplicationSelected(LauncherModel.get(panel.highlightIndex).appId);
187+ }
188+ root.hide();
189+ panel.highlightIndex = -2
190+ event.accepted = true;
191+ root.focus = false;
192+ }
193+ }
194+
195+ Timer {
196+ id: superPressTimer
197+ interval: 200
198+ onTriggered: {
199+ switchToNextState("visible")
200+ }
201+ }
202+
203+ Timer {
204+ id: superLongPressTimer
205+ interval: 1000
206+ onTriggered: {
207+ switchToNextState("visible")
208+ panel.shortcutHintsShown = true;
209+ }
210+ }
211+
93 Timer {
212 Timer {
94 id: teaseTimer
213 id: teaseTimer
95 interval: mode == "teasing" ? 200 : 300
214 interval: mode == "teasing" ? 200 : 300
@@ -106,6 +225,13 @@ Item {
106 interval: 1
225 interval: 1
107 property string nextState: ""
226 property string nextState: ""
108 onTriggered: {
227 onTriggered: {
228+ if (root.lockedVisible && nextState == "") {
229+ // Due to binding updates when switching between modes
230+ // it could happen that our request to show will be overwritten
231+ // with a hide request. Rewrite it when we know hiding is not allowed.
232+ nextState = "visible"
233+ }
234+
109 // switching to an intermediate state here to make sure all the
235 // switching to an intermediate state here to make sure all the
110 // values are restored, even if we were already in the target state
236 // values are restored, even if we were already in the target state
111 root.state = "tmp"
237 root.state = "tmp"
@@ -151,7 +277,7 @@ Item {
151
277
152 MouseArea {
278 MouseArea {
153 id: launcherDragArea
279 id: launcherDragArea
154− enabled: root.available && (root.state == "visible" || root.state == "visibleTemporary")
280+ enabled: root.available && (root.state == "visible" || root.state == "visibleTemporary") && !root.lockedVisible
155 anchors.fill: panel
281 anchors.fill: panel
156 anchors.rightMargin: -units.gu(2)
282 anchors.rightMargin: -units.gu(2)
157 drag {
283 drag {
@@ -172,9 +298,10 @@ Item {
172 InverseMouseArea {
298 InverseMouseArea {
173 id: closeMouseArea
299 id: closeMouseArea
174 anchors.fill: panel
300 anchors.fill: panel
175− enabled: root.shadeBackground && root.state == "visible"
301+ enabled: root.shadeBackground && root.state == "visible" && (!root.lockedVisible || panel.highlightIndex >= -1)
176 visible: enabled
302 visible: enabled
177 onPressed: {
303 onPressed: {
304+ panel.highlightIndex = -2
178 root.hide();
305 root.hide();
179 }
306 }
180 }
307 }
@@ -183,7 +310,7 @@ Item {
183 id: backgroundShade
310 id: backgroundShade
184 anchors.fill: parent
311 anchors.fill: parent
185 color: "black"
312 color: "black"
186− opacity: root.shadeBackground && root.state == "visible" ? 0.6 : 0
313+ opacity: root.shadeBackground && root.state == "visible" && !root.lockedVisible ? 0.6 : 0
187
314
188 Behavior on opacity { NumberAnimation { duration: UbuntuAnimation.BriskDuration } }
315 Behavior on opacity { NumberAnimation { duration: UbuntuAnimation.BriskDuration } }
189 }
316 }
@@ -202,8 +329,8 @@ Item {
202 rotation: -90
329 rotation: -90
203 anchors.centerIn: parent
330 anchors.centerIn: parent
204 gradient: Gradient {
331 gradient: Gradient {
205− GradientStop { position: 0.0; color: panel.color}
332+ GradientStop { position: 0.0; color: Qt.rgba(panel.color.r, panel.color.g, panel.color.b, .5)}
206− GradientStop { position: 1.0; color: Qt.rgba(panel.r,panel.g,panel.b,0)}
333+ GradientStop { position: 1.0; color: Qt.rgba(panel.color.r,panel.color.g,panel.color.b,0)}
207 }
334 }
208 }
335 }
209 }
336 }
@@ -227,7 +354,7 @@ Item {
227 Connections {
354 Connections {
228 target: panel.dismissTimer
355 target: panel.dismissTimer
229 onTriggered: {
356 onTriggered: {
230− if (root.autohideEnabled) {
357+ if (root.autohideEnabled && !root.lockedVisible) {
231 if (!panel.preventHiding) {
358 if (!panel.preventHiding) {
232 root.state = ""
359 root.state = ""
233 } else {
360 } else {
@@ -240,11 +367,11 @@ Item {
240 property bool animate: true
367 property bool animate: true
241
368
242 onApplicationSelected: {
369 onApplicationSelected: {
243− root.state = ""
370+ root.hide();
244 launcherApplicationSelected(appId)
371 launcherApplicationSelected(appId)
245 }
372 }
246 onShowDashHome: {
373 onShowDashHome: {
247− root.state = ""
374+ root.hide();
248 root.showDashHome();
375 root.showDashHome();
249 }
376 }
250
377
@@ -254,6 +381,12 @@ Item {
254 }
381 }
255 }
382 }
256
383
384+ onKbdNavigationCancelled: {
385+ panel.highlightIndex = -2;
386+ root.hide();
387+ root.focus = false;
388+ }
389+
257 Behavior on x {
390 Behavior on x {
258 enabled: !dragArea.dragging && !launcherDragArea.drag.active && panel.animate;
391 enabled: !dragArea.dragging && !launcherDragArea.drag.active && panel.animate;
259 NumberAnimation {
392 NumberAnimation {
qml/Launcher/LauncherDelegate.qml+55−20
@@ -20,6 +20,7 @@ import Ubuntu.Components 1.3
20Item {
20Item {
21 id: root
21 id: root
22
22
23+ property int itemIndex: 0
23 property string iconName
24 property string iconName
24 property int count: 0
25 property int count: 0
25 property bool countVisible: false
26 property bool countVisible: false
@@ -29,10 +30,12 @@ Item {
29 property real maxAngle: 0
30 property real maxAngle: 0
30 property bool inverted: false
31 property bool inverted: false
31 property bool alerting: false
32 property bool alerting: false
32− readonly property alias wiggling: wiggleAnim.running
33+ property bool highlighted: false
34+ property bool shortcutHintShown: false
33
35
34 readonly property int effectiveHeight: Math.cos(angle * Math.PI / 180) * itemHeight
36 readonly property int effectiveHeight: Math.cos(angle * Math.PI / 180) * itemHeight
35 readonly property real foldedHeight: Math.cos(maxAngle * Math.PI / 180) * itemHeight
37 readonly property real foldedHeight: Math.cos(maxAngle * Math.PI / 180) * itemHeight
38+ readonly property alias wiggling: wiggleAnim.running
36
39
37 property int itemWidth
40 property int itemWidth
38 property int itemHeight
41 property int itemHeight
@@ -121,20 +124,32 @@ Item {
121
124
122 Item {
125 Item {
123 id: iconItem
126 id: iconItem
124− width: parent.itemWidth + units.gu(1)
127+ width: root.width
125 height: parent.itemHeight + units.gu(1)
128 height: parent.itemHeight + units.gu(1)
126 anchors.centerIn: parent
129 anchors.centerIn: parent
127
130
131+ Image {
132+ objectName: "focusRing"
133+ anchors.centerIn: iconShape
134+ height: width * 15 / 16
135+ width: iconShape.width + units.gu(1)
136+ source: "graphics/launcher-app-focus-ring.svg"
137+ sourceSize.width: width
138+ sourceSize.height: height
139+ visible: root.highlighted
140+ }
141+
128 ProportionalShape {
142 ProportionalShape {
129 id: iconShape
143 id: iconShape
130 anchors.centerIn: parent
144 anchors.centerIn: parent
131− width: parent.width - units.gu(2)
145+ width: root.itemWidth
132 aspect: UbuntuShape.DropShadow
146 aspect: UbuntuShape.DropShadow
133 source: Image {
147 source: Image {
134 id: iconImage
148 id: iconImage
135 sourceSize.width: iconShape.width
149 sourceSize.width: iconShape.width
136 sourceSize.height: iconShape.height
150 sourceSize.height: iconShape.height
137 source: root.iconName
151 source: root.iconName
152+ cache: false // see lpbug#1543290 why no cache
138 }
153 }
139 }
154 }
140
155
@@ -144,7 +159,8 @@ Item {
144 anchors {
159 anchors {
145 right: parent.right
160 right: parent.right
146 bottom: parent.bottom
161 bottom: parent.bottom
147− margins: units.dp(3)
162+ rightMargin: (iconItem.width - root.itemWidth) / 2 - units.dp(2)
163+ margins: units.dp(5)
148 }
164 }
149 width: Math.min(root.itemWidth, Math.max(units.gu(2), countLabel.implicitWidth + units.gu(1)))
165 width: Math.min(root.itemWidth, Math.max(units.gu(2), countLabel.implicitWidth + units.gu(1)))
150 height: units.gu(2)
166 height: units.gu(2)
@@ -172,16 +188,11 @@ Item {
172 id: progressOverlay
188 id: progressOverlay
173 objectName: "progressOverlay"
189 objectName: "progressOverlay"
174
190
175− anchors {
191+ anchors.centerIn: parent
176− left: iconItem.left
192+ width: root.itemWidth * .8
177− right: iconItem.right
178− verticalCenter: parent.verticalCenter
179− leftMargin: units.gu(1.5)
180− rightMargin: units.gu(1.5)
181− }
182 height: units.gu(1)
193 height: units.gu(1)
183 visible: root.progress > -1
194 visible: root.progress > -1
184− color: UbuntuColors.darkGrey
195+ backgroundColor: UbuntuColors.darkGrey
185 borderSource: "none"
196 borderSource: "none"
186
197
187 Item {
198 Item {
@@ -199,32 +210,56 @@ Item {
199 top: parent.top
210 top: parent.top
200 bottom: parent.bottom
211 bottom: parent.bottom
201 }
212 }
202− color: "white"
213+ backgroundColor: "white"
203 borderSource: "none"
214 borderSource: "none"
204 width: progressOverlay.width
215 width: progressOverlay.width
205 }
216 }
206 }
217 }
207 }
218 }
208
219
209− Image {
220+ Column {
210− objectName: "runningHighlight"
211 anchors {
221 anchors {
212 left: parent.left
222 left: parent.left
213 verticalCenter: parent.verticalCenter
223 verticalCenter: parent.verticalCenter
214 }
224 }
215− visible: root.itemRunning
225+ spacing: units.gu(.5)
216− rotation: 180
226+ Repeater {
217− source: "graphics/focused_app_arrow.png"
227+ model: 1 // TODO: This should be "Math.min(3, app.surfaceCount)" once we have multiple surfaces
228+ Rectangle {
229+ objectName: "runningHighlight" + index
230+ width: units.gu(0.25)
231+ height: units.gu(.5)
232+ color: "white"
233+ visible: root.itemRunning
234+ }
235+ }
218 }
236 }
219
237
220− Image {
238+ Rectangle {
221 objectName: "focusedHighlight"
239 objectName: "focusedHighlight"
222 anchors {
240 anchors {
223 right: parent.right
241 right: parent.right
224 verticalCenter: parent.verticalCenter
242 verticalCenter: parent.verticalCenter
225 }
243 }
244+ width: units.gu(0.25)
245+ height: units.gu(.5)
246+ color: "white"
226 visible: root.itemFocused
247 visible: root.itemFocused
227− source: "graphics/focused_app_arrow.png"
248+ }
249+
250+ Rectangle {
251+ objectName: "shortcutHint"
252+ anchors.centerIn: parent
253+ width: units.gu(3)
254+ height: width
255+ color: "#E0292929"
256+ visible: root.shortcutHintShown
257+ Label {
258+ anchors.centerIn: parent
259+ text: (itemIndex + 1) % 10
260+ color: "white"
261+ font.weight: Font.DemiBold
262+ }
228 }
263 }
229 }
264 }
230
265
qml/Launcher/LauncherPanel.qml+122−51
@@ -19,12 +19,13 @@ import Ubuntu.Components 1.3
19import Ubuntu.Components.ListItems 1.3 as ListItems
19import Ubuntu.Components.ListItems 1.3 as ListItems
20import Unity.Launcher 0.1
20import Unity.Launcher 0.1
21import Ubuntu.Components.Popups 1.3
21import Ubuntu.Components.Popups 1.3
22+import GlobalShortcut 1.0
22import "../Components/ListItems"
23import "../Components/ListItems"
23import "../Components/"
24import "../Components/"
24
25
25Rectangle {
26Rectangle {
26 id: root
27 id: root
27− color: "#B2000000"
28+ color: "#E0292929"
28
29
29 rotation: inverted ? 180 : 0
30 rotation: inverted ? 180 : 0
30
31
@@ -33,11 +34,13 @@ Rectangle {
33 property bool dragging: false
34 property bool dragging: false
34 property bool moving: launcherListView.moving || launcherListView.flicking
35 property bool moving: launcherListView.moving || launcherListView.flicking
35 property bool preventHiding: moving || dndArea.draggedIndex >= 0 || quickList.state === "open" || dndArea.pressed
36 property bool preventHiding: moving || dndArea.draggedIndex >= 0 || quickList.state === "open" || dndArea.pressed
36− || mouseEventEater.containsMouse || dashItem.hovered
37+ || mouseEventEater.containsMouse || dashItem.hovered
37− property int highlightIndex: -1
38+ property int highlightIndex: -2
39+ property bool shortcutHintsShown: false
38
40
39 signal applicationSelected(string appId)
41 signal applicationSelected(string appId)
40 signal showDashHome()
42 signal showDashHome()
43+ signal kbdNavigationCancelled()
41
44
42 onXChanged: {
45 onXChanged: {
43 if (quickList.state == "open") {
46 if (quickList.state == "open") {
@@ -45,6 +48,26 @@ Rectangle {
45 }
48 }
46 }
49 }
47
50
51+ function highlightNext() {
52+ highlightIndex++;
53+ if (highlightIndex >= launcherListView.count) {
54+ highlightIndex = -1;
55+ }
56+ launcherListView.moveToIndex(Math.max(highlightIndex, 0));
57+ }
58+ function highlightPrevious() {
59+ highlightIndex--;
60+ if (highlightIndex <= -2) {
61+ highlightIndex = launcherListView.count - 1;
62+ }
63+ launcherListView.moveToIndex(Math.max(highlightIndex, 0));
64+ }
65+ function openQuicklist(index) {
66+ quickList.open(index);
67+ quickList.selectedIndex = 0;
68+ quickList.focus = true;
69+ }
70+
48 MouseArea {
71 MouseArea {
49 id: mouseEventEater
72 id: mouseEventEater
50 anchors.fill: parent
73 anchors.fill: parent
@@ -57,24 +80,16 @@ Rectangle {
57 fill: parent
80 fill: parent
58 }
81 }
59
82
60− Item {
83+ Rectangle {
61 objectName: "buttonShowDashHome"
84 objectName: "buttonShowDashHome"
62 width: parent.width
85 width: parent.width
63− height: units.gu(7)
86+ height: width * .9
64− clip: true
87+ color: UbuntuColors.orange
65−
88+ readonly property bool highlighted: root.highlightIndex == -1;
66− UbuntuShape {
67− anchors {
68− fill: parent
69− topMargin: -units.gu(2)
70− }
71− aspect: UbuntuShape.Flat
72− backgroundColor: UbuntuColors.orange
73− }
74
89
75 Image {
90 Image {
76 objectName: "dashItem"
91 objectName: "dashItem"
77− width: units.gu(5)
92+ width: parent.width * .6
78 height: width
93 height: width
79 anchors.centerIn: parent
94 anchors.centerIn: parent
80 source: "graphics/home.png"
95 source: "graphics/home.png"
@@ -85,6 +100,14 @@ Rectangle {
85 anchors.fill: parent
100 anchors.fill: parent
86 onClicked: root.showDashHome()
101 onClicked: root.showDashHome()
87 }
102 }
103+ Rectangle {
104+ objectName: "bfbFocusHighlight"
105+ anchors.fill: parent
106+ border.color: "white"
107+ border.width: units.dp(1)
108+ color: "transparent"
109+ visible: parent.highlighted
110+ }
88 }
111 }
89
112
90 Item {
113 Item {
@@ -102,10 +125,8 @@ Rectangle {
102 objectName: "launcherListView"
125 objectName: "launcherListView"
103 anchors {
126 anchors {
104 fill: parent
127 fill: parent
105− topMargin: -extensionSize + units.gu(0.5)
128+ topMargin: -extensionSize + width * .15
106− bottomMargin: -extensionSize + units.gu(1)
129+ bottomMargin: -extensionSize + width * .15
107− leftMargin: units.gu(0.5)
108− rightMargin: units.gu(0.5)
109 }
130 }
110 topMargin: extensionSize
131 topMargin: extensionSize
111 bottomMargin: extensionSize
132 bottomMargin: extensionSize
@@ -140,11 +161,11 @@ Rectangle {
140 }
161 }
141
162
142 // The height of the area where icons start getting folded
163 // The height of the area where icons start getting folded
143− property int foldingStartHeight: units.gu(6.5)
164+ property int foldingStartHeight: itemHeight
144 // The height of the area where the items reach the final folding angle
165 // The height of the area where the items reach the final folding angle
145 property int foldingStopHeight: foldingStartHeight - itemHeight - spacing
166 property int foldingStopHeight: foldingStartHeight - itemHeight - spacing
146− property int itemWidth: units.gu(7)
167+ property int itemWidth: width * .75
147− property int itemHeight: units.gu(6.5)
168+ property int itemHeight: itemWidth * 15 / 16 + units.gu(1)
148 property int clickFlickSpeed: units.gu(60)
169 property int clickFlickSpeed: units.gu(60)
149 property int draggedIndex: dndArea.draggedIndex
170 property int draggedIndex: dndArea.draggedIndex
150 property real realContentY: contentY - originY + topMargin
171 property real realContentY: contentY - originY + topMargin
@@ -172,12 +193,24 @@ Rectangle {
172
193
173 UbuntuNumberAnimation {
194 UbuntuNumberAnimation {
174 id: moveAnimation
195 id: moveAnimation
196+ objectName: "moveAnimation"
175 target: launcherListView
197 target: launcherListView
176 property: "contentY"
198 property: "contentY"
177 function moveTo(contentY) {
199 function moveTo(contentY) {
178 from = launcherListView.contentY;
200 from = launcherListView.contentY;
179 to = contentY;
201 to = contentY;
180− start();
202+ restart();
203+ }
204+ }
205+ function moveToIndex(index) {
206+ var totalItemHeight = launcherListView.itemHeight + launcherListView.spacing
207+ var itemPosition = index * totalItemHeight;
208+ var height = launcherListView.height - launcherListView.topMargin - launcherListView.bottomMargin
209+ var distanceToEnd = index == 0 || index == launcherListView.count - 1 ? 0 : totalItemHeight
210+ if (itemPosition + totalItemHeight + distanceToEnd > launcherListView.contentY + launcherListView.originY + launcherListView.topMargin + height) {
211+ moveAnimation.moveTo(itemPosition + launcherListView.itemHeight - launcherListView.topMargin - height + distanceToEnd - launcherListView.originY);
212+ } else if (itemPosition - distanceToEnd < launcherListView.contentY - launcherListView.originY + launcherListView.topMargin) {
213+ moveAnimation.moveTo(itemPosition - distanceToEnd - launcherListView.topMargin + launcherListView.originY);
181 }
214 }
182 }
215 }
183
216
@@ -192,9 +225,10 @@ Rectangle {
192 // the right app when running autopilot tests for
225 // the right app when running autopilot tests for
193 // multiple apps.
226 // multiple apps.
194 readonly property string appId: model.appId
227 readonly property string appId: model.appId
228+ itemIndex: index
195 itemHeight: launcherListView.itemHeight
229 itemHeight: launcherListView.itemHeight
196 itemWidth: launcherListView.itemWidth
230 itemWidth: launcherListView.itemWidth
197− width: itemWidth
231+ width: parent.width
198 height: itemHeight
232 height: itemHeight
199 iconName: model.icon
233 iconName: model.icon
200 count: model.count
234 count: model.count
@@ -204,6 +238,8 @@ Rectangle {
204 itemFocused: model.focused
238 itemFocused: model.focused
205 inverted: root.inverted
239 inverted: root.inverted
206 alerting: model.alerting
240 alerting: model.alerting
241+ highlighted: root.highlightIndex == index
242+ shortcutHintShown: root.shortcutHintsShown && index <= 9
207 z: -Math.abs(offset)
243 z: -Math.abs(offset)
208 maxAngle: 55
244 maxAngle: 55
209 property bool dragging: false
245 property bool dragging: false
@@ -241,14 +277,7 @@ Rectangle {
241 onAlertingChanged: {
277 onAlertingChanged: {
242 if(alerting) {
278 if(alerting) {
243 if (!dragging && (launcherListView.peekingIndex === -1 || launcher.visibleWidth > 0)) {
279 if (!dragging && (launcherListView.peekingIndex === -1 || launcher.visibleWidth > 0)) {
244− var itemPosition = index * launcherListView.itemHeight;
280+ launcherListView.moveToIndex(index)
245− var height = launcherListView.height - launcherListView.topMargin - launcherListView.bottomMargin
246− var distanceToEnd = index == 0 || index == launcherListView.count - 1 ? 0 : launcherListView.itemHeight
247− if (itemPosition + launcherListView.itemHeight + distanceToEnd > launcherListView.contentY + launcherListView.topMargin + height) {
248− moveAnimation.moveTo(itemPosition + launcherListView.itemHeight - launcherListView.topMargin - height + distanceToEnd);
249− } else if (itemPosition - distanceToEnd < launcherListView.contentY + launcherListView.topMargin) {
250− moveAnimation.moveTo(itemPosition - distanceToEnd - launcherListView.topMargin);
251− }
252 if (!dragging && launcher.state !== "visible") {
281 if (!dragging && launcher.state !== "visible") {
253 peekingAnimation.start()
282 peekingAnimation.start()
254 }
283 }
@@ -402,10 +431,7 @@ Rectangle {
402
431
403 if (mouse.button & Qt.RightButton) { // context menu
432 if (mouse.button & Qt.RightButton) { // context menu
404 // Opening QuickList
433 // Opening QuickList
405− quickList.item = clickedItem;
434+ quickList.open(index);
406− quickList.model = launcherListView.model.get(index).quickList;
407− quickList.appId = launcherListView.model.get(index).appId;
408− quickList.state = "open";
409 return;
435 return;
410 }
436 }
411
437
@@ -413,10 +439,8 @@ Rectangle {
413
439
414 // First/last item do the scrolling at more than 12 degrees
440 // First/last item do the scrolling at more than 12 degrees
415 if (index == 0 || index == launcherListView.count - 1) {
441 if (index == 0 || index == launcherListView.count - 1) {
416− if (clickedItem.angle > 12) {
442+ if (clickedItem.angle > 12 || clickedItem.angle < -12) {
417− launcherListView.flick(0, -launcherListView.clickFlickSpeed);
443+ launcherListView.moveToIndex(index);
418− } else if (clickedItem.angle < -12) {
419− launcherListView.flick(0, launcherListView.clickFlickSpeed);
420 } else {
444 } else {
421 root.applicationSelected(LauncherModel.get(index).appId);
445 root.applicationSelected(LauncherModel.get(index).appId);
422 }
446 }
@@ -424,10 +448,8 @@ Rectangle {
424 }
448 }
425
449
426 // the rest launches apps up to an angle of 30 degrees
450 // the rest launches apps up to an angle of 30 degrees
427− if (clickedItem.angle > 30) {
451+ if (clickedItem.angle > 30 || clickedItem.angle < -30) {
428− launcherListView.flick(0, -launcherListView.clickFlickSpeed);
452+ launcherListView.moveToIndex(index);
429− } else if (clickedItem.angle < -30) {
430− launcherListView.flick(0, launcherListView.clickFlickSpeed);
431 } else {
453 } else {
432 root.applicationSelected(LauncherModel.get(index).appId);
454 root.applicationSelected(LauncherModel.get(index).appId);
433 }
455 }
@@ -481,11 +503,7 @@ Rectangle {
481
503
482 draggedIndex = Math.floor((mouse.y + launcherListView.realContentY) / launcherListView.realItemHeight);
504 draggedIndex = Math.floor((mouse.y + launcherListView.realContentY) / launcherListView.realItemHeight);
483
505
484− // Opening QuickList
506+ quickList.open(draggedIndex)
485− quickList.item = selectedItem;
486− quickList.model = launcherListView.model.get(draggedIndex).quickList;
487− quickList.appId = launcherListView.model.get(draggedIndex).appId;
488− quickList.state = "open";
489
507
490 launcherListView.interactive = false
508 launcherListView.interactive = false
491
509
@@ -644,7 +662,9 @@ Rectangle {
644 enabled: quickList.state == "open" || pressed
662 enabled: quickList.state == "open" || pressed
645
663
646 onClicked: {
664 onClicked: {
647− quickList.state = ""
665+ quickList.state = "";
666+ quickList.focus = false;
667+ root.kbdNavigationCancelled();
648 }
668 }
649
669
650 // Forward for dragging to work when quickList is open
670 // Forward for dragging to work when quickList is open
@@ -693,12 +713,60 @@ Rectangle {
693 property var model
713 property var model
694 property string appId
714 property string appId
695 property var item
715 property var item
716+ property int selectedIndex: -1
717+
718+ Keys.onPressed: {
719+ switch (event.key) {
720+ case Qt.Key_Down:
721+ selectedIndex++;
722+ if (selectedIndex >= popoverRepeater.count) {
723+ selectedIndex = 0;
724+ }
725+ event.accepted = true;
726+ break;
727+ case Qt.Key_Up:
728+ selectedIndex--;
729+ if (selectedIndex < 0) {
730+ selectedIndex = popoverRepeater.count - 1;
731+ }
732+ event.accepted = true;
733+ break;
734+ case Qt.Key_Left:
735+ case Qt.Key_Escape:
736+ quickList.selectedIndex = -1;
737+ quickList.focus = false;
738+ quickList.state = ""
739+ event.accepted = true;
740+ break;
741+ case Qt.Key_Enter:
742+ case Qt.Key_Return:
743+ case Qt.Key_Space:
744+ if (quickList.selectedIndex >= 0) {
745+ LauncherModel.quickListActionInvoked(quickList.appId, quickList.selectedIndex)
746+ }
747+ quickList.selectedIndex = -1;
748+ quickList.focus = false;
749+ quickList.state = ""
750+ root.kbdNavigationCancelled();
751+ event.accepted = true;
752+ break;
753+ }
754+ }
696
755
697 // internal
756 // internal
698 property int itemCenter: item ? root.mapFromItem(quickList.item).y + (item.height / 2) + quickList.item.offset : units.gu(1)
757 property int itemCenter: item ? root.mapFromItem(quickList.item).y + (item.height / 2) + quickList.item.offset : units.gu(1)
699 property int offset: itemCenter + (height/2) + units.gu(1) > parent.height ? -itemCenter - (height/2) - units.gu(1) + parent.height :
758 property int offset: itemCenter + (height/2) + units.gu(1) > parent.height ? -itemCenter - (height/2) - units.gu(1) + parent.height :
700 itemCenter - (height/2) < units.gu(1) ? (height/2) - itemCenter + units.gu(1) : 0
759 itemCenter - (height/2) < units.gu(1) ? (height/2) - itemCenter + units.gu(1) : 0
701
760
761+ function open(index) {
762+ var itemPosition = index * launcherListView.itemHeight;
763+ var height = launcherListView.height - launcherListView.topMargin - launcherListView.bottomMargin
764+ item = launcherListView.itemAt(launcherListView.width / 2, itemPosition + launcherListView.itemHeight / 2);
765+ quickList.model = launcherListView.model.get(index).quickList;
766+ quickList.appId = launcherListView.model.get(index).appId;
767+ quickList.state = "open";
768+ }
769+
702 Column {
770 Column {
703 id: quickListColumn
771 id: quickListColumn
704 width: parent.width
772 width: parent.width
@@ -712,6 +780,7 @@ Rectangle {
712 objectName: "quickListEntry" + index
780 objectName: "quickListEntry" + index
713 text: (model.clickable ? "" : "<b>") + model.label + (model.clickable ? "" : "</b>")
781 text: (model.clickable ? "" : "<b>") + model.label + (model.clickable ? "" : "</b>")
714 highlightWhenPressed: model.clickable
782 highlightWhenPressed: model.clickable
783+ selected: index === quickList.selectedIndex
715
784
716 // FIXME: This is a workaround for the theme not being context sensitive. I.e. the
785 // FIXME: This is a workaround for the theme not being context sensitive. I.e. the
717 // ListItems don't know that they are sitting in a themed Popover where the color
786 // ListItems don't know that they are sitting in a themed Popover where the color
@@ -727,6 +796,8 @@ Rectangle {
727 // Unsetting model to prevent showing changing entries during fading out
796 // Unsetting model to prevent showing changing entries during fading out
728 // that may happen because of triggering an action.
797 // that may happen because of triggering an action.
729 LauncherModel.quickListActionInvoked(quickList.appId, index);
798 LauncherModel.quickListActionInvoked(quickList.appId, index);
799+ quickList.focus = false;
800+ root.kbdNavigationCancelled();
730 quickList.model = undefined;
801 quickList.model = undefined;
731 }
802 }
732 }
803 }
qml/Launcher/graphics/launcher-app-focus-ring.svgnew file+12
@@ -0,0 +1,12 @@
1+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2+<svg width="172px" height="163px" viewBox="0 0 172 163" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
3+ <!-- Generator: Sketch 3.4.4 (17249) - http://www.bohemiancoding.com/sketch -->
4+ <title>Shape</title>
5+ <desc>Created with Sketch.</desc>
6+ <defs></defs>
7+ <g id="•-Launcher" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
8+ <g id="Artboard-9" sketch:type="MSArtboardGroup" transform="translate(-163.000000, -1436.000000)" fill="#E95420">
9+ <path d="M221.983432,1440 L221.983432,1440 C195.6127,1440 184.708233,1442.4723 177.107949,1450.10734 C169.476819,1457.77336 167,1468.79245 167,1495.3481 L167,1538.9019 C167,1565.45755 169.476819,1576.47664 177.107949,1584.14266 C184.708233,1591.7777 195.6127,1594.25 221.983432,1594.25 L276.016868,1594.25 C302.387595,1594.25 313.291998,1591.77771 320.892221,1584.14264 C328.523252,1576.47663 331,1565.45769 331,1538.9019 L331,1495.3481 C331,1468.79231 328.523252,1457.77337 320.892221,1450.10736 C313.291998,1442.47229 302.387595,1440 276.016868,1440 L221.983432,1440 Z M221.983432,1436 L276.016868,1436 C302.345315,1436 314.848953,1438.36655 323.727108,1447.2854 C332.633306,1456.23243 335,1468.85167 335,1495.3481 L335,1538.9019 C335,1565.39833 332.633306,1578.01757 323.727108,1586.9646 C314.848953,1595.88345 302.345315,1598.25 276.016868,1598.25 L221.983432,1598.25 C195.654985,1598.25 183.151291,1595.88345 174.273077,1586.96463 C165.366772,1578.0176 163,1565.39822 163,1538.9019 L163,1495.3481 C163,1468.85178 165.366772,1456.2324 174.273077,1447.28537 C183.151291,1438.36655 195.654985,1436 221.983432,1436 L221.983432,1436 Z" id="Shape" sketch:type="MSShapeGroup"></path>
10+ </g>
11+ </g>
12+</svg>
qml/Notifications/Notification.qml+9−5
@@ -23,7 +23,7 @@ import QMenuModel 0.1
23import Utils 0.1
23import Utils 0.1
24import "../Components"
24import "../Components"
25
25
26−Item {
26+StyledItem {
27 id: notification
27 id: notification
28
28
29 property alias iconSource: icon.fileSource
29 property alias iconSource: icon.fileSource
@@ -58,6 +58,10 @@ Item {
58 color: (type === Notification.Confirmation && notificationList.useModal && !greeter.shown) || darkOnBright ? sdLightGrey : Qt.rgba(0.132, 0.117, 0.109, 0.97)
58 color: (type === Notification.Confirmation && notificationList.useModal && !greeter.shown) || darkOnBright ? sdLightGrey : Qt.rgba(0.132, 0.117, 0.109, 0.97)
59 opacity: 1 - (x / notification.width) // FIXME: non-zero initially because of LP: #1354406 workaround, we want this to start at 0 upon creation eventually
59 opacity: 1 - (x / notification.width) // FIXME: non-zero initially because of LP: #1354406 workaround, we want this to start at 0 upon creation eventually
60
60
61+ theme: ThemeSettings {
62+ name: "Ubuntu.Components.Themes.Ambiance"
63+ }
64+
61 state: {
65 state: {
62 var result = "";
66 var result = "";
63
67
@@ -281,7 +285,7 @@ Item {
281 }
285 }
282 visible: type !== Notification.Confirmation
286 visible: type !== Notification.Confirmation
283 fontSize: "medium"
287 fontSize: "medium"
284− color: darkOnBright ? sdFontColor : theme.palette.selected.backgroundText
288+ color: darkOnBright ? sdFontColor : theme.palette.normal.backgroundText
285 elide: Text.ElideRight
289 elide: Text.ElideRight
286 textFormat: Text.PlainText
290 textFormat: Text.PlainText
287 }
291 }
@@ -296,8 +300,8 @@ Item {
296 }
300 }
297 visible: body != "" && type !== Notification.Confirmation
301 visible: body != "" && type !== Notification.Confirmation
298 fontSize: "small"
302 fontSize: "small"
299− color: darkOnBright ? sdFontColor : theme.palette.selected.backgroundText
303+ color: darkOnBright ? sdFontColor : theme.palette.normal.backgroundText
300− wrapMode: Text.WordWrap
304+ wrapMode: Text.Wrap
301 maximumLineCount: type == Notification.SnapDecision ? 12 : 2
305 maximumLineCount: type == Notification.SnapDecision ? 12 : 2
302 elide: Text.ElideRight
306 elide: Text.ElideRight
303 textFormat: Text.PlainText
307 textFormat: Text.PlainText
@@ -337,7 +341,7 @@ Item {
337 anchors.horizontalCenter: parent.horizontalCenter
341 anchors.horizontalCenter: parent.horizontalCenter
338 visible: type === Notification.Confirmation && body !== ""
342 visible: type === Notification.Confirmation && body !== ""
339 fontSize: "medium"
343 fontSize: "medium"
340− color: darkOnBright ? sdFontColor : theme.palette.selected.backgroundText
344+ color: darkOnBright ? sdFontColor : theme.palette.normal.backgroundText
341 wrapMode: Text.WordWrap
345 wrapMode: Text.WordWrap
342 maximumLineCount: 1
346 maximumLineCount: 1
343 elide: Text.ElideRight
347 elide: Text.ElideRight
qml/OrientedShell.qml+26−1
@@ -19,6 +19,7 @@ import QtQuick.Window 2.2
19import Unity.InputInfo 0.1
19import Unity.InputInfo 0.1
20import Unity.Session 0.1
20import Unity.Session 0.1
21import Unity.Screens 0.1
21import Unity.Screens 0.1
22+import Utils 0.1
22import GSettings 1.0
23import GSettings 1.0
23import "Components"
24import "Components"
24import "Rotation"
25import "Rotation"
@@ -77,6 +78,8 @@ Rectangle {
77 InputDeviceModel {
78 InputDeviceModel {
78 id: keyboardsModel
79 id: keyboardsModel
79 deviceFilter: InputInfo.Keyboard
80 deviceFilter: InputInfo.Keyboard
81+ onDeviceAdded: forceOSKEnabled = autopilotDevicePresent();
82+ onDeviceRemoved: forceOSKEnabled = autopilotDevicePresent();
80 }
83 }
81
84
82 InputDeviceModel {
85 InputDeviceModel {
@@ -84,6 +87,27 @@ Rectangle {
84 deviceFilter: InputInfo.TouchScreen
87 deviceFilter: InputInfo.TouchScreen
85 }
88 }
86
89
90+ /* FIXME: This exposes the NameRole as a work arround for lp:1542224.
91+ * When QInputInfo exposes NameRole to QML, this should be removed.
92+ */
93+ property bool forceOSKEnabled: false
94+ property var autopilotEmulatedDeviceNames: ["py-evdev-uinput"]
95+ UnitySortFilterProxyModel {
96+ id: autopilotDevices
97+ model: keyboardsModel
98+ }
99+
100+ function autopilotDevicePresent() {
101+ for(var i = 0; i < autopilotDevices.count; i++) {
102+ var device = autopilotDevices.get(i);
103+ if (autopilotEmulatedDeviceNames.indexOf(device.name) != -1) {
104+ console.warn("Forcing the OSK to be enabled as there is an autopilot eumlated device present.")
105+ return true;
106+ }
107+ }
108+ return false;
109+ }
110+
87 Screens {
111 Screens {
88 id: screens
112 id: screens
89 }
113 }
@@ -195,7 +219,8 @@ Rectangle {
195 // have multiple keyboards around. For now we only enable one keyboard at a time
219 // have multiple keyboards around. For now we only enable one keyboard at a time
196 // thus hiding it here if there is a physical one around or if we have a second
220 // thus hiding it here if there is a physical one around or if we have a second
197 // screen (the virtual touchpad & osk on the phone) attached.
221 // screen (the virtual touchpad & osk on the phone) attached.
198− oskEnabled: keyboardsModel.count === 0 && screens.count === 1
222+ oskEnabled: (keyboardsModel.count === 0 && screens.count === 1) ||
223+ forceOSKEnabled
199
224
200 // TODO: Factor in the connected input devices (eg: physical keyboard, mouse, touchscreen),
225 // TODO: Factor in the connected input devices (eg: physical keyboard, mouse, touchscreen),
201 // what's the output device (eg: big TV, desktop monitor, phone display), etc.
226 // what's the output device (eg: big TV, desktop monitor, phone display), etc.
qml/Panel/Handle.qml+2−2
@@ -19,7 +19,7 @@ import Ubuntu.Components 1.3
19
19
20Rectangle {
20Rectangle {
21 id: handle
21 id: handle
22− color: "#5d5d5d"
22+ color: theme.palette.normal.foreground
23 height: units.gu(2)
23 height: units.gu(2)
24 property bool active: false
24 property bool active: false
25
25
@@ -35,7 +35,7 @@ Rectangle {
35 id: dot
35 id: dot
36 width: units.dp(3)
36 width: units.dp(3)
37 height: width
37 height: width
38− color: handle.active ? UbuntuColors.orange : "#888888"
38+ color: handle.active ? theme.palette.highlighted.foreground : theme.palette.normal.raised
39 radius: units.dp(1)
39 radius: units.dp(1)
40 }
40 }
41 }
41 }
qml/Panel/IndicatorItem.qml+3−3
@@ -32,9 +32,9 @@ IndicatorDelegate {
32 property bool selected: false
32 property bool selected: false
33 property real iconHeight: units.gu(2)
33 property real iconHeight: units.gu(2)
34 readonly property color color: {
34 readonly property color color: {
35− if (!expanded) return "#ffffff";
35+ if (!expanded) return theme.palette.normal.backgroundText;
36− if (!selected) return "#888888";
36+ if (!selected) return theme.palette.disabled.backgroundText;
37− return "#ffffff";
37+ return theme.palette.normal.backgroundText;
38 }
38 }
39
39
40 implicitWidth: mainItems.width
40 implicitWidth: mainItems.width
qml/Panel/Indicators/MenuItemFactory.qml+3−4
@@ -228,7 +228,6 @@ Item {
228 text: menuData && menuData.label || ""
228 text: menuData && menuData.label || ""
229 iconSource: menuData && menuData.icon || ""
229 iconSource: menuData && menuData.icon || ""
230 value : menuData && menuData.actionState || 0.0
230 value : menuData && menuData.actionState || 0.0
231− enabled: menuData && menuData.sensitive || false
232 highlightWhenPressed: false
231 highlightWhenPressed: false
233 }
232 }
234 }
233 }
@@ -261,7 +260,7 @@ Item {
261 name: "settings"
260 name: "settings"
262 height: units.gu(3)
261 height: units.gu(3)
263 width: height
262 width: height
264− color: theme.palette.selected.backgroundText
263+ color: theme.palette.normal.backgroundText
265 }
264 }
266 }
265 }
267 }
266 }
@@ -293,7 +292,7 @@ Item {
293 source: menuData.icon
292 source: menuData.icon
294 height: units.gu(3)
293 height: units.gu(3)
295 width: height
294 width: height
296− color: theme.palette.selected.backgroundText
295+ color: theme.palette.normal.backgroundText
297 }
296 }
298 }
297 }
299 }
298 }
@@ -620,7 +619,7 @@ Item {
620
619
621 Component {
620 Component {
622 id: modeminfoitem;
621 id: modeminfoitem;
623− ModemInfoItem {
622+ Menus.ModemInfoItem {
624 objectName: "modemInfoItem"
623 objectName: "modemInfoItem"
625 property QtObject menuData: null
624 property QtObject menuData: null
626 property var menuModel: menuFactory.menuModel
625 property var menuModel: menuFactory.menuModel
qml/Panel/Indicators/ModemInfoItem.qmldeleted−111
@@ -1,111 +0,0 @@
1−/*
2− * Copyright 2014,2015 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.4
18−import QtQuick.Layouts 1.1
19−import Ubuntu.Components 1.3
20−import Ubuntu.Components.ListItems 1.3 as ListItem
21−
22−ListItem.Empty {
23− id: menu
24− implicitHeight: mainColumn.implicitHeight
25− + mainColumn.anchors.topMargin
26− + mainColumn.anchors.bottomMargin
27−
28− property alias statusIcon: statusIcon.name
29− property alias statusText: labelStatus.text
30− property alias connectivityIcon: iconConnectivity.name
31− property alias simIdentifierText: labelSimIdentifier.text
32− property bool locked : false
33− property bool roaming: false
34− signal unlock
35−
36− ColumnLayout {
37− id: mainColumn
38− anchors.fill: parent
39− anchors.margins: menu.__contentsMargins
40− spacing: units.gu(0.5)
41−
42− Label {
43− id: labelSimIdentifier
44− elide: Text.ElideRight
45− visible: text !== ""
46− font.bold: true
47− opacity: menu.locked ? 0.6 : 1.0
48− }
49−
50− RowLayout {
51− id: statusRow
52− spacing: units.gu(1)
53−
54− height: labelStatus.height
55− width: parent.width
56−
57− Label {
58− id: labelStatus
59− elide: Text.ElideRight
60− opacity: 0.6
61− }
62−
63− RowLayout {
64− spacing: 0.5
65− height: parent.height
66− Icon {
67− id: statusIcon
68− color: theme.palette.selected.backgroundText
69−
70− Layout.preferredHeight: parent.height
71− Layout.preferredWidth: Layout.preferredHeight
72−
73− visible: name !== ""
74− }
75−
76− Icon {
77− id: iconConnectivity
78− color: theme.palette.selected.backgroundText
79−
80− Layout.preferredHeight: parent.height
81− Layout.preferredWidth: Layout.preferredHeight
82−
83− visible: name !== ""
84− }
85− }
86−
87− Item {
88− // eat up all the excess space so that RoamingIndication
89− // ends up to the far right
90− Layout.fillWidth: true
91− }
92−
93− RoamingIndication {
94− id: roamingIndication
95− visible: menu.roaming
96− Layout.fillHeight: true
97− }
98− }
99−
100− Button {
101− id: buttonUnlock
102− objectName: "buttonUnlockSim"
103− visible: menu.locked
104−
105− text: i18n.tr("Unlock SIM")
106− Layout.preferredWidth: implicitWidth + units.gu(5)
107−
108− onTriggered: menu.unlock()
109− }
110− }
111−}
qml/Panel/Indicators/RoamingIndication.qmldeleted−40
@@ -1,40 +0,0 @@
1−/*
2− * Copyright 2014,2015 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.4
18−import QtQuick.Layouts 1.1
19−import Ubuntu.Components 1.3
20−
21−RowLayout {
22− spacing: units.gu(0.5)
23− Label {
24− id: labelRoaming
25− elide: Text.ElideRight
26− fontSize: "x-small"
27− text: i18n.tr("Roaming")
28− opacity: 0.6
29− }
30−
31− Icon {
32− id: iconRoaming
33− color: theme.palette.selected.backgroundText
34−
35− Layout.preferredHeight: parent.height
36− Layout.preferredWidth: Layout.preferredHeight
37−
38− name: "network-cellular-roaming"
39− }
40−}
qml/Panel/Indicators/client/IndicatorsClient.qml+1−1
@@ -26,7 +26,7 @@ Rectangle {
26 id: root
26 id: root
27
27
28 Component.onCompleted: {
28 Component.onCompleted: {
29− theme.name = "Ubuntu.Components.Themes.SuruGradient"
29+ theme.name = "Ubuntu.Components.Themes.SuruDark"
30 }
30 }
31
31
32 PageStack {
32 PageStack {
qml/Panel/IndicatorsMenu.qml+3−2
@@ -38,7 +38,7 @@ Showable {
38 property bool enableHint: true
38 property bool enableHint: true
39 property bool contentEnabled: true
39 property bool contentEnabled: true
40 property bool showOnClick: true
40 property bool showOnClick: true
41− property color panelColor: "#292929"
41+ property color panelColor: UbuntuColors.jet
42
42
43 signal showTapped(point position)
43 signal showTapped(point position)
44
44
@@ -76,6 +76,7 @@ Showable {
76 MenuContent {
76 MenuContent {
77 id: content
77 id: content
78 objectName: "menuContent"
78 objectName: "menuContent"
79+ color: root.panelColor
79
80
80 anchors {
81 anchors {
81 left: parent.left
82 left: parent.left
@@ -110,7 +111,7 @@ Showable {
110 height: units.gu(0.5)
111 height: units.gu(0.5)
111 gradient: Gradient {
112 gradient: Gradient {
112 GradientStop { position: 0.0; color: "transparent" }
113 GradientStop { position: 0.0; color: "transparent" }
113− GradientStop { position: 1.0; color: "#292929" }
114+ GradientStop { position: 1.0; color: root.panelColor }
114 }
115 }
115 opacity: 0.3
116 opacity: 0.3
116 }
117 }
qml/Panel/MenuContent.qml+1−1
@@ -27,7 +27,7 @@ Rectangle {
27
27
28 property QtObject indicatorsModel: null
28 property QtObject indicatorsModel: null
29 property int currentMenuIndex: -1
29 property int currentMenuIndex: -1
30− color: "#292929" // FIXME not in palette yet
30+ color: theme.palette.normal.background
31
31
32 width: units.gu(40)
32 width: units.gu(40)
33 height: units.gu(42)
33 height: units.gu(42)
qml/Panel/Panel.qml+5−1
@@ -89,7 +89,7 @@ Item {
89
89
90 Rectangle {
90 Rectangle {
91 id: indicatorAreaBackground
91 id: indicatorAreaBackground
92− color: callHint.visible ? "green" : "#292929"
92+ color: callHint.visible ? UbuntuColors.green : indicators.panelColor
93 anchors {
93 anchors {
94 top: parent.top
94 top: parent.top
95 left: parent.left
95 left: parent.left
@@ -169,8 +169,10 @@ Item {
169 objectName: "windowDecorationTitle"
169 objectName: "windowDecorationTitle"
170 anchors {
170 anchors {
171 left: parent.left
171 left: parent.left
172+ right: __indicators.left
172 top: parent.top
173 top: parent.top
173 leftMargin: units.gu(1)
174 leftMargin: units.gu(1)
175+ rightMargin: units.gu(1)
174 topMargin: units.gu(0.5)
176 topMargin: units.gu(0.5)
175 bottomMargin: units.gu(0.5)
177 bottomMargin: units.gu(0.5)
176 }
178 }
@@ -181,6 +183,8 @@ Item {
181 fontSize: "medium"
183 fontSize: "medium"
182 font.weight: Font.Normal
184 font.weight: Font.Normal
183 text: PanelState.title
185 text: PanelState.title
186+ elide: Text.ElideRight
187+ maximumLineCount: 1
184 }
188 }
185
189
186 // TODO here would the Locally integrated menus come
190 // TODO here would the Locally integrated menus come
qml/ScopeTool.qml−8
@@ -52,14 +52,6 @@ Rectangle {
52 color: "#FCFCFC"
52 color: "#FCFCFC"
53 }
53 }
54
54
55− Image {
56− anchors.fill: dashContent
57− source: root.width > root.height ? "Dash/graphics/paper_landscape.png" : "Dash/graphics/paper_portrait.png"
58− fillMode: Image.PreserveAspectCrop
59− horizontalAlignment: Image.AlignRight
60− verticalAlignment: Image.AlignTop
61− }
62−
63 DashContent {
55 DashContent {
64 id: dashContent
56 id: dashContent
65
57
qml/Shell.qml+54−9
@@ -25,6 +25,7 @@ import Ubuntu.Telephony 0.1 as Telephony
25import Unity.Connectivity 0.1
25import Unity.Connectivity 0.1
26import Unity.Launcher 0.1
26import Unity.Launcher 0.1
27import GlobalShortcut 1.0 // has to be before Utils, because of WindowKeysFilter
27import GlobalShortcut 1.0 // has to be before Utils, because of WindowKeysFilter
28+import GSettings 1.0
28import Utils 0.1
29import Utils 0.1
29import Powerd 0.1
30import Powerd 0.1
30import SessionBroadcast 0.1
31import SessionBroadcast 0.1
@@ -119,9 +120,7 @@ Item {
119 if (ApplicationManager.findApplication(appId)) {
120 if (ApplicationManager.findApplication(appId)) {
120 ApplicationManager.requestFocusApplication(appId);
121 ApplicationManager.requestFocusApplication(appId);
121 } else {
122 } else {
122− var execFlags = shell.usageScenario === "phone" ? ApplicationManager.ForceMainStage
123+ ApplicationManager.startApplication(appId);
123− : ApplicationManager.NoFlag;
124− ApplicationManager.startApplication(appId, execFlags);
125 }
124 }
126 }
125 }
127
126
@@ -139,7 +138,7 @@ Item {
139 }
138 }
140
139
141 Component.onCompleted: {
140 Component.onCompleted: {
142− theme.name = "Ubuntu.Components.Themes.SuruGradient"
141+ theme.name = "Ubuntu.Components.Themes.SuruDark"
143 if (ApplicationManager.count > 0) {
142 if (ApplicationManager.count > 0) {
144 ApplicationManager.focusApplication(ApplicationManager.get(0).appId);
143 ApplicationManager.focusApplication(ApplicationManager.get(0).appId);
145 }
144 }
@@ -187,6 +186,11 @@ Item {
187 }
186 }
188 }
187 }
189
188
189+ GSettings {
190+ id: settings
191+ schema.id: "com.canonical.Unity8"
192+ }
193+
190 Item {
194 Item {
191 id: stages
195 id: stages
192 objectName: "stages"
196 objectName: "stages"
@@ -347,6 +351,11 @@ Item {
347 property: "altTabPressed"
351 property: "altTabPressed"
348 value: physicalKeysMapper.altTabPressed
352 value: physicalKeysMapper.altTabPressed
349 }
353 }
354+ Binding {
355+ target: applicationsDisplayLoader.item
356+ property: "leftMargin"
357+ value: shell.usageScenario == "desktop" && !settings.autohideLauncher ? launcher.panelWidth: 0
358+ }
350 }
359 }
351
360
352 Tutorial {
361 Tutorial {
@@ -377,7 +386,11 @@ Item {
377 InputMethod {
386 InputMethod {
378 id: inputMethod
387 id: inputMethod
379 objectName: "inputMethod"
388 objectName: "inputMethod"
380− anchors { fill: parent; topMargin: panel.panelHeight }
389+ anchors {
390+ fill: parent
391+ topMargin: panel.panelHeight
392+ leftMargin: launcher.lockedVisible ? launcher.panelWidth : 0
393+ }
381 z: notifications.useModal || panel.indicators.shown || wizard.active ? overlay.z + 1 : overlay.z - 1
394 z: notifications.useModal || panel.indicators.shown || wizard.active ? overlay.z + 1 : overlay.z - 1
382 }
395 }
383
396
@@ -536,9 +549,7 @@ Item {
536 greeterShown: greeter.shown
549 greeterShown: greeter.shown
537 }
550 }
538
551
539− readonly property bool topmostApplicationIsFullscreen:
552+ readonly property bool topmostApplicationIsFullscreen: mainApp && mainApp.fullscreen
540− ApplicationManager.focusedApplicationId &&
541− ApplicationManager.findApplication(ApplicationManager.focusedApplicationId).fullscreen
542
553
543 fullscreenMode: (topmostApplicationIsFullscreen && !lightDM.greeter.active && launcher.progress == 0)
554 fullscreenMode: (topmostApplicationIsFullscreen && !lightDM.greeter.active && launcher.progress == 0)
544 || greeter.hasLockedApp
555 || greeter.hasLockedApp
@@ -561,6 +572,10 @@ Item {
561 && !greeter.hasLockedApp
572 && !greeter.hasLockedApp
562 inverted: shell.usageScenario !== "desktop"
573 inverted: shell.usageScenario !== "desktop"
563 shadeBackground: !tutorial.running
574 shadeBackground: !tutorial.running
575+ superPressed: physicalKeysMapper.superPressed
576+ superTabPressed: physicalKeysMapper.superTabPressed
577+ panelWidth: units.gu(settings.launcherWidth)
578+ lockedVisible: shell.usageScenario == "desktop" && !settings.autohideLauncher && !panel.fullscreenMode
564
579
565 onShowDashHome: showHome()
580 onShowDashHome: showHome()
566 onDash: showDash()
581 onDash: showDash()
@@ -580,13 +595,43 @@ Item {
580 panel.indicators.hide()
595 panel.indicators.hide()
581 }
596 }
582 }
597 }
598+ onFocusChanged: {
599+ if (!focus) {
600+ applicationsDisplayLoader.focus = true;
601+ }
602+ }
603+
604+ GlobalShortcut {
605+ shortcut: Qt.AltModifier | Qt.Key_F1
606+ onTriggered: {
607+ launcher.openForKeyboardNavigation();
608+ }
609+ }
610+ GlobalShortcut {
611+ shortcut: Qt.MetaModifier | Qt.Key_0
612+ onTriggered: {
613+ if (LauncherModel.get(9)) {
614+ activateApplication(LauncherModel.get(9).appId);
615+ }
616+ }
617+ }
618+ Repeater {
619+ model: 9
620+ GlobalShortcut {
621+ shortcut: Qt.MetaModifier | (Qt.Key_1 + index)
622+ onTriggered: {
623+ if (LauncherModel.get(index)) {
624+ activateApplication(LauncherModel.get(index).appId);
625+ }
626+ }
627+ }
628+ }
583 }
629 }
584
630
585 Wizard {
631 Wizard {
586 id: wizard
632 id: wizard
587 objectName: "wizard"
633 objectName: "wizard"
588 anchors.fill: parent
634 anchors.fill: parent
589− background: wallpaperResolver.background
590
635
591 function unlockWhenDoneWithWizard() {
636 function unlockWhenDoneWithWizard() {
592 if (!active) {
637 if (!active) {
qml/Stages/AbstractStage.qml+4−2
@@ -21,7 +21,7 @@ import GSettings 1.0
21Rectangle {
21Rectangle {
22 id: root
22 id: root
23
23
24− color: "#111111"
24+ color: "#060606"
25
25
26 // Controls to be set from outside
26 // Controls to be set from outside
27 property bool altTabPressed
27 property bool altTabPressed
@@ -39,10 +39,12 @@ Rectangle {
39 property int shellOrientationAngle
39 property int shellOrientationAngle
40 property bool spreadEnabled: true // If false, animations and right edge will be disabled
40 property bool spreadEnabled: true // If false, animations and right edge will be disabled
41 property bool suspended
41 property bool suspended
42+ // A Stage should paint a wallpaper etc over its full size but not use the margins for window placement
43+ property int leftMargin: 0
42
44
43 // To be read from outside
45 // To be read from outside
44 property var mainApp: null
46 property var mainApp: null
45− property int mainAppWindowOrientationAngle
47+ property int mainAppWindowOrientationAngle: 0
46 property bool orientationChangesEnabled
48 property bool orientationChangesEnabled
47 property int supportedOrientations: Qt.PortraitOrientation
49 property int supportedOrientations: Qt.PortraitOrientation
48 | Qt.LandscapeOrientation
50 | Qt.LandscapeOrientation
qml/Stages/ApplicationWindow.qml+3−1
@@ -24,12 +24,14 @@ FocusScope {
24 implicitHeight: sessionContainer.implicitHeight
24 implicitHeight: sessionContainer.implicitHeight
25
25
26 // to be read from outside
26 // to be read from outside
27− readonly property bool fullscreen: application ? application.fullscreen : false
28 property alias interactive: sessionContainer.interactive
27 property alias interactive: sessionContainer.interactive
29 property bool orientationChangesEnabled: d.supportsSurfaceResize ? d.surfaceOldEnoughToBeResized : true
28 property bool orientationChangesEnabled: d.supportsSurfaceResize ? d.surfaceOldEnoughToBeResized : true
30 readonly property string title: sessionContainer.surface && sessionContainer.surface.name !== "" ?
29 readonly property string title: sessionContainer.surface && sessionContainer.surface.name !== "" ?
31 sessionContainer.surface.name : d.name
30 sessionContainer.surface.name : d.name
32
31
32+ // overridable from outside
33+ property bool fullscreen: application ? application.fullscreen : false
34+
33 // to be set from outside
35 // to be set from outside
34 property QtObject application
36 property QtObject application
35 property int surfaceOrientationAngle
37 property int surfaceOrientationAngle
qml/Stages/DesktopSpread.qml+64−17
@@ -19,6 +19,7 @@ import QtQuick.Layouts 1.1
19import Ubuntu.Components 1.3
19import Ubuntu.Components 1.3
20import Ubuntu.Gestures 0.1
20import Ubuntu.Gestures 0.1
21import Unity.Application 0.1
21import Unity.Application 0.1
22+import "../Components"
22
23
23FocusScope {
24FocusScope {
24 id: root
25 id: root
@@ -26,8 +27,11 @@ FocusScope {
26 property bool altTabPressed: false
27 property bool altTabPressed: false
27 property Item workspace: null
28 property Item workspace: null
28
29
30+ readonly property alias ready: blurLayer.ready
29 readonly property alias highlightedIndex: spreadRepeater.highlightedIndex
31 readonly property alias highlightedIndex: spreadRepeater.highlightedIndex
30
32
33+ signal playFocusAnimation(int index)
34+
31 function show() {
35 function show() {
32 spreadContainer.animateIn = true;
36 spreadContainer.animateIn = true;
33 root.state = "altTab";
37 root.state = "altTab";
@@ -91,6 +95,9 @@ FocusScope {
91
95
92 function focusSelected() {
96 function focusSelected() {
93 if (spreadRepeater.highlightedIndex != -1) {
97 if (spreadRepeater.highlightedIndex != -1) {
98+ if (spreadContainer.visible) {
99+ root.playFocusAnimation(spreadRepeater.highlightedIndex)
100+ }
94 var application = ApplicationManager.get(spreadRepeater.highlightedIndex);
101 var application = ApplicationManager.get(spreadRepeater.highlightedIndex);
95 ApplicationManager.requestFocusApplication(application.appId);
102 ApplicationManager.requestFocusApplication(application.appId);
96 }
103 }
@@ -101,6 +108,31 @@ FocusScope {
101 state = ""
108 state = ""
102 }
109 }
103
110
111+ BlurLayer {
112+ id: blurLayer
113+ anchors.fill: parent
114+ source: root.workspace
115+ visible: false
116+ }
117+
118+ Rectangle {
119+ id: spreadBackground
120+ anchors.fill: parent
121+ color: "#B2000000"
122+ visible: false
123+ opacity: visible ? 1 : 0
124+ Behavior on opacity {
125+ UbuntuNumberAnimation { duration: UbuntuAnimation.SnapDuration }
126+ }
127+ }
128+
129+ MouseArea {
130+ id: eventEater
131+ anchors.fill: parent
132+ visible: spreadBackground.visible
133+ enabled: visible
134+ }
135+
104 Item {
136 Item {
105 id: spreadContainer
137 id: spreadContainer
106 objectName: "spreadContainer"
138 objectName: "spreadContainer"
@@ -226,13 +258,20 @@ FocusScope {
226 Transition {
258 Transition {
227 from: ""
259 from: ""
228 to: "altTab"
260 to: "altTab"
229− PropertyAction { target: spreadDelegate; properties: "y,height,width,angle,z,itemScale,itemScaleOriginY,visible" }
261+ SequentialAnimation {
230− PropertyAction { target: clippedSpreadDelegate; properties: "anchors.topMargin" }
262+ ParallelAnimation {
231− PropertyAnimation {
263+ PropertyAction { target: spreadDelegate; properties: "y,height,width,angle,z,itemScale,itemScaleOriginY,visible" }
232− target: spreadDelegate; properties: "x"
264+ PropertyAction { target: clippedSpreadDelegate; properties: "anchors.topMargin" }
233− from: root.width
265+ PropertyAnimation {
234− duration: spreadContainer.animateIn ? UbuntuAnimation.FastDuration :0
266+ target: spreadDelegate; properties: "x"
235− easing: UbuntuAnimation.StandardEasing
267+ from: root.width
268+ duration: spreadContainer.animateIn ? UbuntuAnimation.FastDuration :0
269+ easing: UbuntuAnimation.StandardEasing
270+ }
271+ UbuntuNumberAnimation { target: clippedSpreadDelegate; property: "shadowOpacity"; from: 0; to: spreadMaths.shadowOpacity; duration: spreadContainer.animateIn ? UbuntuAnimation.FastDuration : 0 }
272+ UbuntuNumberAnimation { target: tileInfo; property: "opacity"; from: 0; to: spreadMaths.tileInfoOpacity; duration: spreadContainer.animateIn ? UbuntuAnimation.FastDuration : 0 }
273+ }
274+ PropertyAction { target: spreadSelectArea; property: "enabled" }
236 }
275 }
237 }
276 }
238 ]
277 ]
@@ -240,7 +279,11 @@ FocusScope {
240 MouseArea {
279 MouseArea {
241 id: tileInfo
280 id: tileInfo
242 objectName: "tileInfo"
281 objectName: "tileInfo"
243− anchors { left: parent.left; top: clippedSpreadDelegate.bottom; topMargin: units.gu(5) }
282+ anchors {
283+ left: parent.left
284+ top: clippedSpreadDelegate.bottom
285+ topMargin: ((spreadMaths.sceneHeight - spreadDelegate.y) - clippedSpreadDelegate.height) * 0.2
286+ }
244 property int nextItemX: spreadRepeater.count > index + 1 ? spreadRepeater.itemAt(index + 1).x : spreadDelegate.x + units.gu(30)
287 property int nextItemX: spreadRepeater.count > index + 1 ? spreadRepeater.itemAt(index + 1).x : spreadDelegate.x + units.gu(30)
245 width: Math.min(units.gu(30), nextItemX - spreadDelegate.x)
288 width: Math.min(units.gu(30), nextItemX - spreadDelegate.x)
246 height: titleInfoColumn.height
289 height: titleInfoColumn.height
@@ -262,12 +305,20 @@ FocusScope {
262 anchors { left: parent.left; top: parent.top; right: parent.right }
305 anchors { left: parent.left; top: parent.top; right: parent.right }
263 spacing: units.gu(1)
306 spacing: units.gu(1)
264
307
265− UbuntuShape {
308+ UbuntuShapeForItem {
266 Layout.preferredHeight: Math.min(units.gu(6), root.height * .05)
309 Layout.preferredHeight: Math.min(units.gu(6), root.height * .05)
267 Layout.preferredWidth: height * 8 / 7.6
310 Layout.preferredWidth: height * 8 / 7.6
268 image: Image {
311 image: Image {
269 anchors.fill: parent
312 anchors.fill: parent
270 source: model.icon
313 source: model.icon
314+ Rectangle {
315+ anchors.fill: parent
316+ color: "black"
317+ opacity: clippedSpreadDelegate.highlightShown ? 0 : .1
318+ Behavior on opacity {
319+ UbuntuNumberAnimation { duration: UbuntuAnimation.SnapDuration }
320+ }
321+ }
271 }
322 }
272 }
323 }
273 Label {
324 Label {
@@ -420,7 +471,7 @@ FocusScope {
420
471
421 property var source: ShaderEffectSource {
472 property var source: ShaderEffectSource {
422 id: shaderEffectSource
473 id: shaderEffectSource
423− sourceItem: appContainer
474+ sourceItem: root.workspace
424 }
475 }
425
476
426 fragmentShader: "
477 fragmentShader: "
@@ -494,20 +545,17 @@ FocusScope {
494 from: "*"
545 from: "*"
495 to: "altTab"
546 to: "altTab"
496 SequentialAnimation {
547 SequentialAnimation {
497− PropertyAction { target: hoverMouseArea; property: "progressiveScrollingEnabled"; value: false }
498 PropertyAction { target: spreadRepeater; property: "highlightedIndex"; value: Math.min(ApplicationManager.count - 1, 1) }
548 PropertyAction { target: spreadRepeater; property: "highlightedIndex"; value: Math.min(ApplicationManager.count - 1, 1) }
499− PauseAnimation { duration: 140 }
549+ PauseAnimation { duration: spreadContainer.animateIn ? 0 : 140 }
500 PropertyAction { target: workspaceSelector; property: "visible" }
550 PropertyAction { target: workspaceSelector; property: "visible" }
501 PropertyAction { target: spreadContainer; property: "visible" }
551 PropertyAction { target: spreadContainer; property: "visible" }
502 ParallelAnimation {
552 ParallelAnimation {
503− UbuntuNumberAnimation {
553+ UbuntuNumberAnimation { target: blurLayer; properties: "saturation,blurRadius"; duration: UbuntuAnimation.SnapDuration }
504− target: blurLayer; properties: "saturation,blurRadius";
505− duration: spreadContainer.animateIn ? UbuntuAnimation.FastDuration : 0
506− }
507 PropertyAction { target: spreadFlickable; property: "visible" }
554 PropertyAction { target: spreadFlickable; property: "visible" }
508 PropertyAction { targets: [currentSelectedLabel,spreadBackground]; property: "visible" }
555 PropertyAction { targets: [currentSelectedLabel,spreadBackground]; property: "visible" }
509 PropertyAction { target: spreadFlickable; property: "contentX"; value: 0 }
556 PropertyAction { target: spreadFlickable; property: "contentX"; value: 0 }
510 }
557 }
558+ PropertyAction { target: hoverMouseArea; properties: "enabled,progressiveScrollingEnabled"; value: false }
511 }
559 }
512 },
560 },
513 Transition {
561 Transition {
@@ -518,6 +566,5 @@ FocusScope {
518 PropertyAction { target: spreadRepeater; property: "highlightedIndex"; value: -1 }
566 PropertyAction { target: spreadRepeater; property: "highlightedIndex"; value: -1 }
519 PropertyAction { target: spreadContainer; property: "animateIn"; value: false }
567 PropertyAction { target: spreadContainer; property: "animateIn"; value: false }
520 }
568 }
521−
522 ]
569 ]
523}
570}
qml/Stages/DesktopSpreadDelegate.qml+15−1
@@ -56,6 +56,11 @@ Item {
56 }
56 }
57 ]
57 ]
58
58
59+ scale: highlightShown ? 1.025 : 1
60+ Behavior on scale {
61+ UbuntuNumberAnimation { duration: UbuntuAnimation.SnapDuration }
62+ }
63+
59 BorderImage {
64 BorderImage {
60 anchors {
65 anchors {
61 fill: root
66 fill: root
@@ -70,7 +75,7 @@ Item {
70 anchors.fill: parent
75 anchors.fill: parent
71 anchors.margins: -units.gu(1)
76 anchors.margins: -units.gu(1)
72 color: "white"
77 color: "white"
73− opacity: highlightShown ? 0.15 : 0
78+ opacity: highlightShown ? 0.55 : 0
74 antialiasing: true
79 antialiasing: true
75 }
80 }
76
81
@@ -108,4 +113,13 @@ Item {
108 ]
113 ]
109 }
114 }
110 }
115 }
116+
117+ Rectangle {
118+ anchors.fill: parent
119+ color: "black"
120+ opacity: root.highlightShown ? 0 : .1
121+ Behavior on opacity {
122+ UbuntuNumberAnimation { duration: UbuntuAnimation.SnapDuration }
123+ }
124+ }
111}
125}
qml/Stages/DesktopStage.qml+37−37
@@ -224,6 +224,7 @@ AbstractStage {
224 PanelState.dropShadow = false;
224 PanelState.dropShadow = false;
225 }
225 }
226
226
227+
227 FocusScope {
228 FocusScope {
228 id: appContainer
229 id: appContainer
229 objectName: "appContainer"
230 objectName: "appContainer"
@@ -274,6 +275,7 @@ AbstractStage {
274 readonly property alias maximizedLeft: appDelegatePrivate.maximizedLeft
275 readonly property alias maximizedLeft: appDelegatePrivate.maximizedLeft
275 readonly property alias maximizedRight: appDelegatePrivate.maximizedRight
276 readonly property alias maximizedRight: appDelegatePrivate.maximizedRight
276 readonly property alias minimized: appDelegatePrivate.minimized
277 readonly property alias minimized: appDelegatePrivate.minimized
278+ readonly property alias fullscreen: decoratedWindow.fullscreen
277
279
278 readonly property string appId: model.appId
280 readonly property string appId: model.appId
279 property bool animationsEnabled: true
281 property bool animationsEnabled: true
@@ -293,6 +295,7 @@ AbstractStage {
293 visible: !visuallyMinimized &&
295 visible: !visuallyMinimized &&
294 !greeter.fullyShown &&
296 !greeter.fullyShown &&
295 (priv.foregroundMaximizedAppZ === -1 || priv.foregroundMaximizedAppZ <= z) ||
297 (priv.foregroundMaximizedAppZ === -1 || priv.foregroundMaximizedAppZ <= z) ||
298+ decoratedWindow.fullscreen ||
296 (spread.state == "altTab" && index === spread.highlightedIndex)
299 (spread.state == "altTab" && index === spread.highlightedIndex)
297
300
298 Binding {
301 Binding {
@@ -348,13 +351,26 @@ AbstractStage {
348 ApplicationManager.focusApplication(appId);
351 ApplicationManager.focusApplication(appId);
349 }
352 }
350
353
354+ function playFocusAnimation() {
355+ focusAnimation.start()
356+ }
357+
358+ UbuntuNumberAnimation {
359+ id: focusAnimation
360+ target: appDelegate
361+ property: "scale"
362+ from: 0.98
363+ to: 1
364+ duration: UbuntuAnimation.SnapDuration
365+ }
366+
351 states: [
367 states: [
352 State {
368 State {
353 name: "fullscreen"; when: decoratedWindow.fullscreen
369 name: "fullscreen"; when: decoratedWindow.fullscreen
354− extend: "maximized"
355 PropertyChanges {
370 PropertyChanges {
356 target: appDelegate;
371 target: appDelegate;
357− y: -PanelState.panelHeight
372+ x: 0; y: -PanelState.panelHeight
373+ requestedWidth: appContainer.width; requestedHeight: appContainer.height;
358 }
374 }
359 },
375 },
360 State {
376 State {
@@ -371,7 +387,7 @@ AbstractStage {
371 name: "maximized"; when: appDelegate.maximized && !appDelegate.minimized
387 name: "maximized"; when: appDelegate.maximized && !appDelegate.minimized
372 PropertyChanges {
388 PropertyChanges {
373 target: appDelegate;
389 target: appDelegate;
374− x: 0; y: 0;
390+ x: root.leftMargin; y: 0;
375 visuallyMinimized: false;
391 visuallyMinimized: false;
376 visuallyMaximized: true
392 visuallyMaximized: true
377 }
393 }
@@ -384,27 +400,27 @@ AbstractStage {
384 State {
400 State {
385 name: "maximizedLeft"; when: appDelegate.maximizedLeft && !appDelegate.minimized
401 name: "maximizedLeft"; when: appDelegate.maximizedLeft && !appDelegate.minimized
386 PropertyChanges {
402 PropertyChanges {
387− target: appDelegate;
403+ target: appDelegate
388− x: 0;
404+ x: root.leftMargin
389− y: PanelState.panelHeight;
405+ y: PanelState.panelHeight
390 }
406 }
391 PropertyChanges {
407 PropertyChanges {
392 target: decoratedWindow
408 target: decoratedWindow
393− requestedWidth: root.width/2
409+ requestedWidth: (appContainer.width - root.leftMargin)/2
394− requestedHeight: root.height - PanelState.panelHeight
410+ requestedHeight: appContainer.height - PanelState.panelHeight
395 }
411 }
396 },
412 },
397 State {
413 State {
398 name: "maximizedRight"; when: appDelegate.maximizedRight && !appDelegate.minimized
414 name: "maximizedRight"; when: appDelegate.maximizedRight && !appDelegate.minimized
399 PropertyChanges {
415 PropertyChanges {
400 target: appDelegate;
416 target: appDelegate;
401− x: root.width/2;
417+ x: (appContainer.width + root.leftMargin)/2
402 y: PanelState.panelHeight
418 y: PanelState.panelHeight
403 }
419 }
404 PropertyChanges {
420 PropertyChanges {
405 target: decoratedWindow
421 target: decoratedWindow
406− requestedWidth: root.width/2;
422+ requestedWidth: (appContainer.width - root.leftMargin)/2
407− requestedHeight: root.height - PanelState.panelHeight
423+ requestedHeight: appContainer.height - PanelState.panelHeight
408 }
424 }
409 },
425 },
410 State {
426 State {
@@ -465,7 +481,7 @@ AbstractStage {
465 target: appDelegate
481 target: appDelegate
466 property: "z"
482 property: "z"
467 value: ApplicationManager.count + 1
483 value: ApplicationManager.count + 1
468− when: index == spread.highlightedIndex && blurLayer.ready
484+ when: index == spread.highlightedIndex && spread.ready
469 }
485 }
470
486
471 WindowResizeArea {
487 WindowResizeArea {
@@ -476,8 +492,9 @@ AbstractStage {
476 minHeight: units.gu(10)
492 minHeight: units.gu(10)
477 borderThickness: units.gu(2)
493 borderThickness: units.gu(2)
478 windowId: model.appId // FIXME: Change this to point to windowId once we have such a thing
494 windowId: model.appId // FIXME: Change this to point to windowId once we have such a thing
479− screenWidth: root.width
495+ screenWidth: appContainer.width
480− screenHeight: root.height
496+ screenHeight: appContainer.height
497+ leftMargin: root.leftMargin
481
498
482 onPressed: { ApplicationManager.focusApplication(model.appId) }
499 onPressed: { ApplicationManager.focusApplication(model.appId) }
483
500
@@ -525,27 +542,6 @@ AbstractStage {
525 }
542 }
526 }
543 }
527
544
528− BlurLayer {
529− id: blurLayer
530− anchors.fill: parent
531− source: appContainer
532− visible: false
533− }
534−
535− Rectangle {
536− id: spreadBackground
537− anchors.fill: parent
538− color: "#55000000"
539− visible: false
540− }
541−
542− MouseArea {
543− id: eventEater
544− anchors.fill: parent
545− visible: spreadBackground.visible
546− enabled: visible
547− }
548−
549 EdgeBarrier {
545 EdgeBarrier {
550 id: edgeBarrier
546 id: edgeBarrier
551
547
@@ -561,7 +557,7 @@ AbstractStage {
561 rotation: 90
557 rotation: 90
562 anchors.centerIn: parent
558 anchors.centerIn: parent
563 gradient: Gradient {
559 gradient: Gradient {
564− GradientStop { position: 0.0; color: Qt.rgba(0.16,0.16,0.16,0.7)}
560+ GradientStop { position: 0.0; color: Qt.rgba(0.16,0.16,0.16,0.5)}
565 GradientStop { position: 1.0; color: Qt.rgba(0.16,0.16,0.16,0)}
561 GradientStop { position: 1.0; color: Qt.rgba(0.16,0.16,0.16,0)}
566 }
562 }
567 }
563 }
@@ -579,9 +575,13 @@ AbstractStage {
579 DesktopSpread {
575 DesktopSpread {
580 id: spread
576 id: spread
581 objectName: "spread"
577 objectName: "spread"
582− anchors.fill: parent
578+ anchors.fill: appContainer
583 workspace: appContainer
579 workspace: appContainer
584 focus: state == "altTab"
580 focus: state == "altTab"
585 altTabPressed: root.altTabPressed
581 altTabPressed: root.altTabPressed
582+
583+ onPlayFocusAnimation: {
584+ appRepeater.itemAt(index).playFocusAnimation();
585+ }
586 }
586 }
587}
587}
qml/Stages/PhoneStage.qml+77−3
@@ -44,6 +44,33 @@ AbstractStage {
44 }
44 }
45 }
45 }
46
46
47+ onAltTabPressedChanged: {
48+ if (!spreadEnabled || !altTabEnabled) {
49+ return;
50+ }
51+ if (altTabPressed) {
52+ spreadView.snapToSpread();
53+ priv.highlightIndex = Math.min(spreadRepeater.count - 1, 1);
54+ } else {
55+ spreadView.snapTo(priv.highlightIndex)
56+ }
57+ }
58+
59+ FocusScope {
60+ focus: root.altTabPressed
61+
62+ Keys.onPressed: {
63+ switch (event.key) {
64+ case Qt.Key_Tab:
65+ priv.highlightIndex = (priv.highlightIndex + 1) % spreadRepeater.count
66+ break;
67+ case Qt.Key_Backtab:
68+ priv.highlightIndex = (priv.highlightIndex + spreadRepeater.count - 1) % spreadRepeater.count
69+ break;
70+ }
71+ }
72+ }
73+
47 // Functions to be called from outside
74 // Functions to be called from outside
48 function updateFocusedAppOrientation() {
75 function updateFocusedAppOrientation() {
49 if (spreadRepeater.count > 0) {
76 if (spreadRepeater.count > 0) {
@@ -74,6 +101,12 @@ AbstractStage {
74 }
101 }
75 }
102 }
76
103
104+ function pushRightEdge(amount) {
105+ if (spreadView.contentX == -spreadView.shift) {
106+ edgeBarrier.push(amount);
107+ }
108+ }
109+
77 mainApp: applicationManager.focusedApplicationId
110 mainApp: applicationManager.focusedApplicationId
78 ? applicationManager.findApplication(applicationManager.focusedApplicationId)
111 ? applicationManager.findApplication(applicationManager.focusedApplicationId)
79 : null
112 : null
@@ -180,6 +213,7 @@ AbstractStage {
180
213
181 property real oldInverseProgress: 0
214 property real oldInverseProgress: 0
182 property bool animateX: false
215 property bool animateX: false
216+ property int highlightIndex: 0
183
217
184 onFocusedAppDelegateChanged: {
218 onFocusedAppDelegateChanged: {
185 if (focusedAppDelegate) {
219 if (focusedAppDelegate) {
@@ -214,6 +248,10 @@ AbstractStage {
214 spreadView.phase = 0;
248 spreadView.phase = 0;
215 spreadView.contentX = -spreadView.shift;
249 spreadView.contentX = -spreadView.shift;
216 }
250 }
251+
252+ onHighlightIndexChanged: {
253+ spreadView.contentX = highlightIndex * spreadView.contentWidth / (spreadRepeater.count + 2)
254+ }
217 }
255 }
218 Timer {
256 Timer {
219 id: fullyShowingFocusedAppUpdateTimer
257 id: fullyShowingFocusedAppUpdateTimer
@@ -281,6 +319,11 @@ AbstractStage {
281 }
319 }
282 }
320 }
283
321
322+ Behavior on contentX {
323+ enabled: root.altTabPressed
324+ UbuntuNumberAnimation {}
325+ }
326+
284 onShiftedContentXChanged: {
327 onShiftedContentXChanged: {
285 if (root.beingResized) {
328 if (root.beingResized) {
286 // Flickabe.contentX wiggles during resizes. Don't react to it.
329 // Flickabe.contentX wiggles during resizes. Don't react to it.
@@ -319,12 +362,17 @@ AbstractStage {
319 } else if (shiftedContentX < positionMarker3 * width) {
362 } else if (shiftedContentX < positionMarker3 * width) {
320 snapTo(1);
363 snapTo(1);
321 } else if (phase < 2){
364 } else if (phase < 2){
322− // Add 1 pixel to make sure we definitely hit positionMarker4 even with rounding errors of the animation.
365+ snapToSpread();
323− snapAnimation.targetContentX = width * positionMarker4 + 1 - shift;
324− snapAnimation.start();
325 root.opened();
366 root.opened();
326 }
367 }
327 }
368 }
369+
370+ function snapToSpread() {
371+ // Add 1 pixel to make sure we definitely hit positionMarker4 even with rounding errors of the animation.
372+ snapAnimation.targetContentX = (root.width * spreadView.positionMarker4) + 1 - spreadView.shift;
373+ snapAnimation.start();
374+ }
375+
328 function snapTo(index) {
376 function snapTo(index) {
329 if (!root.altTabEnabled) {
377 if (!root.altTabEnabled) {
330 // Reset to start instead
378 // Reset to start instead
@@ -427,6 +475,7 @@ AbstractStage {
427 maximizedAppTopMargin: root.maximizedAppTopMargin
475 maximizedAppTopMargin: root.maximizedAppTopMargin
428 dropShadow: spreadView.active || priv.focusedAppDelegateIsDislocated
476 dropShadow: spreadView.active || priv.focusedAppDelegateIsDislocated
429 focusFirstApp: root.focusFirstApp
477 focusFirstApp: root.focusFirstApp
478+ highlightShown: root.altTabPressed && index === priv.highlightIndex
430
479
431 readonly property bool isDash: model.appId == "unity8-dash"
480 readonly property bool isDash: model.appId == "unity8-dash"
432
481
@@ -661,4 +710,29 @@ AbstractStage {
661 }
710 }
662 }
711 }
663 }
712 }
713+
714+ EdgeBarrier {
715+ id: edgeBarrier
716+
717+ // NB: it does its own positioning according to the specified edge
718+ edge: Qt.RightEdge
719+
720+ onPassed: {
721+ spreadView.snapToSpread();
722+ }
723+ material: Component {
724+ Item {
725+ Rectangle {
726+ width: parent.height
727+ height: parent.width
728+ rotation: 90
729+ anchors.centerIn: parent
730+ gradient: Gradient {
731+ GradientStop { position: 0.0; color: Qt.rgba(0.16,0.16,0.16,0.7)}
732+ GradientStop { position: 1.0; color: Qt.rgba(0.16,0.16,0.16,0)}
733+ }
734+ }
735+ }
736+ }
737+ }
664}
738}
qml/Stages/SideStage.qmlnew file+118
@@ -0,0 +1,118 @@
1+/*
2+ * Copyright (C) 2016 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.4
18+import QtQuick.Layouts 1.1
19+import Ubuntu.Components 1.3
20+import Ubuntu.Gestures 0.1
21+import "../Components"
22+
23+Showable {
24+ id: root
25+ property bool showHint: true
26+ property int panelWidth: units.gu(40)
27+ readonly property alias dragging: hideSideStageDragArea.dragging
28+ readonly property real progress: width / panelWidth
29+
30+ width: 0
31+ shown: false
32+
33+ Item {
34+ id: sideStageDragHandle
35+ anchors {
36+ right: root.left
37+ top: root.top
38+ bottom: root.bottom
39+ }
40+ width: units.gu(2)
41+
42+ opacity: root.shown ? 1 : 0
43+ Behavior on opacity { UbuntuNumberAnimation {} }
44+
45+ Image {
46+ anchors.centerIn: parent
47+ width: hideSideStageDragArea.pressed ? parent.width * 2 : parent.width
48+ height: parent.height
49+ source: "graphics/sidestage_handle@20.png"
50+ Behavior on width { UbuntuNumberAnimation {} }
51+ }
52+ }
53+
54+ Rectangle {
55+ anchors.fill: parent
56+ color: Qt.rgba(0,0,0,0.95)
57+ }
58+
59+ Column {
60+ anchors.verticalCenter: parent.verticalCenter
61+ width: panelWidth - units.gu(6)
62+ x: panelWidth/2 - width/2
63+ spacing: units.gu(3)
64+ opacity: 0.8
65+ visible: showHint
66+
67+ Icon {
68+ width: units.gu(30)
69+ anchors.horizontalCenter: parent.horizontalCenter
70+ source: "graphics/sidestage_drag.svg"
71+ color: enabled ? Qt.rgba(1,1,1,1) : Qt.rgba(1,0,0,1)
72+ keyColor: Qt.rgba(1,1,1,1)
73+ }
74+
75+ Label {
76+ text: i18n.tr("Drag using 3 fingers any application from one window to the other")
77+ width: parent.width
78+ wrapMode: Text.WordWrap
79+ color: enabled ? Qt.rgba(1,1,1,1) : Qt.rgba(1,0,0,1)
80+ }
81+ }
82+
83+ showAnimation: NumberAnimation {
84+ property: "width"
85+ to: panelWidth
86+ duration: UbuntuAnimation.BriskDuration
87+ easing.type: Easing.OutCubic
88+ }
89+
90+ hideAnimation: NumberAnimation {
91+ property: "width"
92+ to: 0
93+ duration: UbuntuAnimation.BriskDuration
94+ easing.type: Easing.OutCubic
95+ }
96+
97+ DragHandle {
98+ id: hideSideStageDragArea
99+ objectName: "hideSideStageDragArea"
100+
101+ direction: Direction.Leftwards
102+ rotation: 180
103+ enabled: root.shown
104+ anchors.right: root.left
105+ width: sideStageDragHandle.width
106+ height: root.height
107+ stretch: true
108+
109+ immediateRecognition: true
110+ maxTotalDragDistance: panelWidth
111+ autoCompleteDragThreshold: panelWidth / 2
112+ }
113+
114+ // SideStage mouse event eater
115+ MouseArea {
116+ anchors.fill: parent
117+ }
118+}
qml/Stages/Splash.qml+4−2
@@ -76,6 +76,7 @@ Item {
76 }
76 }
77
77
78 Ambiance.PageHeadStyle {
78 Ambiance.PageHeadStyle {
79+ // FIXME: Replace PageHeadStyle by PageHeader from Ubuntu.Components 1.3.
79 id: header
80 id: header
80 anchors {
81 anchors {
81 left: parent.left;
82 left: parent.left;
@@ -86,9 +87,10 @@ Item {
86 property color dividerColor: Qt.darker(styledItem.backgroundColor, 1.1)
87 property color dividerColor: Qt.darker(styledItem.backgroundColor, 1.1)
87 property color panelColor: Qt.lighter(styledItem.backgroundColor, 1.1)
88 property color panelColor: Qt.lighter(styledItem.backgroundColor, 1.1)
88 panelForegroundColor: config.foregroundColor
89 panelForegroundColor: config.foregroundColor
90+ backgroundColor: "transparent"
89 config: PageHeadConfiguration {
91 config: PageHeadConfiguration {
90 id: headerConfig
92 id: headerConfig
91− foregroundColor: styledItem.fakeTheme.palette.selected.backgroundText
93+ foregroundColor: styledItem.fakeTheme.palette.normal.backgroundText
92 }
94 }
93
95
94 property var contents: null
96 property var contents: null
@@ -134,7 +136,7 @@ Item {
134 anchors.topMargin: units.gu(2)
136 anchors.topMargin: units.gu(2)
135 fontSize: "large"
137 fontSize: "large"
136
138
137− color: styledItem.fakeTheme.palette.selected.backgroundText
139+ color: styledItem.fakeTheme.palette.normal.backgroundText
138 visible: d.showIcon
140 visible: d.showIcon
139 }
141 }
140
142
qml/Stages/SpreadDelegate.qml+30−1
@@ -32,6 +32,11 @@ FocusScope {
32 readonly property alias appWindowOrientationAngle: appWindowWithShadow.orientationAngle
32 readonly property alias appWindowOrientationAngle: appWindowWithShadow.orientationAngle
33 readonly property alias appWindowRotation: appWindowWithShadow.rotation
33 readonly property alias appWindowRotation: appWindowWithShadow.rotation
34 readonly property alias orientationChangesEnabled: appWindow.orientationChangesEnabled
34 readonly property alias orientationChangesEnabled: appWindow.orientationChangesEnabled
35+ property int supportedOrientations: application ? application.supportedOrientations :
36+ Qt.PortraitOrientation
37+ | Qt.LandscapeOrientation
38+ | Qt.InvertedPortraitOrientation
39+ | Qt.InvertedLandscapeOrientation
35
40
36 // to be set from outside
41 // to be set from outside
37 property bool interactive: true
42 property bool interactive: true
@@ -43,6 +48,10 @@ FocusScope {
43 property int shellOrientationAngle
48 property int shellOrientationAngle
44 property int shellOrientation
49 property int shellOrientation
45 property QtObject orientations
50 property QtObject orientations
51+ property bool highlightShown: false
52+
53+ // overrideable from outside
54+ property alias fullscreen: appWindow.fullscreen
46
55
47 function matchShellOrientation() {
56 function matchShellOrientation() {
48 if (!root.application)
57 if (!root.application)
@@ -153,7 +162,8 @@ FocusScope {
153 if (!root.application || root.application.rotatesWindowContents) {
162 if (!root.application || root.application.rotatesWindowContents) {
154 return 0;
163 return 0;
155 }
164 }
156− var supportedOrientations = root.application.supportedOrientations;
165+
166+ var supportedOrientations = root.supportedOrientations;
157
167
158 if (supportedOrientations === Qt.PrimaryOrientation) {
168 if (supportedOrientations === Qt.PrimaryOrientation) {
159 supportedOrientations = root.orientations.primary;
169 supportedOrientations = root.orientations.primary;
@@ -261,6 +271,25 @@ FocusScope {
261 Behavior on opacity { UbuntuNumberAnimation {} }
271 Behavior on opacity { UbuntuNumberAnimation {} }
262 }
272 }
263
273
274+ Rectangle {
275+ id: selectionHighlight
276+ objectName: "selectionHighlight"
277+ anchors.fill: appWindow
278+ anchors.margins: -units.gu(1)
279+ color: "white"
280+ opacity: root.highlightShown ? 0.15 : 0
281+ antialiasing: true
282+ visible: opacity > 0
283+ }
284+
285+ Rectangle {
286+ anchors { left: selectionHighlight.left; right: selectionHighlight.right; bottom: selectionHighlight.bottom; }
287+ height: units.dp(2)
288+ color: UbuntuColors.orange
289+ visible: root.highlightShown
290+ antialiasing: true
291+ }
292+
264 ApplicationWindow {
293 ApplicationWindow {
265 id: appWindow
294 id: appWindow
266 objectName: application ? "appWindow_" + application.appId : "appWindow_null"
295 objectName: application ? "appWindow_" + application.appId : "appWindow_null"
qml/Stages/SurfaceContainer.qml+1
@@ -118,6 +118,7 @@ FocusScope {
118
118
119
119
120 TouchGate {
120 TouchGate {
121+ objectName: "touchGate-"+name
121 targetItem: surfaceItem
122 targetItem: surfaceItem
122 anchors.fill: root
123 anchors.fill: root
123 enabled: surfaceItem.enabled
124 enabled: surfaceItem.enabled
qml/Stages/TabletSideStageTouchGesture.qmlnew file+154
@@ -0,0 +1,154 @@
1+/*
2+ * Copyright (C) 2016 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.4
18+import Ubuntu.Gestures 0.1
19+
20+TouchGestureArea {
21+ id: root
22+ minimumTouchPoints: 3
23+ maximumTouchPoints: 3
24+
25+ property bool enableDrag: true
26+ property Component dragComponent
27+ property var dragComponentProperties: undefined
28+
29+ readonly property bool recognisedPress: status == TouchGestureArea.Recognized &&
30+ touchPoints.length >= minimumTouchPoints &&
31+ touchPoints.length <= maximumTouchPoints
32+ readonly property bool recognisedDrag: priv.wasRecognisedPress && dragging
33+
34+ signal pressed(int x, int y)
35+ signal clicked
36+ signal dragStarted
37+ signal dropped
38+ signal cancelled
39+
40+ onEnabledChanged: {
41+ if (!enabled) {
42+ if (priv.dragObject) root.cancelled();
43+ priv.wasRecognisedDrag = false;
44+ priv.wasRecognisedPress = false;
45+ }
46+ }
47+
48+ onRecognisedPressChanged: {
49+ if (recognisedPress) {
50+ // get the app at the center of the gesture
51+ var centerX = 0;
52+ var centerY = 0;
53+ for (var i = 0; i < touchPoints.length; i++) {
54+ centerX += touchPoints[i].x;
55+ centerY += touchPoints[i].y;
56+ }
57+ centerX = centerX/touchPoints.length;
58+ centerY = centerY/touchPoints.length;
59+
60+ pressed(centerX, centerY);
61+ priv.wasRecognisedPress = true;
62+ }
63+ }
64+
65+ onStatusChanged: {
66+ if (status != TouchGestureArea.Recognized) {
67+ if (status == TouchGestureArea.Rejected) {
68+ root.cancelled();
69+ } else if (status == TouchGestureArea.WaitingForTouch) {
70+ if (priv.wasRecognisedPress) {
71+ if (!priv.wasRecognisedDrag) {
72+ root.clicked();
73+ } else {
74+ root.dropped();
75+ }
76+ }
77+ }
78+ priv.wasRecognisedDrag = false;
79+ priv.wasRecognisedPress = false;
80+ }
81+ }
82+
83+ onRecognisedDragChanged: {
84+ if (enableDrag && recognisedDrag) {
85+ priv.wasRecognisedDrag = true;
86+ root.dragStarted()
87+ }
88+ }
89+
90+ QtObject {
91+ id: priv
92+ property var dragObject: null
93+
94+ property bool wasRecognisedPress: false
95+ property bool wasRecognisedDrag: false
96+ }
97+
98+ onCancelled: {
99+ if (priv.dragObject) {
100+ var obj = priv.dragObject;
101+ priv.dragObject = null;
102+
103+ obj.Drag.cancel();
104+ obj.destroy();
105+ }
106+ }
107+
108+ onDragStarted: {
109+ if (dragComponentProperties) {
110+ priv.dragObject = dragComponent.createObject(root, dragComponentProperties);
111+ } else {
112+ priv.dragObject = dragComponent.createObject(root);
113+ }
114+ priv.dragObject.Drag.start();
115+ }
116+
117+ onDropped: {
118+ if (priv.dragObject) {
119+ var obj = priv.dragObject;
120+ priv.dragObject = null;
121+
122+ obj.Drag.drop();
123+ obj.destroy();
124+ }
125+ }
126+
127+ Binding {
128+ target: priv.dragObject
129+ when: priv.dragObject && priv.wasRecognisedDrag
130+ property: "x"
131+ value: {
132+ if (!priv.dragObject) return 0;
133+ var sum = 0;
134+ for (var i = 0; i < root.touchPoints.length; i++) {
135+ sum += root.touchPoints[i].x;
136+ }
137+ return sum/root.touchPoints.length - priv.dragObject.width/2;
138+ }
139+ }
140+
141+ Binding {
142+ target: priv.dragObject
143+ when: priv.dragObject && priv.wasRecognisedDrag
144+ property: "y"
145+ value: {
146+ if (!priv.dragObject) return 0;
147+ var sum = 0;
148+ for (var i = 0; i < root.touchPoints.length; i++) {
149+ sum += root.touchPoints[i].y;
150+ }
151+ return sum/root.touchPoints.length - priv.dragObject.height/2;
152+ }
153+ }
154+}
qml/Stages/TabletStage.qml+469−173
@@ -46,7 +46,7 @@ AbstractStage {
46 if (delta < 0) { delta += 360; }
46 if (delta < 0) { delta += 360; }
47 delta = delta % 360;
47 delta = delta % 360;
48
48
49− var supportedOrientations = spreadDelegate.application.supportedOrientations;
49+ var supportedOrientations = spreadDelegate.supportedOrientations;
50 if (supportedOrientations === Qt.PrimaryOrientation) {
50 if (supportedOrientations === Qt.PrimaryOrientation) {
51 supportedOrientations = spreadDelegate.orientations.primary;
51 supportedOrientations = spreadDelegate.orientations.primary;
52 }
52 }
@@ -70,11 +70,32 @@ AbstractStage {
70 }
70 }
71 }
71 }
72
72
73+ function pushRightEdge(amount) {
74+ if (spreadView.contentX == -spreadView.shift) {
75+ edgeBarrier.push(amount);
76+ }
77+ }
78+
73 orientationChangesEnabled: priv.mainAppOrientationChangesEnabled
79 orientationChangesEnabled: priv.mainAppOrientationChangesEnabled
74
80
75− supportedOrientations: mainApp ? mainApp.supportedOrientations
81+ supportedOrientations: {
76− : (Qt.PortraitOrientation | Qt.LandscapeOrientation
82+ if (mainApp) {
77− | Qt.InvertedPortraitOrientation | Qt.InvertedLandscapeOrientation)
83+ var orientations = mainApp.supportedOrientations;
84+ orientations |= Qt.LandscapeOrientation | Qt.InvertedLandscapeOrientation;
85+ if (priv.sideStageAppId && !spreadView.surfaceDragging) {
86+ // If we have a sidestage app, support Portrait orientation
87+ // so that it will switch the sidestage app to mainstage on rotate
88+ orientations |= Qt.PortraitOrientation|Qt.InvertedPortraitOrientation;
89+ }
90+ return orientations;
91+ } else {
92+ // we just don't care
93+ return Qt.PortraitOrientation |
94+ Qt.LandscapeOrientation |
95+ Qt.InvertedPortraitOrientation |
96+ Qt.InvertedLandscapeOrientation;
97+ }
98+ }
78
99
79 onWidthChanged: {
100 onWidthChanged: {
80 spreadView.selectedIndex = -1;
101 spreadView.selectedIndex = -1;
@@ -82,13 +103,6 @@ AbstractStage {
82 spreadView.contentX = -spreadView.shift;
103 spreadView.contentX = -spreadView.shift;
83 }
104 }
84
105
85− onShellOrientationChanged: {
86− if (shellOrientation == Qt.PortraitOrientation || shellOrientation == Qt.InvertedPortraitOrientation) {
87− ApplicationManager.focusApplication(priv.mainStageAppId);
88− priv.sideStageAppId = "";
89− }
90− }
91−
92 onInverseProgressChanged: {
106 onInverseProgressChanged: {
93 // This can't be a simple binding because that would be triggered after this handler
107 // This can't be a simple binding because that would be triggered after this handler
94 // while we need it active before doing the anition left/right
108 // while we need it active before doing the anition left/right
@@ -102,6 +116,38 @@ AbstractStage {
102 priv.oldInverseProgress = inverseProgress;
116 priv.oldInverseProgress = inverseProgress;
103 }
117 }
104
118
119+ onAltTabPressedChanged: {
120+ if (!spreadEnabled) {
121+ return;
122+ }
123+ if (altTabPressed) {
124+ priv.highlightIndex = Math.min(spreadRepeater.count - 1, 1);
125+ spreadView.snapToSpread();
126+ } else {
127+ for (var i = 0; i < spreadRepeater.count; i++) {
128+ if (spreadRepeater.itemAt(i).zIndex === priv.highlightIndex) {
129+ spreadView.snapTo(i);
130+ return;
131+ }
132+ }
133+ }
134+ }
135+
136+ FocusScope {
137+ focus: root.altTabPressed
138+
139+ Keys.onPressed: {
140+ switch (event.key) {
141+ case Qt.Key_Tab:
142+ priv.highlightIndex = (priv.highlightIndex + 1) % spreadRepeater.count
143+ break;
144+ case Qt.Key_Backtab:
145+ priv.highlightIndex = (priv.highlightIndex + spreadRepeater.count - 1) % spreadRepeater.count
146+ break;
147+ }
148+ }
149+ }
150+
105 QtObject {
151 QtObject {
106 id: priv
152 id: priv
107 objectName: "stagesPriv"
153 objectName: "stagesPriv"
@@ -130,20 +176,9 @@ AbstractStage {
130
176
131 property int oldInverseProgress: 0
177 property int oldInverseProgress: 0
132
178
133− onFocusedAppIdChanged: {
179+ property int highlightIndex: 0
134− if (priv.focusedAppId.length > 0) {
135− var focusedApp = ApplicationManager.findApplication(focusedAppId);
136− if (focusedApp.stage == ApplicationInfoInterface.SideStage) {
137− priv.sideStageAppId = focusedAppId;
138− } else {
139− priv.mainStageAppId = focusedAppId;
140− root.mainApp = focusedApp;
141− }
142− }
143
180
144− appId0 = ApplicationManager.count >= 1 ? ApplicationManager.get(0).appId : "";
181+ onFocusedAppIdChanged: updateStageApps()
145− appId1 = ApplicationManager.count > 1 ? ApplicationManager.get(1).appId : "";
146− }
147
182
148 onFocusedAppDelegateChanged: {
183 onFocusedAppDelegateChanged: {
149 if (focusedAppDelegate) {
184 if (focusedAppDelegate) {
@@ -185,6 +220,50 @@ AbstractStage {
185 }
220 }
186 return oneWayFlick;
221 return oneWayFlick;
187 }
222 }
223+
224+ onHighlightIndexChanged: {
225+ spreadView.contentX = highlightIndex * spreadView.contentWidth / (spreadRepeater.count + 2)
226+ }
227+
228+ function getTopApp(stage) {
229+ for (var i = 0; i < ApplicationManager.count; i++) {
230+ var app = ApplicationManager.get(i)
231+ if (app.stage === stage) {
232+ return app;
233+ }
234+ }
235+ return null;
236+ }
237+
238+ function setAppStage(appId, stage, save) {
239+ var app = ApplicationManager.findApplication(appId);
240+ if (app) {
241+ app.stage = stage;
242+ if (save) {
243+ WindowStateStorage.saveStage(appId, stage);
244+ }
245+ }
246+ }
247+
248+ function updateStageApps() {
249+ var app = priv.getTopApp(ApplicationInfoInterface.MainStage);
250+ priv.mainStageAppId = app ? app.appId : ""
251+ root.mainApp = app;
252+
253+ if (sideStage.shown) {
254+ app = priv.getTopApp(ApplicationInfoInterface.SideStage);
255+ priv.sideStageAppId = app ? app.appId : ""
256+ } else {
257+ priv.sideStageAppId = "";
258+ }
259+
260+ appId0 = ApplicationManager.count >= 1 ? ApplicationManager.get(0).appId : "";
261+ appId1 = ApplicationManager.count > 1 ? ApplicationManager.get(1).appId : "";
262+ }
263+
264+ readonly property bool sideStageEnabled: root.shellOrientation == Qt.LandscapeOrientation ||
265+ root.shellOrientation == Qt.InvertedLandscapeOrientation
266+ Component.onCompleted: updateStageApps();
188 }
267 }
189
268
190 Connections {
269 Connections {
@@ -212,7 +291,8 @@ AbstractStage {
212 ApplicationManager.focusApplication("unity8-dash")
291 ApplicationManager.focusApplication("unity8-dash")
213 }
292 }
214 if (priv.sideStageAppId == appId) {
293 if (priv.sideStageAppId == appId) {
215− priv.sideStageAppId = "";
294+ var app = priv.getTopApp(ApplicationInfoInterface.SideStage);
295+ priv.sideStageAppId = app === null ? "" : app.appId;
216 }
296 }
217
297
218 if (ApplicationManager.count == 0) {
298 if (ApplicationManager.count == 0) {
@@ -223,6 +303,7 @@ AbstractStage {
223 // lets make sure the spread doesn't mess up by the changing app list.
303 // lets make sure the spread doesn't mess up by the changing app list.
224 spreadView.phase = 0;
304 spreadView.phase = 0;
225 spreadView.contentX = -spreadView.shift;
305 spreadView.contentX = -spreadView.shift;
306+
226 ApplicationManager.focusApplication(ApplicationManager.get(0).appId);
307 ApplicationManager.focusApplication(ApplicationManager.get(0).appId);
227 }
308 }
228 }
309 }
@@ -278,6 +359,7 @@ AbstractStage {
278 property int selectedIndex: -1
359 property int selectedIndex: -1
279 property int draggedDelegateCount: 0
360 property int draggedDelegateCount: 0
280 property int closingIndex: -1
361 property int closingIndex: -1
362+ property var selectedApplication: selectedIndex !== -1 ? ApplicationManager.get(selectedIndex) : null
281
363
282 // FIXME: Workaround Flickable's not keepping its contentX still when resized
364 // FIXME: Workaround Flickable's not keepping its contentX still when resized
283 onContentXChanged: { forceItToRemainStillIfBeingResized(); }
365 onContentXChanged: { forceItToRemainStillIfBeingResized(); }
@@ -299,15 +381,8 @@ AbstractStage {
299 }
381 }
300 }
382 }
301
383
302− property bool sideStageDragging: sideStageDragHandle.dragging
384+ property real sideStageDragProgress: sideStage.progress
303− property real sideStageDragProgress: sideStageDragHandle.progress
385+ property bool surfaceDragging: triGestureArea.recognisedDrag
304−
305− onSideStageDragProgressChanged: {
306− if (sideStageDragProgress == 1) {
307− ApplicationManager.focusApplication(priv.mainStageAppId);
308− priv.sideStageAppId = "";
309− }
310− }
311
386
312 // In case the ApplicationManager already holds an app when starting up we're missing animations
387 // In case the ApplicationManager already holds an app when starting up we're missing animations
313 // Make sure we end up in the same state
388 // Make sure we end up in the same state
@@ -358,7 +433,7 @@ AbstractStage {
358 }
433 }
359 ]
434 ]
360 state: {
435 state: {
361− if (priv.mainStageAppId && !priv.sideStageAppId) {
436+ if ((priv.mainStageAppId && !priv.sideStageAppId) || !priv.sideStageEnabled) {
362 return "main";
437 return "main";
363 }
438 }
364 if (!priv.mainStageAppId && priv.sideStageAppId) {
439 if (!priv.mainStageAppId && priv.sideStageAppId) {
@@ -375,12 +450,26 @@ AbstractStage {
375 // Flickabe.contentX wiggles during resizes. Don't react to it.
450 // Flickabe.contentX wiggles during resizes. Don't react to it.
376 return;
451 return;
377 }
452 }
378− if (spreadView.phase == 0 && spreadView.shiftedContentX > spreadView.width * spreadView.positionMarker2) {
453+
379− spreadView.phase = 1;
454+ switch (phase) {
380− } else if (spreadView.phase == 1 && spreadView.shiftedContentX > spreadView.width * spreadView.positionMarker4) {
455+ case 0:
381− spreadView.phase = 2;
456+ // the "spreadEnabled" part is because when code does "phase = 0; contentX = -shift" to
382− } else if (spreadView.phase == 1 && spreadView.shiftedContentX < spreadView.width * spreadView.positionMarker2) {
457+ // dismiss the spread because spreadEnabled went to false, for some reason, during tests,
383− spreadView.phase = 0;
458+ // Flickable might jump in and change contentX value back, causing the code below to do
459+ // "phase = 1" which will make the spread stay.
460+ // It sucks that we have no control whatsoever over whether or when Flickable animates its
461+ // contentX.
462+ if (root.spreadEnabled && shiftedContentX > width * positionMarker2) {
463+ phase = 1;
464+ }
465+ break;
466+ case 1:
467+ if (shiftedContentX < width * positionMarker2) {
468+ phase = 0;
469+ } else if (shiftedContentX >= width * positionMarker4 && !spreadDragArea.dragging) {
470+ phase = 2;
471+ }
472+ break;
384 }
473 }
385 }
474 }
386
475
@@ -391,12 +480,18 @@ AbstractStage {
391 } else if (shiftedContentX < phase1Width) {
480 } else if (shiftedContentX < phase1Width) {
392 snapTo(1);
481 snapTo(1);
393 } else {
482 } else {
394− // Add 1 pixel to make sure we definitely hit positionMarker4 even with rounding errors of the animation.
483+ snapToSpread();
395− snapAnimation.targetContentX = spreadView.width * spreadView.positionMarker4 + 1 - shift;
396− snapAnimation.start();
397 }
484 }
398 }
485 }
486+
487+ function snapToSpread() {
488+ // Add 1 pixel to make sure we definitely hit positionMarker4 even with rounding errors of the animation.
489+ snapAnimation.targetContentX = (spreadView.width * spreadView.positionMarker4) + 1 - shift;
490+ snapAnimation.start();
491+ }
492+
399 function snapTo(index) {
493 function snapTo(index) {
494+ snapAnimation.stop();
400 spreadView.selectedIndex = index;
495 spreadView.selectedIndex = index;
401 snapAnimation.targetContentX = -shift;
496 snapAnimation.targetContentX = -shift;
402 snapAnimation.start();
497 snapAnimation.start();
@@ -406,55 +501,41 @@ AbstractStage {
406 // We don't want to really reorder them in the model because that allows us to keep track
501 // We don't want to really reorder them in the model because that allows us to keep track
407 // of the last focused order.
502 // of the last focused order.
408 function indexToZIndex(index) {
503 function indexToZIndex(index) {
504+ // only shuffle when we've got a main and overlay
505+ if (state !== "mainAndOverlay") return index;
506+
409 var app = ApplicationManager.get(index);
507 var app = ApplicationManager.get(index);
410 if (!app) {
508 if (!app) {
411 return index;
509 return index;
412 }
510 }
413
511
414− var active = app.appId == priv.mainStageAppId || app.appId == priv.sideStageAppId;
512+ // don't shuffle indexes greater than "actives or next"
415− if (active && app.stage == ApplicationInfoInterface.MainStage) {
513+ if (index > 2) return index;
416− // if this app is active, and its the MainStage, always put it to index 0
514+
515+ if (app.appId === priv.mainStageAppId) {
516+ // Active main stage always at 0
417 return 0;
517 return 0;
418 }
518 }
419− if (active && app.stage == ApplicationInfoInterface.SideStage) {
420− if (!priv.mainStageAppId) {
421− // Only have SS apps running. Put the active one at 0
422− return 0;
423− }
424
519
425− // Precondition now: There's an active MS app and this is SS app:
520+ if (spreadView.nextInStack > 0) {
426− if (spreadView.nextInStack >= 0 && ApplicationManager.get(spreadView.nextInStack).stage == ApplicationInfoInterface.MainStage) {
521+ var nextAppInStack = ApplicationManager.get(spreadView.nextInStack);
427− // If the next app coming from the right is a MS app, we need to elevate this SS ap above it.
522+
428− // Put it to at least level 2, or higher if there's more apps coming in before this one.
523+ if (index === spreadView.nextInStack) {
429− return Math.max(index, 2);
524+ // this is the next app in stack.
430− } else {
525+
431− // if this is no next app to come in from the right, place this one at index 1, just on top the active MS app.
526+ if (app.stage === ApplicationInfoInterface.SideStage) {
527+ // if the next app in stack is a sidestage app, it must order on top of other side stage app
528+ return Math.min(2, ApplicationManager.count-1);
529+ }
432 return 1;
530 return 1;
433 }
531 }
434− }
532+ if (nextAppInStack.stage === ApplicationInfoInterface.SideStage) {
435− if (index <= 2 && app.stage == ApplicationInfoInterface.MainStage && priv.sideStageAppId) {
533+ // if the next app in stack is a sidestage app, it must order on top of other side stage app
436− // Ok, this is an inactive MS app. If there's an active SS app around, we need to place this one
534+ return 1;
437− // in between the active MS app and the active SS app, so that it comes in from there when dragging from the right.
438− // If there's now active SS app, just leave it where it is.
439− return priv.indexOf(priv.sideStageAppId) < index ? index - 1 : index;
440− }
441− if (index == spreadView.nextInStack && app.stage == ApplicationInfoInterface.SideStage) {
442− // This is a SS app and the next one to come in from the right:
443− if (priv.sideStageAppId && priv.mainStageAppId) {
444− // If there's both, an active MS and an active SS app, put this one right on top of that
445− return 2;
446 }
535 }
447− // Or if there's only one other active app, put it on top of that.
536+ return Math.min(2, ApplicationManager.count-1);
448− // The case that there isn't any other active app is already handled above.
449− return 1;
450 }
537 }
451− if (index == 2 && spreadView.nextInStack == 1 && priv.sideStageAppId) {
538+ return Math.min(index+1, ApplicationManager.count-1);
452− // If its index 2 but not the next one to come in, it means
453− // we've pulled another one down to index 2. Move this one up to 2 instead.
454− return 3;
455− }
456− // don't touch all others... (mostly index > 3 + simple cases where the above doesn't shuffle much)
457− return index;
458 }
539 }
459
540
460 SequentialAnimation {
541 SequentialAnimation {
@@ -472,8 +553,12 @@ AbstractStage {
472 script: {
553 script: {
473 if (spreadView.selectedIndex >= 0) {
554 if (spreadView.selectedIndex >= 0) {
474 var newIndex = spreadView.selectedIndex;
555 var newIndex = spreadView.selectedIndex;
556+ var application = ApplicationManager.get(newIndex);
557+ if (application.stage === ApplicationInfoInterface.SideStage) {
558+ sideStage.showNow();
559+ }
475 spreadView.selectedIndex = -1;
560 spreadView.selectedIndex = -1;
476− ApplicationManager.focusApplication(ApplicationManager.get(newIndex).appId);
561+ ApplicationManager.focusApplication(application.appId);
477 spreadView.phase = 0;
562 spreadView.phase = 0;
478 spreadView.contentX = -spreadView.shift;
563 spreadView.contentX = -spreadView.shift;
479 }
564 }
@@ -481,6 +566,11 @@ AbstractStage {
481 }
566 }
482 }
567 }
483
568
569+ Behavior on contentX {
570+ enabled: root.altTabPressed
571+ UbuntuNumberAnimation {}
572+ }
573+
484 MouseArea {
574 MouseArea {
485 id: spreadRow
575 id: spreadRow
486 x: spreadView.contentX
576 x: spreadView.contentX
@@ -491,87 +581,82 @@ AbstractStage {
491 spreadView.snapTo(0);
581 spreadView.snapTo(0);
492 }
582 }
493
583
494− Rectangle {
584+ DropArea {
495− id: sideStageBackground
585+ objectName: "MainStageDropArea"
496− color: "black"
586+ anchors {
497− width: spreadView.sideStageWidth * (1 - sideStageDragHandle.progress)
587+ left: parent.left
498− height: priv.landscapeHeight
588+ top: parent.top
499− x: spreadView.width - width
589+ bottom: parent.bottom
500− z: spreadView.indexToZIndex(priv.indexOf(priv.sideStageAppId))
590+ }
501− opacity: spreadView.phase == 0 ? 1 : 0
591+ width: spreadView.width - sideStage.width
502− Behavior on opacity { UbuntuNumberAnimation {} }
592+ enabled: priv.sideStageEnabled
593+
594+ onDropped: {
595+ priv.setAppStage(drag.source.appId, ApplicationInfoInterface.MainStage, true);
596+ ApplicationManager.focusApplication(drag.source.appId);
597+ }
598+ keys: "SideStage"
503 }
599 }
504
600
505− Item {
601+ SideStage {
506− id: sideStageDragHandle
602+ id: sideStage
507− anchors.right: sideStageBackground.left
603+ objectName: "sideStage"
508− anchors.top: sideStageBackground.top
509− width: units.gu(2)
510 height: priv.landscapeHeight
604 height: priv.landscapeHeight
511− z: sideStageBackground.z
605+ x: spreadView.width - width
512− opacity: spreadView.phase <= 0 && spreadView.sideStageVisible ? 1 : 0
606+ z: {
513− property real progress: 0
607+ if (!priv.mainStageAppId) return 0;
514− property bool dragging: false
515
608
516− Behavior on opacity { UbuntuNumberAnimation {} }
609+ if (priv.sideStageAppId && spreadView.nextInStack > 0) {
610+ var nextAppInStack = ApplicationManager.get(spreadView.nextInStack);
517
611
518− Connections {
612+ if (nextAppInStack.stage === ApplicationInfoInterface.MainStage) {
519− target: spreadView
613+ // if the next app in stack is a main stage app, put the sidestage on top of it.
520− onSideStageVisibleChanged: {
614+ return 2;
521− if (spreadView.sideStageVisible) {
522− sideStageDragHandle.progress = 0;
523 }
615 }
616+ return 1;
524 }
617 }
618+
619+ return 1;
525 }
620 }
621+ visible: progress != 0
622+ enabled: priv.sideStageEnabled && sideStageDropArea.dropAllowed
623+ opacity: priv.sideStageEnabled && !spreadView.active ? 1 : 0
624+ Behavior on opacity { UbuntuNumberAnimation {} }
526
625
527− Image {
626+ onShownChanged: {
528− anchors.centerIn: parent
627+ if (!shown && ApplicationManager.focusedApplicationId == priv.sideStageAppId) {
529− width: sideStageDragHandleMouseArea.pressed ? parent.width * 2 : parent.width
628+ ApplicationManager.requestFocusApplication(priv.mainStageAppId);
530− height: parent.height
629+ }
531− source: "graphics/sidestage_handle@20.png"
630+ priv.updateStageApps();
532− Behavior on width { UbuntuNumberAnimation {} }
631+ if (shown && priv.sideStageAppId) {
632+ ApplicationManager.requestFocusApplication(priv.sideStageAppId);
633+ }
533 }
634 }
534
635
535− MouseArea {
636+ DropArea {
536− id: sideStageDragHandleMouseArea
637+ id: sideStageDropArea
638+ objectName: "SideStageDropArea"
537 anchors.fill: parent
639 anchors.fill: parent
538− enabled: spreadView.shiftedContentX == 0
640+
539− property int startX
641+ property bool dropAllowed: true
540− property var gesturePoints: new Array()
642+
541− property real totalDiff
643+ onEntered: {
542−
644+ dropAllowed = drag.keys != "Disabled";
543− onPressed: {
544− gesturePoints = [];
545− startX = mouseX;
546− totalDiff = 0.0;
547− sideStageDragHandle.progress = 0;
548− sideStageDragHandle.dragging = true;
549− }
550− onMouseXChanged: {
551− totalDiff += mouseX - startX;
552− if (priv.mainStageAppId) {
553− sideStageDragHandle.progress = Math.max(0, totalDiff / spreadView.sideStageWidth);
554− }
555− gesturePoints.push(mouseX);
556 }
645 }
557− onReleased: {
646+ onExited: {
558− if (priv.mainStageAppId) {
647+ dropAllowed = true;
559− var oneWayFlick = priv.evaluateOneWayFlick(gesturePoints);
648+ }
560− sideStageDragSnapAnimation.to = sideStageDragHandle.progress > 0.5 || oneWayFlick ? 1 : 0;
649+ onDropped: {
561− sideStageDragSnapAnimation.start();
650+ if (drop.keys == "MainStage") {
562− } else {
651+ priv.setAppStage(drop.source.appId, ApplicationInfoInterface.SideStage, true);
563− sideStageDragHandle.dragging = false;
652+ ApplicationManager.requestFocusApplication(drop.source.appId);
564 }
653 }
565 }
654 }
566− }
655+ drag {
567− UbuntuNumberAnimation {
656+ onSourceChanged: {
568− id: sideStageDragSnapAnimation
657+ if (!sideStageDropArea.drag.source) {
569− target: sideStageDragHandle
658+ dropAllowed = true;
570− property: "progress"
659+ }
571−
572− onRunningChanged: {
573− if (!running) {
574− sideStageDragHandle.dragging = false;
575 }
660 }
576 }
661 }
577 }
662 }
@@ -586,36 +671,54 @@ AbstractStage {
586 id: spreadTile
671 id: spreadTile
587 objectName: model.appId ? "tabletSpreadDelegate_" + model.appId
672 objectName: model.appId ? "tabletSpreadDelegate_" + model.appId
588 : "tabletSpreadDelegate_null";
673 : "tabletSpreadDelegate_null";
589− width: {
674+ width: spreadView.width
590− if (wantsMainStage) {
675+ height: spreadView.height
591− return spreadView.width;
676+ active: appId == priv.mainStageAppId || appId == priv.sideStageAppId
592− } else {
677+ zIndex: selected && stage == ApplicationInfoInterface.MainStage ? 0 : spreadView.indexToZIndex(index)
593− return spreadView.sideStageWidth;
594− }
595− }
596− height: {
597− if (wantsMainStage) {
598− return spreadView.height;
599− } else {
600− return priv.landscapeHeight;
601− }
602− }
603− active: model.appId == priv.mainStageAppId || model.appId == priv.sideStageAppId
604− zIndex: spreadView.indexToZIndex(index)
605 selected: spreadView.selectedIndex == index
678 selected: spreadView.selectedIndex == index
606 otherSelected: spreadView.selectedIndex >= 0 && !selected
679 otherSelected: spreadView.selectedIndex >= 0 && !selected
607− isInSideStage: priv.sideStageAppId == model.appId
680+ isInSideStage: priv.sideStageAppId === appId
608 interactive: !spreadView.interactive && spreadView.phase === 0 && root.interactive
681 interactive: !spreadView.interactive && spreadView.phase === 0 && root.interactive
609 swipeToCloseEnabled: spreadView.interactive && !snapAnimation.running
682 swipeToCloseEnabled: spreadView.interactive && !snapAnimation.running
610 maximizedAppTopMargin: root.maximizedAppTopMargin
683 maximizedAppTopMargin: root.maximizedAppTopMargin
611− dragOffset: !isDash && model.appId == priv.mainStageAppId && root.inverseProgress > 0 && spreadView.phase === 0 ? root.inverseProgress : 0
684+ dragOffset: !isDash && appId == priv.mainStageAppId && root.inverseProgress > 0 && spreadView.phase === 0 ? root.inverseProgress : 0
612 application: ApplicationManager.get(index)
685 application: ApplicationManager.get(index)
613 closeable: !isDash
686 closeable: !isDash
687+ highlightShown: root.altTabPressed && priv.highlightIndex == zIndex
614
688
615 readonly property bool wantsMainStage: model.stage == ApplicationInfoInterface.MainStage
689 readonly property bool wantsMainStage: model.stage == ApplicationInfoInterface.MainStage
616
690
617 readonly property bool isDash: model.appId == "unity8-dash"
691 readonly property bool isDash: model.appId == "unity8-dash"
618
692
693+ stage: model.stage
694+ fullscreen: {
695+ if (mainApp && stage === ApplicationInfoInterface.SideStage) {
696+ return mainApp.fullscreen;
697+ }
698+ return application ? application.fullscreen : false;
699+ }
700+
701+ supportedOrientations: {
702+ if (application) {
703+ var orientations = application.supportedOrientations;
704+ if (stage == ApplicationInfoInterface.MainStage) {
705+ // When an app is in the mainstage, it always supports Landscape|InvertedLandscape
706+ // so that we can drag it from the main stage to the side stage
707+ orientations |= Qt.LandscapeOrientation | Qt.InvertedLandscapeOrientation;
708+ }
709+ return orientations;
710+ } else {
711+ // we just don't care
712+ return Qt.PortraitOrientation |
713+ Qt.LandscapeOrientation |
714+ Qt.InvertedPortraitOrientation |
715+ Qt.InvertedLandscapeOrientation;
716+ }
717+ }
718+
719+ readonly property string appId: model.appId
720+ readonly property bool isDash: appId == "unity8-dash"
721+
619 Binding {
722 Binding {
620 target: spreadTile.application
723 target: spreadTile.application
621 property: "exemptFromLifecycle"
724 property: "exemptFromLifecycle"
@@ -646,6 +749,28 @@ AbstractStage {
646 enabled: spreadView.closingIndex >= 0
749 enabled: spreadView.closingIndex >= 0
647 UbuntuNumberAnimation {}
750 UbuntuNumberAnimation {}
648 }
751 }
752+ Connections {
753+ target: priv
754+ onSideStageEnabledChanged: refreshStage()
755+ }
756+
757+ Component.onCompleted: {
758+ refreshStage()
759+ stageChanged.connect(priv.updateStageApps);
760+ }
761+
762+ function refreshStage() {
763+ var stage = ApplicationInfoInterface.MainStage;
764+ if (priv.sideStageEnabled) {
765+ if (application && application.supportedOrientations & (Qt.PortraitOrientation|Qt.InvertedPortraitOrientation)) {
766+ stage = WindowStateStorage.getStage(appId);
767+ }
768+ }
769+
770+ if (model.stage !== stage) {
771+ priv.setAppStage(appId, stage, false);
772+ }
773+ }
649
774
650 // This is required because none of the bindings are triggered in some cases:
775 // This is required because none of the bindings are triggered in some cases:
651 // When an app is closed, it might happen that ApplicationManager.get(nextInStack)
776 // When an app is closed, it might happen that ApplicationManager.get(nextInStack)
@@ -670,7 +795,7 @@ AbstractStage {
670
795
671 // TODO: Hiding tile when progress is such that it will be off screen.
796 // TODO: Hiding tile when progress is such that it will be off screen.
672 property bool occluded: {
797 property bool occluded: {
673− if (spreadView.active) return false;
798+ if (spreadView.active && !offScreen) return false;
674 else if (spreadTile.active) return false;
799 else if (spreadTile.active) return false;
675 else if (xTranslateAnimating) return false;
800 else if (xTranslateAnimating) return false;
676 else if (z <= 1 && priv.focusedAppDelegateIsDislocated) return false;
801 else if (z <= 1 && priv.focusedAppDelegateIsDislocated) return false;
@@ -694,17 +819,87 @@ AbstractStage {
694 return progress;
819 return progress;
695 }
820 }
696
821
697− shellOrientationAngle: wantsMainStage ? root.shellOrientationAngle : 0
822+ shellOrientationAngle: root.shellOrientationAngle
698− shellOrientation: wantsMainStage ? root.shellOrientation : Qt.PortraitOrientation
823+ shellOrientation: root.shellOrientation
699− orientations: Orientations {
824+ orientations: root.orientations
700− primary: spreadTile.wantsMainStage ? root.orientations.primary : Qt.PortraitOrientation
825+
701− native_: spreadTile.wantsMainStage ? root.orientations.native_ : Qt.PortraitOrientation
826+ states: [
827+ State {
828+ name: "MainStage"
829+ when: spreadTile.stage == ApplicationInfoInterface.MainStage
830+ },
831+ State {
832+ name: "SideStage"
833+ when: spreadTile.stage == ApplicationInfoInterface.SideStage
834+
835+ PropertyChanges {
836+ target: spreadTile
837+ width: spreadView.sideStageWidth
838+ height: priv.landscapeHeight
839+
840+ supportedOrientations: Qt.PortraitOrientation
841+ shellOrientationAngle: 0
842+ shellOrientation: Qt.PortraitOrientation
843+ orientations: sideStageOrientations
844+ }
845+ }
846+ ]
847+
848+ Orientations {
849+ id: sideStageOrientations
850+ primary: Qt.PortraitOrientation
851+ native_: Qt.PortraitOrientation
702 portrait: root.orientations.portrait
852 portrait: root.orientations.portrait
703 invertedPortrait: root.orientations.invertedPortrait
853 invertedPortrait: root.orientations.invertedPortrait
704 landscape: root.orientations.landscape
854 landscape: root.orientations.landscape
705 invertedLandscape: root.orientations.invertedLandscape
855 invertedLandscape: root.orientations.invertedLandscape
706 }
856 }
707
857
858+ transitions: [
859+ Transition {
860+ to: "SideStage"
861+ SequentialAnimation {
862+ PropertyAction {
863+ target: spreadTile
864+ properties: "width,height,supportedOrientations,shellOrientationAngle,shellOrientation,orientations"
865+ }
866+ ScriptAction {
867+ script: {
868+ // rotate immediately.
869+ spreadTile.matchShellOrientation();
870+ if (ApplicationManager.focusedApplicationId === spreadTile.appId &&
871+ priv.sideStageEnabled && !sideStage.shown) {
872+ // Sidestage was focused, so show the side stage.
873+ sideStage.show();
874+ // if we've switched to a main app which doesnt support portrait, hide the side stage.
875+ } else if (mainApp && (mainApp.supportedOrientations & (Qt.PortraitOrientation|Qt.InvertedPortraitOrientation)) == 0) {
876+ sideStage.hideNow();
877+ }
878+ }
879+ }
880+ }
881+ },
882+ Transition {
883+ from: "SideStage"
884+ SequentialAnimation {
885+ ScriptAction {
886+ script: {
887+ if (priv.sideStageAppId === spreadTile.appId &&
888+ mainApp && (mainApp.supportedOrientations & (Qt.PortraitOrientation|Qt.InvertedPortraitOrientation)) == 0) {
889+ // The mainstage app did not natively support portrait orientation, so focus the sidestage.
890+ ApplicationManager.requestFocusApplication(spreadTile.appId);
891+ }
892+ }
893+ }
894+ PropertyAction {
895+ target: spreadTile
896+ properties: "width,height,supportedOrientations,shellOrientationAngle,shellOrientation,orientations"
897+ }
898+ ScriptAction { script: { spreadTile.matchShellOrientation(); } }
899+ }
900+ }
901+ ]
902+
708 onClicked: {
903 onClicked: {
709 if (spreadView.phase == 2) {
904 if (spreadView.phase == 2) {
710 spreadView.snapTo(index);
905 spreadView.snapTo(index);
@@ -724,6 +919,16 @@ AbstractStage {
724 ApplicationManager.stopApplication(ApplicationManager.get(index).appId);
919 ApplicationManager.stopApplication(ApplicationManager.get(index).appId);
725 }
920 }
726
921
922+ onFocusChanged: {
923+ if (focus && ApplicationManager.focusedApplicationId !== appId) {
924+ ApplicationManager.focusApplication(appId);
925+ }
926+
927+ if (focus && priv.sideStageEnabled && stage === ApplicationInfoInterface.SideStage) {
928+ sideStage.show();
929+ }
930+ }
931+
727 Binding {
932 Binding {
728 target: root
933 target: root
729 when: model.appId == priv.mainStageAppId
934 when: model.appId == priv.mainStageAppId
@@ -758,6 +963,71 @@ AbstractStage {
758 }
963 }
759 }
964 }
760
965
966+ TabletSideStageTouchGesture {
967+ id: triGestureArea
968+ anchors.fill: parent
969+ enabled: priv.sideStageEnabled && !spreadView.active
970+ property var dragObject: null
971+ property string appId: ""
972+ dragComponent: dragComponent
973+ dragComponentProperties: { "appId": appId }
974+
975+ onPressed: {
976+ function matchDelegate(obj) { return String(obj.objectName).indexOf("tabletSpreadDelegate") >= 0; }
977+
978+ var delegateAtCenter = Functions.itemAt(spreadRow, x, y, matchDelegate);
979+ if (!delegateAtCenter) return;
980+
981+ appId = delegateAtCenter.appId;
982+ }
983+
984+ onClicked: {
985+ if (sideStage.shown) {
986+ sideStage.hide();
987+ } else {
988+ sideStage.show();
989+ }
990+ }
991+
992+ onDragStarted: {
993+ // If we're dragging to the sidestage.
994+ if (!sideStage.shown) {
995+ sideStage.show();
996+ }
997+ }
998+
999+ Component {
1000+ id: dragComponent
1001+ SessionContainer {
1002+ property string appId: ""
1003+ property var application: ApplicationManager.findApplication(appId)
1004+
1005+ session: application ? application.session : null
1006+ interactive: false
1007+ resizeSurface: false
1008+ focus: false
1009+
1010+ width: units.gu(40)
1011+ height: units.gu(40)
1012+
1013+ Drag.hotSpot.x: width/2
1014+ Drag.hotSpot.y: height/2
1015+ // only accept opposite stage.
1016+ Drag.keys: {
1017+ if (!application) return "Disabled";
1018+
1019+ if (application.stage === ApplicationInfo.MainStage) {
1020+ if (application.supportedOrientations & (Qt.PortraitOrientation|Qt.InvertedPortraitOrientation)) {
1021+ return "MainStage";
1022+ }
1023+ return "Disabled";
1024+ }
1025+ return "SideStage";
1026+ }
1027+ }
1028+ }
1029+ }
1030+
761 //eat touch events during the right edge gesture
1031 //eat touch events during the right edge gesture
762 MouseArea {
1032 MouseArea {
763 anchors.fill: parent
1033 anchors.fill: parent
@@ -767,7 +1037,8 @@ AbstractStage {
767 DirectionalDragArea {
1037 DirectionalDragArea {
768 id: spreadDragArea
1038 id: spreadDragArea
769 objectName: "spreadDragArea"
1039 objectName: "spreadDragArea"
770− anchors { top: parent.top; right: parent.right; bottom: parent.bottom }
1040+ x: parent.width - root.dragAreaWidth
1041+ anchors { top: parent.top; bottom: parent.bottom }
771 width: root.dragAreaWidth
1042 width: root.dragAreaWidth
772 direction: Direction.Leftwards
1043 direction: Direction.Leftwards
773 enabled: (spreadView.phase != 2 && root.spreadEnabled) || dragging
1044 enabled: (spreadView.phase != 2 && root.spreadEnabled) || dragging
@@ -815,4 +1086,29 @@ AbstractStage {
815 }
1086 }
816 }
1087 }
817 }
1088 }
1089+
1090+ EdgeBarrier {
1091+ id: edgeBarrier
1092+
1093+ // NB: it does its own positioning according to the specified edge
1094+ edge: Qt.RightEdge
1095+
1096+ onPassed: {
1097+ spreadView.snapToSpread();
1098+ }
1099+ material: Component {
1100+ Item {
1101+ Rectangle {
1102+ width: parent.height
1103+ height: parent.width
1104+ rotation: 90
1105+ anchors.centerIn: parent
1106+ gradient: Gradient {
1107+ GradientStop { position: 0.0; color: Qt.rgba(0.16,0.16,0.16,0.7)}
1108+ GradientStop { position: 1.0; color: Qt.rgba(0.16,0.16,0.16,0)}
1109+ }
1110+ }
1111+ }
1112+ }
1113+ }
818}
1114}
qml/Stages/TransformedTabletSpreadDelegate.qml+84−56
@@ -31,6 +31,7 @@ SpreadDelegate {
31 // Set this to true when this tile a currently active on either the MS or the SS.
31 // Set this to true when this tile a currently active on either the MS or the SS.
32 property bool active: false
32 property bool active: false
33
33
34+ property int stage
34 property int zIndex
35 property int zIndex
35 property real progress: 0
36 property real progress: 0
36 property real animatedProgress: 0
37 property real animatedProgress: 0
@@ -49,10 +50,11 @@ SpreadDelegate {
49
50
50 property int dragOffset: 0
51 property int dragOffset: 0
51 readonly property alias xTranslateAnimating: xTranslateAnimation.running
52 readonly property alias xTranslateAnimating: xTranslateAnimation.running
53+ readonly property bool offScreen: priv.xTranslate >= 0
52
54
53 dropShadow: spreadView.active ||
55 dropShadow: spreadView.active ||
54 (active
56 (active
55− && (model.stage == ApplicationInfoInterface.MainStage || !priv.shellIsLandscape)
57+ && (stage == ApplicationInfoInterface.MainStage || !priv.shellIsLandscape)
56 && priv.xTranslate != 0)
58 && priv.xTranslate != 0)
57
59
58 onSelectedChanged: {
60 onSelectedChanged: {
@@ -141,9 +143,9 @@ SpreadDelegate {
141 enabled: !spreadView.active &&
143 enabled: !spreadView.active &&
142 !snapAnimation.running &&
144 !snapAnimation.running &&
143 model.appId !== "unity8-dash" &&
145 model.appId !== "unity8-dash" &&
144− !spreadView.sideStageDragging &&
145 spreadView.animateX &&
146 spreadView.animateX &&
146− !spreadView.beingResized
147+ !spreadView.beingResized &&
148+ priv.state !== "sideStage"
147 UbuntuNumberAnimation {
149 UbuntuNumberAnimation {
148 id: xTranslateAnimation
150 id: xTranslateAnimation
149 duration: UbuntuAnimation.FastDuration
151 duration: UbuntuAnimation.FastDuration
@@ -153,21 +155,20 @@ SpreadDelegate {
153 property real xTranslate: {
155 property real xTranslate: {
154 var newTranslate = 0;
156 var newTranslate = 0;
155
157
156− if (otherSelected) {
158+ // selected app or opposite stage active app.
157− return priv.selectedXTranslate;
159+ if (isSelected || (otherSelected && root.active && spreadView.selectedApplication && spreadView.selectedApplication.stage !== stage)) {
158− }
160+ if (stage == ApplicationInfoInterface.MainStage) {
159−
160− if (isSelected) {
161− if (model.stage == ApplicationInfoInterface.MainStage) {
162 return linearAnimation(selectedProgress, negativeProgress, selectedXTranslate, -spreadView.width, root.progress);
161 return linearAnimation(selectedProgress, negativeProgress, selectedXTranslate, -spreadView.width, root.progress);
163 } else {
162 } else {
164 return linearAnimation(selectedProgress, negativeProgress, selectedXTranslate, -spreadView.sideStageWidth, root.progress);
163 return linearAnimation(selectedProgress, negativeProgress, selectedXTranslate, -spreadView.sideStageWidth, root.progress);
165 }
164 }
165+ } else if (otherSelected) {
166+ return selectedXTranslate;
166 }
167 }
167
168
168 // The tile should move a bit to the left if a new one comes on top of it, but not for the Side Stage and not
169 // The tile should move a bit to the left if a new one comes on top of it, but not for the Side Stage and not
169 // when we're only dragging the side stage in on top of a main stage app
170 // when we're only dragging the side stage in on top of a main stage app
170− var shouldMoveAway = spreadView.nextInStack >= 0 && priv.movedActive && model.stage === ApplicationInfoInterface.MainStage &&
171+ var shouldMoveAway = spreadView.nextInStack >= 0 && priv.movedActive && stage === ApplicationInfoInterface.MainStage &&
171 ApplicationManager.get(spreadView.nextInStack).stage === ApplicationInfoInterface.MainStage;
172 ApplicationManager.get(spreadView.nextInStack).stage === ApplicationInfoInterface.MainStage;
172
173
173 if (active) {
174 if (active) {
@@ -177,36 +178,45 @@ SpreadDelegate {
177 newTranslate += linearAnimation(0, spreadView.positionMarker2, 0, -units.gu(4), root.animatedProgress);
178 newTranslate += linearAnimation(0, spreadView.positionMarker2, 0, -units.gu(4), root.animatedProgress);
178 }
179 }
179 newTranslate += root.dragOffset;
180 newTranslate += root.dragOffset;
180− }
181+ } else if (!spreadView.active && model.appId == "unity8-dash") {
181− if (!spreadView.active && model.appId == "unity8-dash" && !root.active) {
182 newTranslate -= root.width;
182 newTranslate -= root.width;
183 }
183 }
184
184
185− if (nextInStack && spreadView.phase == 0) {
185+ if (!spreadView.active) {
186− if (model.stage == ApplicationInfoInterface.MainStage) {
186+ return newTranslate;
187− if (spreadView.sideStageVisible && root.progress > 0) {
187+ }
188− // Move it so it appears from behind the side stage immediately
188+
189− newTranslate += -spreadView.sideStageWidth;
189+ var shadowOffset = units.gu(2);
190+
191+ if (spreadView.phase == 0) {
192+ if (nextInStack) {
193+ if (stage == ApplicationInfoInterface.MainStage) {
194+ if (spreadView.sideStageVisible && root.progress > 0) {
195+ // Move it so it appears from behind the side stage immediately
196+ newTranslate += -spreadView.sideStageWidth;
197+ }
190 }
198 }
191− }
192
199
193− if (model.stage == ApplicationInfoInterface.SideStage && !spreadView.sideStageVisible) {
200+ if (stage == ApplicationInfoInterface.SideStage && !spreadView.sideStageVisible) {
194− // This is when we only drag the side stage in, without rotation or snapping
201+ // This is when we only drag the side stage in, without rotation or snapping
195− newTranslate = linearAnimation(0, spreadView.positionMarker2, 0, -spreadView.sideStageWidth, root.progress);
202+ newTranslate = linearAnimation(0, spreadView.positionMarker2, 0, -spreadView.sideStageWidth, root.animatedProgress);
196− } else {
203+ } else {
197− newTranslate += linearAnimation(0, spreadView.positionMarker2, 0, -spreadView.sideStageWidth * spreadView.snapPosition, root.animatedProgress);
204+ newTranslate += linearAnimation(0, spreadView.positionMarker2, 0, -spreadView.sideStageWidth * spreadView.snapPosition, root.animatedProgress);
205+ }
206+ } else if (!root.active) {
207+ newTranslate += shadowOffset;
198 }
208 }
199 }
209 }
200
210
201 if (spreadView.phase == 1) {
211 if (spreadView.phase == 1) {
202 if (nextInStack) {
212 if (nextInStack) {
203− if (model.stage == ApplicationInfoInterface.MainStage) {
213+ if (stage == ApplicationInfoInterface.MainStage) {
204 var startValue = -spreadView.sideStageWidth * spreadView.snapPosition + (spreadView.sideStageVisible ? -spreadView.sideStageWidth : 0);
214 var startValue = -spreadView.sideStageWidth * spreadView.snapPosition + (spreadView.sideStageVisible ? -spreadView.sideStageWidth : 0);
205 newTranslate += linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4, startValue, priv.phase2StartTranslate, root.animatedProgress);
215 newTranslate += linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4, startValue, priv.phase2StartTranslate, root.animatedProgress);
206 } else {
216 } else {
207 var endValue = -spreadView.width + spreadView.width * root.zIndex / 6;
217 var endValue = -spreadView.width + spreadView.width * root.zIndex / 6;
208 if (!spreadView.sideStageVisible) {
218 if (!spreadView.sideStageVisible) {
209− newTranslate += linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4, -spreadView.sideStageWidth, priv.phase2StartTranslate, root.progress);
219+ newTranslate += linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4, -spreadView.sideStageWidth, priv.phase2StartTranslate, root.animatedProgress);
210 } else {
220 } else {
211 newTranslate += linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4, -spreadView.sideStageWidth * spreadView.snapPosition, priv.phase2StartTranslate, root.animatedProgress);
221 newTranslate += linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4, -spreadView.sideStageWidth * spreadView.snapPosition, priv.phase2StartTranslate, root.animatedProgress);
212 }
222 }
@@ -215,16 +225,20 @@ SpreadDelegate {
215 var startProgress = spreadView.positionMarker2 - (zIndex * spreadView.positionMarker2 / 2);
225 var startProgress = spreadView.positionMarker2 - (zIndex * spreadView.positionMarker2 / 2);
216 var endProgress = spreadView.positionMarker4 - (zIndex * spreadView.tileDistance / spreadView.width);
226 var endProgress = spreadView.positionMarker4 - (zIndex * spreadView.tileDistance / spreadView.width);
217 var startTranslate = -root.width + (shouldMoveAway ? -units.gu(4) : 0);
227 var startTranslate = -root.width + (shouldMoveAway ? -units.gu(4) : 0);
218− newTranslate = linearAnimation(startProgress, endProgress, startTranslate, priv.phase2StartTranslate, root.progress);
228+ newTranslate = linearAnimation(startProgress, endProgress, startTranslate, priv.phase2StartTranslate, root.animatedProgress);
219 } else {
229 } else {
220 var startProgress = spreadView.positionMarker2 - (zIndex * spreadView.positionMarker2 / 2);
230 var startProgress = spreadView.positionMarker2 - (zIndex * spreadView.positionMarker2 / 2);
221 var endProgress = spreadView.positionMarker4 - (zIndex * spreadView.tileDistance / spreadView.width);
231 var endProgress = spreadView.positionMarker4 - (zIndex * spreadView.tileDistance / spreadView.width);
222− newTranslate = linearAnimation(startProgress, endProgress, 0, priv.phase2StartTranslate, root.progress);
232+ newTranslate = linearAnimation(startProgress, endProgress, shadowOffset * Math.max(0, zIndex-2), priv.phase2StartTranslate, root.animatedProgress);
223 }
233 }
224 }
234 }
225
235
226 if (spreadView.phase == 2) {
236 if (spreadView.phase == 2) {
227− newTranslate = -easingCurve.value * (spreadView.width - root.zIndex * animatedEndDistance);
237+ if (easingCurve.value == 0 && !nextInStack) {
238+ newTranslate = shadowOffset;
239+ } else {
240+ newTranslate = -easingCurve.value * (spreadView.width - root.zIndex * animatedEndDistance);
241+ }
228 }
242 }
229
243
230 return newTranslate;
244 return newTranslate;
@@ -235,33 +249,30 @@ SpreadDelegate {
235 return 1;
249 return 1;
236 }
250 }
237
251
238− if (otherSelected) {
252+ // selected app or opposite stage active app.
239− return selectedScale;
253+ if (isSelected || (otherSelected && root.active && spreadView.selectedApplication && spreadView.selectedApplication.stage !== stage)) {
240− }
241−
242− if (isSelected) {
243 return linearAnimation(selectedProgress, negativeProgress, selectedScale, 1, root.progress);
254 return linearAnimation(selectedProgress, negativeProgress, selectedScale, 1, root.progress);
255+ } else if (otherSelected) {
256+ return selectedScale;
244 }
257 }
245
258
246 if (spreadView.phase == 0) {
259 if (spreadView.phase == 0) {
247 if (nextInStack) {
260 if (nextInStack) {
248− if (model.stage == ApplicationInfoInterface.SideStage && !spreadView.sideStageVisible) {
261+ if (stage == ApplicationInfoInterface.SideStage && !spreadView.sideStageVisible) {
249 return 1;
262 return 1;
250 } else {
263 } else {
251 var targetScale = root.dragStartScale - ((root.dragStartScale - 1) * spreadView.snapPosition);
264 var targetScale = root.dragStartScale - ((root.dragStartScale - 1) * spreadView.snapPosition);
252 return linearAnimation(0, spreadView.positionMarker2, root.dragStartScale, targetScale, root.animatedProgress);
265 return linearAnimation(0, spreadView.positionMarker2, root.dragStartScale, targetScale, root.animatedProgress);
253 }
266 }
254− } else if (active) {
255− return 1;
256 } else {
267 } else {
257− return linearAnimation(0, spreadView.positionMarker2, root.startScale, root.endScale, root.progress);
268+ return 1;
258 }
269 }
259 }
270 }
260
271
261 if (spreadView.phase == 1) {
272 if (spreadView.phase == 1) {
262 if (nextInStack) {
273 if (nextInStack) {
263 var startScale = 1;
274 var startScale = 1;
264− if (model.stage !== ApplicationInfoInterface.SideStage || spreadView.sideStageVisible) {
275+ if (stage !== ApplicationInfoInterface.SideStage || spreadView.sideStageVisible) {
265 startScale = root.dragStartScale - ((root.dragStartScale - 1) * spreadView.snapPosition);
276 startScale = root.dragStartScale - ((root.dragStartScale - 1) * spreadView.snapPosition);
266 }
277 }
267 return linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4, startScale, priv.phase2StartScale, root.animatedProgress);
278 return linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4, startScale, priv.phase2StartScale, root.animatedProgress);
@@ -283,21 +294,22 @@ SpreadDelegate {
283 return 0;
294 return 0;
284 }
295 }
285
296
286− if (otherSelected) {
297+ // selected app or opposite stage active app.
287− return selectedAngle;
298+ if (isSelected || (otherSelected && root.active && spreadView.selectedApplication && spreadView.selectedApplication.stage !== stage)) {
288− }
289− if (isSelected) {
290 return linearAnimation(selectedProgress, negativeProgress, selectedAngle, 0, root.progress);
299 return linearAnimation(selectedProgress, negativeProgress, selectedAngle, 0, root.progress);
300+ } else if (otherSelected) {
301+ return selectedAngle;
291 }
302 }
292
303
293 // The tile should rotate a bit when another one comes on top, but not when only dragging the side stage in
304 // The tile should rotate a bit when another one comes on top, but not when only dragging the side stage in
294− var shouldMoveAway = spreadView.nextInStack >= 0 && movedActive &&
305+ var shouldMoveAway = spreadView.nextInStack == -1 ||
306+ spreadView.nextInStack >= 0 && priv.movedActive &&
295 (ApplicationManager.get(spreadView.nextInStack).stage === ApplicationInfoInterface.MainStage ||
307 (ApplicationManager.get(spreadView.nextInStack).stage === ApplicationInfoInterface.MainStage ||
296− model.stage == ApplicationInfoInterface.SideStage);
308+ stage == ApplicationInfoInterface.SideStage);
297
309
298 if (spreadView.phase == 0) {
310 if (spreadView.phase == 0) {
299 if (nextInStack) {
311 if (nextInStack) {
300− if (model.stage == ApplicationInfoInterface.SideStage && !spreadView.sideStageVisible) {
312+ if (stage == ApplicationInfoInterface.SideStage && !spreadView.sideStageVisible) {
301 return 0;
313 return 0;
302 } else {
314 } else {
303 return linearAnimation(0, spreadView.positionMarker2, root.startAngle, root.startAngle * (1-spreadView.snapPosition), root.animatedProgress);
315 return linearAnimation(0, spreadView.positionMarker2, root.startAngle, root.startAngle * (1-spreadView.snapPosition), root.animatedProgress);
@@ -309,7 +321,7 @@ SpreadDelegate {
309 }
321 }
310 if (spreadView.phase == 1) {
322 if (spreadView.phase == 1) {
311 if (nextInStack) {
323 if (nextInStack) {
312− if (model.stage == ApplicationInfoInterface.SideStage && !spreadView.sideStageVisible) {
324+ if (stage == ApplicationInfoInterface.SideStage && !spreadView.sideStageVisible) {
313 return linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4, 0, priv.phase2StartAngle, root.animatedProgress);
325 return linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4, 0, priv.phase2StartAngle, root.animatedProgress);
314 } else {
326 } else {
315 return linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4, root.startAngle * (1-spreadView.snapPosition), priv.phase2StartAngle, root.animatedProgress);
327 return linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4, root.startAngle * (1-spreadView.snapPosition), priv.phase2StartAngle, root.animatedProgress);
@@ -328,31 +340,47 @@ SpreadDelegate {
328 }
340 }
329
341
330 property real opacityTransform: {
342 property real opacityTransform: {
331− if (otherSelected && spreadView.phase == 2) {
343+ // animate opacity for items not snapping into view.
344+ if (spreadView.phase !== 2) return 1;
345+ if (root.isSelected) return 1;
346+
347+ if (otherSelected) {
348+ if (root.active && spreadView.selectedApplication && spreadView.selectedApplication.stage !== stage) {
349+ return 1;
350+ }
332 return linearAnimation(selectedProgress, negativeProgress, selectedOpacity, 0, root.progress);
351 return linearAnimation(selectedProgress, negativeProgress, selectedOpacity, 0, root.progress);
333 }
352 }
334−
335 return 1;
353 return 1;
336 }
354 }
337
355
338 property real topMarginProgress: {
356 property real topMarginProgress: {
339− if (priv.isSelected) {
357+ // selected app or opposite stage active app.
358+ if (isSelected || (otherSelected && root.active && spreadView.selectedApplication && spreadView.selectedApplication.stage !== stage)) {
340 return linearAnimation(selectedProgress, negativeProgress, selectedTopMarginProgress, 0, root.progress);
359 return linearAnimation(selectedProgress, negativeProgress, selectedTopMarginProgress, 0, root.progress);
341 }
360 }
342− switch (spreadView.phase) {
361+
343− case 0:
362+ if (spreadView.phase == 0) {
344 return 0;
363 return 0;
345− case 1:
364+ } else if (spreadView.phase == 1) {
346− return linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4,
365+ if (nextInStack) {
347− 0, priv.phase2StartTopMarginProgress, root.progress);
366+ return linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4,
367+ 0, 1, root.progress);
368+ }
369+ var startProgress = spreadView.positionMarker2 - (zIndex * spreadView.positionMarker2 / 2);
370+ var endProgress = spreadView.positionMarker4 - (zIndex * spreadView.tileDistance / spreadView.width);
371+ return linearAnimation(startProgress, endProgress, 0, 1, root.progress);
348 }
372 }
349 return 1;
373 return 1;
350 }
374 }
351
375
352 states: [
376 states: [
353 State {
377 State {
354− name: "sideStageDragging"; when: spreadView.sideStageDragging && root.isInSideStage
378+ name: "sideStage";
355− PropertyChanges { target: priv; xTranslate: -spreadView.sideStageWidth + spreadView.sideStageWidth * spreadView.sideStageDragProgress }
379+ when: root.isInSideStage && spreadView.shiftedContentX == 0 && spreadView.phase == 0
380+ PropertyChanges {
381+ target: priv;
382+ xTranslate: -spreadView.sideStageWidth + spreadView.sideStageWidth * (1-spreadView.sideStageDragProgress)
383+ }
356 }
384 }
357 ]
385 ]
358 }
386 }
qml/Stages/WindowResizeArea.qml+8−5
@@ -40,6 +40,7 @@ MouseArea {
40 property int defaultHeight: units.gu(50)
40 property int defaultHeight: units.gu(50)
41 property int screenWidth: 0
41 property int screenWidth: 0
42 property int screenHeight: 0
42 property int screenHeight: 0
43+ property int leftMargin: 0
43
44
44 QtObject {
45 QtObject {
45 id: priv
46 id: priv
@@ -72,10 +73,12 @@ MouseArea {
72 var windowGeometry = windowStateStorage.getGeometry(root.windowId,
73 var windowGeometry = windowStateStorage.getGeometry(root.windowId,
73 Qt.rect(target.x, target.y, defaultWidth, defaultHeight));
74 Qt.rect(target.x, target.y, defaultWidth, defaultHeight));
74
75
75− target.requestedWidth = Math.min(Math.max(windowGeometry.width, d.minimumWidth), screenWidth);
76+ target.requestedWidth = Qt.binding(function() { return Math.min(Math.max(windowGeometry.width, d.minimumWidth), screenWidth - root.leftMargin); });
76− target.requestedHeight = Math.min(Math.max(windowGeometry.height, d.minimumHeight), root.screenHeight - PanelState.panelHeight);
77+ target.requestedHeight = Qt.binding(function() { return Math.min(Math.max(windowGeometry.height, d.minimumHeight),
77− target.x = Math.max(Math.min(windowGeometry.x, root.screenWidth - target.requestedWidth), 0)
78+ root.screenHeight - (target.fullscreen ? 0 : PanelState.panelHeight)); });
78− target.y = Math.max(Math.min(windowGeometry.y, root.screenHeight - target.requestedHeight), PanelState.panelHeight)
79+ target.x = Qt.binding(function() { return Math.max(Math.min(windowGeometry.x, root.screenWidth - root.leftMargin - target.requestedWidth),
80+ (target.fullscreen ? 0 : root.leftMargin)); });
81+ target.y = Qt.binding(function() { return Math.max(Math.min(windowGeometry.y, root.screenHeight - target.requestedHeight), PanelState.panelHeight); });
79
82
80 var windowState = windowStateStorage.getState(root.windowId, WindowStateStorage.WindowStateNormal)
83 var windowState = windowStateStorage.getState(root.windowId, WindowStateStorage.WindowStateNormal)
81 if (windowState === WindowStateStorage.WindowStateMaximized) {
84 if (windowState === WindowStateStorage.WindowStateMaximized) {
@@ -298,7 +301,7 @@ MouseArea {
298 }
301 }
299
302
300 if (d.topBorder) {
303 if (d.topBorder) {
301− var newTargetY = d.startY + deltaY;
304+ var newTargetY = Math.max(d.startY + deltaY, PanelState.panelHeight); // disallow resizing up past Panel
302 var bottomBorderY = target.y + target.height;
305 var bottomBorderY = target.y + target.height;
303 if (bottomBorderY > newTargetY + d.minimumHeight) {
306 if (bottomBorderY > newTargetY + d.minimumHeight) {
304 if (bottomBorderY < newTargetY + d.maximumHeight) {
307 if (bottomBorderY < newTargetY + d.maximumHeight) {
qml/Stages/graphics/sidestage_drag.svgnew file+207
@@ -0,0 +1,207 @@
1+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2+<!-- Created with Inkscape (http://www.inkscape.org/) -->
3+
4+<svg
5+ xmlns:dc="http://purl.org/dc/elements/1.1/"
6+ xmlns:cc="http://creativecommons.org/ns#"
7+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8+ xmlns:svg="http://www.w3.org/2000/svg"
9+ xmlns="http://www.w3.org/2000/svg"
10+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
11+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
12+ width="540"
13+ height="324"
14+ id="svg4874"
15+ version="1.1"
16+ inkscape:version="0.91+devel r"
17+ viewBox="0 0 540 324"
18+ sodipodi:docname="gesture_3f_touch.svg">
19+ <defs
20+ id="defs4876" />
21+ <sodipodi:namedview
22+ id="base"
23+ pagecolor="#292929"
24+ bordercolor="#666666"
25+ borderopacity="1.0"
26+ inkscape:pageopacity="1"
27+ inkscape:pageshadow="2"
28+ inkscape:zoom="1.1785993"
29+ inkscape:cx="-19.084613"
30+ inkscape:cy="11.707485"
31+ inkscape:document-units="px"
32+ inkscape:current-layer="g4780"
33+ showgrid="false"
34+ showborder="true"
35+ fit-margin-top="0"
36+ fit-margin-left="0"
37+ fit-margin-right="0"
38+ fit-margin-bottom="0"
39+ inkscape:snap-bbox="true"
40+ inkscape:bbox-paths="true"
41+ inkscape:bbox-nodes="true"
42+ inkscape:snap-bbox-edge-midpoints="true"
43+ inkscape:snap-bbox-midpoints="true"
44+ inkscape:object-paths="true"
45+ inkscape:snap-intersection-paths="true"
46+ inkscape:object-nodes="true"
47+ inkscape:snap-smooth-nodes="true"
48+ inkscape:snap-midpoints="true"
49+ inkscape:snap-object-midpoints="true"
50+ inkscape:snap-center="true"
51+ showguides="false"
52+ inkscape:guide-bbox="true"
53+ inkscape:snap-global="true"
54+ inkscape:snap-others="false"
55+ inkscape:snap-page="true">
56+ <inkscape:grid
57+ type="xygrid"
58+ id="grid5451"
59+ empspacing="8"
60+ originx="-2.7715014e-06"
61+ originy="-2.5124622e-06" />
62+ <sodipodi:guide
63+ orientation="1,0"
64+ position="7.9999972,-8.0000025"
65+ id="guide4063"
66+ inkscape:locked="false" />
67+ <sodipodi:guide
68+ orientation="1,0"
69+ position="3.9999972,-8.0000025"
70+ id="guide4065"
71+ inkscape:locked="false" />
72+ <sodipodi:guide
73+ orientation="0,1"
74+ position="-8.0000027,87.999998"
75+ id="guide4067"
76+ inkscape:locked="false" />
77+ <sodipodi:guide
78+ orientation="0,1"
79+ position="-8.0000027,91.999998"
80+ id="guide4069"
81+ inkscape:locked="false" />
82+ <sodipodi:guide
83+ orientation="0,1"
84+ position="104,3.9999975"
85+ id="guide4071"
86+ inkscape:locked="false" />
87+ <sodipodi:guide
88+ orientation="0,1"
89+ position="-5.0000027,7.9999975"
90+ id="guide4073"
91+ inkscape:locked="false" />
92+ <sodipodi:guide
93+ orientation="1,0"
94+ position="91.999996,-8.0000025"
95+ id="guide4075"
96+ inkscape:locked="false" />
97+ <sodipodi:guide
98+ orientation="1,0"
99+ position="87.999997,-8.0000025"
100+ id="guide4077"
101+ inkscape:locked="false" />
102+ <sodipodi:guide
103+ orientation="0,1"
104+ position="-8.0000027,83.999998"
105+ id="guide4074"
106+ inkscape:locked="false" />
107+ <sodipodi:guide
108+ orientation="1,0"
109+ position="11.999997,-8.0000025"
110+ id="guide4076"
111+ inkscape:locked="false" />
112+ <sodipodi:guide
113+ orientation="0,1"
114+ position="-5.0000027,11.999997"
115+ id="guide4078"
116+ inkscape:locked="false" />
117+ <sodipodi:guide
118+ orientation="1,0"
119+ position="83.999997,-9.0000025"
120+ id="guide4080"
121+ inkscape:locked="false" />
122+ <sodipodi:guide
123+ position="47.999997,-8.0000025"
124+ orientation="1,0"
125+ id="guide4170"
126+ inkscape:locked="false" />
127+ <sodipodi:guide
128+ position="-8.0000027,47.999997"
129+ orientation="0,1"
130+ id="guide4172"
131+ inkscape:locked="false" />
132+ </sodipodi:namedview>
133+ <metadata
134+ id="metadata4879">
135+ <rdf:RDF>
136+ <cc:Work
137+ rdf:about="">
138+ <dc:format>image/svg+xml</dc:format>
139+ <dc:type
140+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
141+ <dc:title></dc:title>
142+ </cc:Work>
143+ </rdf:RDF>
144+ </metadata>
145+ <g
146+ inkscape:label="Layer 1"
147+ inkscape:groupmode="layer"
148+ id="layer1"
149+ transform="translate(67.857143,149.49498)">
150+ <g
151+ transform="matrix(0,-1,-1,0,373.50506,516.50504)"
152+ id="g4845"
153+ style="display:inline">
154+ <g
155+ inkscape:export-ydpi="90"
156+ inkscape:export-xdpi="90"
157+ inkscape:export-filename="next01.png"
158+ transform="matrix(-0.9996045,0,0,1,575.94296,-611.00001)"
159+ id="g4778"
160+ inkscape:label="Layer 1">
161+ <g
162+ transform="matrix(-1,0,0,1,575.99999,611)"
163+ id="g4780"
164+ style="display:inline">
165+ <path
166+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:53.6204567px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;display:inline;fill:none;fill-opacity:1;stroke:#f7f7f7;stroke-width:4.00079107;stroke-miterlimit:4;stroke-dasharray:none"
167+ d="m 526.90578,343.72628 c 14.3803,3.85163 8.37809,26.10701 -5.96811,22.26448 l -10e-6,10e-6 -50.91437,-13.63709 67.92084,18.21108 c 15.93089,4.26693 9.28148,28.92202 -6.61162,24.66516 l -10e-6,1e-5 -67.93497,-18.15834 58.38757,15.63874 c 15.85637,4.24702 9.23761,28.78845 -6.58115,24.5515 v -2e-5 l 1e-5,-2e-5 -71.03537,-19.00646 -33.09607,-8.85524 -0.18781,-0.0503 v 0 l -6.91408,-1.85189 18.07353,23.47068 c 8.45364,10.48525 11.9521,17.66446 -3.54852,27.89697 l -43.91145,-37.31132 c -28.38683,-22.97811 -35.17793,-41.86133 -27.95127,-70.42985 10.25002,-40.5206 40.5632,-49.89857 76.24862,-40.34047 4.5224,1.21129 36.24839,9.63672 40.29164,10.71968 14.0412,3.76084 12.54552,13.74563 6.76936,26.96549 z"
168+ id="path4845-6"
169+ inkscape:connector-curvature="0"
170+ sodipodi:nodetypes="ccccccccccccccccccccssscc" />
171+ <path
172+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#f7f7f7;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.51758671;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
173+ d="m 571.27587,383.27233 a 35.064884,35.05101 0 0 1 -16.02978,29.39649 35.064884,35.05101 0 0 1 -34.38665,28.3418 35.064884,35.05101 0 0 1 -34.85362,-31.56055 l 29.19904,7.8125 c 15.81876,4.23695 22.4371,-20.30571 6.58073,-24.55274 l -28.91769,-7.74609 a 35.064884,35.05101 0 0 1 0.01,-0.0137 l 38.45466,10.2793 c 15.8931,4.25686 22.54288,-20.39714 6.61199,-24.66407 l -48.41758,-12.98242 a 35.064884,35.05101 0 0 1 0,-0.006 l 31.41086,8.41407 c 14.3462,3.84253 20.34945,-18.414 5.96915,-22.26563 l -31.70199,-8.49023 a 35.064884,35.05101 0 0 1 29.21468,-15.70704 35.064884,35.05101 0 0 1 35.06465,35.05274 35.064884,35.05101 0 0 1 -0.0879,2.45312 35.064884,35.05101 0 0 1 11.8797,26.23828 z"
174+ id="ellipse4239-1"
175+ inkscape:connector-curvature="0" />
176+ <g
177+ style="display:inline"
178+ id="g5379"
179+ transform="matrix(-0.99999722,0,0,-0.99999722,645.25394,919.46958)">
180+ <path
181+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#f7f7f7;stroke-width:4.00079107;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
182+ id="path4116"
183+ sodipodi:type="arc"
184+ sodipodi:cx="808.72699"
185+ sodipodi:cy="244.79436"
186+ sodipodi:rx="250.36082"
187+ sodipodi:ry="263.63275"
188+ sodipodi:start="3.8048178"
189+ sodipodi:end="5.6286868"
190+ sodipodi:open="true"
191+ d="M 611.43997,82.485822 A 250.36082,263.63275 0 0 1 809.81939,-18.835885 250.36082,263.63275 0 0 1 1007.3516,84.304899"
192+ inkscape:transform-center-x="-17.044876"
193+ inkscape:transform-center-y="-0.0015034578"
194+ transform="matrix(0,1,1,0,0,0)" />
195+ <path
196+ inkscape:transform-center-y="4.9738279"
197+ inkscape:transform-center-x="2.0443183"
198+ inkscape:connector-curvature="0"
199+ id="path4198"
200+ d="m 73.559638,1014.0226 14.78221,-18.91287 c 0,0 6.80763,12.50667 9.95238,23.00047 -10.9469,-0.5114 -24.73459,-4.0876 -24.73459,-4.0876 z"
201+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#f7f7f7;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.00059342;marker:none;enable-background:accumulate" />
202+ </g>
203+ </g>
204+ </g>
205+ </g>
206+ </g>
207+</svg>
qml/Stages/graphics/sidestage_open.svgnew file+181
@@ -0,0 +1,181 @@
1+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2+<!-- Created with Inkscape (http://www.inkscape.org/) -->
3+
4+<svg
5+ xmlns:dc="http://purl.org/dc/elements/1.1/"
6+ xmlns:cc="http://creativecommons.org/ns#"
7+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8+ xmlns:svg="http://www.w3.org/2000/svg"
9+ xmlns="http://www.w3.org/2000/svg"
10+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
11+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
12+ width="162"
13+ height="230"
14+ id="svg4874"
15+ version="1.1"
16+ inkscape:version="0.91+devel r"
17+ viewBox="0 0 162 230"
18+ sodipodi:docname="gesture_3f_tap.svg"
19+ style="shape-rendering:crispEdges">
20+ <defs
21+ id="defs4876" />
22+ <sodipodi:namedview
23+ id="base"
24+ pagecolor="#292929"
25+ bordercolor="#666666"
26+ borderopacity="1.0"
27+ inkscape:pageopacity="1"
28+ inkscape:pageshadow="2"
29+ inkscape:zoom="1.8415614"
30+ inkscape:cx="162.13161"
31+ inkscape:cy="116.01485"
32+ inkscape:document-units="px"
33+ inkscape:current-layer="g4780"
34+ showgrid="false"
35+ showborder="true"
36+ fit-margin-top="0"
37+ fit-margin-left="0"
38+ fit-margin-right="0"
39+ fit-margin-bottom="0"
40+ inkscape:snap-bbox="true"
41+ inkscape:bbox-paths="true"
42+ inkscape:bbox-nodes="true"
43+ inkscape:snap-bbox-edge-midpoints="true"
44+ inkscape:snap-bbox-midpoints="true"
45+ inkscape:object-paths="true"
46+ inkscape:snap-intersection-paths="true"
47+ inkscape:object-nodes="true"
48+ inkscape:snap-smooth-nodes="true"
49+ inkscape:snap-midpoints="true"
50+ inkscape:snap-object-midpoints="true"
51+ inkscape:snap-center="true"
52+ showguides="false"
53+ inkscape:guide-bbox="true"
54+ inkscape:snap-global="false"
55+ inkscape:snap-others="false"
56+ inkscape:snap-page="true">
57+ <inkscape:grid
58+ type="xygrid"
59+ id="grid5451"
60+ empspacing="8"
61+ originx="-2.7715014e-06"
62+ originy="-2.5124622e-06" />
63+ <sodipodi:guide
64+ orientation="1,0"
65+ position="7.9999972,-8.0000026"
66+ id="guide4063"
67+ inkscape:locked="false" />
68+ <sodipodi:guide
69+ orientation="1,0"
70+ position="3.9999972,-8.0000026"
71+ id="guide4065"
72+ inkscape:locked="false" />
73+ <sodipodi:guide
74+ orientation="0,1"
75+ position="-8.0000027,87.999998"
76+ id="guide4067"
77+ inkscape:locked="false" />
78+ <sodipodi:guide
79+ orientation="0,1"
80+ position="-8.0000027,91.999998"
81+ id="guide4069"
82+ inkscape:locked="false" />
83+ <sodipodi:guide
84+ orientation="0,1"
85+ position="104,3.9999975"
86+ id="guide4071"
87+ inkscape:locked="false" />
88+ <sodipodi:guide
89+ orientation="0,1"
90+ position="-5.0000027,7.9999975"
91+ id="guide4073"
92+ inkscape:locked="false" />
93+ <sodipodi:guide
94+ orientation="1,0"
95+ position="91.999997,-8.0000026"
96+ id="guide4075"
97+ inkscape:locked="false" />
98+ <sodipodi:guide
99+ orientation="1,0"
100+ position="87.999997,-8.0000026"
101+ id="guide4077"
102+ inkscape:locked="false" />
103+ <sodipodi:guide
104+ orientation="0,1"
105+ position="-8.0000027,83.999998"
106+ id="guide4074"
107+ inkscape:locked="false" />
108+ <sodipodi:guide
109+ orientation="1,0"
110+ position="11.999997,-8.0000026"
111+ id="guide4076"
112+ inkscape:locked="false" />
113+ <sodipodi:guide
114+ orientation="0,1"
115+ position="-5.0000027,11.999997"
116+ id="guide4078"
117+ inkscape:locked="false" />
118+ <sodipodi:guide
119+ orientation="1,0"
120+ position="83.999997,-9.0000026"
121+ id="guide4080"
122+ inkscape:locked="false" />
123+ <sodipodi:guide
124+ position="47.999997,-8.0000026"
125+ orientation="1,0"
126+ id="guide4170"
127+ inkscape:locked="false" />
128+ <sodipodi:guide
129+ position="-8.0000027,47.999997"
130+ orientation="0,1"
131+ id="guide4172"
132+ inkscape:locked="false" />
133+ </sodipodi:namedview>
134+ <metadata
135+ id="metadata4879">
136+ <rdf:RDF>
137+ <cc:Work
138+ rdf:about="">
139+ <dc:format>image/svg+xml</dc:format>
140+ <dc:type
141+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
142+ <dc:title></dc:title>
143+ </cc:Work>
144+ </rdf:RDF>
145+ </metadata>
146+ <g
147+ inkscape:label="Layer 1"
148+ inkscape:groupmode="layer"
149+ id="layer1"
150+ transform="translate(67.857143,55.494966)">
151+ <g
152+ transform="matrix(0,-1,-1,0,373.50506,516.50504)"
153+ id="g4845"
154+ style="display:inline">
155+ <g
156+ inkscape:export-ydpi="90"
157+ inkscape:export-xdpi="90"
158+ inkscape:export-filename="next01.png"
159+ transform="matrix(-0.9996045,0,0,1,575.94296,-611.00001)"
160+ id="g4778"
161+ inkscape:label="Layer 1">
162+ <g
163+ transform="matrix(-1,0,0,1,575.99999,611)"
164+ id="g4780"
165+ style="display:inline">
166+ <path
167+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:53.6204567px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;display:inline;fill:none;fill-opacity:1;stroke:#f7f7f7;stroke-width:4.00079107;stroke-miterlimit:4;stroke-dasharray:none"
168+ d="m 526.90578,343.72628 c 14.3803,3.85163 8.37809,26.10701 -5.96811,22.26448 l -10e-6,10e-6 -50.91437,-13.63709 67.92084,18.21108 c 15.93089,4.26693 9.28148,28.92202 -6.61162,24.66516 l -10e-6,1e-5 -67.93497,-18.15834 58.38757,15.63874 c 15.85637,4.24702 9.23761,28.78845 -6.58115,24.5515 v -2e-5 l 1e-5,-2e-5 -71.03537,-19.00646 -33.09607,-8.85524 -0.18781,-0.0503 v 0 l -6.91408,-1.85189 18.07353,23.47068 c 8.45364,10.48525 11.9521,17.66446 -3.54852,27.89697 l -43.91145,-37.31132 c -28.38683,-22.97811 -35.17793,-41.86133 -27.95127,-70.42985 10.25002,-40.5206 40.5632,-49.89857 76.24862,-40.34047 4.5224,1.21129 36.24839,9.63672 40.29164,10.71968 14.0412,3.76084 12.54552,13.74563 6.76936,26.96549 z"
169+ id="path4845-6"
170+ inkscape:connector-curvature="0"
171+ sodipodi:nodetypes="ccccccccccccccccccccssscc" />
172+ <path
173+ style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#f7f7f7;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.99999976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
174+ d="m 571.45563,383.2743 c -0.0175,12.04505 -6.22338,23.19765 -16.35804,29.64062 -3.3052,16.24493 -17.57029,28.04101 -34.23815,28.04493 -18.13447,4.3e-4 -33.08059,-13.83538 -34.83995,-31.50586 l 4.16766,1.11523 c 2.22233,14.95164 15.08799,26.39099 30.67229,26.39063 15.06147,-0.004 27.92054,-10.79228 30.53552,-25.61915 l 0.15631,-0.89648 0.78156,-0.46875 c 9.37156,-5.64255 15.10396,-15.76543 15.12121,-26.70117 v -0.004 c -0.0108,-9.30873 -4.17362,-18.12357 -11.35605,-24.04883 l -0.8265,-0.68359 0.10942,-1.06641 c 0.10013,-0.96319 0.1562,-1.9301 0.16608,-2.89843 -0.004,-17.20453 -13.91519,-31.10752 -31.12755,-31.10743 -10.37812,-5e-5 -19.55027,5.05891 -25.20333,12.84375 l -4.0856,-1.09375 c 6.29481,-9.48451 17.06827,-15.75006 29.28893,-15.75 19.37764,-1e-4 35.12924,15.74527 35.12913,35.11524 v 0.01 0.01 c -0.008,0.77822 -0.0716,1.55426 -0.13091,2.33008 7.57765,6.66645 12.02745,16.21382 12.03797,26.33984 v 0.002 z m -74.3634,2.80273 c -0.004,0.005 -0.008,0.0106 -0.0117,0.0156 l -4.15595,-1.11328 c 0.003,-0.004 0.006,-0.009 0.01,-0.0137 z m -3.51507,-27.4082 -4.14421,-1.10938 c -1.8e-4,-0.002 1.7e-4,-0.004 0,-0.006 l 4.14226,1.10937 c 2.7e-4,0.002 0.002,0.004 0.002,0.006 z"
175+ id="ellipse4488"
176+ inkscape:connector-curvature="0" />
177+ </g>
178+ </g>
179+ </g>
180+ </g>
181+</svg>
qml/Wizard/CheckableSetting.qml+10−2
@@ -31,9 +31,11 @@ ListItem.Empty {
31 signal linkActivated(string link)
31 signal linkActivated(string link)
32
32
33 implicitHeight: Math.max(label.height, checkBox.height)
33 implicitHeight: Math.max(label.height, checkBox.height)
34+ highlightWhenPressed: false
34
35
35− Item {
36+ FocusScope {
36 anchors.fill: parent
37 anchors.fill: parent
38+ focus: true
37
39
38 CheckBox {
40 CheckBox {
39 id: checkBox
41 id: checkBox
@@ -77,8 +79,14 @@ ListItem.Empty {
77 rightMargin: listItem.rightMargin
79 rightMargin: listItem.rightMargin
78 }
80 }
79 wrapMode: Text.Wrap
81 wrapMode: Text.Wrap
80− linkColor: theme.palette.normal.foregroundText
82+ linkColor: UbuntuColors.orange
83+ color: textColor
84+ font.weight: Font.Light
85+ fontSize: "small"
86+ lineHeight: 1.2
81 onLinkActivated: listItem.linkActivated(link)
87 onLinkActivated: listItem.linkActivated(link)
82 }
88 }
89+
90+ Keys.onSpacePressed: checkBox.trigger()
83 }
91 }
84}
92}
qml/Wizard/Page.qml+260−44

This diff is too big to show here.

qml/Wizard/Pages.qml+75−31

This diff is too big to show here.

qml/Wizard/Pages/10-welcome.qml+121−48

This diff is too big to show here.

qml/Wizard/Pages/20-sim.qmldeleted−77

This diff is too big to show here.

qml/Wizard/Pages/30-passwd-type.qmldeleted−140

This diff is too big to show here.

qml/Wizard/Pages/30-wifi.qmlnew file+210

This diff is too big to show here.

qml/Wizard/Pages/40-location.qmlnew file+291

This diff is too big to show here.

qml/Wizard/Pages/40-wifi.qmldeleted−219

This diff is too big to show here.

qml/Wizard/Pages/50-location.qmldeleted−150

This diff is too big to show here.

qml/Wizard/Pages/50-timezone.qmlnew file+275

This diff is too big to show here.

qml/Wizard/Pages/60-reporting.qml → qml/Wizard/Pages/60-account.qmlrenamed+30−20

This diff is too big to show here.

qml/Wizard/Pages/70-passwd-type.qmlnew file+166

This diff is too big to show here.

qml/Wizard/Pages/75-report-check.qmlnew file+91

This diff is too big to show here.

qml/Wizard/Pages/80-finished.qml+94−16

This diff is too big to show here.

qml/Wizard/Pages/data/Desktop_header_bkg.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/Desktop_splash_screen_bkg.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/Phone_header_bkg.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/Phone_splash_screen_bkg.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/Tick@30.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/meet_ubuntu_simcard@30.pngdeleted

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/map.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/pin.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_-1.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_-10.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_-11.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_-2.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_-3.5.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_-3.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_-4.5.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_-4.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_-5.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_-6.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_-7.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_-8.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_-9.5.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_-9.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_0.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_1.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_10.5.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_10.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_11.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_12.75.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_12.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_13.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_2.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_3.5.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_3.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_4.5.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_4.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_5.5.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_5.75.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_5.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_6.5.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_6.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_7.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_8.5.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_8.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_9.5.pngnew file

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_9.pngnew file

Binary file not shown.

qml/Wizard/Pages/here-terms.qml+72−65

This diff is too big to show here.

qml/Wizard/Pages/passwd-confirm.qml → qml/Wizard/Pages/passcode-confirm.qmlrenamed+12−29

This diff is too big to show here.

qml/Wizard/Pages/passcode-desktop.qmlnew file+132

This diff is too big to show here.

qml/Wizard/Pages/passwd-set.qml → qml/Wizard/Pages/passcode-set.qmlrenamed+12−28

This diff is too big to show here.

qml/Wizard/Pages/password-set.qmlnew file+149

This diff is too big to show here.

qml/Wizard/Pages/sim.qmlnew file+108

This diff is too big to show here.

qml/Wizard/PasswordMeter.qmlnew file+106

This diff is too big to show here.

qml/Wizard/StackButton.qml+6−11

This diff is too big to show here.

qml/Wizard/Wizard.qml−9

This diff is too big to show here.

qml/Wizard/WizardTextField.qmlnew file+25

This diff is too big to show here.

src/CMakeLists.txt+1−1

This diff is too big to show here.

src/CachingNetworkManagerFactory.cpp+2−2

This diff is too big to show here.

src/CachingNetworkManagerFactory.h+3−2

This diff is too big to show here.

src/Dash/CMakeLists.txt+1−1

This diff is too big to show here.

src/MouseTouchAdaptor.cpp+53−9

This diff is too big to show here.

src/MouseTouchAdaptor.h+5−3

This diff is too big to show here.

tests/autopilot/unity8/dash.py+1−2

This diff is too big to show here.

tests/autopilot/unity8/shell/tests/test_helpers.py−2

This diff is too big to show here.

tests/libs/UbuntuGestures/tst_TouchRegistry.cpp+59

This diff is too big to show here.

tests/mocks/AccountsService/AccountsService.cpp+23−3

This diff is too big to show here.

tests/mocks/AccountsService/AccountsService.h+12−5

This diff is too big to show here.

tests/mocks/GSettings.1.0/fake_gsettings.cpp+64

This diff is too big to show here.

tests/mocks/GSettings.1.0/fake_gsettings.h+18

This diff is too big to show here.

tests/mocks/IntegratedLightDM/liblightdm/UsersModel.cpp−14

This diff is too big to show here.

tests/mocks/MeeGo/QOfono/MockOfonoSimManager.qml+1

This diff is too big to show here.

tests/mocks/Ubuntu/Connectivity/plugin.cpp+1

This diff is too big to show here.

tests/mocks/Ubuntu/SystemSettings/CMakeLists.txt+2

This diff is too big to show here.

tests/mocks/Ubuntu/SystemSettings/Diagnostics/CMakeLists.txtnew file+1

This diff is too big to show here.

tests/mocks/Ubuntu/SystemSettings/Diagnostics/MockDiagnostics.qmlnew file+24

This diff is too big to show here.

tests/mocks/Ubuntu/SystemSettings/Diagnostics/qmldirnew file+2

This diff is too big to show here.

tests/mocks/Ubuntu/SystemSettings/LanguagePlugin/MockLanguagePlugin.qml+2−2

This diff is too big to show here.

tests/mocks/Ubuntu/SystemSettings/SecurityPrivacy/MockSecurityPrivacy.cpp+1−1

This diff is too big to show here.

tests/mocks/Ubuntu/SystemSettings/TimeDate/CMakeLists.txtnew file+1

This diff is too big to show here.

tests/mocks/Ubuntu/SystemSettings/TimeDate/MockTimeDate.qmlnew file+25

This diff is too big to show here.

tests/mocks/Ubuntu/SystemSettings/TimeDate/qmldirnew file+2

This diff is too big to show here.

tests/mocks/Unity/Application/ApplicationManager.cpp+10−22

This diff is too big to show here.

tests/mocks/Unity/Application/ApplicationManager.h−8

This diff is too big to show here.

tests/mocks/Unity/Application/MirSurface.cpp+6−2

This diff is too big to show here.

tests/mocks/Unity/Application/MirSurface.h+2−1

This diff is too big to show here.

tests/mocks/Unity/Application/MirSurfaceItem.cpp+17

This diff is too big to show here.

tests/mocks/Unity/Application/MirSurfaceItem.h+1

This diff is too big to show here.

tests/mocks/Unity/Application/SurfaceManager.cpp+8−9

This diff is too big to show here.

tests/mocks/Unity/Application/SurfaceManager.h+3−3

This diff is too big to show here.

tests/mocks/Unity/Application/VirtualKeyboard.cpp+3−2

This diff is too big to show here.

tests/mocks/Unity/Application/VirtualKeyboard.h+1−1

This diff is too big to show here.

tests/mocks/Unity/Application/plugin.cpp+2−1

This diff is too big to show here.

tests/mocks/Unity/Application/resources/MirSurfaceItem.qml+59

This diff is too big to show here.

tests/mocks/Unity/CMakeLists.txt+1−3

This diff is too big to show here.

tests/mocks/Unity/Launcher/MockLauncherModel.cpp+2

This diff is too big to show here.

tests/mocks/Unity/Unity.qmltypes+33−50

This diff is too big to show here.

tests/mocks/Unity/fake_previewstack.cppdeleted−68

This diff is too big to show here.

tests/mocks/Unity/fake_previewstack.hdeleted−52

This diff is too big to show here.

tests/mocks/Unity/fake_scope.cpp+7−2

This diff is too big to show here.

tests/mocks/Unity/fake_scope.h+3−2

This diff is too big to show here.

tests/mocks/Unity/fake_unity_plugin.cpp+1−2

This diff is too big to show here.

tests/mocks/Utils/CMakeLists.txt+3−1

This diff is too big to show here.

tests/mocks/Utils/plugin.cpp+14

This diff is too big to show here.

tests/mocks/Utils/windowstatestorage.cpp+13

This diff is too big to show here.

tests/mocks/Utils/windowstatestorage.h+4

This diff is too big to show here.

tests/mocks/Wizard/CMakeLists.txt+6−1

This diff is too big to show here.

tests/mocks/Wizard/MockSystem.cpp+4−2

This diff is too big to show here.

tests/mocks/Wizard/MockSystem.h+2−2

This diff is too big to show here.

tests/mocks/Wizard/mockplugin.cpp+7−8

This diff is too big to show here.

tests/plugins/AccountsService/CMakeLists.txt+5

This diff is too big to show here.

tests/plugins/AccountsService/PropertiesServer.cpp+16−4

This diff is too big to show here.

tests/plugins/AccountsService/PropertiesServer.h+2−1

This diff is too big to show here.

tests/plugins/AccountsService/UscServer.cppnew file+28

This diff is too big to show here.

tests/plugins/AccountsService/UscServer.hnew file+39

This diff is too big to show here.

tests/plugins/AccountsService/client.cpp+63−9

This diff is too big to show here.

tests/plugins/AccountsService/interfaces.xml+16

This diff is too big to show here.

tests/plugins/AccountsService/server.cpp+12

This diff is too big to show here.

tests/plugins/Dash/cardcreator/1.res+4−6

This diff is too big to show here.

tests/plugins/Dash/cardcreator/1.res.cardcreatornew file+119

This diff is too big to show here.

tests/plugins/Dash/cardcreator/10.res+3−5

This diff is too big to show here.

tests/plugins/Dash/cardcreator/10.res.cardcreatornew file+137

This diff is too big to show here.

tests/plugins/Dash/cardcreator/11.res+5−7

This diff is too big to show here.

tests/plugins/Dash/cardcreator/11.res.cardcreatornew file+210

This diff is too big to show here.

tests/plugins/Dash/cardcreator/2.res+3−5

This diff is too big to show here.

tests/plugins/Dash/cardcreator/2.res.cardcreatornew file+136

This diff is too big to show here.

tests/plugins/Dash/cardcreator/3.res+3−5

This diff is too big to show here.

tests/plugins/Dash/cardcreator/3.res.cardcreatornew file+137

This diff is too big to show here.

tests/plugins/Dash/cardcreator/4.res+3−5

This diff is too big to show here.

tests/plugins/Dash/cardcreator/4.res.cardcreatornew file+109

This diff is too big to show here.

tests/plugins/Dash/cardcreator/5.res+5−7

This diff is too big to show here.

tests/plugins/Dash/cardcreator/5.res.cardcreatornew file+156

This diff is too big to show here.

tests/plugins/Dash/cardcreator/6.res+2−4

This diff is too big to show here.

tests/plugins/Dash/cardcreator/6.res.cardcreatornew file+126

This diff is too big to show here.

tests/plugins/Dash/cardcreator/7.res+3−5

This diff is too big to show here.

tests/plugins/Dash/cardcreator/7.res.cardcreatornew file+149

This diff is too big to show here.

tests/plugins/Dash/cardcreator/8.res+3−5

This diff is too big to show here.

tests/plugins/Dash/cardcreator/8.res.cardcreatornew file+107

This diff is too big to show here.

tests/plugins/Dash/cardcreator/9.res+4−5

This diff is too big to show here.

tests/plugins/Dash/cardcreator/9.res.cardcreatornew file+119

This diff is too big to show here.

tests/plugins/Dash/cardcreatortest.cpp+32−22

This diff is too big to show here.

tests/plugins/Dash/cardcreatortest.qml+4−4

This diff is too big to show here.

tests/plugins/IntegratedLightDM/CMakeLists.txt+25

This diff is too big to show here.

tests/plugins/IntegratedLightDM/integrated.cppnew file+91

This diff is too big to show here.

tests/plugins/Ubuntu/Gestures/CMakeLists.txt+7−1

This diff is too big to show here.

tests/plugins/Ubuntu/Gestures/GestureTest.cpp+44

This diff is too big to show here.

tests/plugins/Ubuntu/Gestures/GestureTest.h+13−1

This diff is too big to show here.

tests/plugins/Ubuntu/Gestures/tst_DirectionalDragArea.cpp−56

This diff is too big to show here.

tests/plugins/Ubuntu/Gestures/tst_TouchGestureArea.cppnew file+270

This diff is too big to show here.

tests/plugins/Ubuntu/Gestures/tst_TouchGestureArea.qmlnew file+90

This diff is too big to show here.

tests/plugins/Unity/Launcher/launchermodeltest.cpp+1

This diff is too big to show here.

tests/plugins/Utils/CMakeLists.txt+7−1

This diff is too big to show here.

tests/plugins/Utils/DeviceConfigParserTest.cppnew file+70

This diff is too big to show here.

tests/qmltests/CMakeLists.txt+2−1

This diff is too big to show here.

tests/qmltests/Components/tst_Lockscreen.qml+14−7

This diff is too big to show here.

tests/qmltests/Dash/Previews/tst_PreviewAudioPlayback.qml+12−3

This diff is too big to show here.

tests/qmltests/Dash/Previews/tst_PreviewHeader.qml+18−1

This diff is too big to show here.

tests/qmltests/Dash/Previews/tst_PreviewSharing.qml+17−3

This diff is too big to show here.

tests/qmltests/Dash/tst_CardTool.qml+4−4

This diff is too big to show here.

tests/qmltests/Dash/tst_Dash.qml+89

This diff is too big to show here.

tests/qmltests/Dash/tst_GenericScopeView.qml−28

This diff is too big to show here.

tests/qmltests/Dash/tst_PreviewListView.qml → tests/qmltests/Dash/tst_PreviewView.qmlrenamed+23−16

This diff is too big to show here.

tests/qmltests/Greeter/tst_NarrowView.qml+9

This diff is too big to show here.

tests/qmltests/Launcher/tst_Launcher.qml+254−18

This diff is too big to show here.

tests/qmltests/Notifications/tst_OptionToggle.qml+1−1

This diff is too big to show here.

tests/qmltests/Notifications/tst_VisualSnapDecisionsQueue.qml+1

This diff is too big to show here.

tests/qmltests/Panel/Indicators/tst_MenuItemFactory.qml+2−4

This diff is too big to show here.

tests/qmltests/Panel/tst_IndicatorItem.qml+16−14

This diff is too big to show here.

tests/qmltests/Panel/tst_Panel.qml+2

This diff is too big to show here.

tests/qmltests/Stages/tst_DesktopStage.qml+2−1

This diff is too big to show here.

tests/qmltests/Stages/tst_PhoneStage.qml+19−6

This diff is too big to show here.

tests/qmltests/Stages/tst_SpreadDelegate.qml+7

This diff is too big to show here.

tests/qmltests/Stages/tst_TabletStage.qml+162−1

This diff is too big to show here.

tests/qmltests/Wizard/tst_Wizard.qml+171−200

This diff is too big to show here.

tests/qmltests/tst_DeviceConfiguration.qmlnew file+49

This diff is too big to show here.

tests/qmltests/tst_DisabledScreenNotice.qml+76−2

This diff is too big to show here.

tests/qmltests/tst_OrientedShell.qml+56−12

This diff is too big to show here.

tests/qmltests/tst_Shell.qml+241−59

This diff is too big to show here.

tests/utils/modules/Unity/Test/UnityTestCase.qml+67−11

This diff is too big to show here.