on xenial help sign in
merged with trunk
f2b1aa3Nick Dedekind
CMakeLists.txt+2−1
@@ -13,8 +13,9 @@ endif()
13
13
14set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
14set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
15
15
16−# Instruct CMake to run moc automatically when needed.
16+# Instruct CMake to run moc and rcc automatically when needed.
17set(CMAKE_AUTOMOC ON)
17set(CMAKE_AUTOMOC ON)
18+set(CMAKE_AUTORCC ON)
18
19
19# enable QML debugging
20# enable QML debugging
20string(TOLOWER "${CMAKE_BUILD_TYPE}" cmake_build_type_lower) # Build types should always be lowercase but sometimes they are not.
21string(TOLOWER "${CMAKE_BUILD_TYPE}" cmake_build_type_lower) # Build types should always be lowercase but sometimes they are not.
cmake/modules/QmlTest.cmake+1
@@ -127,6 +127,7 @@ function(add_executable_test COMPONENT_NAME TARGET)
127 file(MAKE_DIRECTORY ${ARTIFACTS_DIR}/${path})
127 file(MAKE_DIRECTORY ${ARTIFACTS_DIR}/${path})
128 set(file_logger -o ${ARTIFACTS_DIR}/${path}/test${COMPONENT_NAME}.xml,xunitxml)
128 set(file_logger -o ${ARTIFACTS_DIR}/${path}/test${COMPONENT_NAME}.xml,xunitxml)
129 else()
129 else()
130+ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
130 set(file_logger -o ${CMAKE_CURRENT_BINARY_DIR}/test${COMPONENT_NAME}.xml,xunitxml)
131 set(file_logger -o ${CMAKE_CURRENT_BINARY_DIR}/test${COMPONENT_NAME}.xml,xunitxml)
131 endif()
132 endif()
132
133
debian/changelog+76
@@ -1,3 +1,79 @@
1+unity8 (8.11+15.10.20150925-0ubuntu1) wily; urgency=medium
2+
3+ [ Albert Astals Cid ]
4+ * Improvements from running clazy over the code
5+
6+ [ Daniel d'Andrada ]
7+ * PhoneStage: ensure you're left in a consistent state after being
8+ reset (LP: #1476757)
9+
10+ [ Lukáš Tinkl ]
11+ * Improve the appearance and functionality of datetime and session
12+ indicators in Unity8 desktop.
13+ * Using InputInfo, determine if we need swipe or click to dismiss the
14+ notifications (e.g. incoming phone call)
15+
16+ [ Michael Zanetti ]
17+ * further development on the Desktop Spread (LP: #1488147)
18+
19+ [ Michał Sawicz ]
20+ * Bump application API version
21+ * Skip bluetooth check under wily, use expectFailure to notice when
22+ it's back
23+
24+ [ Richard Somlói ]
25+ * Fix translator comments in time formatter
26+
27+ -- Michał Sawicz <michal.sawicz@canonical.com> Fri, 25 Sep 2015 12:13:20 +0000
28+
29+unity8 (8.11+15.10.20150922.1-0ubuntu1) wily; urgency=medium
30+
31+ [ Albert Astals Cid ]
32+ * Adapt test to code changes
33+ * Add DEP-8 test for all our UI and unit tests
34+ * Keep the PreviewStack around to avoid mem leaks (LP: #1495467)
35+
36+ [ CI Train Bot ]
37+ * Resync trunk.
38+
39+ [ Michael Terry ]
40+ * When libusermetrics gives us an empty string, still show the
41+ infographic circle rather than hiding it. This is a follow-on to a
42+ branch [1] that changes the "no data available" label to the empty
43+ string.
44+
45+ [ Michał Sawicz ]
46+ * Add DEP-8 test for all our UI and unit tests
47+ * Fix integrated LightDM path
48+ * Resync trunk
49+
50+ -- Michał Sawicz <michal.sawicz@canonical.com> Tue, 22 Sep 2015 12:57:15 +0000
51+
52+unity8 (8.11+15.10.20150915-0ubuntu1) wily; urgency=medium
53+
54+ [ Albert Astals Cid ]
55+ * Fix testNotifications
56+ * Make the wait longer to make tests pass in CI
57+ * New simplified CroppedImageMinimumSourceSize (LP: #1467740)
58+ * Stop animateTimer when starting the fadeOutAnimation
59+ * Use AlreadyLaunchedUpstart so that tests passes
60+ * Workaround keyboard issues and make test pass again
61+
62+ [ Daniel d'Andrada ]
63+ * DesktopStage: Refactor focus handling
64+ * Stabilize tstShell.test_launchedAppHasActiveFocus
65+
66+ [ Gary.Wzl ]
67+ * Add widgetData["expanded"] property for expandable widget.
68+
69+ [ Michael Terry ]
70+ * Fix typo that caused the tutorial to tease the launcher on top of
71+ the greeter.
72+ * Fix typo that caused the tutorial to tease the launcher on top of
73+ the greeter.
74+
75+ -- Michael Zanetti <michael.zanetti@canonical.com> Tue, 15 Sep 2015 12:06:06 +0000
76+
1unity8 (8.11+15.10.20150907-0ubuntu1) wily; urgency=medium
77unity8 (8.11+15.10.20150907-0ubuntu1) wily; urgency=medium
2
78
3 [ Michal Sawicz ]
79 [ Michal Sawicz ]
debian/control+2−2
@@ -125,7 +125,7 @@ Depends: qml-module-qtquick-layouts,
125 qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.3.1550) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.3.1550),
125 qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.3.1550) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.3.1550),
126 qtdeclarative5-unity-notifications-plugin (>= 0.1.2) | unity-notifications-impl,
126 qtdeclarative5-unity-notifications-plugin (>= 0.1.2) | unity-notifications-impl,
127 ubuntu-thumbnailer-impl-0,
127 ubuntu-thumbnailer-impl-0,
128− unity-application-impl-6,
128+ unity-application-impl-8,
129 unity-notifications-impl-3,
129 unity-notifications-impl-3,
130 unity-plugin-scopes | unity-scopes-impl,
130 unity-plugin-scopes | unity-scopes-impl,
131 unity-scopes-impl-7,
131 unity-scopes-impl-7,
@@ -171,7 +171,7 @@ Pre-Depends: ${misc:Pre-Depends},
171Depends: ${misc:Depends},
171Depends: ${misc:Depends},
172 ${shlibs:Depends},
172 ${shlibs:Depends},
173Provides: unity-application-impl,
173Provides: unity-application-impl,
174− unity-application-impl-6,
174+ unity-application-impl-8,
175Replaces: unity8-autopilot (<< 8.02+15.04.20150422-0ubuntu1)
175Replaces: unity8-autopilot (<< 8.02+15.04.20150422-0ubuntu1)
176Description: Fake environment for running Unity 8 shell
176Description: Fake environment for running Unity 8 shell
177 Provides fake implementations of some QML modules used by Unity 8 shell
177 Provides fake implementations of some QML modules used by Unity 8 shell
debian/tests/controlnew file+5
@@ -0,0 +1,5 @@
1+Tests: qmluitests.sh
2+Restrictions: allow-stderr
3+Depends: @,
4+ @builddeps@,
5+ xvfb,
debian/tests/qmluitests.shnew file+19
@@ -0,0 +1,19 @@
1+#!/bin/sh
2+
3+SHELL_QML_PATH=$(pkg-config --variable=plugindir unity-shell-api)
4+UNITY_SOURCE_DIR=$(readlink -f $(dirname $(readlink -f $0))/../..)
5+
6+dh_auto_configure -- -DCMAKE_INSTALL_LOCALSTATEDIR="/var" \
7+ -DARTIFACTS_DIR=${ADT_ARTIFACTS} \
8+ -DUNITY_PLUGINPATH=${SHELL_QML_PATH} \
9+ -DUNITY_MOCKPATH=${SHELL_QML_PATH}/mocks
10+dh_auto_build --parallel -- -C tests/mocks
11+dh_auto_build --parallel -- -C tests/plugins
12+dh_auto_build --parallel -- -C tests/qmltests
13+dh_auto_build --parallel -- -C tests/uqmlscene
14+dh_auto_build --parallel -- -C tests/utils
15+
16+export UNITY_SOURCE_DIR
17+
18+# FIXME: --parallel here causes some failures
19+dh_auto_build -- -k xvfballtests
include/paths.h.in+27−21
@@ -29,30 +29,40 @@
29
29
30inline bool isRunningInstalled() {
30inline bool isRunningInstalled() {
31 static bool installed = (QCoreApplication::applicationDirPath() ==
31 static bool installed = (QCoreApplication::applicationDirPath() ==
32− QDir(("@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_BINDIR@")).canonicalPath());
32+ QDir(QStringLiteral("@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_BINDIR@")).canonicalPath());
33 return installed;
33 return installed;
34}
34}
35
35
36+inline QString buildDirectory() {
37+ if (!qEnvironmentVariableIsEmpty("UNITY_BINARY_DIR")) return qgetenv("UNITY_BINARY_DIR");
38+ return QStringLiteral("@CMAKE_BINARY_DIR@");
39+}
40+
41+inline QString sourceDirectory() {
42+ if (!qEnvironmentVariableIsEmpty("UNITY_SOURCE_DIR")) return qgetenv("UNITY_SOURCE_DIR");
43+ return QStringLiteral("@CMAKE_SOURCE_DIR@");
44+}
45+
36inline QString translationDirectory() {
46inline QString translationDirectory() {
37 if (isRunningInstalled()) {
47 if (isRunningInstalled()) {
38− return QString("@CMAKE_INSTALL_PREFIX@/share/locale");
48+ return QStringLiteral("@CMAKE_INSTALL_PREFIX@/share/locale");
39 } else {
49 } else {
40− return QString("@CMAKE_BINARY_DIR@/po/locale");
50+ return QString(buildDirectory() + "/po/locale");
41 }
51 }
42}
52}
43
53
44inline QString qmlDirectory() {
54inline QString qmlDirectory() {
45 if (isRunningInstalled()) {
55 if (isRunningInstalled()) {
46− return QString("@CMAKE_INSTALL_PREFIX@/@SHELL_APP_DIR@/");
56+ return QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_APP_DIR@/");
47 } else {
57 } else {
48− return QString("@CMAKE_SOURCE_DIR@/qml/");
58+ return QString(sourceDirectory() + "/qml");
49 }
59 }
50}
60}
51
61
52inline QStringList overrideImportPaths() {
62inline QStringList overrideImportPaths() {
53 QStringList paths;
63 QStringList paths;
54 if (!isRunningInstalled()) {
64 if (!isRunningInstalled()) {
55− paths << QString("@CMAKE_BINARY_DIR@/plugins");
65+ paths << QString(buildDirectory() + "/plugins");
56 }
66 }
57 return paths;
67 return paths;
58}
68}
@@ -60,9 +70,9 @@ inline QStringList overrideImportPaths() {
60inline QStringList nonMirImportPaths() {
70inline QStringList nonMirImportPaths() {
61 QStringList paths;
71 QStringList paths;
62 if (isRunningInstalled()) {
72 if (isRunningInstalled()) {
63− paths << QString("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/nonmirplugins");
73+ paths << QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/nonmirplugins");
64 } else {
74 } else {
65− paths << QString("@CMAKE_BINARY_DIR@/nonmirplugins");
75+ paths << QString(buildDirectory() + "/nonmirplugins");
66 }
76 }
67 return paths;
77 return paths;
68}
78}
@@ -70,23 +80,23 @@ inline QStringList nonMirImportPaths() {
70inline QStringList fallbackImportPaths() {
80inline QStringList fallbackImportPaths() {
71 QStringList paths;
81 QStringList paths;
72 if (isRunningInstalled()) {
82 if (isRunningInstalled()) {
73− paths << QString("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@");
83+ paths << QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@");
74− paths << QString("@USS_PRIVATE_PLUGINDIR@");
84+ paths << QStringLiteral("@USS_PRIVATE_PLUGINDIR@");
75− paths << QString("@SHELL_PLUGINDIR@");
85+ paths << QStringLiteral("@SHELL_PLUGINDIR@");
76− paths << QString("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/mocks");
86+ paths << QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/mocks");
77 } else {
87 } else {
78− paths << QString("@USS_PRIVATE_PLUGINDIR@");
88+ paths << QStringLiteral("@USS_PRIVATE_PLUGINDIR@");
79− paths << QString("@SHELL_PLUGINDIR@");
89+ paths << QStringLiteral("@SHELL_PLUGINDIR@");
80− paths << QString("@CMAKE_BINARY_DIR@/tests/mocks");
90+ paths << QString(buildDirectory() + "/tests/mocks");
81 }
91 }
82 return paths;
92 return paths;
83}
93}
84
94
85inline QString mockPluginsDir() {
95inline QString mockPluginsDir() {
86 if (isRunningInstalled()) {
96 if (isRunningInstalled()) {
87− return QString("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/mocks");
97+ return QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/mocks");
88 } else {
98 } else {
89− return QString("@CMAKE_BINARY_DIR@/tests/mocks");
99+ return QString(buildDirectory() + "/tests/mocks");
90 }
100 }
91}
101}
92
102
@@ -99,10 +109,6 @@ inline QStringList shellDataDirs() {
99 return dirs;
109 return dirs;
100}
110}
101
111
102−inline QString sourceDirectory() {
103− return QString("@CMAKE_SOURCE_DIR@/");
104−}
105−
106inline void prependImportPaths(QQmlEngine *engine, const QStringList &paths)
112inline void prependImportPaths(QQmlEngine *engine, const QStringList &paths)
107{
113{
108 QStringList importPathList = engine->importPathList();
114 QStringList importPathList = engine->importPathList();
libs/UbuntuGestures/DebugHelpers.cpp+7−7
@@ -22,15 +22,15 @@ QString touchPointStateToString(Qt::TouchPointState state)
22{
22{
23 switch (state) {
23 switch (state) {
24 case Qt::TouchPointPressed:
24 case Qt::TouchPointPressed:
25− return QString("pressed");
25+ return QStringLiteral("pressed");
26 case Qt::TouchPointMoved:
26 case Qt::TouchPointMoved:
27− return QString("moved");
27+ return QStringLiteral("moved");
28 case Qt::TouchPointStationary:
28 case Qt::TouchPointStationary:
29− return QString("stationary");
29+ return QStringLiteral("stationary");
30 case Qt::TouchPointReleased:
30 case Qt::TouchPointReleased:
31− return QString("released");
31+ return QStringLiteral("released");
32 default:
32 default:
33− return QString("INVALID_STATE");
33+ return QStringLiteral("INVALID_STATE");
34 }
34 }
35}
35}
36
36
@@ -57,7 +57,7 @@ QString touchEventToString(const QTouchEvent *ev)
57
57
58 foreach(const QTouchEvent::TouchPoint& touchPoint, ev->touchPoints()) {
58 foreach(const QTouchEvent::TouchPoint& touchPoint, ev->touchPoints()) {
59 message.append(
59 message.append(
60− QString("(id:%1, state:%2, scenePos:(%3,%4)) ")
60+ QStringLiteral("(id:%1, state:%2, scenePos:(%3,%4)) ")
61 .arg(touchPoint.id())
61 .arg(touchPoint.id())
62 .arg(touchPointStateToString(touchPoint.state()))
62 .arg(touchPointStateToString(touchPoint.state()))
63 .arg(touchPoint.scenePos().x())
63 .arg(touchPoint.scenePos().x())
@@ -89,7 +89,7 @@ QString mouseEventToString(const QMouseEvent *ev)
89 message.append("INVALID_MOUSE_EVENT_TYPE ");
89 message.append("INVALID_MOUSE_EVENT_TYPE ");
90 }
90 }
91
91
92− message.append(QString("pos(%1, %2)").arg(ev->x()).arg(ev->y()));
92+ message.append(QStringLiteral("pos(%1, %2)").arg(ev->x()).arg(ev->y()));
93
93
94 return message;
94 return message;
95}
95}
libs/UbuntuGestures/TouchRegistry.cpp+1−1
@@ -105,7 +105,7 @@ void TouchRegistry::deliverTouchUpdatesToUndecidedCandidatesAndWatchers(const QT
105 // E.g.: a QTouchEvent might have three touches but a given item might be interested in only
105 // E.g.: a QTouchEvent might have three touches but a given item might be interested in only
106 // one of them. So he will get a UnownedTouchEvent from this QTouchEvent containing only that
106 // one of them. So he will get a UnownedTouchEvent from this QTouchEvent containing only that
107 // touch point.
107 // touch point.
108− QMap<QQuickItem*, QList<int>> touchIdsForItems;
108+ QHash<QQuickItem*, QList<int>> touchIdsForItems;
109
109
110 // Build touchIdsForItems
110 // Build touchIdsForItems
111 m_touchInfoPool.forEach([&](Pool<TouchInfo>::Iterator &touchInfo) {
111 m_touchInfoPool.forEach([&](Pool<TouchInfo>::Iterator &touchInfo) {
plugins/AccountsService/AccountsService.cpp+35−35
@@ -74,7 +74,7 @@ void AccountsService::setDemoEdges(bool demoEdges)
74{
74{
75 if (m_demoEdges != demoEdges) {
75 if (m_demoEdges != demoEdges) {
76 m_demoEdges = demoEdges;
76 m_demoEdges = demoEdges;
77− m_service->setUserProperty(m_user, "com.canonical.unity.AccountsService", "demo-edges", demoEdges);
77+ m_service->setUserProperty(m_user, QStringLiteral("com.canonical.unity.AccountsService"), QStringLiteral("demo-edges"), demoEdges);
78
78
79 Q_EMIT demoEdgesChanged();
79 Q_EMIT demoEdgesChanged();
80 }
80 }
@@ -114,7 +114,7 @@ void AccountsService::setHereEnabled(bool enabled)
114{
114{
115 if (m_hereEnabled != enabled) {
115 if (m_hereEnabled != enabled) {
116 m_hereEnabled = enabled;
116 m_hereEnabled = enabled;
117− m_service->setUserProperty(m_user, "com.ubuntu.location.providers.here.AccountsService", "LicenseAccepted", enabled);
117+ m_service->setUserProperty(m_user, QStringLiteral("com.ubuntu.location.providers.here.AccountsService"), QStringLiteral("LicenseAccepted"), enabled);
118
118
119 Q_EMIT hereEnabledChanged();
119 Q_EMIT hereEnabledChanged();
120 }
120 }
@@ -133,8 +133,8 @@ bool AccountsService::hereLicensePathValid() const
133void AccountsService::updateDemoEdges(bool async)
133void AccountsService::updateDemoEdges(bool async)
134{
134{
135 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
135 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
136− "com.canonical.unity.AccountsService",
136+ QStringLiteral("com.canonical.unity.AccountsService"),
137− "demo-edges");
137+ QStringLiteral("demo-edges"));
138 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
138 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
139
139
140 connect(watcher, &QDBusPendingCallWatcher::finished,
140 connect(watcher, &QDBusPendingCallWatcher::finished,
@@ -162,8 +162,8 @@ void AccountsService::updateDemoEdges(bool async)
162void AccountsService::updateEnableLauncherWhileLocked(bool async)
162void AccountsService::updateEnableLauncherWhileLocked(bool async)
163{
163{
164 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
164 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
165− "com.ubuntu.AccountsService.SecurityPrivacy",
165+ QStringLiteral("com.ubuntu.AccountsService.SecurityPrivacy"),
166− "EnableLauncherWhileLocked");
166+ QStringLiteral("EnableLauncherWhileLocked"));
167 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
167 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
168
168
169 connect(watcher, &QDBusPendingCallWatcher::finished,
169 connect(watcher, &QDBusPendingCallWatcher::finished,
@@ -191,8 +191,8 @@ void AccountsService::updateEnableLauncherWhileLocked(bool async)
191void AccountsService::updateEnableIndicatorsWhileLocked(bool async)
191void AccountsService::updateEnableIndicatorsWhileLocked(bool async)
192{
192{
193 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
193 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
194− "com.ubuntu.AccountsService.SecurityPrivacy",
194+ QStringLiteral("com.ubuntu.AccountsService.SecurityPrivacy"),
195− "EnableIndicatorsWhileLocked");
195+ QStringLiteral("EnableIndicatorsWhileLocked"));
196 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
196 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
197
197
198 connect(watcher, &QDBusPendingCallWatcher::finished,
198 connect(watcher, &QDBusPendingCallWatcher::finished,
@@ -220,8 +220,8 @@ void AccountsService::updateEnableIndicatorsWhileLocked(bool async)
220void AccountsService::updateBackgroundFile(bool async)
220void AccountsService::updateBackgroundFile(bool async)
221{
221{
222 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
222 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
223− "org.freedesktop.Accounts.User",
223+ QStringLiteral("org.freedesktop.Accounts.User"),
224− "BackgroundFile");
224+ QStringLiteral("BackgroundFile"));
225 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
225 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
226
226
227 connect(watcher, &QDBusPendingCallWatcher::finished,
227 connect(watcher, &QDBusPendingCallWatcher::finished,
@@ -249,8 +249,8 @@ void AccountsService::updateBackgroundFile(bool async)
249void AccountsService::updateStatsWelcomeScreen(bool async)
249void AccountsService::updateStatsWelcomeScreen(bool async)
250{
250{
251 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
251 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
252− "com.ubuntu.touch.AccountsService.SecurityPrivacy",
252+ QStringLiteral("com.ubuntu.touch.AccountsService.SecurityPrivacy"),
253− "StatsWelcomeScreen");
253+ QStringLiteral("StatsWelcomeScreen"));
254 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
254 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
255
255
256 connect(watcher, &QDBusPendingCallWatcher::finished,
256 connect(watcher, &QDBusPendingCallWatcher::finished,
@@ -278,8 +278,8 @@ void AccountsService::updateStatsWelcomeScreen(bool async)
278void AccountsService::updatePasswordDisplayHint(bool async)
278void AccountsService::updatePasswordDisplayHint(bool async)
279{
279{
280 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
280 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
281− "com.ubuntu.AccountsService.SecurityPrivacy",
281+ QStringLiteral("com.ubuntu.AccountsService.SecurityPrivacy"),
282− "PasswordDisplayHint");
282+ QStringLiteral("PasswordDisplayHint"));
283 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
283 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
284
284
285 connect(watcher, &QDBusPendingCallWatcher::finished,
285 connect(watcher, &QDBusPendingCallWatcher::finished,
@@ -307,8 +307,8 @@ void AccountsService::updatePasswordDisplayHint(bool async)
307void AccountsService::updateFailedLogins(bool async)
307void AccountsService::updateFailedLogins(bool async)
308{
308{
309 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
309 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
310− "com.canonical.unity.AccountsService.Private",
310+ QStringLiteral("com.canonical.unity.AccountsService.Private"),
311− "FailedLogins");
311+ QStringLiteral("FailedLogins"));
312 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
312 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
313
313
314 connect(watcher, &QDBusPendingCallWatcher::finished,
314 connect(watcher, &QDBusPendingCallWatcher::finished,
@@ -336,8 +336,8 @@ void AccountsService::updateFailedLogins(bool async)
336void AccountsService::updateHereEnabled(bool async)
336void AccountsService::updateHereEnabled(bool async)
337{
337{
338 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
338 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
339− "com.ubuntu.location.providers.here.AccountsService",
339+ QStringLiteral("com.ubuntu.location.providers.here.AccountsService"),
340− "LicenseAccepted");
340+ QStringLiteral("LicenseAccepted"));
341 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
341 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
342
342
343 connect(watcher, &QDBusPendingCallWatcher::finished,
343 connect(watcher, &QDBusPendingCallWatcher::finished,
@@ -365,8 +365,8 @@ void AccountsService::updateHereEnabled(bool async)
365void AccountsService::updateHereLicensePath(bool async)
365void AccountsService::updateHereLicensePath(bool async)
366{
366{
367 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
367 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
368− "com.ubuntu.location.providers.here.AccountsService",
368+ QStringLiteral("com.ubuntu.location.providers.here.AccountsService"),
369− "LicenseBasePath");
369+ QStringLiteral("LicenseBasePath"));
370 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
370 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
371
371
372 connect(watcher, &QDBusPendingCallWatcher::finished,
372 connect(watcher, &QDBusPendingCallWatcher::finished,
@@ -381,7 +381,7 @@ void AccountsService::updateHereLicensePath(bool async)
381
381
382 QString hereLicensePath = reply.value().toString();
382 QString hereLicensePath = reply.value().toString();
383 if (hereLicensePath.isEmpty() || !QFile::exists(hereLicensePath))
383 if (hereLicensePath.isEmpty() || !QFile::exists(hereLicensePath))
384− hereLicensePath = "";
384+ hereLicensePath = QLatin1String("");
385
385
386 if (m_hereLicensePath.isNull() || m_hereLicensePath != hereLicensePath) {
386 if (m_hereLicensePath.isNull() || m_hereLicensePath != hereLicensePath) {
387 m_hereLicensePath = hereLicensePath;
387 m_hereLicensePath = hereLicensePath;
@@ -403,7 +403,7 @@ void AccountsService::setFailedLogins(uint failedLogins)
403{
403{
404 if (m_failedLogins != failedLogins) {
404 if (m_failedLogins != failedLogins) {
405 m_failedLogins = failedLogins;
405 m_failedLogins = failedLogins;
406− m_service->setUserProperty(m_user, "com.canonical.unity.AccountsService.Private", "FailedLogins", failedLogins);
406+ m_service->setUserProperty(m_user, QStringLiteral("com.canonical.unity.AccountsService.Private"), QStringLiteral("FailedLogins"), failedLogins);
407
407
408 Q_EMIT failedLoginsChanged();
408 Q_EMIT failedLoginsChanged();
409 }
409 }
@@ -415,33 +415,33 @@ void AccountsService::onPropertiesChanged(const QString &user, const QString &in
415 return;
415 return;
416 }
416 }
417
417
418− if (interface == "com.canonical.unity.AccountsService") {
418+ if (interface == QLatin1String("com.canonical.unity.AccountsService")) {
419− if (changed.contains("demo-edges")) {
419+ if (changed.contains(QStringLiteral("demo-edges"))) {
420 updateDemoEdges();
420 updateDemoEdges();
421 }
421 }
422− } else if (interface == "com.canonical.unity.AccountsService.Private") {
422+ } else if (interface == QLatin1String("com.canonical.unity.AccountsService.Private")) {
423− if (changed.contains("FailedLogins")) {
423+ if (changed.contains(QStringLiteral("FailedLogins"))) {
424 updateFailedLogins();
424 updateFailedLogins();
425 }
425 }
426− } else if (interface == "com.ubuntu.touch.AccountsService.SecurityPrivacy") {
426+ } else if (interface == QLatin1String("com.ubuntu.touch.AccountsService.SecurityPrivacy")) {
427− if (changed.contains("StatsWelcomeScreen")) {
427+ if (changed.contains(QStringLiteral("StatsWelcomeScreen"))) {
428 updateStatsWelcomeScreen();
428 updateStatsWelcomeScreen();
429 }
429 }
430− } else if (interface == "com.ubuntu.AccountsService.SecurityPrivacy") {
430+ } else if (interface == QLatin1String("com.ubuntu.AccountsService.SecurityPrivacy")) {
431− if (changed.contains("PasswordDisplayHint")) {
431+ if (changed.contains(QStringLiteral("PasswordDisplayHint"))) {
432 updatePasswordDisplayHint();
432 updatePasswordDisplayHint();
433 }
433 }
434− if (changed.contains("EnableLauncherWhileLocked")) {
434+ if (changed.contains(QStringLiteral("EnableLauncherWhileLocked"))) {
435 updateEnableLauncherWhileLocked();
435 updateEnableLauncherWhileLocked();
436 }
436 }
437− if (changed.contains("EnableIndicatorsWhileLocked")) {
437+ if (changed.contains(QStringLiteral("EnableIndicatorsWhileLocked"))) {
438 updateEnableIndicatorsWhileLocked();
438 updateEnableIndicatorsWhileLocked();
439 }
439 }
440− } else if (interface == "com.ubuntu.location.providers.here.AccountsService") {
440+ } else if (interface == QLatin1String("com.ubuntu.location.providers.here.AccountsService")) {
441− if (changed.contains("LicenseAccepted")) {
441+ if (changed.contains(QStringLiteral("LicenseAccepted"))) {
442 updateHereEnabled();
442 updateHereEnabled();
443 }
443 }
444− if (changed.contains("LicenseBasePath")) {
444+ if (changed.contains(QStringLiteral("LicenseBasePath"))) {
445 updateHereLicensePath();
445 updateHereLicensePath();
446 }
446 }
447 }
447 }
plugins/AccountsService/AccountsServiceDBusAdaptor.cpp+17−17
@@ -30,10 +30,10 @@ AccountsServiceDBusAdaptor::AccountsServiceDBusAdaptor(QObject* parent)
30{
30{
31 QDBusConnection connection = QDBusConnection::SM_BUSNAME();
31 QDBusConnection connection = QDBusConnection::SM_BUSNAME();
32 QDBusConnectionInterface *interface = connection.interface();
32 QDBusConnectionInterface *interface = connection.interface();
33− interface->startService("org.freedesktop.Accounts");
33+ interface->startService(QStringLiteral("org.freedesktop.Accounts"));
34− m_accountsManager = new QDBusInterface("org.freedesktop.Accounts",
34+ m_accountsManager = new QDBusInterface(QStringLiteral("org.freedesktop.Accounts"),
35− "/org/freedesktop/Accounts",
35+ QStringLiteral("/org/freedesktop/Accounts"),
36− "org.freedesktop.Accounts",
36+ QStringLiteral("org.freedesktop.Accounts"),
37 connection, this);
37 connection, this);
38}
38}
39
39
@@ -41,7 +41,7 @@ QVariant AccountsServiceDBusAdaptor::getUserProperty(const QString &user, const
41{
41{
42 QDBusInterface *iface = getUserInterface(user);
42 QDBusInterface *iface = getUserInterface(user);
43 if (iface != nullptr && iface->isValid()) {
43 if (iface != nullptr && iface->isValid()) {
44− QDBusReply<QVariant> answer = iface->call("Get", interface, property);
44+ QDBusReply<QVariant> answer = iface->call(QStringLiteral("Get"), interface, property);
45 if (answer.isValid()) {
45 if (answer.isValid()) {
46 return answer;
46 return answer;
47 }
47 }
@@ -53,9 +53,9 @@ QDBusPendingReply<QVariant> AccountsServiceDBusAdaptor::getUserPropertyAsync(con
53{
53{
54 QDBusInterface *iface = getUserInterface(user);
54 QDBusInterface *iface = getUserInterface(user);
55 if (iface != nullptr && iface->isValid()) {
55 if (iface != nullptr && iface->isValid()) {
56− return iface->asyncCall("Get", interface, property);
56+ return iface->asyncCall(QStringLiteral("Get"), interface, property);
57 }
57 }
58− return QDBusPendingReply<QVariant>(QDBusMessage::createError(QDBusError::Other, "Invalid Interface"));
58+ return QDBusPendingReply<QVariant>(QDBusMessage::createError(QDBusError::Other, QStringLiteral("Invalid Interface")));
59}
59}
60
60
61void AccountsServiceDBusAdaptor::setUserProperty(const QString &user, const QString &interface, const QString &property, const QVariant &value)
61void AccountsServiceDBusAdaptor::setUserProperty(const QString &user, const QString &interface, const QString &property, const QVariant &value)
@@ -63,7 +63,7 @@ void AccountsServiceDBusAdaptor::setUserProperty(const QString &user, const QStr
63 QDBusInterface *iface = getUserInterface(user);
63 QDBusInterface *iface = getUserInterface(user);
64 if (iface != nullptr && iface->isValid()) {
64 if (iface != nullptr && iface->isValid()) {
65 // The value needs to be carefully wrapped
65 // The value needs to be carefully wrapped
66− iface->call("Set", interface, property, QVariant::fromValue(QDBusVariant(value)));
66+ iface->call(QStringLiteral("Set"), interface, property, QVariant::fromValue(QDBusVariant(value)));
67 }
67 }
68}
68}
69
69
@@ -72,9 +72,9 @@ QDBusPendingCall AccountsServiceDBusAdaptor::setUserPropertyAsync(const QString
72 QDBusInterface *iface = getUserInterface(user);
72 QDBusInterface *iface = getUserInterface(user);
73 if (iface != nullptr && iface->isValid()) {
73 if (iface != nullptr && iface->isValid()) {
74 // The value needs to be carefully wrapped
74 // The value needs to be carefully wrapped
75− return iface->asyncCall("Set", interface, property, QVariant::fromValue(QDBusVariant(value)));
75+ return iface->asyncCall(QStringLiteral("Set"), interface, property, QVariant::fromValue(QDBusVariant(value)));
76 }
76 }
77− return QDBusPendingCall::fromCompletedCall(QDBusMessage::createError(QDBusError::Other, "Invalid Interface"));
77+ return QDBusPendingCall::fromCompletedCall(QDBusMessage::createError(QDBusError::Other, QStringLiteral("Invalid Interface")));
78}
78}
79
79
80void AccountsServiceDBusAdaptor::propertiesChangedSlot(const QString &interface, const QVariantMap &changed, const QStringList &invalid)
80void AccountsServiceDBusAdaptor::propertiesChangedSlot(const QString &interface, const QVariantMap &changed, const QStringList &invalid)
@@ -116,13 +116,13 @@ QDBusInterface *AccountsServiceDBusAdaptor::getUserInterface(const QString &user
116{
116{
117 QDBusInterface *iface = m_users.value(user);
117 QDBusInterface *iface = m_users.value(user);
118 if (iface == nullptr && m_accountsManager->isValid()) {
118 if (iface == nullptr && m_accountsManager->isValid()) {
119− QDBusReply<QDBusObjectPath> answer = m_accountsManager->asyncCall("FindUserByName", user);
119+ QDBusReply<QDBusObjectPath> answer = m_accountsManager->asyncCall(QStringLiteral("FindUserByName"), user);
120 if (answer.isValid()) {
120 if (answer.isValid()) {
121 const QString path = answer.value().path();
121 const QString path = answer.value().path();
122
122
123− iface = new QDBusInterface("org.freedesktop.Accounts",
123+ iface = new QDBusInterface(QStringLiteral("org.freedesktop.Accounts"),
124 path,
124 path,
125− "org.freedesktop.DBus.Properties",
125+ QStringLiteral("org.freedesktop.DBus.Properties"),
126 m_accountsManager->connection(), this);
126 m_accountsManager->connection(), this);
127
127
128 // With its own pre-defined properties, AccountsService is oddly
128 // With its own pre-defined properties, AccountsService is oddly
@@ -132,8 +132,8 @@ QDBusInterface *AccountsServiceDBusAdaptor::getUserInterface(const QString &user
132 iface->connection().connect(
132 iface->connection().connect(
133 iface->service(),
133 iface->service(),
134 path,
134 path,
135− "org.freedesktop.Accounts.User",
135+ QStringLiteral("org.freedesktop.Accounts.User"),
136− "Changed",
136+ QStringLiteral("Changed"),
137 this,
137 this,
138 SLOT(maybeChangedSlot()));
138 SLOT(maybeChangedSlot()));
139
139
@@ -142,8 +142,8 @@ QDBusInterface *AccountsServiceDBusAdaptor::getUserInterface(const QString &user
142 iface->connection().connect(
142 iface->connection().connect(
143 iface->service(),
143 iface->service(),
144 path,
144 path,
145− "org.freedesktop.DBus.Properties",
145+ QStringLiteral("org.freedesktop.DBus.Properties"),
146− "PropertiesChanged",
146+ QStringLiteral("PropertiesChanged"),
147 this,
147 this,
148 SLOT(propertiesChangedSlot(QString, QVariantMap, QStringList)));
148 SLOT(propertiesChangedSlot(QString, QVariantMap, QStringList)));
149
149
plugins/Dash/CMakeLists.txt−2
@@ -24,8 +24,6 @@ set(QMLPLUGIN_SRC
24 verticaljournal.cpp
24 verticaljournal.cpp
25 horizontaljournal.cpp
25 horizontaljournal.cpp
26 organicgrid.cpp
26 organicgrid.cpp
27− croppedimagesizer.cpp
28− croppedimagesizerasyncworker.cpp
29 )
27 )
30
28
31add_library(Dash-qml MODULE
29add_library(Dash-qml MODULE
plugins/Dash/CardCreator.js+4−4
@@ -68,7 +68,7 @@ var kArtShapeHolderCode = 'Item { \n\
68 objectName: "artShape"; \n\
68 objectName: "artShape"; \n\
69 property bool doShapeItem: components["art"]["conciergeMode"] !== true; \n\
69 property bool doShapeItem: components["art"]["conciergeMode"] !== true; \n\
70 visible: image.status == Image.Ready; \n\
70 visible: image.status == Image.Ready; \n\
71− readonly property alias image: artImage.image; \n\
71+ readonly property alias image: artImage; \n\
72 property alias borderSource: artShapeShape.borderSource; \n\
72 property alias borderSource: artShapeShape.borderSource; \n\
73 ShaderEffectSource { \n\
73 ShaderEffectSource { \n\
74 id: artShapeSource; \n\
74 id: artShapeSource; \n\
@@ -195,11 +195,11 @@ var kMascotShapeLoaderCode = 'Loader { \n\
195 id: mascotShapeLoader; \n\
195 id: mascotShapeLoader; \n\
196 objectName: "mascotShapeLoader"; \n\
196 objectName: "mascotShapeLoader"; \n\
197 asynchronous: root.asynchronous; \n\
197 asynchronous: root.asynchronous; \n\
198− active: mascotImage.image.status === Image.Ready; \n\
198+ active: mascotImage.status === Image.Ready; \n\
199 visible: showHeader && active && status == Loader.Ready; \n\
199 visible: showHeader && active && status == Loader.Ready; \n\
200 width: units.gu(6); \n\
200 width: units.gu(6); \n\
201 height: units.gu(5.625); \n\
201 height: units.gu(5.625); \n\
202− sourceComponent: UbuntuShape { image: mascotImage.image } \n\
202+ sourceComponent: UbuntuShape { image: mascotImage } \n\
203 anchors { %1 } \n\
203 anchors { %1 } \n\
204 }\n';
204 }\n';
205
205
@@ -476,7 +476,7 @@ function cardString(template, components) {
476 mascotCode = kMascotImageCode.arg(mascotAnchors).arg(mascotImageVisible);
476 mascotCode = kMascotImageCode.arg(mascotAnchors).arg(mascotImageVisible);
477 var fallback = components["mascot"] && components["mascot"]["fallback"] || "";
477 var fallback = components["mascot"] && components["mascot"]["fallback"] || "";
478 if (fallback !== "") {
478 if (fallback !== "") {
479− code += 'Connections { target: mascotImage.image; onStatusChanged: if (mascotImage.image.status === Image.Error) mascotImage.source = "%1"; } \n'.arg(fallback);
479+ code += 'Connections { target: mascotImage; onStatusChanged: if (mascotImage.status === Image.Error) mascotImage.source = "%1"; } \n'.arg(fallback);
480 }
480 }
481 }
481 }
482
482
plugins/Dash/CroppedImageMinimumSourceSize.qml+5−22
@@ -15,30 +15,13 @@
15 */
15 */
16
16
17import QtQuick 2.3
17import QtQuick 2.3
18−import Dash 0.1
19
18
20−Item {
19+Image {
21 id: root
20 id: root
22
21
23− property string source
22+ fillMode: Image.PreserveAspectCrop
24− property alias image: innerImage
25− property alias asynchronous: innerImage.asynchronous
26− property alias verticalAlignment: innerImage.verticalAlignment
27− property alias horizontalAlignment: innerImage.horizontalAlignment
28− property alias fillMode: innerImage.fillMode
29
23
30− CroppedImageSizer {
24+ readonly property real itemAspectRatio: width / height
31− id: sizer
25+ readonly property real imageAspectRatio: implicitWidth / implicitHeight
32− source: root.source
26+ sourceSize: (imageAspectRatio > itemAspectRatio) ? Qt.size(0, height) : Qt.size(width, 0)
33− width: root.width
34− height: root.height
35− }
36−
37− Image {
38− id: innerImage
39− anchors.fill: parent
40− fillMode: Image.PreserveAspectCrop
41− sourceSize: sizer.sourceSize.width == 0 && sizer.sourceSize.height == 0 ? undefined : sizer.sourceSize
42− source: sizer.sourceSize.width == -1 && sizer.sourceSize.height == -1 ? "" : root.source
43− }
44}
27}
plugins/Dash/Dash.qmltypes−15
@@ -19,21 +19,6 @@ Module {
19 Property { name: "displayMarginBeginning"; type: "double" }
19 Property { name: "displayMarginBeginning"; type: "double" }
20 Property { name: "displayMarginEnd"; type: "double" }
20 Property { name: "displayMarginEnd"; type: "double" }
21 }
21 }
22− Component {
23− name: "CroppedImageSizer"
24− prototype: "QObject"
25− exports: ["Dash/CroppedImageSizer 0.1"]
26− exportMetaObjectRevisions: [0]
27− Property { name: "source"; type: "QUrl" }
28− Property { name: "width"; type: "double" }
29− Property { name: "height"; type: "double" }
30− Property { name: "sourceSize"; type: "QSize"; isReadonly: true }
31− Signal { name: "inputParamsChanged" }
32− Method {
33− name: "setImageSize"
34− Parameter { name: "imageSize"; type: "QSize" }
35− }
36− }
37 Component {
22 Component {
38 name: "HorizontalJournal"
23 name: "HorizontalJournal"
39 defaultProperty: "data"
24 defaultProperty: "data"
plugins/Dash/croppedimagesizer.cppdeleted−136
@@ -1,136 +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−#include "croppedimagesizer.h"
18−
19−#include "croppedimagesizerasyncworker.h"
20−
21−#include <QNetworkAccessManager>
22−#include <QNetworkRequest>
23−#include <QQmlEngine>
24−#include <QQuickItem>
25−
26−CroppedImageSizer::CroppedImageSizer()
27− : m_width(0),
28− m_height(0),
29− m_sourceSize(QSize(-1, -1)),
30− m_worker(nullptr)
31−{
32− connect(this, &CroppedImageSizer::inputParamsChanged, this, &CroppedImageSizer::calculateSourceSize);
33− connect(this, &CroppedImageSizer::sourceChanged, this, &CroppedImageSizer::requestImage);
34−}
35−
36−CroppedImageSizer::~CroppedImageSizer()
37−{
38− if (m_worker) {
39− m_worker->abort();
40− }
41−}
42−
43−QUrl CroppedImageSizer::source() const
44−{
45− return m_source;
46−}
47−
48−void CroppedImageSizer::setSource(const QUrl &source)
49−{
50− if (source != m_source) {
51− m_source = source;
52− Q_EMIT sourceChanged();
53− }
54−}
55−
56−qreal CroppedImageSizer::width() const
57−{
58− return m_width;
59−}
60−
61−void CroppedImageSizer::setWidth(qreal width)
62−{
63− if (width != m_width) {
64− m_width = width;
65− Q_EMIT inputParamsChanged();
66− }
67−}
68−
69−qreal CroppedImageSizer::height() const
70−{
71− return m_height;
72−}
73−
74−void CroppedImageSizer::setHeight(qreal height)
75−{
76− if (height != m_height) {
77− m_height = height;
78− Q_EMIT inputParamsChanged();
79− }
80−}
81−
82−QSize CroppedImageSizer::sourceSize() const
83−{
84− return m_sourceSize;
85−}
86−
87−void CroppedImageSizer::setSourceSize(const QSize &sourceSize)
88−{
89− if (sourceSize != m_sourceSize) {
90− m_sourceSize = sourceSize;
91− Q_EMIT sourceSizeChanged();
92− }
93−}
94−
95−void CroppedImageSizer::setImageSize(const QSize &imageSize)
96−{
97− m_imageSize = imageSize;
98− m_worker = nullptr;
99− calculateSourceSize();
100−}
101−
102−void CroppedImageSizer::requestImage()
103−{
104− if (m_worker) {
105− m_worker->abort();
106− m_worker = nullptr;
107− }
108−
109− if (m_source.isValid() && qmlEngine(this) && qmlEngine(this)->networkAccessManager()) {
110− QNetworkRequest request(m_source);
111− QNetworkReply *reply = qmlEngine(this)->networkAccessManager()->get(request);
112− m_worker = new CroppedImageSizerAsyncWorker(this, reply);
113− } else {
114− setSourceSize(QSize(-1, -1));
115− }
116−}
117−
118−void CroppedImageSizer::calculateSourceSize()
119−{
120− if (m_source.isValid() && m_width > 0 && m_height > 0 && !m_worker) {
121− if (!m_imageSize.isEmpty()) {
122− const qreal ar = m_width / m_height;
123− const qreal ssar = m_imageSize.width() / (qreal)m_imageSize.height();
124− if (ar > ssar) {
125− setSourceSize(QSize(m_width, 0));
126− } else {
127− setSourceSize(QSize(0, m_height));
128− }
129− } else {
130− qWarning() << "Invalid size for " << m_source << m_imageSize;
131− setSourceSize(QSize(0, 0));
132− }
133− } else {
134− setSourceSize(QSize(-1, -1));
135− }
136−}
plugins/Dash/croppedimagesizer.hdeleted−72
@@ -1,72 +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−#ifndef CROPPEDIMAGESIZER_H
18−#define CROPPEDIMAGESIZER_H
19−
20−#include <QImageReader>
21−#include <QObject>
22−#include <QSize>
23−#include <QUrl>
24−
25−class CroppedImageSizerAsyncWorker;
26−
27−class CroppedImageSizer : public QObject
28−{
29− Q_OBJECT
30−
31− Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged)
32− Q_PROPERTY(qreal width READ width WRITE setWidth NOTIFY inputParamsChanged)
33− Q_PROPERTY(qreal height READ height WRITE setHeight NOTIFY inputParamsChanged)
34− Q_PROPERTY(QSize sourceSize READ sourceSize NOTIFY sourceSizeChanged)
35−
36−public:
37− CroppedImageSizer();
38− ~CroppedImageSizer();
39−
40− QUrl source() const;
41− void setSource(const QUrl &source);
42−
43− qreal width() const;
44− void setWidth(qreal width);
45−
46− qreal height() const;
47− void setHeight(qreal height);
48−
49− QSize sourceSize() const;
50− void setSourceSize(const QSize &sourceSize);
51−
52− Q_INVOKABLE void setImageSize(const QSize &imageSize);
53−
54−Q_SIGNALS:
55− void inputParamsChanged();
56− void sourceChanged();
57− void sourceSizeChanged();
58−
59−private Q_SLOT:
60− void calculateSourceSize();
61− void requestImage();
62−
63−private:
64− QUrl m_source;
65− qreal m_width;
66− qreal m_height;
67− QSize m_sourceSize;
68− QSize m_imageSize;
69− QPointer<CroppedImageSizerAsyncWorker> m_worker;
70−};
71−
72−#endif
plugins/Dash/croppedimagesizerasyncworker.cppdeleted−74
@@ -1,74 +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−#include "croppedimagesizerasyncworker.h"
18−
19−#include "croppedimagesizer.h"
20−
21−#include <QNetworkReply>
22−#include <QtConcurrentRun>
23−
24−CroppedImageSizerAsyncWorker::CroppedImageSizerAsyncWorker(CroppedImageSizer *sizer, QNetworkReply *reply)
25− : m_sizer(sizer),
26− m_reply(reply),
27− m_ignoreAbort(false)
28−{
29− connect(m_reply, &QNetworkReply::finished, this, &CroppedImageSizerAsyncWorker::requestFinished);
30−}
31−
32−void CroppedImageSizerAsyncWorker::abort()
33−{
34− // This runs on main thread
35− QMutexLocker locker(&m_mutex);
36− m_sizer = nullptr;
37− // If we already started the future run we can't abort the reply
38− // since we don't know at which stage the future is, just let it finish
39− if (!m_ignoreAbort) {
40− QMetaObject::invokeMethod(m_reply, "abort", Qt::QueuedConnection);
41− }
42−}
43−
44−void CroppedImageSizerAsyncWorker::requestFinished()
45−{
46− // This runs on main thread
47− QMutexLocker locker(&m_mutex);
48− if (m_sizer) {
49− m_ignoreAbort = true;
50− QtConcurrent::run(processRequestFinished, this);
51− } else {
52− // We were aborted delete ourselves
53− m_reply->deleteLater();
54− deleteLater();
55− }
56−}
57−
58−void CroppedImageSizerAsyncWorker::processRequestFinished(CroppedImageSizerAsyncWorker *worker)
59−{
60− // This runs on non main thread
61− // m_reply has finished at this point and is protected against change by m_ignoreAbort
62− QImageReader reader(worker->m_reply);
63− const QSize imageSize = reader.size();
64−
65− worker->m_mutex.lock();
66− if (worker->m_sizer) {
67− QMetaObject::invokeMethod(worker->m_sizer, "setImageSize", Qt::QueuedConnection, Q_ARG(QSize, imageSize));
68− }
69− worker->m_mutex.unlock();
70−
71− // All work is done, delete ourselves
72− worker->m_reply->deleteLater();
73− worker->deleteLater();
74−}
plugins/Dash/horizontaljournal.cpp−2
@@ -33,8 +33,6 @@
33#include <private/qquickitem_p.h>
33#include <private/qquickitem_p.h>
34#pragma GCC diagnostic pop
34#pragma GCC diagnostic pop
35
35
36−static const qreal bufferRatio = 0.5;
37−
38HorizontalJournal::HorizontalJournal()
36HorizontalJournal::HorizontalJournal()
39 : m_firstVisibleIndex(-1)
37 : m_firstVisibleIndex(-1)
40 , m_rowHeight(0)
38 , m_rowHeight(0)
plugins/Dash/listviewwithpageheader.cpp+12−12
@@ -164,7 +164,7 @@ ListViewWithPageHeader::ListViewWithPageHeader()
164
164
165 m_contentYAnimation = new QQuickNumberAnimation(this);
165 m_contentYAnimation = new QQuickNumberAnimation(this);
166 m_contentYAnimation->setEasing(QEasingCurve::OutQuad);
166 m_contentYAnimation->setEasing(QEasingCurve::OutQuad);
167− m_contentYAnimation->setProperty("contentY");
167+ m_contentYAnimation->setProperty(QStringLiteral("contentY"));
168 m_contentYAnimation->setDuration(200);
168 m_contentYAnimation->setDuration(200);
169 m_contentYAnimation->setTargetObject(this);
169 m_contentYAnimation->setTargetObject(this);
170
170
@@ -745,8 +745,8 @@ QQuickItem *ListViewWithPageHeader::getSectionItem(const QString &sectionText)
745
745
746 QQmlContext *creationContext = m_sectionDelegate->creationContext();
746 QQmlContext *creationContext = m_sectionDelegate->creationContext();
747 QQmlContext *context = new QQmlContext(creationContext ? creationContext : qmlContext(this));
747 QQmlContext *context = new QQmlContext(creationContext ? creationContext : qmlContext(this));
748− context->setContextProperty(QLatin1String("section"), sectionText);
748+ context->setContextProperty(QStringLiteral("section"), sectionText);
749− context->setContextProperty(QLatin1String("delegateIndex"), -1);
749+ context->setContextProperty(QStringLiteral("delegateIndex"), -1);
750 QObject *nobj = m_sectionDelegate->beginCreate(context);
750 QObject *nobj = m_sectionDelegate->beginCreate(context);
751 if (nobj) {
751 if (nobj) {
752 QQml_setParent_noEvent(context, nobj);
752 QQml_setParent_noEvent(context, nobj);
@@ -879,7 +879,7 @@ ListViewWithPageHeader::ListItem *ListViewWithPageHeader::createItem(int modelIn
879 }
879 }
880 if (listItem->sectionItem()) {
880 if (listItem->sectionItem()) {
881 QQmlContext *context = QQmlEngine::contextForObject(listItem->sectionItem())->parentContext();
881 QQmlContext *context = QQmlEngine::contextForObject(listItem->sectionItem())->parentContext();
882− context->setContextProperty(QLatin1String("delegateIndex"), modelIndex);
882+ context->setContextProperty(QStringLiteral("delegateIndex"), modelIndex);
883 }
883 }
884 adjustMinYExtent();
884 adjustMinYExtent();
885 m_contentHeightDirty = true;
885 m_contentHeightDirty = true;
@@ -904,8 +904,8 @@ void ListViewWithPageHeader::itemCreated(int modelIndex, QObject *object)
904
904
905 item->setParentItem(m_clipItem);
905 item->setParentItem(m_clipItem);
906 QQmlContext *context = QQmlEngine::contextForObject(item)->parentContext();
906 QQmlContext *context = QQmlEngine::contextForObject(item)->parentContext();
907− context->setContextProperty(QLatin1String("ListViewWithPageHeader"), this);
907+ context->setContextProperty(QStringLiteral("ListViewWithPageHeader"), this);
908− context->setContextProperty(QLatin1String("heightToClip"), QVariant::fromValue<int>(0));
908+ context->setContextProperty(QStringLiteral("heightToClip"), QVariant::fromValue<int>(0));
909 if (modelIndex == m_asyncRequestedIndex) {
909 if (modelIndex == m_asyncRequestedIndex) {
910 createItem(modelIndex, false);
910 createItem(modelIndex, false);
911 refill();
911 refill();
@@ -1059,7 +1059,7 @@ void ListViewWithPageHeader::onModelUpdated(const QQmlChangeSet &changeSet, bool
1059 if (item && item->sectionItem()) {
1059 if (item && item->sectionItem()) {
1060 QQmlContext *context = QQmlEngine::contextForObject(item->sectionItem())->parentContext();
1060 QQmlContext *context = QQmlEngine::contextForObject(item->sectionItem())->parentContext();
1061 const QString sectionText = m_delegateModel->stringValue(i, m_sectionProperty);
1061 const QString sectionText = m_delegateModel->stringValue(i, m_sectionProperty);
1062− context->setContextProperty(QLatin1String("section"), sectionText);
1062+ context->setContextProperty(QStringLiteral("section"), sectionText);
1063 }
1063 }
1064 }
1064 }
1065 }
1065 }
@@ -1072,7 +1072,7 @@ void ListViewWithPageHeader::onModelUpdated(const QQmlChangeSet &changeSet, bool
1072 ListItem *item = m_visibleItems[i];
1072 ListItem *item = m_visibleItems[i];
1073 if (item->sectionItem()) {
1073 if (item->sectionItem()) {
1074 QQmlContext *context = QQmlEngine::contextForObject(item->sectionItem())->parentContext();
1074 QQmlContext *context = QQmlEngine::contextForObject(item->sectionItem())->parentContext();
1075− context->setContextProperty(QLatin1String("delegateIndex"), m_firstVisibleIndex + i);
1075+ context->setContextProperty(QStringLiteral("delegateIndex"), m_firstVisibleIndex + i);
1076 }
1076 }
1077 }
1077 }
1078
1078
@@ -1235,7 +1235,7 @@ void ListViewWithPageHeader::layout()
1235 // Update the top sticky section header
1235 // Update the top sticky section header
1236 const QString section = m_delegateModel->stringValue(modelIndex, m_sectionProperty);
1236 const QString section = m_delegateModel->stringValue(modelIndex, m_sectionProperty);
1237 QQmlContext *context = QQmlEngine::contextForObject(m_topSectionItem)->parentContext();
1237 QQmlContext *context = QQmlEngine::contextForObject(m_topSectionItem)->parentContext();
1238− context->setContextProperty(QLatin1String("section"), section);
1238+ context->setContextProperty(QStringLiteral("section"), section);
1239
1239
1240 QQuickItemPrivate::get(m_topSectionItem)->setCulled(false);
1240 QQuickItemPrivate::get(m_topSectionItem)->setCulled(false);
1241 m_topSectionItem->setY(topSectionStickPos);
1241 m_topSectionItem->setY(topSectionStickPos);
@@ -1247,7 +1247,7 @@ void ListViewWithPageHeader::layout()
1247 break;
1247 break;
1248 delegateIndex--;
1248 delegateIndex--;
1249 }
1249 }
1250− context->setContextProperty(QLatin1String("delegateIndex"), delegateIndex);
1250+ context->setContextProperty(QStringLiteral("delegateIndex"), delegateIndex);
1251 if (item->sectionItem()) {
1251 if (item->sectionItem()) {
1252 QQuickItemPrivate::get(item->sectionItem())->setCulled(true);
1252 QQuickItemPrivate::get(item->sectionItem())->setCulled(true);
1253 }
1253 }
@@ -1257,9 +1257,9 @@ void ListViewWithPageHeader::layout()
1257 QQmlContext *context = QQmlEngine::contextForObject(item->m_item)->parentContext();
1257 QQmlContext *context = QQmlEngine::contextForObject(item->m_item)->parentContext();
1258 const qreal clipFrom = visibleFrom + (!item->sectionItem() && m_topSectionItem && !QQuickItemPrivate::get(m_topSectionItem)->culled ? m_topSectionItem->height() : 0);
1258 const qreal clipFrom = visibleFrom + (!item->sectionItem() && m_topSectionItem && !QQuickItemPrivate::get(m_topSectionItem)->culled ? m_topSectionItem->height() : 0);
1259 if (!cull && pos < clipFrom) {
1259 if (!cull && pos < clipFrom) {
1260− context->setContextProperty(QLatin1String("heightToClip"), clipFrom - pos);
1260+ context->setContextProperty(QStringLiteral("heightToClip"), clipFrom - pos);
1261 } else {
1261 } else {
1262− context->setContextProperty(QLatin1String("heightToClip"), QVariant::fromValue<int>(0));
1262+ context->setContextProperty(QStringLiteral("heightToClip"), QVariant::fromValue<int>(0));
1263 }
1263 }
1264// qDebug() << "ListViewWithPageHeader::layout" << item->m_item;
1264// qDebug() << "ListViewWithPageHeader::layout" << item->m_item;
1265 pos += item->height();
1265 pos += item->height();
plugins/Dash/organicgrid.cpp−2
@@ -21,8 +21,6 @@
21#include <private/qquickitem_p.h>
21#include <private/qquickitem_p.h>
22#pragma GCC diagnostic pop
22#pragma GCC diagnostic pop
23
23
24−static const qreal bufferRatio = 0.5;
25−
26OrganicGrid::OrganicGrid()
24OrganicGrid::OrganicGrid()
27 : m_firstVisibleIndex(-1)
25 : m_firstVisibleIndex(-1)
28 , m_numberOfModulesPerRow(-1)
26 , m_numberOfModulesPerRow(-1)
plugins/Dash/plugin.cpp−2
@@ -17,7 +17,6 @@
17
17
18#include "plugin.h"
18#include "plugin.h"
19
19
20−#include "croppedimagesizer.h"
21#include "horizontaljournal.h"
20#include "horizontaljournal.h"
22#include "listviewwithpageheader.h"
21#include "listviewwithpageheader.h"
23#include "organicgrid.h"
22#include "organicgrid.h"
@@ -33,5 +32,4 @@ void DashPlugin::registerTypes(const char *uri)
33 qmlRegisterType<ListViewWithPageHeader>(uri, 0, 1, "ListViewWithPageHeader");
32 qmlRegisterType<ListViewWithPageHeader>(uri, 0, 1, "ListViewWithPageHeader");
34 qmlRegisterType<OrganicGrid>(uri, 0, 1, "OrganicGrid");
33 qmlRegisterType<OrganicGrid>(uri, 0, 1, "OrganicGrid");
35 qmlRegisterType<VerticalJournal>(uri, 0, 1, "VerticalJournal");
34 qmlRegisterType<VerticalJournal>(uri, 0, 1, "VerticalJournal");
36− qmlRegisterType<CroppedImageSizer>(uri, 0, 1, "CroppedImageSizer");
37}
35}
plugins/Dash/verticaljournal.cpp−2
@@ -32,8 +32,6 @@
32#include <private/qquickitem_p.h>
32#include <private/qquickitem_p.h>
33#pragma GCC diagnostic pop
33#pragma GCC diagnostic pop
34
34
35−static const qreal bufferRatio = 0.5;
36−
37VerticalJournal::VerticalJournal()
35VerticalJournal::VerticalJournal()
38 : m_columnWidth(0)
36 : m_columnWidth(0)
39{
37{
plugins/GlobalShortcut/globalshortcut.cpp+1−1
@@ -72,7 +72,7 @@ void GlobalShortcut::keyPressEvent(QKeyEvent * event)
72void GlobalShortcut::setupFilterOnWindow(QQuickWindow *window)
72void GlobalShortcut::setupFilterOnWindow(QQuickWindow *window)
73{
73{
74 if (!window) {
74 if (!window) {
75− qWarning() << Q_FUNC_INFO << "Failed to setup filter on window";
75+// qWarning() << Q_FUNC_INFO << "Failed to setup filter on window";
76 return;
76 return;
77 }
77 }
78
78
plugins/Greeter/Unity/Launcher/launcheritem.cpp+2−2
@@ -35,7 +35,7 @@ LauncherItem::LauncherItem(const QString &appId, const QString &name, const QStr
35 m_quickList(new QuickListModel(this))
35 m_quickList(new QuickListModel(this))
36{
36{
37 QuickListEntry nameAction;
37 QuickListEntry nameAction;
38− nameAction.setActionId("launch_item");
38+ nameAction.setActionId(QStringLiteral("launch_item"));
39 nameAction.setText(m_name);
39 nameAction.setText(m_name);
40 m_quickList->appendAction(nameAction);
40 m_quickList->appendAction(nameAction);
41}
41}
@@ -55,7 +55,7 @@ void LauncherItem::setName(const QString &name)
55 if (m_name != name) {
55 if (m_name != name) {
56 m_name = name;
56 m_name = name;
57 QuickListEntry entry;
57 QuickListEntry entry;
58− entry.setActionId("launch_item");
58+ entry.setActionId(QStringLiteral("launch_item"));
59 entry.setText(m_name);
59 entry.setText(m_name);
60 m_quickList->updateAction(entry);
60 m_quickList->updateAction(entry);
61 Q_EMIT nameChanged(name);
61 Q_EMIT nameChanged(name);
plugins/Greeter/Unity/Launcher/launchermodelas.cpp+22−22
@@ -122,7 +122,7 @@ void LauncherModel::quickListActionInvoked(const QString &appId, int actionIndex
122 QString actionId = model->get(actionIndex).actionId();
122 QString actionId = model->get(actionIndex).actionId();
123
123
124 // Check if this is one of the launcher actions we handle ourselves
124 // Check if this is one of the launcher actions we handle ourselves
125− if (actionId == "launch_item") {
125+ if (actionId == QLatin1String("launch_item")) {
126 QDesktopServices::openUrl(getUrlForAppId(appId));
126 QDesktopServices::openUrl(getUrlForAppId(appId));
127
127
128 // Nope, we don't know this action, let the backend forward it to the application
128 // Nope, we don't know this action, let the backend forward it to the application
@@ -147,13 +147,13 @@ QString LauncherModel::getUrlForAppId(const QString &appId) const
147 return QString();
147 return QString();
148 }
148 }
149
149
150− if (!appId.contains("_")) {
150+ if (!appId.contains('_')) {
151 return "application:///" + appId + ".desktop";
151 return "application:///" + appId + ".desktop";
152 }
152 }
153
153
154 QStringList parts = appId.split('_');
154 QStringList parts = appId.split('_');
155 QString package = parts.value(0);
155 QString package = parts.value(0);
156− QString app = parts.value(1, "first-listed-app");
156+ QString app = parts.value(1, QStringLiteral("first-listed-app"));
157 return "appid://" + package + "/" + app + "/current-user-version";
157 return "appid://" + package + "/" + app + "/current-user-version";
158}
158}
159
159
@@ -200,7 +200,7 @@ void LauncherModel::refresh()
200 QList<QVariantMap> items;
200 QList<QVariantMap> items;
201
201
202 if (m_accounts && !m_user.isEmpty()) {
202 if (m_accounts && !m_user.isEmpty()) {
203− items = m_accounts->getUserProperty<VariantMapList>(m_user, "com.canonical.unity.AccountsService", "LauncherItems");
203+ items = m_accounts->getUserProperty<VariantMapList>(m_user, QStringLiteral("com.canonical.unity.AccountsService"), QStringLiteral("LauncherItems"));
204 }
204 }
205
205
206 // First walk through all the existing items and see if we need to remove something
206 // First walk through all the existing items and see if we need to remove something
@@ -210,16 +210,16 @@ void LauncherModel::refresh()
210 bool found = false;
210 bool found = false;
211 Q_FOREACH(const QVariant &asItem, items) {
211 Q_FOREACH(const QVariant &asItem, items) {
212 QVariantMap cachedMap = asItem.toMap();
212 QVariantMap cachedMap = asItem.toMap();
213− if (cachedMap.value("id").toString() == item->appId()) {
213+ if (cachedMap.value(QStringLiteral("id")).toString() == item->appId()) {
214 // Only keep and update it if we either show unpinned or it is pinned
214 // Only keep and update it if we either show unpinned or it is pinned
215− if (!m_onlyPinned || cachedMap.value("pinned").toBool()) {
215+ if (!m_onlyPinned || cachedMap.value(QStringLiteral("pinned")).toBool()) {
216 found = true;
216 found = true;
217− item->setName(cachedMap.value("name").toString());
217+ item->setName(cachedMap.value(QStringLiteral("name")).toString());
218− item->setIcon(cachedMap.value("icon").toString());
218+ item->setIcon(cachedMap.value(QStringLiteral("icon")).toString());
219− item->setCount(cachedMap.value("count").toInt());
219+ item->setCount(cachedMap.value(QStringLiteral("count")).toInt());
220− item->setCountVisible(cachedMap.value("countVisible").toBool());
220+ item->setCountVisible(cachedMap.value(QStringLiteral("countVisible")).toBool());
221− item->setProgress(cachedMap.value("progress").toInt());
221+ item->setProgress(cachedMap.value(QStringLiteral("progress")).toInt());
222− item->setRunning(cachedMap.value("running").toBool());
222+ item->setRunning(cachedMap.value(QStringLiteral("running")).toBool());
223
223
224 int idx = m_list.indexOf(item);
224 int idx = m_list.indexOf(item);
225 Q_EMIT dataChanged(index(idx), index(idx), {RoleName, RoleIcon, RoleCount, RoleCountVisible, RoleRunning, RoleProgress});
225 Q_EMIT dataChanged(index(idx), index(idx), {RoleName, RoleIcon, RoleCount, RoleCountVisible, RoleRunning, RoleProgress});
@@ -244,7 +244,7 @@ void LauncherModel::refresh()
244 for (int asIndex = 0; asIndex < items.count(); ++asIndex) {
244 for (int asIndex = 0; asIndex < items.count(); ++asIndex) {
245 QVariant entry = items.at(asIndex);
245 QVariant entry = items.at(asIndex);
246
246
247− if (m_onlyPinned && !entry.toMap().value("pinned").toBool()) {
247+ if (m_onlyPinned && !entry.toMap().value(QStringLiteral("pinned")).toBool()) {
248 // Skipping it as we only show pinned and it is not
248 // Skipping it as we only show pinned and it is not
249 skipped++;
249 skipped++;
250 continue;
250 continue;
@@ -253,7 +253,7 @@ void LauncherModel::refresh()
253
253
254 int itemIndex = -1;
254 int itemIndex = -1;
255 for (int i = 0; i < m_list.count(); ++i) {
255 for (int i = 0; i < m_list.count(); ++i) {
256− if (m_list.at(i)->appId() == entry.toMap().value("id").toString()) {
256+ if (m_list.at(i)->appId() == entry.toMap().value(QStringLiteral("id")).toString()) {
257 itemIndex = i;
257 itemIndex = i;
258 break;
258 break;
259 }
259 }
@@ -262,15 +262,15 @@ void LauncherModel::refresh()
262 if (itemIndex == -1) {
262 if (itemIndex == -1) {
263 QVariantMap cachedMap = entry.toMap();
263 QVariantMap cachedMap = entry.toMap();
264 // Need to add it. Just add it into the addedIndex to keep same ordering as the list in AS.
264 // Need to add it. Just add it into the addedIndex to keep same ordering as the list in AS.
265− LauncherItem *item = new LauncherItem(cachedMap.value("id").toString(),
265+ LauncherItem *item = new LauncherItem(cachedMap.value(QStringLiteral("id")).toString(),
266− cachedMap.value("name").toString(),
266+ cachedMap.value(QStringLiteral("name")).toString(),
267− cachedMap.value("icon").toString(),
267+ cachedMap.value(QStringLiteral("icon")).toString(),
268 this);
268 this);
269 item->setPinned(true);
269 item->setPinned(true);
270− item->setCount(cachedMap.value("count").toInt());
270+ item->setCount(cachedMap.value(QStringLiteral("count")).toInt());
271− item->setCountVisible(cachedMap.value("countVisible").toBool());
271+ item->setCountVisible(cachedMap.value(QStringLiteral("countVisible")).toBool());
272− item->setProgress(cachedMap.value("progress").toInt());
272+ item->setProgress(cachedMap.value(QStringLiteral("progress")).toInt());
273− item->setRunning(cachedMap.value("running").toBool());
273+ item->setRunning(cachedMap.value(QStringLiteral("running")).toBool());
274 beginInsertRows(QModelIndex(), newPosition, newPosition);
274 beginInsertRows(QModelIndex(), newPosition, newPosition);
275 m_list.insert(newPosition, item);
275 m_list.insert(newPosition, item);
276 endInsertRows();
276 endInsertRows();
@@ -286,7 +286,7 @@ void LauncherModel::refresh()
286
286
287void LauncherModel::propertiesChanged(const QString &user, const QString &interface, const QStringList &changed)
287void LauncherModel::propertiesChanged(const QString &user, const QString &interface, const QStringList &changed)
288{
288{
289− if (user != m_user || interface != "com.canonical.unity.AccountsService" || !changed.contains("LauncherItems")) {
289+ if (user != m_user || interface != QLatin1String("com.canonical.unity.AccountsService") || !changed.contains(QStringLiteral("LauncherItems"))) {
290 return;
290 return;
291 }
291 }
292 refresh();
292 refresh();
plugins/Greeter/Unity/Launcher/plugin.cpp+5−5
@@ -36,11 +36,11 @@ void UnityLauncherPlugin::registerTypes(const char *uri)
36{
36{
37 Q_ASSERT(uri == QLatin1String("Unity.Launcher"));
37 Q_ASSERT(uri == QLatin1String("Unity.Launcher"));
38
38
39− qmlRegisterUncreatableType<LauncherModelInterface>(uri, 0, 1, "LauncherModelInterface", "Abstract Interface. Cannot be instantiated.");
39+ qmlRegisterUncreatableType<LauncherModelInterface>(uri, 0, 1, "LauncherModelInterface", QStringLiteral("Abstract Interface. Cannot be instantiated."));
40− qmlRegisterUncreatableType<LauncherItemInterface>(uri, 0, 1, "LauncherItemInterface", "Abstract Interface. Cannot be instantiated.");
40+ qmlRegisterUncreatableType<LauncherItemInterface>(uri, 0, 1, "LauncherItemInterface", QStringLiteral("Abstract Interface. Cannot be instantiated."));
41− qmlRegisterUncreatableType<QuickListModelInterface>(uri, 0, 1, "QuickListInterface", "Abstract Interface. Cannot be instantiated.");
41+ qmlRegisterUncreatableType<QuickListModelInterface>(uri, 0, 1, "QuickListInterface", QStringLiteral("Abstract Interface. Cannot be instantiated."));
42
42
43 qmlRegisterSingletonType<LauncherModel>(uri, 0, 1, "LauncherModel", modelProvider);
43 qmlRegisterSingletonType<LauncherModel>(uri, 0, 1, "LauncherModel", modelProvider);
44− qmlRegisterUncreatableType<LauncherItem>(uri, 0, 1, "LauncherItem", "Can't create new Launcher Items in QML. Get them from the LauncherModel.");
44+ qmlRegisterUncreatableType<LauncherItem>(uri, 0, 1, "LauncherItem", QStringLiteral("Can't create new Launcher Items in QML. Get them from the LauncherModel."));
45− qmlRegisterUncreatableType<QuickListModel>(uri, 0, 1, "QuickListModel", "Can't create a QuickListModel in QML. Get them from the LauncherItems.");
45+ qmlRegisterUncreatableType<QuickListModel>(uri, 0, 1, "QuickListModel", QStringLiteral("Can't create a QuickListModel in QML. Get them from the LauncherItems."));
46}
46}
plugins/IntegratedLightDM/DBusGreeter.cpp+2−2
@@ -21,7 +21,7 @@
21#include <QStringList>
21#include <QStringList>
22
22
23DBusGreeter::DBusGreeter(Greeter *greeter, const QString &path)
23DBusGreeter::DBusGreeter(Greeter *greeter, const QString &path)
24− : UnityDBusObject(path, "com.canonical.UnityGreeter", true, greeter),
24+ : UnityDBusObject(path, QStringLiteral("com.canonical.UnityGreeter"), true, greeter),
25 m_greeter(greeter)
25 m_greeter(greeter)
26{
26{
27 connect(m_greeter, &Greeter::isActiveChanged, this, &DBusGreeter::isActiveChangedHandler);
27 connect(m_greeter, &Greeter::isActiveChanged, this, &DBusGreeter::isActiveChangedHandler);
@@ -44,6 +44,6 @@ void DBusGreeter::HideGreeter()
44
44
45void DBusGreeter::isActiveChangedHandler()
45void DBusGreeter::isActiveChangedHandler()
46{
46{
47− notifyPropertyChanged("IsActive", isActive());
47+ notifyPropertyChanged(QStringLiteral("IsActive"), isActive());
48 Q_EMIT isActiveChanged();
48 Q_EMIT isActiveChanged();
49}
49}
plugins/IntegratedLightDM/DBusGreeterList.cpp+3−3
@@ -21,7 +21,7 @@
21#include <QStringList>
21#include <QStringList>
22
22
23DBusGreeterList::DBusGreeterList(Greeter *greeter, const QString &path)
23DBusGreeterList::DBusGreeterList(Greeter *greeter, const QString &path)
24− : UnityDBusObject(path, "com.canonical.UnityGreeter", true, greeter),
24+ : UnityDBusObject(path, QStringLiteral("com.canonical.UnityGreeter"), true, greeter),
25 m_greeter(greeter)
25 m_greeter(greeter)
26{
26{
27 connect(m_greeter, &Greeter::authenticationUserChanged, this, &DBusGreeterList::authenticationUserChangedHandler);
27 connect(m_greeter, &Greeter::authenticationUserChanged, this, &DBusGreeterList::authenticationUserChangedHandler);
@@ -45,12 +45,12 @@ bool DBusGreeterList::entryIsLocked() const
45
45
46void DBusGreeterList::authenticationUserChangedHandler(const QString &user)
46void DBusGreeterList::authenticationUserChangedHandler(const QString &user)
47{
47{
48− notifyPropertyChanged("ActiveEntry", user);
48+ notifyPropertyChanged(QStringLiteral("ActiveEntry"), user);
49 Q_EMIT EntrySelected(user);
49 Q_EMIT EntrySelected(user);
50}
50}
51
51
52void DBusGreeterList::promptlessChangedHandler()
52void DBusGreeterList::promptlessChangedHandler()
53{
53{
54− notifyPropertyChanged("EntryIsLocked", entryIsLocked());
54+ notifyPropertyChanged(QStringLiteral("EntryIsLocked"), entryIsLocked());
55 Q_EMIT entryIsLockedChanged();
55 Q_EMIT entryIsLockedChanged();
56}
56}
plugins/IntegratedLightDM/Greeter.cpp+1−1
@@ -113,7 +113,7 @@ void Greeter::showPromptFilter(const QString &text, QLightDM::Greeter::PromptTyp
113
113
114 // Strip prompt of any colons at the end
114 // Strip prompt of any colons at the end
115 QString trimmedText = text.trimmed();
115 QString trimmedText = text.trimmed();
116− if (trimmedText.endsWith(":") || trimmedText.endsWith(":")) {
116+ if (trimmedText.endsWith(':') || trimmedText.endsWith(QStringLiteral(":"))) {
117 trimmedText.chop(1);
117 trimmedText.chop(1);
118 }
118 }
119
119
plugins/IntegratedLightDM/liblightdm/CMakeLists.txt+1−1
@@ -33,5 +33,5 @@ set_target_properties(MockLightDM-demo-shared PROPERTIES
33 OUTPUT_NAME lightdm-qt5-2)
33 OUTPUT_NAME lightdm-qt5-2)
34
34
35install(TARGETS MockLightDM-demo-shared
35install(TARGETS MockLightDM-demo-shared
36− DESTINATION ${SHELL_INSTALL_QML}/mocks/LightDM/demo
36+ DESTINATION ${SHELL_INSTALL_QML}/mocks/IntegratedLightDM/demo
37 )
37 )
plugins/IntegratedLightDM/liblightdm/Greeter.cpp+5−5
@@ -55,12 +55,12 @@ bool Greeter::hasGuestAccountHint() const
55QString Greeter::getHint(const QString &name) const
55QString Greeter::getHint(const QString &name) const
56{
56{
57 Q_UNUSED(name)
57 Q_UNUSED(name)
58− return "";
58+ return QLatin1String("");
59}
59}
60
60
61QString Greeter::defaultSessionHint() const
61QString Greeter::defaultSessionHint() const
62{
62{
63− return "ubuntu";
63+ return QStringLiteral("ubuntu");
64}
64}
65
65
66bool Greeter::hideUsersHint() const
66bool Greeter::hideUsersHint() const
@@ -85,7 +85,7 @@ bool Greeter::lockHint () const
85
85
86QString Greeter::selectUserHint() const
86QString Greeter::selectUserHint() const
87{
87{
88− return "";
88+ return QLatin1String("");
89}
89}
90
90
91bool Greeter::selectGuestHint() const
91bool Greeter::selectGuestHint() const
@@ -95,7 +95,7 @@ bool Greeter::selectGuestHint() const
95
95
96QString Greeter::autologinUserHint() const
96QString Greeter::autologinUserHint() const
97{
97{
98− return "";
98+ return QLatin1String("");
99}
99}
100
100
101bool Greeter::autologinGuestHint() const
101bool Greeter::autologinGuestHint() const
@@ -115,7 +115,7 @@ bool Greeter::inAuthentication() const
115
115
116QString Greeter::hostname() const
116QString Greeter::hostname() const
117{
117{
118− return "hostname1";
118+ return QStringLiteral("hostname1");
119}
119}
120
120
121bool Greeter::isAuthenticated() const
121bool Greeter::isAuthenticated() const
plugins/IntegratedLightDM/liblightdm/GreeterPrivate.cpp+1−1
@@ -91,7 +91,7 @@ public:
91 } else {
91 } else {
92 delete appData;
92 delete appData;
93 greeterPrivate->authenticated = false;
93 greeterPrivate->authenticated = false;
94− Q_EMIT greeter->showMessage("Internal error: could not start PAM authentication", QLightDM::Greeter::MessageTypeError);
94+ Q_EMIT greeter->showMessage(QStringLiteral("Internal error: could not start PAM authentication"), QLightDM::Greeter::MessageTypeError);
95 Q_EMIT greeter->authenticationComplete();
95 Q_EMIT greeter->authenticationComplete();
96 }
96 }
97 }
97 }
plugins/IntegratedLightDM/liblightdm/UsersModel.cpp+1−1
@@ -55,7 +55,7 @@ UsersModel::UsersModel(QObject *parent) :
55 setRoleNames(roles);
55 setRoleNames(roles);
56
56
57 // Now modify our mock user backgrounds
57 // Now modify our mock user backgrounds
58− QDir bgdir = QDir("/usr/share/demo-assets/shell/backgrounds/");
58+ QDir bgdir = QDir(QStringLiteral("/usr/share/demo-assets/shell/backgrounds/"));
59 QStringList backgrounds = bgdir.entryList(QDir::Files | QDir::NoDotAndDotDot);
59 QStringList backgrounds = bgdir.entryList(QDir::Files | QDir::NoDotAndDotDot);
60
60
61 for (int i = 0, j = 0; i < d->entries.size(); i++) {
61 for (int i = 0, j = 0; i < d->entries.size(); i++) {
plugins/IntegratedLightDM/liblightdm/UsersModelPrivate.cpp+2−1
@@ -29,8 +29,9 @@ UsersModelPrivate::UsersModelPrivate(UsersModel* parent)
29 : q_ptr(parent)
29 : q_ptr(parent)
30{
30{
31 QSettings settings(QDir::homePath() + "/.unity8-greeter-demo", QSettings::NativeFormat);
31 QSettings settings(QDir::homePath() + "/.unity8-greeter-demo", QSettings::NativeFormat);
32− QStringList users = settings.value("users", QStringList() << qgetenv("USER")).toStringList();
32+ QStringList users = settings.value(QStringLiteral("users"), QStringList() << qgetenv("USER")).toStringList();
33
33
34+ entries.reserve(users.count());
34 Q_FOREACH(const QString &user, users)
35 Q_FOREACH(const QString &user, users)
35 {
36 {
36 QString name = settings.value(user + "/name", user[0].toUpper() + user.mid(1)).toString();
37 QString name = settings.value(user + "/name", user[0].toUpper() + user.mid(1)).toString();
plugins/IntegratedLightDM/plugin.cpp+3−3
@@ -34,8 +34,8 @@ static QObject *greeter_provider(QQmlEngine *engine, QJSEngine *scriptEngine)
34 Q_UNUSED(scriptEngine)
34 Q_UNUSED(scriptEngine)
35
35
36 Greeter *greeter = new Greeter();
36 Greeter *greeter = new Greeter();
37− new DBusGreeter(greeter, "/");
37+ new DBusGreeter(greeter, QStringLiteral("/"));
38− new DBusGreeterList(greeter, "/list");
38+ new DBusGreeterList(greeter, QStringLiteral("/list"));
39
39
40 return greeter;
40 return greeter;
41}
41}
@@ -64,6 +64,6 @@ void IntegratedLightDMPlugin::registerTypes(const char *uri)
64 qRegisterMetaType<QLightDM::Greeter::PromptType>("QLightDM::Greeter::PromptType");
64 qRegisterMetaType<QLightDM::Greeter::PromptType>("QLightDM::Greeter::PromptType");
65 qmlRegisterSingletonType<Greeter>(uri, 0, 1, "Greeter", greeter_provider);
65 qmlRegisterSingletonType<Greeter>(uri, 0, 1, "Greeter", greeter_provider);
66 qmlRegisterSingletonType<UsersModel>(uri, 0, 1, "Users", users_provider);
66 qmlRegisterSingletonType<UsersModel>(uri, 0, 1, "Users", users_provider);
67− qmlRegisterUncreatableType<QLightDM::UsersModel>(uri, 0, 1, "UserRoles", "Type is not instantiable");
67+ qmlRegisterUncreatableType<QLightDM::UsersModel>(uri, 0, 1, "UserRoles", QStringLiteral("Type is not instantiable"));
68 qmlRegisterSingletonType<UserMetricsOutput::UserMetrics>(uri, 0, 1, "Infographic", infographic_provider);
68 qmlRegisterSingletonType<UserMetricsOutput::UserMetrics>(uri, 0, 1, "Infographic", infographic_provider);
69}
69}
plugins/Powerd/Powerd.cpp+11−11
@@ -22,19 +22,19 @@
22void autoBrightnessChanged(GSettings *settings, const gchar *key, QDBusInterface *unityScreen)
22void autoBrightnessChanged(GSettings *settings, const gchar *key, QDBusInterface *unityScreen)
23{
23{
24 bool value = g_settings_get_boolean(settings, key);
24 bool value = g_settings_get_boolean(settings, key);
25− unityScreen->asyncCall("userAutobrightnessEnable", QVariant(value));
25+ unityScreen->asyncCall(QStringLiteral("userAutobrightnessEnable"), QVariant(value));
26}
26}
27
27
28void activityTimeoutChanged(GSettings *settings, const gchar *key, QDBusInterface *unityScreen)
28void activityTimeoutChanged(GSettings *settings, const gchar *key, QDBusInterface *unityScreen)
29{
29{
30 int value = g_settings_get_uint(settings, key);
30 int value = g_settings_get_uint(settings, key);
31− unityScreen->asyncCall("setInactivityTimeouts", QVariant(value), QVariant(-1));
31+ unityScreen->asyncCall(QStringLiteral("setInactivityTimeouts"), QVariant(value), QVariant(-1));
32}
32}
33
33
34void dimTimeoutChanged(GSettings *settings, const gchar *key, QDBusInterface *unityScreen)
34void dimTimeoutChanged(GSettings *settings, const gchar *key, QDBusInterface *unityScreen)
35{
35{
36 int value = g_settings_get_uint(settings, key);
36 int value = g_settings_get_uint(settings, key);
37− unityScreen->asyncCall("setInactivityTimeouts", QVariant(-1), QVariant(value));
37+ unityScreen->asyncCall(QStringLiteral("setInactivityTimeouts"), QVariant(-1), QVariant(value));
38}
38}
39
39
40Powerd::Powerd(QObject* parent)
40Powerd::Powerd(QObject* parent)
@@ -42,15 +42,15 @@ Powerd::Powerd(QObject* parent)
42 unityScreen(nullptr),
42 unityScreen(nullptr),
43 cachedStatus(Status::On)
43 cachedStatus(Status::On)
44{
44{
45− unityScreen = new QDBusInterface("com.canonical.Unity.Screen",
45+ unityScreen = new QDBusInterface(QStringLiteral("com.canonical.Unity.Screen"),
46− "/com/canonical/Unity/Screen",
46+ QStringLiteral("/com/canonical/Unity/Screen"),
47− "com.canonical.Unity.Screen",
47+ QStringLiteral("com.canonical.Unity.Screen"),
48 QDBusConnection::SM_BUSNAME(), this);
48 QDBusConnection::SM_BUSNAME(), this);
49
49
50− unityScreen->connection().connect("com.canonical.Unity.Screen",
50+ unityScreen->connection().connect(QStringLiteral("com.canonical.Unity.Screen"),
51− "/com/canonical/Unity/Screen",
51+ QStringLiteral("/com/canonical/Unity/Screen"),
52− "com.canonical.Unity.Screen",
52+ QStringLiteral("com.canonical.Unity.Screen"),
53− "DisplayPowerStateChange",
53+ QStringLiteral("DisplayPowerStateChange"),
54 this,
54 this,
55 SLOT(handleDisplayPowerStateChange(int, int)));
55 SLOT(handleDisplayPowerStateChange(int, int)));
56
56
@@ -76,7 +76,7 @@ Powerd::Status Powerd::status() const
76
76
77void Powerd::setStatus(Powerd::Status status, DisplayStateChangeReason reason)
77void Powerd::setStatus(Powerd::Status status, DisplayStateChangeReason reason)
78{
78{
79− unityScreen->asyncCall("setScreenPowerMode",
79+ unityScreen->asyncCall(QStringLiteral("setScreenPowerMode"),
80 status == Powerd::On ? "on" : "off",
80 status == Powerd::On ? "on" : "off",
81 static_cast<qint32>(reason));
81 static_cast<qint32>(reason));
82}
82}
plugins/ScreenGrabber/screengrabber.cpp+8−6
@@ -19,6 +19,7 @@
19#include <QDir>
19#include <QDir>
20#include <QDateTime>
20#include <QDateTime>
21#include <QStandardPaths>
21#include <QStandardPaths>
22+#include <QTemporaryDir>
22#include <QtGui/QImage>
23#include <QtGui/QImage>
23#include <QtGui/QGuiApplication>
24#include <QtGui/QGuiApplication>
24#include <QtQuick/QQuickWindow>
25#include <QtQuick/QQuickWindow>
@@ -42,14 +43,15 @@ ScreenGrabber::ScreenGrabber(QObject *parent)
42 QDir screenshotsDir;
43 QDir screenshotsDir;
43 if (qEnvironmentVariableIsSet("UNITY_TESTING")) {
44 if (qEnvironmentVariableIsSet("UNITY_TESTING")) {
44 qDebug() << "Using test environment";
45 qDebug() << "Using test environment";
45− QStandardPaths::setTestModeEnabled(true);
46+ QTemporaryDir tDir;
46− screenshotsDir = QStandardPaths::writableLocation(QStandardPaths::DataLocation);
47+ tDir.setAutoRemove(false);
48+ screenshotsDir = tDir.path();
47 } else {
49 } else {
48 qDebug() << "Using real environment";
50 qDebug() << "Using real environment";
49 screenshotsDir = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation);
51 screenshotsDir = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation);
50 }
52 }
51− screenshotsDir.mkpath("Screenshots");
53+ screenshotsDir.mkpath(QStringLiteral("Screenshots"));
52− screenshotsDir.cd("Screenshots");
54+ screenshotsDir.cd(QStringLiteral("Screenshots"));
53 if (screenshotsDir.exists()) {
55 if (screenshotsDir.exists()) {
54 fileNamePrefix = screenshotsDir.absolutePath();
56 fileNamePrefix = screenshotsDir.absolutePath();
55 fileNamePrefix.append("/screenshot");
57 fileNamePrefix.append("/screenshot");
@@ -92,7 +94,7 @@ void ScreenGrabber::captureAndSave()
92QString ScreenGrabber::makeFileName() const
94QString ScreenGrabber::makeFileName() const
93{
95{
94 QString fileName(fileNamePrefix);
96 QString fileName(fileNamePrefix);
95− fileName.append(QDateTime::currentDateTime().toString("yyyyMMdd_hhmmsszzz"));
97+ fileName.append(QDateTime::currentDateTime().toString(QStringLiteral("yyyyMMdd_hhmmsszzz")));
96 fileName.append(".");
98 fileName.append(".");
97 fileName.append(getFormat());
99 fileName.append(getFormat());
98 return fileName;
100 return fileName;
@@ -101,5 +103,5 @@ QString ScreenGrabber::makeFileName() const
101QString ScreenGrabber::getFormat() const
103QString ScreenGrabber::getFormat() const
102{
104{
103 //TODO: This should be configurable (perhaps through gsettings?)
105 //TODO: This should be configurable (perhaps through gsettings?)
104− return "png";
106+ return QStringLiteral("png");
105}
107}
plugins/SessionBroadcast/SessionBroadcast.cpp+4−4
@@ -24,10 +24,10 @@ SessionBroadcast::SessionBroadcast(QObject* parent)
24{
24{
25 auto connection = QDBusConnection::SM_BUSNAME();
25 auto connection = QDBusConnection::SM_BUSNAME();
26
26
27− connection.connect("com.canonical.Unity.Greeter.Broadcast",
27+ connection.connect(QStringLiteral("com.canonical.Unity.Greeter.Broadcast"),
28− "/com/canonical/Unity/Greeter/Broadcast",
28+ QStringLiteral("/com/canonical/Unity/Greeter/Broadcast"),
29− "com.canonical.Unity.Greeter.Broadcast",
29+ QStringLiteral("com.canonical.Unity.Greeter.Broadcast"),
30− "ShowHome",
30+ QStringLiteral("ShowHome"),
31 this,
31 this,
32 SLOT(onShowHome(const QString &)));
32 SLOT(onShowHome(const QString &)));
33}
33}
plugins/Ubuntu/DownloadDaemonListener/interface/downloadtrackeradaptor.h+11−11
@@ -41,68 +41,68 @@ public Q_SLOTS: // METHODS
41 {
41 {
42 QList<QVariant> argumentList;
42 QList<QVariant> argumentList;
43 argumentList << QVariant::fromValue(allowed);
43 argumentList << QVariant::fromValue(allowed);
44− return asyncCallWithArgumentList(QLatin1String("allowGSMDownload"), argumentList);
44+ return asyncCallWithArgumentList(QStringLiteral("allowGSMDownload"), argumentList);
45 }
45 }
46
46
47 inline QDBusPendingReply<> cancel()
47 inline QDBusPendingReply<> cancel()
48 {
48 {
49 QList<QVariant> argumentList;
49 QList<QVariant> argumentList;
50− return asyncCallWithArgumentList(QLatin1String("cancel"), argumentList);
50+ return asyncCallWithArgumentList(QStringLiteral("cancel"), argumentList);
51 }
51 }
52
52
53 inline QDBusPendingReply<bool> isGSMDownloadAllowed()
53 inline QDBusPendingReply<bool> isGSMDownloadAllowed()
54 {
54 {
55 QList<QVariant> argumentList;
55 QList<QVariant> argumentList;
56− return asyncCallWithArgumentList(QLatin1String("isGSMDownloadAllowed"), argumentList);
56+ return asyncCallWithArgumentList(QStringLiteral("isGSMDownloadAllowed"), argumentList);
57 }
57 }
58
58
59 inline QDBusPendingReply<QVariantMap> metadata()
59 inline QDBusPendingReply<QVariantMap> metadata()
60 {
60 {
61 QList<QVariant> argumentList;
61 QList<QVariant> argumentList;
62− return asyncCallWithArgumentList(QLatin1String("metadata"), argumentList);
62+ return asyncCallWithArgumentList(QStringLiteral("metadata"), argumentList);
63 }
63 }
64
64
65 inline QDBusPendingReply<> pause()
65 inline QDBusPendingReply<> pause()
66 {
66 {
67 QList<QVariant> argumentList;
67 QList<QVariant> argumentList;
68− return asyncCallWithArgumentList(QLatin1String("pause"), argumentList);
68+ return asyncCallWithArgumentList(QStringLiteral("pause"), argumentList);
69 }
69 }
70
70
71 inline QDBusPendingReply<qulonglong> progress()
71 inline QDBusPendingReply<qulonglong> progress()
72 {
72 {
73 QList<QVariant> argumentList;
73 QList<QVariant> argumentList;
74− return asyncCallWithArgumentList(QLatin1String("progress"), argumentList);
74+ return asyncCallWithArgumentList(QStringLiteral("progress"), argumentList);
75 }
75 }
76
76
77 inline QDBusPendingReply<> resume()
77 inline QDBusPendingReply<> resume()
78 {
78 {
79 QList<QVariant> argumentList;
79 QList<QVariant> argumentList;
80− return asyncCallWithArgumentList(QLatin1String("resume"), argumentList);
80+ return asyncCallWithArgumentList(QStringLiteral("resume"), argumentList);
81 }
81 }
82
82
83 inline QDBusPendingReply<> setThrottle(qulonglong speed)
83 inline QDBusPendingReply<> setThrottle(qulonglong speed)
84 {
84 {
85 QList<QVariant> argumentList;
85 QList<QVariant> argumentList;
86 argumentList << QVariant::fromValue(speed);
86 argumentList << QVariant::fromValue(speed);
87− return asyncCallWithArgumentList(QLatin1String("setThrottle"), argumentList);
87+ return asyncCallWithArgumentList(QStringLiteral("setThrottle"), argumentList);
88 }
88 }
89
89
90 inline QDBusPendingReply<> start()
90 inline QDBusPendingReply<> start()
91 {
91 {
92 QList<QVariant> argumentList;
92 QList<QVariant> argumentList;
93− return asyncCallWithArgumentList(QLatin1String("start"), argumentList);
93+ return asyncCallWithArgumentList(QStringLiteral("start"), argumentList);
94 }
94 }
95
95
96 inline QDBusPendingReply<qulonglong> throttle()
96 inline QDBusPendingReply<qulonglong> throttle()
97 {
97 {
98 QList<QVariant> argumentList;
98 QList<QVariant> argumentList;
99− return asyncCallWithArgumentList(QLatin1String("throttle"), argumentList);
99+ return asyncCallWithArgumentList(QStringLiteral("throttle"), argumentList);
100 }
100 }
101
101
102 inline QDBusPendingReply<qulonglong> totalSize()
102 inline QDBusPendingReply<qulonglong> totalSize()
103 {
103 {
104 QList<QVariant> argumentList;
104 QList<QVariant> argumentList;
105− return asyncCallWithArgumentList(QLatin1String("totalSize"), argumentList);
105+ return asyncCallWithArgumentList(QStringLiteral("totalSize"), argumentList);
106 }
106 }
107
107
108Q_SIGNALS: // SIGNALS
108Q_SIGNALS: // SIGNALS
plugins/Ubuntu/SystemImage/SystemImage.cpp+4−4
@@ -25,9 +25,9 @@ SystemImage::SystemImage(QObject *parent)
25
25
26void SystemImage::factoryReset()
26void SystemImage::factoryReset()
27{
27{
28− const QDBusMessage msg = QDBusMessage::createMethodCall("com.canonical.SystemImage",
28+ const QDBusMessage msg = QDBusMessage::createMethodCall(QStringLiteral("com.canonical.SystemImage"),
29− "/Service",
29+ QStringLiteral("/Service"),
30− "com.canonical.SystemImage",
30+ QStringLiteral("com.canonical.SystemImage"),
31− "FactoryReset");
31+ QStringLiteral("FactoryReset"));
32 QDBusConnection::systemBus().asyncCall(msg);
32 QDBusConnection::systemBus().asyncCall(msg);
33}
33}
plugins/Unity/Connectivity/Connectivity.cpp+4−4
@@ -25,9 +25,9 @@ Connectivity::Connectivity(QObject *parent)
25
25
26void Connectivity::unlockAllModems()
26void Connectivity::unlockAllModems()
27{
27{
28− const QDBusMessage msg = QDBusMessage::createMethodCall("com.ubuntu.connectivity1",
28+ const QDBusMessage msg = QDBusMessage::createMethodCall(QStringLiteral("com.ubuntu.connectivity1"),
29− "/com/ubuntu/connectivity1/Private",
29+ QStringLiteral("/com/ubuntu/connectivity1/Private"),
30− "com.ubuntu.connectivity1.Private",
30+ QStringLiteral("com.ubuntu.connectivity1.Private"),
31− "UnlockAllModems");
31+ QStringLiteral("UnlockAllModems"));
32 QDBusConnection::sessionBus().asyncCall(msg);
32 QDBusConnection::sessionBus().asyncCall(msg);
33}
33}
plugins/Unity/DashCommunicator/dashcommunicator.cpp+3−3
@@ -41,9 +41,9 @@ void DashCommunicator::setCurrentScope(int index, bool animate, bool isSwipe)
41
41
42void DashCommunicator::run()
42void DashCommunicator::run()
43{
43{
44− m_dashConnection = new DashConnection("com.canonical.UnityDash",
44+ m_dashConnection = new DashConnection(QStringLiteral("com.canonical.UnityDash"),
45− "/com/canonical/UnityDash",
45+ QStringLiteral("/com/canonical/UnityDash"),
46− "", this);
46+ QLatin1String(""), this);
47 m_mutex.lock();
47 m_mutex.lock();
48 m_created = true;
48 m_created = true;
49 m_mutex.unlock();
49 m_mutex.unlock();
plugins/Unity/DashCommunicator/dashconnection.cpp+1−1
@@ -58,6 +58,6 @@ QDBusAbstractInterface* DashConnection::createInterface(const QString &service,
58void DashConnection::setCurrentScope(int index, bool animate, bool isSwipe)
58void DashConnection::setCurrentScope(int index, bool animate, bool isSwipe)
59{
59{
60 if (dbusInterface()) {
60 if (dbusInterface()) {
61− dbusInterface()->asyncCall("SetCurrentScope", index, animate, isSwipe);
61+ dbusInterface()->asyncCall(QStringLiteral("SetCurrentScope"), index, animate, isSwipe);
62 }
62 }
63}
63}
plugins/Unity/DashCommunicator/dbusdashcommunicatorservice.cpp+1−1
@@ -21,7 +21,7 @@
21#include <QDebug>
21#include <QDebug>
22
22
23DBusDashCommunicatorService::DBusDashCommunicatorService(QObject *parent):
23DBusDashCommunicatorService::DBusDashCommunicatorService(QObject *parent):
24− UnityDBusObject("/com/canonical/UnityDash", "com.canonical.UnityDash", false, parent)
24+ UnityDBusObject(QStringLiteral("/com/canonical/UnityDash"), QStringLiteral("com.canonical.UnityDash"), false, parent)
25{
25{
26}
26}
27
27
plugins/Unity/Indicators/indicator.cpp+8−8
@@ -37,20 +37,20 @@ void Indicator::init(const QString& busName, const QSettings& settings)
37 // that we can't just copy the object.
37 // that we can't just copy the object.
38 m_settings.clear();
38 m_settings.clear();
39 Q_FOREACH(const QString& key, settings.allKeys()) {
39 Q_FOREACH(const QString& key, settings.allKeys()) {
40− if (key.endsWith("/Position") || key.endsWith("/ObjectPath")) {
40+ if (key.endsWith(QLatin1String("/Position")) || key.endsWith(QLatin1String("/ObjectPath"))) {
41 m_settings.insert(key, settings.value(key));
41 m_settings.insert(key, settings.value(key));
42 }
42 }
43 }
43 }
44
44
45− setId(settings.value("Indicator Service/Name").toString());
45+ setId(settings.value(QStringLiteral("Indicator Service/Name")).toString());
46
46
47− QString actionObjectPath = settings.value("Indicator Service/ObjectPath").toString();
47+ QString actionObjectPath = settings.value(QStringLiteral("Indicator Service/ObjectPath")).toString();
48
48
49 QVariantMap properties;
49 QVariantMap properties;
50 properties.clear();
50 properties.clear();
51− properties.insert("busType", 1);
51+ properties.insert(QStringLiteral("busType"), 1);
52− properties.insert("busName", busName);
52+ properties.insert(QStringLiteral("busName"), busName);
53− properties.insert("actionsObjectPath", actionObjectPath);
53+ properties.insert(QStringLiteral("actionsObjectPath"), actionObjectPath);
54 setIndicatorProperties(properties);
54 setIndicatorProperties(properties);
55}
55}
56
56
@@ -84,12 +84,12 @@ void Indicator::setProfile(const QString& profile)
84{
84{
85 QVariant pos = m_settings.value(profile + "/Position");
85 QVariant pos = m_settings.value(profile + "/Position");
86 if (!pos.isValid())
86 if (!pos.isValid())
87− pos = m_settings.value("Indicator Service/Position", QVariant::fromValue(0));
87+ pos = m_settings.value(QStringLiteral("Indicator Service/Position"), QVariant::fromValue(0));
88 setPosition(pos.toInt());
88 setPosition(pos.toInt());
89
89
90 QString menuObjectPath = m_settings.value(profile + "/ObjectPath").toString();
90 QString menuObjectPath = m_settings.value(profile + "/ObjectPath").toString();
91 QVariantMap map = m_properties.toMap();
91 QVariantMap map = m_properties.toMap();
92− map.insert("menuObjectPath", menuObjectPath);
92+ map.insert(QStringLiteral("menuObjectPath"), menuObjectPath);
93 setIndicatorProperties(map);
93 setIndicatorProperties(map);
94}
94}
95
95
plugins/Unity/Indicators/indicatorsmanager.cpp+4−4
@@ -44,7 +44,7 @@ public:
44IndicatorsManager::IndicatorsManager(QObject* parent)
44IndicatorsManager::IndicatorsManager(QObject* parent)
45 : QObject(parent)
45 : QObject(parent)
46 , m_loaded(false)
46 , m_loaded(false)
47− , m_profile("phone")
47+ , m_profile(QStringLiteral("phone"))
48{
48{
49}
49}
50
50
@@ -115,7 +115,7 @@ void IndicatorsManager::loadDir(const QDir& dir)
115void IndicatorsManager::loadFile(const QFileInfo& file_info)
115void IndicatorsManager::loadFile(const QFileInfo& file_info)
116{
116{
117 QSettings indicator_settings(file_info.absoluteFilePath(), QSettings::IniFormat, this);
117 QSettings indicator_settings(file_info.absoluteFilePath(), QSettings::IniFormat, this);
118− QString name = indicator_settings.value("Indicator Service/Name").toString();
118+ QString name = indicator_settings.value(QStringLiteral("Indicator Service/Name")).toString();
119
119
120 auto iter = m_indicatorsData.find(name);
120 auto iter = m_indicatorsData.find(name);
121 if (iter != m_indicatorsData.end())
121 if (iter != m_indicatorsData.end())
@@ -286,9 +286,9 @@ Indicator::Ptr IndicatorsManager::indicator(const QString& indicator_name)
286 return new_indicator;
286 return new_indicator;
287}
287}
288
288
289−QList<Indicator::Ptr> IndicatorsManager::indicators()
289+QVector<Indicator::Ptr> IndicatorsManager::indicators()
290{
290{
291− QList<Indicator::Ptr> list;
291+ QVector<Indicator::Ptr> list;
292 Q_FOREACH(IndicatorData* data, m_indicatorsData)
292 Q_FOREACH(IndicatorData* data, m_indicatorsData)
293 {
293 {
294 Indicator::Ptr ret = indicator(data->m_name);
294 Indicator::Ptr ret = indicator(data->m_name);
plugins/Unity/Indicators/indicatorsmanager.h+1−1
@@ -45,7 +45,7 @@ public:
45
45
46 Indicator::Ptr indicator(const QString& indicator_name);
46 Indicator::Ptr indicator(const QString& indicator_name);
47
47
48− QList<Indicator::Ptr> indicators();
48+ QVector<Indicator::Ptr> indicators();
49
49
50 bool isLoaded() const;
50 bool isLoaded() const;
51
51
plugins/Unity/Indicators/modelprinter.cpp+3−3
@@ -60,7 +60,7 @@ QString ModelPrinter::text()
60
60
61QString tabify(int level) { QString str;
61QString tabify(int level) { QString str;
62 for (int i = 0; i < level; i++) {
62 for (int i = 0; i < level; i++) {
63− str += " ";
63+ str += QLatin1String(" ");
64 }
64 }
65 return str;
65 return str;
66}
66}
@@ -68,7 +68,7 @@ QString tabify(int level) { QString str;
68QString ModelPrinter::getModelDataString(UnityMenuModel* sourceModel, int level)
68QString ModelPrinter::getModelDataString(UnityMenuModel* sourceModel, int level)
69{
69{
70 if (!sourceModel)
70 if (!sourceModel)
71− return "";
71+ return QLatin1String("");
72
72
73 QString str;
73 QString str;
74 QTextStream stream(&str);
74 QTextStream stream(&str);
@@ -110,7 +110,7 @@ QString ModelPrinter::getRowSring(UnityMenuModel* sourceModel, int row, int dept
110 return str;
110 return str;
111}
111}
112
112
113−QString ModelPrinter::getVariantString(const QString& roleName, const QVariant vData ) const
113+QString ModelPrinter::getVariantString(const QString& roleName, const QVariant &vData) const
114{
114{
115 QString str;
115 QString str;
116 QTextStream stream(&str);
116 QTextStream stream(&str);
plugins/Unity/Indicators/modelprinter.h+2−2
@@ -46,10 +46,10 @@ Q_SIGNALS:
46private:
46private:
47 QString getModelDataString(UnityMenuModel* sourceModel, int level);
47 QString getModelDataString(UnityMenuModel* sourceModel, int level);
48 QString getRowSring(UnityMenuModel* sourceModel, int index, int depth) const;
48 QString getRowSring(UnityMenuModel* sourceModel, int index, int depth) const;
49− QString getVariantString(const QString& roleName, const QVariant vData ) const;
49+ QString getVariantString(const QString& roleName, const QVariant &vData) const;
50
50
51 UnityMenuModel* m_model;
51 UnityMenuModel* m_model;
52 QList<UnityMenuModel*> m_children;
52 QList<UnityMenuModel*> m_children;
53};
53};
54
54
55−#endif // MODELPRINTER_H
55+#endif // MODELPRINTER_H
plugins/Unity/Indicators/plugin.cpp+6−6
@@ -58,10 +58,10 @@ void IndicatorsPlugin::registerTypes(const char *uri)
58
58
59 qmlRegisterSingletonType<UnityMenuModelCache>(uri, 0, 1, "UnityMenuModelCache", menuModelCacheSingleton);
59 qmlRegisterSingletonType<UnityMenuModelCache>(uri, 0, 1, "UnityMenuModelCache", menuModelCacheSingleton);
60
60
61− qmlRegisterUncreatableType<MenuContentState>(uri, 0, 1, "MenuContentState", "Can't create MenuContentState class");
61+ qmlRegisterUncreatableType<MenuContentState>(uri, 0, 1, "MenuContentState", QStringLiteral("Can't create MenuContentState class"));
62− qmlRegisterUncreatableType<ActionState>(uri, 0, 1, "ActionState", "Can't create ActionState class");
62+ qmlRegisterUncreatableType<ActionState>(uri, 0, 1, "ActionState", QStringLiteral("Can't create ActionState class"));
63− qmlRegisterUncreatableType<NetworkActionState>(uri, 0, 1, "NetworkActionState", "Can't create NetworkActionState class");
63+ qmlRegisterUncreatableType<NetworkActionState>(uri, 0, 1, "NetworkActionState", QStringLiteral("Can't create NetworkActionState class"));
64− qmlRegisterUncreatableType<NetworkConnection>(uri, 0, 1, "NetworkConnection", "Can't create NetworkConnection class");
64+ qmlRegisterUncreatableType<NetworkConnection>(uri, 0, 1, "NetworkConnection", QStringLiteral("Can't create NetworkConnection class"));
65− qmlRegisterUncreatableType<IndicatorsModelRole>(uri, 0, 1, "IndicatorsModelRole", "Can't create IndicatorsModelRole class");
65+ qmlRegisterUncreatableType<IndicatorsModelRole>(uri, 0, 1, "IndicatorsModelRole", QStringLiteral("Can't create IndicatorsModelRole class"));
66− qmlRegisterUncreatableType<FlatMenuProxyModelRole>(uri, 0, 1, "FlatMenuProxyModelRole", "Can't create FlatMenuProxyModelRole class");
66+ qmlRegisterUncreatableType<FlatMenuProxyModelRole>(uri, 0, 1, "FlatMenuProxyModelRole", QStringLiteral("Can't create FlatMenuProxyModelRole class"));
67}
67}
plugins/Unity/Indicators/rootstateparser.cpp+16−16
@@ -39,7 +39,7 @@ static QString iconUri(GIcon *icon)
39 }
39 }
40
40
41 if (!iconNameList.empty()) {
41 if (!iconNameList.empty()) {
42− uri = QString("image://theme/%1").arg(iconNameList.join(","));
42+ uri = QStringLiteral("image://theme/%1").arg(iconNameList.join(QStringLiteral(",")));
43 }
43 }
44 }
44 }
45 else if (G_IS_FILE_ICON (icon)) {
45 else if (G_IS_FILE_ICON (icon)) {
@@ -63,7 +63,7 @@ static QString iconUri(GIcon *icon)
63 data = g_bytes_get_data (g_bytes_icon_get_bytes (G_BYTES_ICON (icon)), &size);
63 data = g_bytes_get_data (g_bytes_icon_get_bytes (G_BYTES_ICON (icon)), &size);
64 base64 = g_base64_encode ((const guchar *) data, size);
64 base64 = g_base64_encode ((const guchar *) data, size);
65
65
66− uri = QString("data://");
66+ uri = QStringLiteral("data://");
67 uri.append (base64);
67 uri.append (base64);
68
68
69 g_free (base64);
69 g_free (base64);
@@ -88,7 +88,7 @@ QVariant RootStateParser::toQVariant(GVariant* state) const
88 while (g_variant_iter_loop (&iter, "{sv}", &key, &vvalue))
88 while (g_variant_iter_loop (&iter, "{sv}", &key, &vvalue))
89 {
89 {
90 QString str = QString::fromUtf8(key);
90 QString str = QString::fromUtf8(key);
91− if (str == "icon" && !qmap.contains("icons")) {
91+ if (str == QLatin1String("icon") && !qmap.contains(QStringLiteral("icons"))) {
92 QStringList icons;
92 QStringList icons;
93
93
94 // FIXME - should be sending a url.
94 // FIXME - should be sending a url.
@@ -97,9 +97,9 @@ QVariant RootStateParser::toQVariant(GVariant* state) const
97 icons << iconUri(gicon);
97 icons << iconUri(gicon);
98 g_object_unref (gicon);
98 g_object_unref (gicon);
99 }
99 }
100− qmap.insert("icons", icons);
100+ qmap.insert(QStringLiteral("icons"), icons);
101
101
102− } else if (str == "icons") {
102+ } else if (str == QLatin1String("icons")) {
103
103
104 QStringList icons;
104 QStringList icons;
105
105
@@ -118,7 +118,7 @@ QVariant RootStateParser::toQVariant(GVariant* state) const
118 }
118 }
119 }
119 }
120 // will overwrite icon.
120 // will overwrite icon.
121− qmap.insert("icons", icons);
121+ qmap.insert(QStringLiteral("icons"), icons);
122
122
123 } else {
123 } else {
124 qmap.insert(str, ActionStateParser::toQVariant(vvalue));
124 qmap.insert(str, ActionStateParser::toQVariant(vvalue));
@@ -141,13 +141,13 @@ QVariant RootStateParser::toQVariant(GVariant* state) const
141 &accessible_name,
141 &accessible_name,
142 &visible);
142 &visible);
143
143
144− qmap["label"] = label ? QString::fromUtf8(label) : "";
144+ qmap[QStringLiteral("label")] = label ? QString::fromUtf8(label) : QLatin1String("");
145− qmap["accessible-desc"] = accessible_name ? QString::fromUtf8(accessible_name) : "";
145+ qmap[QStringLiteral("accessible-desc")] = accessible_name ? QString::fromUtf8(accessible_name) : QLatin1String("");
146− qmap["visible"] = visible;
146+ qmap[QStringLiteral("visible")] = visible;
147
147
148 gicon = g_icon_new_for_string (icon, nullptr);
148 gicon = g_icon_new_for_string (icon, nullptr);
149 if (gicon) {
149 if (gicon) {
150− qmap["icons"] = QStringList() << iconUri(gicon);
150+ qmap[QStringLiteral("icons")] = QStringList() << iconUri(gicon);
151 g_object_unref (gicon);
151 g_object_unref (gicon);
152 }
152 }
153
153
@@ -170,42 +170,42 @@ QString RootStateObject::title() const
170{
170{
171 if (!valid()) return QString();
171 if (!valid()) return QString();
172
172
173− return m_currentState.value("title", QVariant::fromValue(QString())).toString();
173+ return m_currentState.value(QStringLiteral("title"), QVariant::fromValue(QString())).toString();
174}
174}
175
175
176QString RootStateObject::leftLabel() const
176QString RootStateObject::leftLabel() const
177{
177{
178 if (!valid()) return QString();
178 if (!valid()) return QString();
179
179
180− return m_currentState.value("pre-label", QVariant::fromValue(QString())).toString();
180+ return m_currentState.value(QStringLiteral("pre-label"), QVariant::fromValue(QString())).toString();
181}
181}
182
182
183QString RootStateObject::rightLabel() const
183QString RootStateObject::rightLabel() const
184{
184{
185 if (!valid()) return QString();
185 if (!valid()) return QString();
186
186
187− return m_currentState.value("label", QVariant::fromValue(QString())).toString();
187+ return m_currentState.value(QStringLiteral("label"), QVariant::fromValue(QString())).toString();
188}
188}
189
189
190QStringList RootStateObject::icons() const
190QStringList RootStateObject::icons() const
191{
191{
192 if (!valid()) return QStringList();
192 if (!valid()) return QStringList();
193
193
194− return m_currentState.value("icons", QVariant::fromValue(QStringList())).toStringList();
194+ return m_currentState.value(QStringLiteral("icons"), QVariant::fromValue(QStringList())).toStringList();
195}
195}
196
196
197QString RootStateObject::accessibleName() const
197QString RootStateObject::accessibleName() const
198{
198{
199 if (!valid()) return QString();
199 if (!valid()) return QString();
200
200
201− return m_currentState.value("accessible-desc", QVariant::fromValue(QString())).toString();
201+ return m_currentState.value(QStringLiteral("accessible-desc"), QVariant::fromValue(QString())).toString();
202}
202}
203
203
204bool RootStateObject::indicatorVisible() const
204bool RootStateObject::indicatorVisible() const
205{
205{
206 if (!valid()) return false;
206 if (!valid()) return false;
207
207
208− return m_currentState.value("visible", QVariant::fromValue(true)).toBool();
208+ return m_currentState.value(QStringLiteral("visible"), QVariant::fromValue(true)).toBool();
209}
209}
210
210
211void RootStateObject::setCurrentState(const QVariantMap& newState)
211void RootStateObject::setCurrentState(const QVariantMap& newState)
plugins/Unity/Launcher/asadapter.cpp+10−9
@@ -38,25 +38,26 @@ void ASAdapter::syncItems(const QList<LauncherItem*> &list)
38{
38{
39 if (m_accounts && !m_user.isEmpty()) {
39 if (m_accounts && !m_user.isEmpty()) {
40 QList<QVariantMap> items;
40 QList<QVariantMap> items;
41+ items.reserve(list.count());
41
42
42 Q_FOREACH(LauncherItem *item, list) {
43 Q_FOREACH(LauncherItem *item, list) {
43 items << itemToVariant(item);
44 items << itemToVariant(item);
44 }
45 }
45
46
46− m_accounts->setUserPropertyAsync(m_user, "com.canonical.unity.AccountsService", "LauncherItems", QVariant::fromValue(items));
47+ m_accounts->setUserPropertyAsync(m_user, QStringLiteral("com.canonical.unity.AccountsService"), QStringLiteral("LauncherItems"), QVariant::fromValue(items));
47 }
48 }
48}
49}
49
50
50QVariantMap ASAdapter::itemToVariant(LauncherItem *item) const
51QVariantMap ASAdapter::itemToVariant(LauncherItem *item) const
51{
52{
52 QVariantMap details;
53 QVariantMap details;
53− details.insert("id", item->appId());
54+ details.insert(QStringLiteral("id"), item->appId());
54− details.insert("name", item->name());
55+ details.insert(QStringLiteral("name"), item->name());
55− details.insert("icon", item->icon());
56+ details.insert(QStringLiteral("icon"), item->icon());
56− details.insert("count", item->count());
57+ details.insert(QStringLiteral("count"), item->count());
57− details.insert("countVisible", item->countVisible());
58+ details.insert(QStringLiteral("countVisible"), item->countVisible());
58− details.insert("pinned", item->pinned());
59+ details.insert(QStringLiteral("pinned"), item->pinned());
59− details.insert("running", item->running());
60+ details.insert(QStringLiteral("running"), item->running());
60− details.insert("progress", item->progress());
61+ details.insert(QStringLiteral("progress"), item->progress());
61 return details;
62 return details;
62}
63}
plugins/Unity/Launcher/dbusinterface.cpp+33−33
@@ -27,7 +27,7 @@
27#include <QDebug>
27#include <QDebug>
28
28
29DBusInterface::DBusInterface(LauncherModel *parent):
29DBusInterface::DBusInterface(LauncherModel *parent):
30− UnityDBusVirtualObject("/com/canonical/Unity/Launcher", "com.canonical.Unity.Launcher", true, parent),
30+ UnityDBusVirtualObject(QStringLiteral("/com/canonical/Unity/Launcher"), QStringLiteral("com.canonical.Unity.Launcher"), true, parent),
31 m_launcherModel(parent)
31 m_launcherModel(parent)
32{
32{
33}
33}
@@ -35,13 +35,13 @@ DBusInterface::DBusInterface(LauncherModel *parent):
35QString DBusInterface::introspect(const QString &path) const
35QString DBusInterface::introspect(const QString &path) const
36{
36{
37 /* This case we should just list the nodes */
37 /* This case we should just list the nodes */
38− if (path == "/com/canonical/Unity/Launcher/" || path == "/com/canonical/Unity/Launcher") {
38+ if (path == QLatin1String("/com/canonical/Unity/Launcher/") || path == QLatin1String("/com/canonical/Unity/Launcher")) {
39 QString nodes;
39 QString nodes;
40
40
41 // Add Refresh to introspect
41 // Add Refresh to introspect
42− nodes = "<interface name=\"com.canonical.Unity.Launcher\">"
42+ nodes = QStringLiteral("<interface name=\"com.canonical.Unity.Launcher\">"
43 "<method name=\"Refresh\"/>"
43 "<method name=\"Refresh\"/>"
44− "</interface>";
44+ "</interface>");
45
45
46 // Add dynamic properties for launcher emblems
46 // Add dynamic properties for launcher emblems
47 for (int i = 0; i < m_launcherModel->rowCount(); i++) {
47 for (int i = 0; i < m_launcherModel->rowCount(); i++) {
@@ -53,18 +53,18 @@ QString DBusInterface::introspect(const QString &path) const
53 }
53 }
54
54
55 /* Should not happen, but let's handle it */
55 /* Should not happen, but let's handle it */
56− if (!path.startsWith("/com/canonical/Unity/Launcher")) {
56+ if (!path.startsWith(QLatin1String("/com/canonical/Unity/Launcher"))) {
57− return "";
57+ return QLatin1String("");
58 }
58 }
59
59
60 /* Now we should be looking at a node */
60 /* Now we should be looking at a node */
61 QString nodeiface =
61 QString nodeiface =
62− "<interface name=\"com.canonical.Unity.Launcher.Item\">"
62+ QStringLiteral("<interface name=\"com.canonical.Unity.Launcher.Item\">"
63 "<property name=\"count\" type=\"i\" access=\"readwrite\" />"
63 "<property name=\"count\" type=\"i\" access=\"readwrite\" />"
64 "<property name=\"countVisible\" type=\"b\" access=\"readwrite\" />"
64 "<property name=\"countVisible\" type=\"b\" access=\"readwrite\" />"
65 "<property name=\"progress\" type=\"i\" access=\"readwrite\" />"
65 "<property name=\"progress\" type=\"i\" access=\"readwrite\" />"
66 "<method name=\"Alert\" />"
66 "<method name=\"Alert\" />"
67− "</interface>";
67+ "</interface>");
68 return nodeiface;
68 return nodeiface;
69}
69}
70
70
@@ -109,7 +109,7 @@ QString DBusInterface::encodeAppId(const QString& appId)
109 (chr >= '0' && chr <= '9'&& i != 0)) {
109 (chr >= '0' && chr <= '9'&& i != 0)) {
110 encoded.append(chr);
110 encoded.append(chr);
111 } else {
111 } else {
112− QString hexval = QString("_%1").arg(chr, 2, 16, QChar('0'));
112+ QString hexval = QStringLiteral("_%1").arg(chr, 2, 16, QChar('0'));
113 encoded.append(hexval.toUpper());
113 encoded.append(hexval.toUpper());
114 }
114 }
115 }
115 }
@@ -127,10 +127,10 @@ bool DBusInterface::handleMessage(const QDBusMessage& message, const QDBusConnec
127 /* Break down the path to just the app id */
127 /* Break down the path to just the app id */
128 bool validpath = true;
128 bool validpath = true;
129 QString pathtemp = message.path();
129 QString pathtemp = message.path();
130− if (!pathtemp.startsWith("/com/canonical/Unity/Launcher/")) {
130+ if (!pathtemp.startsWith(QLatin1String("/com/canonical/Unity/Launcher/"))) {
131 validpath = false;
131 validpath = false;
132 }
132 }
133− pathtemp.remove("/com/canonical/Unity/Launcher/");
133+ pathtemp.remove(QStringLiteral("/com/canonical/Unity/Launcher/"));
134 if (pathtemp.indexOf('/') >= 0) {
134 if (pathtemp.indexOf('/') >= 0) {
135 validpath = false;
135 validpath = false;
136 }
136 }
@@ -139,15 +139,15 @@ bool DBusInterface::handleMessage(const QDBusMessage& message, const QDBusConnec
139 QString appid = decodeAppId(pathtemp);
139 QString appid = decodeAppId(pathtemp);
140
140
141 // First handle methods of the Launcher interface
141 // First handle methods of the Launcher interface
142− if (message.interface() == "com.canonical.Unity.Launcher") {
142+ if (message.interface() == QLatin1String("com.canonical.Unity.Launcher")) {
143− if (message.member() == "Refresh") {
143+ if (message.member() == QLatin1String("Refresh")) {
144 QDBusMessage reply = message.createReply();
144 QDBusMessage reply = message.createReply();
145 Q_EMIT refreshCalled();
145 Q_EMIT refreshCalled();
146 return connection.send(reply);
146 return connection.send(reply);
147 }
147 }
148− } else if (message.interface() == "com.canonical.Unity.Launcher.Item") {
148+ } else if (message.interface() == QLatin1String("com.canonical.Unity.Launcher.Item")) {
149 // Handle methods of the Launcher-Item interface
149 // Handle methods of the Launcher-Item interface
150− if (message.member() == "Alert" && validpath) {
150+ if (message.member() == QLatin1String("Alert") && validpath) {
151 QDBusMessage reply = message.createReply();
151 QDBusMessage reply = message.createReply();
152 Q_EMIT alertCalled(appid);
152 Q_EMIT alertCalled(appid);
153 return connection.send(reply);
153 return connection.send(reply);
@@ -155,15 +155,15 @@ bool DBusInterface::handleMessage(const QDBusMessage& message, const QDBusConnec
155 }
155 }
156
156
157 // Now handle dynamic properties (for launcher emblems)
157 // Now handle dynamic properties (for launcher emblems)
158− if (message.interface() != "org.freedesktop.DBus.Properties") {
158+ if (message.interface() != QLatin1String("org.freedesktop.DBus.Properties")) {
159 return false;
159 return false;
160 }
160 }
161
161
162− if (message.member() == "Get" && (message.arguments().count() != 2 || message.arguments()[0].toString() != "com.canonical.Unity.Launcher.Item")) {
162+ if (message.member() == QLatin1String("Get") && (message.arguments().count() != 2 || message.arguments()[0].toString() != QLatin1String("com.canonical.Unity.Launcher.Item"))) {
163 return false;
163 return false;
164 }
164 }
165
165
166− if (message.member() == "Set" && (message.arguments().count() != 3 || message.arguments()[0].toString() != "com.canonical.Unity.Launcher.Item")) {
166+ if (message.member() == QLatin1String("Set") && (message.arguments().count() != 3 || message.arguments()[0].toString() != QLatin1String("com.canonical.Unity.Launcher.Item"))) {
167 return false;
167 return false;
168 }
168 }
169
169
@@ -175,45 +175,45 @@ bool DBusInterface::handleMessage(const QDBusMessage& message, const QDBusConnec
175 LauncherItem *item = static_cast<LauncherItem*>(m_launcherModel->get(index));
175 LauncherItem *item = static_cast<LauncherItem*>(m_launcherModel->get(index));
176
176
177 QVariantList retval;
177 QVariantList retval;
178− if (message.member() == "Get") {
178+ if (message.member() == QLatin1String("Get")) {
179 QString cachedString = message.arguments()[1].toString();
179 QString cachedString = message.arguments()[1].toString();
180 if (!item) {
180 if (!item) {
181 return false;
181 return false;
182 }
182 }
183− if (cachedString == "count") {
183+ if (cachedString == QLatin1String("count")) {
184 retval.append(QVariant::fromValue(QDBusVariant(item->count())));
184 retval.append(QVariant::fromValue(QDBusVariant(item->count())));
185− } else if (cachedString == "countVisible") {
185+ } else if (cachedString == QLatin1String("countVisible")) {
186 retval.append(QVariant::fromValue(QDBusVariant(item->countVisible())));
186 retval.append(QVariant::fromValue(QDBusVariant(item->countVisible())));
187− } else if (cachedString == "progress") {
187+ } else if (cachedString == QLatin1String("progress")) {
188 retval.append(QVariant::fromValue(QDBusVariant(item->progress())));
188 retval.append(QVariant::fromValue(QDBusVariant(item->progress())));
189 }
189 }
190− } else if (message.member() == "Set") {
190+ } else if (message.member() == QLatin1String("Set")) {
191 QString cachedString = message.arguments()[1].toString();
191 QString cachedString = message.arguments()[1].toString();
192− if (cachedString == "count") {
192+ if (cachedString == QLatin1String("count")) {
193 int newCount = message.arguments()[2].value<QDBusVariant>().variant().toInt();
193 int newCount = message.arguments()[2].value<QDBusVariant>().variant().toInt();
194 if (!item || newCount != item->count()) {
194 if (!item || newCount != item->count()) {
195 Q_EMIT countChanged(appid, newCount);
195 Q_EMIT countChanged(appid, newCount);
196− notifyPropertyChanged("com.canonical.Unity.Launcher.Item", encodeAppId(appid), "count", QVariant(newCount));
196+ notifyPropertyChanged(QStringLiteral("com.canonical.Unity.Launcher.Item"), encodeAppId(appid), QStringLiteral("count"), QVariant(newCount));
197 }
197 }
198− } else if (cachedString == "countVisible") {
198+ } else if (cachedString == QLatin1String("countVisible")) {
199 bool newVisible = message.arguments()[2].value<QDBusVariant>().variant().toBool();
199 bool newVisible = message.arguments()[2].value<QDBusVariant>().variant().toBool();
200 if (!item || newVisible != item->countVisible()) {
200 if (!item || newVisible != item->countVisible()) {
201 Q_EMIT countVisibleChanged(appid, newVisible);
201 Q_EMIT countVisibleChanged(appid, newVisible);
202− notifyPropertyChanged("com.canonical.Unity.Launcher.Item", encodeAppId(appid), "countVisible", newVisible);
202+ notifyPropertyChanged(QStringLiteral("com.canonical.Unity.Launcher.Item"), encodeAppId(appid), QStringLiteral("countVisible"), newVisible);
203 }
203 }
204− } else if (cachedString == "progress") {
204+ } else if (cachedString == QLatin1String("progress")) {
205 int newProgress = message.arguments()[2].value<QDBusVariant>().variant().toInt();
205 int newProgress = message.arguments()[2].value<QDBusVariant>().variant().toInt();
206 if (!item || newProgress != item->progress()) {
206 if (!item || newProgress != item->progress()) {
207 Q_EMIT progressChanged(appid, newProgress);
207 Q_EMIT progressChanged(appid, newProgress);
208− notifyPropertyChanged("com.canonical.Unity.Launcher.Item", encodeAppId(appid), "progress", QVariant(newProgress));
208+ notifyPropertyChanged(QStringLiteral("com.canonical.Unity.Launcher.Item"), encodeAppId(appid), QStringLiteral("progress"), QVariant(newProgress));
209 }
209 }
210 }
210 }
211− } else if (message.member() == "GetAll") {
211+ } else if (message.member() == QLatin1String("GetAll")) {
212 if (item) {
212 if (item) {
213 QVariantMap all;
213 QVariantMap all;
214− all.insert("count", item->count());
214+ all.insert(QStringLiteral("count"), item->count());
215− all.insert("countVisible", item->countVisible());
215+ all.insert(QStringLiteral("countVisible"), item->countVisible());
216− all.insert("progress", item->progress());
216+ all.insert(QStringLiteral("progress"), item->progress());
217 retval.append(all);
217 retval.append(all);
218 }
218 }
219 } else {
219 } else {
plugins/Unity/Launcher/desktopfilehandler.cpp+17−16
@@ -70,7 +70,7 @@ void DesktopFileHandler::load()
70
70
71 QStringList searchDirs = QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation);
71 QStringList searchDirs = QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation);
72#ifdef LAUNCHER_TESTING
72#ifdef LAUNCHER_TESTING
73− searchDirs << ".";
73+ searchDirs << QStringLiteral(".");
74#endif
74#endif
75
75
76 QString path;
76 QString path;
@@ -79,14 +79,15 @@ void DesktopFileHandler::load()
79 helper.replace(dashPos, 1, '/');
79 helper.replace(dashPos, 1, '/');
80 }
80 }
81
81
82− if (helper.contains("/")) {
82+ if (helper.contains('/')) {
83− path += helper.split('/').first() + '/';
83+ path += helper.split('/').at(0) + '/';
84 helper.remove(QRegExp("^" + path));
84 helper.remove(QRegExp("^" + path));
85 }
85 }
86
86
87 Q_FOREACH(const QString &searchDirName, searchDirs) {
87 Q_FOREACH(const QString &searchDirName, searchDirs) {
88 QDir searchDir(searchDirName + "/" + path);
88 QDir searchDir(searchDirName + "/" + path);
89+ const QString desktop = QStringLiteral("*.desktop");
89− Q_FOREACH(const QString &desktopFile, searchDir.entryList(QStringList() << "*.desktop")) {
90+ Q_FOREACH(const QString &desktopFile, searchDir.entryList(QStringList() << desktop)) {
90 if (desktopFile.startsWith(helper)) {
91 if (desktopFile.startsWith(helper)) {
91 QFileInfo fileInfo(searchDir, desktopFile);
92 QFileInfo fileInfo(searchDir, desktopFile);
92 m_filename = fileInfo.absoluteFilePath();
93 m_filename = fileInfo.absoluteFilePath();
@@ -95,7 +96,7 @@ void DesktopFileHandler::load()
95 }
96 }
96 }
97 }
97
98
98− dashPos = helper.indexOf("-");
99+ dashPos = helper.indexOf('-');
99 } while (dashPos != -1);
100 } while (dashPos != -1);
100}
101}
101
102
@@ -107,25 +108,25 @@ QString DesktopFileHandler::displayName() const
107
108
108 QSettings settings(m_filename, QSettings::IniFormat);
109 QSettings settings(m_filename, QSettings::IniFormat);
109 settings.setIniCodec("UTF-8");
110 settings.setIniCodec("UTF-8");
110− settings.beginGroup("Desktop Entry");
111+ settings.beginGroup(QStringLiteral("Desktop Entry"));
111
112
112 // First try to find Name[xx_YY] and Name[xx] in .desktop file
113 // First try to find Name[xx_YY] and Name[xx] in .desktop file
113 QString locale = QLocale().name();
114 QString locale = QLocale().name();
114 QString shortLocale = locale.split('_').first();
115 QString shortLocale = locale.split('_').first();
115
116
116− if (locale != shortLocale && settings.contains(QString("Name[%1]").arg(locale))) {
117+ if (locale != shortLocale && settings.contains(QStringLiteral("Name[%1]").arg(locale))) {
117− return settings.value(QString("Name[%1]").arg(locale)).toString();
118+ return settings.value(QStringLiteral("Name[%1]").arg(locale)).toString();
118 }
119 }
119
120
120− if (settings.contains(QString("Name[%1]").arg(shortLocale))) {
121+ if (settings.contains(QStringLiteral("Name[%1]").arg(shortLocale))) {
121− return settings.value(QString("Name[%1]").arg(shortLocale)).toString();
122+ return settings.value(QStringLiteral("Name[%1]").arg(shortLocale)).toString();
122 }
123 }
123
124
124 // No translation found in desktop file. Get the untranslated one and have a go with gettext.
125 // No translation found in desktop file. Get the untranslated one and have a go with gettext.
125− QString displayName = settings.value("Name").toString();
126+ QString displayName = settings.value(QStringLiteral("Name")).toString();
126
127
127− if (settings.contains("X-Ubuntu-Gettext-Domain")) {
128+ if (settings.contains(QStringLiteral("X-Ubuntu-Gettext-Domain"))) {
128− const QString domain = settings.value("X-Ubuntu-Gettext-Domain").toString();
129+ const QString domain = settings.value(QStringLiteral("X-Ubuntu-Gettext-Domain")).toString();
129 return dgettext(domain.toUtf8().constData(), displayName.toUtf8().constData());
130 return dgettext(domain.toUtf8().constData(), displayName.toUtf8().constData());
130 }
131 }
131
132
@@ -140,9 +141,9 @@ QString DesktopFileHandler::icon() const
140
141
141 QSettings settings(m_filename, QSettings::IniFormat);
142 QSettings settings(m_filename, QSettings::IniFormat);
142 settings.setIniCodec("UTF-8");
143 settings.setIniCodec("UTF-8");
143− settings.beginGroup("Desktop Entry");
144+ settings.beginGroup(QStringLiteral("Desktop Entry"));
144− QString iconString = settings.value("Icon").toString();
145+ QString iconString = settings.value(QStringLiteral("Icon")).toString();
145− QString pathString = settings.value("Path").toString();
146+ QString pathString = settings.value(QStringLiteral("Path")).toString();
146
147
147 if (QFileInfo(iconString).exists()) {
148 if (QFileInfo(iconString).exists()) {
148 return QFileInfo(iconString).absoluteFilePath();
149 return QFileInfo(iconString).absoluteFilePath();
plugins/Unity/Launcher/gsettings.cpp+15−12
@@ -32,20 +32,22 @@ QStringList GSettings::storedApplications() const
32{
32{
33 QStringList storedApps;
33 QStringList storedApps;
34
34
35+ const QString items = QStringLiteral("items");
35− Q_FOREACH(const QString &entry, m_gSettings->get("items").toStringList()) {
36+ Q_FOREACH(const QString &entry, m_gSettings->get(items).toStringList()) {
36− if (entry.startsWith("application:///")) {
37+ if (entry.startsWith(QLatin1String("application:///"))) {
37 // convert legacy entries to new world appids
38 // convert legacy entries to new world appids
38 QString appId = entry;
39 QString appId = entry;
39 // Transform "application://foobar.desktop" to "foobar"
40 // Transform "application://foobar.desktop" to "foobar"
40− appId.remove(QRegExp("^application:///"));
41+ appId.remove(QRegExp(QStringLiteral("^application:///")));
41− appId.remove(QRegExp(".desktop$"));
42+ appId.remove(QRegExp(QStringLiteral(".desktop$")));
42 storedApps << appId;
43 storedApps << appId;
43− } else if (entry.startsWith("appid://")) {
44+ } else if (entry.startsWith(QLatin1String("appid://"))) {
44 QString appId = entry;
45 QString appId = entry;
45− appId.remove("appid://");
46+ appId.remove(QStringLiteral("appid://"));
46− if (appId.split('/').count() == 3) {
47+ const QStringList splittedAppId = appId.split('/');
48+ if (splittedAppId.count() == 3) {
47 // Strip current-user-version in case its there
49 // Strip current-user-version in case its there
48− appId = appId.split('/').first() + "_" + appId.split('/').at(1);
50+ appId = splittedAppId.first() + "_" + splittedAppId.at(1);
49 }
51 }
50 storedApps << appId;
52 storedApps << appId;
51 }
53 }
@@ -56,19 +58,20 @@ QStringList GSettings::storedApplications() const
56void GSettings::setStoredApplications(const QStringList &storedApplications)
58void GSettings::setStoredApplications(const QStringList &storedApplications)
57{
59{
58 QStringList gSettingsList;
60 QStringList gSettingsList;
61+ gSettingsList.reserve(storedApplications.count());
59 Q_FOREACH(const QString &entry, storedApplications) {
62 Q_FOREACH(const QString &entry, storedApplications) {
60− gSettingsList << QString("appid://%1").arg(entry);
63+ gSettingsList << QStringLiteral("appid://%1").arg(entry);
61 }
64 }
62 // GSettings will emit a changed signal to ourselves. Let's cache the items
65 // GSettings will emit a changed signal to ourselves. Let's cache the items
63 // and only forward the changed signal when the list did actually change.
66 // and only forward the changed signal when the list did actually change.
64 m_cachedItems = gSettingsList;
67 m_cachedItems = gSettingsList;
65− m_gSettings->set("items", gSettingsList);
68+ m_gSettings->set(QStringLiteral("items"), gSettingsList);
66}
69}
67
70
68void GSettings::onSettingsChanged(const QString &key)
71void GSettings::onSettingsChanged(const QString &key)
69{
72{
70− if (key == "items") {
73+ if (key == QLatin1String("items")) {
71− const QStringList cachedItems = m_gSettings->get("items").toStringList();
74+ const QStringList cachedItems = m_gSettings->get(QStringLiteral("items")).toStringList();
72 if (m_cachedItems != cachedItems) {
75 if (m_cachedItems != cachedItems) {
73 m_cachedItems = cachedItems;
76 m_cachedItems = cachedItems;
74 Q_EMIT changed();
77 Q_EMIT changed();
plugins/Unity/Launcher/launcheritem.cpp+6−6
@@ -38,17 +38,17 @@ LauncherItem::LauncherItem(const QString &appId, const QString &name, const QStr
38 m_quickList(new QuickListModel(this))
38 m_quickList(new QuickListModel(this))
39{
39{
40 QuickListEntry nameAction;
40 QuickListEntry nameAction;
41− nameAction.setActionId("launch_item");
41+ nameAction.setActionId(QStringLiteral("launch_item"));
42 nameAction.setText(m_name);
42 nameAction.setText(m_name);
43 m_quickList->appendAction(nameAction);
43 m_quickList->appendAction(nameAction);
44
44
45 QuickListEntry pinningAction;
45 QuickListEntry pinningAction;
46− pinningAction.setActionId("pin_item");
46+ pinningAction.setActionId(QStringLiteral("pin_item"));
47 pinningAction.setText(gettext("Pin shortcut"));
47 pinningAction.setText(gettext("Pin shortcut"));
48 m_quickList->appendAction(pinningAction);
48 m_quickList->appendAction(pinningAction);
49
49
50− m_quitAction.setActionId("stop_item");
50+ m_quitAction.setActionId(QStringLiteral("stop_item"));
51− m_quitAction.setIcon("application-exit");
51+ m_quitAction.setIcon(QStringLiteral("application-exit"));
52 m_quitAction.setText(gettext("Quit"));
52 m_quitAction.setText(gettext("Quit"));
53}
53}
54
54
@@ -67,7 +67,7 @@ void LauncherItem::setName(const QString &name)
67 if (m_name != name) {
67 if (m_name != name) {
68 m_name = name;
68 m_name = name;
69 QuickListEntry entry;
69 QuickListEntry entry;
70− entry.setActionId("launch_item");
70+ entry.setActionId(QStringLiteral("launch_item"));
71 entry.setText(m_name);
71 entry.setText(m_name);
72 m_quickList->updateAction(entry);
72 m_quickList->updateAction(entry);
73 Q_EMIT nameChanged(name);
73 Q_EMIT nameChanged(name);
@@ -102,7 +102,7 @@ void LauncherItem::setPinned(bool pinned)
102 // Even if pinned status didn't change, we want to update text in case
102 // Even if pinned status didn't change, we want to update text in case
103 // the locale has changed since we last set pinned status.
103 // the locale has changed since we last set pinned status.
104 QuickListEntry entry;
104 QuickListEntry entry;
105− entry.setActionId("pin_item");
105+ entry.setActionId(QStringLiteral("pin_item"));
106 entry.setText(pinned ? gettext("Unpin shortcut") : gettext("Pin shortcut"));
106 entry.setText(pinned ? gettext("Unpin shortcut") : gettext("Pin shortcut"));
107 m_quickList->updateAction(entry);
107 m_quickList->updateAction(entry);
108}
108}
plugins/Unity/Launcher/launchermodel.cpp+6−6
@@ -204,15 +204,15 @@ void LauncherModel::quickListActionInvoked(const QString &appId, int actionIndex
204 const QString actionId = model->get(actionIndex).actionId();
204 const QString actionId = model->get(actionIndex).actionId();
205
205
206 // Check if this is one of the launcher actions we handle ourselves
206 // Check if this is one of the launcher actions we handle ourselves
207− if (actionId == "pin_item") {
207+ if (actionId == QLatin1String("pin_item")) {
208 if (item->pinned()) {
208 if (item->pinned()) {
209 requestRemove(appId);
209 requestRemove(appId);
210 } else {
210 } else {
211 pin(appId);
211 pin(appId);
212 }
212 }
213− } else if (actionId == "launch_item") {
213+ } else if (actionId == QLatin1String("launch_item")) {
214 QDesktopServices::openUrl(getUrlForAppId(appId));
214 QDesktopServices::openUrl(getUrlForAppId(appId));
215− } else if (actionId == "stop_item") { // Quit
215+ } else if (actionId == QLatin1String("stop_item")) { // Quit
216 if (m_appManager) {
216 if (m_appManager) {
217 m_appManager->stopApplication(appId);
217 m_appManager->stopApplication(appId);
218 }
218 }
@@ -236,13 +236,13 @@ QString LauncherModel::getUrlForAppId(const QString &appId) const
236 return QString();
236 return QString();
237 }
237 }
238
238
239− if (!appId.contains("_")) {
239+ if (!appId.contains('_')) {
240 return "application:///" + appId + ".desktop";
240 return "application:///" + appId + ".desktop";
241 }
241 }
242
242
243 QStringList parts = appId.split('_');
243 QStringList parts = appId.split('_');
244 QString package = parts.value(0);
244 QString package = parts.value(0);
245− QString app = parts.value(1, "first-listed-app");
245+ QString app = parts.value(1, QStringLiteral("first-listed-app"));
246 return "appid://" + package + "/" + app + "/current-user-version";
246 return "appid://" + package + "/" + app + "/current-user-version";
247}
247}
248
248
@@ -503,7 +503,7 @@ void LauncherModel::applicationAdded(const QModelIndex &parent, int row)
503 return;
503 return;
504 }
504 }
505
505
506− if (app->appId() == "unity8-dash") {
506+ if (app->appId() == QLatin1String("unity8-dash")) {
507 // Not adding the dash app
507 // Not adding the dash app
508 return;
508 return;
509 }
509 }
plugins/Unity/Launcher/plugin.cpp+5−5
@@ -39,11 +39,11 @@ void UnityLauncherPlugin::registerTypes(const char *uri)
39{
39{
40 Q_ASSERT(uri == QLatin1String("Unity.Launcher"));
40 Q_ASSERT(uri == QLatin1String("Unity.Launcher"));
41
41
42− qmlRegisterUncreatableType<LauncherModelInterface>(uri, 0, 1, "LauncherModelInterface", "Abstract Interface. Cannot be instantiated.");
42+ qmlRegisterUncreatableType<LauncherModelInterface>(uri, 0, 1, "LauncherModelInterface", QStringLiteral("Abstract Interface. Cannot be instantiated."));
43− qmlRegisterUncreatableType<LauncherItemInterface>(uri, 0, 1, "LauncherItemInterface", "Abstract Interface. Cannot be instantiated.");
43+ qmlRegisterUncreatableType<LauncherItemInterface>(uri, 0, 1, "LauncherItemInterface", QStringLiteral("Abstract Interface. Cannot be instantiated."));
44− qmlRegisterUncreatableType<QuickListModelInterface>(uri, 0, 1, "QuickListInterface", "Abstract Interface. Cannot be instantiated.");
44+ qmlRegisterUncreatableType<QuickListModelInterface>(uri, 0, 1, "QuickListInterface", QStringLiteral("Abstract Interface. Cannot be instantiated."));
45
45
46 qmlRegisterSingletonType<LauncherModel>(uri, 0, 1, "LauncherModel", modelProvider);
46 qmlRegisterSingletonType<LauncherModel>(uri, 0, 1, "LauncherModel", modelProvider);
47− qmlRegisterUncreatableType<LauncherItem>(uri, 0, 1, "LauncherItem", "Can't create new Launcher Items in QML. Get them from the LauncherModel.");
47+ qmlRegisterUncreatableType<LauncherItem>(uri, 0, 1, "LauncherItem", QStringLiteral("Can't create new Launcher Items in QML. Get them from the LauncherModel."));
48− qmlRegisterUncreatableType<QuickListModel>(uri, 0, 1, "QuickListModel", "Can't create a QuickListModel in QML. Get them from the LauncherItems.");
48+ qmlRegisterUncreatableType<QuickListModel>(uri, 0, 1, "QuickListModel", QStringLiteral("Can't create a QuickListModel in QML. Get them from the LauncherItems."));
49}
49}
plugins/Unity/Session/dbusunitysessionservice.cpp+41−41
@@ -58,7 +58,7 @@ public:
58 QDBusMessage msg = QDBusMessage::createMethodCall(LOGIN1_SERVICE,
58 QDBusMessage msg = QDBusMessage::createMethodCall(LOGIN1_SERVICE,
59 LOGIN1_PATH,
59 LOGIN1_PATH,
60 LOGIN1_IFACE,
60 LOGIN1_IFACE,
61− "GetSessionByPID");
61+ QStringLiteral("GetSessionByPID"));
62 msg << (quint32) getpid();
62 msg << (quint32) getpid();
63
63
64 QDBusReply<QDBusObjectPath> reply = QDBusConnection::systemBus().asyncCall(msg);
64 QDBusReply<QDBusObjectPath> reply = QDBusConnection::systemBus().asyncCall(msg);
@@ -66,13 +66,13 @@ public:
66 logindSessionPath = reply.value().path();
66 logindSessionPath = reply.value().path();
67
67
68 // start watching the Active property
68 // start watching the Active property
69− QDBusConnection::systemBus().connect(LOGIN1_SERVICE, logindSessionPath, "org.freedesktop.DBus.Properties", "PropertiesChanged",
69+ QDBusConnection::systemBus().connect(LOGIN1_SERVICE, logindSessionPath, QStringLiteral("org.freedesktop.DBus.Properties"), QStringLiteral("PropertiesChanged"),
70 this, SLOT(onPropertiesChanged(QString,QVariantMap,QStringList)));
70 this, SLOT(onPropertiesChanged(QString,QVariantMap,QStringList)));
71
71
72 setupSystemdInhibition();
72 setupSystemdInhibition();
73
73
74 // re-enable the inhibition upon resume from sleep
74 // re-enable the inhibition upon resume from sleep
75− QDBusConnection::systemBus().connect(LOGIN1_SERVICE, LOGIN1_PATH, LOGIN1_IFACE, "PrepareForSleep",
75+ QDBusConnection::systemBus().connect(LOGIN1_SERVICE, LOGIN1_PATH, LOGIN1_IFACE, QStringLiteral("PrepareForSleep"),
76 this, SLOT(onResuming(bool)));
76 this, SLOT(onResuming(bool)));
77 } else {
77 } else {
78 qWarning() << "Failed to get logind session path" << reply.error().message();
78 qWarning() << "Failed to get logind session path" << reply.error().message();
@@ -87,7 +87,7 @@ public:
87 // inhibit systemd handling of power/sleep/lid buttons
87 // inhibit systemd handling of power/sleep/lid buttons
88 // http://www.freedesktop.org/wiki/Software/systemd/inhibit
88 // http://www.freedesktop.org/wiki/Software/systemd/inhibit
89
89
90− QDBusMessage msg = QDBusMessage::createMethodCall(LOGIN1_SERVICE, LOGIN1_PATH, LOGIN1_IFACE, "Inhibit");
90+ QDBusMessage msg = QDBusMessage::createMethodCall(LOGIN1_SERVICE, LOGIN1_PATH, LOGIN1_IFACE, QStringLiteral("Inhibit"));
91 msg << "handle-power-key:handle-suspend-key:handle-hibernate-key:handle-lid-switch"; // what
91 msg << "handle-power-key:handle-suspend-key:handle-hibernate-key:handle-lid-switch"; // what
92 msg << "Unity"; // who
92 msg << "Unity"; // who
93 msg << "Unity8 handles power events"; // why
93 msg << "Unity8 handles power events"; // why
@@ -128,8 +128,8 @@ public:
128
128
129 QDBusMessage msg = QDBusMessage::createMethodCall(LOGIN1_SERVICE,
129 QDBusMessage msg = QDBusMessage::createMethodCall(LOGIN1_SERVICE,
130 logindSessionPath,
130 logindSessionPath,
131− "org.freedesktop.DBus.Properties",
131+ QStringLiteral("org.freedesktop.DBus.Properties"),
132− "Get");
132+ QStringLiteral("Get"));
133 msg << LOGIN1_SESSION_IFACE;
133 msg << LOGIN1_SESSION_IFACE;
134 msg << ACTIVE_KEY;
134 msg << ACTIVE_KEY;
135
135
@@ -154,8 +154,8 @@ public:
154 {
154 {
155 QDBusMessage msg = QDBusMessage::createMethodCall(LOGIN1_SERVICE,
155 QDBusMessage msg = QDBusMessage::createMethodCall(LOGIN1_SERVICE,
156 logindSessionPath,
156 logindSessionPath,
157− "org.freedesktop.DBus.Properties",
157+ QStringLiteral("org.freedesktop.DBus.Properties"),
158− "Get");
158+ QStringLiteral("Get"));
159 msg << LOGIN1_SESSION_IFACE;
159 msg << LOGIN1_SESSION_IFACE;
160 msg << IDLE_SINCE_KEY;
160 msg << IDLE_SINCE_KEY;
161
161
@@ -174,7 +174,7 @@ public:
174 QDBusMessage msg = QDBusMessage::createMethodCall(LOGIN1_SERVICE,
174 QDBusMessage msg = QDBusMessage::createMethodCall(LOGIN1_SERVICE,
175 logindSessionPath,
175 logindSessionPath,
176 LOGIN1_SESSION_IFACE,
176 LOGIN1_SESSION_IFACE,
177− "SetIdleHint");
177+ QStringLiteral("SetIdleHint"));
178 msg << idle;
178 msg << idle;
179 QDBusConnection::systemBus().asyncCall(msg);
179 QDBusConnection::systemBus().asyncCall(msg);
180 }
180 }
@@ -217,14 +217,14 @@ Q_SIGNALS:
217Q_GLOBAL_STATIC(DBusUnitySessionServicePrivate, d)
217Q_GLOBAL_STATIC(DBusUnitySessionServicePrivate, d)
218
218
219DBusUnitySessionService::DBusUnitySessionService()
219DBusUnitySessionService::DBusUnitySessionService()
220− : UnityDBusObject("/com/canonical/Unity/Session", "com.canonical.Unity")
220+ : UnityDBusObject(QStringLiteral("/com/canonical/Unity/Session"), QStringLiteral("com.canonical.Unity"))
221{
221{
222 if (!d->logindSessionPath.isEmpty()) {
222 if (!d->logindSessionPath.isEmpty()) {
223 // connect our Lock() slot to the logind's session Lock() signal
223 // connect our Lock() slot to the logind's session Lock() signal
224− QDBusConnection::systemBus().connect(LOGIN1_SERVICE, d->logindSessionPath, LOGIN1_SESSION_IFACE, "Lock", this, SLOT(Lock()));
224+ QDBusConnection::systemBus().connect(LOGIN1_SERVICE, d->logindSessionPath, LOGIN1_SESSION_IFACE, QStringLiteral("Lock"), this, SLOT(Lock()));
225 // ... and our Unlocked() signal to the logind's session Unlock() signal
225 // ... and our Unlocked() signal to the logind's session Unlock() signal
226 // (lightdm handles the unlocking by calling logind's Unlock method which in turn emits this signal we connect to)
226 // (lightdm handles the unlocking by calling logind's Unlock method which in turn emits this signal we connect to)
227− QDBusConnection::systemBus().connect(LOGIN1_SERVICE, d->logindSessionPath, LOGIN1_SESSION_IFACE, "Unlock", this, SIGNAL(Unlocked()));
227+ QDBusConnection::systemBus().connect(LOGIN1_SERVICE, d->logindSessionPath, LOGIN1_SESSION_IFACE, QStringLiteral("Unlock"), this, SIGNAL(Unlocked()));
228 } else {
228 } else {
229 qWarning() << "Failed to connect to logind's session Lock/Unlock signals";
229 qWarning() << "Failed to connect to logind's session Lock/Unlock signals";
230 }
230 }
@@ -239,36 +239,36 @@ void DBusUnitySessionService::Logout()
239
239
240void DBusUnitySessionService::EndSession()
240void DBusUnitySessionService::EndSession()
241{
241{
242− const QDBusMessage msg = QDBusMessage::createMethodCall("com.ubuntu.Upstart",
242+ const QDBusMessage msg = QDBusMessage::createMethodCall(QStringLiteral("com.ubuntu.Upstart"),
243− "/com/ubuntu/Upstart",
243+ QStringLiteral("/com/ubuntu/Upstart"),
244− "com.ubuntu.Upstart0_6",
244+ QStringLiteral("com.ubuntu.Upstart0_6"),
245− "EndSession");
245+ QStringLiteral("EndSession"));
246 QDBusConnection::sessionBus().asyncCall(msg);
246 QDBusConnection::sessionBus().asyncCall(msg);
247}
247}
248
248
249bool DBusUnitySessionService::CanHibernate() const
249bool DBusUnitySessionService::CanHibernate() const
250{
250{
251− return d->checkLogin1Call("CanHibernate");
251+ return d->checkLogin1Call(QStringLiteral("CanHibernate"));
252}
252}
253
253
254bool DBusUnitySessionService::CanSuspend() const
254bool DBusUnitySessionService::CanSuspend() const
255{
255{
256− return d->checkLogin1Call("CanSuspend");
256+ return d->checkLogin1Call(QStringLiteral("CanSuspend"));
257}
257}
258
258
259bool DBusUnitySessionService::CanHybridSleep() const
259bool DBusUnitySessionService::CanHybridSleep() const
260{
260{
261− return d->checkLogin1Call("CanHybridSleep");
261+ return d->checkLogin1Call(QStringLiteral("CanHybridSleep"));
262}
262}
263
263
264bool DBusUnitySessionService::CanReboot() const
264bool DBusUnitySessionService::CanReboot() const
265{
265{
266− return d->checkLogin1Call("CanReboot");
266+ return d->checkLogin1Call(QStringLiteral("CanReboot"));
267}
267}
268
268
269bool DBusUnitySessionService::CanShutdown() const
269bool DBusUnitySessionService::CanShutdown() const
270{
270{
271− return d->checkLogin1Call("CanPowerOff");
271+ return d->checkLogin1Call(QStringLiteral("CanPowerOff"));
272}
272}
273
273
274bool DBusUnitySessionService::CanLock() const
274bool DBusUnitySessionService::CanLock() const
@@ -320,10 +320,10 @@ void DBusUnitySessionService::Lock()
320{
320{
321 // lock the session using the org.freedesktop.DisplayManager system DBUS service
321 // lock the session using the org.freedesktop.DisplayManager system DBUS service
322 const QString sessionPath = QString::fromLocal8Bit(qgetenv("XDG_SESSION_PATH"));
322 const QString sessionPath = QString::fromLocal8Bit(qgetenv("XDG_SESSION_PATH"));
323− QDBusMessage msg = QDBusMessage::createMethodCall("org.freedesktop.DisplayManager",
323+ QDBusMessage msg = QDBusMessage::createMethodCall(QStringLiteral("org.freedesktop.DisplayManager"),
324 sessionPath,
324 sessionPath,
325− "org.freedesktop.DisplayManager.Session",
325+ QStringLiteral("org.freedesktop.DisplayManager.Session"),
326− "Lock");
326+ QStringLiteral("Lock"));
327 QDBusReply<void> reply = QDBusConnection::systemBus().asyncCall(msg);
327 QDBusReply<void> reply = QDBusConnection::systemBus().asyncCall(msg);
328 if (!reply.isValid()) {
328 if (!reply.isValid()) {
329 qWarning() << "Lock call failed" << reply.error().message();
329 qWarning() << "Lock call failed" << reply.error().message();
@@ -346,7 +346,7 @@ void DBusUnitySessionService::RequestLogout()
346
346
347void DBusUnitySessionService::Reboot()
347void DBusUnitySessionService::Reboot()
348{
348{
349− d->makeLogin1Call("Reboot", {false});
349+ d->makeLogin1Call(QStringLiteral("Reboot"), {false});
350}
350}
351
351
352void DBusUnitySessionService::RequestReboot()
352void DBusUnitySessionService::RequestReboot()
@@ -357,22 +357,22 @@ void DBusUnitySessionService::RequestReboot()
357
357
358void DBusUnitySessionService::Shutdown()
358void DBusUnitySessionService::Shutdown()
359{
359{
360− d->makeLogin1Call("PowerOff", {false});
360+ d->makeLogin1Call(QStringLiteral("PowerOff"), {false});
361}
361}
362
362
363void DBusUnitySessionService::Suspend()
363void DBusUnitySessionService::Suspend()
364{
364{
365− d->makeLogin1Call("Suspend", {false});
365+ d->makeLogin1Call(QStringLiteral("Suspend"), {false});
366}
366}
367
367
368void DBusUnitySessionService::Hibernate()
368void DBusUnitySessionService::Hibernate()
369{
369{
370− d->makeLogin1Call("Hibernate", {false});
370+ d->makeLogin1Call(QStringLiteral("Hibernate"), {false});
371}
371}
372
372
373void DBusUnitySessionService::HybridSleep()
373void DBusUnitySessionService::HybridSleep()
374{
374{
375− d->makeLogin1Call("HybridSleep", {false});
375+ d->makeLogin1Call(QStringLiteral("HybridSleep"), {false});
376}
376}
377
377
378void DBusUnitySessionService::RequestShutdown()
378void DBusUnitySessionService::RequestShutdown()
@@ -392,16 +392,16 @@ enum class Action : unsigned
392
392
393void performAsyncUnityCall(const QString &method)
393void performAsyncUnityCall(const QString &method)
394{
394{
395− const QDBusMessage msg = QDBusMessage::createMethodCall("com.canonical.Unity",
395+ const QDBusMessage msg = QDBusMessage::createMethodCall(QStringLiteral("com.canonical.Unity"),
396− "/com/canonical/Unity/Session",
396+ QStringLiteral("/com/canonical/Unity/Session"),
397− "com.canonical.Unity.Session",
397+ QStringLiteral("com.canonical.Unity.Session"),
398 method);
398 method);
399 QDBusConnection::sessionBus().asyncCall(msg);
399 QDBusConnection::sessionBus().asyncCall(msg);
400}
400}
401
401
402
402
403DBusGnomeSessionManagerWrapper::DBusGnomeSessionManagerWrapper()
403DBusGnomeSessionManagerWrapper::DBusGnomeSessionManagerWrapper()
404− : UnityDBusObject("/org/gnome/SessionManager/EndSessionDialog", "com.canonical.Unity")
404+ : UnityDBusObject(QStringLiteral("/org/gnome/SessionManager/EndSessionDialog"), QStringLiteral("com.canonical.Unity"))
405{
405{
406}
406}
407
407
@@ -414,15 +414,15 @@ void DBusGnomeSessionManagerWrapper::Open(const unsigned type, const unsigned ar
414 switch (static_cast<Action>(type))
414 switch (static_cast<Action>(type))
415 {
415 {
416 case Action::LOGOUT:
416 case Action::LOGOUT:
417− performAsyncUnityCall("RequestLogout");
417+ performAsyncUnityCall(QStringLiteral("RequestLogout"));
418 break;
418 break;
419
419
420 case Action::REBOOT:
420 case Action::REBOOT:
421− performAsyncUnityCall("RequestReboot");
421+ performAsyncUnityCall(QStringLiteral("RequestReboot"));
422 break;
422 break;
423
423
424 case Action::SHUTDOWN:
424 case Action::SHUTDOWN:
425− performAsyncUnityCall("RequestShutdown");
425+ performAsyncUnityCall(QStringLiteral("RequestShutdown"));
426 break;
426 break;
427
427
428 default:
428 default:
@@ -432,7 +432,7 @@ void DBusGnomeSessionManagerWrapper::Open(const unsigned type, const unsigned ar
432
432
433
433
434DBusGnomeScreensaverWrapper::DBusGnomeScreensaverWrapper()
434DBusGnomeScreensaverWrapper::DBusGnomeScreensaverWrapper()
435− : UnityDBusObject("/org/gnome/ScreenSaver", "org.gnome.ScreenSaver")
435+ : UnityDBusObject(QStringLiteral("/org/gnome/ScreenSaver"), QStringLiteral("org.gnome.ScreenSaver"))
436{
436{
437 connect(d, &DBusUnitySessionServicePrivate::screensaverActiveChanged, this, &DBusGnomeScreensaverWrapper::ActiveChanged);
437 connect(d, &DBusUnitySessionServicePrivate::screensaverActiveChanged, this, &DBusGnomeScreensaverWrapper::ActiveChanged);
438}
438}
@@ -451,7 +451,7 @@ void DBusGnomeScreensaverWrapper::SetActive(bool lock)
451
451
452void DBusGnomeScreensaverWrapper::Lock()
452void DBusGnomeScreensaverWrapper::Lock()
453{
453{
454− performAsyncUnityCall("Lock");
454+ performAsyncUnityCall(QStringLiteral("Lock"));
455}
455}
456
456
457quint32 DBusGnomeScreensaverWrapper::GetActiveTime() const
457quint32 DBusGnomeScreensaverWrapper::GetActiveTime() const
@@ -466,9 +466,9 @@ void DBusGnomeScreensaverWrapper::SimulateUserActivity()
466
466
467
467
468DBusScreensaverWrapper::DBusScreensaverWrapper()
468DBusScreensaverWrapper::DBusScreensaverWrapper()
469− : UnityDBusObject("/org/freedesktop/ScreenSaver", "org.freedesktop.ScreenSaver")
469+ : UnityDBusObject(QStringLiteral("/org/freedesktop/ScreenSaver"), QStringLiteral("org.freedesktop.ScreenSaver"))
470{
470{
471− QDBusConnection::sessionBus().registerObject("/ScreenSaver", this, QDBusConnection::ExportScriptableContents); // compat path, also register here
471+ QDBusConnection::sessionBus().registerObject(QStringLiteral("/ScreenSaver"), this, QDBusConnection::ExportScriptableContents); // compat path, also register here
472 connect(d, &DBusUnitySessionServicePrivate::screensaverActiveChanged, this, &DBusScreensaverWrapper::ActiveChanged);
472 connect(d, &DBusUnitySessionServicePrivate::screensaverActiveChanged, this, &DBusScreensaverWrapper::ActiveChanged);
473}
473}
474
474
@@ -488,7 +488,7 @@ bool DBusScreensaverWrapper::SetActive(bool lock)
488
488
489void DBusScreensaverWrapper::Lock()
489void DBusScreensaverWrapper::Lock()
490{
490{
491− performAsyncUnityCall("Lock");
491+ performAsyncUnityCall(QStringLiteral("Lock"));
492}
492}
493
493
494quint32 DBusScreensaverWrapper::GetActiveTime() const
494quint32 DBusScreensaverWrapper::GetActiveTime() const
plugins/Utils/CMakeLists.txt+2
@@ -9,6 +9,7 @@ include_directories(
9)
9)
10
10
11set(QMLPLUGIN_SRC
11set(QMLPLUGIN_SRC
12+ activefocuslogger.cpp
12 constants.cpp
13 constants.cpp
13 HomeKeyWatcher.cpp
14 HomeKeyWatcher.cpp
14 inputwatcher.cpp
15 inputwatcher.cpp
@@ -20,6 +21,7 @@ set(QMLPLUGIN_SRC
20 windowscreenshotprovider.cpp
21 windowscreenshotprovider.cpp
21 easingcurve.cpp
22 easingcurve.cpp
22 windowstatestorage.cpp
23 windowstatestorage.cpp
24+ timezoneFormatter.cpp
23 plugin.cpp
25 plugin.cpp
24 )
26 )
25
27
tests/uqmlscene/ActiveFocusLogger.cpp → plugins/Utils/activefocuslogger.cpprenamed+21−8
@@ -14,21 +14,34 @@
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
15 */
16
16
17−#include "ActiveFocusLogger.h"
17+#include "activefocuslogger.h"
18
18
19−#include <QDebug>
19+#include <QQuickWindow>
20−#include <QQuickItem>
21
20
22−void ActiveFocusLogger::setWindow(QQuickWindow *window)
21+ActiveFocusLogger::ActiveFocusLogger(QQuickItem *parent)
22+ : QQuickItem(parent)
23{
23{
24+ connect(this, &QQuickItem::windowChanged,
25+ this, &ActiveFocusLogger::setupFilterOnWindow);
26+}
27+
28+void ActiveFocusLogger::setupFilterOnWindow(QQuickWindow *window)
29+{
30+ if (!m_window.isNull()) {
31+ disconnect(m_window.data(), nullptr, this, nullptr);
32+ m_window.clear();
33+ }
34+
35+ if (window) {
24− m_window = window;
36+ m_window = window;
25− QObject::connect(window, &QQuickWindow::activeFocusItemChanged,
37+ QObject::connect(window, &QQuickWindow::activeFocusItemChanged,
26− this, &ActiveFocusLogger::printActiveFocusInfo);
38+ this, &ActiveFocusLogger::printActiveFocusInfo);
39+ }
27}
40}
28
41
29void ActiveFocusLogger::printActiveFocusInfo()
42void ActiveFocusLogger::printActiveFocusInfo()
30{
43{
31− if (!m_window) {
44+ if (!m_window || !isEnabled()) {
32 return;
45 return;
33 }
46 }
34
47
tests/uqmlscene/ActiveFocusLogger.h → plugins/Utils/activefocuslogger.hrenamed+8−8
@@ -14,24 +14,24 @@
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
15 */
16
16
17−#ifndef ACTIVE_FOCUS_LOGGER_H
17+#ifndef UNITY_ACTIVEFOCUSLOGGER_H
18−#define ACTIVE_FOCUS_LOGGER_H
18+#define UNITY_ACTIVEFOCUSLOGGER_H
19
19
20−#include <QObject>
20+#include <QQuickItem>
21−#include <QQuickWindow>
22#include <QPointer>
21#include <QPointer>
23
22
24−class ActiveFocusLogger : public QObject {
23+class ActiveFocusLogger : public QQuickItem
24+{
25 Q_OBJECT
25 Q_OBJECT
26−
27public:
26public:
28− void setWindow(QQuickWindow *window);
27+ ActiveFocusLogger(QQuickItem *parent = 0);
29
28
30private Q_SLOTS:
29private Q_SLOTS:
30+ void setupFilterOnWindow(QQuickWindow *window);
31 void printActiveFocusInfo();
31 void printActiveFocusInfo();
32
32
33private:
33private:
34 QPointer<QQuickWindow> m_window;
34 QPointer<QQuickWindow> m_window;
35};
35};
36
36
37−#endif // ACTIVE_FOCUS_LOGGER_H
37+#endif // UNITY_ACTIVEFOCUSLOGGER_H
plugins/Utils/plugin.cpp+6−1
@@ -23,6 +23,7 @@
23#include "plugin.h"
23#include "plugin.h"
24
24
25// local
25// local
26+#include "activefocuslogger.h"
26#include "easingcurve.h"
27#include "easingcurve.h"
27#include "HomeKeyWatcher.h"
28#include "HomeKeyWatcher.h"
28#include "inputwatcher.h"
29#include "inputwatcher.h"
@@ -33,6 +34,7 @@
33#include "windowscreenshotprovider.h"
34#include "windowscreenshotprovider.h"
34#include "windowstatestorage.h"
35#include "windowstatestorage.h"
35#include "constants.h"
36#include "constants.h"
37+#include "timezoneFormatter.h"
36
38
37static QObject *createWindowStateStorage(QQmlEngine *engine, QJSEngine *scriptEngine)
39static QObject *createWindowStateStorage(QQmlEngine *engine, QJSEngine *scriptEngine)
38{
40{
@@ -61,11 +63,14 @@ void UtilsPlugin::registerTypes(const char *uri)
61 qmlRegisterSingletonType<WindowStateStorage>(uri, 0, 1, "WindowStateStorage", createWindowStateStorage);
63 qmlRegisterSingletonType<WindowStateStorage>(uri, 0, 1, "WindowStateStorage", createWindowStateStorage);
62 qmlRegisterType<InputWatcher>(uri, 0, 1, "InputWatcher");
64 qmlRegisterType<InputWatcher>(uri, 0, 1, "InputWatcher");
63 qmlRegisterSingletonType<Constants>(uri, 0, 1, "Constants", createConstants);
65 qmlRegisterSingletonType<Constants>(uri, 0, 1, "Constants", createConstants);
66+ qmlRegisterSingletonType<TimezoneFormatter>(uri, 0, 1, "TimezoneFormatter",
67+ [](QQmlEngine*, QJSEngine*) -> QObject* { return new TimezoneFormatter; });
68+ qmlRegisterType<ActiveFocusLogger>(uri, 0, 1, "ActiveFocusLogger");
64}
69}
65
70
66void UtilsPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
71void UtilsPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
67{
72{
68 QQmlExtensionPlugin::initializeEngine(engine, uri);
73 QQmlExtensionPlugin::initializeEngine(engine, uri);
69
74
70− engine->addImageProvider(QLatin1String("window"), new WindowScreenshotProvider);
75+ engine->addImageProvider(QStringLiteral("window"), new WindowScreenshotProvider);
71}
76}
plugins/Utils/timezoneFormatter.cppnew file+35
@@ -0,0 +1,35 @@
1+/*
2+ * Copyright 2015 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU 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 <QTimeZone>
18+
19+#include "timezoneFormatter.h"
20+
21+TimezoneFormatter::TimezoneFormatter(QObject *parent)
22+ : QObject(parent)
23+{
24+}
25+
26+QString TimezoneFormatter::currentTimeInTimezone(const QVariant &tzId) const
27+{
28+ QTimeZone tz(tzId.toByteArray());
29+ if (tz.isValid()) {
30+ const QDateTime now = QDateTime::currentDateTime().toTimeZone(tz);
31+ // return locale-aware string in the form "day, hh:mm", e.g. "Mon 14:30" or "Mon 1:30 pm"
32+ return QStringLiteral("%1 %2").arg(now.toString("ddd")).arg(now.time().toString(Qt::DefaultLocaleShortDate));
33+ }
34+ return QString();
35+}
plugins/Dash/croppedimagesizerasyncworker.h → plugins/Utils/timezoneFormatter.hrenamed+7−22
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2014 Canonical, Ltd.
2+ * Copyright 2015 Canonical Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
@@ -14,34 +14,19 @@
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
15 */
16
16
17−#ifndef CROPPEDIMAGESIZERASYNCWORKER_H
17+#ifndef TIMEZONE_FORMATTER_H
18−#define CROPPEDIMAGESIZERASYNCWORKER_H
18+#define TIMEZONE_FORMATTER_H
19
19
20−#include <QMutex>
21#include <QObject>
20#include <QObject>
22
21
23−class CroppedImageSizer;
22+class TimezoneFormatter : public QObject
24−
25−class QNetworkReply;
26−
27−class CroppedImageSizerAsyncWorker : public QObject
28{
23{
29 Q_OBJECT
24 Q_OBJECT
30public:
25public:
31− CroppedImageSizerAsyncWorker(CroppedImageSizer *sizer, QNetworkReply *reply);
26+ TimezoneFormatter(QObject * parent = nullptr);
32−
27+ ~TimezoneFormatter() = default;
33− void abort();
34−
35−private Q_SLOTS:
36− void requestFinished();
37−
38−private:
39− static void processRequestFinished(CroppedImageSizerAsyncWorker *worker);
40
28
41− QMutex m_mutex;
29+ Q_INVOKABLE QString currentTimeInTimezone(const QVariant &tzId) const;
42− CroppedImageSizer *m_sizer;
43− QNetworkReply *m_reply;
44− bool m_ignoreAbort;
45};
30};
46
31
47#endif
32#endif
plugins/Utils/windowstatestorage.cpp+6−6
@@ -30,7 +30,7 @@ WindowStateStorage::WindowStateStorage(QObject *parent):
30 QObject(parent)
30 QObject(parent)
31{
31{
32 QString dbPath = QDir::homePath() + "/.cache/unity8/";
32 QString dbPath = QDir::homePath() + "/.cache/unity8/";
33− m_db = QSqlDatabase::addDatabase("QSQLITE");
33+ m_db = QSqlDatabase::addDatabase(QStringLiteral("QSQLITE"));
34 QDir dir;
34 QDir dir;
35 dir.mkpath(dbPath);
35 dir.mkpath(dbPath);
36 m_db.setDatabaseName(dbPath + "windowstatestorage.sqlite");
36 m_db.setDatabaseName(dbPath + "windowstatestorage.sqlite");
@@ -51,7 +51,7 @@ void WindowStateStorage::saveGeometry(const QString &windowId, const QRect &rect
51{
51{
52 QMutexLocker mutexLocker(&s_mutex);
52 QMutexLocker mutexLocker(&s_mutex);
53
53
54− QString queryString = QString("INSERT OR REPLACE INTO geometry (windowId, x, y, width, height) values ('%1', '%2', '%3', '%4', '%5');")
54+ QString queryString = QStringLiteral("INSERT OR REPLACE INTO geometry (windowId, x, y, width, height) values ('%1', '%2', '%3', '%4', '%5');")
55 .arg(windowId)
55 .arg(windowId)
56 .arg(rect.x())
56 .arg(rect.x())
57 .arg(rect.y())
57 .arg(rect.y())
@@ -85,7 +85,7 @@ void WindowStateStorage::executeAsyncQuery(const QString &queryString)
85QRect WindowStateStorage::getGeometry(const QString &windowId, const QRect &defaultValue)
85QRect WindowStateStorage::getGeometry(const QString &windowId, const QRect &defaultValue)
86{
86{
87 QMutexLocker l(&s_mutex);
87 QMutexLocker l(&s_mutex);
88− QString queryString = QString("SELECT * FROM geometry WHERE windowId = '%1';")
88+ QString queryString = QStringLiteral("SELECT * FROM geometry WHERE windowId = '%1';")
89 .arg(windowId);
89 .arg(windowId);
90 QSqlQuery query;
90 QSqlQuery query;
91
91
@@ -99,7 +99,7 @@ QRect WindowStateStorage::getGeometry(const QString &windowId, const QRect &defa
99 if (!query.first()) {
99 if (!query.first()) {
100 return defaultValue;
100 return defaultValue;
101 }
101 }
102− return QRect(query.value("x").toInt(), query.value("y").toInt(), query.value("width").toInt(), query.value("height").toInt());
102+ return QRect(query.value(QStringLiteral("x")).toInt(), query.value(QStringLiteral("y")).toInt(), query.value(QStringLiteral("width")).toInt(), query.value(QStringLiteral("height")).toInt());
103}
103}
104
104
105void WindowStateStorage::initdb()
105void WindowStateStorage::initdb()
@@ -110,8 +110,8 @@ void WindowStateStorage::initdb()
110 return;
110 return;
111 }
111 }
112
112
113− if (!m_db.tables().contains("geometry")) {
113+ if (!m_db.tables().contains(QStringLiteral("geometry"))) {
114 QSqlQuery query;
114 QSqlQuery query;
115− query.exec("CREATE TABLE geometry(windowId TEXT UNIQUE, x INTEGER, y INTEGER, width INTEGER, height INTEGER);");
115+ query.exec(QStringLiteral("CREATE TABLE geometry(windowId TEXT UNIQUE, x INTEGER, y INTEGER, width INTEGER, height INTEGER);"));
116 }
116 }
117}
117}
plugins/Wizard/PageList.cpp+3−3
@@ -40,8 +40,8 @@ PageList::PageList(QObject *parent)
40 m_index(-1),
40 m_index(-1),
41 m_pages()
41 m_pages()
42{
42{
43− QString qmlSuffix = ".qml";
43+ QString qmlSuffix = QStringLiteral(".qml");
44− QString disabledSuffix = ".disabled";
44+ QString disabledSuffix = QStringLiteral(".disabled");
45 QSet<QString> disabledPages;
45 QSet<QString> disabledPages;
46 QStringList dataDirs;
46 QStringList dataDirs;
47
47
@@ -53,7 +53,7 @@ PageList::PageList(QObject *parent)
53
53
54 Q_FOREACH(const QString &dataDir, dataDirs) {
54 Q_FOREACH(const QString &dataDir, dataDirs) {
55 QDir dir(dataDir + "/Wizard/Pages");
55 QDir dir(dataDir + "/Wizard/Pages");
56− QStringList entries = dir.entryList(QStringList("[0-9]*"), QDir::Files | QDir::Readable);
56+ QStringList entries = dir.entryList(QStringList(QStringLiteral("[0-9]*")), QDir::Files | QDir::Readable);
57 Q_FOREACH(const QString &entry, entries) {
57 Q_FOREACH(const QString &entry, entries) {
58 if (!m_pages.contains(entry) && entry.endsWith(qmlSuffix))
58 if (!m_pages.contains(entry) && entry.endsWith(qmlSuffix))
59 m_pages.insert(entry, dir.absoluteFilePath(entry));
59 m_pages.insert(entry, dir.absoluteFilePath(entry));
plugins/Wizard/System.cpp+23−15
@@ -33,14 +33,16 @@ System::System()
33 // Register the argument needed for UpdateActivationEnvironment below
33 // Register the argument needed for UpdateActivationEnvironment below
34 qDBusRegisterMetaType<QMap<QString,QString>>();
34 qDBusRegisterMetaType<QMap<QString,QString>>();
35
35
36+ if(!wizardEnabled()) {
36− m_fsWatcher.addPath(wizardEnabledPath());
37+ m_fsWatcher.addPath(wizardEnabledPath());
38+ }
37− connect(&m_fsWatcher, &QFileSystemWatcher::fileChanged, this, &System::wizardEnabledChanged);
39+ connect(&m_fsWatcher, &QFileSystemWatcher::fileChanged, this, &System::watcherFileChanged);
38}
40}
39
41
40QString System::wizardEnabledPath()
42QString System::wizardEnabledPath()
41{
43{
42 // Uses ubuntu-system-settings namespace for historic compatibility reasons
44 // Uses ubuntu-system-settings namespace for historic compatibility reasons
43− return QDir::home().filePath(".config/ubuntu-system-settings/wizard-has-run");
45+ return QDir::home().filePath(QStringLiteral(".config/ubuntu-system-settings/wizard-has-run"));
44}
46}
45
47
46bool System::wizardEnabled() const
48bool System::wizardEnabled() const
@@ -56,13 +58,19 @@ void System::setWizardEnabled(bool enabled)
56 if (enabled) {
58 if (enabled) {
57 QFile::remove(wizardEnabledPath());
59 QFile::remove(wizardEnabledPath());
58 } else {
60 } else {
59− QDir(wizardEnabledPath()).mkpath("..");
61+ QDir(wizardEnabledPath()).mkpath(QStringLiteral(".."));
60 QFile(wizardEnabledPath()).open(QIODevice::WriteOnly);
62 QFile(wizardEnabledPath()).open(QIODevice::WriteOnly);
61 m_fsWatcher.addPath(wizardEnabledPath());
63 m_fsWatcher.addPath(wizardEnabledPath());
62− wizardEnabledChanged();
64+ Q_EMIT wizardEnabledChanged();
63 }
65 }
64}
66}
65
67
68+void System::watcherFileChanged()
69+{
70+ Q_EMIT wizardEnabledChanged();
71+ m_fsWatcher.removePath(wizardEnabledPath());
72+}
73+
66void System::setSessionVariable(const QString &variable, const QString &value)
74void System::setSessionVariable(const QString &variable, const QString &value)
67{
75{
68 // We need to update both upstart's and DBus's environment
76 // We need to update both upstart's and DBus's environment
@@ -71,10 +79,10 @@ void System::setSessionVariable(const QString &variable, const QString &value)
71 QMap<QString,QString> valueMap;
79 QMap<QString,QString> valueMap;
72 valueMap.insert(variable, value);
80 valueMap.insert(variable, value);
73
81
74− QDBusMessage msg = QDBusMessage::createMethodCall("org.freedesktop.DBus",
82+ QDBusMessage msg = QDBusMessage::createMethodCall(QStringLiteral("org.freedesktop.DBus"),
75− "/org/freedesktop/DBus",
83+ QStringLiteral("/org/freedesktop/DBus"),
76− "org.freedesktop.DBus",
84+ QStringLiteral("org.freedesktop.DBus"),
77− "UpdateActivationEnvironment");
85+ QStringLiteral("UpdateActivationEnvironment"));
78
86
79 msg << QVariant::fromValue(valueMap);
87 msg << QVariant::fromValue(valueMap);
80 QDBusConnection::sessionBus().asyncCall(msg);
88 QDBusConnection::sessionBus().asyncCall(msg);
@@ -82,21 +90,21 @@ void System::setSessionVariable(const QString &variable, const QString &value)
82
90
83void System::updateSessionLanguage(const QString &locale)
91void System::updateSessionLanguage(const QString &locale)
84{
92{
85− const QString language = locale.split(".")[0];
93+ const QString language = locale.split(QStringLiteral("."))[0];
86
94
87− setSessionVariable("LANGUAGE", language);
95+ setSessionVariable(QStringLiteral("LANGUAGE"), language);
88− setSessionVariable("LANG", locale);
96+ setSessionVariable(QStringLiteral("LANG"), locale);
89− setSessionVariable("LC_ALL", locale);
97+ setSessionVariable(QStringLiteral("LC_ALL"), locale);
90
98
91 // QLocale caches the default locale on startup, and Qt uses that cached
99 // QLocale caches the default locale on startup, and Qt uses that cached
92 // copy when formatting dates. So manually update it here.
100 // copy when formatting dates. So manually update it here.
93 QLocale::setDefault(QLocale(locale));
101 QLocale::setDefault(QLocale(locale));
94
102
95 // Restart bits of the session to pick up new language.
103 // Restart bits of the session to pick up new language.
96− QProcess::startDetached("sh -c \"initctl emit indicator-services-end; \
104+ QProcess::startDetached(QStringLiteral("sh -c \"initctl emit indicator-services-end; \
97 initctl stop scope-registry; \
105 initctl stop scope-registry; \
98 initctl stop smart-scopes-proxy; \
106 initctl stop smart-scopes-proxy; \
99 initctl emit --no-wait indicator-services-start; \
107 initctl emit --no-wait indicator-services-start; \
100 initctl restart --no-wait maliit-server; \
108 initctl restart --no-wait maliit-server; \
101− initctl restart --no-wait unity8-dash\"");
109+ initctl restart --no-wait unity8-dash\""));
102}
110}
plugins/Wizard/System.h+3
@@ -38,6 +38,9 @@ public Q_SLOTS:
38Q_SIGNALS:
38Q_SIGNALS:
39 void wizardEnabledChanged();
39 void wizardEnabledChanged();
40
40
41+private Q_SLOTS:
42+ void watcherFileChanged();
43+
41private:
44private:
42 Q_DISABLE_COPY(System)
45 Q_DISABLE_COPY(System)
43
46
po/am.po+93−6
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+0000\n"
11+"PO-Revision-Date: 2015-07-04 14:46+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -711,8 +711,95 @@ msgstr "〈 %1"
711msgid "%1 〉"
711msgid "%1 〉"
712msgstr "%1 〉"
712msgstr "%1 〉"
713
713
714+#~ msgid "Top edge"
715+#~ msgstr "የላይ ጠርዝ"
716+
717+#~ msgid "Close"
718+#~ msgstr "መዝጊያ"
719+
720+#~ msgid "Left edge"
721+#~ msgstr "የግራ ጠርዝ"
722+
723+#~ msgid "Right edge"
724+#~ msgstr "የቀኝ ጠርዝ"
725+
726+#~ msgid "Type or say a command"
727+#~ msgstr "ትእዛዝ ይናገሩ ወይንም ይጻፉ"
728+
729+#~ msgid "Loading. Please Wait..."
730+#~ msgstr "እባክዎን ይቆዩ በመጫን ላይ..."
731+
732+#~ msgid "Speaking..."
733+#~ msgstr "በመናገር ላይ..."
734+
735+#~ msgid "Speak Now..."
736+#~ msgstr "አሁን ይናገሩ..."
737+
738+#~ msgid "Confirm"
739+#~ msgstr "ማረጋገጫ"
740+
741+#~ msgid "Search"
742+#~ msgstr "መፈለጊያ"
743+
744+#~ msgid "Skip intro"
745+#~ msgstr "መግቢያውን መዝለያ"
746+
747+#~ msgid "Try swiping from the top edge to access the indicators"
748+#~ msgstr "ጠቋሚዎች ጋር ለመድረስ ከ ላይ ጠርዝ በኩል ወደ ታች ይጥረጉ"
749+
750+#~ msgid "Swipe up again to close the settings screen"
751+#~ msgstr "የማሰናጃውን መመልከቻ ለመዝጋት እንደገና ወደ ላይ ይጥረጉ"
752+
753+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
754+#~ msgstr "ከ ግራ በኩል ወደ ቀኝ ይጥረጉ በፍጥነት መተግበሪያዎች ጋር ለመድረስ እና ለማስጀመር"
755+
756+#~ msgid "Well done"
757+#~ msgstr "ጥሩ አድረገዋል"
758+
759+#~ msgid "Try swiping from the right edge to unlock the phone"
760+#~ msgstr "ስልኩን ለመክፈት ከ ቀኝ ጠርዝ በኩል ወደ ግራ ይጥረጉ"
761+
762+#~ msgid "Favorites"
763+#~ msgstr "የምወዳቸው"
764+
765+#~ msgid "All"
766+#~ msgstr "ሁሉንም"
767+
768+#~ msgid "Store"
769+#~ msgstr "ማስቀመጫ"
770+
771+#~ msgid "Done"
772+#~ msgstr "ጨርሷል"
773+
774+#~ msgid "Power off"
775+#~ msgstr "ማጥፊያ"
776+
777+#~ msgid "Power"
778+#~ msgstr "ሐይል"
779+
780+#~ msgid "Log out"
781+#~ msgstr "መውጫ"
782+
783+#~ msgid "Shut down"
784+#~ msgstr "ማጥፊያ"
785+
786+#~ msgid "Reboot"
787+#~ msgstr "እንደገና ማስነሻ"
788+
789+#~ msgid "Settings"
790+#~ msgstr "ማሰናጃ"
791+
792+#~ msgid ""
793+#~ "You have now mastered the edge gestures and can start using the "
794+#~ "phone<br><br>Tap on the screen to start"
795+#~ msgstr ""
796+#~ "አሁን የ ጠርዝ እንቅስቃሴን አውቀዋል እና መጀመር ይችላሉ ስልኩን መጠቀም <br><br>መመልከቻውን መታ ያድርጉ ለመጀመር"
797+
798+#~ msgid "Restart"
799+#~ msgstr "እንደገና ማስጀመሪያ"
800+
801+#~ msgid "Manage Scopes"
802+#~ msgstr "የ ክልል አስተዳዳሪ"
803+
714#~ msgid "Please re-enter"
804#~ msgid "Please re-enter"
715#~ msgstr "እባክዎን እንደገና-ያስገቡ"
805#~ msgstr "እባክዎን እንደገና-ያስገቡ"
716−
717−#~ msgid "Click here to finish."
718−#~ msgstr "ለመጨረስ እዚህ ይጫኑ"
po/ar.po+59−6
@@ -8,7 +8,7 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=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: 2015-09-12 05:42+0000\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20−"X-Generator: Launchpad (build 17720)\n"
20+"X-Generator: Launchpad (build 17746)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:112
22#: plugins/LightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -730,8 +730,61 @@ msgstr ""
730msgid "%1 〉"
730msgid "%1 〉"
731msgstr ""
731msgstr ""
732
732
733+#~ msgid "Confirm"
734+#~ msgstr "التأكيد"
735+
736+#~ msgid "Type or say a command"
737+#~ msgstr "اكتب أو قُل أمرا"
738+
739+#~ msgid "Loading. Please Wait..."
740+#~ msgstr "يجري التحميل. برجاء الانتظار..."
741+
742+#~ msgid "Speak Now..."
743+#~ msgstr "تكلم الآن..."
744+
745+#~ msgid "Speaking..."
746+#~ msgstr "تتكلم الآن..."
747+
748+#~ msgid "Search"
749+#~ msgstr "ابحث"
750+
751+#~ msgid "Try swiping from the top edge to access the indicators"
752+#~ msgstr "اسحب اصبعك من الحافة العلوية للوصول إلى المؤشرات"
753+
754+#~ msgid "Top edge"
755+#~ msgstr "الحافة العلوية"
756+
757+#~ msgid "Close"
758+#~ msgstr "أغلق"
759+
760+#~ msgid "Swipe up again to close the settings screen"
761+#~ msgstr "اسحب اصعبك لأعلى مرة أخرى لغلق شاشة الإعدادات"
762+
763+#~ msgid "Skip intro"
764+#~ msgstr "تخطي المقدمة"
765+
766+#~ msgid "Try swiping from the right edge to unlock the phone"
767+#~ msgstr "اسحب اصبعك من الحافة اليمنى لفتح قفل الهاتف"
768+
769+#~ msgid "Right edge"
770+#~ msgstr "الحافة اليمنى"
771+
772+#~ msgid "Left edge"
773+#~ msgstr "الحافة اليسرى"
774+
775+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
776+#~ msgstr ""
777+#~ "اسحب أصبعك من الحافة اليسرى لإظهار شريط يونتي للوصول السريع للتطبيقات"
778+
779+#~ msgid "Well done"
780+#~ msgstr "أحسنت!"
781+
782+#~ msgid ""
783+#~ "You have now mastered the edge gestures and can start using the "
784+#~ "phone<br><br>Tap on the screen to start"
785+#~ msgstr ""
786+#~ "أنت الآن بارع في إيماءات الحواف ويمكنك البدء باستخدام هاتفك<br><br>انقر على "
787+#~ "الشاشة للبدء"
788+
733#~ msgid "Please re-enter"
789#~ msgid "Please re-enter"
734#~ msgstr "برجاء إعادة إدخالها"
790#~ msgstr "برجاء إعادة إدخالها"
735−
736−#~ msgid "Click here to finish."
737−#~ msgstr "انقر هنا للإنهاء."
po/ast.po+95−5
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+0000\n"
11+"PO-Revision-Date: 2015-06-11 23:39+0000\n"
12"Last-Translator: enolp <enolp@softastur.org>\n"
12"Last-Translator: enolp <enolp@softastur.org>\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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -716,8 +716,98 @@ msgstr "〈 %1"
716msgid "%1 〉"
716msgid "%1 〉"
717msgstr "%1 〉"
717msgstr "%1 〉"
718
718
719−#~ msgid "Click here to finish."
719+#~ msgid "Skip intro"
720−#~ msgstr "Primi equí pa finar."
720+#~ msgstr "Omitir la intro"
721+
722+#~ msgid "Try swiping from the right edge to unlock the phone"
723+#~ msgstr "Esliza'l deu dende'l berbesu drechu pa desbloquiar el teléfonu"
724+
725+#~ msgid "Right edge"
726+#~ msgstr "Berbesu drechu"
727+
728+#~ msgid "Top edge"
729+#~ msgstr "Berbesu superior"
730+
731+#~ msgid "Try swiping from the top edge to access the indicators"
732+#~ msgstr "Esliza'l deu dende'l berbesu superior p'acceder a los menús"
733+
734+#~ msgid "Close"
735+#~ msgstr "Zarrar"
736+
737+#~ msgid "Swipe up again to close the settings screen"
738+#~ msgstr "Esliza hacia arriba pa zarrar la pantalla d'axustes"
739+
740+#~ msgid "Left edge"
741+#~ msgstr "Berbesu esquierdu"
742+
743+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
744+#~ msgstr ""
745+#~ "Esliza'l deu dende la esquierda p'amosar el llanzador y acceder rápidamente "
746+#~ "a les aplicaciones"
747+
748+#~ msgid "Well done"
749+#~ msgstr "Bien fecho"
750+
751+#~ msgid "Confirm"
752+#~ msgstr "Confirmar"
753+
754+#~ msgid "Speaking..."
755+#~ msgstr "Falando…"
756+
757+#~ msgid "Loading. Please Wait..."
758+#~ msgstr "Cargando, espera…"
759+
760+#~ msgid "Type or say a command"
761+#~ msgstr "Escribi o di una orde"
762+
763+#~ msgid "Speak Now..."
764+#~ msgstr "Fala agora…"
765+
766+#~ msgid "Search"
767+#~ msgstr "Guetar"
768+
769+#~ msgid ""
770+#~ "You have now mastered the edge gestures and can start using the "
771+#~ "phone<br><br>Tap on the screen to start"
772+#~ msgstr ""
773+#~ "Agora yá domines los xestos de los berbesos y pues entamar a usar el "
774+#~ "teléfonu<br><br>Toca la pantalla pa comenzar"
775+
776+#~ msgid "Power"
777+#~ msgstr "Enerxía"
778+
779+#~ msgid "Log out"
780+#~ msgstr "Zarrar sesión"
781+
782+#~ msgid "Reboot"
783+#~ msgstr "Reaniciar"
784+
785+#~ msgid "Shut down"
786+#~ msgstr "Apagar"
787+
788+#~ msgid "Settings"
789+#~ msgstr "Axustes"
790+
791+#~ msgid "Power off"
792+#~ msgstr "Apagar"
793+
794+#~ msgid "Done"
795+#~ msgstr "Fecho"
796+
797+#~ msgid "Favorites"
798+#~ msgstr "Favoritos"
799+
800+#~ msgid "All"
801+#~ msgstr "Too"
802+
803+#~ msgid "Store"
804+#~ msgstr "Tienda"
805+
806+#~ msgid "Restart"
807+#~ msgstr "Reaniciar"
808+
809+#~ msgid "Manage Scopes"
810+#~ msgstr "Xestionar ámbitos"
721
811
722#~ msgid "Please re-enter"
812#~ msgid "Please re-enter"
723#~ msgstr "Por favor, reintroduzla"
813#~ msgstr "Por favor, reintroduzla"
po/az.po+83−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -705,3 +705,83 @@ msgstr ""
705#, qt-format
705#, qt-format
706msgid "%1 〉"
706msgid "%1 〉"
707msgstr ""
707msgstr ""
708+
709+#~ msgid "Confirm"
710+#~ msgstr "Təsdiqlə"
711+
712+#~ msgid "Search"
713+#~ msgstr "Axtar"
714+
715+#~ msgid "Top edge"
716+#~ msgstr "Yuxarı künc"
717+
718+#~ msgid "Close"
719+#~ msgstr "Bağla"
720+
721+#~ msgid "Left edge"
722+#~ msgstr "Sol künc"
723+
724+#~ msgid "Well done"
725+#~ msgstr "Təbriklər"
726+
727+#~ msgid "Right edge"
728+#~ msgstr "Sağ Künc"
729+
730+#~ msgid "Speaking..."
731+#~ msgstr "Danışır..."
732+
733+#~ msgid "Loading. Please Wait..."
734+#~ msgstr "Yüklənir. Zəhmət olmasa, gözləyin..."
735+
736+#~ msgid "Speak Now..."
737+#~ msgstr "Danışın..."
738+
739+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
740+#~ msgstr ""
741+#~ "Applikasiyalara sürətli keçid üçün paneli açmaq üçün sol küncdən çəkin"
742+
743+#~ msgid "Power off"
744+#~ msgstr "Söndür"
745+
746+#~ msgid "All"
747+#~ msgstr "Hamısı"
748+
749+#~ msgid "Favorites"
750+#~ msgstr "Seçilmişlər"
751+
752+#~ msgid "Done"
753+#~ msgstr "Başa çatdı"
754+
755+#~ msgid "Log out"
756+#~ msgstr "Çıxış"
757+
758+#~ msgid "Shut down"
759+#~ msgstr "Sistemi Söndür"
760+
761+#~ msgid "Reboot"
762+#~ msgstr "Yenidən yüklə"
763+
764+#~ msgid "Try swiping from the top edge to access the indicators"
765+#~ msgstr "Göstəriciləri görmәk üçün yuxarı küncdən sürüşdürün"
766+
767+#~ msgid "Skip intro"
768+#~ msgstr "Tәqdimatı keç"
769+
770+#~ msgid "Try swiping from the right edge to unlock the phone"
771+#~ msgstr "Kilidi açmaq üçün sağ küncdən sürüşdürün"
772+
773+#~ msgid "Swipe up again to close the settings screen"
774+#~ msgstr "Nizamlamalar ekranını bağlamaq üçün yenidən yuxarı sürüşdürün"
775+
776+#~ msgid ""
777+#~ "You have now mastered the edge gestures and can start using the "
778+#~ "phone<br><br>Tap on the screen to start"
779+#~ msgstr ""
780+#~ "Siz künc hәrәkәtlәrini öyrәndiniz və telefonu istifadə etməyə başlaya "
781+#~ "bilərsiniz.<br><br>Başlamaq üçün ekrana toxunun"
782+
783+#~ msgid "Settings"
784+#~ msgstr "Tənzimləmələr"
785+
786+#~ msgid "Type or say a command"
787+#~ msgstr "Bir әmr söyləyin və ya yazın"
po/be.po+111−29
@@ -8,16 +8,16 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-09-11 11:51+0000\n"
11+"PO-Revision-Date: 2015-09-24 14:32+0000\n"
12−"Last-Translator: Arsień Šachalevič <semen.shah@gmail.com>\n"
12+"Last-Translator: Siamion Šachalevič <semen.shah@gmail.com>\n"
13"Language-Team: Belarusian <be@li.org>\n"
13"Language-Team: Belarusian <be@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%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: 2015-09-12 05:42+0000\n"
19+"X-Launchpad-Export-Date: 2015-09-25 05:51+0000\n"
20−"X-Generator: Launchpad (build 17720)\n"
20+"X-Generator: Launchpad (build 17754)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:112
22#: plugins/LightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -30,7 +30,7 @@ msgstr "Замацаваць кнопку"
30
30
31#: plugins/Unity/Launcher/launcheritem.cpp:52
31#: plugins/Unity/Launcher/launcheritem.cpp:52
32msgid "Quit"
32msgid "Quit"
33−msgstr ""
33+msgstr "Выйсці"
34
34
35#: plugins/Unity/Launcher/launcheritem.cpp:106
35#: plugins/Unity/Launcher/launcheritem.cpp:106
36msgid "Unpin shortcut"
36msgid "Unpin shortcut"
@@ -42,14 +42,14 @@ msgstr "Адмацаваць кнопку"
42#. en_US example: "Yesterday\u2003%l:%M %p" --> "Yesterday 1:00 PM"
42#. en_US example: "Yesterday\u2003%l:%M %p" --> "Yesterday 1:00 PM"
43#: plugins/Utils/relativetimeformatter.cpp:157
43#: plugins/Utils/relativetimeformatter.cpp:157
44msgid "Yesterday %l:%M %p"
44msgid "Yesterday %l:%M %p"
45−msgstr ""
45+msgstr "Учора a %H:%M"
46
46
47#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
47#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
48#. This format string is used for showing, on a 12-hour clock, times that happened today.
48#. This format string is used for showing, on a 12-hour clock, times that happened today.
49#. en_US example: "%l:%M %p" --> "1:00 PM"
49#. en_US example: "%l:%M %p" --> "1:00 PM"
50#: plugins/Utils/relativetimeformatter.cpp:164
50#: plugins/Utils/relativetimeformatter.cpp:164
51msgid "%l:%M %p"
51msgid "%l:%M %p"
52−msgstr ""
52+msgstr "%H:%M"
53
53
54#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
54#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
55#. This format string is used for showing, on a 12-hour clock, events/appointments that happen tomorrow.
55#. This format string is used for showing, on a 12-hour clock, events/appointments that happen tomorrow.
@@ -57,7 +57,7 @@ msgstr ""
57#. en_US example: "Tomorrow\u2003%l:%M %p" --> "Tomorrow 1:00 PM"
57#. en_US example: "Tomorrow\u2003%l:%M %p" --> "Tomorrow 1:00 PM"
58#: plugins/Utils/relativetimeformatter.cpp:172
58#: plugins/Utils/relativetimeformatter.cpp:172
59msgid "Tomorrow %l:%M %p"
59msgid "Tomorrow %l:%M %p"
60−msgstr ""
60+msgstr "Заўтра a %H:%M"
61
61
62#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
62#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
63#. This format string is used for showing, on a 12-hour clock, times that happened in the last week.
63#. This format string is used for showing, on a 12-hour clock, times that happened in the last week.
@@ -65,7 +65,7 @@ msgstr ""
65#. en_US example: "%a\u2003%l:%M %p" --> "Fri 1:00 PM"
65#. en_US example: "%a\u2003%l:%M %p" --> "Fri 1:00 PM"
66#: plugins/Utils/relativetimeformatter.cpp:181
66#: plugins/Utils/relativetimeformatter.cpp:181
67msgid "%a %l:%M %p"
67msgid "%a %l:%M %p"
68−msgstr ""
68+msgstr "%a a %H:%M"
69
69
70#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
70#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
71#. This format string is used for showing, on a 12-hour clock, times that happened before a week from now.
71#. This format string is used for showing, on a 12-hour clock, times that happened before a week from now.
@@ -74,7 +74,7 @@ msgstr ""
74#. en_GB example: "%a %b %d\u2003%l:%M %p" --> "Fri 31 Oct 1:00 PM"
74#. en_GB example: "%a %b %d\u2003%l:%M %p" --> "Fri 31 Oct 1:00 PM"
75#: plugins/Utils/relativetimeformatter.cpp:190
75#: plugins/Utils/relativetimeformatter.cpp:190
76msgid "%a %d %b %l:%M %p"
76msgid "%a %d %b %l:%M %p"
77−msgstr ""
77+msgstr "%a, %b %d a %H:%M"
78
78
79#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
79#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
80#. This format string is used for showing, on a 24-hour clock, times that happen yesterday.
80#. This format string is used for showing, on a 24-hour clock, times that happen yesterday.
@@ -82,14 +82,14 @@ msgstr ""
82#. en_US example: "Yesterday\u2003%l:%M %p" --> "Yesterday 13:00"
82#. en_US example: "Yesterday\u2003%l:%M %p" --> "Yesterday 13:00"
83#: plugins/Utils/relativetimeformatter.cpp:201
83#: plugins/Utils/relativetimeformatter.cpp:201
84msgid "Yesterday %H:%M"
84msgid "Yesterday %H:%M"
85−msgstr ""
85+msgstr "Учора а %H:%M"
86
86
87#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
87#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
88#. This format string is used for showing, on a 24-hour clock, times that happened today.
88#. This format string is used for showing, on a 24-hour clock, times that happened today.
89#. en_US example: "%H:%M" --> "13:00"
89#. en_US example: "%H:%M" --> "13:00"
90#: plugins/Utils/relativetimeformatter.cpp:208
90#: plugins/Utils/relativetimeformatter.cpp:208
91msgid "%H:%M"
91msgid "%H:%M"
92−msgstr ""
92+msgstr "%H:%M"
93
93
94#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
94#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
95#. This format string is used for showing, on a 24-hour clock, events/appointments that happen tomorrow.
95#. This format string is used for showing, on a 24-hour clock, events/appointments that happen tomorrow.
@@ -97,7 +97,7 @@ msgstr ""
97#. en_US example: "Tomorrow\u2003%l:%M %p" --> "Tomorrow 13:00"
97#. en_US example: "Tomorrow\u2003%l:%M %p" --> "Tomorrow 13:00"
98#: plugins/Utils/relativetimeformatter.cpp:216
98#: plugins/Utils/relativetimeformatter.cpp:216
99msgid "Tomorrow %H:%M"
99msgid "Tomorrow %H:%M"
100−msgstr ""
100+msgstr "Заўтра a %H:%M"
101
101
102#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
102#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
103#. This format string is used for showing, on a 24-hour clock, times that happened in the last week.
103#. This format string is used for showing, on a 24-hour clock, times that happened in the last week.
@@ -105,7 +105,7 @@ msgstr ""
105#. en_US example: "%a\u2003%H:%M" --> "Fri 13:00"
105#. en_US example: "%a\u2003%H:%M" --> "Fri 13:00"
106#: plugins/Utils/relativetimeformatter.cpp:225
106#: plugins/Utils/relativetimeformatter.cpp:225
107msgid "%a %H:%M"
107msgid "%a %H:%M"
108−msgstr ""
108+msgstr "%a а %H:%M"
109
109
110#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
110#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
111#. This format string is used for showing, on a 24-hour clock, times that happened before a week from now.
111#. This format string is used for showing, on a 24-hour clock, times that happened before a week from now.
@@ -114,7 +114,7 @@ msgstr ""
114#. en_GB example: "%a %b %d\u2003%H:%M" --> "Fri 31 Oct 13:00"
114#. en_GB example: "%a %b %d\u2003%H:%M" --> "Fri 31 Oct 13:00"
115#: plugins/Utils/relativetimeformatter.cpp:234
115#: plugins/Utils/relativetimeformatter.cpp:234
116msgid "%a %d %b %H:%M"
116msgid "%a %d %b %H:%M"
117−msgstr ""
117+msgstr "%a, %b %d а %H:%M"
118
118
119#: qml/Components/DelayedLockscreen.qml:49
119#: qml/Components/DelayedLockscreen.qml:49
120msgid "Device Locked"
120msgid "Device Locked"
@@ -146,7 +146,7 @@ msgstr "Выйсці"
146
146
147#: qml/Components/Dialogs.qml:113
147#: qml/Components/Dialogs.qml:113
148msgid "Are you sure you want to log out?"
148msgid "Are you sure you want to log out?"
149−msgstr "Вы ўпэўнены, што хочаце выйсці?"
149+msgstr "Вы ўпэўненыя, што хочаце выйсці?"
150
150
151#: qml/Components/Dialogs.qml:115
151#: qml/Components/Dialogs.qml:115
152msgctxt "Button: Lock the system"
152msgctxt "Button: Lock the system"
@@ -380,7 +380,7 @@ msgstr "Даруйце, няслушны пароль"
380#: qml/Greeter/NarrowView.qml:121
380#: qml/Greeter/NarrowView.qml:121
381msgctxt "passphrase"
381msgctxt "passphrase"
382msgid "Please re-enter"
382msgid "Please re-enter"
383−msgstr ""
383+msgstr "Калі ласка, паўтарыце ўвод"
384
384
385#: qml/Greeter/NarrowView.qml:122
385#: qml/Greeter/NarrowView.qml:122
386msgid "Sorry, incorrect passcode"
386msgid "Sorry, incorrect passcode"
@@ -406,32 +406,35 @@ msgstr "Нішто не грае"
406#, qt-format
406#, qt-format
407msgid "%1 hour"
407msgid "%1 hour"
408msgid_plural "%1 hours"
408msgid_plural "%1 hours"
409−msgstr[0] ""
409+msgstr[0] "%1 гадзіна"
410−msgstr[1] ""
410+msgstr[1] "%1 гадзіны"
411+msgstr[2] "%1 гадзінаў"
411
412
412#: qml/Panel/Indicators/MenuItemFactory.qml:807
413#: qml/Panel/Indicators/MenuItemFactory.qml:807
413#, qt-format
414#, qt-format
414msgid "%1 minute"
415msgid "%1 minute"
415msgid_plural "%1 minutes"
416msgid_plural "%1 minutes"
416−msgstr[0] ""
417+msgstr[0] "%1 хвіліна"
417−msgstr[1] ""
418+msgstr[1] "%1 хвіліны"
419+msgstr[2] "%1 хвілінаў"
418
420
419#: qml/Panel/Indicators/MenuItemFactory.qml:812
421#: qml/Panel/Indicators/MenuItemFactory.qml:812
420#, qt-format
422#, qt-format
421msgid "%1 second"
423msgid "%1 second"
422msgid_plural "%1 seconds"
424msgid_plural "%1 seconds"
423−msgstr[0] ""
425+msgstr[0] "%1 секунда"
424−msgstr[1] ""
426+msgstr[1] "%1 секунды"
427+msgstr[2] "%1 секундаў"
425
428
426#: qml/Panel/Indicators/MenuItemFactory.qml:815
429#: qml/Panel/Indicators/MenuItemFactory.qml:815
427msgid "0 seconds"
430msgid "0 seconds"
428−msgstr ""
431+msgstr "0 секунд"
429
432
430#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
433#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
431#: qml/Panel/Indicators/MenuItemFactory.qml:817
434#: qml/Panel/Indicators/MenuItemFactory.qml:817
432#, qt-format
435#, qt-format
433msgid "%1 remaining"
436msgid "%1 remaining"
434−msgstr ""
437+msgstr "%1 засталося"
435
438
436#: qml/Panel/Indicators/MenuItemFactory.qml:823
439#: qml/Panel/Indicators/MenuItemFactory.qml:823
437msgid "In queue…"
440msgid "In queue…"
@@ -464,7 +467,7 @@ msgstr "Адказаць"
464
467
465#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
468#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
466msgid "Call back"
469msgid "Call back"
467−msgstr ""
470+msgstr "Зваротны выклік"
468
471
469#: qml/Panel/Indicators/ModemInfoItem.qml:105
472#: qml/Panel/Indicators/ModemInfoItem.qml:105
470msgid "Unlock SIM"
473msgid "Unlock SIM"
@@ -720,8 +723,87 @@ msgstr "〈 %1"
720msgid "%1 〉"
723msgid "%1 〉"
721msgstr "%1 〉"
724msgstr "%1 〉"
722
725
726+#~ msgid "Reboot"
727+#~ msgstr "Перазагрузіць"
728+
729+#~ msgid "Shut down"
730+#~ msgstr "Выключыць"
731+
732+#~ msgid "Top edge"
733+#~ msgstr "Верхні край"
734+
735+#~ msgid "Right edge"
736+#~ msgstr "Правы край"
737+
738+#~ msgid "Left edge"
739+#~ msgstr "Левы край"
740+
741+#~ msgid "Search"
742+#~ msgstr "Пошук"
743+
744+#~ msgid "Confirm"
745+#~ msgstr "Пацвердзіць"
746+
747+#~ msgid "Try swiping from the right edge to unlock the phone"
748+#~ msgstr "Правядзіце пальцам з правага краю, каб разблакаваць тэлефон"
749+
750+#~ msgid "Loading. Please Wait..."
751+#~ msgstr "Загрузка. Чакайце..."
752+
753+#~ msgid "Speaking..."
754+#~ msgstr "Кажа..."
755+
756+#~ msgid "Speak Now..."
757+#~ msgstr "Кажыце..."
758+
759+#~ msgid "Type or say a command"
760+#~ msgstr "Напішыце або вымавіце каманду"
761+
762+#~ msgid "Log out"
763+#~ msgstr "Выйсці"
764+
765+#~ msgid "Power"
766+#~ msgstr "Сілкаванне"
767+
768+#~ msgid "Power off"
769+#~ msgstr "Выключыць"
770+
771+#~ msgid "Swipe up again to close the settings screen"
772+#~ msgstr "Правядзіце пальцам яшчэ раз, каб зачыніць акно параметраў"
773+
774+#~ msgid "Well done"
775+#~ msgstr "Добра"
776+
777+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
778+#~ msgstr ""
779+#~ "Правядзіце пальцам ад левага краю, каб адкрыць панэль запуску для паскарэння "
780+#~ "доступу да праграм"
781+
782+#~ msgid "Skip intro"
783+#~ msgstr "Прапусціць уводзіны"
784+
785+#~ msgid "Store"
786+#~ msgstr "Крама"
787+
788+#~ msgid "Restart"
789+#~ msgstr "Перазапусціць"
790+
791+#~ msgid "Close"
792+#~ msgstr "Закрыць"
793+
794+#~ msgid "Try swiping from the top edge to access the indicators"
795+#~ msgstr ""
796+#~ "Паспрабуйце правесці пальцам ад верхняга краю для доступу да індыкатараў"
797+
798+#~ msgid "Settings"
799+#~ msgstr "Наладкі"
800+
801+#~ msgid ""
802+#~ "You have now mastered the edge gestures and can start using the "
803+#~ "phone<br><br>Tap on the screen to start"
804+#~ msgstr ""
805+#~ "Вы толькі што асвоілі асноўная жэсты і можаце пачаць выкарыстоўваць "
806+#~ "тэлефон<br><br>Дакраніцеся да экрана, каб пачаць"
807+
723#~ msgid "Please re-enter"
808#~ msgid "Please re-enter"
724#~ msgstr "Калі ласка, паўтарыце ўвод"
809#~ msgstr "Калі ласка, паўтарыце ўвод"
725−
726−#~ msgid "Click here to finish."
727−#~ msgstr "Націсніце тут для завяршэння."
po/bg.po+58−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -703,3 +703,58 @@ msgstr ""
703#, qt-format
703#, qt-format
704msgid "%1 〉"
704msgid "%1 〉"
705msgstr ""
705msgstr ""
706+
707+#~ msgid "Confirm"
708+#~ msgstr "Потвърди"
709+
710+#~ msgid "Search"
711+#~ msgstr "Търсене"
712+
713+#~ msgid "Top edge"
714+#~ msgstr "Горен край"
715+
716+#~ msgid "Close"
717+#~ msgstr "Затвори"
718+
719+#~ msgid "Left edge"
720+#~ msgstr "Ляв край"
721+
722+#~ msgid "Right edge"
723+#~ msgstr "Десен край"
724+
725+#~ msgid "Type or say a command"
726+#~ msgstr "Въведете или кажете команда"
727+
728+#~ msgid "Speaking..."
729+#~ msgstr "Говорете..."
730+
731+#~ msgid "Speak Now..."
732+#~ msgstr "Говорете сега..."
733+
734+#~ msgid "Well done"
735+#~ msgstr "Великолепно"
736+
737+#~ msgid "Skip intro"
738+#~ msgstr "Пропусни интрото"
739+
740+#~ msgid "Loading. Please Wait..."
741+#~ msgstr "Зарежда се. Моля, почакайте..."
742+
743+#~ msgid "Try swiping from the top edge to access the indicators"
744+#~ msgstr ""
745+#~ "Опитайте се да приплъзнете пръста си от горния край към долния, за да "
746+#~ "получите достъп до индикаторите"
747+
748+#~ msgid "Swipe up again to close the settings screen"
749+#~ msgstr ""
750+#~ "Отново приплъзнете пръста си нагоре за да затворите екрана с настройките"
751+
752+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
753+#~ msgstr ""
754+#~ "Приплъзнете пръста си от левия край към десния, за да отворите стартера за "
755+#~ "бърз достъп до приложенията"
756+
757+#~ msgid "Try swiping from the right edge to unlock the phone"
758+#~ msgstr ""
759+#~ "Опитайте се да приплъзнете пръста си от десния край към левия, за да "
760+#~ "отключите телефона"
po/br.po+100−8
@@ -6,18 +6,17 @@
6msgid ""
6msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9−"Report-Msgid-Bugs-To: \n"
9+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+0000\n"
11+"PO-Revision-Date: 2015-08-25 14:12+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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20−"Language: br\n"
21
20
22#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
23msgid "Password: "
22msgid "Password: "
@@ -721,8 +720,101 @@ msgstr "〈 %1"
721msgid "%1 〉"
720msgid "%1 〉"
722msgstr "%1 〉"
721msgstr "%1 〉"
723
722
723+#~ msgid "Close"
724+#~ msgstr "Serriñ"
725+
726+#~ msgid "Top edge"
727+#~ msgstr "Bord uhelañ"
728+
729+#~ msgid "Left edge"
730+#~ msgstr "Bord kleiz"
731+
732+#~ msgid "Skip intro"
733+#~ msgstr "Tremen hep sellet ouzh an digoradur"
734+
735+#~ msgid "Right edge"
736+#~ msgstr "Bord dehoù"
737+
738+#~ msgid ""
739+#~ "You have now mastered the edge gestures and can start using the "
740+#~ "phone<br><br>Tap on the screen to start"
741+#~ msgstr ""
742+#~ "Mestroniañ a rit ar jestroù ha gallout a rit kregiñ da implijout ar "
743+#~ "pellgomzer<br><br>Touchit d'ar skramm evit kregiñ ganti"
744+
745+#~ msgid "Loading. Please Wait..."
746+#~ msgstr "O kargañ. Gortozit, mar plij..."
747+
748+#~ msgid "Speaking..."
749+#~ msgstr "O komz..."
750+
751+#~ msgid "Speak Now..."
752+#~ msgstr "Komzit bremañ..."
753+
754+#~ msgid "Confirm"
755+#~ msgstr "Kadarnaat"
756+
757+#~ msgid "Search"
758+#~ msgstr "Klask"
759+
760+#~ msgid "Try swiping from the top edge to access the indicators"
761+#~ msgstr ""
762+#~ "Lakait ho piz da riklañ adalek ar bord uhelañ da lakaat ar merkerioù war wel."
763+
764+#~ msgid "Swipe up again to close the settings screen"
765+#~ msgstr ""
766+#~ "Lakait ho piz da riklañ war-du ar bord uhelañ da serriñ skramm an arventennoù"
767+
768+#~ msgid "Try swiping from the right edge to unlock the phone"
769+#~ msgstr ""
770+#~ "Lakait ho piz da riklañ adalek ar bord dehoù da zibrennañ ar pellgomzer."
771+
772+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
773+#~ msgstr ""
774+#~ "Lakait ho piz da riklañ adalek ar bord kleiz da ziskouez al lañser arloadoù "
775+#~ "prim."
776+
777+#~ msgid "Well done"
778+#~ msgstr "Gourc'hemennoù !"
779+
780+#~ msgid "Type or say a command"
781+#~ msgstr "Skrivit pe lavarit un urzhiad"
782+
783+#~ msgid "Store"
784+#~ msgstr "Enrollañ"
785+
786+#~ msgid "Power off"
787+#~ msgstr "Lazhañ"
788+
789+#~ msgid "Done"
790+#~ msgstr "Graet eo"
791+
792+#~ msgid "All"
793+#~ msgstr "An holl anezho"
794+
795+#~ msgid "Favorites"
796+#~ msgstr "Gwellañ deuet"
797+
798+#~ msgid "Power"
799+#~ msgstr "Tredan"
800+
801+#~ msgid "Log out"
802+#~ msgstr "Digevreañ"
803+
804+#~ msgid "Reboot"
805+#~ msgstr "Adloc'hañ"
806+
807+#~ msgid "Shut down"
808+#~ msgstr "Lazhañ ar benveg"
809+
810+#~ msgid "Settings"
811+#~ msgstr "Arventennoù"
812+
813+#~ msgid "Restart"
814+#~ msgstr "Adloc'hañ"
815+
816+#~ msgid "Manage Scopes"
817+#~ msgstr "Merañ ar c'hefluskerioù enklask"
818+
724#~ msgid "Please re-enter"
819#~ msgid "Please re-enter"
725#~ msgstr "Adverkañ, mar plij"
820#~ msgstr "Adverkañ, mar plij"
726−
727−#~ msgid "Click here to finish."
728−#~ msgstr "Klikit amañ evit echuiñ."
po/bs.po+15−3
@@ -8,7 +8,7 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+0000\n"
11+"PO-Revision-Date: 2014-01-16 22:33+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Bosnian <bs@li.org>\n"
13"Language-Team: Bosnian <bs@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n%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: 2015-09-12 05:42+0000\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20−"X-Generator: Launchpad (build 17720)\n"
20+"X-Generator: Launchpad (build 17746)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:112
22#: plugins/LightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -718,5 +718,17 @@ msgstr "〈 %1"
718msgid "%1 〉"
718msgid "%1 〉"
719msgstr "%1 〉"
719msgstr "%1 〉"
720
720
721+#~ msgid "Top edge"
722+#~ msgstr "Gornja ivica"
723+
724+#~ msgid "Close"
725+#~ msgstr "Zatvori"
726+
727+#~ msgid "Skip intro"
728+#~ msgstr "Preskoči uvod"
729+
730+#~ msgid "Right edge"
731+#~ msgstr "Desna ivica"
732+
721#~ msgid "Please re-enter"
733#~ msgid "Please re-enter"
722#~ msgstr "Molimo ponovo unesite"
734#~ msgstr "Molimo ponovo unesite"
po/ca.po+99−5
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -723,8 +723,102 @@ msgstr "〈 %1"
723msgid "%1 〉"
723msgid "%1 〉"
724msgstr "%1 〉"
724msgstr "%1 〉"
725
725
726+#~ msgid "Confirm"
727+#~ msgstr "Confirma"
728+
729+#~ msgid "Type or say a command"
730+#~ msgstr "Escriviu o pronuncieu una ordre"
731+
732+#~ msgid "Loading. Please Wait..."
733+#~ msgstr "S'està carregant. Espereu-vos un moment..."
734+
735+#~ msgid "Speak Now..."
736+#~ msgstr "Parleu..."
737+
738+#~ msgid "Speaking..."
739+#~ msgstr "S'està parlant..."
740+
741+#~ msgid "Search"
742+#~ msgstr "Cerca"
743+
744+#~ msgid "Right edge"
745+#~ msgstr "Vora dreta"
746+
747+#~ msgid "Top edge"
748+#~ msgstr "Vora superior"
749+
750+#~ msgid "Well done"
751+#~ msgstr "Enhorabona!"
752+
753+#~ msgid "Left edge"
754+#~ msgstr "Vora esquerra"
755+
756+#~ msgid "Try swiping from the top edge to access the indicators"
757+#~ msgstr ""
758+#~ "Proveu de lliscar el dit des de la vora superior per accedir als indicadors"
759+
760+#~ msgid "Close"
761+#~ msgstr "Tanca"
762+
763+#~ msgid "Swipe up again to close the settings screen"
764+#~ msgstr ""
765+#~ "Llisqueu el dit cap amunt una altra vegada per tancar la pantalla de "
766+#~ "configuració"
767+
768+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
769+#~ msgstr ""
770+#~ "Llisqueu el dit des de la vora esquerra per mostrar el llançador i accedir "
771+#~ "ràpidament a les aplicacions"
772+
773+#~ msgid "Skip intro"
774+#~ msgstr "Omet la introducció"
775+
776+#~ msgid "Try swiping from the right edge to unlock the phone"
777+#~ msgstr ""
778+#~ "Proveu de lliscar el dit des de la vora dreta per desblocar el telèfon"
779+
780+#~ msgid ""
781+#~ "You have now mastered the edge gestures and can start using the "
782+#~ "phone<br><br>Tap on the screen to start"
783+#~ msgstr ""
784+#~ "Ja heu après com utilitzar els gestos de les vores per fer servir el "
785+#~ "telèfon<br><br>Feu un toc a la pantalla per començar"
786+
787+#~ msgid "Store"
788+#~ msgstr "Botiga"
789+
790+#~ msgid "Done"
791+#~ msgstr "Fet"
792+
793+#~ msgid "Favorites"
794+#~ msgstr "Preferides"
795+
796+#~ msgid "All"
797+#~ msgstr "Totes"
798+
799+#~ msgid "Log out"
800+#~ msgstr "Surt"
801+
802+#~ msgid "Reboot"
803+#~ msgstr "Reinicia"
804+
805+#~ msgid "Settings"
806+#~ msgstr "Paràmetres"
807+
808+#~ msgid "Power"
809+#~ msgstr "Energia"
810+
811+#~ msgid "Power off"
812+#~ msgstr "Apaga"
813+
814+#~ msgid "Shut down"
815+#~ msgstr "Apaga"
816+
817+#~ msgid "Restart"
818+#~ msgstr "Reinicia"
819+
726#~ msgid "Please re-enter"
820#~ msgid "Please re-enter"
727#~ msgstr "Torneu-ho a introduir"
821#~ msgstr "Torneu-ho a introduir"
728
822
729−#~ msgid "Click here to finish."
823+#~ msgid "Manage Scopes"
730−#~ msgstr "Feu un toc aquí per finalitzar"
824+#~ msgstr "Gestioneu les lents"
po/ca@valencia.po+100−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:43+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -723,5 +723,102 @@ msgstr "〈 %1"
723msgid "%1 〉"
723msgid "%1 〉"
724msgstr "%1 〉"
724msgstr "%1 〉"
725
725
726+#~ msgid "Log out"
727+#~ msgstr "Ix"
728+
729+#~ msgid "Shut down"
730+#~ msgstr "Apaga"
731+
732+#~ msgid "Reboot"
733+#~ msgstr "Reinicia"
734+
735+#~ msgid "Power"
736+#~ msgstr "Energia"
737+
738+#~ msgid "Power off"
739+#~ msgstr "Apaga"
740+
741+#~ msgid "Restart"
742+#~ msgstr "Reinicia"
743+
744+#~ msgid "Skip intro"
745+#~ msgstr "Omet la introducció"
746+
747+#~ msgid "Right edge"
748+#~ msgstr "Vora dreta"
749+
750+#~ msgid "Try swiping from the right edge to unlock the phone"
751+#~ msgstr ""
752+#~ "Proveu de lliscar el dit des de la vora dreta per desblocar el telèfon"
753+
754+#~ msgid "Top edge"
755+#~ msgstr "Vora superior"
756+
757+#~ msgid "Try swiping from the top edge to access the indicators"
758+#~ msgstr ""
759+#~ "Proveu de lliscar el dit des de la vora superior per accedir als indicadors"
760+
761+#~ msgid "Close"
762+#~ msgstr "Tanca"
763+
764+#~ msgid "Swipe up again to close the settings screen"
765+#~ msgstr ""
766+#~ "Llisqueu el dit cap amunt una altra vegada per tancar la pantalla de "
767+#~ "configuració"
768+
769+#~ msgid "Left edge"
770+#~ msgstr "Vora esquerra"
771+
772+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
773+#~ msgstr ""
774+#~ "Llisqueu el dit des de la vora esquerra per mostrar el llançador i accedir "
775+#~ "ràpidament a les aplicacions"
776+
777+#~ msgid "Well done"
778+#~ msgstr "Enhorabona!"
779+
780+#~ msgid "Search"
781+#~ msgstr "Cerca"
782+
783+#~ msgid "Settings"
784+#~ msgstr "Paràmetres"
785+
786+#~ msgid "Manage Scopes"
787+#~ msgstr "Gestioneu les lents"
788+
789+#~ msgid "Done"
790+#~ msgstr "Fet"
791+
792+#~ msgid "Store"
793+#~ msgstr "Botiga"
794+
795+#~ msgid "Favorites"
796+#~ msgstr "Preferides"
797+
798+#~ msgid "All"
799+#~ msgstr "Totes"
800+
801+#~ msgid "Confirm"
802+#~ msgstr "Confirma"
803+
804+#~ msgid "Loading. Please Wait..."
805+#~ msgstr "S'està carregant. Espereu-vos un moment..."
806+
807+#~ msgid "Speak Now..."
808+#~ msgstr "Parleu..."
809+
810+#~ msgid "Speaking..."
811+#~ msgstr "S'està parlant..."
812+
726#~ msgid "Please re-enter"
813#~ msgid "Please re-enter"
727#~ msgstr "Torneu-ho a introduir"
814#~ msgstr "Torneu-ho a introduir"
815+
816+#~ msgid "Type or say a command"
817+#~ msgstr "Escriviu o pronuncieu una ordre"
818+
819+#~ msgid ""
820+#~ "You have now mastered the edge gestures and can start using the "
821+#~ "phone<br><br>Tap on the screen to start"
822+#~ msgstr ""
823+#~ "Ja heu après com utilitzar els gestos de les vores per fer servir el "
824+#~ "telèfon<br><br>Feu un toc a la pantalla per començar"
po/ce.po+3−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
po/ckb.po+51−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:43+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -701,3 +701,51 @@ msgstr ""
701#, qt-format
701#, qt-format
702msgid "%1 〉"
702msgid "%1 〉"
703msgstr ""
703msgstr ""
704+
705+#~ msgid "Top edge"
706+#~ msgstr "لێواری سەرەوە"
707+
708+#~ msgid "Try swiping from the top edge to access the indicators"
709+#~ msgstr "لێواری سەرەوە ڕابکێشە بۆ گەیشتن بە نیشاندەرەکان"
710+
711+#~ msgid "Close"
712+#~ msgstr "داخستن"
713+
714+#~ msgid "Swipe up again to close the settings screen"
715+#~ msgstr "ڕایکێشەوە سەرەوە جارێکی تر بۆ داخستنی پەردەی ڕێکخستنەکان"
716+
717+#~ msgid "Left edge"
718+#~ msgstr "لێواری چەپ"
719+
720+#~ msgid "Try swiping from the right edge to unlock the phone"
721+#~ msgstr "لێواری ڕاست ڕابکێشە بۆ کردنەوەی مۆبایلەکە"
722+
723+#~ msgid "Right edge"
724+#~ msgstr "لێواری ڕاست"
725+
726+#~ msgid "Speaking..."
727+#~ msgstr "قسە دەکات..."
728+
729+#~ msgid "Speak Now..."
730+#~ msgstr "ئێستا قسە بکە"
731+
732+#~ msgid "Confirm"
733+#~ msgstr "پشتڕاستکردنەوە"
734+
735+#~ msgid "Search"
736+#~ msgstr "گەڕان"
737+
738+#~ msgid "Skip intro"
739+#~ msgstr "پێشەکیی بپەڕێنە"
740+
741+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
742+#~ msgstr "لە چەپەوە بچۆرەوە سەر دەستپێک بۆئەوەی بتوانی هەموو ئەپەکان ببینی"
743+
744+#~ msgid "Well done"
745+#~ msgstr "دەستخۆش"
746+
747+#~ msgid "Type or say a command"
748+#~ msgstr "فەرمانێک بێژە یان بنووسە"
749+
750+#~ msgid "Loading. Please Wait..."
751+#~ msgstr "لە بارکردندایە. تکایە چاوەڕێ بکە..."
po/cs.po+51−6
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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) ? 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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20"Language: cs\n"
20"Language: cs\n"
21
21
22#: plugins/LightDM/Greeter.cpp:112
22#: plugins/LightDM/Greeter.cpp:112
@@ -722,8 +722,53 @@ msgstr "〈 %1"
722msgid "%1 〉"
722msgid "%1 〉"
723msgstr "%1 〉"
723msgstr "%1 〉"
724
724
725+#~ msgid "Try swiping from the right edge to unlock the phone"
726+#~ msgstr "Pokuste se odemknout telefon potažením prstu z pravého okraje."
727+
728+#~ msgid "Skip intro"
729+#~ msgstr "Přeskočit intro"
730+
731+#~ msgid "Right edge"
732+#~ msgstr "Pravý okraj"
733+
734+#~ msgid "Top edge"
735+#~ msgstr "Horní okraj"
736+
737+#~ msgid "Try swiping from the top edge to access the indicators"
738+#~ msgstr "Pokuste se zpřístupnit indikátory potažením prstu z horního okraje"
739+
740+#~ msgid "Close"
741+#~ msgstr "Uzavřít"
742+
743+#~ msgid "Left edge"
744+#~ msgstr "Levý okraj"
745+
746+#~ msgid "Loading. Please Wait..."
747+#~ msgstr "Načítám. Čekejte prosím..."
748+
749+#~ msgid "Speak Now..."
750+#~ msgstr "Mluvte..."
751+
752+#~ msgid "Confirm"
753+#~ msgstr "Potvrdit"
754+
755+#~ msgid "Search"
756+#~ msgstr "Hledat"
757+
758+#~ msgid "Speaking..."
759+#~ msgstr "Mluvte..."
760+
761+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
762+#~ msgstr "Pro rychlý přístup k aplikacím potáhněte prst z levého okraje."
763+
764+#~ msgid "Well done"
765+#~ msgstr "Výborně"
766+
767+#~ msgid "Type or say a command"
768+#~ msgstr "Napište nebo řekněte příkaz"
769+
770+#~ msgid "Swipe up again to close the settings screen"
771+#~ msgstr "Přetažením nahoru dojde k uzavření obrazovky nastavení"
772+
725#~ msgid "Please re-enter"
773#~ msgid "Please re-enter"
726#~ msgstr "Vložte znovu"
774#~ msgstr "Vložte znovu"
727−
728−#~ msgid "Click here to finish."
729−#~ msgstr "Klikněte zde pro dokončení."
po/cy.po+3−6
@@ -8,7 +8,7 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-07-31 12:34+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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=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: 2015-09-12 05:43+0000\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20−"X-Generator: Launchpad (build 17720)\n"
20+"X-Generator: Launchpad (build 17746)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:112
22#: plugins/LightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -725,6 +725,3 @@ msgstr "〈 %1"
725#, qt-format
725#, qt-format
726msgid "%1 〉"
726msgid "%1 〉"
727msgstr "%1 〉"
727msgstr "%1 〉"
728−
729−#~ msgid "Click here to finish."
730−#~ msgstr "Cliciwch yma i orffen."
po/da.po+58−6
@@ -9,15 +9,15 @@ msgstr ""
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: 2015-08-25 14:53+0200\n"
11"POT-Creation-Date: 2015-08-25 14:53+0200\n"
12−"PO-Revision-Date: 2015-05-14 09:20+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"
15"MIME-Version: 1.0\n"
15"MIME-Version: 1.0\n"
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: 2015-09-12 05:42+0000\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20−"X-Generator: Launchpad (build 17720)\n"
20+"X-Generator: Launchpad (build 17746)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:112
22#: plugins/LightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -722,8 +722,60 @@ msgstr "〈 %1"
722msgid "%1 〉"
722msgid "%1 〉"
723msgstr "%1 〉"
723msgstr "%1 〉"
724
724
725+#~ msgid "Close"
726+#~ msgstr "Luk"
727+
728+#~ msgid "Left edge"
729+#~ msgstr "Venstre kant"
730+
731+#~ msgid "Try swiping from the right edge to unlock the phone"
732+#~ msgstr "Prøv at stryge fra højre kant for at låse telefonen op"
733+
734+#~ msgid "Right edge"
735+#~ msgstr "Højre kant"
736+
737+#~ msgid "Speaking..."
738+#~ msgstr "Taler..."
739+
740+#~ msgid "Confirm"
741+#~ msgstr "Bekræft"
742+
743+#~ msgid "Search"
744+#~ msgstr "Søg"
745+
746+#~ msgid "Skip intro"
747+#~ msgstr "Spring intro over"
748+
749+#~ msgid "Top edge"
750+#~ msgstr "Øvre kant"
751+
752+#~ msgid "Try swiping from the top edge to access the indicators"
753+#~ msgstr "Prøv at stryge fra den øvre kant for at tilgå indikatorerne"
754+
755+#~ msgid "Swipe up again to close the settings screen"
756+#~ msgstr "Stryg op igen for at låse indstillingsskærmen"
757+
758+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
759+#~ msgstr "Stryg fra venstre for at vise opstarteren med hurtig adgang til apps"
760+
761+#~ msgid "Well done"
762+#~ msgstr "Godt gjort"
763+
764+#~ msgid "Type or say a command"
765+#~ msgstr "Skriv eller indtal en kommando"
766+
767+#~ msgid "Loading. Please Wait..."
768+#~ msgstr "Indlæser. Vent venligst..."
769+
770+#~ msgid "Speak Now..."
771+#~ msgstr "Tal nu..."
772+
773+#~ msgid ""
774+#~ "You have now mastered the edge gestures and can start using the "
775+#~ "phone<br><br>Tap on the screen to start"
776+#~ msgstr ""
777+#~ "Du mestrer nu kantbevægelserne og kan begynde at bruge telefonen<br><br>Tryk "
778+#~ "på skærmen for at starte"
779+
725#~ msgid "Please re-enter"
780#~ msgid "Please re-enter"
726#~ msgstr "Vær venlig at genindtaste"
781#~ msgstr "Vær venlig at genindtaste"
727−
728−#~ msgid "Click here to finish."
729−#~ msgstr "Tryk her for at afslutte."
po/de.po+98−7
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-06-01 11:33+0000\n"
11+"PO-Revision-Date: 2015-07-24 18:03+0000\n"
12−"Last-Translator: Tobias Bannert <Unknown>\n"
12+"Last-Translator: Torsten Franz <Unknown>\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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -721,8 +721,99 @@ msgstr "〈 %1"
721msgid "%1 〉"
721msgid "%1 〉"
722msgstr "%1 〉"
722msgstr "%1 〉"
723
723
724+#~ msgid "Confirm"
725+#~ msgstr "Bestätigen"
726+
727+#~ msgid "Loading. Please Wait..."
728+#~ msgstr "Wird geladen. Bitte warten …"
729+
730+#~ msgid "Speak Now..."
731+#~ msgstr "Sprechen Sie jetzt …"
732+
733+#~ msgid "Search"
734+#~ msgstr "Suchen"
735+
736+#~ msgid "Close"
737+#~ msgstr "Schließen"
738+
739+#~ msgid "Left edge"
740+#~ msgstr "Linker Rand"
741+
742+#~ msgid "Well done"
743+#~ msgstr "Gut gemacht"
744+
745+#~ msgid "Swipe up again to close the settings screen"
746+#~ msgstr "Wischen Sie erneut nach oben, um das Einstellungsmenü zu schließen"
747+
748+#~ msgid "Skip intro"
749+#~ msgstr "Einführung überspringen"
750+
751+#~ msgid "Type or say a command"
752+#~ msgstr "Befehl eingeben oder sprechen"
753+
754+#~ msgid "Speaking..."
755+#~ msgstr "Sprechen Sie …"
756+
757+#~ msgid ""
758+#~ "You have now mastered the edge gestures and can start using the "
759+#~ "phone<br><br>Tap on the screen to start"
760+#~ msgstr ""
761+#~ "Sie haben nun die Kantengesten erfolgreich erlernt und können das Telefon "
762+#~ "nun nutzen<br><br>Zum Starten auf den Bildschirm tippen"
763+
764+#~ msgid "Top edge"
765+#~ msgstr "Oberer Bildschirmrand"
766+
767+#~ msgid "Try swiping from the top edge to access the indicators"
768+#~ msgstr ""
769+#~ "Vom oberen Bildschirmrand her wischen, um die Statusmeldungen anzuzeigen"
770+
771+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
772+#~ msgstr ""
773+#~ "Wischen Sie von links nach rechts, um die Seitenleiste für den Anwendungs-"
774+#~ "Schnellzugriff aufzurufen"
775+
776+#~ msgid "Try swiping from the right edge to unlock the phone"
777+#~ msgstr "Vom rechten Bildschirmrand her wischen, um das Gerät zu entsperren"
778+
779+#~ msgid "Right edge"
780+#~ msgstr "Rechter Bildschirmrand"
781+
782+#~ msgid "Power off"
783+#~ msgstr "Ausschalten"
784+
785+#~ msgid "All"
786+#~ msgstr "Alle"
787+
788+#~ msgid "Done"
789+#~ msgstr "Erledigt"
790+
791+#~ msgid "Favorites"
792+#~ msgstr "Favoriten"
793+
794+#~ msgid "Store"
795+#~ msgstr "Store"
796+
797+#~ msgid "Log out"
798+#~ msgstr "Abmelden"
799+
800+#~ msgid "Reboot"
801+#~ msgstr "Neustart"
802+
803+#~ msgid "Shut down"
804+#~ msgstr "Herunterfahren"
805+
806+#~ msgid "Power"
807+#~ msgstr "Energie"
808+
809+#~ msgid "Settings"
810+#~ msgstr "Einstellungen"
811+
812+#~ msgid "Restart"
813+#~ msgstr "Neustarten"
814+
815+#~ msgid "Manage Scopes"
816+#~ msgstr "Filter verwalten"
817+
724#~ msgid "Please re-enter"
818#~ msgid "Please re-enter"
725#~ msgstr "Bitte erneut eingeben"
819#~ msgstr "Bitte erneut eingeben"
726−
727−#~ msgid "Click here to finish."
728−#~ msgstr "Zum Abschließen bitte hier klicken."
po/el.po+92−5
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+0000\n"
11+"PO-Revision-Date: 2015-07-05 21:52+0000\n"
12"Last-Translator: Simos Xenitellis <Unknown>\n"
12"Last-Translator: Simos Xenitellis <Unknown>\n"
13"Language-Team: Greek <el@li.org>\n"
13"Language-Team: Greek <el@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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -727,8 +727,95 @@ msgstr "〈 %1"
727msgid "%1 〉"
727msgid "%1 〉"
728msgstr "%1 〉"
728msgstr "%1 〉"
729
729
730+#~ msgid "Confirm"
731+#~ msgstr "Επιβεβαίωση"
732+
733+#~ msgid "Type or say a command"
734+#~ msgstr "Πληκτρολογήστε ή πείτε μια εντολή"
735+
736+#~ msgid "Speak Now..."
737+#~ msgstr "Μιλήστε τώρα..."
738+
739+#~ msgid "Speaking..."
740+#~ msgstr "Ομιλία..."
741+
742+#~ msgid "Search"
743+#~ msgstr "Αναζήτηση"
744+
745+#~ msgid "Try swiping from the top edge to access the indicators"
746+#~ msgstr "Σύρετε από το πάνω άκρο για πρόσβαση στις ρυθμίσεις"
747+
748+#~ msgid "Swipe up again to close the settings screen"
749+#~ msgstr "Σύρετε προς τα επάνω για κλείσιμο των ρυθμίσεων"
750+
751+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
752+#~ msgstr ""
753+#~ "Σύρετε από τα αριστερό άκρο για εμφάνιση του εκκινητή για άμεση πρόσβαση "
754+#~ "στις εφαρμογές"
755+
756+#~ msgid "Well done"
757+#~ msgstr "Συγχαρητήρια"
758+
759+#~ msgid "Close"
760+#~ msgstr "Κλείσιμο"
761+
762+#~ msgid "Left edge"
763+#~ msgstr "Αριστερό άκρο"
764+
765+#~ msgid "Top edge"
766+#~ msgstr "Πάνω άκρο"
767+
768+#~ msgid "Right edge"
769+#~ msgstr "Δεξί άκρο"
770+
771+#~ msgid "Loading. Please Wait..."
772+#~ msgstr "Γίνεται φόρτωση. Παρακαλώ περιμένετε..."
773+
774+#~ msgid "Try swiping from the right edge to unlock the phone"
775+#~ msgstr "Σύρετε από το δεξί άκρο για ξεκλείδωμα του τηλεφώνου"
776+
777+#~ msgid "Skip intro"
778+#~ msgstr "Παράλειψη εισαγωγής"
779+
780+#~ msgid ""
781+#~ "You have now mastered the edge gestures and can start using the "
782+#~ "phone<br><br>Tap on the screen to start"
783+#~ msgstr ""
784+#~ "Πλέον γνωρίζετε τις χειρονομίες από τα άκρα και μπορείτε να ξεκινήσετε να "
785+#~ "χρησιμοποιείτε το τηλέφωνο<br><br>Αγγίξτε την οθόνη για να ξεκινήσετε"
786+
787+#~ msgid "Store"
788+#~ msgstr "Κατάστημα"
789+
790+#~ msgid "Power off"
791+#~ msgstr "Τερματισμός"
792+
793+#~ msgid "All"
794+#~ msgstr "Όλα"
795+
796+#~ msgid "Favorites"
797+#~ msgstr "Αγαπημένα"
798+
799+#~ msgid "Done"
800+#~ msgstr "Ολοκληρώθηκε"
801+
802+#~ msgid "Log out"
803+#~ msgstr "Αποσύνδεση"
804+
805+#~ msgid "Reboot"
806+#~ msgstr "Επανεκκίνηση"
807+
808+#~ msgid "Restart"
809+#~ msgstr "Επανεκκίνηση"
810+
730#~ msgid "Please re-enter"
811#~ msgid "Please re-enter"
731#~ msgstr "Παρακαλώ πληκτρολογήστε ξανά"
812#~ msgstr "Παρακαλώ πληκτρολογήστε ξανά"
732
813
733−#~ msgid "Click here to finish."
814+#~ msgid "Shut down"
734−#~ msgstr "Πατήστε εδώ για τέλος."
815+#~ msgstr "Τερματισμός λειτουργίας"
816+
817+#~ msgid "Settings"
818+#~ msgstr "Ρυθμίσεις"
819+
820+#~ msgid "Power"
821+#~ msgstr "Ενέργεια"
po/en_AU.po+94−6
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+0000\n"
11+"PO-Revision-Date: 2015-07-12 07:17+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"
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: 2015-09-12 05:43+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -714,8 +714,96 @@ msgstr "〈 %1"
714msgid "%1 〉"
714msgid "%1 〉"
715msgstr "%1 〉"
715msgstr "%1 〉"
716
716
717+#~ msgid "Confirm"
718+#~ msgstr "Confirm"
719+
720+#~ msgid "Type or say a command"
721+#~ msgstr "Type or say a command"
722+
723+#~ msgid "Loading. Please Wait..."
724+#~ msgstr "Loading. Please Wait..."
725+
726+#~ msgid "Speak Now..."
727+#~ msgstr "Speak Now..."
728+
729+#~ msgid "Speaking..."
730+#~ msgstr "Speaking..."
731+
732+#~ msgid "Search"
733+#~ msgstr "Search"
734+
735+#~ msgid "Top edge"
736+#~ msgstr "Top edge"
737+
738+#~ msgid "Try swiping from the top edge to access the indicators"
739+#~ msgstr "Try swiping from the top edge to access the indicators"
740+
741+#~ msgid "Close"
742+#~ msgstr "Close"
743+
744+#~ msgid "Swipe up again to close the settings screen"
745+#~ msgstr "Swipe up again to close the settings screen"
746+
747+#~ msgid "Left edge"
748+#~ msgstr "Left edge"
749+
750+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
751+#~ msgstr "Swipe from the left to reveal the launcher for quick access to apps"
752+
753+#~ msgid "Well done"
754+#~ msgstr "Well done"
755+
756+#~ msgid "Skip intro"
757+#~ msgstr "Skip intro"
758+
759+#~ msgid "Try swiping from the right edge to unlock the phone"
760+#~ msgstr "Try swiping from the right edge to unlock the phone"
761+
762+#~ msgid "Right edge"
763+#~ msgstr "Right edge"
764+
765+#~ msgid ""
766+#~ "You have now mastered the edge gestures and can start using the "
767+#~ "phone<br><br>Tap on the screen to start"
768+#~ msgstr ""
769+#~ "You have now mastered the edge gestures and can start using the "
770+#~ "phone<br><br>Tap on the screen to start"
771+
772+#~ msgid "All"
773+#~ msgstr "All"
774+
775+#~ msgid "Favorites"
776+#~ msgstr "Favourites"
777+
778+#~ msgid "Store"
779+#~ msgstr "Store"
780+
781+#~ msgid "Power off"
782+#~ msgstr "Power off"
783+
784+#~ msgid "Done"
785+#~ msgstr "Done"
786+
787+#~ msgid "Log out"
788+#~ msgstr "Log out"
789+
790+#~ msgid "Reboot"
791+#~ msgstr "Reboot"
792+
793+#~ msgid "Power"
794+#~ msgstr "Power"
795+
796+#~ msgid "Shut down"
797+#~ msgstr "Shut down"
798+
799+#~ msgid "Settings"
800+#~ msgstr "Settings"
801+
802+#~ msgid "Restart"
803+#~ msgstr "Restart"
804+
805+#~ msgid "Manage Scopes"
806+#~ msgstr "Manage Scopes"
807+
717#~ msgid "Please re-enter"
808#~ msgid "Please re-enter"
718#~ msgstr "Please re-enter"
809#~ msgstr "Please re-enter"
719−
720−#~ msgid "Click here to finish."
721−#~ msgstr "Click here to finish."
po/en_GB.po+96−8
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:43+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -29,7 +29,7 @@ msgstr "Pin shortcut"
29
29
30#: plugins/Unity/Launcher/launcheritem.cpp:52
30#: plugins/Unity/Launcher/launcheritem.cpp:52
31msgid "Quit"
31msgid "Quit"
32−msgstr ""
32+msgstr "Quit"
33
33
34#: plugins/Unity/Launcher/launcheritem.cpp:106
34#: plugins/Unity/Launcher/launcheritem.cpp:106
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
@@ -459,7 +459,7 @@ msgstr "Reply"
459
459
460#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
460#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
461msgid "Call back"
461msgid "Call back"
462−msgstr ""
462+msgstr "Call back"
463
463
464#: qml/Panel/Indicators/ModemInfoItem.qml:105
464#: qml/Panel/Indicators/ModemInfoItem.qml:105
465msgid "Unlock SIM"
465msgid "Unlock SIM"
@@ -714,8 +714,96 @@ msgstr "〈 %1"
714msgid "%1 〉"
714msgid "%1 〉"
715msgstr "%1 〉"
715msgstr "%1 〉"
716
716
717+#~ msgid "Confirm"
718+#~ msgstr "Confirm"
719+
720+#~ msgid "Type or say a command"
721+#~ msgstr "Type or say a command"
722+
723+#~ msgid "Loading. Please Wait..."
724+#~ msgstr "Loading. Please Wait..."
725+
726+#~ msgid "Speak Now..."
727+#~ msgstr "Speak Now..."
728+
729+#~ msgid "Speaking..."
730+#~ msgstr "Speaking..."
731+
732+#~ msgid "Search"
733+#~ msgstr "Search"
734+
735+#~ msgid "Try swiping from the right edge to unlock the phone"
736+#~ msgstr "Try swiping from the right edge to unlock the phone"
737+
738+#~ msgid "Top edge"
739+#~ msgstr "Top edge"
740+
741+#~ msgid "Try swiping from the top edge to access the indicators"
742+#~ msgstr "Try swiping from the top edge to access the indicators"
743+
744+#~ msgid "Close"
745+#~ msgstr "Close"
746+
747+#~ msgid "Swipe up again to close the settings screen"
748+#~ msgstr "Swipe up again to close the settings screen"
749+
750+#~ msgid "Left edge"
751+#~ msgstr "Left edge"
752+
753+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
754+#~ msgstr "Swipe from the left to reveal the launcher for quick access to apps"
755+
756+#~ msgid "Well done"
757+#~ msgstr "Well done"
758+
759+#~ msgid "Skip intro"
760+#~ msgstr "Skip intro"
761+
762+#~ msgid "Right edge"
763+#~ msgstr "Right edge"
764+
765+#~ msgid ""
766+#~ "You have now mastered the edge gestures and can start using the "
767+#~ "phone<br><br>Tap on the screen to start"
768+#~ msgstr ""
769+#~ "You have now mastered the edge gestures and can start using the "
770+#~ "phone<br><br>Tap on the screen to start"
771+
772+#~ msgid "Store"
773+#~ msgstr "Store"
774+
775+#~ msgid "All"
776+#~ msgstr "All"
777+
778+#~ msgid "Favorites"
779+#~ msgstr "Favourites"
780+
781+#~ msgid "Power off"
782+#~ msgstr "Power off"
783+
784+#~ msgid "Done"
785+#~ msgstr "Done"
786+
787+#~ msgid "Log out"
788+#~ msgstr "Log out"
789+
790+#~ msgid "Reboot"
791+#~ msgstr "Reboot"
792+
793+#~ msgid "Power"
794+#~ msgstr "Power"
795+
796+#~ msgid "Shut down"
797+#~ msgstr "Shut down"
798+
799+#~ msgid "Settings"
800+#~ msgstr "Settings"
801+
802+#~ msgid "Restart"
803+#~ msgstr "Restart"
804+
805+#~ msgid "Manage Scopes"
806+#~ msgstr "Manage Scopes"
807+
717#~ msgid "Please re-enter"
808#~ msgid "Please re-enter"
718#~ msgstr "Please re-enter"
809#~ msgstr "Please re-enter"
719−
720−#~ msgid "Click here to finish."
721−#~ msgstr "Click here to finish."
po/eo.po+3−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
po/es.po+98−7
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+0000\n"
11+"PO-Revision-Date: 2015-07-04 06:08+0000\n"
12"Last-Translator: Paco Molinero <paco@byasl.com>\n"
12"Last-Translator: Paco Molinero <paco@byasl.com>\n"
13"Language-Team: Spanish <es@li.org>\n"
13"Language-Team: Spanish <es@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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -29,7 +29,7 @@ msgstr "Anclar"
29
29
30#: plugins/Unity/Launcher/launcheritem.cpp:52
30#: plugins/Unity/Launcher/launcheritem.cpp:52
31msgid "Quit"
31msgid "Quit"
32−msgstr ""
32+msgstr "Salir"
33
33
34#: plugins/Unity/Launcher/launcheritem.cpp:106
34#: plugins/Unity/Launcher/launcheritem.cpp:106
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
@@ -463,7 +463,7 @@ msgstr "Responder"
463
463
464#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
464#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
465msgid "Call back"
465msgid "Call back"
466−msgstr ""
466+msgstr "Devolver llamada"
467
467
468#: qml/Panel/Indicators/ModemInfoItem.qml:105
468#: qml/Panel/Indicators/ModemInfoItem.qml:105
469msgid "Unlock SIM"
469msgid "Unlock SIM"
@@ -718,8 +718,99 @@ msgstr "〈 %1"
718msgid "%1 〉"
718msgid "%1 〉"
719msgstr "%1 〉"
719msgstr "%1 〉"
720
720
721+#~ msgid "Confirm"
722+#~ msgstr "Confirmar"
723+
724+#~ msgid "Type or say a command"
725+#~ msgstr "Escriba o diga una orden"
726+
727+#~ msgid "Loading. Please Wait..."
728+#~ msgstr "Cargando, espere…"
729+
730+#~ msgid "Speak Now..."
731+#~ msgstr "Hable ahora…"
732+
733+#~ msgid "Speaking..."
734+#~ msgstr "Hablando…"
735+
736+#~ msgid "Search"
737+#~ msgstr "Buscar"
738+
739+#~ msgid "Top edge"
740+#~ msgstr "Borde superior"
741+
742+#~ msgid "Close"
743+#~ msgstr "Cerrar"
744+
745+#~ msgid "Left edge"
746+#~ msgstr "Borde izquierdo"
747+
748+#~ msgid "Skip intro"
749+#~ msgstr "Omitir la introducción"
750+
751+#~ msgid "Right edge"
752+#~ msgstr "Borde derecho"
753+
754+#~ msgid "Well done"
755+#~ msgstr "Bien hecho"
756+
757+#~ msgid "Swipe up again to close the settings screen"
758+#~ msgstr "Deslice hacia arriba para cerrar la pantalla de configuración"
759+
760+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
761+#~ msgstr ""
762+#~ "Deslice el dedo desde la izquierda para mostrar el lanzador y acceder "
763+#~ "rápidamente a las aplicaciones"
764+
765+#~ msgid "Try swiping from the right edge to unlock the phone"
766+#~ msgstr "Deslice el dedo desde el borde derecho para desbloquear el teléfono"
767+
768+#~ msgid "Try swiping from the top edge to access the indicators"
769+#~ msgstr ""
770+#~ "Deslice el dedo desde el borde superior para acceder a los indicadores"
771+
772+#~ msgid ""
773+#~ "You have now mastered the edge gestures and can start using the "
774+#~ "phone<br><br>Tap on the screen to start"
775+#~ msgstr ""
776+#~ "Ahora domina los gestos de los bordes y puede usar el teléfono<br><br>Toque "
777+#~ "la pantalla para comenzar"
778+
779+#~ msgid "Power off"
780+#~ msgstr "Apagar"
781+
782+#~ msgid "All"
783+#~ msgstr "Todo"
784+
785+#~ msgid "Favorites"
786+#~ msgstr "Favoritos"
787+
788+#~ msgid "Store"
789+#~ msgstr "Tienda"
790+
791+#~ msgid "Done"
792+#~ msgstr "Hecho"
793+
794+#~ msgid "Reboot"
795+#~ msgstr "Reiniciar"
796+
797+#~ msgid "Shut down"
798+#~ msgstr "Apagar"
799+
800+#~ msgid "Settings"
801+#~ msgstr "Configuración"
802+
803+#~ msgid "Log out"
804+#~ msgstr "Cerrar la sesión"
805+
806+#~ msgid "Restart"
807+#~ msgstr "Reiniciar"
808+
809+#~ msgid "Power"
810+#~ msgstr "Apagar"
811+
721#~ msgid "Please re-enter"
812#~ msgid "Please re-enter"
722#~ msgstr "Reintroduzca"
813#~ msgstr "Reintroduzca"
723
814
724−#~ msgid "Click here to finish."
815+#~ msgid "Manage Scopes"
725−#~ msgstr "Pulse aquí para finalizar."
816+#~ msgstr "Administrar Scopes"
po/eu.po+97−6
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -717,8 +717,99 @@ msgstr "〈 %1"
717msgid "%1 〉"
717msgid "%1 〉"
718msgstr "%1 〉"
718msgstr "%1 〉"
719
719
720+#~ msgid "Top edge"
721+#~ msgstr "Goiko ertza"
722+
723+#~ msgid "Close"
724+#~ msgstr "Itxi"
725+
726+#~ msgid "Left edge"
727+#~ msgstr "Ezkerreko ertza"
728+
729+#~ msgid "Well done"
730+#~ msgstr "Bikain"
731+
732+#~ msgid "Skip intro"
733+#~ msgstr "Saltatu aurkezpena"
734+
735+#~ msgid "Right edge"
736+#~ msgstr "Eskuineko ertza"
737+
738+#~ msgid "Type or say a command"
739+#~ msgstr "Idatzi edo esan agindu bat"
740+
741+#~ msgid "Speak Now..."
742+#~ msgstr "Hitz egin orain..."
743+
744+#~ msgid "Loading. Please Wait..."
745+#~ msgstr "Kargatzen. Itxaron, mesedez..."
746+
747+#~ msgid "Speaking..."
748+#~ msgstr "Hitz egiten..."
749+
750+#~ msgid "Search"
751+#~ msgstr "Bilatu"
752+
753+#~ msgid ""
754+#~ "You have now mastered the edge gestures and can start using the "
755+#~ "phone<br><br>Tap on the screen to start"
756+#~ msgstr ""
757+#~ "Jadanik ezagutzen dituzu ertzetako keinuak, eta mugikorra erabiltzen has "
758+#~ "zaitezke<br><br>Sakatu pantailan hasteko"
759+
760+#~ msgid "Try swiping from the top edge to access the indicators"
761+#~ msgstr "Pasatu hatza goiko ertzetik beherantz adierazleak ikusteko"
762+
763+#~ msgid "Swipe up again to close the settings screen"
764+#~ msgstr "Pasatu hatza berriro gora ezarpenen leihoa ixteko"
765+
766+#~ msgid "Try swiping from the right edge to unlock the phone"
767+#~ msgstr ""
768+#~ "Pasatu hatza eskuineko ertzetik ezkerrerantz telefonoa desblokeatzeko"
769+
770+#~ msgid "Log out"
771+#~ msgstr "Amaitu saioa"
772+
773+#~ msgid "Reboot"
774+#~ msgstr "Berrabiarazi"
775+
776+#~ msgid "Shut down"
777+#~ msgstr "Itzali"
778+
779+#~ msgid "Settings"
780+#~ msgstr "Ezarpenak"
781+
782+#~ msgid "Power off"
783+#~ msgstr "Itzali"
784+
785+#~ msgid "Done"
786+#~ msgstr "Eginda"
787+
788+#~ msgid "All"
789+#~ msgstr "Guztiak"
790+
791+#~ msgid "Favorites"
792+#~ msgstr "Gogokoak"
793+
794+#~ msgid "Store"
795+#~ msgstr "Denda"
796+
797+#~ msgid "Restart"
798+#~ msgstr "Berrabiarazi"
799+
800+#~ msgid "Power"
801+#~ msgstr "Piztu/itzali"
802+
803+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
804+#~ msgstr ""
805+#~ "Pasatu hatza ezkerretik abiarazlea erakutsi eta aplikazioak berehala eskura "
806+#~ "izateko"
807+
808+#~ msgid "Confirm"
809+#~ msgstr "Berretsi"
810+
811+#~ msgid "Manage Scopes"
812+#~ msgstr "Kudeatu eremuak"
813+
720#~ msgid "Please re-enter"
814#~ msgid "Please re-enter"
721#~ msgstr "Errepikatu"
815#~ msgstr "Errepikatu"
722−
723−#~ msgid "Click here to finish."
724−#~ msgstr "Egin klik hemen amaitzeko."
po/fa.po+93−5
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -713,8 +713,96 @@ msgstr "〈 %1"
713msgid "%1 〉"
713msgid "%1 〉"
714msgstr "%1 〉"
714msgstr "%1 〉"
715
715
716+#~ msgid "Right edge"
717+#~ msgstr "لبه‌ی راست"
718+
719+#~ msgid "Top edge"
720+#~ msgstr "لبه‌ی بالا"
721+
722+#~ msgid "Well done"
723+#~ msgstr "عالی بود"
724+
725+#~ msgid "Type or say a command"
726+#~ msgstr "دستوری را بنویسید یا بگویید"
727+
728+#~ msgid "Left edge"
729+#~ msgstr "لبه‌ی چپ"
730+
731+#~ msgid "Try swiping from the top edge to access the indicators"
732+#~ msgstr "برای دست‌رسی به نشانگرها، از لبه‌ی بالا بکشید"
733+
734+#~ msgid "Close"
735+#~ msgstr "بستن"
736+
737+#~ msgid "Swipe up again to close the settings screen"
738+#~ msgstr "برای بستن صفحه‌ی تنظیمات، دوباره به بالا بکشپد"
739+
740+#~ msgid "Skip intro"
741+#~ msgstr "پرش از مقدّمه"
742+
743+#~ msgid "Try swiping from the right edge to unlock the phone"
744+#~ msgstr "برای باز کردن قفل تلفن، از لبه‌ی راست بکشید"
745+
746+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
747+#~ msgstr "برای آشکار شدن اجراگر به منظور دست‌رسی سریع به اپ‌ها از سمت چپ بکشید"
748+
749+#~ msgid ""
750+#~ "You have now mastered the edge gestures and can start using the "
751+#~ "phone<br><br>Tap on the screen to start"
752+#~ msgstr ""
753+#~ "هم اکنون در استفاده از ژست های حرکتی مهارت لازم را دارید و می‌توانید استفاده "
754+#~ "از تلفن را آغاز کنید<br><br>برای شروع صفحه را لمس کنید"
755+
756+#~ msgid "Confirm"
757+#~ msgstr "تأیید"
758+
759+#~ msgid "Loading. Please Wait..."
760+#~ msgstr "در حال بار کردن. لطفاً صبر کنید…"
761+
762+#~ msgid "Speaking..."
763+#~ msgstr "در حال صحبت کردن…"
764+
765+#~ msgid "Speak Now..."
766+#~ msgstr "اکنون صحبت کنید…"
767+
768+#~ msgid "Search"
769+#~ msgstr "جست‌وجو"
770+
771+#~ msgid "All"
772+#~ msgstr "همه"
773+
774+#~ msgid "Favorites"
775+#~ msgstr "برگزیده‌ها"
776+
777+#~ msgid "Store"
778+#~ msgstr "فروشگاه"
779+
780+#~ msgid "Power off"
781+#~ msgstr "خاموش کردن"
782+
783+#~ msgid "Done"
784+#~ msgstr "انجام شد"
785+
786+#~ msgid "Power"
787+#~ msgstr "توان"
788+
789+#~ msgid "Log out"
790+#~ msgstr "خروج از حساب"
791+
792+#~ msgid "Reboot"
793+#~ msgstr "راه‌اندازی مجدّد"
794+
795+#~ msgid "Shut down"
796+#~ msgstr "خاموش کردن"
797+
798+#~ msgid "Settings"
799+#~ msgstr "تنظیمات"
800+
801+#~ msgid "Restart"
802+#~ msgstr "شروع مجدّد"
803+
716#~ msgid "Please re-enter"
804#~ msgid "Please re-enter"
717#~ msgstr "لطفاً دوباره وارد کنید"
805#~ msgstr "لطفاً دوباره وارد کنید"
718
806
719−#~ msgid "Click here to finish."
807+#~ msgid "Manage Scopes"
720−#~ msgstr "برای پایان اینجا کلیک کنید."
808+#~ msgstr "مدیریت حوزه‌ها"
po/fi.po+94−6
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -717,8 +717,96 @@ msgstr "〈 %1"
717msgid "%1 〉"
717msgid "%1 〉"
718msgstr "%1 〉"
718msgstr "%1 〉"
719
719
720+#~ msgid "Confirm"
721+#~ msgstr "Hyväksy"
722+
723+#~ msgid "Type or say a command"
724+#~ msgstr "Kirjoita tai sano komento"
725+
726+#~ msgid "Speak Now..."
727+#~ msgstr "Puhu nyt..."
728+
729+#~ msgid "Speaking..."
730+#~ msgstr "Puhutaan..."
731+
732+#~ msgid "Search"
733+#~ msgstr "Hae"
734+
735+#~ msgid "Loading. Please Wait..."
736+#~ msgstr "Ladataan, pieni hetki..."
737+
738+#~ msgid "Top edge"
739+#~ msgstr "Yläreuna"
740+
741+#~ msgid "Try swiping from the top edge to access the indicators"
742+#~ msgstr "Vedä yläreunasta käyttääksesi ilmaisimia"
743+
744+#~ msgid "Close"
745+#~ msgstr "Sulje"
746+
747+#~ msgid "Swipe up again to close the settings screen"
748+#~ msgstr "Vedä uudestaan sulkeaksesi asetusnäkymän"
749+
750+#~ msgid "Left edge"
751+#~ msgstr "Vasen reuna"
752+
753+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
754+#~ msgstr "Vedä vasemmalta saattaaksesi sovellusten käynnistimen esiin"
755+
756+#~ msgid "Well done"
757+#~ msgstr "Hyvin tehty"
758+
759+#~ msgid "Skip intro"
760+#~ msgstr "Ohita esittely"
761+
762+#~ msgid "Try swiping from the right edge to unlock the phone"
763+#~ msgstr "Vedä oikealta avataksesi puhelimen lukituksen"
764+
765+#~ msgid "Right edge"
766+#~ msgstr "Oikea reuna"
767+
768+#~ msgid ""
769+#~ "You have now mastered the edge gestures and can start using the "
770+#~ "phone<br><br>Tap on the screen to start"
771+#~ msgstr ""
772+#~ "Hallitset nyt reunaeleet, joten voit aloittaa puhelimen "
773+#~ "käytön<br><br>Napauta näyttöä aloittaaksesi"
774+
775+#~ msgid "All"
776+#~ msgstr "Kaikki"
777+
778+#~ msgid "Favorites"
779+#~ msgstr "Suosikit"
780+
781+#~ msgid "Store"
782+#~ msgstr "Kauppa"
783+
784+#~ msgid "Power off"
785+#~ msgstr "Sammuta"
786+
787+#~ msgid "Done"
788+#~ msgstr "Valmis"
789+
790+#~ msgid "Log out"
791+#~ msgstr "Kirjaudu ulos"
792+
793+#~ msgid "Reboot"
794+#~ msgstr "Käynnistä uudelleen"
795+
796+#~ msgid "Shut down"
797+#~ msgstr "Sammuta"
798+
799+#~ msgid "Settings"
800+#~ msgstr "Asetukset"
801+
802+#~ msgid "Power"
803+#~ msgstr "Virran katkaisu"
804+
805+#~ msgid "Restart"
806+#~ msgstr "Käynnistä uudelleen"
807+
808+#~ msgid "Manage Scopes"
809+#~ msgstr "Näkymien hallinta"
810+
720#~ msgid "Please re-enter"
811#~ msgid "Please re-enter"
721#~ msgstr "Anna uudelleen"
812#~ msgstr "Anna uudelleen"
722−
723−#~ msgid "Click here to finish."
724−#~ msgstr "Viimeistele napsauttamalla tästä."
po/fo.po+27−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -701,3 +701,27 @@ msgstr ""
701#, qt-format
701#, qt-format
702msgid "%1 〉"
702msgid "%1 〉"
703msgstr ""
703msgstr ""
704+
705+#~ msgid "Confirm"
706+#~ msgstr "Vátta"
707+
708+#~ msgid "Type or say a command"
709+#~ msgstr "Skriva ella sig eini stýriboð"
710+
711+#~ msgid "Loading. Please Wait..."
712+#~ msgstr "Løðar. Vinarliga bíða..."
713+
714+#~ msgid "Speak Now..."
715+#~ msgstr "Snakka nú..."
716+
717+#~ msgid "Speaking..."
718+#~ msgstr "Snakkar..."
719+
720+#~ msgid "Search"
721+#~ msgstr "Leita"
722+
723+#~ msgid "Top edge"
724+#~ msgstr "Topp kantur"
725+
726+#~ msgid "Right edge"
727+#~ msgstr "Høgra kant"
po/fr.po+103−8
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+0000\n"
11+"PO-Revision-Date: 2015-07-27 11:47+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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -29,7 +29,7 @@ msgstr "Épingler le raccourci"
29
29
30#: plugins/Unity/Launcher/launcheritem.cpp:52
30#: plugins/Unity/Launcher/launcheritem.cpp:52
31msgid "Quit"
31msgid "Quit"
32−msgstr ""
32+msgstr "Quitter"
33
33
34#: plugins/Unity/Launcher/launcheritem.cpp:106
34#: plugins/Unity/Launcher/launcheritem.cpp:106
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
@@ -465,7 +465,7 @@ msgstr "Répondre"
465
465
466#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
466#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
467msgid "Call back"
467msgid "Call back"
468−msgstr ""
468+msgstr "Rappeler"
469
469
470#: qml/Panel/Indicators/ModemInfoItem.qml:105
470#: qml/Panel/Indicators/ModemInfoItem.qml:105
471msgid "Unlock SIM"
471msgid "Unlock SIM"
@@ -726,8 +726,103 @@ msgstr "〈 %1"
726msgid "%1 〉"
726msgid "%1 〉"
727msgstr "%1 〉"
727msgstr "%1 〉"
728
728
729+#~ msgid "Skip intro"
730+#~ msgstr "Passer l'intro"
731+
732+#~ msgid "Right edge"
733+#~ msgstr "Bord droit"
734+
735+#~ msgid "Top edge"
736+#~ msgstr "Bord supérieur"
737+
738+#~ msgid "Close"
739+#~ msgstr "Fermer"
740+
741+#~ msgid "Left edge"
742+#~ msgstr "Bord gauche"
743+
744+#~ msgid "Speaking..."
745+#~ msgstr "En cours d'écoute..."
746+
747+#~ msgid "Loading. Please Wait..."
748+#~ msgstr "Chargement. Veuillez patienter…"
749+
750+#~ msgid "Search"
751+#~ msgstr "Rechercher"
752+
753+#~ msgid "Confirm"
754+#~ msgstr "Confirmez"
755+
756+#~ msgid "Type or say a command"
757+#~ msgstr "Rédigez ou dictez une commande"
758+
759+#~ msgid "Well done"
760+#~ msgstr "Félicitations"
761+
762+#~ msgid "Speak Now..."
763+#~ msgstr "Parlez maintenant…"
764+
765+#~ msgid ""
766+#~ "You have now mastered the edge gestures and can start using the "
767+#~ "phone<br><br>Tap on the screen to start"
768+#~ msgstr ""
769+#~ "Vous maîtrisez maintenant les différents gestes et pouvez commencer à "
770+#~ "utiliser le téléphone<br><br>Appuyez sur l'écran pour commencer"
771+
772+#~ msgid "Try swiping from the right edge to unlock the phone"
773+#~ msgstr ""
774+#~ "Faites glisser votre doigt à partir du bord droit pour déverrouiller."
775+
776+#~ msgid "Try swiping from the top edge to access the indicators"
777+#~ msgstr ""
778+#~ "Faites glisser votre doigt à partir du bord supérieur pour accéder aux "
779+#~ "indicateurs."
780+
781+#~ msgid "Swipe up again to close the settings screen"
782+#~ msgstr ""
783+#~ "Faites glisser à nouveau votre doigt vers le bord supérieur pour fermer "
784+#~ "l'écran des paramètres"
785+
786+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
787+#~ msgstr ""
788+#~ "Faites glisser votre doigt à partir du bord gauche pour afficher le lanceur "
789+#~ "d'applications."
790+
791+#~ msgid "Power off"
792+#~ msgstr "Éteindre"
793+
794+#~ msgid "All"
795+#~ msgstr "Toutes"
796+
797+#~ msgid "Store"
798+#~ msgstr "Logithèque"
799+
800+#~ msgid "Done"
801+#~ msgstr "Terminé"
802+
803+#~ msgid "Favorites"
804+#~ msgstr "Favorites"
805+
806+#~ msgid "Log out"
807+#~ msgstr "Se déconnecter"
808+
809+#~ msgid "Reboot"
810+#~ msgstr "Redémarrer"
811+
812+#~ msgid "Shut down"
813+#~ msgstr "Éteindre"
814+
815+#~ msgid "Settings"
816+#~ msgstr "Paramètres"
817+
818+#~ msgid "Power"
819+#~ msgstr "Alimentation"
820+
821+#~ msgid "Restart"
822+#~ msgstr "Redémarrer"
823+
824+#~ msgid "Manage Scopes"
825+#~ msgstr "Gérer les moteurs de recherche"
826+
729#~ msgid "Please re-enter"
827#~ msgid "Please re-enter"
730#~ msgstr "Veuillez ressaisir"
828#~ msgstr "Veuillez ressaisir"
731−
732−#~ msgid "Click here to finish."
733−#~ msgstr "Cliquez ici pour terminer."
po/ga.po+2−2
@@ -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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
po/gd.po+99−5
@@ -8,7 +8,7 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=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: 2015-09-12 05:42+0000\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20−"X-Generator: Launchpad (build 17720)\n"
20+"X-Generator: Launchpad (build 17746)\n"
21"Language: gd\n"
21"Language: gd\n"
22
22
23#: plugins/LightDM/Greeter.cpp:112
23#: plugins/LightDM/Greeter.cpp:112
@@ -735,8 +735,102 @@ msgstr "〈 %1"
735msgid "%1 〉"
735msgid "%1 〉"
736msgstr "%1 〉"
736msgstr "%1 〉"
737
737
738−#~ msgid "Click here to finish."
738+#~ msgid "Skip intro"
739−#~ msgstr "Briog an-seo gus crìoch a chur air."
739+#~ msgstr "Gearr leum thairis air an ro-ràdh"
740+
741+#~ msgid "Try swiping from the right edge to unlock the phone"
742+#~ msgstr ""
743+#~ "Feuch is dèan grad-shlaighdeadh a-steach on oir dheas gus a' ghlas a thoirt "
744+#~ "far an fhòn"
745+
746+#~ msgid "Right edge"
747+#~ msgstr "An oir dheas"
748+
749+#~ msgid "Top edge"
750+#~ msgstr "An oir aig a' bharr"
751+
752+#~ msgid "Try swiping from the top edge to access the indicators"
753+#~ msgstr ""
754+#~ "Feuch is dèan grad-shlaighdeadh a-steach on oir aig a' bharr gus greim "
755+#~ "fhaighinn air na taisbeanairean"
756+
757+#~ msgid "Close"
758+#~ msgstr "Dùin"
759+
760+#~ msgid "Swipe up again to close the settings screen"
761+#~ msgstr "Dèan grad-shlaighdeadh a-nìos gus sgrìn nan roghainnean a dhùnadh"
762+
763+#~ msgid "Left edge"
764+#~ msgstr "An oir chlì"
765+
766+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
767+#~ msgstr ""
768+#~ "Dèan grad-shlaighdeadh on oir chlì air an lòinseir a bheir dhut cothrom "
769+#~ "luath air na h-aplacaidean"
770+
771+#~ msgid "Well done"
772+#~ msgstr "Gasta!"
773+
774+#~ msgid "Confirm"
775+#~ msgstr "Dearbhaich"
776+
777+#~ msgid "Loading. Please Wait..."
778+#~ msgstr "'Ga luchdadh, fuirich ort..."
779+
780+#~ msgid "Type or say a command"
781+#~ msgstr "Sgrìobh no can àithne"
782+
783+#~ msgid "Speaking..."
784+#~ msgstr "A' bruidhinn..."
785+
786+#~ msgid "Speak Now..."
787+#~ msgstr "Can rud a-nis..."
788+
789+#~ msgid "Search"
790+#~ msgstr "Lorg"
791+
792+#~ msgid ""
793+#~ "You have now mastered the edge gestures and can start using the "
794+#~ "phone<br><br>Tap on the screen to start"
795+#~ msgstr ""
796+#~ "Fhuair thu air na gluasadan oire ceart a dhèanamh a-nis agus is urrainn dhut "
797+#~ "am fòn a chleachdadh<br><br>Thoir gnogag air an sgrìn airson tòiseachadh"
798+
799+#~ msgid "All"
800+#~ msgstr "Na h-uile"
801+
802+#~ msgid "Favorites"
803+#~ msgstr "Annsachdan"
804+
805+#~ msgid "Store"
806+#~ msgstr "Am bùth"
807+
808+#~ msgid "Power off"
809+#~ msgstr "Cuir a' chumhachd dheth"
810+
811+#~ msgid "Done"
812+#~ msgstr "Deiseil"
813+
814+#~ msgid "Log out"
815+#~ msgstr "Clàraich a-mach"
816+
817+#~ msgid "Reboot"
818+#~ msgstr "Ath-thòisich an siostam"
819+
820+#~ msgid "Shut down"
821+#~ msgstr "Dùin sìos"
822+
823+#~ msgid "Power"
824+#~ msgstr "Cumhachd"
825+
826+#~ msgid "Settings"
827+#~ msgstr "Roghainnean"
828+
829+#~ msgid "Restart"
830+#~ msgstr "Ath-thòisich"
831+
832+#~ msgid "Manage Scopes"
833+#~ msgstr "Stiùirich na sgòpaichean"
740
834
741#~ msgid "Please re-enter"
835#~ msgid "Please re-enter"
742#~ msgstr "Cuir a-steach i a-rithist"
836#~ msgstr "Cuir a-steach i a-rithist"
po/gl.po+96−6
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+0000\n"
11+"PO-Revision-Date: 2015-08-01 03:25+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -713,8 +713,98 @@ msgstr "〈 %1"
713msgid "%1 〉"
713msgid "%1 〉"
714msgstr "%1 〉"
714msgstr "%1 〉"
715
715
716+#~ msgid "Confirm"
717+#~ msgstr "Confirmar"
718+
719+#~ msgid "Type or say a command"
720+#~ msgstr "Escriba ou diga unha orde"
721+
722+#~ msgid "Speak Now..."
723+#~ msgstr "Fale agora…"
724+
725+#~ msgid "Speaking..."
726+#~ msgstr "Falando…"
727+
728+#~ msgid "Search"
729+#~ msgstr "Buscar"
730+
731+#~ msgid "Right edge"
732+#~ msgstr "Bordo dereito"
733+
734+#~ msgid "Skip intro"
735+#~ msgstr "Saltar introdución"
736+
737+#~ msgid "Top edge"
738+#~ msgstr "Bordo superior"
739+
740+#~ msgid "Close"
741+#~ msgstr "Pechar"
742+
743+#~ msgid "Left edge"
744+#~ msgstr "Bordo esquerdo"
745+
746+#~ msgid ""
747+#~ "You have now mastered the edge gestures and can start using the "
748+#~ "phone<br><br>Tap on the screen to start"
749+#~ msgstr ""
750+#~ "Agora xa domina os xestos dos bordos e pode comezar a usar o "
751+#~ "teléfono<br><br>Toque na pantalla para comezar"
752+
753+#~ msgid "Loading. Please Wait..."
754+#~ msgstr "Cargando, agarde…"
755+
756+#~ msgid "Try swiping from the top edge to access the indicators"
757+#~ msgstr "Esvare o dedo desde o bordo superior para acceder aos indicadores."
758+
759+#~ msgid "Try swiping from the right edge to unlock the phone"
760+#~ msgstr "Esvare o dedo desde o bordo dereito para desbloquear o teléfono"
761+
762+#~ msgid "Swipe up again to close the settings screen"
763+#~ msgstr "Esvare o dedo de novo cara a arriba para pechar os axustes"
764+
765+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
766+#~ msgstr ""
767+#~ "Esvare o dedo desde a esquerda para mostrar o iniciador rápido dos "
768+#~ "aplicativos"
769+
770+#~ msgid "Well done"
771+#~ msgstr "Ben feito!"
772+
773+#~ msgid "All"
774+#~ msgstr "Todos"
775+
776+#~ msgid "Favorites"
777+#~ msgstr "Favoritos"
778+
779+#~ msgid "Store"
780+#~ msgstr "Tenda"
781+
782+#~ msgid "Power off"
783+#~ msgstr "Apagar"
784+
785+#~ msgid "Done"
786+#~ msgstr "Feito"
787+
788+#~ msgid "Log out"
789+#~ msgstr "Saír da sesión"
790+
791+#~ msgid "Reboot"
792+#~ msgstr "Reiniciar"
793+
794+#~ msgid "Shut down"
795+#~ msgstr "Apagar"
796+
797+#~ msgid "Power"
798+#~ msgstr "Enerxía"
799+
800+#~ msgid "Settings"
801+#~ msgstr "Axustes"
802+
803+#~ msgid "Restart"
804+#~ msgstr "Reiniciar"
805+
806+#~ msgid "Manage Scopes"
807+#~ msgstr "Xestionar os Ámbitos"
808+
716#~ msgid "Please re-enter"
809#~ msgid "Please re-enter"
717#~ msgstr "Introducir de novo"
810#~ msgstr "Introducir de novo"
718−
719−#~ msgid "Click here to finish."
720−#~ msgstr "Prema aquí para rematar."
po/gv.po+66−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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 ? 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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -708,3 +708,66 @@ msgstr ""
708#, qt-format
708#, qt-format
709msgid "%1 〉"
709msgid "%1 〉"
710msgstr ""
710msgstr ""
711+
712+#~ msgid "Log out"
713+#~ msgstr "Log magh"
714+
715+#~ msgid "Reboot"
716+#~ msgstr "Aahoshee"
717+
718+#~ msgid "Shut down"
719+#~ msgstr "Jean dooney"
720+
721+#~ msgid "Power"
722+#~ msgstr "Pooyr"
723+
724+#~ msgid "Restart"
725+#~ msgstr "Aahoishee"
726+
727+#~ msgid "Power off"
728+#~ msgstr "Moogh"
729+
730+#~ msgid "Top edge"
731+#~ msgstr "Oirr mullagh"
732+
733+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
734+#~ msgstr ""
735+#~ "Flip woish yn çheu hoshtal dy soilshaghey yn lunneyder son raad aashagh dys "
736+#~ "ny h-appyn"
737+
738+#~ msgid "Well done"
739+#~ msgstr "Jeant dy mie"
740+
741+#~ msgid "Left edge"
742+#~ msgstr "Oirr hoshtal"
743+
744+#~ msgid "Skip intro"
745+#~ msgstr "Lhiem goan foaslee"
746+
747+#~ msgid "Try swiping from the right edge to unlock the phone"
748+#~ msgstr "Prow flippal woish yn oirr yesh dy neu-ghlassey yn çhellvane"
749+
750+#~ msgid "Right edge"
751+#~ msgstr "Oirr yesh"
752+
753+#~ msgid "Close"
754+#~ msgstr "Dooney"
755+
756+#~ msgid "Swipe up again to close the settings screen"
757+#~ msgstr "Flip seose reeshtagh dy dooney yn scaailan soieaghyn"
758+
759+#~ msgid "Settings"
760+#~ msgstr "Soieaghyn"
761+
762+#~ msgid ""
763+#~ "You have now mastered the edge gestures and can start using the "
764+#~ "phone<br><br>Tap on the screen to start"
765+#~ msgstr ""
766+#~ "T'ou nish oayllagh er ny cowraghyn oirr as foddee oo cur toshiaght er jannoo "
767+#~ "ymmyd jeh'n çhellvane<br><br>Jean broddey yn scaailan dy ghoaill toshiaght"
768+
769+#~ msgid "Store"
770+#~ msgstr "Shapp"
771+
772+#~ msgid "Search"
773+#~ msgstr "Jean shirrey"
po/he.po+72−5
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -702,5 +702,72 @@ msgstr ""
702msgid "%1 〉"
702msgid "%1 〉"
703msgstr ""
703msgstr ""
704
704
705−#~ msgid "Click here to finish."
705+#~ msgid "Confirm"
706−#~ msgstr "יש ללחוץ כאן כדי לסיים."
706+#~ msgstr "אישור"
707+
708+#~ msgid "Type or say a command"
709+#~ msgstr "ניתן להקליד או לומר פקודה"
710+
711+#~ msgid "Loading. Please Wait..."
712+#~ msgstr "בטעינה. נא להמתין..."
713+
714+#~ msgid "Speak Now..."
715+#~ msgstr "יש לדבר כעת..."
716+
717+#~ msgid "Search"
718+#~ msgstr "חיפוש"
719+
720+#~ msgid "Skip intro"
721+#~ msgstr "לדלג על הפתיחה"
722+
723+#~ msgid "Right edge"
724+#~ msgstr "שול ימני"
725+
726+#~ msgid "Top edge"
727+#~ msgstr "השול העליון"
728+
729+#~ msgid "Try swiping from the top edge to access the indicators"
730+#~ msgstr "נא לנסות למשוך מהשול העליון כדי לגשת למחוונים"
731+
732+#~ msgid "Close"
733+#~ msgstr "סגירה"
734+
735+#~ msgid "Try swiping from the right edge to unlock the phone"
736+#~ msgstr "נא לנסות למשוך מהשול הימני כדי לשחרר את נעילת הטלפון"
737+
738+#~ msgid "Swipe up again to close the settings screen"
739+#~ msgstr "ניתן למשוך שוב כדי לסגור את מסך ההגדרות"
740+
741+#~ msgid "Left edge"
742+#~ msgstr "שול שמאלי"
743+
744+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
745+#~ msgstr "יש למשוך משמאל כדי לחשוף את המשגר לצורך גישה מהירה ליישומים"
746+
747+#~ msgid "Well done"
748+#~ msgstr "כל הכבוד"
749+
750+#~ msgid "Speaking..."
751+#~ msgstr "הדיבור מושמע…"
752+
753+#~ msgid ""
754+#~ "You have now mastered the edge gestures and can start using the "
755+#~ "phone<br><br>Tap on the screen to start"
756+#~ msgstr ""
757+#~ "ברגעים אלו סיימת את התמחותך בשימוש במחוות קצה והטלפון פתוח לשימושך<br><br>נא "
758+#~ "לגעת במסך כדי להתחיל"
759+
760+#~ msgid "Power off"
761+#~ msgstr "כיבוי"
762+
763+#~ msgid "Done"
764+#~ msgstr "סיימתי"
765+
766+#~ msgid "Store"
767+#~ msgstr "אחסון"
768+
769+#~ msgid "All"
770+#~ msgstr "הכול"
771+
772+#~ msgid "Favorites"
773+#~ msgstr "מועדפים"
po/hi.po+34−4
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+0000\n"
11+"PO-Revision-Date: 2014-01-15 01:49+0000\n"
12−"Last-Translator: Siddhanathan S. <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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -701,3 +701,33 @@ msgstr ""
701#, qt-format
701#, qt-format
702msgid "%1 〉"
702msgid "%1 〉"
703msgstr ""
703msgstr ""
704+
705+#~ msgid "Top edge"
706+#~ msgstr "ऊपर किनारे"
707+
708+#~ msgid "Close"
709+#~ msgstr "बंद करें"
710+
711+#~ msgid "Left edge"
712+#~ msgstr "बायाँ किनारा"
713+
714+#~ msgid "Well done"
715+#~ msgstr "शाबाश"
716+
717+#~ msgid "Skip intro"
718+#~ msgstr "परिचय छोड़"
719+
720+#~ msgid "Right edge"
721+#~ msgstr "दायाँ किनारा"
722+
723+#~ msgid "Speaking..."
724+#~ msgstr "अब बोल रहे हैं"
725+
726+#~ msgid "Speak Now..."
727+#~ msgstr "अब बात करें"
728+
729+#~ msgid "Search"
730+#~ msgstr "खोजें"
731+
732+#~ msgid "Loading. Please Wait..."
733+#~ msgstr "काम कर रहा है | कृपया प्रतीक्षा करे |"
po/hr.po+21−3
@@ -8,7 +8,7 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n%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: 2015-09-12 05:42+0000\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20−"X-Generator: Launchpad (build 17720)\n"
20+"X-Generator: Launchpad (build 17746)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:112
22#: plugins/LightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -702,3 +702,21 @@ msgstr ""
702#, qt-format
702#, qt-format
703msgid "%1 〉"
703msgid "%1 〉"
704msgstr ""
704msgstr ""
705+
706+#~ msgid "Confirm"
707+#~ msgstr "Potvrdi"
708+
709+#~ msgid "Type or say a command"
710+#~ msgstr "Upišite ili izgovorite naredbu"
711+
712+#~ msgid "Loading. Please Wait..."
713+#~ msgstr "Učitavanje. Molim pričekajte..."
714+
715+#~ msgid "Speak Now..."
716+#~ msgstr "Recite..."
717+
718+#~ msgid "Speaking..."
719+#~ msgstr "Govor..."
720+
721+#~ msgid "Search"
722+#~ msgstr "Pretraživanje"
po/hu.po+106−17
@@ -6,18 +6,17 @@
6msgid ""
6msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9−"Report-Msgid-Bugs-To: \n"
9+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+0000\n"
11+"PO-Revision-Date: 2015-09-21 12:40+0000\n"
12"Last-Translator: Richard Somlói <ricsipontaz@gmail.com>\n"
12"Last-Translator: Richard Somlói <ricsipontaz@gmail.com>\n"
13"Language-Team: Hungarian <hu@li.org>\n"
13"Language-Team: Hungarian <hu@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-22 06:01+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17749)\n"
20−"Language: hu\n"
21
20
22#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
23msgid "Password: "
22msgid "Password: "
@@ -74,7 +73,7 @@ msgstr "%a %p. %I.%M"
74#. en_GB example: "%a %b %d\u2003%l:%M %p" --> "Fri 31 Oct 1:00 PM"
73#. en_GB example: "%a %b %d\u2003%l:%M %p" --> "Fri 31 Oct 1:00 PM"
75#: plugins/Utils/relativetimeformatter.cpp:190
74#: plugins/Utils/relativetimeformatter.cpp:190
76msgid "%a %d %b %l:%M %p"
75msgid "%a %d %b %l:%M %p"
77−msgstr "%d. %b. %a, %p. %I.%M"
76+msgstr "%b. %d., %a %p. %I.%M"
78
77
79#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
78#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
80#. This format string is used for showing, on a 24-hour clock, times that happen yesterday.
79#. This format string is used for showing, on a 24-hour clock, times that happen yesterday.
@@ -114,11 +113,11 @@ msgstr "%a %H.%M"
114#. en_GB example: "%a %b %d\u2003%H:%M" --> "Fri 31 Oct 13:00"
113#. en_GB example: "%a %b %d\u2003%H:%M" --> "Fri 31 Oct 13:00"
115#: plugins/Utils/relativetimeformatter.cpp:234
114#: plugins/Utils/relativetimeformatter.cpp:234
116msgid "%a %d %b %H:%M"
115msgid "%a %d %b %H:%M"
117−msgstr "%d. %b., %a %H.%M"
116+msgstr "%b. %d., %a %H.%M"
118
117
119#: qml/Components/DelayedLockscreen.qml:49
118#: qml/Components/DelayedLockscreen.qml:49
120msgid "Device Locked"
119msgid "Device Locked"
121−msgstr "Eszköz lezárva"
120+msgstr "Az eszköz zárolva"
122
121
123#: qml/Components/DelayedLockscreen.qml:64
122#: qml/Components/DelayedLockscreen.qml:64
124msgid "You have been locked out due to too many failed passphrase attempts."
123msgid "You have been locked out due to too many failed passphrase attempts."
@@ -460,7 +459,7 @@ msgstr "Válasz"
460
459
461#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
460#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
462msgid "Call back"
461msgid "Call back"
463−msgstr ""
462+msgstr "Visszahívás"
464
463
465#: qml/Panel/Indicators/ModemInfoItem.qml:105
464#: qml/Panel/Indicators/ModemInfoItem.qml:105
466msgid "Unlock SIM"
465msgid "Unlock SIM"
@@ -554,7 +553,7 @@ msgstr "Folytatás"
554
553
555#: qml/Wizard/Pages/passwd-set.qml:61
554#: qml/Wizard/Pages/passwd-set.qml:61
556msgid "Choose your passcode"
555msgid "Choose your passcode"
557−msgstr "Jelkód kiválasztása"
556+msgstr "Jelkód megadása"
558
557
559#: qml/Wizard/Pages/passwd-set.qml:68
558#: qml/Wizard/Pages/passwd-set.qml:68
560msgid "Passphrase must be 4 characters long"
559msgid "Passphrase must be 4 characters long"
@@ -562,11 +561,11 @@ msgstr "A jelmondat legalább 4 karakter hosszú legyen"
562
561
563#: qml/Wizard/Pages/10-welcome.qml:27
562#: qml/Wizard/Pages/10-welcome.qml:27
564msgid "Hi!"
563msgid "Hi!"
565−msgstr "Üdv!"
564+msgstr "Üdvözöljük!"
566
565
567#: qml/Wizard/Pages/10-welcome.qml:44
566#: qml/Wizard/Pages/10-welcome.qml:44
568msgid "Welcome to your Ubuntu phone."
567msgid "Welcome to your Ubuntu phone."
569−msgstr "Üdvözöljük az Ubuntu telefonos változatában."
568+msgstr "Köszöntjük az Ubuntu telefonos változatában."
570
569
571#: qml/Wizard/Pages/10-welcome.qml:52
570#: qml/Wizard/Pages/10-welcome.qml:52
572msgid "Let’s get started."
571msgid "Let’s get started."
@@ -574,12 +573,12 @@ msgstr "Kezdjünk is bele."
574
573
575#: qml/Wizard/Pages/20-sim.qml:25
574#: qml/Wizard/Pages/20-sim.qml:25
576msgid "Add a SIM card and restart your device"
575msgid "Add a SIM card and restart your device"
577−msgstr "Helyezzen be egy SIM kártyát és indítsa újra az eszközét"
576+msgstr "Helyezzen be egy SIM kártyát és indítsa újra az eszközt"
578
577
579#: qml/Wizard/Pages/20-sim.qml:59
578#: qml/Wizard/Pages/20-sim.qml:59
580msgid "Without it, you won’t be able to make calls or use text messaging."
579msgid "Without it, you won’t be able to make calls or use text messaging."
581msgstr ""
580msgstr ""
582−"Anélkül nem indíthat vagy fogadhat hívásokat és nem küldhet vagy fogadhat "
581+"Anélkül nem indíthat vagy fogadhat hívásokat, és nem küldhet vagy fogadhat "
583"üzeneteket."
582"üzeneteket."
584
583
585#: qml/Wizard/Pages/20-sim.qml:73 qml/Wizard/Pages/40-wifi.qml:215
584#: qml/Wizard/Pages/20-sim.qml:73 qml/Wizard/Pages/40-wifi.qml:215
@@ -717,8 +716,98 @@ msgstr "〈 %1"
717msgid "%1 〉"
716msgid "%1 〉"
718msgstr "%1 〉"
717msgstr "%1 〉"
719
718
719+#~ msgid "Confirm"
720+#~ msgstr "Megerősítés"
721+
722+#~ msgid "Type or say a command"
723+#~ msgstr "Írjon be vagy mondjon ki egy parancsot"
724+
725+#~ msgid "Loading. Please Wait..."
726+#~ msgstr "Betöltés, kis türelmet…"
727+
728+#~ msgid "Speaking..."
729+#~ msgstr "Beszéd…"
730+
731+#~ msgid "Search"
732+#~ msgstr "Keresés"
733+
734+#~ msgid "Top edge"
735+#~ msgstr "Felső szél"
736+
737+#~ msgid "Close"
738+#~ msgstr "Bezárás"
739+
740+#~ msgid "Swipe up again to close the settings screen"
741+#~ msgstr "A beállítások bezárásához csúsztassa ujját újra felfelé"
742+
743+#~ msgid "Left edge"
744+#~ msgstr "Bal szél"
745+
746+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
747+#~ msgstr ""
748+#~ "Csúsztassa ujját a bal szélről az indítón található alkalmazások gyors "
749+#~ "eléréséhez"
750+
751+#~ msgid "Well done"
752+#~ msgstr "Rendben"
753+
754+#~ msgid "Skip intro"
755+#~ msgstr "A bemutató kihagyása"
756+
757+#~ msgid "Try swiping from the right edge to unlock the phone"
758+#~ msgstr "A telefon feloldásához csúsztassa ujját a jobb szélről"
759+
760+#~ msgid "Right edge"
761+#~ msgstr "Jobb szél"
762+
763+#~ msgid "Speak Now..."
764+#~ msgstr "Most beszéljen…"
765+
766+#~ msgid ""
767+#~ "You have now mastered the edge gestures and can start using the "
768+#~ "phone<br><br>Tap on the screen to start"
769+#~ msgstr ""
770+#~ "Elsajátította a gesztusokat, és megkezdheti a telefon "
771+#~ "használatát.<br><br>Koppintson a képernyőre a kezdéshez."
772+
773+#~ msgid "Try swiping from the top edge to access the indicators"
774+#~ msgstr "Az állapotmenük eléréséhez csúsztassa ujját a felső szélről"
775+
776+#~ msgid "Power off"
777+#~ msgstr "Kikapcsolás"
778+
779+#~ msgid "All"
780+#~ msgstr "Összes"
781+
782+#~ msgid "Favorites"
783+#~ msgstr "Kedvencek"
784+
785+#~ msgid "Store"
786+#~ msgstr "Áruház"
787+
788+#~ msgid "Done"
789+#~ msgstr "Kész"
790+
791+#~ msgid "Log out"
792+#~ msgstr "Kijelentkezés"
793+
794+#~ msgid "Reboot"
795+#~ msgstr "Újraindítás"
796+
797+#~ msgid "Shut down"
798+#~ msgstr "Leállítás"
799+
800+#~ msgid "Settings"
801+#~ msgstr "Beállítások"
802+
803+#~ msgid "Power"
804+#~ msgstr "Kikapcsolás"
805+
806+#~ msgid "Restart"
807+#~ msgstr "Újraindítás"
808+
809+#~ msgid "Manage Scopes"
810+#~ msgstr "Lencsék kezelése"
811+
720#~ msgid "Please re-enter"
812#~ msgid "Please re-enter"
721#~ msgstr "Próbálja újra"
813#~ msgstr "Próbálja újra"
722−
723−#~ msgid "Click here to finish."
724−#~ msgstr "Kattintson ide a befejezéshez."
po/hy.po+72−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -706,5 +706,74 @@ msgstr ""
706msgid "%1 〉"
706msgid "%1 〉"
707msgstr ""
707msgstr ""
708
708
709+#~ msgid "Confirm"
710+#~ msgstr "Հաստատել"
711+
712+#~ msgid "Type or say a command"
713+#~ msgstr "Գրիր կամ ասա կոմմենտը"
714+
715+#~ msgid "Speaking..."
716+#~ msgstr "Խոսում եմ..."
717+
718+#~ msgid "Search"
719+#~ msgstr "Որոնում"
720+
721+#~ msgid "Log out"
722+#~ msgstr "Ելք"
723+
724+#~ msgid "Reboot"
725+#~ msgstr "Վերաբեռնել"
726+
727+#~ msgid "Shut down"
728+#~ msgstr "Անջատել"
729+
730+#~ msgid "Power"
731+#~ msgstr "Էլեկտրասնուցում"
732+
733+#~ msgid "Restart"
734+#~ msgstr "Վերագործարկել"
735+
736+#~ msgid "Power off"
737+#~ msgstr "Անջատել սնուցման աղբյուրից"
738+
739+#~ msgid "Top edge"
740+#~ msgstr "Վերին եզրը"
741+
742+#~ msgid "Close"
743+#~ msgstr "Փակել"
744+
745+#~ msgid "Left edge"
746+#~ msgstr "Ձախ եզրը"
747+
748+#~ msgid "Well done"
749+#~ msgstr "Լավ է"
750+
751+#~ msgid "Right edge"
752+#~ msgstr "Աջ եզրը"
753+
754+#~ msgid "Settings"
755+#~ msgstr "Կարգավորումներ"
756+
757+#~ msgid "Favorites"
758+#~ msgstr "Նախընտրելի"
759+
760+#~ msgid "Store"
761+#~ msgstr "Խանութ"
762+
763+#~ msgid "Done"
764+#~ msgstr "Կատարված է"
765+
766+#~ msgid "Loading. Please Wait..."
767+#~ msgstr "Բեռնվում է: Խնդրում ենք սպասել..."
768+
769+#~ msgid "Speak Now..."
770+#~ msgstr "Հիմա խոսեք..."
771+
772+#~ msgid "All"
773+#~ msgstr "Բոլորը"
774+
709#~ msgid "Please re-enter"
775#~ msgid "Please re-enter"
710#~ msgstr "Խնդրում ենք նորից մուտքագրել"
776#~ msgstr "Խնդրում ենք նորից մուտքագրել"
777+
778+#~ msgid "Skip intro"
779+#~ msgstr "Բաց թողնել ներածությունը"
po/ia.po+84−7
@@ -6,18 +6,17 @@
6msgid ""
6msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9−"Report-Msgid-Bugs-To: \n"
9+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20−"Language: ia\n"
21
20
22#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
23msgid "Password: "
22msgid "Password: "
@@ -722,8 +721,86 @@ msgstr "〈 %1"
722msgid "%1 〉"
721msgid "%1 〉"
723msgstr "%1 〉"
722msgstr "%1 〉"
724
723
724+#~ msgid "Log out"
725+#~ msgstr "Clauder le Session"
726+
727+#~ msgid "Reboot"
728+#~ msgstr "Reinitiar"
729+
730+#~ msgid "Shut down"
731+#~ msgstr "Stoppar"
732+
733+#~ msgid "Power"
734+#~ msgstr "Energia"
735+
736+#~ msgid "Restart"
737+#~ msgstr "Re-Initiar"
738+
739+#~ msgid "Power off"
740+#~ msgstr "Stoppar le energia"
741+
742+#~ msgid "Top edge"
743+#~ msgstr "Bordo superior"
744+
745+#~ msgid "Try swiping from the top edge to access the indicators"
746+#~ msgstr "Proba striar le bordo superior pro acceder le indicatores"
747+
748+#~ msgid "Close"
749+#~ msgstr "Clauder"
750+
751+#~ msgid "Left edge"
752+#~ msgstr "Bordo sinistre"
753+
754+#~ msgid "Try swiping from the right edge to unlock the phone"
755+#~ msgstr "Proba striar le bordo dextere pro liberar le telephono"
756+
757+#~ msgid "Skip intro"
758+#~ msgstr "Saltar le introduction"
759+
760+#~ msgid "Right edge"
761+#~ msgstr "Bordo dextere"
762+
763+#~ msgid "Swipe up again to close the settings screen"
764+#~ msgstr "Stria novemente pro clauder le pagina del preparationes"
765+
766+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
767+#~ msgstr ""
768+#~ "Striar ab le sinistra pro revelar le lanceator pro un celere accesso al "
769+#~ "applicationes"
770+
771+#~ msgid "Well done"
772+#~ msgstr "Ben!"
773+
774+#~ msgid "Search"
775+#~ msgstr "Cercar"
776+
777+#~ msgid "Store"
778+#~ msgstr "Salvar"
779+
780+#~ msgid "Settings"
781+#~ msgstr "Preparationes"
782+
783+#~ msgid "Confirm"
784+#~ msgstr "Confirmar"
785+
786+#~ msgid "Type or say a command"
787+#~ msgstr "Scriber o dicer un commando"
788+
789+#~ msgid "Loading. Please Wait..."
790+#~ msgstr "Cargante. Attender per favor..."
791+
792+#~ msgid "Speak Now..."
793+#~ msgstr "Parlar Ora..."
794+
795+#~ msgid "Speaking..."
796+#~ msgstr "Parlante..."
797+
725#~ msgid "Please re-enter"
798#~ msgid "Please re-enter"
726#~ msgstr "Per favor re-inserer"
799#~ msgstr "Per favor re-inserer"
727
800
728−#~ msgid "Click here to finish."
801+#~ msgid ""
802+#~ "You have now mastered the edge gestures and can start using the "
803+#~ "phone<br><br>Tap on the screen to start"
729−#~ msgstr "Clicca ci pro finir"
804+#~ msgstr ""
805+#~ "Tu es ora maestrate le gestos del bordo e pote initiar usar le "
806+#~ "telephono<br><br>colpar sur le schermo pro initiar"
po/id.po+94−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -709,5 +709,96 @@ msgstr ""
709msgid "%1 〉"
709msgid "%1 〉"
710msgstr ""
710msgstr ""
711
711
712+#~ msgid "Close"
713+#~ msgstr "Tutup"
714+
715+#~ msgid "Loading. Please Wait..."
716+#~ msgstr "Memuat. Mohon Tunggu..."
717+
718+#~ msgid "Speaking..."
719+#~ msgstr "Berbicara..."
720+
721+#~ msgid "Confirm"
722+#~ msgstr "Konfirmasi"
723+
724+#~ msgid "Top edge"
725+#~ msgstr "Tepi atas"
726+
727+#~ msgid "Try swiping from the top edge to access the indicators"
728+#~ msgstr "Coba usap dari tepi atas untuk mengakses indikator"
729+
730+#~ msgid "Swipe up again to close the settings screen"
731+#~ msgstr "Usap ke atas lagi untuk menutup layar pengaturan"
732+
733+#~ msgid "Left edge"
734+#~ msgstr "Tepi kiri"
735+
736+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
737+#~ msgstr "Usap dari tepi kiri menampilkan peluncur untuk akses cepat aplikasi"
738+
739+#~ msgid "Skip intro"
740+#~ msgstr "Lewati pengenalan"
741+
742+#~ msgid "Try swiping from the right edge to unlock the phone"
743+#~ msgstr "Coba usap dari tepi kanan untuk membuka kunci telepon"
744+
745+#~ msgid "Right edge"
746+#~ msgstr "Tepi kanan"
747+
748+#~ msgid "Log out"
749+#~ msgstr "Log keluar"
750+
751+#~ msgid "Reboot"
752+#~ msgstr "Boot ulang"
753+
754+#~ msgid "Shut down"
755+#~ msgstr "Matikan"
756+
757+#~ msgid "Power"
758+#~ msgstr "Daya"
759+
760+#~ msgid "Restart"
761+#~ msgstr "Nyalakan ulang"
762+
763+#~ msgid "Power off"
764+#~ msgstr "Matikan"
765+
766+#~ msgid "Settings"
767+#~ msgstr "Pengaturan"
768+
769+#~ msgid "Search"
770+#~ msgstr "Cari"
771+
772+#~ msgid "Done"
773+#~ msgstr "Selesai"
774+
775+#~ msgid "Type or say a command"
776+#~ msgstr "Ketik atau ucapkan sebuah perintah"
777+
778+#~ msgid "Speak Now..."
779+#~ msgstr "Bicaralah Sekarang..."
780+
781+#~ msgid "All"
782+#~ msgstr "Semua"
783+
784+#~ msgid "Favorites"
785+#~ msgstr "Favorit"
786+
787+#~ msgid "Manage Scopes"
788+#~ msgstr "Kelola Skup"
789+
790+#~ msgid "Store"
791+#~ msgstr "Simpan"
792+
712#~ msgid "Please re-enter"
793#~ msgid "Please re-enter"
713#~ msgstr "Harap masukkan lagi"
794#~ msgstr "Harap masukkan lagi"
795+
796+#~ msgid "Well done"
797+#~ msgstr "Bagus sekali"
798+
799+#~ msgid ""
800+#~ "You have now mastered the edge gestures and can start using the "
801+#~ "phone<br><br>Tap on the screen to start"
802+#~ msgstr ""
803+#~ "Anda kini telah menguasai gestur tepi dan dapat mulai memakai "
804+#~ "telepon<br><br>Ketuk pada layar untuk mulai"
po/is.po+95−3
@@ -10,15 +10,15 @@ msgstr ""
10"Project-Id-Version: po_unity8-is\n"
10"Project-Id-Version: po_unity8-is\n"
11"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
12"POT-Creation-Date: 2015-08-25 14:53+0200\n"
12"POT-Creation-Date: 2015-08-25 14:53+0200\n"
13−"PO-Revision-Date: 2015-05-14 09:20+0000\n"
13+"PO-Revision-Date: 2014-11-13 09:32+0000\n"
14"Last-Translator: Sveinn í Felli <sv1@fellsnet.is>\n"
14"Last-Translator: Sveinn í Felli <sv1@fellsnet.is>\n"
15"Language-Team: Icelandic <translation-team-is@lists.sourceforge.net>\n"
15"Language-Team: Icelandic <translation-team-is@lists.sourceforge.net>\n"
16"MIME-Version: 1.0\n"
16"MIME-Version: 1.0\n"
17"Content-Type: text/plain; charset=UTF-8\n"
17"Content-Type: text/plain; charset=UTF-8\n"
18"Content-Transfer-Encoding: 8bit\n"
18"Content-Transfer-Encoding: 8bit\n"
19"Plural-Forms: nplurals=2; plural=n != 1;\n"
19"Plural-Forms: nplurals=2; plural=n != 1;\n"
20−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
20+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
21−"X-Generator: Launchpad (build 17720)\n"
21+"X-Generator: Launchpad (build 17746)\n"
22"Language: is\n"
22"Language: is\n"
23
23
24#: plugins/LightDM/Greeter.cpp:112
24#: plugins/LightDM/Greeter.cpp:112
@@ -715,5 +715,97 @@ msgstr ""
715msgid "%1 〉"
715msgid "%1 〉"
716msgstr ""
716msgstr ""
717
717
718+#~ msgid "Skip intro"
719+#~ msgstr "Hoppa yfir kynningu"
720+
721+#~ msgid "Right edge"
722+#~ msgstr "Hægri brún"
723+
724+#~ msgid "Top edge"
725+#~ msgstr "Efri brún"
726+
727+#~ msgid "Close"
728+#~ msgstr "Loka"
729+
730+#~ msgid "Left edge"
731+#~ msgstr "Vinstri brún"
732+
733+#~ msgid "Well done"
734+#~ msgstr "Vel gert"
735+
736+#~ msgid "Confirm"
737+#~ msgstr "Staðfesta"
738+
739+#~ msgid "Speaking..."
740+#~ msgstr "Tala..."
741+
742+#~ msgid "Search"
743+#~ msgstr "Leita"
744+
745+#~ msgid "Try swiping from the right edge to unlock the phone"
746+#~ msgstr ""
747+#~ "Prófaðu að strjúka fingrinum frá hægri brúninni til að aflæsa símanum þínum."
748+
749+#~ msgid "Try swiping from the top edge to access the indicators"
750+#~ msgstr "Reyndu að strjúka frá toppi til að fá aðgang að tilkynningum"
751+
752+#~ msgid "Swipe up again to close the settings screen"
753+#~ msgstr "Strjúktu upp til að loka stillingum"
754+
755+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
756+#~ msgstr "Strjúktu frá vinstri til að afhjúpa flýtiræsi forrita"
757+
758+#~ msgid ""
759+#~ "You have now mastered the edge gestures and can start using the "
760+#~ "phone<br><br>Tap on the screen to start"
761+#~ msgstr ""
762+#~ "Þú ert núna með æfingu í að nota skjáhreyfingar og getur því farið að nota "
763+#~ "símann<br><br>Sláðu létt á skjáinn til að byrja"
764+
765+#~ msgid "Type or say a command"
766+#~ msgstr "Skrifaðu eða segðu skipun"
767+
768+#~ msgid "Loading. Please Wait..."
769+#~ msgstr "Hleð. Bíddu aðeins..."
770+
771+#~ msgid "Speak Now..."
772+#~ msgstr "Tala núna..."
773+
774+#~ msgid "Log out"
775+#~ msgstr "Útskráning"
776+
777+#~ msgid "Reboot"
778+#~ msgstr "Endurræsa"
779+
780+#~ msgid "Power"
781+#~ msgstr "Aflstjórnun"
782+
783+#~ msgid "Shut down"
784+#~ msgstr "Slökkva á tölvunni"
785+
786+#~ msgid "Settings"
787+#~ msgstr "Stillingar"
788+
789+#~ msgid "Restart"
790+#~ msgstr "Endurræsa"
791+
792+#~ msgid "Power off"
793+#~ msgstr "Slökkva"
794+
795+#~ msgid "All"
796+#~ msgstr "Allt"
797+
798+#~ msgid "Favorites"
799+#~ msgstr "Eftirlæti"
800+
801+#~ msgid "Store"
802+#~ msgstr "Geyma"
803+
804+#~ msgid "Done"
805+#~ msgstr "Lokið"
806+
718#~ msgid "Please re-enter"
807#~ msgid "Please re-enter"
719#~ msgstr "Settu aftur inn"
808#~ msgstr "Settu aftur inn"
809+
810+#~ msgid "Manage Scopes"
811+#~ msgstr "Sýsla með leitarsvið"
po/it.po+100−7
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -29,7 +29,7 @@ msgstr "Blocca scorciatoia"
29
29
30#: plugins/Unity/Launcher/launcheritem.cpp:52
30#: plugins/Unity/Launcher/launcheritem.cpp:52
31msgid "Quit"
31msgid "Quit"
32−msgstr ""
32+msgstr "Esci"
33
33
34#: plugins/Unity/Launcher/launcheritem.cpp:106
34#: plugins/Unity/Launcher/launcheritem.cpp:106
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
@@ -463,7 +463,7 @@ msgstr "Rispondi"
463
463
464#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
464#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
465msgid "Call back"
465msgid "Call back"
466−msgstr ""
466+msgstr "Richiama"
467
467
468#: qml/Panel/Indicators/ModemInfoItem.qml:105
468#: qml/Panel/Indicators/ModemInfoItem.qml:105
469msgid "Unlock SIM"
469msgid "Unlock SIM"
@@ -722,8 +722,101 @@ msgstr "〈 %1"
722msgid "%1 〉"
722msgid "%1 〉"
723msgstr "%1 〉"
723msgstr "%1 〉"
724
724
725+#~ msgid "Confirm"
726+#~ msgstr "Conferma"
727+
728+#~ msgid "Type or say a command"
729+#~ msgstr "Scrivere o pronunciare un comando"
730+
731+#~ msgid "Loading. Please Wait..."
732+#~ msgstr "Caricamento. Attendere..."
733+
734+#~ msgid "Speak Now..."
735+#~ msgstr "Parla ora..."
736+
737+#~ msgid "Speaking..."
738+#~ msgstr "Sto parlando..."
739+
740+#~ msgid "Search"
741+#~ msgstr "Cerca"
742+
743+#~ msgid "Right edge"
744+#~ msgstr "Bordo destro"
745+
746+#~ msgid "Skip intro"
747+#~ msgstr "Salta introduzione"
748+
749+#~ msgid "Top edge"
750+#~ msgstr "Bordo superiore"
751+
752+#~ msgid "Close"
753+#~ msgstr "Chiudi"
754+
755+#~ msgid "Left edge"
756+#~ msgstr "Bordo sinistro"
757+
758+#~ msgid "Try swiping from the top edge to access the indicators"
759+#~ msgstr ""
760+#~ "Provare a far scorrere dal bordo in alto per accedere agli indicatori"
761+
762+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
763+#~ msgstr ""
764+#~ "Far scorrere il bordo sinistro per mostrare il Launcher e avere un rapido "
765+#~ "accesso alle applicazioni"
766+
767+#~ msgid "Well done"
768+#~ msgstr "Ben fatto"
769+
770+#~ msgid "Try swiping from the right edge to unlock the phone"
771+#~ msgstr "Provare a far scorrere dal bordo destro per sbloccare il telefono"
772+
773+#~ msgid ""
774+#~ "You have now mastered the edge gestures and can start using the "
775+#~ "phone<br><br>Tap on the screen to start"
776+#~ msgstr ""
777+#~ "L'apprendimento dei gesti è stato completato. È ora possibile iniziare a "
778+#~ "usare il telefono.<br><br>Toccare lo schermo per iniziare"
779+
780+#~ msgid "All"
781+#~ msgstr "Tutto"
782+
783+#~ msgid "Favorites"
784+#~ msgstr "Preferiti"
785+
786+#~ msgid "Store"
787+#~ msgstr "Store"
788+
789+#~ msgid "Power off"
790+#~ msgstr "Spegni"
791+
792+#~ msgid "Done"
793+#~ msgstr "Fatto"
794+
795+#~ msgid "Log out"
796+#~ msgstr "Termina sessione"
797+
798+#~ msgid "Reboot"
799+#~ msgstr "Riavvia"
800+
801+#~ msgid "Shut down"
802+#~ msgstr "Spegni"
803+
804+#~ msgid "Settings"
805+#~ msgstr "Impostazioni"
806+
807+#~ msgid "Power"
808+#~ msgstr "Alimentazione"
809+
810+#~ msgid "Restart"
811+#~ msgstr "Riavvia"
812+
813+#~ msgid "Manage Scopes"
814+#~ msgstr "Gestisci Scope"
815+
725#~ msgid "Please re-enter"
816#~ msgid "Please re-enter"
726#~ msgstr "Inserire nuovamente"
817#~ msgstr "Inserire nuovamente"
727
818
728−#~ msgid "Click here to finish."
819+#~ msgid "Swipe up again to close the settings screen"
729−#~ msgstr "Fare clic qui per terminare."
820+#~ msgstr ""
821+#~ "Far scorrere nuovamente verso l'alto per chiudere la schermata delle "
822+#~ "impostazioni"
po/ja.po+93−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+0000\n"
11+"PO-Revision-Date: 2014-11-20 05:08+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -701,5 +701,95 @@ msgstr ""
701msgid "%1 〉"
701msgid "%1 〉"
702msgstr ""
702msgstr ""
703
703
704+#~ msgid "Close"
705+#~ msgstr "閉じる"
706+
707+#~ msgid "Top edge"
708+#~ msgstr "上端"
709+
710+#~ msgid "Try swiping from the top edge to access the indicators"
711+#~ msgstr "インジケーターにアクセスするには上端からスワイプしてみてください"
712+
713+#~ msgid "Left edge"
714+#~ msgstr "左端"
715+
716+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
717+#~ msgstr "アプリに素早くアクセスできるLauncherを表示するには左からスワイプしてください"
718+
719+#~ msgid "Swipe up again to close the settings screen"
720+#~ msgstr "設定画面を閉じるにはもう一度上にスワイプしてください"
721+
722+#~ msgid "Skip intro"
723+#~ msgstr "導入ガイドをスキップ"
724+
725+#~ msgid "Right edge"
726+#~ msgstr "右端"
727+
728+#~ msgid "Speaking..."
729+#~ msgstr "入力中..."
730+
731+#~ msgid "Loading. Please Wait..."
732+#~ msgstr "読み込み中です。お待ちください..."
733+
734+#~ msgid "Speak Now..."
735+#~ msgstr "音声入力を開始..."
736+
737+#~ msgid "Confirm"
738+#~ msgstr "確認"
739+
740+#~ msgid "Search"
741+#~ msgstr "検索"
742+
743+#~ msgid "Well done"
744+#~ msgstr "よくできました!"
745+
746+#~ msgid "Try swiping from the right edge to unlock the phone"
747+#~ msgstr "アンロックするには右端からスワイプしてみてください"
748+
749+#~ msgid ""
750+#~ "You have now mastered the edge gestures and can start using the "
751+#~ "phone<br><br>Tap on the screen to start"
752+#~ msgstr ""
753+#~ "これでスマートフォンの操作に必要な、画面端を用いたジェスチャーを習得できました。<br><br>利用を開始するなら画面をタップしてください"
754+
755+#~ msgid "Power off"
756+#~ msgstr "電源を切る"
757+
758+#~ msgid "All"
759+#~ msgstr "すべて"
760+
761+#~ msgid "Favorites"
762+#~ msgstr "お気に入り"
763+
764+#~ msgid "Done"
765+#~ msgstr "完了"
766+
767+#~ msgid "Store"
768+#~ msgstr "保存"
769+
770+#~ msgid "Type or say a command"
771+#~ msgstr "コマンドを音声かキーボードから入力"
772+
773+#~ msgid "Log out"
774+#~ msgstr "ログアウト"
775+
776+#~ msgid "Reboot"
777+#~ msgstr "再起動"
778+
779+#~ msgid "Shut down"
780+#~ msgstr "シャットダウン"
781+
782+#~ msgid "Settings"
783+#~ msgstr "設定"
784+
785+#~ msgid "Power"
786+#~ msgstr "電源"
787+
788+#~ msgid "Restart"
789+#~ msgstr "再起動"
790+
791+#~ msgid "Manage Scopes"
792+#~ msgstr "Scopeの管理"
793+
704#~ msgid "Please re-enter"
794#~ msgid "Please re-enter"
705#~ msgstr "再入力してください"
795#~ msgstr "再入力してください"
po/km.po+93−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -709,3 +709,93 @@ msgstr "〈 %1"
709#, qt-format
709#, qt-format
710msgid "%1 〉"
710msgid "%1 〉"
711msgstr "%1 〉"
711msgstr "%1 〉"
712+
713+#~ msgid "Try swiping from the right edge to unlock the phone"
714+#~ msgstr "សាកល្បង​​អូស​ពី​គែម​ស្ដាំ​ ដើម្បី​ដោះ​សោ​ទូរស័ព្ទ"
715+
716+#~ msgid "Right edge"
717+#~ msgstr "គែម​ស្ដាំ"
718+
719+#~ msgid "Skip intro"
720+#~ msgstr "រំលង​ការ​ណែនាំ"
721+
722+#~ msgid "Top edge"
723+#~ msgstr "គែម​ខាង​លើ"
724+
725+#~ msgid "Try swiping from the top edge to access the indicators"
726+#~ msgstr "សាកល្បង​អូស​ពី​គែម​ខាង​លើ ដើម្បី​ចូល​ដំណើរការ​សញ្ញា"
727+
728+#~ msgid "Close"
729+#~ msgstr "បិទ"
730+
731+#~ msgid "Swipe up again to close the settings screen"
732+#~ msgstr "អូស​ឡើង​លើ​ម្ដងទៀត ដើម្បី​បិទ​ការ​កំណត់​អេក្រង់"
733+
734+#~ msgid "Left edge"
735+#~ msgstr "គែមឆ្វេង"
736+
737+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
738+#~ msgstr ""
739+#~ "អូស​ពី​គែម​ឆ្វេង "
740+#~ "ដើម្បី​បង្ហាញ​កម្មវិធី​ចាប់ផ្ដើម​សម្រាប់​ចូល​ដំណើរ​ការ​កម្មវិធី​រហ័ស"
741+
742+#~ msgid "Well done"
743+#~ msgstr "ធ្វើ​បាន​ល្អ"
744+
745+#~ msgid "Type or say a command"
746+#~ msgstr "បញ្ចូល ឬ​និយាយ​ពាក្យ​បញ្ជា"
747+
748+#~ msgid "Loading. Please Wait..."
749+#~ msgstr "សូម​រង់ចាំ កំពុង​ផ្ទុក..."
750+
751+#~ msgid "Speak Now..."
752+#~ msgstr "និយាយ​ឥឡូវ..."
753+
754+#~ msgid "Confirm"
755+#~ msgstr "បញ្ជាក់"
756+
757+#~ msgid "Speaking..."
758+#~ msgstr "កំពុង​និយាយ..."
759+
760+#~ msgid "Search"
761+#~ msgstr "ស្វែង​រក"
762+
763+#~ msgid ""
764+#~ "You have now mastered the edge gestures and can start using the "
765+#~ "phone<br><br>Tap on the screen to start"
766+#~ msgstr ""
767+#~ "ឥឡូវ​អ្នក​បាន​ពិនិត្យ​កាយវិការ​គែម​ "
768+#~ "និង​អាច​ចាប់ផ្ដើម​ប្រើ​ទូរស័ព្ទ<br><br>ប៉ះ លើ​អេក្រង់​ដើម្បី​ចាប់ផ្ដើម"
769+
770+#~ msgid "All"
771+#~ msgstr "ទាំងអស់"
772+
773+#~ msgid "Favorites"
774+#~ msgstr "និយម"
775+
776+#~ msgid "Store"
777+#~ msgstr "រក្សាទុក"
778+
779+#~ msgid "Power off"
780+#~ msgstr "បិទ"
781+
782+#~ msgid "Done"
783+#~ msgstr "ធ្វើរួច"
784+
785+#~ msgid "Power"
786+#~ msgstr "បីទ/បើក"
787+
788+#~ msgid "Log out"
789+#~ msgstr "ចេញ"
790+
791+#~ msgid "Shut down"
792+#~ msgstr "បិទ"
793+
794+#~ msgid "Reboot"
795+#~ msgstr "ចាប់ផ្ដើម​ឡើងវិញ"
796+
797+#~ msgid "Settings"
798+#~ msgstr "ការកំណត់"
799+
800+#~ msgid "Restart"
801+#~ msgstr "ចាប់​ផ្ដើម​ឡើង​វិញ"
po/kn.po+21−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -701,3 +701,21 @@ msgstr ""
701#, qt-format
701#, qt-format
702msgid "%1 〉"
702msgid "%1 〉"
703msgstr ""
703msgstr ""
704+
705+#~ msgid "Confirm"
706+#~ msgstr "ಖಚಿತಪಡಿಸು"
707+
708+#~ msgid "Type or say a command"
709+#~ msgstr "ಒಂದು ಕಮ್ಯಾಂಡ್ ಅನ್ನು ಹೇಳಿ ಅಥವಾ ಟೈಪ್ ಮಾಡಿ"
710+
711+#~ msgid "Loading. Please Wait..."
712+#~ msgstr "ಲೋಡ್ ಆಗುತ್ತಿದೆ. ದಯವಿಟ್ಟು ನಿರೀಕ್ಷಿಸಿ ..."
713+
714+#~ msgid "Speak Now..."
715+#~ msgstr "ಈಗ ಮಾತನಾಡಿ ..."
716+
717+#~ msgid "Speaking..."
718+#~ msgstr "ಮಾತನಾಡುತಿದ್ದೀರಿ"
719+
720+#~ msgid "Search"
721+#~ msgstr "ಹುಡುಕು"
po/ko.po+93−6
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -698,8 +698,95 @@ msgstr "〈 %1"
698msgid "%1 〉"
698msgid "%1 〉"
699msgstr "%1 〉"
699msgstr "%1 〉"
700
700
701+#~ msgid "Search"
702+#~ msgstr "검색"
703+
704+#~ msgid "Skip intro"
705+#~ msgstr "도입부 건너뛰기"
706+
707+#~ msgid "Right edge"
708+#~ msgstr "오른쪽 끝"
709+
710+#~ msgid "Close"
711+#~ msgstr "닫기"
712+
713+#~ msgid "Confirm"
714+#~ msgstr "확인"
715+
716+#~ msgid "Well done"
717+#~ msgstr "잘하셨습니다."
718+
719+#~ msgid "Type or say a command"
720+#~ msgstr "명령을 입력하거나 말하세요."
721+
722+#~ msgid "Speak Now..."
723+#~ msgstr "지금 말하세요..."
724+
725+#~ msgid "Speaking..."
726+#~ msgstr "말하는 중..."
727+
728+#~ msgid "Power off"
729+#~ msgstr "전원 끄기"
730+
731+#~ msgid "Done"
732+#~ msgstr "완료"
733+
734+#~ msgid "All"
735+#~ msgstr "모두"
736+
737+#~ msgid "Favorites"
738+#~ msgstr "즐겨찾기"
739+
740+#~ msgid "Store"
741+#~ msgstr "장터"
742+
743+#~ msgid "Log out"
744+#~ msgstr "로그아웃"
745+
746+#~ msgid "Reboot"
747+#~ msgstr "다시 시작"
748+
749+#~ msgid "Power"
750+#~ msgstr "전원"
751+
752+#~ msgid "Shut down"
753+#~ msgstr "컴퓨터 끄기"
754+
755+#~ msgid "Settings"
756+#~ msgstr "설정"
757+
758+#~ msgid "Top edge"
759+#~ msgstr "윗쪽 가장자리"
760+
761+#~ msgid "Left edge"
762+#~ msgstr "왼쪽 가장자리"
763+
764+#~ msgid ""
765+#~ "You have now mastered the edge gestures and can start using the "
766+#~ "phone<br><br>Tap on the screen to start"
767+#~ msgstr ""
768+#~ "여러분은 가장자리에서 끌어오기 제스쳐를 완벽히 익히셨고 휴대 전화를 사용할 수 있습니다. <br><br> 스크린을 터치해서 시작하세요."
769+
770+#~ msgid "Loading. Please Wait..."
771+#~ msgstr "불러오는 중 입니다. 짐시 기다려주십시오..."
772+
773+#~ msgid "Try swiping from the top edge to access the indicators"
774+#~ msgstr "위쪽 가장자리에서 쓸면 알림에 접근할 수 있습니다."
775+
776+#~ msgid "Try swiping from the right edge to unlock the phone"
777+#~ msgstr "오른쪽 가장자리에서 쓸면 휴대 전화의 잠금을 해제합니다."
778+
779+#~ msgid "Swipe up again to close the settings screen"
780+#~ msgstr "위쪽으로 쓸면 설정 화면을 닫습니다."
781+
782+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
783+#~ msgstr "왼쪽에서 쓸면 런처를 표시해 프로그램에 빠르게 접근할 수 있습니다."
784+
785+#~ msgid "Restart"
786+#~ msgstr "다시 시작"
787+
788+#~ msgid "Manage Scopes"
789+#~ msgstr "스코프 관리"
790+
701#~ msgid "Please re-enter"
791#~ msgid "Please re-enter"
702#~ msgstr "다시 입력해주십시오."
792#~ msgstr "다시 입력해주십시오."
703−
704−#~ msgid "Click here to finish."
705−#~ msgstr "끝내려면 눌러주십시오."
po/ku.po+87−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -707,3 +707,87 @@ msgstr ""
707#, qt-format
707#, qt-format
708msgid "%1 〉"
708msgid "%1 〉"
709msgstr ""
709msgstr ""
710+
711+#~ msgid "Log out"
712+#~ msgstr "Derkeve"
713+
714+#~ msgid "Reboot"
715+#~ msgstr "Dîsdestpêkirin"
716+
717+#~ msgid "Shut down"
718+#~ msgstr "Bigire"
719+
720+#~ msgid "Close"
721+#~ msgstr "Bigire"
722+
723+#~ msgid "Well done"
724+#~ msgstr "Aferim"
725+
726+#~ msgid "Settings"
727+#~ msgstr "Eyar"
728+
729+#~ msgid "Search"
730+#~ msgstr "Lêgerîn"
731+
732+#~ msgid "Power"
733+#~ msgstr "Hêz"
734+
735+#~ msgid "Try swiping from the top edge to access the indicators"
736+#~ msgstr "JI bo xwe bigihînî danezanan ji kêleka jorê kaş bike"
737+
738+#~ msgid "Top edge"
739+#~ msgstr "Kêleka jorê"
740+
741+#~ msgid "Skip intro"
742+#~ msgstr "Danasînê derbas bike"
743+
744+#~ msgid "Try swiping from the right edge to unlock the phone"
745+#~ msgstr "Ji bo kilîdê vekî ji kêleka rastê kaş bike"
746+
747+#~ msgid "Right edge"
748+#~ msgstr "Kêleka rastê"
749+
750+#~ msgid "Swipe up again to close the settings screen"
751+#~ msgstr "Ji bo girtina ekrana eyaran dîsa bi jorê ve kaş bike"
752+
753+#~ msgid "Left edge"
754+#~ msgstr "Kêleka çepê"
755+
756+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
757+#~ msgstr "Ji bo vekirina gihînera lezgîn ya bernamokan ji kêleka çepê kaş bike"
758+
759+#~ msgid ""
760+#~ "You have now mastered the edge gestures and can start using the "
761+#~ "phone<br><br>Tap on the screen to start"
762+#~ msgstr ""
763+#~ "Tu tevgerên kêlekê fêr bûyî<br><br>Ji bo destpêkirinê ekranê bipelîne"
764+
765+#~ msgid "Power off"
766+#~ msgstr "Bigire"
767+
768+#~ msgid "Type or say a command"
769+#~ msgstr "Fermanekê bêje yan binivîse"
770+
771+#~ msgid "Loading. Please Wait..."
772+#~ msgstr "Bar dike. Tika ye li bendê bî..."
773+
774+#~ msgid "Speak Now..."
775+#~ msgstr "Niha biaxive..."
776+
777+#~ msgid "All"
778+#~ msgstr "Hemû"
779+
780+#~ msgid "Confirm"
781+#~ msgstr "Erê bike"
782+
783+#~ msgid "Favorites"
784+#~ msgstr "Bijare"
785+
786+#~ msgid "Store"
787+#~ msgstr "Firoşgeh"
788+
789+#~ msgid "Done"
790+#~ msgstr "Qediya"
791+
792+#~ msgid "Speaking..."
793+#~ msgstr "Diaxive..."
po/ky.po+21−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -701,3 +701,21 @@ msgstr ""
701#, qt-format
701#, qt-format
702msgid "%1 〉"
702msgid "%1 〉"
703msgstr ""
703msgstr ""
704+
705+#~ msgid "Confirm"
706+#~ msgstr "Аныктоо"
707+
708+#~ msgid "Type or say a command"
709+#~ msgstr "Команданы териңиз же айтыңыз"
710+
711+#~ msgid "Loading. Please Wait..."
712+#~ msgstr "Жүктөлүүдө. Күтө туруңуз..."
713+
714+#~ msgid "Speak Now..."
715+#~ msgstr "Азыр сүйлөңүз..."
716+
717+#~ msgid "Speaking..."
718+#~ msgstr "Сүйлөнүүдө..."
719+
720+#~ msgid "Search"
721+#~ msgstr "Издөө"
po/lo.po+21−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -701,3 +701,21 @@ msgstr ""
701#, qt-format
701#, qt-format
702msgid "%1 〉"
702msgid "%1 〉"
703msgstr ""
703msgstr ""
704+
705+#~ msgid "Close"
706+#~ msgstr "ປິດ"
707+
708+#~ msgid "Well done"
709+#~ msgstr "ດີຫຼາຍ"
710+
711+#~ msgid "Confirm"
712+#~ msgstr "ຢືນຢັນ"
713+
714+#~ msgid "Speaking..."
715+#~ msgstr "ກໍາລັງເວົ້າ"
716+
717+#~ msgid "Speak Now..."
718+#~ msgstr "ເວົ້າໂລດ"
719+
720+#~ msgid "Search"
721+#~ msgstr "ຊອກຫາ"
po/lt.po+54−3
@@ -8,7 +8,7 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n%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: 2015-09-12 05:42+0000\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20−"X-Generator: Launchpad (build 17720)\n"
20+"X-Generator: Launchpad (build 17746)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:112
22#: plugins/LightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -702,3 +702,54 @@ msgstr ""
702#, qt-format
702#, qt-format
703msgid "%1 〉"
703msgid "%1 〉"
704msgstr ""
704msgstr ""
705+
706+#~ msgid "Try swiping from the top edge to access the indicators"
707+#~ msgstr ""
708+#~ "Pabandykite braukti nuo dešiniojo krašto, kad pasiektumėte indikatorius"
709+
710+#~ msgid "Top edge"
711+#~ msgstr "Viršutinis kraštas"
712+
713+#~ msgid "Close"
714+#~ msgstr "Užverti"
715+
716+#~ msgid "Swipe up again to close the settings screen"
717+#~ msgstr "Braukite aukštyn, kad užvertumėte nustatymų langą"
718+
719+#~ msgid "Left edge"
720+#~ msgstr "Kairysis kraštas"
721+
722+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
723+#~ msgstr ""
724+#~ "Braukite nuo kairiojo krašto, kad pamatytumėte skydelį greitam programų "
725+#~ "paleidimui"
726+
727+#~ msgid "Well done"
728+#~ msgstr "Šaunu"
729+
730+#~ msgid "Skip intro"
731+#~ msgstr "Praleisti įžangą"
732+
733+#~ msgid "Try swiping from the right edge to unlock the phone"
734+#~ msgstr "Pabandykite braukti nuo dešiniojo krašto, kad atrakintumėte telefoną"
735+
736+#~ msgid "Right edge"
737+#~ msgstr "Dešinysis kraštas"
738+
739+#~ msgid "Type or say a command"
740+#~ msgstr "Rašykite arba sakykite komandą"
741+
742+#~ msgid "Loading. Please Wait..."
743+#~ msgstr "Įkeliama. Prašom palaukti..."
744+
745+#~ msgid "Speaking..."
746+#~ msgstr "Kalbama..."
747+
748+#~ msgid "Speak Now..."
749+#~ msgstr "Kalbėkite..."
750+
751+#~ msgid "Confirm"
752+#~ msgstr "Patvirtinti"
753+
754+#~ msgid "Search"
755+#~ msgstr "Paieška"
po/lv.po+78−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+0000\n"
11+"PO-Revision-Date: 2015-02-28 16:18+0000\n"
12"Last-Translator: Rūdolfs Mazurs <Unknown>\n"
12"Last-Translator: Rūdolfs Mazurs <Unknown>\n"
13"Language-Team: Latvian <lv@li.org>\n"
13"Language-Team: Latvian <lv@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%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n"
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -715,5 +715,80 @@ msgstr "〈 %1"
715msgid "%1 〉"
715msgid "%1 〉"
716msgstr "%1 〉"
716msgstr "%1 〉"
717
717
718+#~ msgid "Confirm"
719+#~ msgstr "Apstiprināt"
720+
721+#~ msgid "Type or say a command"
722+#~ msgstr "Ievadiet vai pasakiet komandu"
723+
724+#~ msgid "Loading. Please Wait..."
725+#~ msgstr "Ladejas. Ludzu Uzgaidiet..."
726+
727+#~ msgid "Speak Now..."
728+#~ msgstr "Runajiet Tagad"
729+
730+#~ msgid "Speaking..."
731+#~ msgstr "Runa..."
732+
733+#~ msgid "Search"
734+#~ msgstr "Meklēt"
735+
736+#~ msgid "Right edge"
737+#~ msgstr "Labā mala"
738+
739+#~ msgid "Left edge"
740+#~ msgstr "Kreisā mala"
741+
742+#~ msgid "Top edge"
743+#~ msgstr "Augšējā mala"
744+
745+#~ msgid "Close"
746+#~ msgstr "Aizvērt"
747+
748+#~ msgid "Try swiping from the top edge to access the indicators"
749+#~ msgstr "Mēģiniet iesvelt no augšējās malas, lai piekļūt pie indikatoriem"
750+
751+#~ msgid "Well done"
752+#~ msgstr "Ļoti labi!"
753+
754+#~ msgid "Skip intro"
755+#~ msgstr "Izlaist Intro"
756+
757+#~ msgid "Try swiping from the right edge to unlock the phone"
758+#~ msgstr "Mēģiniet iesvelt no labās malas, lai atbloķētu tālruni"
759+
760+#~ msgid "Power off"
761+#~ msgstr "Izslēgt"
762+
763+#~ msgid "All"
764+#~ msgstr "Visi"
765+
766+#~ msgid "Favorites"
767+#~ msgstr "Iecienītās"
768+
769+#~ msgid "Done"
770+#~ msgstr "Pabeigts"
771+
772+#~ msgid "Store"
773+#~ msgstr "Veikals"
774+
775+#~ msgid "Reboot"
776+#~ msgstr "Pārstartēt"
777+
778+#~ msgid "Shut down"
779+#~ msgstr "Izslēgt"
780+
781+#~ msgid "Power"
782+#~ msgstr "Barošana"
783+
784+#~ msgid "Settings"
785+#~ msgstr "Iestatījumi"
786+
787+#~ msgid "Log out"
788+#~ msgstr "Izrakstīties"
789+
790+#~ msgid "Restart"
791+#~ msgstr "Pārstartēt"
792+
718#~ msgid "Please re-enter"
793#~ msgid "Please re-enter"
719#~ msgstr "Lūdzu, ievadiet vēlreiz"
794#~ msgstr "Lūdzu, ievadiet vēlreiz"
po/ml.po+53−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -701,3 +701,53 @@ msgstr ""
701#, qt-format
701#, qt-format
702msgid "%1 〉"
702msgid "%1 〉"
703msgstr ""
703msgstr ""
704+
705+#~ msgid "Skip intro"
706+#~ msgstr "ആമുഖം ഒഴിവാക്കുക"
707+
708+#~ msgid "Try swiping from the right edge to unlock the phone"
709+#~ msgstr "ഫോണ്‍ അണ്‍ലോക്ക് ചെയ്യാന്‍ വലതു വശത്തുനിന്ന് സ്വൈപ് ചെയ്ത് നോക്കുക"
710+
711+#~ msgid "Right edge"
712+#~ msgstr "വലത് മൂല"
713+
714+#~ msgid "Top edge"
715+#~ msgstr "മുകള്‍ വശം"
716+
717+#~ msgid "Try swiping from the top edge to access the indicators"
718+#~ msgstr "സൂചകങ്ങള്‍ ലഭ്യമാക്കാന്‍ മുകള്‍ വശത്തുനിന്നും സ്വൈപ് ചെയ്യുക"
719+
720+#~ msgid "Close"
721+#~ msgstr "അടക്കുക"
722+
723+#~ msgid "Swipe up again to close the settings screen"
724+#~ msgstr "ക്രമീകരണങ്ങളുടെ സ്ക്രീന്‍ അടക്കാന്‍ മുകളിലേക്ക് സ്വൈപ് ചെയ്യുക"
725+
726+#~ msgid "Left edge"
727+#~ msgstr "ഇടത് വശം"
728+
729+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
730+#~ msgstr ""
731+#~ "പ്രയോഗങ്ങള്‍ പെട്ടെന്ന് ലഭ്യമാക്കുന്ന വിക്ഷേപിക ലഭ്യമാക്കാന്‍ ഇടതു വശത്ത് "
732+#~ "നിന്നും സ്വൈപ് ചെയ്യുക"
733+
734+#~ msgid "Well done"
735+#~ msgstr "നന്നായി ചെയ്തിരിക്കുന്നു"
736+
737+#~ msgid "Confirm"
738+#~ msgstr "സ്ഥിരീകരിക്കുക"
739+
740+#~ msgid "Search"
741+#~ msgstr "തിരയുക"
742+
743+#~ msgid "Type or say a command"
744+#~ msgstr "ഒരു ആജ്ഞ പറയുകയോ ടൈപ്പുകയോ ചെയ്യുക"
745+
746+#~ msgid "Loading. Please Wait..."
747+#~ msgstr "വരുന്നു. ദയവായി കാത്തിരിക്കുക..."
748+
749+#~ msgid "Speaking..."
750+#~ msgstr "സംസാരിക്കുന്നു..."
751+
752+#~ msgid "Speak Now..."
753+#~ msgstr "ഇപ്പോള്‍ സംസാരിക്കുക..."
po/mr.po+33−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -701,3 +701,33 @@ msgstr ""
701#, qt-format
701#, qt-format
702msgid "%1 〉"
702msgid "%1 〉"
703msgstr ""
703msgstr ""
704+
705+#~ msgid "Skip intro"
706+#~ msgstr "परिचय वगळा"
707+
708+#~ msgid "Top edge"
709+#~ msgstr "वरचा काठ"
710+
711+#~ msgid "Try swiping from the top edge to access the indicators"
712+#~ msgstr "इंडिकेटर वापरण्याकरिता वरचा काठावरून स्वाइप करण्याचा प्रयत्न करा"
713+
714+#~ msgid "Close"
715+#~ msgstr "बंद करा"
716+
717+#~ msgid "Swipe up again to close the settings screen"
718+#~ msgstr "सेटिंग्ज स्क्रीन बंद करण्यासाठी पुन्हा एकदा स्वाइप करा"
719+
720+#~ msgid "Left edge"
721+#~ msgstr "डावा काठ"
722+
723+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
724+#~ msgstr "लाँचर वरील अॕप्प्स त्वरित वापरण्याकरिता डाव्या बाजूने स्वाइप करा"
725+
726+#~ msgid "Well done"
727+#~ msgstr "कौशल्यपूर्वक केले"
728+
729+#~ msgid "Try swiping from the right edge to unlock the phone"
730+#~ msgstr "फोन अनलॉक करण्यासाठी उजव्या काठावरुन स्वाइप करण्याचा प्रयत्न करा"
731+
732+#~ msgid "Right edge"
733+#~ msgstr "उजवा काठ"
po/ms.po+94−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -716,5 +716,96 @@ msgstr "〈 %1"
716msgid "%1 〉"
716msgid "%1 〉"
717msgstr "%1 〉"
717msgstr "%1 〉"
718
718
719+#~ msgid "Top edge"
720+#~ msgstr "Pinggir atas"
721+
722+#~ msgid "Try swiping from the top edge to access the indicators"
723+#~ msgstr "Cuba meleret dari pinggir atas untuk buka aktifkan telefon"
724+
725+#~ msgid "Close"
726+#~ msgstr "Tutup"
727+
728+#~ msgid "Swipe up again to close the settings screen"
729+#~ msgstr "Leret ke atas sekali lagi untuk menutup skrin tetapan"
730+
731+#~ msgid "Left edge"
732+#~ msgstr "Pinggir kiri"
733+
734+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
735+#~ msgstr "Leret dari kiri untuk munculkan pelancar untuk capaian pantas ke apl"
736+
737+#~ msgid "Well done"
738+#~ msgstr "Bagus"
739+
740+#~ msgid "Skip intro"
741+#~ msgstr "Langkau pengenalan"
742+
743+#~ msgid "Try swiping from the right edge to unlock the phone"
744+#~ msgstr "Cuba meleret dari pinggir kanan untuk buka aktifkan telefon"
745+
746+#~ msgid "Right edge"
747+#~ msgstr "Pinggir kanan"
748+
749+#~ msgid "Type or say a command"
750+#~ msgstr "Taip atau sebut satu perintah"
751+
752+#~ msgid "Loading. Please Wait..."
753+#~ msgstr "Memuatkan. Tunggu Sebentar..."
754+
755+#~ msgid "Speaking..."
756+#~ msgstr "Bercakap..."
757+
758+#~ msgid "Speak Now..."
759+#~ msgstr "Cakap Sekarang..."
760+
761+#~ msgid "Confirm"
762+#~ msgstr "Sahkan"
763+
764+#~ msgid "Search"
765+#~ msgstr "Gelintar"
766+
767+#~ msgid "Log out"
768+#~ msgstr "Daftar keluar"
769+
770+#~ msgid "Reboot"
771+#~ msgstr "But Semula"
772+
773+#~ msgid "Shut down"
774+#~ msgstr "Matikan"
775+
776+#~ msgid "Power"
777+#~ msgstr "Kuasa"
778+
779+#~ msgid "Restart"
780+#~ msgstr "Mula Semula"
781+
782+#~ msgid "Power off"
783+#~ msgstr "Tutup"
784+
785+#~ msgid "Settings"
786+#~ msgstr "Tetapan"
787+
788+#~ msgid "All"
789+#~ msgstr "Semua"
790+
791+#~ msgid "Favorites"
792+#~ msgstr "Kegemaran"
793+
794+#~ msgid "Store"
795+#~ msgstr "Kedai"
796+
797+#~ msgid "Done"
798+#~ msgstr "Selesai"
799+
719#~ msgid "Please re-enter"
800#~ msgid "Please re-enter"
720#~ msgstr "Sila masuk-semula"
801#~ msgstr "Sila masuk-semula"
802+
803+#~ msgid "Manage Scopes"
804+#~ msgstr "Urus Skop"
805+
806+#~ msgid ""
807+#~ "You have now mastered the edge gestures and can start using the "
808+#~ "phone<br><br>Tap on the screen to start"
809+#~ msgstr ""
810+#~ "Anda kini telah memahami gerak isyarat pinggir dan boleh mula gunakan "
811+#~ "telefon<br><br>Ketuk pada skrin untuk mula"
po/my.po+39−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -701,3 +701,39 @@ msgstr ""
701#, qt-format
701#, qt-format
702msgid "%1 〉"
702msgid "%1 〉"
703msgstr ""
703msgstr ""
704+
705+#~ msgid "Confirm"
706+#~ msgstr "အတည်ပြုပါ"
707+
708+#~ msgid "Type or say a command"
709+#~ msgstr "Command တစ်ခု ပြောပါ သို့မဟုတ် ရိုက်ထည့်ပါ"
710+
711+#~ msgid "Loading. Please Wait..."
712+#~ msgstr "ဖွင့်နေသည်။ ခဏစောင့်ပါ"
713+
714+#~ msgid "Speak Now..."
715+#~ msgstr "ယခုပြောပါ"
716+
717+#~ msgid "Speaking..."
718+#~ msgstr "ပြောနေသည်"
719+
720+#~ msgid "Search"
721+#~ msgstr "ရှာဖွေ"
722+
723+#~ msgid "Right edge"
724+#~ msgstr "ညာဖက် အစွန်း"
725+
726+#~ msgid "Skip intro"
727+#~ msgstr "မိတ်ဆက်ကိုကျော်မည်"
728+
729+#~ msgid "Top edge"
730+#~ msgstr "ထိပ် အစွန်း"
731+
732+#~ msgid "Close"
733+#~ msgstr "ပိတ်"
734+
735+#~ msgid "Left edge"
736+#~ msgstr "ဘယ်​ဖက် အစွန်း"
737+
738+#~ msgid "Well done"
739+#~ msgstr "ကောင်းအောင်ပြုလုပ်ခဲ့သည်"
po/nb.po+94−6
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -716,8 +716,96 @@ msgstr "〈 %1"
716msgid "%1 〉"
716msgid "%1 〉"
717msgstr "%1 〉"
717msgstr "%1 〉"
718
718
719+#~ msgid "Confirm"
720+#~ msgstr "Bekreft"
721+
722+#~ msgid "Type or say a command"
723+#~ msgstr "Skriv inn eller si en kommando"
724+
725+#~ msgid "Loading. Please Wait..."
726+#~ msgstr "Laster. Vennligs vent …"
727+
728+#~ msgid "Speak Now..."
729+#~ msgstr "Snakk nå …"
730+
731+#~ msgid "Speaking..."
732+#~ msgstr "Snakker …"
733+
734+#~ msgid "Search"
735+#~ msgstr "Søk"
736+
737+#~ msgid "Right edge"
738+#~ msgstr "Høyre kant"
739+
740+#~ msgid "Top edge"
741+#~ msgstr "Øvre kant"
742+
743+#~ msgid "Close"
744+#~ msgstr "Lukk"
745+
746+#~ msgid "Swipe up again to close the settings screen"
747+#~ msgstr "Sveip opp igjen for å lukke innstillingsmenyen"
748+
749+#~ msgid "Left edge"
750+#~ msgstr "Venstre kant"
751+
752+#~ msgid "Try swiping from the top edge to access the indicators"
753+#~ msgstr "Prøv å sveipe fra toppen for å få tilgang til innstillingene"
754+
755+#~ msgid "Skip intro"
756+#~ msgstr "Hopp over introduksjon"
757+
758+#~ msgid "Try swiping from the right edge to unlock the phone"
759+#~ msgstr "Prøv å sveipe fra høyre side for å låse opp telefonen"
760+
761+#~ msgid ""
762+#~ "You have now mastered the edge gestures and can start using the "
763+#~ "phone<br><br>Tap on the screen to start"
764+#~ msgstr ""
765+#~ "Du har nå mestret kantbevegelsene, og er klar til å bruke "
766+#~ "telefonen<br><br>Trykk på skjermen for å begynne"
767+
768+#~ msgid "All"
769+#~ msgstr "Alt"
770+
771+#~ msgid "Favorites"
772+#~ msgstr "Favoritter"
773+
774+#~ msgid "Store"
775+#~ msgstr "Butikk"
776+
777+#~ msgid "Power off"
778+#~ msgstr "Slå av"
779+
780+#~ msgid "Done"
781+#~ msgstr "Ferdig"
782+
783+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
784+#~ msgstr "Skyv fra venstre for å få tilgang til programoppstarteren"
785+
786+#~ msgid "Well done"
787+#~ msgstr "Godt jobba"
788+
789+#~ msgid "Log out"
790+#~ msgstr "Logg ut"
791+
792+#~ msgid "Reboot"
793+#~ msgstr "Start på nytt"
794+
795+#~ msgid "Shut down"
796+#~ msgstr "Slå av"
797+
798+#~ msgid "Power"
799+#~ msgstr "Strøm"
800+
801+#~ msgid "Settings"
802+#~ msgstr "Innstillinger"
803+
804+#~ msgid "Restart"
805+#~ msgstr "Start på nytt"
806+
807+#~ msgid "Manage Scopes"
808+#~ msgstr "Håndter virkefelt"
809+
719#~ msgid "Please re-enter"
810#~ msgid "Please re-enter"
720#~ msgstr "Skriv inn på nytt"
811#~ msgstr "Skriv inn på nytt"
721−
722−#~ msgid "Click here to finish."
723−#~ msgstr "Trykk her for å fullføre."
po/nl.po+94−6
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -721,8 +721,96 @@ msgstr "〈 %1"
721msgid "%1 〉"
721msgid "%1 〉"
722msgstr "%1 〉"
722msgstr "%1 〉"
723
723
724+#~ msgid "Confirm"
725+#~ msgstr "Bevestigen"
726+
727+#~ msgid "Type or say a command"
728+#~ msgstr "Een opdracht intypen of inspreken"
729+
730+#~ msgid "Loading. Please Wait..."
731+#~ msgstr "Bezig met laden. Even geduld a.u.b."
732+
733+#~ msgid "Speak Now..."
734+#~ msgstr "Nu inspreken…"
735+
736+#~ msgid "Speaking..."
737+#~ msgstr "Inspreken…"
738+
739+#~ msgid "Search"
740+#~ msgstr "Zoeken"
741+
742+#~ msgid "Swipe up again to close the settings screen"
743+#~ msgstr "Veeg nogmaals omhoog om het instellingenscherm te sluiten"
744+
745+#~ msgid "Well done"
746+#~ msgstr "Goed gedaan"
747+
748+#~ msgid "Top edge"
749+#~ msgstr "Bovenrand"
750+
751+#~ msgid "Close"
752+#~ msgstr "Sluiten"
753+
754+#~ msgid "Skip intro"
755+#~ msgstr "Intro overslaan"
756+
757+#~ msgid "Left edge"
758+#~ msgstr "Linkerrand"
759+
760+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
761+#~ msgstr "Veeg vanaf links om de Starter te tonen voor snelle toegang tot apps"
762+
763+#~ msgid "Right edge"
764+#~ msgstr "Rechterrand"
765+
766+#~ msgid ""
767+#~ "You have now mastered the edge gestures and can start using the "
768+#~ "phone<br><br>Tap on the screen to start"
769+#~ msgstr ""
770+#~ "Nu u de bewegingen vanuit de randen onder de knie heeft, kunt u beginnen met "
771+#~ "het gebruiken van de telefoon<br><br>Tik op het scherm om te beginnen"
772+
773+#~ msgid "Try swiping from the top edge to access the indicators"
774+#~ msgstr "Veeg vanuit de bovenrand om de indicatoren te bekijken"
775+
776+#~ msgid "Try swiping from the right edge to unlock the phone"
777+#~ msgstr "Veeg vanuit de rechterrand om het scherm te ontgrendelen"
778+
779+#~ msgid "All"
780+#~ msgstr "Alles"
781+
782+#~ msgid "Favorites"
783+#~ msgstr "Favorieten"
784+
785+#~ msgid "Store"
786+#~ msgstr "Winkel"
787+
788+#~ msgid "Done"
789+#~ msgstr "Klaar"
790+
791+#~ msgid "Power off"
792+#~ msgstr "Uitschakelen"
793+
794+#~ msgid "Log out"
795+#~ msgstr "Afmelden"
796+
797+#~ msgid "Reboot"
798+#~ msgstr "Herstarten"
799+
800+#~ msgid "Shut down"
801+#~ msgstr "Uitschakelen"
802+
803+#~ msgid "Settings"
804+#~ msgstr "Instellingen"
805+
806+#~ msgid "Power"
807+#~ msgstr "Energie"
808+
809+#~ msgid "Restart"
810+#~ msgstr "Herstarten"
811+
812+#~ msgid "Manage Scopes"
813+#~ msgstr "Scopes-beheer"
814+
724#~ msgid "Please re-enter"
815#~ msgid "Please re-enter"
725#~ msgstr "Herhaal deze a.u.b."
816#~ msgstr "Herhaal deze a.u.b."
726−
727−#~ msgid "Click here to finish."
728−#~ msgstr "Klik hier om te stoppen."
po/nn.po+3−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
po/oc.po+3−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
po/or.po+3−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
po/pa.po+39−6
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -715,8 +715,41 @@ msgstr "〈 %1"
715msgid "%1 〉"
715msgid "%1 〉"
716msgstr "%1 〉"
716msgstr "%1 〉"
717
717
718+#~ msgid "Log out"
719+#~ msgstr "ਲਾਗ-ਆਉਟ"
720+
721+#~ msgid "Reboot"
722+#~ msgstr "ਮੁਡ਼-ਚਾਲੂ"
723+
724+#~ msgid "Shut down"
725+#~ msgstr "ਬੰਦ ਕਰੋ"
726+
727+#~ msgid "Power"
728+#~ msgstr "ਪਾਵਰ"
729+
730+#~ msgid "Top edge"
731+#~ msgstr "ਉੱਪਰੀ ਕੰਢਾ"
732+
733+#~ msgid "Restart"
734+#~ msgstr "ਮੁੜ ਚਾਲੂ ਕਰੋ"
735+
736+#~ msgid "Right edge"
737+#~ msgstr "ਸੱਜਾ ਕੋਨਾ"
738+
739+#~ msgid "Skip intro"
740+#~ msgstr "ਜਾਣ-ਪਛਾਣ ਛੱਡੋ"
741+
742+#~ msgid "Power off"
743+#~ msgstr "ਬੰਦ ਕਰੋ"
744+
745+#~ msgid "Settings"
746+#~ msgstr "ਸੈਟਿੰਗ"
747+
748+#~ msgid "Store"
749+#~ msgstr "ਸਟੋਰ"
750+
751+#~ msgid "Search"
752+#~ msgstr "ਖੋਜ"
753+
718#~ msgid "Please re-enter"
754#~ msgid "Please re-enter"
719#~ msgstr "ਕਿਰਪਾ ਕਰਕੇ ਮੁੜ-ਦਰਜ ਕਰੋ"
755#~ msgstr "ਕਿਰਪਾ ਕਰਕੇ ਮੁੜ-ਦਰਜ ਕਰੋ"
720−
721−#~ msgid "Click here to finish."
722−#~ msgstr "ਸਮਾਪਤੀ ਲਈ ਇੱਥੇ ਕਲਿੱਕ ਕਰੋ।"
po/pl.po+84−6
@@ -8,7 +8,7 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%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: 2015-09-12 05:42+0000\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20−"X-Generator: Launchpad (build 17720)\n"
20+"X-Generator: Launchpad (build 17746)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:112
22#: plugins/LightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -718,8 +718,86 @@ msgstr "〈 %1"
718msgid "%1 〉"
718msgid "%1 〉"
719msgstr "%1 〉"
719msgstr "%1 〉"
720
720
721+#~ msgid "Confirm"
722+#~ msgstr "Potwierdź"
723+
724+#~ msgid "Type or say a command"
725+#~ msgstr "Wpisz lub wypowiedz polecenie"
726+
727+#~ msgid "Loading. Please Wait..."
728+#~ msgstr "Ładowanie. Proszę czekać..."
729+
730+#~ msgid "Speak Now..."
731+#~ msgstr "Mów teraz..."
732+
733+#~ msgid "Speaking..."
734+#~ msgstr "Rozpoznanie..."
735+
736+#~ msgid "Search"
737+#~ msgstr "Szukaj"
738+
739+#~ msgid "Top edge"
740+#~ msgstr "Górna krawędź"
741+
742+#~ msgid "Close"
743+#~ msgstr "Zamknij"
744+
745+#~ msgid "Left edge"
746+#~ msgstr "Lewa krawędź"
747+
748+#~ msgid "Skip intro"
749+#~ msgstr "Pomiń intro"
750+
751+#~ msgid "Right edge"
752+#~ msgstr "Prawa krawędź"
753+
754+#~ msgid "Try swiping from the top edge to access the indicators"
755+#~ msgstr "Przeciągnij od górnej krawędzi aby uzyskać wskazówki"
756+
757+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
758+#~ msgstr ""
759+#~ "Przeciągnięcie od lewej krawędzi, uruchamia aktywator szybkiego dostępu do "
760+#~ "aplikacji"
761+
762+#~ msgid "Well done"
763+#~ msgstr "Udało się!"
764+
765+#~ msgid "Swipe up again to close the settings screen"
766+#~ msgstr "Przeciągnij ponownie w górę, by zamknąć okno ustawień"
767+
768+#~ msgid "Try swiping from the right edge to unlock the phone"
769+#~ msgstr "Aby odblokować telefon, przeciagnij w stronę prawej krawędzi"
770+
771+#~ msgid ""
772+#~ "You have now mastered the edge gestures and can start using the "
773+#~ "phone<br><br>Tap on the screen to start"
774+#~ msgstr ""
775+#~ "Wydawanie poleceń krawędzi zostało opanowane. Urządzenie gotowe do "
776+#~ "pracy.<br><br>Dotknij ekranu by rozpocząć"
777+
778+#~ msgid "Log out"
779+#~ msgstr "Wyloguj"
780+
781+#~ msgid "Reboot"
782+#~ msgstr "Uruchom ponownie"
783+
784+#~ msgid "Shut down"
785+#~ msgstr "Wyłącz"
786+
787+#~ msgid "Restart"
788+#~ msgstr "Uruchom ponownie"
789+
790+#~ msgid "Power off"
791+#~ msgstr "Wyłącz"
792+
793+#~ msgid "Power"
794+#~ msgstr "Zasilanie"
795+
796+#~ msgid "Store"
797+#~ msgstr "Zachowaj"
798+
799+#~ msgid "Settings"
800+#~ msgstr "Ustawienia"
801+
721#~ msgid "Please re-enter"
802#~ msgid "Please re-enter"
722#~ msgstr "Proszę wprowadź ponownie"
803#~ msgstr "Proszę wprowadź ponownie"
723−
724−#~ msgid "Click here to finish."
725−#~ msgstr "Kliknij tutaj, by zakończyć."
po/pt.po+97−8
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-07-03 16:38+0000\n"
11+"PO-Revision-Date: 2015-07-29 10:01+0000\n"
12−"Last-Translator: António Miranda <Unknown>\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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -29,7 +29,7 @@ msgstr "Fixar atalho"
29
29
30#: plugins/Unity/Launcher/launcheritem.cpp:52
30#: plugins/Unity/Launcher/launcheritem.cpp:52
31msgid "Quit"
31msgid "Quit"
32−msgstr ""
32+msgstr "Sair"
33
33
34#: plugins/Unity/Launcher/launcheritem.cpp:106
34#: plugins/Unity/Launcher/launcheritem.cpp:106
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
@@ -463,7 +463,7 @@ msgstr "Responder"
463
463
464#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
464#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
465msgid "Call back"
465msgid "Call back"
466−msgstr ""
466+msgstr "Ligar de volta"
467
467
468#: qml/Panel/Indicators/ModemInfoItem.qml:105
468#: qml/Panel/Indicators/ModemInfoItem.qml:105
469msgid "Unlock SIM"
469msgid "Unlock SIM"
@@ -719,8 +719,97 @@ msgstr "〈 %1"
719msgid "%1 〉"
719msgid "%1 〉"
720msgstr "%1 〉"
720msgstr "%1 〉"
721
721
722+#~ msgid "Top edge"
723+#~ msgstr "Margem superior"
724+
725+#~ msgid "Close"
726+#~ msgstr "Fechar"
727+
728+#~ msgid "Left edge"
729+#~ msgstr "Margem esquerda"
730+
731+#~ msgid "Well done"
732+#~ msgstr "Muito bem"
733+
734+#~ msgid "Right edge"
735+#~ msgstr "Margem direita"
736+
737+#~ msgid "Type or say a command"
738+#~ msgstr "Digite ou diga um comando"
739+
740+#~ msgid "Speaking..."
741+#~ msgstr "A falar..."
742+
743+#~ msgid "Confirm"
744+#~ msgstr "Confirmar"
745+
746+#~ msgid "Search"
747+#~ msgstr "Procurar"
748+
749+#~ msgid "Swipe up again to close the settings screen"
750+#~ msgstr "Deslize de novo para cima para fechar o ecrã de definições"
751+
752+#~ msgid "Skip intro"
753+#~ msgstr "Saltar introdução"
754+
755+#~ msgid "Loading. Please Wait..."
756+#~ msgstr "A carregar. Aguarde por favor..."
757+
758+#~ msgid "Speak Now..."
759+#~ msgstr "Fale agora..."
760+
761+#~ msgid "All"
762+#~ msgstr "Todos"
763+
764+#~ msgid "Favorites"
765+#~ msgstr "Favoritos"
766+
767+#~ msgid "Power off"
768+#~ msgstr "Desligar"
769+
770+#~ msgid "Done"
771+#~ msgstr "Concluído"
772+
773+#~ msgid "Log out"
774+#~ msgstr "Terminar sessão"
775+
776+#~ msgid "Reboot"
777+#~ msgstr "Reiniciar"
778+
779+#~ msgid "Power"
780+#~ msgstr "Energia"
781+
782+#~ msgid "Settings"
783+#~ msgstr "Definições"
784+
785+#~ msgid "Restart"
786+#~ msgstr "Reiniciar"
787+
788+#~ msgid "Manage Scopes"
789+#~ msgstr "Gerir Scopes"
790+
722#~ msgid "Please re-enter"
791#~ msgid "Please re-enter"
723#~ msgstr "Por favor, volte a introduzir"
792#~ msgstr "Por favor, volte a introduzir"
724
793
725−#~ msgid "Click here to finish."
794+#~ msgid "Try swiping from the top edge to access the indicators"
726−#~ msgstr "Clique aqui para finalizar."
795+#~ msgstr "Tente deslizar da margem superior para aceder aos indicadores"
796+
797+#~ msgid "Try swiping from the right edge to unlock the phone"
798+#~ msgstr "Tente deslizar da margem direita para desbloquear o telemóvel"
799+
800+#~ msgid ""
801+#~ "You have now mastered the edge gestures and can start using the "
802+#~ "phone<br><br>Tap on the screen to start"
803+#~ msgstr ""
804+#~ "Já domina os gestos das margens, pode começar a usar o telefone<br><br>Toque "
805+#~ "no ecrã para começar"
806+
807+#~ msgid "Store"
808+#~ msgstr "Store"
809+
810+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
811+#~ msgstr ""
812+#~ "Deslize da margem esquerda para mostrar o lançador para acesso rápido às apps"
813+
814+#~ msgid "Shut down"
815+#~ msgstr "Desligar"
po/pt_BR.po+96−6
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:43+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -719,8 +719,98 @@ msgstr "〈 %1"
719msgid "%1 〉"
719msgid "%1 〉"
720msgstr "%1 〉"
720msgstr "%1 〉"
721
721
722+#~ msgid "Confirm"
723+#~ msgstr "Confirmar"
724+
725+#~ msgid "Type or say a command"
726+#~ msgstr "Fale ou digite um comando"
727+
728+#~ msgid "Loading. Please Wait..."
729+#~ msgstr "Carregando. Por favor, aguarde..."
730+
731+#~ msgid "Speak Now..."
732+#~ msgstr "Fale agora..."
733+
734+#~ msgid "Speaking..."
735+#~ msgstr "Falando..."
736+
737+#~ msgid "Search"
738+#~ msgstr "Pesquisar"
739+
740+#~ msgid "Skip intro"
741+#~ msgstr "Pular introdução"
742+
743+#~ msgid "Try swiping from the right edge to unlock the phone"
744+#~ msgstr "Tente deslizar da borda direita para desbloquear o telefone"
745+
746+#~ msgid "Right edge"
747+#~ msgstr "Borda direita"
748+
749+#~ msgid "Top edge"
750+#~ msgstr "Borda superior"
751+
752+#~ msgid "Try swiping from the top edge to access the indicators"
753+#~ msgstr "Tente deslizar da borda superior para acessar os indicadores"
754+
755+#~ msgid "Left edge"
756+#~ msgstr "Borda esquerda"
757+
758+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
759+#~ msgstr ""
760+#~ "Deslize da esquerda para revelar o lançador para acesso rápido aos "
761+#~ "aplicativos"
762+
763+#~ msgid "Swipe up again to close the settings screen"
764+#~ msgstr "Deslize novamente para cima para fechar a tela de configurações"
765+
766+#~ msgid "Close"
767+#~ msgstr "Fechar"
768+
769+#~ msgid "Well done"
770+#~ msgstr "Bem feito"
771+
772+#~ msgid ""
773+#~ "You have now mastered the edge gestures and can start using the "
774+#~ "phone<br><br>Tap on the screen to start"
775+#~ msgstr ""
776+#~ "Agora você já domina os gestos das bordas e pode começar a usar o "
777+#~ "telefone<br><br>Toque na tela para iniciar"
778+
779+#~ msgid "Store"
780+#~ msgstr "Loja"
781+
782+#~ msgid "Power off"
783+#~ msgstr "Desligar"
784+
785+#~ msgid "Done"
786+#~ msgstr "Concluído"
787+
788+#~ msgid "Favorites"
789+#~ msgstr "Favoritos"
790+
791+#~ msgid "All"
792+#~ msgstr "Tudo"
793+
794+#~ msgid "Log out"
795+#~ msgstr "Sair"
796+
797+#~ msgid "Reboot"
798+#~ msgstr "Reiniciar"
799+
800+#~ msgid "Shut down"
801+#~ msgstr "Desligar"
802+
803+#~ msgid "Power"
804+#~ msgstr "Energia"
805+
806+#~ msgid "Settings"
807+#~ msgstr "Configurações"
808+
809+#~ msgid "Restart"
810+#~ msgstr "Reiniciar"
811+
812+#~ msgid "Manage Scopes"
813+#~ msgstr "Gerenciar Plugins"
814+
722#~ msgid "Please re-enter"
815#~ msgid "Please re-enter"
723#~ msgstr "Por favor, digite novamente"
816#~ msgstr "Por favor, digite novamente"
724−
725−#~ msgid "Click here to finish."
726−#~ msgstr "Clique aqui para finalizar."
po/ro.po+97−6
@@ -8,7 +8,7 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 "
17"Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 "
18"== 0) && (n != 0))) ? 2: 1));\n"
18"== 0) && (n != 0))) ? 2: 1));\n"
19−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20−"X-Generator: Launchpad (build 17720)\n"
20+"X-Generator: Launchpad (build 17746)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:112
22#: plugins/LightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -729,8 +729,99 @@ msgstr "〈 %1"
729msgid "%1 〉"
729msgid "%1 〉"
730msgstr "%1 〉"
730msgstr "%1 〉"
731
731
732+#~ msgid "Confirm"
733+#~ msgstr "Confirmați"
734+
735+#~ msgid "Type or say a command"
736+#~ msgstr "Scrieți sau spuneți o comandă"
737+
738+#~ msgid "Loading. Please Wait..."
739+#~ msgstr "Se încarcă. Așteptați..."
740+
741+#~ msgid "Speak Now..."
742+#~ msgstr "Vorbiți acum..."
743+
744+#~ msgid "Speaking..."
745+#~ msgstr "Vorbire..."
746+
747+#~ msgid "Search"
748+#~ msgstr "Căutare"
749+
750+#~ msgid "Top edge"
751+#~ msgstr "Marginea de sus"
752+
753+#~ msgid "Try swiping from the top edge to access the indicators"
754+#~ msgstr ""
755+#~ "Glisați de la marginea de sus a ecranului pentru a accesa indicatorii"
756+
757+#~ msgid "Left edge"
758+#~ msgstr "Marginea din stânga"
759+
760+#~ msgid "Skip intro"
761+#~ msgstr "Sari peste introducere"
762+
763+#~ msgid "Try swiping from the right edge to unlock the phone"
764+#~ msgstr "Glisați de la dreapta spre stânga pentru a debloca telefonul"
765+
766+#~ msgid "Right edge"
767+#~ msgstr "Marginea din dreapta"
768+
769+#~ msgid "Well done"
770+#~ msgstr "Felicitări"
771+
772+#~ msgid "Close"
773+#~ msgstr "Închide"
774+
775+#~ msgid "Swipe up again to close the settings screen"
776+#~ msgstr "Glisați în sus din nou pentru a închide ecranul configurărilor"
777+
778+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
779+#~ msgstr ""
780+#~ "Glisați din stânga ecranului pentru a afișa lansatorul care oferă acces "
781+#~ "rapid la aplicații"
782+
783+#~ msgid ""
784+#~ "You have now mastered the edge gestures and can start using the "
785+#~ "phone<br><br>Tap on the screen to start"
786+#~ msgstr ""
787+#~ "De acum stăpâniți gesturile de control și puteți începe să utilizați "
788+#~ "telefonul<br><br>Atingeți ecranul pentru a începe"
789+
790+#~ msgid "All"
791+#~ msgstr "Tot"
792+
793+#~ msgid "Favorites"
794+#~ msgstr "Favorite"
795+
796+#~ msgid "Store"
797+#~ msgstr "Magazin"
798+
799+#~ msgid "Power off"
800+#~ msgstr "Oprire"
801+
802+#~ msgid "Done"
803+#~ msgstr "Finalizat"
804+
805+#~ msgid "Log out"
806+#~ msgstr "Închide sesiunea"
807+
808+#~ msgid "Reboot"
809+#~ msgstr "Repornire"
810+
811+#~ msgid "Shut down"
812+#~ msgstr "Închideți"
813+
814+#~ msgid "Power"
815+#~ msgstr "Alimentare"
816+
817+#~ msgid "Settings"
818+#~ msgstr "Configurări"
819+
820+#~ msgid "Restart"
821+#~ msgstr "Repornire"
822+
823+#~ msgid "Manage Scopes"
824+#~ msgstr "Administrare domenii"
825+
732#~ msgid "Please re-enter"
826#~ msgid "Please re-enter"
733#~ msgstr "Introduceți din nou"
827#~ msgstr "Introduceți din nou"
734−
735−#~ msgid "Click here to finish."
736−#~ msgstr "Apăsați aici pentru a termina."
po/ru.po+98−5
@@ -8,7 +8,7 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n%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: 2015-09-12 05:42+0000\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20−"X-Generator: Launchpad (build 17720)\n"
20+"X-Generator: Launchpad (build 17746)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:112
22#: plugins/LightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -724,8 +724,101 @@ msgstr "〈 %1"
724msgid "%1 〉"
724msgid "%1 〉"
725msgstr "%1 〉"
725msgstr "%1 〉"
726
726
727+#~ msgid "Type or say a command"
728+#~ msgstr "Введите или произнесите команду"
729+
730+#~ msgid "Loading. Please Wait..."
731+#~ msgstr "Загрузка. Пожалуйста, подождите..."
732+
733+#~ msgid "Speak Now..."
734+#~ msgstr "Говорите..."
735+
736+#~ msgid "Speaking..."
737+#~ msgstr "Говорите..."
738+
739+#~ msgid "Search"
740+#~ msgstr "Поиск"
741+
742+#~ msgid "Right edge"
743+#~ msgstr "Правый край"
744+
745+#~ msgid "Skip intro"
746+#~ msgstr "Пропустить обучение"
747+
748+#~ msgid "Try swiping from the right edge to unlock the phone"
749+#~ msgstr ""
750+#~ "Попробуйте переместить палец от правого края к левому для разблокировки "
751+#~ "устройства"
752+
753+#~ msgid "Top edge"
754+#~ msgstr "Верхний край"
755+
756+#~ msgid "Try swiping from the top edge to access the indicators"
757+#~ msgstr ""
758+#~ "Попробуйте переместить палец от верхнего края вниз для доступа к индикаторам"
759+
760+#~ msgid "Close"
761+#~ msgstr "Закрыть"
762+
763+#~ msgid "Swipe up again to close the settings screen"
764+#~ msgstr "Снова переместите палец вверх для закрытия экрана настроек"
765+
766+#~ msgid "Left edge"
767+#~ msgstr "Левый край"
768+
769+#~ msgid "Well done"
770+#~ msgstr "Великолепно"
771+
772+#~ msgid "Confirm"
773+#~ msgstr "Подтвердить"
774+
775+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
776+#~ msgstr ""
777+#~ "Переместите палец от левого края вправо для открытия лаунчера для быстрого "
778+#~ "доступа к приложениям"
779+
780+#~ msgid ""
781+#~ "You have now mastered the edge gestures and can start using the "
782+#~ "phone<br><br>Tap on the screen to start"
783+#~ msgstr ""
784+#~ "Вы научились пользоваться Ubuntu и можете начать использовать свой "
785+#~ "телефон<br><br>Нажмите на экран"
786+
787+#~ msgid "Power off"
788+#~ msgstr "Отключить"
789+
790+#~ msgid "All"
791+#~ msgstr "Все"
792+
793+#~ msgid "Favorites"
794+#~ msgstr "Избранное"
795+
796+#~ msgid "Done"
797+#~ msgstr "Готово"
798+
799+#~ msgid "Log out"
800+#~ msgstr "Завершение сеанса"
801+
802+#~ msgid "Reboot"
803+#~ msgstr "Перезагрузка"
804+
805+#~ msgid "Shut down"
806+#~ msgstr "Выключение"
807+
808+#~ msgid "Power"
809+#~ msgstr "Питание"
810+
811+#~ msgid "Settings"
812+#~ msgstr "Настройки"
813+
814+#~ msgid "Store"
815+#~ msgstr "Магазин"
816+
817+#~ msgid "Restart"
818+#~ msgstr "Перезагрузить"
819+
727#~ msgid "Please re-enter"
820#~ msgid "Please re-enter"
728#~ msgstr "Повторите ввод"
821#~ msgstr "Повторите ввод"
729
822
730−#~ msgid "Click here to finish."
823+#~ msgid "Manage Scopes"
731−#~ msgstr "Нажмите для завершения."
824+#~ msgstr "Настройки поиска"
po/shn.po+3−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+0000\n"
11+"PO-Revision-Date: 2013-10-07 11:46+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Shan <shn@li.org>\n"
13"Language-Team: Shan <shn@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) ? 0 : 1;\n"
17"Plural-Forms: nplurals=2; plural=(n == 1) ? 0 : 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
po/si.po+63−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -703,3 +703,63 @@ msgstr ""
703#, qt-format
703#, qt-format
704msgid "%1 〉"
704msgid "%1 〉"
705msgstr ""
705msgstr ""
706+
707+#~ msgid "Left edge"
708+#~ msgstr "වම් අන්තය"
709+
710+#~ msgid "Try swiping from the right edge to unlock the phone"
711+#~ msgstr "දුරකථනය අගුලුහරින්න දකුණු අන්තයේ සිට අදින්න"
712+
713+#~ msgid "Right edge"
714+#~ msgstr "දකුණු අන්තය"
715+
716+#~ msgid "Close"
717+#~ msgstr "වසන්න"
718+
719+#~ msgid "Skip intro"
720+#~ msgstr "හැඳින්වීම මඟහරින්න"
721+
722+#~ msgid "Loading. Please Wait..."
723+#~ msgstr "පූරණය වෙමින්. මඳක් රැඳෙන්න..."
724+
725+#~ msgid "Speaking..."
726+#~ msgstr "කතාකරමින්..."
727+
728+#~ msgid "Speak Now..."
729+#~ msgstr "දැන් කථා කරන්න..."
730+
731+#~ msgid "Confirm"
732+#~ msgstr "ස්ථීර කරන්න"
733+
734+#~ msgid "Top edge"
735+#~ msgstr "ඉහළ අන්තය"
736+
737+#~ msgid "Try swiping from the top edge to access the indicators"
738+#~ msgstr "දර්ශකවලට ප්‍රවේශවන්න ඉහළ අන්තයේ සිට අදින්න"
739+
740+#~ msgid "Well done"
741+#~ msgstr "කදිමයි"
742+
743+#~ msgid "Search"
744+#~ msgstr "සෙවුම"
745+
746+#~ msgid "Type or say a command"
747+#~ msgstr "විධානයක් ඇතුල්කරන්න හෝ කියන්න"
748+
749+#~ msgid "Log out"
750+#~ msgstr "ඉවත් වන්න"
751+
752+#~ msgid "Reboot"
753+#~ msgstr "යළි පණගන්වන්න"
754+
755+#~ msgid "Shut down"
756+#~ msgstr "පරිගණකය නිවා දමන්න"
757+
758+#~ msgid "Power"
759+#~ msgstr "බලය"
760+
761+#~ msgid "Restart"
762+#~ msgstr "පරිගණකය යළි පණගන්වන්න"
763+
764+#~ msgid "Power off"
765+#~ msgstr "පරිගණකය නිවා දමන්න"
po/sk.po+3−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+0000\n"
11+"PO-Revision-Date: 2015-04-10 09:15+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
po/sl.po+93−6
@@ -8,7 +8,7 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+0000\n"
11+"PO-Revision-Date: 2015-07-06 21:10+0000\n"
12"Last-Translator: Sasa Batistic <Unknown>\n"
12"Last-Translator: Sasa Batistic <Unknown>\n"
13"Language-Team: Slovenian <sl@li.org>\n"
13"Language-Team: Slovenian <sl@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=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: 2015-09-12 05:42+0000\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20−"X-Generator: Launchpad (build 17720)\n"
20+"X-Generator: Launchpad (build 17746)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:112
22#: plugins/LightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -725,8 +725,95 @@ msgstr "〈 %1"
725msgid "%1 〉"
725msgid "%1 〉"
726msgstr "%1 〉"
726msgstr "%1 〉"
727
727
728+#~ msgid "Confirm"
729+#~ msgstr "Potrdi"
730+
731+#~ msgid "Type or say a command"
732+#~ msgstr "Vnesite ali izrecite ukaz"
733+
734+#~ msgid "Loading. Please Wait..."
735+#~ msgstr "Nalaganje. Prosimo počakajte ..."
736+
737+#~ msgid "Speak Now..."
738+#~ msgstr "Govorite zdaj ..."
739+
740+#~ msgid "Speaking..."
741+#~ msgstr "Govorjenje ..."
742+
743+#~ msgid "Search"
744+#~ msgstr "Iskanje"
745+
746+#~ msgid "Top edge"
747+#~ msgstr "Zgornji rob"
748+
749+#~ msgid "Try swiping from the top edge to access the indicators"
750+#~ msgstr "Poskusite povleči od zgornjega roba za dostop do kazalnikov"
751+
752+#~ msgid "Close"
753+#~ msgstr "Zapri"
754+
755+#~ msgid "Swipe up again to close the settings screen"
756+#~ msgstr "Povlecite ponovno navzgor za zaprtje zaslona z nastavitvami"
757+
758+#~ msgid "Left edge"
759+#~ msgstr "Levi rob"
760+
761+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
762+#~ msgstr ""
763+#~ "Poskusite povleči od leve za razkritje zaganjalnika za hiter dostop do "
764+#~ "programov"
765+
766+#~ msgid "Skip intro"
767+#~ msgstr "Preskoči uvod"
768+
769+#~ msgid "Try swiping from the right edge to unlock the phone"
770+#~ msgstr "Poskusite povleči od desnega roba za odklep telefona"
771+
772+#~ msgid "Right edge"
773+#~ msgstr "Desni rob"
774+
775+#~ msgid "Well done"
776+#~ msgstr "Odlično"
777+
778+#~ msgid ""
779+#~ "You have now mastered the edge gestures and can start using the "
780+#~ "phone<br><br>Tap on the screen to start"
781+#~ msgstr ""
782+#~ "Sedaj, ko ste osvojili poteze robov, lahko začnete uporabljati "
783+#~ "telefon<br><br>Tapnite na zaslon za začetek"
784+
785+#~ msgid "Done"
786+#~ msgstr "Končano"
787+
788+#~ msgid "Store"
789+#~ msgstr "Trgovina"
790+
791+#~ msgid "Power off"
792+#~ msgstr "Izklopi"
793+
794+#~ msgid "All"
795+#~ msgstr "Vse"
796+
797+#~ msgid "Favorites"
798+#~ msgstr "Priljubljeni"
799+
800+#~ msgid "Log out"
801+#~ msgstr "Odjava"
802+
803+#~ msgid "Reboot"
804+#~ msgstr "Ponovni zagon"
805+
806+#~ msgid "Shut down"
807+#~ msgstr "Izklop"
808+
809+#~ msgid "Power"
810+#~ msgstr "Izključitev"
811+
812+#~ msgid "Settings"
813+#~ msgstr "Nastavitve"
814+
815+#~ msgid "Restart"
816+#~ msgstr "Ponovni zagon"
817+
728#~ msgid "Please re-enter"
818#~ msgid "Please re-enter"
729#~ msgstr "Ponovno vnesite"
819#~ msgstr "Ponovno vnesite"
730−
731−#~ msgid "Click here to finish."
732−#~ msgstr "Kliknite tu za zaključek."
po/sq.po+22−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+0000\n"
11+"PO-Revision-Date: 2014-01-15 13:51+0000\n"
12"Last-Translator: Besmir Zanaj <besmirzanaj@gmail.com>\n"
12"Last-Translator: Besmir Zanaj <besmirzanaj@gmail.com>\n"
13"Language-Team: Albanian <sq@li.org>\n"
13"Language-Team: Albanian <sq@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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -701,3 +701,22 @@ msgstr ""
701#, qt-format
701#, qt-format
702msgid "%1 〉"
702msgid "%1 〉"
703msgstr ""
703msgstr ""
704+
705+#~ msgid "Top edge"
706+#~ msgstr "Cepi i sipërm"
707+
708+#~ msgid "Try swiping from the top edge to access the indicators"
709+#~ msgstr ""
710+#~ "Përpiqu te fërkosh gishtin prej cepit të sipërm për te zhblokuar telefonin"
711+
712+#~ msgid "Close"
713+#~ msgstr "Mbylle"
714+
715+#~ msgid "Left edge"
716+#~ msgstr "Cepi majtas"
717+
718+#~ msgid "Well done"
719+#~ msgstr "Shumë mirë"
720+
721+#~ msgid "Right edge"
722+#~ msgstr "Cepi djathtas"
po/sr.po+94−9
@@ -9,16 +9,16 @@ msgstr ""
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: 2015-08-25 14:53+0200\n"
11"POT-Creation-Date: 2015-08-25 14:53+0200\n"
12−"PO-Revision-Date: 2015-05-14 09:20+0000\n"
12+"PO-Revision-Date: 2015-09-16 16:20+0000\n"
13−"Last-Translator: Данило Шеган <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"
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%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: 2015-09-12 05:42+0000\n"
20+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
21−"X-Generator: Launchpad (build 17720)\n"
21+"X-Generator: Launchpad (build 17746)\n"
22"Language: sr\n"
22"Language: sr\n"
23
23
24#: plugins/LightDM/Greeter.cpp:112
24#: plugins/LightDM/Greeter.cpp:112
@@ -32,7 +32,7 @@ msgstr "Прикачи пречицу"
32
32
33#: plugins/Unity/Launcher/launcheritem.cpp:52
33#: plugins/Unity/Launcher/launcheritem.cpp:52
34msgid "Quit"
34msgid "Quit"
35−msgstr ""
35+msgstr "Напусти"
36
36
37#: plugins/Unity/Launcher/launcheritem.cpp:106
37#: plugins/Unity/Launcher/launcheritem.cpp:106
38msgid "Unpin shortcut"
38msgid "Unpin shortcut"
@@ -466,7 +466,7 @@ msgstr "Одговор"
466
466
467#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
467#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
468msgid "Call back"
468msgid "Call back"
469−msgstr ""
469+msgstr "Позови назад"
470
470
471#: qml/Panel/Indicators/ModemInfoItem.qml:105
471#: qml/Panel/Indicators/ModemInfoItem.qml:105
472msgid "Unlock SIM"
472msgid "Unlock SIM"
@@ -722,8 +722,93 @@ msgstr "〈 %1"
722msgid "%1 〉"
722msgid "%1 〉"
723msgstr "%1 〉"
723msgstr "%1 〉"
724
724
725+#~ msgid "Confirm"
726+#~ msgstr "Потврди"
727+
728+#~ msgid "Type or say a command"
729+#~ msgstr "Укуцајте или изговорите наредбу"
730+
731+#~ msgid "Loading. Please Wait..."
732+#~ msgstr "Учитавам. Сачекајте..."
733+
734+#~ msgid "Speak Now..."
735+#~ msgstr "Изговорите сада..."
736+
737+#~ msgid "Speaking..."
738+#~ msgstr "Говор..."
739+
740+#~ msgid "Search"
741+#~ msgstr "Претрага"
742+
743+#~ msgid "Try swiping from the top edge to access the indicators"
744+#~ msgstr "Превуците прстом од горње ивице да би приступили показатељима"
745+
746+#~ msgid "Swipe up again to close the settings screen"
747+#~ msgstr "Превуците поново на горе да би затворили подешавања"
748+
749+#~ msgid "Well done"
750+#~ msgstr "Одлично"
751+
752+#~ msgid "Try swiping from the right edge to unlock the phone"
753+#~ msgstr "Превуците прстом од десне ивице да откључате телефон"
754+
755+#~ msgid "Log out"
756+#~ msgstr "Одјави се"
757+
758+#~ msgid "Reboot"
759+#~ msgstr "Ресетуј"
760+
761+#~ msgid "Shut down"
762+#~ msgstr "Угаси"
763+
764+#~ msgid "Power"
765+#~ msgstr "Напајање"
766+
767+#~ msgid "Top edge"
768+#~ msgstr "Горња ивица"
769+
770+#~ msgid "Skip intro"
771+#~ msgstr "Прескочи увод"
772+
773+#~ msgid "Power off"
774+#~ msgstr "Искључи"
775+
776+#~ msgid "Right edge"
777+#~ msgstr "Десна ивица"
778+
779+#~ msgid "Close"
780+#~ msgstr "Затвори"
781+
782+#~ msgid "Left edge"
783+#~ msgstr "Лева ивица"
784+
785+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
786+#~ msgstr "Превуците с лева да би открили покретач за брз приступ програмима"
787+
788+#~ msgid ""
789+#~ "You have now mastered the edge gestures and can start using the "
790+#~ "phone<br><br>Tap on the screen to start"
791+#~ msgstr ""
792+#~ "Сада сте савладали превлачења са ивица и можете да користите "
793+#~ "телефон<br><br>Тапните на екран да почнете"
794+
795+#~ msgid "Settings"
796+#~ msgstr "Подешавања"
797+
798+#~ msgid "All"
799+#~ msgstr "Сви"
800+
801+#~ msgid "Favorites"
802+#~ msgstr "Омиљени"
803+
804+#~ msgid "Store"
805+#~ msgstr "Продавница"
806+
807+#~ msgid "Done"
808+#~ msgstr "Готово"
809+
810+#~ msgid "Restart"
811+#~ msgstr "Поново покрени"
812+
725#~ msgid "Please re-enter"
813#~ msgid "Please re-enter"
726#~ msgstr "Молим, унесите поново"
814#~ msgstr "Молим, унесите поново"
727−
728−#~ msgid "Click here to finish."
729−#~ msgstr "Кликните овде да завршите."
po/sv.po+94−6
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:43+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20"Language: sv\n"
20"Language: sv\n"
21
21
22#: plugins/LightDM/Greeter.cpp:112
22#: plugins/LightDM/Greeter.cpp:112
@@ -717,8 +717,96 @@ msgstr "〈 %1"
717msgid "%1 〉"
717msgid "%1 〉"
718msgstr "%1 〉"
718msgstr "%1 〉"
719
719
720+#~ msgid "Top edge"
721+#~ msgstr "Överkant"
722+
723+#~ msgid "Close"
724+#~ msgstr "Stäng"
725+
726+#~ msgid "Left edge"
727+#~ msgstr "Vänsterkant"
728+
729+#~ msgid "Well done"
730+#~ msgstr "Bra gjort"
731+
732+#~ msgid "Right edge"
733+#~ msgstr "Högerkant"
734+
735+#~ msgid "Type or say a command"
736+#~ msgstr "Skriv eller tala in ett kommando"
737+
738+#~ msgid "Confirm"
739+#~ msgstr "Bekräfta"
740+
741+#~ msgid "Search"
742+#~ msgstr "Sök"
743+
744+#~ msgid "Swipe up again to close the settings screen"
745+#~ msgstr "Svep upp igen för att stänga inställningsfönstret"
746+
747+#~ msgid "Try swiping from the top edge to access the indicators"
748+#~ msgstr "Svep från överkanten för att komma åt indikatorerna"
749+
750+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
751+#~ msgstr "Svep från vänster för att visa programstartaren"
752+
753+#~ msgid "Skip intro"
754+#~ msgstr "Hoppa över introduktion"
755+
756+#~ msgid "Try swiping from the right edge to unlock the phone"
757+#~ msgstr "Svep från höger för att låsa upp telefonen"
758+
759+#~ msgid ""
760+#~ "You have now mastered the edge gestures and can start using the "
761+#~ "phone<br><br>Tap on the screen to start"
762+#~ msgstr ""
763+#~ "Du har nu bemästrat kantgesterna och kan börja använda "
764+#~ "telefonen<br><br>Tryck på skärmen för att starta"
765+
766+#~ msgid "Loading. Please Wait..."
767+#~ msgstr "Läser in. Var god vänta…"
768+
769+#~ msgid "Speak Now..."
770+#~ msgstr "Tala nu…"
771+
772+#~ msgid "Speaking..."
773+#~ msgstr "Talar…"
774+
775+#~ msgid "Favorites"
776+#~ msgstr "Favoriter"
777+
778+#~ msgid "Log out"
779+#~ msgstr "Logga ut"
780+
781+#~ msgid "Reboot"
782+#~ msgstr "Starta om"
783+
784+#~ msgid "Shut down"
785+#~ msgstr "Stäng av"
786+
787+#~ msgid "Power"
788+#~ msgstr "Ström"
789+
790+#~ msgid "All"
791+#~ msgstr "Alla"
792+
793+#~ msgid "Settings"
794+#~ msgstr "Inställningar"
795+
796+#~ msgid "Store"
797+#~ msgstr "Butik"
798+
799+#~ msgid "Power off"
800+#~ msgstr "Stäng av"
801+
802+#~ msgid "Done"
803+#~ msgstr "Klar"
804+
805+#~ msgid "Restart"
806+#~ msgstr "Omstart"
807+
808+#~ msgid "Manage Scopes"
809+#~ msgstr "Hantera vyer"
810+
720#~ msgid "Please re-enter"
811#~ msgid "Please re-enter"
721#~ msgstr "Ange igen"
812#~ msgstr "Ange igen"
722−
723−#~ msgid "Click here to finish."
724−#~ msgstr "Klicka här för att slutföra."
po/sw.po+12−6
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:42+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -708,8 +708,14 @@ msgstr ""
708msgid "%1 〉"
708msgid "%1 〉"
709msgstr ""
709msgstr ""
710
710
711+#~ msgid "Close"
712+#~ msgstr "Funga"
713+
714+#~ msgid "Confirm"
715+#~ msgstr "Thibitisha"
716+
717+#~ msgid "Search"
718+#~ msgstr "Tafuta"
719+
711#~ msgid "Please re-enter"
720#~ msgid "Please re-enter"
712#~ msgstr "Tafadhali bonyeza tena"
721#~ msgstr "Tafadhali bonyeza tena"
713−
714−#~ msgid "Click here to finish."
715−#~ msgstr "Click hapa umalize."
po/ta.po+53−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:43+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20"Language: ta\n"
20"Language: ta\n"
21
21
22#: plugins/LightDM/Greeter.cpp:112
22#: plugins/LightDM/Greeter.cpp:112
@@ -702,3 +702,53 @@ msgstr ""
702#, qt-format
702#, qt-format
703msgid "%1 〉"
703msgid "%1 〉"
704msgstr ""
704msgstr ""
705+
706+#~ msgid "Skip intro"
707+#~ msgstr "அறிமுகத்தை தவிர்"
708+
709+#~ msgid "Right edge"
710+#~ msgstr "வலது விளிம்பு"
711+
712+#~ msgid "Try swiping from the right edge to unlock the phone"
713+#~ msgstr "தொலைபேசியை திறக்க வலது முனையிலிருந்து தேய்த்து முயற்சி செய்"
714+
715+#~ msgid "Top edge"
716+#~ msgstr "மேல் விளிம்பு"
717+
718+#~ msgid "Try swiping from the top edge to access the indicators"
719+#~ msgstr "காட்டிகளை அனுக மேல் விளிம்பிலிருந்து தேய்த்து முயற்சி செய்"
720+
721+#~ msgid "Close"
722+#~ msgstr "மூடு"
723+
724+#~ msgid "Swipe up again to close the settings screen"
725+#~ msgstr "அமைவுகளின் திரையை மூட மறுபடியும் மேலே தேய்க்கவும்"
726+
727+#~ msgid "Left edge"
728+#~ msgstr "இடது விளிம்பு"
729+
730+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
731+#~ msgstr ""
732+#~ "பயன்பாடுகளின் விரைவான அணுகலை பெறத்தேவையான தொடக்கியை இடமிருந்து தேய்த்தால் "
733+#~ "வெளிப்படும்"
734+
735+#~ msgid "Well done"
736+#~ msgstr "நன்றாக செய்தீர்கள்"
737+
738+#~ msgid "Confirm"
739+#~ msgstr "உறுதிப்படுத்து"
740+
741+#~ msgid "Type or say a command"
742+#~ msgstr "ஒரு கட்டளையை உச்சரி அல்லது தட்டச்சுசெய்"
743+
744+#~ msgid "Loading. Please Wait..."
745+#~ msgstr "ஏற்றுகிறது. தயைசெய்து காத்திருக்கவும்..."
746+
747+#~ msgid "Speak Now..."
748+#~ msgstr "இப்பொது பேசு..."
749+
750+#~ msgid "Speaking..."
751+#~ msgstr "பேசுகிறது..."
752+
753+#~ msgid "Search"
754+#~ msgstr "தெடு"
po/te.po+42−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:43+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -701,3 +701,42 @@ msgstr ""
701#, qt-format
701#, qt-format
702msgid "%1 〉"
702msgid "%1 〉"
703msgstr ""
703msgstr ""
704+
705+#~ msgid "Top edge"
706+#~ msgstr "పై అంచు"
707+
708+#~ msgid "Close"
709+#~ msgstr "మూసివేయి"
710+
711+#~ msgid "Swipe up again to close the settings screen"
712+#~ msgstr "అమరికల తెరను మూసివేయుటకు మరలా పైకి స్వైప్ చేయండి"
713+
714+#~ msgid "Left edge"
715+#~ msgstr "ఎడమ అంచు"
716+
717+#~ msgid "Skip intro"
718+#~ msgstr "పరిచయాన్ని దాటవేయి"
719+
720+#~ msgid "Try swiping from the right edge to unlock the phone"
721+#~ msgstr "ఫోను తాళంతీయుటకు కుడి అంచు నుండి స్వైప్ చేయ ప్రయత్నించండి"
722+
723+#~ msgid "Right edge"
724+#~ msgstr "కుడి అంచు"
725+
726+#~ msgid "Well done"
727+#~ msgstr "బాగా చేశారు"
728+
729+#~ msgid "Confirm"
730+#~ msgstr "నిర్ధారించండి"
731+
732+#~ msgid "Search"
733+#~ msgstr "వెతుకు"
734+
735+#~ msgid "Loading. Please Wait..."
736+#~ msgstr "లోడవుతోంది. దయచేసి వేచివుండండి..."
737+
738+#~ msgid "Speaking..."
739+#~ msgstr "మాట్లాడుతున్నారు..."
740+
741+#~ msgid "Speak Now..."
742+#~ msgstr "ఇప్పుడు మాట్లాడండి..."
po/th.po+3−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:43+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
po/tr.po+86−6
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:43+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -716,8 +716,88 @@ msgstr "〈 %1"
716msgid "%1 〉"
716msgid "%1 〉"
717msgstr "%1 〉"
717msgstr "%1 〉"
718
718
719+#~ msgid "Confirm"
720+#~ msgstr "Onayla"
721+
722+#~ msgid "Type or say a command"
723+#~ msgstr "Bir komut yazın veya söyleyin"
724+
725+#~ msgid "Loading. Please Wait..."
726+#~ msgstr "Yükleniyor. Lütfen Bekleyin..."
727+
728+#~ msgid "Speak Now..."
729+#~ msgstr "Şimdi Konuşun..."
730+
731+#~ msgid "Speaking..."
732+#~ msgstr "Konuşuyor..."
733+
734+#~ msgid "Search"
735+#~ msgstr "Ara"
736+
737+#~ msgid "Top edge"
738+#~ msgstr "Üst kenar"
739+
740+#~ msgid "Close"
741+#~ msgstr "Kapat"
742+
743+#~ msgid "Swipe up again to close the settings screen"
744+#~ msgstr "Ayarlar ekranını kapatmak için tekrar yukarı kaydırın"
745+
746+#~ msgid "Right edge"
747+#~ msgstr "Sağ kenar"
748+
749+#~ msgid "Left edge"
750+#~ msgstr "Sol kenar"
751+
752+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
753+#~ msgstr ""
754+#~ "Uygulamalara hızlı erişim çalıştırıcısını açmak için sol kenarı sürükleyin"
755+
756+#~ msgid "Well done"
757+#~ msgstr "Tebrikler"
758+
759+#~ msgid "Try swiping from the top edge to access the indicators"
760+#~ msgstr "Bildiricilere erişmek için üst kenarı sürükleyin"
761+
762+#~ msgid "Try swiping from the right edge to unlock the phone"
763+#~ msgstr "Kilidi açmak için sağ kenardan sürüklemeyi deneyin"
764+
765+#~ msgid "Skip intro"
766+#~ msgstr "Tanıtımı geç"
767+
768+#~ msgid ""
769+#~ "You have now mastered the edge gestures and can start using the "
770+#~ "phone<br><br>Tap on the screen to start"
771+#~ msgstr ""
772+#~ "Kenar haraketlerini öğrendiniz ve telefonu kullanmaya "
773+#~ "başlayabilirsiniz<br><br>Başlamak için ekrana dokunun"
774+
775+#~ msgid "Done"
776+#~ msgstr "Bitti"
777+
778+#~ msgid "Store"
779+#~ msgstr "Mağaza"
780+
781+#~ msgid "Reboot"
782+#~ msgstr "Yeniden başlat"
783+
784+#~ msgid "Shut down"
785+#~ msgstr "Bilgisayarı Kapat"
786+
787+#~ msgid "Power"
788+#~ msgstr "Güç"
789+
790+#~ msgid "Log out"
791+#~ msgstr "Oturumu kapat"
792+
793+#~ msgid "Power off"
794+#~ msgstr "Kapat"
795+
796+#~ msgid "Settings"
797+#~ msgstr "Ayarlar"
798+
799+#~ msgid "Restart"
800+#~ msgstr "Yeniden başlat"
801+
719#~ msgid "Please re-enter"
802#~ msgid "Please re-enter"
720#~ msgstr "Lütfen yeniden girin"
803#~ msgstr "Lütfen yeniden girin"
721−
722−#~ msgid "Click here to finish."
723−#~ msgstr "Bitirmek için buraya tıklayın."
po/ug.po+179−85
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+0000\n"
11+"PO-Revision-Date: 2015-09-24 05:59+0000\n"
12−"Last-Translator: Gheyret T.Kenji <Unknown>\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"
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: 2015-09-12 05:43+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-25 05:51+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17754)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/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 "چېكىن"
33
33
34#: plugins/Unity/Launcher/launcheritem.cpp:106
34#: plugins/Unity/Launcher/launcheritem.cpp:106
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
@@ -56,7 +56,7 @@ msgstr ""
56#. en_US example: "Tomorrow\u2003%l:%M %p" --> "Tomorrow 1:00 PM"
56#. en_US example: "Tomorrow\u2003%l:%M %p" --> "Tomorrow 1:00 PM"
57#: plugins/Utils/relativetimeformatter.cpp:172
57#: plugins/Utils/relativetimeformatter.cpp:172
58msgid "Tomorrow %l:%M %p"
58msgid "Tomorrow %l:%M %p"
59−msgstr ""
59+msgstr "ئەتە %l:%M %p"
60
60
61#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
61#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
62#. This format string is used for showing, on a 12-hour clock, times that happened in the last week.
62#. This format string is used for showing, on a 12-hour clock, times that happened in the last week.
@@ -125,7 +125,7 @@ msgstr "خاتا ئىم جۈملىسى كۆپ قېتىم كىرگۈزۈلگەن
125
125
126#: qml/Components/DelayedLockscreen.qml:65
126#: qml/Components/DelayedLockscreen.qml:65
127msgid "You have been locked out due to too many failed passcode attempts."
127msgid "You have been locked out due to too many failed passcode attempts."
128−msgstr "خاتا ئىم كودى(passcode) كۆپ قېتىم كىرگۈزۈلگەنلىكى ئۈچۈن قۇلۇپلاندى."
128+msgstr "ھىساباتىڭز قۇلۇپلاندى.ئىم كىرگۈزۈشتە كۆپ قېتىم خاتالاشتىڭز."
129
129
130#: qml/Components/DelayedLockscreen.qml:74
130#: qml/Components/DelayedLockscreen.qml:74
131#, qt-format
131#, qt-format
@@ -136,7 +136,7 @@ msgstr[0] "%1 مىنۇت كۈتۈپ ئاندىن قايتا سىناڭ…"
136#: qml/Components/Dialogs.qml:112
136#: qml/Components/Dialogs.qml:112
137msgctxt "Title: Lock/Log out dialog"
137msgctxt "Title: Lock/Log out dialog"
138msgid "Log out"
138msgid "Log out"
139−msgstr ""
139+msgstr "تىزىمدىن چىق"
140
140
141#: qml/Components/Dialogs.qml:113
141#: qml/Components/Dialogs.qml:113
142msgid "Are you sure you want to log out?"
142msgid "Are you sure you want to log out?"
@@ -145,22 +145,22 @@ msgstr "راستلا چىقىپ كېتەمسىز؟"
145#: qml/Components/Dialogs.qml:115
145#: qml/Components/Dialogs.qml:115
146msgctxt "Button: Lock the system"
146msgctxt "Button: Lock the system"
147msgid "Lock"
147msgid "Lock"
148−msgstr ""
148+msgstr "قۇلۇپلا"
149
149
150#: qml/Components/Dialogs.qml:122
150#: qml/Components/Dialogs.qml:122
151msgctxt "Button: Log out from the system"
151msgctxt "Button: Log out from the system"
152msgid "Log Out"
152msgid "Log Out"
153−msgstr ""
153+msgstr "تىزىمدىن چىق"
154
154
155#: qml/Components/Dialogs.qml:129 qml/Components/Dialogs.qml:162
155#: qml/Components/Dialogs.qml:129 qml/Components/Dialogs.qml:162
156#: qml/Components/Dialogs.qml:221
156#: qml/Components/Dialogs.qml:221
157msgid "Cancel"
157msgid "Cancel"
158−msgstr "ئەمەلدىن قالدۇر"
158+msgstr "بولدىلا"
159
159
160#: qml/Components/Dialogs.qml:141
160#: qml/Components/Dialogs.qml:141
161msgctxt "Title: Reboot/Shut down dialog"
161msgctxt "Title: Reboot/Shut down dialog"
162msgid "Shut down"
162msgid "Shut down"
163−msgstr ""
163+msgstr "تاقا"
164
164
165#: qml/Components/Dialogs.qml:142
165#: qml/Components/Dialogs.qml:142
166msgid "Are you sure you want to shut down?"
166msgid "Are you sure you want to shut down?"
@@ -169,17 +169,17 @@ msgstr "راستلا تاقامسىز؟"
169#: qml/Components/Dialogs.qml:144
169#: qml/Components/Dialogs.qml:144
170msgctxt "Button: Reboot the system"
170msgctxt "Button: Reboot the system"
171msgid "Reboot"
171msgid "Reboot"
172−msgstr ""
172+msgstr "قايتا قوزغات"
173
173
174#: qml/Components/Dialogs.qml:153
174#: qml/Components/Dialogs.qml:153
175msgctxt "Button: Shut down the system"
175msgctxt "Button: Shut down the system"
176msgid "Shut down"
176msgid "Shut down"
177−msgstr ""
177+msgstr "تاقا"
178
178
179#: qml/Components/Dialogs.qml:175
179#: qml/Components/Dialogs.qml:175
180msgctxt "Title: Reboot dialog"
180msgctxt "Title: Reboot dialog"
181msgid "Reboot"
181msgid "Reboot"
182−msgstr ""
182+msgstr "قايتا قوزغات"
183
183
184#: qml/Components/Dialogs.qml:176
184#: qml/Components/Dialogs.qml:176
185msgid "Are you sure you want to reboot?"
185msgid "Are you sure you want to reboot?"
@@ -196,7 +196,7 @@ msgstr "ھەئە"
196#: qml/Components/Dialogs.qml:200
196#: qml/Components/Dialogs.qml:200
197msgctxt "Title: Power off/Restart dialog"
197msgctxt "Title: Power off/Restart dialog"
198msgid "Power"
198msgid "Power"
199−msgstr ""
199+msgstr "توك مەنبە"
200
200
201#: qml/Components/Dialogs.qml:201
201#: qml/Components/Dialogs.qml:201
202msgid ""
202msgid ""
@@ -209,12 +209,12 @@ msgstr ""
209#: qml/Components/Dialogs.qml:203
209#: qml/Components/Dialogs.qml:203
210msgctxt "Button: Power off the system"
210msgctxt "Button: Power off the system"
211msgid "Power off"
211msgid "Power off"
212−msgstr ""
212+msgstr "توكنى ئۈز"
213
213
214#: qml/Components/Dialogs.qml:212
214#: qml/Components/Dialogs.qml:212
215msgctxt "Button: Restart the system"
215msgctxt "Button: Restart the system"
216msgid "Restart"
216msgid "Restart"
217−msgstr ""
217+msgstr "قايتا قوزغات"
218
218
219#: qml/Components/Lockscreen.qml:245
219#: qml/Components/Lockscreen.qml:245
220msgid "Return to Call"
220msgid "Return to Call"
@@ -239,22 +239,22 @@ msgstr "ھەممىنى كۆرۈش…"
239#: qml/Dash/GenericScopeView.qml:631
239#: qml/Dash/GenericScopeView.qml:631
240msgctxt "Label: Hint for dash search line edit"
240msgctxt "Label: Hint for dash search line edit"
241msgid "Search"
241msgid "Search"
242−msgstr ""
242+msgstr "ئىزدە"
243
243
244#: qml/Dash/PageHeader.qml:269
244#: qml/Dash/PageHeader.qml:269
245msgctxt "Button: Open the Ubuntu Store"
245msgctxt "Button: Open the Ubuntu Store"
246msgid "Store"
246msgid "Store"
247−msgstr ""
247+msgstr "ساقلا"
248
248
249#: qml/Dash/PageHeader.qml:276
249#: qml/Dash/PageHeader.qml:276
250msgctxt "Button: Start a search in the current dash scope"
250msgctxt "Button: Start a search in the current dash scope"
251msgid "Search"
251msgid "Search"
252−msgstr ""
252+msgstr "ئىزدە"
253
253
254#: qml/Dash/PageHeader.qml:286
254#: qml/Dash/PageHeader.qml:286
255msgctxt "Button: Show the current dash scope settings"
255msgctxt "Button: Show the current dash scope settings"
256msgid "Settings"
256msgid "Settings"
257−msgstr ""
257+msgstr "تەڭشەك"
258
258
259#: qml/Dash/PageHeader.qml:293
259#: qml/Dash/PageHeader.qml:293
260msgid "Remove from Favorites"
260msgid "Remove from Favorites"
@@ -295,19 +295,19 @@ msgstr "قويۇۋەتسە يېڭىلىنىدۇ…"
295
295
296#: qml/Dash/ScopeSettings/ScopeSettingBoolean.qml:43
296#: qml/Dash/ScopeSettings/ScopeSettingBoolean.qml:43
297msgid "Enable location data"
297msgid "Enable location data"
298−msgstr ""
298+msgstr "ئۇرۇن سانلىق مەلۇمات ئىلىتشكە باشلىدى"
299
299
300#: qml/Dash/ScopesList.qml:67
300#: qml/Dash/ScopesList.qml:67
301msgid "Manage"
301msgid "Manage"
302−msgstr ""
302+msgstr "باشقۇرۇش"
303
303
304#: qml/Dash/ScopesList.qml:113
304#: qml/Dash/ScopesList.qml:113
305msgid "Home"
305msgid "Home"
306−msgstr ""
306+msgstr "ماكان"
307
307
308#: qml/Dash/ScopesList.qml:114
308#: qml/Dash/ScopesList.qml:114
309msgid "Also installed"
309msgid "Also installed"
310−msgstr ""
310+msgstr "قايتىدىن ئورنات"
311
311
312#: qml/Greeter/CoverPage.qml:107
312#: qml/Greeter/CoverPage.qml:107
313msgid "Unlock"
313msgid "Unlock"
@@ -315,11 +315,11 @@ msgstr "قۇلۇپسىزلا"
315
315
316#: qml/Greeter/LoginList.qml:236
316#: qml/Greeter/LoginList.qml:236
317msgid "Retry"
317msgid "Retry"
318−msgstr ""
318+msgstr "قايتا سىنا"
319
319
320#: qml/Greeter/LoginList.qml:237
320#: qml/Greeter/LoginList.qml:237
321msgid "Tap to unlock"
321msgid "Tap to unlock"
322−msgstr ""
322+msgstr "قۇلۇپسىزلا"
323
323
324#: qml/Greeter/NarrowView.qml:54 qml/Wizard/Pages/passwd-confirm.qml:53
324#: qml/Greeter/NarrowView.qml:54 qml/Wizard/Pages/passwd-confirm.qml:53
325msgid "Sorry, incorrect passphrase."
325msgid "Sorry, incorrect passphrase."
@@ -374,7 +374,7 @@ msgstr "كەچۈرۈڭ، ئىم توغرا ئەمەس"
374#: qml/Greeter/NarrowView.qml:121
374#: qml/Greeter/NarrowView.qml:121
375msgctxt "passphrase"
375msgctxt "passphrase"
376msgid "Please re-enter"
376msgid "Please re-enter"
377−msgstr ""
377+msgstr "قايتا كىرگۈزۈڭ"
378
378
379#: qml/Greeter/NarrowView.qml:122
379#: qml/Greeter/NarrowView.qml:122
380msgid "Sorry, incorrect passcode"
380msgid "Sorry, incorrect passcode"
@@ -400,32 +400,29 @@ msgstr "ھېچ نېمە قويۇلمايۋاتىدۇ"
400#, qt-format
400#, qt-format
401msgid "%1 hour"
401msgid "%1 hour"
402msgid_plural "%1 hours"
402msgid_plural "%1 hours"
403−msgstr[0] ""
403+msgstr[0] "%1 سائەت"
404−msgstr[1] ""
405
404
406#: qml/Panel/Indicators/MenuItemFactory.qml:807
405#: qml/Panel/Indicators/MenuItemFactory.qml:807
407#, qt-format
406#, qt-format
408msgid "%1 minute"
407msgid "%1 minute"
409msgid_plural "%1 minutes"
408msgid_plural "%1 minutes"
410−msgstr[0] ""
409+msgstr[0] "%1 مىنۇت"
411−msgstr[1] ""
412
410
413#: qml/Panel/Indicators/MenuItemFactory.qml:812
411#: qml/Panel/Indicators/MenuItemFactory.qml:812
414#, qt-format
412#, qt-format
415msgid "%1 second"
413msgid "%1 second"
416msgid_plural "%1 seconds"
414msgid_plural "%1 seconds"
417−msgstr[0] ""
415+msgstr[0] "%1 سېكۇنت"
418−msgstr[1] ""
419
416
420#: qml/Panel/Indicators/MenuItemFactory.qml:815
417#: qml/Panel/Indicators/MenuItemFactory.qml:815
421msgid "0 seconds"
418msgid "0 seconds"
422−msgstr ""
419+msgstr "0 سېكۇنت"
423
420
424#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
421#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
425#: qml/Panel/Indicators/MenuItemFactory.qml:817
422#: qml/Panel/Indicators/MenuItemFactory.qml:817
426#, qt-format
423#, qt-format
427msgid "%1 remaining"
424msgid "%1 remaining"
428−msgstr ""
425+msgstr "%1 قالدۇقى"
429
426
430#: qml/Panel/Indicators/MenuItemFactory.qml:823
427#: qml/Panel/Indicators/MenuItemFactory.qml:823
431msgid "In queue…"
428msgid "In queue…"
@@ -454,11 +451,11 @@ msgstr "مەغلۇپ بولدى، چېكىپ قايتا سىناڭ"
454#: qml/Panel/Indicators/MessageMenuItemFactory.qml:149
451#: qml/Panel/Indicators/MessageMenuItemFactory.qml:149
455msgctxt "Label: Hint in message indicator line edit"
452msgctxt "Label: Hint in message indicator line edit"
456msgid "Reply"
453msgid "Reply"
457−msgstr ""
454+msgstr "جاۋاب قايتۇر"
458
455
459#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
456#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
460msgid "Call back"
457msgid "Call back"
461−msgstr ""
458+msgstr "تىلفۇن ئۇرلىۋاتىدۇ"
462
459
463#: qml/Panel/Indicators/ModemInfoItem.qml:105
460#: qml/Panel/Indicators/ModemInfoItem.qml:105
464msgid "Unlock SIM"
461msgid "Unlock SIM"
@@ -474,28 +471,28 @@ msgstr ""
474
471
475#: qml/Tutorial/TutorialBottomFinish.qml:25
472#: qml/Tutorial/TutorialBottomFinish.qml:25
476msgid "Tap here to finish."
473msgid "Tap here to finish."
477−msgstr ""
474+msgstr "بۇ يەرنى چېكىپ ئاخىرلاشتۇرۇڭ"
478
475
479#: qml/Tutorial/TutorialBottom.qml:28
476#: qml/Tutorial/TutorialBottom.qml:28
480msgid "Open special menus"
477msgid "Open special menus"
481−msgstr ""
478+msgstr "تىزملىكنى ئاچ"
482
479
483#: qml/Tutorial/TutorialBottom.qml:29
480#: qml/Tutorial/TutorialBottom.qml:29
484msgid "Swipe up from the bottom edge."
481msgid "Swipe up from the bottom edge."
485−msgstr ""
482+msgstr "ئاستى تەرەپكە سېرىل"
486
483
487#: qml/Tutorial/TutorialContent.qml:80 qml/Tutorial/TutorialLeftFinish.qml:25
484#: qml/Tutorial/TutorialContent.qml:80 qml/Tutorial/TutorialLeftFinish.qml:25
488#: qml/Tutorial/TutorialRight.qml:144
485#: qml/Tutorial/TutorialRight.qml:144
489msgid "Tap here to continue."
486msgid "Tap here to continue."
490−msgstr ""
487+msgstr "داۋاملاشتۇر"
491
488
492#: qml/Tutorial/TutorialLeftFinish.qml:24
489#: qml/Tutorial/TutorialLeftFinish.qml:24
493msgid "These are the shortcuts to favorite apps"
490msgid "These are the shortcuts to favorite apps"
494−msgstr ""
491+msgstr "بۇ سىز ئەڭ ياخشى كۆردىغان دېتاللارتېزلەتمە كۆنۇپكىلار"
495
492
496#: qml/Tutorial/TutorialLeft.qml:26
493#: qml/Tutorial/TutorialLeft.qml:26
497msgid "Open the launcher"
494msgid "Open the launcher"
498−msgstr ""
495+msgstr "تارقىتىش ئاپراتنى ئاچ"
499
496
500#: qml/Tutorial/TutorialLeft.qml:27
497#: qml/Tutorial/TutorialLeft.qml:27
501msgid "Short swipe from the left edge."
498msgid "Short swipe from the left edge."
@@ -507,11 +504,11 @@ msgstr ""
507
504
508#: qml/Tutorial/TutorialPage.qml:195
505#: qml/Tutorial/TutorialPage.qml:195
509msgid "Try again."
506msgid "Try again."
510−msgstr ""
507+msgstr "قايتا سىناڭ"
511
508
512#: qml/Tutorial/TutorialRight.qml:31
509#: qml/Tutorial/TutorialRight.qml:31
513msgid "To view open apps"
510msgid "To view open apps"
514−msgstr ""
511+msgstr "قوزغىتىلغان دېتاللارنى كۆرۈش"
515
512
516#: qml/Tutorial/TutorialRight.qml:32
513#: qml/Tutorial/TutorialRight.qml:32
517msgid "Long swipe from the right edge."
514msgid "Long swipe from the right edge."
@@ -519,134 +516,136 @@ msgstr ""
519
516
520#: qml/Tutorial/TutorialRight.qml:122
517#: qml/Tutorial/TutorialRight.qml:122
521msgid "View all your running tasks."
518msgid "View all your running tasks."
522−msgstr ""
519+msgstr "ئىجىرا بۇلۇۋاتقان بارلىق ۋەزىپىلەرنى كۆرۈش"
523
520
524#: qml/Wizard/Page.qml:89
521#: qml/Wizard/Page.qml:89
525msgctxt "Button: Go back one page in the Wizard"
522msgctxt "Button: Go back one page in the Wizard"
526msgid "Back"
523msgid "Back"
527−msgstr ""
524+msgstr "قايتىش"
528
525
529#: qml/Wizard/Pages/here-terms.qml:27
526#: qml/Wizard/Pages/here-terms.qml:27
530msgid "Terms & Conditions"
527msgid "Terms & Conditions"
531−msgstr ""
528+msgstr "قائىدە ۋە شەرتلەر"
532
529
533#: qml/Wizard/Pages/passwd-confirm.qml:49
530#: qml/Wizard/Pages/passwd-confirm.qml:49
534msgid "Confirm passphrase"
531msgid "Confirm passphrase"
535−msgstr ""
532+msgstr "ئىم جۈملىسىنى جەزملەڭ"
536
533
537#: qml/Wizard/Pages/passwd-confirm.qml:50
534#: qml/Wizard/Pages/passwd-confirm.qml:50
538msgid "Confirm passcode"
535msgid "Confirm passcode"
539−msgstr ""
536+msgstr "ئىمنى جەزملەڭ"
540
537
541#: qml/Wizard/Pages/passwd-confirm.qml:53
538#: qml/Wizard/Pages/passwd-confirm.qml:53
542#: qml/Wizard/Pages/passwd-confirm.qml:54
539#: qml/Wizard/Pages/passwd-confirm.qml:54
543msgid "Please try again."
540msgid "Please try again."
544−msgstr ""
541+msgstr "قايتا سىناڭ."
545
542
546#: qml/Wizard/Pages/passwd-confirm.qml:82 qml/Wizard/Pages/passwd-set.qml:90
543#: qml/Wizard/Pages/passwd-confirm.qml:82 qml/Wizard/Pages/passwd-set.qml:90
547#: qml/Wizard/Pages/10-welcome.qml:88 qml/Wizard/Pages/30-passwd-type.qml:128
544#: qml/Wizard/Pages/10-welcome.qml:88 qml/Wizard/Pages/30-passwd-type.qml:128
548#: qml/Wizard/Pages/40-wifi.qml:215 qml/Wizard/Pages/50-location.qml:131
545#: qml/Wizard/Pages/40-wifi.qml:215 qml/Wizard/Pages/50-location.qml:131
549#: qml/Wizard/Pages/60-reporting.qml:50
546#: qml/Wizard/Pages/60-reporting.qml:50
550msgid "Continue"
547msgid "Continue"
551−msgstr ""
548+msgstr "داۋاملاشتۇر"
552
549
553#: qml/Wizard/Pages/passwd-set.qml:61
550#: qml/Wizard/Pages/passwd-set.qml:61
554msgid "Choose your passcode"
551msgid "Choose your passcode"
555−msgstr ""
552+msgstr "ئىم كودى(passcode) تاللاڭ"
556
553
557#: qml/Wizard/Pages/passwd-set.qml:68
554#: qml/Wizard/Pages/passwd-set.qml:68
558msgid "Passphrase must be 4 characters long"
555msgid "Passphrase must be 4 characters long"
559−msgstr ""
556+msgstr "ئىم كودى چوقۇم 4 ھەرپ بولسۇن"
560
557
561#: qml/Wizard/Pages/10-welcome.qml:27
558#: qml/Wizard/Pages/10-welcome.qml:27
562msgid "Hi!"
559msgid "Hi!"
563−msgstr ""
560+msgstr "سالام!"
564
561
565#: qml/Wizard/Pages/10-welcome.qml:44
562#: qml/Wizard/Pages/10-welcome.qml:44
566msgid "Welcome to your Ubuntu phone."
563msgid "Welcome to your Ubuntu phone."
567−msgstr ""
564+msgstr "ئۇبۇنتۇ تېلېفونىغا مەرھابا."
568
565
569#: qml/Wizard/Pages/10-welcome.qml:52
566#: qml/Wizard/Pages/10-welcome.qml:52
570msgid "Let’s get started."
567msgid "Let’s get started."
571−msgstr ""
568+msgstr "باشلايلى"
572
569
573#: qml/Wizard/Pages/20-sim.qml:25
570#: qml/Wizard/Pages/20-sim.qml:25
574msgid "Add a SIM card and restart your device"
571msgid "Add a SIM card and restart your device"
575−msgstr ""
572+msgstr "سىم كارتىسى قوشۇپ، ئۈسكۈنىنى قايتا قوزغىتىڭ"
576
573
577#: qml/Wizard/Pages/20-sim.qml:59
574#: qml/Wizard/Pages/20-sim.qml:59
578msgid "Without it, you won’t be able to make calls or use text messaging."
575msgid "Without it, you won’t be able to make calls or use text messaging."
579−msgstr ""
576+msgstr "ئۇ بولمىسا، تېلېفون قىلىشقا ۋە ئۇچۇر ئەۋەتىشكە بولمايدۇ."
580
577
581#: qml/Wizard/Pages/20-sim.qml:73 qml/Wizard/Pages/40-wifi.qml:215
578#: qml/Wizard/Pages/20-sim.qml:73 qml/Wizard/Pages/40-wifi.qml:215
582msgid "Skip"
579msgid "Skip"
583−msgstr ""
580+msgstr "ئۆتكۈزۈۋەت"
584
581
585#: qml/Wizard/Pages/30-passwd-type.qml:39
582#: qml/Wizard/Pages/30-passwd-type.qml:39
586msgid "Lock security"
583msgid "Lock security"
587−msgstr ""
584+msgstr "قۇلۇپلاش بىخەتەرلىكى"
588
585
589#: qml/Wizard/Pages/30-passwd-type.qml:74
586#: qml/Wizard/Pages/30-passwd-type.qml:74
590msgid "Please select how you’d like to unlock your phone."
587msgid "Please select how you’d like to unlock your phone."
591−msgstr ""
588+msgstr "تېلېفوننى قانداق قۇلۇپسىزلاشنى تاللاڭ."
592
589
593#: qml/Wizard/Pages/30-passwd-type.qml:97
590#: qml/Wizard/Pages/30-passwd-type.qml:97
594msgctxt "Label: Type of security method"
591msgctxt "Label: Type of security method"
595msgid "Swipe"
592msgid "Swipe"
596−msgstr ""
593+msgstr "تېز سىيرىش"
597
594
598#: qml/Wizard/Pages/30-passwd-type.qml:98
595#: qml/Wizard/Pages/30-passwd-type.qml:98
599msgctxt "Label: Description of security method"
596msgctxt "Label: Description of security method"
600msgid "No security"
597msgid "No security"
601−msgstr ""
598+msgstr "بىخەتەرلىكى يوق"
602
599
603#: qml/Wizard/Pages/30-passwd-type.qml:100
600#: qml/Wizard/Pages/30-passwd-type.qml:100
604msgctxt "Label: Type of security method"
601msgctxt "Label: Type of security method"
605msgid "Passcode"
602msgid "Passcode"
606−msgstr ""
603+msgstr "ئىم"
607
604
608#: qml/Wizard/Pages/30-passwd-type.qml:101
605#: qml/Wizard/Pages/30-passwd-type.qml:101
609msgctxt "Label: Description of security method"
606msgctxt "Label: Description of security method"
610msgid "4 digits only"
607msgid "4 digits only"
611−msgstr ""
608+msgstr "4 خانىلىق سان"
612
609
613#: qml/Wizard/Pages/30-passwd-type.qml:103
610#: qml/Wizard/Pages/30-passwd-type.qml:103
614msgctxt "Label: Type of security method"
611msgctxt "Label: Type of security method"
615msgid "Passphrase"
612msgid "Passphrase"
616−msgstr ""
613+msgstr "ئىم"
617
614
618#: qml/Wizard/Pages/30-passwd-type.qml:104
615#: qml/Wizard/Pages/30-passwd-type.qml:104
619msgctxt "Label: Description of security method"
616msgctxt "Label: Description of security method"
620msgid "Numbers and letters"
617msgid "Numbers and letters"
621−msgstr ""
618+msgstr "رەقەم ۋە ھەرپلەر"
622
619
623#: qml/Wizard/Pages/40-wifi.qml:29
620#: qml/Wizard/Pages/40-wifi.qml:29
624msgid "Connect to Wi‑Fi"
621msgid "Connect to Wi‑Fi"
625−msgstr ""
622+msgstr "سىمسىز تورغا(Wi-Fi) باغلان"
626
623
627#: qml/Wizard/Pages/40-wifi.qml:168
624#: qml/Wizard/Pages/40-wifi.qml:168
628msgid "Available networks…"
625msgid "Available networks…"
629−msgstr ""
626+msgstr "ئىشلەتكىلى بولىدىغان تورلار…"
630
627
631#: qml/Wizard/Pages/40-wifi.qml:169
628#: qml/Wizard/Pages/40-wifi.qml:169
632msgid "No available networks."
629msgid "No available networks."
633−msgstr ""
630+msgstr "ئىشلەتكىلى بولىدىغان تور يوق."
634
631
635#: qml/Wizard/Pages/50-location.qml:27
632#: qml/Wizard/Pages/50-location.qml:27
636msgid "Location"
633msgid "Location"
637−msgstr ""
634+msgstr "ئورنى"
638
635
639#: qml/Wizard/Pages/50-location.qml:62
636#: qml/Wizard/Pages/50-location.qml:62
640msgid "Let the phone detect your location:"
637msgid "Let the phone detect your location:"
641−msgstr ""
638+msgstr "تىلفۇن ئورنىڭزنى بىكتىۋاتدۇ:"
642
639
643#: qml/Wizard/Pages/50-location.qml:69
640#: qml/Wizard/Pages/50-location.qml:69
644msgid "Using GPS only (less accurate)"
641msgid "Using GPS only (less accurate)"
645−msgstr ""
642+msgstr "GPS ئىشلىتىش (توپ توغرا چىقمايدۇ)"
646
643
647#: qml/Wizard/Pages/50-location.qml:86
644#: qml/Wizard/Pages/50-location.qml:86
648msgid "Using GPS, anonymized Wi-Fi and cellular network info (recommended)"
645msgid "Using GPS, anonymized Wi-Fi and cellular network info (recommended)"
649msgstr ""
646msgstr ""
647+"GPS ئىشلىەتكەندە سېمسىز تور ياكى كۆچمە تىلفۇن تورنى ئېچىش كېرەك (تەۋسىيە "
648+"قىلىندۇ)"
650
649
651#. Translators: HERE is a trademark for Nokia's location service, you probably shouldn't translate it
650#. Translators: HERE is a trademark for Nokia's location service, you probably shouldn't translate it
652#: qml/Wizard/Pages/50-location.qml:103
651#: qml/Wizard/Pages/50-location.qml:103
@@ -657,55 +656,150 @@ msgstr ""
657
656
658#: qml/Wizard/Pages/50-location.qml:112
657#: qml/Wizard/Pages/50-location.qml:112
659msgid "Not at all"
658msgid "Not at all"
660−msgstr ""
659+msgstr "پەقەت ئۇنداق ئەمەس"
661
660
662#: qml/Wizard/Pages/50-location.qml:124
661#: qml/Wizard/Pages/50-location.qml:124
663msgid "You can change your mind later in <b>System Settings</b>."
662msgid "You can change your mind later in <b>System Settings</b>."
664−msgstr ""
663+msgstr "سىز <b>سىستېما تەڭشەك</b> تىن ھەرخىل ئۆزگەرتىشلەرنى ئىلىپ بارالايسىز"
665
664
666#: qml/Wizard/Pages/60-reporting.qml:24
665#: qml/Wizard/Pages/60-reporting.qml:24
667msgid "Improving your experience"
666msgid "Improving your experience"
668−msgstr ""
667+msgstr "سەۋىيەيىڭىز ئاشىدۇ"
669
668
670#: qml/Wizard/Pages/60-reporting.qml:36
669#: qml/Wizard/Pages/60-reporting.qml:36
671msgid ""
670msgid ""
672"Your phone is set up to automatically report errors to Canonical and its "
671"Your phone is set up to automatically report errors to Canonical and its "
673"partners, the makers of the operating system."
672"partners, the makers of the operating system."
674msgstr ""
673msgstr ""
674+"تېلېفونىڭىز خاتالىقلارنى Canonical ۋە ئۇنىڭ بىلەن ھەمكارلاشقانلارغا ۋە "
675+"مەشغۇلات سىستېمىسىنى ياسىغۇچىلارغا ئاپتوماتىك مەلۇم قىلىدىغان قىلىپ تەڭشەلدى."
675
676
676#: qml/Wizard/Pages/60-reporting.qml:43
677#: qml/Wizard/Pages/60-reporting.qml:43
677msgid ""
678msgid ""
678"This can be disabled in <b>System Settings</b> under <b>Security &amp; "
679"This can be disabled in <b>System Settings</b> under <b>Security &amp; "
679"Privacy</b>"
680"Privacy</b>"
680msgstr ""
681msgstr ""
682+"بۇنى <b>بىخەتەرلىك &amp; شەخسىيەت</b>نىڭ ئاستىدىكى <b>سىستېما تەڭشىكى</b>دە "
683+"ئىناۋەتسىز قىلىشقا بولىدۇ."
681
684
682#: qml/Wizard/Pages/80-finished.qml:24
685#: qml/Wizard/Pages/80-finished.qml:24
683msgid "All done"
686msgid "All done"
684−msgstr ""
687+msgstr "ھەممىسى تامام"
685
688
686#: qml/Wizard/Pages/80-finished.qml:39
689#: qml/Wizard/Pages/80-finished.qml:39
687msgid "Nice work!"
690msgid "Nice work!"
688−msgstr ""
691+msgstr "جاپا چەكتىڭىز!"
689
692
690#: qml/Wizard/Pages/80-finished.qml:46
693#: qml/Wizard/Pages/80-finished.qml:46
691msgid "Your phone is now ready to use."
694msgid "Your phone is now ready to use."
692−msgstr ""
695+msgstr "تېلېفونىڭىز ئىشلىتىشكە ھازىرلاندى."
693
696
694#: qml/Wizard/Pages/80-finished.qml:53
697#: qml/Wizard/Pages/80-finished.qml:53
695msgid "Finish"
698msgid "Finish"
696−msgstr ""
699+msgstr "تامام"
697
700
698#. Translators: This is the arrow for "Back" buttons
701#. Translators: This is the arrow for "Back" buttons
699#: qml/Wizard/StackButton.qml:39
702#: qml/Wizard/StackButton.qml:39
700#, qt-format
703#, qt-format
701msgid "〈 %1"
704msgid "〈 %1"
702−msgstr ""
705+msgstr "〈 %1"
703
706
704#. Translators: This is the arrow for "Forward" buttons
707#. Translators: This is the arrow for "Forward" buttons
705#: qml/Wizard/StackButton.qml:42
708#: qml/Wizard/StackButton.qml:42
706#, qt-format
709#, qt-format
707msgid "%1 〉"
710msgid "%1 〉"
708−msgstr ""
711+msgstr "%1 〉"
712+
713+#~ msgid "Confirm"
714+#~ msgstr "جەزملە"
715+
716+#~ msgid "Type or say a command"
717+#~ msgstr "بۇيرۇق كىرگۈزۈڭ ياكى دەڭ"
718+
719+#~ msgid "Loading. Please Wait..."
720+#~ msgstr "ئوقۇۋاتىدۇ، سەل كۈتۈڭ…"
721+
722+#~ msgid "Speak Now..."
723+#~ msgstr "ئەمدى سۆزلەڭ…"
724+
725+#~ msgid "Speaking..."
726+#~ msgstr "سۆزلەۋاتىسىز…"
727+
728+#~ msgid "Search"
729+#~ msgstr "ئىزدە"
730+
731+#~ msgid "Top edge"
732+#~ msgstr "ئۈستى گىرۋەك"
733+
734+#~ msgid "Close"
735+#~ msgstr "ياپ"
736+
737+#~ msgid "Left edge"
738+#~ msgstr "سول گىرۋەك"
739+
740+#~ msgid "Right edge"
741+#~ msgstr "ئوڭ گىرۋەك"
742+
743+#~ msgid "Well done"
744+#~ msgstr "ياخشى بولدى"
745+
746+#~ msgid "Skip intro"
747+#~ msgstr "قىسقىچە تونۇشتۇرۇشتىن ئاتلاش"
748+
749+#~ msgid "Try swiping from the right edge to unlock the phone"
750+#~ msgstr "تېلېفوننى قۇلۇپتىن ئېچىش ئۈچۈن ئوڭ گىرۋەكتىن سىيرىڭ"
751+
752+#~ msgid "Try swiping from the top edge to access the indicators"
753+#~ msgstr "كۆرسەتكۈچلەرنى زىيارەت قىلىش ئۈچۈن ئۈستى گىرۋەكتىن سىيرىڭ"
754+
755+#~ msgid "Swipe up again to close the settings screen"
756+#~ msgstr "تەڭشەش ئېكرانىنى يېپىش ئۈچۈن ئۈستىگە قايتا سىيرىڭ"
757+
758+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
759+#~ msgstr "قوللىنىشلارنى تىز زىيارەت قىلىش ئۈچۈن سولدىن سىيرىپ ئىجراچىنى ئېچىڭ"
760+
761+#~ msgid ""
762+#~ "You have now mastered the edge gestures and can start using the "
763+#~ "phone<br><br>Tap on the screen to start"
764+#~ msgstr ""
765+#~ "ئېكراننى چېكىپ باشلاڭ<br><br>سىز ھازىر گىرۋەك بارماق ئىشارەتلىرىنى ئىگىلەپ "
766+#~ "بولدىڭىز،ئەمدى تېلېفوننى ئىشلىتىشنى باشلىسىڭىز بولىدۇ"
767+
768+#~ msgid "Log out"
769+#~ msgstr "تىزىمدىن چىق"
770+
771+#~ msgid "Shut down"
772+#~ msgstr "تاقا"
773+
774+#~ msgid "Reboot"
775+#~ msgstr "قايتا قوزغات"
776+
777+#~ msgid "Power"
778+#~ msgstr "توك مەنبە"
779+
780+#~ msgid "Power off"
781+#~ msgstr "توكنى ئۈز"
782+
783+#~ msgid "Settings"
784+#~ msgstr "تەڭشەكلەر"
785+
786+#~ msgid "Done"
787+#~ msgstr "تامام"
788+
789+#~ msgid "Store"
790+#~ msgstr "ساقلا"
791+
792+#~ msgid "Favorites"
793+#~ msgstr "يىغقۇچ"
794+
795+#~ msgid "All"
796+#~ msgstr "ھەممىسى"
797+
798+#~ msgid "Restart"
799+#~ msgstr "قايتا قوزغات"
800+
801+#~ msgid "Manage Scopes"
802+#~ msgstr "دائىرە باشقۇرۇش"
709
803
710#~ msgid "Please re-enter"
804#~ msgid "Please re-enter"
711#~ msgstr "قايتا كىرگۈزۈڭ"
805#~ msgstr "قايتا كىرگۈزۈڭ"
po/uk.po+99−8
@@ -8,7 +8,7 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n%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: 2015-09-12 05:43+0000\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20−"X-Generator: Launchpad (build 17720)\n"
20+"X-Generator: Launchpad (build 17746)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:112
22#: plugins/LightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -30,7 +30,7 @@ msgstr "Заблокувати кнопку"
30
30
31#: plugins/Unity/Launcher/launcheritem.cpp:52
31#: plugins/Unity/Launcher/launcheritem.cpp:52
32msgid "Quit"
32msgid "Quit"
33−msgstr ""
33+msgstr "Вийти"
34
34
35#: plugins/Unity/Launcher/launcheritem.cpp:106
35#: plugins/Unity/Launcher/launcheritem.cpp:106
36msgid "Unpin shortcut"
36msgid "Unpin shortcut"
@@ -468,7 +468,7 @@ msgstr "Відповісти"
468
468
469#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
469#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
470msgid "Call back"
470msgid "Call back"
471−msgstr ""
471+msgstr "Зворотний виклик"
472
472
473#: qml/Panel/Indicators/ModemInfoItem.qml:105
473#: qml/Panel/Indicators/ModemInfoItem.qml:105
474msgid "Unlock SIM"
474msgid "Unlock SIM"
@@ -726,8 +726,99 @@ msgstr "〈 %1"
726msgid "%1 〉"
726msgid "%1 〉"
727msgstr "%1 〉"
727msgstr "%1 〉"
728
728
729+#~ msgid "Confirm"
730+#~ msgstr "Підтвердити"
731+
732+#~ msgid "Type or say a command"
733+#~ msgstr "Введіть або озвучте команду"
734+
735+#~ msgid "Loading. Please Wait..."
736+#~ msgstr "Завантаження. Будь ласка, зачекайте…"
737+
738+#~ msgid "Speak Now..."
739+#~ msgstr "Можна говорити…"
740+
741+#~ msgid "Speaking..."
742+#~ msgstr "Мовлення…"
743+
744+#~ msgid "Search"
745+#~ msgstr "Пошук"
746+
747+#~ msgid "Swipe up again to close the settings screen"
748+#~ msgstr "Проведіть пальцем ще раз, щоб закрити вікно параметрів"
749+
750+#~ msgid "Top edge"
751+#~ msgstr "Верхній край"
752+
753+#~ msgid "Try swiping from the top edge to access the indicators"
754+#~ msgstr ""
755+#~ "Спробуйте провести пальцем від верхнього краю, щоб розблокувати телефон"
756+
757+#~ msgid "Close"
758+#~ msgstr "Закрити"
759+
760+#~ msgid "Left edge"
761+#~ msgstr "Лівий край"
762+
763+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
764+#~ msgstr ""
765+#~ "Проведіть пальцем від лівого краю, щоб відкрити панель запуску для "
766+#~ "пришвидшення доступу до програм"
767+
768+#~ msgid "Well done"
769+#~ msgstr "Добре"
770+
771+#~ msgid "Skip intro"
772+#~ msgstr "Пропустити вступ"
773+
774+#~ msgid "Try swiping from the right edge to unlock the phone"
775+#~ msgstr "Спробуйте провести пальцем від правою краю, щоб розблокувати телефон"
776+
777+#~ msgid "Right edge"
778+#~ msgstr "Правий край"
779+
780+#~ msgid ""
781+#~ "You have now mastered the edge gestures and can start using the "
782+#~ "phone<br><br>Tap on the screen to start"
783+#~ msgstr ""
784+#~ "Вами налаштовано дії у відповідь на дотики на краях екрана. Тепер телефоном "
785+#~ "можна користуватися.<br><br>Торкніться екрана, щоб розпочати."
786+
787+#~ msgid "All"
788+#~ msgstr "Все"
789+
790+#~ msgid "Favorites"
791+#~ msgstr "Улюблене"
792+
793+#~ msgid "Store"
794+#~ msgstr "Крамниця"
795+
796+#~ msgid "Power off"
797+#~ msgstr "Вимкнути"
798+
799+#~ msgid "Done"
800+#~ msgstr "Виконано"
801+
802+#~ msgid "Log out"
803+#~ msgstr "Вийти"
804+
805+#~ msgid "Reboot"
806+#~ msgstr "Перезавантажити"
807+
808+#~ msgid "Shut down"
809+#~ msgstr "Вимкнути"
810+
811+#~ msgid "Power"
812+#~ msgstr "Живлення"
813+
814+#~ msgid "Settings"
815+#~ msgstr "Параметри"
816+
817+#~ msgid "Restart"
818+#~ msgstr "Перезапуск"
819+
820+#~ msgid "Manage Scopes"
821+#~ msgstr "Керування областями"
822+
729#~ msgid "Please re-enter"
823#~ msgid "Please re-enter"
730#~ msgstr "Ввведіть ще раз"
824#~ msgstr "Ввведіть ще раз"
731−
732−#~ msgid "Click here to finish."
733−#~ msgstr "Натисніть тут, щоб завершити."
po/unity8.pot+36−34
@@ -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: 2015-08-25 14:53+0200\n"
11+"POT-Creation-Date: 2015-09-16 00:49+0200\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"
@@ -18,7 +18,7 @@ msgstr ""
18"Content-Transfer-Encoding: 8bit\n"
18"Content-Transfer-Encoding: 8bit\n"
19"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
19"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
20
20
21−#: plugins/LightDM/Greeter.cpp:112
21+#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
23msgstr ""
23msgstr ""
24
24
@@ -134,83 +134,83 @@ msgid_plural "Please wait %1 minutes and then try again…"
134msgstr[0] ""
134msgstr[0] ""
135msgstr[1] ""
135msgstr[1] ""
136
136
137−#: qml/Components/Dialogs.qml:112
137+#: qml/Components/Dialogs.qml:115
138msgctxt "Title: Lock/Log out dialog"
138msgctxt "Title: Lock/Log out dialog"
139msgid "Log out"
139msgid "Log out"
140msgstr ""
140msgstr ""
141
141
142−#: qml/Components/Dialogs.qml:113
142+#: qml/Components/Dialogs.qml:116
143msgid "Are you sure you want to log out?"
143msgid "Are you sure you want to log out?"
144msgstr ""
144msgstr ""
145
145
146−#: qml/Components/Dialogs.qml:115
146+#: qml/Components/Dialogs.qml:118
147msgctxt "Button: Lock the system"
147msgctxt "Button: Lock the system"
148msgid "Lock"
148msgid "Lock"
149msgstr ""
149msgstr ""
150
150
151−#: qml/Components/Dialogs.qml:122
151+#: qml/Components/Dialogs.qml:125
152msgctxt "Button: Log out from the system"
152msgctxt "Button: Log out from the system"
153msgid "Log Out"
153msgid "Log Out"
154msgstr ""
154msgstr ""
155
155
156−#: qml/Components/Dialogs.qml:129 qml/Components/Dialogs.qml:162
156+#: qml/Components/Dialogs.qml:132 qml/Components/Dialogs.qml:165
157−#: qml/Components/Dialogs.qml:221
157+#: qml/Components/Dialogs.qml:224
158msgid "Cancel"
158msgid "Cancel"
159msgstr ""
159msgstr ""
160
160
161−#: qml/Components/Dialogs.qml:141
161+#: qml/Components/Dialogs.qml:144
162msgctxt "Title: Reboot/Shut down dialog"
162msgctxt "Title: Reboot/Shut down dialog"
163msgid "Shut down"
163msgid "Shut down"
164msgstr ""
164msgstr ""
165
165
166−#: qml/Components/Dialogs.qml:142
166+#: qml/Components/Dialogs.qml:145
167msgid "Are you sure you want to shut down?"
167msgid "Are you sure you want to shut down?"
168msgstr ""
168msgstr ""
169
169
170−#: qml/Components/Dialogs.qml:144
170+#: qml/Components/Dialogs.qml:147
171msgctxt "Button: Reboot the system"
171msgctxt "Button: Reboot the system"
172msgid "Reboot"
172msgid "Reboot"
173msgstr ""
173msgstr ""
174
174
175−#: qml/Components/Dialogs.qml:153
175+#: qml/Components/Dialogs.qml:156
176msgctxt "Button: Shut down the system"
176msgctxt "Button: Shut down the system"
177msgid "Shut down"
177msgid "Shut down"
178msgstr ""
178msgstr ""
179
179
180−#: qml/Components/Dialogs.qml:175
180+#: qml/Components/Dialogs.qml:178
181msgctxt "Title: Reboot dialog"
181msgctxt "Title: Reboot dialog"
182msgid "Reboot"
182msgid "Reboot"
183msgstr ""
183msgstr ""
184
184
185−#: qml/Components/Dialogs.qml:176
185+#: qml/Components/Dialogs.qml:179
186msgid "Are you sure you want to reboot?"
186msgid "Are you sure you want to reboot?"
187msgstr ""
187msgstr ""
188
188
189−#: qml/Components/Dialogs.qml:178
189+#: qml/Components/Dialogs.qml:181
190msgid "No"
190msgid "No"
191msgstr ""
191msgstr ""
192
192
193−#: qml/Components/Dialogs.qml:185
193+#: qml/Components/Dialogs.qml:188
194msgid "Yes"
194msgid "Yes"
195msgstr ""
195msgstr ""
196
196
197−#: qml/Components/Dialogs.qml:200
197+#: qml/Components/Dialogs.qml:203
198msgctxt "Title: Power off/Restart dialog"
198msgctxt "Title: Power off/Restart dialog"
199msgid "Power"
199msgid "Power"
200msgstr ""
200msgstr ""
201
201
202−#: qml/Components/Dialogs.qml:201
202+#: qml/Components/Dialogs.qml:204
203msgid ""
203msgid ""
204"Are you sure you would like\n"
204"Are you sure you would like\n"
205"to power off?"
205"to power off?"
206msgstr ""
206msgstr ""
207
207
208−#: qml/Components/Dialogs.qml:203
208+#: qml/Components/Dialogs.qml:206
209msgctxt "Button: Power off the system"
209msgctxt "Button: Power off the system"
210msgid "Power off"
210msgid "Power off"
211msgstr ""
211msgstr ""
212
212
213−#: qml/Components/Dialogs.qml:212
213+#: qml/Components/Dialogs.qml:215
214msgctxt "Button: Restart the system"
214msgctxt "Button: Restart the system"
215msgid "Restart"
215msgid "Restart"
216msgstr ""
216msgstr ""
@@ -271,8 +271,10 @@ msgstr ""
271msgid "Less..."
271msgid "Less..."
272msgstr ""
272msgstr ""
273
273
274−#: qml/Dash/Previews/PreviewCommentInput.qml:61
274+#: qml/Dash/Previews/PreviewCommentInput.qml:68
275−#: qml/Dash/Previews/PreviewRatingInput.qml:169
275+#: qml/Dash/Previews/PreviewRatingInput.qml:174
276+#: qml/Panel/Indicators/MessageMenuItemFactory.qml:148
277+#: qml/Panel/Indicators/MessageMenuItemFactory.qml:205
276msgid "Send"
278msgid "Send"
277msgstr ""
279msgstr ""
278
280
@@ -387,62 +389,62 @@ msgstr ""
387msgid "Conference"
389msgid "Conference"
388msgstr ""
390msgstr ""
389
391
390−#: qml/Panel/Indicators/MenuItemFactory.qml:674
392+#: qml/Panel/Indicators/MenuItemFactory.qml:718
391msgid "Nothing is playing"
393msgid "Nothing is playing"
392msgstr ""
394msgstr ""
393
395
394−#: qml/Panel/Indicators/MenuItemFactory.qml:803
396+#: qml/Panel/Indicators/MenuItemFactory.qml:847
395#, qt-format
397#, qt-format
396msgid "%1 hour"
398msgid "%1 hour"
397msgid_plural "%1 hours"
399msgid_plural "%1 hours"
398msgstr[0] ""
400msgstr[0] ""
399msgstr[1] ""
401msgstr[1] ""
400
402
401−#: qml/Panel/Indicators/MenuItemFactory.qml:807
403+#: qml/Panel/Indicators/MenuItemFactory.qml:851
402#, qt-format
404#, qt-format
403msgid "%1 minute"
405msgid "%1 minute"
404msgid_plural "%1 minutes"
406msgid_plural "%1 minutes"
405msgstr[0] ""
407msgstr[0] ""
406msgstr[1] ""
408msgstr[1] ""
407
409
408−#: qml/Panel/Indicators/MenuItemFactory.qml:812
410+#: qml/Panel/Indicators/MenuItemFactory.qml:856
409#, qt-format
411#, qt-format
410msgid "%1 second"
412msgid "%1 second"
411msgid_plural "%1 seconds"
413msgid_plural "%1 seconds"
412msgstr[0] ""
414msgstr[0] ""
413msgstr[1] ""
415msgstr[1] ""
414
416
415−#: qml/Panel/Indicators/MenuItemFactory.qml:815
417+#: qml/Panel/Indicators/MenuItemFactory.qml:859
416msgid "0 seconds"
418msgid "0 seconds"
417msgstr ""
419msgstr ""
418
420
419#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
421#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
420−#: qml/Panel/Indicators/MenuItemFactory.qml:817
422+#: qml/Panel/Indicators/MenuItemFactory.qml:861
421#, qt-format
423#, qt-format
422msgid "%1 remaining"
424msgid "%1 remaining"
423msgstr ""
425msgstr ""
424
426
425−#: qml/Panel/Indicators/MenuItemFactory.qml:823
427+#: qml/Panel/Indicators/MenuItemFactory.qml:867
426msgid "In queue…"
428msgid "In queue…"
427msgstr ""
429msgstr ""
428
430
429−#: qml/Panel/Indicators/MenuItemFactory.qml:827
431+#: qml/Panel/Indicators/MenuItemFactory.qml:871
430msgid "Downloading"
432msgid "Downloading"
431msgstr ""
433msgstr ""
432
434
433−#: qml/Panel/Indicators/MenuItemFactory.qml:829
435+#: qml/Panel/Indicators/MenuItemFactory.qml:873
434msgid "Paused, tap to resume"
436msgid "Paused, tap to resume"
435msgstr ""
437msgstr ""
436
438
437−#: qml/Panel/Indicators/MenuItemFactory.qml:831
439+#: qml/Panel/Indicators/MenuItemFactory.qml:875
438msgid "Canceled"
440msgid "Canceled"
439msgstr ""
441msgstr ""
440
442
441−#: qml/Panel/Indicators/MenuItemFactory.qml:833
443+#: qml/Panel/Indicators/MenuItemFactory.qml:877
442msgid "Finished"
444msgid "Finished"
443msgstr ""
445msgstr ""
444
446
445−#: qml/Panel/Indicators/MenuItemFactory.qml:835
447+#: qml/Panel/Indicators/MenuItemFactory.qml:879
446msgid "Failed, tap to retry"
448msgid "Failed, tap to retry"
447msgstr ""
449msgstr ""
448
450
po/ur.po+3−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:43+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
po/uz.po+2−2
@@ -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: 2015-09-12 05:43+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
po/vi.po+3−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:43+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
po/xh.po+3−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09: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"
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: 2015-09-12 05:43+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
po/zh_CN.po+71−6
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:43+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -700,8 +700,73 @@ msgstr "〈 %1"
700msgid "%1 〉"
700msgid "%1 〉"
701msgstr "%1 〉"
701msgstr "%1 〉"
702
702
703+#~ msgid "Confirm"
704+#~ msgstr "确认"
705+
706+#~ msgid "Type or say a command"
707+#~ msgstr "输入或说出一个命令"
708+
709+#~ msgid "Loading. Please Wait..."
710+#~ msgstr "正在加载,请稍候..."
711+
712+#~ msgid "Speak Now..."
713+#~ msgstr "现在请讲..."
714+
715+#~ msgid "Speaking..."
716+#~ msgstr "讲话中..."
717+
718+#~ msgid "Search"
719+#~ msgstr "搜索"
720+
721+#~ msgid "Top edge"
722+#~ msgstr "上边缘"
723+
724+#~ msgid "Close"
725+#~ msgstr "关闭"
726+
727+#~ msgid "Left edge"
728+#~ msgstr "左边缘"
729+
730+#~ msgid "Skip intro"
731+#~ msgstr "跳过简介"
732+
733+#~ msgid "Right edge"
734+#~ msgstr "右边缘"
735+
736+#~ msgid "Try swiping from the top edge to access the indicators"
737+#~ msgstr "从上边缘划入可以访问指示器"
738+
739+#~ msgid "Swipe up again to close the settings screen"
740+#~ msgstr "再次向上划动可以关闭设置界面"
741+
742+#~ msgid "Try swiping from the right edge to unlock the phone"
743+#~ msgstr "从右边滑动可以解锁"
744+
745+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
746+#~ msgstr "从左边划入展开启动器可以快速打开应用"
747+
748+#~ msgid "Well done"
749+#~ msgstr "做得好"
750+
751+#~ msgid ""
752+#~ "You have now mastered the edge gestures and can start using the "
753+#~ "phone<br><br>Tap on the screen to start"
754+#~ msgstr "您现在已经掌握了边缘滑动手势,可以开始使用手机了<br><br>请点击屏幕开始使用"
755+
756+#~ msgid "All"
757+#~ msgstr "所有"
758+
759+#~ msgid "Favorites"
760+#~ msgstr "收藏夹"
761+
762+#~ msgid "Store"
763+#~ msgstr "商店"
764+
765+#~ msgid "Power off"
766+#~ msgstr "关机"
767+
768+#~ msgid "Done"
769+#~ msgstr "完成"
770+
703#~ msgid "Please re-enter"
771#~ msgid "Please re-enter"
704#~ msgstr "请重新输入"
772#~ msgstr "请重新输入"
705−
706−#~ msgid "Click here to finish."
707−#~ msgstr "点击这里完成。"
po/zh_HK.po+56−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+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"
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: 2015-09-12 05:43+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:112
21#: plugins/LightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -701,3 +701,56 @@ msgstr ""
701#, qt-format
701#, qt-format
702msgid "%1 〉"
702msgid "%1 〉"
703msgstr ""
703msgstr ""
704+
705+#~ msgid "Top edge"
706+#~ msgstr "頂部邊緣"
707+
708+#~ msgid "Try swiping from the top edge to access the indicators"
709+#~ msgstr "試從頂部邊緣輕掃存取指示器"
710+
711+#~ msgid "Close"
712+#~ msgstr "關閉"
713+
714+#~ msgid "Well done"
715+#~ msgstr "做得好"
716+
717+#~ msgid "Skip intro"
718+#~ msgstr "跳過介紹"
719+
720+#~ msgid "Speaking..."
721+#~ msgstr "正在講..."
722+
723+#~ msgid "Confirm"
724+#~ msgstr "確認"
725+
726+#~ msgid "Search"
727+#~ msgstr "搜尋"
728+
729+#~ msgid "Type or say a command"
730+#~ msgstr "輸入或說出指令"
731+
732+#~ msgid "Swipe up again to close the settings screen"
733+#~ msgstr "再向上滑動一次以關閉設定畫面"
734+
735+#~ msgid "Left edge"
736+#~ msgstr "左側邊緣"
737+
738+#~ msgid "Try swiping from the right edge to unlock the phone"
739+#~ msgstr "試從右邊緣向左滑動解鎖手機"
740+
741+#~ msgid "Right edge"
742+#~ msgstr "右側邊緣"
743+
744+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
745+#~ msgstr "從左側邊緣滑動以顯示啟動器快速查看應用"
746+
747+#~ msgid ""
748+#~ "You have now mastered the edge gestures and can start using the "
749+#~ "phone<br><br>Tap on the screen to start"
750+#~ msgstr "您現在已熟練邊緣手勢,可以開始使用手機了<br><br>輕觸螢幕開始使用"
751+
752+#~ msgid "Loading. Please Wait..."
753+#~ msgstr "載入中。請稍候..."
754+
755+#~ msgid "Speak Now..."
756+#~ msgstr "請講..."
po/zh_TW.po+92−3
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
10"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+0000\n"
11+"PO-Revision-Date: 2015-07-31 09:29+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: 2015-09-12 05:43+0000\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
19+"X-Generator: Launchpad (build 17746)\n"
20"Language: zh_TW\n"
20"Language: zh_TW\n"
21
21
22#: plugins/LightDM/Greeter.cpp:112
22#: plugins/LightDM/Greeter.cpp:112
@@ -699,5 +699,94 @@ msgstr "〈 %1"
699msgid "%1 〉"
699msgid "%1 〉"
700msgstr "%1 〉"
700msgstr "%1 〉"
701
701
702+#~ msgid "Confirm"
703+#~ msgstr "確認"
704+
705+#~ msgid "Loading. Please Wait..."
706+#~ msgstr "載入中。請稍候..."
707+
708+#~ msgid "Speak Now..."
709+#~ msgstr "請說..."
710+
711+#~ msgid "Speaking..."
712+#~ msgstr "說話中..."
713+
714+#~ msgid "Search"
715+#~ msgstr "搜尋"
716+
717+#~ msgid "Close"
718+#~ msgstr "關閉"
719+
720+#~ msgid "Skip intro"
721+#~ msgstr "略過導覽"
722+
723+#~ msgid "Type or say a command"
724+#~ msgstr "輸入或說出指令"
725+
726+#~ msgid "Right edge"
727+#~ msgstr "右側邊緣"
728+
729+#~ msgid "Try swiping from the right edge to unlock the phone"
730+#~ msgstr "從螢幕右緣向左滑動解鎖手機"
731+
732+#~ msgid "Top edge"
733+#~ msgstr "上方邊緣"
734+
735+#~ msgid "Try swiping from the top edge to access the indicators"
736+#~ msgstr "從螢幕上緣向下滑動打開指示器"
737+
738+#~ msgid "Swipe up again to close the settings screen"
739+#~ msgstr "再次向上滑動關閉設定畫面"
740+
741+#~ msgid "Left edge"
742+#~ msgstr "左方邊緣"
743+
744+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
745+#~ msgstr "從螢幕左緣向右滑動揭開啟動器可快速存取程式"
746+
747+#~ msgid "Well done"
748+#~ msgstr "做得好"
749+
750+#~ msgid ""
751+#~ "You have now mastered the edge gestures and can start using the "
752+#~ "phone<br><br>Tap on the screen to start"
753+#~ msgstr "您現在已熟練邊緣手勢,可以開始使用手機了<br><br>輕觸螢幕開始使用"
754+
755+#~ msgid "Log out"
756+#~ msgstr "登出"
757+
758+#~ msgid "Reboot"
759+#~ msgstr "重新開機"
760+
761+#~ msgid "Shut down"
762+#~ msgstr "關機"
763+
764+#~ msgid "Power"
765+#~ msgstr "關閉電源"
766+
767+#~ msgid "Power off"
768+#~ msgstr "關閉電源"
769+
770+#~ msgid "All"
771+#~ msgstr "全部"
772+
773+#~ msgid "Settings"
774+#~ msgstr "設定"
775+
776+#~ msgid "Favorites"
777+#~ msgstr "最愛"
778+
779+#~ msgid "Store"
780+#~ msgstr "商城"
781+
782+#~ msgid "Done"
783+#~ msgstr "完成"
784+
785+#~ msgid "Restart"
786+#~ msgstr "重新啟動"
787+
702#~ msgid "Please re-enter"
788#~ msgid "Please re-enter"
703#~ msgstr "請再輸入"
789#~ msgstr "請再輸入"
790+
791+#~ msgid "Manage Scopes"
792+#~ msgstr "管理 Scopes"
qml/Components/BlurLayer.qmlnew file+69
@@ -0,0 +1,69 @@
1+/*
2+ * Copyright (C) 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 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 QtGraphicalEffects 1.0
19+
20+Item {
21+ id: root
22+
23+ property alias source: shaderEffectSource.sourceItem
24+ property alias saturation: desaturateEffect.saturationValue
25+ property alias blurRadius: fastBlur.radius
26+
27+ readonly property alias ready: shaderEffectSource.ready
28+
29+ ShaderEffect {
30+ id: desaturateEffect
31+ anchors.fill: root
32+
33+ property real saturationValue: 1
34+
35+ property variant source: ShaderEffectSource {
36+ id: shaderEffectSource
37+ hideSource: root.visible
38+ live: !root.visible
39+ property bool ready: false;
40+ onLiveChanged: {
41+ if (!live) {
42+ ready = false;
43+ scheduleUpdate();
44+ }
45+ }
46+ onScheduledUpdateCompleted: ready = true;
47+ }
48+
49+ fragmentShader: "
50+ varying highp vec2 qt_TexCoord0;
51+ uniform sampler2D source;
52+ uniform lowp float saturationValue;
53+ void main(void)
54+ {
55+ highp vec4 sourceColor = texture2D(source, qt_TexCoord0);
56+ highp vec4 scaledColor = sourceColor * vec4(0.3, 0.59, 0.11, 1.0);
57+ lowp float luminance = scaledColor.r + scaledColor.g + scaledColor.b ;
58+ gl_FragColor = mix(vec4(luminance, luminance, luminance, sourceColor.a), sourceColor, saturationValue);
59+ }"
60+ }
61+
62+ FastBlur {
63+ id: fastBlur
64+ anchors.fill: parent
65+ source: desaturateEffect
66+ visible: radius > 0
67+ radius: 0
68+ }
69+}
qml/Dash/PreviewListView.qml+12−4
@@ -101,18 +101,26 @@ Item {
101
101
102 isCurrent: ListView.isCurrentItem
102 isCurrent: ListView.isCurrentItem
103
103
104− previewModel: {
104+ readonly property var previewStack: {
105 if (root.open) {
105 if (root.open) {
106 if (index === root.initialIndex) {
106 if (index === root.initialIndex) {
107− return root.initialIndexPreviewStack.getPreviewModel(0);
107+ return root.initialIndexPreviewStack;
108 } else {
108 } else {
109− var previewStack = root.scope.preview(result, root.categoryId);
109+ return root.scope.preview(result, root.categoryId);
110− return previewStack.getPreviewModel(0);
111 }
110 }
112 } else {
111 } else {
113 return null;
112 return null;
114 }
113 }
115 }
114 }
115+
116+ previewModel: {
117+ if (previewStack) {
118+ return previewStack.getPreviewModel(0);
119+ } else {
120+ return null;
121+ }
122+ }
123+
116 scopeStyle: root.scopeStyle
124 scopeStyle: root.scopeStyle
117 }
125 }
118 }
126 }
qml/Dash/Previews/PreviewExpandable.qml+3−3
@@ -24,15 +24,15 @@ import "../../Components"
24 Those widgets can be collapsed or uncollapsed. When uncollapsed
24 Those widgets can be collapsed or uncollapsed. When uncollapsed
25 all the widgets are shown, when collapsed only the first
25 all the widgets are shown, when collapsed only the first
26 widgetData["collapsed-widgets"] are shown. It has a title that comes
26 widgetData["collapsed-widgets"] are shown. It has a title that comes
27− in via widgetData["title"]
27+ in via widgetData["title"]. This widget expands all child widgets
28+ when initialized by specifying widgetData["expanded"] == true.
29+ It's in unexpanded mode by default.
28 */
30 */
29
31
30PreviewWidget {
32PreviewWidget {
31 id: root
33 id: root
32 implicitHeight: childrenRect.height
34 implicitHeight: childrenRect.height
33
35
34− expanded: false
35−
36 Label {
36 Label {
37 id: titleLabel
37 id: titleLabel
38 objectName: "titleLabel"
38 objectName: "titleLabel"
qml/Dash/Previews/PreviewWidgetFactory.qml+1−1
@@ -35,7 +35,7 @@ Loader {
35 property var scopeStyle: null
35 property var scopeStyle: null
36
36
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"
38+ property bool expanded: widgetType !== "expandable" || widgetData["expanded"] === true
39
39
40 //! Set to true if the parent preview is displayed.
40 //! Set to true if the parent preview is displayed.
41 property bool isCurrentPreview: false
41 property bool isCurrentPreview: false
qml/Greeter/Infographics.qml+1−1
@@ -73,7 +73,7 @@ Item {
73 notification.hideAnim.start()
73 notification.hideAnim.start()
74 }
74 }
75
75
76− visible: model.label !== ""
76+ visible: model.username !== ""
77
77
78 Component.onCompleted: startShowAnimation()
78 Component.onCompleted: startShowAnimation()
79
79
qml/Launcher/Launcher.qml+1
@@ -136,6 +136,7 @@ Item {
136 id: fadeOutAnimation
136 id: fadeOutAnimation
137 ScriptAction {
137 ScriptAction {
138 script: {
138 script: {
139+ animateTimer.stop(); // Don't change the state behind our back
139 panel.layer.enabled = true
140 panel.layer.enabled = true
140 }
141 }
141 }
142 }
qml/Notifications/Notification.qml+11−7
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013, 2015 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
@@ -17,11 +17,10 @@
17import QtQuick 2.0
17import QtQuick 2.0
18import QtMultimedia 5.0
18import QtMultimedia 5.0
19import Powerd 0.1
19import Powerd 0.1
20−import Ubuntu.Components 1.1
20+import Ubuntu.Components 1.2
21import Unity.Notifications 1.0
21import Unity.Notifications 1.0
22import QMenuModel 0.1
22import QMenuModel 0.1
23import Utils 0.1
23import Utils 0.1
24−
25import Ubuntu.Components.ListItems 0.1 as ListItem
24import Ubuntu.Components.ListItems 0.1 as ListItem
26
25
27Item {
26Item {
@@ -49,6 +48,8 @@ Item {
49 readonly property color sdDarkGrey: "#dddddd"
48 readonly property color sdDarkGrey: "#dddddd"
50 readonly property color sdFontColor: "#5d5d5d"
49 readonly property color sdFontColor: "#5d5d5d"
51 readonly property real contentSpacing: units.gu(2)
50 readonly property real contentSpacing: units.gu(2)
51+ readonly property bool canBeClosed: type === Notification.Ephemeral
52+ property bool hasMouse
52
53
53 objectName: "background"
54 objectName: "background"
54 implicitHeight: type !== Notification.PlaceHolder ? (fullscreen ? maxHeight : outterColumn.height - shapedBack.anchors.topMargin + contentSpacing * 2) : 0
55 implicitHeight: type !== Notification.PlaceHolder ? (fullscreen ? maxHeight : outterColumn.height - shapedBack.anchors.topMargin + contentSpacing * 2) : 0
@@ -216,6 +217,8 @@ Item {
216 onClicked: {
217 onClicked: {
217 if (notification.type == Notification.Interactive) {
218 if (notification.type == Notification.Interactive) {
218 notification.notification.invokeAction(actionRepeater.itemAt(0).actionId)
219 notification.notification.invokeAction(actionRepeater.itemAt(0).actionId)
220+ } else if (hasMouse && canBeClosed) {
221+ notification.notification.close()
219 } else {
222 } else {
220 notificationList.currentIndex = index;
223 notificationList.currentIndex = index;
221 }
224 }
@@ -280,7 +283,7 @@ Item {
280 fontSize: "medium"
283 fontSize: "medium"
281 color: darkOnBright ? sdFontColor : Theme.palette.selected.backgroundText
284 color: darkOnBright ? sdFontColor : Theme.palette.selected.backgroundText
282 elide: Text.ElideRight
285 elide: Text.ElideRight
283− textFormat: Text.PlainText
286+ textFormat: Text.StyledText
284 }
287 }
285
288
286 Label {
289 Label {
@@ -297,7 +300,7 @@ Item {
297 wrapMode: Text.WordWrap
300 wrapMode: Text.WordWrap
298 maximumLineCount: type == Notification.SnapDecision ? 12 : 2
301 maximumLineCount: type == Notification.SnapDecision ? 12 : 2
299 elide: Text.ElideRight
302 elide: Text.ElideRight
300− textFormat: Text.PlainText
303+ textFormat: Text.StyledText
301 }
304 }
302 }
305 }
303
306
@@ -471,7 +474,7 @@ Item {
471 onClicked: notification.notification.invokeAction(oneOverTwoLoaderBottom.actionId)
474 onClicked: notification.notification.invokeAction(oneOverTwoLoaderBottom.actionId)
472 }
475 }
473 }
476 }
474− sourceComponent: (index == 1 || index == 2) ? oneOverTwoButtonBottom : undefined
477+ sourceComponent: (index == 1 || index == 2) ? oneOverTwoButtonBottom : undefined
475 }
478 }
476 }
479 }
477 }
480 }
@@ -487,7 +490,7 @@ Item {
487 margins: contentSpacing
490 margins: contentSpacing
488 }
491 }
489 visible: notification.type === Notification.SnapDecision && actionRepeater.count > 0 && !oneOverTwoCase.visible
492 visible: notification.type === Notification.SnapDecision && actionRepeater.count > 0 && !oneOverTwoCase.visible
490− spacing: units.gu(2)
493+ spacing: contentSpacing
491 layoutDirection: Qt.RightToLeft
494 layoutDirection: Qt.RightToLeft
492
495
493 Loader {
496 Loader {
@@ -499,6 +502,7 @@ Item {
499 width: buttonRow.width
502 width: buttonRow.width
500 leftIconName: "call-end"
503 leftIconName: "call-end"
501 rightIconName: "call-start"
504 rightIconName: "call-start"
505+ clickToAct: notification.hasMouse
502 onRightTriggered: {
506 onRightTriggered: {
503 notification.notification.invokeAction(notification.actions.data(0, ActionModel.RoleActionId))
507 notification.notification.invokeAction(notification.actions.data(0, ActionModel.RoleActionId))
504 }
508 }
qml/Notifications/Notifications.qml+3−1
@@ -28,6 +28,7 @@ ListView {
28
28
29 property real margin
29 property real margin
30 property bool useModal: snapDecisionProxyModel.count > 0
30 property bool useModal: snapDecisionProxyModel.count > 0
31+ property bool hasMouse
31
32
32 UnitySortFilterProxyModel {
33 UnitySortFilterProxyModel {
33 id: snapDecisionProxyModel
34 id: snapDecisionProxyModel
@@ -52,12 +53,13 @@ ListView {
52 secondaryIconSource: model.secondaryIcon
53 secondaryIconSource: model.secondaryIcon
53 summary: model.summary
54 summary: model.summary
54 body: model.body
55 body: model.body
55− value: model.value
56+ value: model.value ? model.value : -1
56 actions: model.actions
57 actions: model.actions
57 notificationId: model.id
58 notificationId: model.id
58 notification: notificationList.model.getRaw(notificationId)
59 notification: notificationList.model.getRaw(notificationId)
59 maxHeight: notificationList.height
60 maxHeight: notificationList.height
60 margins: notificationList.margin
61 margins: notificationList.margin
62+ hasMouse: notificationList.hasMouse
61
63
62 // make sure there's no opacity-difference between the several
64 // make sure there's no opacity-difference between the several
63 // elements in a notification
65 // elements in a notification
qml/Notifications/SwipeToAct.qml+38−3
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 20014-2015 Canonical, Ltd.
2+ * Copyright (C) 2014-2015 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
@@ -15,12 +15,12 @@
15 */
15 */
16
16
17import QtQuick 2.3
17import QtQuick 2.3
18−import Ubuntu.Components 1.1
18+import Ubuntu.Components 1.2
19
19
20Item {
20Item {
21 id: swipeToAct
21 id: swipeToAct
22
22
23− height: childrenRect.height
23+ height: clickToAct ? leftButton.height : childrenRect.height
24
24
25 signal leftTriggered()
25 signal leftTriggered()
26 signal rightTriggered()
26 signal rightTriggered()
@@ -28,6 +28,8 @@ Item {
28 property string leftIconName
28 property string leftIconName
29 property string rightIconName
29 property string rightIconName
30
30
31+ property bool clickToAct
32+
31 QtObject {
33 QtObject {
32 id: priv
34 id: priv
33
35
@@ -64,15 +66,45 @@ Item {
64 }
66 }
65 }
67 }
66
68
69+ Button {
70+ id: leftButton
71+ objectName: "leftButton"
72+ anchors.verticalCenter: parent.verticalCenter
73+ anchors.left: parent.left
74+ iconName: leftIconName
75+ visible: clickToAct
76+ width: (parent.width / 2) - priv.gap
77+ color: UbuntuColors.red
78+ onClicked: {
79+ leftTriggered()
80+ }
81+ }
82+
83+ Button {
84+ id: rightButton
85+ objectName: "rightButton"
86+ anchors.verticalCenter: parent.verticalCenter
87+ anchors.right: parent.right
88+ iconName: rightIconName
89+ visible: clickToAct
90+ width: (parent.width / 2) - priv.gap
91+ color: UbuntuColors.green
92+ onClicked: {
93+ rightTriggered()
94+ }
95+ }
96+
67 UbuntuShape {
97 UbuntuShape {
68 id: row
98 id: row
69 width: parent.width
99 width: parent.width
70 height: priv.sliderHeight
100 height: priv.sliderHeight
71 color: priv.sliderBGColor
101 color: priv.sliderBGColor
72 borderSource: "none"
102 borderSource: "none"
103+ visible: !clickToAct
73
104
74 UbuntuShape {
105 UbuntuShape {
75 id: leftShape
106 id: leftShape
107+ objectName: "leftArea"
76 anchors.top: parent.top
108 anchors.top: parent.top
77 anchors.left: parent.left
109 anchors.left: parent.left
78 anchors.margins: priv.gap
110 anchors.margins: priv.gap
@@ -167,6 +199,7 @@ Item {
167 color: "white"
199 color: "white"
168 }
200 }
169 }
201 }
202+
170 Row {
203 Row {
171 anchors.verticalCenter: parent.verticalCenter
204 anchors.verticalCenter: parent.verticalCenter
172 anchors.left: slider.right
205 anchors.left: slider.right
@@ -189,6 +222,7 @@ Item {
189
222
190 UbuntuShape {
223 UbuntuShape {
191 id: rightShape
224 id: rightShape
225+ objectName: "rightArea"
192 anchors.top: parent.top
226 anchors.top: parent.top
193 anchors.right: parent.right
227 anchors.right: parent.right
194 anchors.margins: priv.gap
228 anchors.margins: priv.gap
@@ -214,6 +248,7 @@ Item {
214 MouseArea {
248 MouseArea {
215 id: mouseArea
249 id: mouseArea
216 objectName: "swipeMouseArea"
250 objectName: "swipeMouseArea"
251+ enabled: !clickToAct
217
252
218 anchors.fill: row
253 anchors.fill: row
219 drag.target: slider
254 drag.target: slider
qml/OrientedShell.qml+1
@@ -155,6 +155,7 @@ Rectangle {
155 nativeWidth: root.width
155 nativeWidth: root.width
156 nativeHeight: root.height
156 nativeHeight: root.height
157 mode: applicationArguments.mode
157 mode: applicationArguments.mode
158+ hasMouse: UnityInputInfo.mice > deviceConfiguration.ignoredMice
158
159
159 // TODO: Factor in the connected input devices (eg: physical keyboard, mouse, touchscreen),
160 // TODO: Factor in the connected input devices (eg: physical keyboard, mouse, touchscreen),
160 // what's the output device (eg: big TV, desktop monitor, phone display), etc.
161 // what's the output device (eg: big TV, desktop monitor, phone display), etc.
qml/Panel/IndicatorItem.qml+1−1
@@ -243,7 +243,7 @@ IndicatorDelegate {
243 return;
243 return;
244 }
244 }
245
245
246− title = rootActionState.title ? rootActionState.title : "";
246+ title = rootActionState.title ? rootActionState.title : rootActionState.accessibleName;
247 leftLabel = rootActionState.leftLabel ? rootActionState.leftLabel : "";
247 leftLabel = rootActionState.leftLabel ? rootActionState.leftLabel : "";
248 rightLabel = rootActionState.rightLabel ? rootActionState.rightLabel : "";
248 rightLabel = rootActionState.rightLabel ? rootActionState.rightLabel : "";
249 icons = rootActionState.icons;
249 icons = rootActionState.icons;
qml/Panel/IndicatorPage.qml+1−1
@@ -23,7 +23,7 @@ IndicatorBase {
23 id: main
23 id: main
24
24
25 //const
25 //const
26− property string title: rootActionState.title
26+ property string title: rootActionState.title || rootActionState.accessibleName // some indicators don't expose a title but only the accessible-desc
27 property alias highlightFollowsCurrentItem : mainMenu.highlightFollowsCurrentItem
27 property alias highlightFollowsCurrentItem : mainMenu.highlightFollowsCurrentItem
28 readonly property alias factory: _factory
28 readonly property alias factory: _factory
29
29
qml/Panel/Indicators/IndicatorDelegate.qml+1−1
@@ -21,5 +21,5 @@ import QtQuick 2.0
21
21
22IndicatorBase {
22IndicatorBase {
23 readonly property bool indicatorVisible: rootActionState.indicatorVisible
23 readonly property bool indicatorVisible: rootActionState.indicatorVisible
24− readonly property string title: rootActionState.title
24+ readonly property string title: rootActionState.title || rootActionState.accessibleName
25}
25}
qml/Panel/Indicators/MenuItemFactory.qml+92−4
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright 2013 Canonical Ltd.
2+ * Copyright 2013,2015 Canonical Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License as published by
5 * it under the terms of the GNU Lesser General Public License as published by
@@ -12,9 +12,6 @@
12 *
12 *
13 * You should have received a copy of the GNU Lesser General Public License
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/>.
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Nick Dedekind <nick.dedekind@canonical.com>
18 */
15 */
19
16
20import QtQuick 2.0
17import QtQuick 2.0
@@ -24,6 +21,7 @@ import QMenuModel 0.1
24import Utils 0.1 as Utils
21import Utils 0.1 as Utils
25import Ubuntu.Components.ListItems 0.1 as ListItems
22import Ubuntu.Components.ListItems 0.1 as ListItems
26import Ubuntu.Components 1.3
23import Ubuntu.Components 1.3
24+import Unity.Session 0.1
27
25
28Item {
26Item {
29 id: menuFactory
27 id: menuFactory
@@ -60,6 +58,12 @@ Item {
60 "unity.widgets.systemsettings.tablet.wifisection" : wifiSection,
58 "unity.widgets.systemsettings.tablet.wifisection" : wifiSection,
61 "unity.widgets.systemsettings.tablet.accesspoint" : accessPoint,
59 "unity.widgets.systemsettings.tablet.accesspoint" : accessPoint,
62 "com.canonical.indicator.network.modeminfoitem" : modeminfoitem,
60 "com.canonical.indicator.network.modeminfoitem" : modeminfoitem,
61+
62+ "com.canonical.indicator.calendar": calendarMenu,
63+ "com.canonical.indicator.location": timezoneMenu,
64+
65+ "indicator.user-menu-item": userMenuItem,
66+ "indicator.guest-menu-item": userMenuItem
63 },
67 },
64 "indicator-messages" : {
68 "indicator-messages" : {
65 "com.canonical.indicator.button" : messagesButtonMenu
69 "com.canonical.indicator.button" : messagesButtonMenu
@@ -426,6 +430,90 @@ Item {
426 }
430 }
427 }
431 }
428
432
433+ Component {
434+ id: userMenuItem
435+
436+ Menus.UserSessionMenu {
437+ objectName: "userSessionMenu"
438+ highlightWhenPressed: false
439+
440+ property QtObject menuData: null
441+ property var menuModel: menuFactory.menuModel
442+ property int menuIndex: -1
443+
444+ name: menuData && menuData.label || "" // label is the user's real name
445+ iconSource: menuData && menuData.icon || ""
446+
447+ // would be better to compare with the logname but sadly the indicator doesn't expose that
448+ active: DBusUnitySessionService.RealName() !== "" ? DBusUnitySessionService.RealName() == name
449+ : DBusUnitySessionService.UserName() == name
450+
451+ onTriggered: {
452+ menuModel.activate(menuIndex);
453+ }
454+ }
455+ }
456+
457+ Component {
458+ id: calendarMenu
459+
460+ Menus.CalendarMenu {
461+ objectName: "calendarMenu"
462+ highlightWhenPressed: false
463+ focus: true
464+ }
465+ }
466+
467+ Component {
468+ id: timezoneMenu
469+
470+ Menus.TimeZoneMenu {
471+ id: tzMenuItem
472+ objectName: "timezoneMenu"
473+
474+ property QtObject menuData: null
475+ property var menuModel: menuFactory.menuModel
476+ property int menuIndex: -1
477+ property var extendedData: menuData && menuData.ext || undefined
478+ readonly property string tz: getExtendedProperty(extendedData, "xCanonicalTimezone", "UTC")
479+ property var updateTimer: Timer {
480+ repeat: true
481+ running: tzMenuItem.visible // only run when we're open
482+ onTriggered: tzMenuItem.time = Utils.TimezoneFormatter.currentTimeInTimezone(tzMenuItem.tz)
483+ }
484+
485+ city: menuData && menuData.label || ""
486+ time: Utils.TimezoneFormatter.currentTimeInTimezone(tz)
487+ enabled: menuData && menuData.sensitive || false
488+
489+ onMenuModelChanged: {
490+ loadAttributes();
491+ }
492+ onMenuIndexChanged: {
493+ loadAttributes();
494+ }
495+ onTriggered: {
496+ tzActionGroup.setLocation.activate(tz);
497+ }
498+
499+ QDBusActionGroup {
500+ id: tzActionGroup
501+ busType: DBus.SessionBus
502+ busName: "com.canonical.indicator.datetime"
503+ objectPath: "/com/canonical/indicator/datetime"
504+
505+ property variant setLocation: action("set-location")
506+
507+ Component.onCompleted: tzActionGroup.start()
508+ }
509+
510+ function loadAttributes() {
511+ if (!menuModel || menuIndex == -1) return;
512+ menuModel.loadExtendedAttributes(menuIndex, {'x-canonical-timezone': 'string'});
513+ }
514+ }
515+ }
516+
429 Component {
517 Component {
430 id: wifiSection;
518 id: wifiSection;
431
519
qml/Panel/Indicators/client/IndicatorRepresentation.qml+3−1
@@ -26,7 +26,9 @@ import "../.."
26Page {
26Page {
27 id: root
27 id: root
28
28
29− title: indicatorProperties && indicatorProperties.title ? indicatorProperties.title : ""
29+ title: indicatorProperties && indicatorProperties.title ? indicatorProperties.title :
30+ indicatorProperties && indicatorProperties.accessibleName ? indicatorProperties.accessibleName
31+ : ""
30 property variant indicatorProperties
32 property variant indicatorProperties
31
33
32 anchors.fill: parent
34 anchors.fill: parent
qml/Shell.qml+3−1
@@ -63,6 +63,7 @@ Item {
63 function updateFocusedAppOrientationAnimated() {
63 function updateFocusedAppOrientationAnimated() {
64 applicationsDisplayLoader.item.updateFocusedAppOrientationAnimated();
64 applicationsDisplayLoader.item.updateFocusedAppOrientationAnimated();
65 }
65 }
66+ property bool hasMouse
66
67
67 // to be read from outside
68 // to be read from outside
68 readonly property int mainAppWindowOrientationAngle:
69 readonly property int mainAppWindowOrientationAngle:
@@ -383,7 +384,7 @@ Item {
383 // more clever here.
384 // more clever here.
384 active: usageScenario != "desktop" && AccountsService.demoEdges
385 active: usageScenario != "desktop" && AccountsService.demoEdges
385
386
386− paused: LightDM.Greeter.active
387+ paused: lightDM.greeter.active
387 launcher: launcher
388 launcher: launcher
388 panel: panel
389 panel: panel
389 edgeSize: shell.edgeSize
390 edgeSize: shell.edgeSize
@@ -636,6 +637,7 @@ Item {
636
637
637 model: NotificationBackend.Model
638 model: NotificationBackend.Model
638 margin: units.gu(1)
639 margin: units.gu(1)
640+ hasMouse: shell.hasMouse
639
641
640 y: topmostIsFullscreen ? 0 : panel.panelHeight
642 y: topmostIsFullscreen ? 0 : panel.panelHeight
641 height: parent.height - (topmostIsFullscreen ? 0 : panel.panelHeight)
643 height: parent.height - (topmostIsFullscreen ? 0 : panel.panelHeight)
qml/Stages/ApplicationWindow.qml+3−3
@@ -20,6 +20,8 @@ import Unity.Application 0.1
20
20
21FocusScope {
21FocusScope {
22 id: root
22 id: root
23+ implicitWidth: sessionContainer.implicitWidth
24+ implicitHeight: sessionContainer.implicitHeight
23
25
24 // to be read from outside
26 // to be read from outside
25 readonly property bool fullscreen: application ? application.fullscreen : false
27 readonly property bool fullscreen: application ? application.fullscreen : false
@@ -29,6 +31,7 @@ FocusScope {
29 // to be set from outside
31 // to be set from outside
30 property QtObject application
32 property QtObject application
31 property int surfaceOrientationAngle
33 property int surfaceOrientationAngle
34+ property alias resizeSurface: sessionContainer.resizeSurface
32
35
33 QtObject {
36 QtObject {
34 id: d
37 id: d
@@ -137,9 +140,6 @@ FocusScope {
137 onSurfaceChanged: {
140 onSurfaceChanged: {
138 if (sessionContainer.surface) {
141 if (sessionContainer.surface) {
139 surfaceInitTimer.start();
142 surfaceInitTimer.start();
140− if (ApplicationManager.focusedApplicationId == application.appId) {
141− root.forceActiveFocus();
142− }
143 } else {
143 } else {
144 d.surfaceInitialized = false;
144 d.surfaceInitialized = false;
145 }
145 }
qml/Stages/DecoratedWindow.qml+10−51
@@ -31,37 +31,10 @@ FocusScope {
31 property bool highlightShown: false
31 property bool highlightShown: false
32 property real shadowOpacity: 1
32 property real shadowOpacity: 1
33
33
34− property int windowWidth: width
35− property int windowHeight: height
36−
37 signal close();
34 signal close();
38 signal maximize();
35 signal maximize();
39 signal minimize();
36 signal minimize();
40
37
41− state: "normal"
42− states: [
43− State {
44− name: "normal"
45− PropertyChanges {
46− target: root
47− width: windowWidth
48− height: windowHeight
49− }
50− },
51− State {
52− name: "transformed"
53− PropertyChanges {
54− target: applicationWindow
55− itemScale: Math.max(root.width / root.windowWidth, root.height / root.windowHeight)
56− interactive: false
57− }
58− PropertyChanges {
59− target: clipper
60− clip: true
61− }
62− }
63− ]
64−
65 BorderImage {
38 BorderImage {
66 anchors {
39 anchors {
67 fill: root
40 fill: root
@@ -98,29 +71,15 @@ FocusScope {
98 visible: decorationShown
71 visible: decorationShown
99 }
72 }
100
73
101− Item {
102− id: clipper
103− anchors.fill: parent
104−
105− ApplicationWindow {
74+ ApplicationWindow {
106− id: applicationWindow
75+ id: applicationWindow
107− objectName: application ? "appWindow_" + application.appId : "appWindow_null"
76+ objectName: application ? "appWindow_" + application.appId : "appWindow_null"
108− anchors.top: parent.top
77+ anchors.top: parent.top
109− anchors.topMargin: root.decorationShown ? decoration.height : 0
78+ anchors.topMargin: decoration.height
110− anchors.left: parent.left
79+ anchors.left: parent.left
111− width: root.windowWidth
80+ width: root.width
112− height: root.windowHeight - (root.decorationShown ? decoration.height : 0)
81+ height: root.height - decoration.height
113− interactive: true
82+ interactive: true
114− focus: true
83+ focus: true
115−
116− property real itemScale: 1
117− transform: [
118− Scale {
119− origin.x: 0; origin.y: 0
120− xScale: applicationWindow.itemScale
121− yScale: applicationWindow.itemScale
122− }
123− ]
124− }
125 }
84 }
126}
85}
qml/Stages/DesktopSpread.qmlnew file+537
@@ -0,0 +1,537 @@
1+/*
2+ * Copyright (C) 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 General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+import QtQuick.Layouts 1.1
19+import Ubuntu.Components 1.2
20+import Ubuntu.Gestures 0.1
21+import Unity.Application 0.1
22+
23+FocusScope {
24+ id: root
25+
26+ property bool altTabPressed: false
27+ property Item workspace: null
28+
29+ readonly property alias highlightedIndex: spreadRepeater.highlightedIndex
30+
31+ onFocusChanged: {
32+ // When the spread comes active, we want to keep focus to the input handler below
33+ // Make sure nothing inside the ApplicationWindow grabs our focus!
34+ if (focus) {
35+ forceActiveFocus();
36+ }
37+ }
38+
39+ Keys.onPressed: {
40+ switch (event.key) {
41+ case Qt.Key_Left:
42+ case Qt.Key_Backtab:
43+ selectPrevious(event.isAutoRepeat)
44+ event.accepted = true;
45+ break;
46+ case Qt.Key_Right:
47+ case Qt.Key_Tab:
48+ selectNext(event.isAutoRepeat)
49+ event.accepted = true;
50+ break;
51+ case Qt.Key_Escape:
52+ spreadRepeater.highlightedIndex = -1
53+ // Falling through intentionally
54+ case Qt.Key_Enter:
55+ case Qt.Key_Return:
56+ case Qt.Key_Space:
57+ root.state = ""
58+ event.accepted = true;
59+ }
60+ }
61+
62+ function selectNext(isAutoRepeat) {
63+ if (isAutoRepeat && spreadRepeater.highlightedIndex >= ApplicationManager.count -1) {
64+ return; // AutoRepeat is not allowed to wrap around
65+ }
66+
67+ spreadRepeater.highlightedIndex = (spreadRepeater.highlightedIndex + 1) % ApplicationManager.count;
68+ var newContentX = ((spreadFlickable.contentWidth) / (ApplicationManager.count + 1)) * Math.max(0, Math.min(ApplicationManager.count - 5, spreadRepeater.highlightedIndex - 3));
69+ if (spreadFlickable.contentX < newContentX || spreadRepeater.highlightedIndex == 0) {
70+ spreadFlickable.snapTo(newContentX)
71+ }
72+ }
73+
74+ function selectPrevious(isAutoRepeat) {
75+ if (isAutoRepeat && spreadRepeater.highlightedIndex == 0) {
76+ return; // AutoRepeat is not allowed to wrap around
77+ }
78+
79+ var newIndex = spreadRepeater.highlightedIndex - 1 >= 0 ? spreadRepeater.highlightedIndex - 1 : ApplicationManager.count - 1;
80+ spreadRepeater.highlightedIndex = newIndex;
81+ var newContentX = ((spreadFlickable.contentWidth) / (ApplicationManager.count + 1)) * Math.max(0, Math.min(ApplicationManager.count - 5, spreadRepeater.highlightedIndex - 1));
82+ if (spreadFlickable.contentX > newContentX || newIndex == ApplicationManager.count -1) {
83+ spreadFlickable.snapTo(newContentX)
84+ }
85+ }
86+
87+ function focusSelected() {
88+ if (spreadRepeater.highlightedIndex != -1) {
89+ var application = ApplicationManager.get(spreadRepeater.highlightedIndex);
90+ ApplicationManager.focusApplication(application.appId);
91+ }
92+ }
93+
94+ function cancel() {
95+ spreadRepeater.highlightedIndex = -1;
96+ state = ""
97+ }
98+
99+ Item {
100+ id: spreadContainer
101+ objectName: "spreadContainer"
102+ anchors.fill: parent
103+ visible: false
104+
105+ property bool animateIn: false
106+
107+ Repeater {
108+ id: spreadRepeater
109+ objectName: "spreadRepeater"
110+ model: ApplicationManager
111+
112+ property int highlightedIndex: -1
113+ property int closingIndex: -1
114+
115+ function indexOf(delegateItem) {
116+ for (var i = 0; i < spreadRepeater.count; i++) {
117+ if (spreadRepeater.itemAt(i) === delegateItem) {
118+ return i;
119+ }
120+ }
121+ return -1;
122+ }
123+
124+ delegate: Item {
125+ id: spreadDelegate
126+ objectName: "spreadDelegate"
127+ width: units.gu(20)
128+ height: units.gu(20)
129+
130+ property real angle: 0
131+ property real itemScale: 1
132+ property int itemScaleOriginX: 0
133+ property int itemScaleOriginY: 0
134+
135+ Behavior on x {
136+ id: closeBehavior
137+ enabled: spreadRepeater.closingIndex >= 0
138+ UbuntuNumberAnimation {
139+ onRunningChanged: if (!running) spreadRepeater.closingIndex = -1
140+ }
141+ }
142+
143+ DesktopSpreadDelegate {
144+ id: clippedSpreadDelegate
145+ objectName: "clippedSpreadDelegate"
146+ anchors.left: parent.left
147+ anchors.top: parent.top
148+ application: ApplicationManager.get(index)
149+ width: spreadMaths.spreadHeight
150+ height: spreadMaths.spreadHeight
151+
152+ transform: [
153+ Scale {
154+ origin.x: itemScaleOriginX
155+ origin.y: itemScaleOriginY
156+ xScale: itemScale
157+ yScale: itemScale
158+ },
159+ Rotation {
160+ origin { x: 0; y: (clippedSpreadDelegate.height - (clippedSpreadDelegate.height * itemScale / 2)) }
161+ axis { x: 0; y: 1; z: 0 }
162+ angle: spreadDelegate.angle
163+ }
164+ ]
165+
166+ MouseArea {
167+ id: spreadSelectArea
168+ anchors.fill: parent
169+ anchors.margins: -units.gu(2)
170+ enabled: false
171+ onClicked: {
172+ spreadRepeater.highlightedIndex = index;
173+ root.state = "";
174+ }
175+ }
176+ }
177+
178+ SpreadMaths {
179+ id: spreadMaths
180+ flickable: spreadFlickable
181+ itemIndex: index
182+ totalItems: Math.max(6, ApplicationManager.count)
183+ sceneHeight: root.height
184+ itemHeight: spreadDelegate.height
185+ }
186+
187+ states: [
188+ State {
189+ name: "altTab"; when: root.state == "altTab" && spreadContainer.visible
190+ PropertyChanges {
191+ target: spreadDelegate
192+ x: spreadMaths.animatedX
193+ y: spreadMaths.animatedY + (spreadDelegate.height - clippedSpreadDelegate.height) - units.gu(2)
194+ width: spreadMaths.spreadHeight
195+ height: spreadMaths.sceneHeight
196+ angle: spreadMaths.animatedAngle
197+ itemScale: spreadMaths.scale
198+ itemScaleOriginY: clippedSpreadDelegate.height / 2;
199+ z: index
200+ visible: spreadMaths.itemVisible
201+ }
202+ PropertyChanges {
203+ target: clippedSpreadDelegate
204+ highlightShown: index == spreadRepeater.highlightedIndex
205+ state: "transformed"
206+ shadowOpacity: spreadMaths.shadowOpacity
207+ anchors.topMargin: units.gu(2)
208+ }
209+ PropertyChanges {
210+ target: tileInfo
211+ visible: true
212+ opacity: spreadMaths.tileInfoOpacity
213+ }
214+ PropertyChanges {
215+ target: spreadSelectArea
216+ enabled: true
217+ }
218+ }
219+ ]
220+ transitions: [
221+ Transition {
222+ from: ""
223+ to: "altTab"
224+ PropertyAction { target: spreadDelegate; properties: "y,height,width,angle,z,itemScale,itemScaleOriginY,visible" }
225+ PropertyAction { target: clippedSpreadDelegate; properties: "anchors.topMargin" }
226+ PropertyAnimation {
227+ target: spreadDelegate; properties: "x"
228+ from: root.width
229+ duration: spreadContainer.animateIn ? UbuntuAnimation.FastDuration :0
230+ easing: UbuntuAnimation.StandardEasing
231+ }
232+ }
233+ ]
234+
235+ MouseArea {
236+ id: tileInfo
237+ objectName: "tileInfo"
238+ anchors { left: parent.left; top: clippedSpreadDelegate.bottom; topMargin: units.gu(5) }
239+ property int nextItemX: spreadRepeater.count > index + 1 ? spreadRepeater.itemAt(index + 1).x : spreadDelegate.x + units.gu(30)
240+ width: Math.min(units.gu(30), nextItemX - spreadDelegate.x)
241+ height: titleInfoColumn.height
242+ visible: false
243+ hoverEnabled: true
244+
245+ onContainsMouseChanged: {
246+ if (containsMouse) {
247+ spreadRepeater.highlightedIndex = index
248+ }
249+ }
250+
251+ onClicked: {
252+ root.state = ""
253+ }
254+
255+ ColumnLayout {
256+ id: titleInfoColumn
257+ anchors { left: parent.left; top: parent.top; right: parent.right }
258+ spacing: units.gu(1)
259+
260+ UbuntuShape {
261+ Layout.preferredHeight: Math.min(units.gu(6), root.height * .05)
262+ Layout.preferredWidth: height * 8 / 7.6
263+ image: Image {
264+ anchors.fill: parent
265+ source: model.icon
266+ }
267+ }
268+ Label {
269+ Layout.fillWidth: true
270+ Layout.preferredHeight: units.gu(6)
271+ text: model.name
272+ wrapMode: Text.WordWrap
273+ elide: Text.ElideRight
274+ maximumLineCount: 2
275+ }
276+ }
277+ }
278+
279+ Image {
280+ id: closeImage
281+ anchors { left: parent.left; top: parent.top; leftMargin: -height / 2; topMargin: -height / 2 + spreadMaths.closeIconOffset + units.gu(2) }
282+ source: "graphics/window-close.svg"
283+ readonly property var mousePos: hoverMouseArea.mapToItem(spreadDelegate, hoverMouseArea.mouseX, hoverMouseArea.mouseY)
284+ visible: index == spreadRepeater.highlightedIndex
285+ && mousePos.y < (clippedSpreadDelegate.height / 3)
286+ && mousePos.y > -units.gu(4)
287+ && mousePos.x > -units.gu(4)
288+ && mousePos.x < (clippedSpreadDelegate.width * 2 / 3)
289+ height: units.gu(1.5)
290+ width: height
291+ sourceSize.width: width
292+ sourceSize.height: height
293+
294+ MouseArea {
295+ id: closeMouseArea
296+ objectName: "closeMouseArea"
297+ anchors.fill: closeImage
298+ anchors.margins: -units.gu(2)
299+ onClicked: {
300+ spreadRepeater.closingIndex = index;
301+ ApplicationManager.stopApplication(model.appId)
302+ }
303+ }
304+ }
305+ }
306+ }
307+ }
308+
309+
310+ MouseArea {
311+ id: hoverMouseArea
312+ objectName: "hoverMouseArea"
313+ anchors.fill: spreadContainer
314+ propagateComposedEvents: true
315+ hoverEnabled: true
316+ enabled: false
317+ visible: enabled
318+
319+ property int scrollAreaWidth: root.width / 3
320+ property bool progressiveScrollingEnabled: false
321+
322+ onMouseXChanged: {
323+ mouse.accepted = false
324+
325+ if (hoverMouseArea.pressed) {
326+ return;
327+ }
328+
329+ // Find the hovered item and mark it active
330+ var mapped = mapToItem(spreadContainer, hoverMouseArea.mouseX, hoverMouseArea.mouseY)
331+ var itemUnder = spreadContainer.childAt(mapped.x, mapped.y)
332+ if (itemUnder) {
333+ mapped = mapToItem(itemUnder, hoverMouseArea.mouseX, hoverMouseArea.mouseY)
334+ var delegateChild = itemUnder.childAt(mapped.x, mapped.y)
335+ if (delegateChild && (delegateChild.objectName === "clippedSpreadDelegate" || delegateChild.objectName === "tileInfo")) {
336+ spreadRepeater.highlightedIndex = spreadRepeater.indexOf(itemUnder)
337+ }
338+ }
339+
340+ if (spreadFlickable.contentWidth > spreadFlickable.minContentWidth) {
341+ var margins = spreadFlickable.width * 0.05;
342+
343+ if (!progressiveScrollingEnabled && mouseX < spreadFlickable.width - scrollAreaWidth) {
344+ progressiveScrollingEnabled = true
345+ }
346+
347+ // do we need to scroll?
348+ if (mouseX < scrollAreaWidth + margins) {
349+ var progress = Math.min(1, (scrollAreaWidth + margins - mouseX) / (scrollAreaWidth - margins));
350+ var contentX = (1 - progress) * (spreadFlickable.contentWidth - spreadFlickable.width)
351+ spreadFlickable.contentX = Math.max(0, Math.min(spreadFlickable.contentX, contentX))
352+ }
353+ if (mouseX > spreadFlickable.width - scrollAreaWidth && progressiveScrollingEnabled) {
354+ var progress = Math.min(1, (mouseX - (spreadFlickable.width - scrollAreaWidth)) / (scrollAreaWidth - margins))
355+ var contentX = progress * (spreadFlickable.contentWidth - spreadFlickable.width)
356+ spreadFlickable.contentX = Math.min(spreadFlickable.contentWidth - spreadFlickable.width, Math.max(spreadFlickable.contentX, contentX))
357+ }
358+ }
359+ }
360+ onPressed: mouse.accepted = false
361+ }
362+
363+ FloatingFlickable {
364+ id: spreadFlickable
365+ objectName: "spreadFlickable"
366+ anchors.fill: parent
367+ property int minContentWidth: 6 * Math.min(height / 4, width / 5)
368+ contentWidth: Math.max(6, ApplicationManager.count) * Math.min(height / 4, width / 5)
369+ enabled: false
370+
371+ function snapTo(contentX) {
372+ snapAnimation.stop();
373+ snapAnimation.to = contentX
374+ snapAnimation.start();
375+ }
376+
377+ UbuntuNumberAnimation {
378+ id: snapAnimation
379+ target: spreadFlickable
380+ property: "contentX"
381+ }
382+ }
383+
384+ Item {
385+ id: workspaceSelector
386+ anchors {
387+ left: parent.left
388+ top: parent.top
389+ right: parent.right
390+ topMargin: units.gu(3.5)
391+ }
392+ height: root.height * 0.25
393+ visible: false
394+
395+ RowLayout {
396+ anchors.fill: parent
397+ spacing: units.gu(1)
398+ Item { Layout.fillWidth: true }
399+ Repeater {
400+ model: 1 // TODO: will be a workspacemodel in the future
401+ Item {
402+ Layout.fillHeight: true
403+ Layout.preferredWidth: ((height - units.gu(6)) * root.width / root.height)
404+ Image {
405+ source: root.background
406+ anchors {
407+ left: parent.left
408+ right: parent.right
409+ verticalCenter: parent.verticalCenter
410+ }
411+ height: parent.height * 0.75
412+
413+ ShaderEffect {
414+ anchors.fill: parent
415+
416+ property var source: ShaderEffectSource {
417+ id: shaderEffectSource
418+ sourceItem: appContainer
419+ }
420+
421+ fragmentShader: "
422+ varying highp vec2 qt_TexCoord0;
423+ uniform sampler2D source;
424+ void main(void)
425+ {
426+ highp vec4 sourceColor = texture2D(source, qt_TexCoord0);
427+ gl_FragColor = sourceColor;
428+ }"
429+ }
430+ }
431+
432+ // TODO: This is the bar for the currently selected workspace
433+ // Enable this once the workspace stuff is implemented
434+ // Rectangle {
435+ // anchors { left: parent.left; right: parent.right; bottom: parent.bottom }
436+ // height: units.dp(2)
437+ // color: UbuntuColors.orange
438+ // visible: index == 0 // TODO: should be active workspace index
439+ // }
440+ }
441+
442+ }
443+ // TODO: This is the "new workspace" button. Enable this once workspaces are implemented
444+ // Item {
445+ // Layout.fillHeight: true
446+ // Layout.preferredWidth: ((height - units.gu(6)) * root.width / root.height)
447+ // Rectangle {
448+ // anchors {
449+ // left: parent.left
450+ // right: parent.right
451+ // verticalCenter: parent.verticalCenter
452+ // }
453+ // height: parent.height * 0.75
454+ // color: "#22ffffff"
455+
456+ // Label {
457+ // anchors.centerIn: parent
458+ // font.pixelSize: parent.height / 2
459+ // text: "+"
460+ // }
461+ // }
462+ // }
463+ Item { Layout.fillWidth: true }
464+ }
465+ }
466+
467+ Label {
468+ id: currentSelectedLabel
469+ anchors { bottom: parent.bottom; bottomMargin: root.height * 0.625; horizontalCenter: parent.horizontalCenter }
470+ text: spreadRepeater.highlightedIndex >= 0 ? ApplicationManager.get(spreadRepeater.highlightedIndex).name : ""
471+ visible: false
472+ fontSize: "large"
473+ }
474+
475+ states: [
476+ State {
477+ name: "altTab"; when: root.altTabPressed
478+ PropertyChanges { target: blurLayer; saturation: 0.8; blurRadius: 60; visible: true }
479+ PropertyChanges { target: workspaceSelector; visible: true }
480+ PropertyChanges { target: spreadContainer; visible: true }
481+ PropertyChanges { target: spreadFlickable; enabled: spreadFlickable.contentWidth > spreadFlickable.minContentWidth }
482+ PropertyChanges { target: currentSelectedLabel; visible: true }
483+ PropertyChanges { target: spreadBackground; visible: true }
484+ PropertyChanges { target: hoverMouseArea; enabled: true }
485+ }
486+ ]
487+ transitions: [
488+ Transition {
489+ from: "*"
490+ to: "altTab"
491+ SequentialAnimation {
492+ PropertyAction { target: hoverMouseArea; property: "progressiveScrollingEnabled"; value: false }
493+ PropertyAction { target: spreadRepeater; property: "highlightedIndex"; value: Math.min(ApplicationManager.count - 1, 1) }
494+ PauseAnimation { duration: 140 }
495+ PropertyAction { target: workspaceSelector; property: "visible" }
496+ PropertyAction { target: spreadContainer; property: "visible" }
497+ ParallelAnimation {
498+ UbuntuNumberAnimation {
499+ target: blurLayer; properties: "saturation,blurRadius";
500+ duration: spreadContainer.animateIn ? UbuntuAnimation.FastDuration : 0
501+ }
502+ PropertyAction { target: spreadFlickable; property: "visible" }
503+ PropertyAction { targets: [currentSelectedLabel,spreadBackground]; property: "visible" }
504+ PropertyAction { target: spreadFlickable; property: "contentX"; value: 0 }
505+ }
506+ }
507+ },
508+ Transition {
509+ from: "*"
510+ to: "*"
511+ PropertyAnimation { property: "opacity" }
512+ ScriptAction { script: { root.focusSelected() } }
513+ PropertyAction { target: spreadRepeater; property: "highlightedIndex"; value: -1 }
514+ PropertyAction { target: spreadContainer; property: "animateIn"; value: false }
515+ }
516+
517+ ]
518+
519+ MouseArea {
520+ id: rightEdgePushArea
521+ anchors {
522+ top: parent.top
523+ right: parent.right
524+ bottom: parent.bottom
525+ }
526+ // TODO: Make this a push to edge thing like the launcher when we can,
527+ // for now, yes, we want 1 pixel, regardless of the scaling
528+ width: 1
529+ hoverEnabled: true
530+ onContainsMouseChanged: {
531+ if (containsMouse) {
532+ spreadContainer.animateIn = true;
533+ root.state = "altTab";
534+ }
535+ }
536+ }
537+}
qml/Stages/DesktopSpreadDelegate.qmlnew file+111
@@ -0,0 +1,111 @@
1+/*
2+ * Copyright (C) 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 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+ * Authors: Michael Zanetti <michael.zanetti@canonical.com>
17+ */
18+
19+import QtQuick 2.3
20+import Ubuntu.Components 1.1
21+import Unity.Application 0.1
22+
23+Item {
24+ id: root
25+
26+ property alias window: applicationWindow
27+ property alias application: applicationWindow.application
28+
29+ property bool highlightShown: false
30+ property real shadowOpacity: 1
31+
32+ property int windowWidth: application.session && application.session.surface ? application.session.surface.size.width : 0
33+ property int windowHeight: application.session && application.session.surface ? application.session.surface.size.height : 0
34+
35+ state: "normal"
36+ states: [
37+ State {
38+ name: "normal"
39+ PropertyChanges {
40+ target: root
41+ width: windowWidth
42+ height: windowHeight
43+ }
44+ },
45+ State {
46+ name: "transformed"
47+ PropertyChanges {
48+ target: applicationWindow
49+ itemScale: Math.max(root.width / root.windowWidth, root.height / root.windowHeight)
50+ interactive: false
51+ }
52+ PropertyChanges {
53+ target: clipper
54+ clip: true
55+ }
56+ }
57+ ]
58+
59+ BorderImage {
60+ anchors {
61+ fill: root
62+ margins: -units.gu(2)
63+ }
64+ source: "graphics/dropshadow2gu.sci"
65+ opacity: root.shadowOpacity * .3
66+ }
67+
68+ Rectangle {
69+ id: selectionHighlight
70+ anchors.fill: parent
71+ anchors.margins: -units.gu(1)
72+ color: "white"
73+ opacity: highlightShown ? 0.15 : 0
74+ antialiasing: true
75+ }
76+
77+ Rectangle {
78+ anchors { left: selectionHighlight.left; right: selectionHighlight.right; bottom: selectionHighlight.bottom; }
79+ height: units.dp(2)
80+ color: UbuntuColors.orange
81+ visible: root.highlightShown
82+ antialiasing: true
83+ }
84+
85+ Item {
86+ id: clipper
87+ anchors.fill: parent
88+
89+ ApplicationWindow {
90+ id: applicationWindow
91+ objectName: application ? "appWindow_" + application.appId : "appWindow_null"
92+ anchors.top: parent.top
93+ anchors.topMargin: 0
94+ anchors.left: parent.left
95+ width: root.windowWidth
96+ height: root.windowHeight
97+ interactive: false
98+ resizeSurface: false
99+ focus: false
100+
101+ property real itemScale: 1
102+ transform: [
103+ Scale {
104+ origin.x: 0; origin.y: 0
105+ xScale: applicationWindow.itemScale
106+ yScale: applicationWindow.itemScale
107+ }
108+ ]
109+ }
110+ }
111+}
qml/Stages/DesktopStage.qml+51−472
@@ -20,6 +20,7 @@ import QtQuick 2.4
20import QtQuick.Layouts 1.1
20import QtQuick.Layouts 1.1
21import Ubuntu.Components 1.1
21import Ubuntu.Components 1.1
22import Unity.Application 0.1
22import Unity.Application 0.1
23+import "../Components"
23import "../Components/PanelState"
24import "../Components/PanelState"
24import Utils 0.1
25import Utils 0.1
25import Ubuntu.Gestures 0.1
26import Ubuntu.Gestures 0.1
@@ -41,6 +42,8 @@ Rectangle {
41 property bool beingResized: false
42 property bool beingResized: false
42 property bool keepDashRunning: true
43 property bool keepDashRunning: true
43 property bool suspended: false
44 property bool suspended: false
45+ property alias background: wallpaper.source
46+ property alias altTabPressed: spread.altTabPressed
44
47
45 // functions to be called from outside
48 // functions to be called from outside
46 function updateFocusedAppOrientation() { /* TODO */ }
49 function updateFocusedAppOrientation() { /* TODO */ }
@@ -53,21 +56,11 @@ Rectangle {
53 property int mainAppWindowOrientationAngle: 0
56 property int mainAppWindowOrientationAngle: 0
54 readonly property bool orientationChangesEnabled: false
57 readonly property bool orientationChangesEnabled: false
55
58
56− property alias background: wallpaper.source
57− property bool altTabPressed: false
58−
59− CrossFadeImage {
60− id: wallpaper
61− anchors.fill: parent
62− sourceSize { height: root.height; width: root.width }
63− fillMode: Image.PreserveAspectCrop
64− }
65−
66 Connections {
59 Connections {
67 target: ApplicationManager
60 target: ApplicationManager
68 onApplicationAdded: {
61 onApplicationAdded: {
69− if (root.state == "altTab") {
62+ if (spread.state == "altTab") {
70− root.state = "";
63+ spread.state = "";
71 }
64 }
72
65
73 ApplicationManager.requestFocusApplication(appId)
66 ApplicationManager.requestFocusApplication(appId)
@@ -77,8 +70,11 @@ Rectangle {
77 var appIndex = priv.indexOf(appId);
70 var appIndex = priv.indexOf(appId);
78 var appDelegate = appRepeater.itemAt(appIndex);
71 var appDelegate = appRepeater.itemAt(appIndex);
79 appDelegate.minimized = false;
72 appDelegate.minimized = false;
80− appDelegate.focus = true;
81− ApplicationManager.focusApplication(appId);
73+ ApplicationManager.focusApplication(appId)
74+
75+ if (spread.state == "altTab") {
76+ spread.cancel()
77+ }
82 }
78 }
83 }
79 }
84
80
@@ -91,12 +87,6 @@ Rectangle {
91 return index >= 0 && index < appRepeater.count ? appRepeater.itemAt(index) : null
87 return index >= 0 && index < appRepeater.count ? appRepeater.itemAt(index) : null
92 }
88 }
93
89
94− onFocusedAppDelegateChanged: {
95− if (focusedAppDelegate) {
96− focusedAppDelegate.focus = true;
97− }
98− }
99−
100 function indexOf(appId) {
90 function indexOf(appId) {
101 for (var i = 0; i < ApplicationManager.count; i++) {
91 for (var i = 0; i < ApplicationManager.count; i++) {
102 if (ApplicationManager.get(i).appId == appId) {
92 if (ApplicationManager.get(i).appId == appId) {
@@ -122,66 +112,17 @@ Rectangle {
122 value: priv.focusedAppDelegate !== null && priv.focusedAppDelegate.state === "maximized"
112 value: priv.focusedAppDelegate !== null && priv.focusedAppDelegate.state === "maximized"
123 }
113 }
124
114
125− Rectangle {
126− id: spreadBackground
127− anchors.fill: parent
128− color: "#55000000"
129− visible: false
130− }
131−
132 FocusScope {
115 FocusScope {
133 id: appContainer
116 id: appContainer
134 objectName: "appContainer"
117 objectName: "appContainer"
135 anchors.fill: parent
118 anchors.fill: parent
119+ focus: spread.state !== "altTab"
136
120
137− Keys.onPressed: {
121+ CrossFadeImage {
138− switch (event.key) {
122+ id: wallpaper
139− case Qt.Key_Left:
123+ anchors.fill: parent
140− case Qt.Key_Backtab:
124+ sourceSize { height: root.height; width: root.width }
141− selectPrevious(event.isAutoRepeat)
125+ fillMode: Image.PreserveAspectCrop
142− break;
143− case Qt.Key_Right:
144− case Qt.Key_Tab:
145− selectNext(event.isAutoRepeat)
146− break;
147− case Qt.Key_Escape:
148− appRepeater.highlightedIndex = -1
149− case Qt.Key_Enter:
150− case Qt.Key_Return:
151− case Qt.Key_Space:
152− root.state = ""
153− }
154− }
155−
156− function selectNext(isAutoRepeat) {
157− if (isAutoRepeat && appRepeater.highlightedIndex >= ApplicationManager.count -1) {
158− return; // AutoRepeat is not allowed to wrap around
159− }
160−
161− appRepeater.highlightedIndex = (appRepeater.highlightedIndex + 1) % ApplicationManager.count;
162− var newContentX = ((spreadFlickable.contentWidth) / (ApplicationManager.count + 1)) * Math.max(0, Math.min(ApplicationManager.count - 5, appRepeater.highlightedIndex - 3));
163− if (spreadFlickable.contentX < newContentX || appRepeater.highlightedIndex == 0) {
164− spreadFlickable.snapTo(newContentX)
165− }
166− }
167−
168− function selectPrevious(isAutoRepeat) {
169− if (isAutoRepeat && appRepeater.highlightedIndex == 0) {
170− return; // AutoRepeat is not allowed to wrap around
171− }
172−
173− var newIndex = appRepeater.highlightedIndex - 1 >= 0 ? appRepeater.highlightedIndex - 1 : ApplicationManager.count - 1;
174− appRepeater.highlightedIndex = newIndex;
175− var newContentX = ((spreadFlickable.contentWidth) / (ApplicationManager.count + 1)) * Math.max(0, Math.min(ApplicationManager.count - 5, appRepeater.highlightedIndex - 1));
176− if (spreadFlickable.contentX > newContentX || newIndex == ApplicationManager.count -1) {
177− spreadFlickable.snapTo(newContentX)
178− }
179− }
180−
181− function focusSelected() {
182− if (appRepeater.highlightedIndex != -1) {
183− appRepeater.itemAt(appRepeater.highlightedIndex).focus = true;
184− }
185 }
126 }
186
127
187 Repeater {
128 Repeater {
@@ -189,30 +130,13 @@ Rectangle {
189 model: ApplicationManager
130 model: ApplicationManager
190 objectName: "appRepeater"
131 objectName: "appRepeater"
191
132
192− property int highlightedIndex: -1
193− property int closingIndex: -1
194−
195− function indexOf(delegateItem) {
196− for (var i = 0; i < appRepeater.count; i++) {
197− if (appRepeater.itemAt(i) === delegateItem) {
198− return i;
199− }
200− }
201− return -1;
202− }
203−
204 delegate: FocusScope {
133 delegate: FocusScope {
205 id: appDelegate
134 id: appDelegate
206 z: ApplicationManager.count - index
135 z: ApplicationManager.count - index
207 y: units.gu(3)
136 y: units.gu(3)
208 width: units.gu(60)
137 width: units.gu(60)
209 height: units.gu(50)
138 height: units.gu(50)
210−
139+ focus: model.appId === priv.focusedAppId
211− property int windowWidth: 0
212− property int windowHeight: 0
213− // We don't want to resize the actual application when we're transforming things for the spread only
214− onWidthChanged: if (appDelegate.state !== "altTab") windowWidth = width
215− onHeightChanged: if (appDelegate.state !== "altTab") windowHeight = height
216
140
217 readonly property int minWidth: units.gu(10)
141 readonly property int minWidth: units.gu(10)
218 readonly property int minHeight: units.gu(10)
142 readonly property int minHeight: units.gu(10)
@@ -222,13 +146,7 @@ Rectangle {
222
146
223 onFocusChanged: {
147 onFocusChanged: {
224 if (focus && ApplicationManager.focusedApplicationId !== model.appId) {
148 if (focus && ApplicationManager.focusedApplicationId !== model.appId) {
225− ApplicationManager.requestFocusApplication(model.appId);
149+ ApplicationManager.focusApplication(model.appId);
226− decoratedWindow.forceActiveFocus();
227− }
228− }
229− Component.onCompleted: {
230− if (ApplicationManager.focusedApplicationId == model.appId) {
231− decoratedWindow.forceActiveFocus();
232 }
150 }
233 }
151 }
234
152
@@ -256,63 +174,17 @@ Rectangle {
256 maximized = false;
174 maximized = false;
257 }
175 }
258
176
259− Behavior on x {
260− id: closeBehavior
261− enabled: appRepeater.closingIndex >= 0
262− UbuntuNumberAnimation {
263− onRunningChanged: if (!running) appRepeater.closingIndex = -1
264− }
265− }
266−
267 states: [
177 states: [
268 State {
178 State {
269− name: "normal"; when: !appDelegate.maximized && !appDelegate.minimized && root.state !== "altTab"
179+ name: "normal"; when: !appDelegate.maximized && !appDelegate.minimized
270 },
180 },
271 State {
181 State {
272− name: "maximized"; when: appDelegate.maximized && (root.state !== "altTab" || (root.state == "altTab" && !root.workspacesUpdated))
182+ name: "maximized"; when: appDelegate.maximized
273 PropertyChanges { target: appDelegate; x: 0; y: 0; width: root.width; height: root.height }
183 PropertyChanges { target: appDelegate; x: 0; y: 0; width: root.width; height: root.height }
274 },
184 },
275 State {
185 State {
276− name: "minimized"; when: appDelegate.minimized && (root.state !== "altTab" || (root.state == "altTab" && !root.workspacesUpdated))
186+ name: "minimized"; when: appDelegate.minimized
277 PropertyChanges { target: appDelegate; x: -appDelegate.width / 2; scale: units.gu(5) / appDelegate.width; opacity: 0 }
187 PropertyChanges { target: appDelegate; x: -appDelegate.width / 2; scale: units.gu(5) / appDelegate.width; opacity: 0 }
278− },
279− State {
280− name: "altTab"; when: root.state == "altTab" && root.workspacesUpdated
281− PropertyChanges {
282− target: appDelegate
283− x: spreadMaths.animatedX
284− y: spreadMaths.animatedY + (appDelegate.height - decoratedWindow.height) - units.gu(2)
285− width: spreadMaths.spreadHeight
286− height: spreadMaths.sceneHeight
287− angle: spreadMaths.animatedAngle
288− itemScale: spreadMaths.scale
289− itemScaleOriginY: decoratedWindow.height / 2;
290− z: index
291− visible: spreadMaths.itemVisible
292− }
293− PropertyChanges {
294− target: decoratedWindow
295− decorationShown: false
296− highlightShown: index == appRepeater.highlightedIndex
297− state: "transformed"
298− width: spreadMaths.spreadHeight
299− height: spreadMaths.spreadHeight
300− shadowOpacity: spreadMaths.shadowOpacity
301− anchors.topMargin: units.gu(2)
302− }
303− PropertyChanges {
304− target: tileInfo
305− visible: true
306− opacity: spreadMaths.tileInfoOpacity
307− }
308− PropertyChanges {
309− target: spreadSelectArea
310− enabled: true
311− }
312− PropertyChanges {
313− target: windowMoveResizeArea
314− enabled: false
315− }
316 }
188 }
317 ]
189 ]
318 transitions: [
190 transitions: [
@@ -334,18 +206,13 @@ Rectangle {
334 }
206 }
335 }
207 }
336 ]
208 ]
337− property real angle: 0
209+
338− property real itemScale: 1
210+ Binding {
339− property int itemScaleOriginX: 0
211+ id: previewBinding
340− property int itemScaleOriginY: 0
212+ target: appDelegate
341−
213+ property: "z"
342− SpreadMaths {
343− id: spreadMaths
344− flickable: spreadFlickable
345− itemIndex: index
346− totalItems: Math.max(6, ApplicationManager.count)
214+ value: ApplicationManager.count + 1
347− sceneHeight: root.height
215+ when: index == spread.highlightedIndex && blurLayer.ready
348− itemHeight: appDelegate.height
349 }
216 }
350
217
351 WindowMoveResizeArea {
218 WindowMoveResizeArea {
@@ -356,7 +223,7 @@ Rectangle {
356 resizeHandleWidth: units.gu(2)
223 resizeHandleWidth: units.gu(2)
357 windowId: model.appId // FIXME: Change this to point to windowId once we have such a thing
224 windowId: model.appId // FIXME: Change this to point to windowId once we have such a thing
358
225
359− onPressed: appDelegate.focus = true;
226+ onPressed: { ApplicationManager.focusApplication(model.appId) }
360 }
227 }
361
228
362 DecoratedWindow {
229 DecoratedWindow {
@@ -364,334 +231,46 @@ Rectangle {
364 objectName: "decoratedWindow"
231 objectName: "decoratedWindow"
365 anchors.left: appDelegate.left
232 anchors.left: appDelegate.left
366 anchors.top: appDelegate.top
233 anchors.top: appDelegate.top
367− windowWidth: appDelegate.windowWidth
234+ width: appDelegate.width
368− windowHeight: appDelegate.windowHeight
235+ height: appDelegate.height
369 application: ApplicationManager.get(index)
236 application: ApplicationManager.get(index)
370 active: ApplicationManager.focusedApplicationId === model.appId
237 active: ApplicationManager.focusedApplicationId === model.appId
371− focus: false
238+ focus: true
372
239
373 onClose: ApplicationManager.stopApplication(model.appId)
240 onClose: ApplicationManager.stopApplication(model.appId)
374 onMaximize: appDelegate.maximize()
241 onMaximize: appDelegate.maximize()
375 onMinimize: appDelegate.minimize()
242 onMinimize: appDelegate.minimize()
376−
377− transform: [
378− Scale {
379− origin.x: itemScaleOriginX
380− origin.y: itemScaleOriginY
381− xScale: itemScale
382− yScale: itemScale
383− },
384− Rotation {
385− origin { x: 0; y: (decoratedWindow.height - (decoratedWindow.height * itemScale / 2)) }
386− axis { x: 0; y: 1; z: 0 }
387− angle: appDelegate.angle
388− }
389− ]
390−
391− MouseArea {
392− id: spreadSelectArea
393− anchors.fill: parent
394− anchors.margins: -units.gu(2)
395− enabled: false
396− onClicked: {
397− appRepeater.highlightedIndex = index;
398− root.state = ""
399− }
400− }
401− }
402−
403− Image {
404− id: closeImage
405− anchors { left: parent.left; top: parent.top; leftMargin: -height / 2; topMargin: -height / 2 + spreadMaths.closeIconOffset + units.gu(2) }
406− source: "graphics/window-close.svg"
407− readonly property var mousePos: hoverMouseArea.mapToItem(appDelegate, hoverMouseArea.mouseX, hoverMouseArea.mouseY)
408− visible: index == appRepeater.highlightedIndex
409− && mousePos.y < (decoratedWindow.height / 3)
410− && mousePos.y > -units.gu(4)
411− && mousePos.x > -units.gu(4)
412− && mousePos.x < (decoratedWindow.width * 2 / 3)
413− height: units.gu(1.5)
414− width: height
415− sourceSize.width: width
416− sourceSize.height: height
417−
418− MouseArea {
419− id: closeMouseArea
420− objectName: "closeMouseArea"
421− anchors.fill: closeImage
422− anchors.margins: -units.gu(2)
423− onClicked: {
424− appRepeater.closingIndex = index;
425− ApplicationManager.stopApplication(model.appId)
426− }
427− }
428− }
429−
430− MouseArea {
431− id: tileInfo
432− objectName: "tileInfo"
433− anchors { left: parent.left; top: decoratedWindow.bottom; topMargin: units.gu(5) }
434− width: units.gu(30)
435− height: titleInfoColumn.height
436− visible: false
437− hoverEnabled: true
438−
439− onContainsMouseChanged: {
440− if (containsMouse) {
441− appRepeater.highlightedIndex = index
442− }
443− }
444−
445− onClicked: {
446− root.state = ""
447− }
448−
449− ColumnLayout {
450− id: titleInfoColumn
451− anchors { left: parent.left; top: parent.top; right: parent.right }
452− spacing: units.gu(1)
453−
454− UbuntuShape {
455− Layout.preferredHeight: Math.min(units.gu(6), root.height * .05)
456− Layout.preferredWidth: height * 8 / 7.6
457− image: Image {
458− anchors.fill: parent
459− source: model.icon
460− }
461− }
462− Label {
463− Layout.fillWidth: true
464− Layout.preferredHeight: units.gu(6)
465− text: model.name
466− wrapMode: Text.WordWrap
467− maximumLineCount: 2
468− }
469− }
470 }
243 }
471 }
244 }
472 }
245 }
473 }
246 }
474
247
475− MouseArea {
248+ BlurLayer {
476− id: hoverMouseArea
249+ id: blurLayer
477− anchors.fill: appContainer
478− propagateComposedEvents: true
479− hoverEnabled: true
480− enabled: false
481−
482− property int scrollAreaWidth: root.width / 3
483− property bool progressiveScrollingEnabled: false
484−
485− onMouseXChanged: {
486− mouse.accepted = false
487− if (hoverMouseArea.pressed) return;
488−
489− // Find the hovered item and mark it active
490− var mapped = mapToItem(appContainer, hoverMouseArea.mouseX, hoverMouseArea.mouseY)
491− var itemUnder = appContainer.childAt(mapped.x, mapped.y)
492− if (itemUnder) {
493− mapped = mapToItem(itemUnder, hoverMouseArea.mouseX, hoverMouseArea.mouseY)
494− var delegateChild = itemUnder.childAt(mapped.x, mapped.y)
495− if (delegateChild.objectName === "decoratedWindow" || delegateChild.objectName === "tileInfo") {
496− appRepeater.highlightedIndex = appRepeater.indexOf(itemUnder)
497− }
498− }
499−
500− if (spreadFlickable.contentWidth > spreadFlickable.minContentWidth) {
501− var margins = spreadFlickable.width * 0.05;
502−
503− if (!progressiveScrollingEnabled && mouseX < spreadFlickable.width - scrollAreaWidth) {
504− progressiveScrollingEnabled = true
505− }
506−
507− // do we need to scroll?
508− if (mouseX < scrollAreaWidth) {
509− var progress = Math.min(1, (scrollAreaWidth + margins - mouseX) / (scrollAreaWidth - margins));
510− var contentX = (1 - progress) * (spreadFlickable.contentWidth - spreadFlickable.width)
511− spreadFlickable.contentX = Math.max(0, Math.min(spreadFlickable.contentX, contentX))
512− }
513− if (mouseX > spreadFlickable.width - scrollAreaWidth && progressiveScrollingEnabled) {
514− var progress = Math.min(1, (mouseX - (spreadFlickable.width - scrollAreaWidth)) / (scrollAreaWidth - margins))
515− var contentX = progress * (spreadFlickable.contentWidth - spreadFlickable.width)
516− spreadFlickable.contentX = Math.min(spreadFlickable.contentWidth - spreadFlickable.width, Math.max(spreadFlickable.contentX, contentX))
517− }
518− }
519− }
520− onPressed: mouse.accepted = false
521− }
522−
523− FloatingFlickable {
524− id: spreadFlickable
525− objectName: "spreadFlickable"
526 anchors.fill: parent
250 anchors.fill: parent
527− property int minContentWidth: 6 * Math.min(height / 4, width / 5)
251+ source: appContainer
528− contentWidth: Math.max(6, ApplicationManager.count) * Math.min(height / 4, width / 5)
529− enabled: false
530−
531− function snapTo(contentX) {
532− snapAnimation.stop();
533− snapAnimation.to = contentX
534− snapAnimation.start();
535− }
536−
537− UbuntuNumberAnimation {
538− id: snapAnimation
539− target: spreadFlickable
540− property: "contentX"
541− }
542− }
543−
544− Item {
545− id: workspaceSelector
546− anchors {
547− left: parent.left
548− top: parent.top
549− right: parent.right
550− topMargin: units.gu(3.5) // TODO: should be root.panelHeight
551− }
552− height: root.height * 0.25
553 visible: false
252 visible: false
554−
555− RowLayout {
556− anchors.fill: parent
557− spacing: units.gu(1)
558− Item { Layout.fillWidth: true }
559− Repeater {
560− model: 1 // TODO: will be a workspacemodel in the future
561− Item {
562− Layout.fillHeight: true
563− Layout.preferredWidth: ((height - units.gu(6)) * root.width / root.height)
564− Image {
565− source: root.background
566− anchors {
567− left: parent.left
568− right: parent.right
569− verticalCenter: parent.verticalCenter
570− }
571− height: parent.height * 0.75
572−
573− // FIXME: This is temporary until we can have multiple Items per surface
574− ShaderEffect {
575− anchors.fill: parent
576−
577− property var source: ShaderEffectSource {
578− id: shaderEffectSource
579− live: false
580− sourceItem: appContainer
581− Connections { target: root; onUpdateWorkspaces: shaderEffectSource.scheduleUpdate() }
582− }
583−
584− fragmentShader: "
585− varying highp vec2 qt_TexCoord0;
586− uniform sampler2D source;
587− void main(void)
588− {
589− highp vec4 sourceColor = texture2D(source, qt_TexCoord0);
590− gl_FragColor = sourceColor;
591− }"
592− }
593− }
594−
595− // TODO: This is the bar for the currently selected workspace
596− // Enable this once the workspace stuff is implemented
597−// Rectangle {
598−// anchors { left: parent.left; right: parent.right; bottom: parent.bottom }
599−// height: units.dp(2)
600−// color: UbuntuColors.orange
601−// visible: index == 0 // TODO: should be active workspace index
602−// }
603− }
604−
605− }
606− // TODO: This is the "new workspace" button. Enable this once workspaces are implemented
607−// Item {
608−// Layout.fillHeight: true
609−// Layout.preferredWidth: ((height - units.gu(6)) * root.width / root.height)
610−// Rectangle {
611−// anchors {
612−// left: parent.left
613−// right: parent.right
614−// verticalCenter: parent.verticalCenter
615−// }
616−// height: parent.height * 0.75
617−// color: "#22ffffff"
618−
619−// Label {
620−// anchors.centerIn: parent
621−// font.pixelSize: parent.height / 2
622−// text: "+"
623−// }
624−// }
625−// }
626− Item { Layout.fillWidth: true }
627− }
628 }
253 }
629
254
630− Label {
255+ Rectangle {
631− id: currentSelectedLabel
256+ id: spreadBackground
632− anchors { bottom: parent.bottom; bottomMargin: root.height * 0.625; horizontalCenter: parent.horizontalCenter }
257+ anchors.fill: parent
633− text: appRepeater.highlightedIndex >= 0 ? ApplicationManager.get(appRepeater.highlightedIndex).name : ""
258+ color: "#55000000"
634 visible: false
259 visible: false
635− fontSize: "large"
636 }
260 }
637
261
638− states: [
639− State {
640− name: "altTab"; when: root.altTabPressed
641− PropertyChanges { target: workspaceSelector; visible: true }
642− PropertyChanges { target: spreadFlickable; enabled: spreadFlickable.contentWidth > spreadFlickable.minContentWidth }
643− PropertyChanges { target: currentSelectedLabel; visible: true }
644− PropertyChanges { target: spreadBackground; visible: true }
645− PropertyChanges { target: appContainer; focus: true }
646− PropertyChanges { target: hoverMouseArea; enabled: true }
647− }
648− ]
649− signal updateWorkspaces();
650− property bool workspacesUpdated: false
651− transitions: [
652− Transition {
653− from: "*"
654− to: "altTab"
655− SequentialAnimation {
656− PropertyAction { target: hoverMouseArea; property: "progressiveScrollingEnabled"; value: false }
657− PropertyAction { target: appRepeater; property: "highlightedIndex"; value: Math.min(ApplicationManager.count - 1, 1) }
658− PauseAnimation { duration: 50 }
659− PropertyAction { target: workspaceSelector; property: "visible" }
660− ScriptAction { script: root.updateWorkspaces() }
661− // FIXME: Updating of shaderEffectSource take a bit of time. This is temporary until we can paint multiple items per surface
662− PauseAnimation { duration: 10 }
663− PropertyAction { target: root; property: "workspacesUpdated"; value: true }
664− PropertyAction { target: spreadFlickable; property: "visible" }
665− PropertyAction { targets: [currentSelectedLabel,spreadBackground]; property: "visible" }
666− PropertyAction { target: spreadFlickable; property: "contentX"; value: 0 }
667− }
668− },
669− Transition {
670− from: "*"
671− to: "*"
672− PropertyAnimation { property: "opacity" }
673− PropertyAction { target: root; property: "workspacesUpdated"; value: false }
674− ScriptAction { script: { appContainer.focusSelected() } }
675− PropertyAction { target: appRepeater; property: "highlightedIndex"; value: -1 }
676− }
677−
678− ]
679−
680 MouseArea {
262 MouseArea {
681− id: rightEdgePushArea
263+ id: eventEater
682− anchors {
264+ anchors.fill: parent
683− top: parent.top
265+ visible: spreadBackground.visible
684− right: parent.right
266+ enabled: visible
685− bottom: parent.bottom
686− }
267+ }
687− // TODO: Make this a push to edge thing like the launcher when we can,
268+
688− // for now, yes, we want 1 pixel, regardless of the scaling
269+ DesktopSpread {
689− width: 1
270+ id: spread
690− hoverEnabled: true
271+ objectName: "spread"
691− onContainsMouseChanged: {
272+ anchors.fill: parent
692− if (containsMouse) {
273+ workspace: appContainer
693− root.state = "altTab";
274+ focus: state == "altTab"
694− }
695− }
696 }
275 }
697}
276}
qml/Stages/PhoneStage.qml+15−7
@@ -48,17 +48,12 @@ Rectangle {
48 onBeingResizedChanged: {
48 onBeingResizedChanged: {
49 if (beingResized) {
49 if (beingResized) {
50 // Brace yourselves for impact!
50 // Brace yourselves for impact!
51− spreadView.selectedIndex = -1;
51+ priv.reset();
52− spreadView.phase = 0;
53− spreadView.contentX = -spreadView.shift;
54 }
52 }
55 }
53 }
56 onSpreadEnabledChanged: {
54 onSpreadEnabledChanged: {
57 if (!spreadEnabled) {
55 if (!spreadEnabled) {
58− // reset. go back to display the focused app
56+ priv.reset();
59− spreadView.selectedIndex = -1;
60− spreadView.phase = 0;
61− spreadView.contentX = -spreadView.shift;
62 }
57 }
63 }
58 }
64 function updateFocusedAppOrientation() {
59 function updateFocusedAppOrientation() {
@@ -94,6 +89,7 @@ Rectangle {
94 readonly property var mainApp: applicationManager.focusedApplicationId
89 readonly property var mainApp: applicationManager.focusedApplicationId
95 ? applicationManager.findApplication(applicationManager.focusedApplicationId)
90 ? applicationManager.findApplication(applicationManager.focusedApplicationId)
96 : null
91 : null
92+
97 property int mainAppWindowOrientationAngle: 0
93 property int mainAppWindowOrientationAngle: 0
98 readonly property bool orientationChangesEnabled: priv.focusedAppOrientationChangesEnabled
94 readonly property bool orientationChangesEnabled: priv.focusedAppOrientationChangesEnabled
99 && !priv.focusedAppDelegateIsDislocated
95 && !priv.focusedAppDelegateIsDislocated
@@ -216,6 +212,18 @@ Rectangle {
216 // Is more stable than "spreadView.shiftedContentX === 0" as it filters out noise caused by
212 // Is more stable than "spreadView.shiftedContentX === 0" as it filters out noise caused by
217 // Flickable.contentX changing due to resizes.
213 // Flickable.contentX changing due to resizes.
218 property bool fullyShowingFocusedApp: true
214 property bool fullyShowingFocusedApp: true
215+
216+ function reset() {
217+ // The app that's about to go to foreground has to be focused, otherwise
218+ // it would leave us in an inconsistent state.
219+ if (!root.applicationManager.focusedApplicationId && root.applicationManager.count > 0) {
220+ root.applicationManager.focusApplication(root.applicationManager.get(0).appId);
221+ }
222+
223+ spreadView.selectedIndex = -1;
224+ spreadView.phase = 0;
225+ spreadView.contentX = -spreadView.shift;
226+ }
219 }
227 }
220 Timer {
228 Timer {
221 id: fullyShowingFocusedAppUpdateTimer
229 id: fullyShowingFocusedAppUpdateTimer
qml/Stages/SessionContainer.qml+3
@@ -20,11 +20,14 @@ import "Animations"
20FocusScope {
20FocusScope {
21 id: root
21 id: root
22 objectName: "sessionContainer"
22 objectName: "sessionContainer"
23+ implicitWidth: _surfaceContainer.implicitWidth
24+ implicitHeight: _surfaceContainer.implicitHeight
23 property QtObject session
25 property QtObject session
24 readonly property var childSessions: session ? session.childSessions : null
26 readonly property var childSessions: session ? session.childSessions : null
25 readonly property alias surface: _surfaceContainer.surface
27 readonly property alias surface: _surfaceContainer.surface
26 property alias interactive: _surfaceContainer.interactive
28 property alias interactive: _surfaceContainer.interactive
27 property alias surfaceOrientationAngle: _surfaceContainer.surfaceOrientationAngle
29 property alias surfaceOrientationAngle: _surfaceContainer.surfaceOrientationAngle
30+ property alias resizeSurface: _surfaceContainer.resizeSurface
28
31
29 readonly property alias surfaceContainer: _surfaceContainer
32 readonly property alias surfaceContainer: _surfaceContainer
30 SurfaceContainer {
33 SurfaceContainer {
qml/Stages/SpreadDelegate.qml+1−1
@@ -268,7 +268,7 @@ FocusScope {
268 focus: true
268 focus: true
269 anchors {
269 anchors {
270 fill: parent
270 fill: parent
271− topMargin: appWindow.fullscreen || application.rotatesWindowContents
271+ topMargin: appWindow.fullscreen || (application && application.rotatesWindowContents)
272 ? 0 : maximizedAppTopMargin
272 ? 0 : maximizedAppTopMargin
273 }
273 }
274
274
qml/Stages/SurfaceContainer.qml+3−2
@@ -28,6 +28,7 @@ FocusScope {
28 property bool hadSurface: false
28 property bool hadSurface: false
29 property bool interactive
29 property bool interactive
30 property int surfaceOrientationAngle: 0
30 property int surfaceOrientationAngle: 0
31+ property bool resizeSurface: true
31
32
32 onSurfaceChanged: {
33 onSurfaceChanged: {
33 if (surface) {
34 if (surface) {
@@ -52,8 +53,8 @@ FocusScope {
52
53
53 consumesInput: true
54 consumesInput: true
54
55
55− surfaceWidth: width
56+ surfaceWidth: root.resizeSurface ? width : -1
56− surfaceHeight: height
57+ surfaceHeight: root.resizeSurface ? height : -1
57
58
58 anchors.fill: root
59 anchors.fill: root
59 enabled: root.interactive
60 enabled: root.interactive
qml/Stages/WindowMoveResizeArea.qml+1−1
@@ -104,6 +104,6 @@ MouseArea {
104 }
104 }
105
105
106 Component.onDestruction: {
106 Component.onDestruction: {
107− windowStateStorage.saveGeometry(root.windowId, Qt.rect(target.x, target.y, target.windowWidth, target.windowHeight))
107+ windowStateStorage.saveGeometry(root.windowId, Qt.rect(target.x, target.y, target.width, target.height))
108 }
108 }
109}
109}
src/ApplicationArguments.h+2−2
@@ -31,10 +31,10 @@ class ApplicationArguments : public QObject
31public:
31public:
32 ApplicationArguments(QObject *parent = nullptr);
32 ApplicationArguments(QObject *parent = nullptr);
33
33
34− void setDeviceName(QString deviceName) { m_deviceName = deviceName; }
34+ void setDeviceName(const QString &deviceName) { m_deviceName = deviceName; }
35 QString deviceName() const { return m_deviceName; }
35 QString deviceName() const { return m_deviceName; }
36
36
37− void setMode(QString mode) { m_mode = mode; }
37+ void setMode(const QString &mode) { m_mode = mode; }
38 QString mode() const { return m_mode; }
38 QString mode() const { return m_mode; }
39
39
40private:
40private:
src/CachingNetworkManagerFactory.cpp+1−1
@@ -46,7 +46,7 @@ QNetworkAccessManager *CachingNetworkManagerFactory::create(QObject *parent) {
46 QNetworkAccessManager *manager = new CachingNetworkAccessManager(parent);
46 QNetworkAccessManager *manager = new CachingNetworkAccessManager(parent);
47
47
48 QNetworkDiskCache* cache = new QNetworkDiskCache(manager);
48 QNetworkDiskCache* cache = new QNetworkDiskCache(manager);
49− cache->setCacheDirectory(QString("%1/network").arg(QStandardPaths::writableLocation(QStandardPaths::CacheLocation)));
49+ cache->setCacheDirectory(QStringLiteral("%1/network").arg(QStandardPaths::writableLocation(QStandardPaths::CacheLocation)));
50
50
51 manager->setCache(cache);
51 manager->setCache(cache);
52 return manager;
52 return manager;
src/Dash/main.cpp+11−11
@@ -36,20 +36,20 @@ int main(int argc, const char *argv[])
36 QGuiApplication *application = new QGuiApplication(argc, (char**)argv);
36 QGuiApplication *application = new QGuiApplication(argc, (char**)argv);
37
37
38 QCommandLineParser parser;
38 QCommandLineParser parser;
39− parser.setApplicationDescription("Description: Unity 8 Shell Dash");
39+ parser.setApplicationDescription(QStringLiteral("Description: Unity 8 Shell Dash"));
40 parser.addHelpOption();
40 parser.addHelpOption();
41
41
42− QCommandLineOption mousetouchOption("mousetouch",
42+ QCommandLineOption mousetouchOption(QStringLiteral("mousetouch"),
43− "Allow the mouse to provide touch input");
43+ QStringLiteral("Allow the mouse to provide touch input"));
44 parser.addOption(mousetouchOption);
44 parser.addOption(mousetouchOption);
45
45
46− QCommandLineOption windowGeometryOption(QStringList() << "windowgeometry",
46+ QCommandLineOption windowGeometryOption(QStringList() << QStringLiteral("windowgeometry"),
47− "Specify the window geometry as [<width>x<height>]", "windowgeometry", "1");
47+ QStringLiteral("Specify the window geometry as [<width>x<height>]"), QStringLiteral("windowgeometry"), QStringLiteral("1"));
48 parser.addOption(windowGeometryOption);
48 parser.addOption(windowGeometryOption);
49
49
50 // FIXME Remove once we drop the need of the hint
50 // FIXME Remove once we drop the need of the hint
51− QCommandLineOption desktopFileHintOption("desktop_file_hint",
51+ QCommandLineOption desktopFileHintOption(QStringLiteral("desktop_file_hint"),
52− "The desktop_file_hint option for QtMir", "hint_file");
52+ QStringLiteral("The desktop_file_hint option for QtMir"), QStringLiteral("hint_file"));
53 parser.addOption(desktopFileHintOption);
53 parser.addOption(desktopFileHintOption);
54
54
55 // Treat args with single dashes the same as arguments with two dashes
55 // Treat args with single dashes the same as arguments with two dashes
@@ -60,7 +60,7 @@ int main(int argc, const char *argv[])
60 ApplicationArguments qmlArgs;
60 ApplicationArguments qmlArgs;
61
61
62 if (getenv("QT_LOAD_TESTABILITY")) {
62 if (getenv("QT_LOAD_TESTABILITY")) {
63− QLibrary testLib(QLatin1String("qttestability"));
63+ QLibrary testLib(QStringLiteral("qttestability"));
64 if (testLib.load()) {
64 if (testLib.load()) {
65 typedef void (*TasInitialize)(void);
65 typedef void (*TasInitialize)(void);
66 TasInitialize initFunction = (TasInitialize)testLib.resolve("qt_testability_init");
66 TasInitialize initFunction = (TasInitialize)testLib.resolve("qt_testability_init");
@@ -91,8 +91,8 @@ int main(int argc, const char *argv[])
91 }
91 }
92 }
92 }
93
93
94− view->setTitle("Scopes");
94+ view->setTitle(QStringLiteral("Scopes"));
95− view->rootContext()->setContextProperty("applicationArguments", &qmlArgs);
95+ view->rootContext()->setContextProperty(QStringLiteral("applicationArguments"), &qmlArgs);
96
96
97 // You will need this if you want to interact with touch-only components using a mouse
97 // You will need this if you want to interact with touch-only components using a mouse
98 // Needed only when manually testing on a desktop.
98 // Needed only when manually testing on a desktop.
@@ -101,7 +101,7 @@ int main(int argc, const char *argv[])
101 mouseTouchAdaptor = MouseTouchAdaptor::instance();
101 mouseTouchAdaptor = MouseTouchAdaptor::instance();
102 }
102 }
103
103
104− QUrl source(::qmlDirectory()+"Dash/DashApplication.qml");
104+ QUrl source(::qmlDirectory() + "/Dash/DashApplication.qml");
105 prependImportPaths(view->engine(), ::overrideImportPaths());
105 prependImportPaths(view->engine(), ::overrideImportPaths());
106 appendImportPaths(view->engine(), ::fallbackImportPaths());
106 appendImportPaths(view->engine(), ::fallbackImportPaths());
107
107
src/Panel/Indicators/client/indicatorsclient.cpp+8−8
@@ -36,20 +36,20 @@ IndicatorsClient::IndicatorsClient(int &argc, char **argv)
36 QStringList args = m_application->arguments();
36 QStringList args = m_application->arguments();
37
37
38 m_view = new QQuickView;
38 m_view = new QQuickView;
39− m_view->engine()->setBaseUrl(QUrl::fromLocalFile(::qmlDirectory()+"Panel/Indicators/client/"));
39+ m_view->engine()->setBaseUrl(QUrl::fromLocalFile(::qmlDirectory() + "/Panel/Indicators/client/"));
40 prependImportPaths(m_view->engine(), ::overrideImportPaths());
40 prependImportPaths(m_view->engine(), ::overrideImportPaths());
41 appendImportPaths(m_view->engine(), ::fallbackImportPaths());
41 appendImportPaths(m_view->engine(), ::fallbackImportPaths());
42
42
43− QString profile = "phone";
43+ QString profile = QStringLiteral("phone");
44− if (args.contains(QLatin1String("-profile")) && args.size() > args.indexOf(QLatin1String("-profile")) + 1) {
44+ if (args.contains(QStringLiteral("-profile")) && args.size() > args.indexOf(QStringLiteral("-profile")) + 1) {
45− profile = args.at(args.indexOf(QLatin1String("-profile")) + 1);
45+ profile = args.at(args.indexOf(QStringLiteral("-profile")) + 1);
46 }
46 }
47− m_view->rootContext()->setContextProperty("indicatorProfile", profile);
47+ m_view->rootContext()->setContextProperty(QStringLiteral("indicatorProfile"), profile);
48
48
49− m_view->setSource(QUrl("IndicatorsClient.qml"));
49+ m_view->setSource(QUrl(QStringLiteral("IndicatorsClient.qml")));
50 m_view->setResizeMode(QQuickView::SizeRootObjectToView);
50 m_view->setResizeMode(QQuickView::SizeRootObjectToView);
51− if (args.contains(QLatin1String("-windowgeometry")) && args.size() > args.indexOf(QLatin1String("-windowgeometry")) + 1) {
51+ if (args.contains(QStringLiteral("-windowgeometry")) && args.size() > args.indexOf(QStringLiteral("-windowgeometry")) + 1) {
52− QStringList geometryArg = args.at(args.indexOf(QLatin1String("-windowgeometry")) + 1).split('x');
52+ QStringList geometryArg = args.at(args.indexOf(QStringLiteral("-windowgeometry")) + 1).split('x');
53 if (geometryArg.size() == 2) {
53 if (geometryArg.size() == 2) {
54 m_view->resize(geometryArg.at(0).toInt(), geometryArg.at(1).toInt());
54 m_view->resize(geometryArg.at(0).toInt(), geometryArg.at(1).toInt());
55 }
55 }
src/UnityCommandLineParser.cpp+25−24
@@ -26,36 +26,36 @@ UnityCommandLineParser::UnityCommandLineParser(const QCoreApplication &app)
26 m_gridUnit = getenvFloat(ENV_GRID_UNIT_PX, DEFAULT_GRID_UNIT_PX);
26 m_gridUnit = getenvFloat(ENV_GRID_UNIT_PX, DEFAULT_GRID_UNIT_PX);
27
27
28 QCommandLineParser parser;
28 QCommandLineParser parser;
29− parser.setApplicationDescription("Description: Unity 8 Shell");
29+ parser.setApplicationDescription(QStringLiteral("Description: Unity 8 Shell"));
30 parser.addHelpOption();
30 parser.addHelpOption();
31
31
32− QCommandLineOption fullscreenOption("fullscreen",
32+ QCommandLineOption fullscreenOption(QStringLiteral("fullscreen"),
33− "Run in fullscreen");
33+ QStringLiteral("Run in fullscreen"));
34 parser.addOption(fullscreenOption);
34 parser.addOption(fullscreenOption);
35
35
36− QCommandLineOption framelessOption("frameless",
36+ QCommandLineOption framelessOption(QStringLiteral("frameless"),
37− "Run without window borders");
37+ QStringLiteral("Run without window borders"));
38 parser.addOption(framelessOption);
38 parser.addOption(framelessOption);
39
39
40− QCommandLineOption mousetouchOption("mousetouch",
40+ QCommandLineOption mousetouchOption(QStringLiteral("mousetouch"),
41− "Allow the mouse to provide touch input");
41+ QStringLiteral("Allow the mouse to provide touch input"));
42 parser.addOption(mousetouchOption);
42 parser.addOption(mousetouchOption);
43
43
44− QCommandLineOption windowGeometryOption(QStringList() << "windowgeometry",
44+ QCommandLineOption windowGeometryOption(QStringList() << QStringLiteral("windowgeometry"),
45− "Specify the window geometry as [<width>x<height>]", "windowgeometry", "1");
45+ QStringLiteral("Specify the window geometry as [<width>x<height>]"), QStringLiteral("windowgeometry"), QStringLiteral("1"));
46 parser.addOption(windowGeometryOption);
46 parser.addOption(windowGeometryOption);
47
47
48− QCommandLineOption testabilityOption("testability",
48+ QCommandLineOption testabilityOption(QStringLiteral("testability"),
49− "DISCOURAGED: Please set QT_LOAD_TESTABILITY instead.\nLoad the testability driver");
49+ QStringLiteral("DISCOURAGED: Please set QT_LOAD_TESTABILITY instead.\nLoad the testability driver"));
50 parser.addOption(testabilityOption);
50 parser.addOption(testabilityOption);
51
51
52− QCommandLineOption devicenameOption(QStringList() << "devicename",
52+ QCommandLineOption devicenameOption(QStringList() << QStringLiteral("devicename"),
53− "Specify the device name instead of letting Unity 8 find it out", "devicename", "");
53+ QStringLiteral("Specify the device name instead of letting Unity 8 find it out"), QStringLiteral("devicename"), QLatin1String(""));
54 parser.addOption(devicenameOption);
54 parser.addOption(devicenameOption);
55
55
56− QCommandLineOption modeOption("mode",
56+ QCommandLineOption modeOption(QStringLiteral("mode"),
57− "Whether to run greeter and/or shell [full-greeter, full-shell, greeter, shell]",
57+ QStringLiteral("Whether to run greeter and/or shell [full-greeter, full-shell, greeter, shell]"),
58− "mode", "full-greeter");
58+ QStringLiteral("mode"), QStringLiteral("full-greeter"));
59 parser.addOption(modeOption);
59 parser.addOption(modeOption);
60
60
61 // Treat args with single dashes the same as arguments with two dashes
61 // Treat args with single dashes the same as arguments with two dashes
@@ -83,7 +83,7 @@ UnityCommandLineParser::UnityCommandLineParser(const QCoreApplication &app)
83
83
84int UnityCommandLineParser::parsePixelsValue(const QString &str)
84int UnityCommandLineParser::parsePixelsValue(const QString &str)
85{
85{
86− if (str.endsWith("gu", Qt::CaseInsensitive)) {
86+ if (str.endsWith(QLatin1String("gu"), Qt::CaseInsensitive)) {
87 QString numStr = str;
87 QString numStr = str;
88 numStr.remove(numStr.size() - 2, 2);
88 numStr.remove(numStr.size() - 2, 2);
89 return numStr.toInt() * m_gridUnit;
89 return numStr.toInt() * m_gridUnit;
@@ -105,13 +105,14 @@ void UnityCommandLineParser::resolveMode(QCommandLineParser &parser, QCommandLin
105 // If an invalid option was specified, set it to the default
105 // If an invalid option was specified, set it to the default
106 // If no default was provided in the QCommandLineOption constructor, abort.
106 // If no default was provided in the QCommandLineOption constructor, abort.
107 if (!parser.isSet(modeOption) ||
107 if (!parser.isSet(modeOption) ||
108− (parser.value(modeOption) != "full-greeter" &&
108+ (parser.value(modeOption) != QLatin1String("full-greeter") &&
109− parser.value(modeOption) != "full-shell" &&
109+ parser.value(modeOption) != QLatin1String("full-shell") &&
110− parser.value(modeOption) != "greeter" &&
110+ parser.value(modeOption) != QLatin1String("greeter") &&
111− parser.value(modeOption) != "shell")) {
111+ parser.value(modeOption) != QLatin1String("shell"))) {
112−
112+
113+ const QStringList defaultValues = modeOption.defaultValues();
113− if (modeOption.defaultValues().first() != nullptr) {
114+ if (!defaultValues.isEmpty()) {
114− m_mode = modeOption.defaultValues().first();
115+ m_mode = defaultValues.first();
115 qWarning() << "Mode argument was not provided or was set to an illegal value."
116 qWarning() << "Mode argument was not provided or was set to an illegal value."
116 " Using default value of --mode=" << m_mode;
117 " Using default value of --mode=" << m_mode;
117 } else {
118 } else {
src/libunity8-private/unitydbusobject.cpp+2−2
@@ -64,8 +64,8 @@ void UnityDBusObject::notifyPropertyChanged(const QString& propertyName, const Q
64 changedProps.insert(propertyName, value);
64 changedProps.insert(propertyName, value);
65
65
66 message = QDBusMessage::createSignal(path(),
66 message = QDBusMessage::createSignal(path(),
67− "org.freedesktop.DBus.Properties",
67+ QStringLiteral("org.freedesktop.DBus.Properties"),
68− "PropertiesChanged");
68+ QStringLiteral("PropertiesChanged"));
69 message << interface;
69 message << interface;
70 message << changedProps;
70 message << changedProps;
71 message << QStringList();
71 message << QStringList();
src/libunity8-private/unitydbusvirtualobject.cpp+2−2
@@ -61,8 +61,8 @@ void UnityDBusVirtualObject::notifyPropertyChanged(const QString& interface, con
61 changedProps.insert(propertyName, value);
61 changedProps.insert(propertyName, value);
62
62
63 message = QDBusMessage::createSignal(path() + "/" + node,
63 message = QDBusMessage::createSignal(path() + "/" + node,
64− "org.freedesktop.DBus.Properties",
64+ QStringLiteral("org.freedesktop.DBus.Properties"),
65− "PropertiesChanged");
65+ QStringLiteral("PropertiesChanged"));
66 message << interface;
66 message << interface;
67 message << changedProps;
67 message << changedProps;
68 message << QStringList();
68 message << QStringList();
src/main.cpp+5−5
@@ -43,7 +43,7 @@ int main(int argc, const char *argv[])
43 isMirServer = true;
43 isMirServer = true;
44 }
44 }
45
45
46− QGuiApplication::setApplicationName("unity8");
46+ QGuiApplication::setApplicationName(QStringLiteral("unity8"));
47 QGuiApplication *application;
47 QGuiApplication *application;
48
48
49 application = new QGuiApplication(argc, (char**)argv);
49 application = new QGuiApplication(argc, (char**)argv);
@@ -65,7 +65,7 @@ int main(int argc, const char *argv[])
65 // The testability driver is only loaded by QApplication but not by QGuiApplication.
65 // The testability driver is only loaded by QApplication but not by QGuiApplication.
66 // However, QApplication depends on QWidget which would add some unneeded overhead => Let's load the testability driver on our own.
66 // However, QApplication depends on QWidget which would add some unneeded overhead => Let's load the testability driver on our own.
67 if (parser.hasTestability() || getenv("QT_LOAD_TESTABILITY")) {
67 if (parser.hasTestability() || getenv("QT_LOAD_TESTABILITY")) {
68− QLibrary testLib(QLatin1String("qttestability"));
68+ QLibrary testLib(QStringLiteral("qttestability"));
69 if (testLib.load()) {
69 if (testLib.load()) {
70 typedef void (*TasInitialize)(void);
70 typedef void (*TasInitialize)(void);
71 TasInitialize initFunction = (TasInitialize)testLib.resolve("qt_testability_init");
71 TasInitialize initFunction = (TasInitialize)testLib.resolve("qt_testability_init");
@@ -85,7 +85,7 @@ int main(int argc, const char *argv[])
85 QQuickView* view = new QQuickView();
85 QQuickView* view = new QQuickView();
86 view->setResizeMode(QQuickView::SizeRootObjectToView);
86 view->setResizeMode(QQuickView::SizeRootObjectToView);
87 view->setColor("black");
87 view->setColor("black");
88− view->setTitle("Unity8 Shell");
88+ view->setTitle(QStringLiteral("Unity8 Shell"));
89
89
90 if (parser.windowGeometry().isValid()) {
90 if (parser.windowGeometry().isValid()) {
91 view->setWidth(parser.windowGeometry().width());
91 view->setWidth(parser.windowGeometry().width());
@@ -93,7 +93,7 @@ int main(int argc, const char *argv[])
93 }
93 }
94
94
95 view->engine()->setBaseUrl(QUrl::fromLocalFile(::qmlDirectory()));
95 view->engine()->setBaseUrl(QUrl::fromLocalFile(::qmlDirectory()));
96− view->rootContext()->setContextProperty("applicationArguments", &qmlArgs);
96+ view->rootContext()->setContextProperty(QStringLiteral("applicationArguments"), &qmlArgs);
97 if (parser.hasFrameless()) {
97 if (parser.hasFrameless()) {
98 view->setFlags(Qt::FramelessWindowHint);
98 view->setFlags(Qt::FramelessWindowHint);
99 }
99 }
@@ -105,7 +105,7 @@ int main(int argc, const char *argv[])
105 mouseTouchAdaptor = MouseTouchAdaptor::instance();
105 mouseTouchAdaptor = MouseTouchAdaptor::instance();
106 }
106 }
107
107
108− QUrl source(::qmlDirectory()+"OrientedShell.qml");
108+ QUrl source(::qmlDirectory() + "/OrientedShell.qml");
109 prependImportPaths(view->engine(), ::overrideImportPaths());
109 prependImportPaths(view->engine(), ::overrideImportPaths());
110 if (!isMirServer) {
110 if (!isMirServer) {
111 prependImportPaths(view->engine(), ::nonMirImportPaths());
111 prependImportPaths(view->engine(), ::nonMirImportPaths());
tests/CMakeLists.txt+9−3
@@ -22,11 +22,17 @@ add_subdirectory(uqmlscene)
22add_executable(qmlscene ALIAS uqmlscene)
22add_executable(qmlscene ALIAS uqmlscene)
23import_executables(dbus-test-runner)
23import_executables(dbus-test-runner)
24
24
25+set(UNITY_PLUGINPATH "${CMAKE_BINARY_DIR}/plugins" CACHE PATH "Path to pre-built unity8 plugin dir.")
26+set(UNITY_MOCKPATH "${CMAKE_BINARY_DIR}/tests/mocks" CACHE PATH "Path to pre-built unity8 mock dir.")
27+
28+# Pre-built mocks have preference, pre-built plugins replace local build
25set(UNITY_IMPORT_PATHS
29set(UNITY_IMPORT_PATHS
30+ ${UNITY_MOCKPATH}
26 ${CMAKE_BINARY_DIR}/tests/mocks
31 ${CMAKE_BINARY_DIR}/tests/mocks
27 ${CMAKE_BINARY_DIR}/tests/utils/modules
32 ${CMAKE_BINARY_DIR}/tests/utils/modules
28− ${CMAKE_BINARY_DIR}/plugins
33+ ${UNITY_PLUGINPATH}
29)
34)
35+list(REMOVE_DUPLICATES UNITY_IMPORT_PATHS)
30set(UNITY_IMPORT_PATHS ${UNITY_IMPORT_PATHS} CACHE INTERNAL "")
36set(UNITY_IMPORT_PATHS ${UNITY_IMPORT_PATHS} CACHE INTERNAL "")
31
37
32macro(unity8_parse_arguments)
38macro(unity8_parse_arguments)
@@ -40,8 +46,8 @@ macro(unity8_parse_arguments)
40 set(ld_paths)
46 set(ld_paths)
41 if(U8TEST_LIGHTDM)
47 if(U8TEST_LIGHTDM)
42 list(APPEND ld_paths
48 list(APPEND ld_paths
43− ${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics
49+ ${UNITY_MOCKPATH}/libusermetrics
44− ${CMAKE_BINARY_DIR}/tests/mocks/LightDM/liblightdm
50+ ${UNITY_MOCKPATH}/IntegratedLightDM/liblightdm
45 )
51 )
46 endif()
52 endif()
47
53
tests/autopilot/unity8/application_lifecycle/tests/test_application_lifecycle.py+2−1
@@ -24,6 +24,7 @@ import os
24import threading
24import threading
25
25
26from autopilot.platform import model
26from autopilot.platform import model
27+from autopilot.application import _launcher
27
28
28from unity8 import process_helpers
29from unity8 import process_helpers
29from unity8.application_lifecycle import tests
30from unity8.application_lifecycle import tests
@@ -118,7 +119,7 @@ class ApplicationLifecycleTests(tests.ApplicationLifeCycleTestCase):
118
119
119 process_helpers.lock_unity()
120 process_helpers.lock_unity()
120
121
121− self.launch_upstart_application(application_name)
122+ self.launch_upstart_application(application_name, [], _launcher.AlreadyLaunchedUpstartLauncher)
122 greeter = self.main_window.get_greeter()
123 greeter = self.main_window.get_greeter()
123 greeter.wait_swiped_away()
124 greeter.wait_swiped_away()
124 process_helpers.unlock_unity()
125 process_helpers.unlock_unity()
tests/autopilot/unity8/dash.py+3−4
@@ -155,7 +155,7 @@ class Dash(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
155 self.pointing_device.drag(start_x, start_y, stop_x, stop_y, rate)
155 self.pointing_device.drag(start_x, start_y, stop_x, stop_y, rate)
156 self.dash_content_list.currentIndex.wait_for(original_index + 1)
156 self.dash_content_list.currentIndex.wait_for(original_index + 1)
157
157
158− def enter_search_query(self, query):
158+ def enter_search_query(self, query, keyboard):
159 current_header = self._get_current_page_header()
159 current_header = self._get_current_page_header()
160 search_button = \
160 search_button = \
161 current_header.select_single(objectName="search_header_button")
161 current_header.select_single(objectName="search_header_button")
@@ -166,12 +166,11 @@ class Dash(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
166 headerContainer = current_header.select_single(
166 headerContainer = current_header.select_single(
167 objectName="headerContainer")
167 objectName="headerContainer")
168 headerContainer.contentY.wait_for(0)
168 headerContainer.contentY.wait_for(0)
169− search_text_field = self._get_search_text_field()
169+ keyboard.type(query)
170− search_text_field.write(query)
171 self.select_single(
170 self.select_single(
172 objectName="processingIndicator").visible.wait_for(False)
171 objectName="processingIndicator").visible.wait_for(False)
173
172
174− def _get_search_text_field(self):
173+ def get_search_text_field(self):
175 page_header = self._get_current_page_header()
174 page_header = self._get_current_page_header()
176 return page_header.select_single(objectName='searchTextField')
175 return page_header.select_single(objectName='searchTextField')
177
176
tests/autopilot/unity8/fixture_setup.py+1−1
@@ -74,7 +74,7 @@ class LaunchUnityWithFakeSensors(fixtures.Fixture):
74 def _get_lightdm_mock_path(self):
74 def _get_lightdm_mock_path(self):
75 lib_path = get_mocks_library_path()
75 lib_path = get_mocks_library_path()
76 lightdm_mock_path = os.path.abspath(
76 lightdm_mock_path = os.path.abspath(
77− os.path.join(lib_path, "LightDM", "liblightdm")
77+ os.path.join(lib_path, "IntegratedLightDM", "liblightdm")
78 )
78 )
79
79
80 if not os.path.exists(lightdm_mock_path):
80 if not os.path.exists(lightdm_mock_path):
tests/autopilot/unity8/indicators/tests/test_indicators.py+10−13
@@ -16,9 +16,11 @@
16# You should have received a copy of the GNU General Public License
16# You should have received a copy of the GNU General Public License
17# along with this program. If not, see <http://www.gnu.org/licenses/>.
17# along with this program. If not, see <http://www.gnu.org/licenses/>.
18
18
19+import platform
20+
19from testscenarios import multiply_scenarios
21from testscenarios import multiply_scenarios
20
22
21−from autopilot import platform
23+import autopilot.platform
22
24
23from unity8.indicators import tests
25from unity8.indicators import tests
24
26
@@ -39,12 +41,6 @@ class IndicatorExistsTestCase(tests.DeviceIndicatorTestCase):
39 tests.IndicatorTestCase.device_emulation_scenarios
41 tests.IndicatorTestCase.device_emulation_scenarios
40 )
42 )
41
43
42− def setUp(self):
43− super().setUp()
44− if (platform.model() == 'Nexus 10' and
45− self.indicator_name == 'indicator-bluetooth'):
46− self.skipTest('Nexus 10 does not have bluetooth at the moment.')
47−
48 def test_indicator_exists(self):
44 def test_indicator_exists(self):
49 self.main_window._get_indicator_panel_item(
45 self.main_window._get_indicator_panel_item(
50 self.indicator_name
46 self.indicator_name
@@ -74,12 +70,6 @@ class IndicatorPageTitleMatchesWidgetTestCase(tests.DeviceIndicatorTestCase):
74 tests.IndicatorTestCase.device_emulation_scenarios
70 tests.IndicatorTestCase.device_emulation_scenarios
75 )
71 )
76
72
77− def setUp(self):
78− super().setUp()
79− if (platform.model() == 'Nexus 10' and
80− self.indicator_name == 'indicator-bluetooth'):
81− self.skipTest('Nexus 10 does not have bluetooth at the moment.')
82−
83 def test_indicator_page_title_matches_widget(self):
73 def test_indicator_page_title_matches_widget(self):
84 """Swiping open an indicator must show its correct title.
74 """Swiping open an indicator must show its correct title.
85
75
@@ -87,5 +77,12 @@ class IndicatorPageTitleMatchesWidgetTestCase(tests.DeviceIndicatorTestCase):
87 """
77 """
88 indicator_page = self.main_window.open_indicator_page(
78 indicator_page = self.main_window.open_indicator_page(
89 self.indicator_name)
79 self.indicator_name)
80+ if self.indicator_name == 'indicator-bluetooth':
81+ if autopilot.platform.model() == 'Nexus 10':
82+ self.expectFailure('Nexus 10 does not have bluetooth at the moment.',
83+ self.assertTrue, indicator_page.visible)
84+ if platform.linux_distribution()[2] == 'wily':
85+ self.expectFailure('Bluetooth doesn\'t work on wily at the moment.',
86+ self.assertTrue, indicator_page.visible)
90 self.assertTrue(indicator_page.visible)
87 self.assertTrue(indicator_page.visible)
91 self.assertEqual(indicator_page.title, self.title)
88 self.assertEqual(indicator_page.title, self.title)
tests/autopilot/unity8/shell/tests/__init__.py+1−1
@@ -261,7 +261,7 @@ class UnityTestCase(AutopilotTestCase):
261 def _get_lightdm_mock_path(self):
261 def _get_lightdm_mock_path(self):
262 lib_path = get_mocks_library_path()
262 lib_path = get_mocks_library_path()
263 lightdm_mock_path = os.path.abspath(
263 lightdm_mock_path = os.path.abspath(
264− os.path.join(lib_path, "LightDM", "liblightdm")
264+ os.path.join(lib_path, "IntegratedLightDM", "liblightdm")
265 )
265 )
266
266
267 if not os.path.exists(lightdm_mock_path):
267 if not os.path.exists(lightdm_mock_path):
tests/autopilot/unity8/shell/tests/test_helpers.py+2−2
@@ -47,8 +47,8 @@ class MainWindowTestCase(tests.UnityTestCase):
47class DashHelperTestCase(tests.DashBaseTestCase):
47class DashHelperTestCase(tests.DashBaseTestCase):
48
48
49 def test_search(self):
49 def test_search(self):
50− self.dash.enter_search_query('Test')
50+ self.dash.enter_search_query('Test', self.keyboard)
51− text_field = self.dash._get_search_text_field()
51+ text_field = self.dash.get_search_text_field()
52 self.assertEqual(text_field.text, 'Test')
52 self.assertEqual(text_field.text, 'Test')
53
53
54 def test_open_scope_to_the_right(self):
54 def test_open_scope_to_the_right(self):
tests/mocks/AccountsService/AccountsService.cpp+1−1
@@ -24,7 +24,7 @@ AccountsService::AccountsService(QObject* parent)
24 : QObject(parent),
24 : QObject(parent),
25 m_enableLauncherWhileLocked(true),
25 m_enableLauncherWhileLocked(true),
26 m_enableIndicatorsWhileLocked(true),
26 m_enableIndicatorsWhileLocked(true),
27− m_backgroundFile(qmlDirectory() + "graphics/phone_background.jpg"),
27+ m_backgroundFile(qmlDirectory() + "/graphics/phone_background.jpg"),
28 m_statsWelcomeScreen(true),
28 m_statsWelcomeScreen(true),
29 m_failedLogins(0),
29 m_failedLogins(0),
30 m_demoEdges(false),
30 m_demoEdges(false),
tests/mocks/IntegratedLightDM/liblightdm/CMakeLists.txt+1−1
@@ -14,5 +14,5 @@ set_target_properties(MockLightDM PROPERTIES
14 OUTPUT_NAME lightdm-qt5-2)
14 OUTPUT_NAME lightdm-qt5-2)
15
15
16install(TARGETS MockLightDM
16install(TARGETS MockLightDM
17− DESTINATION ${SHELL_INSTALL_QML}/mocks/LightDM/liblightdm
17+ DESTINATION ${SHELL_INSTALL_QML}/mocks/IntegratedLightDM/liblightdm
18 )
18 )
tests/mocks/Powerd/Powerd.cpp+2−2
@@ -24,11 +24,11 @@ Powerd::Powerd(QObject* parent)
24{
24{
25}
25}
26
26
27−void Powerd::setStatus(Powerd::Status status)
27+void Powerd::setStatus(Powerd::Status status, DisplayStateChangeReason reason)
28{
28{
29 if (m_status != status) {
29 if (m_status != status) {
30 m_status = status;
30 m_status = status;
31− Q_EMIT statusChanged(DisplayStateChangeReason::Unknown);
31+ Q_EMIT statusChanged(reason);
32 }
32 }
33}
33}
34
34
tests/mocks/Powerd/Powerd.h+4−2
@@ -26,7 +26,7 @@ class Powerd: public QObject
26 Q_OBJECT
26 Q_OBJECT
27 Q_ENUMS(Status)
27 Q_ENUMS(Status)
28 Q_ENUMS(DisplayStateChangeReason)
28 Q_ENUMS(DisplayStateChangeReason)
29− Q_PROPERTY(Status status READ status WRITE setStatus NOTIFY statusChanged) // write only exists for tests
29+ Q_PROPERTY(Status status READ status NOTIFY statusChanged)
30
30
31public:
31public:
32 enum DisplayStateChangeReason {
32 enum DisplayStateChangeReason {
@@ -44,7 +44,9 @@ public:
44 explicit Powerd(QObject *parent = 0);
44 explicit Powerd(QObject *parent = 0);
45
45
46 Status status() const;
46 Status status() const;
47+
48+ // Not exposed via Q_PROPERTY because we need the 'reason' argument too
47− void setStatus(Status status);
49+ Q_INVOKABLE void setStatus(Status status, DisplayStateChangeReason reason);
48
50
49Q_SIGNALS:
51Q_SIGNALS:
50 void statusChanged(DisplayStateChangeReason reason);
52 void statusChanged(DisplayStateChangeReason reason);
tests/mocks/Ubuntu/CMakeLists.txt+1
@@ -5,3 +5,4 @@ add_subdirectory(SystemImage)
5add_subdirectory(SystemSettings)
5add_subdirectory(SystemSettings)
6add_subdirectory(Telephony)
6add_subdirectory(Telephony)
7add_subdirectory(Thumbnailer)
7add_subdirectory(Thumbnailer)
8+add_subdirectory(Web)
tests/mocks/Ubuntu/Web/CMakeLists.txtnew file+1
@@ -0,0 +1 @@
1+add_unity8_mock(Ubuntu.Web 0.2 Ubuntu/Web)
tests/mocks/Ubuntu/Web/WebView.qmlnew file+25
@@ -0,0 +1,25 @@
1+/*
2+ * Copyright (C) 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 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+import QtQuick 2.0
19+
20+Item {
21+ property url url
22+ property int loadProgress: 0
23+
24+ onUrlChanged: loadProgress = 100
25+}
tests/mocks/Ubuntu/Web/qmldirnew file+4
@@ -0,0 +1,4 @@
1+module Ubuntu.Web
2+typeinfo Web.qmltypes
3+
4+WebView 0.2 WebView.qml
tests/mocks/Unity/Application/CMakeLists.txt+1
@@ -18,6 +18,7 @@ set(FakeUnityApplicationQml_SOURCES
18 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/Mir.h
18 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/Mir.h
19 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/MirSurfaceInterface.h
19 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/MirSurfaceInterface.h
20 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/MirSurfaceItemInterface.h
20 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/MirSurfaceItemInterface.h
21+ resources/surfaces.qrc
21)
22)
22
23
23add_library(FakeUnityApplicationQml MODULE ${FakeUnityApplicationQml_SOURCES})
24add_library(FakeUnityApplicationQml MODULE ${FakeUnityApplicationQml_SOURCES})
tests/mocks/Unity/Application/MirSurface.cpp+14−7
@@ -22,7 +22,7 @@ MirSurface::MirSurface(const QString& name,
22 Mir::Type type,
22 Mir::Type type,
23 Mir::State state,
23 Mir::State state,
24 const QUrl& screenshot,
24 const QUrl& screenshot,
25− const QString &qmlFilePath)
25+ const QUrl &qmlFilePath)
26 : unity::shell::application::MirSurfaceInterface(nullptr)
26 : unity::shell::application::MirSurfaceInterface(nullptr)
27 , m_name(name)
27 , m_name(name)
28 , m_type(type)
28 , m_type(type)
@@ -36,12 +36,12 @@ MirSurface::MirSurface(const QString& name,
36 , m_width(-1)
36 , m_width(-1)
37 , m_height(-1)
37 , m_height(-1)
38{
38{
39− qDebug() << "MirSurface::MirSurface() " << name;
39+// qDebug() << "MirSurface::MirSurface() " << name;
40}
40}
41
41
42MirSurface::~MirSurface()
42MirSurface::~MirSurface()
43{
43{
44− qDebug() << "MirSurface::~MirSurface() " << name();
44+// qDebug() << "MirSurface::~MirSurface() " << name();
45}
45}
46
46
47QString MirSurface::name() const
47QString MirSurface::name() const
@@ -75,7 +75,7 @@ bool MirSurface::live() const
75
75
76void MirSurface::setLive(bool live)
76void MirSurface::setLive(bool live)
77{
77{
78− qDebug().nospace() << "MirSurface::setLive("<<live<<") " << name();
78+// qDebug().nospace() << "MirSurface::setLive("<<live<<") " << name();
79 if (live == m_live)
79 if (live == m_live)
80 return;
80 return;
81
81
@@ -87,7 +87,7 @@ void MirSurface::setLive(bool live)
87 }
87 }
88}
88}
89
89
90−QString MirSurface::qmlFilePath() const
90+QUrl MirSurface::qmlFilePath() const
91{
91{
92 return m_qmlFilePath;
92 return m_qmlFilePath;
93}
93}
@@ -123,13 +123,13 @@ void MirSurface::setOrientationAngle(Mir::OrientationAngle angle)
123void MirSurface::incrementViewCount()
123void MirSurface::incrementViewCount()
124{
124{
125 ++m_viewCount;
125 ++m_viewCount;
126− qDebug().nospace() << "MirSurface::incrementViewCount() viewCount(after)=" << m_viewCount << " " << name();
126+// qDebug().nospace() << "MirSurface::incrementViewCount() viewCount(after)=" << m_viewCount << " " << name();
127}
127}
128
128
129void MirSurface::decrementViewCount()
129void MirSurface::decrementViewCount()
130{
130{
131 --m_viewCount;
131 --m_viewCount;
132− qDebug().nospace() << "MirSurface::decrementViewCount() viewCount(after)=" << m_viewCount << " " << name();
132+// qDebug().nospace() << "MirSurface::decrementViewCount() viewCount(after)=" << m_viewCount << " " << name();
133
133
134 Q_ASSERT(m_viewCount >= 0);
134 Q_ASSERT(m_viewCount >= 0);
135
135
@@ -170,13 +170,20 @@ int MirSurface::height() const
170
170
171void MirSurface::resize(int width, int height)
171void MirSurface::resize(int width, int height)
172{
172{
173+ bool changed = false;
173 if (width != m_width) {
174 if (width != m_width) {
174 m_width = width;
175 m_width = width;
175 Q_EMIT widthChanged();
176 Q_EMIT widthChanged();
177+ changed = true;
176 }
178 }
177
179
178 if (m_height != height) {
180 if (m_height != height) {
179 m_height = height;
181 m_height = height;
180 Q_EMIT heightChanged();
182 Q_EMIT heightChanged();
183+ changed = true;
184+ }
185+
186+ if (changed) {
187+ Q_EMIT sizeChanged(QSize(width, height));
181 }
188 }
182}
189}
tests/mocks/Unity/Application/MirSurface.h+3−3
@@ -38,7 +38,7 @@ public:
38 Mir::Type type,
38 Mir::Type type,
39 Mir::State state,
39 Mir::State state,
40 const QUrl& screenshot,
40 const QUrl& screenshot,
41− const QString &qmlFilePath = QString());
41+ const QUrl &qmlFilePath = QUrl());
42 virtual ~MirSurface();
42 virtual ~MirSurface();
43
43
44 ////
44 ////
@@ -76,7 +76,7 @@ public:
76 /////
76 /////
77 // internal mock stuff
77 // internal mock stuff
78
78
79− QString qmlFilePath() const;
79+ QUrl qmlFilePath() const;
80
80
81 QUrl screenshotUrl() const;
81 QUrl screenshotUrl() const;
82 void setScreenshotUrl(QUrl);
82 void setScreenshotUrl(QUrl);
@@ -102,7 +102,7 @@ private:
102 Mir::State m_state;
102 Mir::State m_state;
103 Mir::OrientationAngle m_orientationAngle;
103 Mir::OrientationAngle m_orientationAngle;
104 QUrl m_screenshotUrl;
104 QUrl m_screenshotUrl;
105− QString m_qmlFilePath;
105+ QUrl m_qmlFilePath;
106 bool m_live;
106 bool m_live;
107 int m_viewCount;
107 int m_viewCount;
108 bool m_activeFocus;
108 bool m_activeFocus;
tests/mocks/Unity/Application/MirSurfaceItem.cpp+26−12
@@ -38,7 +38,7 @@ MirSurfaceItem::MirSurfaceItem(QQuickItem *parent)
38 , m_touchPressCount(0)
38 , m_touchPressCount(0)
39 , m_touchReleaseCount(0)
39 , m_touchReleaseCount(0)
40{
40{
41− qDebug() << "MirSurfaceItem::MirSurfaceItem() " << (void*)(this) << name();
41+// qDebug() << "MirSurfaceItem::MirSurfaceItem() " << (void*)(this) << name();
42 setAcceptedMouseButtons(Qt::LeftButton | Qt::MiddleButton | Qt::RightButton |
42 setAcceptedMouseButtons(Qt::LeftButton | Qt::MiddleButton | Qt::RightButton |
43 Qt::ExtraButton1 | Qt::ExtraButton2 | Qt::ExtraButton3 | Qt::ExtraButton4 |
43 Qt::ExtraButton1 | Qt::ExtraButton2 | Qt::ExtraButton3 | Qt::ExtraButton4 |
44 Qt::ExtraButton5 | Qt::ExtraButton6 | Qt::ExtraButton7 | Qt::ExtraButton8 |
44 Qt::ExtraButton5 | Qt::ExtraButton6 | Qt::ExtraButton7 | Qt::ExtraButton8 |
@@ -48,7 +48,7 @@ MirSurfaceItem::MirSurfaceItem(QQuickItem *parent)
48
48
49MirSurfaceItem::~MirSurfaceItem()
49MirSurfaceItem::~MirSurfaceItem()
50{
50{
51− qDebug() << "MirSurfaceItem::~MirSurfaceItem() " << (void*)(this) << name();
51+// qDebug() << "MirSurfaceItem::~MirSurfaceItem() " << (void*)(this) << name();
52 setSurface(nullptr);
52 setSurface(nullptr);
53}
53}
54
54
@@ -136,7 +136,7 @@ void MirSurfaceItem::onComponentStatusChanged(QQmlComponent::Status status)
136
136
137void MirSurfaceItem::createQmlContentItem()
137void MirSurfaceItem::createQmlContentItem()
138{
138{
139− qDebug() << "MirSurfaceItem::createQmlContentItem()";
139+// qDebug() << "MirSurfaceItem::createQmlContentItem()";
140
140
141 m_qmlItem = qobject_cast<QQuickItem*>(m_qmlContentComponent->create());
141 m_qmlItem = qobject_cast<QQuickItem*>(m_qmlContentComponent->create());
142 m_qmlItem->setParentItem(this);
142 m_qmlItem->setParentItem(this);
@@ -161,11 +161,26 @@ void MirSurfaceItem::touchEvent(QTouchEvent * event)
161 }
161 }
162}
162}
163
163
164+void MirSurfaceItem::mousePressEvent(QMouseEvent * event)
165+{
166+ event->accept();
167+}
168+
169+void MirSurfaceItem::mouseMoveEvent(QMouseEvent * event)
170+{
171+ event->accept();
172+}
173+
174+void MirSurfaceItem::mouseReleaseEvent(QMouseEvent * event)
175+{
176+ event->accept();
177+}
178+
164void MirSurfaceItem::setSurface(MirSurfaceInterface* surface)
179void MirSurfaceItem::setSurface(MirSurfaceInterface* surface)
165{
180{
166− qDebug().nospace() << "MirSurfaceItem::setSurface() this=" << (void*)(this)
181+// qDebug().nospace() << "MirSurfaceItem::setSurface() this=" << (void*)(this)
167− << " name=" << name()
182+// << " name=" << name()
168− << " surface=" << surface;
183+// << " surface=" << surface;
169
184
170 if (m_qmlSurface == surface) {
185 if (m_qmlSurface == surface) {
171 return;
186 return;
@@ -200,12 +215,11 @@ void MirSurfaceItem::setSurface(MirSurfaceInterface* surface)
200 QQuickView *quickView =
215 QQuickView *quickView =
201 qobject_cast<QQuickView*>(QGuiApplication::topLevelWindows()[0]);
216 qobject_cast<QQuickView*>(QGuiApplication::topLevelWindows()[0]);
202
217
203− QString qmlComponentFilePath;
218+ QUrl qmlComponentFilePath;
204 if (!m_qmlSurface->qmlFilePath().isEmpty()) {
219 if (!m_qmlSurface->qmlFilePath().isEmpty()) {
205− qmlComponentFilePath.append(m_qmlSurface->qmlFilePath());
220+ qmlComponentFilePath = m_qmlSurface->qmlFilePath();
206 } else {
221 } else {
207− qmlComponentFilePath = QString("%1/Unity/Application/MirSurfaceItem.qml")
222+ qmlComponentFilePath = QUrl("qrc:///Unity/Application/MirSurfaceItem.qml");
208− .arg(mockPluginsDir());
209 }
223 }
210
224
211 m_qmlContentComponent = new QQmlComponent(quickView->engine(), qmlComponentFilePath);
225 m_qmlContentComponent = new QQmlComponent(quickView->engine(), qmlComponentFilePath);
@@ -254,7 +268,7 @@ int MirSurfaceItem::surfaceWidth() const
254
268
255void MirSurfaceItem::setSurfaceWidth(int value)
269void MirSurfaceItem::setSurfaceWidth(int value)
256{
270{
257− if (m_surfaceWidth != value) {
271+ if (value != -1 && m_surfaceWidth != value) {
258 m_surfaceWidth = value;
272 m_surfaceWidth = value;
259 Q_EMIT surfaceWidthChanged(m_surfaceWidth);
273 Q_EMIT surfaceWidthChanged(m_surfaceWidth);
260 updateSurfaceSize();
274 updateSurfaceSize();
@@ -268,7 +282,7 @@ int MirSurfaceItem::surfaceHeight() const
268
282
269void MirSurfaceItem::setSurfaceHeight(int value)
283void MirSurfaceItem::setSurfaceHeight(int value)
270{
284{
271− if (m_surfaceHeight != value) {
285+ if (value != -1 && m_surfaceHeight != value) {
272 m_surfaceHeight = value;
286 m_surfaceHeight = value;
273 Q_EMIT surfaceHeightChanged(m_surfaceHeight);
287 Q_EMIT surfaceHeightChanged(m_surfaceHeight);
274 updateSurfaceSize();
288 updateSurfaceSize();
tests/mocks/Unity/Application/MirSurfaceItem.h+3
@@ -79,6 +79,9 @@ Q_SIGNALS:
79
79
80protected:
80protected:
81 void touchEvent(QTouchEvent * event) override;
81 void touchEvent(QTouchEvent * event) override;
82+ void mousePressEvent(QMouseEvent * event) override;
83+ void mouseMoveEvent(QMouseEvent * event) override;
84+ void mouseReleaseEvent(QMouseEvent * event) override;
82 void itemChange(ItemChange change, const ItemChangeData & value) override;
85 void itemChange(ItemChange change, const ItemChangeData & value) override;
83
86
84private Q_SLOTS:
87private Q_SLOTS:
tests/mocks/Unity/Application/Session.cpp+4−4
@@ -35,14 +35,14 @@ Session::Session(const QString &name,
35 , m_parentSession(nullptr)
35 , m_parentSession(nullptr)
36 , m_children(new SessionModel(this))
36 , m_children(new SessionModel(this))
37{
37{
38− qDebug() << "Session::Session() " << this->name();
38+// qDebug() << "Session::Session() " << this->name();
39
39
40 QQmlEngine::setObjectOwnership(this, QQmlEngine::CppOwnership);
40 QQmlEngine::setObjectOwnership(this, QQmlEngine::CppOwnership);
41}
41}
42
42
43Session::~Session()
43Session::~Session()
44{
44{
45− qDebug() << "Session::~Session() " << name();
45+// qDebug() << "Session::~Session() " << name();
46
46
47 QList<Session*> children(m_children->list());
47 QList<Session*> children(m_children->list());
48 for (Session* child : children) {
48 for (Session* child : children) {
@@ -67,7 +67,7 @@ Session::~Session()
67
67
68void Session::release()
68void Session::release()
69{
69{
70− qDebug() << "Session::release " << name();
70+// qDebug() << "Session::release " << name();
71 deleteLater();
71 deleteLater();
72}
72}
73
73
@@ -82,7 +82,7 @@ void Session::setApplication(ApplicationInfo* application)
82
82
83void Session::setSurface(MirSurface* surface)
83void Session::setSurface(MirSurface* surface)
84{
84{
85− qDebug() << "Session::setSurface - session=" << name() << "surface=" << surface;
85+// qDebug() << "Session::setSurface - session=" << name() << "surface=" << surface;
86 if (m_surface == surface)
86 if (m_surface == surface)
87 return;
87 return;
88
88
tests/mocks/Unity/Application/VirtualKeyboard.cpp+2−4
@@ -26,10 +26,8 @@ VirtualKeyboard::VirtualKeyboard()
26 : MirSurface("input-method",
26 : MirSurface("input-method",
27 Mir::InputMethodType,
27 Mir::InputMethodType,
28 Mir::MinimizedState,
28 Mir::MinimizedState,
29− QString("file://%1/Dash/graphics/phone/screenshots/vkb_portrait.png")
29+ QUrl("qrc:///Unity/Application/vkb_portrait.png"),
30− .arg(qmlDirectory()),
31− QString("%1/Unity/Application/VirtualKeyboard.qml")
30+ QUrl("qrc:///Unity/Application/VirtualKeyboard.qml"))
32− .arg(mockPluginsDir()))
33{
31{
34}
32}
35
33
tests/mocks/Unity/Application/MirSurfaceItem.qml → tests/mocks/Unity/Application/resources/MirSurfaceItem.qmlrenamed

The content is the same.

tests/mocks/Unity/Application/VirtualKeyboard.qml → tests/mocks/Unity/Application/resources/VirtualKeyboard.qmlrenamed

The content is the same.

tests/mocks/Unity/Application/resources/surfaces.qrcnew file+7
@@ -0,0 +1,7 @@
1+<RCC>
2+ <qresource prefix="/Unity/Application">
3+ <file>VirtualKeyboard.qml</file>
4+ <file>MirSurfaceItem.qml</file>
5+ <file>vkb_portrait.png</file>
6+ </qresource>
7+</RCC>
tests/mocks/Unity/Application/resources/vkb_portrait.pngnew file

Binary file not shown.

tests/mocks/Unity/Launcher/MockLauncherItem.cpp+1−1
@@ -29,7 +29,7 @@ MockLauncherItem::MockLauncherItem(const QString &appId, const QString& desktopF
29 m_appId(appId),
29 m_appId(appId),
30 m_desktopFile(desktopFile),
30 m_desktopFile(desktopFile),
31 m_name(name),
31 m_name(name),
32− m_icon(qmlDirectory() + "graphics/applicationIcons/" + icon + ".png"),
32+ m_icon(qmlDirectory() + "/graphics/applicationIcons/" + icon + ".png"),
33 m_pinned(false),
33 m_pinned(false),
34 m_running(false),
34 m_running(false),
35 m_recent(false),
35 m_recent(false),
tests/mocks/Unity/Notifications/MockActionModel.cpp+1−1
@@ -59,7 +59,7 @@ QHash<int, QByteArray> ActionModel::roleNames() const {
59 return roles;
59 return roles;
60}
60}
61
61
62−Q_INVOKABLE QVariant ActionModel::data(int row, int role) const
62+QVariant ActionModel::data(int row, int role) const
63{
63{
64 return data(index(row, 0), role);
64 return data(index(row, 0), role);
65}
65}
tests/mocks/Unity/Notifications/MockNotification.cpp+1
@@ -39,6 +39,7 @@ MockNotification::MockNotification(QObject *parent) : QObject(parent), p(new Moc
39}
39}
40
40
41MockNotification::~MockNotification() {
41MockNotification::~MockNotification() {
42+ delete p->actionsModel;
42}
43}
43
44
44QString MockNotification::getSummary() const {
45QString MockNotification::getSummary() const {
tests/mocks/Unity/Notifications/MockNotification.h+1−1
@@ -30,7 +30,7 @@ struct MockNotificationPrivate;
30
30
31class MockNotification : public QObject {
31class MockNotification : public QObject {
32 Q_OBJECT
32 Q_OBJECT
33− Q_ENUMS(Type)
33+ Q_ENUMS(Type Urgency)
34 Q_PROPERTY(QString summary READ getSummary WRITE setSummary NOTIFY summaryChanged)
34 Q_PROPERTY(QString summary READ getSummary WRITE setSummary NOTIFY summaryChanged)
35 Q_PROPERTY(QString body READ getBody WRITE setBody NOTIFY bodyChanged)
35 Q_PROPERTY(QString body READ getBody WRITE setBody NOTIFY bodyChanged)
36 Q_PROPERTY(int nid READ getID WRITE setID NOTIFY idChanged)
36 Q_PROPERTY(int nid READ getID WRITE setID NOTIFY idChanged)
tests/mocks/Unity/Notifications/MockNotificationModel.cpp+5−1
@@ -35,6 +35,10 @@ MockNotificationModel::MockNotificationModel(QObject *parent) : QAbstractListMod
35}
35}
36
36
37MockNotificationModel::~MockNotificationModel() {
37MockNotificationModel::~MockNotificationModel() {
38+ Q_FOREACH(MockNotification *n, m_queue) {
39+ n->deleteLater();
40+ }
41+ m_queue.clear();
38}
42}
39
43
40int MockNotificationModel::rowCount(const QModelIndex &) const {
44int MockNotificationModel::rowCount(const QModelIndex &) const {
@@ -47,7 +51,7 @@ int MockNotificationModel::getCount() const {
47
51
48QVariant MockNotificationModel::data(const QModelIndex &index, int role) const {
52QVariant MockNotificationModel::data(const QModelIndex &index, int role) const {
49 if (!index.isValid())
53 if (!index.isValid())
50− return QVariant();
54+ return QVariant();
51
55
52 switch(role) {
56 switch(role) {
53 case ModelInterface::RoleType:
57 case ModelInterface::RoleType:
tests/mocks/Unity/fake_previewstack.cpp+2−2
@@ -21,8 +21,8 @@
21#include "fake_previewmodel.h"
21#include "fake_previewmodel.h"
22#include "fake_scope.h"
22#include "fake_scope.h"
23
23
24−PreviewStack::PreviewStack(QObject* parent, Scope *scope)
24+PreviewStack::PreviewStack(Scope *scope)
25− : unity::shell::scopes::PreviewStackInterface(parent)
25+ : unity::shell::scopes::PreviewStackInterface(nullptr)
26{
26{
27 m_previews << new PreviewModel(this, scope);
27 m_previews << new PreviewModel(this, scope);
28}
28}
tests/mocks/Unity/fake_previewstack.h+1−1
@@ -32,7 +32,7 @@ class PreviewStack : public unity::shell::scopes::PreviewStackInterface
32 Q_OBJECT
32 Q_OBJECT
33
33
34public:
34public:
35− explicit PreviewStack(QObject* parent = 0, Scope* scope = 0);
35+ explicit PreviewStack(Scope* scope = 0);
36 virtual ~PreviewStack();
36 virtual ~PreviewStack();
37
37
38 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
38 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
tests/mocks/Unity/fake_resultsmodel.cpp+1−1
@@ -78,7 +78,7 @@ ResultsModel::data(const QModelIndex& index, int role) const
78 case RoleTitle:
78 case RoleTitle:
79 return QString("Title.%1.%2").arg(m_categoryId).arg(index.row());
79 return QString("Title.%1.%2").arg(m_categoryId).arg(index.row());
80 case RoleArt:
80 case RoleArt:
81− return qmlDirectory() + "graphics/applicationIcons/dash.png";
81+ return qmlDirectory() + "/graphics/applicationIcons/dash.png";
82 case RoleSubtitle:
82 case RoleSubtitle:
83 return QString("Subtitle.%1.%2").arg(m_categoryId).arg(index.row());
83 return QString("Subtitle.%1.%2").arg(m_categoryId).arg(index.row());
84 case RoleMascot:
84 case RoleMascot:
tests/mocks/Unity/fake_scope.cpp+3−5
@@ -201,9 +201,7 @@ PreviewStack* Scope::preview(QVariant const& result, QString const& /*categoryId
201 if (m_returnNullPreview) {
201 if (m_returnNullPreview) {
202 return nullptr;
202 return nullptr;
203 } else {
203 } else {
204− // This probably leaks, do we don't care
205− // it's a test after all
206− return new PreviewStack(this, this);
204+ return new PreviewStack(this);
207 }
205 }
208}
206}
209
207
@@ -253,11 +251,11 @@ QVariantMap Scope::customizations() const
253 m["foreground-color"] = "blue";
251 m["foreground-color"] = "blue";
254 m["page-header"] = h;
252 m["page-header"] = h;
255 } else if (m_id == "MockScope4") {
253 } else if (m_id == "MockScope4") {
256− h["navigation-background"] = QUrl(sourceDirectory() + "tests/qmltests/Dash/artwork/background.png");
254+ h["navigation-background"] = QUrl(sourceDirectory() + "/tests/qmltests/Dash/artwork/background.png");
257 m["page-header"] = h;
255 m["page-header"] = h;
258 } else if (m_id == "MockScope5") {
256 } else if (m_id == "MockScope5") {
259 h["background"] = "gradient:///lightgrey/grey";
257 h["background"] = "gradient:///lightgrey/grey";
260− h["logo"] = QUrl(sourceDirectory() + "tests/qmltests/Dash/tst_PageHeader/logo-ubuntu-orange.svg");
258+ h["logo"] = QUrl(sourceDirectory() + "/tests/qmltests/Dash/tst_PageHeader/logo-ubuntu-orange.svg");
261 h["divider-color"] = "red";
259 h["divider-color"] = "red";
262 h["navigation-background"] = "color:///black";
260 h["navigation-background"] = "color:///black";
263 m["page-header"] = h;
261 m["page-header"] = h;
tests/mocks/Unity/fake_scopesoverview.cpp+1−1
@@ -308,7 +308,7 @@ QVariant ScopesOverviewResultsModel::data(const QModelIndex& index, int role) co
308 case RoleSubtitle:
308 case RoleSubtitle:
309 return scope && scope->name() == "Videos this is long ab cd ef gh ij kl" ? "tube, movies, cinema, pictures, art, moving images, magic in a box" : QString();
309 return scope && scope->name() == "Videos this is long ab cd ef gh ij kl" ? "tube, movies, cinema, pictures, art, moving images, magic in a box" : QString();
310 case RoleArt:
310 case RoleArt:
311− return qmlDirectory() + "graphics/applicationIcons/dash.png";
311+ return qmlDirectory() + "/graphics/applicationIcons/dash.png";
312 case RoleMascot:
312 case RoleMascot:
313 case RoleEmblem:
313 case RoleEmblem:
314 case RoleSummary:
314 case RoleSummary:
tests/mocks/Utils/CMakeLists.txt+1
@@ -10,6 +10,7 @@ include_directories(
10)
10)
11
11
12set(QMLPLUGIN_SRC
12set(QMLPLUGIN_SRC
13+ ${CMAKE_SOURCE_DIR}/plugins/Utils/activefocuslogger.cpp
13 ${CMAKE_SOURCE_DIR}/plugins/Utils/qlimitproxymodelqml.cpp
14 ${CMAKE_SOURCE_DIR}/plugins/Utils/qlimitproxymodelqml.cpp
14 ${CMAKE_SOURCE_DIR}/plugins/Utils/unitysortfilterproxymodelqml.cpp
15 ${CMAKE_SOURCE_DIR}/plugins/Utils/unitysortfilterproxymodelqml.cpp
15 ${CMAKE_SOURCE_DIR}/plugins/Utils/unitymenumodelpaths.cpp
16 ${CMAKE_SOURCE_DIR}/plugins/Utils/unitymenumodelpaths.cpp
tests/mocks/Utils/plugin.cpp+2
@@ -27,6 +27,7 @@
27#include "constants.h"
27#include "constants.h"
28
28
29// plugin
29// plugin
30+#include <activefocuslogger.h>
30#include <inputwatcher.h>
31#include <inputwatcher.h>
31#include <qlimitproxymodelqml.h>
32#include <qlimitproxymodelqml.h>
32#include <unitysortfilterproxymodelqml.h>
33#include <unitysortfilterproxymodelqml.h>
@@ -61,6 +62,7 @@ void FakeUtilsPlugin::registerTypes(const char *uri)
61 qmlRegisterSingletonType<WindowStateStorage>(uri, 0, 1, "WindowStateStorage", createWindowStateStorage);
62 qmlRegisterSingletonType<WindowStateStorage>(uri, 0, 1, "WindowStateStorage", createWindowStateStorage);
62 qmlRegisterType<InputWatcher>(uri, 0, 1, "InputWatcher");
63 qmlRegisterType<InputWatcher>(uri, 0, 1, "InputWatcher");
63 qmlRegisterSingletonType<Constants>(uri, 0, 1, "Constants", createConstants);
64 qmlRegisterSingletonType<Constants>(uri, 0, 1, "Constants", createConstants);
65+ qmlRegisterType<ActiveFocusLogger>(uri, 0, 1, "ActiveFocusLogger");
64}
66}
65
67
66void FakeUtilsPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
68void FakeUtilsPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
tests/mocks/libusermetrics/UserMetrics.cpp+1−5
@@ -416,11 +416,7 @@ UserMetrics::~UserMetrics()
416
416
417QString UserMetrics::label() const
417QString UserMetrics::label() const
418{
418{
419− if (d_ptr->m_label.isEmpty()) {
420− return "No data";
421− } else {
422− return d_ptr->m_label;
419+ return d_ptr->m_label;
423− }
424}
420}
425
421
426QString UserMetrics::username() const
422QString UserMetrics::username() const
tests/plugins/Dash/CMakeLists.txt−1
@@ -23,7 +23,6 @@ include_directories(
23remove_definitions(-DQT_NO_KEYWORDS)
23remove_definitions(-DQT_NO_KEYWORDS)
24
24
25add_definitions(-DDASHVIEWSTEST_FOLDER="${CMAKE_CURRENT_SOURCE_DIR}")
25add_definitions(-DDASHVIEWSTEST_FOLDER="${CMAKE_CURRENT_SOURCE_DIR}")
26−add_definitions(-DBUILT_PLUGINS_DIR="${CMAKE_BINARY_DIR}/plugins")
27
26
28macro(add_lvwph_test FILENAME TESTNAME)
27macro(add_lvwph_test FILENAME TESTNAME)
29 add_executable(${TESTNAME}TestExec
28 add_executable(${TESTNAME}TestExec
tests/plugins/Dash/cardcreator/1.res+1−1
@@ -32,7 +32,7 @@ Item {
32 objectName: "artShape";
32 objectName: "artShape";
33 property bool doShapeItem: components["art"]["conciergeMode"] !== true;
33 property bool doShapeItem: components["art"]["conciergeMode"] !== true;
34 visible: image.status == Image.Ready;
34 visible: image.status == Image.Ready;
35− readonly property alias image: artImage.image;
35+ readonly property alias image: artImage;
36 property alias borderSource: artShapeShape.borderSource;
36 property alias borderSource: artShapeShape.borderSource;
37 ShaderEffectSource {
37 ShaderEffectSource {
38 id: artShapeSource;
38 id: artShapeSource;
tests/plugins/Dash/cardcreator/3.res+1−1
@@ -32,7 +32,7 @@ Item {
32 objectName: "artShape";
32 objectName: "artShape";
33 property bool doShapeItem: components["art"]["conciergeMode"] !== true;
33 property bool doShapeItem: components["art"]["conciergeMode"] !== true;
34 visible: image.status == Image.Ready;
34 visible: image.status == Image.Ready;
35− readonly property alias image: artImage.image;
35+ readonly property alias image: artImage;
36 property alias borderSource: artShapeShape.borderSource;
36 property alias borderSource: artShapeShape.borderSource;
37 ShaderEffectSource {
37 ShaderEffectSource {
38 id: artShapeSource;
38 id: artShapeSource;
tests/plugins/Dash/cardcreator/4.res+2−2
@@ -34,11 +34,11 @@ Loader {
34 id: mascotShapeLoader;
34 id: mascotShapeLoader;
35 objectName: "mascotShapeLoader";
35 objectName: "mascotShapeLoader";
36 asynchronous: root.asynchronous;
36 asynchronous: root.asynchronous;
37− active: mascotImage.image.status === Image.Ready;
37+ active: mascotImage.status === Image.Ready;
38 visible: showHeader && active && status == Loader.Ready;
38 visible: showHeader && active && status == Loader.Ready;
39 width: units.gu(6);
39 width: units.gu(6);
40 height: units.gu(5.625);
40 height: units.gu(5.625);
41− sourceComponent: UbuntuShape { image: mascotImage.image }
41+ sourceComponent: UbuntuShape { image: mascotImage }
42 anchors { verticalCenter: parent.verticalCenter; }
42 anchors { verticalCenter: parent.verticalCenter; }
43 }
43 }
44
44
tests/plugins/Dash/cardcreator/5.res+1−1
@@ -32,7 +32,7 @@ Item {
32 objectName: "artShape";
32 objectName: "artShape";
33 property bool doShapeItem: components["art"]["conciergeMode"] !== true;
33 property bool doShapeItem: components["art"]["conciergeMode"] !== true;
34 visible: image.status == Image.Ready;
34 visible: image.status == Image.Ready;
35− readonly property alias image: artImage.image;
35+ readonly property alias image: artImage;
36 property alias borderSource: artShapeShape.borderSource;
36 property alias borderSource: artShapeShape.borderSource;
37 ShaderEffectSource {
37 ShaderEffectSource {
38 id: artShapeSource;
38 id: artShapeSource;
tests/plugins/Dash/cardcreatortest.cpp−1
@@ -35,7 +35,6 @@ private Q_SLOTS:
35 void init()
35 void init()
36 {
36 {
37 view = new QQuickView();
37 view = new QQuickView();
38− view->engine()->addImportPath(BUILT_PLUGINS_DIR);
39 view->setSource(QUrl::fromLocalFile(DASHVIEWSTEST_FOLDER "/cardcreatortest.qml"));
38 view->setSource(QUrl::fromLocalFile(DASHVIEWSTEST_FOLDER "/cardcreatortest.qml"));
40 view->show();
39 view->show();
41 QTest::qWaitForWindowExposed(view);
40 QTest::qWaitForWindowExposed(view);
tests/plugins/Dash/horizontaljournaltest.cpp−1
@@ -123,7 +123,6 @@ private Q_SLOTS:
123 {
123 {
124 view = new QQuickView();
124 view = new QQuickView();
125 view->setResizeMode(QQuickView::SizeRootObjectToView);
125 view->setResizeMode(QQuickView::SizeRootObjectToView);
126− view->engine()->addImportPath(BUILT_PLUGINS_DIR);
127
126
128 model = new WidthModel();
127 model = new WidthModel();
129 QStringList widthList;
128 QStringList widthList;
tests/plugins/Dash/horizontaljournaltry.cpp−1
@@ -63,7 +63,6 @@ int main(int argc, char *argv[])
63
63
64 QQuickView *view = new QQuickView();
64 QQuickView *view = new QQuickView();
65 view->setResizeMode(QQuickView::SizeRootObjectToView);
65 view->setResizeMode(QQuickView::SizeRootObjectToView);
66− view->engine()->addImportPath(BUILT_PLUGINS_DIR);
67
66
68 QWidthModela model;
67 QWidthModela model;
69 QStringList heightList;
68 QStringList heightList;
tests/plugins/Dash/listviewwithpageheadersectionexternalmodeltest.cpp−1
@@ -168,7 +168,6 @@ private Q_SLOTS:
168 void init()
168 void init()
169 {
169 {
170 view = new QQuickView();
170 view = new QQuickView();
171− view->engine()->addImportPath(BUILT_PLUGINS_DIR);
172 view->setSource(QUrl::fromLocalFile(DASHVIEWSTEST_FOLDER "/listviewwithpageheadertestsectionexternalmodel.qml"));
171 view->setSource(QUrl::fromLocalFile(DASHVIEWSTEST_FOLDER "/listviewwithpageheadertestsectionexternalmodel.qml"));
173 lvwph = dynamic_cast<ListViewWithPageHeader*>(view->rootObject()->findChild<QQuickFlickable*>());
172 lvwph = dynamic_cast<ListViewWithPageHeader*>(view->rootObject()->findChild<QQuickFlickable*>());
174 QVERIFY(lvwph);
173 QVERIFY(lvwph);
tests/plugins/Dash/listviewwithpageheadersectiontest.cpp−1
@@ -133,7 +133,6 @@ private Q_SLOTS:
133 void init()
133 void init()
134 {
134 {
135 view = new QQuickView();
135 view = new QQuickView();
136− view->engine()->addImportPath(BUILT_PLUGINS_DIR);
137 view->setSource(QUrl::fromLocalFile(DASHVIEWSTEST_FOLDER "/listviewwithpageheadertestsection.qml"));
136 view->setSource(QUrl::fromLocalFile(DASHVIEWSTEST_FOLDER "/listviewwithpageheadertestsection.qml"));
138 lvwph = dynamic_cast<ListViewWithPageHeader*>(view->rootObject()->findChild<QQuickFlickable*>());
137 lvwph = dynamic_cast<ListViewWithPageHeader*>(view->rootObject()->findChild<QQuickFlickable*>());
139 model = view->rootObject()->findChild<QQmlListModel*>();
138 model = view->rootObject()->findChild<QQmlListModel*>();
tests/plugins/Dash/listviewwithpageheadertest.cpp−1
@@ -119,7 +119,6 @@ private Q_SLOTS:
119 void init()
119 void init()
120 {
120 {
121 view = new QQuickView();
121 view = new QQuickView();
122− view->engine()->addImportPath(BUILT_PLUGINS_DIR);
123 view->setSource(QUrl::fromLocalFile(DASHVIEWSTEST_FOLDER "/listviewwithpageheadertest.qml"));
122 view->setSource(QUrl::fromLocalFile(DASHVIEWSTEST_FOLDER "/listviewwithpageheadertest.qml"));
124 lvwph = dynamic_cast<ListViewWithPageHeader*>(view->rootObject()->findChild<QQuickFlickable*>());
123 lvwph = dynamic_cast<ListViewWithPageHeader*>(view->rootObject()->findChild<QQuickFlickable*>());
125 model = view->rootObject()->findChild<QQmlListModel*>();
124 model = view->rootObject()->findChild<QQmlListModel*>();
tests/plugins/Dash/organicgridtest.cpp−1
@@ -126,7 +126,6 @@ private Q_SLOTS:
126 {
126 {
127 view = new QQuickView();
127 view = new QQuickView();
128 view->setResizeMode(QQuickView::SizeRootObjectToView);
128 view->setResizeMode(QQuickView::SizeRootObjectToView);
129− view->engine()->addImportPath(BUILT_PLUGINS_DIR);
130
129
131 model = new DummyModel();
130 model = new DummyModel();
132 model->setCount(21);
131 model->setCount(21);
tests/plugins/Dash/organicgridtry.cpp−1
@@ -73,7 +73,6 @@ int main(int argc, char *argv[])
73
73
74 QQuickView *view = new QQuickView();
74 QQuickView *view = new QQuickView();
75 view->setResizeMode(QQuickView::SizeRootObjectToView);
75 view->setResizeMode(QQuickView::SizeRootObjectToView);
76− view->engine()->addImportPath(BUILT_PLUGINS_DIR);
77
76
78 DummyModel model;
77 DummyModel model;
79 model.setCount(3);
78 model.setCount(3);
tests/plugins/Dash/tst_CroppedImageMinimumSourceSize.qml+6−6
@@ -41,16 +41,16 @@ Rectangle {
41 when: windowShown
41 when: windowShown
42
42
43 function test_croppedSource() {
43 function test_croppedSource() {
44− tryCompare(cimss.image.sourceSize, "width", 100);
44+ tryCompare(cimss.sourceSize, "width", 100);
45− tryCompare(cimss.image.sourceSize, "height", 0);
45+ tryCompare(cimss.sourceSize, "height", 0);
46
46
47 cimss.width = 40;
47 cimss.width = 40;
48− tryCompare(cimss.image.sourceSize, "width", 0);
48+ tryCompare(cimss.sourceSize, "width", 0);
49− tryCompare(cimss.image.sourceSize, "height", 100);
49+ tryCompare(cimss.sourceSize, "height", 100);
50
50
51 cimss.width = 100;
51 cimss.width = 100;
52− tryCompare(cimss.image.sourceSize, "width", 100);
52+ tryCompare(cimss.sourceSize, "width", 100);
53− tryCompare(cimss.image.sourceSize, "height", 0);
53+ tryCompare(cimss.sourceSize, "height", 0);
54 }
54 }
55 }
55 }
56}
56}
tests/plugins/Dash/verticaljournaltest.cpp−1
@@ -125,7 +125,6 @@ private Q_SLOTS:
125 {
125 {
126 view = new QQuickView();
126 view = new QQuickView();
127 view->setResizeMode(QQuickView::SizeRootObjectToView);
127 view->setResizeMode(QQuickView::SizeRootObjectToView);
128− view->engine()->addImportPath(BUILT_PLUGINS_DIR);
129
128
130 model = new HeightModel();
129 model = new HeightModel();
131 QStringList heightList;
130 QStringList heightList;
tests/plugins/Dash/verticaljournaltry.cpp−1
@@ -63,7 +63,6 @@ int main(int argc, char *argv[])
63
63
64 QQuickView *view = new QQuickView();
64 QQuickView *view = new QQuickView();
65 view->setResizeMode(QQuickView::SizeRootObjectToView);
65 view->setResizeMode(QQuickView::SizeRootObjectToView);
66− view->engine()->addImportPath(BUILT_PLUGINS_DIR);
67
66
68 QHeightModel model;
67 QHeightModel model;
69 QStringList heightList;
68 QStringList heightList;
tests/plugins/IntegratedLightDM/CMakeLists.txt+1−1
@@ -25,7 +25,7 @@ add_unity8_uitest(GreeterDBus dbus-test-runner
25 ARG_PREFIX "--parameter"
25 ARG_PREFIX "--parameter"
26 ARGS --task $<TARGET_FILE:GreeterDBusTestExec>
26 ARGS --task $<TARGET_FILE:GreeterDBusTestExec>
27 DEPENDS MockLightDM
27 DEPENDS MockLightDM
28− IMPORT_PATHS ${CMAKE_BINARY_DIR}/tests/mocks
28+ IMPORT_PATHS ${UNITY_MOCKPATH}
29 LIGHTDM
29 LIGHTDM
30 )
30 )
31
31
tests/plugins/Ubuntu/Gestures/CMakeLists.txt+3−7
@@ -14,9 +14,6 @@ include_directories(
14
14
15export_qmlfiles(UbuntuGesturesTest .)
15export_qmlfiles(UbuntuGesturesTest .)
16
16
17−add_definitions(-DUBUNTU_GESTURES_PLUGIN_DIR="${CMAKE_BINARY_DIR}/plugins")
18−add_definitions(-DTESTS_UTILS_MODULES_DIR="${CMAKE_BINARY_DIR}/tests/utils/modules")
19−
20macro(build_gesture_test CLASSNAME)
17macro(build_gesture_test CLASSNAME)
21 add_executable(${CLASSNAME}TestExec tst_${CLASSNAME}.cpp GestureTest.cpp TestItem.cpp)
18 add_executable(${CLASSNAME}TestExec tst_${CLASSNAME}.cpp GestureTest.cpp TestItem.cpp)
22 qt5_use_modules(${CLASSNAME}TestExec Test Core Qml Gui Quick)
19 qt5_use_modules(${CLASSNAME}TestExec Test Core Qml Gui Quick)
@@ -26,7 +23,7 @@ endmacro()
26macro(add_gesture_unit_test CLASSNAME)
23macro(add_gesture_unit_test CLASSNAME)
27 build_gesture_test(${CLASSNAME})
24 build_gesture_test(${CLASSNAME})
28 add_unity8_unittest(${CLASSNAME} ${CLASSNAME}TestExec
25 add_unity8_unittest(${CLASSNAME} ${CLASSNAME}TestExec
29− ENVIRONMENT LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/plugins/Ubuntu/Gestures
26+ ENVIRONMENT LD_LIBRARY_PATH=${UNITY_PLUGINPATH}/Ubuntu/Gestures
30 DEPENDS UbuntuGesturesTest-qmlfiles
27 DEPENDS UbuntuGesturesTest-qmlfiles
31 ${ARGN}
28 ${ARGN}
32 )
29 )
@@ -35,12 +32,11 @@ endmacro()
35macro(add_gesture_ui_test CLASSNAME)
32macro(add_gesture_ui_test CLASSNAME)
36 build_gesture_test(${CLASSNAME})
33 build_gesture_test(${CLASSNAME})
37 add_unity8_uitest(${CLASSNAME} ${CLASSNAME}TestExec
34 add_unity8_uitest(${CLASSNAME} ${CLASSNAME}TestExec
38− ENVIRONMENT LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/plugins/Ubuntu/Gestures
35+ ENVIRONMENT LD_LIBRARY_PATH=${UNITY_PLUGINPATH}/Ubuntu/Gestures
39 DEPENDS UbuntuGesturesTest-qmlfiles
36 DEPENDS UbuntuGesturesTest-qmlfiles
40 ${ARGN}
37 ${ARGN}
41 )
38 )
42− add_manual_qml_test(. ${CLASSNAME} IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins
39+ add_manual_qml_test(. ${CLASSNAME} IMPORT_PATHS ${UNITY_PLUGINPATH})
43− ${CMAKE_BINARY_DIR}/tests/utils/modules)
44endmacro()
40endmacro()
45
41
46add_gesture_ui_test(DirectionalDragArea)
42add_gesture_ui_test(DirectionalDragArea)
tests/plugins/Ubuntu/Gestures/GestureTest.cpp−2
@@ -44,8 +44,6 @@ void GestureTest::init()
44{
44{
45 m_view = new QQuickView;
45 m_view = new QQuickView;
46 m_view->setResizeMode(QQuickView::SizeRootObjectToView);
46 m_view->setResizeMode(QQuickView::SizeRootObjectToView);
47− m_view->engine()->addImportPath(QStringLiteral(UBUNTU_GESTURES_PLUGIN_DIR));
48− m_view->engine()->addImportPath(QStringLiteral(TESTS_UTILS_MODULES_DIR));
49 m_view->setSource(QUrl::fromLocalFile(m_qmlFilename));
47 m_view->setSource(QUrl::fromLocalFile(m_qmlFilename));
50 m_view->show();
48 m_view->show();
51 QVERIFY(QTest::qWaitForWindowExposed(m_view));
49 QVERIFY(QTest::qWaitForWindowExposed(m_view));
tests/plugins/Ubuntu/Gestures/tst_TouchGate.cpp−1
@@ -119,7 +119,6 @@ QQuickView *tst_TouchGate::createView()
119 QQuickView *window = new QQuickView(0);
119 QQuickView *window = new QQuickView(0);
120 window->setResizeMode(QQuickView::SizeRootObjectToView);
120 window->setResizeMode(QQuickView::SizeRootObjectToView);
121 window->resize(720, 720);
121 window->resize(720, 720);
122− window->engine()->addImportPath(QLatin1String(UBUNTU_GESTURES_PLUGIN_DIR));
123
122
124 return window;
123 return window;
125}
124}
tests/qmltests/CMakeLists.txt+2−2
@@ -1,7 +1,7 @@
1
1
2add_subdirectory(Components)
2add_subdirectory(Components)
3
3
4−add_unity8_qmltest(. OrientedShell)
4+add_unity8_qmltest(. OrientedShell LIGHTDM)
5add_unity8_qmltest(. Shell LIGHTDM)
5add_unity8_qmltest(. Shell LIGHTDM)
6add_unity8_qmltest(. ShellWithPin LIGHTDM)
6add_unity8_qmltest(. ShellWithPin LIGHTDM)
7add_unity8_qmltest(Components Background)
7add_unity8_qmltest(Components Background)
@@ -18,7 +18,7 @@ add_unity8_qmltest(Components Showable)
18add_unity8_qmltest(Components ZoomableImage)
18add_unity8_qmltest(Components ZoomableImage)
19add_unity8_qmltest(Dash Dash)
19add_unity8_qmltest(Dash Dash)
20add_unity8_qmltest(Dash DashContent)
20add_unity8_qmltest(Dash DashContent)
21−add_unity8_qmltest(Dash DashShell)
21+add_unity8_qmltest(Dash DashShell LIGHTDM)
22add_unity8_qmltest(Dash Card)
22add_unity8_qmltest(Dash Card)
23add_unity8_qmltest(Dash CardCarousel)
23add_unity8_qmltest(Dash CardCarousel)
24add_unity8_qmlbenchmark(Dash CardBenchmark 1000)
24add_unity8_qmlbenchmark(Dash CardBenchmark 1000)
tests/qmltests/Components/CMakeLists.txt+1−4
@@ -1,6 +1,4 @@
1−add_definitions(-DUBUNTU_GESTURES_PLUGIN_DIR="${CMAKE_BINARY_DIR}/plugins")
2add_definitions(-DTEST_DIR="${CMAKE_CURRENT_LIST_DIR}")
1add_definitions(-DTEST_DIR="${CMAKE_CURRENT_LIST_DIR}")
3−add_definitions(-DTESTS_UTILS_MODULES_DIR="${CMAKE_BINARY_DIR}/tests/utils/modules")
4
2
5########## tst_DragHandle
3########## tst_DragHandle
6
4
@@ -17,8 +15,7 @@ qt5_use_modules(DragHandleTestExec Test Core Qml Gui Quick)
17target_link_libraries(DragHandleTestExec UbuntuGesturesQml UbuntuGestures)
15target_link_libraries(DragHandleTestExec UbuntuGesturesQml UbuntuGestures)
18
16
19add_unity8_uitest(DragHandle DragHandleTestExec ENVIRONMENT LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/plugins/Ubuntu/Gestures)
17add_unity8_uitest(DragHandle DragHandleTestExec ENVIRONMENT LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/plugins/Ubuntu/Gestures)
20−add_manual_qml_test(. DragHandle IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${CMAKE_BINARY_DIR}/tests/utils/modules)
18+add_manual_qml_test(. DragHandle IMPORT_PATHS ${UNITY_PLUGINPATH})
21−
22
19
23########## tst_EdgeDragEvaluator
20########## tst_EdgeDragEvaluator
24add_executable(EdgeDragEvaluatorTestExec tst_EdgeDragEvaluator.cpp)
21add_executable(EdgeDragEvaluatorTestExec tst_EdgeDragEvaluator.cpp)
tests/qmltests/Components/tst_DragHandle.cpp−2
@@ -113,9 +113,7 @@ QQuickView *tst_DragHandle::createView()
113{
113{
114 QQuickView *window = new QQuickView(0);
114 QQuickView *window = new QQuickView(0);
115 window->setResizeMode(QQuickView::SizeRootObjectToView);
115 window->setResizeMode(QQuickView::SizeRootObjectToView);
116− window->engine()->addImportPath(QLatin1String(UBUNTU_GESTURES_PLUGIN_DIR));
117 window->engine()->addImportPath(QLatin1String(TEST_DIR));
116 window->engine()->addImportPath(QLatin1String(TEST_DIR));
118− window->engine()->addImportPath(QStringLiteral(TESTS_UTILS_MODULES_DIR));
119
117
120 return window;
118 return window;
121}
119}
tests/qmltests/Components/tst_EdgeDragEvaluator.cpp−1
@@ -99,7 +99,6 @@ QQuickView *tst_EdgeDragEvaluator::createView()
99{
99{
100 QQuickView *window = new QQuickView(0);
100 QQuickView *window = new QQuickView(0);
101 window->setResizeMode(QQuickView::SizeRootObjectToView);
101 window->setResizeMode(QQuickView::SizeRootObjectToView);
102− window->engine()->addImportPath(QLatin1String(UBUNTU_GESTURES_PLUGIN_DIR));
103 window->engine()->addImportPath(QLatin1String(TEST_DIR));
102 window->engine()->addImportPath(QLatin1String(TEST_DIR));
104
103
105 return window;
104 return window;
tests/qmltests/Components/tst_PhysicalKeysMapper.qml+3−3
@@ -45,7 +45,7 @@ TestCase {
45 }
45 }
46
46
47 function init() {
47 function init() {
48− Powerd.status = Powerd.On;
48+ Powerd.setStatus(Powerd.On, Powerd.Unknown);
49 loader.active = true;
49 loader.active = true;
50 tryCompare(loader.status == Loader.Ready);
50 tryCompare(loader.status == Loader.Ready);
51 }
51 }
@@ -64,14 +64,14 @@ TestCase {
64 }
64 }
65
65
66 function test_powerKeyLongPressed(data) {
66 function test_powerKeyLongPressed(data) {
67− Powerd.status = data.status;
67+ Powerd.setStatus(data.status, Powerd.Unknown);
68 physicalKeysMapper.powerKeyLongPressTime = 500;
68 physicalKeysMapper.powerKeyLongPressTime = 500;
69
69
70 physicalKeysMapper.onKeyPressed({ key: Qt.Key_PowerDown, isAutoRepeat: false });
70 physicalKeysMapper.onKeyPressed({ key: Qt.Key_PowerDown, isAutoRepeat: false });
71
71
72 // After the first key press the screen is always on
72 // After the first key press the screen is always on
73 // and the rest of keypresses are auto repeat
73 // and the rest of keypresses are auto repeat
74− Powerd.status = Powerd.On;
74+ Powerd.setStatus(Powerd.On, Powerd.Unknown);
75
75
76 for (var i = 0; i < 3; ++i) {
76 for (var i = 0; i < 3; ++i) {
77 wait(10);
77 wait(10);
tests/qmltests/Dash/Previews/tst_PreviewExpandable.qml+91−2
@@ -120,13 +120,26 @@ Rectangle {
120 "widgets": widgetsModel
120 "widgets": widgetsModel
121 }
121 }
122
122
123+ property var widgetData1: {
124+ "title": "Title here1",
125+ "collapsed-widgets": 2,
126+ "widgets": widgetsModel,
127+ "expanded": true
128+ }
129+
130+ property var widgetData2: {
131+ "title": "Title here2",
132+ "collapsed-widgets": 2,
133+ "widgets": widgetsModel,
134+ "expanded": false
135+ }
136+
123 property var allWidgetsData: {
137 property var allWidgetsData: {
124 "title": "Title here",
138 "title": "Title here",
125 "collapsed-widgets": 0,
139 "collapsed-widgets": 0,
126 "widgets": allWidgetsModel
140 "widgets": allWidgetsModel
127 }
141 }
128
142
129−
130 Component.onCompleted: {
143 Component.onCompleted: {
131 widgetsModel.append({"type": "text", "widgetId": "text1", "properties": { "text": longText }});
144 widgetsModel.append({"type": "text", "widgetId": "text1", "properties": { "text": longText }});
132 widgetsModel.append({"type": "table", "widgetId": "table1", "properties": tableData });
145 widgetsModel.append({"type": "table", "widgetId": "table1", "properties": tableData });
@@ -160,8 +173,22 @@ Rectangle {
160 }
173 }
161
174
162 PreviewWidgetFactory {
175 PreviewWidgetFactory {
163− id: previewWidgetFactory
176+ id: previewExpandable1
164 anchors { left: parent.left; right: parent.right; top: previewExpandable.bottom }
177 anchors { left: parent.left; right: parent.right; top: previewExpandable.bottom }
178+ widgetType: "expandable"
179+ widgetData: root.widgetData1
180+ }
181+
182+ PreviewWidgetFactory {
183+ id: previewExpandable2
184+ anchors { left: parent.left; right: parent.right; top: previewExpandable1.bottom }
185+ widgetType: "expandable"
186+ widgetData: root.widgetData2
187+ }
188+
189+ PreviewWidgetFactory {
190+ id: previewWidgetFactory
191+ anchors { left: parent.left; right: parent.right; top: previewExpandable2.bottom }
165 opacity: 0
192 opacity: 0
166 }
193 }
167
194
@@ -185,6 +212,8 @@ Rectangle {
185 }
212 }
186
213
187 function init() {
214 function init() {
215+ previewExpandable.widgetType = "";
216+ previewExpandable.widgetType = "expandable";
188 previewExpandable.widgetData = widgetData;
217 previewExpandable.widgetData = widgetData;
189 checkInitialState();
218 checkInitialState();
190 }
219 }
@@ -210,6 +239,66 @@ Rectangle {
210 checkInitialState();
239 checkInitialState();
211 }
240 }
212
241
242+ function test_expand_collapse_when_assigned() {
243+ previewExpandable.widgetData = widgetData1;
244+
245+ var repeater = findChild(previewExpandable, "repeater")
246+ compare(repeater.count, 4)
247+
248+ compare (repeater.itemAt(0).visible, true);
249+ compare (repeater.itemAt(1).visible, true);
250+ compare (repeater.itemAt(2).visible, true);
251+ compare (repeater.itemAt(3).visible, true);
252+ compare (repeater.itemAt(0).expanded, true);
253+ compare (repeater.itemAt(1).expanded, true);
254+ compare (repeater.itemAt(2).expanded, true);
255+ compare (repeater.itemAt(3).expanded, true);
256+ }
257+
258+ function test_collapsed_when_assigned() {
259+ previewExpandable.widgetData = widgetData2;
260+
261+ var repeater = findChild(previewExpandable, "repeater")
262+ compare(repeater.count, 4)
263+
264+ compare (repeater.itemAt(0).visible, true);
265+ compare (repeater.itemAt(1).visible, true);
266+ compare (repeater.itemAt(2).visible, false);
267+ compare (repeater.itemAt(3).visible, false);
268+ compare (repeater.itemAt(0).expanded, false);
269+ compare (repeater.itemAt(1).expanded, false);
270+ compare (repeater.itemAt(2).expanded, false);
271+ compare (repeater.itemAt(3).expanded, false);
272+ }
273+
274+ function test_expand_when_initialized() {
275+ var repeater = findChild(previewExpandable1, "repeater")
276+ compare(repeater.count, 4)
277+
278+ compare (repeater.itemAt(0).visible, true);
279+ compare (repeater.itemAt(1).visible, true);
280+ compare (repeater.itemAt(2).visible, true);
281+ compare (repeater.itemAt(3).visible, true);
282+ compare (repeater.itemAt(0).expanded, true);
283+ compare (repeater.itemAt(1).expanded, true);
284+ compare (repeater.itemAt(2).expanded, true);
285+ compare (repeater.itemAt(3).expanded, true);
286+ }
287+
288+ function test_collapse_when_initialized() {
289+ var repeater = findChild(previewExpandable2, "repeater")
290+ compare(repeater.count, 4)
291+
292+ compare (repeater.itemAt(0).visible, true);
293+ compare (repeater.itemAt(1).visible, true);
294+ compare (repeater.itemAt(2).visible, false);
295+ compare (repeater.itemAt(3).visible, false);
296+ compare (repeater.itemAt(0).expanded, false);
297+ compare (repeater.itemAt(1).expanded, false);
298+ compare (repeater.itemAt(2).expanded, false);
299+ compare (repeater.itemAt(3).expanded, false);
300+ }
301+
213 function test_all_widgets_height() {
302 function test_all_widgets_height() {
214 previewExpandable.widgetData = allWidgetsData;
303 previewExpandable.widgetData = allWidgetsData;
215
304
tests/qmltests/Dash/tst_Card.qml+2−2
@@ -473,14 +473,14 @@ Rectangle {
473
473
474 card.cardData["mascot"] = "somethingbroken2";
474 card.cardData["mascot"] = "somethingbroken2";
475 card.cardDataChanged();
475 card.cardDataChanged();
476− compare(mascotImage.image.status, Image.Error);
476+ compare(mascotImage.status, Image.Error);
477
477
478 cardTool.components["mascot"] = {"fallback": Qt.resolvedUrl("artwork/emblem.png")};
478 cardTool.components["mascot"] = {"fallback": Qt.resolvedUrl("artwork/emblem.png")};
479 cardTool.componentsChanged();
479 cardTool.componentsChanged();
480 card.cardData["mascot"] = "somethingbroken2";
480 card.cardData["mascot"] = "somethingbroken2";
481 card.cardDataChanged();
481 card.cardDataChanged();
482 waitForRendering(card);
482 waitForRendering(card);
483− tryCompare(mascotImage.image, "status", Image.Ready);
483+ tryCompare(mascotImage, "status", Image.Ready);
484 }
484 }
485
485
486 function test_font_weights_data() {
486 function test_font_weights_data() {
tests/qmltests/Greeter/tst_Infographics.qml+4−3
@@ -74,15 +74,16 @@ Item {
74
74
75 function test_set_username_data() {
75 function test_set_username_data() {
76 return [
76 return [
77− { username: "has-password", label: "<b>19</b> minutes talk time" },
77+ { username: "has-password", label: "<b>19</b> minutes talk time", visible: true },
78− { username: "two-factor", label: "No data" },
78+ { username: "two-factor", label: "", visible: true },
79− { username: "", label: "No data" },
79+ { username: "", label: "", visible: false },
80 ]
80 ]
81 }
81 }
82
82
83 function test_set_username(data) {
83 function test_set_username(data) {
84 infographicModel.username = data.username
84 infographicModel.username = data.username
85 tryCompare(label, "text", data.label)
85 tryCompare(label, "text", data.label)
86+ compare(infographic.visible, data.visible);
86 }
87 }
87 }
88 }
88
89
tests/qmltests/Notifications/tst_Notifications.qml+61−8
@@ -12,16 +12,15 @@
12 *
12 *
13 * You should have received a copy of the GNU Lesser General Public License
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/>.
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Mirco Mueller <mirco.mueller@canonical.com>
18 */
15 */
19
16
20−import QtQuick 2.0
17+import QtQuick 2.4
18+import QtQuick.Layouts 1.1
21import QtTest 1.0
19import QtTest 1.0
22import ".."
20import ".."
23import "../../../qml/Notifications"
21import "../../../qml/Notifications"
22+import "../../../qml/Components/UnityInputInfo"
24−import Ubuntu.Components 0.1
23+import Ubuntu.Components 1.2
25import Unity.Test 0.1
24import Unity.Test 0.1
26import Unity.Notifications 1.0
25import Unity.Notifications 1.0
27import QtMultimedia 5.0
26import QtMultimedia 5.0
@@ -77,7 +76,7 @@ Item {
77 "type": Notification.Ephemeral,
76 "type": Notification.Ephemeral,
78 "hints": {},
77 "hints": {},
79 "summary": "Cole Raby",
78 "summary": "Cole Raby",
80− "body": "I did not expect it to be that late.",
79+ "body": "I did not expect it to be <b>that</b> late.",
81 "icon": "../graphics/avatars/amanda.png",
80 "icon": "../graphics/avatars/amanda.png",
82 "secondaryIcon": "../graphics/applicationIcons/facebook.png",
81 "secondaryIcon": "../graphics/applicationIcons/facebook.png",
83 "rawActions": ["reply_id", "Dummy"]})
82 "rawActions": ["reply_id", "Dummy"]})
@@ -91,7 +90,7 @@ Item {
91 "type": Notification.Ephemeral,
90 "type": Notification.Ephemeral,
92 "hints": {"x-canonical-non-shaped-icon": "true"},
91 "hints": {"x-canonical-non-shaped-icon": "true"},
93 "summary": "Contacts",
92 "summary": "Contacts",
94− "body": "Synchronised contacts-database with cloud-storage.",
93+ "body": "Synchronised contacts-database &amp; cloud-storage.",
95 "icon": "../graphics/applicationIcons/contacts-app.png",
94 "icon": "../graphics/applicationIcons/contacts-app.png",
96 "secondaryIcon": "",
95 "secondaryIcon": "",
97 "rawActions": ["reply_id", "Dummy"]})
96 "rawActions": ["reply_id", "Dummy"]})
@@ -189,6 +188,7 @@ Item {
189
188
190 anchors.fill: parent
189 anchors.fill: parent
191 model: mockModel
190 model: mockModel
191+ hasMouse: UnityInputInfo.mice > 0 // for testing, we add/remove only a mock mouse
192 }
192 }
193 }
193 }
194
194
@@ -218,7 +218,7 @@ Item {
218
218
219 Button {
219 Button {
220 width: parent.width
220 width: parent.width
221− text: "add an non-shaped-icon-summary-body"
221+ text: "add a non-shaped-icon-summary-body"
222 onClicked: rootRow.addEphemeralNonShapedIconNotification()
222 onClicked: rootRow.addEphemeralNonShapedIconNotification()
223 }
223 }
224
224
@@ -257,6 +257,24 @@ Item {
257 text: "clear model"
257 text: "clear model"
258 onClicked: rootRow.clearNotifications()
258 onClicked: rootRow.clearNotifications()
259 }
259 }
260+
261+ RowLayout {
262+ Layout.fillWidth: true
263+ CheckBox {
264+ id: fakeMouseCB
265+ onClicked: {
266+ if (checked) {
267+ UnityInputInfo.inputInfo.addMockMouse();
268+ } else {
269+ UnityInputInfo.inputInfo.removeMockMouse();
270+ }
271+ }
272+ }
273+ Label {
274+ text: "With fake mouse"
275+ anchors.verticalCenter: parent.verticalCenter
276+ }
277+ }
260 }
278 }
261 }
279 }
262
280
@@ -675,6 +693,41 @@ Item {
675 tryCompare(mockModel, "count", before - 1)
693 tryCompare(mockModel, "count", before - 1)
676 }
694 }
677 }
695 }
696+
697+ function test_clickToClose_data() { // reuse the data
698+ UnityInputInfo.inputInfo.addMockMouse();
699+ return test_NotificationRenderer_data();
700+ }
701+
702+ function test_clickToClose(data) {
703+ // populate model with some mock notifications
704+ mockModel.append(data.n)
705+
706+ // make sure the view is properly updated before going on
707+ notifications.forceLayout();
708+ waitForRendering(notifications);
709+
710+ var notification = findChild(notifications, "notification" + (mockModel.count - 1))
711+ verify(!!notification, "notification wasn't found");
712+
713+ // click-to-dismiss check
714+ waitForRendering(notification);
715+ var before = mockModel.count;
716+ var canBeClosed = notification.canBeClosed;
717+ mouseClick(notification);
718+
719+ if (canBeClosed) {
720+ // closing the notification, the model count should be one less
721+ tryCompare(mockModel, "count", before - 1)
722+ } else {
723+ // not closing, model stays the same
724+ tryCompare(mockModel, "count", before)
725+ }
726+ }
727+
728+ function cleanupTestCase() {
729+ UnityInputInfo.inputInfo.removeMockMouse();
730+ }
678 }
731 }
679 }
732 }
680}
733}
tests/qmltests/Notifications/tst_SwipeToAct.qml+58−14
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2014 Canonical, Ltd.
2+ * Copyright (C) 2014, 2015 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
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
@@ -14,10 +14,12 @@
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
15 */
16
16
17−import QtQuick 2.0
17+import QtQuick 2.4
18+import QtQuick.Layouts 1.1
18import QtTest 1.0
19import QtTest 1.0
19import ".."
20import ".."
20import "../../../qml/Notifications"
21import "../../../qml/Notifications"
22+import "../../../qml/Components/UnityInputInfo"
21import Ubuntu.Components 0.1
23import Ubuntu.Components 0.1
22import Unity.Test 0.1
24import Unity.Test 0.1
23import Unity.Notifications 1.0
25import Unity.Notifications 1.0
@@ -74,7 +76,10 @@ Item {
74 icon: "../graphics/avatars/amanda.png",
76 icon: "../graphics/avatars/amanda.png",
75 secondaryIcon: "incoming-call",
77 secondaryIcon: "incoming-call",
76 actions: [{ id: "ok_id", label: "Ok"},
78 actions: [{ id: "ok_id", label: "Ok"},
77− { id: "cancel_id", label: "Cancel"}]
79+ { id: "cancel_id", label: "Cancel"},
80+ { id: "foo_id", label: "Foo"},
81+ { id: "bar_id", label: "Bar"}
82+ ]
78 }
83 }
79
84
80 mockModel.append(n)
85 mockModel.append(n)
@@ -97,7 +102,6 @@ Item {
97
102
98 MouseArea{
103 MouseArea{
99 id: clickThroughCatcher
104 id: clickThroughCatcher
100−
101 anchors.fill: parent
105 anchors.fill: parent
102 }
106 }
103
107
@@ -108,6 +112,7 @@ Item {
108
112
109 anchors.fill: parent
113 anchors.fill: parent
110 model: mockModel
114 model: mockModel
115+ hasMouse: UnityInputInfo.mice > 0 // for testing, we add/remove only a mock mouse
111 }
116 }
112 }
117 }
113
118
@@ -140,6 +145,24 @@ Item {
140 text: "clear model"
145 text: "clear model"
141 onClicked: rootRow.clearNotifications()
146 onClicked: rootRow.clearNotifications()
142 }
147 }
148+
149+ RowLayout {
150+ Layout.fillWidth: true
151+ CheckBox {
152+ id: fakeMouseCB
153+ onClicked: {
154+ if (checked) {
155+ UnityInputInfo.inputInfo.addMockMouse();
156+ } else {
157+ UnityInputInfo.inputInfo.removeMockMouse();
158+ }
159+ }
160+ }
161+ Label {
162+ text: "With fake mouse"
163+ anchors.verticalCenter: parent.verticalCenter
164+ }
165+ }
143 }
166 }
144 }
167 }
145
168
@@ -258,21 +281,42 @@ Item {
258
281
259 if(data.buttonRowVisible) {
282 if(data.buttonRowVisible) {
260 var swipeButton = findChild(buttonRow, "notify_swipe_button")
283 var swipeButton = findChild(buttonRow, "notify_swipe_button")
284+
285+ if (!swipeButton.clickToAct) { // don't run if there's a real mouse
261− var slider = findChild(swipeButton, "slider")
286+ var slider = findChild(swipeButton, "slider")
262− var swipeMouseArea = findChild(swipeButton, "swipeMouseArea")
287+ var swipeMouseArea = findChild(swipeButton, "swipeMouseArea")
263− var x = swipeMouseArea.width / 2
288+ var x = swipeMouseArea.width / 2
264− var y = swipeMouseArea.height / 2
289+ var y = swipeMouseArea.height / 2
290+
291+ if(data.checkSwipeToActAccept) {
292+ tryCompareFunction(function() { mouseDrag(slider, x, y, (swipeMouseArea.width / 2) - slider.width, 0); return actionSpy.signalArguments.length > 0; }, true);
293+ compare(actionSpy.signalArguments[0][0], data.actions.data(0, ActionModel.RoleActionId), "got wrong id for positive action");
294+ actionSpy.clear();
295+ }
296+ if(data.checkSwipeToActReject) {
297+ tryCompareFunction(function() { mouseDrag(slider, x, y, -(swipeMouseArea.width / 2), 0); return actionSpy.signalArguments.length > 0; }, true);
298+ compare(actionSpy.signalArguments[0][0], data.actions.data(1, ActionModel.RoleActionId), "got wrong id for negative action");
299+ actionSpy.clear();
300+ }
301+ }
302+
303+ // add a mock mouse, test clicking the left/right buttons
304+ UnityInputInfo.inputInfo.addMockMouse();
305+ var leftButton = findChild(swipeButton, "leftButton");
306+ var rightButton = findChild(swipeButton, "rightButton");
265
307
266 if(data.checkSwipeToActAccept) {
308 if(data.checkSwipeToActAccept) {
267− tryCompareFunction(function() { mouseDrag(slider, x, y, (swipeMouseArea.width / 2) - slider.width, 0); return actionSpy.signalArguments.length > 0; }, true);
309+ mouseClick(rightButton);
268− compare(actionSpy.signalArguments[0][0], data.actions.data(0, ActionModel.RoleActionId), "got wrong id for positive action")
310+ compare(actionSpy.signalArguments[0][0], data.actions.data(0, ActionModel.RoleActionId), "got wrong id for positive action");
269− actionSpy.clear()
311+ actionSpy.clear();
270 }
312 }
313+
271 if(data.checkSwipeToActReject) {
314 if(data.checkSwipeToActReject) {
272− tryCompareFunction(function() { mouseDrag(slider, x, y, -(swipeMouseArea.width / 2), 0); return actionSpy.signalArguments.length > 0; }, true);
315+ mouseClick(leftButton);
273− compare(actionSpy.signalArguments[0][0], data.actions.data(1, ActionModel.RoleActionId), "got wrong id for negative action")
316+ compare(actionSpy.signalArguments[0][0], data.actions.data(1, ActionModel.RoleActionId), "got wrong id for negative action");
274− actionSpy.clear()
317+ actionSpy.clear();
275 }
318 }
319+ UnityInputInfo.inputInfo.removeMockMouse();
276 }
320 }
277 }
321 }
278 }
322 }
tests/qmltests/Panel/Indicators/tst_IndicatorsLight.qml+8−5
@@ -58,7 +58,7 @@ Item {
58
58
59 Component.onCompleted: {
59 Component.onCompleted: {
60 ActionData.data = newMessage;
60 ActionData.data = newMessage;
61− Powerd.status = Powerd.On
61+ Powerd.setStatus(Powerd.On, Powerd.Unknown);
62 }
62 }
63
63
64 RowLayout {
64 RowLayout {
@@ -91,8 +91,11 @@ Item {
91 Layout.fillWidth: true
91 Layout.fillWidth: true
92 text: Powerd.status === Powerd.On ? "Power Off" : "Power On"
92 text: Powerd.status === Powerd.On ? "Power Off" : "Power On"
93 onClicked: {
93 onClicked: {
94− if (Powerd.status === Powerd.On) Powerd.status = Powerd.Off;
94+ if (Powerd.status === Powerd.On) {
95+ Powerd.setStatus(Powerd.Off, Powerd.Unknown);
96+ } else {
95− else Powerd.status = Powerd.On;
97+ Powerd.setStatus(Powerd.On, Powerd.Unknown);
98+ }
96 }
99 }
97 }
100 }
98 }
101 }
@@ -107,7 +110,7 @@ Item {
107 ActionData.data = noNewMessage;
110 ActionData.data = noNewMessage;
108 loader.sourceComponent = undefined;
111 loader.sourceComponent = undefined;
109 loader.sourceComponent = light;
112 loader.sourceComponent = light;
110− Powerd.status = Powerd.On
113+ Powerd.setStatus(Powerd.On, Powerd.Unknown);
111 }
114 }
112
115
113 function test_LightsStatus_data() {
116 function test_LightsStatus_data() {
@@ -120,7 +123,7 @@ Item {
120 }
123 }
121
124
122 function test_LightsStatus(data) {
125 function test_LightsStatus(data) {
123− Powerd.status = data.powerd;
126+ Powerd.setStatus(data.powerd, Powerd.Unknown);
124 ActionData.data = data.actionData;
127 ActionData.data = data.actionData;
125
128
126 compare(Lights.state, data.expected, "Light does not match expected value");
129 compare(Lights.state, data.expected, "Light does not match expected value");
tests/qmltests/Stages/tst_DesktopStage.qml+10−7
@@ -61,7 +61,6 @@ Item {
61 Component.onDestruction: {
61 Component.onDestruction: {
62 desktopStageLoader.itemDestroyed = true;
62 desktopStageLoader.itemDestroyed = true;
63 }
63 }
64− focus: true
65 }
64 }
66 }
65 }
67 }
66 }
@@ -142,8 +141,8 @@ Item {
142
141
143 function test_appFocusSwitch_data() {
142 function test_appFocusSwitch_data() {
144 return [
143 return [
145− {tag: "dash", apps: [ "unity8-dash", "dialer-app", "camera-app" ], focusfrom: 0, focusTo: 1 },
144+ {tag: "dash to dialer", apps: [ "unity8-dash", "dialer-app", "camera-app" ], focusfrom: 0, focusTo: 1 },
146− {tag: "dash", apps: [ "unity8-dash", "dialer-app", "camera-app" ], focusfrom: 1, focusTo: 0 },
145+ {tag: "dialer to dash", apps: [ "unity8-dash", "dialer-app", "camera-app" ], focusfrom: 1, focusTo: 0 },
147 ]
146 ]
148 }
147 }
149
148
@@ -162,8 +161,8 @@ Item {
162
161
163 function test_tappingOnWindowChangesFocusedApp_data() {
162 function test_tappingOnWindowChangesFocusedApp_data() {
164 return [
163 return [
165− {tag: "dash", apps: [ "unity8-dash", "dialer-app", "camera-app" ], focusfrom: 0, focusTo: 1 },
164+ {tag: "dash to dialer", apps: [ "unity8-dash", "dialer-app", "camera-app" ], focusfrom: 0, focusTo: 1 },
166− {tag: "dash", apps: [ "unity8-dash", "dialer-app", "camera-app" ], focusfrom: 1, focusTo: 0 },
165+ {tag: "dialer to dash", apps: [ "unity8-dash", "dialer-app", "camera-app" ], focusfrom: 1, focusTo: 0 },
167 ]
166 ]
168 }
167 }
169
168
@@ -172,16 +171,20 @@ Item {
172 for (i = 0; i < data.apps.length; i++) {
171 for (i = 0; i < data.apps.length; i++) {
173 startApplication(data.apps[i]);
172 startApplication(data.apps[i]);
174 }
173 }
174+ var fromAppId = data.apps[data.focusfrom];
175+ var toAppId = data.apps[data.focusTo]
175
176
176− var fromAppWindow = findChild(desktopStage, "appWindow_" + data.apps[data.focusfrom]);
177+ var fromAppWindow = findChild(desktopStage, "appWindow_" + fromAppId);
177 verify(fromAppWindow);
178 verify(fromAppWindow);
178 tap(fromAppWindow);
179 tap(fromAppWindow);
179 compare(fromAppWindow.application.session.surface.activeFocus, true);
180 compare(fromAppWindow.application.session.surface.activeFocus, true);
181+ compare(ApplicationManager.focusedApplicationId, fromAppId);
180
182
181− var toAppWindow = findChild(desktopStage, "appWindow_" + data.apps[data.focusTo]);
183+ var toAppWindow = findChild(desktopStage, "appWindow_" + toAppId);
182 verify(toAppWindow);
184 verify(toAppWindow);
183 tap(toAppWindow);
185 tap(toAppWindow);
184 compare(toAppWindow.application.session.surface.activeFocus, true);
186 compare(toAppWindow.application.session.surface.activeFocus, true);
187+ compare(ApplicationManager.focusedApplicationId, toAppId);
185 }
188 }
186
189
187 function test_tappingOnDecorationFocusesApplication_data() {
190 function test_tappingOnDecorationFocusesApplication_data() {
tests/qmltests/Stages/tst_TabletStage.qml+1−1
@@ -167,7 +167,7 @@ Rectangle {
167 var lastValue = undefined;
167 var lastValue = undefined;
168 do {
168 do {
169 lastValue = targetAppDelegate.animatedProgress;
169 lastValue = targetAppDelegate.animatedProgress;
170− wait(30);
170+ wait(300);
171 } while (lastValue != targetAppDelegate.animatedProgress);
171 } while (lastValue != targetAppDelegate.animatedProgress);
172 }
172 }
173
173
tests/qmltests/tst_OrientedShell.qml+108−3
@@ -296,9 +296,9 @@ Rectangle {
296 activeFocusOnPress: false
296 activeFocusOnPress: false
297 onClicked: {
297 onClicked: {
298 if (Powerd.status === Powerd.On) {
298 if (Powerd.status === Powerd.On) {
299− Powerd.status = Powerd.Off;
299+ Powerd.setStatus(Powerd.Off, Powerd.Unknown);
300 } else {
300 } else {
301− Powerd.status = Powerd.On;
301+ Powerd.setStatus(Powerd.On, Powerd.Unknown);
302 }
302 }
303 }
303 }
304 }
304 }
@@ -996,6 +996,60 @@ Rectangle {
996 tryCompare(shell, "transformRotationAngle", root.primaryOrientationAngle);
996 tryCompare(shell, "transformRotationAngle", root.primaryOrientationAngle);
997 }
997 }
998
998
999+ /*
1000+ Regression test for https://bugs.launchpad.net/ubuntu/+source/unity8/+bug/1476757
1001+
1002+ Steps:
1003+ 1- have a portrait-only app in foreground (eg unity8-dash)
1004+ 2- launch or switch to some other application
1005+ 3- right-edge swipe to show the apps spread
1006+ 4- swipe up to close the current app (the one from step 2)
1007+ 5- lock the phone (press the power button)
1008+ 6- unlock the phone (press power button again and swipe greeter away)
1009+ * app from step 1 should be on foreground and focused
1010+ 7- rotate phone
1011+
1012+ Expected outcome:
1013+ - The portrait-only application stays put
1014+
1015+ Actual outcome:
1016+ - The portrait-only application rotates freely
1017+ */
1018+ function test_lockPhoneAfterClosingAppInSpreadThenUnlockAndRotate() {
1019+ loadShell("mako");
1020+
1021+ var gmailApp = ApplicationManager.startApplication("gmail-webapp");
1022+ verify(gmailApp);
1023+
1024+ waitUntilAppSurfaceShowsUp("gmail-webapp");
1025+
1026+ performEdgeSwipeToShowAppSpread();
1027+
1028+ swipeToCloseCurrentAppInSpread();
1029+
1030+ // press the power key once
1031+ Powerd.setStatus(Powerd.Off, Powerd.Unknown);
1032+ var greeter = findChild(shell, "greeter");
1033+ tryCompare(greeter, "fullyShown", true);
1034+
1035+ // and a second time to turn the display back on
1036+ Powerd.setStatus(Powerd.On, Powerd.Unknown);
1037+
1038+ swipeAwayGreeter();
1039+
1040+ verify(isAppSurfaceFocused("unity8-dash"))
1041+
1042+ signalSpy.clear();
1043+ signalSpy.target = shell;
1044+ signalSpy.signalName = "widthChanged";
1045+ verify(signalSpy.valid);
1046+
1047+ rotateTo(90);
1048+
1049+ // shell shouldn't have change its orientation at any moment
1050+ compare(signalSpy.count, 0);
1051+ }
1052+
999 // angle - rotation angle in degrees clockwise, relative to the primary orientation.
1053 // angle - rotation angle in degrees clockwise, relative to the primary orientation.
1000 function rotateTo(angle) {
1054 function rotateTo(angle) {
1001 switch (angle) {
1055 switch (angle) {
@@ -1016,6 +1070,12 @@ Rectangle {
1016 }
1070 }
1017
1071
1018 var rotationStates = findInvisibleChild(orientedShell, "rotationStates");
1072 var rotationStates = findInvisibleChild(orientedShell, "rotationStates");
1073+ verify(rotationStates.d);
1074+ verify(rotationStates.d.stateUpdateTimer);
1075+
1076+ // wait for the delayed state update to take place, if any
1077+ tryCompare(rotationStates.d.stateUpdateTimer, "running", false);
1078+
1019 waitUntilTransitionsEnd(rotationStates);
1079 waitUntilTransitionsEnd(rotationStates);
1020 }
1080 }
1021
1081
@@ -1239,7 +1299,6 @@ Rectangle {
1239 var childs = new Array(0);
1299 var childs = new Array(0);
1240 childs.push(obj)
1300 childs.push(obj)
1241 while (childs.length > 0) {
1301 while (childs.length > 0) {
1242− console.log("Checking " + childs[0].objectName);
1243 if (childs[0].objectName === "surfaceItem"
1302 if (childs[0].objectName === "surfaceItem"
1244 && childs[0].surface !== undefined
1303 && childs[0].surface !== undefined
1245 && childs[0].surface === surface) {
1304 && childs[0].surface === surface) {
@@ -1252,5 +1311,51 @@ Rectangle {
1252 }
1311 }
1253 return null;
1312 return null;
1254 }
1313 }
1314+
1315+ function swipeToCloseCurrentAppInSpread() {
1316+ var spreadView = findChild(shell, "spreadView");
1317+ verify(spreadView);
1318+
1319+ var delegateToClose = findChild(spreadView, "appDelegate0");
1320+ verify(delegateToClose);
1321+
1322+ var appIdToClose = ApplicationManager.get(0).appId;;
1323+ var appCountBefore = ApplicationManager.count;
1324+
1325+ // ensure the current app is widely visible by swiping to the right,
1326+ // which will move the app windows accordingly
1327+ touchFlick(shell,
1328+ shell.width * 0.25, shell.width / 2,
1329+ shell.width, shell.width / 2);
1330+
1331+ tryCompare(spreadView, "flicking", false);
1332+ tryCompare(spreadView, "moving", false);
1333+
1334+ // Swipe up close to its left edge, as it is the only area of it guaranteed to be exposed
1335+ // in the spread. Eg: its center could be covered by some other delegate.
1336+ touchFlick(delegateToClose,
1337+ 1, delegateToClose.height / 2,
1338+ 1, - delegateToClose.height / 4);
1339+
1340+ // ensure it got closed
1341+ tryCompare(ApplicationManager, "count", appCountBefore - 1);
1342+ compare(ApplicationManager.findApplication(appIdToClose), null);
1343+ }
1344+
1345+ function isAppSurfaceFocused(appId) {
1346+ var appWindow = findChild(shell, "appWindow_" + appId);
1347+ verify(appWindow);
1348+
1349+ var app = ApplicationManager.findApplication(appId);
1350+ verify(app);
1351+
1352+ var surface = app.session.surface;
1353+ verify(surface);
1354+
1355+ var surfaceItem = findSurfaceItem(appWindow, surface);
1356+ verify(surfaceItem);
1357+
1358+ return surfaceItem.activeFocus;
1359+ }
1255 }
1360 }
1256}
1361}
tests/qmltests/tst_Shell.qml+149−47
@@ -322,8 +322,9 @@ Rectangle {
322
322
323 function loadDesktopShellWithApps() {
323 function loadDesktopShellWithApps() {
324 loadShell("desktop");
324 loadShell("desktop");
325+ waitForRendering(shell)
325 shell.usageScenario = "desktop"
326 shell.usageScenario = "desktop"
326− waitForRendering(root)
327+ waitForRendering(shell)
327 var app1 = ApplicationManager.startApplication("dialer-app")
328 var app1 = ApplicationManager.startApplication("dialer-app")
328 var app2 = ApplicationManager.startApplication("webbrowser-app")
329 var app2 = ApplicationManager.startApplication("webbrowser-app")
329 var app3 = ApplicationManager.startApplication("camera-app")
330 var app3 = ApplicationManager.startApplication("camera-app")
@@ -590,19 +591,19 @@ Rectangle {
590
591
591 // Display off while call is active...
592 // Display off while call is active...
592 callManager.foregroundCall = phoneCall;
593 callManager.foregroundCall = phoneCall;
593− Powerd.status = Powerd.Off;
594+ Powerd.setStatus(Powerd.Off, Powerd.Unknown);
594 tryCompare(greeter, "shown", false);
595 tryCompare(greeter, "shown", false);
595
596
596 // Now try again after ending call
597 // Now try again after ending call
597 callManager.foregroundCall = null;
598 callManager.foregroundCall = null;
598− Powerd.status = Powerd.On;
599+ Powerd.setStatus(Powerd.On, Powerd.Unknown);
599− Powerd.status = Powerd.Off;
600+ Powerd.setStatus(Powerd.Off, Powerd.Unknown);
600 tryCompare(greeter, "fullyShown", true);
601 tryCompare(greeter, "fullyShown", true);
601
602
602 compare(mainApp.requestedState, ApplicationInfoInterface.RequestedSuspended);
603 compare(mainApp.requestedState, ApplicationInfoInterface.RequestedSuspended);
603
604
604 // And wake up
605 // And wake up
605− Powerd.status = Powerd.On;
606+ Powerd.setStatus(Powerd.On, Powerd.Unknown);
606 tryCompare(greeter, "fullyShown", true);
607 tryCompare(greeter, "fullyShown", true);
607
608
608 // Swipe away greeter to focus app
609 // Swipe away greeter to focus app
@@ -795,6 +796,7 @@ Rectangle {
795 function test_launchedAppHasActiveFocus(data) {
796 function test_launchedAppHasActiveFocus(data) {
796 loadShell(data.formFactor);
797 loadShell(data.formFactor);
797 shell.usageScenario = data.usageScenario;
798 shell.usageScenario = data.usageScenario;
799+ waitForGreeterToStabilize();
798 swipeAwayGreeter();
800 swipeAwayGreeter();
799
801
800 var webApp = ApplicationManager.startApplication("webbrowser-app");
802 var webApp = ApplicationManager.startApplication("webbrowser-app");
@@ -1104,6 +1106,19 @@ Rectangle {
1104 compare(tutorialLeft, null); // should be destroyed with tutorial
1106 compare(tutorialLeft, null); // should be destroyed with tutorial
1105 }
1107 }
1106
1108
1109+ function test_tutorialPausedDuringGreeter() {
1110+ loadShell("phone");
1111+
1112+ var tutorial = findChild(shell, "tutorial");
1113+
1114+ AccountsService.demoEdges = true;
1115+ tryCompare(tutorial, "running", true);
1116+ tryCompare(tutorial, "paused", true);
1117+
1118+ swipeAwayGreeter();
1119+ tryCompare(tutorial, "paused", false);
1120+ }
1121+
1107 function test_tapOnRightEdgeReachesApplicationSurface() {
1122 function test_tapOnRightEdgeReachesApplicationSurface() {
1108 loadShell("phone");
1123 loadShell("phone");
1109 swipeAwayGreeter();
1124 swipeAwayGreeter();
@@ -1393,17 +1408,18 @@ Rectangle {
1393 keyClick(Qt.Key_Tab, Qt.ControlModifier)
1408 keyClick(Qt.Key_Tab, Qt.ControlModifier)
1394 tryCompare(app2.session.surface, "activeFocus", true)
1409 tryCompare(app2.session.surface, "activeFocus", true)
1395
1410
1411+ var desktopSpread = findChild(shell, "spread")
1396
1412
1397− tryCompare(desktopStage, "state", "")
1413+ tryCompare(desktopSpread, "state", "")
1398
1414
1399 // Just press Alt, make sure the spread comes up
1415 // Just press Alt, make sure the spread comes up
1400 keyPress(Qt.Key_Control);
1416 keyPress(Qt.Key_Control);
1401 keyClick(Qt.Key_Tab);
1417 keyClick(Qt.Key_Tab);
1402− tryCompare(desktopStage, "state", "altTab")
1418+ tryCompare(desktopSpread, "state", "altTab")
1403
1419
1404 // Release control, check if spread disappears
1420 // Release control, check if spread disappears
1405 keyRelease(Qt.Key_Control)
1421 keyRelease(Qt.Key_Control)
1406− tryCompare(desktopStage, "state", "")
1422+ tryCompare(desktopSpread, "state", "")
1407
1423
1408 // Focus should have switched back now
1424 // Focus should have switched back now
1409 tryCompare(app3.session.surface, "activeFocus", true)
1425 tryCompare(app3.session.surface, "activeFocus", true)
@@ -1415,41 +1431,44 @@ Rectangle {
1415 var desktopStage = findChild(shell, "stage");
1431 var desktopStage = findChild(shell, "stage");
1416 verify(desktopStage !== null)
1432 verify(desktopStage !== null)
1417
1433
1434+ var desktopSpread = findChild(shell, "spread");
1435+ verify(desktopSpread !== null)
1436+
1418− var appContainer = findInvisibleChild(shell, "appContainer")
1437+ var spreadContainer = findInvisibleChild(shell, "spreadContainer")
1419− verify(appContainer !== null)
1438+ verify(spreadContainer !== null)
1420
1439
1421− var appRepeater = findInvisibleChild(shell, "appRepeater")
1440+ var spreadRepeater = findInvisibleChild(shell, "spreadRepeater")
1422− verify(appRepeater !== null)
1441+ verify(spreadRepeater !== null)
1423
1442
1424 // remember the focused appId
1443 // remember the focused appId
1425 var focused = ApplicationManager.get(ApplicationManager.findApplication(ApplicationManager.focusedApplicationId));
1444 var focused = ApplicationManager.get(ApplicationManager.findApplication(ApplicationManager.focusedApplicationId));
1426
1445
1427− tryCompare(desktopStage, "state", "")
1446+ tryCompare(desktopSpread, "state", "")
1428
1447
1429 // Just press Alt, make sure the spread comes up
1448 // Just press Alt, make sure the spread comes up
1430 keyPress(Qt.Key_Control);
1449 keyPress(Qt.Key_Control);
1431 keyClick(Qt.Key_Tab);
1450 keyClick(Qt.Key_Tab);
1432− tryCompare(desktopStage, "state", "altTab")
1451+ tryCompare(desktopSpread, "state", "altTab")
1433− tryCompare(appRepeater, "highlightedIndex", 1)
1452+ tryCompare(spreadRepeater, "highlightedIndex", 1)
1434 waitForRendering(shell)
1453 waitForRendering(shell)
1435
1454
1436 // Now press and hold Tab, make sure the highlight moves all the way but stops at the last one
1455 // Now press and hold Tab, make sure the highlight moves all the way but stops at the last one
1437 // We can't simulate a pressed key with keyPress() currently, so let's inject the events
1456 // We can't simulate a pressed key with keyPress() currently, so let's inject the events
1438 // at API level. Jump for 10 times, verify that it's still at the last one and didn't wrap around.
1457 // at API level. Jump for 10 times, verify that it's still at the last one and didn't wrap around.
1439 for (var i = 0; i < 10; i++) {
1458 for (var i = 0; i < 10; i++) {
1440− appContainer.selectNext(true); // true == isAutoRepeat
1459+ desktopSpread.selectNext(true); // true == isAutoRepeat
1441 wait(0); // Trigger the event loop to make sure all the things happen
1460 wait(0); // Trigger the event loop to make sure all the things happen
1442 }
1461 }
1443− tryCompare(appRepeater, "highlightedIndex", 6)
1462+ tryCompare(spreadRepeater, "highlightedIndex", 6)
1444
1463
1445 // Now release it once, and verify that it does wrap around with an additional Tab press
1464 // Now release it once, and verify that it does wrap around with an additional Tab press
1446 keyRelease(Qt.Key_Tab);
1465 keyRelease(Qt.Key_Tab);
1447 keyClick(Qt.Key_Tab);
1466 keyClick(Qt.Key_Tab);
1448− tryCompare(appRepeater, "highlightedIndex", 0)
1467+ tryCompare(spreadRepeater, "highlightedIndex", 0)
1449
1468
1450 // Release control, check if spread disappears
1469 // Release control, check if spread disappears
1451 keyRelease(Qt.Key_Control)
1470 keyRelease(Qt.Key_Control)
1452− tryCompare(desktopStage, "state", "")
1471+ tryCompare(desktopSpread, "state", "")
1453
1472
1454 // Make sure that after wrapping around once, we have the same one focused as at the beginning
1473 // Make sure that after wrapping around once, we have the same one focused as at the beginning
1455 tryCompare(focused.session.surface, "activeFocus", true)
1474 tryCompare(focused.session.surface, "activeFocus", true)
@@ -1458,30 +1477,30 @@ Rectangle {
1458 function test_altBackTabNavigation() {
1477 function test_altBackTabNavigation() {
1459 loadDesktopShellWithApps();
1478 loadDesktopShellWithApps();
1460
1479
1461− var appRepeater = findInvisibleChild(shell, "appRepeater");
1480+ var spreadRepeater = findInvisibleChild(shell, "spreadRepeater");
1462− verify(appRepeater !== null);
1481+ verify(spreadRepeater !== null);
1463
1482
1464 keyPress(Qt.Key_Control)
1483 keyPress(Qt.Key_Control)
1465 keyClick(Qt.Key_Tab);
1484 keyClick(Qt.Key_Tab);
1466− tryCompare(appRepeater, "highlightedIndex", 1);
1485+ tryCompare(spreadRepeater, "highlightedIndex", 1);
1467
1486
1468 keyClick(Qt.Key_Tab);
1487 keyClick(Qt.Key_Tab);
1469− tryCompare(appRepeater, "highlightedIndex", 2);
1488+ tryCompare(spreadRepeater, "highlightedIndex", 2);
1470
1489
1471 keyClick(Qt.Key_Tab);
1490 keyClick(Qt.Key_Tab);
1472− tryCompare(appRepeater, "highlightedIndex", 3);
1491+ tryCompare(spreadRepeater, "highlightedIndex", 3);
1473
1492
1474 keyClick(Qt.Key_Tab);
1493 keyClick(Qt.Key_Tab);
1475− tryCompare(appRepeater, "highlightedIndex", 4);
1494+ tryCompare(spreadRepeater, "highlightedIndex", 4);
1476
1495
1477 keyClick(Qt.Key_Backtab);
1496 keyClick(Qt.Key_Backtab);
1478− tryCompare(appRepeater, "highlightedIndex", 3);
1497+ tryCompare(spreadRepeater, "highlightedIndex", 3);
1479
1498
1480 keyClick(Qt.Key_Backtab);
1499 keyClick(Qt.Key_Backtab);
1481− tryCompare(appRepeater, "highlightedIndex", 2);
1500+ tryCompare(spreadRepeater, "highlightedIndex", 2);
1482
1501
1483 keyClick(Qt.Key_Backtab);
1502 keyClick(Qt.Key_Backtab);
1484− tryCompare(appRepeater, "highlightedIndex", 1);
1503+ tryCompare(spreadRepeater, "highlightedIndex", 1);
1485
1504
1486 keyRelease(Qt.Key_Control);
1505 keyRelease(Qt.Key_Control);
1487 }
1506 }
@@ -1489,20 +1508,20 @@ Rectangle {
1489 function test_highlightFollowsMouse() {
1508 function test_highlightFollowsMouse() {
1490 loadDesktopShellWithApps()
1509 loadDesktopShellWithApps()
1491
1510
1492− var appRepeater = findInvisibleChild(shell, "appRepeater");
1511+ var spreadRepeater = findInvisibleChild(shell, "spreadRepeater");
1493− verify(appRepeater !== null);
1512+ verify(spreadRepeater !== null);
1494
1513
1495 keyPress(Qt.Key_Control)
1514 keyPress(Qt.Key_Control)
1496 keyClick(Qt.Key_Tab);
1515 keyClick(Qt.Key_Tab);
1497
1516
1498− tryCompare(appRepeater, "highlightedIndex", 1);
1517+ tryCompare(spreadRepeater, "highlightedIndex", 1);
1499
1518
1500 var x = 0;
1519 var x = 0;
1501 var y = shell.height * .75;
1520 var y = shell.height * .75;
1502 mouseMove(shell, x, y)
1521 mouseMove(shell, x, y)
1503
1522
1504 for (var i = 0; i < 7; i++) {
1523 for (var i = 0; i < 7; i++) {
1505− while (appRepeater.highlightedIndex != i && x <= 4000) {
1524+ while (spreadRepeater.highlightedIndex != i && x <= 4000) {
1506 x+=10;
1525 x+=10;
1507 mouseMove(shell, x, y)
1526 mouseMove(shell, x, y)
1508 wait(0); // spin the loop so bindings get evaluated
1527 wait(0); // spin the loop so bindings get evaluated
@@ -1517,8 +1536,8 @@ Rectangle {
1517 function test_closeFromSpread() {
1536 function test_closeFromSpread() {
1518 loadDesktopShellWithApps()
1537 loadDesktopShellWithApps()
1519
1538
1520− var appRepeater = findInvisibleChild(shell, "appRepeater");
1539+ var spreadRepeater = findInvisibleChild(shell, "spreadRepeater");
1521− verify(appRepeater !== null);
1540+ verify(spreadRepeater !== null);
1522
1541
1523 keyPress(Qt.Key_Control)
1542 keyPress(Qt.Key_Control)
1524 keyClick(Qt.Key_Tab);
1543 keyClick(Qt.Key_Tab);
@@ -1526,14 +1545,14 @@ Rectangle {
1526 appRemovedSpy.clear();
1545 appRemovedSpy.clear();
1527
1546
1528 var closedAppId = ApplicationManager.get(2).appId;
1547 var closedAppId = ApplicationManager.get(2).appId;
1529− var appDelegate2 = appRepeater.itemAt(2);
1548+ var spreadDelegate2 = spreadRepeater.itemAt(2);
1530− var closeMouseArea = findChild(appDelegate2, "closeMouseArea");
1549+ var closeMouseArea = findChild(spreadDelegate2, "closeMouseArea");
1531
1550
1532 // Move the mosue over tile 2 and verify the close button becomes visible
1551 // Move the mosue over tile 2 and verify the close button becomes visible
1533 var x = 0;
1552 var x = 0;
1534 var y = shell.height * .5;
1553 var y = shell.height * .5;
1535 mouseMove(shell, x, y)
1554 mouseMove(shell, x, y)
1536− while (appRepeater.highlightedIndex !== 2 && x <= 4000) {
1555+ while (spreadRepeater.highlightedIndex !== 2 && x <= 4000) {
1537 x+=10;
1556 x+=10;
1538 mouseMove(shell, x, y)
1557 mouseMove(shell, x, y)
1539 wait(0); // spin the loop so bindings get evaluated
1558 wait(0); // spin the loop so bindings get evaluated
@@ -1560,32 +1579,35 @@ Rectangle {
1560 function test_selectFromSpreadWithMouse(data) {
1579 function test_selectFromSpreadWithMouse(data) {
1561 loadDesktopShellWithApps()
1580 loadDesktopShellWithApps()
1562
1581
1582+ var stage = findChild(shell, "stage");
1583+ var spread = findChild(stage, "spread");
1584+ waitForRendering(spread)
1585+
1563− var appRepeater = findInvisibleChild(shell, "appRepeater");
1586+ var spreadRepeater = findInvisibleChild(shell, "spreadRepeater");
1564− verify(appRepeater !== null);
1587+ verify(spreadRepeater !== null);
1565
1588
1566 keyPress(Qt.Key_Control)
1589 keyPress(Qt.Key_Control)
1567 keyClick(Qt.Key_Tab);
1590 keyClick(Qt.Key_Tab);
1568
1591
1569 var focusAppId = ApplicationManager.get(2).appId;
1592 var focusAppId = ApplicationManager.get(2).appId;
1570− var appDelegate2 = appRepeater.itemAt(2);
1593+ var spreadDelegate2 = spreadRepeater.itemAt(2);
1571− var decoratedWindow = findChild(appDelegate2, "decoratedWindow");
1594+ var clippedSpreadDelegate = findChild(spreadDelegate2, "clippedSpreadDelegate");
1572− var stage = findChild(shell, "stage");
1573
1595
1574− tryCompare(stage, "state", "altTab");
1596+ tryCompare(spread, "state", "altTab");
1575
1597
1576 // Move the mouse over tile 2 and verify the highlight becomes visible
1598 // Move the mouse over tile 2 and verify the highlight becomes visible
1577 var x = 0;
1599 var x = 0;
1578 var y = shell.height * (data.tileInfo ? .95 : 0.5)
1600 var y = shell.height * (data.tileInfo ? .95 : 0.5)
1579 mouseMove(shell, x, y)
1601 mouseMove(shell, x, y)
1580− while (appRepeater.highlightedIndex !== 2 && x <= 4000) {
1602+ while (spreadRepeater.highlightedIndex !== 2 && x <= 4000) {
1581 x+=10;
1603 x+=10;
1582 mouseMove(shell, x, y)
1604 mouseMove(shell, x, y)
1583 wait(0); // spin the loop so bindings get evaluated
1605 wait(0); // spin the loop so bindings get evaluated
1584 }
1606 }
1585− tryCompare(decoratedWindow, "highlightShown", true);
1607+ tryCompare(clippedSpreadDelegate, "highlightShown", true);
1586
1608
1587 // Click the tile
1609 // Click the tile
1588− mouseClick(decoratedWindow, decoratedWindow.width / 2, decoratedWindow.height / 2)
1610+ mouseClick(clippedSpreadDelegate, clippedSpreadDelegate.width / 2, clippedSpreadDelegate.height / 2)
1589
1611
1590 // Verify that we left the spread and app2 is the focused one now
1612 // Verify that we left the spread and app2 is the focused one now
1591 tryCompare(stage, "state", "");
1613 tryCompare(stage, "state", "");
@@ -1604,7 +1626,6 @@ Rectangle {
1604 keyClick(Qt.Key_Tab);
1626 keyClick(Qt.Key_Tab);
1605
1627
1606 var spreadFlickable = findChild(shell, "spreadFlickable")
1628 var spreadFlickable = findChild(shell, "spreadFlickable")
1607− print("have flickable", spreadFlickable, spreadFlickable.contentX)
1608
1629
1609 compare(spreadFlickable.contentX, 0);
1630 compare(spreadFlickable.contentX, 0);
1610
1631
@@ -1629,5 +1650,86 @@ Rectangle {
1629
1650
1630 keyRelease(Qt.Key_Control);
1651 keyRelease(Qt.Key_Control);
1631 }
1652 }
1653+
1654+ // This makes sure the hoverMouseArea is set to invisible AND disabled
1655+ // when not needed. Otherwise it'll eat mouse hover events for the rest of the shell/apps
1656+ function test_hoverMouseAreaDisabledAndInvisible() {
1657+ loadDesktopShellWithApps()
1658+
1659+ var hoverMouseArea = findChild(shell, "hoverMouseArea");
1660+ tryCompare(hoverMouseArea, "enabled", false)
1661+ tryCompare(hoverMouseArea, "visible", false)
1662+
1663+ keyPress(Qt.Key_Control)
1664+ keyClick(Qt.Key_Tab);
1665+
1666+ tryCompare(hoverMouseArea, "enabled", true)
1667+ tryCompare(hoverMouseArea, "visible", true)
1668+
1669+ keyRelease(Qt.Key_Control)
1670+
1671+ tryCompare(hoverMouseArea, "enabled", false)
1672+ tryCompare(hoverMouseArea, "visible", false)
1673+ }
1674+
1675+ function test_workspacePreviewsHighlightedApp() {
1676+ loadDesktopShellWithApps()
1677+
1678+ var targetZ = ApplicationManager.count + 1;
1679+
1680+ var spreadRepeater = findInvisibleChild(shell, "spreadRepeater");
1681+ verify(spreadRepeater !== null);
1682+
1683+ var appRepeater = findInvisibleChild(shell, "appRepeater");
1684+ verify(appRepeater !== null);
1685+
1686+ keyPress(Qt.Key_Control)
1687+ keyClick(Qt.Key_Tab);
1688+
1689+ tryCompare(spreadRepeater, "highlightedIndex", 1);
1690+ tryCompare(appRepeater.itemAt(1), "z", targetZ)
1691+
1692+ var x = 0;
1693+ var y = shell.height * .75;
1694+ mouseMove(shell, x, y)
1695+
1696+ for (var i = 0; i < 7; i++) {
1697+ while (spreadRepeater.highlightedIndex != i && x <= 4000) {
1698+ tryCompare(appRepeater.itemAt(spreadRepeater.highlightedIndex), "z", targetZ)
1699+ x+=10;
1700+ mouseMove(shell, x, y)
1701+ wait(0); // spin the loop so bindings get evaluated
1702+ }
1703+ }
1704+
1705+ verify(y < 4000);
1706+
1707+ keyRelease(Qt.Key_Control);
1708+ }
1709+
1710+ function test_focusAppFromLauncherExitsSpread() {
1711+ loadDesktopShellWithApps()
1712+
1713+ var desktopSpread = findChild(shell, "spread");
1714+ var launcher = findChild(shell, "launcher");
1715+ var bfb = findChild(launcher, "buttonShowDashHome");
1716+
1717+ keyPress(Qt.Key_Control)
1718+ keyClick(Qt.Key_Tab);
1719+
1720+
1721+ tryCompare(desktopSpread, "state", "altTab")
1722+
1723+ mouseMove(shell, 0, 0);
1724+ tryCompare(launcher, "state", "visibleTemporary")
1725+
1726+ mouseClick(bfb, bfb.width / 2, bfb.height / 2)
1727+ tryCompare(launcher, "state", "")
1728+ tryCompare(desktopSpread, "state", "")
1729+
1730+ tryCompare(ApplicationManager, "focusedApplicationId", "unity8-dash")
1731+
1732+ keyRelease(Qt.Key_Control);
1733+ }
1632 }
1734 }
1633}
1735}
tests/qmltests/tst_ShellWithPin.qml+2−2
@@ -501,13 +501,13 @@ Item {
501 var applicationsDisplayLoader = findChild(shell, "applicationsDisplayLoader")
501 var applicationsDisplayLoader = findChild(shell, "applicationsDisplayLoader")
502
502
503 // Put it to sleep
503 // Put it to sleep
504− Powerd.status = Powerd.Off;
504+ Powerd.setStatus(Powerd.Off, Powerd.Unknown);
505
505
506 // If locked, applicationsDisplayLoader.item.suspended should be true
506 // If locked, applicationsDisplayLoader.item.suspended should be true
507 tryCompare(applicationsDisplayLoader.item, "suspended", true);
507 tryCompare(applicationsDisplayLoader.item, "suspended", true);
508
508
509 // And wake up
509 // And wake up
510− Powerd.status = Powerd.On;
510+ Powerd.setStatus(Powerd.On, Powerd.Unknown);
511 tryCompare(greeter, "fullyShown", true);
511 tryCompare(greeter, "fullyShown", true);
512
512
513 // Swipe away greeter to focus app
513 // Swipe away greeter to focus app
tests/uqmlscene/CMakeLists.txt−1
@@ -1,6 +1,5 @@
1add_executable(uqmlscene
1add_executable(uqmlscene
2 ${shellapplication_MOC_SRCS}
2 ${shellapplication_MOC_SRCS}
3− ActiveFocusLogger.cpp
4 main.cpp
3 main.cpp
5 )
4 )
6
5
tests/uqmlscene/main.cpp−13
@@ -63,12 +63,6 @@
63#include <QtCore/QTranslator>
63#include <QtCore/QTranslator>
64#include <QtCore/QLibraryInfo>
64#include <QtCore/QLibraryInfo>
65
65
66−#define UQMLSCENE_DEBUG_ACTIVE_FOCUS 0
67−
68−#if UQMLSCENE_DEBUG_ACTIVE_FOCUS
69− #include "ActiveFocusLogger.h"
70−#endif
71−
72#ifdef QML_RUNTIME_TESTING
66#ifdef QML_RUNTIME_TESTING
73class RenderStatistics
67class RenderStatistics
74{
68{
@@ -393,10 +387,6 @@ int main(int argc, char ** argv)
393{
387{
394 Options options;
388 Options options;
395
389
396− #if UQMLSCENE_DEBUG_ACTIVE_FOCUS
397− ActiveFocusLogger activeFocusLogger;
398− #endif
399−
400 QStringList imports;
390 QStringList imports;
401 QList<QPair<QString, QString> > bundles;
391 QList<QPair<QString, QString> > bundles;
402 for (int i = 1; i < argc; ++i) {
392 for (int i = 1; i < argc; ++i) {
@@ -515,9 +505,6 @@ int main(int argc, char ** argv)
515 QQuickItem *contentItem = qobject_cast<QQuickItem *>(topLevel);
505 QQuickItem *contentItem = qobject_cast<QQuickItem *>(topLevel);
516 if (contentItem) {
506 if (contentItem) {
517 qxView = new QQuickView(&engine, nullptr);
507 qxView = new QQuickView(&engine, nullptr);
518− #if UQMLSCENE_DEBUG_ACTIVE_FOCUS
519− activeFocusLogger.setWindow(qxView);
520− #endif
521 window = qxView;
508 window = qxView;
522 // Set window default properties; the qml can still override them
509 // Set window default properties; the qml can still override them
523 QString oname = contentItem->objectName();
510 QString oname = contentItem->objectName();
tools/scopetool.cpp+1−1
@@ -89,7 +89,7 @@ int main(int argc, char *argv[])
89 view->setTitle(QGuiApplication::applicationName());
89 view->setTitle(QGuiApplication::applicationName());
90 view->engine()->setBaseUrl(QUrl::fromLocalFile(::qmlDirectory()));
90 view->engine()->setBaseUrl(QUrl::fromLocalFile(::qmlDirectory()));
91
91
92− QUrl source(::qmlDirectory() + "ScopeTool.qml");
92+ QUrl source(::qmlDirectory() + "/ScopeTool.qml");
93 prependImportPaths(view->engine(), ::overrideImportPaths());
93 prependImportPaths(view->engine(), ::overrideImportPaths());
94 prependImportPaths(view->engine(), ::nonMirImportPaths());
94 prependImportPaths(view->engine(), ::nonMirImportPaths());
95 appendImportPaths(view->engine(), ::fallbackImportPaths());
95 appendImportPaths(view->engine(), ::fallbackImportPaths());