on xenial help sign in
Merge makeMakeTryOrientedShellWork
42301faAlbert Astals Cid
CMakeLists.txt+1−1
@@ -131,7 +131,7 @@ if(NOT QUIET_LOGGER)
131 set(STDOUT_LOGGER "-o" "-,txt")
131 set(STDOUT_LOGGER "-o" "-,txt")
132endif()
132endif()
133
133
134−execute_process(COMMAND arch OUTPUT_VARIABLE ARCH)
134+execute_process(COMMAND dpkg-architecture -qDEB_HOST_ARCH OUTPUT_VARIABLE ARCH)
135if (NOT ARCH MATCHES "arm*")
135if (NOT ARCH MATCHES "arm*")
136 set(ENABLE_TOUCH_EMULATION true)
136 set(ENABLE_TOUCH_EMULATION true)
137 add_definitions(-DUNITY8_ENABLE_TOUCH_EMULATION)
137 add_definitions(-DUNITY8_ENABLE_TOUCH_EMULATION)
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/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+155
@@ -1,3 +1,158 @@
1+unity8 (8.11+16.04.20160310.4-0ubuntu1) xenial; urgency=medium
2+
3+ [ Albert Astals Cid ]
4+ * Add context for Re-dock as asked by translators (LP: #1534608)
5+ * Add emblem to the preview header widget (LP: #1424720)
6+ * Add haptics to ScopesListCategoryItem buttons
7+ * Audio Cards: Make some of the image loading async (LP: #1533432)
8+ * Do not create fallback code for the card tool fake card (LP:
9+ #1545865)
10+ * Fix resizing the dash bringing temp scopes size out of sync (LP:
11+ #1543130)
12+ * Minor fixes for unity-scope-tool
13+ * Resolve title alignment on card creator time instead of on runtime
14+ * Use fixedHeaderHeight only in the non cardtool cards
15+ * Use the new undeprecated connectivityqt::Connectivity
16+ * asynchronous is only false on the fake card in cardtool
17+ * clazy fixes
18+
19+ [ Albert Astals Cid, CI Train Bot ]
20+ * click scope: Add the else branch so we reset the card size in all
21+ situations
22+
23+ [ Andrea Cimitan ]
24+ * PreviewSharing widget now accepts both string and array of
25+ widgetData["share-data"]["uri"] (LP: #1549056)
26+ * Update AP tests for new single preview
27+ * Use Text.Wrap for body notification text (LP: #1544909)
28+
29+ [ Andrea Cimitan, Lukáš Tinkl, Michael Zanetti, Nick Dedekind ]
30+ * some fixes for the new palette (LP: #1554616)
31+
32+ [ CI Train Bot ]
33+ * Resync trunk.
34+ * Update translation template
35+
36+ [ CI Train Bot, Daniel d'Andrada ]
37+ * Ensure the QML engine doesn't delete our mock MirSurfaces on its
38+ own.
39+
40+ [ Daniel d'Andrada ]
41+ * tst_Shell: Remove unused qml items
42+
43+ [ Josh Arenson ]
44+ * Allow the shell to blacklist input devices and force the OSK shown.
45+ (LP: #1542224)
46+
47+ [ Lukáš Tinkl ]
48+ * Disallow resizing windows up, past the Panel (LP: #1544766)
49+ * Elide the window title not to let it overflow into the indicators
50+ area (LP: #1535767)
51+ * Enable the PIN lockscreen to be used with a HW keyboard (LP:
52+ #1550359)
53+ * Fix tiny windows when switching stages
54+ * Provide a range of ports to QML JS Debugger
55+ * Watch for launcher item icon changes (LP: #1543290)
56+
57+ [ Michael Terry ]
58+ * Proxy more mouse and touchpad properties to USC (LP: #1540398) (LP:
59+ #1543344, #1540398)
60+ * Refactor the AccountsService plugin and make it slightly faster.
61+ * To let the user log in if a mouse is connected, hide the greeter
62+ cover page on a mouse click (but NOT a touch click). (LP: #1540497)
63+ * Watch AccountsService for changes to the user's real name. This was
64+ preventing us from noticing when the user set their name in the
65+ welcome wizard.
66+
67+ [ Michael Zanetti ]
68+ * Allow alt+tabbing in staged mode too (LP: #1540502)
69+ * Allow invoking the staged mode spreads by mouse right edge pushes
70+ too (LP: #1540392)
71+ * Allow loading the device configuration from an external file
72+ * Implement Launcher's keyboard navigation and updated pip design
73+ * Make launcher scalable, allow it locking (LP: #1511015)
74+ * Properly parent launcher items in all cases (LP: #1495732)
75+ * Read inputMethod surface from the new property int QtMir (LP:
76+ #1545286)
77+ * Some visual updates and rotation lock for the virtual touchpad (LP:
78+ #1549087)
79+ * Visual updates for the windowed spread (LP: #1488148)
80+ * stabilize swipeAwayGreeter()
81+
82+ [ Michał Sawicz ]
83+ * Add udev rules to make sure we have access to uinput
84+ * Make dash respawn indefinitely (LP: #1550056)
85+ * Use dpkg-architecture, not arch, to disable touch emulation
86+
87+ [ Vesa Rautiainen ]
88+ * Fixing the vertical position of desktop spread item icon.
89+
90+ -- Michał Sawicz <michal.sawicz@canonical.com> Thu, 10 Mar 2016 22:44:16 +0000
91+
92+unity8 (8.11+16.04.20160308-0ubuntu1) xenial; urgency=medium
93+
94+ [ Albert Astals Cid ]
95+ * Make these tests pass with the new SDK
96+
97+ [ Andrea Cimitan, Nick Dedekind ]
98+ * replace selected.backgroundText with normal.backgroundText in
99+ Splash, Notifications, Wizard
100+
101+ [ CI Train Bot ]
102+ * Update translation template
103+
104+ [ Michał Sawicz, Nick Dedekind ]
105+ * Fixed colours palette value set. Moved ModemItem to USC.
106+
107+ [ Michał Sawicz, Tim Peeters ]
108+ * Update headers for Dash and Splash to work properly with the new UI
109+ toolkit release.
110+
111+ [ Zoltán Balogh, Zsombor Egri ]
112+ * Use SuruDark theme instead of the deprecated SuruGradient.
113+
114+ -- Zoltan Balogh <zoltan.balogh@canonical.com> Tue, 08 Mar 2016 20:59:34 +0000
115+
116+unity8 (8.11+16.04.20160307-0ubuntu1) xenial; urgency=medium
117+
118+ [ CI Train Bot ]
119+ * Resync trunk.
120+ * Update translation template
121+
122+ [ Rodney Dawes ]
123+ * Re-enable the purchaseCancelled signal.
124+
125+ -- Rodney Dawes <ci-train-bot@canonical.com> Mon, 07 Mar 2016 14:12:08 +0000
126+
127+unity8 (8.11+16.04.20160301-0ubuntu1) xenial; urgency=medium
128+
129+ [ Albert Astals Cid ]
130+ * Hook the new scope.activationInProgress property (LP: #1537132)
131+
132+ [ Andrea Cimitan ]
133+ * Updated the Preview view to use a single PreviewModel instead old
134+ PreviewStack, using a Loader instead ListView (LP: #1541967)
135+
136+ [ CI Train Bot ]
137+ * Resync trunk.
138+ * Update translation template
139+
140+ [ Michał Sawicz ]
141+ * Add autopilot as DEP-8 tests added: debian/tests/autopilot.sh
142+
143+ -- Pawel Stolowski <ci-train-bot@canonical.com> Tue, 01 Mar 2016 10:28:52 +0000
144+
145+unity8 (8.11+16.04.20160216.1-0ubuntu1) xenial; urgency=medium
146+
147+ [ Albert Astals Cid ]
148+ * Make the audio previews create a playlist (LP: #1540477)
149+
150+ [ CI Train Bot ]
151+ * Resync trunk. added: po/aa.po
152+ * Update translation template
153+
154+ -- Pawel Stolowski <ci-train-bot@canonical.com> Tue, 16 Feb 2016 03:24:46 +0000
155+
1unity8 (8.11+16.04.20160212-0ubuntu1) xenial; urgency=medium
156unity8 (8.11+16.04.20160212-0ubuntu1) xenial; urgency=medium
2
157
3 [ Albert Astals Cid ]
158 [ Albert Astals Cid ]
debian/control+11−10
@@ -13,7 +13,7 @@ Build-Depends: cmake,
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 libgl1-mesa-dev[!armhf] | libgl-dev[!armhf],
18 libgl1-mesa-dev[!armhf] | libgl-dev[!armhf],
19 libgl1-mesa-dri,
19 libgl1-mesa-dri,
@@ -29,7 +29,7 @@ Build-Depends: cmake,
29 libqt5xmlpatterns5-dev,
29 libqt5xmlpatterns5-dev,
30 libsystemsettings-dev,
30 libsystemsettings-dev,
31 libudev-dev,
31 libudev-dev,
32− libunity-api-dev (>= 7.106),
32+ libunity-api-dev (>= 7.107),
33 libusermetricsoutput1-dev,
33 libusermetricsoutput1-dev,
34# Need those X11 libs touch emulation from mouse events in manual QML tests on a X11 desktop
34# Need those X11 libs touch emulation from mouse events in manual QML tests on a X11 desktop
35 libx11-dev[!armhf],
35 libx11-dev[!armhf],
@@ -54,8 +54,8 @@ Build-Depends: cmake,
54 qtdeclarative5-private-dev (>= 5.4),
54 qtdeclarative5-private-dev (>= 5.4),
55 qtdeclarative5-qtmultimedia-plugin (>= 5.4.1-1ubuntu19~overlay2),
55 qtdeclarative5-qtmultimedia-plugin (>= 5.4.1-1ubuntu19~overlay2),
56 qtdeclarative5-ubuntu-content1,
56 qtdeclarative5-ubuntu-content1,
57− qtdeclarative5-ubuntu-settings-components (>= 0.6),
57+ qtdeclarative5-ubuntu-settings-components (>= 0.7),
58− qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.3.1676) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.3.1676),
58+ qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.3.1845) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.3.1845),
59 qtdeclarative5-ubuntu-web-plugin,
59 qtdeclarative5-ubuntu-web-plugin,
60 ttf-ubuntu-font-family,
60 ttf-ubuntu-font-family,
61Standards-Version: 3.9.4
61Standards-Version: 3.9.4
@@ -70,7 +70,7 @@ X-Ubuntu-Use-Langpack: yes
70Package: indicators-client
70Package: indicators-client
71Architecture: amd64 armhf i386
71Architecture: amd64 armhf i386
72Depends: qmenumodel-qml (>= 0.2.9),
72Depends: qmenumodel-qml (>= 0.2.9),
73− qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.3.1627) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.3.1627),
73+ qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.3.1845) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.3.1845),
74 unity8 (= ${binary:Version}),
74 unity8 (= ${binary:Version}),
75 ${misc:Depends},
75 ${misc:Depends},
76 ${shlibs:Depends},
76 ${shlibs:Depends},
@@ -101,7 +101,6 @@ Depends: dmz-cursor-theme,
101 qml-module-qt-labs-folderlistmodel,
101 qml-module-qt-labs-folderlistmodel,
102 qml-module-qtquick-xmllistmodel,
102 qml-module-qtquick-xmllistmodel,
103 qml-module-qtsysteminfo,
103 qml-module-qtsysteminfo,
104− qtdeclarative5-gsettings1.0,
105 qtdeclarative5-qtmir-plugin (>= 0.4.5),
104 qtdeclarative5-qtmir-plugin (>= 0.4.5),
106 qtdeclarative5-ubuntu-telephony0.1,
105 qtdeclarative5-ubuntu-telephony0.1,
107 qtdeclarative5-ubuntu-web-plugin,
106 qtdeclarative5-ubuntu-web-plugin,
@@ -126,15 +125,15 @@ Description: Unity 8 shell
126Package: unity8-common
125Package: unity8-common
127Architecture: all
126Architecture: all
128Depends: qml-module-qtquick-layouts,
127Depends: qml-module-qtquick-layouts,
129− qtdeclarative5-ubuntu-settings-components (>= 0.6),
128+ qtdeclarative5-ubuntu-settings-components (>= 0.7),
130 qtdeclarative5-ubuntu-thumbnailer0.1 | ubuntu-thumbnailer-impl,
129 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),
130+ 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,
131 qtdeclarative5-unity-notifications-plugin (>= 0.1.2) | unity-notifications-impl,
133 ubuntu-thumbnailer-impl-0,
132 ubuntu-thumbnailer-impl-0,
134 unity-application-impl-13,
133 unity-application-impl-13,
135 unity-notifications-impl-3,
134 unity-notifications-impl-3,
136 unity-plugin-scopes | unity-scopes-impl,
135 unity-plugin-scopes | unity-scopes-impl,
137− unity-scopes-impl-9,
136+ unity-scopes-impl-10,
138 unity8-fake-env | unity-application-impl,
137 unity8-fake-env | unity-application-impl,
139 ${misc:Depends},
138 ${misc:Depends},
140Breaks: unity8 (<< 7.86),
139Breaks: unity8 (<< 7.86),
@@ -158,7 +157,7 @@ Depends: autopilot-qt5 (>= 1.4),
158 python3-fixtures,
157 python3-fixtures,
159 python3-gi,
158 python3-gi,
160 qttestability-autopilot (>= 1.4),
159 qttestability-autopilot (>= 1.4),
161− ubuntu-ui-toolkit-autopilot (>= 1.2.1485+15.04.20150417.1-0ubuntu1),
160+ ubuntu-ui-toolkit-autopilot (>= 1.3.1845),
162 unity-scope-click,
161 unity-scope-click,
163 unity8 (= ${source:Version}),
162 unity8 (= ${source:Version}),
164 unity8-fake-env (= ${source:Version}),
163 unity8-fake-env (= ${source:Version}),
@@ -192,6 +191,8 @@ Depends: accountsservice-ubuntu-schemas (>= 0.0.5),
192 libhardware2,
191 libhardware2,
193 pay-service,
192 pay-service,
194 unity-schemas (>= 7.3.1+14.10.20140915),
193 unity-schemas (>= 7.3.1+14.10.20140915),
194+ qtdeclarative5-gsettings1.0,
195+ qml-module-qtmultimedia,
195 ${misc:Depends},
196 ${misc:Depends},
196 ${shlibs:Depends},
197 ${shlibs:Depends},
197Provides: unity-launcher-impl,
198Provides: 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
plugins/AccountsService/AccountsService.cpp+189−342
@@ -24,17 +24,52 @@
24#include <QStringList>
24#include <QStringList>
25#include <QDebug>
25#include <QDebug>
26
26
27+#define IFACE_ACCOUNTS_USER QStringLiteral("org.freedesktop.Accounts.User")
28+#define IFACE_LOCATION_HERE QStringLiteral("com.ubuntu.location.providers.here.AccountsService")
29+#define IFACE_UBUNTU_INPUT QStringLiteral("com.ubuntu.AccountsService.Input")
30+#define IFACE_UBUNTU_SECURITY QStringLiteral("com.ubuntu.AccountsService.SecurityPrivacy")
31+#define IFACE_UBUNTU_SECURITY_OLD QStringLiteral("com.ubuntu.touch.AccountsService.SecurityPrivacy")
32+#define IFACE_UNITY QStringLiteral("com.canonical.unity.AccountsService")
33+#define IFACE_UNITY_PRIVATE QStringLiteral("com.canonical.unity.AccountsService.Private")
34+
35+#define PROP_BACKGROUND_FILE QStringLiteral("BackgroundFile")
36+#define PROP_DEMO_EDGES QStringLiteral("demo-edges")
37+#define PROP_ENABLE_INDICATORS_WHILE_LOCKED QStringLiteral("EnableIndicatorsWhileLocked")
38+#define PROP_ENABLE_LAUNCHER_WHILE_LOCKED QStringLiteral("EnableLauncherWhileLocked")
39+#define PROP_FAILED_LOGINS QStringLiteral("FailedLogins")
40+#define PROP_LICENSE_ACCEPTED QStringLiteral("LicenseAccepted")
41+#define PROP_LICENSE_BASE_PATH QStringLiteral("LicenseBasePath")
42+#define PROP_MOUSE_CURSOR_SPEED QStringLiteral("MouseCursorSpeed")
43+#define PROP_MOUSE_DOUBLE_CLICK_SPEED QStringLiteral("MouseDoubleClickSpeed")
44+#define PROP_MOUSE_PRIMARY_BUTTON QStringLiteral("MousePrimaryButton")
45+#define PROP_MOUSE_SCROLL_SPEED QStringLiteral("MouseScrollSpeed")
46+#define PROP_PASSWORD_DISPLAY_HINT QStringLiteral("PasswordDisplayHint")
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,43 @@ 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_LOCATION_HERE, PROP_LICENSE_ACCEPTED, QStringLiteral("hereEnabledChanged"));
84+ registerProperty(IFACE_LOCATION_HERE, PROP_LICENSE_BASE_PATH, QStringLiteral("hereLicensePathChanged"));
85+ registerProperty(IFACE_UBUNTU_SECURITY, PROP_ENABLE_LAUNCHER_WHILE_LOCKED, QStringLiteral("enableLauncherWhileLockedChanged"));
86+ registerProperty(IFACE_UBUNTU_SECURITY, PROP_ENABLE_INDICATORS_WHILE_LOCKED, QStringLiteral("enableIndicatorsWhileLockedChanged"));
87+ registerProperty(IFACE_UBUNTU_SECURITY, PROP_PASSWORD_DISPLAY_HINT, QStringLiteral("passwordDisplayHintChanged"));
88+ registerProperty(IFACE_UBUNTU_SECURITY_OLD, PROP_STATS_WELCOME_SCREEN, QStringLiteral("statsWelcomeScreenChanged"));
89+ registerProperty(IFACE_UNITY, PROP_DEMO_EDGES, QStringLiteral("demoEdgesChanged"));
90+ registerProperty(IFACE_UNITY_PRIVATE, PROP_FAILED_LOGINS, QStringLiteral("failedLoginsChanged"));
91+
92+ registerProxy(IFACE_UBUNTU_INPUT, PROP_MOUSE_CURSOR_SPEED,
93+ m_unityInput, QStringLiteral("setMouseCursorSpeed"));
94+ registerProxy(IFACE_UBUNTU_INPUT, PROP_MOUSE_DOUBLE_CLICK_SPEED,
95+ m_unityInput, QStringLiteral("setMouseDoubleClickSpeed"));
96+ registerProxy(IFACE_UBUNTU_INPUT, PROP_MOUSE_PRIMARY_BUTTON,
97+ m_unityInput, QStringLiteral("setMousePrimaryButton"),
98+ primaryButtonConverter);
99+ registerProxy(IFACE_UBUNTU_INPUT, PROP_MOUSE_SCROLL_SPEED,
100+ m_unityInput, QStringLiteral("setMouseScrollSpeed"));
101+ registerProxy(IFACE_UBUNTU_INPUT, PROP_TOUCHPAD_CURSOR_SPEED,
102+ m_unityInput, QStringLiteral("setTouchpadCursorSpeed"));
103+ registerProxy(IFACE_UBUNTU_INPUT, PROP_TOUCHPAD_SCROLL_SPEED,
104+ m_unityInput, QStringLiteral("setTouchpadScrollSpeed"));
105+ registerProxy(IFACE_UBUNTU_INPUT, PROP_TOUCHPAD_DISABLE_WHILE_TYPING,
106+ m_unityInput, QStringLiteral("setTouchpadDisableWhileTyping"));
107+ registerProxy(IFACE_UBUNTU_INPUT, PROP_TOUCHPAD_DISABLE_WITH_MOUSE,
108+ m_unityInput, QStringLiteral("setTouchpadDisableWithMouse"));
109+ registerProxy(IFACE_UBUNTU_INPUT, PROP_TOUCHPAD_DOUBLE_CLICK_SPEED,
110+ m_unityInput, QStringLiteral("setTouchpadDoubleClickSpeed"));
111+ registerProxy(IFACE_UBUNTU_INPUT, PROP_TOUCHPAD_PRIMARY_BUTTON,
112+ m_unityInput, QStringLiteral("setTouchpadPrimaryButton"),
113+ primaryButtonConverter);
114+ registerProxy(IFACE_UBUNTU_INPUT, PROP_TOUCHPAD_TAP_TO_CLICK,
115+ m_unityInput, QStringLiteral("setTouchpadTapToClick"));
116+ registerProxy(IFACE_UBUNTU_INPUT, PROP_TOUCHPAD_TWO_FINGER_SCROLL,
117+ m_unityInput, QStringLiteral("setTouchpadTwoFingerScroll"));
118+
47 setUser(!user.isEmpty() ? user : QString::fromUtf8(qgetenv("USER")));
119 setUser(!user.isEmpty() ? user : QString::fromUtf8(qgetenv("USER")));
48}
120}
49
121
@@ -57,410 +129,200 @@ void AccountsService::setUser(const QString &user)
57 if (user.isEmpty() || m_user == user)
129 if (user.isEmpty() || m_user == user)
58 return;
130 return;
59
131
132+ bool wasEmpty = m_user.isEmpty();
133+
60 m_user = user;
134 m_user = user;
61 Q_EMIT userChanged();
135 Q_EMIT userChanged();
62
136
63− updateDemoEdges(false);
137+ // Do the first update synchronously, as a cheap way to block rendering
64− updateEnableLauncherWhileLocked(false);
138+ // until we have the right values on bootup.
65− updateEnableIndicatorsWhileLocked(false);
139+ 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}
140}
75
141
76bool AccountsService::demoEdges() const
142bool AccountsService::demoEdges() const
77{
143{
78− return m_demoEdges;
144+ auto value = getProperty(IFACE_UNITY, PROP_DEMO_EDGES);
145+ return value.toBool();
79}
146}
80
147
81void AccountsService::setDemoEdges(bool demoEdges)
148void AccountsService::setDemoEdges(bool demoEdges)
82{
149{
83− if (m_demoEdges != demoEdges) {
150+ 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}
151}
90
152
91bool AccountsService::enableLauncherWhileLocked() const
153bool AccountsService::enableLauncherWhileLocked() const
92{
154{
93− return m_enableLauncherWhileLocked;
155+ auto value = getProperty(IFACE_UBUNTU_SECURITY, PROP_ENABLE_LAUNCHER_WHILE_LOCKED);
156+ return value.toBool();
94}
157}
95
158
96bool AccountsService::enableIndicatorsWhileLocked() const
159bool AccountsService::enableIndicatorsWhileLocked() const
97{
160{
98− return m_enableIndicatorsWhileLocked;
161+ auto value = getProperty(IFACE_UBUNTU_SECURITY, PROP_ENABLE_INDICATORS_WHILE_LOCKED);
162+ return value.toBool();
99}
163}
100
164
101QString AccountsService::backgroundFile() const
165QString AccountsService::backgroundFile() const
102{
166{
103− return m_backgroundFile;
167+ auto value = getProperty(IFACE_ACCOUNTS_USER, PROP_BACKGROUND_FILE);
168+ return value.toString();
104}
169}
105
170
106bool AccountsService::statsWelcomeScreen() const
171bool AccountsService::statsWelcomeScreen() const
107{
172{
108− return m_statsWelcomeScreen;
173+ auto value = getProperty(IFACE_UBUNTU_SECURITY_OLD, PROP_STATS_WELCOME_SCREEN);
174+ return value.toBool();
109}
175}
110
176
111AccountsService::PasswordDisplayHint AccountsService::passwordDisplayHint() const
177AccountsService::PasswordDisplayHint AccountsService::passwordDisplayHint() const
112{
178{
113− return m_passwordDisplayHint;
179+ auto value = getProperty(IFACE_UBUNTU_SECURITY, PROP_PASSWORD_DISPLAY_HINT);
180+ return (PasswordDisplayHint)value.toInt();
114}
181}
115
182
116bool AccountsService::hereEnabled() const
183bool AccountsService::hereEnabled() const
117{
184{
118− return m_hereEnabled;
185+ auto value = getProperty(IFACE_LOCATION_HERE, PROP_LICENSE_ACCEPTED);
186+ return value.toBool();
119}
187}
120
188
121void AccountsService::setHereEnabled(bool enabled)
189void AccountsService::setHereEnabled(bool enabled)
122{
190{
123− if (m_hereEnabled != enabled) {
191+ 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}
192}
130
193
131QString AccountsService::hereLicensePath() const
194QString AccountsService::hereLicensePath() const
132{
195{
133− return m_hereLicensePath;
196+ auto value = getProperty(IFACE_LOCATION_HERE, PROP_LICENSE_BASE_PATH);
197+ QString hereLicensePath = value.toString();
198+ if (hereLicensePath.isEmpty() || !QFile::exists(hereLicensePath))
199+ hereLicensePath = QStringLiteral("");
200+ return hereLicensePath;
134}
201}
135
202
136bool AccountsService::hereLicensePathValid() const
203bool AccountsService::hereLicensePathValid() const
137{
204{
138− return !m_hereLicensePath.isNull();
205+ auto value = getProperty(IFACE_LOCATION_HERE, PROP_LICENSE_BASE_PATH);
139−}
206+ return !value.toString().isNull();
140−
141−void AccountsService::updateDemoEdges(bool async)
142−{
143− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
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;
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}
207}
169
208
170−void AccountsService::updateEnableLauncherWhileLocked(bool async)
209+uint AccountsService::failedLogins() const
171{
210{
172− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
211+ return getProperty(IFACE_UNITY_PRIVATE, PROP_FAILED_LOGINS).toUInt();
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}
212}
198
213
199−void AccountsService::updateEnableIndicatorsWhileLocked(bool async)
214+void AccountsService::setFailedLogins(uint failedLogins)
200{
215{
201− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
216+ setProperty(IFACE_UNITY_PRIVATE, PROP_FAILED_LOGINS, failedLogins);
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;
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}
217}
227
218
228−void AccountsService::updateBackgroundFile(bool async)
219+// ====================================================
229−{
220+// Everything below this line is generic helper methods
230− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
221+// ====================================================
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−}
256
222
257−void AccountsService::updateMouseCursorSpeed()
223+void AccountsService::emitChangedForProperty(const QString &interface, const QString &property)
258{
224{
259− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
225+ QString signalName = m_properties[interface][property].signal;
260− QStringLiteral("com.ubuntu.AccountsService.Input"),
226+ QMetaObject::invokeMethod(this, signalName.toUtf8().data());
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}
227}
279
228
280−void AccountsService::updateTouchpadCursorSpeed()
229+QVariant AccountsService::getProperty(const QString &interface, const QString &property) const
281{
230{
282− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
231+ return m_properties[interface][property].value;
283− QStringLiteral("com.ubuntu.AccountsService.Input"),
284− QStringLiteral("TouchpadCursorSpeed"));
285− QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
286−
287− connect(watcher, &QDBusPendingCallWatcher::finished,
288− this, [this](QDBusPendingCallWatcher* watcher) {
289−
290− QDBusPendingReply<QVariant> reply = *watcher;
291− watcher->deleteLater();
292− if (reply.isError()) {
293− qWarning() << "Failed to get 'TouchpadCursorSpeed' property - " << reply.error().message();
294− return;
295− }
296−
297− // Merely proxy this along to USC. We don't care about keeping a copy
298− // or exporting it internally.
299− m_unityInput->asyncCall(QStringLiteral("setTouchpadCursorSpeed"), reply.value());
300− });
301}
232}
302
233
303−void AccountsService::updateStatsWelcomeScreen(bool async)
234+void AccountsService::setProperty(const QString &interface, const QString &property, const QVariant &value)
304{
235{
305− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
236+ if (m_properties[interface][property].value != value) {
306− QStringLiteral("com.ubuntu.touch.AccountsService.SecurityPrivacy"),
237+ m_properties[interface][property].value = value;
307− QStringLiteral("StatsWelcomeScreen"));
238+ m_service->setUserPropertyAsync(m_user, interface, property, value);
308− QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
239+ emitChangedForProperty(interface, property);
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 }
240 }
330}
241}
331
242
332−void AccountsService::updatePasswordDisplayHint(bool async)
243+void AccountsService::updateCache(const QString &interface, const QString &property, const QVariant &value)
333{
244{
334− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
245+ PropertyInfo &info = m_properties[interface][property];
335− QStringLiteral("com.ubuntu.AccountsService.SecurityPrivacy"),
246+
336− QStringLiteral("PasswordDisplayHint"));
247+ if (info.proxyInterface) {
337− QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
248+ QVariant finalValue;
338−
249+ if (info.proxyConverter) {
339− connect(watcher, &QDBusPendingCallWatcher::finished,
250+ finalValue = info.proxyConverter(value);
340− this, [this](QDBusPendingCallWatcher* watcher) {
251+ } else {
341−
252+ finalValue = value;
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 }
253 }
354− });
254+ info.proxyInterface->asyncCall(info.proxyMethod, finalValue);
355− if (!async) {
255+ return; // don't bother saving a copy
356− watcher->waitForFinished();
357− delete watcher;
358 }
256 }
359−}
360−
361−void AccountsService::updateFailedLogins(bool async)
362−{
363− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
364− QStringLiteral("com.canonical.unity.AccountsService.Private"),
365− QStringLiteral("FailedLogins"));
366− QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
367−
368− connect(watcher, &QDBusPendingCallWatcher::finished,
369− this, [this](QDBusPendingCallWatcher* watcher) {
370−
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− }
377
257
378− const uint failedLogins = reply.value().toUInt();
258+ if (info.value != value) {
379− if (m_failedLogins != failedLogins) {
259+ info.value = value;
380− m_failedLogins = failedLogins;
260+ emitChangedForProperty(interface, property);
381− Q_EMIT failedLoginsChanged();
382− }
383− });
384− if (!async) {
385− watcher->waitForFinished();
386− delete watcher;
387 }
261 }
388}
262}
389
263
390−void AccountsService::updateHereEnabled(bool async)
264+void AccountsService::updateProperty(const QString &interface, const QString &property)
391{
265{
392 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
266 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
393− QStringLiteral("com.ubuntu.location.providers.here.AccountsService"),
267+ interface,
394− QStringLiteral("LicenseAccepted"));
268+ property);
395 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
269 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
396
270
397 connect(watcher, &QDBusPendingCallWatcher::finished,
271 connect(watcher, &QDBusPendingCallWatcher::finished,
398− this, [this](QDBusPendingCallWatcher* watcher) {
272+ this, [this, interface, property](QDBusPendingCallWatcher* watcher) {
399
273
400 QDBusPendingReply<QVariant> reply = *watcher;
274 QDBusPendingReply<QVariant> reply = *watcher;
401 watcher->deleteLater();
275 watcher->deleteLater();
402 if (reply.isError()) {
276 if (reply.isError()) {
403− qWarning() << "Failed to get 'LicenseAccepted' property - " << reply.error().message();
277+ qWarning() << "Failed to get '" << property << "' property:" << reply.error().message();
404 return;
278 return;
405 }
279 }
406
280
407− const bool hereEnabled = reply.value().toBool();
281+ updateCache(interface, property, reply.value());
408− if (m_hereEnabled != hereEnabled) {
409− m_hereEnabled = hereEnabled;
410− Q_EMIT hereEnabledChanged();
411− }
412 });
282 });
413− if (!async) {
414− watcher->waitForFinished();
415− delete watcher;
416− }
417}
283}
418
284
419−void AccountsService::updateHereLicensePath(bool async)
285+void AccountsService::updateAllProperties(const QString &interface, bool async)
420{
286{
421− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
287+ QDBusPendingCall pendingReply = m_service->getAllPropertiesAsync(m_user,
422− QStringLiteral("com.ubuntu.location.providers.here.AccountsService"),
288+ interface);
423− QStringLiteral("LicenseBasePath"));
424 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
289 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
425
290
426 connect(watcher, &QDBusPendingCallWatcher::finished,
291 connect(watcher, &QDBusPendingCallWatcher::finished,
427− this, [this](QDBusPendingCallWatcher* watcher) {
292+ this, [this, interface](QDBusPendingCallWatcher* watcher) {
428
293
429− QDBusPendingReply<QVariant> reply = *watcher;
294+ QDBusPendingReply< QHash<QString, QVariant> > reply = *watcher;
430 watcher->deleteLater();
295 watcher->deleteLater();
431 if (reply.isError()) {
296 if (reply.isError()) {
432− qWarning() << "Failed to get 'LicenseBasePath' property - " << reply.error().message();
297+ qWarning() << "Failed to get all properties for" << interface << ":" << reply.error().message();
433 return;
298 return;
434 }
299 }
435
300
436− QString hereLicensePath = reply.value().toString();
301+ auto valueHash = reply.value();
437− if (hereLicensePath.isEmpty() || !QFile::exists(hereLicensePath))
302+ auto i = valueHash.constBegin();
438− hereLicensePath = QLatin1String("");
303+ while (i != valueHash.constEnd()) {
439−
304+ updateCache(interface, i.key(), i.value());
440− if (m_hereLicensePath.isNull() || m_hereLicensePath != hereLicensePath) {
305+ ++i;
441− m_hereLicensePath = hereLicensePath;
442− Q_EMIT hereLicensePathChanged();
443 }
306 }
444 });
307 });
445 if (!async) {
308 if (!async) {
446 watcher->waitForFinished();
309 watcher->waitForFinished();
447− delete watcher;
448 }
310 }
449}
311}
450
312
451−uint AccountsService::failedLogins() const
313+void AccountsService::registerProxy(const QString &interface, const QString &property, QDBusInterface *iface, const QString &method, ProxyConverter converter)
452{
314{
453− return m_failedLogins;
315+ registerProperty(interface, property, nullptr);
316+
317+ m_properties[interface][property].proxyInterface = iface;
318+ m_properties[interface][property].proxyMethod = method;
319+ m_properties[interface][property].proxyConverter = converter;
454}
320}
455
321
456−void AccountsService::setFailedLogins(uint failedLogins)
322+void AccountsService::registerProperty(const QString &interface, const QString &property, const QString &signal)
457{
323{
458− if (m_failedLogins != failedLogins) {
324+ m_properties[interface][property] = PropertyInfo();
459− m_failedLogins = failedLogins;
325+ 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}
326}
465
327
466void AccountsService::onPropertiesChanged(const QString &user, const QString &interface, const QStringList &changed)
328void AccountsService::onPropertiesChanged(const QString &user, const QString &interface, const QStringList &changed)
@@ -469,42 +331,13 @@ void AccountsService::onPropertiesChanged(const QString &user, const QString &in
469 return;
331 return;
470 }
332 }
471
333
472− if (interface == QLatin1String("com.canonical.unity.AccountsService")) {
334+ auto propHash = m_properties.value(interface);
473− if (changed.contains(QStringLiteral("demo-edges"))) {
335+ auto i = propHash.constBegin();
474− updateDemoEdges();
336+ 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"))) {
337+ if (changed.contains(i.key())) {
496− updateEnableLauncherWhileLocked();
338+ 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 }
339 }
340+ ++i;
508 }
341 }
509}
342}
510
343
@@ -514,6 +347,20 @@ void AccountsService::onMaybeChanged(const QString &user)
514 return;
347 return;
515 }
348 }
516
349
517− // Standard properties might have changed
350+ // Any of the standard properties might have changed!
518− updateBackgroundFile();
351+ auto propHash = m_properties.value(IFACE_ACCOUNTS_USER);
352+ auto i = propHash.constBegin();
353+ while (i != propHash.constEnd()) {
354+ updateProperty(IFACE_ACCOUNTS_USER, i.key());
355+ ++i;
356+ }
357+}
358+
359+void AccountsService::refresh(bool async)
360+{
361+ auto i = m_properties.constBegin();
362+ while (i != m_properties.constEnd()) {
363+ updateAllProperties(i.key(), async);
364+ ++i;
365+ }
519}
366}
plugins/AccountsService/AccountsService.h+25−20
@@ -19,8 +19,10 @@
19#ifndef UNITY_ACCOUNTSSERVICE_H
19#ifndef UNITY_ACCOUNTSSERVICE_H
20#define UNITY_ACCOUNTSSERVICE_H
20#define UNITY_ACCOUNTSSERVICE_H
21
21
22+#include <QHash>
22#include <QObject>
23#include <QObject>
23#include <QString>
24#include <QString>
25+#include <QVariant>
24
26
25class AccountsServiceDBusAdaptor;
27class AccountsServiceDBusAdaptor;
26class QDBusInterface;
28class QDBusInterface;
@@ -109,30 +111,33 @@ private Q_SLOTS:
109 void onMaybeChanged(const QString &user);
111 void onMaybeChanged(const QString &user);
110
112
111private:
113private:
112− void updateDemoEdges(bool async = true);
114+ typedef QVariant (*ProxyConverter)(const QVariant &);
113− void updateEnableLauncherWhileLocked(bool async = true);
114− void updateEnableIndicatorsWhileLocked(bool async = true);
115− void updateBackgroundFile(bool async = true);
116− void updateMouseCursorSpeed();
117− void updateTouchpadCursorSpeed();
118− void updateStatsWelcomeScreen(bool async = true);
119− void updatePasswordDisplayHint(bool async = true);
120− void updateFailedLogins(bool async = true);
121− void updateHereEnabled(bool async = true);
122− void updateHereLicensePath(bool async = true);
123
115
116+ void refresh(bool async);
117+ void registerProperty(const QString &interface, const QString &property, const QString &signal);
118+ void registerProxy(const QString &interface, const QString &property, QDBusInterface *iface, const QString &method, ProxyConverter converter = nullptr);
119+
120+ void updateAllProperties(const QString &interface, bool async);
121+ void updateProperty(const QString &interface, const QString &property);
122+ void updateCache(const QString &interface, const QString &property, const QVariant &value);
123+
124+ void setProperty(const QString &interface, const QString &property, const QVariant &value);
125+ QVariant getProperty(const QString &interface, const QString &property) const;
126+
127+ void emitChangedForProperty(const QString &interface, const QString &property);
128+
129+ struct PropertyInfo {
130+ QVariant value{};
131+ QString signal{};
132+ QDBusInterface *proxyInterface{};
133+ QString proxyMethod{};
134+ ProxyConverter proxyConverter{};
135+ };
136+ typedef QHash< QString, QHash<QString, PropertyInfo> > PropertyHash;
137+ PropertyHash m_properties;
124 AccountsServiceDBusAdaptor *m_service;
138 AccountsServiceDBusAdaptor *m_service;
125 QDBusInterface *m_unityInput;
139 QDBusInterface *m_unityInput;
126 QString m_user;
140 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};
141};
137
142
138#endif
143#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/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/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/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/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/Utils/CMakeLists.txt+1
@@ -23,6 +23,7 @@ set(QMLPLUGIN_SRC
23 windowstatestorage.cpp
23 windowstatestorage.cpp
24 timezoneFormatter.cpp
24 timezoneFormatter.cpp
25 inputeventgenerator.cpp
25 inputeventgenerator.cpp
26+ deviceconfigparser.cpp
26 plugin.cpp
27 plugin.cpp
27 )
28 )
28
29
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/plugin.cpp+2
@@ -37,6 +37,7 @@
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"
40
41
41static QObject *createWindowStateStorage(QQmlEngine *engine, QJSEngine *scriptEngine)
42static QObject *createWindowStateStorage(QQmlEngine *engine, QJSEngine *scriptEngine)
42{
43{
@@ -70,6 +71,7 @@ void UtilsPlugin::registerTypes(const char *uri)
70 qmlRegisterType<ActiveFocusLogger>(uri, 0, 1, "ActiveFocusLogger");
71 qmlRegisterType<ActiveFocusLogger>(uri, 0, 1, "ActiveFocusLogger");
71 qmlRegisterType<ApplicationsFilterModel>(uri, 0, 1, "ApplicationsFilterModel");
72 qmlRegisterType<ApplicationsFilterModel>(uri, 0, 1, "ApplicationsFilterModel");
72 qmlRegisterType<InputEventGenerator>(uri, 0, 1, "InputEventGenerator");
73 qmlRegisterType<InputEventGenerator>(uri, 0, 1, "InputEventGenerator");
74+ qmlRegisterType<DeviceConfigParser>(uri, 0, 1, "DeviceConfigParser");
73}
75}
74
76
75void UtilsPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
77void UtilsPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
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-17 05:42+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-17 05:42+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-17 05:42+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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+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 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-17 05:43+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"
@@ -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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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+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-16 07:23+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"
@@ -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-17 05:43+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"
@@ -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-17 05:42+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:42+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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+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 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-17 05:43+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 "Відкрити спеціальні меню"
@@ -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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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-17 05:43+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−
136− Loader {
137− id: pinPadLoader
138− objectName: "pinPadLoader"
139− anchors.fill: parent
140− property bool resetting: false
128+ property bool resetting: false
141− property bool waiting: false
129+ property bool waiting: false
142− property bool showWrongText: false
130+ property bool showWrongText: false
143−
131+ focus: true
132+
144− source: {
133+ source: {
145− if (resetting || !root.required) {
134+ if (resetting || !root.required) {
146− return ""
135+ return ""
147− } else if (root.delayMinutes > 0) {
136+ } else if (root.delayMinutes > 0) {
148− return "DelayedLockscreen.qml"
137+ return "DelayedLockscreen.qml"
149− } else if (root.alphaNumeric) {
138+ } else if (root.alphaNumeric) {
150− return "PassphraseLockscreen.qml"
139+ return "PassphraseLockscreen.qml"
151− } else {
140+ } else {
152− return "PinLockscreen.qml"
141+ 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/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/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+ var playlist = [];
89+ for (var i = 0; i < trackRepeater.count; ++i) {
90+ playlist.push(trackRepeater.itemAt(i).sourceUrl);
91+ }
88− DashAudioPlayer.playSource(sourceUrl);
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+ height: titleLabel.height
106+
107+ Label {
108+ id: titleLabel
109+ objectName: "titleLabel"
110+ anchors {
111+ left: parent.left;
112+ right: iconLoader.right
113+ rightMargin: iconLoader.width > 0 ? units.gu(0.5) : 0
114+ }
105− elide: Text.ElideRight
115+ elide: Text.ElideRight
106− font.weight: Font.Normal
116+ font.weight: Font.Normal
107− fontSize: "large"
117+ fontSize: "large"
108− wrapMode: Text.Wrap
118+ wrapMode: Text.Wrap
109− color: headerRoot.fontColor
119+ color: headerRoot.fontColor
110− text: headerRoot.title
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
69− // preview to be requested, when that is not what we want.
70− //root.triggered(widgetId, "purchaseCancelled", source);
68+ 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();
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;
95+ transfer.items = createExportedItems(url);
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+ onPressedChanged: {
95+ if (editMode) {
94− onPressed: if (editMode) root.handlePressed(starArea);
96+ if (pressed) root.handlePressed(starArea.__mouseArea);
95− onReleased: if (editMode) root.handleReleased(starArea);
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−
52− // Supported values so far:
53− // "phone", "tablet" or "desktop"
54− property string category: "phone"
54+ property string category: deviceConfigParser.category
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)
100+ spacing: units.gu(4)
101+
102+ Label {
103+ id: text
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.")
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.")
88− color: "white"
105+ color: "white"
89− horizontalAlignment: Text.AlignHCenter
106+ width: parent.width
90− verticalAlignment: Text.AlignVCenter
91− fontSize: "x-large"
107+ fontSize: "large"
92− wrapMode: Text.Wrap
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
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 {
58− MouseArea { anchors.fill: parent; }
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+4−3
@@ -175,7 +175,7 @@ FocusScope {
175 event.accepted = true;
175 event.accepted = true;
176 break;
176 break;
177 case Qt.Key_Escape:
177 case Qt.Key_Escape:
178− panel.highlightIndex = -2
178+ panel.highlightIndex = -2;
179 // Falling through intentionally
179 // Falling through intentionally
180 case Qt.Key_Enter:
180 case Qt.Key_Enter:
181 case Qt.Key_Return:
181 case Qt.Key_Return:
@@ -186,6 +186,7 @@ FocusScope {
186 launcherApplicationSelected(LauncherModel.get(panel.highlightIndex).appId);
186 launcherApplicationSelected(LauncherModel.get(panel.highlightIndex).appId);
187 }
187 }
188 root.hide();
188 root.hide();
189+ panel.highlightIndex = -2
189 event.accepted = true;
190 event.accepted = true;
190 root.focus = false;
191 root.focus = false;
191 }
192 }
@@ -328,8 +329,8 @@ FocusScope {
328 rotation: -90
329 rotation: -90
329 anchors.centerIn: parent
330 anchors.centerIn: parent
330 gradient: Gradient {
331 gradient: Gradient {
331− 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)}
332− 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)}
333 }
334 }
334 }
335 }
335 }
336 }
qml/Launcher/LauncherDelegate.qml+1
@@ -149,6 +149,7 @@ Item {
149 sourceSize.width: iconShape.width
149 sourceSize.width: iconShape.width
150 sourceSize.height: iconShape.height
150 sourceSize.height: iconShape.height
151 source: root.iconName
151 source: root.iconName
152+ cache: false // see lpbug#1543290 why no cache
152 }
153 }
153 }
154 }
154
155
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+1−1
@@ -140,7 +140,7 @@ Item {
140 }
140 }
141
141
142 Component.onCompleted: {
142 Component.onCompleted: {
143− theme.name = "Ubuntu.Components.Themes.SuruGradient"
143+ theme.name = "Ubuntu.Components.Themes.SuruDark"
144 if (ApplicationManager.count > 0) {
144 if (ApplicationManager.count > 0) {
145 ApplicationManager.focusApplication(ApplicationManager.get(0).appId);
145 ApplicationManager.focusApplication(ApplicationManager.get(0).appId);
146 }
146 }
qml/Stages/AbstractStage.qml+1−1
@@ -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
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"
261+ SequentialAnimation {
262+ ParallelAnimation {
229− PropertyAction { target: spreadDelegate; properties: "y,height,width,angle,z,itemScale,itemScaleOriginY,visible" }
263+ PropertyAction { target: spreadDelegate; properties: "y,height,width,angle,z,itemScale,itemScaleOriginY,visible" }
230− PropertyAction { target: clippedSpreadDelegate; properties: "anchors.topMargin" }
264+ PropertyAction { target: clippedSpreadDelegate; properties: "anchors.topMargin" }
231− PropertyAnimation {
265+ PropertyAnimation {
232− target: spreadDelegate; properties: "x"
266+ target: spreadDelegate; properties: "x"
233− from: root.width
267+ from: root.width
234− duration: spreadContainer.animateIn ? UbuntuAnimation.FastDuration :0
268+ duration: spreadContainer.animateIn ? UbuntuAnimation.FastDuration :0
235− easing: UbuntuAnimation.StandardEasing
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"
282+ anchors {
283+ left: parent.left
243− anchors { left: parent.left; top: clippedSpreadDelegate.bottom; topMargin: units.gu(5) }
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 {
504− target: blurLayer; properties: "saturation,blurRadius";
553+ UbuntuNumberAnimation { target: blurLayer; properties: "saturation,blurRadius"; duration: UbuntuAnimation.SnapDuration }
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+19−23
@@ -377,6 +377,19 @@ AbstractStage {
377 ApplicationManager.focusApplication(appId);
377 ApplicationManager.focusApplication(appId);
378 }
378 }
379
379
380+ function playFocusAnimation() {
381+ focusAnimation.start()
382+ }
383+
384+ UbuntuNumberAnimation {
385+ id: focusAnimation
386+ target: appDelegate
387+ property: "scale"
388+ from: 0.98
389+ to: 1
390+ duration: UbuntuAnimation.SnapDuration
391+ }
392+
380 states: [
393 states: [
381 State {
394 State {
382 name: "fullscreen"; when: decoratedWindow.fullscreen
395 name: "fullscreen"; when: decoratedWindow.fullscreen
@@ -468,7 +481,7 @@ AbstractStage {
468 target: appDelegate
481 target: appDelegate
469 property: "z"
482 property: "z"
470 value: ApplicationManager.count + 1
483 value: ApplicationManager.count + 1
471− when: index == spread.highlightedIndex && blurLayer.ready
484+ when: index == spread.highlightedIndex && spread.ready
472 }
485 }
473
486
474 WindowResizeArea {
487 WindowResizeArea {
@@ -504,27 +517,6 @@ AbstractStage {
504 }
517 }
505 }
518 }
506
519
507− BlurLayer {
508− id: blurLayer
509− anchors.fill: appContainer
510− source: appContainer
511− visible: false
512− }
513−
514− Rectangle {
515− id: spreadBackground
516− anchors.fill: parent
517− color: "#55000000"
518− visible: false
519− }
520−
521− MouseArea {
522− id: eventEater
523− anchors.fill: parent
524− visible: spreadBackground.visible
525− enabled: visible
526− }
527−
528 EdgeBarrier {
520 EdgeBarrier {
529 id: edgeBarrier
521 id: edgeBarrier
530
522
@@ -540,7 +532,7 @@ AbstractStage {
540 rotation: 90
532 rotation: 90
541 anchors.centerIn: parent
533 anchors.centerIn: parent
542 gradient: Gradient {
534 gradient: Gradient {
543− GradientStop { position: 0.0; color: Qt.rgba(0.16,0.16,0.16,0.7)}
535+ GradientStop { position: 0.0; color: Qt.rgba(0.16,0.16,0.16,0.5)}
544 GradientStop { position: 1.0; color: Qt.rgba(0.16,0.16,0.16,0)}
536 GradientStop { position: 1.0; color: Qt.rgba(0.16,0.16,0.16,0)}
545 }
537 }
546 }
538 }
@@ -562,5 +554,9 @@ AbstractStage {
562 workspace: appContainer
554 workspace: appContainer
563 focus: state == "altTab"
555 focus: state == "altTab"
564 altTabPressed: root.altTabPressed
556 altTabPressed: root.altTabPressed
557+
558+ onPlayFocusAnimation: {
559+ appRepeater.itemAt(index).playFocusAnimation();
560+ }
565 }
561 }
566}
562}
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
@@ -651,4 +700,29 @@ AbstractStage {
651 }
700 }
652 }
701 }
653 }
702 }
703+
704+ EdgeBarrier {
705+ id: edgeBarrier
706+
707+ // NB: it does its own positioning according to the specified edge
708+ edge: Qt.RightEdge
709+
710+ onPassed: {
711+ spreadView.snapToSpread();
712+ }
713+ material: Component {
714+ Item {
715+ Rectangle {
716+ width: parent.height
717+ height: parent.width
718+ rotation: 90
719+ anchors.centerIn: parent
720+ gradient: Gradient {
721+ GradientStop { position: 0.0; color: Qt.rgba(0.16,0.16,0.16,0.7)}
722+ GradientStop { position: 1.0; color: Qt.rgba(0.16,0.16,0.16,0)}
723+ }
724+ }
725+ }
726+ }
727+ }
654}
728}
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+20
@@ -43,6 +43,7 @@ FocusScope {
43 property int shellOrientationAngle
43 property int shellOrientationAngle
44 property int shellOrientation
44 property int shellOrientation
45 property QtObject orientations
45 property QtObject orientations
46+ property bool highlightShown: false
46
47
47 function matchShellOrientation() {
48 function matchShellOrientation() {
48 if (!root.application)
49 if (!root.application)
@@ -261,6 +262,25 @@ FocusScope {
261 Behavior on opacity { UbuntuNumberAnimation {} }
262 Behavior on opacity { UbuntuNumberAnimation {} }
262 }
263 }
263
264
265+ Rectangle {
266+ id: selectionHighlight
267+ objectName: "selectionHighlight"
268+ anchors.fill: appWindow
269+ anchors.margins: -units.gu(1)
270+ color: "white"
271+ opacity: root.highlightShown ? 0.15 : 0
272+ antialiasing: true
273+ visible: opacity > 0
274+ }
275+
276+ Rectangle {
277+ anchors { left: selectionHighlight.left; right: selectionHighlight.right; bottom: selectionHighlight.bottom; }
278+ height: units.dp(2)
279+ color: UbuntuColors.orange
280+ visible: root.highlightShown
281+ antialiasing: true
282+ }
283+
264 ApplicationWindow {
284 ApplicationWindow {
265 id: appWindow
285 id: appWindow
266 objectName: application ? "appWindow_" + application.appId : "appWindow_null"
286 objectName: application ? "appWindow_" + application.appId : "appWindow_null"
qml/Stages/TabletStage.qml+83−3
@@ -70,6 +70,12 @@ 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: mainApp ? mainApp.supportedOrientations
@@ -102,6 +108,38 @@ AbstractStage {
102 priv.oldInverseProgress = inverseProgress;
108 priv.oldInverseProgress = inverseProgress;
103 }
109 }
104
110
111+ onAltTabPressedChanged: {
112+ if (!spreadEnabled) {
113+ return;
114+ }
115+ if (altTabPressed) {
116+ priv.highlightIndex = Math.min(spreadRepeater.count - 1, 1);
117+ spreadView.snapToSpread();
118+ } else {
119+ for (var i = 0; i < spreadRepeater.count; i++) {
120+ if (spreadRepeater.itemAt(i).zIndex === priv.highlightIndex) {
121+ spreadView.snapTo(i);
122+ return;
123+ }
124+ }
125+ }
126+ }
127+
128+ FocusScope {
129+ focus: root.altTabPressed
130+
131+ Keys.onPressed: {
132+ switch (event.key) {
133+ case Qt.Key_Tab:
134+ priv.highlightIndex = (priv.highlightIndex + 1) % spreadRepeater.count
135+ break;
136+ case Qt.Key_Backtab:
137+ priv.highlightIndex = (priv.highlightIndex + spreadRepeater.count - 1) % spreadRepeater.count
138+ break;
139+ }
140+ }
141+ }
142+
105 QtObject {
143 QtObject {
106 id: priv
144 id: priv
107 objectName: "stagesPriv"
145 objectName: "stagesPriv"
@@ -130,6 +168,8 @@ AbstractStage {
130
168
131 property int oldInverseProgress: 0
169 property int oldInverseProgress: 0
132
170
171+ property int highlightIndex: 0
172+
133 onFocusedAppIdChanged: {
173 onFocusedAppIdChanged: {
134 if (priv.focusedAppId.length > 0) {
174 if (priv.focusedAppId.length > 0) {
135 var focusedApp = ApplicationManager.findApplication(focusedAppId);
175 var focusedApp = ApplicationManager.findApplication(focusedAppId);
@@ -185,6 +225,10 @@ AbstractStage {
185 }
225 }
186 return oneWayFlick;
226 return oneWayFlick;
187 }
227 }
228+
229+ onHighlightIndexChanged: {
230+ spreadView.contentX = highlightIndex * spreadView.contentWidth / (spreadRepeater.count + 2)
231+ }
188 }
232 }
189
233
190 Connections {
234 Connections {
@@ -391,11 +435,16 @@ AbstractStage {
391 } else if (shiftedContentX < phase1Width) {
435 } else if (shiftedContentX < phase1Width) {
392 snapTo(1);
436 snapTo(1);
393 } else {
437 } else {
394− // Add 1 pixel to make sure we definitely hit positionMarker4 even with rounding errors of the animation.
438+ snapToSpread();
395− snapAnimation.targetContentX = spreadView.width * spreadView.positionMarker4 + 1 - shift;
396− snapAnimation.start();
397 }
439 }
398 }
440 }
441+
442+ function snapToSpread() {
443+ // Add 1 pixel to make sure we definitely hit positionMarker4 even with rounding errors of the animation.
444+ snapAnimation.targetContentX = (spreadView.width * spreadView.positionMarker4) + 1 - shift;
445+ snapAnimation.start();
446+ }
447+
399 function snapTo(index) {
448 function snapTo(index) {
400 spreadView.selectedIndex = index;
449 spreadView.selectedIndex = index;
401 snapAnimation.targetContentX = -shift;
450 snapAnimation.targetContentX = -shift;
@@ -481,6 +530,11 @@ AbstractStage {
481 }
530 }
482 }
531 }
483
532
533+ Behavior on contentX {
534+ enabled: root.altTabPressed
535+ UbuntuNumberAnimation {}
536+ }
537+
484 MouseArea {
538 MouseArea {
485 id: spreadRow
539 id: spreadRow
486 x: spreadView.contentX
540 x: spreadView.contentX
@@ -611,6 +665,7 @@ AbstractStage {
611 dragOffset: !isDash && model.appId == priv.mainStageAppId && root.inverseProgress > 0 && spreadView.phase === 0 ? root.inverseProgress : 0
665 dragOffset: !isDash && model.appId == priv.mainStageAppId && root.inverseProgress > 0 && spreadView.phase === 0 ? root.inverseProgress : 0
612 application: ApplicationManager.get(index)
666 application: ApplicationManager.get(index)
613 closeable: !isDash
667 closeable: !isDash
668+ highlightShown: root.altTabPressed && priv.highlightIndex == zIndex
614
669
615 readonly property bool wantsMainStage: model.stage == ApplicationInfoInterface.MainStage
670 readonly property bool wantsMainStage: model.stage == ApplicationInfoInterface.MainStage
616
671
@@ -805,4 +860,29 @@ AbstractStage {
805 }
860 }
806 }
861 }
807 }
862 }
863+
864+ EdgeBarrier {
865+ id: edgeBarrier
866+
867+ // NB: it does its own positioning according to the specified edge
868+ edge: Qt.RightEdge
869+
870+ onPassed: {
871+ spreadView.snapToSpread();
872+ }
873+ material: Component {
874+ Item {
875+ Rectangle {
876+ width: parent.height
877+ height: parent.width
878+ rotation: 90
879+ anchors.centerIn: parent
880+ gradient: Gradient {
881+ GradientStop { position: 0.0; color: Qt.rgba(0.16,0.16,0.16,0.7)}
882+ GradientStop { position: 1.0; color: Qt.rgba(0.16,0.16,0.16,0)}
883+ }
884+ }
885+ }
886+ }
887+ }
808}
888}
qml/Stages/WindowResizeArea.qml+1−1
@@ -301,7 +301,7 @@ MouseArea {
301 }
301 }
302
302
303 if (d.topBorder) {
303 if (d.topBorder) {
304− var newTargetY = d.startY + deltaY;
304+ var newTargetY = Math.max(d.startY + deltaY, PanelState.panelHeight); // disallow resizing up past Panel
305 var bottomBorderY = target.y + target.height;
305 var bottomBorderY = target.y + target.height;
306 if (bottomBorderY > newTargetY + d.minimumHeight) {
306 if (bottomBorderY > newTargetY + d.minimumHeight) {
307 if (bottomBorderY < newTargetY + d.maximumHeight) {
307 if (bottomBorderY < newTargetY + d.maximumHeight) {
qml/Wizard/StackButton.qml+1−1
@@ -32,7 +32,7 @@ AbstractButton {
32 anchors.verticalCenter: parent.verticalCenter
32 anchors.verticalCenter: parent.verticalCenter
33 anchors.left: parent.left
33 anchors.left: parent.left
34 anchors.right: parent.right
34 anchors.right: parent.right
35− color: enabled ? theme.palette.selected.backgroundText : Qt.darker(theme.palette.selected.backgroundText, 1.5)
35+ color: enabled ? theme.palette.normal.backgroundText : Qt.darker(theme.palette.normal.backgroundText, 1.5)
36 text: {
36 text: {
37 if (backArrow) {
37 if (backArrow) {
38 // Translators: This is the arrow for "Back" buttons
38 // Translators: This is the arrow for "Back" buttons
src/CMakeLists.txt+1−1
@@ -33,7 +33,7 @@ endif()
33
33
34pkg_check_modules(ANDROID_PROPERTIES REQUIRED libandroid-properties)
34pkg_check_modules(ANDROID_PROPERTIES REQUIRED libandroid-properties)
35add_executable(${SHELL_APP} ${SOURCE_FILES})
35add_executable(${SHELL_APP} ${SOURCE_FILES})
36−qt5_use_modules(${SHELL_APP} Gui Qml Quick Test)
36+qt5_use_modules(${SHELL_APP} DBus Gui Qml Quick Test)
37
37
38if (NOT "${ANDROID_PROPERTIES_INCLUDE_DIRS}" STREQUAL "")
38if (NOT "${ANDROID_PROPERTIES_INCLUDE_DIRS}" STREQUAL "")
39 set_target_properties(${SHELL_APP} PROPERTIES INCLUDE_DIRECTORIES ${ANDROID_PROPERTIES_INCLUDE_DIRS})
39 set_target_properties(${SHELL_APP} PROPERTIES INCLUDE_DIRECTORIES ${ANDROID_PROPERTIES_INCLUDE_DIRS})
src/CachingNetworkManagerFactory.cpp+2−2
@@ -24,12 +24,12 @@
24CachingNetworkAccessManager::CachingNetworkAccessManager(QObject *parent)
24CachingNetworkAccessManager::CachingNetworkAccessManager(QObject *parent)
25 : QNetworkAccessManager(parent)
25 : QNetworkAccessManager(parent)
26{
26{
27− m_networkingStatus = new ubuntu::connectivity::NetworkingStatus(this);
27+ m_networkingStatus = new connectivityqt::Connectivity(QDBusConnection::sessionBus(), this);
28}
28}
29
29
30QNetworkReply* CachingNetworkAccessManager::createRequest(Operation op, const QNetworkRequest &request, QIODevice *outgoingData)
30QNetworkReply* CachingNetworkAccessManager::createRequest(Operation op, const QNetworkRequest &request, QIODevice *outgoingData)
31{
31{
32− if (m_networkingStatus->status() != ubuntu::connectivity::NetworkingStatus::Status::Online) {
32+ if (m_networkingStatus->status() != connectivityqt::Connectivity::Status::Online) {
33 qDebug() << "Not connected to the internet. Request for" << request.url().toString() << "will be served only from the cache.";
33 qDebug() << "Not connected to the internet. Request for" << request.url().toString() << "will be served only from the cache.";
34 QNetworkRequest req(request);
34 QNetworkRequest req(request);
35 req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysCache);
35 req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysCache);
src/CachingNetworkManagerFactory.h+3−2
@@ -21,10 +21,11 @@
21#include <QQmlNetworkAccessManagerFactory>
21#include <QQmlNetworkAccessManagerFactory>
22#include <QNetworkAccessManager>
22#include <QNetworkAccessManager>
23
23
24−#include <ubuntu/connectivity/networking-status.h>
24+#include <connectivityqt/connectivity.h>
25
25
26class CachingNetworkAccessManager : public QNetworkAccessManager
26class CachingNetworkAccessManager : public QNetworkAccessManager
27{
27{
28+Q_OBJECT
28public:
29public:
29 CachingNetworkAccessManager(QObject *parent = 0);
30 CachingNetworkAccessManager(QObject *parent = 0);
30
31
@@ -32,7 +33,7 @@ protected:
32 QNetworkReply* createRequest(Operation op, const QNetworkRequest &req, QIODevice *outgoingData = 0) override;
33 QNetworkReply* createRequest(Operation op, const QNetworkRequest &req, QIODevice *outgoingData = 0) override;
33
34
34private:
35private:
35− ubuntu::connectivity::NetworkingStatus* m_networkingStatus;
36+ connectivityqt::Connectivity* m_networkingStatus;
36};
37};
37
38
38class CachingNetworkManagerFactory : public QQmlNetworkAccessManagerFactory
39class CachingNetworkManagerFactory : public QQmlNetworkAccessManagerFactory
src/Dash/CMakeLists.txt+1−1
@@ -9,7 +9,7 @@ endif()
9
9
10add_executable(unity8-dash ${DASH_SRCS})
10add_executable(unity8-dash ${DASH_SRCS})
11
11
12−qt5_use_modules(unity8-dash Gui Qml Quick Test)
12+qt5_use_modules(unity8-dash DBus Gui Qml Quick Test)
13
13
14# For it to find libUbuntuGestures.so, needed by Ubuntu.Gestures QML module.
14# For it to find libUbuntuGestures.so, needed by Ubuntu.Gestures QML module.
15set_target_properties(unity8-dash PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${SHELL_PRIVATE_LIBDIR}")
15set_target_properties(unity8-dash PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${SHELL_PRIVATE_LIBDIR}")
tests/autopilot/unity8/dash.py+1−2
@@ -211,8 +211,7 @@ class GenericScopeView(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
211 self.get_root_instance().select_single(
211 self.get_root_instance().select_single(
212 objectName='processingIndicator').visible.wait_for(False)
212 objectName='processingIndicator').visible.wait_for(False)
213 return preview_list.select_single(
213 return preview_list.select_single(
214− Preview, objectName='preview{}'.format(
214+ Preview, objectName='preview')
215− preview_list.initialIndex))
216
215
217 @autopilot_logging.log_action(logger.debug)
216 @autopilot_logging.log_action(logger.debug)
218 def click_scope_item(self, category, title, press_duration=0.10):
217 def click_scope_item(self, category, title, press_duration=0.10):
tests/autopilot/unity8/shell/tests/test_helpers.py−2
@@ -117,13 +117,11 @@ class GenericScopeViewHelperTestCase(tests.DashBaseTestCase):
117 def test_open_preview(self):
117 def test_open_preview(self):
118 preview = self.generic_scope.open_preview('0', 'Title.0.0')
118 preview = self.generic_scope.open_preview('0', 'Title.0.0')
119 self.assertIsInstance(preview, dash_helpers.Preview)
119 self.assertIsInstance(preview, dash_helpers.Preview)
120− self.assertTrue(preview.isCurrent)
121
120
122 def test_open_preview_of_non_visible_item(self):
121 def test_open_preview_of_non_visible_item(self):
123 """Open an item that requires swiping to make it visible."""
122 """Open an item that requires swiping to make it visible."""
124 preview = self.generic_scope.open_preview('2', 'Title.2.0')
123 preview = self.generic_scope.open_preview('2', 'Title.2.0')
125 self.assertIsInstance(preview, dash_helpers.Preview)
124 self.assertIsInstance(preview, dash_helpers.Preview)
126− self.assertTrue(preview.isCurrent)
127
125
128
126
129class DashAppsHelperTestCase(tests.DashBaseTestCase):
127class DashAppsHelperTestCase(tests.DashBaseTestCase):
tests/mocks/IntegratedLightDM/liblightdm/UsersModel.cpp−14
@@ -47,20 +47,6 @@ UsersModel::UsersModel(QObject *parent) :
47 roles[HasMessagesRole] = "hasMessages";
47 roles[HasMessagesRole] = "hasMessages";
48 roles[ImagePathRole] = "imagePath";
48 roles[ImagePathRole] = "imagePath";
49 setRoleNames(roles);
49 setRoleNames(roles);
50−
51− // Now modify our mock user backgrounds
52− QDir bgdir = QDir("/usr/share/demo-assets/shell/backgrounds/");
53− QStringList backgrounds = bgdir.entryList(QDir::Files | QDir::NoDotAndDotDot);
54−
55− for (int i = 0, j = 0; i < d->entries.size(); i++) {
56− Entry &entry = d->entries[i];
57− if (entry.background.isNull() && !backgrounds.isEmpty()) {
58− entry.background = bgdir.filePath(backgrounds[j++]);
59− if (j >= backgrounds.length()) {
60− j = 0;
61− }
62− }
63− }
64}
50}
65
51
66UsersModel::~UsersModel()
52UsersModel::~UsersModel()
tests/mocks/Unity/Application/MirSurface.cpp+6−2
@@ -17,13 +17,15 @@
17#include "MirSurface.h"
17#include "MirSurface.h"
18
18
19#include <QDebug>
19#include <QDebug>
20+#include <QQmlEngine>
20
21
21MirSurface::MirSurface(const QString& name,
22MirSurface::MirSurface(const QString& name,
22 Mir::Type type,
23 Mir::Type type,
23 Mir::State state,
24 Mir::State state,
24 const QUrl& screenshot,
25 const QUrl& screenshot,
25− const QUrl &qmlFilePath)
26+ const QUrl &qmlFilePath,
27+ QObject *parent)
26− : unity::shell::application::MirSurfaceInterface(nullptr)
28+ : unity::shell::application::MirSurfaceInterface(parent)
27 , m_name(name)
29 , m_name(name)
28 , m_type(type)
30 , m_type(type)
29 , m_state(state)
31 , m_state(state)
@@ -38,6 +40,8 @@ MirSurface::MirSurface(const QString& name,
38 , m_slowToResize(false)
40 , m_slowToResize(false)
39{
41{
40// qDebug() << "MirSurface::MirSurface() " << name;
42// qDebug() << "MirSurface::MirSurface() " << name;
43+ QQmlEngine::setObjectOwnership(this, QQmlEngine::CppOwnership);
44+
41 m_delayedResizeTimer.setInterval(600);
45 m_delayedResizeTimer.setInterval(600);
42 m_delayedResizeTimer.setSingleShot(true);
46 m_delayedResizeTimer.setSingleShot(true);
43 connect(&m_delayedResizeTimer, &QTimer::timeout, this, &MirSurface::applyDelayedResize);
47 connect(&m_delayedResizeTimer, &QTimer::timeout, this, &MirSurface::applyDelayedResize);
tests/mocks/Unity/Application/MirSurface.h+2−1
@@ -41,7 +41,8 @@ public:
41 Mir::Type type,
41 Mir::Type type,
42 Mir::State state,
42 Mir::State state,
43 const QUrl& screenshot,
43 const QUrl& screenshot,
44− const QUrl &qmlFilePath = QUrl());
44+ const QUrl &qmlFilePath = QUrl(),
45+ QObject *parent = nullptr);
45 virtual ~MirSurface();
46 virtual ~MirSurface();
46
47
47 ////
48 ////
tests/mocks/Unity/Application/MirSurfaceItem.cpp+2−5
@@ -20,6 +20,7 @@
20
20
21#include <QGuiApplication>
21#include <QGuiApplication>
22#include <QQuickView>
22#include <QQuickView>
23+#include <QQmlContext>
23#include <QQmlProperty>
24#include <QQmlProperty>
24#include <QQmlEngine>
25#include <QQmlEngine>
25#include <QString>
26#include <QString>
@@ -220,10 +221,6 @@ void MirSurfaceItem::setSurface(MirSurfaceInterface* surface)
220 connect(m_qmlSurface, &MirSurface::liveChanged, this, &MirSurfaceItem::liveChanged);
221 connect(m_qmlSurface, &MirSurface::liveChanged, this, &MirSurfaceItem::liveChanged);
221 connect(m_qmlSurface, &MirSurface::stateChanged, this, &MirSurfaceItem::surfaceStateChanged);
222 connect(m_qmlSurface, &MirSurface::stateChanged, this, &MirSurfaceItem::surfaceStateChanged);
222
223
223− // The assumptions I make here really should hold.
224− QQuickView *quickView =
225− qobject_cast<QQuickView*>(QGuiApplication::topLevelWindows()[0]);
226−
227 QUrl qmlComponentFilePath;
224 QUrl qmlComponentFilePath;
228 if (!m_qmlSurface->qmlFilePath().isEmpty()) {
225 if (!m_qmlSurface->qmlFilePath().isEmpty()) {
229 qmlComponentFilePath = m_qmlSurface->qmlFilePath();
226 qmlComponentFilePath = m_qmlSurface->qmlFilePath();
@@ -231,7 +228,7 @@ void MirSurfaceItem::setSurface(MirSurfaceInterface* surface)
231 qmlComponentFilePath = QUrl("qrc:///Unity/Application/MirSurfaceItem.qml");
228 qmlComponentFilePath = QUrl("qrc:///Unity/Application/MirSurfaceItem.qml");
232 }
229 }
233
230
234− m_qmlContentComponent = new QQmlComponent(quickView->engine(), qmlComponentFilePath);
231+ m_qmlContentComponent = new QQmlComponent(QQmlEngine::contextForObject(parent())->engine(), qmlComponentFilePath);
235
232
236 switch (m_qmlContentComponent->status()) {
233 switch (m_qmlContentComponent->status()) {
237 case QQmlComponent::Ready:
234 case QQmlComponent::Ready:
tests/mocks/Unity/Application/SurfaceManager.cpp+8−9
@@ -34,6 +34,13 @@ SurfaceManager::SurfaceManager(QObject *parent) :
34 QObject(parent)
34 QObject(parent)
35 , m_virtualKeyboard(nullptr)
35 , m_virtualKeyboard(nullptr)
36{
36{
37+ m_virtualKeyboard = new VirtualKeyboard(this);
38+ connect(m_virtualKeyboard, &QObject::destroyed, this, [this](QObject *obj) {
39+ MirSurface* surface = qobject_cast<MirSurface*>(obj);
40+ m_virtualKeyboard = nullptr;
41+ Q_EMIT inputMethodSurfaceChanged();
42+ Q_EMIT surfaceDestroyed(surface);
43+ });
37}
44}
38
45
39MirSurface *SurfaceManager::createSurface(const QString& name,
46MirSurface *SurfaceManager::createSurface(const QString& name,
@@ -58,16 +65,8 @@ MirSurface *SurfaceManager::createSurface(const QString& name,
58 return surface;
65 return surface;
59}
66}
60
67
61−MirSurface *SurfaceManager::inputMethodSurface()
68+MirSurface *SurfaceManager::inputMethodSurface() const
62{
69{
63− if (!m_virtualKeyboard) {
64− m_virtualKeyboard = new VirtualKeyboard;
65− connect(m_virtualKeyboard, &QObject::destroyed, this, [this](QObject *obj) {
66− MirSurface* surface = qobject_cast<MirSurface*>(obj);
67− Q_EMIT surfaceDestroyed(surface);
68− });
69− Q_EMIT surfaceCreated(m_virtualKeyboard);
70− }
71 return m_virtualKeyboard;
70 return m_virtualKeyboard;
72}
71}
73
72
tests/mocks/Unity/Application/SurfaceManager.h+3−3
@@ -25,7 +25,7 @@
25class SurfaceManager : public QObject
25class SurfaceManager : public QObject
26{
26{
27 Q_OBJECT
27 Q_OBJECT
28−
28+ Q_PROPERTY(MirSurface* inputMethodSurface READ inputMethodSurface NOTIFY inputMethodSurfaceChanged)
29 Q_PROPERTY(int newSurfaceMinimumWidth READ newSurfaceMinimumWidth WRITE setNewSurfaceMinimumWidth NOTIFY newSurfaceMinimumWidthChanged)
29 Q_PROPERTY(int newSurfaceMinimumWidth READ newSurfaceMinimumWidth WRITE setNewSurfaceMinimumWidth NOTIFY newSurfaceMinimumWidthChanged)
30 Q_PROPERTY(int newSurfaceMaximumWidth READ newSurfaceMaximumWidth WRITE setNewSurfaceMaximumWidth NOTIFY newSurfaceMaximumWidthChanged)
30 Q_PROPERTY(int newSurfaceMaximumWidth READ newSurfaceMaximumWidth WRITE setNewSurfaceMaximumWidth NOTIFY newSurfaceMaximumWidthChanged)
31 Q_PROPERTY(int newSurfaceMinimumHeight READ newSurfaceMinimumHeight WRITE setNewSurfaceMinimumHeight NOTIFY newSurfaceMinimumHeightChanged)
31 Q_PROPERTY(int newSurfaceMinimumHeight READ newSurfaceMinimumHeight WRITE setNewSurfaceMinimumHeight NOTIFY newSurfaceMinimumHeightChanged)
@@ -43,8 +43,7 @@ public:
43 Mir::State state,
43 Mir::State state,
44 const QUrl& screenshot);
44 const QUrl& screenshot);
45
45
46− // To be used in the tests
47− Q_INVOKABLE MirSurface* inputMethodSurface();
46+ MirSurface* inputMethodSurface() const;
48
47
49 int newSurfaceMinimumWidth() const { return m_newSurfaceMinimumWidth; }
48 int newSurfaceMinimumWidth() const { return m_newSurfaceMinimumWidth; }
50 void setNewSurfaceMinimumWidth(int value);
49 void setNewSurfaceMinimumWidth(int value);
@@ -65,6 +64,7 @@ public:
65 void setNewSurfaceHeightIncrement(int);
64 void setNewSurfaceHeightIncrement(int);
66
65
67Q_SIGNALS:
66Q_SIGNALS:
67+ void inputMethodSurfaceChanged();
68 void countChanged();
68 void countChanged();
69 void surfaceCreated(MirSurface *surface);
69 void surfaceCreated(MirSurface *surface);
70 void surfaceDestroyed(MirSurface*surface);
70 void surfaceDestroyed(MirSurface*surface);
tests/mocks/Unity/Application/VirtualKeyboard.cpp+3−2
@@ -22,12 +22,13 @@
22
22
23#include <QDebug>
23#include <QDebug>
24
24
25−VirtualKeyboard::VirtualKeyboard()
25+VirtualKeyboard::VirtualKeyboard(QObject *parent)
26 : MirSurface("input-method",
26 : MirSurface("input-method",
27 Mir::InputMethodType,
27 Mir::InputMethodType,
28 Mir::MinimizedState,
28 Mir::MinimizedState,
29 QUrl("qrc:///Unity/Application/vkb_portrait.png"),
29 QUrl("qrc:///Unity/Application/vkb_portrait.png"),
30− QUrl("qrc:///Unity/Application/VirtualKeyboard.qml"))
30+ QUrl("qrc:///Unity/Application/VirtualKeyboard.qml"),
31+ parent)
31{
32{
32}
33}
33
34
tests/mocks/Unity/Application/VirtualKeyboard.h+1−1
@@ -25,7 +25,7 @@ class VirtualKeyboard : public MirSurface
25{
25{
26 Q_OBJECT
26 Q_OBJECT
27public:
27public:
28− explicit VirtualKeyboard();
28+ explicit VirtualKeyboard(QObject *parent = nullptr);
29 ~VirtualKeyboard();
29 ~VirtualKeyboard();
30};
30};
31
31
tests/mocks/Unity/Application/plugin.cpp+2−1
@@ -78,8 +78,9 @@ void FakeUnityApplicationQmlPlugin::registerTypes(const char *uri)
78 qmlRegisterUncreatableType<unity::shell::application::ApplicationInfoInterface>(uri, 0, 1, "ApplicationInfoInterface", "Abstract interface. Cannot be created in QML");
78 qmlRegisterUncreatableType<unity::shell::application::ApplicationInfoInterface>(uri, 0, 1, "ApplicationInfoInterface", "Abstract interface. Cannot be created in QML");
79 qmlRegisterUncreatableType<Session>(uri, 0, 1, "Session", "Session can't be instantiated from QML");
79 qmlRegisterUncreatableType<Session>(uri, 0, 1, "Session", "Session can't be instantiated from QML");
80 qmlRegisterUncreatableType<MirSurface>(uri, 0, 1, "MirSurface", "MirSurface can't be instantiated from QML");
80 qmlRegisterUncreatableType<MirSurface>(uri, 0, 1, "MirSurface", "MirSurface can't be instantiated from QML");
81+ qmlRegisterUncreatableType<unity::shell::application::MirSurfaceInterface>(
82+ uri, 0, 1, "MirSurface", "MirSurface can't be instantiated from QML");
81 qmlRegisterType<MirSurfaceItem>(uri, 0, 1, "MirSurfaceItem");
83 qmlRegisterType<MirSurfaceItem>(uri, 0, 1, "MirSurfaceItem");
82−
83 qmlRegisterType<ApplicationInfo>(uri, 0, 1, "ApplicationInfo");
84 qmlRegisterType<ApplicationInfo>(uri, 0, 1, "ApplicationInfo");
84
85
85 qmlRegisterSingletonType<ApplicationManager>(uri, 0, 1, "ApplicationManager", applicationManagerSingleton);
86 qmlRegisterSingletonType<ApplicationManager>(uri, 0, 1, "ApplicationManager", applicationManagerSingleton);
tests/mocks/Unity/CMakeLists.txt+1−3
@@ -8,7 +8,7 @@ add_subdirectory(DashCommunicator)
8add_subdirectory(Screens)
8add_subdirectory(Screens)
9
9
10pkg_search_module(GOBJECT gobject-2.0 REQUIRED)
10pkg_search_module(GOBJECT gobject-2.0 REQUIRED)
11−pkg_check_modules(SCOPES_API REQUIRED unity-shell-scopes=9)
11+pkg_check_modules(SCOPES_API REQUIRED unity-shell-scopes=10)
12
12
13include_directories(
13include_directories(
14 ${CMAKE_CURRENT_BINARY_DIR}
14 ${CMAKE_CURRENT_BINARY_DIR}
@@ -28,13 +28,11 @@ set(UnityQML_SOURCES
28 fake_navigation.cpp
28 fake_navigation.cpp
29 fake_resultsmodel.cpp
29 fake_resultsmodel.cpp
30 fake_previewmodel.cpp
30 fake_previewmodel.cpp
31− fake_previewstack.cpp
32 fake_previewwidgetmodel.cpp
31 fake_previewwidgetmodel.cpp
33 fake_unity_plugin.cpp
32 fake_unity_plugin.cpp
34 ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/CategoriesInterface.h
33 ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/CategoriesInterface.h
35 ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/NavigationInterface.h
34 ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/NavigationInterface.h
36 ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/PreviewModelInterface.h
35 ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/PreviewModelInterface.h
37− ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/PreviewStackInterface.h
38 ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/PreviewWidgetModelInterface.h
36 ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/PreviewWidgetModelInterface.h
39 ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/ResultsModelInterface.h
37 ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/ResultsModelInterface.h
40 ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/ScopeInterface.h
38 ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/ScopeInterface.h
tests/mocks/Unity/Unity.qmltypes+33−50
@@ -1,4 +1,4 @@
1−import QtQuick.tooling 1.1
1+import QtQuick.tooling 1.2
2
2
3// This file describes the plugin-supplied types contained in the library.
3// This file describes the plugin-supplied types contained in the library.
4// It is used for QML tooling purposes only.
4// It is used for QML tooling purposes only.
@@ -7,17 +7,10 @@ import QtQuick.tooling 1.1
7// 'qmlplugindump -notrelocatable Unity 0.2 tests/mocks'
7// 'qmlplugindump -notrelocatable Unity 0.2 tests/mocks'
8
8
9Module {
9Module {
10+ dependencies: ["QtQuick 2.4", "Unity.Indicators 0.1"]
10 Component {
11 Component {
11 name: "Categories"
12 name: "Categories"
12 prototype: "unity::shell::scopes::CategoriesInterface"
13 prototype: "unity::shell::scopes::CategoriesInterface"
13− Method {
14− name: "addSpecialCategory"
15− Parameter { name: "categoryId"; type: "string" }
16− Parameter { name: "name"; type: "string" }
17− Parameter { name: "icon"; type: "string" }
18− Parameter { name: "rawTemplate"; type: "string" }
19− Parameter { name: "countObject"; type: "QObject"; isPointer: true }
20− }
21 Method {
14 Method {
22 name: "overrideCategoryJson"
15 name: "overrideCategoryJson"
23 type: "bool"
16 type: "bool"
@@ -60,18 +53,6 @@ Module {
60 Parameter { type: "bool" }
53 Parameter { type: "bool" }
61 }
54 }
62 }
55 }
63− Component {
64− name: "PreviewStack"
65− prototype: "unity::shell::scopes::PreviewStackInterface"
66− exports: ["Unity/PreviewStack 0.2"]
67− isCreatable: false
68− exportMetaObjectRevisions: [0]
69− Method {
70− name: "getPreviewModel"
71− type: "unity::shell::scopes::PreviewModelInterface*"
72− Parameter { name: "index"; type: "int" }
73− }
74− }
75 Component {
56 Component {
76 name: "PreviewWidgetModel"
57 name: "PreviewWidgetModel"
77 prototype: "unity::shell::scopes::PreviewWidgetModelInterface"
58 prototype: "unity::shell::scopes::PreviewWidgetModelInterface"
@@ -95,11 +76,11 @@ Module {
95 prototype: "unity::shell::scopes::ScopeInterface"
76 prototype: "unity::shell::scopes::ScopeInterface"
96 exports: ["Unity/MockScope 0.2"]
77 exports: ["Unity/MockScope 0.2"]
97 exportMetaObjectRevisions: [0]
78 exportMetaObjectRevisions: [0]
79+ Signal { name: "refreshed" }
98 Signal {
80 Signal {
99− name: "performQuery"
81+ name: "queryPerformed"
100 Parameter { name: "query"; type: "string" }
82 Parameter { name: "query"; type: "string" }
101 }
83 }
102− Signal { name: "refreshed" }
103 Method {
84 Method {
104 name: "setId"
85 name: "setId"
105 Parameter { name: "id"; type: "string" }
86 Parameter { name: "id"; type: "string" }
@@ -115,11 +96,13 @@ Module {
115 Method {
96 Method {
116 name: "activate"
97 name: "activate"
117 Parameter { name: "result"; type: "QVariant" }
98 Parameter { name: "result"; type: "QVariant" }
99+ Parameter { name: "categoryId"; type: "string" }
118 }
100 }
119 Method {
101 Method {
120 name: "preview"
102 name: "preview"
121− type: "PreviewStack*"
103+ type: "PreviewModel*"
122 Parameter { name: "result"; type: "QVariant" }
104 Parameter { name: "result"; type: "QVariant" }
105+ Parameter { name: "categoryId"; type: "string" }
123 }
106 }
124 Method { name: "cancelActivation" }
107 Method { name: "cancelActivation" }
125 Method {
108 Method {
@@ -142,6 +125,12 @@ Module {
142 Parameter { name: "isAltNavigation"; type: "bool" }
125 Parameter { name: "isAltNavigation"; type: "bool" }
143 }
126 }
144 Method { name: "refresh" }
127 Method { name: "refresh" }
128+ Method {
129+ name: "activateAction"
130+ Parameter { name: "result"; type: "QVariant" }
131+ Parameter { name: "categoryId"; type: "string" }
132+ Parameter { name: "actionId"; type: "string" }
133+ }
145 }
134 }
146 Component {
135 Component {
147 name: "Scopes"
136 name: "Scopes"
@@ -181,6 +170,10 @@ Module {
181 Parameter { name: "scopeId"; type: "string" }
170 Parameter { name: "scopeId"; type: "string" }
182 Parameter { name: "index"; type: "int" }
171 Parameter { name: "index"; type: "int" }
183 }
172 }
173+ Method {
174+ name: "closeScope"
175+ Parameter { name: "scope"; type: "unity::shell::scopes::ScopeInterface"; isPointer: true }
176+ }
184 Method {
177 Method {
185 name: "getScopeFromAll"
178 name: "getScopeFromAll"
186 type: "Scope*"
179 type: "Scope*"
@@ -214,14 +207,6 @@ Module {
214 Parameter { name: "categoryId"; type: "string" }
207 Parameter { name: "categoryId"; type: "string" }
215 Parameter { name: "json"; type: "string" }
208 Parameter { name: "json"; type: "string" }
216 }
209 }
217− Method {
218− name: "addSpecialCategory"
219− Parameter { name: "categoryId"; type: "string" }
220− Parameter { name: "name"; type: "string" }
221− Parameter { name: "icon"; type: "string" }
222− Parameter { name: "rawTemplate"; type: "string" }
223− Parameter { name: "countObject"; type: "QObject"; isPointer: true }
224− }
225 }
210 }
226 Component {
211 Component {
227 name: "unity::shell::scopes::NavigationInterface"
212 name: "unity::shell::scopes::NavigationInterface"
@@ -270,22 +255,6 @@ Module {
270 Parameter { type: "QVariantMap" }
255 Parameter { type: "QVariantMap" }
271 }
256 }
272 }
257 }
273− Component {
274− name: "unity::shell::scopes::PreviewStackInterface"
275− prototype: "QAbstractListModel"
276− Enum {
277− name: "Roles"
278− values: {
279− "RolePreviewModel": 0
280− }
281− }
282− Property { name: "widgetColumnCount"; type: "int" }
283− Method {
284− name: "getPreviewModel"
285− type: "unity::shell::scopes::PreviewModelInterface*"
286− Parameter { name: "index"; type: "int" }
287− }
288− }
289 Component {
258 Component {
290 name: "unity::shell::scopes::PreviewWidgetModelInterface"
259 name: "unity::shell::scopes::PreviewWidgetModelInterface"
291 prototype: "QAbstractListModel"
260 prototype: "QAbstractListModel"
@@ -316,7 +285,8 @@ Module {
316 "RoleSummary": 9,
285 "RoleSummary": 9,
317 "RoleAttributes": 10,
286 "RoleAttributes": 10,
318 "RoleBackground": 11,
287 "RoleBackground": 11,
319− "RoleOverlayColor": 12
288+ "RoleOverlayColor": 12,
289+ "RoleQuickPreviewData": 13
320 }
290 }
321 }
291 }
322 Property { name: "categoryId"; type: "string" }
292 Property { name: "categoryId"; type: "string" }
@@ -343,6 +313,7 @@ Module {
343 Property { name: "description"; type: "string"; isReadonly: true }
313 Property { name: "description"; type: "string"; isReadonly: true }
344 Property { name: "searchHint"; type: "string"; isReadonly: true }
314 Property { name: "searchHint"; type: "string"; isReadonly: true }
345 Property { name: "searchInProgress"; type: "bool"; isReadonly: true }
315 Property { name: "searchInProgress"; type: "bool"; isReadonly: true }
316+ Property { name: "activationInProgress"; type: "bool"; isReadonly: true }
346 Property { name: "favorite"; type: "bool" }
317 Property { name: "favorite"; type: "bool" }
347 Property { name: "shortcut"; type: "string"; isReadonly: true }
318 Property { name: "shortcut"; type: "string"; isReadonly: true }
348 Property {
319 Property {
@@ -393,11 +364,13 @@ Module {
393 Method {
364 Method {
394 name: "activate"
365 name: "activate"
395 Parameter { name: "result"; type: "QVariant" }
366 Parameter { name: "result"; type: "QVariant" }
367+ Parameter { name: "categoryId"; type: "string" }
396 }
368 }
397 Method {
369 Method {
398 name: "preview"
370 name: "preview"
399− type: "unity::shell::scopes::PreviewStackInterface*"
371+ type: "unity::shell::scopes::PreviewModelInterface*"
400 Parameter { name: "result"; type: "QVariant" }
372 Parameter { name: "result"; type: "QVariant" }
373+ Parameter { name: "categoryId"; type: "string" }
401 }
374 }
402 Method { name: "cancelActivation" }
375 Method { name: "cancelActivation" }
403 Method {
376 Method {
@@ -424,6 +397,12 @@ Module {
424 Parameter { name: "cannedQuery"; type: "string" }
397 Parameter { name: "cannedQuery"; type: "string" }
425 }
398 }
426 Method { name: "refresh" }
399 Method { name: "refresh" }
400+ Method {
401+ name: "activateAction"
402+ Parameter { name: "result"; type: "QVariant" }
403+ Parameter { name: "categoryId"; type: "string" }
404+ Parameter { name: "actionId"; type: "string" }
405+ }
427 }
406 }
428 Component {
407 Component {
429 name: "unity::shell::scopes::ScopesInterface"
408 name: "unity::shell::scopes::ScopesInterface"
@@ -464,6 +443,10 @@ Module {
464 Parameter { name: "scopeId"; type: "string" }
443 Parameter { name: "scopeId"; type: "string" }
465 Parameter { name: "index"; type: "int" }
444 Parameter { name: "index"; type: "int" }
466 }
445 }
446+ Method {
447+ name: "closeScope"
448+ Parameter { name: "scope"; type: "unity::shell::scopes::ScopeInterface"; isPointer: true }
449+ }
467 }
450 }
468 Component {
451 Component {
469 name: "unity::shell::scopes::SettingsModelInterface"
452 name: "unity::shell::scopes::SettingsModelInterface"
tests/mocks/Unity/fake_previewstack.cppdeleted−68
@@ -1,68 +0,0 @@
1−/*
2− * Copyright (C) 2014 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−// self
18−#include "fake_previewstack.h"
19−
20−// local
21−#include "fake_previewmodel.h"
22−#include "fake_scope.h"
23−
24−PreviewStack::PreviewStack(Scope *scope)
25− : unity::shell::scopes::PreviewStackInterface(nullptr)
26−{
27− m_previews << new PreviewModel(this, scope);
28−}
29−
30−PreviewStack::~PreviewStack()
31−{
32−}
33−
34−void PreviewStack::setWidgetColumnCount(int columnCount)
35−{
36− if (columnCount != 1) {
37− qFatal("PreviewStack::setWidgetColumnCount != 1 not implemented");
38− }
39−}
40−
41−int PreviewStack::widgetColumnCount() const
42−{
43− return 1;
44−}
45−
46−int PreviewStack::rowCount(const QModelIndex&) const
47−{
48− return m_previews.size();
49−}
50−
51−unity::shell::scopes::PreviewModelInterface* PreviewStack::getPreviewModel(int index) const
52−{
53− if (index >= m_previews.size()) {
54− return nullptr;
55− }
56−
57− return m_previews.at(index);
58−}
59−
60−QVariant PreviewStack::data(const QModelIndex& index, int role) const
61−{
62− switch (role) {
63− case RolePreviewModel:
64− return QVariant::fromValue(m_previews.at(index.row()));
65− default:
66− return QVariant();
67− }
68−}
tests/mocks/Unity/fake_previewstack.hdeleted−52
@@ -1,52 +0,0 @@
1−/*
2− * Copyright (C) 2014 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−
18−#ifndef FAKE_PREVIEWSTACK_H
19−#define FAKE_PREVIEWSTACK_H
20−
21−#include <unity/shell/scopes/PreviewStackInterface.h>
22−
23−#include <QSharedPointer>
24−#include <QVariantMap>
25−
26−class PreviewModel;
27−
28−class Scope;
29−
30−class PreviewStack : public unity::shell::scopes::PreviewStackInterface
31−{
32− Q_OBJECT
33−
34−public:
35− explicit PreviewStack(Scope* scope = 0);
36− virtual ~PreviewStack();
37−
38− QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
39− int rowCount(const QModelIndex& parent = QModelIndex()) const override;
40−
41− Q_INVOKABLE unity::shell::scopes::PreviewModelInterface* getPreviewModel(int index) const override;
42−
43− void setWidgetColumnCount(int columnCount) override;
44− int widgetColumnCount() const override;
45−
46−private:
47− QList<PreviewModel*> m_previews;
48−};
49−
50−Q_DECLARE_METATYPE(PreviewStack*)
51−
52−#endif // FAKE_PREVIEWSTACK_H
tests/mocks/Unity/fake_scope.cpp+7−2
@@ -87,6 +87,11 @@ bool Scope::searchInProgress() const
87 return m_searching;
87 return m_searching;
88}
88}
89
89
90+bool Scope::activationInProgress() const
91+{
92+ return false;
93+}
94+
90bool Scope::favorite() const
95bool Scope::favorite() const
91{
96{
92 return m_favorite;
97 return m_favorite;
@@ -194,14 +199,14 @@ void Scope::activate(QVariant const& result, QString const& categoryId)
194 }
199 }
195}
200}
196
201
197−PreviewStack* Scope::preview(QVariant const& result, QString const& /*categoryId*/)
202+PreviewModel* Scope::preview(QVariant const& result, QString const& /*categoryId*/)
198{
203{
199 Q_UNUSED(result);
204 Q_UNUSED(result);
200
205
201 if (m_returnNullPreview) {
206 if (m_returnNullPreview) {
202 return nullptr;
207 return nullptr;
203 } else {
208 } else {
204− return new PreviewStack(this);
209+ return new PreviewModel(this, this);
205 }
210 }
206}
211}
207
212
tests/mocks/Unity/fake_scope.h+3−2
@@ -20,7 +20,7 @@
20#include <unity/shell/scopes/ScopeInterface.h>
20#include <unity/shell/scopes/ScopeInterface.h>
21
21
22#include "fake_categories.h"
22#include "fake_categories.h"
23−#include "fake_previewstack.h"
23+#include "fake_previewmodel.h"
24
24
25#include <QTimer>
25#include <QTimer>
26
26
@@ -42,6 +42,7 @@ public:
42 QString searchHint() const override;
42 QString searchHint() const override;
43 QString shortcut() const override;
43 QString shortcut() const override;
44 bool searchInProgress() const override;
44 bool searchInProgress() const override;
45+ bool activationInProgress() const override;
45 bool favorite() const override;
46 bool favorite() const override;
46 unity::shell::scopes::CategoriesInterface* categories() const override;
47 unity::shell::scopes::CategoriesInterface* categories() const override;
47 QString searchQuery() const override;
48 QString searchQuery() const override;
@@ -61,7 +62,7 @@ public:
61 Q_INVOKABLE void setSearchInProgress(const bool inProg); // This is not invokable in the Interface, here for testing benefits
62 Q_INVOKABLE void setSearchInProgress(const bool inProg); // This is not invokable in the Interface, here for testing benefits
62
63
63 Q_INVOKABLE void activate(QVariant const& result, QString const& categoryId) override;
64 Q_INVOKABLE void activate(QVariant const& result, QString const& categoryId) override;
64− Q_INVOKABLE PreviewStack* preview(QVariant const& result, QString const& categoryId) override;
65+ Q_INVOKABLE PreviewModel* preview(QVariant const& result, QString const& categoryId) override;
65 Q_INVOKABLE void cancelActivation() override;
66 Q_INVOKABLE void cancelActivation() override;
66 Q_INVOKABLE void closeScope(unity::shell::scopes::ScopeInterface* scope) override;
67 Q_INVOKABLE void closeScope(unity::shell::scopes::ScopeInterface* scope) override;
67
68
tests/mocks/Unity/fake_unity_plugin.cpp+1−2
@@ -47,10 +47,9 @@ void FakeUnityPlugin::registerTypes(const char *uri)
47 qmlRegisterUncreatableType<unity::shell::scopes::SettingsModelInterface>(uri, 0, 2, "SettingsModel", "Can't create SettingsModel object in QML.");
47 qmlRegisterUncreatableType<unity::shell::scopes::SettingsModelInterface>(uri, 0, 2, "SettingsModel", "Can't create SettingsModel object in QML.");
48 qmlRegisterUncreatableType<unity::shell::scopes::NavigationInterface>(uri, 0, 2, "Navigation", "Can't create Navigation object in QML.");
48 qmlRegisterUncreatableType<unity::shell::scopes::NavigationInterface>(uri, 0, 2, "Navigation", "Can't create Navigation object in QML.");
49 qmlRegisterUncreatableType<unity::shell::scopes::CategoriesInterface>(uri, 0, 2, "Categories", "Can't create Categories object in QML.");
49 qmlRegisterUncreatableType<unity::shell::scopes::CategoriesInterface>(uri, 0, 2, "Categories", "Can't create Categories object in QML.");
50− qmlRegisterUncreatableType<unity::shell::scopes::PreviewModelInterface>(uri, 0, 2, "PreviewModel", "Can't create new PreviewModel in QML. Get them from PreviewStack instance.");
50+ qmlRegisterUncreatableType<unity::shell::scopes::PreviewModelInterface>(uri, 0, 2, "PreviewModel", "Can't create new PreviewModel in QML. Get them from Scope instance.");
51 qmlRegisterUncreatableType<ResultsModel>(uri, 0, 2, "ResultsModel", "Can't create ResultsModel object in QML.");
51 qmlRegisterUncreatableType<ResultsModel>(uri, 0, 2, "ResultsModel", "Can't create ResultsModel object in QML.");
52 qmlRegisterType<ResultsModel>(uri, 0, 2, "FakeResultsModel");
52 qmlRegisterType<ResultsModel>(uri, 0, 2, "FakeResultsModel");
53 qmlRegisterType<PreviewModel>(uri, 0, 2, "FakePreviewModel");
53 qmlRegisterType<PreviewModel>(uri, 0, 2, "FakePreviewModel");
54 qmlRegisterUncreatableType<PreviewWidgetModel>(uri, 0, 2, "PreviewWidgetModel", "Can't create new PreviewWidgetModel in QML. Get them from PreviewModel instance.");
54 qmlRegisterUncreatableType<PreviewWidgetModel>(uri, 0, 2, "PreviewWidgetModel", "Can't create new PreviewWidgetModel in QML. Get them from PreviewModel instance.");
55− qmlRegisterUncreatableType<PreviewStack>(uri, 0, 2, "PreviewStack", "Can't create new PreviewStack in QML. Get them from Scope instance.");
56}
55}
tests/mocks/Utils/CMakeLists.txt+1
@@ -18,6 +18,7 @@ set(QMLPLUGIN_SRC
18 ${CMAKE_SOURCE_DIR}/plugins/Utils/inputwatcher.cpp
18 ${CMAKE_SOURCE_DIR}/plugins/Utils/inputwatcher.cpp
19 ${CMAKE_SOURCE_DIR}/plugins/Utils/applicationsfiltermodel.cpp
19 ${CMAKE_SOURCE_DIR}/plugins/Utils/applicationsfiltermodel.cpp
20 ${CMAKE_SOURCE_DIR}/plugins/Utils/inputeventgenerator.cpp
20 ${CMAKE_SOURCE_DIR}/plugins/Utils/inputeventgenerator.cpp
21+ ${CMAKE_SOURCE_DIR}/plugins/Utils/deviceconfigparser.cpp
21 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationManagerInterface.h
22 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationManagerInterface.h
22 constants.cpp
23 constants.cpp
23 plugin.cpp
24 plugin.cpp
tests/mocks/Utils/plugin.cpp+2
@@ -37,6 +37,7 @@
37#include <easingcurve.h>
37#include <easingcurve.h>
38#include <applicationsfiltermodel.h>
38#include <applicationsfiltermodel.h>
39#include <inputeventgenerator.h>
39#include <inputeventgenerator.h>
40+#include <deviceconfigparser.h>
40
41
41static QObject *createWindowStateStorage(QQmlEngine *engine, QJSEngine *scriptEngine)
42static QObject *createWindowStateStorage(QQmlEngine *engine, QJSEngine *scriptEngine)
42{
43{
@@ -67,6 +68,7 @@ void FakeUtilsPlugin::registerTypes(const char *uri)
67 qmlRegisterType<ActiveFocusLogger>(uri, 0, 1, "ActiveFocusLogger");
68 qmlRegisterType<ActiveFocusLogger>(uri, 0, 1, "ActiveFocusLogger");
68 qmlRegisterType<ApplicationsFilterModel>(uri, 0, 1, "ApplicationsFilterModel");
69 qmlRegisterType<ApplicationsFilterModel>(uri, 0, 1, "ApplicationsFilterModel");
69 qmlRegisterType<InputEventGenerator>(uri, 0, 1, "InputEventGenerator");
70 qmlRegisterType<InputEventGenerator>(uri, 0, 1, "InputEventGenerator");
71+ qmlRegisterType<DeviceConfigParser>(uri, 0, 1, "DeviceConfigParser");
70}
72}
71
73
72void FakeUtilsPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
74void FakeUtilsPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
tests/plugins/AccountsService/CMakeLists.txt+5
@@ -10,11 +10,13 @@ macro(make_dbus_class NAME INTERFACE)
10endmacro(make_dbus_class)
10endmacro(make_dbus_class)
11
11
12make_dbus_class(Accounts org.freedesktop.Accounts)
12make_dbus_class(Accounts org.freedesktop.Accounts)
13+make_dbus_class(Input com.ubuntu.AccountsService.Input)
13make_dbus_class(Properties org.freedesktop.DBus.Properties)
14make_dbus_class(Properties org.freedesktop.DBus.Properties)
14make_dbus_class(SecurityPrivacy com.ubuntu.touch.AccountsService.SecurityPrivacy)
15make_dbus_class(SecurityPrivacy com.ubuntu.touch.AccountsService.SecurityPrivacy)
15make_dbus_class(Location com.ubuntu.location.providers.here.AccountsService)
16make_dbus_class(Location com.ubuntu.location.providers.here.AccountsService)
16make_dbus_class(AccountsUser org.freedesktop.Accounts.User)
17make_dbus_class(AccountsUser org.freedesktop.Accounts.User)
17make_dbus_class(AccountsPrivate com.canonical.unity.AccountsService.Private)
18make_dbus_class(AccountsPrivate com.canonical.unity.AccountsService.Private)
19+make_dbus_class(UscInput com.canonical.Unity.Input)
18
20
19include_directories(
21include_directories(
20 ${CMAKE_CURRENT_BINARY_DIR}
22 ${CMAKE_CURRENT_BINARY_DIR}
@@ -27,12 +29,15 @@ add_executable(mock-server
27 ${CMAKE_CURRENT_BINARY_DIR}/AccountsAdaptor.cpp
29 ${CMAKE_CURRENT_BINARY_DIR}/AccountsAdaptor.cpp
28 ${CMAKE_CURRENT_BINARY_DIR}/AccountsPrivateAdaptor.cpp
30 ${CMAKE_CURRENT_BINARY_DIR}/AccountsPrivateAdaptor.cpp
29 ${CMAKE_CURRENT_BINARY_DIR}/AccountsUserAdaptor.cpp
31 ${CMAKE_CURRENT_BINARY_DIR}/AccountsUserAdaptor.cpp
32+ ${CMAKE_CURRENT_BINARY_DIR}/InputAdaptor.cpp
30 ${CMAKE_CURRENT_BINARY_DIR}/PropertiesAdaptor.cpp
33 ${CMAKE_CURRENT_BINARY_DIR}/PropertiesAdaptor.cpp
31 ${CMAKE_CURRENT_BINARY_DIR}/LocationAdaptor.cpp
34 ${CMAKE_CURRENT_BINARY_DIR}/LocationAdaptor.cpp
32 ${CMAKE_CURRENT_BINARY_DIR}/SecurityPrivacyAdaptor.cpp
35 ${CMAKE_CURRENT_BINARY_DIR}/SecurityPrivacyAdaptor.cpp
36+ ${CMAKE_CURRENT_BINARY_DIR}/UscInputAdaptor.cpp
33 server.cpp
37 server.cpp
34 AccountsServer.cpp
38 AccountsServer.cpp
35 PropertiesServer.cpp
39 PropertiesServer.cpp
40+ UscServer.cpp
36 )
41 )
37qt5_use_modules(mock-server Core DBus)
42qt5_use_modules(mock-server Core DBus)
38
43
tests/plugins/AccountsService/PropertiesServer.cpp+16−4
@@ -32,9 +32,9 @@ PropertiesServer::PropertiesServer(QObject *parent)
32 Reset();
32 Reset();
33}
33}
34
34
35−QDBusVariant PropertiesServer::Get(const QString &interface, const QString &property)
35+QDBusVariant PropertiesServer::Get(const QString &interface, const QString &property) const
36{
36{
37− if (m_properties[interface].contains(property)) {
37+ if (m_properties.contains(interface) && m_properties[interface].contains(property)) {
38 return QDBusVariant(m_properties[interface][property]);
38 return QDBusVariant(m_properties[interface][property]);
39 } else {
39 } else {
40 sendErrorReply(QDBusError::InvalidArgs, "Bad interface or property");
40 sendErrorReply(QDBusError::InvalidArgs, "Bad interface or property");
@@ -42,6 +42,16 @@ QDBusVariant PropertiesServer::Get(const QString &interface, const QString &prop
42 }
42 }
43}
43}
44
44
45+QVariantMap PropertiesServer::GetAll(const QString &interface) const
46+{
47+ if (m_properties.contains(interface)) {
48+ return m_properties[interface];
49+ } else {
50+ sendErrorReply(QDBusError::InvalidArgs, "Bad interface");
51+ return QVariantMap();
52+ }
53+}
54+
45void PropertiesServer::Set(const QString &interface, const QString &property, const QDBusVariant &variant)
55void PropertiesServer::Set(const QString &interface, const QString &property, const QDBusVariant &variant)
46{
56{
47 QVariant newValue = variant.variant();
57 QVariant newValue = variant.variant();
@@ -57,8 +67,8 @@ void PropertiesServer::Set(const QString &interface, const QString &property, co
57
67
58 oldValue = newValue;
68 oldValue = newValue;
59
69
60− // Special case for Background file.
70+ // Special case for user properties.
61− if (interface == "org.freedesktop.Accounts.User" && property == "BackgroundFile") {
71+ if (interface == "org.freedesktop.Accounts.User") {
62 Q_EMIT Changed();
72 Q_EMIT Changed();
63 } else {
73 } else {
64 QVariantMap propertyChanges;
74 QVariantMap propertyChanges;
@@ -82,10 +92,12 @@ void PropertiesServer::Reset()
82 m_properties["com.canonical.unity.AccountsService"]["LauncherItems"] = QVariant::fromValue(QList<QVariantMap>());
92 m_properties["com.canonical.unity.AccountsService"]["LauncherItems"] = QVariant::fromValue(QList<QVariantMap>());
83 m_properties["com.canonical.unity.AccountsService.Private"]["FailedLogins"] = 0;
93 m_properties["com.canonical.unity.AccountsService.Private"]["FailedLogins"] = 0;
84 m_properties["com.ubuntu.touch.AccountsService.SecurityPrivacy"]["StatsWelcomeScreen"] = true;
94 m_properties["com.ubuntu.touch.AccountsService.SecurityPrivacy"]["StatsWelcomeScreen"] = true;
95+ m_properties["com.ubuntu.AccountsService.Input"]["MousePrimaryButton"] = "right";
85 m_properties["com.ubuntu.AccountsService.SecurityPrivacy"]["EnableLauncherWhileLocked"] = true;
96 m_properties["com.ubuntu.AccountsService.SecurityPrivacy"]["EnableLauncherWhileLocked"] = true;
86 m_properties["com.ubuntu.AccountsService.SecurityPrivacy"]["EnableIndicatorsWhileLocked"] = true;
97 m_properties["com.ubuntu.AccountsService.SecurityPrivacy"]["EnableIndicatorsWhileLocked"] = true;
87 m_properties["com.ubuntu.AccountsService.SecurityPrivacy"]["PasswordDisplayHint"] = AccountsService::Keyboard;
98 m_properties["com.ubuntu.AccountsService.SecurityPrivacy"]["PasswordDisplayHint"] = AccountsService::Keyboard;
88 m_properties["com.ubuntu.location.providers.here.AccountsService"]["LicenseAccepted"] = false;
99 m_properties["com.ubuntu.location.providers.here.AccountsService"]["LicenseAccepted"] = false;
89 m_properties["com.ubuntu.location.providers.here.AccountsService"]["LicenseBasePath"] = "";
100 m_properties["com.ubuntu.location.providers.here.AccountsService"]["LicenseBasePath"] = "";
90 m_properties["org.freedesktop.Accounts.User"]["BackgroundFile"] = "";
101 m_properties["org.freedesktop.Accounts.User"]["BackgroundFile"] = "";
102+ m_properties["org.freedesktop.Accounts.User"]["RealName"] = "";
91}
103}
tests/plugins/AccountsService/PropertiesServer.h+2−1
@@ -34,7 +34,8 @@ public:
34 explicit PropertiesServer(QObject *parent = 0);
34 explicit PropertiesServer(QObject *parent = 0);
35
35
36public Q_SLOTS:
36public Q_SLOTS:
37− QDBusVariant Get(const QString &interface, const QString &property);
37+ QDBusVariant Get(const QString &interface, const QString &property) const;
38+ QVariantMap GetAll(const QString &interface) const;
38 void Set(const QString &interface, const QString &property, const QDBusVariant &variant);
39 void Set(const QString &interface, const QString &property, const QDBusVariant &variant);
39
40
40 // mock only.
41 // mock only.
tests/plugins/AccountsService/UscServer.cppnew file+28
@@ -0,0 +1,28 @@
1+/*
2+ * Copyright 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
14+ * version 3 along with this program. If not, see
15+ * <http://www.gnu.org/licenses/>
16+ */
17+
18+#include "UscServer.h"
19+
20+UscServer::UscServer(QObject *parent)
21+ : QObject(parent)
22+{
23+}
24+
25+void UscServer::setMousePrimaryButton(int button)
26+{
27+ Q_EMIT setMousePrimaryButtonCalled(button);
28+}
tests/plugins/AccountsService/UscServer.hnew file+39
@@ -0,0 +1,39 @@
1+/*
2+ * Copyright 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
14+ * version 3 along with this program. If not, see
15+ * <http://www.gnu.org/licenses/>
16+ */
17+
18+#ifndef UNITY_USCSERVER_H
19+#define UNITY_USCSERVER_H
20+
21+#include <QDBusContext>
22+#include <QObject>
23+
24+class UscServer: public QObject, protected QDBusContext
25+{
26+ Q_OBJECT
27+
28+public:
29+ explicit UscServer(QObject *parent = nullptr);
30+
31+public Q_SLOTS:
32+ void setMousePrimaryButton(int button);
33+
34+Q_SIGNALS:
35+ // mock only.
36+ void setMousePrimaryButtonCalled(int button);
37+};
38+
39+#endif
tests/plugins/AccountsService/client.cpp+63−9
@@ -42,7 +42,16 @@ public:
42 : QObject(parent)
42 : QObject(parent)
43 , m_userInterface(nullptr)
43 , m_userInterface(nullptr)
44 , m_spy(this, &AccountsServiceTest::propertiesChanged)
44 , m_spy(this, &AccountsServiceTest::propertiesChanged)
45+ , m_mousePrimaryButtonSpy(this, &AccountsServiceTest::setMousePrimaryButtonCalled)
45 {
46 {
47+ m_uscInputInterface = new QDBusInterface("com.canonical.Unity.Input",
48+ "/com/canonical/Unity/Input",
49+ "com.canonical.Unity.Input",
50+ QDBusConnection::sessionBus(),
51+ this);
52+
53+ QObject::connect(m_uscInputInterface, SIGNAL(setMousePrimaryButtonCalled(int)),
54+ this, SIGNAL(setMousePrimaryButtonCalled(int)));
46 }
55 }
47
56
48private Q_SLOTS:
57private Q_SLOTS:
@@ -71,6 +80,7 @@ private Q_SLOTS:
71
80
72 delete m_userInterface;
81 delete m_userInterface;
73 m_spy.clear();
82 m_spy.clear();
83+ m_mousePrimaryButtonSpy.clear();
74 }
84 }
75
85
76 void testInvalids()
86 void testInvalids()
@@ -107,7 +117,7 @@ private Q_SLOTS:
107 QCOMPARE(session.hereEnabled(), true);
117 QCOMPARE(session.hereEnabled(), true);
108 }
118 }
109
119
110− void testAsynchornousChangeForDemoEdges()
120+ void testAsynchronousChangeForDemoEdges()
111 {
121 {
112 AccountsService session(this, QTest::currentTestFunction());
122 AccountsService session(this, QTest::currentTestFunction());
113
123
@@ -119,7 +129,7 @@ private Q_SLOTS:
119 QTRY_COMPARE(session.demoEdges(), true);
129 QTRY_COMPARE(session.demoEdges(), true);
120 }
130 }
121
131
122− void testAsynchornousChangeForFailedLogins()
132+ void testAsynchronousChangeForFailedLogins()
123 {
133 {
124 AccountsService session(this, QTest::currentTestFunction());
134 AccountsService session(this, QTest::currentTestFunction());
125
135
@@ -131,7 +141,7 @@ private Q_SLOTS:
131 QTRY_COMPARE(session.failedLogins(), (uint)5);
141 QTRY_COMPARE(session.failedLogins(), (uint)5);
132 }
142 }
133
143
134− void testAsynchornousChangeForStatsWelcomeScreen()
144+ void testAsynchronousChangeForStatsWelcomeScreen()
135 {
145 {
136 AccountsService session(this, QTest::currentTestFunction());
146 AccountsService session(this, QTest::currentTestFunction());
137
147
@@ -143,7 +153,7 @@ private Q_SLOTS:
143 QTRY_COMPARE(session.statsWelcomeScreen(), false);
153 QTRY_COMPARE(session.statsWelcomeScreen(), false);
144 }
154 }
145
155
146− void testAsynchornousChangeForStatsEnableLauncherWhileLocked()
156+ void testAsynchronousChangeForEnableLauncherWhileLocked()
147 {
157 {
148 AccountsService session(this, QTest::currentTestFunction());
158 AccountsService session(this, QTest::currentTestFunction());
149
159
@@ -155,7 +165,7 @@ private Q_SLOTS:
155 QTRY_COMPARE(session.enableLauncherWhileLocked(), false);
165 QTRY_COMPARE(session.enableLauncherWhileLocked(), false);
156 }
166 }
157
167
158− void testAsynchornousChangeForStatsEnableIndicatorsWhileLocked()
168+ void testAsynchronousChangeForEnableIndicatorsWhileLocked()
159 {
169 {
160 AccountsService session(this, QTest::currentTestFunction());
170 AccountsService session(this, QTest::currentTestFunction());
161
171
@@ -167,7 +177,7 @@ private Q_SLOTS:
167 QTRY_COMPARE(session.enableIndicatorsWhileLocked(), false);
177 QTRY_COMPARE(session.enableIndicatorsWhileLocked(), false);
168 }
178 }
169
179
170− void testAsynchornousChangeForStatsPasswordDisplayHint()
180+ void testAsynchronousChangeForPasswordDisplayHint()
171 {
181 {
172 AccountsService session(this, QTest::currentTestFunction());
182 AccountsService session(this, QTest::currentTestFunction());
173
183
@@ -179,7 +189,7 @@ private Q_SLOTS:
179 QTRY_COMPARE(session.passwordDisplayHint(), AccountsService::Numeric);
189 QTRY_COMPARE(session.passwordDisplayHint(), AccountsService::Numeric);
180 }
190 }
181
191
182− void testAsynchornousChangeForStatsLicenseAccepted()
192+ void testAsynchronousChangeForLicenseAccepted()
183 {
193 {
184 AccountsService session(this, QTest::currentTestFunction());
194 AccountsService session(this, QTest::currentTestFunction());
185
195
@@ -191,7 +201,7 @@ private Q_SLOTS:
191 QTRY_COMPARE(session.hereEnabled(), true);
201 QTRY_COMPARE(session.hereEnabled(), true);
192 }
202 }
193
203
194− void testAsynchornousChangeForLicenseBasePath()
204+ void testAsynchronousChangeForLicenseBasePath()
195 {
205 {
196 AccountsService session(this, QTest::currentTestFunction());
206 AccountsService session(this, QTest::currentTestFunction());
197
207
@@ -203,7 +213,7 @@ private Q_SLOTS:
203 QTRY_COMPARE(session.hereLicensePath(), QString("/"));
213 QTRY_COMPARE(session.hereLicensePath(), QString("/"));
204 }
214 }
205
215
206− void testAsynchornousChangeForStatsBackgroundFile()
216+ void testAsynchronousChangeForBackgroundFile()
207 {
217 {
208 AccountsService session(this, QTest::currentTestFunction());
218 AccountsService session(this, QTest::currentTestFunction());
209
219
@@ -215,12 +225,56 @@ private Q_SLOTS:
215 QTRY_COMPARE(session.backgroundFile(), QString("/test/BackgroundFile"));
225 QTRY_COMPARE(session.backgroundFile(), QString("/test/BackgroundFile"));
216 }
226 }
217
227
228+ void testProxyOnStartup()
229+ {
230+ AccountsService session(this, QTest::currentTestFunction());
231+
232+ QTRY_COMPARE(m_mousePrimaryButtonSpy.count(), 1);
233+ QList<QVariant> arguments = m_mousePrimaryButtonSpy.takeFirst();
234+ QCOMPARE(arguments.at(0).toInt(), 1);
235+ }
236+
237+ void testProxyOnChange()
238+ {
239+ AccountsService session(this, QTest::currentTestFunction());
240+ QTRY_COMPARE(m_mousePrimaryButtonSpy.count(), 1);
241+ m_mousePrimaryButtonSpy.clear();
242+
243+ ASSERT_DBUS_CALL(m_userInterface->asyncCall("Set",
244+ "com.ubuntu.AccountsService.Input",
245+ "MousePrimaryButton",
246+ dbusVariant("left")));
247+
248+ QTRY_COMPARE(m_mousePrimaryButtonSpy.count(), 1);
249+ QList<QVariant> arguments = m_mousePrimaryButtonSpy.takeFirst();
250+ QCOMPARE(arguments.at(0).toInt(), 0);
251+ }
252+
253+ void testInvalidPrimaryButton()
254+ {
255+ AccountsService session(this, QTest::currentTestFunction());
256+ QTRY_COMPARE(m_mousePrimaryButtonSpy.count(), 1);
257+ m_mousePrimaryButtonSpy.clear();
258+
259+ ASSERT_DBUS_CALL(m_userInterface->asyncCall("Set",
260+ "com.ubuntu.AccountsService.Input",
261+ "MousePrimaryButton",
262+ dbusVariant("NOPE")));
263+
264+ QTRY_COMPARE(m_mousePrimaryButtonSpy.count(), 1);
265+ QList<QVariant> arguments = m_mousePrimaryButtonSpy.takeFirst();
266+ QCOMPARE(arguments.at(0).toInt(), 0);
267+ }
268+
218Q_SIGNALS:
269Q_SIGNALS:
219 void propertiesChanged(const QString &interface, const QVariantMap &changed, const QStringList &invalid);
270 void propertiesChanged(const QString &interface, const QVariantMap &changed, const QStringList &invalid);
271+ void setMousePrimaryButtonCalled(int button);
220
272
221private:
273private:
274+ QDBusInterface* m_uscInputInterface;
222 QDBusInterface* m_userInterface;
275 QDBusInterface* m_userInterface;
223 QSignalSpy m_spy;
276 QSignalSpy m_spy;
277+ QSignalSpy m_mousePrimaryButtonSpy;
224};
278};
225
279
226QTEST_MAIN(AccountsServiceTest)
280QTEST_MAIN(AccountsServiceTest)
tests/plugins/AccountsService/interfaces.xml+16
@@ -5,6 +5,11 @@
5 <arg name="property" type="s" direction="in" />
5 <arg name="property" type="s" direction="in" />
6 <arg name="value" type="v" direction="out" />
6 <arg name="value" type="v" direction="out" />
7 </method>
7 </method>
8+ <method name="GetAll">
9+ <annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="QVariantMap"/>
10+ <arg name="interface" type="s" direction="in" />
11+ <arg name="value" type="a{sv}" direction="out" />
12+ </method>
8 <method name="Set">
13 <method name="Set">
9 <arg name="interface" type="s" direction="in" />
14 <arg name="interface" type="s" direction="in" />
10 <arg name="property" type="s" direction="in" />
15 <arg name="property" type="s" direction="in" />
@@ -32,10 +37,21 @@
32 <arg name="success" type="b" direction="out" />
37 <arg name="success" type="b" direction="out" />
33 </method>
38 </method>
34 </interface>
39 </interface>
40+ <interface name="com.ubuntu.AccountsService.Input" />
35 <interface name="com.ubuntu.touch.AccountsService.SecurityPrivacy" />
41 <interface name="com.ubuntu.touch.AccountsService.SecurityPrivacy" />
36 <interface name="com.ubuntu.location.providers.here.AccountsService" />
42 <interface name="com.ubuntu.location.providers.here.AccountsService" />
37 <interface name="org.freedesktop.Accounts.User">
43 <interface name="org.freedesktop.Accounts.User">
38 <signal name="Changed" />
44 <signal name="Changed" />
39 </interface>
45 </interface>
40 <interface name="com.canonical.unity.AccountsService.Private" />
46 <interface name="com.canonical.unity.AccountsService.Private" />
47+
48+ <interface name="com.canonical.Unity.Input">
49+ <method name="setMousePrimaryButton">
50+ <arg name="button" type="i" direction="in" />
51+ </method>
52+ <!-- Just for testing -->
53+ <signal name="setMousePrimaryButtonCalled">
54+ <arg name="button" type="i" direction="out" />
55+ </signal>
56+ </interface>
41</node>
57</node>
tests/plugins/AccountsService/server.cpp+12
@@ -19,10 +19,13 @@
19
19
20#include "AccountsAdaptor.h"
20#include "AccountsAdaptor.h"
21#include "AccountsServer.h"
21#include "AccountsServer.h"
22+#include "InputAdaptor.h"
22#include "PropertiesServer.h"
23#include "PropertiesServer.h"
23#include "SecurityPrivacyAdaptor.h"
24#include "SecurityPrivacyAdaptor.h"
24#include "LocationAdaptor.h"
25#include "LocationAdaptor.h"
25#include "AccountsPrivateAdaptor.h"
26#include "AccountsPrivateAdaptor.h"
27+#include "UscInputAdaptor.h"
28+#include "UscServer.h"
26#include <QCoreApplication>
29#include <QCoreApplication>
27
30
28int main(int argc, char *argv[])
31int main(int argc, char *argv[])
@@ -31,11 +34,20 @@ int main(int argc, char *argv[])
31
34
32 auto accounts = new AccountsServer(&a);
35 auto accounts = new AccountsServer(&a);
33 new AccountsAdaptor(accounts);
36 new AccountsAdaptor(accounts);
37+ new InputAdaptor(accounts);
34 new SecurityPrivacyAdaptor(accounts);
38 new SecurityPrivacyAdaptor(accounts);
35 new LocationAdaptor(accounts);
39 new LocationAdaptor(accounts);
36 new AccountsPrivateAdaptor(accounts);
40 new AccountsPrivateAdaptor(accounts);
41+
42+ auto usc = new UscServer(&a);
43+ new UscInputAdaptor(usc);
44+
37 // We use the session bus for testing. The real plugin uses the system bus
45 // We use the session bus for testing. The real plugin uses the system bus
38 auto connection = QDBusConnection::sessionBus();
46 auto connection = QDBusConnection::sessionBus();
47+ if (!connection.registerObject("/com/canonical/Unity/Input", usc))
48+ return 1;
49+ if (!connection.registerService("com.canonical.Unity.Input"))
50+ return 1;
39 if (!connection.registerObject("/org/freedesktop/Accounts", accounts))
51 if (!connection.registerObject("/org/freedesktop/Accounts", accounts))
40 return 1;
52 return 1;
41 if (!connection.registerService("org.freedesktop.Accounts"))
53 if (!connection.registerService("org.freedesktop.Accounts"))
tests/plugins/Dash/cardcreator/1.res+4−6
@@ -5,12 +5,10 @@ AbstractButton {
5 property string backgroundShapeStyle: "inset";
5 property string backgroundShapeStyle: "inset";
6 property real fontScale: 1.0;
6 property real fontScale: 1.0;
7 property var scopeStyle: null;
7 property var scopeStyle: null;
8− property int titleAlignment: Text.AlignLeft;
9 property int fixedHeaderHeight: -1;
8 property int fixedHeaderHeight: -1;
10 property size fixedArtShapeSize: Qt.size(-1, -1);
9 property size fixedArtShapeSize: Qt.size(-1, -1);
11 readonly property string title: cardData && cardData["title"] || "";
10 readonly property string title: cardData && cardData["title"] || "";
12− property bool asynchronous: true;
13− property bool showHeader: true;
11+ property bool showHeader: true;
14 implicitWidth: childrenRect.width;
12 implicitWidth: childrenRect.width;
15 enabled: true;
13 enabled: true;
16
14
@@ -25,7 +23,7 @@ Item {
25 objectName: "artShapeLoader";
23 objectName: "artShapeLoader";
26 readonly property string cardArt: cardData && cardData["art"] || "";
24 readonly property string cardArt: cardData && cardData["art"] || "";
27 active: cardArt != "";
25 active: cardArt != "";
28− asynchronous: root.asynchronous;
26+ asynchronous: true;
29 visible: status == Loader.Ready;
27 visible: status == Loader.Ready;
30 sourceComponent: Item {
28 sourceComponent: Item {
31 id: artShape;
29 id: artShape;
@@ -82,7 +80,7 @@ Item {
82 id: artImage;
80 id: artImage;
83 objectName: "artImage";
81 objectName: "artImage";
84 source: artShapeLoader.cardArt;
82 source: artShapeLoader.cardArt;
85− asynchronous: root.asynchronous;
83+ asynchronous: true;
86 width: root.width;
84 width: root.width;
87 height: width / artShape.aspect;
85 height: width / artShape.aspect;
88 }
86 }
@@ -108,7 +106,7 @@ Label {
108 width: undefined;
106 width: undefined;
109 text: root.title;
107 text: root.title;
110 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
108 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
111− horizontalAlignment: root.titleAlignment;
109+ horizontalAlignment: Text.AlignHCenter;
112 }
110 }
113UbuntuShape {
111UbuntuShape {
114 id: touchdown;
112 id: touchdown;
tests/plugins/Dash/cardcreator/1.res.cardcreatornew file+119
@@ -0,0 +1,119 @@
1+AbstractButton {
2+ id: root;
3+ property var cardData;
4+ property string artShapeStyle: "inset";
5+ property string backgroundShapeStyle: "inset";
6+ property real fontScale: 1.0;
7+ property var scopeStyle: null;
8+ property size fixedArtShapeSize: Qt.size(-1, -1);
9+ readonly property string title: cardData && cardData["title"] || "";
10+ property bool showHeader: true;
11+ implicitWidth: childrenRect.width;
12+ enabled: true;
13+
14+readonly property size artShapeSize: artShapeLoader.item ? Qt.size(artShapeLoader.item.width, artShapeLoader.item.height) : Qt.size(-1, -1);
15+Item {
16+ id: artShapeHolder;
17+ height: root.fixedArtShapeSize.height > 0 ? root.fixedArtShapeSize.height : artShapeLoader.height;
18+ width: root.fixedArtShapeSize.width > 0 ? root.fixedArtShapeSize.width : artShapeLoader.width;
19+ anchors { horizontalCenter: parent.horizontalCenter; }
20+ Loader {
21+ id: artShapeLoader;
22+ objectName: "artShapeLoader";
23+ readonly property string cardArt: cardData && cardData["art"] || "";
24+ active: cardArt != "";
25+ asynchronous: false;
26+ visible: status == Loader.Ready;
27+ sourceComponent: Item {
28+ id: artShape;
29+ objectName: "artShape";
30+ visible: image.status == Image.Ready;
31+ readonly property alias image: artImage;
32+ ShaderEffectSource {
33+ id: artShapeSource;
34+ sourceItem: artImage;
35+ anchors.centerIn: parent;
36+ width: 1;
37+ height: 1;
38+ hideSource: true;
39+ }
40+ Loader {
41+ anchors.fill: parent;
42+ visible: true;
43+ sourceComponent: root.artShapeStyle === "icon" ? artShapeIconComponent : artShapeShapeComponent;
44+ Component {
45+ id: artShapeShapeComponent;
46+ UbuntuShape {
47+ source: artShapeSource;
48+ sourceFillMode: UbuntuShape.PreserveAspectCrop;
49+ radius: "medium";
50+ aspect: {
51+ switch (root.artShapeStyle) {
52+ case "inset": return UbuntuShape.Inset;
53+ case "shadow": return UbuntuShape.DropShadow;
54+ default:
55+ case "flat": return UbuntuShape.Flat;
56+ }
57+ }
58+ }
59+ }
60+ Component {
61+ id: artShapeIconComponent;
62+ ProportionalShape { source: artShapeSource; aspect: UbuntuShape.DropShadow; }
63+ }
64+ }
65+ readonly property real fixedArtShapeSizeAspect: (root.fixedArtShapeSize.height > 0 && root.fixedArtShapeSize.width > 0) ? root.fixedArtShapeSize.width / root.fixedArtShapeSize.height : -1;
66+ readonly property real aspect: fixedArtShapeSizeAspect > 0 ? fixedArtShapeSizeAspect : 1.6;
67+ Component.onCompleted: { updateWidthHeightBindings(); }
68+ Connections { target: root; onFixedArtShapeSizeChanged: updateWidthHeightBindings(); }
69+ function updateWidthHeightBindings() {
70+ if (root.fixedArtShapeSize.height > 0 && root.fixedArtShapeSize.width > 0) {
71+ width = root.fixedArtShapeSize.width;
72+ height = root.fixedArtShapeSize.height;
73+ } else {
74+ width = Qt.binding(function() { return image.status !== Image.Ready ? 0 : image.width });
75+ height = Qt.binding(function() { return image.status !== Image.Ready ? 0 : image.height });
76+ }
77+ }
78+ CroppedImageMinimumSourceSize {
79+ id: artImage;
80+ objectName: "artImage";
81+ source: artShapeLoader.cardArt;
82+ asynchronous: false;
83+ width: root.width;
84+ height: width / artShape.aspect;
85+ }
86+ }
87+ }
88+ }
89+readonly property int headerHeight: titleLabel.height;
90+Label {
91+ id: titleLabel;
92+ objectName: "titleLabel";
93+ anchors { right: parent.right;
94+ left: parent.left;
95+ top: artShapeHolder.bottom;
96+ topMargin: units.gu(1);
97+ }
98+ elide: Text.ElideRight;
99+ fontSize: "small";
100+ wrapMode: Text.Wrap;
101+ maximumLineCount: 2;
102+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
103+ color: root.scopeStyle ? root.scopeStyle.foreground : theme.palette.normal.baseText;
104+ visible: showHeader ;
105+ width: undefined;
106+ text: root.title;
107+ font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
108+ horizontalAlignment: Text.AlignHCenter;
109+ }
110+UbuntuShape {
111+ id: touchdown;
112+ objectName: "touchdown";
113+ anchors { fill: artShapeHolder }
114+ visible: root.artShapeStyle != "shadow" && root.artShapeStyle != "icon" && root.pressed;
115+ radius: "medium";
116+ borderSource: "radius_pressed.sci"
117+}
118+implicitHeight: titleLabel.y + titleLabel.height + units.gu(1);
119+}
tests/plugins/Dash/cardcreator/10.res+3−5
@@ -5,11 +5,9 @@ AbstractButton {
5 property string backgroundShapeStyle: "inset";
5 property string backgroundShapeStyle: "inset";
6 property real fontScale: 1.0;
6 property real fontScale: 1.0;
7 property var scopeStyle: null;
7 property var scopeStyle: null;
8− property int titleAlignment: Text.AlignLeft;
9 property int fixedHeaderHeight: -1;
8 property int fixedHeaderHeight: -1;
10 property size fixedArtShapeSize: Qt.size(-1, -1);
9 property size fixedArtShapeSize: Qt.size(-1, -1);
11 readonly property string title: cardData && cardData["title"] || "";
10 readonly property string title: cardData && cardData["title"] || "";
12− property bool asynchronous: true;
13 property bool showHeader: true;
11 property bool showHeader: true;
14 implicitWidth: childrenRect.width;
12 implicitWidth: childrenRect.width;
15 enabled: true;
13 enabled: true;
@@ -18,7 +16,7 @@ Loader {
18 id: backgroundLoader;
16 id: backgroundLoader;
19 objectName: "backgroundLoader";
17 objectName: "backgroundLoader";
20 anchors.fill: parent;
18 anchors.fill: parent;
21− asynchronous: root.asynchronous;
19+ asynchronous: true;
22 visible: status == Loader.Ready;
20 visible: status == Loader.Ready;
23 sourceComponent: UbuntuShape {
21 sourceComponent: UbuntuShape {
24 objectName: "background";
22 objectName: "background";
@@ -59,7 +57,7 @@ Row {
59 objectName: "outerRow";
57 objectName: "outerRow";
60 property real margins: units.gu(1);
58 property real margins: units.gu(1);
61 spacing: margins;
59 spacing: margins;
62− height: root.fixedHeaderHeight != -1 ? root.fixedHeaderHeight : implicitHeight;
60+ height: root.fixedHeaderHeight;
63 anchors { top: parent.top;
61 anchors { top: parent.top;
64 topMargin: units.gu(1);
62 topMargin: units.gu(1);
65left: parent.left;
63left: parent.left;
@@ -103,7 +101,7 @@ left: parent.left;
103 width: undefined;
101 width: undefined;
104 text: root.title;
102 text: root.title;
105 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
103 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
106− horizontalAlignment: root.titleAlignment;
104+ horizontalAlignment: Text.AlignLeft;
107 }
105 }
108,Label {
106,Label {
109 id: subtitleLabel;
107 id: subtitleLabel;
tests/plugins/Dash/cardcreator/10.res.cardcreatornew file+137
@@ -0,0 +1,137 @@
1+AbstractButton {
2+ id: root;
3+ property var cardData;
4+ property string artShapeStyle: "inset";
5+ property string backgroundShapeStyle: "inset";
6+ property real fontScale: 1.0;
7+ property var scopeStyle: null;
8+ property size fixedArtShapeSize: Qt.size(-1, -1);
9+ readonly property string title: cardData && cardData["title"] || "";
10+ property bool showHeader: true;
11+ implicitWidth: childrenRect.width;
12+ enabled: true;
13+
14+Loader {
15+ id: backgroundLoader;
16+ objectName: "backgroundLoader";
17+ anchors.fill: parent;
18+ asynchronous: false;
19+ visible: status == Loader.Ready;
20+ sourceComponent: UbuntuShape {
21+ objectName: "background";
22+ radius: "medium";
23+ aspect: {
24+ switch (root.backgroundShapeStyle) {
25+ case "inset": return UbuntuShape.Inset;
26+ case "shadow": return UbuntuShape.DropShadow;
27+ default:
28+ case "flat": return UbuntuShape.Flat;
29+ }
30+ }
31+ backgroundColor: getColor(0) || "white";
32+ secondaryBackgroundColor: getColor(1) || backgroundColor;
33+ backgroundMode: UbuntuShape.VerticalGradient;
34+ anchors.fill: parent;
35+ source: backgroundImage.source ? backgroundImage : null;
36+ property real luminance: Style.luminance(backgroundColor);
37+ property Image backgroundImage: Image {
38+ objectName: "backgroundImage";
39+ source: {
40+ if (cardData && typeof cardData["background"] === "string") return cardData["background"];
41+ else return "";
42+ }
43+ }
44+ function getColor(index) {
45+ if (cardData && typeof cardData["background"] === "object"
46+ && (cardData["background"]["type"] === "color" || cardData["background"]["type"] === "gradient")) {
47+ return cardData["background"]["elements"][index];
48+ } else return index === 0 ? "" : "";
49+ }
50+ }
51+ }
52+readonly property size artShapeSize: Qt.size(-1, -1);
53+readonly property int headerHeight: row.height;
54+Row {
55+ id: row;
56+ objectName: "outerRow";
57+ property real margins: units.gu(1);
58+ spacing: margins;
59+ anchors { top: parent.top;
60+ topMargin: units.gu(1);
61+left: parent.left;
62+ }
63+ anchors.right: parent.right;
64+ anchors.margins: margins;
65+ anchors.rightMargin: 0;
66+ data: [
67+ CroppedImageMinimumSourceSize {
68+ id: mascotImage;
69+ objectName: "mascotImage";
70+ anchors { verticalCenter: parent.verticalCenter; }
71+ source: cardData && cardData["mascot"] || "";
72+ width: units.gu(6);
73+ height: units.gu(5.625);
74+ horizontalAlignment: Image.AlignHCenter;
75+ verticalAlignment: Image.AlignVCenter;
76+ visible: showHeader;
77+
78+ }
79+,Item {
80+ id: headerTitleContainer;
81+ anchors { verticalCenter: parent.verticalCenter; }
82+ width: parent.width - x;
83+ implicitHeight: titleLabel.height + subtitleLabel.height;
84+ data: [
85+ Label {
86+ id: titleLabel;
87+ objectName: "titleLabel";
88+ anchors { right: parent.right;
89+rightMargin: units.gu(1);
90+left: parent.left;
91+ top: parent.top; }
92+ elide: Text.ElideRight;
93+ fontSize: "small";
94+ wrapMode: Text.Wrap;
95+ maximumLineCount: 2;
96+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
97+ color: backgroundLoader.active && backgroundLoader.item && root.scopeStyle ? root.scopeStyle.getTextColor(backgroundLoader.item.luminance) : (backgroundLoader.item && backgroundLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
98+ visible: showHeader ;
99+ width: undefined;
100+ text: root.title;
101+ font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
102+ horizontalAlignment: Text.AlignLeft;
103+ }
104+,Label {
105+ id: subtitleLabel;
106+ objectName: "subtitleLabel";
107+ anchors { right: parent.right;
108+ left: parent.left;
109+rightMargin: units.gu(1);
110+top: titleLabel.bottom;
111+ }
112+ anchors.topMargin: units.dp(2);
113+ elide: Text.ElideRight;
114+ maximumLineCount: 1;
115+ fontSize: "x-small";
116+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
117+ color: backgroundLoader.active && backgroundLoader.item && root.scopeStyle ? root.scopeStyle.getTextColor(backgroundLoader.item.luminance) : (backgroundLoader.item && backgroundLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
118+ visible: titleLabel.visible && titleLabel.text;
119+ text: cardData && cardData["subtitle"] || "";
120+ font.weight: Font.Light;
121+ }
122+
123+ ]
124+ }
125+
126+ ]
127+ }
128+UbuntuShape {
129+ id: touchdown;
130+ objectName: "touchdown";
131+ anchors { fill: backgroundLoader }
132+ visible: root.artShapeStyle != "shadow" && root.artShapeStyle != "icon" && root.pressed;
133+ radius: "medium";
134+ borderSource: "radius_pressed.sci"
135+ }
136+implicitHeight: row.y + row.height + units.gu(1);
137+}
tests/plugins/Dash/cardcreator/11.res+5−7
@@ -5,11 +5,9 @@ AbstractButton {
5 property string backgroundShapeStyle: "inset";
5 property string backgroundShapeStyle: "inset";
6 property real fontScale: 1.0;
6 property real fontScale: 1.0;
7 property var scopeStyle: null;
7 property var scopeStyle: null;
8− property int titleAlignment: Text.AlignLeft;
9 property int fixedHeaderHeight: -1;
8 property int fixedHeaderHeight: -1;
10 property size fixedArtShapeSize: Qt.size(-1, -1);
9 property size fixedArtShapeSize: Qt.size(-1, -1);
11 readonly property string title: cardData && cardData["title"] || "";
10 readonly property string title: cardData && cardData["title"] || "";
12− property bool asynchronous: true;
13 property bool showHeader: true;
11 property bool showHeader: true;
14 implicitWidth: childrenRect.width;
12 implicitWidth: childrenRect.width;
15 enabled: true;
13 enabled: true;
@@ -18,7 +16,7 @@ Loader {
18 id: backgroundLoader;
16 id: backgroundLoader;
19 objectName: "backgroundLoader";
17 objectName: "backgroundLoader";
20 anchors.fill: parent;
18 anchors.fill: parent;
21− asynchronous: root.asynchronous;
19+ asynchronous: true;
22 visible: status == Loader.Ready;
20 visible: status == Loader.Ready;
23 sourceComponent: UbuntuShape {
21 sourceComponent: UbuntuShape {
24 objectName: "background";
22 objectName: "background";
@@ -63,7 +61,7 @@ Item {
63 objectName: "artShapeLoader";
61 objectName: "artShapeLoader";
64 readonly property string cardArt: cardData && cardData["art"] || decodeURI("%5C");
62 readonly property string cardArt: cardData && cardData["art"] || decodeURI("%5C");
65 active: cardArt != "";
63 active: cardArt != "";
66− asynchronous: root.asynchronous;
64+ asynchronous: true;
67 visible: status == Loader.Ready;
65 visible: status == Loader.Ready;
68 sourceComponent: Item {
66 sourceComponent: Item {
69 id: artShape;
67 id: artShape;
@@ -120,7 +118,7 @@ Item {
120 id: artImage;
118 id: artImage;
121 objectName: "artImage";
119 objectName: "artImage";
122 source: artShapeLoader.cardArt;
120 source: artShapeLoader.cardArt;
123− asynchronous: root.asynchronous;
121+ asynchronous: true;
124 width: root.width;
122 width: root.width;
125 height: width / artShape.aspect;
123 height: width / artShape.aspect;
126 onStatusChanged: if (status === Image.Error) source = decodeURI("%5C");
124 onStatusChanged: if (status === Image.Error) source = decodeURI("%5C");
@@ -134,7 +132,7 @@ Row {
134 objectName: "outerRow";
132 objectName: "outerRow";
135 property real margins: units.gu(1);
133 property real margins: units.gu(1);
136 spacing: margins;
134 spacing: margins;
137− height: root.fixedHeaderHeight != -1 ? root.fixedHeaderHeight : implicitHeight;
135+ height: root.fixedHeaderHeight;
138 anchors { top: artShapeHolder.bottom;
136 anchors { top: artShapeHolder.bottom;
139 topMargin: units.gu(1);
137 topMargin: units.gu(1);
140left: parent.left;
138left: parent.left;
@@ -178,7 +176,7 @@ left: parent.left;
178 width: undefined;
176 width: undefined;
179 text: root.title;
177 text: root.title;
180 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
178 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
181− horizontalAlignment: root.titleAlignment;
179+ horizontalAlignment: Text.AlignLeft;
182 }
180 }
183,Label {
181,Label {
184 id: subtitleLabel;
182 id: subtitleLabel;
tests/plugins/Dash/cardcreator/11.res.cardcreatornew file+210
@@ -0,0 +1,210 @@
1+AbstractButton {
2+ id: root;
3+ property var cardData;
4+ property string artShapeStyle: "inset";
5+ property string backgroundShapeStyle: "inset";
6+ property real fontScale: 1.0;
7+ property var scopeStyle: null;
8+ property size fixedArtShapeSize: Qt.size(-1, -1);
9+ readonly property string title: cardData && cardData["title"] || "";
10+ property bool showHeader: true;
11+ implicitWidth: childrenRect.width;
12+ enabled: true;
13+
14+Loader {
15+ id: backgroundLoader;
16+ objectName: "backgroundLoader";
17+ anchors.fill: parent;
18+ asynchronous: false;
19+ visible: status == Loader.Ready;
20+ sourceComponent: UbuntuShape {
21+ objectName: "background";
22+ radius: "medium";
23+ aspect: {
24+ switch (root.backgroundShapeStyle) {
25+ case "inset": return UbuntuShape.Inset;
26+ case "shadow": return UbuntuShape.DropShadow;
27+ default:
28+ case "flat": return UbuntuShape.Flat;
29+ }
30+ }
31+ backgroundColor: getColor(0) || "white";
32+ secondaryBackgroundColor: getColor(1) || backgroundColor;
33+ backgroundMode: UbuntuShape.VerticalGradient;
34+ anchors.fill: parent;
35+ source: backgroundImage.source ? backgroundImage : null;
36+ property real luminance: Style.luminance(backgroundColor);
37+ property Image backgroundImage: Image {
38+ objectName: "backgroundImage";
39+ source: {
40+ if (cardData && typeof cardData["background"] === "string") return cardData["background"];
41+ else return "";
42+ }
43+ }
44+ function getColor(index) {
45+ if (cardData && typeof cardData["background"] === "object"
46+ && (cardData["background"]["type"] === "color" || cardData["background"]["type"] === "gradient")) {
47+ return cardData["background"]["elements"][index];
48+ } else return index === 0 ? "#E9E9E9" : undefined;
49+ }
50+ }
51+ }
52+readonly property size artShapeSize: artShapeLoader.item ? Qt.size(artShapeLoader.item.width, artShapeLoader.item.height) : Qt.size(-1, -1);
53+Item {
54+ id: artShapeHolder;
55+ height: root.fixedArtShapeSize.height > 0 ? root.fixedArtShapeSize.height : artShapeLoader.height;
56+ width: root.fixedArtShapeSize.width > 0 ? root.fixedArtShapeSize.width : artShapeLoader.width;
57+ anchors { horizontalCenter: parent.horizontalCenter; }
58+ Loader {
59+ id: artShapeLoader;
60+ objectName: "artShapeLoader";
61+ readonly property string cardArt: cardData && cardData["art"] || "";
62+ active: cardArt != "";
63+ asynchronous: false;
64+ visible: status == Loader.Ready;
65+ sourceComponent: Item {
66+ id: artShape;
67+ objectName: "artShape";
68+ visible: image.status == Image.Ready;
69+ readonly property alias image: artImage;
70+ ShaderEffectSource {
71+ id: artShapeSource;
72+ sourceItem: artImage;
73+ anchors.centerIn: parent;
74+ width: 1;
75+ height: 1;
76+ hideSource: true;
77+ }
78+ Loader {
79+ anchors.fill: parent;
80+ visible: true;
81+ sourceComponent: root.artShapeStyle === "icon" ? artShapeIconComponent : artShapeShapeComponent;
82+ Component {
83+ id: artShapeShapeComponent;
84+ UbuntuShape {
85+ source: artShapeSource;
86+ sourceFillMode: UbuntuShape.PreserveAspectCrop;
87+ radius: "medium";
88+ aspect: {
89+ switch (root.artShapeStyle) {
90+ case "inset": return UbuntuShape.Inset;
91+ case "shadow": return UbuntuShape.DropShadow;
92+ default:
93+ case "flat": return UbuntuShape.Flat;
94+ }
95+ }
96+ }
97+ }
98+ Component {
99+ id: artShapeIconComponent;
100+ ProportionalShape { source: artShapeSource; aspect: UbuntuShape.DropShadow; }
101+ }
102+ }
103+ readonly property real fixedArtShapeSizeAspect: (root.fixedArtShapeSize.height > 0 && root.fixedArtShapeSize.width > 0) ? root.fixedArtShapeSize.width / root.fixedArtShapeSize.height : -1;
104+ readonly property real aspect: fixedArtShapeSizeAspect > 0 ? fixedArtShapeSizeAspect : 1;
105+ Component.onCompleted: { updateWidthHeightBindings(); }
106+ Connections { target: root; onFixedArtShapeSizeChanged: updateWidthHeightBindings(); }
107+ function updateWidthHeightBindings() {
108+ if (root.fixedArtShapeSize.height > 0 && root.fixedArtShapeSize.width > 0) {
109+ width = root.fixedArtShapeSize.width;
110+ height = root.fixedArtShapeSize.height;
111+ } else {
112+ width = Qt.binding(function() { return image.status !== Image.Ready ? 0 : image.width });
113+ height = Qt.binding(function() { return image.status !== Image.Ready ? 0 : image.height });
114+ }
115+ }
116+ CroppedImageMinimumSourceSize {
117+ id: artImage;
118+ objectName: "artImage";
119+ source: artShapeLoader.cardArt;
120+ asynchronous: false;
121+ width: root.width;
122+ height: width / artShape.aspect;
123+ }
124+ }
125+ }
126+ }
127+readonly property int headerHeight: row.height;
128+Row {
129+ id: row;
130+ objectName: "outerRow";
131+ property real margins: units.gu(1);
132+ spacing: margins;
133+ anchors { top: artShapeHolder.bottom;
134+ topMargin: units.gu(1);
135+left: parent.left;
136+ }
137+ anchors.right: parent.right;
138+ anchors.margins: margins;
139+ anchors.rightMargin: 0;
140+ data: [
141+ CroppedImageMinimumSourceSize {
142+ id: mascotImage;
143+ objectName: "mascotImage";
144+ anchors { verticalCenter: parent.verticalCenter; }
145+ source: cardData && cardData["mascot"] || "";
146+ width: units.gu(6);
147+ height: units.gu(5.625);
148+ horizontalAlignment: Image.AlignHCenter;
149+ verticalAlignment: Image.AlignVCenter;
150+ visible: showHeader;
151+ }
152+,Item {
153+ id: headerTitleContainer;
154+ anchors { verticalCenter: parent.verticalCenter; }
155+ width: parent.width - x;
156+ implicitHeight: titleLabel.height + subtitleLabel.height;
157+ data: [
158+ Label {
159+ id: titleLabel;
160+ objectName: "titleLabel";
161+ anchors { right: parent.right;
162+rightMargin: units.gu(1);
163+left: parent.left;
164+ top: parent.top; }
165+ elide: Text.ElideRight;
166+ fontSize: "small";
167+ wrapMode: Text.Wrap;
168+ maximumLineCount: 2;
169+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
170+ color: backgroundLoader.active && backgroundLoader.item && root.scopeStyle ? root.scopeStyle.getTextColor(backgroundLoader.item.luminance) : (backgroundLoader.item && backgroundLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
171+ visible: showHeader ;
172+ width: undefined;
173+ text: root.title;
174+ font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
175+ horizontalAlignment: Text.AlignLeft;
176+ }
177+,Label {
178+ id: subtitleLabel;
179+ objectName: "subtitleLabel";
180+ anchors { right: parent.right;
181+ left: parent.left;
182+rightMargin: units.gu(1);
183+top: titleLabel.bottom;
184+ }
185+ anchors.topMargin: units.dp(2);
186+ elide: Text.ElideRight;
187+ maximumLineCount: 1;
188+ fontSize: "x-small";
189+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
190+ color: backgroundLoader.active && backgroundLoader.item && root.scopeStyle ? root.scopeStyle.getTextColor(backgroundLoader.item.luminance) : (backgroundLoader.item && backgroundLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
191+ visible: titleLabel.visible && titleLabel.text;
192+ text: cardData && cardData["subtitle"] || "";
193+ font.weight: Font.Light;
194+ }
195+
196+ ]
197+ }
198+
199+ ]
200+ }
201+UbuntuShape {
202+ id: touchdown;
203+ objectName: "touchdown";
204+ anchors { fill: backgroundLoader }
205+ visible: root.artShapeStyle != "shadow" && root.artShapeStyle != "icon" && root.pressed;
206+ radius: "medium";
207+ borderSource: "radius_pressed.sci"
208+ }
209+implicitHeight: row.y + row.height + units.gu(1);
210+}
tests/plugins/Dash/cardcreator/2.res+3−5
@@ -5,11 +5,9 @@ AbstractButton {
5 property string backgroundShapeStyle: "inset";
5 property string backgroundShapeStyle: "inset";
6 property real fontScale: 1.0;
6 property real fontScale: 1.0;
7 property var scopeStyle: null;
7 property var scopeStyle: null;
8− property int titleAlignment: Text.AlignLeft;
9 property int fixedHeaderHeight: -1;
8 property int fixedHeaderHeight: -1;
10 property size fixedArtShapeSize: Qt.size(-1, -1);
9 property size fixedArtShapeSize: Qt.size(-1, -1);
11 readonly property string title: cardData && cardData["title"] || "";
10 readonly property string title: cardData && cardData["title"] || "";
12− property bool asynchronous: true;
13 property bool showHeader: true;
11 property bool showHeader: true;
14 implicitWidth: childrenRect.width;
12 implicitWidth: childrenRect.width;
15 enabled: true;
13 enabled: true;
@@ -18,7 +16,7 @@ Loader {
18 id: backgroundLoader;
16 id: backgroundLoader;
19 objectName: "backgroundLoader";
17 objectName: "backgroundLoader";
20 anchors.fill: parent;
18 anchors.fill: parent;
21− asynchronous: root.asynchronous;
19+ asynchronous: true;
22 visible: status == Loader.Ready;
20 visible: status == Loader.Ready;
23 sourceComponent: UbuntuShape {
21 sourceComponent: UbuntuShape {
24 objectName: "background";
22 objectName: "background";
@@ -59,7 +57,7 @@ Row {
59 objectName: "outerRow";
57 objectName: "outerRow";
60 property real margins: units.gu(1);
58 property real margins: units.gu(1);
61 spacing: margins;
59 spacing: margins;
62− height: root.fixedHeaderHeight != -1 ? root.fixedHeaderHeight : implicitHeight;
60+ height: root.fixedHeaderHeight;
63 anchors { top: parent.top;
61 anchors { top: parent.top;
64 topMargin: units.gu(1);
62 topMargin: units.gu(1);
65 left: parent.left;
63 left: parent.left;
@@ -102,7 +100,7 @@ CroppedImageMinimumSourceSize {
102 width: undefined;
100 width: undefined;
103 text: root.title;
101 text: root.title;
104 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
102 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
105− horizontalAlignment: root.titleAlignment;
103+ horizontalAlignment: Text.AlignLeft;
106 }
104 }
107 ,Label {
105 ,Label {
108 id: subtitleLabel;
106 id: subtitleLabel;
tests/plugins/Dash/cardcreator/2.res.cardcreatornew file+136
@@ -0,0 +1,136 @@
1+AbstractButton {
2+ id: root;
3+ property var cardData;
4+ property string artShapeStyle: "inset";
5+ property string backgroundShapeStyle: "inset";
6+ property real fontScale: 1.0;
7+ property var scopeStyle: null;
8+ property size fixedArtShapeSize: Qt.size(-1, -1);
9+ readonly property string title: cardData && cardData["title"] || "";
10+ property bool showHeader: true;
11+ implicitWidth: childrenRect.width;
12+ enabled: true;
13+
14+Loader {
15+ id: backgroundLoader;
16+ objectName: "backgroundLoader";
17+ anchors.fill: parent;
18+ asynchronous: false;
19+ visible: status == Loader.Ready;
20+ sourceComponent: UbuntuShape {
21+ objectName: "background";
22+ radius: "medium";
23+ aspect: {
24+ switch (root.backgroundShapeStyle) {
25+ case "inset": return UbuntuShape.Inset;
26+ case "shadow": return UbuntuShape.DropShadow;
27+ default:
28+ case "flat": return UbuntuShape.Flat;
29+ }
30+ }
31+ backgroundColor: getColor(0) || "white";
32+ secondaryBackgroundColor: getColor(1) || backgroundColor;
33+ backgroundMode: UbuntuShape.VerticalGradient;
34+ anchors.fill: parent;
35+ source: backgroundImage.source ? backgroundImage : null;
36+ property real luminance: Style.luminance(backgroundColor);
37+ property Image backgroundImage: Image {
38+ objectName: "backgroundImage";
39+ source: {
40+ if (cardData && typeof cardData["background"] === "string") return cardData["background"];
41+ else return "";
42+ }
43+ }
44+ function getColor(index) {
45+ if (cardData && typeof cardData["background"] === "object"
46+ && (cardData["background"]["type"] === "color" || cardData["background"]["type"] === "gradient")) {
47+ return cardData["background"]["elements"][index];
48+ } else return index === 0 ? "#E9E9E9" : undefined;
49+ }
50+ }
51+ }
52+readonly property size artShapeSize: Qt.size(-1, -1);
53+readonly property int headerHeight: row.height;
54+Row {
55+ id: row;
56+ objectName: "outerRow";
57+ property real margins: units.gu(1);
58+ spacing: margins;
59+ anchors { top: parent.top;
60+ topMargin: units.gu(1);
61+ left: parent.left;
62+ }
63+ anchors.right: parent.right;
64+ anchors.margins: margins;
65+ anchors.rightMargin: 0;
66+ data: [
67+CroppedImageMinimumSourceSize {
68+ id: mascotImage;
69+ objectName: "mascotImage";
70+ anchors { verticalCenter: parent.verticalCenter; }
71+ source: cardData && cardData["mascot"] || "";
72+ width: units.gu(6);
73+ height: units.gu(5.625);
74+ horizontalAlignment: Image.AlignHCenter;
75+ verticalAlignment: Image.AlignVCenter;
76+ visible: showHeader;
77+ }
78+,Item {
79+ id: headerTitleContainer;
80+ anchors { verticalCenter: parent.verticalCenter; }
81+ width: parent.width - x;
82+ implicitHeight: titleLabel.height + subtitleLabel.height;
83+ data: [
84+ Label {
85+ id: titleLabel;
86+ objectName: "titleLabel";
87+ anchors { right: parent.right;
88+ rightMargin: units.gu(1);
89+ left: parent.left;
90+ top: parent.top; }
91+ elide: Text.ElideRight;
92+ fontSize: "small";
93+ wrapMode: Text.Wrap;
94+ maximumLineCount: 2;
95+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
96+ color: backgroundLoader.active && backgroundLoader.item && root.scopeStyle ? root.scopeStyle.getTextColor(backgroundLoader.item.luminance) : (backgroundLoader.item && backgroundLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
97+ visible: showHeader ;
98+ width: undefined;
99+ text: root.title;
100+ font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
101+ horizontalAlignment: Text.AlignLeft;
102+ }
103+ ,Label {
104+ id: subtitleLabel;
105+ objectName: "subtitleLabel";
106+ anchors { right: parent.right;
107+ left: parent.left;
108+ rightMargin: units.gu(1);
109+ top: titleLabel.bottom;
110+ }
111+ anchors.topMargin: units.dp(2);
112+ elide: Text.ElideRight;
113+ maximumLineCount: 1;
114+ fontSize: "x-small";
115+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
116+ color: backgroundLoader.active && backgroundLoader.item && root.scopeStyle ? root.scopeStyle.getTextColor(backgroundLoader.item.luminance) : (backgroundLoader.item && backgroundLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
117+ visible: titleLabel.visible && titleLabel.text;
118+ text: cardData && cardData["subtitle"] || "";
119+ font.weight: Font.Light;
120+ }
121+
122+ ]
123+ }
124+
125+ ]
126+ }
127+UbuntuShape {
128+ id: touchdown;
129+ objectName: "touchdown";
130+ anchors { fill: backgroundLoader }
131+ visible: root.artShapeStyle != "shadow" && root.artShapeStyle != "icon" && root.pressed;
132+ radius: "medium";
133+ borderSource: "radius_pressed.sci"
134+}
135+implicitHeight: row.y + row.height + units.gu(1);
136+}
tests/plugins/Dash/cardcreator/3.res+3−5
@@ -5,11 +5,9 @@ AbstractButton {
5 property string backgroundShapeStyle: "inset";
5 property string backgroundShapeStyle: "inset";
6 property real fontScale: 1.0;
6 property real fontScale: 1.0;
7 property var scopeStyle: null;
7 property var scopeStyle: null;
8− property int titleAlignment: Text.AlignLeft;
9 property int fixedHeaderHeight: -1;
8 property int fixedHeaderHeight: -1;
10 property size fixedArtShapeSize: Qt.size(-1, -1);
9 property size fixedArtShapeSize: Qt.size(-1, -1);
11 readonly property string title: cardData && cardData["title"] || "";
10 readonly property string title: cardData && cardData["title"] || "";
12− property bool asynchronous: true;
13 property bool showHeader: true;
11 property bool showHeader: true;
14 implicitWidth: childrenRect.width;
12 implicitWidth: childrenRect.width;
15 enabled: true;
13 enabled: true;
@@ -25,7 +23,7 @@ Item {
25 objectName: "artShapeLoader";
23 objectName: "artShapeLoader";
26 readonly property string cardArt: cardData && cardData["art"] || decodeURI("IHAVE%5C%22ESCAPED%5C%22QUOTES%5C%22");
24 readonly property string cardArt: cardData && cardData["art"] || decodeURI("IHAVE%5C%22ESCAPED%5C%22QUOTES%5C%22");
27 active: cardArt != "";
25 active: cardArt != "";
28− asynchronous: root.asynchronous;
26+ asynchronous: true;
29 visible: status == Loader.Ready;
27 visible: status == Loader.Ready;
30 sourceComponent: Item {
28 sourceComponent: Item {
31 id: artShape;
29 id: artShape;
@@ -82,7 +80,7 @@ Item {
82 id: artImage;
80 id: artImage;
83 objectName: "artImage";
81 objectName: "artImage";
84 source: artShapeLoader.cardArt;
82 source: artShapeLoader.cardArt;
85− asynchronous: root.asynchronous;
83+ asynchronous: true;
86 width: root.width;
84 width: root.width;
87 height: width / artShape.aspect;
85 height: width / artShape.aspect;
88 onStatusChanged: if (status === Image.Error) source = decodeURI("IHAVE%5C%22ESCAPED%5C%22QUOTES%5C%22");
86 onStatusChanged: if (status === Image.Error) source = decodeURI("IHAVE%5C%22ESCAPED%5C%22QUOTES%5C%22");
@@ -109,7 +107,7 @@ Label {
109 width: undefined;
107 width: undefined;
110 text: root.title;
108 text: root.title;
111 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
109 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
112− horizontalAlignment: root.titleAlignment;
110+ horizontalAlignment: Text.AlignLeft;
113 }
111 }
114Label {
112Label {
115 id: subtitleLabel;
113 id: subtitleLabel;
tests/plugins/Dash/cardcreator/3.res.cardcreatornew file+137
@@ -0,0 +1,137 @@
1+AbstractButton {
2+ id: root;
3+ property var cardData;
4+ property string artShapeStyle: "inset";
5+ property string backgroundShapeStyle: "inset";
6+ property real fontScale: 1.0;
7+ property var scopeStyle: null;
8+ property size fixedArtShapeSize: Qt.size(-1, -1);
9+ readonly property string title: cardData && cardData["title"] || "";
10+ property bool showHeader: true;
11+ implicitWidth: childrenRect.width;
12+ enabled: true;
13+
14+readonly property size artShapeSize: artShapeLoader.item ? Qt.size(artShapeLoader.item.width, artShapeLoader.item.height) : Qt.size(-1, -1);
15+Item {
16+ id: artShapeHolder;
17+ height: root.fixedArtShapeSize.height > 0 ? root.fixedArtShapeSize.height : artShapeLoader.height;
18+ width: root.fixedArtShapeSize.width > 0 ? root.fixedArtShapeSize.width : artShapeLoader.width;
19+ anchors { horizontalCenter: parent.horizontalCenter; }
20+ Loader {
21+ id: artShapeLoader;
22+ objectName: "artShapeLoader";
23+ readonly property string cardArt: cardData && cardData["art"] || "";
24+ active: cardArt != "";
25+ asynchronous: false;
26+ visible: status == Loader.Ready;
27+ sourceComponent: Item {
28+ id: artShape;
29+ objectName: "artShape";
30+ visible: image.status == Image.Ready;
31+ readonly property alias image: artImage;
32+ ShaderEffectSource {
33+ id: artShapeSource;
34+ sourceItem: artImage;
35+ anchors.centerIn: parent;
36+ width: 1;
37+ height: 1;
38+ hideSource: true;
39+ }
40+ Loader {
41+ anchors.fill: parent;
42+ visible: true;
43+ sourceComponent: root.artShapeStyle === "icon" ? artShapeIconComponent : artShapeShapeComponent;
44+ Component {
45+ id: artShapeShapeComponent;
46+ UbuntuShape {
47+ source: artShapeSource;
48+ sourceFillMode: UbuntuShape.PreserveAspectCrop;
49+ radius: "medium";
50+ aspect: {
51+ switch (root.artShapeStyle) {
52+ case "inset": return UbuntuShape.Inset;
53+ case "shadow": return UbuntuShape.DropShadow;
54+ default:
55+ case "flat": return UbuntuShape.Flat;
56+ }
57+ }
58+ }
59+ }
60+ Component {
61+ id: artShapeIconComponent;
62+ ProportionalShape { source: artShapeSource; aspect: UbuntuShape.DropShadow; }
63+ }
64+ }
65+ readonly property real fixedArtShapeSizeAspect: (root.fixedArtShapeSize.height > 0 && root.fixedArtShapeSize.width > 0) ? root.fixedArtShapeSize.width / root.fixedArtShapeSize.height : -1;
66+ readonly property real aspect: fixedArtShapeSizeAspect > 0 ? fixedArtShapeSizeAspect : 0.75;
67+ Component.onCompleted: { updateWidthHeightBindings(); }
68+ Connections { target: root; onFixedArtShapeSizeChanged: updateWidthHeightBindings(); }
69+ function updateWidthHeightBindings() {
70+ if (root.fixedArtShapeSize.height > 0 && root.fixedArtShapeSize.width > 0) {
71+ width = root.fixedArtShapeSize.width;
72+ height = root.fixedArtShapeSize.height;
73+ } else {
74+ width = Qt.binding(function() { return image.status !== Image.Ready ? 0 : image.width });
75+ height = Qt.binding(function() { return image.status !== Image.Ready ? 0 : image.height });
76+ }
77+ }
78+ CroppedImageMinimumSourceSize {
79+ id: artImage;
80+ objectName: "artImage";
81+ source: artShapeLoader.cardArt;
82+ asynchronous: false;
83+ width: root.width;
84+ height: width / artShape.aspect;
85+ }
86+ }
87+ }
88+ }
89+readonly property int headerHeight: titleLabel.height + subtitleLabel.height + subtitleLabel.anchors.topMargin;
90+Label {
91+ id: titleLabel;
92+ objectName: "titleLabel";
93+ anchors { right: parent.right;
94+ left: parent.left;
95+ top: artShapeHolder.bottom;
96+ topMargin: units.gu(1);
97+ }
98+ elide: Text.ElideRight;
99+ fontSize: "small";
100+ wrapMode: Text.Wrap;
101+ maximumLineCount: 2;
102+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
103+ color: root.scopeStyle ? root.scopeStyle.foreground : theme.palette.normal.baseText;
104+ visible: showHeader ;
105+ width: undefined;
106+ text: root.title;
107+ font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
108+ horizontalAlignment: Text.AlignLeft;
109+ }
110+Label {
111+ id: subtitleLabel;
112+ objectName: "subtitleLabel";
113+ anchors { left: titleLabel.left;
114+ leftMargin: titleLabel.leftMargin;
115+ right: titleLabel.right;
116+ top: titleLabel.bottom;
117+ }
118+ anchors.topMargin: units.dp(2);
119+ elide: Text.ElideRight;
120+ maximumLineCount: 1;
121+ fontSize: "x-small";
122+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
123+ color: root.scopeStyle ? root.scopeStyle.foreground : theme.palette.normal.baseText;
124+ visible: titleLabel.visible && titleLabel.text;
125+ text: cardData && cardData["subtitle"] || "";
126+ font.weight: Font.Light;
127+ }
128+UbuntuShape {
129+ id: touchdown;
130+ objectName: "touchdown";
131+ anchors { fill: artShapeHolder }
132+ visible: root.artShapeStyle != "shadow" && root.artShapeStyle != "icon" && root.pressed;
133+ radius: "medium";
134+ borderSource: "radius_pressed.sci"
135+}
136+implicitHeight: subtitleLabel.y + subtitleLabel.height + units.gu(1);
137+}
tests/plugins/Dash/cardcreator/4.res+3−5
@@ -5,11 +5,9 @@ AbstractButton {
5 property string backgroundShapeStyle: "inset";
5 property string backgroundShapeStyle: "inset";
6 property real fontScale: 1.0;
6 property real fontScale: 1.0;
7 property var scopeStyle: null;
7 property var scopeStyle: null;
8− property int titleAlignment: Text.AlignLeft;
9 property int fixedHeaderHeight: -1;
8 property int fixedHeaderHeight: -1;
10 property size fixedArtShapeSize: Qt.size(-1, -1);
9 property size fixedArtShapeSize: Qt.size(-1, -1);
11 readonly property string title: cardData && cardData["title"] || "";
10 readonly property string title: cardData && cardData["title"] || "";
12− property bool asynchronous: true;
13 property bool showHeader: true;
11 property bool showHeader: true;
14 implicitWidth: childrenRect.width;
12 implicitWidth: childrenRect.width;
15 enabled: true;
13 enabled: true;
@@ -21,7 +19,7 @@ Row {
21 objectName: "outerRow";
19 objectName: "outerRow";
22 property real margins: units.gu(1);
20 property real margins: units.gu(1);
23 spacing: margins;
21 spacing: margins;
24− height: root.fixedHeaderHeight != -1 ? root.fixedHeaderHeight : implicitHeight;
22+ height: root.fixedHeaderHeight;
25 anchors { top: parent.top;
23 anchors { top: parent.top;
26 topMargin: units.gu(1);
24 topMargin: units.gu(1);
27 left: parent.left;
25 left: parent.left;
@@ -33,7 +31,7 @@ data: [
33Loader {
31Loader {
34 id: mascotShapeLoader;
32 id: mascotShapeLoader;
35 objectName: "mascotShapeLoader";
33 objectName: "mascotShapeLoader";
36− asynchronous: root.asynchronous;
34+ asynchronous: true;
37 active: mascotImage.status === Image.Ready;
35 active: mascotImage.status === Image.Ready;
38 visible: showHeader && active && status == Loader.Ready;
36 visible: showHeader && active && status == Loader.Ready;
39 width: units.gu(6);
37 width: units.gu(6);
@@ -77,7 +75,7 @@ Label {
77 width: undefined;
75 width: undefined;
78 text: root.title;
76 text: root.title;
79 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
77 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
80− horizontalAlignment: root.titleAlignment;
78+ horizontalAlignment: Text.AlignLeft;
81 }
79 }
82,Label {
80,Label {
83 id: subtitleLabel;
81 id: subtitleLabel;
tests/plugins/Dash/cardcreator/4.res.cardcreatornew file+109
@@ -0,0 +1,109 @@
1+AbstractButton {
2+ id: root;
3+ property var cardData;
4+ property string artShapeStyle: "inset";
5+ property string backgroundShapeStyle: "inset";
6+ property real fontScale: 1.0;
7+ property var scopeStyle: null;
8+ property size fixedArtShapeSize: Qt.size(-1, -1);
9+ readonly property string title: cardData && cardData["title"] || "";
10+ property bool showHeader: true;
11+ implicitWidth: childrenRect.width;
12+ enabled: true;
13+
14+readonly property size artShapeSize: Qt.size(-1, -1);
15+readonly property int headerHeight: row.height;
16+Row {
17+ id: row;
18+ objectName: "outerRow";
19+ property real margins: units.gu(1);
20+ spacing: margins;
21+ anchors { top: parent.top;
22+ topMargin: units.gu(1);
23+ left: parent.left;
24+}
25+ anchors.right: parent.right;
26+ anchors.margins: margins;
27+ anchors.rightMargin: 0;
28+data: [
29+Loader {
30+ id: mascotShapeLoader;
31+ objectName: "mascotShapeLoader";
32+ asynchronous: false;
33+ active: mascotImage.status === Image.Ready;
34+ visible: showHeader && active && status == Loader.Ready;
35+ width: units.gu(6);
36+ height: units.gu(5.625);
37+ sourceComponent: UbuntuShape { image: mascotImage }
38+ anchors { verticalCenter: parent.verticalCenter; }
39+ }
40+
41+,CroppedImageMinimumSourceSize {
42+ id: mascotImage;
43+ objectName: "mascotImage";
44+ anchors { verticalCenter: parent.verticalCenter; }
45+ source: cardData && cardData["mascot"] || "";
46+ width: units.gu(6);
47+ height: units.gu(5.625);
48+ horizontalAlignment: Image.AlignHCenter;
49+ verticalAlignment: Image.AlignVCenter;
50+ visible: false;
51+ }
52+
53+,Item {
54+ id: headerTitleContainer;
55+ anchors { verticalCenter: parent.verticalCenter; }
56+ width: parent.width - x;
57+ implicitHeight: titleLabel.height + subtitleLabel.height;
58+ data: [
59+Label {
60+ id: titleLabel;
61+ objectName: "titleLabel";
62+ anchors { right: parent.right;
63+ rightMargin: units.gu(1);
64+ left: parent.left;
65+ top: parent.top; }
66+ elide: Text.ElideRight;
67+ fontSize: "small";
68+ wrapMode: Text.Wrap;
69+ maximumLineCount: 2;
70+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
71+ color: root.scopeStyle ? root.scopeStyle.foreground : theme.palette.normal.baseText;
72+ visible: showHeader ;
73+ width: undefined;
74+ text: root.title;
75+ font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
76+ horizontalAlignment: Text.AlignLeft;
77+ }
78+,Label {
79+ id: subtitleLabel;
80+ objectName: "subtitleLabel";
81+ anchors { right: parent.right;
82+ left: parent.left;
83+ rightMargin: units.gu(1);
84+ top: titleLabel.bottom;
85+ }
86+ anchors.topMargin: units.dp(2);
87+ elide: Text.ElideRight;
88+ maximumLineCount: 1;
89+ fontSize: "x-small";
90+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
91+ color: root.scopeStyle ? root.scopeStyle.foreground : theme.palette.normal.baseText;
92+ visible: titleLabel.visible && titleLabel.text;
93+ text: cardData && cardData["subtitle"] || "";
94+ font.weight: Font.Light;
95+ }
96+]
97+}
98+]
99+}
100+UbuntuShape {
101+ id: touchdown;
102+ objectName: "touchdown";
103+ anchors { fill: root }
104+ visible: root.artShapeStyle != "shadow" && root.artShapeStyle != "icon" && root.pressed;
105+ radius: "medium";
106+ borderSource: "radius_pressed.sci"
107+}
108+implicitHeight: row.y + row.height + units.gu(1);
109+}
tests/plugins/Dash/cardcreator/5.res+5−7
@@ -5,11 +5,9 @@ AbstractButton {
5 property string backgroundShapeStyle: "inset";
5 property string backgroundShapeStyle: "inset";
6 property real fontScale: 1.0;
6 property real fontScale: 1.0;
7 property var scopeStyle: null;
7 property var scopeStyle: null;
8− property int titleAlignment: Text.AlignLeft;
9 property int fixedHeaderHeight: -1;
8 property int fixedHeaderHeight: -1;
10 property size fixedArtShapeSize: Qt.size(-1, -1);
9 property size fixedArtShapeSize: Qt.size(-1, -1);
11 readonly property string title: cardData && cardData["title"] || "";
10 readonly property string title: cardData && cardData["title"] || "";
12− property bool asynchronous: true;
13 property bool showHeader: true;
11 property bool showHeader: true;
14 implicitWidth: childrenRect.width;
12 implicitWidth: childrenRect.width;
15 enabled: false;
13 enabled: false;
@@ -25,7 +23,7 @@ Item {
25 objectName: "artShapeLoader";
23 objectName: "artShapeLoader";
26 readonly property string cardArt: cardData && cardData["art"] || "";
24 readonly property string cardArt: cardData && cardData["art"] || "";
27 active: cardArt != "";
25 active: cardArt != "";
28− asynchronous: root.asynchronous;
26+ asynchronous: true;
29 visible: status == Loader.Ready;
27 visible: status == Loader.Ready;
30 sourceComponent: Item {
28 sourceComponent: Item {
31 id: artShape;
29 id: artShape;
@@ -82,7 +80,7 @@ Item {
82 id: artImage;
80 id: artImage;
83 objectName: "artImage";
81 objectName: "artImage";
84 source: artShapeLoader.cardArt;
82 source: artShapeLoader.cardArt;
85− asynchronous: root.asynchronous;
83+ asynchronous: true;
86 width: root.width;
84 width: root.width;
87 height: width / artShape.aspect;
85 height: width / artShape.aspect;
88 }
86 }
@@ -91,10 +89,10 @@ Item {
91 }
89 }
92Loader {
90Loader {
93 id: overlayLoader;
91 id: overlayLoader;
94− readonly property real overlayHeight: (fixedHeaderHeight > 0 ? fixedHeaderHeight : headerHeight) + units.gu(2);
92+ readonly property real overlayHeight: root.fixedHeaderHeight + units.gu(2);
95 anchors.fill: artShapeHolder;
93 anchors.fill: artShapeHolder;
96 active: artShapeLoader.active && artShapeLoader.item && artShapeLoader.item.image.status === Image.Ready || false;
94 active: artShapeLoader.active && artShapeLoader.item && artShapeLoader.item.image.status === Image.Ready || false;
97− asynchronous: root.asynchronous;
95+ asynchronous: true;
98 visible: showHeader && status == Loader.Ready;
96 visible: showHeader && status == Loader.Ready;
99 sourceComponent: UbuntuShapeOverlay {
97 sourceComponent: UbuntuShapeOverlay {
100 id: overlay;
98 id: overlay;
@@ -126,7 +124,7 @@ Label {
126 width: undefined;
124 width: undefined;
127 text: root.title;
125 text: root.title;
128 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
126 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
129− horizontalAlignment: root.titleAlignment;
127+ horizontalAlignment: Text.AlignLeft;
130 }
128 }
131Label {
129Label {
132 id: subtitleLabel;
130 id: subtitleLabel;
tests/plugins/Dash/cardcreator/5.res.cardcreatornew file+156
@@ -0,0 +1,156 @@
1+AbstractButton {
2+ id: root;
3+ property var cardData;
4+ property string artShapeStyle: "inset";
5+ property string backgroundShapeStyle: "inset";
6+ property real fontScale: 1.0;
7+ property var scopeStyle: null;
8+ property size fixedArtShapeSize: Qt.size(-1, -1);
9+ readonly property string title: cardData && cardData["title"] || "";
10+ property bool showHeader: true;
11+ implicitWidth: childrenRect.width;
12+ enabled: false;
13+
14+readonly property size artShapeSize: artShapeLoader.item ? Qt.size(artShapeLoader.item.width, artShapeLoader.item.height) : Qt.size(-1, -1);
15+Item {
16+ id: artShapeHolder;
17+ height: root.fixedArtShapeSize.height > 0 ? root.fixedArtShapeSize.height : artShapeLoader.height;
18+ width: root.fixedArtShapeSize.width > 0 ? root.fixedArtShapeSize.width : artShapeLoader.width;
19+ anchors { horizontalCenter: parent.horizontalCenter; }
20+ Loader {
21+ id: artShapeLoader;
22+ objectName: "artShapeLoader";
23+ readonly property string cardArt: cardData && cardData["art"] || "";
24+ active: cardArt != "";
25+ asynchronous: false;
26+ visible: status == Loader.Ready;
27+ sourceComponent: Item {
28+ id: artShape;
29+ objectName: "artShape";
30+ visible: image.status == Image.Ready;
31+ readonly property alias image: artImage;
32+ ShaderEffectSource {
33+ id: artShapeSource;
34+ sourceItem: artImage;
35+ anchors.centerIn: parent;
36+ width: 1;
37+ height: 1;
38+ hideSource: false;
39+ }
40+ Loader {
41+ anchors.fill: parent;
42+ visible: false;
43+ sourceComponent: root.artShapeStyle === "icon" ? artShapeIconComponent : artShapeShapeComponent;
44+ Component {
45+ id: artShapeShapeComponent;
46+ UbuntuShape {
47+ source: artShapeSource;
48+ sourceFillMode: UbuntuShape.PreserveAspectCrop;
49+ radius: "medium";
50+ aspect: {
51+ switch (root.artShapeStyle) {
52+ case "inset": return UbuntuShape.Inset;
53+ case "shadow": return UbuntuShape.DropShadow;
54+ default:
55+ case "flat": return UbuntuShape.Flat;
56+ }
57+ }
58+ }
59+ }
60+ Component {
61+ id: artShapeIconComponent;
62+ ProportionalShape { source: artShapeSource; aspect: UbuntuShape.DropShadow; }
63+ }
64+ }
65+ readonly property real fixedArtShapeSizeAspect: (root.fixedArtShapeSize.height > 0 && root.fixedArtShapeSize.width > 0) ? root.fixedArtShapeSize.width / root.fixedArtShapeSize.height : -1;
66+ readonly property real aspect: fixedArtShapeSizeAspect > 0 ? fixedArtShapeSizeAspect : 1;
67+ Component.onCompleted: { updateWidthHeightBindings(); }
68+ Connections { target: root; onFixedArtShapeSizeChanged: updateWidthHeightBindings(); }
69+ function updateWidthHeightBindings() {
70+ if (root.fixedArtShapeSize.height > 0 && root.fixedArtShapeSize.width > 0) {
71+ width = root.fixedArtShapeSize.width;
72+ height = root.fixedArtShapeSize.height;
73+ } else {
74+ width = Qt.binding(function() { return image.status !== Image.Ready ? 0 : image.width });
75+ height = Qt.binding(function() { return image.status !== Image.Ready ? 0 : image.height });
76+ }
77+ }
78+ CroppedImageMinimumSourceSize {
79+ id: artImage;
80+ objectName: "artImage";
81+ source: artShapeLoader.cardArt;
82+ asynchronous: false;
83+ width: root.width;
84+ height: width / artShape.aspect;
85+ }
86+ }
87+ }
88+ }
89+Loader {
90+ id: overlayLoader;
91+ readonly property real overlayHeight: headerHeight + units.gu(2);
92+ anchors.fill: artShapeHolder;
93+ active: artShapeLoader.active && artShapeLoader.item && artShapeLoader.item.image.status === Image.Ready || false;
94+ asynchronous: false;
95+ visible: showHeader && status == Loader.Ready;
96+ sourceComponent: UbuntuShapeOverlay {
97+ id: overlay;
98+ property real luminance: Style.luminance(overlayColor);
99+ aspect: UbuntuShape.Flat;
100+ radius: "medium";
101+ overlayColor: cardData && cardData["overlayColor"] || "#99000000";
102+ overlayRect: Qt.rect(0, 1 - overlayLoader.overlayHeight / height, 1, 1);
103+ }
104+ }
105+readonly property int headerHeight: titleLabel.height + subtitleLabel.height + subtitleLabel.anchors.topMargin;
106+Label {
107+ id: titleLabel;
108+ objectName: "titleLabel";
109+ anchors { right: parent.right;
110+ rightMargin: units.gu(1);
111+ left: parent.left;
112+ leftMargin: units.gu(1);
113+ top: overlayLoader.top;
114+ topMargin: units.gu(1) + overlayLoader.height - overlayLoader.overlayHeight;
115+ }
116+ elide: Text.ElideRight;
117+ fontSize: "small";
118+ wrapMode: Text.Wrap;
119+ maximumLineCount: 2;
120+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
121+ color: root.scopeStyle && overlayLoader.item ? root.scopeStyle.getTextColor(overlayLoader.item.luminance) : (overlayLoader.item && overlayLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
122+ visible: showHeader && overlayLoader.active;
123+ width: undefined;
124+ text: root.title;
125+ font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
126+ horizontalAlignment: Text.AlignLeft;
127+ }
128+Label {
129+ id: subtitleLabel;
130+ objectName: "subtitleLabel";
131+ anchors { left: titleLabel.left;
132+ leftMargin: titleLabel.leftMargin;
133+ rightMargin: units.gu(1);
134+ right: titleLabel.right;
135+ top: titleLabel.bottom;
136+ }
137+ anchors.topMargin: units.dp(2);
138+ elide: Text.ElideRight;
139+ maximumLineCount: 1;
140+ fontSize: "x-small";
141+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
142+ color: root.scopeStyle && overlayLoader.item ? root.scopeStyle.getTextColor(overlayLoader.item.luminance) : (overlayLoader.item && overlayLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
143+ visible: titleLabel.visible && titleLabel.text;
144+ text: cardData && cardData["subtitle"] || "";
145+ font.weight: Font.Light;
146+ }
147+UbuntuShape {
148+ id: touchdown;
149+ objectName: "touchdown";
150+ anchors { fill: artShapeHolder }
151+ visible: root.artShapeStyle != "shadow" && root.artShapeStyle != "icon" && root.pressed;
152+ radius: "medium";
153+ borderSource: "radius_pressed.sci"
154+}
155+implicitHeight: artShapeHolder.height;
156+}
tests/plugins/Dash/cardcreator/6.res+2−4
@@ -5,11 +5,9 @@ AbstractButton {
5 property string backgroundShapeStyle: "inset";
5 property string backgroundShapeStyle: "inset";
6 property real fontScale: 1.0;
6 property real fontScale: 1.0;
7 property var scopeStyle: null;
7 property var scopeStyle: null;
8− property int titleAlignment: Text.AlignLeft;
9 property int fixedHeaderHeight: -1;
8 property int fixedHeaderHeight: -1;
10 property size fixedArtShapeSize: Qt.size(-1, -1);
9 property size fixedArtShapeSize: Qt.size(-1, -1);
11 readonly property string title: cardData && cardData["title"] || "";
10 readonly property string title: cardData && cardData["title"] || "";
12− property bool asynchronous: true;
13 property bool showHeader: true;
11 property bool showHeader: true;
14 implicitWidth: childrenRect.width;
12 implicitWidth: childrenRect.width;
15 enabled: true;
13 enabled: true;
@@ -18,7 +16,7 @@ Loader {
18 id: backgroundLoader;
16 id: backgroundLoader;
19 objectName: "backgroundLoader";
17 objectName: "backgroundLoader";
20 anchors.fill: parent;
18 anchors.fill: parent;
21− asynchronous: root.asynchronous;
19+ asynchronous: true;
22 visible: status == Loader.Ready;
20 visible: status == Loader.Ready;
23 sourceComponent: UbuntuShape {
21 sourceComponent: UbuntuShape {
24 objectName: "background";
22 objectName: "background";
@@ -81,7 +79,7 @@ Item {
81 width: undefined;
79 width: undefined;
82 text: root.title;
80 text: root.title;
83 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
81 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
84− horizontalAlignment: root.titleAlignment;
82+ horizontalAlignment: Text.AlignLeft;
85 }
83 }
86,Label {
84,Label {
87 id: subtitleLabel;
85 id: subtitleLabel;
tests/plugins/Dash/cardcreator/6.res.cardcreatornew file+126
@@ -0,0 +1,126 @@
1+AbstractButton {
2+ id: root;
3+ property var cardData;
4+ property string artShapeStyle: "inset";
5+ property string backgroundShapeStyle: "inset";
6+ property real fontScale: 1.0;
7+ property var scopeStyle: null;
8+ property size fixedArtShapeSize: Qt.size(-1, -1);
9+ readonly property string title: cardData && cardData["title"] || "";
10+ property bool showHeader: true;
11+ implicitWidth: childrenRect.width;
12+ enabled: true;
13+
14+Loader {
15+ id: backgroundLoader;
16+ objectName: "backgroundLoader";
17+ anchors.fill: parent;
18+ asynchronous: false;
19+ visible: status == Loader.Ready;
20+ sourceComponent: UbuntuShape {
21+ objectName: "background";
22+ radius: "medium";
23+ aspect: {
24+ switch (root.backgroundShapeStyle) {
25+ case "inset": return UbuntuShape.Inset;
26+ case "shadow": return UbuntuShape.DropShadow;
27+ default:
28+ case "flat": return UbuntuShape.Flat;
29+ }
30+ }
31+ backgroundColor: getColor(0) || "white";
32+ secondaryBackgroundColor: getColor(1) || backgroundColor;
33+ backgroundMode: UbuntuShape.VerticalGradient;
34+ anchors.fill: parent;
35+ source: backgroundImage.source ? backgroundImage : null;
36+ property real luminance: Style.luminance(backgroundColor);
37+ property Image backgroundImage: Image {
38+ objectName: "backgroundImage";
39+ source: {
40+ if (cardData && typeof cardData["background"] === "string") return cardData["background"];
41+ else return decodeURI("http://assets.ubuntu.com/sites/ubuntu/latest/u/img/logos/logo-ubuntu-grey.png");
42+ }
43+ }
44+ function getColor(index) {
45+ if (cardData && typeof cardData["background"] === "object"
46+ && (cardData["background"]["type"] === "color" || cardData["background"]["type"] === "gradient")) {
47+ return cardData["background"]["elements"][index];
48+ } else return index === 0 ? undefined : undefined;
49+ }
50+ }
51+ }
52+readonly property size artShapeSize: Qt.size(-1, -1);
53+readonly property int headerHeight: titleLabel.height + subtitleLabel.height + subtitleLabel.anchors.topMargin;
54+Item {
55+ id: headerTitleContainer;
56+ anchors { right: parent.right; left: parent.left;
57+ top: parent.top;
58+ topMargin: units.gu(1);
59+ leftMargin: units.gu(1);
60+ }
61+ width: parent.width - x;
62+ implicitHeight: titleLabel.height + subtitleLabel.height;
63+ data: [
64+ Label {
65+ id: titleLabel;
66+ objectName: "titleLabel";
67+ anchors { right: emblemIcon.left;
68+ rightMargin: emblemIcon.width > 0 ? units.gu(0.5) : 0;
69+ left: parent.left;
70+ top: parent.top; }
71+ elide: Text.ElideRight;
72+ fontSize: "small";
73+ wrapMode: Text.Wrap;
74+ maximumLineCount: 2;
75+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
76+ color: backgroundLoader.active && backgroundLoader.item && root.scopeStyle ? root.scopeStyle.getTextColor(backgroundLoader.item.luminance) : (backgroundLoader.item && backgroundLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
77+ visible: showHeader ;
78+ width: undefined;
79+ text: root.title;
80+ font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
81+ horizontalAlignment: Text.AlignLeft;
82+ }
83+,Label {
84+ id: subtitleLabel;
85+ objectName: "subtitleLabel";
86+ anchors { right: parent.right;
87+ left: parent.left;
88+ rightMargin: units.gu(1);
89+ top: titleLabel.bottom;
90+ }
91+ anchors.topMargin: units.dp(2);
92+ elide: Text.ElideRight;
93+ maximumLineCount: 1;
94+ fontSize: "x-small";
95+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
96+ color: backgroundLoader.active && backgroundLoader.item && root.scopeStyle ? root.scopeStyle.getTextColor(backgroundLoader.item.luminance) : (backgroundLoader.item && backgroundLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
97+ visible: titleLabel.visible && titleLabel.text;
98+ text: cardData && cardData["subtitle"] || "";
99+ font.weight: Font.Light;
100+ }
101+,Icon {
102+ id: emblemIcon;
103+ objectName: "emblemIcon";
104+ anchors {
105+ bottom: titleLabel.baseline;
106+ right: parent.right;
107+ rightMargin: units.gu(1);
108+ }
109+ source: cardData && cardData["emblem"] || "";
110+ color: backgroundLoader.active && backgroundLoader.item && root.scopeStyle ? root.scopeStyle.getTextColor(backgroundLoader.item.luminance) : (backgroundLoader.item && backgroundLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
111+ height: source != "" ? titleLabel.font.pixelSize : 0;
112+ width: implicitWidth > 0 && implicitHeight > 0 ? (implicitWidth / implicitHeight * height) : implicitWidth;
113+ }
114+
115+ ]
116+ }
117+UbuntuShape {
118+ id: touchdown;
119+ objectName: "touchdown";
120+ anchors { fill: backgroundLoader }
121+ visible: root.artShapeStyle != "shadow" && root.artShapeStyle != "icon" && root.pressed;
122+ radius: "medium";
123+ borderSource: "radius_pressed.sci"
124+}
125+implicitHeight: headerTitleContainer.y + headerTitleContainer.height + units.gu(1);
126+}
tests/plugins/Dash/cardcreator/7.res+3−5
@@ -5,11 +5,9 @@ AbstractButton {
5 property string backgroundShapeStyle: "inset";
5 property string backgroundShapeStyle: "inset";
6 property real fontScale: 1.0;
6 property real fontScale: 1.0;
7 property var scopeStyle: null;
7 property var scopeStyle: null;
8− property int titleAlignment: Text.AlignLeft;
9 property int fixedHeaderHeight: -1;
8 property int fixedHeaderHeight: -1;
10 property size fixedArtShapeSize: Qt.size(-1, -1);
9 property size fixedArtShapeSize: Qt.size(-1, -1);
11 readonly property string title: cardData && cardData["title"] || "";
10 readonly property string title: cardData && cardData["title"] || "";
12− property bool asynchronous: true;
13 property bool showHeader: true;
11 property bool showHeader: true;
14 implicitWidth: childrenRect.width;
12 implicitWidth: childrenRect.width;
15 enabled: true;
13 enabled: true;
@@ -18,7 +16,7 @@ Loader {
18 id: backgroundLoader;
16 id: backgroundLoader;
19 objectName: "backgroundLoader";
17 objectName: "backgroundLoader";
20 anchors.fill: parent;
18 anchors.fill: parent;
21− asynchronous: root.asynchronous;
19+ asynchronous: true;
22 visible: status == Loader.Ready;
20 visible: status == Loader.Ready;
23 sourceComponent: UbuntuShape {
21 sourceComponent: UbuntuShape {
24 objectName: "background";
22 objectName: "background";
@@ -59,7 +57,7 @@ Row {
59 objectName: "outerRow";
57 objectName: "outerRow";
60 property real margins: units.gu(1);
58 property real margins: units.gu(1);
61 spacing: margins;
59 spacing: margins;
62− height: root.fixedHeaderHeight != -1 ? root.fixedHeaderHeight : implicitHeight;
60+ height: root.fixedHeaderHeight;
63 anchors { top: parent.top;
61 anchors { top: parent.top;
64 topMargin: units.gu(1);
62 topMargin: units.gu(1);
65 left: parent.left;
63 left: parent.left;
@@ -103,7 +101,7 @@ CroppedImageMinimumSourceSize {
103 width: undefined;
101 width: undefined;
104 text: root.title;
102 text: root.title;
105 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
103 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
106− horizontalAlignment: root.titleAlignment;
104+ horizontalAlignment: Text.AlignLeft;
107 }
105 }
108,Label {
106,Label {
109 id: subtitleLabel;
107 id: subtitleLabel;
tests/plugins/Dash/cardcreator/7.res.cardcreatornew file+149
@@ -0,0 +1,149 @@
1+AbstractButton {
2+ id: root;
3+ property var cardData;
4+ property string artShapeStyle: "inset";
5+ property string backgroundShapeStyle: "inset";
6+ property real fontScale: 1.0;
7+ property var scopeStyle: null;
8+ property size fixedArtShapeSize: Qt.size(-1, -1);
9+ readonly property string title: cardData && cardData["title"] || "";
10+ property bool showHeader: true;
11+ implicitWidth: childrenRect.width;
12+ enabled: true;
13+
14+Loader {
15+ id: backgroundLoader;
16+ objectName: "backgroundLoader";
17+ anchors.fill: parent;
18+ asynchronous: false;
19+ visible: status == Loader.Ready;
20+ sourceComponent: UbuntuShape {
21+ objectName: "background";
22+ radius: "medium";
23+ aspect: {
24+ switch (root.backgroundShapeStyle) {
25+ case "inset": return UbuntuShape.Inset;
26+ case "shadow": return UbuntuShape.DropShadow;
27+ default:
28+ case "flat": return UbuntuShape.Flat;
29+ }
30+ }
31+ backgroundColor: getColor(0) || "white";
32+ secondaryBackgroundColor: getColor(1) || backgroundColor;
33+ backgroundMode: UbuntuShape.VerticalGradient;
34+ anchors.fill: parent;
35+ source: backgroundImage.source ? backgroundImage : null;
36+ property real luminance: Style.luminance(backgroundColor);
37+ property Image backgroundImage: Image {
38+ objectName: "backgroundImage";
39+ source: {
40+ if (cardData && typeof cardData["background"] === "string") return cardData["background"];
41+ else return "";
42+ }
43+ }
44+ function getColor(index) {
45+ if (cardData && typeof cardData["background"] === "object"
46+ && (cardData["background"]["type"] === "color" || cardData["background"]["type"] === "gradient")) {
47+ return cardData["background"]["elements"][index];
48+ } else return index === 0 ? "#E9E9E9" : "#E9AAE9";
49+ }
50+ }
51+ }
52+readonly property size artShapeSize: Qt.size(-1, -1);
53+readonly property int headerHeight: row.height;
54+Row {
55+ id: row;
56+ objectName: "outerRow";
57+ property real margins: units.gu(1);
58+ spacing: margins;
59+ anchors { top: parent.top;
60+ topMargin: units.gu(1);
61+ left: parent.left;
62+ }
63+ anchors.right: parent.right;
64+ anchors.margins: margins;
65+ anchors.rightMargin: 0;
66+ data: [
67+CroppedImageMinimumSourceSize {
68+ id: mascotImage;
69+ objectName: "mascotImage";
70+ anchors { verticalCenter: parent.verticalCenter; }
71+ source: cardData && cardData["mascot"] || "";
72+ width: units.gu(6);
73+ height: units.gu(5.625);
74+ horizontalAlignment: Image.AlignHCenter;
75+ verticalAlignment: Image.AlignVCenter;
76+ visible: showHeader;
77+ }
78+
79+,Item {
80+ id: headerTitleContainer;
81+ anchors { verticalCenter: parent.verticalCenter; }
82+ width: parent.width - x;
83+ implicitHeight: titleLabel.height + subtitleLabel.height + attributesRow.height;
84+ data: [
85+ Label {
86+ id: titleLabel;
87+ objectName: "titleLabel";
88+ anchors { right: parent.right;
89+ rightMargin: units.gu(1);
90+ left: parent.left;
91+ top: parent.top; }
92+ elide: Text.ElideRight;
93+ fontSize: "small";
94+ wrapMode: Text.Wrap;
95+ maximumLineCount: 2;
96+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
97+ color: backgroundLoader.active && backgroundLoader.item && root.scopeStyle ? root.scopeStyle.getTextColor(backgroundLoader.item.luminance) : (backgroundLoader.item && backgroundLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
98+ visible: showHeader ;
99+ width: undefined;
100+ text: root.title;
101+ font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
102+ horizontalAlignment: Text.AlignLeft;
103+ }
104+,Label {
105+ id: subtitleLabel;
106+ objectName: "subtitleLabel";
107+ anchors { right: parent.right;
108+ left: parent.left;
109+ rightMargin: units.gu(1);
110+ top: titleLabel.bottom;
111+ }
112+ anchors.topMargin: units.dp(2);
113+ elide: Text.ElideRight;
114+ maximumLineCount: 1;
115+ fontSize: "x-small";
116+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
117+ color: backgroundLoader.active && backgroundLoader.item && root.scopeStyle ? root.scopeStyle.getTextColor(backgroundLoader.item.luminance) : (backgroundLoader.item && backgroundLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
118+ visible: titleLabel.visible && titleLabel.text;
119+ text: cardData && cardData["subtitle"] || "";
120+ font.weight: Font.Light;
121+ }
122+,CardAttributes {
123+ id: attributesRow;
124+ objectName: "attributesRow";
125+ anchors { right: parent.right;
126+ left: parent.left;
127+ rightMargin: units.gu(1);
128+ top: subtitleLabel.bottom;
129+ }
130+ color: backgroundLoader.active && backgroundLoader.item && root.scopeStyle ? root.scopeStyle.getTextColor(backgroundLoader.item.luminance) : (backgroundLoader.item && backgroundLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
131+ fontScale: root.fontScale;
132+ model: cardData && cardData["attributes"];
133+ }
134+
135+ ]
136+ }
137+
138+ ]
139+ }
140+UbuntuShape {
141+ id: touchdown;
142+ objectName: "touchdown";
143+ anchors { fill: backgroundLoader }
144+ visible: root.artShapeStyle != "shadow" && root.artShapeStyle != "icon" && root.pressed;
145+ radius: "medium";
146+ borderSource: "radius_pressed.sci"
147+}
148+implicitHeight: row.y + row.height + units.gu(1);
149+}
tests/plugins/Dash/cardcreator/8.res+3−5
@@ -5,11 +5,9 @@ AbstractButton {
5 property string backgroundShapeStyle: "inset";
5 property string backgroundShapeStyle: "inset";
6 property real fontScale: 1.0;
6 property real fontScale: 1.0;
7 property var scopeStyle: null;
7 property var scopeStyle: null;
8− property int titleAlignment: Text.AlignLeft;
9 property int fixedHeaderHeight: -1;
8 property int fixedHeaderHeight: -1;
10 property size fixedArtShapeSize: Qt.size(-1, -1);
9 property size fixedArtShapeSize: Qt.size(-1, -1);
11 readonly property string title: cardData && cardData["title"] || "";
10 readonly property string title: cardData && cardData["title"] || "";
12− property bool asynchronous: true;
13 property bool showHeader: true;
11 property bool showHeader: true;
14 implicitWidth: childrenRect.width;
12 implicitWidth: childrenRect.width;
15 enabled: true;
13 enabled: true;
@@ -18,7 +16,7 @@ Loader {
18 id: backgroundLoader;
16 id: backgroundLoader;
19 objectName: "backgroundLoader";
17 objectName: "backgroundLoader";
20 anchors.fill: parent;
18 anchors.fill: parent;
21− asynchronous: root.asynchronous;
19+ asynchronous: true;
22 visible: status == Loader.Ready;
20 visible: status == Loader.Ready;
23 sourceComponent: UbuntuShape {
21 sourceComponent: UbuntuShape {
24 objectName: "background";
22 objectName: "background";
@@ -59,7 +57,7 @@ Row {
59 objectName: "outerRow";
57 objectName: "outerRow";
60 property real margins: units.gu(1);
58 property real margins: units.gu(1);
61 spacing: margins;
59 spacing: margins;
62− height: root.fixedHeaderHeight != -1 ? root.fixedHeaderHeight : implicitHeight;
60+ height: root.fixedHeaderHeight;
63 anchors { top: parent.top;
61 anchors { top: parent.top;
64 topMargin: units.gu(1);
62 topMargin: units.gu(1);
65left: parent.left;
63left: parent.left;
@@ -94,7 +92,7 @@ left: parent.left;
94 width: parent.width - x;
92 width: parent.width - x;
95 text: root.title;
93 text: root.title;
96 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
94 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
97− horizontalAlignment: root.titleAlignment;
95+ horizontalAlignment: Text.AlignLeft;
98 }
96 }
99
97
100 ]
98 ]
tests/plugins/Dash/cardcreator/8.res.cardcreatornew file+107
@@ -0,0 +1,107 @@
1+AbstractButton {
2+ id: root;
3+ property var cardData;
4+ property string artShapeStyle: "inset";
5+ property string backgroundShapeStyle: "inset";
6+ property real fontScale: 1.0;
7+ property var scopeStyle: null;
8+ property size fixedArtShapeSize: Qt.size(-1, -1);
9+ readonly property string title: cardData && cardData["title"] || "";
10+ property bool showHeader: true;
11+ implicitWidth: childrenRect.width;
12+ enabled: true;
13+
14+Loader {
15+ id: backgroundLoader;
16+ objectName: "backgroundLoader";
17+ anchors.fill: parent;
18+ asynchronous: false;
19+ visible: status == Loader.Ready;
20+ sourceComponent: UbuntuShape {
21+ objectName: "background";
22+ radius: "medium";
23+ aspect: {
24+ switch (root.backgroundShapeStyle) {
25+ case "inset": return UbuntuShape.Inset;
26+ case "shadow": return UbuntuShape.DropShadow;
27+ default:
28+ case "flat": return UbuntuShape.Flat;
29+ }
30+ }
31+ backgroundColor: getColor(0) || "white";
32+ secondaryBackgroundColor: getColor(1) || backgroundColor;
33+ backgroundMode: UbuntuShape.VerticalGradient;
34+ anchors.fill: parent;
35+ source: backgroundImage.source ? backgroundImage : null;
36+ property real luminance: Style.luminance(backgroundColor);
37+ property Image backgroundImage: Image {
38+ objectName: "backgroundImage";
39+ source: {
40+ if (cardData && typeof cardData["background"] === "string") return cardData["background"];
41+ else return "";
42+ }
43+ }
44+ function getColor(index) {
45+ if (cardData && typeof cardData["background"] === "object"
46+ && (cardData["background"]["type"] === "color" || cardData["background"]["type"] === "gradient")) {
47+ return cardData["background"]["elements"][index];
48+ } else return index === 0 ? "#E9E9E9" : "#E9AAE9";
49+ }
50+ }
51+ }
52+readonly property size artShapeSize: Qt.size(-1, -1);
53+readonly property int headerHeight: row.height;
54+Row {
55+ id: row;
56+ objectName: "outerRow";
57+ property real margins: units.gu(1);
58+ spacing: margins;
59+ anchors { top: parent.top;
60+ topMargin: units.gu(1);
61+left: parent.left;
62+ }
63+ anchors.right: parent.right;
64+ anchors.margins: margins;
65+ anchors.rightMargin: 0;
66+ data: [
67+ CroppedImageMinimumSourceSize {
68+ id: mascotImage;
69+ objectName: "mascotImage";
70+ anchors { verticalCenter: parent.verticalCenter; }
71+ source: cardData && cardData["mascot"] || "";
72+ width: units.gu(6);
73+ height: units.gu(5.625);
74+ horizontalAlignment: Image.AlignHCenter;
75+ verticalAlignment: Image.AlignVCenter;
76+ visible: showHeader;
77+ }
78+,Label {
79+ id: titleLabel;
80+ objectName: "titleLabel";
81+ anchors { verticalCenter: parent.verticalCenter;
82+ }
83+ elide: Text.ElideRight;
84+ fontSize: "small";
85+ wrapMode: Text.Wrap;
86+ maximumLineCount: 2;
87+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
88+ color: backgroundLoader.active && backgroundLoader.item && root.scopeStyle ? root.scopeStyle.getTextColor(backgroundLoader.item.luminance) : (backgroundLoader.item && backgroundLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
89+ visible: showHeader ;
90+ width: parent.width - x;
91+ text: root.title;
92+ font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
93+ horizontalAlignment: Text.AlignLeft;
94+ }
95+
96+ ]
97+ }
98+UbuntuShape {
99+ id: touchdown;
100+ objectName: "touchdown";
101+ anchors { fill: backgroundLoader }
102+ visible: root.artShapeStyle != "shadow" && root.artShapeStyle != "icon" && root.pressed;
103+ radius: "medium";
104+ borderSource: "radius_pressed.sci"
105+}
106+implicitHeight: row.y + row.height + units.gu(1);
107+}
tests/plugins/Dash/cardcreator/9.res+4−5
@@ -5,11 +5,9 @@ AbstractButton {
5 property string backgroundShapeStyle: "inset";
5 property string backgroundShapeStyle: "inset";
6 property real fontScale: 1.0;
6 property real fontScale: 1.0;
7 property var scopeStyle: null;
7 property var scopeStyle: null;
8− property int titleAlignment: Text.AlignLeft;
9 property int fixedHeaderHeight: -1;
8 property int fixedHeaderHeight: -1;
10 property size fixedArtShapeSize: Qt.size(-1, -1);
9 property size fixedArtShapeSize: Qt.size(-1, -1);
11 readonly property string title: cardData && cardData["title"] || "";
10 readonly property string title: cardData && cardData["title"] || "";
12− property bool asynchronous: true;
13 property bool showHeader: true;
11 property bool showHeader: true;
14 implicitWidth: childrenRect.width;
12 implicitWidth: childrenRect.width;
15 enabled: true;
13 enabled: true;
@@ -36,7 +34,7 @@ top: parent.top;
36 width: undefined;
34 width: undefined;
37 text: root.title;
35 text: root.title;
38 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
36 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
39− horizontalAlignment: root.titleAlignment;
37+ horizontalAlignment: Text.AlignLeft;
40 }
38 }
41Label {
39Label {
42 id: subtitleLabel;
40 id: subtitleLabel;
@@ -72,7 +70,7 @@ CardAudioProgress {
72 id: audioButton;
70 id: audioButton;
73 anchors.fill: undefined;
71 anchors.fill: undefined;
74 width: height;
72 width: height;
75− height: (root.fixedHeaderHeight > 0 ? root.fixedHeaderHeight : headerHeight) + 2 * units.gu(1);
73+ height: root.fixedHeaderHeight + 2 * units.gu(1);
76 readonly property url source: (cardData["quickPreviewData"] && cardData["quickPreviewData"]["uri"]) || "";
74 readonly property url source: (cardData["quickPreviewData"] && cardData["quickPreviewData"]["uri"]) || "";
77 UbuntuShape {
75 UbuntuShape {
78 anchors.fill: parent;
76 anchors.fill: parent;
@@ -93,7 +91,8 @@ CardAudioProgress {
93 opacity: 0.9;
91 opacity: 0.9;
94 name: DashAudioPlayer.playing && AudioUrlComparer.compare(parent.source, DashAudioPlayer.currentSource) ? "media-playback-pause" : "media-playback-start";
92 name: DashAudioPlayer.playing && AudioUrlComparer.compare(parent.source, DashAudioPlayer.currentSource) ? "media-playback-pause" : "media-playback-start";
95 color: "white";
93 color: "white";
94+ asynchronous: true;
96− }
95+ }
97 onClicked: {
96 onClicked: {
98 if (AudioUrlComparer.compare(source, DashAudioPlayer.currentSource)) {
97 if (AudioUrlComparer.compare(source, DashAudioPlayer.currentSource)) {
99 if (DashAudioPlayer.playing) {
98 if (DashAudioPlayer.playing) {
tests/plugins/Dash/cardcreator/9.res.cardcreatornew file+119
@@ -0,0 +1,119 @@
1+AbstractButton {
2+ id: root;
3+ property var cardData;
4+ property string artShapeStyle: "inset";
5+ property string backgroundShapeStyle: "inset";
6+ property real fontScale: 1.0;
7+ property var scopeStyle: null;
8+ property size fixedArtShapeSize: Qt.size(-1, -1);
9+ readonly property string title: cardData && cardData["title"] || "";
10+ property bool showHeader: true;
11+ implicitWidth: childrenRect.width;
12+ enabled: true;
13+
14+readonly property size artShapeSize: Qt.size(-1, -1);
15+readonly property int headerHeight: titleLabel.height + subtitleLabel.height + subtitleLabel.anchors.topMargin + audioProgressBar.height + audioProgressBar.anchors.topMargin;
16+Label {
17+ id: titleLabel;
18+ objectName: "titleLabel";
19+ anchors { right: parent.right;
20+rightMargin: units.gu(1);
21+left: audioButton.right;
22+ leftMargin: units.gu(1);
23+top: parent.top;
24+ topMargin: units.gu(1);
25+ }
26+ elide: Text.ElideRight;
27+ fontSize: "small";
28+ wrapMode: Text.Wrap;
29+ maximumLineCount: 2;
30+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
31+ color: root.scopeStyle ? root.scopeStyle.foreground : theme.palette.normal.baseText;
32+ visible: showHeader ;
33+ width: undefined;
34+ text: root.title;
35+ font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
36+ horizontalAlignment: Text.AlignLeft;
37+ }
38+Label {
39+ id: subtitleLabel;
40+ objectName: "subtitleLabel";
41+ anchors { left: titleLabel.left;
42+ leftMargin: titleLabel.leftMargin;
43+rightMargin: units.gu(1);
44+right: titleLabel.right;
45+top: titleLabel.bottom;
46+ }
47+ anchors.topMargin: units.dp(2);
48+ elide: Text.ElideRight;
49+ maximumLineCount: 1;
50+ fontSize: "x-small";
51+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
52+ color: root.scopeStyle ? root.scopeStyle.foreground : theme.palette.normal.baseText;
53+ visible: titleLabel.visible && titleLabel.text;
54+ text: cardData && cardData["subtitle"] || "";
55+ font.weight: Font.Light;
56+ }
57+CardAudioProgress {
58+ id: audioProgressBar;
59+ duration: (cardData["quickPreviewData"] && cardData["quickPreviewData"]["duration"]) || 0;
60+ source: (cardData["quickPreviewData"] && cardData["quickPreviewData"]["uri"]) || "";
61+ anchors {
62+ bottom: audioButton.bottom;
63+ left: audioButton.right;
64+ right: parent.right;
65+ margins: units.gu(1);
66+ }
67+ color: root.scopeStyle ? root.scopeStyle.foreground : theme.palette.normal.baseText;
68+ }AbstractButton {
69+ id: audioButton;
70+ anchors.fill: undefined;
71+ width: height;
72+ height: headerHeight + 2 * units.gu(1);
73+ readonly property url source: (cardData["quickPreviewData"] && cardData["quickPreviewData"]["uri"]) || "";
74+ UbuntuShape {
75+ anchors.fill: parent;
76+ visible: parent.pressed;
77+ radius: "medium";
78+ }
79+ Rectangle {
80+ color: Qt.rgba(0, 0, 0, 0.5);
81+ anchors.centerIn: parent;
82+ width: parent.width * 0.5;
83+ height: width;
84+ radius: width / 2;
85+ }
86+ Icon {
87+ anchors.centerIn: parent;
88+ width: parent.width * 0.3;
89+ height: width;
90+ opacity: 0.9;
91+ name: DashAudioPlayer.playing && AudioUrlComparer.compare(parent.source, DashAudioPlayer.currentSource) ? "media-playback-pause" : "media-playback-start";
92+ color: "white";
93+ asynchronous: false;
94+ }
95+ onClicked: {
96+ if (AudioUrlComparer.compare(source, DashAudioPlayer.currentSource)) {
97+ if (DashAudioPlayer.playing) {
98+ DashAudioPlayer.pause();
99+ } else {
100+ DashAudioPlayer.play();
101+ }
102+ } else {
103+ var playlist = (cardData["quickPreviewData"] && cardData["quickPreviewData"]["playlist"]) || null;
104+ DashAudioPlayer.playSource(source, playlist);
105+ }
106+ }
107+ onPressAndHold: {
108+ root.pressAndHold();
109+ }
110+ }UbuntuShape {
111+ id: touchdown;
112+ objectName: "touchdown";
113+ anchors { fill: root }
114+ visible: root.artShapeStyle != "shadow" && root.artShapeStyle != "icon" && root.pressed;
115+ radius: "medium";
116+ borderSource: "radius_pressed.sci"
117+ }
118+implicitHeight: audioButton.height;
119+}
tests/plugins/Dash/cardcreatortest.cpp+32−22
@@ -45,6 +45,30 @@ private Q_SLOTS:
45 delete view;
45 delete view;
46 }
46 }
47
47
48+ void compareFileContents(const QString &filePath, const QString cardStringResult)
49+ {
50+ QFile testResultFile(filePath);
51+ QVERIFY(testResultFile.open(QIODevice::ReadOnly));
52+ QTextStream ts2(&testResultFile);
53+
54+ // Record failed results to /tmp
55+ const QString executedResult = cardStringResult;
56+ QTemporaryFile tmpFile(QDir::tempPath() + QDir::separator() + "testCardCreatorFailedResultXXXXXX");
57+ tmpFile.open();
58+ tmpFile.setAutoRemove(false);
59+ tmpFile.write(executedResult.toUtf8().constData());
60+
61+ // Line by line comparison
62+ const QStringList expectedLines = ts2.readAll().trimmed().replace(QRegExp("\n\\s*\n"),"\n").split("\n");
63+ const QStringList cardStringResultLines = cardStringResult.trimmed().replace(QRegExp("\n\\s*\n"),"\n").split("\n");
64+ for (int i = 0; i < expectedLines.size(); ++i) {
65+ QCOMPARE(cardStringResultLines[i].simplified(), expectedLines[i].simplified());
66+ }
67+
68+ // Remove the result if it passed
69+ tmpFile.setAutoRemove(true);
70+ }
71+
48 void testKnownCases()
72 void testKnownCases()
49 {
73 {
50 const QString templateString("template: ");
74 const QString templateString("template: ");
@@ -68,33 +92,19 @@ private Q_SLOTS:
68 const QString templateJSON = lines[0].mid(templateString.length());
92 const QString templateJSON = lines[0].mid(templateString.length());
69 const QString componentsJSON = lines[1].mid(componentsString.length());
93 const QString componentsJSON = lines[1].mid(componentsString.length());
70 const QString resultFileName = lines[2].mid(resultString.length());
94 const QString resultFileName = lines[2].mid(resultString.length());
71−
72 QVariant cardStringResult;
95 QVariant cardStringResult;
73− QMetaObject::invokeMethod(view->rootObject(), "cardString", Q_RETURN_ARG(QVariant, cardStringResult), Q_ARG(QVariant, templateJSON), Q_ARG(QVariant, componentsJSON));
96+ QVariant createCardComponentResult;
74−
75− QFile testResultFile(testDirPath + resultFileName);
76− QVERIFY(testResultFile.open(QIODevice::ReadOnly));
77− QTextStream ts2(&testResultFile);
78
97
79− // Record failed results to /tmp
98+ QMetaObject::invokeMethod(view->rootObject(), "cardString", Q_RETURN_ARG(QVariant, cardStringResult), Q_ARG(QVariant, templateJSON), Q_ARG(QVariant, componentsJSON), Q_ARG(QVariant, false));
80− const QString executedResult = cardStringResult.toString();
99+ compareFileContents(testDirPath + resultFileName, cardStringResult.toString());
81− QTemporaryFile tmpFile(QDir::tempPath() + QDir::separator() + "testCardCreatorFailedResultXXXXXX");
82− tmpFile.open();
83− tmpFile.setAutoRemove(false);
84− tmpFile.write(executedResult.toUtf8().constData());
85
100
86− // Line by line comparison
101+ QMetaObject::invokeMethod(view->rootObject(), "cardString", Q_RETURN_ARG(QVariant, cardStringResult), Q_ARG(QVariant, templateJSON), Q_ARG(QVariant, componentsJSON), Q_ARG(QVariant, true));
87− const QStringList expectedLines = ts2.readAll().trimmed().replace(QRegExp("\n\\s*\n"),"\n").split("\n");
102+ compareFileContents(testDirPath + resultFileName + ".cardcreator", cardStringResult.toString());
88− const QStringList cardStringResultLines = cardStringResult.toString().trimmed().replace(QRegExp("\n\\s*\n"),"\n").split("\n");
89− for (int i = 0; i < expectedLines.size(); ++i) {
90− QCOMPARE(cardStringResultLines[i].simplified(), expectedLines[i].simplified());
91− }
92
103
93− // Remove the result if it passed
104+ QMetaObject::invokeMethod(view->rootObject(), "createCardComponent", Q_RETURN_ARG(QVariant, createCardComponentResult), Q_ARG(QVariant, templateJSON), Q_ARG(QVariant, componentsJSON), Q_ARG(QVariant, false));
94− tmpFile.setAutoRemove(true);
105+ QVERIFY(createCardComponentResult.toBool());
95
106
96− QVariant createCardComponentResult;
97− QMetaObject::invokeMethod(view->rootObject(), "createCardComponent", Q_RETURN_ARG(QVariant, createCardComponentResult), Q_ARG(QVariant, templateJSON), Q_ARG(QVariant, componentsJSON));
107+ QMetaObject::invokeMethod(view->rootObject(), "createCardComponent", Q_RETURN_ARG(QVariant, createCardComponentResult), Q_ARG(QVariant, templateJSON), Q_ARG(QVariant, componentsJSON), Q_ARG(QVariant, true));
98 QVERIFY(createCardComponentResult.toBool());
108 QVERIFY(createCardComponentResult.toBool());
99 }
109 }
100 }
110 }
tests/plugins/Dash/cardcreatortest.qml+4−4
@@ -19,11 +19,11 @@ import "../../../plugins/Dash/CardCreator.js" as CardCreator
19
19
20Item {
20Item {
21 id: root
21 id: root
22− function cardString(template, components) {
22+ function cardString(template, components, isCardCreator) {
23− return CardCreator.cardString(JSON.parse(template), JSON.parse(components));
23+ return CardCreator.cardString(JSON.parse(template), JSON.parse(components), isCardCreator);
24 }
24 }
25
25
26− function createCardComponent(template, components) {
26+ function createCardComponent(template, components, isCardCreator) {
27− return CardCreator.createCardComponent(root, JSON.parse(template), JSON.parse(components)) !== null;
27+ return CardCreator.createCardComponent(root, JSON.parse(template), JSON.parse(components), isCardCreator) !== null;
28 }
28 }
29}
29}
tests/plugins/IntegratedLightDM/CMakeLists.txt+25
@@ -65,3 +65,28 @@ add_unity8_uitest(GreeterUsers GreeterUsersModelTestExec
65 DEPENDS MockLightDM
65 DEPENDS MockLightDM
66 LIGHTDM
66 LIGHTDM
67 )
67 )
68+
69+add_executable(GreeterIntegratedTestExec
70+ integrated.cpp
71+ )
72+qt5_use_modules(GreeterIntegratedTestExec Core DBus Quick Test)
73+target_link_libraries(GreeterIntegratedTestExec
74+ ${GLIB_LIBRARIES}
75+ integratedLightDMSession
76+ )
77+target_include_directories(GreeterIntegratedTestExec PUBLIC
78+ ${GLIB_INCLUDE_DIRS}
79+ ${CMAKE_SOURCE_DIR}/plugins/IntegratedLightDM/liblightdm
80+ )
81+add_unity8_unittest(GreeterIntegrated dbus-test-runner
82+ ENVIRONMENT LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/plugins/IntegratedLightDM/liblightdm/
83+ ARG_PREFIX "--parameter"
84+ ARGS
85+ --task $<TARGET_FILE:mock-server>
86+ --task-name server
87+ --ignore-return
88+ --task $<TARGET_FILE:GreeterIntegratedTestExec>
89+ --task-name client
90+ --wait-for org.freedesktop.Accounts
91+ DEPENDS integratedLightDMSession
92+ )
tests/plugins/IntegratedLightDM/integrated.cppnew file+91
@@ -0,0 +1,91 @@
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 "UsersModel.h"
18+
19+#include <glib.h>
20+#include <QDBusInterface>
21+#include <QDBusReply>
22+#include <QtTest>
23+
24+class GreeterIntegratedTest : public QObject
25+{
26+ Q_OBJECT
27+
28+private Q_SLOTS:
29+
30+ void init()
31+ {
32+ m_accounts = new QDBusInterface(QStringLiteral("org.freedesktop.Accounts"),
33+ QStringLiteral("/org/freedesktop/Accounts"),
34+ QStringLiteral("org.freedesktop.Accounts"),
35+ QDBusConnection::sessionBus());
36+ QDBusReply<bool> addReply = m_accounts->call(QStringLiteral("AddUser"),
37+ g_get_user_name());
38+ QVERIFY(addReply.isValid());
39+ QCOMPARE(addReply.value(), true);
40+
41+ m_user = new QDBusInterface(QStringLiteral("org.freedesktop.Accounts"),
42+ QStringLiteral("/%1").arg(g_get_user_name()),
43+ QStringLiteral("org.freedesktop.DBus.Properties"),
44+ QDBusConnection::sessionBus());
45+
46+ m_model = new QLightDM::UsersModel();
47+ QVERIFY(m_model);
48+ }
49+
50+ void cleanup()
51+ {
52+ QDBusReply<bool> addReply = m_accounts->call(QStringLiteral("RemoveUser"),
53+ g_get_user_name());
54+ QVERIFY(addReply.isValid());
55+ QCOMPARE(addReply.value(), true);
56+
57+ delete m_model;
58+ delete m_accounts;
59+ delete m_user;
60+ }
61+
62+ void testWatchRealName()
63+ {
64+ auto index = m_model->index(0, 0);
65+
66+ QCOMPARE(m_model->data(index, QLightDM::UsersModel::RealNameRole).toString(),
67+ QStringLiteral(""));
68+
69+ // The real AccountsService doesn't let you set via dbus properties. You
70+ // have to call SetRealName instead (so that they can protect the call
71+ // via policykit). But our test server does let us.
72+ QVariant wrapped = QVariant::fromValue(QDBusVariant(QStringLiteral("Test User")));
73+ QDBusReply<void> reply = m_user->call(QStringLiteral("Set"),
74+ QStringLiteral("org.freedesktop.Accounts.User"),
75+ QStringLiteral("RealName"),
76+ wrapped);
77+ QVERIFY(reply.isValid());
78+
79+ QTRY_COMPARE(m_model->data(index, QLightDM::UsersModel::RealNameRole).toString(),
80+ QStringLiteral("Test User"));
81+ }
82+
83+private:
84+ QLightDM::UsersModel *m_model;
85+ QDBusInterface *m_accounts;
86+ QDBusInterface *m_user;
87+};
88+
89+QTEST_MAIN(GreeterIntegratedTest)
90+
91+#include "integrated.moc"
tests/plugins/Utils/CMakeLists.txt+7−1
@@ -4,15 +4,21 @@ include_directories(
4 ${CMAKE_CURRENT_BINARY_DIR}
4 ${CMAKE_CURRENT_BINARY_DIR}
5 )
5 )
6
6
7+add_definitions(-DCONFIG_TESTING)
8+
7foreach(util_test
9foreach(util_test
8 QLimitProxyModel
10 QLimitProxyModel
9 UnitySortFilterProxyModel
11 UnitySortFilterProxyModel
10 WindowInputMonitor
12 WindowInputMonitor
13+ DeviceConfigParser
11)
14)
12 add_executable(${util_test}TestExec ${util_test}Test.cpp ModelTest.cpp)
15 add_executable(${util_test}TestExec ${util_test}Test.cpp ModelTest.cpp)
13 qt5_use_modules(${util_test}TestExec Test Core Qml)
16 qt5_use_modules(${util_test}TestExec Test Core Qml)
14 target_link_libraries(${util_test}TestExec Utils-qml)
17 target_link_libraries(${util_test}TestExec Utils-qml)
15− add_unity8_unittest(${util_test} ${util_test}TestExec ADD_TEST)
18+ add_unity8_unittest(${util_test} ${util_test}TestExec ADD_TEST
19+ ENVIRONMENT XDG_CONFIG_HOME=${CMAKE_CURRENT_BINARY_DIR}
20+ )
21+
16endforeach()
22endforeach()
17
23
18# plain qml test
24# plain qml test
tests/plugins/Utils/DeviceConfigParserTest.cppnew file+70
@@ -0,0 +1,70 @@
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+// local
18+#include "deviceconfigparser.h"
19+
20+// Qt
21+#include <QTest>
22+#include <QDebug>
23+#include <QSettings>
24+
25+class DeviceConfigParserTest : public QObject
26+{
27+ Q_OBJECT
28+
29+private Q_SLOTS:
30+
31+ void initTestCase() {
32+ }
33+
34+ void testDefaults()
35+ {
36+ DeviceConfigParser p;
37+ p.setName("nonexistent");
38+
39+ QCOMPARE(p.supportedOrientations(), Qt::PortraitOrientation | Qt::InvertedPortraitOrientation | Qt::LandscapeOrientation | Qt::InvertedLandscapeOrientation);
40+ QCOMPARE(p.primaryOrientation(), Qt::PrimaryOrientation);
41+ QCOMPARE(p.portraitOrientation(), Qt::PortraitOrientation);
42+ QCOMPARE(p.invertedPortraitOrientation(), Qt::InvertedPortraitOrientation);
43+ QCOMPARE(p.landscapeOrientation(), Qt::LandscapeOrientation);
44+ QCOMPARE(p.invertedLandscapeOrientation(), Qt::InvertedLandscapeOrientation);
45+ }
46+
47+ void testCustomFile() {
48+ QSettings s("./devices.conf", QSettings::IniFormat);
49+ s.beginGroup("fakedevice");
50+
51+ s.setValue("SupportedOrientations", QStringList() << "Portrait" << "Landscape" << "InvertedLandscape");
52+ s.setValue("PrimaryOrientation", "InvertedLandscape");
53+ s.sync();
54+
55+ DeviceConfigParser p;
56+ p.setName("fakedevice");
57+
58+ QCOMPARE(p.supportedOrientations(), Qt::PortraitOrientation | Qt::LandscapeOrientation | Qt::InvertedLandscapeOrientation);
59+ QCOMPARE(p.primaryOrientation(), Qt::InvertedLandscapeOrientation);
60+ QCOMPARE(p.portraitOrientation(), Qt::PortraitOrientation);
61+ QCOMPARE(p.invertedPortraitOrientation(), Qt::InvertedPortraitOrientation);
62+ QCOMPARE(p.landscapeOrientation(), Qt::LandscapeOrientation);
63+ QCOMPARE(p.invertedLandscapeOrientation(), Qt::InvertedLandscapeOrientation);
64+ }
65+
66+};
67+
68+QTEST_GUILESS_MAIN(DeviceConfigParserTest)
69+
70+#include "DeviceConfigParserTest.moc"
tests/qmltests/CMakeLists.txt+2−1
@@ -5,6 +5,7 @@ add_unity8_qmltest(. OrientedShell LIGHTDM)
5add_unity8_qmltest(. DisabledScreenNotice)
5add_unity8_qmltest(. DisabledScreenNotice)
6add_unity8_qmltest(. Shell LIGHTDM)
6add_unity8_qmltest(. Shell LIGHTDM)
7add_unity8_qmltest(. ShellWithPin LIGHTDM)
7add_unity8_qmltest(. ShellWithPin LIGHTDM)
8+add_unity8_qmltest(. DeviceConfiguration)
8add_unity8_qmltest(Components Background)
9add_unity8_qmltest(Components Background)
9add_unity8_qmltest(Components Carousel)
10add_unity8_qmltest(Components Carousel)
10add_unity8_qmltest(Components Dialogs LIGHTDM)
11add_unity8_qmltest(Components Dialogs LIGHTDM)
@@ -29,7 +30,7 @@ add_unity8_qmlbenchmark(Dash CardBenchmark 1000)
29add_unity8_qmltest(Dash CardTool)
30add_unity8_qmltest(Dash CardTool)
30add_unity8_qmltest(Dash GenericScopeView)
31add_unity8_qmltest(Dash GenericScopeView)
31add_unity8_qmltest(Dash DashPageHeader)
32add_unity8_qmltest(Dash DashPageHeader)
32−add_unity8_qmltest(Dash PreviewListView)
33+add_unity8_qmltest(Dash PreviewView)
33add_unity8_qmltest(Dash/Previews Preview)
34add_unity8_qmltest(Dash/Previews Preview)
34add_unity8_qmltest(Dash/Previews PreviewActions)
35add_unity8_qmltest(Dash/Previews PreviewActions)
35add_unity8_qmltest(Dash/Previews PreviewAudioPlayback)
36add_unity8_qmltest(Dash/Previews PreviewAudioPlayback)
tests/qmltests/Components/tst_Lockscreen.qml+14−7
@@ -235,11 +235,14 @@ Rectangle {
235
235
236 function test_unlock_data() {
236 function test_unlock_data() {
237 return [
237 return [
238− {tag: "numeric", alphanumeric: false, password: "1234", minPinLength: 4, maxPinLength: 4},
238+ {tag: "numeric", alphanumeric: false, password: "1234", minPinLength: 4, maxPinLength: 4, keyboard: false},
239− {tag: "alphanumeric", alphanumeric: true, password: "password", minPinLength: -1, maxPinLength: -1},
239+ {tag: "alphanumeric", alphanumeric: true, password: "password", minPinLength: -1, maxPinLength: -1, keyboard: false},
240− {tag: "numeric (wrong)", alphanumeric: false, password: "4321", minPinLength: 4, maxPinLength: 4},
240+ {tag: "numeric (wrong)", alphanumeric: false, password: "4321", minPinLength: 4, maxPinLength: 4, keyboard: false},
241− {tag: "alphanumeric (wrong)", alphanumeric: true, password: "drowssap", minPinLength: -1, maxPinLength: -1},
241+ {tag: "alphanumeric (wrong)", alphanumeric: true, password: "drowssap", minPinLength: -1, maxPinLength: -1, keyboard: false},
242− {tag: "flexible length", alphanumeric: false, password: "1234", minPinLength: -1, maxPinLength: -1},
242+ {tag: "flexible length", alphanumeric: false, password: "1234", minPinLength: -1, maxPinLength: -1, keyboard: false},
243+ {tag: "numeric", alphanumeric: false, password: "1234", minPinLength: 4, maxPinLength: 4, keyboard: true},
244+ {tag: "numeric (wrong)", alphanumeric: false, password: "4321", minPinLength: 4, maxPinLength: 4, keyboard: true},
245+ {tag: "flexible length", alphanumeric: false, password: "1234", minPinLength: -1, maxPinLength: -1, keyboard: true}
243 ]
246 ]
244 }
247 }
245
248
@@ -259,8 +262,12 @@ Rectangle {
259 } else {
262 } else {
260 for (var i = 0; i < data.password.length; ++i) {
263 for (var i = 0; i < data.password.length; ++i) {
261 var character = data.password.charAt(i)
264 var character = data.password.charAt(i)
265+ if (data.keyboard) {
266+ typeString(character)
267+ } else {
262− var button = findChild(lockscreen, "pinPadButton" + character)
268+ var button = findChild(lockscreen, "pinPadButton" + character)
263− mouseClick(button, units.gu(1), units.gu(1))
269+ mouseClick(button, units.gu(1), units.gu(1))
270+ }
264 }
271 }
265 var confirmButton = findChild(lockscreen, "confirmButton");
272 var confirmButton = findChild(lockscreen, "confirmButton");
266 mouseClick(confirmButton, units.gu(1), units.gu(1));
273 mouseClick(confirmButton, units.gu(1), units.gu(1));
tests/qmltests/Dash/Previews/tst_PreviewAudioPlayback.qml+12−3
@@ -100,13 +100,17 @@ Rectangle {
100 }
100 }
101 }
101 }
102
102
103− function checkPlayerSource(index) {
103+ function checkPlayerUrls(modelFilename, playerUrl) {
104− var modelFilename = previewAudioPlayback.widgetData["tracks"][index]["source"].replace(/^.*[\\\/]/, '');
104+ var modelFilename = modelFilename.replace(/^.*[\\\/]/, '');
105− var playerFilename = DashAudioPlayer.currentSource.toString().replace(/^.*[\\\/]/, '');
105+ var playerFilename = playerUrl.toString().replace(/^.*[\\\/]/, '');
106
106
107 compare(modelFilename, playerFilename, "Player source is not set correctly.");
107 compare(modelFilename, playerFilename, "Player source is not set correctly.");
108 }
108 }
109
109
110+ function checkPlayerSource(index) {
111+ checkPlayerUrls(previewAudioPlayback.widgetData["tracks"][index]["source"], DashAudioPlayer.currentSource);
112+ }
113+
110 function test_playback() {
114 function test_playback() {
111 previewAudioPlayback.widgetData = tracksModel2;
115 previewAudioPlayback.widgetData = tracksModel2;
112 waitForRendering(previewAudioPlayback);
116 waitForRendering(previewAudioPlayback);
@@ -157,6 +161,11 @@ Rectangle {
157 tryCompare(audio, "playbackState", Audio.PlayingState);
161 tryCompare(audio, "playbackState", Audio.PlayingState);
158 checkPlayerSource(1);
162 checkPlayerSource(1);
159
163
164+ // Check the playlist is song 0, 1, 2
165+ checkPlayerUrls(tracksModel2["tracks"][0].source, audio.playlist.itemSource(0));
166+ checkPlayerUrls(tracksModel2["tracks"][1].source, audio.playlist.itemSource(1));
167+ checkPlayerUrls(tracksModel2["tracks"][2].source, audio.playlist.itemSource(2));
168+
160 tryCompare(track0ProgressBar, "visible", false);
169 tryCompare(track0ProgressBar, "visible", false);
161 tryCompare(track1ProgressBar, "visible", true);
170 tryCompare(track1ProgressBar, "visible", true);
162 tryCompare(track2ProgressBar, "visible", false);
171 tryCompare(track2ProgressBar, "visible", false);
tests/qmltests/Dash/Previews/tst_PreviewHeader.qml+18−1
@@ -38,6 +38,14 @@ Rectangle {
38 "attributes": [{"value":"text1","icon":"image://theme/ok"},{"value":"text2","icon":"image://theme/cancel"}]
38 "attributes": [{"value":"text1","icon":"image://theme/ok"},{"value":"text2","icon":"image://theme/cancel"}]
39 }
39 }
40
40
41+ property var emblemheaderjson: {
42+ "title": "THE TITLE",
43+ "subtitle": "Something catchy",
44+ "mascot": "../graphics/play_button.png",
45+ "attributes": [{"value":"text1","icon":"image://theme/ok"},{"value":"text2","icon":"image://theme/cancel"}],
46+ "emblem": Qt.resolvedUrl("../artwork/emblem.png")
47+ }
48+
41 property var brokenheaderjson: {
49 property var brokenheaderjson: {
42 "title": "THE TITLE",
50 "title": "THE TITLE",
43 "subtitle": "Something catchy",
51 "subtitle": "Something catchy",
@@ -64,7 +72,7 @@ Rectangle {
64
72
65 PreviewHeader {
73 PreviewHeader {
66 id: previewHeader
74 id: previewHeader
67− widgetData: headerjson
75+ widgetData: emblemheaderjson
68 width: units.gu(30)
76 width: units.gu(30)
69
77
70 Rectangle {
78 Rectangle {
@@ -136,6 +144,15 @@ Rectangle {
136 }
144 }
137 }
145 }
138
146
147+ function test_emblem() {
148+ previewHeader.widgetData = emblemheaderjson;
149+
150+ var emblemIcon = findChild(previewHeader, "emblemIcon");
151+ var titleLabel = findChild(previewHeader, "titleLabel");
152+ verify(emblemIcon.height > 0);
153+ compare(emblemIcon.height, titleLabel.font.pixelSize);
154+ }
155+
139 function test_json() {
156 function test_json() {
140 headerjson = origHeaderjson;
157 headerjson = origHeaderjson;
141 previewHeader.widgetData = headerjson;
158 previewHeader.widgetData = headerjson;
tests/qmltests/Dash/Previews/tst_PreviewSharing.qml+17−3
@@ -28,13 +28,18 @@ Rectangle {
28
28
29 property var shareData: {
29 property var shareData: {
30 "uri": [
30 "uri": [
31− "Text here",
31+ "file:///this/is/an/url",
32− "text here 2",
32+ "file:///this/is/an/url/2",
33− "text here 3"
33+ "file:///this/is/an/url/3"
34 ],
34 ],
35 "content-type": "text"
35 "content-type": "text"
36 }
36 }
37
37
38+ property var shareDataString: {
39+ "uri": "file:///this/is/an/url",
40+ "content-type": "text"
41+ }
42+
38 PreviewSharing {
43 PreviewSharing {
39 id: previewSharing
44 id: previewSharing
40 anchors { left: parent.left; bottom: parent.bottom; }
45 anchors { left: parent.left; bottom: parent.bottom; }
@@ -55,5 +60,14 @@ Rectangle {
55 mouseClick(previewSharing);
60 mouseClick(previewSharing);
56 compare(peerPicker.visible, true);
61 compare(peerPicker.visible, true);
57 }
62 }
63+
64+ function test_createExportedItems() {
65+ var exportedItems = previewSharing.createExportedItems(shareData["uri"]);
66+ for (var i = 0; i < exportedItems.length; i++) {
67+ compare(exportedItems[i].url, shareData["uri"][i]);
68+ }
69+ exportedItems = previewSharing.createExportedItems(shareDataString["uri"]);
70+ compare(exportedItems[0].url, shareDataString["uri"]);
71+ }
58 }
72 }
59}
73}
tests/qmltests/Dash/tst_CardTool.qml+4−4
@@ -339,22 +339,22 @@ Rectangle {
339 function test_card_title_alignment(data) {
339 function test_card_title_alignment(data) {
340 selector.selectedIndex = data.index;
340 selector.selectedIndex = data.index;
341
341
342− tryCompare(cardTool, "titleAlignment", Text.AlignLeft);
342+ tryCompareFunction(function() { return findChild(internalCard, "titleLabel").horizontalAlignment == Text.AlignLeft; }, true);
343
343
344 cardTool.components['title'] = { "field": "title", "align": "center" };
344 cardTool.components['title'] = { "field": "title", "align": "center" };
345 cardTool.componentsChanged();
345 cardTool.componentsChanged();
346
346
347− tryCompare(cardTool, "titleAlignment", data.value);
347+ tryCompareFunction(function() { return findChild(internalCard, "titleLabel").horizontalAlignment == data.value; }, true);
348
348
349 cardTool.components['title'] = { "field": "title" };
349 cardTool.components['title'] = { "field": "title" };
350 cardTool.componentsChanged();
350 cardTool.componentsChanged();
351
351
352− tryCompare(cardTool, "titleAlignment", data.value);
352+ tryCompareFunction(function() { return findChild(internalCard, "titleLabel").horizontalAlignment == data.value; }, true);
353
353
354 cardTool.components['title'] = { "field": "title", "align": "left" };
354 cardTool.components['title'] = { "field": "title", "align": "left" };
355 cardTool.componentsChanged();
355 cardTool.componentsChanged();
356
356
357− tryCompare(cardTool, "titleAlignment", Text.AlignLeft);
357+ tryCompareFunction(function() { return findChild(internalCard, "titleLabel").horizontalAlignment == Text.AlignLeft; }, true);
358 }
358 }
359
359
360 function test_categoryLayout_data() {
360 function test_categoryLayout_data() {
tests/qmltests/Dash/tst_Dash.qml+89
@@ -70,6 +70,42 @@ Item {
70 waitForRendering(findChild(dash, "scopeLoader0").item);
70 waitForRendering(findChild(dash, "scopeLoader0").item);
71 }
71 }
72
72
73+ function scrollToCategory(categoryName) {
74+ var dashContentList = findChild(dash, "dashContentList");
75+ var genericScopeView = dashContentList.currentItem;
76+ var categoryListView = findChild(genericScopeView, "categoryListView");
77+ tryCompareFunction(function() {
78+ var category = findChild(genericScopeView, categoryName);
79+ if (category && category.y > 0 && category.y < genericScopeView.height) return true;
80+ touchFlick(genericScopeView, genericScopeView.width/2, units.gu(20),
81+ genericScopeView.width/2, genericScopeView.y)
82+ tryCompare(categoryListView, "moving", false);
83+ return false;
84+ }, true);
85+
86+ tryCompareFunction(function() { return findChild(genericScopeView, "delegate0") !== null; }, true);
87+ return findChild(genericScopeView, categoryName);
88+ }
89+
90+ function clickCategoryDelegate(category, delegate) {
91+ var dashContentList = findChild(dash, "dashContentList");
92+ var genericScopeView = dashContentList.currentItem;
93+ if (category === undefined) category = 0;
94+ if (delegate === undefined) delegate = 0;
95+ tryCompareFunction(function() {
96+ var cardGrid = findChild(genericScopeView, "dashCategory"+category);
97+ if (cardGrid != null) {
98+ var tile = findChild(cardGrid, "delegate"+delegate);
99+ return tile != null;
100+ }
101+ return false;
102+ },
103+ true);
104+ var tile = findChild(findChild(genericScopeView, "dashCategory"+category), "delegate"+delegate);
105+ waitForRendering(tile);
106+ mouseClick(tile);
107+ }
108+
73 function test_manage_dash_clickscope_unfavoritable() {
109 function test_manage_dash_clickscope_unfavoritable() {
74 // Show the manage dash
110 // Show the manage dash
75 touchFlick(dash, dash.width / 2, dash.height - 1, dash.width / 2, units.gu(2));
111 touchFlick(dash, dash.width / 2, dash.height - 1, dash.width / 2, units.gu(2));
@@ -565,5 +601,58 @@ Item {
565 tryCompare(dashTempScopeItem, "x", dashTempScopeItem.width);
601 tryCompare(dashTempScopeItem, "x", dashTempScopeItem.width);
566 tryCompare(dashTempScopeItem, "visible", false);
602 tryCompare(dashTempScopeItem, "visible", false);
567 }
603 }
604+
605+ function test_openScope()
606+ {
607+ scrollToCategory("dashCategory2");
608+ clickCategoryDelegate(2, 2);
609+
610+ var dashTempScopeItem = findChild(dash, "dashTempScopeItem");
611+ tryCompare(dashTempScopeItem, "x", 0);
612+ tryCompare(dashTempScopeItem, "visible", true);
613+ tryCompare(dashContent, "x", -dash.width);
614+
615+ // Go back
616+ var dashTempScopeItemHeader = findChild(dashTempScopeItem, "scopePageHeader");
617+ var backButton = findChild(findChild(dashTempScopeItemHeader, "innerPageHeader"), "customBackButton");
618+ mouseClick(backButton);
619+
620+ // Check temp scope is gone
621+ tryCompare(dashTempScopeItem, "x", dash.width);
622+ tryCompare(dashTempScopeItem, "visible", false);
623+ tryCompare(dashContent, "x", 0);
624+ }
625+
626+ function test_tempScopeItemXOnResize()
627+ {
628+ // Go to a temp scope
629+ touchFlick(dash, dash.width / 2, dash.height - 1, dash.width / 2, units.gu(2));
630+ var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
631+ tryCompare(bottomEdgeController, "progress", 1);
632+ var nonfavScopesListCategory = findChild(dash, "scopesListCategoryother");
633+ var nonfavScopesListCategoryList = findChild(nonfavScopesListCategory, "scopesListCategoryInnerList");
634+ tryCompare(nonfavScopesListCategoryList, "currentIndex", 0);
635+ mouseClick(nonfavScopesListCategoryList.currentItem);
636+ var dashTempScopeItem = findChild(dash, "dashTempScopeItem");
637+ tryCompare(dashTempScopeItem, "x", 0);
638+ tryCompare(dashTempScopeItem, "visible", true);
639+
640+ shell.width = units.gu(80);
641+ tryCompare(dashTempScopeItem, "x", 0);
642+ tryCompare(dashContent, "x", -dash.width);
643+
644+ shell.width = units.gu(40);
645+ tryCompare(dashTempScopeItem, "x", 0);
646+
647+ // Go back
648+ var dashTempScopeItemHeader = findChild(dashTempScopeItem, "scopePageHeader");
649+ var backButton = findChild(findChild(dashTempScopeItemHeader, "innerPageHeader"), "customBackButton");
650+ mouseClick(backButton);
651+
652+ // Check temp scope is gone
653+ tryCompare(dashTempScopeItem, "x", dash.width);
654+ tryCompare(dashTempScopeItem, "visible", false);
655+ tryCompare(dashContent, "x", 0);
656+ }
568 }
657 }
569}
658}
tests/qmltests/Dash/tst_GenericScopeView.qml−28
@@ -236,12 +236,6 @@ Item {
236 verify(seeAll, "Can't find the seeAll element");
236 verify(seeAll, "Can't find the seeAll element");
237
237
238 compare(seeAll.height, 0, "SeeAll should be 0-height.");
238 compare(seeAll.height, 0, "SeeAll should be 0-height.");
239−
240− openPreview(4, 0);
241−
242− compare(testCase.subPageLoader.count, 16, "There should only be 16 items in preview.");
243−
244− closePreview();
245 }
239 }
246
240
247 function test_narrow_delegate_ranges_expand() {
241 function test_narrow_delegate_ranges_expand() {
@@ -404,28 +398,6 @@ Item {
404 closePreview();
398 closePreview();
405 }
399 }
406
400
407− function test_previewCycle() {
408− var categoryListView = findChild(genericScopeView, "categoryListView");
409− categoryListView.positionAtBeginning();
410−
411− tryCompare(testCase.subPageLoader, "open", false);
412−
413− openPreview();
414− var previewListViewList = findChild(subPageLoader.item, "listView");
415−
416− // flick to the next previews
417− tryCompare(testCase.subPageLoader, "count", 25);
418− for (var i = 1; i < testCase.subPageLoader.count; ++i) {
419− mouseFlick(testCase.subPageLoader.item, testCase.subPageLoader.width - units.gu(1),
420− testCase.subPageLoader.height / 2,
421− units.gu(2),
422− testCase.subPageLoader.height / 2);
423− tryCompare(previewListViewList, "moving", false);
424− tryCompare(testCase.subPageLoader.currentItem, "objectName", "preview" + i);
425− }
426− closePreview();
427− }
428−
429 function test_settingsOpenClose() {
401 function test_settingsOpenClose() {
430 waitForRendering(genericScopeView);
402 waitForRendering(genericScopeView);
431 verify(header, "Could not find the header.");
403 verify(header, "Could not find the header.");
tests/qmltests/Dash/tst_PreviewListView.qml → tests/qmltests/Dash/tst_PreviewView.qmlrenamed+23−16
@@ -36,8 +36,8 @@ Rectangle {
36 id: mockResultsModel
36 id: mockResultsModel
37 }
37 }
38
38
39− PreviewListView {
39+ PreviewView {
40− id: listView
40+ id: view
41 anchors.fill: parent
41 anchors.fill: parent
42 scope: mockScope
42 scope: mockScope
43 scopeStyle: ScopeStyle {
43 scopeStyle: ScopeStyle {
@@ -45,12 +45,22 @@ Rectangle {
45 }
45 }
46 }
46 }
47
47
48+ Item {
49+ Repeater {
50+ id: repeater
51+ model: mockResultsModel
52+ Item {
53+ property var previewModel: mockScope.preview(model.result, model.categoryId);
54+ }
55+ }
56+ }
57+
48 UT.UnityTestCase {
58 UT.UnityTestCase {
49 id: testCase
59 id: testCase
50− name: "PreviewListView"
60+ name: "PreviewView"
51 when: windowShown
61 when: windowShown
52
62
53− property MouseArea mouseArea: findChild(listView, "processingMouseArea")
63+ property MouseArea mouseArea: findChild(view, "processingMouseArea")
54
64
55 SignalSpy {
65 SignalSpy {
56 id: clickedSpy
66 id: clickedSpy
@@ -59,43 +69,40 @@ Rectangle {
59 }
69 }
60
70
61 function init() {
71 function init() {
62− listView.model = mockResultsModel;
63− listView.currentIndex = 1;
64− listView.open = true;
72+ view.open = true;
73+ view.previewModel = repeater.itemAt(0).previewModel
65 verify(testCase.mouseArea, "Can't find the processingMouseArea object.");
74 verify(testCase.mouseArea, "Can't find the processingMouseArea object.");
66 }
75 }
67
76
68 function cleanup() {
77 function cleanup() {
69− listView.open = false;
78+ view.open = false;
70− listView.model = null;
71 clickedSpy.clear();
79 clickedSpy.clear();
72 }
80 }
73
81
74 function test_notProcessing() {
82 function test_notProcessing() {
75 expectFail("", "processingMouseArea should not receive the click.");
83 expectFail("", "processingMouseArea should not receive the click.");
76− mouseClick(listView);
84+ mouseClick(view);
77 clickedSpy.wait();
85 clickedSpy.wait();
78 }
86 }
79
87
80 function test_processing() {
88 function test_processing() {
81− verify(listView.currentItem, "currentItem is not ready yet");
82− listView.currentItem.previewModel.setLoaded(false);
89+ view.previewModel.setLoaded(false);
83
90
84− tryCompare(listView, "processing", true);
91+ tryCompare(view, "processing", true);
85
92
86− mouseClick(listView);
93+ mouseClick(view);
87 clickedSpy.wait();
94 clickedSpy.wait();
88 }
95 }
89
96
90 function test_title() {
97 function test_title() {
91− var header = findChild(listView, "innerPageHeader");
98+ var header = findChild(view, "innerPageHeader");
92 verify(header, "Could not find the preview header");
99 verify(header, "Could not find the preview header");
93
100
94 compare(header.config.title, "Mock Scope");
101 compare(header.config.title, "Mock Scope");
95 }
102 }
96
103
97 function test_header_style() {
104 function test_header_style() {
98− var header = findChild(listView, "pageHeader");
105+ var header = findChild(view, "pageHeader");
99 verify(header, "Could not find the header");
106 verify(header, "Could not find the header");
100
107
101 var innerHeader = findChild(header, "innerPageHeader");
108 var innerHeader = findChild(header, "innerPageHeader");
tests/qmltests/Greeter/tst_NarrowView.qml+9
@@ -518,5 +518,14 @@ Item {
518 tryCompare(coverPage, "shown", false);
518 tryCompare(coverPage, "shown", false);
519 tryCompare(coverPage, "showProgress", 0);
519 tryCompare(coverPage, "showProgress", 0);
520 }
520 }
521+
522+ // Make sure that if user has a mouse, they can still get rid of cover page
523+ function test_mouseClickHidesCoverPage() {
524+ var coverPage = findChild(view, "coverPage");
525+
526+ verify(coverPage.shown);
527+ mouseClick(coverPage, coverPage.width/2, coverPage.height - units.gu(2));
528+ verify(!coverPage.shown);
529+ }
521 }
530 }
522}
531}
tests/qmltests/Launcher/tst_Launcher.qml+13−3
@@ -320,14 +320,21 @@ Item {
320 }
320 }
321
321
322 function assertFocusOnIndex(index) {
322 function assertFocusOnIndex(index) {
323+ var launcherPanel = findChild(launcher, "launcherPanel");
323 var launcherListView = findChild(launcher, "launcherListView");
324 var launcherListView = findChild(launcher, "launcherListView");
324 var bfbFocusHighlight = findChild(launcher, "bfbFocusHighlight");
325 var bfbFocusHighlight = findChild(launcher, "bfbFocusHighlight");
325
326
326 waitForRendering(launcher);
327 waitForRendering(launcher);
328+ tryCompare(launcherPanel, "highlightIndex", index);
327 compare(bfbFocusHighlight.visible, index === -1);
329 compare(bfbFocusHighlight.visible, index === -1);
328 for (var i = 0; i < launcherListView.count; i++) {
330 for (var i = 0; i < launcherListView.count; i++) {
329− var focusRing = findChild(findChild(launcher, "launcherDelegate" + i), "focusRing")
331+ var item = findChild(launcher, "launcherDelegate" + i);
332+ // Delegates might be destroyed when not visible. We can't check if they paint a focus highlight.
333+ // Make sure the requested index does have focus. for the others, try best effort to check if they don't
334+ if (index === i || item) {
335+ var focusRing = findChild(item, "focusRing")
330− compare(focusRing.visible, index === i);
336+ tryCompare(focusRing, "visible", index === i);
337+ }
331 }
338 }
332 }
339 }
333
340
@@ -1129,7 +1136,6 @@ Item {
1129 var last = launcherListView.count - 1;
1136 var last = launcherListView.count - 1;
1130
1137
1131 compare(bfbFocusHighlight.visible, false);
1138 compare(bfbFocusHighlight.visible, false);
1132−
1133 launcher.openForKeyboardNavigation();
1139 launcher.openForKeyboardNavigation();
1134 tryCompare(launcherPanel, "x", 0);
1140 tryCompare(launcherPanel, "x", 0);
1135 waitForRendering(launcher);
1141 waitForRendering(launcher);
@@ -1154,6 +1160,7 @@ Item {
1154
1160
1155 // The list should wrap around
1161 // The list should wrap around
1156 keyClick(Qt.Key_Up);
1162 keyClick(Qt.Key_Up);
1163+ waitForRendering(launcher);
1157 assertFocusOnIndex(last);
1164 assertFocusOnIndex(last);
1158
1165
1159 keyClick(Qt.Key_Down);
1166 keyClick(Qt.Key_Down);
@@ -1186,6 +1193,9 @@ Item {
1186 // Go bar to top by wrapping around
1193 // Go bar to top by wrapping around
1187 keyClick(Qt.Key_Down);
1194 keyClick(Qt.Key_Down);
1188 assertFocusOnIndex(1);
1195 assertFocusOnIndex(1);
1196+
1197+ keyClick(Qt.Key_Enter);
1198+ assertFocusOnIndex(-2);
1189 }
1199 }
1190
1200
1191 function test_selectQuicklistItemByKeyboard() {
1201 function test_selectQuicklistItemByKeyboard() {
tests/qmltests/Notifications/tst_OptionToggle.qml+1−1
@@ -225,7 +225,7 @@ Row {
225 }
225 }
226
226
227 // test input does not fall through
227 // test input does not fall through
228− mouseClick(notification)
228+ mouseClick(notification, units.gu(2), units.gu(2))
229 if(data.type == Notification.Interactive) {
229 if(data.type == Notification.Interactive) {
230 actionSpy.wait()
230 actionSpy.wait()
231 compare(actionSpy.signalArguments[0][0], data.actions[0]["id"], "got wrong id for interactive action")
231 compare(actionSpy.signalArguments[0][0], data.actions[0]["id"], "got wrong id for interactive action")
tests/qmltests/Notifications/tst_VisualSnapDecisionsQueue.qml+1
@@ -226,6 +226,7 @@ Row {
226
226
227 // remove top-most and verify one of the remaining ones is still getting expanded
227 // remove top-most and verify one of the remaining ones is still getting expanded
228
228
229+ waitForRendering(notifications);
229 // make first snap-decision expand
230 // make first snap-decision expand
230 mouseClick(snap_decision[0]);
231 mouseClick(snap_decision[0]);
231
232
tests/qmltests/Panel/Indicators/tst_MenuItemFactory.qml+2−4
@@ -274,15 +274,14 @@ Item {
274
274
275 function test_create_progressMenu_data() {
275 function test_create_progressMenu_data() {
276 return [
276 return [
277− {label: "testLabel1", enabled: true, value: 10 },
277+ {label: "testLabel1", value: 10 },
278− {label: "testLabel2", enabled: false, value: 55 },
278+ {label: "testLabel2", value: 55 },
279 ];
279 ];
280 }
280 }
281
281
282 function test_create_progressMenu(data) {
282 function test_create_progressMenu(data) {
283 menuData.type = "com.canonical.indicator.progress"
283 menuData.type = "com.canonical.indicator.progress"
284 menuData.label = data.label;
284 menuData.label = data.label;
285− menuData.sensitive = data.enabled;
286 menuData.actionState = data.value;
285 menuData.actionState = data.value;
287
286
288 loader.data = menuData;
287 loader.data = menuData;
@@ -292,7 +291,6 @@ Item {
292
291
293 compare(loader.item.text, data.label, "Label does not match data");
292 compare(loader.item.text, data.label, "Label does not match data");
294 compare(loader.item.value, data.value, "Value does not match data");
293 compare(loader.item.value, data.value, "Value does not match data");
295− compare(loader.item.enabled, data.enabled, "Enabled does not match data");
296 }
294 }
297
295
298 function test_create_standardMenu_data() {
296 function test_create_standardMenu_data() {
tests/qmltests/Panel/tst_IndicatorItem.qml+16−14
@@ -24,7 +24,9 @@ import "../../../qml/Panel"
24Rectangle {
24Rectangle {
25 width: units.gu(80)
25 width: units.gu(80)
26 height: units.gu(30)
26 height: units.gu(30)
27− color: "white"
27+ color: theme.palette.normal.background
28+
29+ Component.onCompleted: theme.name = "Ubuntu.Components.Themes.SuruDark"
28
30
29 RowLayout {
31 RowLayout {
30 anchors.fill: parent
32 anchors.fill: parent
@@ -37,7 +39,7 @@ Rectangle {
37 Layout.fillHeight: true
39 Layout.fillHeight: true
38
40
39 Rectangle {
41 Rectangle {
40− color: "black"
42+ color: theme.palette.normal.background
41 anchors.fill: indicatorItem
43 anchors.fill: indicatorItem
42 }
44 }
43
45
@@ -181,25 +183,25 @@ Rectangle {
181 }
183 }
182
184
183 function test_select() {
185 function test_select() {
184− tryCompare(findChild(indicatorItem, "icon0"), "color", "#ffffff");
186+ tryCompare(findChild(indicatorItem, "icon0"), "color", theme.palette.normal.backgroundText);
185 tryCompare(findChild(indicatorItem, "icon0"), "opacity", 1.0);
187 tryCompare(findChild(indicatorItem, "icon0"), "opacity", 1.0);
186− tryCompare(findChild(indicatorItem, "leftLabel"), "color", "#ffffff");
188+ tryCompare(findChild(indicatorItem, "leftLabel"), "color", theme.palette.normal.backgroundText);
187− tryCompare(findChild(indicatorItem, "rightLabel"), "color", "#ffffff");
189+ tryCompare(findChild(indicatorItem, "rightLabel"), "color", theme.palette.normal.backgroundText);
188− tryCompare(findChild(indicatorItem, "indicatorName"), "color", "#ffffff");
190+ tryCompare(findChild(indicatorItem, "indicatorName"), "color", theme.palette.normal.backgroundText);
189
191
190 indicatorItem.expanded = true;
192 indicatorItem.expanded = true;
191− tryCompare(findChild(indicatorItem, "icon0"), "color", "#888888");
193+ tryCompare(findChild(indicatorItem, "icon0"), "color", theme.palette.disabled.backgroundText);
192 tryCompare(findChild(indicatorItem, "icon0"), "opacity", 0.6);
194 tryCompare(findChild(indicatorItem, "icon0"), "opacity", 0.6);
193− tryCompare(findChild(indicatorItem, "leftLabel"), "color", "#888888");
195+ tryCompare(findChild(indicatorItem, "leftLabel"), "color", theme.palette.disabled.backgroundText);
194− tryCompare(findChild(indicatorItem, "rightLabel"), "color", "#888888");
196+ tryCompare(findChild(indicatorItem, "rightLabel"), "color", theme.palette.disabled.backgroundText);
195− tryCompare(findChild(indicatorItem, "indicatorName"), "color", "#888888");
197+ tryCompare(findChild(indicatorItem, "indicatorName"), "color", theme.palette.disabled.backgroundText);
196
198
197 indicatorItem.selected = true;
199 indicatorItem.selected = true;
198− tryCompare(findChild(indicatorItem, "icon0"), "color", "#ffffff");
200+ tryCompare(findChild(indicatorItem, "icon0"), "color", theme.palette.normal.backgroundText);
199 tryCompare(findChild(indicatorItem, "icon0"), "opacity", 1.0);
201 tryCompare(findChild(indicatorItem, "icon0"), "opacity", 1.0);
200− tryCompare(findChild(indicatorItem, "leftLabel"), "color", "#ffffff");
202+ tryCompare(findChild(indicatorItem, "leftLabel"), "color", theme.palette.normal.backgroundText);
201− tryCompare(findChild(indicatorItem, "rightLabel"), "color", "#ffffff");
203+ tryCompare(findChild(indicatorItem, "rightLabel"), "color", theme.palette.normal.backgroundText);
202− tryCompare(findChild(indicatorItem, "indicatorName"), "color", "#ffffff");
204+ tryCompare(findChild(indicatorItem, "indicatorName"), "color", theme.palette.normal.backgroundText);
203 }
205 }
204 }
206 }
205}
207}
tests/qmltests/Panel/tst_Panel.qml+2
@@ -31,6 +31,8 @@ IndicatorTest {
31 height: units.gu(71)
31 height: units.gu(71)
32 color: "white"
32 color: "white"
33
33
34+ Component.onCompleted: theme.name = "Ubuntu.Components.Themes.SuruDark"
35+
34 Binding {
36 Binding {
35 target: mouseEmulation
37 target: mouseEmulation
36 property: "checked"
38 property: "checked"
tests/qmltests/Stages/tst_DesktopStage.qml+2−1
@@ -65,8 +65,9 @@ Item {
65 property bool itemDestroyed: false
65 property bool itemDestroyed: false
66 sourceComponent: Component {
66 sourceComponent: Component {
67 DesktopStage {
67 DesktopStage {
68− color: "darkblue"
68+ color: "white"
69 anchors.fill: parent
69 anchors.fill: parent
70+ background: "../../../qml/graphics/tablet_background.jpg"
70
71
71 Component.onCompleted: {
72 Component.onCompleted: {
72 edgeBarrierControls.target = testCase.findChild(this, "edgeBarrierController");
73 edgeBarrierControls.target = testCase.findChild(this, "edgeBarrierController");
tests/qmltests/Stages/tst_PhoneStage.qml+19−6
@@ -40,12 +40,6 @@ Item {
40 orientations: Orientations {}
40 orientations: Orientations {}
41 }
41 }
42
42
43− Binding {
44− target: ApplicationManager
45− property: "rightMargin"
46− value: phoneStage.anchors.rightMargin
47− }
48−
49 Rectangle {
43 Rectangle {
50 anchors { fill: parent; leftMargin: phoneStage.width }
44 anchors { fill: parent; leftMargin: phoneStage.width }
51
45
@@ -77,6 +71,15 @@ Item {
77 ApplicationManager.get(appList.selectedAppIndex).setState(ApplicationInfoInterface.Stopped);
71 ApplicationManager.get(appList.selectedAppIndex).setState(ApplicationInfoInterface.Stopped);
78 }
72 }
79 }
73 }
74+ EdgeBarrierControls {
75+ id: edgeBarrierControls
76+ text: "Drag here to pull out spread"
77+ backgroundColor: "blue"
78+ onDragged: { phoneStage.pushRightEdge(amount); }
79+ Component.onCompleted: {
80+ edgeBarrierControls.target = testCase.findChild(phoneStage, "edgeBarrierController");
81+ }
82+ }
80 }
83 }
81 ListView {
84 ListView {
82 id: appList
85 id: appList
@@ -463,5 +466,15 @@ Item {
463
466
464 tryCompare(delegate.application, "requestedState", ApplicationInfoInterface.RequestedRunning);
467 tryCompare(delegate.application, "requestedState", ApplicationInfoInterface.RequestedRunning);
465 }
468 }
469+
470+ function test_mouseEdgePush() {
471+ var spreadView = findChild(phoneStage, "spreadView")
472+ addApps(1);
473+ mouseMove(phoneStage, phoneStage.width - 1, units.gu(10));
474+ for (var i = 0; i < units.gu(10); i++) {
475+ phoneStage.pushRightEdge(1);
476+ }
477+ tryCompare(spreadView, "phase", 2);
478+ }
466 }
479 }
467}
480}
tests/qmltests/Stages/tst_SpreadDelegate.qml+7
@@ -308,5 +308,12 @@ Rectangle {
308 tryCompare(closeAnimation, "running", false);
308 tryCompare(closeAnimation, "running", false);
309 }
309 }
310
310
311+ function test_showHighLight() {
312+ loadWithGalleryApp.clicked();
313+ var highlightRect = findChild(spreadDelegateLoader.item, "selectionHighlight")
314+ tryCompare(highlightRect, "visible", false)
315+ spreadDelegateLoader.item.highlightShown = true;
316+ tryCompare(highlightRect, "visible", true)
317+ }
311 }
318 }
312}
319}
tests/qmltests/Stages/tst_TabletStage.qml+19−1
@@ -21,6 +21,7 @@ import Ubuntu.Components.ListItems 1.3 as ListItem
21import Unity.Application 0.1
21import Unity.Application 0.1
22import Unity.Test 0.1
22import Unity.Test 0.1
23
23
24+import ".."
24import "../../../qml/Stages"
25import "../../../qml/Stages"
25import "../../../qml/Components"
26import "../../../qml/Components"
26
27
@@ -77,6 +78,15 @@ Rectangle {
77 Column {
78 Column {
78 anchors { left: parent.left; right: parent.right; top: parent.top; margins: units.gu(1) }
79 anchors { left: parent.left; right: parent.right; top: parent.top; margins: units.gu(1) }
79 spacing: units.gu(1)
80 spacing: units.gu(1)
81+ EdgeBarrierControls {
82+ id: edgeBarrierControls
83+ text: "Drag here to pull out spread"
84+ backgroundColor: "blue"
85+ onDragged: { tabletStageLoader.item.pushRightEdge(amount); }
86+ Component.onCompleted: {
87+ edgeBarrierControls.target = testCase.findChild(tabletStageLoader, "edgeBarrierController");
88+ }
89+ }
80 ApplicationCheckBox {
90 ApplicationCheckBox {
81 id: webbrowserCheckBox
91 id: webbrowserCheckBox
82 appId: "webbrowser-app"
92 appId: "webbrowser-app"
@@ -365,6 +375,14 @@ Rectangle {
365 tryCompare(webbrowserApp, "requestedState", ApplicationInfoInterface.RequestedRunning);
375 tryCompare(webbrowserApp, "requestedState", ApplicationInfoInterface.RequestedRunning);
366 tryCompare(dialerApp, "requestedState", ApplicationInfoInterface.RequestedRunning);
376 tryCompare(dialerApp, "requestedState", ApplicationInfoInterface.RequestedRunning);
367 }
377 }
368− }
369
378
379+ function test_mouseEdgePush() {
380+ var spreadView = findChild(tabletStageLoader, "spreadView")
381+ mouseMove(tabletStageLoader, tabletStageLoader.width - 1, units.gu(10));
382+ for (var i = 0; i < units.gu(10); i++) {
383+ tabletStageLoader.item.pushRightEdge(1);
384+ }
385+ tryCompare(spreadView, "phase", 2);
386+ }
387+ }
370}
388}
tests/qmltests/Wizard/tst_Wizard.qml+1−1
@@ -96,7 +96,7 @@ Item {
96 }
96 }
97
97
98 Component.onCompleted: {
98 Component.onCompleted: {
99− theme.name = "Ubuntu.Components.Themes.SuruGradient";
99+ theme.name = "Ubuntu.Components.Themes.SuruDark";
100 setup();
100 setup();
101 }
101 }
102
102
tests/qmltests/tst_DeviceConfiguration.qmlnew file+49
@@ -0,0 +1,49 @@
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 QtTest 1.0
19+import Unity.Test 0.1
20+import "../../qml"
21+
22+Item {
23+ id: root
24+ width: units.gu(40)
25+ height: units.gu(70)
26+
27+ DeviceConfiguration {
28+ id: deviceConfiguration
29+ }
30+
31+ UnityTestCase {
32+ id: testCase
33+ name: "DeviceConfiguration"
34+ when: windowShown
35+
36+ function test_defaults() {
37+ deviceConfiguration.name = "nonexisting"
38+ compare(deviceConfiguration.primaryOrientation, -1)
39+ compare(deviceConfiguration.landscapeOrientation, Qt.LandscapeOrientation)
40+ compare(deviceConfiguration.portraitOrientation, Qt.PortraitOrientation)
41+ compare(deviceConfiguration.invertedLandscapeOrientation, Qt.InvertedLandscapeOrientation)
42+ compare(deviceConfiguration.invertedPortraitOrientation, Qt.InvertedPortraitOrientation)
43+ compare(deviceConfiguration.supportedOrientations, Qt.PortraitOrientation
44+ | Qt.InvertedPortraitOrientation
45+ | Qt.LandscapeOrientation
46+ | Qt.InvertedLandscapeOrientation)
47+ }
48+ }
49+}
tests/qmltests/tst_DisabledScreenNotice.qml+76−2
@@ -15,18 +15,62 @@
15 */
15 */
16
16
17import QtQuick 2.4
17import QtQuick 2.4
18+import QtQuick.Layouts 1.1
18import QtTest 1.0
19import QtTest 1.0
19import Unity.Test 0.1
20import Unity.Test 0.1
21+import Ubuntu.Components 1.3
22+import Ubuntu.Components.ListItems 1.3
20import "../../qml"
23import "../../qml"
21
24
22Item {
25Item {
23 id: root
26 id: root
24− width: units.gu(40)
27+ width: units.gu(80)
25 height: units.gu(70)
28 height: units.gu(70)
26
29
27 DisabledScreenNotice {
30 DisabledScreenNotice {
28 id: touchScreenPad
31 id: touchScreenPad
29 anchors.fill: parent
32 anchors.fill: parent
33+ anchors.rightMargin: units.gu(40)
34+
35+ screen: QtObject {
36+ property int orientation: {
37+ switch (orientationSelector.selectedIndex) {
38+ case 0:
39+ return Qt.PortraitOrientation;
40+ case 1:
41+ return Qt.LandscapeOrientation;
42+ case 2:
43+ return Qt.InvertedPortraitOrientation;
44+ case 3:
45+ return Qt.InvertedLandscapeOrientation;
46+ }
47+ }
48+ }
49+ orientationLock: QtObject {
50+ property bool enabled: orientationLockCheckBox.checked
51+ }
52+ }
53+
54+ Column {
55+ anchors.fill: parent
56+ anchors.leftMargin: units.gu(40)
57+
58+ ItemSelector {
59+ id: orientationSelector
60+ model: ["Portrait", "Landscape", "InvertedPortrait", "InvertedLandscape"]
61+ selectedIndex: 0
62+ }
63+
64+ RowLayout {
65+ CheckBox {
66+ id: orientationLockCheckBox
67+ checked: false
68+ }
69+ Label {
70+ text: "Rotation lock"
71+ Layout.fillWidth: true
72+ }
73+ }
30 }
74 }
31
75
32 UnityTestCase {
76 UnityTestCase {
@@ -36,10 +80,40 @@ Item {
36
80
37 function test_mouseAreaHidesOnFirstTap() {
81 function test_mouseAreaHidesOnFirstTap() {
38 var noticeArea = findChild(touchScreenPad, "infoNoticeArea")
82 var noticeArea = findChild(touchScreenPad, "infoNoticeArea")
39− print("noticeArea", noticeArea.visible)
40 compare(noticeArea.visible, true)
83 compare(noticeArea.visible, true)
41 tap(root)
84 tap(root)
42 tryCompare(noticeArea, "visible", false)
85 tryCompare(noticeArea, "visible", false)
43 }
86 }
87+
88+ function test_rotation_data() {
89+ return [
90+ {tag: "portrait", selectedOrientation: 0, expectedAngle: 0},
91+ {tag: "landscape", selectedOrientation: 1, expectedAngle: 270},
92+ {tag: "invertedportrait", selectedOrientation: 2, expectedAngle: 180},
93+ {tag: "invertetlandscape", selectedOrientation: 3, expectedAngle: 90}
94+ ];
95+ }
96+
97+ function test_rotation(data) {
98+ var content = findChild(touchScreenPad, "contentContainer");
99+
100+ var oldRotation = content.rotation;
101+
102+ // Turn on orientation lock
103+ orientationLockCheckBox.checked = true;
104+
105+ // simulate the rotation
106+ orientationSelector.selectedIndex = data.selectedOrientation;
107+
108+ // Make sure it is still in the old rotation (as we have the lock turned on)
109+ expectFail("", "Rotation lock set. Expecting automatic rotation to fail.");
110+ tryCompareFunction(function() { return content.rotation != oldRotation; }, true, 300);
111+
112+ // Now uncheck the rotation lock
113+ orientationLockCheckBox.checked = false;
114+
115+ // And make sure it catches up to the expected angle
116+ tryCompare(content, "rotation", data.expectedAngle);
117+ }
44 }
118 }
45}
119}
tests/qmltests/tst_OrientedShell.qml+1−1
@@ -315,7 +315,7 @@ Rectangle {
315 checked: false
315 checked: false
316 activeFocusOnPress: false
316 activeFocusOnPress: false
317 onCheckedChanged: {
317 onCheckedChanged: {
318− var surface = SurfaceManager.inputMethodSurface();
318+ var surface = SurfaceManager.inputMethodSurface;
319 if (checked) {
319 if (checked) {
320 surface.setState(Mir.RestoredState);
320 surface.setState(Mir.RestoredState);
321 } else {
321 } else {
tests/qmltests/tst_Shell.qml+39−25
@@ -50,11 +50,6 @@ Rectangle {
50 shellLoader.active = true;
50 shellLoader.active = true;
51 }
51 }
52
52
53− MouseArea {
54− id: clickThroughCatcher
55− anchors.fill: shellContainer
56− }
57−
58 Item {
53 Item {
59 id: shellContainer
54 id: shellContainer
60 anchors.left: root.left
55 anchors.left: root.left
@@ -318,12 +313,6 @@ Rectangle {
318 signalName: "applicationRemoved"
313 signalName: "applicationRemoved"
319 }
314 }
320
315
321− SignalSpy {
322− id: clickThroughSpy
323− target: clickThroughCatcher
324− signalName: "clicked"
325− }
326−
327 Telephony.CallEntry {
316 Telephony.CallEntry {
328 id: phoneCall
317 id: phoneCall
329 phoneNumber: "+447812221111"
318 phoneNumber: "+447812221111"
@@ -692,6 +681,7 @@ Rectangle {
692 function swipeAwayGreeter() {
681 function swipeAwayGreeter() {
693 var greeter = findChild(shell, "greeter");
682 var greeter = findChild(shell, "greeter");
694 tryCompare(greeter, "fullyShown", true);
683 tryCompare(greeter, "fullyShown", true);
684+ waitForGreeterToStabilize();
695 removeTimeConstraintsFromDirectionalDragAreas(greeter);
685 removeTimeConstraintsFromDirectionalDragAreas(greeter);
696
686
697 var touchX = shell.width - (shell.edgeSize / 2);
687 var touchX = shell.width - (shell.edgeSize / 2);
@@ -795,7 +785,7 @@ Rectangle {
795 loadShell("phone");
785 loadShell("phone");
796 swipeAwayGreeter();
786 swipeAwayGreeter();
797 var item = findChild(shell, "inputMethod");
787 var item = findChild(shell, "inputMethod");
798− var surface = SurfaceManager.inputMethodSurface();
788+ var surface = SurfaceManager.inputMethodSurface;
799
789
800 surface.setState(Mir.MinimizedState);
790 surface.setState(Mir.MinimizedState);
801 tryCompare(item, "visible", false);
791 tryCompare(item, "visible", false);
@@ -866,7 +856,6 @@ Rectangle {
866 function test_launchedAppHasActiveFocus(data) {
856 function test_launchedAppHasActiveFocus(data) {
867 loadShell(data.formFactor);
857 loadShell(data.formFactor);
868 shell.usageScenario = data.usageScenario;
858 shell.usageScenario = data.usageScenario;
869− waitForGreeterToStabilize();
870 swipeAwayGreeter();
859 swipeAwayGreeter();
871
860
872 var webApp = ApplicationManager.startApplication("webbrowser-app");
861 var webApp = ApplicationManager.startApplication("webbrowser-app");
@@ -1447,9 +1436,17 @@ Rectangle {
1447 tryCompare(galleryApp, "requestedState", ApplicationInfoInterface.RequestedRunning);
1436 tryCompare(galleryApp, "requestedState", ApplicationInfoInterface.RequestedRunning);
1448 }
1437 }
1449
1438
1439+ function test_altTabSwitchesFocus_data() {
1440+ return [
1441+ { tag: "windowed", shellType: "desktop" },
1442+ { tag: "staged", shellType: "phone" },
1443+ { tag: "sidestaged", shellType: "tablet" }
1444+ ];
1445+ }
1446+
1450− function test_altTabSwitchesFocus() {
1447+ function test_altTabSwitchesFocus(data) {
1451− loadShell("desktop");
1448+ loadShell(data.shellType);
1452− shell.usageScenario = "desktop"
1449+ shell.usageScenario = data.shellType;
1453 waitForRendering(root)
1450 waitForRendering(root)
1454
1451
1455 var desktopStage = findChild(shell, "stage");
1452 var desktopStage = findChild(shell, "stage");
@@ -1467,18 +1464,10 @@ Rectangle {
1467 keyClick(Qt.Key_Tab, Qt.AltModifier)
1464 keyClick(Qt.Key_Tab, Qt.AltModifier)
1468 tryCompare(app2.session.lastSurface, "activeFocus", true)
1465 tryCompare(app2.session.lastSurface, "activeFocus", true)
1469
1466
1470− var desktopSpread = findChild(shell, "spread")
1467+ // Press Alt+Tab
1471−
1472− tryCompare(desktopSpread, "state", "")
1473−
1474− // Just press Alt, make sure the spread comes up
1475 keyPress(Qt.Key_Alt);
1468 keyPress(Qt.Key_Alt);
1476 keyClick(Qt.Key_Tab);
1469 keyClick(Qt.Key_Tab);
1477− tryCompare(desktopSpread, "state", "altTab")
1478−
1479− // Release control, check if spread disappears
1480 keyRelease(Qt.Key_Alt)
1470 keyRelease(Qt.Key_Alt)
1481− tryCompare(desktopSpread, "state", "")
1482
1471
1483 // Focus should have switched back now
1472 // Focus should have switched back now
1484 tryCompare(app3.session.lastSurface, "activeFocus", true)
1473 tryCompare(app3.session.lastSurface, "activeFocus", true)
@@ -1890,6 +1879,31 @@ Rectangle {
1890 compare(appDelegate.y >= PanelState.panelHeight, true);
1879 compare(appDelegate.y >= PanelState.panelHeight, true);
1891 }
1880 }
1892
1881
1882+ function test_cantResizeWindowUnderPanel() {
1883+ loadShell("desktop");
1884+ shell.usageScenario = "desktop";
1885+ waitForRendering(shell);
1886+
1887+ var app = ApplicationManager.startApplication("dialer-app")
1888+ waitUntilAppWindowIsFullyLoaded(app);
1889+
1890+ var appContainer = findChild(shell, "appContainer");
1891+ var appDelegate = findChild(appContainer, "appDelegate_dialer-app");
1892+ var decoration = findChild(appDelegate, "appWindowDecoration_dialer-app");
1893+ verify(decoration);
1894+
1895+ // move it away from launcher and panel
1896+ appDelegate.x = units.gu(10)
1897+ appDelegate.y = units.gu(10)
1898+
1899+ // drag-resize the area up
1900+ mousePress(decoration, decoration.width/2, -units.gu(1));
1901+ mouseMove(decoration, decoration.width/2, -units.gu(100));
1902+
1903+ // verify we don't go past the panel
1904+ compare(appDelegate.y >= PanelState.panelHeight, true);
1905+ }
1906+
1893 function test_restoreWindowStateFixesIfUnderPanel() {
1907 function test_restoreWindowStateFixesIfUnderPanel() {
1894 loadDesktopShellWithApps();
1908 loadDesktopShellWithApps();
1895 var appRepeater = findChild(shell, "appRepeater")
1909 var appRepeater = findChild(shell, "appRepeater")