on xenial help sign in
merged with trunk
commitf2b1aa3dc9211ba3f739007c9c9080dc805cbdfe authorNick Dedekind <nick.dedekind@canonical.com> dateTue 29 Sep 2015, 15:46 (11 years ago) parentb9c47b1d1c74de
267 files changed+7707−2139
CMakeLists.txt+2−1 cmake/modules/QmlTest.cmake+1 debian/changelog+76 debian/control+2−2 debian/tests/control+5 debian/tests/qmluitests.sh+19 include/paths.h.in+27−21 libs/UbuntuGestures/DebugHelpers.cpp+7−7 libs/UbuntuGestures/TouchRegistry.cpp+1−1 plugins/AccountsService/AccountsService.cpp+35−35 plugins/AccountsService/AccountsServiceDBusAdaptor.cpp+17−17 plugins/Dash/CMakeLists.txt−2 plugins/Dash/CardCreator.js+4−4 plugins/Dash/CroppedImageMinimumSourceSize.qml+5−22 plugins/Dash/Dash.qmltypes−15 plugins/Dash/croppedimagesizer.cpp−136 plugins/Dash/croppedimagesizer.h−72 plugins/Dash/croppedimagesizerasyncworker.cpp−74 plugins/Dash/horizontaljournal.cpp−2 plugins/Dash/listviewwithpageheader.cpp+12−12 plugins/Dash/organicgrid.cpp−2 plugins/Dash/plugin.cpp−2 plugins/Dash/verticaljournal.cpp−2 plugins/GlobalShortcut/globalshortcut.cpp+1−1 plugins/Greeter/Unity/Launcher/launcheritem.cpp+2−2 plugins/Greeter/Unity/Launcher/launchermodelas.cpp+22−22 plugins/Greeter/Unity/Launcher/plugin.cpp+5−5 plugins/IntegratedLightDM/DBusGreeter.cpp+2−2 plugins/IntegratedLightDM/DBusGreeterList.cpp+3−3 plugins/IntegratedLightDM/Greeter.cpp+1−1 plugins/IntegratedLightDM/liblightdm/CMakeLists.txt+1−1 plugins/IntegratedLightDM/liblightdm/Greeter.cpp+5−5 plugins/IntegratedLightDM/liblightdm/GreeterPrivate.cpp+1−1 plugins/IntegratedLightDM/liblightdm/UsersModel.cpp+1−1 plugins/IntegratedLightDM/liblightdm/UsersModelPrivate.cpp+2−1 plugins/IntegratedLightDM/plugin.cpp+3−3 plugins/Powerd/Powerd.cpp+11−11 plugins/ScreenGrabber/screengrabber.cpp+8−6 plugins/SessionBroadcast/SessionBroadcast.cpp+4−4 plugins/Ubuntu/DownloadDaemonListener/interface/downloadtrackeradaptor.h+11−11 plugins/Ubuntu/SystemImage/SystemImage.cpp+4−4 plugins/Unity/Connectivity/Connectivity.cpp+4−4 plugins/Unity/DashCommunicator/dashcommunicator.cpp+3−3 plugins/Unity/DashCommunicator/dashconnection.cpp+1−1 plugins/Unity/DashCommunicator/dbusdashcommunicatorservice.cpp+1−1 plugins/Unity/Indicators/indicator.cpp+8−8 plugins/Unity/Indicators/indicatorsmanager.cpp+4−4 plugins/Unity/Indicators/indicatorsmanager.h+1−1 plugins/Unity/Indicators/modelprinter.cpp+3−3 plugins/Unity/Indicators/modelprinter.h+2−2 plugins/Unity/Indicators/plugin.cpp+6−6 plugins/Unity/Indicators/rootstateparser.cpp+16−16 plugins/Unity/Launcher/asadapter.cpp+10−9 plugins/Unity/Launcher/dbusinterface.cpp+33−33 plugins/Unity/Launcher/desktopfilehandler.cpp+17−16 plugins/Unity/Launcher/gsettings.cpp+15−12 plugins/Unity/Launcher/launcheritem.cpp+6−6 plugins/Unity/Launcher/launchermodel.cpp+6−6 plugins/Unity/Launcher/plugin.cpp+5−5 plugins/Unity/Session/dbusunitysessionservice.cpp+41−41 plugins/Utils/CMakeLists.txt+2 tests/uqmlscene/ActiveFocusLogger.cpp → plugins/Utils/activefocuslogger.cpp+21−8 tests/uqmlscene/ActiveFocusLogger.h → plugins/Utils/activefocuslogger.h+8−8 plugins/Utils/plugin.cpp+6−1 plugins/Utils/timezoneFormatter.cpp+35 plugins/Dash/croppedimagesizerasyncworker.h → plugins/Utils/timezoneFormatter.h+7−22 plugins/Utils/windowstatestorage.cpp+6−6 plugins/Wizard/PageList.cpp+3−3 plugins/Wizard/System.cpp+23−15 plugins/Wizard/System.h+3 po/am.po+93−6 po/ar.po+59−6 po/ast.po+95−5 po/az.po+83−3 po/be.po+111−29 po/bg.po+58−3 po/br.po+100−8 po/bs.po+15−3 po/ca.po+99−5 po/ca@valencia.po+100−3 po/ce.po+3−3 po/ckb.po+51−3 po/cs.po+51−6 po/cy.po+3−6 po/da.po+58−6 po/de.po+98−7 po/el.po+92−5 po/en_AU.po+94−6 po/en_GB.po+96−8 po/eo.po+3−3 po/es.po+98−7 po/eu.po+97−6 po/fa.po+93−5 po/fi.po+94−6 po/fo.po+27−3 po/fr.po+103−8 po/ga.po+2−2 po/gd.po+99−5 po/gl.po+96−6 po/gv.po+66−3 po/he.po+72−5 po/hi.po+34−4 po/hr.po+21−3 po/hu.po+106−17 po/hy.po+72−3 po/ia.po+84−7 po/id.po+94−3 po/is.po+95−3 po/it.po+100−7 po/ja.po+93−3 po/km.po+93−3 po/kn.po+21−3 po/ko.po+93−6 po/ku.po+87−3 po/ky.po+21−3 po/lo.po+21−3 po/lt.po+54−3 po/lv.po+78−3 po/ml.po+53−3 po/mr.po+33−3 po/ms.po+94−3 po/my.po+39−3 po/nb.po+94−6 po/nl.po+94−6 po/nn.po+3−3 po/oc.po+3−3 po/or.po+3−3 po/pa.po+39−6 po/pl.po+84−6 po/pt.po+97−8 po/pt_BR.po+96−6 po/ro.po+97−6 po/ru.po+98−5 po/shn.po+3−3 po/si.po+63−3 po/sk.po+3−3 po/sl.po+93−6 po/sq.po+22−3 po/sr.po+94−9 po/sv.po+94−6 po/sw.po+12−6 po/ta.po+53−3 po/te.po+42−3 po/th.po+3−3 po/tr.po+86−6 po/ug.po+179−85 po/uk.po+99−8 po/unity8.pot+36−34 po/ur.po+3−3 po/uz.po+2−2 po/vi.po+3−3 po/xh.po+3−3 po/zh_CN.po+71−6 po/zh_HK.po+56−3 po/zh_TW.po+92−3 qml/Components/BlurLayer.qml+69 qml/Dash/PreviewListView.qml+12−4 qml/Dash/Previews/PreviewExpandable.qml+3−3 qml/Dash/Previews/PreviewWidgetFactory.qml+1−1 qml/Greeter/Infographics.qml+1−1 qml/Launcher/Launcher.qml+1 qml/Notifications/Notification.qml+11−7 qml/Notifications/Notifications.qml+3−1 qml/Notifications/SwipeToAct.qml+38−3 qml/OrientedShell.qml+1 qml/Panel/IndicatorItem.qml+1−1 qml/Panel/IndicatorPage.qml+1−1 qml/Panel/Indicators/IndicatorDelegate.qml+1−1 qml/Panel/Indicators/MenuItemFactory.qml+92−4 qml/Panel/Indicators/client/IndicatorRepresentation.qml+3−1 qml/Shell.qml+3−1 qml/Stages/ApplicationWindow.qml+3−3 qml/Stages/DecoratedWindow.qml+10−51 qml/Stages/DesktopSpread.qml+537 qml/Stages/DesktopSpreadDelegate.qml+111 qml/Stages/DesktopStage.qml+51−472 qml/Stages/PhoneStage.qml+15−7 qml/Stages/SessionContainer.qml+3 qml/Stages/SpreadDelegate.qml+1−1 qml/Stages/SurfaceContainer.qml+3−2 qml/Stages/WindowMoveResizeArea.qml+1−1 src/ApplicationArguments.h+2−2 src/CachingNetworkManagerFactory.cpp+1−1 src/Dash/main.cpp+11−11 src/Panel/Indicators/client/indicatorsclient.cpp+8−8 src/UnityCommandLineParser.cpp+25−24 src/libunity8-private/unitydbusobject.cpp+2−2 src/libunity8-private/unitydbusvirtualobject.cpp+2−2 src/main.cpp+5−5 tests/CMakeLists.txt+9−3 tests/autopilot/unity8/application_lifecycle/tests/test_application_lifecycle.py+2−1 tests/autopilot/unity8/dash.py+3−4 tests/autopilot/unity8/fixture_setup.py+1−1 tests/autopilot/unity8/indicators/tests/test_indicators.py+10−13 tests/autopilot/unity8/shell/tests/__init__.py+1−1 tests/autopilot/unity8/shell/tests/test_helpers.py+2−2 tests/mocks/AccountsService/AccountsService.cpp+1−1 tests/mocks/IntegratedLightDM/liblightdm/CMakeLists.txt+1−1 tests/mocks/Powerd/Powerd.cpp+2−2 tests/mocks/Powerd/Powerd.h+4−2 tests/mocks/Ubuntu/CMakeLists.txt+1 tests/mocks/Ubuntu/Web/CMakeLists.txt+1 tests/mocks/Ubuntu/Web/WebView.qml+25 tests/mocks/Ubuntu/Web/qmldir+4 tests/mocks/Unity/Application/CMakeLists.txt+1 tests/mocks/Unity/Application/MirSurface.cpp+14−7 tests/mocks/Unity/Application/MirSurface.h+3−3 tests/mocks/Unity/Application/MirSurfaceItem.cpp+26−12 tests/mocks/Unity/Application/MirSurfaceItem.h+3 tests/mocks/Unity/Application/Session.cpp+4−4 tests/mocks/Unity/Application/VirtualKeyboard.cpp+2−4 tests/mocks/Unity/Application/MirSurfaceItem.qml → tests/mocks/Unity/Application/resources/MirSurfaceItem.qml tests/mocks/Unity/Application/VirtualKeyboard.qml → tests/mocks/Unity/Application/resources/VirtualKeyboard.qml tests/mocks/Unity/Application/resources/surfaces.qrc+7 tests/mocks/Unity/Application/resources/vkb_portrait.png tests/mocks/Unity/Launcher/MockLauncherItem.cpp+1−1 tests/mocks/Unity/Notifications/MockActionModel.cpp+1−1 tests/mocks/Unity/Notifications/MockNotification.cpp+1 tests/mocks/Unity/Notifications/MockNotification.h+1−1 tests/mocks/Unity/Notifications/MockNotificationModel.cpp+5−1 tests/mocks/Unity/fake_previewstack.cpp+2−2 tests/mocks/Unity/fake_previewstack.h+1−1 tests/mocks/Unity/fake_resultsmodel.cpp+1−1 tests/mocks/Unity/fake_scope.cpp+3−5 tests/mocks/Unity/fake_scopesoverview.cpp+1−1 tests/mocks/Utils/CMakeLists.txt+1 tests/mocks/Utils/plugin.cpp+2 tests/mocks/libusermetrics/UserMetrics.cpp+1−5 tests/plugins/Dash/CMakeLists.txt−1 tests/plugins/Dash/cardcreator/1.res+1−1 tests/plugins/Dash/cardcreator/3.res+1−1 tests/plugins/Dash/cardcreator/4.res+2−2 tests/plugins/Dash/cardcreator/5.res+1−1 tests/plugins/Dash/cardcreatortest.cpp−1 tests/plugins/Dash/horizontaljournaltest.cpp−1 tests/plugins/Dash/horizontaljournaltry.cpp−1 tests/plugins/Dash/listviewwithpageheadersectionexternalmodeltest.cpp−1 tests/plugins/Dash/listviewwithpageheadersectiontest.cpp−1 tests/plugins/Dash/listviewwithpageheadertest.cpp−1 tests/plugins/Dash/organicgridtest.cpp−1 tests/plugins/Dash/organicgridtry.cpp−1 tests/plugins/Dash/tst_CroppedImageMinimumSourceSize.qml+6−6 tests/plugins/Dash/verticaljournaltest.cpp−1 tests/plugins/Dash/verticaljournaltry.cpp−1 tests/plugins/IntegratedLightDM/CMakeLists.txt+1−1 tests/plugins/Ubuntu/Gestures/CMakeLists.txt+3−7 tests/plugins/Ubuntu/Gestures/GestureTest.cpp−2 tests/plugins/Ubuntu/Gestures/tst_TouchGate.cpp−1 tests/qmltests/CMakeLists.txt+2−2 tests/qmltests/Components/CMakeLists.txt+1−4 tests/qmltests/Components/tst_DragHandle.cpp−2 tests/qmltests/Components/tst_EdgeDragEvaluator.cpp−1 tests/qmltests/Components/tst_PhysicalKeysMapper.qml+3−3 tests/qmltests/Dash/Previews/tst_PreviewExpandable.qml+91−2 tests/qmltests/Dash/tst_Card.qml+2−2 tests/qmltests/Greeter/tst_Infographics.qml+4−3 tests/qmltests/Notifications/tst_Notifications.qml+61−8 tests/qmltests/Notifications/tst_SwipeToAct.qml+58−14 tests/qmltests/Panel/Indicators/tst_IndicatorsLight.qml+8−5 tests/qmltests/Stages/tst_DesktopStage.qml+10−7 tests/qmltests/Stages/tst_TabletStage.qml+1−1 tests/qmltests/tst_OrientedShell.qml+108−3 tests/qmltests/tst_Shell.qml+149−47 tests/qmltests/tst_ShellWithPin.qml+2−2 tests/uqmlscene/CMakeLists.txt−1 tests/uqmlscene/main.cpp−13 tools/scopetool.cpp+1−1
CMakeLists.txt+2−1
@@ -13,8 +13,9 @@ endif()
1313
1414set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
1515
16−# Instruct CMake to run moc automatically when needed.
16+# Instruct CMake to run moc and rcc automatically when needed.
1717set(CMAKE_AUTOMOC ON)
18+set(CMAKE_AUTORCC ON)
1819
1920# enable QML debugging
2021string(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)
127127 file(MAKE_DIRECTORY ${ARTIFACTS_DIR}/${path})
128128 set(file_logger -o ${ARTIFACTS_DIR}/${path}/test${COMPONENT_NAME}.xml,xunitxml)
129129 else()
130+ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
130131 set(file_logger -o ${CMAKE_CURRENT_BINARY_DIR}/test${COMPONENT_NAME}.xml,xunitxml)
131132 endif()
132133
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+
177unity8 (8.11+15.10.20150907-0ubuntu1) wily; urgency=medium
278
379 [ Michal Sawicz ]
debian/control+2−2
@@ -125,7 +125,7 @@ Depends: qml-module-qtquick-layouts,
125125 qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.3.1550) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.3.1550),
126126 qtdeclarative5-unity-notifications-plugin (>= 0.1.2) | unity-notifications-impl,
127127 ubuntu-thumbnailer-impl-0,
128− unity-application-impl-6,
128+ unity-application-impl-8,
129129 unity-notifications-impl-3,
130130 unity-plugin-scopes | unity-scopes-impl,
131131 unity-scopes-impl-7,
@@ -171,7 +171,7 @@ Pre-Depends: ${misc:Pre-Depends},
171171Depends: ${misc:Depends},
172172 ${shlibs:Depends},
173173Provides: unity-application-impl,
174− unity-application-impl-6,
174+ unity-application-impl-8,
175175Replaces: unity8-autopilot (<< 8.02+15.04.20150422-0ubuntu1)
176176Description: Fake environment for running Unity 8 shell
177177 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 @@
2929
3030inline bool isRunningInstalled() {
3131 static bool installed = (QCoreApplication::applicationDirPath() ==
32− QDir(("@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_BINDIR@")).canonicalPath());
32+ QDir(QStringLiteral("@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_BINDIR@")).canonicalPath());
3333 return installed;
3434}
3535
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+
3646inline QString translationDirectory() {
3747 if (isRunningInstalled()) {
38− return QString("@CMAKE_INSTALL_PREFIX@/share/locale");
48+ return QStringLiteral("@CMAKE_INSTALL_PREFIX@/share/locale");
3949 } else {
40− return QString("@CMAKE_BINARY_DIR@/po/locale");
50+ return QString(buildDirectory() + "/po/locale");
4151 }
4252}
4353
4454inline QString qmlDirectory() {
4555 if (isRunningInstalled()) {
46− return QString("@CMAKE_INSTALL_PREFIX@/@SHELL_APP_DIR@/");
56+ return QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_APP_DIR@/");
4757 } else {
48− return QString("@CMAKE_SOURCE_DIR@/qml/");
58+ return QString(sourceDirectory() + "/qml");
4959 }
5060}
5161
5262inline QStringList overrideImportPaths() {
5363 QStringList paths;
5464 if (!isRunningInstalled()) {
55− paths << QString("@CMAKE_BINARY_DIR@/plugins");
65+ paths << QString(buildDirectory() + "/plugins");
5666 }
5767 return paths;
5868}
@@ -60,9 +70,9 @@ inline QStringList overrideImportPaths() {
6070inline QStringList nonMirImportPaths() {
6171 QStringList paths;
6272 if (isRunningInstalled()) {
63− paths << QString("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/nonmirplugins");
73+ paths << QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/nonmirplugins");
6474 } else {
65− paths << QString("@CMAKE_BINARY_DIR@/nonmirplugins");
75+ paths << QString(buildDirectory() + "/nonmirplugins");
6676 }
6777 return paths;
6878}
@@ -70,23 +80,23 @@ inline QStringList nonMirImportPaths() {
7080inline QStringList fallbackImportPaths() {
7181 QStringList paths;
7282 if (isRunningInstalled()) {
73− paths << QString("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@");
74− paths << QString("@USS_PRIVATE_PLUGINDIR@");
75− paths << QString("@SHELL_PLUGINDIR@");
76− paths << QString("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/mocks");
83+ paths << QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@");
84+ paths << QStringLiteral("@USS_PRIVATE_PLUGINDIR@");
85+ paths << QStringLiteral("@SHELL_PLUGINDIR@");
86+ paths << QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/mocks");
7787 } else {
78− paths << QString("@USS_PRIVATE_PLUGINDIR@");
79− paths << QString("@SHELL_PLUGINDIR@");
80− paths << QString("@CMAKE_BINARY_DIR@/tests/mocks");
88+ paths << QStringLiteral("@USS_PRIVATE_PLUGINDIR@");
89+ paths << QStringLiteral("@SHELL_PLUGINDIR@");
90+ paths << QString(buildDirectory() + "/tests/mocks");
8191 }
8292 return paths;
8393}
8494
8595inline QString mockPluginsDir() {
8696 if (isRunningInstalled()) {
87− return QString("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/mocks");
97+ return QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/mocks");
8898 } else {
89− return QString("@CMAKE_BINARY_DIR@/tests/mocks");
99+ return QString(buildDirectory() + "/tests/mocks");
90100 }
91101}
92102
@@ -99,10 +109,6 @@ inline QStringList shellDataDirs() {
99109 return dirs;
100110}
101111
102−inline QString sourceDirectory() {
103− return QString("@CMAKE_SOURCE_DIR@/");
104−}
105−
106112inline void prependImportPaths(QQmlEngine *engine, const QStringList &paths)
107113{
108114 QStringList importPathList = engine->importPathList();
libs/UbuntuGestures/DebugHelpers.cpp+7−7
@@ -22,15 +22,15 @@ QString touchPointStateToString(Qt::TouchPointState state)
2222{
2323 switch (state) {
2424 case Qt::TouchPointPressed:
25− return QString("pressed");
25+ return QStringLiteral("pressed");
2626 case Qt::TouchPointMoved:
27− return QString("moved");
27+ return QStringLiteral("moved");
2828 case Qt::TouchPointStationary:
29− return QString("stationary");
29+ return QStringLiteral("stationary");
3030 case Qt::TouchPointReleased:
31− return QString("released");
31+ return QStringLiteral("released");
3232 default:
33− return QString("INVALID_STATE");
33+ return QStringLiteral("INVALID_STATE");
3434 }
3535}
3636
@@ -57,7 +57,7 @@ QString touchEventToString(const QTouchEvent *ev)
5757
5858 foreach(const QTouchEvent::TouchPoint& touchPoint, ev->touchPoints()) {
5959 message.append(
60− QString("(id:%1, state:%2, scenePos:(%3,%4)) ")
60+ QStringLiteral("(id:%1, state:%2, scenePos:(%3,%4)) ")
6161 .arg(touchPoint.id())
6262 .arg(touchPointStateToString(touchPoint.state()))
6363 .arg(touchPoint.scenePos().x())
@@ -89,7 +89,7 @@ QString mouseEventToString(const QMouseEvent *ev)
8989 message.append("INVALID_MOUSE_EVENT_TYPE ");
9090 }
9191
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()));
9393
9494 return message;
9595}
libs/UbuntuGestures/TouchRegistry.cpp+1−1
@@ -105,7 +105,7 @@ void TouchRegistry::deliverTouchUpdatesToUndecidedCandidatesAndWatchers(const QT
105105 // E.g.: a QTouchEvent might have three touches but a given item might be interested in only
106106 // one of them. So he will get a UnownedTouchEvent from this QTouchEvent containing only that
107107 // touch point.
108− QMap<QQuickItem*, QList<int>> touchIdsForItems;
108+ QHash<QQuickItem*, QList<int>> touchIdsForItems;
109109
110110 // Build touchIdsForItems
111111 m_touchInfoPool.forEach([&](Pool<TouchInfo>::Iterator &touchInfo) {
plugins/AccountsService/AccountsService.cpp+35−35
@@ -74,7 +74,7 @@ void AccountsService::setDemoEdges(bool demoEdges)
7474{
7575 if (m_demoEdges != demoEdges) {
7676 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);
7878
7979 Q_EMIT demoEdgesChanged();
8080 }
@@ -114,7 +114,7 @@ void AccountsService::setHereEnabled(bool enabled)
114114{
115115 if (m_hereEnabled != enabled) {
116116 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);
118118
119119 Q_EMIT hereEnabledChanged();
120120 }
@@ -133,8 +133,8 @@ bool AccountsService::hereLicensePathValid() const
133133void AccountsService::updateDemoEdges(bool async)
134134{
135135 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
136− "com.canonical.unity.AccountsService",
137− "demo-edges");
136+ QStringLiteral("com.canonical.unity.AccountsService"),
137+ QStringLiteral("demo-edges"));
138138 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
139139
140140 connect(watcher, &QDBusPendingCallWatcher::finished,
@@ -162,8 +162,8 @@ void AccountsService::updateDemoEdges(bool async)
162162void AccountsService::updateEnableLauncherWhileLocked(bool async)
163163{
164164 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
165− "com.ubuntu.AccountsService.SecurityPrivacy",
166− "EnableLauncherWhileLocked");
165+ QStringLiteral("com.ubuntu.AccountsService.SecurityPrivacy"),
166+ QStringLiteral("EnableLauncherWhileLocked"));
167167 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
168168
169169 connect(watcher, &QDBusPendingCallWatcher::finished,
@@ -191,8 +191,8 @@ void AccountsService::updateEnableLauncherWhileLocked(bool async)
191191void AccountsService::updateEnableIndicatorsWhileLocked(bool async)
192192{
193193 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
194− "com.ubuntu.AccountsService.SecurityPrivacy",
195− "EnableIndicatorsWhileLocked");
194+ QStringLiteral("com.ubuntu.AccountsService.SecurityPrivacy"),
195+ QStringLiteral("EnableIndicatorsWhileLocked"));
196196 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
197197
198198 connect(watcher, &QDBusPendingCallWatcher::finished,
@@ -220,8 +220,8 @@ void AccountsService::updateEnableIndicatorsWhileLocked(bool async)
220220void AccountsService::updateBackgroundFile(bool async)
221221{
222222 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
223− "org.freedesktop.Accounts.User",
224− "BackgroundFile");
223+ QStringLiteral("org.freedesktop.Accounts.User"),
224+ QStringLiteral("BackgroundFile"));
225225 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
226226
227227 connect(watcher, &QDBusPendingCallWatcher::finished,
@@ -249,8 +249,8 @@ void AccountsService::updateBackgroundFile(bool async)
249249void AccountsService::updateStatsWelcomeScreen(bool async)
250250{
251251 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
252− "com.ubuntu.touch.AccountsService.SecurityPrivacy",
253− "StatsWelcomeScreen");
252+ QStringLiteral("com.ubuntu.touch.AccountsService.SecurityPrivacy"),
253+ QStringLiteral("StatsWelcomeScreen"));
254254 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
255255
256256 connect(watcher, &QDBusPendingCallWatcher::finished,
@@ -278,8 +278,8 @@ void AccountsService::updateStatsWelcomeScreen(bool async)
278278void AccountsService::updatePasswordDisplayHint(bool async)
279279{
280280 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
281− "com.ubuntu.AccountsService.SecurityPrivacy",
282− "PasswordDisplayHint");
281+ QStringLiteral("com.ubuntu.AccountsService.SecurityPrivacy"),
282+ QStringLiteral("PasswordDisplayHint"));
283283 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
284284
285285 connect(watcher, &QDBusPendingCallWatcher::finished,
@@ -307,8 +307,8 @@ void AccountsService::updatePasswordDisplayHint(bool async)
307307void AccountsService::updateFailedLogins(bool async)
308308{
309309 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
310− "com.canonical.unity.AccountsService.Private",
311− "FailedLogins");
310+ QStringLiteral("com.canonical.unity.AccountsService.Private"),
311+ QStringLiteral("FailedLogins"));
312312 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
313313
314314 connect(watcher, &QDBusPendingCallWatcher::finished,
@@ -336,8 +336,8 @@ void AccountsService::updateFailedLogins(bool async)
336336void AccountsService::updateHereEnabled(bool async)
337337{
338338 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
339− "com.ubuntu.location.providers.here.AccountsService",
340− "LicenseAccepted");
339+ QStringLiteral("com.ubuntu.location.providers.here.AccountsService"),
340+ QStringLiteral("LicenseAccepted"));
341341 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
342342
343343 connect(watcher, &QDBusPendingCallWatcher::finished,
@@ -365,8 +365,8 @@ void AccountsService::updateHereEnabled(bool async)
365365void AccountsService::updateHereLicensePath(bool async)
366366{
367367 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
368− "com.ubuntu.location.providers.here.AccountsService",
369− "LicenseBasePath");
368+ QStringLiteral("com.ubuntu.location.providers.here.AccountsService"),
369+ QStringLiteral("LicenseBasePath"));
370370 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
371371
372372 connect(watcher, &QDBusPendingCallWatcher::finished,
@@ -381,7 +381,7 @@ void AccountsService::updateHereLicensePath(bool async)
381381
382382 QString hereLicensePath = reply.value().toString();
383383 if (hereLicensePath.isEmpty() || !QFile::exists(hereLicensePath))
384− hereLicensePath = "";
384+ hereLicensePath = QLatin1String("");
385385
386386 if (m_hereLicensePath.isNull() || m_hereLicensePath != hereLicensePath) {
387387 m_hereLicensePath = hereLicensePath;
@@ -403,7 +403,7 @@ void AccountsService::setFailedLogins(uint failedLogins)
403403{
404404 if (m_failedLogins != failedLogins) {
405405 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);
407407
408408 Q_EMIT failedLoginsChanged();
409409 }
@@ -415,33 +415,33 @@ void AccountsService::onPropertiesChanged(const QString &user, const QString &in
415415 return;
416416 }
417417
418− if (interface == "com.canonical.unity.AccountsService") {
419− if (changed.contains("demo-edges")) {
418+ if (interface == QLatin1String("com.canonical.unity.AccountsService")) {
419+ if (changed.contains(QStringLiteral("demo-edges"))) {
420420 updateDemoEdges();
421421 }
422− } else if (interface == "com.canonical.unity.AccountsService.Private") {
423− if (changed.contains("FailedLogins")) {
422+ } else if (interface == QLatin1String("com.canonical.unity.AccountsService.Private")) {
423+ if (changed.contains(QStringLiteral("FailedLogins"))) {
424424 updateFailedLogins();
425425 }
426− } else if (interface == "com.ubuntu.touch.AccountsService.SecurityPrivacy") {
427− if (changed.contains("StatsWelcomeScreen")) {
426+ } else if (interface == QLatin1String("com.ubuntu.touch.AccountsService.SecurityPrivacy")) {
427+ if (changed.contains(QStringLiteral("StatsWelcomeScreen"))) {
428428 updateStatsWelcomeScreen();
429429 }
430− } else if (interface == "com.ubuntu.AccountsService.SecurityPrivacy") {
431− if (changed.contains("PasswordDisplayHint")) {
430+ } else if (interface == QLatin1String("com.ubuntu.AccountsService.SecurityPrivacy")) {
431+ if (changed.contains(QStringLiteral("PasswordDisplayHint"))) {
432432 updatePasswordDisplayHint();
433433 }
434− if (changed.contains("EnableLauncherWhileLocked")) {
434+ if (changed.contains(QStringLiteral("EnableLauncherWhileLocked"))) {
435435 updateEnableLauncherWhileLocked();
436436 }
437− if (changed.contains("EnableIndicatorsWhileLocked")) {
437+ if (changed.contains(QStringLiteral("EnableIndicatorsWhileLocked"))) {
438438 updateEnableIndicatorsWhileLocked();
439439 }
440− } else if (interface == "com.ubuntu.location.providers.here.AccountsService") {
441− if (changed.contains("LicenseAccepted")) {
440+ } else if (interface == QLatin1String("com.ubuntu.location.providers.here.AccountsService")) {
441+ if (changed.contains(QStringLiteral("LicenseAccepted"))) {
442442 updateHereEnabled();
443443 }
444− if (changed.contains("LicenseBasePath")) {
444+ if (changed.contains(QStringLiteral("LicenseBasePath"))) {
445445 updateHereLicensePath();
446446 }
447447 }
plugins/AccountsService/AccountsServiceDBusAdaptor.cpp+17−17
@@ -30,10 +30,10 @@ AccountsServiceDBusAdaptor::AccountsServiceDBusAdaptor(QObject* parent)
3030{
3131 QDBusConnection connection = QDBusConnection::SM_BUSNAME();
3232 QDBusConnectionInterface *interface = connection.interface();
33− interface->startService("org.freedesktop.Accounts");
34− m_accountsManager = new QDBusInterface("org.freedesktop.Accounts",
35− "/org/freedesktop/Accounts",
36− "org.freedesktop.Accounts",
33+ interface->startService(QStringLiteral("org.freedesktop.Accounts"));
34+ m_accountsManager = new QDBusInterface(QStringLiteral("org.freedesktop.Accounts"),
35+ QStringLiteral("/org/freedesktop/Accounts"),
36+ QStringLiteral("org.freedesktop.Accounts"),
3737 connection, this);
3838}
3939
@@ -41,7 +41,7 @@ QVariant AccountsServiceDBusAdaptor::getUserProperty(const QString &user, const
4141{
4242 QDBusInterface *iface = getUserInterface(user);
4343 if (iface != nullptr && iface->isValid()) {
44− QDBusReply<QVariant> answer = iface->call("Get", interface, property);
44+ QDBusReply<QVariant> answer = iface->call(QStringLiteral("Get"), interface, property);
4545 if (answer.isValid()) {
4646 return answer;
4747 }
@@ -53,9 +53,9 @@ QDBusPendingReply<QVariant> AccountsServiceDBusAdaptor::getUserPropertyAsync(con
5353{
5454 QDBusInterface *iface = getUserInterface(user);
5555 if (iface != nullptr && iface->isValid()) {
56− return iface->asyncCall("Get", interface, property);
56+ return iface->asyncCall(QStringLiteral("Get"), interface, property);
5757 }
58− return QDBusPendingReply<QVariant>(QDBusMessage::createError(QDBusError::Other, "Invalid Interface"));
58+ return QDBusPendingReply<QVariant>(QDBusMessage::createError(QDBusError::Other, QStringLiteral("Invalid Interface")));
5959}
6060
6161void 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
6363 QDBusInterface *iface = getUserInterface(user);
6464 if (iface != nullptr && iface->isValid()) {
6565 // 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)));
6767 }
6868}
6969
@@ -72,9 +72,9 @@ QDBusPendingCall AccountsServiceDBusAdaptor::setUserPropertyAsync(const QString
7272 QDBusInterface *iface = getUserInterface(user);
7373 if (iface != nullptr && iface->isValid()) {
7474 // 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)));
7676 }
77− return QDBusPendingCall::fromCompletedCall(QDBusMessage::createError(QDBusError::Other, "Invalid Interface"));
77+ return QDBusPendingCall::fromCompletedCall(QDBusMessage::createError(QDBusError::Other, QStringLiteral("Invalid Interface")));
7878}
7979
8080void AccountsServiceDBusAdaptor::propertiesChangedSlot(const QString &interface, const QVariantMap &changed, const QStringList &invalid)
@@ -116,13 +116,13 @@ QDBusInterface *AccountsServiceDBusAdaptor::getUserInterface(const QString &user
116116{
117117 QDBusInterface *iface = m_users.value(user);
118118 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);
120120 if (answer.isValid()) {
121121 const QString path = answer.value().path();
122122
123− iface = new QDBusInterface("org.freedesktop.Accounts",
123+ iface = new QDBusInterface(QStringLiteral("org.freedesktop.Accounts"),
124124 path,
125− "org.freedesktop.DBus.Properties",
125+ QStringLiteral("org.freedesktop.DBus.Properties"),
126126 m_accountsManager->connection(), this);
127127
128128 // With its own pre-defined properties, AccountsService is oddly
@@ -132,8 +132,8 @@ QDBusInterface *AccountsServiceDBusAdaptor::getUserInterface(const QString &user
132132 iface->connection().connect(
133133 iface->service(),
134134 path,
135− "org.freedesktop.Accounts.User",
136− "Changed",
135+ QStringLiteral("org.freedesktop.Accounts.User"),
136+ QStringLiteral("Changed"),
137137 this,
138138 SLOT(maybeChangedSlot()));
139139
@@ -142,8 +142,8 @@ QDBusInterface *AccountsServiceDBusAdaptor::getUserInterface(const QString &user
142142 iface->connection().connect(
143143 iface->service(),
144144 path,
145− "org.freedesktop.DBus.Properties",
146− "PropertiesChanged",
145+ QStringLiteral("org.freedesktop.DBus.Properties"),
146+ QStringLiteral("PropertiesChanged"),
147147 this,
148148 SLOT(propertiesChangedSlot(QString, QVariantMap, QStringList)));
149149
plugins/Dash/CMakeLists.txt−2
@@ -24,8 +24,6 @@ set(QMLPLUGIN_SRC
2424 verticaljournal.cpp
2525 horizontaljournal.cpp
2626 organicgrid.cpp
27− croppedimagesizer.cpp
28− croppedimagesizerasyncworker.cpp
2927 )
3028
3129add_library(Dash-qml MODULE
plugins/Dash/CardCreator.js+4−4
@@ -68,7 +68,7 @@ var kArtShapeHolderCode = 'Item { \n\
6868 objectName: "artShape"; \n\
6969 property bool doShapeItem: components["art"]["conciergeMode"] !== true; \n\
7070 visible: image.status == Image.Ready; \n\
71− readonly property alias image: artImage.image; \n\
71+ readonly property alias image: artImage; \n\
7272 property alias borderSource: artShapeShape.borderSource; \n\
7373 ShaderEffectSource { \n\
7474 id: artShapeSource; \n\
@@ -195,11 +195,11 @@ var kMascotShapeLoaderCode = 'Loader { \n\
195195 id: mascotShapeLoader; \n\
196196 objectName: "mascotShapeLoader"; \n\
197197 asynchronous: root.asynchronous; \n\
198− active: mascotImage.image.status === Image.Ready; \n\
198+ active: mascotImage.status === Image.Ready; \n\
199199 visible: showHeader && active && status == Loader.Ready; \n\
200200 width: units.gu(6); \n\
201201 height: units.gu(5.625); \n\
202− sourceComponent: UbuntuShape { image: mascotImage.image } \n\
202+ sourceComponent: UbuntuShape { image: mascotImage } \n\
203203 anchors { %1 } \n\
204204 }\n';
205205
@@ -476,7 +476,7 @@ function cardString(template, components) {
476476 mascotCode = kMascotImageCode.arg(mascotAnchors).arg(mascotImageVisible);
477477 var fallback = components["mascot"] && components["mascot"]["fallback"] || "";
478478 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);
480480 }
481481 }
482482
plugins/Dash/CroppedImageMinimumSourceSize.qml+5−22
@@ -15,30 +15,13 @@
1515 */
1616
1717import QtQuick 2.3
18−import Dash 0.1
1918
20−Item {
19+Image {
2120 id: root
2221
23− property string source
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
22+ fillMode: Image.PreserveAspectCrop
2923
30− CroppedImageSizer {
31− id: sizer
32− source: root.source
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− }
24+ readonly property real itemAspectRatio: width / height
25+ readonly property real imageAspectRatio: implicitWidth / implicitHeight
26+ sourceSize: (imageAspectRatio > itemAspectRatio) ? Qt.size(0, height) : Qt.size(width, 0)
4427}
plugins/Dash/Dash.qmltypes−15
@@ -19,21 +19,6 @@ Module {
1919 Property { name: "displayMarginBeginning"; type: "double" }
2020 Property { name: "displayMarginEnd"; type: "double" }
2121 }
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− }
3722 Component {
3823 name: "HorizontalJournal"
3924 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 @@
3333#include <private/qquickitem_p.h>
3434#pragma GCC diagnostic pop
3535
36−static const qreal bufferRatio = 0.5;
37−
3836HorizontalJournal::HorizontalJournal()
3937 : m_firstVisibleIndex(-1)
4038 , m_rowHeight(0)
plugins/Dash/listviewwithpageheader.cpp+12−12
@@ -164,7 +164,7 @@ ListViewWithPageHeader::ListViewWithPageHeader()
164164
165165 m_contentYAnimation = new QQuickNumberAnimation(this);
166166 m_contentYAnimation->setEasing(QEasingCurve::OutQuad);
167− m_contentYAnimation->setProperty("contentY");
167+ m_contentYAnimation->setProperty(QStringLiteral("contentY"));
168168 m_contentYAnimation->setDuration(200);
169169 m_contentYAnimation->setTargetObject(this);
170170
@@ -745,8 +745,8 @@ QQuickItem *ListViewWithPageHeader::getSectionItem(const QString &sectionText)
745745
746746 QQmlContext *creationContext = m_sectionDelegate->creationContext();
747747 QQmlContext *context = new QQmlContext(creationContext ? creationContext : qmlContext(this));
748− context->setContextProperty(QLatin1String("section"), sectionText);
749− context->setContextProperty(QLatin1String("delegateIndex"), -1);
748+ context->setContextProperty(QStringLiteral("section"), sectionText);
749+ context->setContextProperty(QStringLiteral("delegateIndex"), -1);
750750 QObject *nobj = m_sectionDelegate->beginCreate(context);
751751 if (nobj) {
752752 QQml_setParent_noEvent(context, nobj);
@@ -879,7 +879,7 @@ ListViewWithPageHeader::ListItem *ListViewWithPageHeader::createItem(int modelIn
879879 }
880880 if (listItem->sectionItem()) {
881881 QQmlContext *context = QQmlEngine::contextForObject(listItem->sectionItem())->parentContext();
882− context->setContextProperty(QLatin1String("delegateIndex"), modelIndex);
882+ context->setContextProperty(QStringLiteral("delegateIndex"), modelIndex);
883883 }
884884 adjustMinYExtent();
885885 m_contentHeightDirty = true;
@@ -904,8 +904,8 @@ void ListViewWithPageHeader::itemCreated(int modelIndex, QObject *object)
904904
905905 item->setParentItem(m_clipItem);
906906 QQmlContext *context = QQmlEngine::contextForObject(item)->parentContext();
907− context->setContextProperty(QLatin1String("ListViewWithPageHeader"), this);
908− context->setContextProperty(QLatin1String("heightToClip"), QVariant::fromValue<int>(0));
907+ context->setContextProperty(QStringLiteral("ListViewWithPageHeader"), this);
908+ context->setContextProperty(QStringLiteral("heightToClip"), QVariant::fromValue<int>(0));
909909 if (modelIndex == m_asyncRequestedIndex) {
910910 createItem(modelIndex, false);
911911 refill();
@@ -1059,7 +1059,7 @@ void ListViewWithPageHeader::onModelUpdated(const QQmlChangeSet &changeSet, bool
10591059 if (item && item->sectionItem()) {
10601060 QQmlContext *context = QQmlEngine::contextForObject(item->sectionItem())->parentContext();
10611061 const QString sectionText = m_delegateModel->stringValue(i, m_sectionProperty);
1062− context->setContextProperty(QLatin1String("section"), sectionText);
1062+ context->setContextProperty(QStringLiteral("section"), sectionText);
10631063 }
10641064 }
10651065 }
@@ -1072,7 +1072,7 @@ void ListViewWithPageHeader::onModelUpdated(const QQmlChangeSet &changeSet, bool
10721072 ListItem *item = m_visibleItems[i];
10731073 if (item->sectionItem()) {
10741074 QQmlContext *context = QQmlEngine::contextForObject(item->sectionItem())->parentContext();
1075− context->setContextProperty(QLatin1String("delegateIndex"), m_firstVisibleIndex + i);
1075+ context->setContextProperty(QStringLiteral("delegateIndex"), m_firstVisibleIndex + i);
10761076 }
10771077 }
10781078
@@ -1235,7 +1235,7 @@ void ListViewWithPageHeader::layout()
12351235 // Update the top sticky section header
12361236 const QString section = m_delegateModel->stringValue(modelIndex, m_sectionProperty);
12371237 QQmlContext *context = QQmlEngine::contextForObject(m_topSectionItem)->parentContext();
1238− context->setContextProperty(QLatin1String("section"), section);
1238+ context->setContextProperty(QStringLiteral("section"), section);
12391239
12401240 QQuickItemPrivate::get(m_topSectionItem)->setCulled(false);
12411241 m_topSectionItem->setY(topSectionStickPos);
@@ -1247,7 +1247,7 @@ void ListViewWithPageHeader::layout()
12471247 break;
12481248 delegateIndex--;
12491249 }
1250− context->setContextProperty(QLatin1String("delegateIndex"), delegateIndex);
1250+ context->setContextProperty(QStringLiteral("delegateIndex"), delegateIndex);
12511251 if (item->sectionItem()) {
12521252 QQuickItemPrivate::get(item->sectionItem())->setCulled(true);
12531253 }
@@ -1257,9 +1257,9 @@ void ListViewWithPageHeader::layout()
12571257 QQmlContext *context = QQmlEngine::contextForObject(item->m_item)->parentContext();
12581258 const qreal clipFrom = visibleFrom + (!item->sectionItem() && m_topSectionItem && !QQuickItemPrivate::get(m_topSectionItem)->culled ? m_topSectionItem->height() : 0);
12591259 if (!cull && pos < clipFrom) {
1260− context->setContextProperty(QLatin1String("heightToClip"), clipFrom - pos);
1260+ context->setContextProperty(QStringLiteral("heightToClip"), clipFrom - pos);
12611261 } else {
1262− context->setContextProperty(QLatin1String("heightToClip"), QVariant::fromValue<int>(0));
1262+ context->setContextProperty(QStringLiteral("heightToClip"), QVariant::fromValue<int>(0));
12631263 }
12641264// qDebug() << "ListViewWithPageHeader::layout" << item->m_item;
12651265 pos += item->height();
plugins/Dash/organicgrid.cpp−2
@@ -21,8 +21,6 @@
2121#include <private/qquickitem_p.h>
2222#pragma GCC diagnostic pop
2323
24−static const qreal bufferRatio = 0.5;
25−
2624OrganicGrid::OrganicGrid()
2725 : m_firstVisibleIndex(-1)
2826 , m_numberOfModulesPerRow(-1)
plugins/Dash/plugin.cpp−2
@@ -17,7 +17,6 @@
1717
1818#include "plugin.h"
1919
20−#include "croppedimagesizer.h"
2120#include "horizontaljournal.h"
2221#include "listviewwithpageheader.h"
2322#include "organicgrid.h"
@@ -33,5 +32,4 @@ void DashPlugin::registerTypes(const char *uri)
3332 qmlRegisterType<ListViewWithPageHeader>(uri, 0, 1, "ListViewWithPageHeader");
3433 qmlRegisterType<OrganicGrid>(uri, 0, 1, "OrganicGrid");
3534 qmlRegisterType<VerticalJournal>(uri, 0, 1, "VerticalJournal");
36− qmlRegisterType<CroppedImageSizer>(uri, 0, 1, "CroppedImageSizer");
3735}
plugins/Dash/verticaljournal.cpp−2
@@ -32,8 +32,6 @@
3232#include <private/qquickitem_p.h>
3333#pragma GCC diagnostic pop
3434
35−static const qreal bufferRatio = 0.5;
36−
3735VerticalJournal::VerticalJournal()
3836 : m_columnWidth(0)
3937{
plugins/GlobalShortcut/globalshortcut.cpp+1−1
@@ -72,7 +72,7 @@ void GlobalShortcut::keyPressEvent(QKeyEvent * event)
7272void GlobalShortcut::setupFilterOnWindow(QQuickWindow *window)
7373{
7474 if (!window) {
75− qWarning() << Q_FUNC_INFO << "Failed to setup filter on window";
75+// qWarning() << Q_FUNC_INFO << "Failed to setup filter on window";
7676 return;
7777 }
7878
plugins/Greeter/Unity/Launcher/launcheritem.cpp+2−2
@@ -35,7 +35,7 @@ LauncherItem::LauncherItem(const QString &appId, const QString &name, const QStr
3535 m_quickList(new QuickListModel(this))
3636{
3737 QuickListEntry nameAction;
38− nameAction.setActionId("launch_item");
38+ nameAction.setActionId(QStringLiteral("launch_item"));
3939 nameAction.setText(m_name);
4040 m_quickList->appendAction(nameAction);
4141}
@@ -55,7 +55,7 @@ void LauncherItem::setName(const QString &name)
5555 if (m_name != name) {
5656 m_name = name;
5757 QuickListEntry entry;
58− entry.setActionId("launch_item");
58+ entry.setActionId(QStringLiteral("launch_item"));
5959 entry.setText(m_name);
6060 m_quickList->updateAction(entry);
6161 Q_EMIT nameChanged(name);
plugins/Greeter/Unity/Launcher/launchermodelas.cpp+22−22
@@ -122,7 +122,7 @@ void LauncherModel::quickListActionInvoked(const QString &appId, int actionIndex
122122 QString actionId = model->get(actionIndex).actionId();
123123
124124 // Check if this is one of the launcher actions we handle ourselves
125− if (actionId == "launch_item") {
125+ if (actionId == QLatin1String("launch_item")) {
126126 QDesktopServices::openUrl(getUrlForAppId(appId));
127127
128128 // 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
147147 return QString();
148148 }
149149
150− if (!appId.contains("_")) {
150+ if (!appId.contains('_')) {
151151 return "application:///" + appId + ".desktop";
152152 }
153153
154154 QStringList parts = appId.split('_');
155155 QString package = parts.value(0);
156− QString app = parts.value(1, "first-listed-app");
156+ QString app = parts.value(1, QStringLiteral("first-listed-app"));
157157 return "appid://" + package + "/" + app + "/current-user-version";
158158}
159159
@@ -200,7 +200,7 @@ void LauncherModel::refresh()
200200 QList<QVariantMap> items;
201201
202202 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"));
204204 }
205205
206206 // First walk through all the existing items and see if we need to remove something
@@ -210,16 +210,16 @@ void LauncherModel::refresh()
210210 bool found = false;
211211 Q_FOREACH(const QVariant &asItem, items) {
212212 QVariantMap cachedMap = asItem.toMap();
213− if (cachedMap.value("id").toString() == item->appId()) {
213+ if (cachedMap.value(QStringLiteral("id")).toString() == item->appId()) {
214214 // 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()) {
216216 found = true;
217− item->setName(cachedMap.value("name").toString());
218− item->setIcon(cachedMap.value("icon").toString());
219− item->setCount(cachedMap.value("count").toInt());
220− item->setCountVisible(cachedMap.value("countVisible").toBool());
221− item->setProgress(cachedMap.value("progress").toInt());
222− item->setRunning(cachedMap.value("running").toBool());
217+ item->setName(cachedMap.value(QStringLiteral("name")).toString());
218+ item->setIcon(cachedMap.value(QStringLiteral("icon")).toString());
219+ item->setCount(cachedMap.value(QStringLiteral("count")).toInt());
220+ item->setCountVisible(cachedMap.value(QStringLiteral("countVisible")).toBool());
221+ item->setProgress(cachedMap.value(QStringLiteral("progress")).toInt());
222+ item->setRunning(cachedMap.value(QStringLiteral("running")).toBool());
223223
224224 int idx = m_list.indexOf(item);
225225 Q_EMIT dataChanged(index(idx), index(idx), {RoleName, RoleIcon, RoleCount, RoleCountVisible, RoleRunning, RoleProgress});
@@ -244,7 +244,7 @@ void LauncherModel::refresh()
244244 for (int asIndex = 0; asIndex < items.count(); ++asIndex) {
245245 QVariant entry = items.at(asIndex);
246246
247− if (m_onlyPinned && !entry.toMap().value("pinned").toBool()) {
247+ if (m_onlyPinned && !entry.toMap().value(QStringLiteral("pinned")).toBool()) {
248248 // Skipping it as we only show pinned and it is not
249249 skipped++;
250250 continue;
@@ -253,7 +253,7 @@ void LauncherModel::refresh()
253253
254254 int itemIndex = -1;
255255 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()) {
257257 itemIndex = i;
258258 break;
259259 }
@@ -262,15 +262,15 @@ void LauncherModel::refresh()
262262 if (itemIndex == -1) {
263263 QVariantMap cachedMap = entry.toMap();
264264 // 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(),
266− cachedMap.value("name").toString(),
267− cachedMap.value("icon").toString(),
265+ LauncherItem *item = new LauncherItem(cachedMap.value(QStringLiteral("id")).toString(),
266+ cachedMap.value(QStringLiteral("name")).toString(),
267+ cachedMap.value(QStringLiteral("icon")).toString(),
268268 this);
269269 item->setPinned(true);
270− item->setCount(cachedMap.value("count").toInt());
271− item->setCountVisible(cachedMap.value("countVisible").toBool());
272− item->setProgress(cachedMap.value("progress").toInt());
273− item->setRunning(cachedMap.value("running").toBool());
270+ item->setCount(cachedMap.value(QStringLiteral("count")).toInt());
271+ item->setCountVisible(cachedMap.value(QStringLiteral("countVisible")).toBool());
272+ item->setProgress(cachedMap.value(QStringLiteral("progress")).toInt());
273+ item->setRunning(cachedMap.value(QStringLiteral("running")).toBool());
274274 beginInsertRows(QModelIndex(), newPosition, newPosition);
275275 m_list.insert(newPosition, item);
276276 endInsertRows();
@@ -286,7 +286,7 @@ void LauncherModel::refresh()
286286
287287void LauncherModel::propertiesChanged(const QString &user, const QString &interface, const QStringList &changed)
288288{
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"))) {
290290 return;
291291 }
292292 refresh();
plugins/Greeter/Unity/Launcher/plugin.cpp+5−5
@@ -36,11 +36,11 @@ void UnityLauncherPlugin::registerTypes(const char *uri)
3636{
3737 Q_ASSERT(uri == QLatin1String("Unity.Launcher"));
3838
39− qmlRegisterUncreatableType<LauncherModelInterface>(uri, 0, 1, "LauncherModelInterface", "Abstract Interface. Cannot be instantiated.");
40− qmlRegisterUncreatableType<LauncherItemInterface>(uri, 0, 1, "LauncherItemInterface", "Abstract Interface. Cannot be instantiated.");
41− qmlRegisterUncreatableType<QuickListModelInterface>(uri, 0, 1, "QuickListInterface", "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", QStringLiteral("Abstract Interface. Cannot be instantiated."));
41+ qmlRegisterUncreatableType<QuickListModelInterface>(uri, 0, 1, "QuickListInterface", QStringLiteral("Abstract Interface. Cannot be instantiated."));
4242
4343 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.");
45− qmlRegisterUncreatableType<QuickListModel>(uri, 0, 1, "QuickListModel", "Can't create a QuickListModel in QML. Get them from the LauncherItems.");
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", QStringLiteral("Can't create a QuickListModel in QML. Get them from the LauncherItems."));
4646}
plugins/IntegratedLightDM/DBusGreeter.cpp+2−2
@@ -21,7 +21,7 @@
2121#include <QStringList>
2222
2323DBusGreeter::DBusGreeter(Greeter *greeter, const QString &path)
24− : UnityDBusObject(path, "com.canonical.UnityGreeter", true, greeter),
24+ : UnityDBusObject(path, QStringLiteral("com.canonical.UnityGreeter"), true, greeter),
2525 m_greeter(greeter)
2626{
2727 connect(m_greeter, &Greeter::isActiveChanged, this, &DBusGreeter::isActiveChangedHandler);
@@ -44,6 +44,6 @@ void DBusGreeter::HideGreeter()
4444
4545void DBusGreeter::isActiveChangedHandler()
4646{
47− notifyPropertyChanged("IsActive", isActive());
47+ notifyPropertyChanged(QStringLiteral("IsActive"), isActive());
4848 Q_EMIT isActiveChanged();
4949}
plugins/IntegratedLightDM/DBusGreeterList.cpp+3−3
@@ -21,7 +21,7 @@
2121#include <QStringList>
2222
2323DBusGreeterList::DBusGreeterList(Greeter *greeter, const QString &path)
24− : UnityDBusObject(path, "com.canonical.UnityGreeter", true, greeter),
24+ : UnityDBusObject(path, QStringLiteral("com.canonical.UnityGreeter"), true, greeter),
2525 m_greeter(greeter)
2626{
2727 connect(m_greeter, &Greeter::authenticationUserChanged, this, &DBusGreeterList::authenticationUserChangedHandler);
@@ -45,12 +45,12 @@ bool DBusGreeterList::entryIsLocked() const
4545
4646void DBusGreeterList::authenticationUserChangedHandler(const QString &user)
4747{
48− notifyPropertyChanged("ActiveEntry", user);
48+ notifyPropertyChanged(QStringLiteral("ActiveEntry"), user);
4949 Q_EMIT EntrySelected(user);
5050}
5151
5252void DBusGreeterList::promptlessChangedHandler()
5353{
54− notifyPropertyChanged("EntryIsLocked", entryIsLocked());
54+ notifyPropertyChanged(QStringLiteral("EntryIsLocked"), entryIsLocked());
5555 Q_EMIT entryIsLockedChanged();
5656}
plugins/IntegratedLightDM/Greeter.cpp+1−1
@@ -113,7 +113,7 @@ void Greeter::showPromptFilter(const QString &text, QLightDM::Greeter::PromptTyp
113113
114114 // Strip prompt of any colons at the end
115115 QString trimmedText = text.trimmed();
116− if (trimmedText.endsWith(":") || trimmedText.endsWith(":")) {
116+ if (trimmedText.endsWith(':') || trimmedText.endsWith(QStringLiteral(":"))) {
117117 trimmedText.chop(1);
118118 }
119119
plugins/IntegratedLightDM/liblightdm/CMakeLists.txt+1−1
@@ -33,5 +33,5 @@ set_target_properties(MockLightDM-demo-shared PROPERTIES
3333 OUTPUT_NAME lightdm-qt5-2)
3434
3535install(TARGETS MockLightDM-demo-shared
36− DESTINATION ${SHELL_INSTALL_QML}/mocks/LightDM/demo
36+ DESTINATION ${SHELL_INSTALL_QML}/mocks/IntegratedLightDM/demo
3737 )
plugins/IntegratedLightDM/liblightdm/Greeter.cpp+5−5
@@ -55,12 +55,12 @@ bool Greeter::hasGuestAccountHint() const
5555QString Greeter::getHint(const QString &name) const
5656{
5757 Q_UNUSED(name)
58− return "";
58+ return QLatin1String("");
5959}
6060
6161QString Greeter::defaultSessionHint() const
6262{
63− return "ubuntu";
63+ return QStringLiteral("ubuntu");
6464}
6565
6666bool Greeter::hideUsersHint() const
@@ -85,7 +85,7 @@ bool Greeter::lockHint () const
8585
8686QString Greeter::selectUserHint() const
8787{
88− return "";
88+ return QLatin1String("");
8989}
9090
9191bool Greeter::selectGuestHint() const
@@ -95,7 +95,7 @@ bool Greeter::selectGuestHint() const
9595
9696QString Greeter::autologinUserHint() const
9797{
98− return "";
98+ return QLatin1String("");
9999}
100100
101101bool Greeter::autologinGuestHint() const
@@ -115,7 +115,7 @@ bool Greeter::inAuthentication() const
115115
116116QString Greeter::hostname() const
117117{
118− return "hostname1";
118+ return QStringLiteral("hostname1");
119119}
120120
121121bool Greeter::isAuthenticated() const
plugins/IntegratedLightDM/liblightdm/GreeterPrivate.cpp+1−1
@@ -91,7 +91,7 @@ public:
9191 } else {
9292 delete appData;
9393 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);
9595 Q_EMIT greeter->authenticationComplete();
9696 }
9797 }
plugins/IntegratedLightDM/liblightdm/UsersModel.cpp+1−1
@@ -55,7 +55,7 @@ UsersModel::UsersModel(QObject *parent) :
5555 setRoleNames(roles);
5656
5757 // 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/"));
5959 QStringList backgrounds = bgdir.entryList(QDir::Files | QDir::NoDotAndDotDot);
6060
6161 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)
2929 : q_ptr(parent)
3030{
3131 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();
3333
34+ entries.reserve(users.count());
3435 Q_FOREACH(const QString &user, users)
3536 {
3637 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)
3434 Q_UNUSED(scriptEngine)
3535
3636 Greeter *greeter = new Greeter();
37− new DBusGreeter(greeter, "/");
38− new DBusGreeterList(greeter, "/list");
37+ new DBusGreeter(greeter, QStringLiteral("/"));
38+ new DBusGreeterList(greeter, QStringLiteral("/list"));
3939
4040 return greeter;
4141}
@@ -64,6 +64,6 @@ void IntegratedLightDMPlugin::registerTypes(const char *uri)
6464 qRegisterMetaType<QLightDM::Greeter::PromptType>("QLightDM::Greeter::PromptType");
6565 qmlRegisterSingletonType<Greeter>(uri, 0, 1, "Greeter", greeter_provider);
6666 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"));
6868 qmlRegisterSingletonType<UserMetricsOutput::UserMetrics>(uri, 0, 1, "Infographic", infographic_provider);
6969}
plugins/Powerd/Powerd.cpp+11−11
@@ -22,19 +22,19 @@
2222void autoBrightnessChanged(GSettings *settings, const gchar *key, QDBusInterface *unityScreen)
2323{
2424 bool value = g_settings_get_boolean(settings, key);
25− unityScreen->asyncCall("userAutobrightnessEnable", QVariant(value));
25+ unityScreen->asyncCall(QStringLiteral("userAutobrightnessEnable"), QVariant(value));
2626}
2727
2828void activityTimeoutChanged(GSettings *settings, const gchar *key, QDBusInterface *unityScreen)
2929{
3030 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));
3232}
3333
3434void dimTimeoutChanged(GSettings *settings, const gchar *key, QDBusInterface *unityScreen)
3535{
3636 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));
3838}
3939
4040Powerd::Powerd(QObject* parent)
@@ -42,15 +42,15 @@ Powerd::Powerd(QObject* parent)
4242 unityScreen(nullptr),
4343 cachedStatus(Status::On)
4444{
45− unityScreen = new QDBusInterface("com.canonical.Unity.Screen",
46− "/com/canonical/Unity/Screen",
47− "com.canonical.Unity.Screen",
45+ unityScreen = new QDBusInterface(QStringLiteral("com.canonical.Unity.Screen"),
46+ QStringLiteral("/com/canonical/Unity/Screen"),
47+ QStringLiteral("com.canonical.Unity.Screen"),
4848 QDBusConnection::SM_BUSNAME(), this);
4949
50− unityScreen->connection().connect("com.canonical.Unity.Screen",
51− "/com/canonical/Unity/Screen",
52− "com.canonical.Unity.Screen",
53− "DisplayPowerStateChange",
50+ unityScreen->connection().connect(QStringLiteral("com.canonical.Unity.Screen"),
51+ QStringLiteral("/com/canonical/Unity/Screen"),
52+ QStringLiteral("com.canonical.Unity.Screen"),
53+ QStringLiteral("DisplayPowerStateChange"),
5454 this,
5555 SLOT(handleDisplayPowerStateChange(int, int)));
5656
@@ -76,7 +76,7 @@ Powerd::Status Powerd::status() const
7676
7777void Powerd::setStatus(Powerd::Status status, DisplayStateChangeReason reason)
7878{
79− unityScreen->asyncCall("setScreenPowerMode",
79+ unityScreen->asyncCall(QStringLiteral("setScreenPowerMode"),
8080 status == Powerd::On ? "on" : "off",
8181 static_cast<qint32>(reason));
8282}
plugins/ScreenGrabber/screengrabber.cpp+8−6
@@ -19,6 +19,7 @@
1919#include <QDir>
2020#include <QDateTime>
2121#include <QStandardPaths>
22+#include <QTemporaryDir>
2223#include <QtGui/QImage>
2324#include <QtGui/QGuiApplication>
2425#include <QtQuick/QQuickWindow>
@@ -42,14 +43,15 @@ ScreenGrabber::ScreenGrabber(QObject *parent)
4243 QDir screenshotsDir;
4344 if (qEnvironmentVariableIsSet("UNITY_TESTING")) {
4445 qDebug() << "Using test environment";
45− QStandardPaths::setTestModeEnabled(true);
46− screenshotsDir = QStandardPaths::writableLocation(QStandardPaths::DataLocation);
46+ QTemporaryDir tDir;
47+ tDir.setAutoRemove(false);
48+ screenshotsDir = tDir.path();
4749 } else {
4850 qDebug() << "Using real environment";
4951 screenshotsDir = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation);
5052 }
51− screenshotsDir.mkpath("Screenshots");
52− screenshotsDir.cd("Screenshots");
53+ screenshotsDir.mkpath(QStringLiteral("Screenshots"));
54+ screenshotsDir.cd(QStringLiteral("Screenshots"));
5355 if (screenshotsDir.exists()) {
5456 fileNamePrefix = screenshotsDir.absolutePath();
5557 fileNamePrefix.append("/screenshot");
@@ -92,7 +94,7 @@ void ScreenGrabber::captureAndSave()
9294QString ScreenGrabber::makeFileName() const
9395{
9496 QString fileName(fileNamePrefix);
95− fileName.append(QDateTime::currentDateTime().toString("yyyyMMdd_hhmmsszzz"));
97+ fileName.append(QDateTime::currentDateTime().toString(QStringLiteral("yyyyMMdd_hhmmsszzz")));
9698 fileName.append(".");
9799 fileName.append(getFormat());
98100 return fileName;
@@ -101,5 +103,5 @@ QString ScreenGrabber::makeFileName() const
101103QString ScreenGrabber::getFormat() const
102104{
103105 //TODO: This should be configurable (perhaps through gsettings?)
104− return "png";
106+ return QStringLiteral("png");
105107}
plugins/SessionBroadcast/SessionBroadcast.cpp+4−4
@@ -24,10 +24,10 @@ SessionBroadcast::SessionBroadcast(QObject* parent)
2424{
2525 auto connection = QDBusConnection::SM_BUSNAME();
2626
27− connection.connect("com.canonical.Unity.Greeter.Broadcast",
28− "/com/canonical/Unity/Greeter/Broadcast",
29− "com.canonical.Unity.Greeter.Broadcast",
30− "ShowHome",
27+ connection.connect(QStringLiteral("com.canonical.Unity.Greeter.Broadcast"),
28+ QStringLiteral("/com/canonical/Unity/Greeter/Broadcast"),
29+ QStringLiteral("com.canonical.Unity.Greeter.Broadcast"),
30+ QStringLiteral("ShowHome"),
3131 this,
3232 SLOT(onShowHome(const QString &)));
3333}
plugins/Ubuntu/DownloadDaemonListener/interface/downloadtrackeradaptor.h+11−11
@@ -41,68 +41,68 @@ public Q_SLOTS: // METHODS
4141 {
4242 QList<QVariant> argumentList;
4343 argumentList << QVariant::fromValue(allowed);
44− return asyncCallWithArgumentList(QLatin1String("allowGSMDownload"), argumentList);
44+ return asyncCallWithArgumentList(QStringLiteral("allowGSMDownload"), argumentList);
4545 }
4646
4747 inline QDBusPendingReply<> cancel()
4848 {
4949 QList<QVariant> argumentList;
50− return asyncCallWithArgumentList(QLatin1String("cancel"), argumentList);
50+ return asyncCallWithArgumentList(QStringLiteral("cancel"), argumentList);
5151 }
5252
5353 inline QDBusPendingReply<bool> isGSMDownloadAllowed()
5454 {
5555 QList<QVariant> argumentList;
56− return asyncCallWithArgumentList(QLatin1String("isGSMDownloadAllowed"), argumentList);
56+ return asyncCallWithArgumentList(QStringLiteral("isGSMDownloadAllowed"), argumentList);
5757 }
5858
5959 inline QDBusPendingReply<QVariantMap> metadata()
6060 {
6161 QList<QVariant> argumentList;
62− return asyncCallWithArgumentList(QLatin1String("metadata"), argumentList);
62+ return asyncCallWithArgumentList(QStringLiteral("metadata"), argumentList);
6363 }
6464
6565 inline QDBusPendingReply<> pause()
6666 {
6767 QList<QVariant> argumentList;
68− return asyncCallWithArgumentList(QLatin1String("pause"), argumentList);
68+ return asyncCallWithArgumentList(QStringLiteral("pause"), argumentList);
6969 }
7070
7171 inline QDBusPendingReply<qulonglong> progress()
7272 {
7373 QList<QVariant> argumentList;
74− return asyncCallWithArgumentList(QLatin1String("progress"), argumentList);
74+ return asyncCallWithArgumentList(QStringLiteral("progress"), argumentList);
7575 }
7676
7777 inline QDBusPendingReply<> resume()
7878 {
7979 QList<QVariant> argumentList;
80− return asyncCallWithArgumentList(QLatin1String("resume"), argumentList);
80+ return asyncCallWithArgumentList(QStringLiteral("resume"), argumentList);
8181 }
8282
8383 inline QDBusPendingReply<> setThrottle(qulonglong speed)
8484 {
8585 QList<QVariant> argumentList;
8686 argumentList << QVariant::fromValue(speed);
87− return asyncCallWithArgumentList(QLatin1String("setThrottle"), argumentList);
87+ return asyncCallWithArgumentList(QStringLiteral("setThrottle"), argumentList);
8888 }
8989
9090 inline QDBusPendingReply<> start()
9191 {
9292 QList<QVariant> argumentList;
93− return asyncCallWithArgumentList(QLatin1String("start"), argumentList);
93+ return asyncCallWithArgumentList(QStringLiteral("start"), argumentList);
9494 }
9595
9696 inline QDBusPendingReply<qulonglong> throttle()
9797 {
9898 QList<QVariant> argumentList;
99− return asyncCallWithArgumentList(QLatin1String("throttle"), argumentList);
99+ return asyncCallWithArgumentList(QStringLiteral("throttle"), argumentList);
100100 }
101101
102102 inline QDBusPendingReply<qulonglong> totalSize()
103103 {
104104 QList<QVariant> argumentList;
105− return asyncCallWithArgumentList(QLatin1String("totalSize"), argumentList);
105+ return asyncCallWithArgumentList(QStringLiteral("totalSize"), argumentList);
106106 }
107107
108108Q_SIGNALS: // SIGNALS
plugins/Ubuntu/SystemImage/SystemImage.cpp+4−4
@@ -25,9 +25,9 @@ SystemImage::SystemImage(QObject *parent)
2525
2626void SystemImage::factoryReset()
2727{
28− const QDBusMessage msg = QDBusMessage::createMethodCall("com.canonical.SystemImage",
29− "/Service",
30− "com.canonical.SystemImage",
31− "FactoryReset");
28+ const QDBusMessage msg = QDBusMessage::createMethodCall(QStringLiteral("com.canonical.SystemImage"),
29+ QStringLiteral("/Service"),
30+ QStringLiteral("com.canonical.SystemImage"),
31+ QStringLiteral("FactoryReset"));
3232 QDBusConnection::systemBus().asyncCall(msg);
3333}
plugins/Unity/Connectivity/Connectivity.cpp+4−4
@@ -25,9 +25,9 @@ Connectivity::Connectivity(QObject *parent)
2525
2626void Connectivity::unlockAllModems()
2727{
28− const QDBusMessage msg = QDBusMessage::createMethodCall("com.ubuntu.connectivity1",
29− "/com/ubuntu/connectivity1/Private",
30− "com.ubuntu.connectivity1.Private",
31− "UnlockAllModems");
28+ const QDBusMessage msg = QDBusMessage::createMethodCall(QStringLiteral("com.ubuntu.connectivity1"),
29+ QStringLiteral("/com/ubuntu/connectivity1/Private"),
30+ QStringLiteral("com.ubuntu.connectivity1.Private"),
31+ QStringLiteral("UnlockAllModems"));
3232 QDBusConnection::sessionBus().asyncCall(msg);
3333}
plugins/Unity/DashCommunicator/dashcommunicator.cpp+3−3
@@ -41,9 +41,9 @@ void DashCommunicator::setCurrentScope(int index, bool animate, bool isSwipe)
4141
4242void DashCommunicator::run()
4343{
44− m_dashConnection = new DashConnection("com.canonical.UnityDash",
45− "/com/canonical/UnityDash",
46− "", this);
44+ m_dashConnection = new DashConnection(QStringLiteral("com.canonical.UnityDash"),
45+ QStringLiteral("/com/canonical/UnityDash"),
46+ QLatin1String(""), this);
4747 m_mutex.lock();
4848 m_created = true;
4949 m_mutex.unlock();
plugins/Unity/DashCommunicator/dashconnection.cpp+1−1
@@ -58,6 +58,6 @@ QDBusAbstractInterface* DashConnection::createInterface(const QString &service,
5858void DashConnection::setCurrentScope(int index, bool animate, bool isSwipe)
5959{
6060 if (dbusInterface()) {
61− dbusInterface()->asyncCall("SetCurrentScope", index, animate, isSwipe);
61+ dbusInterface()->asyncCall(QStringLiteral("SetCurrentScope"), index, animate, isSwipe);
6262 }
6363}
plugins/Unity/DashCommunicator/dbusdashcommunicatorservice.cpp+1−1
@@ -21,7 +21,7 @@
2121#include <QDebug>
2222
2323DBusDashCommunicatorService::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)
2525{
2626}
2727
plugins/Unity/Indicators/indicator.cpp+8−8
@@ -37,20 +37,20 @@ void Indicator::init(const QString& busName, const QSettings& settings)
3737 // that we can't just copy the object.
3838 m_settings.clear();
3939 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"))) {
4141 m_settings.insert(key, settings.value(key));
4242 }
4343 }
4444
45− setId(settings.value("Indicator Service/Name").toString());
45+ setId(settings.value(QStringLiteral("Indicator Service/Name")).toString());
4646
47− QString actionObjectPath = settings.value("Indicator Service/ObjectPath").toString();
47+ QString actionObjectPath = settings.value(QStringLiteral("Indicator Service/ObjectPath")).toString();
4848
4949 QVariantMap properties;
5050 properties.clear();
51− properties.insert("busType", 1);
52− properties.insert("busName", busName);
53− properties.insert("actionsObjectPath", actionObjectPath);
51+ properties.insert(QStringLiteral("busType"), 1);
52+ properties.insert(QStringLiteral("busName"), busName);
53+ properties.insert(QStringLiteral("actionsObjectPath"), actionObjectPath);
5454 setIndicatorProperties(properties);
5555}
5656
@@ -84,12 +84,12 @@ void Indicator::setProfile(const QString& profile)
8484{
8585 QVariant pos = m_settings.value(profile + "/Position");
8686 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));
8888 setPosition(pos.toInt());
8989
9090 QString menuObjectPath = m_settings.value(profile + "/ObjectPath").toString();
9191 QVariantMap map = m_properties.toMap();
92− map.insert("menuObjectPath", menuObjectPath);
92+ map.insert(QStringLiteral("menuObjectPath"), menuObjectPath);
9393 setIndicatorProperties(map);
9494}
9595
plugins/Unity/Indicators/indicatorsmanager.cpp+4−4
@@ -44,7 +44,7 @@ public:
4444IndicatorsManager::IndicatorsManager(QObject* parent)
4545 : QObject(parent)
4646 , m_loaded(false)
47− , m_profile("phone")
47+ , m_profile(QStringLiteral("phone"))
4848{
4949}
5050
@@ -115,7 +115,7 @@ void IndicatorsManager::loadDir(const QDir& dir)
115115void IndicatorsManager::loadFile(const QFileInfo& file_info)
116116{
117117 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();
119119
120120 auto iter = m_indicatorsData.find(name);
121121 if (iter != m_indicatorsData.end())
@@ -286,9 +286,9 @@ Indicator::Ptr IndicatorsManager::indicator(const QString& indicator_name)
286286 return new_indicator;
287287}
288288
289−QList<Indicator::Ptr> IndicatorsManager::indicators()
289+QVector<Indicator::Ptr> IndicatorsManager::indicators()
290290{
291− QList<Indicator::Ptr> list;
291+ QVector<Indicator::Ptr> list;
292292 Q_FOREACH(IndicatorData* data, m_indicatorsData)
293293 {
294294 Indicator::Ptr ret = indicator(data->m_name);
plugins/Unity/Indicators/indicatorsmanager.h+1−1
@@ -45,7 +45,7 @@ public:
4545
4646 Indicator::Ptr indicator(const QString& indicator_name);
4747
48− QList<Indicator::Ptr> indicators();
48+ QVector<Indicator::Ptr> indicators();
4949
5050 bool isLoaded() const;
5151
plugins/Unity/Indicators/modelprinter.cpp+3−3
@@ -60,7 +60,7 @@ QString ModelPrinter::text()
6060
6161QString tabify(int level) { QString str;
6262 for (int i = 0; i < level; i++) {
63− str += " ";
63+ str += QLatin1String(" ");
6464 }
6565 return str;
6666}
@@ -68,7 +68,7 @@ QString tabify(int level) { QString str;
6868QString ModelPrinter::getModelDataString(UnityMenuModel* sourceModel, int level)
6969{
7070 if (!sourceModel)
71− return "";
71+ return QLatin1String("");
7272
7373 QString str;
7474 QTextStream stream(&str);
@@ -110,7 +110,7 @@ QString ModelPrinter::getRowSring(UnityMenuModel* sourceModel, int row, int dept
110110 return str;
111111}
112112
113−QString ModelPrinter::getVariantString(const QString& roleName, const QVariant vData ) const
113+QString ModelPrinter::getVariantString(const QString& roleName, const QVariant &vData) const
114114{
115115 QString str;
116116 QTextStream stream(&str);
plugins/Unity/Indicators/modelprinter.h+2−2
@@ -46,10 +46,10 @@ Q_SIGNALS:
4646private:
4747 QString getModelDataString(UnityMenuModel* sourceModel, int level);
4848 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;
5050
5151 UnityMenuModel* m_model;
5252 QList<UnityMenuModel*> m_children;
5353};
5454
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)
5858
5959 qmlRegisterSingletonType<UnityMenuModelCache>(uri, 0, 1, "UnityMenuModelCache", menuModelCacheSingleton);
6060
61− qmlRegisterUncreatableType<MenuContentState>(uri, 0, 1, "MenuContentState", "Can't create MenuContentState class");
62− qmlRegisterUncreatableType<ActionState>(uri, 0, 1, "ActionState", "Can't create ActionState class");
63− qmlRegisterUncreatableType<NetworkActionState>(uri, 0, 1, "NetworkActionState", "Can't create NetworkActionState class");
64− qmlRegisterUncreatableType<NetworkConnection>(uri, 0, 1, "NetworkConnection", "Can't create NetworkConnection class");
65− qmlRegisterUncreatableType<IndicatorsModelRole>(uri, 0, 1, "IndicatorsModelRole", "Can't create IndicatorsModelRole class");
66− qmlRegisterUncreatableType<FlatMenuProxyModelRole>(uri, 0, 1, "FlatMenuProxyModelRole", "Can't create FlatMenuProxyModelRole class");
61+ qmlRegisterUncreatableType<MenuContentState>(uri, 0, 1, "MenuContentState", QStringLiteral("Can't create MenuContentState class"));
62+ qmlRegisterUncreatableType<ActionState>(uri, 0, 1, "ActionState", QStringLiteral("Can't create ActionState class"));
63+ qmlRegisterUncreatableType<NetworkActionState>(uri, 0, 1, "NetworkActionState", QStringLiteral("Can't create NetworkActionState class"));
64+ qmlRegisterUncreatableType<NetworkConnection>(uri, 0, 1, "NetworkConnection", QStringLiteral("Can't create NetworkConnection class"));
65+ qmlRegisterUncreatableType<IndicatorsModelRole>(uri, 0, 1, "IndicatorsModelRole", QStringLiteral("Can't create IndicatorsModelRole class"));
66+ qmlRegisterUncreatableType<FlatMenuProxyModelRole>(uri, 0, 1, "FlatMenuProxyModelRole", QStringLiteral("Can't create FlatMenuProxyModelRole class"));
6767}
plugins/Unity/Indicators/rootstateparser.cpp+16−16
@@ -39,7 +39,7 @@ static QString iconUri(GIcon *icon)
3939 }
4040
4141 if (!iconNameList.empty()) {
42− uri = QString("image://theme/%1").arg(iconNameList.join(","));
42+ uri = QStringLiteral("image://theme/%1").arg(iconNameList.join(QStringLiteral(",")));
4343 }
4444 }
4545 else if (G_IS_FILE_ICON (icon)) {
@@ -63,7 +63,7 @@ static QString iconUri(GIcon *icon)
6363 data = g_bytes_get_data (g_bytes_icon_get_bytes (G_BYTES_ICON (icon)), &size);
6464 base64 = g_base64_encode ((const guchar *) data, size);
6565
66− uri = QString("data://");
66+ uri = QStringLiteral("data://");
6767 uri.append (base64);
6868
6969 g_free (base64);
@@ -88,7 +88,7 @@ QVariant RootStateParser::toQVariant(GVariant* state) const
8888 while (g_variant_iter_loop (&iter, "{sv}", &key, &vvalue))
8989 {
9090 QString str = QString::fromUtf8(key);
91− if (str == "icon" && !qmap.contains("icons")) {
91+ if (str == QLatin1String("icon") && !qmap.contains(QStringLiteral("icons"))) {
9292 QStringList icons;
9393
9494 // FIXME - should be sending a url.
@@ -97,9 +97,9 @@ QVariant RootStateParser::toQVariant(GVariant* state) const
9797 icons << iconUri(gicon);
9898 g_object_unref (gicon);
9999 }
100− qmap.insert("icons", icons);
100+ qmap.insert(QStringLiteral("icons"), icons);
101101
102− } else if (str == "icons") {
102+ } else if (str == QLatin1String("icons")) {
103103
104104 QStringList icons;
105105
@@ -118,7 +118,7 @@ QVariant RootStateParser::toQVariant(GVariant* state) const
118118 }
119119 }
120120 // will overwrite icon.
121− qmap.insert("icons", icons);
121+ qmap.insert(QStringLiteral("icons"), icons);
122122
123123 } else {
124124 qmap.insert(str, ActionStateParser::toQVariant(vvalue));
@@ -141,13 +141,13 @@ QVariant RootStateParser::toQVariant(GVariant* state) const
141141 &accessible_name,
142142 &visible);
143143
144− qmap["label"] = label ? QString::fromUtf8(label) : "";
145− qmap["accessible-desc"] = accessible_name ? QString::fromUtf8(accessible_name) : "";
146− qmap["visible"] = visible;
144+ qmap[QStringLiteral("label")] = label ? QString::fromUtf8(label) : QLatin1String("");
145+ qmap[QStringLiteral("accessible-desc")] = accessible_name ? QString::fromUtf8(accessible_name) : QLatin1String("");
146+ qmap[QStringLiteral("visible")] = visible;
147147
148148 gicon = g_icon_new_for_string (icon, nullptr);
149149 if (gicon) {
150− qmap["icons"] = QStringList() << iconUri(gicon);
150+ qmap[QStringLiteral("icons")] = QStringList() << iconUri(gicon);
151151 g_object_unref (gicon);
152152 }
153153
@@ -170,42 +170,42 @@ QString RootStateObject::title() const
170170{
171171 if (!valid()) return QString();
172172
173− return m_currentState.value("title", QVariant::fromValue(QString())).toString();
173+ return m_currentState.value(QStringLiteral("title"), QVariant::fromValue(QString())).toString();
174174}
175175
176176QString RootStateObject::leftLabel() const
177177{
178178 if (!valid()) return QString();
179179
180− return m_currentState.value("pre-label", QVariant::fromValue(QString())).toString();
180+ return m_currentState.value(QStringLiteral("pre-label"), QVariant::fromValue(QString())).toString();
181181}
182182
183183QString RootStateObject::rightLabel() const
184184{
185185 if (!valid()) return QString();
186186
187− return m_currentState.value("label", QVariant::fromValue(QString())).toString();
187+ return m_currentState.value(QStringLiteral("label"), QVariant::fromValue(QString())).toString();
188188}
189189
190190QStringList RootStateObject::icons() const
191191{
192192 if (!valid()) return QStringList();
193193
194− return m_currentState.value("icons", QVariant::fromValue(QStringList())).toStringList();
194+ return m_currentState.value(QStringLiteral("icons"), QVariant::fromValue(QStringList())).toStringList();
195195}
196196
197197QString RootStateObject::accessibleName() const
198198{
199199 if (!valid()) return QString();
200200
201− return m_currentState.value("accessible-desc", QVariant::fromValue(QString())).toString();
201+ return m_currentState.value(QStringLiteral("accessible-desc"), QVariant::fromValue(QString())).toString();
202202}
203203
204204bool RootStateObject::indicatorVisible() const
205205{
206206 if (!valid()) return false;
207207
208− return m_currentState.value("visible", QVariant::fromValue(true)).toBool();
208+ return m_currentState.value(QStringLiteral("visible"), QVariant::fromValue(true)).toBool();
209209}
210210
211211void RootStateObject::setCurrentState(const QVariantMap& newState)
plugins/Unity/Launcher/asadapter.cpp+10−9
@@ -38,25 +38,26 @@ void ASAdapter::syncItems(const QList<LauncherItem*> &list)
3838{
3939 if (m_accounts && !m_user.isEmpty()) {
4040 QList<QVariantMap> items;
41+ items.reserve(list.count());
4142
4243 Q_FOREACH(LauncherItem *item, list) {
4344 items << itemToVariant(item);
4445 }
4546
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));
4748 }
4849}
4950
5051QVariantMap ASAdapter::itemToVariant(LauncherItem *item) const
5152{
5253 QVariantMap details;
53− details.insert("id", item->appId());
54− details.insert("name", item->name());
55− details.insert("icon", item->icon());
56− details.insert("count", item->count());
57− details.insert("countVisible", item->countVisible());
58− details.insert("pinned", item->pinned());
59− details.insert("running", item->running());
60− details.insert("progress", item->progress());
54+ details.insert(QStringLiteral("id"), item->appId());
55+ details.insert(QStringLiteral("name"), item->name());
56+ details.insert(QStringLiteral("icon"), item->icon());
57+ details.insert(QStringLiteral("count"), item->count());
58+ details.insert(QStringLiteral("countVisible"), item->countVisible());
59+ details.insert(QStringLiteral("pinned"), item->pinned());
60+ details.insert(QStringLiteral("running"), item->running());
61+ details.insert(QStringLiteral("progress"), item->progress());
6162 return details;
6263}
plugins/Unity/Launcher/dbusinterface.cpp+33−33
@@ -27,7 +27,7 @@
2727#include <QDebug>
2828
2929DBusInterface::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),
3131 m_launcherModel(parent)
3232{
3333}
@@ -35,13 +35,13 @@ DBusInterface::DBusInterface(LauncherModel *parent):
3535QString DBusInterface::introspect(const QString &path) const
3636{
3737 /* 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")) {
3939 QString nodes;
4040
4141 // Add Refresh to introspect
42− nodes = "<interface name=\"com.canonical.Unity.Launcher\">"
42+ nodes = QStringLiteral("<interface name=\"com.canonical.Unity.Launcher\">"
4343 "<method name=\"Refresh\"/>"
44− "</interface>";
44+ "</interface>");
4545
4646 // Add dynamic properties for launcher emblems
4747 for (int i = 0; i < m_launcherModel->rowCount(); i++) {
@@ -53,18 +53,18 @@ QString DBusInterface::introspect(const QString &path) const
5353 }
5454
5555 /* Should not happen, but let's handle it */
56− if (!path.startsWith("/com/canonical/Unity/Launcher")) {
57− return "";
56+ if (!path.startsWith(QLatin1String("/com/canonical/Unity/Launcher"))) {
57+ return QLatin1String("");
5858 }
5959
6060 /* Now we should be looking at a node */
6161 QString nodeiface =
62− "<interface name=\"com.canonical.Unity.Launcher.Item\">"
62+ QStringLiteral("<interface name=\"com.canonical.Unity.Launcher.Item\">"
6363 "<property name=\"count\" type=\"i\" access=\"readwrite\" />"
6464 "<property name=\"countVisible\" type=\"b\" access=\"readwrite\" />"
6565 "<property name=\"progress\" type=\"i\" access=\"readwrite\" />"
6666 "<method name=\"Alert\" />"
67− "</interface>";
67+ "</interface>");
6868 return nodeiface;
6969}
7070
@@ -109,7 +109,7 @@ QString DBusInterface::encodeAppId(const QString& appId)
109109 (chr >= '0' && chr <= '9'&& i != 0)) {
110110 encoded.append(chr);
111111 } else {
112− QString hexval = QString("_%1").arg(chr, 2, 16, QChar('0'));
112+ QString hexval = QStringLiteral("_%1").arg(chr, 2, 16, QChar('0'));
113113 encoded.append(hexval.toUpper());
114114 }
115115 }
@@ -127,10 +127,10 @@ bool DBusInterface::handleMessage(const QDBusMessage& message, const QDBusConnec
127127 /* Break down the path to just the app id */
128128 bool validpath = true;
129129 QString pathtemp = message.path();
130− if (!pathtemp.startsWith("/com/canonical/Unity/Launcher/")) {
130+ if (!pathtemp.startsWith(QLatin1String("/com/canonical/Unity/Launcher/"))) {
131131 validpath = false;
132132 }
133− pathtemp.remove("/com/canonical/Unity/Launcher/");
133+ pathtemp.remove(QStringLiteral("/com/canonical/Unity/Launcher/"));
134134 if (pathtemp.indexOf('/') >= 0) {
135135 validpath = false;
136136 }
@@ -139,15 +139,15 @@ bool DBusInterface::handleMessage(const QDBusMessage& message, const QDBusConnec
139139 QString appid = decodeAppId(pathtemp);
140140
141141 // First handle methods of the Launcher interface
142− if (message.interface() == "com.canonical.Unity.Launcher") {
143− if (message.member() == "Refresh") {
142+ if (message.interface() == QLatin1String("com.canonical.Unity.Launcher")) {
143+ if (message.member() == QLatin1String("Refresh")) {
144144 QDBusMessage reply = message.createReply();
145145 Q_EMIT refreshCalled();
146146 return connection.send(reply);
147147 }
148− } else if (message.interface() == "com.canonical.Unity.Launcher.Item") {
148+ } else if (message.interface() == QLatin1String("com.canonical.Unity.Launcher.Item")) {
149149 // Handle methods of the Launcher-Item interface
150− if (message.member() == "Alert" && validpath) {
150+ if (message.member() == QLatin1String("Alert") && validpath) {
151151 QDBusMessage reply = message.createReply();
152152 Q_EMIT alertCalled(appid);
153153 return connection.send(reply);
@@ -155,15 +155,15 @@ bool DBusInterface::handleMessage(const QDBusMessage& message, const QDBusConnec
155155 }
156156
157157 // Now handle dynamic properties (for launcher emblems)
158− if (message.interface() != "org.freedesktop.DBus.Properties") {
158+ if (message.interface() != QLatin1String("org.freedesktop.DBus.Properties")) {
159159 return false;
160160 }
161161
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"))) {
163163 return false;
164164 }
165165
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"))) {
167167 return false;
168168 }
169169
@@ -175,45 +175,45 @@ bool DBusInterface::handleMessage(const QDBusMessage& message, const QDBusConnec
175175 LauncherItem *item = static_cast<LauncherItem*>(m_launcherModel->get(index));
176176
177177 QVariantList retval;
178− if (message.member() == "Get") {
178+ if (message.member() == QLatin1String("Get")) {
179179 QString cachedString = message.arguments()[1].toString();
180180 if (!item) {
181181 return false;
182182 }
183− if (cachedString == "count") {
183+ if (cachedString == QLatin1String("count")) {
184184 retval.append(QVariant::fromValue(QDBusVariant(item->count())));
185− } else if (cachedString == "countVisible") {
185+ } else if (cachedString == QLatin1String("countVisible")) {
186186 retval.append(QVariant::fromValue(QDBusVariant(item->countVisible())));
187− } else if (cachedString == "progress") {
187+ } else if (cachedString == QLatin1String("progress")) {
188188 retval.append(QVariant::fromValue(QDBusVariant(item->progress())));
189189 }
190− } else if (message.member() == "Set") {
190+ } else if (message.member() == QLatin1String("Set")) {
191191 QString cachedString = message.arguments()[1].toString();
192− if (cachedString == "count") {
192+ if (cachedString == QLatin1String("count")) {
193193 int newCount = message.arguments()[2].value<QDBusVariant>().variant().toInt();
194194 if (!item || newCount != item->count()) {
195195 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));
197197 }
198− } else if (cachedString == "countVisible") {
198+ } else if (cachedString == QLatin1String("countVisible")) {
199199 bool newVisible = message.arguments()[2].value<QDBusVariant>().variant().toBool();
200200 if (!item || newVisible != item->countVisible()) {
201201 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);
203203 }
204− } else if (cachedString == "progress") {
204+ } else if (cachedString == QLatin1String("progress")) {
205205 int newProgress = message.arguments()[2].value<QDBusVariant>().variant().toInt();
206206 if (!item || newProgress != item->progress()) {
207207 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));
209209 }
210210 }
211− } else if (message.member() == "GetAll") {
211+ } else if (message.member() == QLatin1String("GetAll")) {
212212 if (item) {
213213 QVariantMap all;
214− all.insert("count", item->count());
215− all.insert("countVisible", item->countVisible());
216− all.insert("progress", item->progress());
214+ all.insert(QStringLiteral("count"), item->count());
215+ all.insert(QStringLiteral("countVisible"), item->countVisible());
216+ all.insert(QStringLiteral("progress"), item->progress());
217217 retval.append(all);
218218 }
219219 } else {
plugins/Unity/Launcher/desktopfilehandler.cpp+17−16
@@ -70,7 +70,7 @@ void DesktopFileHandler::load()
7070
7171 QStringList searchDirs = QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation);
7272#ifdef LAUNCHER_TESTING
73− searchDirs << ".";
73+ searchDirs << QStringLiteral(".");
7474#endif
7575
7676 QString path;
@@ -79,14 +79,15 @@ void DesktopFileHandler::load()
7979 helper.replace(dashPos, 1, '/');
8080 }
8181
82− if (helper.contains("/")) {
83− path += helper.split('/').first() + '/';
82+ if (helper.contains('/')) {
83+ path += helper.split('/').at(0) + '/';
8484 helper.remove(QRegExp("^" + path));
8585 }
8686
8787 Q_FOREACH(const QString &searchDirName, searchDirs) {
8888 QDir searchDir(searchDirName + "/" + path);
89− Q_FOREACH(const QString &desktopFile, searchDir.entryList(QStringList() << "*.desktop")) {
89+ const QString desktop = QStringLiteral("*.desktop");
90+ Q_FOREACH(const QString &desktopFile, searchDir.entryList(QStringList() << desktop)) {
9091 if (desktopFile.startsWith(helper)) {
9192 QFileInfo fileInfo(searchDir, desktopFile);
9293 m_filename = fileInfo.absoluteFilePath();
@@ -95,7 +96,7 @@ void DesktopFileHandler::load()
9596 }
9697 }
9798
98− dashPos = helper.indexOf("-");
99+ dashPos = helper.indexOf('-');
99100 } while (dashPos != -1);
100101}
101102
@@ -107,25 +108,25 @@ QString DesktopFileHandler::displayName() const
107108
108109 QSettings settings(m_filename, QSettings::IniFormat);
109110 settings.setIniCodec("UTF-8");
110− settings.beginGroup("Desktop Entry");
111+ settings.beginGroup(QStringLiteral("Desktop Entry"));
111112
112113 // First try to find Name[xx_YY] and Name[xx] in .desktop file
113114 QString locale = QLocale().name();
114115 QString shortLocale = locale.split('_').first();
115116
116− if (locale != shortLocale && settings.contains(QString("Name[%1]").arg(locale))) {
117− return settings.value(QString("Name[%1]").arg(locale)).toString();
117+ if (locale != shortLocale && settings.contains(QStringLiteral("Name[%1]").arg(locale))) {
118+ return settings.value(QStringLiteral("Name[%1]").arg(locale)).toString();
118119 }
119120
120− if (settings.contains(QString("Name[%1]").arg(shortLocale))) {
121− return settings.value(QString("Name[%1]").arg(shortLocale)).toString();
121+ if (settings.contains(QStringLiteral("Name[%1]").arg(shortLocale))) {
122+ return settings.value(QStringLiteral("Name[%1]").arg(shortLocale)).toString();
122123 }
123124
124125 // 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();
126127
127− if (settings.contains("X-Ubuntu-Gettext-Domain")) {
128− const QString domain = settings.value("X-Ubuntu-Gettext-Domain").toString();
128+ if (settings.contains(QStringLiteral("X-Ubuntu-Gettext-Domain"))) {
129+ const QString domain = settings.value(QStringLiteral("X-Ubuntu-Gettext-Domain")).toString();
129130 return dgettext(domain.toUtf8().constData(), displayName.toUtf8().constData());
130131 }
131132
@@ -140,9 +141,9 @@ QString DesktopFileHandler::icon() const
140141
141142 QSettings settings(m_filename, QSettings::IniFormat);
142143 settings.setIniCodec("UTF-8");
143− settings.beginGroup("Desktop Entry");
144− QString iconString = settings.value("Icon").toString();
145− QString pathString = settings.value("Path").toString();
144+ settings.beginGroup(QStringLiteral("Desktop Entry"));
145+ QString iconString = settings.value(QStringLiteral("Icon")).toString();
146+ QString pathString = settings.value(QStringLiteral("Path")).toString();
146147
147148 if (QFileInfo(iconString).exists()) {
148149 return QFileInfo(iconString).absoluteFilePath();
plugins/Unity/Launcher/gsettings.cpp+15−12
@@ -32,20 +32,22 @@ QStringList GSettings::storedApplications() const
3232{
3333 QStringList storedApps;
3434
35− Q_FOREACH(const QString &entry, m_gSettings->get("items").toStringList()) {
36− if (entry.startsWith("application:///")) {
35+ const QString items = QStringLiteral("items");
36+ Q_FOREACH(const QString &entry, m_gSettings->get(items).toStringList()) {
37+ if (entry.startsWith(QLatin1String("application:///"))) {
3738 // convert legacy entries to new world appids
3839 QString appId = entry;
3940 // Transform "application://foobar.desktop" to "foobar"
40− appId.remove(QRegExp("^application:///"));
41− appId.remove(QRegExp(".desktop$"));
41+ appId.remove(QRegExp(QStringLiteral("^application:///")));
42+ appId.remove(QRegExp(QStringLiteral(".desktop$")));
4243 storedApps << appId;
43− } else if (entry.startsWith("appid://")) {
44+ } else if (entry.startsWith(QLatin1String("appid://"))) {
4445 QString appId = entry;
45− appId.remove("appid://");
46− if (appId.split('/').count() == 3) {
46+ appId.remove(QStringLiteral("appid://"));
47+ const QStringList splittedAppId = appId.split('/');
48+ if (splittedAppId.count() == 3) {
4749 // Strip current-user-version in case its there
48− appId = appId.split('/').first() + "_" + appId.split('/').at(1);
50+ appId = splittedAppId.first() + "_" + splittedAppId.at(1);
4951 }
5052 storedApps << appId;
5153 }
@@ -56,19 +58,20 @@ QStringList GSettings::storedApplications() const
5658void GSettings::setStoredApplications(const QStringList &storedApplications)
5759{
5860 QStringList gSettingsList;
61+ gSettingsList.reserve(storedApplications.count());
5962 Q_FOREACH(const QString &entry, storedApplications) {
60− gSettingsList << QString("appid://%1").arg(entry);
63+ gSettingsList << QStringLiteral("appid://%1").arg(entry);
6164 }
6265 // GSettings will emit a changed signal to ourselves. Let's cache the items
6366 // and only forward the changed signal when the list did actually change.
6467 m_cachedItems = gSettingsList;
65− m_gSettings->set("items", gSettingsList);
68+ m_gSettings->set(QStringLiteral("items"), gSettingsList);
6669}
6770
6871void GSettings::onSettingsChanged(const QString &key)
6972{
70− if (key == "items") {
71− const QStringList cachedItems = m_gSettings->get("items").toStringList();
73+ if (key == QLatin1String("items")) {
74+ const QStringList cachedItems = m_gSettings->get(QStringLiteral("items")).toStringList();
7275 if (m_cachedItems != cachedItems) {
7376 m_cachedItems = cachedItems;
7477 Q_EMIT changed();
plugins/Unity/Launcher/launcheritem.cpp+6−6
@@ -38,17 +38,17 @@ LauncherItem::LauncherItem(const QString &appId, const QString &name, const QStr
3838 m_quickList(new QuickListModel(this))
3939{
4040 QuickListEntry nameAction;
41− nameAction.setActionId("launch_item");
41+ nameAction.setActionId(QStringLiteral("launch_item"));
4242 nameAction.setText(m_name);
4343 m_quickList->appendAction(nameAction);
4444
4545 QuickListEntry pinningAction;
46− pinningAction.setActionId("pin_item");
46+ pinningAction.setActionId(QStringLiteral("pin_item"));
4747 pinningAction.setText(gettext("Pin shortcut"));
4848 m_quickList->appendAction(pinningAction);
4949
50− m_quitAction.setActionId("stop_item");
51− m_quitAction.setIcon("application-exit");
50+ m_quitAction.setActionId(QStringLiteral("stop_item"));
51+ m_quitAction.setIcon(QStringLiteral("application-exit"));
5252 m_quitAction.setText(gettext("Quit"));
5353}
5454
@@ -67,7 +67,7 @@ void LauncherItem::setName(const QString &name)
6767 if (m_name != name) {
6868 m_name = name;
6969 QuickListEntry entry;
70− entry.setActionId("launch_item");
70+ entry.setActionId(QStringLiteral("launch_item"));
7171 entry.setText(m_name);
7272 m_quickList->updateAction(entry);
7373 Q_EMIT nameChanged(name);
@@ -102,7 +102,7 @@ void LauncherItem::setPinned(bool pinned)
102102 // Even if pinned status didn't change, we want to update text in case
103103 // the locale has changed since we last set pinned status.
104104 QuickListEntry entry;
105− entry.setActionId("pin_item");
105+ entry.setActionId(QStringLiteral("pin_item"));
106106 entry.setText(pinned ? gettext("Unpin shortcut") : gettext("Pin shortcut"));
107107 m_quickList->updateAction(entry);
108108}
plugins/Unity/Launcher/launchermodel.cpp+6−6
@@ -204,15 +204,15 @@ void LauncherModel::quickListActionInvoked(const QString &appId, int actionIndex
204204 const QString actionId = model->get(actionIndex).actionId();
205205
206206 // Check if this is one of the launcher actions we handle ourselves
207− if (actionId == "pin_item") {
207+ if (actionId == QLatin1String("pin_item")) {
208208 if (item->pinned()) {
209209 requestRemove(appId);
210210 } else {
211211 pin(appId);
212212 }
213− } else if (actionId == "launch_item") {
213+ } else if (actionId == QLatin1String("launch_item")) {
214214 QDesktopServices::openUrl(getUrlForAppId(appId));
215− } else if (actionId == "stop_item") { // Quit
215+ } else if (actionId == QLatin1String("stop_item")) { // Quit
216216 if (m_appManager) {
217217 m_appManager->stopApplication(appId);
218218 }
@@ -236,13 +236,13 @@ QString LauncherModel::getUrlForAppId(const QString &appId) const
236236 return QString();
237237 }
238238
239− if (!appId.contains("_")) {
239+ if (!appId.contains('_')) {
240240 return "application:///" + appId + ".desktop";
241241 }
242242
243243 QStringList parts = appId.split('_');
244244 QString package = parts.value(0);
245− QString app = parts.value(1, "first-listed-app");
245+ QString app = parts.value(1, QStringLiteral("first-listed-app"));
246246 return "appid://" + package + "/" + app + "/current-user-version";
247247}
248248
@@ -503,7 +503,7 @@ void LauncherModel::applicationAdded(const QModelIndex &parent, int row)
503503 return;
504504 }
505505
506− if (app->appId() == "unity8-dash") {
506+ if (app->appId() == QLatin1String("unity8-dash")) {
507507 // Not adding the dash app
508508 return;
509509 }
plugins/Unity/Launcher/plugin.cpp+5−5
@@ -39,11 +39,11 @@ void UnityLauncherPlugin::registerTypes(const char *uri)
3939{
4040 Q_ASSERT(uri == QLatin1String("Unity.Launcher"));
4141
42− qmlRegisterUncreatableType<LauncherModelInterface>(uri, 0, 1, "LauncherModelInterface", "Abstract Interface. Cannot be instantiated.");
43− qmlRegisterUncreatableType<LauncherItemInterface>(uri, 0, 1, "LauncherItemInterface", "Abstract Interface. Cannot be instantiated.");
44− qmlRegisterUncreatableType<QuickListModelInterface>(uri, 0, 1, "QuickListInterface", "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", QStringLiteral("Abstract Interface. Cannot be instantiated."));
44+ qmlRegisterUncreatableType<QuickListModelInterface>(uri, 0, 1, "QuickListInterface", QStringLiteral("Abstract Interface. Cannot be instantiated."));
4545
4646 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.");
48− qmlRegisterUncreatableType<QuickListModel>(uri, 0, 1, "QuickListModel", "Can't create a QuickListModel in QML. Get them from the LauncherItems.");
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", QStringLiteral("Can't create a QuickListModel in QML. Get them from the LauncherItems."));
4949}
plugins/Unity/Session/dbusunitysessionservice.cpp+41−41
@@ -58,7 +58,7 @@ public:
5858 QDBusMessage msg = QDBusMessage::createMethodCall(LOGIN1_SERVICE,
5959 LOGIN1_PATH,
6060 LOGIN1_IFACE,
61− "GetSessionByPID");
61+ QStringLiteral("GetSessionByPID"));
6262 msg << (quint32) getpid();
6363
6464 QDBusReply<QDBusObjectPath> reply = QDBusConnection::systemBus().asyncCall(msg);
@@ -66,13 +66,13 @@ public:
6666 logindSessionPath = reply.value().path();
6767
6868 // 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"),
7070 this, SLOT(onPropertiesChanged(QString,QVariantMap,QStringList)));
7171
7272 setupSystemdInhibition();
7373
7474 // 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"),
7676 this, SLOT(onResuming(bool)));
7777 } else {
7878 qWarning() << "Failed to get logind session path" << reply.error().message();
@@ -87,7 +87,7 @@ public:
8787 // inhibit systemd handling of power/sleep/lid buttons
8888 // http://www.freedesktop.org/wiki/Software/systemd/inhibit
8989
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"));
9191 msg << "handle-power-key:handle-suspend-key:handle-hibernate-key:handle-lid-switch"; // what
9292 msg << "Unity"; // who
9393 msg << "Unity8 handles power events"; // why
@@ -128,8 +128,8 @@ public:
128128
129129 QDBusMessage msg = QDBusMessage::createMethodCall(LOGIN1_SERVICE,
130130 logindSessionPath,
131− "org.freedesktop.DBus.Properties",
132− "Get");
131+ QStringLiteral("org.freedesktop.DBus.Properties"),
132+ QStringLiteral("Get"));
133133 msg << LOGIN1_SESSION_IFACE;
134134 msg << ACTIVE_KEY;
135135
@@ -154,8 +154,8 @@ public:
154154 {
155155 QDBusMessage msg = QDBusMessage::createMethodCall(LOGIN1_SERVICE,
156156 logindSessionPath,
157− "org.freedesktop.DBus.Properties",
158− "Get");
157+ QStringLiteral("org.freedesktop.DBus.Properties"),
158+ QStringLiteral("Get"));
159159 msg << LOGIN1_SESSION_IFACE;
160160 msg << IDLE_SINCE_KEY;
161161
@@ -174,7 +174,7 @@ public:
174174 QDBusMessage msg = QDBusMessage::createMethodCall(LOGIN1_SERVICE,
175175 logindSessionPath,
176176 LOGIN1_SESSION_IFACE,
177− "SetIdleHint");
177+ QStringLiteral("SetIdleHint"));
178178 msg << idle;
179179 QDBusConnection::systemBus().asyncCall(msg);
180180 }
@@ -217,14 +217,14 @@ Q_SIGNALS:
217217Q_GLOBAL_STATIC(DBusUnitySessionServicePrivate, d)
218218
219219DBusUnitySessionService::DBusUnitySessionService()
220− : UnityDBusObject("/com/canonical/Unity/Session", "com.canonical.Unity")
220+ : UnityDBusObject(QStringLiteral("/com/canonical/Unity/Session"), QStringLiteral("com.canonical.Unity"))
221221{
222222 if (!d->logindSessionPath.isEmpty()) {
223223 // 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()));
225225 // ... and our Unlocked() signal to the logind's session Unlock() signal
226226 // (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()));
228228 } else {
229229 qWarning() << "Failed to connect to logind's session Lock/Unlock signals";
230230 }
@@ -239,36 +239,36 @@ void DBusUnitySessionService::Logout()
239239
240240void DBusUnitySessionService::EndSession()
241241{
242− const QDBusMessage msg = QDBusMessage::createMethodCall("com.ubuntu.Upstart",
243− "/com/ubuntu/Upstart",
244− "com.ubuntu.Upstart0_6",
245− "EndSession");
242+ const QDBusMessage msg = QDBusMessage::createMethodCall(QStringLiteral("com.ubuntu.Upstart"),
243+ QStringLiteral("/com/ubuntu/Upstart"),
244+ QStringLiteral("com.ubuntu.Upstart0_6"),
245+ QStringLiteral("EndSession"));
246246 QDBusConnection::sessionBus().asyncCall(msg);
247247}
248248
249249bool DBusUnitySessionService::CanHibernate() const
250250{
251− return d->checkLogin1Call("CanHibernate");
251+ return d->checkLogin1Call(QStringLiteral("CanHibernate"));
252252}
253253
254254bool DBusUnitySessionService::CanSuspend() const
255255{
256− return d->checkLogin1Call("CanSuspend");
256+ return d->checkLogin1Call(QStringLiteral("CanSuspend"));
257257}
258258
259259bool DBusUnitySessionService::CanHybridSleep() const
260260{
261− return d->checkLogin1Call("CanHybridSleep");
261+ return d->checkLogin1Call(QStringLiteral("CanHybridSleep"));
262262}
263263
264264bool DBusUnitySessionService::CanReboot() const
265265{
266− return d->checkLogin1Call("CanReboot");
266+ return d->checkLogin1Call(QStringLiteral("CanReboot"));
267267}
268268
269269bool DBusUnitySessionService::CanShutdown() const
270270{
271− return d->checkLogin1Call("CanPowerOff");
271+ return d->checkLogin1Call(QStringLiteral("CanPowerOff"));
272272}
273273
274274bool DBusUnitySessionService::CanLock() const
@@ -320,10 +320,10 @@ void DBusUnitySessionService::Lock()
320320{
321321 // lock the session using the org.freedesktop.DisplayManager system DBUS service
322322 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"),
324324 sessionPath,
325− "org.freedesktop.DisplayManager.Session",
326− "Lock");
325+ QStringLiteral("org.freedesktop.DisplayManager.Session"),
326+ QStringLiteral("Lock"));
327327 QDBusReply<void> reply = QDBusConnection::systemBus().asyncCall(msg);
328328 if (!reply.isValid()) {
329329 qWarning() << "Lock call failed" << reply.error().message();
@@ -346,7 +346,7 @@ void DBusUnitySessionService::RequestLogout()
346346
347347void DBusUnitySessionService::Reboot()
348348{
349− d->makeLogin1Call("Reboot", {false});
349+ d->makeLogin1Call(QStringLiteral("Reboot"), {false});
350350}
351351
352352void DBusUnitySessionService::RequestReboot()
@@ -357,22 +357,22 @@ void DBusUnitySessionService::RequestReboot()
357357
358358void DBusUnitySessionService::Shutdown()
359359{
360− d->makeLogin1Call("PowerOff", {false});
360+ d->makeLogin1Call(QStringLiteral("PowerOff"), {false});
361361}
362362
363363void DBusUnitySessionService::Suspend()
364364{
365− d->makeLogin1Call("Suspend", {false});
365+ d->makeLogin1Call(QStringLiteral("Suspend"), {false});
366366}
367367
368368void DBusUnitySessionService::Hibernate()
369369{
370− d->makeLogin1Call("Hibernate", {false});
370+ d->makeLogin1Call(QStringLiteral("Hibernate"), {false});
371371}
372372
373373void DBusUnitySessionService::HybridSleep()
374374{
375− d->makeLogin1Call("HybridSleep", {false});
375+ d->makeLogin1Call(QStringLiteral("HybridSleep"), {false});
376376}
377377
378378void DBusUnitySessionService::RequestShutdown()
@@ -392,16 +392,16 @@ enum class Action : unsigned
392392
393393void performAsyncUnityCall(const QString &method)
394394{
395− const QDBusMessage msg = QDBusMessage::createMethodCall("com.canonical.Unity",
396− "/com/canonical/Unity/Session",
397− "com.canonical.Unity.Session",
395+ const QDBusMessage msg = QDBusMessage::createMethodCall(QStringLiteral("com.canonical.Unity"),
396+ QStringLiteral("/com/canonical/Unity/Session"),
397+ QStringLiteral("com.canonical.Unity.Session"),
398398 method);
399399 QDBusConnection::sessionBus().asyncCall(msg);
400400}
401401
402402
403403DBusGnomeSessionManagerWrapper::DBusGnomeSessionManagerWrapper()
404− : UnityDBusObject("/org/gnome/SessionManager/EndSessionDialog", "com.canonical.Unity")
404+ : UnityDBusObject(QStringLiteral("/org/gnome/SessionManager/EndSessionDialog"), QStringLiteral("com.canonical.Unity"))
405405{
406406}
407407
@@ -414,15 +414,15 @@ void DBusGnomeSessionManagerWrapper::Open(const unsigned type, const unsigned ar
414414 switch (static_cast<Action>(type))
415415 {
416416 case Action::LOGOUT:
417− performAsyncUnityCall("RequestLogout");
417+ performAsyncUnityCall(QStringLiteral("RequestLogout"));
418418 break;
419419
420420 case Action::REBOOT:
421− performAsyncUnityCall("RequestReboot");
421+ performAsyncUnityCall(QStringLiteral("RequestReboot"));
422422 break;
423423
424424 case Action::SHUTDOWN:
425− performAsyncUnityCall("RequestShutdown");
425+ performAsyncUnityCall(QStringLiteral("RequestShutdown"));
426426 break;
427427
428428 default:
@@ -432,7 +432,7 @@ void DBusGnomeSessionManagerWrapper::Open(const unsigned type, const unsigned ar
432432
433433
434434DBusGnomeScreensaverWrapper::DBusGnomeScreensaverWrapper()
435− : UnityDBusObject("/org/gnome/ScreenSaver", "org.gnome.ScreenSaver")
435+ : UnityDBusObject(QStringLiteral("/org/gnome/ScreenSaver"), QStringLiteral("org.gnome.ScreenSaver"))
436436{
437437 connect(d, &DBusUnitySessionServicePrivate::screensaverActiveChanged, this, &DBusGnomeScreensaverWrapper::ActiveChanged);
438438}
@@ -451,7 +451,7 @@ void DBusGnomeScreensaverWrapper::SetActive(bool lock)
451451
452452void DBusGnomeScreensaverWrapper::Lock()
453453{
454− performAsyncUnityCall("Lock");
454+ performAsyncUnityCall(QStringLiteral("Lock"));
455455}
456456
457457quint32 DBusGnomeScreensaverWrapper::GetActiveTime() const
@@ -466,9 +466,9 @@ void DBusGnomeScreensaverWrapper::SimulateUserActivity()
466466
467467
468468DBusScreensaverWrapper::DBusScreensaverWrapper()
469− : UnityDBusObject("/org/freedesktop/ScreenSaver", "org.freedesktop.ScreenSaver")
469+ : UnityDBusObject(QStringLiteral("/org/freedesktop/ScreenSaver"), QStringLiteral("org.freedesktop.ScreenSaver"))
470470{
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
472472 connect(d, &DBusUnitySessionServicePrivate::screensaverActiveChanged, this, &DBusScreensaverWrapper::ActiveChanged);
473473}
474474
@@ -488,7 +488,7 @@ bool DBusScreensaverWrapper::SetActive(bool lock)
488488
489489void DBusScreensaverWrapper::Lock()
490490{
491− performAsyncUnityCall("Lock");
491+ performAsyncUnityCall(QStringLiteral("Lock"));
492492}
493493
494494quint32 DBusScreensaverWrapper::GetActiveTime() const
plugins/Utils/CMakeLists.txt+2
@@ -9,6 +9,7 @@ include_directories(
99)
1010
1111set(QMLPLUGIN_SRC
12+ activefocuslogger.cpp
1213 constants.cpp
1314 HomeKeyWatcher.cpp
1415 inputwatcher.cpp
@@ -20,6 +21,7 @@ set(QMLPLUGIN_SRC
2021 windowscreenshotprovider.cpp
2122 easingcurve.cpp
2223 windowstatestorage.cpp
24+ timezoneFormatter.cpp
2325 plugin.cpp
2426 )
2527
tests/uqmlscene/ActiveFocusLogger.cpp → plugins/Utils/activefocuslogger.cpprenamed+21−8
@@ -14,21 +14,34 @@
1414 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1515 */
1616
17−#include "ActiveFocusLogger.h"
17+#include "activefocuslogger.h"
1818
19−#include <QDebug>
20−#include <QQuickItem>
19+#include <QQuickWindow>
2120
22−void ActiveFocusLogger::setWindow(QQuickWindow *window)
21+ActiveFocusLogger::ActiveFocusLogger(QQuickItem *parent)
22+ : QQuickItem(parent)
2323{
24− m_window = window;
25− QObject::connect(window, &QQuickWindow::activeFocusItemChanged,
26− this, &ActiveFocusLogger::printActiveFocusInfo);
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) {
36+ m_window = window;
37+ QObject::connect(window, &QQuickWindow::activeFocusItemChanged,
38+ this, &ActiveFocusLogger::printActiveFocusInfo);
39+ }
2740}
2841
2942void ActiveFocusLogger::printActiveFocusInfo()
3043{
31− if (!m_window) {
44+ if (!m_window || !isEnabled()) {
3245 return;
3346 }
3447
tests/uqmlscene/ActiveFocusLogger.h → plugins/Utils/activefocuslogger.hrenamed+8−8
@@ -14,24 +14,24 @@
1414 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1515 */
1616
17−#ifndef ACTIVE_FOCUS_LOGGER_H
18−#define ACTIVE_FOCUS_LOGGER_H
17+#ifndef UNITY_ACTIVEFOCUSLOGGER_H
18+#define UNITY_ACTIVEFOCUSLOGGER_H
1919
20−#include <QObject>
21−#include <QQuickWindow>
20+#include <QQuickItem>
2221#include <QPointer>
2322
24−class ActiveFocusLogger : public QObject {
23+class ActiveFocusLogger : public QQuickItem
24+{
2525 Q_OBJECT
26−
2726public:
28− void setWindow(QQuickWindow *window);
27+ ActiveFocusLogger(QQuickItem *parent = 0);
2928
3029private Q_SLOTS:
30+ void setupFilterOnWindow(QQuickWindow *window);
3131 void printActiveFocusInfo();
3232
3333private:
3434 QPointer<QQuickWindow> m_window;
3535};
3636
37−#endif // ACTIVE_FOCUS_LOGGER_H
37+#endif // UNITY_ACTIVEFOCUSLOGGER_H
plugins/Utils/plugin.cpp+6−1
@@ -23,6 +23,7 @@
2323#include "plugin.h"
2424
2525// local
26+#include "activefocuslogger.h"
2627#include "easingcurve.h"
2728#include "HomeKeyWatcher.h"
2829#include "inputwatcher.h"
@@ -33,6 +34,7 @@
3334#include "windowscreenshotprovider.h"
3435#include "windowstatestorage.h"
3536#include "constants.h"
37+#include "timezoneFormatter.h"
3638
3739static QObject *createWindowStateStorage(QQmlEngine *engine, QJSEngine *scriptEngine)
3840{
@@ -61,11 +63,14 @@ void UtilsPlugin::registerTypes(const char *uri)
6163 qmlRegisterSingletonType<WindowStateStorage>(uri, 0, 1, "WindowStateStorage", createWindowStateStorage);
6264 qmlRegisterType<InputWatcher>(uri, 0, 1, "InputWatcher");
6365 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");
6469}
6570
6671void UtilsPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
6772{
6873 QQmlExtensionPlugin::initializeEngine(engine, uri);
6974
70− engine->addImageProvider(QLatin1String("window"), new WindowScreenshotProvider);
75+ engine->addImageProvider(QStringLiteral("window"), new WindowScreenshotProvider);
7176}
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 @@
11/*
2− * Copyright (C) 2014 Canonical, Ltd.
2+ * Copyright 2015 Canonical Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
@@ -14,34 +14,19 @@
1414 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1515 */
1616
17−#ifndef CROPPEDIMAGESIZERASYNCWORKER_H
18−#define CROPPEDIMAGESIZERASYNCWORKER_H
17+#ifndef TIMEZONE_FORMATTER_H
18+#define TIMEZONE_FORMATTER_H
1919
20−#include <QMutex>
2120#include <QObject>
2221
23−class CroppedImageSizer;
24−
25−class QNetworkReply;
26−
27−class CroppedImageSizerAsyncWorker : public QObject
22+class TimezoneFormatter : public QObject
2823{
2924 Q_OBJECT
3025public:
31− CroppedImageSizerAsyncWorker(CroppedImageSizer *sizer, QNetworkReply *reply);
32−
33− void abort();
34−
35−private Q_SLOTS:
36− void requestFinished();
37−
38−private:
39− static void processRequestFinished(CroppedImageSizerAsyncWorker *worker);
26+ TimezoneFormatter(QObject * parent = nullptr);
27+ ~TimezoneFormatter() = default;
4028
41− QMutex m_mutex;
42− CroppedImageSizer *m_sizer;
43− QNetworkReply *m_reply;
44− bool m_ignoreAbort;
29+ Q_INVOKABLE QString currentTimeInTimezone(const QVariant &tzId) const;
4530};
4631
4732#endif
plugins/Utils/windowstatestorage.cpp+6−6
@@ -30,7 +30,7 @@ WindowStateStorage::WindowStateStorage(QObject *parent):
3030 QObject(parent)
3131{
3232 QString dbPath = QDir::homePath() + "/.cache/unity8/";
33− m_db = QSqlDatabase::addDatabase("QSQLITE");
33+ m_db = QSqlDatabase::addDatabase(QStringLiteral("QSQLITE"));
3434 QDir dir;
3535 dir.mkpath(dbPath);
3636 m_db.setDatabaseName(dbPath + "windowstatestorage.sqlite");
@@ -51,7 +51,7 @@ void WindowStateStorage::saveGeometry(const QString &windowId, const QRect &rect
5151{
5252 QMutexLocker mutexLocker(&s_mutex);
5353
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');")
5555 .arg(windowId)
5656 .arg(rect.x())
5757 .arg(rect.y())
@@ -85,7 +85,7 @@ void WindowStateStorage::executeAsyncQuery(const QString &queryString)
8585QRect WindowStateStorage::getGeometry(const QString &windowId, const QRect &defaultValue)
8686{
8787 QMutexLocker l(&s_mutex);
88− QString queryString = QString("SELECT * FROM geometry WHERE windowId = '%1';")
88+ QString queryString = QStringLiteral("SELECT * FROM geometry WHERE windowId = '%1';")
8989 .arg(windowId);
9090 QSqlQuery query;
9191
@@ -99,7 +99,7 @@ QRect WindowStateStorage::getGeometry(const QString &windowId, const QRect &defa
9999 if (!query.first()) {
100100 return defaultValue;
101101 }
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());
103103}
104104
105105void WindowStateStorage::initdb()
@@ -110,8 +110,8 @@ void WindowStateStorage::initdb()
110110 return;
111111 }
112112
113− if (!m_db.tables().contains("geometry")) {
113+ if (!m_db.tables().contains(QStringLiteral("geometry"))) {
114114 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);"));
116116 }
117117}
plugins/Wizard/PageList.cpp+3−3
@@ -40,8 +40,8 @@ PageList::PageList(QObject *parent)
4040 m_index(-1),
4141 m_pages()
4242{
43− QString qmlSuffix = ".qml";
44− QString disabledSuffix = ".disabled";
43+ QString qmlSuffix = QStringLiteral(".qml");
44+ QString disabledSuffix = QStringLiteral(".disabled");
4545 QSet<QString> disabledPages;
4646 QStringList dataDirs;
4747
@@ -53,7 +53,7 @@ PageList::PageList(QObject *parent)
5353
5454 Q_FOREACH(const QString &dataDir, dataDirs) {
5555 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);
5757 Q_FOREACH(const QString &entry, entries) {
5858 if (!m_pages.contains(entry) && entry.endsWith(qmlSuffix))
5959 m_pages.insert(entry, dir.absoluteFilePath(entry));
plugins/Wizard/System.cpp+23−15
@@ -33,14 +33,16 @@ System::System()
3333 // Register the argument needed for UpdateActivationEnvironment below
3434 qDBusRegisterMetaType<QMap<QString,QString>>();
3535
36− m_fsWatcher.addPath(wizardEnabledPath());
37− connect(&m_fsWatcher, &QFileSystemWatcher::fileChanged, this, &System::wizardEnabledChanged);
36+ if(!wizardEnabled()) {
37+ m_fsWatcher.addPath(wizardEnabledPath());
38+ }
39+ connect(&m_fsWatcher, &QFileSystemWatcher::fileChanged, this, &System::watcherFileChanged);
3840}
3941
4042QString System::wizardEnabledPath()
4143{
4244 // 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"));
4446}
4547
4648bool System::wizardEnabled() const
@@ -56,13 +58,19 @@ void System::setWizardEnabled(bool enabled)
5658 if (enabled) {
5759 QFile::remove(wizardEnabledPath());
5860 } else {
59− QDir(wizardEnabledPath()).mkpath("..");
61+ QDir(wizardEnabledPath()).mkpath(QStringLiteral(".."));
6062 QFile(wizardEnabledPath()).open(QIODevice::WriteOnly);
6163 m_fsWatcher.addPath(wizardEnabledPath());
62− wizardEnabledChanged();
64+ Q_EMIT wizardEnabledChanged();
6365 }
6466}
6567
68+void System::watcherFileChanged()
69+{
70+ Q_EMIT wizardEnabledChanged();
71+ m_fsWatcher.removePath(wizardEnabledPath());
72+}
73+
6674void System::setSessionVariable(const QString &variable, const QString &value)
6775{
6876 // We need to update both upstart's and DBus's environment
@@ -71,10 +79,10 @@ void System::setSessionVariable(const QString &variable, const QString &value)
7179 QMap<QString,QString> valueMap;
7280 valueMap.insert(variable, value);
7381
74− QDBusMessage msg = QDBusMessage::createMethodCall("org.freedesktop.DBus",
75− "/org/freedesktop/DBus",
76− "org.freedesktop.DBus",
77− "UpdateActivationEnvironment");
82+ QDBusMessage msg = QDBusMessage::createMethodCall(QStringLiteral("org.freedesktop.DBus"),
83+ QStringLiteral("/org/freedesktop/DBus"),
84+ QStringLiteral("org.freedesktop.DBus"),
85+ QStringLiteral("UpdateActivationEnvironment"));
7886
7987 msg << QVariant::fromValue(valueMap);
8088 QDBusConnection::sessionBus().asyncCall(msg);
@@ -82,21 +90,21 @@ void System::setSessionVariable(const QString &variable, const QString &value)
8290
8391void System::updateSessionLanguage(const QString &locale)
8492{
85− const QString language = locale.split(".")[0];
93+ const QString language = locale.split(QStringLiteral("."))[0];
8694
87− setSessionVariable("LANGUAGE", language);
88− setSessionVariable("LANG", locale);
89− setSessionVariable("LC_ALL", locale);
95+ setSessionVariable(QStringLiteral("LANGUAGE"), language);
96+ setSessionVariable(QStringLiteral("LANG"), locale);
97+ setSessionVariable(QStringLiteral("LC_ALL"), locale);
9098
9199 // QLocale caches the default locale on startup, and Qt uses that cached
92100 // copy when formatting dates. So manually update it here.
93101 QLocale::setDefault(QLocale(locale));
94102
95103 // 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; \
97105 initctl stop scope-registry; \
98106 initctl stop smart-scopes-proxy; \
99107 initctl emit --no-wait indicator-services-start; \
100108 initctl restart --no-wait maliit-server; \
101− initctl restart --no-wait unity8-dash\"");
109+ initctl restart --no-wait unity8-dash\""));
102110}
plugins/Wizard/System.h+3
@@ -38,6 +38,9 @@ public Q_SLOTS:
3838Q_SIGNALS:
3939 void wizardEnabledChanged();
4040
41+private Q_SLOTS:
42+ void watcherFileChanged();
43+
4144private:
4245 Q_DISABLE_COPY(System)
4346
po/am.po+93−6
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: samson <Unknown>\n"
1313"Language-Team: Amharic <am@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -711,8 +711,95 @@ msgstr "〈 %1"
711711msgid "%1 〉"
712712msgstr "%1 〉"
713713
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+
714804#~ msgid "Please re-enter"
715805#~ msgstr "እባክዎን እንደገና-ያስገቡ"
716−
717−#~ msgid "Click here to finish."
718−#~ msgstr "ለመጨረስ እዚህ ይጫኑ"
po/ar.po+59−6
@@ -8,7 +8,7 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: Ibrahim Saed <ibraheem5000@gmail.com>\n"
1313"Language-Team: Arabic <ar@li.org>\n"
1414"MIME-Version: 1.0\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n % 100 >= "
1818"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"
20−"X-Generator: Launchpad (build 17720)\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20+"X-Generator: Launchpad (build 17746)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -730,8 +730,61 @@ msgstr ""
730730msgid "%1 〉"
731731msgstr ""
732732
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+
733789#~ msgid "Please re-enter"
734790#~ msgstr "برجاء إعادة إدخالها"
735−
736−#~ msgid "Click here to finish."
737−#~ msgstr "انقر هنا للإنهاء."
po/ast.po+95−5
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: enolp <enolp@softastur.org>\n"
1313"Language-Team: Asturian <ast@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -716,8 +716,98 @@ msgstr "〈 %1"
716716msgid "%1 〉"
717717msgstr "%1 〉"
718718
719−#~ msgid "Click here to finish."
720−#~ msgstr "Primi equí pa finar."
719+#~ msgid "Skip intro"
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"
721811
722812#~ msgid "Please re-enter"
723813#~ msgstr "Por favor, reintroduzla"
po/az.po+83−3
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: Nicat Məmmədov <n1c4t97@gmail.com>\n"
1313"Language-Team: Azerbaijani <az@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -705,3 +705,83 @@ msgstr ""
705705#, qt-format
706706msgid "%1 〉"
707707msgstr ""
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 ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-09-11 11:51+0000\n"
12−"Last-Translator: Arsień Šachalevič <semen.shah@gmail.com>\n"
11+"PO-Revision-Date: 2015-09-24 14:32+0000\n"
12+"Last-Translator: Siamion Šachalevič <semen.shah@gmail.com>\n"
1313"Language-Team: Belarusian <be@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
19−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
20−"X-Generator: Launchpad (build 17720)\n"
19+"X-Launchpad-Export-Date: 2015-09-25 05:51+0000\n"
20+"X-Generator: Launchpad (build 17754)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -30,7 +30,7 @@ msgstr "Замацаваць кнопку"
3030
3131#: plugins/Unity/Launcher/launcheritem.cpp:52
3232msgid "Quit"
33−msgstr ""
33+msgstr "Выйсці"
3434
3535#: plugins/Unity/Launcher/launcheritem.cpp:106
3636msgid "Unpin shortcut"
@@ -42,14 +42,14 @@ msgstr "Адмацаваць кнопку"
4242#. en_US example: "Yesterday\u2003%l:%M %p" --> "Yesterday 1:00 PM"
4343#: plugins/Utils/relativetimeformatter.cpp:157
4444msgid "Yesterday %l:%M %p"
45−msgstr ""
45+msgstr "Учора a %H:%M"
4646
4747#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
4848#. This format string is used for showing, on a 12-hour clock, times that happened today.
4949#. en_US example: "%l:%M %p" --> "1:00 PM"
5050#: plugins/Utils/relativetimeformatter.cpp:164
5151msgid "%l:%M %p"
52−msgstr ""
52+msgstr "%H:%M"
5353
5454#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
5555#. This format string is used for showing, on a 12-hour clock, events/appointments that happen tomorrow.
@@ -57,7 +57,7 @@ msgstr ""
5757#. en_US example: "Tomorrow\u2003%l:%M %p" --> "Tomorrow 1:00 PM"
5858#: plugins/Utils/relativetimeformatter.cpp:172
5959msgid "Tomorrow %l:%M %p"
60−msgstr ""
60+msgstr "Заўтра a %H:%M"
6161
6262#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
6363#. This format string is used for showing, on a 12-hour clock, times that happened in the last week.
@@ -65,7 +65,7 @@ msgstr ""
6565#. en_US example: "%a\u2003%l:%M %p" --> "Fri 1:00 PM"
6666#: plugins/Utils/relativetimeformatter.cpp:181
6767msgid "%a %l:%M %p"
68−msgstr ""
68+msgstr "%a a %H:%M"
6969
7070#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
7171#. 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 ""
7474#. en_GB example: "%a %b %d\u2003%l:%M %p" --> "Fri 31 Oct 1:00 PM"
7575#: plugins/Utils/relativetimeformatter.cpp:190
7676msgid "%a %d %b %l:%M %p"
77−msgstr ""
77+msgstr "%a, %b %d a %H:%M"
7878
7979#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
8080#. This format string is used for showing, on a 24-hour clock, times that happen yesterday.
@@ -82,14 +82,14 @@ msgstr ""
8282#. en_US example: "Yesterday\u2003%l:%M %p" --> "Yesterday 13:00"
8383#: plugins/Utils/relativetimeformatter.cpp:201
8484msgid "Yesterday %H:%M"
85−msgstr ""
85+msgstr "Учора а %H:%M"
8686
8787#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
8888#. This format string is used for showing, on a 24-hour clock, times that happened today.
8989#. en_US example: "%H:%M" --> "13:00"
9090#: plugins/Utils/relativetimeformatter.cpp:208
9191msgid "%H:%M"
92−msgstr ""
92+msgstr "%H:%M"
9393
9494#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
9595#. This format string is used for showing, on a 24-hour clock, events/appointments that happen tomorrow.
@@ -97,7 +97,7 @@ msgstr ""
9797#. en_US example: "Tomorrow\u2003%l:%M %p" --> "Tomorrow 13:00"
9898#: plugins/Utils/relativetimeformatter.cpp:216
9999msgid "Tomorrow %H:%M"
100−msgstr ""
100+msgstr "Заўтра a %H:%M"
101101
102102#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
103103#. This format string is used for showing, on a 24-hour clock, times that happened in the last week.
@@ -105,7 +105,7 @@ msgstr ""
105105#. en_US example: "%a\u2003%H:%M" --> "Fri 13:00"
106106#: plugins/Utils/relativetimeformatter.cpp:225
107107msgid "%a %H:%M"
108−msgstr ""
108+msgstr "%a а %H:%M"
109109
110110#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
111111#. 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 ""
114114#. en_GB example: "%a %b %d\u2003%H:%M" --> "Fri 31 Oct 13:00"
115115#: plugins/Utils/relativetimeformatter.cpp:234
116116msgid "%a %d %b %H:%M"
117−msgstr ""
117+msgstr "%a, %b %d а %H:%M"
118118
119119#: qml/Components/DelayedLockscreen.qml:49
120120msgid "Device Locked"
@@ -146,7 +146,7 @@ msgstr "Выйсці"
146146
147147#: qml/Components/Dialogs.qml:113
148148msgid "Are you sure you want to log out?"
149−msgstr "Вы ўпэўнены, што хочаце выйсці?"
149+msgstr "Вы ўпэўненыя, што хочаце выйсці?"
150150
151151#: qml/Components/Dialogs.qml:115
152152msgctxt "Button: Lock the system"
@@ -380,7 +380,7 @@ msgstr "Даруйце, няслушны пароль"
380380#: qml/Greeter/NarrowView.qml:121
381381msgctxt "passphrase"
382382msgid "Please re-enter"
383−msgstr ""
383+msgstr "Калі ласка, паўтарыце ўвод"
384384
385385#: qml/Greeter/NarrowView.qml:122
386386msgid "Sorry, incorrect passcode"
@@ -406,32 +406,35 @@ msgstr "Нішто не грае"
406406#, qt-format
407407msgid "%1 hour"
408408msgid_plural "%1 hours"
409−msgstr[0] ""
410−msgstr[1] ""
409+msgstr[0] "%1 гадзіна"
410+msgstr[1] "%1 гадзіны"
411+msgstr[2] "%1 гадзінаў"
411412
412413#: qml/Panel/Indicators/MenuItemFactory.qml:807
413414#, qt-format
414415msgid "%1 minute"
415416msgid_plural "%1 minutes"
416−msgstr[0] ""
417−msgstr[1] ""
417+msgstr[0] "%1 хвіліна"
418+msgstr[1] "%1 хвіліны"
419+msgstr[2] "%1 хвілінаў"
418420
419421#: qml/Panel/Indicators/MenuItemFactory.qml:812
420422#, qt-format
421423msgid "%1 second"
422424msgid_plural "%1 seconds"
423−msgstr[0] ""
424−msgstr[1] ""
425+msgstr[0] "%1 секунда"
426+msgstr[1] "%1 секунды"
427+msgstr[2] "%1 секундаў"
425428
426429#: qml/Panel/Indicators/MenuItemFactory.qml:815
427430msgid "0 seconds"
428−msgstr ""
431+msgstr "0 секунд"
429432
430433#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
431434#: qml/Panel/Indicators/MenuItemFactory.qml:817
432435#, qt-format
433436msgid "%1 remaining"
434−msgstr ""
437+msgstr "%1 засталося"
435438
436439#: qml/Panel/Indicators/MenuItemFactory.qml:823
437440msgid "In queue…"
@@ -464,7 +467,7 @@ msgstr "Адказаць"
464467
465468#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
466469msgid "Call back"
467−msgstr ""
470+msgstr "Зваротны выклік"
468471
469472#: qml/Panel/Indicators/ModemInfoItem.qml:105
470473msgid "Unlock SIM"
@@ -720,8 +723,87 @@ msgstr "〈 %1"
720723msgid "%1 〉"
721724msgstr "%1 〉"
722725
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+
723808#~ msgid "Please re-enter"
724809#~ msgstr "Калі ласка, паўтарыце ўвод"
725−
726−#~ msgid "Click here to finish."
727−#~ msgstr "Націсніце тут для завяршэння."
po/bg.po+58−3
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: George Karavasilev <kokoto-java@ubuntu.com>\n"
1313"Language-Team: Bulgarian <bg@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -703,3 +703,58 @@ msgstr ""
703703#, qt-format
704704msgid "%1 〉"
705705msgstr ""
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 @@
66msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
9−"Report-Msgid-Bugs-To: \n"
9+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Fohanno Thierry <thierry.fohanno@ofis-bzh.org>\n"
1313"Language-Team: Breton <br@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
20−"Language: br\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2120
2221#: plugins/LightDM/Greeter.cpp:112
2322msgid "Password: "
@@ -721,8 +720,101 @@ msgstr "〈 %1"
721720msgid "%1 〉"
722721msgstr "%1 〉"
723722
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+
724819#~ msgid "Please re-enter"
725820#~ 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 ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Bosnian <bs@li.org>\n"
1414"MIME-Version: 1.0\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
20−"X-Generator: Launchpad (build 17720)\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20+"X-Generator: Launchpad (build 17746)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -718,5 +718,17 @@ msgstr "〈 %1"
718718msgid "%1 〉"
719719msgstr "%1 〉"
720720
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+
721733#~ msgid "Please re-enter"
722734#~ msgstr "Molimo ponovo unesite"
po/ca.po+99−5
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
1313"Language-Team: Catalan <ca@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -723,8 +723,102 @@ msgstr "〈 %1"
723723msgid "%1 〉"
724724msgstr "%1 〉"
725725
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+
726820#~ msgid "Please re-enter"
727821#~ msgstr "Torneu-ho a introduir"
728822
729−#~ msgid "Click here to finish."
730−#~ msgstr "Feu un toc aquí per finalitzar"
823+#~ msgid "Manage Scopes"
824+#~ msgstr "Gestioneu les lents"
po/ca@valencia.po+100−3
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
1313"Language-Team: Catalan <ca@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:43+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -723,5 +723,102 @@ msgstr "〈 %1"
723723msgid "%1 〉"
724724msgstr "%1 〉"
725725
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+
726813#~ msgid "Please re-enter"
727814#~ 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 ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Chechen <ce@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/ckb.po+51−3
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: Aras <aras.noori@gmail.com>\n"
1313"Language-Team: Kurdish (Sorani) <ckb@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:43+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -701,3 +701,51 @@ msgstr ""
701701#, qt-format
702702msgid "%1 〉"
703703msgstr ""
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 ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Vojtěch Daněk <vdanek@outlook.com>\n"
1313"Language-Team: Czech <cs@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020"Language: cs\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
@@ -722,8 +722,53 @@ msgstr "〈 %1"
722722msgid "%1 〉"
723723msgstr "%1 〉"
724724
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+
725773#~ msgid "Please re-enter"
726774#~ 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 ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Owen Llywelyn <owen.llywelyn@gmail.com>\n"
1313"Language-Team: Welsh <cy@li.org>\n"
1414"MIME-Version: 1.0\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=4; plural=n==1 ? 0 : n==2 ? 1 : (n != 8 && n != 11) ? "
1818"2 : 3;\n"
19−"X-Launchpad-Export-Date: 2015-09-12 05:43+0000\n"
20−"X-Generator: Launchpad (build 17720)\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20+"X-Generator: Launchpad (build 17746)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -725,6 +725,3 @@ msgstr "〈 %1"
725725#, qt-format
726726msgid "%1 〉"
727727msgstr "%1 〉"
728−
729−#~ msgid "Click here to finish."
730−#~ msgstr "Cliciwch yma i orffen."
po/da.po+58−6
@@ -9,15 +9,15 @@ msgstr ""
99"Project-Id-Version: unity8\n"
1010"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1111"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"
1313"Last-Translator: Folmer Fredslund <Unknown>\n"
1414"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
1515"MIME-Version: 1.0\n"
1616"Content-Type: text/plain; charset=UTF-8\n"
1717"Content-Transfer-Encoding: 8bit\n"
1818"Plural-Forms: nplurals=2; plural=n != 1;\n"
19−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
20−"X-Generator: Launchpad (build 17720)\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20+"X-Generator: Launchpad (build 17746)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -722,8 +722,60 @@ msgstr "〈 %1"
722722msgid "%1 〉"
723723msgstr "%1 〉"
724724
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+
725780#~ msgid "Please re-enter"
726781#~ 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 ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-06-01 11:33+0000\n"
12−"Last-Translator: Tobias Bannert <Unknown>\n"
11+"PO-Revision-Date: 2015-07-24 18:03+0000\n"
12+"Last-Translator: Torsten Franz <Unknown>\n"
1313"Language-Team: German <de@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -721,8 +721,99 @@ msgstr "〈 %1"
721721msgid "%1 〉"
722722msgstr "%1 〉"
723723
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+
724818#~ msgid "Please re-enter"
725819#~ 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 ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Simos Xenitellis <Unknown>\n"
1313"Language-Team: Greek <el@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -727,8 +727,95 @@ msgstr "〈 %1"
727727msgid "%1 〉"
728728msgstr "%1 〉"
729729
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+
730811#~ msgid "Please re-enter"
731812#~ msgstr "Παρακαλώ πληκτρολογήστε ξανά"
732813
733−#~ msgid "Click here to finish."
734−#~ msgstr "Πατήστε εδώ για τέλος."
814+#~ msgid "Shut down"
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 ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
1313"Language-Team: English (Australia) <en_AU@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:43+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -714,8 +714,96 @@ msgstr "〈 %1"
714714msgid "%1 〉"
715715msgstr "%1 〉"
716716
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+
717808#~ msgid "Please re-enter"
718809#~ 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 ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Andi Chandler <Unknown>\n"
1313"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:43+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -29,7 +29,7 @@ msgstr "Pin shortcut"
2929
3030#: plugins/Unity/Launcher/launcheritem.cpp:52
3131msgid "Quit"
32−msgstr ""
32+msgstr "Quit"
3333
3434#: plugins/Unity/Launcher/launcheritem.cpp:106
3535msgid "Unpin shortcut"
@@ -459,7 +459,7 @@ msgstr "Reply"
459459
460460#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
461461msgid "Call back"
462−msgstr ""
462+msgstr "Call back"
463463
464464#: qml/Panel/Indicators/ModemInfoItem.qml:105
465465msgid "Unlock SIM"
@@ -714,8 +714,96 @@ msgstr "〈 %1"
714714msgid "%1 〉"
715715msgstr "%1 〉"
716716
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+
717808#~ msgid "Please re-enter"
718809#~ 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 ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Eliovir <Unknown>\n"
1313"Language-Team: Esperanto <eo@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/es.po+98−7
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: Paco Molinero <paco@byasl.com>\n"
1313"Language-Team: Spanish <es@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -29,7 +29,7 @@ msgstr "Anclar"
2929
3030#: plugins/Unity/Launcher/launcheritem.cpp:52
3131msgid "Quit"
32−msgstr ""
32+msgstr "Salir"
3333
3434#: plugins/Unity/Launcher/launcheritem.cpp:106
3535msgid "Unpin shortcut"
@@ -463,7 +463,7 @@ msgstr "Responder"
463463
464464#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
465465msgid "Call back"
466−msgstr ""
466+msgstr "Devolver llamada"
467467
468468#: qml/Panel/Indicators/ModemInfoItem.qml:105
469469msgid "Unlock SIM"
@@ -718,8 +718,99 @@ msgstr "〈 %1"
718718msgid "%1 〉"
719719msgstr "%1 〉"
720720
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+
721812#~ msgid "Please re-enter"
722813#~ msgstr "Reintroduzca"
723814
724−#~ msgid "Click here to finish."
725−#~ msgstr "Pulse aquí para finalizar."
815+#~ msgid "Manage Scopes"
816+#~ msgstr "Administrar Scopes"
po/eu.po+97−6
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: Ibai Oihanguren Sala <Unknown>\n"
1313"Language-Team: Basque <eu@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -717,8 +717,99 @@ msgstr "〈 %1"
717717msgid "%1 〉"
718718msgstr "%1 〉"
719719
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+
720814#~ msgid "Please re-enter"
721815#~ 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 ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Danial Behzadi <dani.behzi@gmail.com>\n"
1313"Language-Team: Persian <fa@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -713,8 +713,96 @@ msgstr "〈 %1"
713713msgid "%1 〉"
714714msgstr "%1 〉"
715715
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+
716804#~ msgid "Please re-enter"
717805#~ msgstr "لطفاً دوباره وارد کنید"
718806
719−#~ msgid "Click here to finish."
720−#~ msgstr "برای پایان اینجا کلیک کنید."
807+#~ msgid "Manage Scopes"
808+#~ msgstr "مدیریت حوزه‌ها"
po/fi.po+94−6
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: Jiri Grönroos <Unknown>\n"
1313"Language-Team: Finnish <fi@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -717,8 +717,96 @@ msgstr "〈 %1"
717717msgid "%1 〉"
718718msgstr "%1 〉"
719719
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+
720811#~ msgid "Please re-enter"
721812#~ 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 ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Jógvan Olsen <jeggy@jebster.net>\n"
1313"Language-Team: Faroese <fo@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -701,3 +701,27 @@ msgstr ""
701701#, qt-format
702702msgid "%1 〉"
703703msgstr ""
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 ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Anne <anneonyme017@gmail.com>\n"
1313"Language-Team: French <fr@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -29,7 +29,7 @@ msgstr "Épingler le raccourci"
2929
3030#: plugins/Unity/Launcher/launcheritem.cpp:52
3131msgid "Quit"
32−msgstr ""
32+msgstr "Quitter"
3333
3434#: plugins/Unity/Launcher/launcheritem.cpp:106
3535msgid "Unpin shortcut"
@@ -465,7 +465,7 @@ msgstr "Répondre"
465465
466466#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
467467msgid "Call back"
468−msgstr ""
468+msgstr "Rappeler"
469469
470470#: qml/Panel/Indicators/ModemInfoItem.qml:105
471471msgid "Unlock SIM"
@@ -726,8 +726,103 @@ msgstr "〈 %1"
726726msgid "%1 〉"
727727msgstr "%1 〉"
728728
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+
729827#~ msgid "Please re-enter"
730828#~ 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 ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"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"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/gd.po+99−5
@@ -8,7 +8,7 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: GunChleoc <Unknown>\n"
1313"Language-Team: Fòram na Gàidhlig\n"
1414"MIME-Version: 1.0\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : "
1818"(n > 2 && n < 20) ? 2 : 3;\n"
19−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
20−"X-Generator: Launchpad (build 17720)\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20+"X-Generator: Launchpad (build 17746)\n"
2121"Language: gd\n"
2222
2323#: plugins/LightDM/Greeter.cpp:112
@@ -735,8 +735,102 @@ msgstr "〈 %1"
735735msgid "%1 〉"
736736msgstr "%1 〉"
737737
738−#~ msgid "Click here to finish."
739−#~ msgstr "Briog an-seo gus crìoch a chur air."
738+#~ msgid "Skip intro"
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"
740834
741835#~ msgid "Please re-enter"
742836#~ msgstr "Cuir a-steach i a-rithist"
po/gl.po+96−6
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: Marcos Lans <Unknown>\n"
1313"Language-Team: Galician <gl@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -713,8 +713,98 @@ msgstr "〈 %1"
713713msgid "%1 〉"
714714msgstr "%1 〉"
715715
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+
716809#~ msgid "Please re-enter"
717810#~ 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 ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Manx <gv@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : (n == 2 ? 1 : 2);\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -708,3 +708,66 @@ msgstr ""
708708#, qt-format
709709msgid "%1 〉"
710710msgstr ""
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 ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
1313"Language-Team: Hebrew <he@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -702,5 +702,72 @@ msgstr ""
702702msgid "%1 〉"
703703msgstr ""
704704
705−#~ msgid "Click here to finish."
706−#~ msgstr "יש ללחוץ כאן כדי לסיים."
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 "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 ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+0000\n"
12−"Last-Translator: Siddhanathan S. <Unknown>\n"
11+"PO-Revision-Date: 2014-01-15 01:49+0000\n"
12+"Last-Translator: Siddhanathan Shanmugam <Unknown>\n"
1313"Language-Team: Hindi <hi@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -701,3 +701,33 @@ msgstr ""
701701#, qt-format
702702msgid "%1 〉"
703703msgstr ""
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 ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Croatian <hr@li.org>\n"
1414"MIME-Version: 1.0\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
20−"X-Generator: Launchpad (build 17720)\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20+"X-Generator: Launchpad (build 17746)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -702,3 +702,21 @@ msgstr ""
702702#, qt-format
703703msgid "%1 〉"
704704msgstr ""
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 @@
66msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
9−"Report-Msgid-Bugs-To: \n"
9+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Richard Somlói <ricsipontaz@gmail.com>\n"
1313"Language-Team: Hungarian <hu@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
20−"Language: hu\n"
18+"X-Launchpad-Export-Date: 2015-09-22 06:01+0000\n"
19+"X-Generator: Launchpad (build 17749)\n"
2120
2221#: plugins/LightDM/Greeter.cpp:112
2322msgid "Password: "
@@ -74,7 +73,7 @@ msgstr "%a %p. %I.%M"
7473#. en_GB example: "%a %b %d\u2003%l:%M %p" --> "Fri 31 Oct 1:00 PM"
7574#: plugins/Utils/relativetimeformatter.cpp:190
7675msgid "%a %d %b %l:%M %p"
77−msgstr "%d. %b. %a, %p. %I.%M"
76+msgstr "%b. %d., %a %p. %I.%M"
7877
7978#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
8079#. This format string is used for showing, on a 24-hour clock, times that happen yesterday.
@@ -114,11 +113,11 @@ msgstr "%a %H.%M"
114113#. en_GB example: "%a %b %d\u2003%H:%M" --> "Fri 31 Oct 13:00"
115114#: plugins/Utils/relativetimeformatter.cpp:234
116115msgid "%a %d %b %H:%M"
117−msgstr "%d. %b., %a %H.%M"
116+msgstr "%b. %d., %a %H.%M"
118117
119118#: qml/Components/DelayedLockscreen.qml:49
120119msgid "Device Locked"
121−msgstr "Eszköz lezárva"
120+msgstr "Az eszköz zárolva"
122121
123122#: qml/Components/DelayedLockscreen.qml:64
124123msgid "You have been locked out due to too many failed passphrase attempts."
@@ -460,7 +459,7 @@ msgstr "Válasz"
460459
461460#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
462461msgid "Call back"
463−msgstr ""
462+msgstr "Visszahívás"
464463
465464#: qml/Panel/Indicators/ModemInfoItem.qml:105
466465msgid "Unlock SIM"
@@ -554,7 +553,7 @@ msgstr "Folytatás"
554553
555554#: qml/Wizard/Pages/passwd-set.qml:61
556555msgid "Choose your passcode"
557−msgstr "Jelkód kiválasztása"
556+msgstr "Jelkód megadása"
558557
559558#: qml/Wizard/Pages/passwd-set.qml:68
560559msgid "Passphrase must be 4 characters long"
@@ -562,11 +561,11 @@ msgstr "A jelmondat legalább 4 karakter hosszú legyen"
562561
563562#: qml/Wizard/Pages/10-welcome.qml:27
564563msgid "Hi!"
565−msgstr "Üdv!"
564+msgstr "Üdvözöljük!"
566565
567566#: qml/Wizard/Pages/10-welcome.qml:44
568567msgid "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."
570569
571570#: qml/Wizard/Pages/10-welcome.qml:52
572571msgid "Let’s get started."
@@ -574,12 +573,12 @@ msgstr "Kezdjünk is bele."
574573
575574#: qml/Wizard/Pages/20-sim.qml:25
576575msgid "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"
578577
579578#: qml/Wizard/Pages/20-sim.qml:59
580579msgid "Without it, you won’t be able to make calls or use text messaging."
581580msgstr ""
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 "
583582"üzeneteket."
584583
585584#: qml/Wizard/Pages/20-sim.qml:73 qml/Wizard/Pages/40-wifi.qml:215
@@ -717,8 +716,98 @@ msgstr "〈 %1"
717716msgid "%1 〉"
718717msgstr "%1 〉"
719718
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+
720812#~ msgid "Please re-enter"
721813#~ 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 ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Vahan Harutyunyan <Unknown>\n"
1313"Language-Team: Armenian <hy@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -706,5 +706,74 @@ msgstr ""
706706msgid "%1 〉"
707707msgstr ""
708708
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+
709775#~ msgid "Please re-enter"
710776#~ msgstr "Խնդրում ենք նորից մուտքագրել"
777+
778+#~ msgid "Skip intro"
779+#~ msgstr "Բաց թողնել ներածությունը"
po/ia.po+84−7
@@ -6,18 +6,17 @@
66msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
9−"Report-Msgid-Bugs-To: \n"
9+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: karm <melo@carmu.com>\n"
1313"Language-Team: Interlingua <ia@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
20−"Language: ia\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2120
2221#: plugins/LightDM/Greeter.cpp:112
2322msgid "Password: "
@@ -722,8 +721,86 @@ msgstr "〈 %1"
722721msgid "%1 〉"
723722msgstr "%1 〉"
724723
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+
725798#~ msgid "Please re-enter"
726799#~ msgstr "Per favor re-inserer"
727800
728−#~ msgid "Click here to finish."
729−#~ msgstr "Clicca ci pro finir"
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+#~ "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 ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Indonesian <id@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -709,5 +709,96 @@ msgstr ""
709709msgid "%1 〉"
710710msgstr ""
711711
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+
712793#~ msgid "Please re-enter"
713794#~ 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 ""
1010"Project-Id-Version: po_unity8-is\n"
1111"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1212"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"
1414"Last-Translator: Sveinn í Felli <sv1@fellsnet.is>\n"
1515"Language-Team: Icelandic <translation-team-is@lists.sourceforge.net>\n"
1616"MIME-Version: 1.0\n"
1717"Content-Type: text/plain; charset=UTF-8\n"
1818"Content-Transfer-Encoding: 8bit\n"
1919"Plural-Forms: nplurals=2; plural=n != 1;\n"
20−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
21−"X-Generator: Launchpad (build 17720)\n"
20+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
21+"X-Generator: Launchpad (build 17746)\n"
2222"Language: is\n"
2323
2424#: plugins/LightDM/Greeter.cpp:112
@@ -715,5 +715,97 @@ msgstr ""
715715msgid "%1 〉"
716716msgstr ""
717717
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+
718807#~ msgid "Please re-enter"
719808#~ 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 ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Claudio Arseni <claudio.arseni@gmail.com>\n"
1313"Language-Team: Italian <it@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -29,7 +29,7 @@ msgstr "Blocca scorciatoia"
2929
3030#: plugins/Unity/Launcher/launcheritem.cpp:52
3131msgid "Quit"
32−msgstr ""
32+msgstr "Esci"
3333
3434#: plugins/Unity/Launcher/launcheritem.cpp:106
3535msgid "Unpin shortcut"
@@ -463,7 +463,7 @@ msgstr "Rispondi"
463463
464464#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
465465msgid "Call back"
466−msgstr ""
466+msgstr "Richiama"
467467
468468#: qml/Panel/Indicators/ModemInfoItem.qml:105
469469msgid "Unlock SIM"
@@ -722,8 +722,101 @@ msgstr "〈 %1"
722722msgid "%1 〉"
723723msgstr "%1 〉"
724724
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+
725816#~ msgid "Please re-enter"
726817#~ msgstr "Inserire nuovamente"
727818
728−#~ msgid "Click here to finish."
729−#~ msgstr "Fare clic qui per terminare."
819+#~ msgid "Swipe up again to close the settings screen"
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 ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Kentaro Kazuhama <Unknown>\n"
1313"Language-Team: Japanese <ja@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -701,5 +701,95 @@ msgstr ""
701701msgid "%1 〉"
702702msgstr ""
703703
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+
704794#~ msgid "Please re-enter"
705795#~ msgstr "再入力してください"
po/km.po+93−3
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: Sophea Sok <sksophea@gmail.com>\n"
1313"Language-Team: Khmer <km@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -709,3 +709,93 @@ msgstr "〈 %1"
709709#, qt-format
710710msgid "%1 〉"
711711msgstr "%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 ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Kannada <kn@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -701,3 +701,21 @@ msgstr ""
701701#, qt-format
702702msgid "%1 〉"
703703msgstr ""
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 ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: MinSik CHO <Unknown>\n"
1313"Language-Team: Korean <ko@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -698,8 +698,95 @@ msgstr "〈 %1"
698698msgid "%1 〉"
699699msgstr "%1 〉"
700700
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+
701791#~ msgid "Please re-enter"
702792#~ msgstr "다시 입력해주십시오."
703−
704−#~ msgid "Click here to finish."
705−#~ msgstr "끝내려면 눌러주십시오."
po/ku.po+87−3
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Kurdish <ku@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -707,3 +707,87 @@ msgstr ""
707707#, qt-format
708708msgid "%1 〉"
709709msgstr ""
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 ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Kirghiz <ky@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -701,3 +701,21 @@ msgstr ""
701701#, qt-format
702702msgid "%1 〉"
703703msgstr ""
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 ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Anousak <anousak@gmail.com>\n"
1313"Language-Team: Lao <lo@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -701,3 +701,21 @@ msgstr ""
701701#, qt-format
702702msgid "%1 〉"
703703msgstr ""
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 ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Mantas Kriaučiūnas <mantas@akl.lt>\n"
1313"Language-Team: Lithuanian <lt@li.org>\n"
1414"MIME-Version: 1.0\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"(n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
20−"X-Generator: Launchpad (build 17720)\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20+"X-Generator: Launchpad (build 17746)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -702,3 +702,54 @@ msgstr ""
702702#, qt-format
703703msgid "%1 〉"
704704msgstr ""
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 ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Rūdolfs Mazurs <Unknown>\n"
1313"Language-Team: Latvian <lv@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=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"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -715,5 +715,80 @@ msgstr "〈 %1"
715715msgid "%1 〉"
716716msgstr "%1 〉"
717717
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+
718793#~ msgid "Please re-enter"
719794#~ msgstr "Lūdzu, ievadiet vēlreiz"
po/ml.po+53−3
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: ST Alfas <Unknown>\n"
1313"Language-Team: Malayalam <ml@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -701,3 +701,53 @@ msgstr ""
701701#, qt-format
702702msgid "%1 〉"
703703msgstr ""
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 ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Rohan Deshmukh <Unknown>\n"
1313"Language-Team: Marathi <mr@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -701,3 +701,33 @@ msgstr ""
701701#, qt-format
702702msgid "%1 〉"
703703msgstr ""
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 ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: abuyop <Unknown>\n"
1313"Language-Team: Malay <ms@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -716,5 +716,96 @@ msgstr "〈 %1"
716716msgid "%1 〉"
717717msgstr "%1 〉"
718718
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+
719800#~ msgid "Please re-enter"
720801#~ 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 ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Pyae Sone <Unknown>\n"
1313"Language-Team: Burmese <my@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -701,3 +701,39 @@ msgstr ""
701701#, qt-format
702702msgid "%1 〉"
703703msgstr ""
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 ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Mathias Bynke <Unknown>\n"
1313"Language-Team: Norwegian Bokmal <nb@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -716,8 +716,96 @@ msgstr "〈 %1"
716716msgid "%1 〉"
717717msgstr "%1 〉"
718718
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+
719810#~ msgid "Please re-enter"
720811#~ 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 ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Hannie Dumoleyn <Unknown>\n"
1313"Language-Team: Dutch <nl@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -721,8 +721,96 @@ msgstr "〈 %1"
721721msgid "%1 〉"
722722msgstr "%1 〉"
723723
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+
724815#~ msgid "Please re-enter"
725816#~ 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 ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Norwegian Nynorsk <nn@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/oc.po+3−3
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Occitan (post 1500) <oc@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/or.po+3−3
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Oriya <or@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n!=1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/pa.po+39−6
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: Gursharnjit_Singh <ubuntuser13@gmail.com>\n"
1313"Language-Team: Punjabi <pa@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -715,8 +715,41 @@ msgstr "〈 %1"
715715msgid "%1 〉"
716716msgstr "%1 〉"
717717
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+
718754#~ msgid "Please re-enter"
719755#~ msgstr "ਕਿਰਪਾ ਕਰਕੇ ਮੁੜ-ਦਰਜ ਕਰੋ"
720−
721−#~ msgid "Click here to finish."
722−#~ msgstr "ਸਮਾਪਤੀ ਲਈ ਇੱਥੇ ਕਲਿੱਕ ਕਰੋ।"
po/pl.po+84−6
@@ -8,7 +8,7 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: Seweryn Opyd <Unknown>\n"
1313"Language-Team: Polish <pl@li.org>\n"
1414"MIME-Version: 1.0\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
1818"|| n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
20−"X-Generator: Launchpad (build 17720)\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20+"X-Generator: Launchpad (build 17746)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -718,8 +718,86 @@ msgstr "〈 %1"
718718msgid "%1 〉"
719719msgstr "%1 〉"
720720
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+
721802#~ msgid "Please re-enter"
722803#~ 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 ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-07-03 16:38+0000\n"
12−"Last-Translator: António Miranda <Unknown>\n"
11+"PO-Revision-Date: 2015-07-29 10:01+0000\n"
12+"Last-Translator: Ivo Xavier <ivofernandes12@gmail.com>\n"
1313"Language-Team: Portuguese <pt@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -29,7 +29,7 @@ msgstr "Fixar atalho"
2929
3030#: plugins/Unity/Launcher/launcheritem.cpp:52
3131msgid "Quit"
32−msgstr ""
32+msgstr "Sair"
3333
3434#: plugins/Unity/Launcher/launcheritem.cpp:106
3535msgid "Unpin shortcut"
@@ -463,7 +463,7 @@ msgstr "Responder"
463463
464464#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
465465msgid "Call back"
466−msgstr ""
466+msgstr "Ligar de volta"
467467
468468#: qml/Panel/Indicators/ModemInfoItem.qml:105
469469msgid "Unlock SIM"
@@ -719,8 +719,97 @@ msgstr "〈 %1"
719719msgid "%1 〉"
720720msgstr "%1 〉"
721721
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+
722791#~ msgid "Please re-enter"
723792#~ msgstr "Por favor, volte a introduzir"
724793
725−#~ msgid "Click here to finish."
726−#~ msgstr "Clique aqui para finalizar."
794+#~ msgid "Try swiping from the top edge to access the indicators"
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 ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Julio Alexander Sieg <julio.sieg@gmail.com>\n"
1313"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:43+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -719,8 +719,98 @@ msgstr "〈 %1"
719719msgid "%1 〉"
720720msgstr "%1 〉"
721721
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+
722815#~ msgid "Please re-enter"
723816#~ 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 ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Meriuță Cornel <meriutacornel@neacornel.eu>\n"
1313"Language-Team: Romanian <ro@li.org>\n"
1414"MIME-Version: 1.0\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 "
1818"== 0) && (n != 0))) ? 2: 1));\n"
19−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
20−"X-Generator: Launchpad (build 17720)\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20+"X-Generator: Launchpad (build 17746)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -729,8 +729,99 @@ msgstr "〈 %1"
729729msgid "%1 〉"
730730msgstr "%1 〉"
731731
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+
732826#~ msgid "Please re-enter"
733827#~ 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 ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: ☠Jay ZDLin☠ <Unknown>\n"
1313"Language-Team: Russian <ru@li.org>\n"
1414"MIME-Version: 1.0\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
20−"X-Generator: Launchpad (build 17720)\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20+"X-Generator: Launchpad (build 17746)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -724,8 +724,101 @@ msgstr "〈 %1"
724724msgid "%1 〉"
725725msgstr "%1 〉"
726726
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+
727820#~ msgid "Please re-enter"
728821#~ msgstr "Повторите ввод"
729822
730−#~ msgid "Click here to finish."
731−#~ msgstr "Нажмите для завершения."
823+#~ msgid "Manage Scopes"
824+#~ msgstr "Настройки поиска"
po/shn.po+3−3
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Shan <shn@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=(n == 1) ? 0 : 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/si.po+63−3
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Sinhalese <si@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -703,3 +703,63 @@ msgstr ""
703703#, qt-format
704704msgid "%1 〉"
705705msgstr ""
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 ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Slovak <sk@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/sl.po+93−6
@@ -8,7 +8,7 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: Sasa Batistic <Unknown>\n"
1313"Language-Team: Slovenian <sl@li.org>\n"
1414"MIME-Version: 1.0\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || "
1818"n%100==4 ? 3 : 0);\n"
19−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
20−"X-Generator: Launchpad (build 17720)\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20+"X-Generator: Launchpad (build 17746)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -725,8 +725,95 @@ msgstr "〈 %1"
725725msgid "%1 〉"
726726msgstr "%1 〉"
727727
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+
728818#~ msgid "Please re-enter"
729819#~ 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 ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Besmir Zanaj <besmirzanaj@gmail.com>\n"
1313"Language-Team: Albanian <sq@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -701,3 +701,22 @@ msgstr ""
701701#, qt-format
702702msgid "%1 〉"
703703msgstr ""
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 ""
99"Project-Id-Version: unity\n"
1010"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1111"POT-Creation-Date: 2015-08-25 14:53+0200\n"
12−"PO-Revision-Date: 2015-05-14 09:20+0000\n"
13−"Last-Translator: Данило Шеган <Unknown>\n"
12+"PO-Revision-Date: 2015-09-16 16:20+0000\n"
13+"Last-Translator: Bojan Bogdanović <Unknown>\n"
1414"Language-Team: српски <xfce4@xfce4.org>\n"
1515"MIME-Version: 1.0\n"
1616"Content-Type: text/plain; charset=UTF-8\n"
1717"Content-Transfer-Encoding: 8bit\n"
1818"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1919"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
20−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
21−"X-Generator: Launchpad (build 17720)\n"
20+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
21+"X-Generator: Launchpad (build 17746)\n"
2222"Language: sr\n"
2323
2424#: plugins/LightDM/Greeter.cpp:112
@@ -32,7 +32,7 @@ msgstr "Прикачи пречицу"
3232
3333#: plugins/Unity/Launcher/launcheritem.cpp:52
3434msgid "Quit"
35−msgstr ""
35+msgstr "Напусти"
3636
3737#: plugins/Unity/Launcher/launcheritem.cpp:106
3838msgid "Unpin shortcut"
@@ -466,7 +466,7 @@ msgstr "Одговор"
466466
467467#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
468468msgid "Call back"
469−msgstr ""
469+msgstr "Позови назад"
470470
471471#: qml/Panel/Indicators/ModemInfoItem.qml:105
472472msgid "Unlock SIM"
@@ -722,8 +722,93 @@ msgstr "〈 %1"
722722msgid "%1 〉"
723723msgstr "%1 〉"
724724
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+
725813#~ msgid "Please re-enter"
726814#~ msgstr "Молим, унесите поново"
727−
728−#~ msgid "Click here to finish."
729−#~ msgstr "Кликните овде да завршите."
po/sv.po+94−6
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: Josef Andersson <Unknown>\n"
1313"Language-Team: Swedish\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:43+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020"Language: sv\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
@@ -717,8 +717,96 @@ msgstr "〈 %1"
717717msgid "%1 〉"
718718msgstr "%1 〉"
719719
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+
720811#~ msgid "Please re-enter"
721812#~ 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 ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Valentine <mwangi_valentino@yahoo.com>\n"
1313"Language-Team: Swahili <sw@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:42+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -708,8 +708,14 @@ msgstr ""
708708msgid "%1 〉"
709709msgstr ""
710710
711+#~ msgid "Close"
712+#~ msgstr "Funga"
713+
714+#~ msgid "Confirm"
715+#~ msgstr "Thibitisha"
716+
717+#~ msgid "Search"
718+#~ msgstr "Tafuta"
719+
711720#~ msgid "Please re-enter"
712721#~ 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 ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Arun Kumar - அருண் குமார் <thangam.arunx@gmail.com>\n"
1313"Language-Team: Ubuntu Tamil Team/Free Tamil Computing/Thamizha\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:43+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020"Language: ta\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
@@ -702,3 +702,53 @@ msgstr ""
702702#, qt-format
703703msgid "%1 〉"
704704msgstr ""
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 ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Praveen Illa <mail2ipn@gmail.com>\n"
1313"Language-Team: Telugu <te@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:43+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -701,3 +701,42 @@ msgstr ""
701701#, qt-format
702702msgid "%1 〉"
703703msgstr ""
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 ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Thai <th@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:43+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/tr.po+86−6
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: Arda Ünlü <aarda.uunlu@gmail.com>\n"
1313"Language-Team: Turkish <tr@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:43+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -716,8 +716,88 @@ msgstr "〈 %1"
716716msgid "%1 〉"
717717msgstr "%1 〉"
718718
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+
719802#~ msgid "Please re-enter"
720803#~ 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 ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2015-08-25 14:53+0200\n"
11−"PO-Revision-Date: 2015-05-14 09:20+0000\n"
12−"Last-Translator: Gheyret T.Kenji <Unknown>\n"
11+"PO-Revision-Date: 2015-09-24 05:59+0000\n"
12+"Last-Translator: eltikin <eltikinuyghur@hotmail.com>\n"
1313"Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:43+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-25 05:51+0000\n"
19+"X-Generator: Launchpad (build 17754)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -29,7 +29,7 @@ msgstr "تېزلەتمىنى قوي"
2929
3030#: plugins/Unity/Launcher/launcheritem.cpp:52
3131msgid "Quit"
32−msgstr ""
32+msgstr "چېكىن"
3333
3434#: plugins/Unity/Launcher/launcheritem.cpp:106
3535msgid "Unpin shortcut"
@@ -56,7 +56,7 @@ msgstr ""
5656#. en_US example: "Tomorrow\u2003%l:%M %p" --> "Tomorrow 1:00 PM"
5757#: plugins/Utils/relativetimeformatter.cpp:172
5858msgid "Tomorrow %l:%M %p"
59−msgstr ""
59+msgstr "ئەتە %l:%M %p"
6060
6161#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
6262#. This format string is used for showing, on a 12-hour clock, times that happened in the last week.
@@ -125,7 +125,7 @@ msgstr "خاتا ئىم جۈملىسى كۆپ قېتىم كىرگۈزۈلگەن
125125
126126#: qml/Components/DelayedLockscreen.qml:65
127127msgid "You have been locked out due to too many failed passcode attempts."
128−msgstr "خاتا ئىم كودى(passcode) كۆپ قېتىم كىرگۈزۈلگەنلىكى ئۈچۈن قۇلۇپلاندى."
128+msgstr "ھىساباتىڭز قۇلۇپلاندى.ئىم كىرگۈزۈشتە كۆپ قېتىم خاتالاشتىڭز."
129129
130130#: qml/Components/DelayedLockscreen.qml:74
131131#, qt-format
@@ -136,7 +136,7 @@ msgstr[0] "%1 مىنۇت كۈتۈپ ئاندىن قايتا سىناڭ…"
136136#: qml/Components/Dialogs.qml:112
137137msgctxt "Title: Lock/Log out dialog"
138138msgid "Log out"
139−msgstr ""
139+msgstr "تىزىمدىن چىق"
140140
141141#: qml/Components/Dialogs.qml:113
142142msgid "Are you sure you want to log out?"
@@ -145,22 +145,22 @@ msgstr "راستلا چىقىپ كېتەمسىز؟"
145145#: qml/Components/Dialogs.qml:115
146146msgctxt "Button: Lock the system"
147147msgid "Lock"
148−msgstr ""
148+msgstr "قۇلۇپلا"
149149
150150#: qml/Components/Dialogs.qml:122
151151msgctxt "Button: Log out from the system"
152152msgid "Log Out"
153−msgstr ""
153+msgstr "تىزىمدىن چىق"
154154
155155#: qml/Components/Dialogs.qml:129 qml/Components/Dialogs.qml:162
156156#: qml/Components/Dialogs.qml:221
157157msgid "Cancel"
158−msgstr "ئەمەلدىن قالدۇر"
158+msgstr "بولدىلا"
159159
160160#: qml/Components/Dialogs.qml:141
161161msgctxt "Title: Reboot/Shut down dialog"
162162msgid "Shut down"
163−msgstr ""
163+msgstr "تاقا"
164164
165165#: qml/Components/Dialogs.qml:142
166166msgid "Are you sure you want to shut down?"
@@ -169,17 +169,17 @@ msgstr "راستلا تاقامسىز؟"
169169#: qml/Components/Dialogs.qml:144
170170msgctxt "Button: Reboot the system"
171171msgid "Reboot"
172−msgstr ""
172+msgstr "قايتا قوزغات"
173173
174174#: qml/Components/Dialogs.qml:153
175175msgctxt "Button: Shut down the system"
176176msgid "Shut down"
177−msgstr ""
177+msgstr "تاقا"
178178
179179#: qml/Components/Dialogs.qml:175
180180msgctxt "Title: Reboot dialog"
181181msgid "Reboot"
182−msgstr ""
182+msgstr "قايتا قوزغات"
183183
184184#: qml/Components/Dialogs.qml:176
185185msgid "Are you sure you want to reboot?"
@@ -196,7 +196,7 @@ msgstr "ھەئە"
196196#: qml/Components/Dialogs.qml:200
197197msgctxt "Title: Power off/Restart dialog"
198198msgid "Power"
199−msgstr ""
199+msgstr "توك مەنبە"
200200
201201#: qml/Components/Dialogs.qml:201
202202msgid ""
@@ -209,12 +209,12 @@ msgstr ""
209209#: qml/Components/Dialogs.qml:203
210210msgctxt "Button: Power off the system"
211211msgid "Power off"
212−msgstr ""
212+msgstr "توكنى ئۈز"
213213
214214#: qml/Components/Dialogs.qml:212
215215msgctxt "Button: Restart the system"
216216msgid "Restart"
217−msgstr ""
217+msgstr "قايتا قوزغات"
218218
219219#: qml/Components/Lockscreen.qml:245
220220msgid "Return to Call"
@@ -239,22 +239,22 @@ msgstr "ھەممىنى كۆرۈش…"
239239#: qml/Dash/GenericScopeView.qml:631
240240msgctxt "Label: Hint for dash search line edit"
241241msgid "Search"
242−msgstr ""
242+msgstr "ئىزدە"
243243
244244#: qml/Dash/PageHeader.qml:269
245245msgctxt "Button: Open the Ubuntu Store"
246246msgid "Store"
247−msgstr ""
247+msgstr "ساقلا"
248248
249249#: qml/Dash/PageHeader.qml:276
250250msgctxt "Button: Start a search in the current dash scope"
251251msgid "Search"
252−msgstr ""
252+msgstr "ئىزدە"
253253
254254#: qml/Dash/PageHeader.qml:286
255255msgctxt "Button: Show the current dash scope settings"
256256msgid "Settings"
257−msgstr ""
257+msgstr "تەڭشەك"
258258
259259#: qml/Dash/PageHeader.qml:293
260260msgid "Remove from Favorites"
@@ -295,19 +295,19 @@ msgstr "قويۇۋەتسە يېڭىلىنىدۇ…"
295295
296296#: qml/Dash/ScopeSettings/ScopeSettingBoolean.qml:43
297297msgid "Enable location data"
298−msgstr ""
298+msgstr "ئۇرۇن سانلىق مەلۇمات ئىلىتشكە باشلىدى"
299299
300300#: qml/Dash/ScopesList.qml:67
301301msgid "Manage"
302−msgstr ""
302+msgstr "باشقۇرۇش"
303303
304304#: qml/Dash/ScopesList.qml:113
305305msgid "Home"
306−msgstr ""
306+msgstr "ماكان"
307307
308308#: qml/Dash/ScopesList.qml:114
309309msgid "Also installed"
310−msgstr ""
310+msgstr "قايتىدىن ئورنات"
311311
312312#: qml/Greeter/CoverPage.qml:107
313313msgid "Unlock"
@@ -315,11 +315,11 @@ msgstr "قۇلۇپسىزلا"
315315
316316#: qml/Greeter/LoginList.qml:236
317317msgid "Retry"
318−msgstr ""
318+msgstr "قايتا سىنا"
319319
320320#: qml/Greeter/LoginList.qml:237
321321msgid "Tap to unlock"
322−msgstr ""
322+msgstr "قۇلۇپسىزلا"
323323
324324#: qml/Greeter/NarrowView.qml:54 qml/Wizard/Pages/passwd-confirm.qml:53
325325msgid "Sorry, incorrect passphrase."
@@ -374,7 +374,7 @@ msgstr "كەچۈرۈڭ، ئىم توغرا ئەمەس"
374374#: qml/Greeter/NarrowView.qml:121
375375msgctxt "passphrase"
376376msgid "Please re-enter"
377−msgstr ""
377+msgstr "قايتا كىرگۈزۈڭ"
378378
379379#: qml/Greeter/NarrowView.qml:122
380380msgid "Sorry, incorrect passcode"
@@ -400,32 +400,29 @@ msgstr "ھېچ نېمە قويۇلمايۋاتىدۇ"
400400#, qt-format
401401msgid "%1 hour"
402402msgid_plural "%1 hours"
403−msgstr[0] ""
404−msgstr[1] ""
403+msgstr[0] "%1 سائەت"
405404
406405#: qml/Panel/Indicators/MenuItemFactory.qml:807
407406#, qt-format
408407msgid "%1 minute"
409408msgid_plural "%1 minutes"
410−msgstr[0] ""
411−msgstr[1] ""
409+msgstr[0] "%1 مىنۇت"
412410
413411#: qml/Panel/Indicators/MenuItemFactory.qml:812
414412#, qt-format
415413msgid "%1 second"
416414msgid_plural "%1 seconds"
417−msgstr[0] ""
418−msgstr[1] ""
415+msgstr[0] "%1 سېكۇنت"
419416
420417#: qml/Panel/Indicators/MenuItemFactory.qml:815
421418msgid "0 seconds"
422−msgstr ""
419+msgstr "0 سېكۇنت"
423420
424421#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
425422#: qml/Panel/Indicators/MenuItemFactory.qml:817
426423#, qt-format
427424msgid "%1 remaining"
428−msgstr ""
425+msgstr "%1 قالدۇقى"
429426
430427#: qml/Panel/Indicators/MenuItemFactory.qml:823
431428msgid "In queue…"
@@ -454,11 +451,11 @@ msgstr "مەغلۇپ بولدى، چېكىپ قايتا سىناڭ"
454451#: qml/Panel/Indicators/MessageMenuItemFactory.qml:149
455452msgctxt "Label: Hint in message indicator line edit"
456453msgid "Reply"
457−msgstr ""
454+msgstr "جاۋاب قايتۇر"
458455
459456#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
460457msgid "Call back"
461−msgstr ""
458+msgstr "تىلفۇن ئۇرلىۋاتىدۇ"
462459
463460#: qml/Panel/Indicators/ModemInfoItem.qml:105
464461msgid "Unlock SIM"
@@ -474,28 +471,28 @@ msgstr ""
474471
475472#: qml/Tutorial/TutorialBottomFinish.qml:25
476473msgid "Tap here to finish."
477−msgstr ""
474+msgstr "بۇ يەرنى چېكىپ ئاخىرلاشتۇرۇڭ"
478475
479476#: qml/Tutorial/TutorialBottom.qml:28
480477msgid "Open special menus"
481−msgstr ""
478+msgstr "تىزملىكنى ئاچ"
482479
483480#: qml/Tutorial/TutorialBottom.qml:29
484481msgid "Swipe up from the bottom edge."
485−msgstr ""
482+msgstr "ئاستى تەرەپكە سېرىل"
486483
487484#: qml/Tutorial/TutorialContent.qml:80 qml/Tutorial/TutorialLeftFinish.qml:25
488485#: qml/Tutorial/TutorialRight.qml:144
489486msgid "Tap here to continue."
490−msgstr ""
487+msgstr "داۋاملاشتۇر"
491488
492489#: qml/Tutorial/TutorialLeftFinish.qml:24
493490msgid "These are the shortcuts to favorite apps"
494−msgstr ""
491+msgstr "بۇ سىز ئەڭ ياخشى كۆردىغان دېتاللارتېزلەتمە كۆنۇپكىلار"
495492
496493#: qml/Tutorial/TutorialLeft.qml:26
497494msgid "Open the launcher"
498−msgstr ""
495+msgstr "تارقىتىش ئاپراتنى ئاچ"
499496
500497#: qml/Tutorial/TutorialLeft.qml:27
501498msgid "Short swipe from the left edge."
@@ -507,11 +504,11 @@ msgstr ""
507504
508505#: qml/Tutorial/TutorialPage.qml:195
509506msgid "Try again."
510−msgstr ""
507+msgstr "قايتا سىناڭ"
511508
512509#: qml/Tutorial/TutorialRight.qml:31
513510msgid "To view open apps"
514−msgstr ""
511+msgstr "قوزغىتىلغان دېتاللارنى كۆرۈش"
515512
516513#: qml/Tutorial/TutorialRight.qml:32
517514msgid "Long swipe from the right edge."
@@ -519,134 +516,136 @@ msgstr ""
519516
520517#: qml/Tutorial/TutorialRight.qml:122
521518msgid "View all your running tasks."
522−msgstr ""
519+msgstr "ئىجىرا بۇلۇۋاتقان بارلىق ۋەزىپىلەرنى كۆرۈش"
523520
524521#: qml/Wizard/Page.qml:89
525522msgctxt "Button: Go back one page in the Wizard"
526523msgid "Back"
527−msgstr ""
524+msgstr "قايتىش"
528525
529526#: qml/Wizard/Pages/here-terms.qml:27
530527msgid "Terms & Conditions"
531−msgstr ""
528+msgstr "قائىدە ۋە شەرتلەر"
532529
533530#: qml/Wizard/Pages/passwd-confirm.qml:49
534531msgid "Confirm passphrase"
535−msgstr ""
532+msgstr "ئىم جۈملىسىنى جەزملەڭ"
536533
537534#: qml/Wizard/Pages/passwd-confirm.qml:50
538535msgid "Confirm passcode"
539−msgstr ""
536+msgstr "ئىمنى جەزملەڭ"
540537
541538#: qml/Wizard/Pages/passwd-confirm.qml:53
542539#: qml/Wizard/Pages/passwd-confirm.qml:54
543540msgid "Please try again."
544−msgstr ""
541+msgstr "قايتا سىناڭ."
545542
546543#: qml/Wizard/Pages/passwd-confirm.qml:82 qml/Wizard/Pages/passwd-set.qml:90
547544#: qml/Wizard/Pages/10-welcome.qml:88 qml/Wizard/Pages/30-passwd-type.qml:128
548545#: qml/Wizard/Pages/40-wifi.qml:215 qml/Wizard/Pages/50-location.qml:131
549546#: qml/Wizard/Pages/60-reporting.qml:50
550547msgid "Continue"
551−msgstr ""
548+msgstr "داۋاملاشتۇر"
552549
553550#: qml/Wizard/Pages/passwd-set.qml:61
554551msgid "Choose your passcode"
555−msgstr ""
552+msgstr "ئىم كودى(passcode) تاللاڭ"
556553
557554#: qml/Wizard/Pages/passwd-set.qml:68
558555msgid "Passphrase must be 4 characters long"
559−msgstr ""
556+msgstr "ئىم كودى چوقۇم 4 ھەرپ بولسۇن"
560557
561558#: qml/Wizard/Pages/10-welcome.qml:27
562559msgid "Hi!"
563−msgstr ""
560+msgstr "سالام!"
564561
565562#: qml/Wizard/Pages/10-welcome.qml:44
566563msgid "Welcome to your Ubuntu phone."
567−msgstr ""
564+msgstr "ئۇبۇنتۇ تېلېفونىغا مەرھابا."
568565
569566#: qml/Wizard/Pages/10-welcome.qml:52
570567msgid "Let’s get started."
571−msgstr ""
568+msgstr "باشلايلى"
572569
573570#: qml/Wizard/Pages/20-sim.qml:25
574571msgid "Add a SIM card and restart your device"
575−msgstr ""
572+msgstr "سىم كارتىسى قوشۇپ، ئۈسكۈنىنى قايتا قوزغىتىڭ"
576573
577574#: qml/Wizard/Pages/20-sim.qml:59
578575msgid "Without it, you won’t be able to make calls or use text messaging."
579−msgstr ""
576+msgstr "ئۇ بولمىسا، تېلېفون قىلىشقا ۋە ئۇچۇر ئەۋەتىشكە بولمايدۇ."
580577
581578#: qml/Wizard/Pages/20-sim.qml:73 qml/Wizard/Pages/40-wifi.qml:215
582579msgid "Skip"
583−msgstr ""
580+msgstr "ئۆتكۈزۈۋەت"
584581
585582#: qml/Wizard/Pages/30-passwd-type.qml:39
586583msgid "Lock security"
587−msgstr ""
584+msgstr "قۇلۇپلاش بىخەتەرلىكى"
588585
589586#: qml/Wizard/Pages/30-passwd-type.qml:74
590587msgid "Please select how you’d like to unlock your phone."
591−msgstr ""
588+msgstr "تېلېفوننى قانداق قۇلۇپسىزلاشنى تاللاڭ."
592589
593590#: qml/Wizard/Pages/30-passwd-type.qml:97
594591msgctxt "Label: Type of security method"
595592msgid "Swipe"
596−msgstr ""
593+msgstr "تېز سىيرىش"
597594
598595#: qml/Wizard/Pages/30-passwd-type.qml:98
599596msgctxt "Label: Description of security method"
600597msgid "No security"
601−msgstr ""
598+msgstr "بىخەتەرلىكى يوق"
602599
603600#: qml/Wizard/Pages/30-passwd-type.qml:100
604601msgctxt "Label: Type of security method"
605602msgid "Passcode"
606−msgstr ""
603+msgstr "ئىم"
607604
608605#: qml/Wizard/Pages/30-passwd-type.qml:101
609606msgctxt "Label: Description of security method"
610607msgid "4 digits only"
611−msgstr ""
608+msgstr "4 خانىلىق سان"
612609
613610#: qml/Wizard/Pages/30-passwd-type.qml:103
614611msgctxt "Label: Type of security method"
615612msgid "Passphrase"
616−msgstr ""
613+msgstr "ئىم"
617614
618615#: qml/Wizard/Pages/30-passwd-type.qml:104
619616msgctxt "Label: Description of security method"
620617msgid "Numbers and letters"
621−msgstr ""
618+msgstr "رەقەم ۋە ھەرپلەر"
622619
623620#: qml/Wizard/Pages/40-wifi.qml:29
624621msgid "Connect to Wi‑Fi"
625−msgstr ""
622+msgstr "سىمسىز تورغا(Wi-Fi) باغلان"
626623
627624#: qml/Wizard/Pages/40-wifi.qml:168
628625msgid "Available networks…"
629−msgstr ""
626+msgstr "ئىشلەتكىلى بولىدىغان تورلار…"
630627
631628#: qml/Wizard/Pages/40-wifi.qml:169
632629msgid "No available networks."
633−msgstr ""
630+msgstr "ئىشلەتكىلى بولىدىغان تور يوق."
634631
635632#: qml/Wizard/Pages/50-location.qml:27
636633msgid "Location"
637−msgstr ""
634+msgstr "ئورنى"
638635
639636#: qml/Wizard/Pages/50-location.qml:62
640637msgid "Let the phone detect your location:"
641−msgstr ""
638+msgstr "تىلفۇن ئورنىڭزنى بىكتىۋاتدۇ:"
642639
643640#: qml/Wizard/Pages/50-location.qml:69
644641msgid "Using GPS only (less accurate)"
645−msgstr ""
642+msgstr "GPS ئىشلىتىش (توپ توغرا چىقمايدۇ)"
646643
647644#: qml/Wizard/Pages/50-location.qml:86
648645msgid "Using GPS, anonymized Wi-Fi and cellular network info (recommended)"
649646msgstr ""
647+"GPS ئىشلىەتكەندە سېمسىز تور ياكى كۆچمە تىلفۇن تورنى ئېچىش كېرەك (تەۋسىيە "
648+"قىلىندۇ)"
650649
651650#. Translators: HERE is a trademark for Nokia's location service, you probably shouldn't translate it
652651#: qml/Wizard/Pages/50-location.qml:103
@@ -657,55 +656,150 @@ msgstr ""
657656
658657#: qml/Wizard/Pages/50-location.qml:112
659658msgid "Not at all"
660−msgstr ""
659+msgstr "پەقەت ئۇنداق ئەمەس"
661660
662661#: qml/Wizard/Pages/50-location.qml:124
663662msgid "You can change your mind later in <b>System Settings</b>."
664−msgstr ""
663+msgstr "سىز <b>سىستېما تەڭشەك</b> تىن ھەرخىل ئۆزگەرتىشلەرنى ئىلىپ بارالايسىز"
665664
666665#: qml/Wizard/Pages/60-reporting.qml:24
667666msgid "Improving your experience"
668−msgstr ""
667+msgstr "سەۋىيەيىڭىز ئاشىدۇ"
669668
670669#: qml/Wizard/Pages/60-reporting.qml:36
671670msgid ""
672671"Your phone is set up to automatically report errors to Canonical and its "
673672"partners, the makers of the operating system."
674673msgstr ""
674+"تېلېفونىڭىز خاتالىقلارنى Canonical ۋە ئۇنىڭ بىلەن ھەمكارلاشقانلارغا ۋە "
675+"مەشغۇلات سىستېمىسىنى ياسىغۇچىلارغا ئاپتوماتىك مەلۇم قىلىدىغان قىلىپ تەڭشەلدى."
675676
676677#: qml/Wizard/Pages/60-reporting.qml:43
677678msgid ""
678679"This can be disabled in <b>System Settings</b> under <b>Security &amp; "
679680"Privacy</b>"
680681msgstr ""
682+"بۇنى <b>بىخەتەرلىك &amp; شەخسىيەت</b>نىڭ ئاستىدىكى <b>سىستېما تەڭشىكى</b>دە "
683+"ئىناۋەتسىز قىلىشقا بولىدۇ."
681684
682685#: qml/Wizard/Pages/80-finished.qml:24
683686msgid "All done"
684−msgstr ""
687+msgstr "ھەممىسى تامام"
685688
686689#: qml/Wizard/Pages/80-finished.qml:39
687690msgid "Nice work!"
688−msgstr ""
691+msgstr "جاپا چەكتىڭىز!"
689692
690693#: qml/Wizard/Pages/80-finished.qml:46
691694msgid "Your phone is now ready to use."
692−msgstr ""
695+msgstr "تېلېفونىڭىز ئىشلىتىشكە ھازىرلاندى."
693696
694697#: qml/Wizard/Pages/80-finished.qml:53
695698msgid "Finish"
696−msgstr ""
699+msgstr "تامام"
697700
698701#. Translators: This is the arrow for "Back" buttons
699702#: qml/Wizard/StackButton.qml:39
700703#, qt-format
701704msgid "〈 %1"
702−msgstr ""
705+msgstr "〈 %1"
703706
704707#. Translators: This is the arrow for "Forward" buttons
705708#: qml/Wizard/StackButton.qml:42
706709#, qt-format
707710msgid "%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 "دائىرە باشقۇرۇش"
709803
710804#~ msgid "Please re-enter"
711805#~ msgstr "قايتا كىرگۈزۈڭ"
po/uk.po+99−8
@@ -8,7 +8,7 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: Yuri Chornoivan <yurchor@gmail.com>\n"
1313"Language-Team: Ukrainian <uk@li.org>\n"
1414"MIME-Version: 1.0\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2015-09-12 05:43+0000\n"
20−"X-Generator: Launchpad (build 17720)\n"
19+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
20+"X-Generator: Launchpad (build 17746)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -30,7 +30,7 @@ msgstr "Заблокувати кнопку"
3030
3131#: plugins/Unity/Launcher/launcheritem.cpp:52
3232msgid "Quit"
33−msgstr ""
33+msgstr "Вийти"
3434
3535#: plugins/Unity/Launcher/launcheritem.cpp:106
3636msgid "Unpin shortcut"
@@ -468,7 +468,7 @@ msgstr "Відповісти"
468468
469469#: qml/Panel/Indicators/MessageMenuItemFactory.qml:204
470470msgid "Call back"
471−msgstr ""
471+msgstr "Зворотний виклик"
472472
473473#: qml/Panel/Indicators/ModemInfoItem.qml:105
474474msgid "Unlock SIM"
@@ -726,8 +726,99 @@ msgstr "〈 %1"
726726msgid "%1 〉"
727727msgstr "%1 〉"
728728
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+
729823#~ msgid "Please re-enter"
730824#~ msgstr "Ввведіть ще раз"
731−
732−#~ msgid "Click here to finish."
733−#~ msgstr "Натисніть тут, щоб завершити."
po/unity8.pot+36−34
@@ -8,7 +8,7 @@ msgid ""
88msgstr ""
99"Project-Id-Version: unity8\n"
1010"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"
1212"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1313"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1414"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,7 +18,7 @@ msgstr ""
1818"Content-Transfer-Encoding: 8bit\n"
1919"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
2020
21−#: plugins/LightDM/Greeter.cpp:112
21+#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
2323msgstr ""
2424
@@ -134,83 +134,83 @@ msgid_plural "Please wait %1 minutes and then try again…"
134134msgstr[0] ""
135135msgstr[1] ""
136136
137−#: qml/Components/Dialogs.qml:112
137+#: qml/Components/Dialogs.qml:115
138138msgctxt "Title: Lock/Log out dialog"
139139msgid "Log out"
140140msgstr ""
141141
142−#: qml/Components/Dialogs.qml:113
142+#: qml/Components/Dialogs.qml:116
143143msgid "Are you sure you want to log out?"
144144msgstr ""
145145
146−#: qml/Components/Dialogs.qml:115
146+#: qml/Components/Dialogs.qml:118
147147msgctxt "Button: Lock the system"
148148msgid "Lock"
149149msgstr ""
150150
151−#: qml/Components/Dialogs.qml:122
151+#: qml/Components/Dialogs.qml:125
152152msgctxt "Button: Log out from the system"
153153msgid "Log Out"
154154msgstr ""
155155
156−#: qml/Components/Dialogs.qml:129 qml/Components/Dialogs.qml:162
157−#: qml/Components/Dialogs.qml:221
156+#: qml/Components/Dialogs.qml:132 qml/Components/Dialogs.qml:165
157+#: qml/Components/Dialogs.qml:224
158158msgid "Cancel"
159159msgstr ""
160160
161−#: qml/Components/Dialogs.qml:141
161+#: qml/Components/Dialogs.qml:144
162162msgctxt "Title: Reboot/Shut down dialog"
163163msgid "Shut down"
164164msgstr ""
165165
166−#: qml/Components/Dialogs.qml:142
166+#: qml/Components/Dialogs.qml:145
167167msgid "Are you sure you want to shut down?"
168168msgstr ""
169169
170−#: qml/Components/Dialogs.qml:144
170+#: qml/Components/Dialogs.qml:147
171171msgctxt "Button: Reboot the system"
172172msgid "Reboot"
173173msgstr ""
174174
175−#: qml/Components/Dialogs.qml:153
175+#: qml/Components/Dialogs.qml:156
176176msgctxt "Button: Shut down the system"
177177msgid "Shut down"
178178msgstr ""
179179
180−#: qml/Components/Dialogs.qml:175
180+#: qml/Components/Dialogs.qml:178
181181msgctxt "Title: Reboot dialog"
182182msgid "Reboot"
183183msgstr ""
184184
185−#: qml/Components/Dialogs.qml:176
185+#: qml/Components/Dialogs.qml:179
186186msgid "Are you sure you want to reboot?"
187187msgstr ""
188188
189−#: qml/Components/Dialogs.qml:178
189+#: qml/Components/Dialogs.qml:181
190190msgid "No"
191191msgstr ""
192192
193−#: qml/Components/Dialogs.qml:185
193+#: qml/Components/Dialogs.qml:188
194194msgid "Yes"
195195msgstr ""
196196
197−#: qml/Components/Dialogs.qml:200
197+#: qml/Components/Dialogs.qml:203
198198msgctxt "Title: Power off/Restart dialog"
199199msgid "Power"
200200msgstr ""
201201
202−#: qml/Components/Dialogs.qml:201
202+#: qml/Components/Dialogs.qml:204
203203msgid ""
204204"Are you sure you would like\n"
205205"to power off?"
206206msgstr ""
207207
208−#: qml/Components/Dialogs.qml:203
208+#: qml/Components/Dialogs.qml:206
209209msgctxt "Button: Power off the system"
210210msgid "Power off"
211211msgstr ""
212212
213−#: qml/Components/Dialogs.qml:212
213+#: qml/Components/Dialogs.qml:215
214214msgctxt "Button: Restart the system"
215215msgid "Restart"
216216msgstr ""
@@ -271,8 +271,10 @@ msgstr ""
271271msgid "Less..."
272272msgstr ""
273273
274−#: qml/Dash/Previews/PreviewCommentInput.qml:61
275−#: qml/Dash/Previews/PreviewRatingInput.qml:169
274+#: qml/Dash/Previews/PreviewCommentInput.qml:68
275+#: qml/Dash/Previews/PreviewRatingInput.qml:174
276+#: qml/Panel/Indicators/MessageMenuItemFactory.qml:148
277+#: qml/Panel/Indicators/MessageMenuItemFactory.qml:205
276278msgid "Send"
277279msgstr ""
278280
@@ -387,62 +389,62 @@ msgstr ""
387389msgid "Conference"
388390msgstr ""
389391
390−#: qml/Panel/Indicators/MenuItemFactory.qml:674
392+#: qml/Panel/Indicators/MenuItemFactory.qml:718
391393msgid "Nothing is playing"
392394msgstr ""
393395
394−#: qml/Panel/Indicators/MenuItemFactory.qml:803
396+#: qml/Panel/Indicators/MenuItemFactory.qml:847
395397#, qt-format
396398msgid "%1 hour"
397399msgid_plural "%1 hours"
398400msgstr[0] ""
399401msgstr[1] ""
400402
401−#: qml/Panel/Indicators/MenuItemFactory.qml:807
403+#: qml/Panel/Indicators/MenuItemFactory.qml:851
402404#, qt-format
403405msgid "%1 minute"
404406msgid_plural "%1 minutes"
405407msgstr[0] ""
406408msgstr[1] ""
407409
408−#: qml/Panel/Indicators/MenuItemFactory.qml:812
410+#: qml/Panel/Indicators/MenuItemFactory.qml:856
409411#, qt-format
410412msgid "%1 second"
411413msgid_plural "%1 seconds"
412414msgstr[0] ""
413415msgstr[1] ""
414416
415−#: qml/Panel/Indicators/MenuItemFactory.qml:815
417+#: qml/Panel/Indicators/MenuItemFactory.qml:859
416418msgid "0 seconds"
417419msgstr ""
418420
419421#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
420−#: qml/Panel/Indicators/MenuItemFactory.qml:817
422+#: qml/Panel/Indicators/MenuItemFactory.qml:861
421423#, qt-format
422424msgid "%1 remaining"
423425msgstr ""
424426
425−#: qml/Panel/Indicators/MenuItemFactory.qml:823
427+#: qml/Panel/Indicators/MenuItemFactory.qml:867
426428msgid "In queue…"
427429msgstr ""
428430
429−#: qml/Panel/Indicators/MenuItemFactory.qml:827
431+#: qml/Panel/Indicators/MenuItemFactory.qml:871
430432msgid "Downloading"
431433msgstr ""
432434
433−#: qml/Panel/Indicators/MenuItemFactory.qml:829
435+#: qml/Panel/Indicators/MenuItemFactory.qml:873
434436msgid "Paused, tap to resume"
435437msgstr ""
436438
437−#: qml/Panel/Indicators/MenuItemFactory.qml:831
439+#: qml/Panel/Indicators/MenuItemFactory.qml:875
438440msgid "Canceled"
439441msgstr ""
440442
441−#: qml/Panel/Indicators/MenuItemFactory.qml:833
443+#: qml/Panel/Indicators/MenuItemFactory.qml:877
442444msgid "Finished"
443445msgstr ""
444446
445−#: qml/Panel/Indicators/MenuItemFactory.qml:835
447+#: qml/Panel/Indicators/MenuItemFactory.qml:879
446448msgid "Failed, tap to retry"
447449msgstr ""
448450
po/ur.po+3−3
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Urdu <ur@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:43+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/uz.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:43+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/vi.po+3−3
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Vietnamese <vi@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:43+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/xh.po+3−3
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Xhosa <xh@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:43+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
po/zh_CN.po+71−6
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: Ian Li <Unknown>\n"
1313"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:43+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -700,8 +700,73 @@ msgstr "〈 %1"
700700msgid "%1 〉"
701701msgstr "%1 〉"
702702
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+
703771#~ msgid "Please re-enter"
704772#~ msgstr "请重新输入"
705−
706−#~ msgid "Click here to finish."
707−#~ msgstr "点击这里完成。"
po/zh_HK.po+56−3
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 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"
1212"Last-Translator: Daniel Cheung <daniel.2345@hotmail.com>\n"
1313"Language-Team: Chinese (Hong Kong) <zh_HK@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:43+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -701,3 +701,56 @@ msgstr ""
701701#, qt-format
702702msgid "%1 〉"
703703msgstr ""
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 ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"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"
1212"Last-Translator: Po-Hsu Lin <po-hsu.lin@canonical.com>\n"
1313"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-09-12 05:43+0000\n"
19−"X-Generator: Launchpad (build 17720)\n"
18+"X-Launchpad-Export-Date: 2015-09-19 05:37+0000\n"
19+"X-Generator: Launchpad (build 17746)\n"
2020"Language: zh_TW\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
@@ -699,5 +699,94 @@ msgstr "〈 %1"
699699msgid "%1 〉"
700700msgstr "%1 〉"
701701
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+
702788#~ msgid "Please re-enter"
703789#~ 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 {
101101
102102 isCurrent: ListView.isCurrentItem
103103
104− previewModel: {
104+ readonly property var previewStack: {
105105 if (root.open) {
106106 if (index === root.initialIndex) {
107− return root.initialIndexPreviewStack.getPreviewModel(0);
107+ return root.initialIndexPreviewStack;
108108 } else {
109− var previewStack = root.scope.preview(result, root.categoryId);
110− return previewStack.getPreviewModel(0);
109+ return root.scope.preview(result, root.categoryId);
111110 }
112111 } else {
113112 return null;
114113 }
115114 }
115+
116+ previewModel: {
117+ if (previewStack) {
118+ return previewStack.getPreviewModel(0);
119+ } else {
120+ return null;
121+ }
122+ }
123+
116124 scopeStyle: root.scopeStyle
117125 }
118126 }
qml/Dash/Previews/PreviewExpandable.qml+3−3
@@ -24,15 +24,15 @@ import "../../Components"
2424 Those widgets can be collapsed or uncollapsed. When uncollapsed
2525 all the widgets are shown, when collapsed only the first
2626 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.
2830 */
2931
3032PreviewWidget {
3133 id: root
3234 implicitHeight: childrenRect.height
3335
34− expanded: false
35−
3636 Label {
3737 id: titleLabel
3838 objectName: "titleLabel"
qml/Dash/Previews/PreviewWidgetFactory.qml+1−1
@@ -35,7 +35,7 @@ Loader {
3535 property var scopeStyle: null
3636
3737 //! 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
3939
4040 //! Set to true if the parent preview is displayed.
4141 property bool isCurrentPreview: false
qml/Greeter/Infographics.qml+1−1
@@ -73,7 +73,7 @@ Item {
7373 notification.hideAnim.start()
7474 }
7575
76− visible: model.label !== ""
76+ visible: model.username !== ""
7777
7878 Component.onCompleted: startShowAnimation()
7979
qml/Launcher/Launcher.qml+1
@@ -136,6 +136,7 @@ Item {
136136 id: fadeOutAnimation
137137 ScriptAction {
138138 script: {
139+ animateTimer.stop(); // Don't change the state behind our back
139140 panel.layer.enabled = true
140141 }
141142 }
qml/Notifications/Notification.qml+11−7
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013, 2015 Canonical, Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
@@ -17,11 +17,10 @@
1717import QtQuick 2.0
1818import QtMultimedia 5.0
1919import Powerd 0.1
20−import Ubuntu.Components 1.1
20+import Ubuntu.Components 1.2
2121import Unity.Notifications 1.0
2222import QMenuModel 0.1
2323import Utils 0.1
24−
2524import Ubuntu.Components.ListItems 0.1 as ListItem
2625
2726Item {
@@ -49,6 +48,8 @@ Item {
4948 readonly property color sdDarkGrey: "#dddddd"
5049 readonly property color sdFontColor: "#5d5d5d"
5150 readonly property real contentSpacing: units.gu(2)
51+ readonly property bool canBeClosed: type === Notification.Ephemeral
52+ property bool hasMouse
5253
5354 objectName: "background"
5455 implicitHeight: type !== Notification.PlaceHolder ? (fullscreen ? maxHeight : outterColumn.height - shapedBack.anchors.topMargin + contentSpacing * 2) : 0
@@ -216,6 +217,8 @@ Item {
216217 onClicked: {
217218 if (notification.type == Notification.Interactive) {
218219 notification.notification.invokeAction(actionRepeater.itemAt(0).actionId)
220+ } else if (hasMouse && canBeClosed) {
221+ notification.notification.close()
219222 } else {
220223 notificationList.currentIndex = index;
221224 }
@@ -280,7 +283,7 @@ Item {
280283 fontSize: "medium"
281284 color: darkOnBright ? sdFontColor : Theme.palette.selected.backgroundText
282285 elide: Text.ElideRight
283− textFormat: Text.PlainText
286+ textFormat: Text.StyledText
284287 }
285288
286289 Label {
@@ -297,7 +300,7 @@ Item {
297300 wrapMode: Text.WordWrap
298301 maximumLineCount: type == Notification.SnapDecision ? 12 : 2
299302 elide: Text.ElideRight
300− textFormat: Text.PlainText
303+ textFormat: Text.StyledText
301304 }
302305 }
303306
@@ -471,7 +474,7 @@ Item {
471474 onClicked: notification.notification.invokeAction(oneOverTwoLoaderBottom.actionId)
472475 }
473476 }
474− sourceComponent: (index == 1 || index == 2) ? oneOverTwoButtonBottom : undefined
477+ sourceComponent: (index == 1 || index == 2) ? oneOverTwoButtonBottom : undefined
475478 }
476479 }
477480 }
@@ -487,7 +490,7 @@ Item {
487490 margins: contentSpacing
488491 }
489492 visible: notification.type === Notification.SnapDecision && actionRepeater.count > 0 && !oneOverTwoCase.visible
490− spacing: units.gu(2)
493+ spacing: contentSpacing
491494 layoutDirection: Qt.RightToLeft
492495
493496 Loader {
@@ -499,6 +502,7 @@ Item {
499502 width: buttonRow.width
500503 leftIconName: "call-end"
501504 rightIconName: "call-start"
505+ clickToAct: notification.hasMouse
502506 onRightTriggered: {
503507 notification.notification.invokeAction(notification.actions.data(0, ActionModel.RoleActionId))
504508 }
qml/Notifications/Notifications.qml+3−1
@@ -28,6 +28,7 @@ ListView {
2828
2929 property real margin
3030 property bool useModal: snapDecisionProxyModel.count > 0
31+ property bool hasMouse
3132
3233 UnitySortFilterProxyModel {
3334 id: snapDecisionProxyModel
@@ -52,12 +53,13 @@ ListView {
5253 secondaryIconSource: model.secondaryIcon
5354 summary: model.summary
5455 body: model.body
55− value: model.value
56+ value: model.value ? model.value : -1
5657 actions: model.actions
5758 notificationId: model.id
5859 notification: notificationList.model.getRaw(notificationId)
5960 maxHeight: notificationList.height
6061 margins: notificationList.margin
62+ hasMouse: notificationList.hasMouse
6163
6264 // make sure there's no opacity-difference between the several
6365 // elements in a notification
qml/Notifications/SwipeToAct.qml+38−3
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 20014-2015 Canonical, Ltd.
2+ * Copyright (C) 2014-2015 Canonical, Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
@@ -15,12 +15,12 @@
1515 */
1616
1717import QtQuick 2.3
18−import Ubuntu.Components 1.1
18+import Ubuntu.Components 1.2
1919
2020Item {
2121 id: swipeToAct
2222
23− height: childrenRect.height
23+ height: clickToAct ? leftButton.height : childrenRect.height
2424
2525 signal leftTriggered()
2626 signal rightTriggered()
@@ -28,6 +28,8 @@ Item {
2828 property string leftIconName
2929 property string rightIconName
3030
31+ property bool clickToAct
32+
3133 QtObject {
3234 id: priv
3335
@@ -64,15 +66,45 @@ Item {
6466 }
6567 }
6668
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+
6797 UbuntuShape {
6898 id: row
6999 width: parent.width
70100 height: priv.sliderHeight
71101 color: priv.sliderBGColor
72102 borderSource: "none"
103+ visible: !clickToAct
73104
74105 UbuntuShape {
75106 id: leftShape
107+ objectName: "leftArea"
76108 anchors.top: parent.top
77109 anchors.left: parent.left
78110 anchors.margins: priv.gap
@@ -167,6 +199,7 @@ Item {
167199 color: "white"
168200 }
169201 }
202+
170203 Row {
171204 anchors.verticalCenter: parent.verticalCenter
172205 anchors.left: slider.right
@@ -189,6 +222,7 @@ Item {
189222
190223 UbuntuShape {
191224 id: rightShape
225+ objectName: "rightArea"
192226 anchors.top: parent.top
193227 anchors.right: parent.right
194228 anchors.margins: priv.gap
@@ -214,6 +248,7 @@ Item {
214248 MouseArea {
215249 id: mouseArea
216250 objectName: "swipeMouseArea"
251+ enabled: !clickToAct
217252
218253 anchors.fill: row
219254 drag.target: slider
qml/OrientedShell.qml+1
@@ -155,6 +155,7 @@ Rectangle {
155155 nativeWidth: root.width
156156 nativeHeight: root.height
157157 mode: applicationArguments.mode
158+ hasMouse: UnityInputInfo.mice > deviceConfiguration.ignoredMice
158159
159160 // TODO: Factor in the connected input devices (eg: physical keyboard, mouse, touchscreen),
160161 // what's the output device (eg: big TV, desktop monitor, phone display), etc.
qml/Panel/IndicatorItem.qml+1−1
@@ -243,7 +243,7 @@ IndicatorDelegate {
243243 return;
244244 }
245245
246− title = rootActionState.title ? rootActionState.title : "";
246+ title = rootActionState.title ? rootActionState.title : rootActionState.accessibleName;
247247 leftLabel = rootActionState.leftLabel ? rootActionState.leftLabel : "";
248248 rightLabel = rootActionState.rightLabel ? rootActionState.rightLabel : "";
249249 icons = rootActionState.icons;
qml/Panel/IndicatorPage.qml+1−1
@@ -23,7 +23,7 @@ IndicatorBase {
2323 id: main
2424
2525 //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
2727 property alias highlightFollowsCurrentItem : mainMenu.highlightFollowsCurrentItem
2828 readonly property alias factory: _factory
2929
qml/Panel/Indicators/IndicatorDelegate.qml+1−1
@@ -21,5 +21,5 @@ import QtQuick 2.0
2121
2222IndicatorBase {
2323 readonly property bool indicatorVisible: rootActionState.indicatorVisible
24− readonly property string title: rootActionState.title
24+ readonly property string title: rootActionState.title || rootActionState.accessibleName
2525}
qml/Panel/Indicators/MenuItemFactory.qml+92−4
@@ -1,5 +1,5 @@
11/*
2− * Copyright 2013 Canonical Ltd.
2+ * Copyright 2013,2015 Canonical Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU Lesser General Public License as published by
@@ -12,9 +12,6 @@
1212 *
1313 * You should have received a copy of the GNU Lesser General Public License
1414 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Nick Dedekind <nick.dedekind@canonical.com>
1815 */
1916
2017import QtQuick 2.0
@@ -24,6 +21,7 @@ import QMenuModel 0.1
2421import Utils 0.1 as Utils
2522import Ubuntu.Components.ListItems 0.1 as ListItems
2623import Ubuntu.Components 1.3
24+import Unity.Session 0.1
2725
2826Item {
2927 id: menuFactory
@@ -60,6 +58,12 @@ Item {
6058 "unity.widgets.systemsettings.tablet.wifisection" : wifiSection,
6159 "unity.widgets.systemsettings.tablet.accesspoint" : accessPoint,
6260 "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
6367 },
6468 "indicator-messages" : {
6569 "com.canonical.indicator.button" : messagesButtonMenu
@@ -426,6 +430,90 @@ Item {
426430 }
427431 }
428432
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+
429517 Component {
430518 id: wifiSection;
431519
qml/Panel/Indicators/client/IndicatorRepresentation.qml+3−1
@@ -26,7 +26,9 @@ import "../.."
2626Page {
2727 id: root
2828
29− title: indicatorProperties && indicatorProperties.title ? indicatorProperties.title : ""
29+ title: indicatorProperties && indicatorProperties.title ? indicatorProperties.title :
30+ indicatorProperties && indicatorProperties.accessibleName ? indicatorProperties.accessibleName
31+ : ""
3032 property variant indicatorProperties
3133
3234 anchors.fill: parent
qml/Shell.qml+3−1
@@ -63,6 +63,7 @@ Item {
6363 function updateFocusedAppOrientationAnimated() {
6464 applicationsDisplayLoader.item.updateFocusedAppOrientationAnimated();
6565 }
66+ property bool hasMouse
6667
6768 // to be read from outside
6869 readonly property int mainAppWindowOrientationAngle:
@@ -383,7 +384,7 @@ Item {
383384 // more clever here.
384385 active: usageScenario != "desktop" && AccountsService.demoEdges
385386
386− paused: LightDM.Greeter.active
387+ paused: lightDM.greeter.active
387388 launcher: launcher
388389 panel: panel
389390 edgeSize: shell.edgeSize
@@ -636,6 +637,7 @@ Item {
636637
637638 model: NotificationBackend.Model
638639 margin: units.gu(1)
640+ hasMouse: shell.hasMouse
639641
640642 y: topmostIsFullscreen ? 0 : panel.panelHeight
641643 height: parent.height - (topmostIsFullscreen ? 0 : panel.panelHeight)
qml/Stages/ApplicationWindow.qml+3−3
@@ -20,6 +20,8 @@ import Unity.Application 0.1
2020
2121FocusScope {
2222 id: root
23+ implicitWidth: sessionContainer.implicitWidth
24+ implicitHeight: sessionContainer.implicitHeight
2325
2426 // to be read from outside
2527 readonly property bool fullscreen: application ? application.fullscreen : false
@@ -29,6 +31,7 @@ FocusScope {
2931 // to be set from outside
3032 property QtObject application
3133 property int surfaceOrientationAngle
34+ property alias resizeSurface: sessionContainer.resizeSurface
3235
3336 QtObject {
3437 id: d
@@ -137,9 +140,6 @@ FocusScope {
137140 onSurfaceChanged: {
138141 if (sessionContainer.surface) {
139142 surfaceInitTimer.start();
140− if (ApplicationManager.focusedApplicationId == application.appId) {
141− root.forceActiveFocus();
142− }
143143 } else {
144144 d.surfaceInitialized = false;
145145 }
qml/Stages/DecoratedWindow.qml+10−51
@@ -31,37 +31,10 @@ FocusScope {
3131 property bool highlightShown: false
3232 property real shadowOpacity: 1
3333
34− property int windowWidth: width
35− property int windowHeight: height
36−
3734 signal close();
3835 signal maximize();
3936 signal minimize();
4037
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−
6538 BorderImage {
6639 anchors {
6740 fill: root
@@ -98,29 +71,15 @@ FocusScope {
9871 visible: decorationShown
9972 }
10073
101− Item {
102− id: clipper
103− anchors.fill: parent
104−
105− ApplicationWindow {
106− id: applicationWindow
107− objectName: application ? "appWindow_" + application.appId : "appWindow_null"
108− anchors.top: parent.top
109− anchors.topMargin: root.decorationShown ? decoration.height : 0
110− anchors.left: parent.left
111− width: root.windowWidth
112− height: root.windowHeight - (root.decorationShown ? decoration.height : 0)
113− interactive: true
114− 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− }
74+ ApplicationWindow {
75+ id: applicationWindow
76+ objectName: application ? "appWindow_" + application.appId : "appWindow_null"
77+ anchors.top: parent.top
78+ anchors.topMargin: decoration.height
79+ anchors.left: parent.left
80+ width: root.width
81+ height: root.height - decoration.height
82+ interactive: true
83+ focus: true
12584 }
12685}
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
2020import QtQuick.Layouts 1.1
2121import Ubuntu.Components 1.1
2222import Unity.Application 0.1
23+import "../Components"
2324import "../Components/PanelState"
2425import Utils 0.1
2526import Ubuntu.Gestures 0.1
@@ -41,6 +42,8 @@ Rectangle {
4142 property bool beingResized: false
4243 property bool keepDashRunning: true
4344 property bool suspended: false
45+ property alias background: wallpaper.source
46+ property alias altTabPressed: spread.altTabPressed
4447
4548 // functions to be called from outside
4649 function updateFocusedAppOrientation() { /* TODO */ }
@@ -53,21 +56,11 @@ Rectangle {
5356 property int mainAppWindowOrientationAngle: 0
5457 readonly property bool orientationChangesEnabled: false
5558
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−
6659 Connections {
6760 target: ApplicationManager
6861 onApplicationAdded: {
69− if (root.state == "altTab") {
70− root.state = "";
62+ if (spread.state == "altTab") {
63+ spread.state = "";
7164 }
7265
7366 ApplicationManager.requestFocusApplication(appId)
@@ -77,8 +70,11 @@ Rectangle {
7770 var appIndex = priv.indexOf(appId);
7871 var appDelegate = appRepeater.itemAt(appIndex);
7972 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+ }
8278 }
8379 }
8480
@@ -91,12 +87,6 @@ Rectangle {
9187 return index >= 0 && index < appRepeater.count ? appRepeater.itemAt(index) : null
9288 }
9389
94− onFocusedAppDelegateChanged: {
95− if (focusedAppDelegate) {
96− focusedAppDelegate.focus = true;
97− }
98− }
99−
10090 function indexOf(appId) {
10191 for (var i = 0; i < ApplicationManager.count; i++) {
10292 if (ApplicationManager.get(i).appId == appId) {
@@ -122,66 +112,17 @@ Rectangle {
122112 value: priv.focusedAppDelegate !== null && priv.focusedAppDelegate.state === "maximized"
123113 }
124114
125− Rectangle {
126− id: spreadBackground
127− anchors.fill: parent
128− color: "#55000000"
129− visible: false
130− }
131−
132115 FocusScope {
133116 id: appContainer
134117 objectName: "appContainer"
135118 anchors.fill: parent
119+ focus: spread.state !== "altTab"
136120
137− Keys.onPressed: {
138− switch (event.key) {
139− case Qt.Key_Left:
140− case Qt.Key_Backtab:
141− selectPrevious(event.isAutoRepeat)
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− }
121+ CrossFadeImage {
122+ id: wallpaper
123+ anchors.fill: parent
124+ sourceSize { height: root.height; width: root.width }
125+ fillMode: Image.PreserveAspectCrop
185126 }
186127
187128 Repeater {
@@ -189,30 +130,13 @@ Rectangle {
189130 model: ApplicationManager
190131 objectName: "appRepeater"
191132
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−
204133 delegate: FocusScope {
205134 id: appDelegate
206135 z: ApplicationManager.count - index
207136 y: units.gu(3)
208137 width: units.gu(60)
209138 height: units.gu(50)
210−
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
139+ focus: model.appId === priv.focusedAppId
216140
217141 readonly property int minWidth: units.gu(10)
218142 readonly property int minHeight: units.gu(10)
@@ -222,13 +146,7 @@ Rectangle {
222146
223147 onFocusChanged: {
224148 if (focus && ApplicationManager.focusedApplicationId !== model.appId) {
225− ApplicationManager.requestFocusApplication(model.appId);
226− decoratedWindow.forceActiveFocus();
227− }
228− }
229− Component.onCompleted: {
230− if (ApplicationManager.focusedApplicationId == model.appId) {
231− decoratedWindow.forceActiveFocus();
149+ ApplicationManager.focusApplication(model.appId);
232150 }
233151 }
234152
@@ -256,63 +174,17 @@ Rectangle {
256174 maximized = false;
257175 }
258176
259− Behavior on x {
260− id: closeBehavior
261− enabled: appRepeater.closingIndex >= 0
262− UbuntuNumberAnimation {
263− onRunningChanged: if (!running) appRepeater.closingIndex = -1
264− }
265− }
266−
267177 states: [
268178 State {
269− name: "normal"; when: !appDelegate.maximized && !appDelegate.minimized && root.state !== "altTab"
179+ name: "normal"; when: !appDelegate.maximized && !appDelegate.minimized
270180 },
271181 State {
272− name: "maximized"; when: appDelegate.maximized && (root.state !== "altTab" || (root.state == "altTab" && !root.workspacesUpdated))
182+ name: "maximized"; when: appDelegate.maximized
273183 PropertyChanges { target: appDelegate; x: 0; y: 0; width: root.width; height: root.height }
274184 },
275185 State {
276− name: "minimized"; when: appDelegate.minimized && (root.state !== "altTab" || (root.state == "altTab" && !root.workspacesUpdated))
186+ name: "minimized"; when: appDelegate.minimized
277187 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− }
316188 }
317189 ]
318190 transitions: [
@@ -334,18 +206,13 @@ Rectangle {
334206 }
335207 }
336208 ]
337− property real angle: 0
338− property real itemScale: 1
339− property int itemScaleOriginX: 0
340− property int itemScaleOriginY: 0
341−
342− SpreadMaths {
343− id: spreadMaths
344− flickable: spreadFlickable
345− itemIndex: index
346− totalItems: Math.max(6, ApplicationManager.count)
347− sceneHeight: root.height
348− itemHeight: appDelegate.height
209+
210+ Binding {
211+ id: previewBinding
212+ target: appDelegate
213+ property: "z"
214+ value: ApplicationManager.count + 1
215+ when: index == spread.highlightedIndex && blurLayer.ready
349216 }
350217
351218 WindowMoveResizeArea {
@@ -356,7 +223,7 @@ Rectangle {
356223 resizeHandleWidth: units.gu(2)
357224 windowId: model.appId // FIXME: Change this to point to windowId once we have such a thing
358225
359− onPressed: appDelegate.focus = true;
226+ onPressed: { ApplicationManager.focusApplication(model.appId) }
360227 }
361228
362229 DecoratedWindow {
@@ -364,334 +231,46 @@ Rectangle {
364231 objectName: "decoratedWindow"
365232 anchors.left: appDelegate.left
366233 anchors.top: appDelegate.top
367− windowWidth: appDelegate.windowWidth
368− windowHeight: appDelegate.windowHeight
234+ width: appDelegate.width
235+ height: appDelegate.height
369236 application: ApplicationManager.get(index)
370237 active: ApplicationManager.focusedApplicationId === model.appId
371− focus: false
238+ focus: true
372239
373240 onClose: ApplicationManager.stopApplication(model.appId)
374241 onMaximize: appDelegate.maximize()
375242 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− }
470243 }
471244 }
472245 }
473246 }
474247
475− MouseArea {
476− id: hoverMouseArea
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"
248+ BlurLayer {
249+ id: blurLayer
526250 anchors.fill: parent
527− property int minContentWidth: 6 * Math.min(height / 4, width / 5)
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
251+ source: appContainer
553252 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− }
628253 }
629254
630− Label {
631− id: currentSelectedLabel
632− anchors { bottom: parent.bottom; bottomMargin: root.height * 0.625; horizontalCenter: parent.horizontalCenter }
633− text: appRepeater.highlightedIndex >= 0 ? ApplicationManager.get(appRepeater.highlightedIndex).name : ""
255+ Rectangle {
256+ id: spreadBackground
257+ anchors.fill: parent
258+ color: "#55000000"
634259 visible: false
635− fontSize: "large"
636260 }
637261
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−
680262 MouseArea {
681− id: rightEdgePushArea
682− anchors {
683− top: parent.top
684− right: parent.right
685− bottom: parent.bottom
686− }
687− // TODO: Make this a push to edge thing like the launcher when we can,
688− // for now, yes, we want 1 pixel, regardless of the scaling
689− width: 1
690− hoverEnabled: true
691− onContainsMouseChanged: {
692− if (containsMouse) {
693− root.state = "altTab";
694− }
695− }
263+ id: eventEater
264+ anchors.fill: parent
265+ visible: spreadBackground.visible
266+ enabled: visible
267+ }
268+
269+ DesktopSpread {
270+ id: spread
271+ objectName: "spread"
272+ anchors.fill: parent
273+ workspace: appContainer
274+ focus: state == "altTab"
696275 }
697276}
qml/Stages/PhoneStage.qml+15−7
@@ -48,17 +48,12 @@ Rectangle {
4848 onBeingResizedChanged: {
4949 if (beingResized) {
5050 // Brace yourselves for impact!
51− spreadView.selectedIndex = -1;
52− spreadView.phase = 0;
53− spreadView.contentX = -spreadView.shift;
51+ priv.reset();
5452 }
5553 }
5654 onSpreadEnabledChanged: {
5755 if (!spreadEnabled) {
58− // reset. go back to display the focused app
59− spreadView.selectedIndex = -1;
60− spreadView.phase = 0;
61− spreadView.contentX = -spreadView.shift;
56+ priv.reset();
6257 }
6358 }
6459 function updateFocusedAppOrientation() {
@@ -94,6 +89,7 @@ Rectangle {
9489 readonly property var mainApp: applicationManager.focusedApplicationId
9590 ? applicationManager.findApplication(applicationManager.focusedApplicationId)
9691 : null
92+
9793 property int mainAppWindowOrientationAngle: 0
9894 readonly property bool orientationChangesEnabled: priv.focusedAppOrientationChangesEnabled
9995 && !priv.focusedAppDelegateIsDislocated
@@ -216,6 +212,18 @@ Rectangle {
216212 // Is more stable than "spreadView.shiftedContentX === 0" as it filters out noise caused by
217213 // Flickable.contentX changing due to resizes.
218214 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+ }
219227 }
220228 Timer {
221229 id: fullyShowingFocusedAppUpdateTimer
qml/Stages/SessionContainer.qml+3
@@ -20,11 +20,14 @@ import "Animations"
2020FocusScope {
2121 id: root
2222 objectName: "sessionContainer"
23+ implicitWidth: _surfaceContainer.implicitWidth
24+ implicitHeight: _surfaceContainer.implicitHeight
2325 property QtObject session
2426 readonly property var childSessions: session ? session.childSessions : null
2527 readonly property alias surface: _surfaceContainer.surface
2628 property alias interactive: _surfaceContainer.interactive
2729 property alias surfaceOrientationAngle: _surfaceContainer.surfaceOrientationAngle
30+ property alias resizeSurface: _surfaceContainer.resizeSurface
2831
2932 readonly property alias surfaceContainer: _surfaceContainer
3033 SurfaceContainer {
qml/Stages/SpreadDelegate.qml+1−1
@@ -268,7 +268,7 @@ FocusScope {
268268 focus: true
269269 anchors {
270270 fill: parent
271− topMargin: appWindow.fullscreen || application.rotatesWindowContents
271+ topMargin: appWindow.fullscreen || (application && application.rotatesWindowContents)
272272 ? 0 : maximizedAppTopMargin
273273 }
274274
qml/Stages/SurfaceContainer.qml+3−2
@@ -28,6 +28,7 @@ FocusScope {
2828 property bool hadSurface: false
2929 property bool interactive
3030 property int surfaceOrientationAngle: 0
31+ property bool resizeSurface: true
3132
3233 onSurfaceChanged: {
3334 if (surface) {
@@ -52,8 +53,8 @@ FocusScope {
5253
5354 consumesInput: true
5455
55− surfaceWidth: width
56− surfaceHeight: height
56+ surfaceWidth: root.resizeSurface ? width : -1
57+ surfaceHeight: root.resizeSurface ? height : -1
5758
5859 anchors.fill: root
5960 enabled: root.interactive
qml/Stages/WindowMoveResizeArea.qml+1−1
@@ -104,6 +104,6 @@ MouseArea {
104104 }
105105
106106 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))
108108 }
109109}
src/ApplicationArguments.h+2−2
@@ -31,10 +31,10 @@ class ApplicationArguments : public QObject
3131public:
3232 ApplicationArguments(QObject *parent = nullptr);
3333
34− void setDeviceName(QString deviceName) { m_deviceName = deviceName; }
34+ void setDeviceName(const QString &deviceName) { m_deviceName = deviceName; }
3535 QString deviceName() const { return m_deviceName; }
3636
37− void setMode(QString mode) { m_mode = mode; }
37+ void setMode(const QString &mode) { m_mode = mode; }
3838 QString mode() const { return m_mode; }
3939
4040private:
src/CachingNetworkManagerFactory.cpp+1−1
@@ -46,7 +46,7 @@ QNetworkAccessManager *CachingNetworkManagerFactory::create(QObject *parent) {
4646 QNetworkAccessManager *manager = new CachingNetworkAccessManager(parent);
4747
4848 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)));
5050
5151 manager->setCache(cache);
5252 return manager;
src/Dash/main.cpp+11−11
@@ -36,20 +36,20 @@ int main(int argc, const char *argv[])
3636 QGuiApplication *application = new QGuiApplication(argc, (char**)argv);
3737
3838 QCommandLineParser parser;
39− parser.setApplicationDescription("Description: Unity 8 Shell Dash");
39+ parser.setApplicationDescription(QStringLiteral("Description: Unity 8 Shell Dash"));
4040 parser.addHelpOption();
4141
42− QCommandLineOption mousetouchOption("mousetouch",
43− "Allow the mouse to provide touch input");
42+ QCommandLineOption mousetouchOption(QStringLiteral("mousetouch"),
43+ QStringLiteral("Allow the mouse to provide touch input"));
4444 parser.addOption(mousetouchOption);
4545
46− QCommandLineOption windowGeometryOption(QStringList() << "windowgeometry",
47− "Specify the window geometry as [<width>x<height>]", "windowgeometry", "1");
46+ QCommandLineOption windowGeometryOption(QStringList() << QStringLiteral("windowgeometry"),
47+ QStringLiteral("Specify the window geometry as [<width>x<height>]"), QStringLiteral("windowgeometry"), QStringLiteral("1"));
4848 parser.addOption(windowGeometryOption);
4949
5050 // FIXME Remove once we drop the need of the hint
51− QCommandLineOption desktopFileHintOption("desktop_file_hint",
52− "The desktop_file_hint option for QtMir", "hint_file");
51+ QCommandLineOption desktopFileHintOption(QStringLiteral("desktop_file_hint"),
52+ QStringLiteral("The desktop_file_hint option for QtMir"), QStringLiteral("hint_file"));
5353 parser.addOption(desktopFileHintOption);
5454
5555 // Treat args with single dashes the same as arguments with two dashes
@@ -60,7 +60,7 @@ int main(int argc, const char *argv[])
6060 ApplicationArguments qmlArgs;
6161
6262 if (getenv("QT_LOAD_TESTABILITY")) {
63− QLibrary testLib(QLatin1String("qttestability"));
63+ QLibrary testLib(QStringLiteral("qttestability"));
6464 if (testLib.load()) {
6565 typedef void (*TasInitialize)(void);
6666 TasInitialize initFunction = (TasInitialize)testLib.resolve("qt_testability_init");
@@ -91,8 +91,8 @@ int main(int argc, const char *argv[])
9191 }
9292 }
9393
94− view->setTitle("Scopes");
95− view->rootContext()->setContextProperty("applicationArguments", &qmlArgs);
94+ view->setTitle(QStringLiteral("Scopes"));
95+ view->rootContext()->setContextProperty(QStringLiteral("applicationArguments"), &qmlArgs);
9696
9797 // You will need this if you want to interact with touch-only components using a mouse
9898 // Needed only when manually testing on a desktop.
@@ -101,7 +101,7 @@ int main(int argc, const char *argv[])
101101 mouseTouchAdaptor = MouseTouchAdaptor::instance();
102102 }
103103
104− QUrl source(::qmlDirectory()+"Dash/DashApplication.qml");
104+ QUrl source(::qmlDirectory() + "/Dash/DashApplication.qml");
105105 prependImportPaths(view->engine(), ::overrideImportPaths());
106106 appendImportPaths(view->engine(), ::fallbackImportPaths());
107107
src/Panel/Indicators/client/indicatorsclient.cpp+8−8
@@ -36,20 +36,20 @@ IndicatorsClient::IndicatorsClient(int &argc, char **argv)
3636 QStringList args = m_application->arguments();
3737
3838 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/"));
4040 prependImportPaths(m_view->engine(), ::overrideImportPaths());
4141 appendImportPaths(m_view->engine(), ::fallbackImportPaths());
4242
43− QString profile = "phone";
44− if (args.contains(QLatin1String("-profile")) && args.size() > args.indexOf(QLatin1String("-profile")) + 1) {
45− profile = args.at(args.indexOf(QLatin1String("-profile")) + 1);
43+ QString profile = QStringLiteral("phone");
44+ if (args.contains(QStringLiteral("-profile")) && args.size() > args.indexOf(QStringLiteral("-profile")) + 1) {
45+ profile = args.at(args.indexOf(QStringLiteral("-profile")) + 1);
4646 }
47− m_view->rootContext()->setContextProperty("indicatorProfile", profile);
47+ m_view->rootContext()->setContextProperty(QStringLiteral("indicatorProfile"), profile);
4848
49− m_view->setSource(QUrl("IndicatorsClient.qml"));
49+ m_view->setSource(QUrl(QStringLiteral("IndicatorsClient.qml")));
5050 m_view->setResizeMode(QQuickView::SizeRootObjectToView);
51− if (args.contains(QLatin1String("-windowgeometry")) && args.size() > args.indexOf(QLatin1String("-windowgeometry")) + 1) {
52− QStringList geometryArg = args.at(args.indexOf(QLatin1String("-windowgeometry")) + 1).split('x');
51+ if (args.contains(QStringLiteral("-windowgeometry")) && args.size() > args.indexOf(QStringLiteral("-windowgeometry")) + 1) {
52+ QStringList geometryArg = args.at(args.indexOf(QStringLiteral("-windowgeometry")) + 1).split('x');
5353 if (geometryArg.size() == 2) {
5454 m_view->resize(geometryArg.at(0).toInt(), geometryArg.at(1).toInt());
5555 }
src/UnityCommandLineParser.cpp+25−24
@@ -26,36 +26,36 @@ UnityCommandLineParser::UnityCommandLineParser(const QCoreApplication &app)
2626 m_gridUnit = getenvFloat(ENV_GRID_UNIT_PX, DEFAULT_GRID_UNIT_PX);
2727
2828 QCommandLineParser parser;
29− parser.setApplicationDescription("Description: Unity 8 Shell");
29+ parser.setApplicationDescription(QStringLiteral("Description: Unity 8 Shell"));
3030 parser.addHelpOption();
3131
32− QCommandLineOption fullscreenOption("fullscreen",
33− "Run in fullscreen");
32+ QCommandLineOption fullscreenOption(QStringLiteral("fullscreen"),
33+ QStringLiteral("Run in fullscreen"));
3434 parser.addOption(fullscreenOption);
3535
36− QCommandLineOption framelessOption("frameless",
37− "Run without window borders");
36+ QCommandLineOption framelessOption(QStringLiteral("frameless"),
37+ QStringLiteral("Run without window borders"));
3838 parser.addOption(framelessOption);
3939
40− QCommandLineOption mousetouchOption("mousetouch",
41− "Allow the mouse to provide touch input");
40+ QCommandLineOption mousetouchOption(QStringLiteral("mousetouch"),
41+ QStringLiteral("Allow the mouse to provide touch input"));
4242 parser.addOption(mousetouchOption);
4343
44− QCommandLineOption windowGeometryOption(QStringList() << "windowgeometry",
45− "Specify the window geometry as [<width>x<height>]", "windowgeometry", "1");
44+ QCommandLineOption windowGeometryOption(QStringList() << QStringLiteral("windowgeometry"),
45+ QStringLiteral("Specify the window geometry as [<width>x<height>]"), QStringLiteral("windowgeometry"), QStringLiteral("1"));
4646 parser.addOption(windowGeometryOption);
4747
48− QCommandLineOption testabilityOption("testability",
49− "DISCOURAGED: Please set QT_LOAD_TESTABILITY instead.\nLoad the testability driver");
48+ QCommandLineOption testabilityOption(QStringLiteral("testability"),
49+ QStringLiteral("DISCOURAGED: Please set QT_LOAD_TESTABILITY instead.\nLoad the testability driver"));
5050 parser.addOption(testabilityOption);
5151
52− QCommandLineOption devicenameOption(QStringList() << "devicename",
53− "Specify the device name instead of letting Unity 8 find it out", "devicename", "");
52+ QCommandLineOption devicenameOption(QStringList() << QStringLiteral("devicename"),
53+ QStringLiteral("Specify the device name instead of letting Unity 8 find it out"), QStringLiteral("devicename"), QLatin1String(""));
5454 parser.addOption(devicenameOption);
5555
56− QCommandLineOption modeOption("mode",
57− "Whether to run greeter and/or shell [full-greeter, full-shell, greeter, shell]",
58− "mode", "full-greeter");
56+ QCommandLineOption modeOption(QStringLiteral("mode"),
57+ QStringLiteral("Whether to run greeter and/or shell [full-greeter, full-shell, greeter, shell]"),
58+ QStringLiteral("mode"), QStringLiteral("full-greeter"));
5959 parser.addOption(modeOption);
6060
6161 // Treat args with single dashes the same as arguments with two dashes
@@ -83,7 +83,7 @@ UnityCommandLineParser::UnityCommandLineParser(const QCoreApplication &app)
8383
8484int UnityCommandLineParser::parsePixelsValue(const QString &str)
8585{
86− if (str.endsWith("gu", Qt::CaseInsensitive)) {
86+ if (str.endsWith(QLatin1String("gu"), Qt::CaseInsensitive)) {
8787 QString numStr = str;
8888 numStr.remove(numStr.size() - 2, 2);
8989 return numStr.toInt() * m_gridUnit;
@@ -105,13 +105,14 @@ void UnityCommandLineParser::resolveMode(QCommandLineParser &parser, QCommandLin
105105 // If an invalid option was specified, set it to the default
106106 // If no default was provided in the QCommandLineOption constructor, abort.
107107 if (!parser.isSet(modeOption) ||
108− (parser.value(modeOption) != "full-greeter" &&
109− parser.value(modeOption) != "full-shell" &&
110− parser.value(modeOption) != "greeter" &&
111− parser.value(modeOption) != "shell")) {
112−
113− if (modeOption.defaultValues().first() != nullptr) {
114− m_mode = modeOption.defaultValues().first();
108+ (parser.value(modeOption) != QLatin1String("full-greeter") &&
109+ parser.value(modeOption) != QLatin1String("full-shell") &&
110+ parser.value(modeOption) != QLatin1String("greeter") &&
111+ parser.value(modeOption) != QLatin1String("shell"))) {
112+
113+ const QStringList defaultValues = modeOption.defaultValues();
114+ if (!defaultValues.isEmpty()) {
115+ m_mode = defaultValues.first();
115116 qWarning() << "Mode argument was not provided or was set to an illegal value."
116117 " Using default value of --mode=" << m_mode;
117118 } else {
src/libunity8-private/unitydbusobject.cpp+2−2
@@ -64,8 +64,8 @@ void UnityDBusObject::notifyPropertyChanged(const QString& propertyName, const Q
6464 changedProps.insert(propertyName, value);
6565
6666 message = QDBusMessage::createSignal(path(),
67− "org.freedesktop.DBus.Properties",
68− "PropertiesChanged");
67+ QStringLiteral("org.freedesktop.DBus.Properties"),
68+ QStringLiteral("PropertiesChanged"));
6969 message << interface;
7070 message << changedProps;
7171 message << QStringList();
src/libunity8-private/unitydbusvirtualobject.cpp+2−2
@@ -61,8 +61,8 @@ void UnityDBusVirtualObject::notifyPropertyChanged(const QString& interface, con
6161 changedProps.insert(propertyName, value);
6262
6363 message = QDBusMessage::createSignal(path() + "/" + node,
64− "org.freedesktop.DBus.Properties",
65− "PropertiesChanged");
64+ QStringLiteral("org.freedesktop.DBus.Properties"),
65+ QStringLiteral("PropertiesChanged"));
6666 message << interface;
6767 message << changedProps;
6868 message << QStringList();
src/main.cpp+5−5
@@ -43,7 +43,7 @@ int main(int argc, const char *argv[])
4343 isMirServer = true;
4444 }
4545
46− QGuiApplication::setApplicationName("unity8");
46+ QGuiApplication::setApplicationName(QStringLiteral("unity8"));
4747 QGuiApplication *application;
4848
4949 application = new QGuiApplication(argc, (char**)argv);
@@ -65,7 +65,7 @@ int main(int argc, const char *argv[])
6565 // The testability driver is only loaded by QApplication but not by QGuiApplication.
6666 // However, QApplication depends on QWidget which would add some unneeded overhead => Let's load the testability driver on our own.
6767 if (parser.hasTestability() || getenv("QT_LOAD_TESTABILITY")) {
68− QLibrary testLib(QLatin1String("qttestability"));
68+ QLibrary testLib(QStringLiteral("qttestability"));
6969 if (testLib.load()) {
7070 typedef void (*TasInitialize)(void);
7171 TasInitialize initFunction = (TasInitialize)testLib.resolve("qt_testability_init");
@@ -85,7 +85,7 @@ int main(int argc, const char *argv[])
8585 QQuickView* view = new QQuickView();
8686 view->setResizeMode(QQuickView::SizeRootObjectToView);
8787 view->setColor("black");
88− view->setTitle("Unity8 Shell");
88+ view->setTitle(QStringLiteral("Unity8 Shell"));
8989
9090 if (parser.windowGeometry().isValid()) {
9191 view->setWidth(parser.windowGeometry().width());
@@ -93,7 +93,7 @@ int main(int argc, const char *argv[])
9393 }
9494
9595 view->engine()->setBaseUrl(QUrl::fromLocalFile(::qmlDirectory()));
96− view->rootContext()->setContextProperty("applicationArguments", &qmlArgs);
96+ view->rootContext()->setContextProperty(QStringLiteral("applicationArguments"), &qmlArgs);
9797 if (parser.hasFrameless()) {
9898 view->setFlags(Qt::FramelessWindowHint);
9999 }
@@ -105,7 +105,7 @@ int main(int argc, const char *argv[])
105105 mouseTouchAdaptor = MouseTouchAdaptor::instance();
106106 }
107107
108− QUrl source(::qmlDirectory()+"OrientedShell.qml");
108+ QUrl source(::qmlDirectory() + "/OrientedShell.qml");
109109 prependImportPaths(view->engine(), ::overrideImportPaths());
110110 if (!isMirServer) {
111111 prependImportPaths(view->engine(), ::nonMirImportPaths());
tests/CMakeLists.txt+9−3
@@ -22,11 +22,17 @@ add_subdirectory(uqmlscene)
2222add_executable(qmlscene ALIAS uqmlscene)
2323import_executables(dbus-test-runner)
2424
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
2529set(UNITY_IMPORT_PATHS
30+ ${UNITY_MOCKPATH}
2631 ${CMAKE_BINARY_DIR}/tests/mocks
2732 ${CMAKE_BINARY_DIR}/tests/utils/modules
28− ${CMAKE_BINARY_DIR}/plugins
33+ ${UNITY_PLUGINPATH}
2934)
35+list(REMOVE_DUPLICATES UNITY_IMPORT_PATHS)
3036set(UNITY_IMPORT_PATHS ${UNITY_IMPORT_PATHS} CACHE INTERNAL "")
3137
3238macro(unity8_parse_arguments)
@@ -40,8 +46,8 @@ macro(unity8_parse_arguments)
4046 set(ld_paths)
4147 if(U8TEST_LIGHTDM)
4248 list(APPEND ld_paths
43− ${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics
44− ${CMAKE_BINARY_DIR}/tests/mocks/LightDM/liblightdm
49+ ${UNITY_MOCKPATH}/libusermetrics
50+ ${UNITY_MOCKPATH}/IntegratedLightDM/liblightdm
4551 )
4652 endif()
4753
tests/autopilot/unity8/application_lifecycle/tests/test_application_lifecycle.py+2−1
@@ -24,6 +24,7 @@ import os
2424import threading
2525
2626from autopilot.platform import model
27+from autopilot.application import _launcher
2728
2829from unity8 import process_helpers
2930from unity8.application_lifecycle import tests
@@ -118,7 +119,7 @@ class ApplicationLifecycleTests(tests.ApplicationLifeCycleTestCase):
118119
119120 process_helpers.lock_unity()
120121
121− self.launch_upstart_application(application_name)
122+ self.launch_upstart_application(application_name, [], _launcher.AlreadyLaunchedUpstartLauncher)
122123 greeter = self.main_window.get_greeter()
123124 greeter.wait_swiped_away()
124125 process_helpers.unlock_unity()
tests/autopilot/unity8/dash.py+3−4
@@ -155,7 +155,7 @@ class Dash(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
155155 self.pointing_device.drag(start_x, start_y, stop_x, stop_y, rate)
156156 self.dash_content_list.currentIndex.wait_for(original_index + 1)
157157
158− def enter_search_query(self, query):
158+ def enter_search_query(self, query, keyboard):
159159 current_header = self._get_current_page_header()
160160 search_button = \
161161 current_header.select_single(objectName="search_header_button")
@@ -166,12 +166,11 @@ class Dash(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
166166 headerContainer = current_header.select_single(
167167 objectName="headerContainer")
168168 headerContainer.contentY.wait_for(0)
169− search_text_field = self._get_search_text_field()
170− search_text_field.write(query)
169+ keyboard.type(query)
171170 self.select_single(
172171 objectName="processingIndicator").visible.wait_for(False)
173172
174− def _get_search_text_field(self):
173+ def get_search_text_field(self):
175174 page_header = self._get_current_page_header()
176175 return page_header.select_single(objectName='searchTextField')
177176
tests/autopilot/unity8/fixture_setup.py+1−1
@@ -74,7 +74,7 @@ class LaunchUnityWithFakeSensors(fixtures.Fixture):
7474 def _get_lightdm_mock_path(self):
7575 lib_path = get_mocks_library_path()
7676 lightdm_mock_path = os.path.abspath(
77− os.path.join(lib_path, "LightDM", "liblightdm")
77+ os.path.join(lib_path, "IntegratedLightDM", "liblightdm")
7878 )
7979
8080 if not os.path.exists(lightdm_mock_path):
tests/autopilot/unity8/indicators/tests/test_indicators.py+10−13
@@ -16,9 +16,11 @@
1616# You should have received a copy of the GNU General Public License
1717# along with this program. If not, see <http://www.gnu.org/licenses/>.
1818
19+import platform
20+
1921from testscenarios import multiply_scenarios
2022
21−from autopilot import platform
23+import autopilot.platform
2224
2325from unity8.indicators import tests
2426
@@ -39,12 +41,6 @@ class IndicatorExistsTestCase(tests.DeviceIndicatorTestCase):
3941 tests.IndicatorTestCase.device_emulation_scenarios
4042 )
4143
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−
4844 def test_indicator_exists(self):
4945 self.main_window._get_indicator_panel_item(
5046 self.indicator_name
@@ -74,12 +70,6 @@ class IndicatorPageTitleMatchesWidgetTestCase(tests.DeviceIndicatorTestCase):
7470 tests.IndicatorTestCase.device_emulation_scenarios
7571 )
7672
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−
8373 def test_indicator_page_title_matches_widget(self):
8474 """Swiping open an indicator must show its correct title.
8575
@@ -87,5 +77,12 @@ class IndicatorPageTitleMatchesWidgetTestCase(tests.DeviceIndicatorTestCase):
8777 """
8878 indicator_page = self.main_window.open_indicator_page(
8979 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)
9087 self.assertTrue(indicator_page.visible)
9188 self.assertEqual(indicator_page.title, self.title)
tests/autopilot/unity8/shell/tests/__init__.py+1−1
@@ -261,7 +261,7 @@ class UnityTestCase(AutopilotTestCase):
261261 def _get_lightdm_mock_path(self):
262262 lib_path = get_mocks_library_path()
263263 lightdm_mock_path = os.path.abspath(
264− os.path.join(lib_path, "LightDM", "liblightdm")
264+ os.path.join(lib_path, "IntegratedLightDM", "liblightdm")
265265 )
266266
267267 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):
4747class DashHelperTestCase(tests.DashBaseTestCase):
4848
4949 def test_search(self):
50− self.dash.enter_search_query('Test')
51− text_field = self.dash._get_search_text_field()
50+ self.dash.enter_search_query('Test', self.keyboard)
51+ text_field = self.dash.get_search_text_field()
5252 self.assertEqual(text_field.text, 'Test')
5353
5454 def test_open_scope_to_the_right(self):
tests/mocks/AccountsService/AccountsService.cpp+1−1
@@ -24,7 +24,7 @@ AccountsService::AccountsService(QObject* parent)
2424 : QObject(parent),
2525 m_enableLauncherWhileLocked(true),
2626 m_enableIndicatorsWhileLocked(true),
27− m_backgroundFile(qmlDirectory() + "graphics/phone_background.jpg"),
27+ m_backgroundFile(qmlDirectory() + "/graphics/phone_background.jpg"),
2828 m_statsWelcomeScreen(true),
2929 m_failedLogins(0),
3030 m_demoEdges(false),
tests/mocks/IntegratedLightDM/liblightdm/CMakeLists.txt+1−1
@@ -14,5 +14,5 @@ set_target_properties(MockLightDM PROPERTIES
1414 OUTPUT_NAME lightdm-qt5-2)
1515
1616install(TARGETS MockLightDM
17− DESTINATION ${SHELL_INSTALL_QML}/mocks/LightDM/liblightdm
17+ DESTINATION ${SHELL_INSTALL_QML}/mocks/IntegratedLightDM/liblightdm
1818 )
tests/mocks/Powerd/Powerd.cpp+2−2
@@ -24,11 +24,11 @@ Powerd::Powerd(QObject* parent)
2424{
2525}
2626
27−void Powerd::setStatus(Powerd::Status status)
27+void Powerd::setStatus(Powerd::Status status, DisplayStateChangeReason reason)
2828{
2929 if (m_status != status) {
3030 m_status = status;
31− Q_EMIT statusChanged(DisplayStateChangeReason::Unknown);
31+ Q_EMIT statusChanged(reason);
3232 }
3333}
3434
tests/mocks/Powerd/Powerd.h+4−2
@@ -26,7 +26,7 @@ class Powerd: public QObject
2626 Q_OBJECT
2727 Q_ENUMS(Status)
2828 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)
3030
3131public:
3232 enum DisplayStateChangeReason {
@@ -44,7 +44,9 @@ public:
4444 explicit Powerd(QObject *parent = 0);
4545
4646 Status status() const;
47− void setStatus(Status status);
47+
48+ // Not exposed via Q_PROPERTY because we need the 'reason' argument too
49+ Q_INVOKABLE void setStatus(Status status, DisplayStateChangeReason reason);
4850
4951Q_SIGNALS:
5052 void statusChanged(DisplayStateChangeReason reason);
tests/mocks/Ubuntu/CMakeLists.txt+1
@@ -5,3 +5,4 @@ add_subdirectory(SystemImage)
55add_subdirectory(SystemSettings)
66add_subdirectory(Telephony)
77add_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
1818 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/Mir.h
1919 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/MirSurfaceInterface.h
2020 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/MirSurfaceItemInterface.h
21+ resources/surfaces.qrc
2122)
2223
2324add_library(FakeUnityApplicationQml MODULE ${FakeUnityApplicationQml_SOURCES})
tests/mocks/Unity/Application/MirSurface.cpp+14−7
@@ -22,7 +22,7 @@ MirSurface::MirSurface(const QString& name,
2222 Mir::Type type,
2323 Mir::State state,
2424 const QUrl& screenshot,
25− const QString &qmlFilePath)
25+ const QUrl &qmlFilePath)
2626 : unity::shell::application::MirSurfaceInterface(nullptr)
2727 , m_name(name)
2828 , m_type(type)
@@ -36,12 +36,12 @@ MirSurface::MirSurface(const QString& name,
3636 , m_width(-1)
3737 , m_height(-1)
3838{
39− qDebug() << "MirSurface::MirSurface() " << name;
39+// qDebug() << "MirSurface::MirSurface() " << name;
4040}
4141
4242MirSurface::~MirSurface()
4343{
44− qDebug() << "MirSurface::~MirSurface() " << name();
44+// qDebug() << "MirSurface::~MirSurface() " << name();
4545}
4646
4747QString MirSurface::name() const
@@ -75,7 +75,7 @@ bool MirSurface::live() const
7575
7676void MirSurface::setLive(bool live)
7777{
78− qDebug().nospace() << "MirSurface::setLive("<<live<<") " << name();
78+// qDebug().nospace() << "MirSurface::setLive("<<live<<") " << name();
7979 if (live == m_live)
8080 return;
8181
@@ -87,7 +87,7 @@ void MirSurface::setLive(bool live)
8787 }
8888}
8989
90−QString MirSurface::qmlFilePath() const
90+QUrl MirSurface::qmlFilePath() const
9191{
9292 return m_qmlFilePath;
9393}
@@ -123,13 +123,13 @@ void MirSurface::setOrientationAngle(Mir::OrientationAngle angle)
123123void MirSurface::incrementViewCount()
124124{
125125 ++m_viewCount;
126− qDebug().nospace() << "MirSurface::incrementViewCount() viewCount(after)=" << m_viewCount << " " << name();
126+// qDebug().nospace() << "MirSurface::incrementViewCount() viewCount(after)=" << m_viewCount << " " << name();
127127}
128128
129129void MirSurface::decrementViewCount()
130130{
131131 --m_viewCount;
132− qDebug().nospace() << "MirSurface::decrementViewCount() viewCount(after)=" << m_viewCount << " " << name();
132+// qDebug().nospace() << "MirSurface::decrementViewCount() viewCount(after)=" << m_viewCount << " " << name();
133133
134134 Q_ASSERT(m_viewCount >= 0);
135135
@@ -170,13 +170,20 @@ int MirSurface::height() const
170170
171171void MirSurface::resize(int width, int height)
172172{
173+ bool changed = false;
173174 if (width != m_width) {
174175 m_width = width;
175176 Q_EMIT widthChanged();
177+ changed = true;
176178 }
177179
178180 if (m_height != height) {
179181 m_height = height;
180182 Q_EMIT heightChanged();
183+ changed = true;
184+ }
185+
186+ if (changed) {
187+ Q_EMIT sizeChanged(QSize(width, height));
181188 }
182189}
tests/mocks/Unity/Application/MirSurface.h+3−3
@@ -38,7 +38,7 @@ public:
3838 Mir::Type type,
3939 Mir::State state,
4040 const QUrl& screenshot,
41− const QString &qmlFilePath = QString());
41+ const QUrl &qmlFilePath = QUrl());
4242 virtual ~MirSurface();
4343
4444 ////
@@ -76,7 +76,7 @@ public:
7676 /////
7777 // internal mock stuff
7878
79− QString qmlFilePath() const;
79+ QUrl qmlFilePath() const;
8080
8181 QUrl screenshotUrl() const;
8282 void setScreenshotUrl(QUrl);
@@ -102,7 +102,7 @@ private:
102102 Mir::State m_state;
103103 Mir::OrientationAngle m_orientationAngle;
104104 QUrl m_screenshotUrl;
105− QString m_qmlFilePath;
105+ QUrl m_qmlFilePath;
106106 bool m_live;
107107 int m_viewCount;
108108 bool m_activeFocus;
tests/mocks/Unity/Application/MirSurfaceItem.cpp+26−12
@@ -38,7 +38,7 @@ MirSurfaceItem::MirSurfaceItem(QQuickItem *parent)
3838 , m_touchPressCount(0)
3939 , m_touchReleaseCount(0)
4040{
41− qDebug() << "MirSurfaceItem::MirSurfaceItem() " << (void*)(this) << name();
41+// qDebug() << "MirSurfaceItem::MirSurfaceItem() " << (void*)(this) << name();
4242 setAcceptedMouseButtons(Qt::LeftButton | Qt::MiddleButton | Qt::RightButton |
4343 Qt::ExtraButton1 | Qt::ExtraButton2 | Qt::ExtraButton3 | Qt::ExtraButton4 |
4444 Qt::ExtraButton5 | Qt::ExtraButton6 | Qt::ExtraButton7 | Qt::ExtraButton8 |
@@ -48,7 +48,7 @@ MirSurfaceItem::MirSurfaceItem(QQuickItem *parent)
4848
4949MirSurfaceItem::~MirSurfaceItem()
5050{
51− qDebug() << "MirSurfaceItem::~MirSurfaceItem() " << (void*)(this) << name();
51+// qDebug() << "MirSurfaceItem::~MirSurfaceItem() " << (void*)(this) << name();
5252 setSurface(nullptr);
5353}
5454
@@ -136,7 +136,7 @@ void MirSurfaceItem::onComponentStatusChanged(QQmlComponent::Status status)
136136
137137void MirSurfaceItem::createQmlContentItem()
138138{
139− qDebug() << "MirSurfaceItem::createQmlContentItem()";
139+// qDebug() << "MirSurfaceItem::createQmlContentItem()";
140140
141141 m_qmlItem = qobject_cast<QQuickItem*>(m_qmlContentComponent->create());
142142 m_qmlItem->setParentItem(this);
@@ -161,11 +161,26 @@ void MirSurfaceItem::touchEvent(QTouchEvent * event)
161161 }
162162}
163163
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+
164179void MirSurfaceItem::setSurface(MirSurfaceInterface* surface)
165180{
166− qDebug().nospace() << "MirSurfaceItem::setSurface() this=" << (void*)(this)
167− << " name=" << name()
168− << " surface=" << surface;
181+// qDebug().nospace() << "MirSurfaceItem::setSurface() this=" << (void*)(this)
182+// << " name=" << name()
183+// << " surface=" << surface;
169184
170185 if (m_qmlSurface == surface) {
171186 return;
@@ -200,12 +215,11 @@ void MirSurfaceItem::setSurface(MirSurfaceInterface* surface)
200215 QQuickView *quickView =
201216 qobject_cast<QQuickView*>(QGuiApplication::topLevelWindows()[0]);
202217
203− QString qmlComponentFilePath;
218+ QUrl qmlComponentFilePath;
204219 if (!m_qmlSurface->qmlFilePath().isEmpty()) {
205− qmlComponentFilePath.append(m_qmlSurface->qmlFilePath());
220+ qmlComponentFilePath = m_qmlSurface->qmlFilePath();
206221 } else {
207− qmlComponentFilePath = QString("%1/Unity/Application/MirSurfaceItem.qml")
208− .arg(mockPluginsDir());
222+ qmlComponentFilePath = QUrl("qrc:///Unity/Application/MirSurfaceItem.qml");
209223 }
210224
211225 m_qmlContentComponent = new QQmlComponent(quickView->engine(), qmlComponentFilePath);
@@ -254,7 +268,7 @@ int MirSurfaceItem::surfaceWidth() const
254268
255269void MirSurfaceItem::setSurfaceWidth(int value)
256270{
257− if (m_surfaceWidth != value) {
271+ if (value != -1 && m_surfaceWidth != value) {
258272 m_surfaceWidth = value;
259273 Q_EMIT surfaceWidthChanged(m_surfaceWidth);
260274 updateSurfaceSize();
@@ -268,7 +282,7 @@ int MirSurfaceItem::surfaceHeight() const
268282
269283void MirSurfaceItem::setSurfaceHeight(int value)
270284{
271− if (m_surfaceHeight != value) {
285+ if (value != -1 && m_surfaceHeight != value) {
272286 m_surfaceHeight = value;
273287 Q_EMIT surfaceHeightChanged(m_surfaceHeight);
274288 updateSurfaceSize();
tests/mocks/Unity/Application/MirSurfaceItem.h+3
@@ -79,6 +79,9 @@ Q_SIGNALS:
7979
8080protected:
8181 void touchEvent(QTouchEvent * event) override;
82+ void mousePressEvent(QMouseEvent * event) override;
83+ void mouseMoveEvent(QMouseEvent * event) override;
84+ void mouseReleaseEvent(QMouseEvent * event) override;
8285 void itemChange(ItemChange change, const ItemChangeData & value) override;
8386
8487private Q_SLOTS:
tests/mocks/Unity/Application/Session.cpp+4−4
@@ -35,14 +35,14 @@ Session::Session(const QString &name,
3535 , m_parentSession(nullptr)
3636 , m_children(new SessionModel(this))
3737{
38− qDebug() << "Session::Session() " << this->name();
38+// qDebug() << "Session::Session() " << this->name();
3939
4040 QQmlEngine::setObjectOwnership(this, QQmlEngine::CppOwnership);
4141}
4242
4343Session::~Session()
4444{
45− qDebug() << "Session::~Session() " << name();
45+// qDebug() << "Session::~Session() " << name();
4646
4747 QList<Session*> children(m_children->list());
4848 for (Session* child : children) {
@@ -67,7 +67,7 @@ Session::~Session()
6767
6868void Session::release()
6969{
70− qDebug() << "Session::release " << name();
70+// qDebug() << "Session::release " << name();
7171 deleteLater();
7272}
7373
@@ -82,7 +82,7 @@ void Session::setApplication(ApplicationInfo* application)
8282
8383void Session::setSurface(MirSurface* surface)
8484{
85− qDebug() << "Session::setSurface - session=" << name() << "surface=" << surface;
85+// qDebug() << "Session::setSurface - session=" << name() << "surface=" << surface;
8686 if (m_surface == surface)
8787 return;
8888
tests/mocks/Unity/Application/VirtualKeyboard.cpp+2−4
@@ -26,10 +26,8 @@ VirtualKeyboard::VirtualKeyboard()
2626 : MirSurface("input-method",
2727 Mir::InputMethodType,
2828 Mir::MinimizedState,
29− QString("file://%1/Dash/graphics/phone/screenshots/vkb_portrait.png")
30− .arg(qmlDirectory()),
31− QString("%1/Unity/Application/VirtualKeyboard.qml")
32− .arg(mockPluginsDir()))
29+ QUrl("qrc:///Unity/Application/vkb_portrait.png"),
30+ QUrl("qrc:///Unity/Application/VirtualKeyboard.qml"))
3331{
3432}
3533
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
2929 m_appId(appId),
3030 m_desktopFile(desktopFile),
3131 m_name(name),
32− m_icon(qmlDirectory() + "graphics/applicationIcons/" + icon + ".png"),
32+ m_icon(qmlDirectory() + "/graphics/applicationIcons/" + icon + ".png"),
3333 m_pinned(false),
3434 m_running(false),
3535 m_recent(false),
tests/mocks/Unity/Notifications/MockActionModel.cpp+1−1
@@ -59,7 +59,7 @@ QHash<int, QByteArray> ActionModel::roleNames() const {
5959 return roles;
6060}
6161
62−Q_INVOKABLE QVariant ActionModel::data(int row, int role) const
62+QVariant ActionModel::data(int row, int role) const
6363{
6464 return data(index(row, 0), role);
6565}
tests/mocks/Unity/Notifications/MockNotification.cpp+1
@@ -39,6 +39,7 @@ MockNotification::MockNotification(QObject *parent) : QObject(parent), p(new Moc
3939}
4040
4141MockNotification::~MockNotification() {
42+ delete p->actionsModel;
4243}
4344
4445QString MockNotification::getSummary() const {
tests/mocks/Unity/Notifications/MockNotification.h+1−1
@@ -30,7 +30,7 @@ struct MockNotificationPrivate;
3030
3131class MockNotification : public QObject {
3232 Q_OBJECT
33− Q_ENUMS(Type)
33+ Q_ENUMS(Type Urgency)
3434 Q_PROPERTY(QString summary READ getSummary WRITE setSummary NOTIFY summaryChanged)
3535 Q_PROPERTY(QString body READ getBody WRITE setBody NOTIFY bodyChanged)
3636 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
3535}
3636
3737MockNotificationModel::~MockNotificationModel() {
38+ Q_FOREACH(MockNotification *n, m_queue) {
39+ n->deleteLater();
40+ }
41+ m_queue.clear();
3842}
3943
4044int MockNotificationModel::rowCount(const QModelIndex &) const {
@@ -47,7 +51,7 @@ int MockNotificationModel::getCount() const {
4751
4852QVariant MockNotificationModel::data(const QModelIndex &index, int role) const {
4953 if (!index.isValid())
50− return QVariant();
54+ return QVariant();
5155
5256 switch(role) {
5357 case ModelInterface::RoleType:
tests/mocks/Unity/fake_previewstack.cpp+2−2
@@ -21,8 +21,8 @@
2121#include "fake_previewmodel.h"
2222#include "fake_scope.h"
2323
24−PreviewStack::PreviewStack(QObject* parent, Scope *scope)
25− : unity::shell::scopes::PreviewStackInterface(parent)
24+PreviewStack::PreviewStack(Scope *scope)
25+ : unity::shell::scopes::PreviewStackInterface(nullptr)
2626{
2727 m_previews << new PreviewModel(this, scope);
2828}
tests/mocks/Unity/fake_previewstack.h+1−1
@@ -32,7 +32,7 @@ class PreviewStack : public unity::shell::scopes::PreviewStackInterface
3232 Q_OBJECT
3333
3434public:
35− explicit PreviewStack(QObject* parent = 0, Scope* scope = 0);
35+ explicit PreviewStack(Scope* scope = 0);
3636 virtual ~PreviewStack();
3737
3838 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
7878 case RoleTitle:
7979 return QString("Title.%1.%2").arg(m_categoryId).arg(index.row());
8080 case RoleArt:
81− return qmlDirectory() + "graphics/applicationIcons/dash.png";
81+ return qmlDirectory() + "/graphics/applicationIcons/dash.png";
8282 case RoleSubtitle:
8383 return QString("Subtitle.%1.%2").arg(m_categoryId).arg(index.row());
8484 case RoleMascot:
tests/mocks/Unity/fake_scope.cpp+3−5
@@ -201,9 +201,7 @@ PreviewStack* Scope::preview(QVariant const& result, QString const& /*categoryId
201201 if (m_returnNullPreview) {
202202 return nullptr;
203203 } 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);
207205 }
208206}
209207
@@ -253,11 +251,11 @@ QVariantMap Scope::customizations() const
253251 m["foreground-color"] = "blue";
254252 m["page-header"] = h;
255253 } 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");
257255 m["page-header"] = h;
258256 } else if (m_id == "MockScope5") {
259257 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");
261259 h["divider-color"] = "red";
262260 h["navigation-background"] = "color:///black";
263261 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
308308 case RoleSubtitle:
309309 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();
310310 case RoleArt:
311− return qmlDirectory() + "graphics/applicationIcons/dash.png";
311+ return qmlDirectory() + "/graphics/applicationIcons/dash.png";
312312 case RoleMascot:
313313 case RoleEmblem:
314314 case RoleSummary:
tests/mocks/Utils/CMakeLists.txt+1
@@ -10,6 +10,7 @@ include_directories(
1010)
1111
1212set(QMLPLUGIN_SRC
13+ ${CMAKE_SOURCE_DIR}/plugins/Utils/activefocuslogger.cpp
1314 ${CMAKE_SOURCE_DIR}/plugins/Utils/qlimitproxymodelqml.cpp
1415 ${CMAKE_SOURCE_DIR}/plugins/Utils/unitysortfilterproxymodelqml.cpp
1516 ${CMAKE_SOURCE_DIR}/plugins/Utils/unitymenumodelpaths.cpp
tests/mocks/Utils/plugin.cpp+2
@@ -27,6 +27,7 @@
2727#include "constants.h"
2828
2929// plugin
30+#include <activefocuslogger.h>
3031#include <inputwatcher.h>
3132#include <qlimitproxymodelqml.h>
3233#include <unitysortfilterproxymodelqml.h>
@@ -61,6 +62,7 @@ void FakeUtilsPlugin::registerTypes(const char *uri)
6162 qmlRegisterSingletonType<WindowStateStorage>(uri, 0, 1, "WindowStateStorage", createWindowStateStorage);
6263 qmlRegisterType<InputWatcher>(uri, 0, 1, "InputWatcher");
6364 qmlRegisterSingletonType<Constants>(uri, 0, 1, "Constants", createConstants);
65+ qmlRegisterType<ActiveFocusLogger>(uri, 0, 1, "ActiveFocusLogger");
6466}
6567
6668void FakeUtilsPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
tests/mocks/libusermetrics/UserMetrics.cpp+1−5
@@ -416,11 +416,7 @@ UserMetrics::~UserMetrics()
416416
417417QString UserMetrics::label() const
418418{
419− if (d_ptr->m_label.isEmpty()) {
420− return "No data";
421− } else {
422− return d_ptr->m_label;
423− }
419+ return d_ptr->m_label;
424420}
425421
426422QString UserMetrics::username() const
tests/plugins/Dash/CMakeLists.txt−1
@@ -23,7 +23,6 @@ include_directories(
2323remove_definitions(-DQT_NO_KEYWORDS)
2424
2525add_definitions(-DDASHVIEWSTEST_FOLDER="${CMAKE_CURRENT_SOURCE_DIR}")
26−add_definitions(-DBUILT_PLUGINS_DIR="${CMAKE_BINARY_DIR}/plugins")
2726
2827macro(add_lvwph_test FILENAME TESTNAME)
2928 add_executable(${TESTNAME}TestExec
tests/plugins/Dash/cardcreator/1.res+1−1
@@ -32,7 +32,7 @@ Item {
3232 objectName: "artShape";
3333 property bool doShapeItem: components["art"]["conciergeMode"] !== true;
3434 visible: image.status == Image.Ready;
35− readonly property alias image: artImage.image;
35+ readonly property alias image: artImage;
3636 property alias borderSource: artShapeShape.borderSource;
3737 ShaderEffectSource {
3838 id: artShapeSource;
tests/plugins/Dash/cardcreator/3.res+1−1
@@ -32,7 +32,7 @@ Item {
3232 objectName: "artShape";
3333 property bool doShapeItem: components["art"]["conciergeMode"] !== true;
3434 visible: image.status == Image.Ready;
35− readonly property alias image: artImage.image;
35+ readonly property alias image: artImage;
3636 property alias borderSource: artShapeShape.borderSource;
3737 ShaderEffectSource {
3838 id: artShapeSource;
tests/plugins/Dash/cardcreator/4.res+2−2
@@ -34,11 +34,11 @@ Loader {
3434 id: mascotShapeLoader;
3535 objectName: "mascotShapeLoader";
3636 asynchronous: root.asynchronous;
37− active: mascotImage.image.status === Image.Ready;
37+ active: mascotImage.status === Image.Ready;
3838 visible: showHeader && active && status == Loader.Ready;
3939 width: units.gu(6);
4040 height: units.gu(5.625);
41− sourceComponent: UbuntuShape { image: mascotImage.image }
41+ sourceComponent: UbuntuShape { image: mascotImage }
4242 anchors { verticalCenter: parent.verticalCenter; }
4343 }
4444
tests/plugins/Dash/cardcreator/5.res+1−1
@@ -32,7 +32,7 @@ Item {
3232 objectName: "artShape";
3333 property bool doShapeItem: components["art"]["conciergeMode"] !== true;
3434 visible: image.status == Image.Ready;
35− readonly property alias image: artImage.image;
35+ readonly property alias image: artImage;
3636 property alias borderSource: artShapeShape.borderSource;
3737 ShaderEffectSource {
3838 id: artShapeSource;
tests/plugins/Dash/cardcreatortest.cpp−1
@@ -35,7 +35,6 @@ private Q_SLOTS:
3535 void init()
3636 {
3737 view = new QQuickView();
38− view->engine()->addImportPath(BUILT_PLUGINS_DIR);
3938 view->setSource(QUrl::fromLocalFile(DASHVIEWSTEST_FOLDER "/cardcreatortest.qml"));
4039 view->show();
4140 QTest::qWaitForWindowExposed(view);
tests/plugins/Dash/horizontaljournaltest.cpp−1
@@ -123,7 +123,6 @@ private Q_SLOTS:
123123 {
124124 view = new QQuickView();
125125 view->setResizeMode(QQuickView::SizeRootObjectToView);
126− view->engine()->addImportPath(BUILT_PLUGINS_DIR);
127126
128127 model = new WidthModel();
129128 QStringList widthList;
tests/plugins/Dash/horizontaljournaltry.cpp−1
@@ -63,7 +63,6 @@ int main(int argc, char *argv[])
6363
6464 QQuickView *view = new QQuickView();
6565 view->setResizeMode(QQuickView::SizeRootObjectToView);
66− view->engine()->addImportPath(BUILT_PLUGINS_DIR);
6766
6867 QWidthModela model;
6968 QStringList heightList;
tests/plugins/Dash/listviewwithpageheadersectionexternalmodeltest.cpp−1
@@ -168,7 +168,6 @@ private Q_SLOTS:
168168 void init()
169169 {
170170 view = new QQuickView();
171− view->engine()->addImportPath(BUILT_PLUGINS_DIR);
172171 view->setSource(QUrl::fromLocalFile(DASHVIEWSTEST_FOLDER "/listviewwithpageheadertestsectionexternalmodel.qml"));
173172 lvwph = dynamic_cast<ListViewWithPageHeader*>(view->rootObject()->findChild<QQuickFlickable*>());
174173 QVERIFY(lvwph);
tests/plugins/Dash/listviewwithpageheadersectiontest.cpp−1
@@ -133,7 +133,6 @@ private Q_SLOTS:
133133 void init()
134134 {
135135 view = new QQuickView();
136− view->engine()->addImportPath(BUILT_PLUGINS_DIR);
137136 view->setSource(QUrl::fromLocalFile(DASHVIEWSTEST_FOLDER "/listviewwithpageheadertestsection.qml"));
138137 lvwph = dynamic_cast<ListViewWithPageHeader*>(view->rootObject()->findChild<QQuickFlickable*>());
139138 model = view->rootObject()->findChild<QQmlListModel*>();
tests/plugins/Dash/listviewwithpageheadertest.cpp−1
@@ -119,7 +119,6 @@ private Q_SLOTS:
119119 void init()
120120 {
121121 view = new QQuickView();
122− view->engine()->addImportPath(BUILT_PLUGINS_DIR);
123122 view->setSource(QUrl::fromLocalFile(DASHVIEWSTEST_FOLDER "/listviewwithpageheadertest.qml"));
124123 lvwph = dynamic_cast<ListViewWithPageHeader*>(view->rootObject()->findChild<QQuickFlickable*>());
125124 model = view->rootObject()->findChild<QQmlListModel*>();
tests/plugins/Dash/organicgridtest.cpp−1
@@ -126,7 +126,6 @@ private Q_SLOTS:
126126 {
127127 view = new QQuickView();
128128 view->setResizeMode(QQuickView::SizeRootObjectToView);
129− view->engine()->addImportPath(BUILT_PLUGINS_DIR);
130129
131130 model = new DummyModel();
132131 model->setCount(21);
tests/plugins/Dash/organicgridtry.cpp−1
@@ -73,7 +73,6 @@ int main(int argc, char *argv[])
7373
7474 QQuickView *view = new QQuickView();
7575 view->setResizeMode(QQuickView::SizeRootObjectToView);
76− view->engine()->addImportPath(BUILT_PLUGINS_DIR);
7776
7877 DummyModel model;
7978 model.setCount(3);
tests/plugins/Dash/tst_CroppedImageMinimumSourceSize.qml+6−6
@@ -41,16 +41,16 @@ Rectangle {
4141 when: windowShown
4242
4343 function test_croppedSource() {
44− tryCompare(cimss.image.sourceSize, "width", 100);
45− tryCompare(cimss.image.sourceSize, "height", 0);
44+ tryCompare(cimss.sourceSize, "width", 100);
45+ tryCompare(cimss.sourceSize, "height", 0);
4646
4747 cimss.width = 40;
48− tryCompare(cimss.image.sourceSize, "width", 0);
49− tryCompare(cimss.image.sourceSize, "height", 100);
48+ tryCompare(cimss.sourceSize, "width", 0);
49+ tryCompare(cimss.sourceSize, "height", 100);
5050
5151 cimss.width = 100;
52− tryCompare(cimss.image.sourceSize, "width", 100);
53− tryCompare(cimss.image.sourceSize, "height", 0);
52+ tryCompare(cimss.sourceSize, "width", 100);
53+ tryCompare(cimss.sourceSize, "height", 0);
5454 }
5555 }
5656}
tests/plugins/Dash/verticaljournaltest.cpp−1
@@ -125,7 +125,6 @@ private Q_SLOTS:
125125 {
126126 view = new QQuickView();
127127 view->setResizeMode(QQuickView::SizeRootObjectToView);
128− view->engine()->addImportPath(BUILT_PLUGINS_DIR);
129128
130129 model = new HeightModel();
131130 QStringList heightList;
tests/plugins/Dash/verticaljournaltry.cpp−1
@@ -63,7 +63,6 @@ int main(int argc, char *argv[])
6363
6464 QQuickView *view = new QQuickView();
6565 view->setResizeMode(QQuickView::SizeRootObjectToView);
66− view->engine()->addImportPath(BUILT_PLUGINS_DIR);
6766
6867 QHeightModel model;
6968 QStringList heightList;
tests/plugins/IntegratedLightDM/CMakeLists.txt+1−1
@@ -25,7 +25,7 @@ add_unity8_uitest(GreeterDBus dbus-test-runner
2525 ARG_PREFIX "--parameter"
2626 ARGS --task $<TARGET_FILE:GreeterDBusTestExec>
2727 DEPENDS MockLightDM
28− IMPORT_PATHS ${CMAKE_BINARY_DIR}/tests/mocks
28+ IMPORT_PATHS ${UNITY_MOCKPATH}
2929 LIGHTDM
3030 )
3131
tests/plugins/Ubuntu/Gestures/CMakeLists.txt+3−7
@@ -14,9 +14,6 @@ include_directories(
1414
1515export_qmlfiles(UbuntuGesturesTest .)
1616
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−
2017macro(build_gesture_test CLASSNAME)
2118 add_executable(${CLASSNAME}TestExec tst_${CLASSNAME}.cpp GestureTest.cpp TestItem.cpp)
2219 qt5_use_modules(${CLASSNAME}TestExec Test Core Qml Gui Quick)
@@ -26,7 +23,7 @@ endmacro()
2623macro(add_gesture_unit_test CLASSNAME)
2724 build_gesture_test(${CLASSNAME})
2825 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
3027 DEPENDS UbuntuGesturesTest-qmlfiles
3128 ${ARGN}
3229 )
@@ -35,12 +32,11 @@ endmacro()
3532macro(add_gesture_ui_test CLASSNAME)
3633 build_gesture_test(${CLASSNAME})
3734 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
3936 DEPENDS UbuntuGesturesTest-qmlfiles
4037 ${ARGN}
4138 )
42− add_manual_qml_test(. ${CLASSNAME} IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins
43− ${CMAKE_BINARY_DIR}/tests/utils/modules)
39+ add_manual_qml_test(. ${CLASSNAME} IMPORT_PATHS ${UNITY_PLUGINPATH})
4440endmacro()
4541
4642add_gesture_ui_test(DirectionalDragArea)
tests/plugins/Ubuntu/Gestures/GestureTest.cpp−2
@@ -44,8 +44,6 @@ void GestureTest::init()
4444{
4545 m_view = new QQuickView;
4646 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));
4947 m_view->setSource(QUrl::fromLocalFile(m_qmlFilename));
5048 m_view->show();
5149 QVERIFY(QTest::qWaitForWindowExposed(m_view));
tests/plugins/Ubuntu/Gestures/tst_TouchGate.cpp−1
@@ -119,7 +119,6 @@ QQuickView *tst_TouchGate::createView()
119119 QQuickView *window = new QQuickView(0);
120120 window->setResizeMode(QQuickView::SizeRootObjectToView);
121121 window->resize(720, 720);
122− window->engine()->addImportPath(QLatin1String(UBUNTU_GESTURES_PLUGIN_DIR));
123122
124123 return window;
125124}
tests/qmltests/CMakeLists.txt+2−2
@@ -1,7 +1,7 @@
11
22add_subdirectory(Components)
33
4−add_unity8_qmltest(. OrientedShell)
4+add_unity8_qmltest(. OrientedShell LIGHTDM)
55add_unity8_qmltest(. Shell LIGHTDM)
66add_unity8_qmltest(. ShellWithPin LIGHTDM)
77add_unity8_qmltest(Components Background)
@@ -18,7 +18,7 @@ add_unity8_qmltest(Components Showable)
1818add_unity8_qmltest(Components ZoomableImage)
1919add_unity8_qmltest(Dash Dash)
2020add_unity8_qmltest(Dash DashContent)
21−add_unity8_qmltest(Dash DashShell)
21+add_unity8_qmltest(Dash DashShell LIGHTDM)
2222add_unity8_qmltest(Dash Card)
2323add_unity8_qmltest(Dash CardCarousel)
2424add_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")
21add_definitions(-DTEST_DIR="${CMAKE_CURRENT_LIST_DIR}")
3−add_definitions(-DTESTS_UTILS_MODULES_DIR="${CMAKE_BINARY_DIR}/tests/utils/modules")
42
53########## tst_DragHandle
64
@@ -17,8 +15,7 @@ qt5_use_modules(DragHandleTestExec Test Core Qml Gui Quick)
1715target_link_libraries(DragHandleTestExec UbuntuGesturesQml UbuntuGestures)
1816
1917add_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)
21−
18+add_manual_qml_test(. DragHandle IMPORT_PATHS ${UNITY_PLUGINPATH})
2219
2320########## tst_EdgeDragEvaluator
2421add_executable(EdgeDragEvaluatorTestExec tst_EdgeDragEvaluator.cpp)
tests/qmltests/Components/tst_DragHandle.cpp−2
@@ -113,9 +113,7 @@ QQuickView *tst_DragHandle::createView()
113113{
114114 QQuickView *window = new QQuickView(0);
115115 window->setResizeMode(QQuickView::SizeRootObjectToView);
116− window->engine()->addImportPath(QLatin1String(UBUNTU_GESTURES_PLUGIN_DIR));
117116 window->engine()->addImportPath(QLatin1String(TEST_DIR));
118− window->engine()->addImportPath(QStringLiteral(TESTS_UTILS_MODULES_DIR));
119117
120118 return window;
121119}
tests/qmltests/Components/tst_EdgeDragEvaluator.cpp−1
@@ -99,7 +99,6 @@ QQuickView *tst_EdgeDragEvaluator::createView()
9999{
100100 QQuickView *window = new QQuickView(0);
101101 window->setResizeMode(QQuickView::SizeRootObjectToView);
102− window->engine()->addImportPath(QLatin1String(UBUNTU_GESTURES_PLUGIN_DIR));
103102 window->engine()->addImportPath(QLatin1String(TEST_DIR));
104103
105104 return window;
tests/qmltests/Components/tst_PhysicalKeysMapper.qml+3−3
@@ -45,7 +45,7 @@ TestCase {
4545 }
4646
4747 function init() {
48− Powerd.status = Powerd.On;
48+ Powerd.setStatus(Powerd.On, Powerd.Unknown);
4949 loader.active = true;
5050 tryCompare(loader.status == Loader.Ready);
5151 }
@@ -64,14 +64,14 @@ TestCase {
6464 }
6565
6666 function test_powerKeyLongPressed(data) {
67− Powerd.status = data.status;
67+ Powerd.setStatus(data.status, Powerd.Unknown);
6868 physicalKeysMapper.powerKeyLongPressTime = 500;
6969
7070 physicalKeysMapper.onKeyPressed({ key: Qt.Key_PowerDown, isAutoRepeat: false });
7171
7272 // After the first key press the screen is always on
7373 // and the rest of keypresses are auto repeat
74− Powerd.status = Powerd.On;
74+ Powerd.setStatus(Powerd.On, Powerd.Unknown);
7575
7676 for (var i = 0; i < 3; ++i) {
7777 wait(10);
tests/qmltests/Dash/Previews/tst_PreviewExpandable.qml+91−2
@@ -120,13 +120,26 @@ Rectangle {
120120 "widgets": widgetsModel
121121 }
122122
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+
123137 property var allWidgetsData: {
124138 "title": "Title here",
125139 "collapsed-widgets": 0,
126140 "widgets": allWidgetsModel
127141 }
128142
129−
130143 Component.onCompleted: {
131144 widgetsModel.append({"type": "text", "widgetId": "text1", "properties": { "text": longText }});
132145 widgetsModel.append({"type": "table", "widgetId": "table1", "properties": tableData });
@@ -160,8 +173,22 @@ Rectangle {
160173 }
161174
162175 PreviewWidgetFactory {
163− id: previewWidgetFactory
176+ id: previewExpandable1
164177 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 }
165192 opacity: 0
166193 }
167194
@@ -185,6 +212,8 @@ Rectangle {
185212 }
186213
187214 function init() {
215+ previewExpandable.widgetType = "";
216+ previewExpandable.widgetType = "expandable";
188217 previewExpandable.widgetData = widgetData;
189218 checkInitialState();
190219 }
@@ -210,6 +239,66 @@ Rectangle {
210239 checkInitialState();
211240 }
212241
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+
213302 function test_all_widgets_height() {
214303 previewExpandable.widgetData = allWidgetsData;
215304
tests/qmltests/Dash/tst_Card.qml+2−2
@@ -473,14 +473,14 @@ Rectangle {
473473
474474 card.cardData["mascot"] = "somethingbroken2";
475475 card.cardDataChanged();
476− compare(mascotImage.image.status, Image.Error);
476+ compare(mascotImage.status, Image.Error);
477477
478478 cardTool.components["mascot"] = {"fallback": Qt.resolvedUrl("artwork/emblem.png")};
479479 cardTool.componentsChanged();
480480 card.cardData["mascot"] = "somethingbroken2";
481481 card.cardDataChanged();
482482 waitForRendering(card);
483− tryCompare(mascotImage.image, "status", Image.Ready);
483+ tryCompare(mascotImage, "status", Image.Ready);
484484 }
485485
486486 function test_font_weights_data() {
tests/qmltests/Greeter/tst_Infographics.qml+4−3
@@ -74,15 +74,16 @@ Item {
7474
7575 function test_set_username_data() {
7676 return [
77− { username: "has-password", label: "<b>19</b> minutes talk time" },
78− { username: "two-factor", label: "No data" },
79− { username: "", label: "No data" },
77+ { username: "has-password", label: "<b>19</b> minutes talk time", visible: true },
78+ { username: "two-factor", label: "", visible: true },
79+ { username: "", label: "", visible: false },
8080 ]
8181 }
8282
8383 function test_set_username(data) {
8484 infographicModel.username = data.username
8585 tryCompare(label, "text", data.label)
86+ compare(infographic.visible, data.visible);
8687 }
8788 }
8889
tests/qmltests/Notifications/tst_Notifications.qml+61−8
@@ -12,16 +12,15 @@
1212 *
1313 * You should have received a copy of the GNU Lesser General Public License
1414 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Mirco Mueller <mirco.mueller@canonical.com>
1815 */
1916
20−import QtQuick 2.0
17+import QtQuick 2.4
18+import QtQuick.Layouts 1.1
2119import QtTest 1.0
2220import ".."
2321import "../../../qml/Notifications"
24−import Ubuntu.Components 0.1
22+import "../../../qml/Components/UnityInputInfo"
23+import Ubuntu.Components 1.2
2524import Unity.Test 0.1
2625import Unity.Notifications 1.0
2726import QtMultimedia 5.0
@@ -77,7 +76,7 @@ Item {
7776 "type": Notification.Ephemeral,
7877 "hints": {},
7978 "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.",
8180 "icon": "../graphics/avatars/amanda.png",
8281 "secondaryIcon": "../graphics/applicationIcons/facebook.png",
8382 "rawActions": ["reply_id", "Dummy"]})
@@ -91,7 +90,7 @@ Item {
9190 "type": Notification.Ephemeral,
9291 "hints": {"x-canonical-non-shaped-icon": "true"},
9392 "summary": "Contacts",
94− "body": "Synchronised contacts-database with cloud-storage.",
93+ "body": "Synchronised contacts-database &amp; cloud-storage.",
9594 "icon": "../graphics/applicationIcons/contacts-app.png",
9695 "secondaryIcon": "",
9796 "rawActions": ["reply_id", "Dummy"]})
@@ -189,6 +188,7 @@ Item {
189188
190189 anchors.fill: parent
191190 model: mockModel
191+ hasMouse: UnityInputInfo.mice > 0 // for testing, we add/remove only a mock mouse
192192 }
193193 }
194194
@@ -218,7 +218,7 @@ Item {
218218
219219 Button {
220220 width: parent.width
221− text: "add an non-shaped-icon-summary-body"
221+ text: "add a non-shaped-icon-summary-body"
222222 onClicked: rootRow.addEphemeralNonShapedIconNotification()
223223 }
224224
@@ -257,6 +257,24 @@ Item {
257257 text: "clear model"
258258 onClicked: rootRow.clearNotifications()
259259 }
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+ }
260278 }
261279 }
262280
@@ -675,6 +693,41 @@ Item {
675693 tryCompare(mockModel, "count", before - 1)
676694 }
677695 }
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+ }
678731 }
679732 }
680733}
tests/qmltests/Notifications/tst_SwipeToAct.qml+58−14
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2014 Canonical, Ltd.
2+ * Copyright (C) 2014, 2015 Canonical, Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
@@ -14,10 +14,12 @@
1414 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1515 */
1616
17−import QtQuick 2.0
17+import QtQuick 2.4
18+import QtQuick.Layouts 1.1
1819import QtTest 1.0
1920import ".."
2021import "../../../qml/Notifications"
22+import "../../../qml/Components/UnityInputInfo"
2123import Ubuntu.Components 0.1
2224import Unity.Test 0.1
2325import Unity.Notifications 1.0
@@ -74,7 +76,10 @@ Item {
7476 icon: "../graphics/avatars/amanda.png",
7577 secondaryIcon: "incoming-call",
7678 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+ ]
7883 }
7984
8085 mockModel.append(n)
@@ -97,7 +102,6 @@ Item {
97102
98103 MouseArea{
99104 id: clickThroughCatcher
100−
101105 anchors.fill: parent
102106 }
103107
@@ -108,6 +112,7 @@ Item {
108112
109113 anchors.fill: parent
110114 model: mockModel
115+ hasMouse: UnityInputInfo.mice > 0 // for testing, we add/remove only a mock mouse
111116 }
112117 }
113118
@@ -140,6 +145,24 @@ Item {
140145 text: "clear model"
141146 onClicked: rootRow.clearNotifications()
142147 }
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+ }
143166 }
144167 }
145168
@@ -258,21 +281,42 @@ Item {
258281
259282 if(data.buttonRowVisible) {
260283 var swipeButton = findChild(buttonRow, "notify_swipe_button")
261− var slider = findChild(swipeButton, "slider")
262− var swipeMouseArea = findChild(swipeButton, "swipeMouseArea")
263− var x = swipeMouseArea.width / 2
264− var y = swipeMouseArea.height / 2
284+
285+ if (!swipeButton.clickToAct) { // don't run if there's a real mouse
286+ var slider = findChild(swipeButton, "slider")
287+ var swipeMouseArea = findChild(swipeButton, "swipeMouseArea")
288+ var x = swipeMouseArea.width / 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");
265307
266308 if(data.checkSwipeToActAccept) {
267− tryCompareFunction(function() { mouseDrag(slider, x, y, (swipeMouseArea.width / 2) - slider.width, 0); return actionSpy.signalArguments.length > 0; }, true);
268− compare(actionSpy.signalArguments[0][0], data.actions.data(0, ActionModel.RoleActionId), "got wrong id for positive action")
269− actionSpy.clear()
309+ mouseClick(rightButton);
310+ compare(actionSpy.signalArguments[0][0], data.actions.data(0, ActionModel.RoleActionId), "got wrong id for positive action");
311+ actionSpy.clear();
270312 }
313+
271314 if(data.checkSwipeToActReject) {
272− tryCompareFunction(function() { mouseDrag(slider, x, y, -(swipeMouseArea.width / 2), 0); return actionSpy.signalArguments.length > 0; }, true);
273− compare(actionSpy.signalArguments[0][0], data.actions.data(1, ActionModel.RoleActionId), "got wrong id for negative action")
274− actionSpy.clear()
315+ mouseClick(leftButton);
316+ compare(actionSpy.signalArguments[0][0], data.actions.data(1, ActionModel.RoleActionId), "got wrong id for negative action");
317+ actionSpy.clear();
275318 }
319+ UnityInputInfo.inputInfo.removeMockMouse();
276320 }
277321 }
278322 }
tests/qmltests/Panel/Indicators/tst_IndicatorsLight.qml+8−5
@@ -58,7 +58,7 @@ Item {
5858
5959 Component.onCompleted: {
6060 ActionData.data = newMessage;
61− Powerd.status = Powerd.On
61+ Powerd.setStatus(Powerd.On, Powerd.Unknown);
6262 }
6363
6464 RowLayout {
@@ -91,8 +91,11 @@ Item {
9191 Layout.fillWidth: true
9292 text: Powerd.status === Powerd.On ? "Power Off" : "Power On"
9393 onClicked: {
94− if (Powerd.status === Powerd.On) Powerd.status = Powerd.Off;
95− else Powerd.status = Powerd.On;
94+ if (Powerd.status === Powerd.On) {
95+ Powerd.setStatus(Powerd.Off, Powerd.Unknown);
96+ } else {
97+ Powerd.setStatus(Powerd.On, Powerd.Unknown);
98+ }
9699 }
97100 }
98101 }
@@ -107,7 +110,7 @@ Item {
107110 ActionData.data = noNewMessage;
108111 loader.sourceComponent = undefined;
109112 loader.sourceComponent = light;
110− Powerd.status = Powerd.On
113+ Powerd.setStatus(Powerd.On, Powerd.Unknown);
111114 }
112115
113116 function test_LightsStatus_data() {
@@ -120,7 +123,7 @@ Item {
120123 }
121124
122125 function test_LightsStatus(data) {
123− Powerd.status = data.powerd;
126+ Powerd.setStatus(data.powerd, Powerd.Unknown);
124127 ActionData.data = data.actionData;
125128
126129 compare(Lights.state, data.expected, "Light does not match expected value");
tests/qmltests/Stages/tst_DesktopStage.qml+10−7
@@ -61,7 +61,6 @@ Item {
6161 Component.onDestruction: {
6262 desktopStageLoader.itemDestroyed = true;
6363 }
64− focus: true
6564 }
6665 }
6766 }
@@ -142,8 +141,8 @@ Item {
142141
143142 function test_appFocusSwitch_data() {
144143 return [
145− {tag: "dash", 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 },
144+ {tag: "dash to dialer", apps: [ "unity8-dash", "dialer-app", "camera-app" ], focusfrom: 0, focusTo: 1 },
145+ {tag: "dialer to dash", apps: [ "unity8-dash", "dialer-app", "camera-app" ], focusfrom: 1, focusTo: 0 },
147146 ]
148147 }
149148
@@ -162,8 +161,8 @@ Item {
162161
163162 function test_tappingOnWindowChangesFocusedApp_data() {
164163 return [
165− {tag: "dash", 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 },
164+ {tag: "dash to dialer", apps: [ "unity8-dash", "dialer-app", "camera-app" ], focusfrom: 0, focusTo: 1 },
165+ {tag: "dialer to dash", apps: [ "unity8-dash", "dialer-app", "camera-app" ], focusfrom: 1, focusTo: 0 },
167166 ]
168167 }
169168
@@ -172,16 +171,20 @@ Item {
172171 for (i = 0; i < data.apps.length; i++) {
173172 startApplication(data.apps[i]);
174173 }
174+ var fromAppId = data.apps[data.focusfrom];
175+ var toAppId = data.apps[data.focusTo]
175176
176− var fromAppWindow = findChild(desktopStage, "appWindow_" + data.apps[data.focusfrom]);
177+ var fromAppWindow = findChild(desktopStage, "appWindow_" + fromAppId);
177178 verify(fromAppWindow);
178179 tap(fromAppWindow);
179180 compare(fromAppWindow.application.session.surface.activeFocus, true);
181+ compare(ApplicationManager.focusedApplicationId, fromAppId);
180182
181− var toAppWindow = findChild(desktopStage, "appWindow_" + data.apps[data.focusTo]);
183+ var toAppWindow = findChild(desktopStage, "appWindow_" + toAppId);
182184 verify(toAppWindow);
183185 tap(toAppWindow);
184186 compare(toAppWindow.application.session.surface.activeFocus, true);
187+ compare(ApplicationManager.focusedApplicationId, toAppId);
185188 }
186189
187190 function test_tappingOnDecorationFocusesApplication_data() {
tests/qmltests/Stages/tst_TabletStage.qml+1−1
@@ -167,7 +167,7 @@ Rectangle {
167167 var lastValue = undefined;
168168 do {
169169 lastValue = targetAppDelegate.animatedProgress;
170− wait(30);
170+ wait(300);
171171 } while (lastValue != targetAppDelegate.animatedProgress);
172172 }
173173
tests/qmltests/tst_OrientedShell.qml+108−3
@@ -296,9 +296,9 @@ Rectangle {
296296 activeFocusOnPress: false
297297 onClicked: {
298298 if (Powerd.status === Powerd.On) {
299− Powerd.status = Powerd.Off;
299+ Powerd.setStatus(Powerd.Off, Powerd.Unknown);
300300 } else {
301− Powerd.status = Powerd.On;
301+ Powerd.setStatus(Powerd.On, Powerd.Unknown);
302302 }
303303 }
304304 }
@@ -996,6 +996,60 @@ Rectangle {
996996 tryCompare(shell, "transformRotationAngle", root.primaryOrientationAngle);
997997 }
998998
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+
9991053 // angle - rotation angle in degrees clockwise, relative to the primary orientation.
10001054 function rotateTo(angle) {
10011055 switch (angle) {
@@ -1016,6 +1070,12 @@ Rectangle {
10161070 }
10171071
10181072 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+
10191079 waitUntilTransitionsEnd(rotationStates);
10201080 }
10211081
@@ -1239,7 +1299,6 @@ Rectangle {
12391299 var childs = new Array(0);
12401300 childs.push(obj)
12411301 while (childs.length > 0) {
1242− console.log("Checking " + childs[0].objectName);
12431302 if (childs[0].objectName === "surfaceItem"
12441303 && childs[0].surface !== undefined
12451304 && childs[0].surface === surface) {
@@ -1252,5 +1311,51 @@ Rectangle {
12521311 }
12531312 return null;
12541313 }
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+ }
12551360 }
12561361}
tests/qmltests/tst_Shell.qml+149−47
@@ -322,8 +322,9 @@ Rectangle {
322322
323323 function loadDesktopShellWithApps() {
324324 loadShell("desktop");
325+ waitForRendering(shell)
325326 shell.usageScenario = "desktop"
326− waitForRendering(root)
327+ waitForRendering(shell)
327328 var app1 = ApplicationManager.startApplication("dialer-app")
328329 var app2 = ApplicationManager.startApplication("webbrowser-app")
329330 var app3 = ApplicationManager.startApplication("camera-app")
@@ -590,19 +591,19 @@ Rectangle {
590591
591592 // Display off while call is active...
592593 callManager.foregroundCall = phoneCall;
593− Powerd.status = Powerd.Off;
594+ Powerd.setStatus(Powerd.Off, Powerd.Unknown);
594595 tryCompare(greeter, "shown", false);
595596
596597 // Now try again after ending call
597598 callManager.foregroundCall = null;
598− Powerd.status = Powerd.On;
599− Powerd.status = Powerd.Off;
599+ Powerd.setStatus(Powerd.On, Powerd.Unknown);
600+ Powerd.setStatus(Powerd.Off, Powerd.Unknown);
600601 tryCompare(greeter, "fullyShown", true);
601602
602603 compare(mainApp.requestedState, ApplicationInfoInterface.RequestedSuspended);
603604
604605 // And wake up
605− Powerd.status = Powerd.On;
606+ Powerd.setStatus(Powerd.On, Powerd.Unknown);
606607 tryCompare(greeter, "fullyShown", true);
607608
608609 // Swipe away greeter to focus app
@@ -795,6 +796,7 @@ Rectangle {
795796 function test_launchedAppHasActiveFocus(data) {
796797 loadShell(data.formFactor);
797798 shell.usageScenario = data.usageScenario;
799+ waitForGreeterToStabilize();
798800 swipeAwayGreeter();
799801
800802 var webApp = ApplicationManager.startApplication("webbrowser-app");
@@ -1104,6 +1106,19 @@ Rectangle {
11041106 compare(tutorialLeft, null); // should be destroyed with tutorial
11051107 }
11061108
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+
11071122 function test_tapOnRightEdgeReachesApplicationSurface() {
11081123 loadShell("phone");
11091124 swipeAwayGreeter();
@@ -1393,17 +1408,18 @@ Rectangle {
13931408 keyClick(Qt.Key_Tab, Qt.ControlModifier)
13941409 tryCompare(app2.session.surface, "activeFocus", true)
13951410
1411+ var desktopSpread = findChild(shell, "spread")
13961412
1397− tryCompare(desktopStage, "state", "")
1413+ tryCompare(desktopSpread, "state", "")
13981414
13991415 // Just press Alt, make sure the spread comes up
14001416 keyPress(Qt.Key_Control);
14011417 keyClick(Qt.Key_Tab);
1402− tryCompare(desktopStage, "state", "altTab")
1418+ tryCompare(desktopSpread, "state", "altTab")
14031419
14041420 // Release control, check if spread disappears
14051421 keyRelease(Qt.Key_Control)
1406− tryCompare(desktopStage, "state", "")
1422+ tryCompare(desktopSpread, "state", "")
14071423
14081424 // Focus should have switched back now
14091425 tryCompare(app3.session.surface, "activeFocus", true)
@@ -1415,41 +1431,44 @@ Rectangle {
14151431 var desktopStage = findChild(shell, "stage");
14161432 verify(desktopStage !== null)
14171433
1418− var appContainer = findInvisibleChild(shell, "appContainer")
1419− verify(appContainer !== null)
1434+ var desktopSpread = findChild(shell, "spread");
1435+ verify(desktopSpread !== null)
1436+
1437+ var spreadContainer = findInvisibleChild(shell, "spreadContainer")
1438+ verify(spreadContainer !== null)
14201439
1421− var appRepeater = findInvisibleChild(shell, "appRepeater")
1422− verify(appRepeater !== null)
1440+ var spreadRepeater = findInvisibleChild(shell, "spreadRepeater")
1441+ verify(spreadRepeater !== null)
14231442
14241443 // remember the focused appId
14251444 var focused = ApplicationManager.get(ApplicationManager.findApplication(ApplicationManager.focusedApplicationId));
14261445
1427− tryCompare(desktopStage, "state", "")
1446+ tryCompare(desktopSpread, "state", "")
14281447
14291448 // Just press Alt, make sure the spread comes up
14301449 keyPress(Qt.Key_Control);
14311450 keyClick(Qt.Key_Tab);
1432− tryCompare(desktopStage, "state", "altTab")
1433− tryCompare(appRepeater, "highlightedIndex", 1)
1451+ tryCompare(desktopSpread, "state", "altTab")
1452+ tryCompare(spreadRepeater, "highlightedIndex", 1)
14341453 waitForRendering(shell)
14351454
14361455 // Now press and hold Tab, make sure the highlight moves all the way but stops at the last one
14371456 // We can't simulate a pressed key with keyPress() currently, so let's inject the events
14381457 // at API level. Jump for 10 times, verify that it's still at the last one and didn't wrap around.
14391458 for (var i = 0; i < 10; i++) {
1440− appContainer.selectNext(true); // true == isAutoRepeat
1459+ desktopSpread.selectNext(true); // true == isAutoRepeat
14411460 wait(0); // Trigger the event loop to make sure all the things happen
14421461 }
1443− tryCompare(appRepeater, "highlightedIndex", 6)
1462+ tryCompare(spreadRepeater, "highlightedIndex", 6)
14441463
14451464 // Now release it once, and verify that it does wrap around with an additional Tab press
14461465 keyRelease(Qt.Key_Tab);
14471466 keyClick(Qt.Key_Tab);
1448− tryCompare(appRepeater, "highlightedIndex", 0)
1467+ tryCompare(spreadRepeater, "highlightedIndex", 0)
14491468
14501469 // Release control, check if spread disappears
14511470 keyRelease(Qt.Key_Control)
1452− tryCompare(desktopStage, "state", "")
1471+ tryCompare(desktopSpread, "state", "")
14531472
14541473 // Make sure that after wrapping around once, we have the same one focused as at the beginning
14551474 tryCompare(focused.session.surface, "activeFocus", true)
@@ -1458,30 +1477,30 @@ Rectangle {
14581477 function test_altBackTabNavigation() {
14591478 loadDesktopShellWithApps();
14601479
1461− var appRepeater = findInvisibleChild(shell, "appRepeater");
1462− verify(appRepeater !== null);
1480+ var spreadRepeater = findInvisibleChild(shell, "spreadRepeater");
1481+ verify(spreadRepeater !== null);
14631482
14641483 keyPress(Qt.Key_Control)
14651484 keyClick(Qt.Key_Tab);
1466− tryCompare(appRepeater, "highlightedIndex", 1);
1485+ tryCompare(spreadRepeater, "highlightedIndex", 1);
14671486
14681487 keyClick(Qt.Key_Tab);
1469− tryCompare(appRepeater, "highlightedIndex", 2);
1488+ tryCompare(spreadRepeater, "highlightedIndex", 2);
14701489
14711490 keyClick(Qt.Key_Tab);
1472− tryCompare(appRepeater, "highlightedIndex", 3);
1491+ tryCompare(spreadRepeater, "highlightedIndex", 3);
14731492
14741493 keyClick(Qt.Key_Tab);
1475− tryCompare(appRepeater, "highlightedIndex", 4);
1494+ tryCompare(spreadRepeater, "highlightedIndex", 4);
14761495
14771496 keyClick(Qt.Key_Backtab);
1478− tryCompare(appRepeater, "highlightedIndex", 3);
1497+ tryCompare(spreadRepeater, "highlightedIndex", 3);
14791498
14801499 keyClick(Qt.Key_Backtab);
1481− tryCompare(appRepeater, "highlightedIndex", 2);
1500+ tryCompare(spreadRepeater, "highlightedIndex", 2);
14821501
14831502 keyClick(Qt.Key_Backtab);
1484− tryCompare(appRepeater, "highlightedIndex", 1);
1503+ tryCompare(spreadRepeater, "highlightedIndex", 1);
14851504
14861505 keyRelease(Qt.Key_Control);
14871506 }
@@ -1489,20 +1508,20 @@ Rectangle {
14891508 function test_highlightFollowsMouse() {
14901509 loadDesktopShellWithApps()
14911510
1492− var appRepeater = findInvisibleChild(shell, "appRepeater");
1493− verify(appRepeater !== null);
1511+ var spreadRepeater = findInvisibleChild(shell, "spreadRepeater");
1512+ verify(spreadRepeater !== null);
14941513
14951514 keyPress(Qt.Key_Control)
14961515 keyClick(Qt.Key_Tab);
14971516
1498− tryCompare(appRepeater, "highlightedIndex", 1);
1517+ tryCompare(spreadRepeater, "highlightedIndex", 1);
14991518
15001519 var x = 0;
15011520 var y = shell.height * .75;
15021521 mouseMove(shell, x, y)
15031522
15041523 for (var i = 0; i < 7; i++) {
1505− while (appRepeater.highlightedIndex != i && x <= 4000) {
1524+ while (spreadRepeater.highlightedIndex != i && x <= 4000) {
15061525 x+=10;
15071526 mouseMove(shell, x, y)
15081527 wait(0); // spin the loop so bindings get evaluated
@@ -1517,8 +1536,8 @@ Rectangle {
15171536 function test_closeFromSpread() {
15181537 loadDesktopShellWithApps()
15191538
1520− var appRepeater = findInvisibleChild(shell, "appRepeater");
1521− verify(appRepeater !== null);
1539+ var spreadRepeater = findInvisibleChild(shell, "spreadRepeater");
1540+ verify(spreadRepeater !== null);
15221541
15231542 keyPress(Qt.Key_Control)
15241543 keyClick(Qt.Key_Tab);
@@ -1526,14 +1545,14 @@ Rectangle {
15261545 appRemovedSpy.clear();
15271546
15281547 var closedAppId = ApplicationManager.get(2).appId;
1529− var appDelegate2 = appRepeater.itemAt(2);
1530− var closeMouseArea = findChild(appDelegate2, "closeMouseArea");
1548+ var spreadDelegate2 = spreadRepeater.itemAt(2);
1549+ var closeMouseArea = findChild(spreadDelegate2, "closeMouseArea");
15311550
15321551 // Move the mosue over tile 2 and verify the close button becomes visible
15331552 var x = 0;
15341553 var y = shell.height * .5;
15351554 mouseMove(shell, x, y)
1536− while (appRepeater.highlightedIndex !== 2 && x <= 4000) {
1555+ while (spreadRepeater.highlightedIndex !== 2 && x <= 4000) {
15371556 x+=10;
15381557 mouseMove(shell, x, y)
15391558 wait(0); // spin the loop so bindings get evaluated
@@ -1560,32 +1579,35 @@ Rectangle {
15601579 function test_selectFromSpreadWithMouse(data) {
15611580 loadDesktopShellWithApps()
15621581
1563− var appRepeater = findInvisibleChild(shell, "appRepeater");
1564− verify(appRepeater !== null);
1582+ var stage = findChild(shell, "stage");
1583+ var spread = findChild(stage, "spread");
1584+ waitForRendering(spread)
1585+
1586+ var spreadRepeater = findInvisibleChild(shell, "spreadRepeater");
1587+ verify(spreadRepeater !== null);
15651588
15661589 keyPress(Qt.Key_Control)
15671590 keyClick(Qt.Key_Tab);
15681591
15691592 var focusAppId = ApplicationManager.get(2).appId;
1570− var appDelegate2 = appRepeater.itemAt(2);
1571− var decoratedWindow = findChild(appDelegate2, "decoratedWindow");
1572− var stage = findChild(shell, "stage");
1593+ var spreadDelegate2 = spreadRepeater.itemAt(2);
1594+ var clippedSpreadDelegate = findChild(spreadDelegate2, "clippedSpreadDelegate");
15731595
1574− tryCompare(stage, "state", "altTab");
1596+ tryCompare(spread, "state", "altTab");
15751597
15761598 // Move the mouse over tile 2 and verify the highlight becomes visible
15771599 var x = 0;
15781600 var y = shell.height * (data.tileInfo ? .95 : 0.5)
15791601 mouseMove(shell, x, y)
1580− while (appRepeater.highlightedIndex !== 2 && x <= 4000) {
1602+ while (spreadRepeater.highlightedIndex !== 2 && x <= 4000) {
15811603 x+=10;
15821604 mouseMove(shell, x, y)
15831605 wait(0); // spin the loop so bindings get evaluated
15841606 }
1585− tryCompare(decoratedWindow, "highlightShown", true);
1607+ tryCompare(clippedSpreadDelegate, "highlightShown", true);
15861608
15871609 // Click the tile
1588− mouseClick(decoratedWindow, decoratedWindow.width / 2, decoratedWindow.height / 2)
1610+ mouseClick(clippedSpreadDelegate, clippedSpreadDelegate.width / 2, clippedSpreadDelegate.height / 2)
15891611
15901612 // Verify that we left the spread and app2 is the focused one now
15911613 tryCompare(stage, "state", "");
@@ -1604,7 +1626,6 @@ Rectangle {
16041626 keyClick(Qt.Key_Tab);
16051627
16061628 var spreadFlickable = findChild(shell, "spreadFlickable")
1607− print("have flickable", spreadFlickable, spreadFlickable.contentX)
16081629
16091630 compare(spreadFlickable.contentX, 0);
16101631
@@ -1629,5 +1650,86 @@ Rectangle {
16291650
16301651 keyRelease(Qt.Key_Control);
16311652 }
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+ }
16321734 }
16331735}
tests/qmltests/tst_ShellWithPin.qml+2−2
@@ -501,13 +501,13 @@ Item {
501501 var applicationsDisplayLoader = findChild(shell, "applicationsDisplayLoader")
502502
503503 // Put it to sleep
504− Powerd.status = Powerd.Off;
504+ Powerd.setStatus(Powerd.Off, Powerd.Unknown);
505505
506506 // If locked, applicationsDisplayLoader.item.suspended should be true
507507 tryCompare(applicationsDisplayLoader.item, "suspended", true);
508508
509509 // And wake up
510− Powerd.status = Powerd.On;
510+ Powerd.setStatus(Powerd.On, Powerd.Unknown);
511511 tryCompare(greeter, "fullyShown", true);
512512
513513 // Swipe away greeter to focus app
tests/uqmlscene/CMakeLists.txt−1
@@ -1,6 +1,5 @@
11add_executable(uqmlscene
22 ${shellapplication_MOC_SRCS}
3− ActiveFocusLogger.cpp
43 main.cpp
54 )
65
tests/uqmlscene/main.cpp−13
@@ -63,12 +63,6 @@
6363#include <QtCore/QTranslator>
6464#include <QtCore/QLibraryInfo>
6565
66−#define UQMLSCENE_DEBUG_ACTIVE_FOCUS 0
67−
68−#if UQMLSCENE_DEBUG_ACTIVE_FOCUS
69− #include "ActiveFocusLogger.h"
70−#endif
71−
7266#ifdef QML_RUNTIME_TESTING
7367class RenderStatistics
7468{
@@ -393,10 +387,6 @@ int main(int argc, char ** argv)
393387{
394388 Options options;
395389
396− #if UQMLSCENE_DEBUG_ACTIVE_FOCUS
397− ActiveFocusLogger activeFocusLogger;
398− #endif
399−
400390 QStringList imports;
401391 QList<QPair<QString, QString> > bundles;
402392 for (int i = 1; i < argc; ++i) {
@@ -515,9 +505,6 @@ int main(int argc, char ** argv)
515505 QQuickItem *contentItem = qobject_cast<QQuickItem *>(topLevel);
516506 if (contentItem) {
517507 qxView = new QQuickView(&engine, nullptr);
518− #if UQMLSCENE_DEBUG_ACTIVE_FOCUS
519− activeFocusLogger.setWindow(qxView);
520− #endif
521508 window = qxView;
522509 // Set window default properties; the qml can still override them
523510 QString oname = contentItem->objectName();
tools/scopetool.cpp+1−1
@@ -89,7 +89,7 @@ int main(int argc, char *argv[])
8989 view->setTitle(QGuiApplication::applicationName());
9090 view->engine()->setBaseUrl(QUrl::fromLocalFile(::qmlDirectory()));
9191
92− QUrl source(::qmlDirectory() + "ScopeTool.qml");
92+ QUrl source(::qmlDirectory() + "/ScopeTool.qml");
9393 prependImportPaths(view->engine(), ::overrideImportPaths());
9494 prependImportPaths(view->engine(), ::nonMirImportPaths());
9595 appendImportPaths(view->engine(), ::fallbackImportPaths());