on xenial help sign in
Merge makeMakeTryOrientedShellWork
commit42301faf03d85a2b03b04fcd6524a1e8973268c1 authorAlbert Astals Cid <albert.astals@canonical.com> dateFri 11 Mar 2016, 12:52 (11 years ago) parente2de895d345593
270 files changed+5788−3553
CMakeLists.txt+1−1 cmake/modules/QmlTest.cmake+1−1 data/unity8-dash.conf+1 debian/changelog+155 debian/control+11−10 debian/tests/autopilot.sh+13 debian/tests/control+5 debian/unity8-common.udev+2 debian/unity8-doc.install+1 doc/devices.conf+30 plugins/AccountsService/AccountsService.cpp+189−342 plugins/AccountsService/AccountsService.h+25−20 plugins/AccountsService/AccountsServiceDBusAdaptor.cpp+11−4 plugins/AccountsService/AccountsServiceDBusAdaptor.h+5−6 plugins/Dash/AudioProgressBar.qml+1 plugins/Dash/CardCreator.js+69−34 plugins/Dash/CardCreatorCache.qml+3−3 plugins/Dash/plugin.cpp+6−6 plugins/GlobalShortcut/globalshortcutregistry.cpp+4−4 plugins/IntegratedLightDM/liblightdm/CMakeLists.txt+16−3 plugins/IntegratedLightDM/liblightdm/UsersModel.cpp+4−18 plugins/IntegratedLightDM/liblightdm/UsersModel.h+1−1 plugins/IntegratedLightDM/liblightdm/UsersModelPrivate.cpp+43−9 plugins/IntegratedLightDM/liblightdm/UsersModelPrivate.h+15−3 plugins/Unity/Indicators/indicatorsmanager.cpp+2−2 plugins/Unity/Indicators/rootstateparser.h+1 plugins/Unity/Launcher/desktopfilehandler.cpp+2−2 plugins/Unity/Launcher/launcheritem.cpp+1 plugins/Unity/Launcher/launcheritem.h+1−1 plugins/Unity/Launcher/launchermodel.cpp+15−5 plugins/Unity/Launcher/launchermodel.h+1−1 plugins/Utils/CMakeLists.txt+1 plugins/Utils/deviceconfigparser.cpp+150 plugins/Utils/deviceconfigparser.h+62 plugins/Utils/plugin.cpp+2 po/aa.po+11−19 po/am.po+20−22 po/ar.po+17−19 po/ast.po+28−28 po/az.po+17−19 po/be.po+17−19 po/bg.po+11−19 po/bn.po+17−19 po/br.po+32−30 po/bs.po+17−19 po/ca.po+17−19 po/ca@valencia.po+17−19 po/ce.po+11−19 po/ckb.po+11−19 po/cs.po+17−19 po/cy.po+17−19 po/da.po+17−19 po/de.po+24−24 po/el.po+17−19 po/en_AU.po+17−19 po/en_GB.po+20−22 po/eo.po+53−28 po/es.po+20−22 po/eu.po+17−19 po/fa.po+17−19 po/fi.po+17−19 po/fo.po+11−19 po/fr.po+22−22 po/ga.po+17−19 po/gd.po+20−21 po/gl.po+17−19 po/gv.po+11−19 po/he.po+17−19 po/hi.po+11−19 po/hr.po+20−22 po/hu.po+17−19 po/hy.po+17−19 po/ia.po+17−19 po/id.po+17−19 po/is.po+17−19 po/it.po+17−19 po/ja.po+17−19 po/km.po+17−19 po/kn.po+11−19 po/ko.po+20−22 po/ku.po+17−19 po/ky.po+11−19 po/lo.po+11−19 po/lt.po+11−19 po/lv.po+17−19 po/ml.po+11−19 po/mr.po+11−19 po/ms.po+17−19 po/my.po+14−19 po/nb.po+22−22 po/ne.po+11−19 po/nl.po+17−19 po/nn.po+11−19 po/oc.po+11−19 po/or.po+11−19 po/pa.po+17−19 po/pl.po+20−22 po/pt.po+28−30 po/pt_BR.po+17−19 po/ro.po+17−19 po/ru.po+17−19 po/shn.po+11−19 po/si.po+11−19 po/sk.po+179−157 po/sl.po+17−19 po/sq.po+17−19 po/sr.po+68−70 po/sv.po+17−19 po/sw.po+17−19 po/ta.po+11−19 po/te.po+11−19 po/th.po+11−19 po/tr.po+17−19 po/ug.po+17−19 po/uk.po+17−19 po/unity8.pot+34−40 po/ur.po+11−19 po/uz.po+11−19 po/vi.po+11−19 po/wo.po+17−19 po/xh.po+11−19 po/zh_CN.po+20−22 po/zh_HK.po+11−19 po/zh_TW.po+22−24 qml/Components/EdgeBarrier.qml+1−1 qml/Components/Header.qml+1 qml/Components/InputMethod.qml+1−9 qml/Components/Lockscreen.qml+80−94 qml/Components/ModeSwitchWarningDialog.qml+1−1 qml/Components/PassphraseLockscreen.qml+5−4 qml/Components/PinLockscreen.qml+22−1 qml/Components/ShellDialog.qml+8 qml/Dash/CardCarousel.qml−1 qml/Dash/CardGrid.qml−1 qml/Dash/CardHorizontalList.qml−1 qml/Dash/CardTool.qml+2−26 qml/Dash/CardVerticalJournal.qml−1 qml/Dash/Dash.qml+11−11 qml/Dash/DashPageHeader.qml+4 qml/Dash/GenericScopeView.qml+16−42 qml/Dash/PreviewListView.qml−140 qml/Dash/PreviewView.qml+76 qml/Dash/Previews/Preview.qml−4 qml/Dash/Previews/PreviewAudioPlayback.qml+5−1 qml/Dash/Previews/PreviewExpandable.qml−1 qml/Dash/Previews/PreviewHeader.qml+37−9 qml/Dash/Previews/PreviewOverlay.qml+1−1 qml/Dash/Previews/PreviewPayments.qml+1−3 qml/Dash/Previews/PreviewRatingDisplay.qml−1 qml/Dash/Previews/PreviewRatingEdit.qml−1 qml/Dash/Previews/PreviewSharing.qml+17−7 qml/Dash/Previews/PreviewWidget.qml−3 qml/Dash/Previews/PreviewWidgetFactory.qml−4 qml/Dash/ScopesList.qml+1−1 qml/Dash/ScopesListCategoryItem.qml+8−4 qml/DeviceConfiguration.qml+54−16 qml/DisabledScreenNotice.qml+44−20 qml/Greeter/CoverPage.qml+13−2 qml/Greeter/Infographics.qml+2−1 qml/Greeter/NarrowView.qml+14−1 qml/Launcher/Launcher.qml+4−3 qml/Launcher/LauncherDelegate.qml+1 qml/Notifications/Notification.qml+9−5 qml/OrientedShell.qml+26−1 qml/Panel/Handle.qml+2−2 qml/Panel/IndicatorItem.qml+3−3 qml/Panel/Indicators/MenuItemFactory.qml+3−4 qml/Panel/Indicators/ModemInfoItem.qml−111 qml/Panel/Indicators/RoamingIndication.qml−40 qml/Panel/Indicators/client/IndicatorsClient.qml+1−1 qml/Panel/IndicatorsMenu.qml+3−2 qml/Panel/MenuContent.qml+1−1 qml/Panel/Panel.qml+5−1 qml/ScopeTool.qml−8 qml/Shell.qml+1−1 qml/Stages/AbstractStage.qml+1−1 qml/Stages/DesktopSpread.qml+64−17 qml/Stages/DesktopSpreadDelegate.qml+15−1 qml/Stages/DesktopStage.qml+19−23 qml/Stages/PhoneStage.qml+77−3 qml/Stages/Splash.qml+4−2 qml/Stages/SpreadDelegate.qml+20 qml/Stages/TabletStage.qml+83−3 qml/Stages/WindowResizeArea.qml+1−1 qml/Wizard/StackButton.qml+1−1 src/CMakeLists.txt+1−1 src/CachingNetworkManagerFactory.cpp+2−2 src/CachingNetworkManagerFactory.h+3−2 src/Dash/CMakeLists.txt+1−1 tests/autopilot/unity8/dash.py+1−2 tests/autopilot/unity8/shell/tests/test_helpers.py−2 tests/mocks/IntegratedLightDM/liblightdm/UsersModel.cpp−14 tests/mocks/Unity/Application/MirSurface.cpp+6−2 tests/mocks/Unity/Application/MirSurface.h+2−1 tests/mocks/Unity/Application/MirSurfaceItem.cpp+2−5 tests/mocks/Unity/Application/SurfaceManager.cpp+8−9 tests/mocks/Unity/Application/SurfaceManager.h+3−3 tests/mocks/Unity/Application/VirtualKeyboard.cpp+3−2 tests/mocks/Unity/Application/VirtualKeyboard.h+1−1 tests/mocks/Unity/Application/plugin.cpp+2−1 tests/mocks/Unity/CMakeLists.txt+1−3 tests/mocks/Unity/Unity.qmltypes+33−50 tests/mocks/Unity/fake_previewstack.cpp−68 tests/mocks/Unity/fake_previewstack.h−52 tests/mocks/Unity/fake_scope.cpp+7−2 tests/mocks/Unity/fake_scope.h+3−2 tests/mocks/Unity/fake_unity_plugin.cpp+1−2 tests/mocks/Utils/CMakeLists.txt+1 tests/mocks/Utils/plugin.cpp+2 tests/plugins/AccountsService/CMakeLists.txt+5 tests/plugins/AccountsService/PropertiesServer.cpp+16−4 tests/plugins/AccountsService/PropertiesServer.h+2−1 tests/plugins/AccountsService/UscServer.cpp+28 tests/plugins/AccountsService/UscServer.h+39 tests/plugins/AccountsService/client.cpp+63−9 tests/plugins/AccountsService/interfaces.xml+16 tests/plugins/AccountsService/server.cpp+12 tests/plugins/Dash/cardcreator/1.res+4−6 tests/plugins/Dash/cardcreator/1.res.cardcreator+119 tests/plugins/Dash/cardcreator/10.res+3−5 tests/plugins/Dash/cardcreator/10.res.cardcreator+137 tests/plugins/Dash/cardcreator/11.res+5−7 tests/plugins/Dash/cardcreator/11.res.cardcreator+210 tests/plugins/Dash/cardcreator/2.res+3−5 tests/plugins/Dash/cardcreator/2.res.cardcreator+136 tests/plugins/Dash/cardcreator/3.res+3−5 tests/plugins/Dash/cardcreator/3.res.cardcreator+137 tests/plugins/Dash/cardcreator/4.res+3−5 tests/plugins/Dash/cardcreator/4.res.cardcreator+109 tests/plugins/Dash/cardcreator/5.res+5−7 tests/plugins/Dash/cardcreator/5.res.cardcreator+156 tests/plugins/Dash/cardcreator/6.res+2−4 tests/plugins/Dash/cardcreator/6.res.cardcreator+126 tests/plugins/Dash/cardcreator/7.res+3−5 tests/plugins/Dash/cardcreator/7.res.cardcreator+149 tests/plugins/Dash/cardcreator/8.res+3−5 tests/plugins/Dash/cardcreator/8.res.cardcreator+107 tests/plugins/Dash/cardcreator/9.res+4−5 tests/plugins/Dash/cardcreator/9.res.cardcreator+119 tests/plugins/Dash/cardcreatortest.cpp+32−22 tests/plugins/Dash/cardcreatortest.qml+4−4 tests/plugins/IntegratedLightDM/CMakeLists.txt+25 tests/plugins/IntegratedLightDM/integrated.cpp+91 tests/plugins/Utils/CMakeLists.txt+7−1 tests/plugins/Utils/DeviceConfigParserTest.cpp+70 tests/qmltests/CMakeLists.txt+2−1 tests/qmltests/Components/tst_Lockscreen.qml+14−7 tests/qmltests/Dash/Previews/tst_PreviewAudioPlayback.qml+12−3 tests/qmltests/Dash/Previews/tst_PreviewHeader.qml+18−1 tests/qmltests/Dash/Previews/tst_PreviewSharing.qml+17−3 tests/qmltests/Dash/tst_CardTool.qml+4−4 tests/qmltests/Dash/tst_Dash.qml+89 tests/qmltests/Dash/tst_GenericScopeView.qml−28 tests/qmltests/Dash/tst_PreviewListView.qml → tests/qmltests/Dash/tst_PreviewView.qml+23−16 tests/qmltests/Greeter/tst_NarrowView.qml+9 tests/qmltests/Launcher/tst_Launcher.qml+13−3 tests/qmltests/Notifications/tst_OptionToggle.qml+1−1 tests/qmltests/Notifications/tst_VisualSnapDecisionsQueue.qml+1 tests/qmltests/Panel/Indicators/tst_MenuItemFactory.qml+2−4 tests/qmltests/Panel/tst_IndicatorItem.qml+16−14 tests/qmltests/Panel/tst_Panel.qml+2 tests/qmltests/Stages/tst_DesktopStage.qml+2−1 tests/qmltests/Stages/tst_PhoneStage.qml+19−6 tests/qmltests/Stages/tst_SpreadDelegate.qml+7 tests/qmltests/Stages/tst_TabletStage.qml+19−1 tests/qmltests/Wizard/tst_Wizard.qml+1−1 tests/qmltests/tst_DeviceConfiguration.qml+49 tests/qmltests/tst_DisabledScreenNotice.qml+76−2 tests/qmltests/tst_OrientedShell.qml+1−1 tests/qmltests/tst_Shell.qml+39−25
CMakeLists.txt+1−1
@@ -131,7 +131,7 @@ if(NOT QUIET_LOGGER)
131131 set(STDOUT_LOGGER "-o" "-,txt")
132132endif()
133133
134−execute_process(COMMAND arch OUTPUT_VARIABLE ARCH)
134+execute_process(COMMAND dpkg-architecture -qDEB_HOST_ARCH OUTPUT_VARIABLE ARCH)
135135if (NOT ARCH MATCHES "arm*")
136136 set(ENABLE_TOUCH_EMULATION true)
137137 add_definitions(-DUNITY8_ENABLE_TOUCH_EMULATION)
cmake/modules/QmlTest.cmake+1−1
@@ -183,7 +183,7 @@ function(add_manual_test COMPONENT_NAME TARGET)
183183 cmake_parse_arguments(QMLTEST "${QMLTEST_OPTIONS}" "${QMLTEST_SINGLE}" "${QMLTEST_MULTI}" ${ARGN})
184184 mangle_arguments()
185185
186− bake_arguments("${QMLTEST_ARG_PREFIX}" args -qmljsdebugger=port:3768)
186+ bake_arguments("${QMLTEST_ARG_PREFIX}" args -qmljsdebugger=port:3768,3800)
187187
188188 set(qmltry_command
189189 $<TARGET_FILE:${TARGET}>
data/unity8-dash.conf+1
@@ -14,6 +14,7 @@ kill timeout 120
1414oom score 50
1515
1616respawn
17+respawn limit unlimited
1718
1819env APP_ID=unity8-dash
1920
debian/changelog+155
@@ -1,3 +1,158 @@
1+unity8 (8.11+16.04.20160310.4-0ubuntu1) xenial; urgency=medium
2+
3+ [ Albert Astals Cid ]
4+ * Add context for Re-dock as asked by translators (LP: #1534608)
5+ * Add emblem to the preview header widget (LP: #1424720)
6+ * Add haptics to ScopesListCategoryItem buttons
7+ * Audio Cards: Make some of the image loading async (LP: #1533432)
8+ * Do not create fallback code for the card tool fake card (LP:
9+ #1545865)
10+ * Fix resizing the dash bringing temp scopes size out of sync (LP:
11+ #1543130)
12+ * Minor fixes for unity-scope-tool
13+ * Resolve title alignment on card creator time instead of on runtime
14+ * Use fixedHeaderHeight only in the non cardtool cards
15+ * Use the new undeprecated connectivityqt::Connectivity
16+ * asynchronous is only false on the fake card in cardtool
17+ * clazy fixes
18+
19+ [ Albert Astals Cid, CI Train Bot ]
20+ * click scope: Add the else branch so we reset the card size in all
21+ situations
22+
23+ [ Andrea Cimitan ]
24+ * PreviewSharing widget now accepts both string and array of
25+ widgetData["share-data"]["uri"] (LP: #1549056)
26+ * Update AP tests for new single preview
27+ * Use Text.Wrap for body notification text (LP: #1544909)
28+
29+ [ Andrea Cimitan, Lukáš Tinkl, Michael Zanetti, Nick Dedekind ]
30+ * some fixes for the new palette (LP: #1554616)
31+
32+ [ CI Train Bot ]
33+ * Resync trunk.
34+ * Update translation template
35+
36+ [ CI Train Bot, Daniel d'Andrada ]
37+ * Ensure the QML engine doesn't delete our mock MirSurfaces on its
38+ own.
39+
40+ [ Daniel d'Andrada ]
41+ * tst_Shell: Remove unused qml items
42+
43+ [ Josh Arenson ]
44+ * Allow the shell to blacklist input devices and force the OSK shown.
45+ (LP: #1542224)
46+
47+ [ Lukáš Tinkl ]
48+ * Disallow resizing windows up, past the Panel (LP: #1544766)
49+ * Elide the window title not to let it overflow into the indicators
50+ area (LP: #1535767)
51+ * Enable the PIN lockscreen to be used with a HW keyboard (LP:
52+ #1550359)
53+ * Fix tiny windows when switching stages
54+ * Provide a range of ports to QML JS Debugger
55+ * Watch for launcher item icon changes (LP: #1543290)
56+
57+ [ Michael Terry ]
58+ * Proxy more mouse and touchpad properties to USC (LP: #1540398) (LP:
59+ #1543344, #1540398)
60+ * Refactor the AccountsService plugin and make it slightly faster.
61+ * To let the user log in if a mouse is connected, hide the greeter
62+ cover page on a mouse click (but NOT a touch click). (LP: #1540497)
63+ * Watch AccountsService for changes to the user's real name. This was
64+ preventing us from noticing when the user set their name in the
65+ welcome wizard.
66+
67+ [ Michael Zanetti ]
68+ * Allow alt+tabbing in staged mode too (LP: #1540502)
69+ * Allow invoking the staged mode spreads by mouse right edge pushes
70+ too (LP: #1540392)
71+ * Allow loading the device configuration from an external file
72+ * Implement Launcher's keyboard navigation and updated pip design
73+ * Make launcher scalable, allow it locking (LP: #1511015)
74+ * Properly parent launcher items in all cases (LP: #1495732)
75+ * Read inputMethod surface from the new property int QtMir (LP:
76+ #1545286)
77+ * Some visual updates and rotation lock for the virtual touchpad (LP:
78+ #1549087)
79+ * Visual updates for the windowed spread (LP: #1488148)
80+ * stabilize swipeAwayGreeter()
81+
82+ [ Michał Sawicz ]
83+ * Add udev rules to make sure we have access to uinput
84+ * Make dash respawn indefinitely (LP: #1550056)
85+ * Use dpkg-architecture, not arch, to disable touch emulation
86+
87+ [ Vesa Rautiainen ]
88+ * Fixing the vertical position of desktop spread item icon.
89+
90+ -- Michał Sawicz <michal.sawicz@canonical.com> Thu, 10 Mar 2016 22:44:16 +0000
91+
92+unity8 (8.11+16.04.20160308-0ubuntu1) xenial; urgency=medium
93+
94+ [ Albert Astals Cid ]
95+ * Make these tests pass with the new SDK
96+
97+ [ Andrea Cimitan, Nick Dedekind ]
98+ * replace selected.backgroundText with normal.backgroundText in
99+ Splash, Notifications, Wizard
100+
101+ [ CI Train Bot ]
102+ * Update translation template
103+
104+ [ Michał Sawicz, Nick Dedekind ]
105+ * Fixed colours palette value set. Moved ModemItem to USC.
106+
107+ [ Michał Sawicz, Tim Peeters ]
108+ * Update headers for Dash and Splash to work properly with the new UI
109+ toolkit release.
110+
111+ [ Zoltán Balogh, Zsombor Egri ]
112+ * Use SuruDark theme instead of the deprecated SuruGradient.
113+
114+ -- Zoltan Balogh <zoltan.balogh@canonical.com> Tue, 08 Mar 2016 20:59:34 +0000
115+
116+unity8 (8.11+16.04.20160307-0ubuntu1) xenial; urgency=medium
117+
118+ [ CI Train Bot ]
119+ * Resync trunk.
120+ * Update translation template
121+
122+ [ Rodney Dawes ]
123+ * Re-enable the purchaseCancelled signal.
124+
125+ -- Rodney Dawes <ci-train-bot@canonical.com> Mon, 07 Mar 2016 14:12:08 +0000
126+
127+unity8 (8.11+16.04.20160301-0ubuntu1) xenial; urgency=medium
128+
129+ [ Albert Astals Cid ]
130+ * Hook the new scope.activationInProgress property (LP: #1537132)
131+
132+ [ Andrea Cimitan ]
133+ * Updated the Preview view to use a single PreviewModel instead old
134+ PreviewStack, using a Loader instead ListView (LP: #1541967)
135+
136+ [ CI Train Bot ]
137+ * Resync trunk.
138+ * Update translation template
139+
140+ [ Michał Sawicz ]
141+ * Add autopilot as DEP-8 tests added: debian/tests/autopilot.sh
142+
143+ -- Pawel Stolowski <ci-train-bot@canonical.com> Tue, 01 Mar 2016 10:28:52 +0000
144+
145+unity8 (8.11+16.04.20160216.1-0ubuntu1) xenial; urgency=medium
146+
147+ [ Albert Astals Cid ]
148+ * Make the audio previews create a playlist (LP: #1540477)
149+
150+ [ CI Train Bot ]
151+ * Resync trunk. added: po/aa.po
152+ * Update translation template
153+
154+ -- Pawel Stolowski <ci-train-bot@canonical.com> Tue, 16 Feb 2016 03:24:46 +0000
155+
1156unity8 (8.11+16.04.20160212-0ubuntu1) xenial; urgency=medium
2157
3158 [ Albert Astals Cid ]
debian/control+11−10
@@ -13,7 +13,7 @@ Build-Depends: cmake,
1313 libandroid-properties-dev,
1414 graphviz,
1515 gsettings-ubuntu-schemas (>= 0.0.2+14.10.20140815),
16− libconnectivity-qt1-dev,
16+ libconnectivity-qt1-dev (>= 0.7.1),
1717 libevdev-dev,
1818 libgl1-mesa-dev[!armhf] | libgl-dev[!armhf],
1919 libgl1-mesa-dri,
@@ -29,7 +29,7 @@ Build-Depends: cmake,
2929 libqt5xmlpatterns5-dev,
3030 libsystemsettings-dev,
3131 libudev-dev,
32− libunity-api-dev (>= 7.106),
32+ libunity-api-dev (>= 7.107),
3333 libusermetricsoutput1-dev,
3434# Need those X11 libs touch emulation from mouse events in manual QML tests on a X11 desktop
3535 libx11-dev[!armhf],
@@ -54,8 +54,8 @@ Build-Depends: cmake,
5454 qtdeclarative5-private-dev (>= 5.4),
5555 qtdeclarative5-qtmultimedia-plugin (>= 5.4.1-1ubuntu19~overlay2),
5656 qtdeclarative5-ubuntu-content1,
57− qtdeclarative5-ubuntu-settings-components (>= 0.6),
58− qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.3.1676) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.3.1676),
57+ qtdeclarative5-ubuntu-settings-components (>= 0.7),
58+ qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.3.1845) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.3.1845),
5959 qtdeclarative5-ubuntu-web-plugin,
6060 ttf-ubuntu-font-family,
6161Standards-Version: 3.9.4
@@ -70,7 +70,7 @@ X-Ubuntu-Use-Langpack: yes
7070Package: indicators-client
7171Architecture: amd64 armhf i386
7272Depends: qmenumodel-qml (>= 0.2.9),
73− qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.3.1627) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.3.1627),
73+ qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.3.1845) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.3.1845),
7474 unity8 (= ${binary:Version}),
7575 ${misc:Depends},
7676 ${shlibs:Depends},
@@ -101,7 +101,6 @@ Depends: dmz-cursor-theme,
101101 qml-module-qt-labs-folderlistmodel,
102102 qml-module-qtquick-xmllistmodel,
103103 qml-module-qtsysteminfo,
104− qtdeclarative5-gsettings1.0,
105104 qtdeclarative5-qtmir-plugin (>= 0.4.5),
106105 qtdeclarative5-ubuntu-telephony0.1,
107106 qtdeclarative5-ubuntu-web-plugin,
@@ -126,15 +125,15 @@ Description: Unity 8 shell
126125Package: unity8-common
127126Architecture: all
128127Depends: qml-module-qtquick-layouts,
129− qtdeclarative5-ubuntu-settings-components (>= 0.6),
128+ qtdeclarative5-ubuntu-settings-components (>= 0.7),
130129 qtdeclarative5-ubuntu-thumbnailer0.1 | ubuntu-thumbnailer-impl,
131− qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.3.1627) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.3.1627),
130+ qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.3.1845) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.3.1845),
132131 qtdeclarative5-unity-notifications-plugin (>= 0.1.2) | unity-notifications-impl,
133132 ubuntu-thumbnailer-impl-0,
134133 unity-application-impl-13,
135134 unity-notifications-impl-3,
136135 unity-plugin-scopes | unity-scopes-impl,
137− unity-scopes-impl-9,
136+ unity-scopes-impl-10,
138137 unity8-fake-env | unity-application-impl,
139138 ${misc:Depends},
140139Breaks: unity8 (<< 7.86),
@@ -158,7 +157,7 @@ Depends: autopilot-qt5 (>= 1.4),
158157 python3-fixtures,
159158 python3-gi,
160159 qttestability-autopilot (>= 1.4),
161− ubuntu-ui-toolkit-autopilot (>= 1.2.1485+15.04.20150417.1-0ubuntu1),
160+ ubuntu-ui-toolkit-autopilot (>= 1.3.1845),
162161 unity-scope-click,
163162 unity8 (= ${source:Version}),
164163 unity8-fake-env (= ${source:Version}),
@@ -192,6 +191,8 @@ Depends: accountsservice-ubuntu-schemas (>= 0.0.5),
192191 libhardware2,
193192 pay-service,
194193 unity-schemas (>= 7.3.1+14.10.20140915),
194+ qtdeclarative5-gsettings1.0,
195+ qml-module-qtmultimedia,
195196 ${misc:Depends},
196197 ${shlibs:Depends},
197198Provides: unity-launcher-impl,
debian/tests/autopilot.shnew file+13
@@ -0,0 +1,13 @@
1+#!/bin/sh
2+
3+# log all commands and abort on error
4+set -xe
5+
6+if [ ! -f /system/build.prop ]; then
7+ echo "WARNING: Skipping autopilot test, will only run on devices at the moment."
8+ exit 0
9+fi
10+
11+initctl --session stop unity8
12+autopilot3 run --verbose --format xml --output "${ADT_ARTIFACTS}/unity8.xml" unity8
13+initctl --session start unity8
debian/tests/control+5
@@ -3,3 +3,8 @@ Restrictions: allow-stderr
33Depends: @,
44 @builddeps@,
55 xvfb,
6+
7+Tests: autopilot.sh
8+Restrictions: allow-stderr,
9+ isolation-machine,
10+Depends: unity8-autopilot,
debian/unity8-common.udevnew file+2
@@ -0,0 +1,2 @@
1+# Make local foreground session able to inject input
2+KERNEL=="uinput", SUBSYSTEM=="misc", TAG+="uaccess"
debian/unity8-doc.install+1
@@ -1 +1,2 @@
1+doc/devices.conf usr/share/doc/unity8/
12usr/share/doc/unity8/*
doc/devices.confnew file+30
@@ -0,0 +1,30 @@
1+# This file can hold multiple device configs. Devices are separated by sections.
2+#
3+# SupportedOrientations holds a list of all enabled orientations. A standard
4+# phone will usually have Portrait,Landcape,InvertedLandscape in order to
5+# disable upside down usage.
6+#
7+# PrimaryOrientation gives the orientation the device will start up with
8+# when there is no orientations sensor input available (yet) or lock to
9+# when an application specifies to be locked to PrimaryOrientation.
10+#
11+# The other Orientation settings can be used to re-map the orientations.
12+# A device might be used with different orientations than how the screen
13+# is physically mounted on the hardware.
14+#
15+# Category can be phone, tablet, or desktop. This option determines
16+# whether the side stage is shown (tablet) or not (phone). Using
17+# desktop will load the shell in windowed mode. Note that the user
18+# can override/change this by connecting input hardware or change
19+# user settings.
20+#
21+# Any options not listed will default to the values of the example below.
22+
23+[devicename]
24+SupportedOrientations=Portrait,InvertedPortrait,Landscape,InvertedLandscape
25+PrimaryOrientation=PrimaryOrienation
26+PortraitOrientation=Portrait
27+InvertedPortraitOrientation=InvertedPortrait
28+LandscapeOrientation=Landscape
29+InvertedLandscapeOrientation=InvertedLandscape
30+Category=phone
plugins/AccountsService/AccountsService.cpp+189−342
@@ -24,17 +24,52 @@
2424#include <QStringList>
2525#include <QDebug>
2626
27+#define IFACE_ACCOUNTS_USER QStringLiteral("org.freedesktop.Accounts.User")
28+#define IFACE_LOCATION_HERE QStringLiteral("com.ubuntu.location.providers.here.AccountsService")
29+#define IFACE_UBUNTU_INPUT QStringLiteral("com.ubuntu.AccountsService.Input")
30+#define IFACE_UBUNTU_SECURITY QStringLiteral("com.ubuntu.AccountsService.SecurityPrivacy")
31+#define IFACE_UBUNTU_SECURITY_OLD QStringLiteral("com.ubuntu.touch.AccountsService.SecurityPrivacy")
32+#define IFACE_UNITY QStringLiteral("com.canonical.unity.AccountsService")
33+#define IFACE_UNITY_PRIVATE QStringLiteral("com.canonical.unity.AccountsService.Private")
34+
35+#define PROP_BACKGROUND_FILE QStringLiteral("BackgroundFile")
36+#define PROP_DEMO_EDGES QStringLiteral("demo-edges")
37+#define PROP_ENABLE_INDICATORS_WHILE_LOCKED QStringLiteral("EnableIndicatorsWhileLocked")
38+#define PROP_ENABLE_LAUNCHER_WHILE_LOCKED QStringLiteral("EnableLauncherWhileLocked")
39+#define PROP_FAILED_LOGINS QStringLiteral("FailedLogins")
40+#define PROP_LICENSE_ACCEPTED QStringLiteral("LicenseAccepted")
41+#define PROP_LICENSE_BASE_PATH QStringLiteral("LicenseBasePath")
42+#define PROP_MOUSE_CURSOR_SPEED QStringLiteral("MouseCursorSpeed")
43+#define PROP_MOUSE_DOUBLE_CLICK_SPEED QStringLiteral("MouseDoubleClickSpeed")
44+#define PROP_MOUSE_PRIMARY_BUTTON QStringLiteral("MousePrimaryButton")
45+#define PROP_MOUSE_SCROLL_SPEED QStringLiteral("MouseScrollSpeed")
46+#define PROP_PASSWORD_DISPLAY_HINT QStringLiteral("PasswordDisplayHint")
47+#define PROP_STATS_WELCOME_SCREEN QStringLiteral("StatsWelcomeScreen")
48+#define PROP_TOUCHPAD_CURSOR_SPEED QStringLiteral("TouchpadCursorSpeed")
49+#define PROP_TOUCHPAD_DISABLE_WHILE_TYPING QStringLiteral("TouchpadDisableWhileTyping")
50+#define PROP_TOUCHPAD_DISABLE_WITH_MOUSE QStringLiteral("TouchpadDisableWithMouse")
51+#define PROP_TOUCHPAD_DOUBLE_CLICK_SPEED QStringLiteral("TouchpadDoubleClickSpeed")
52+#define PROP_TOUCHPAD_PRIMARY_BUTTON QStringLiteral("TouchpadPrimaryButton")
53+#define PROP_TOUCHPAD_SCROLL_SPEED QStringLiteral("TouchpadScrollSpeed")
54+#define PROP_TOUCHPAD_TAP_TO_CLICK QStringLiteral("TouchpadTapToClick")
55+#define PROP_TOUCHPAD_TWO_FINGER_SCROLL QStringLiteral("TouchpadTwoFingerScroll")
56+
57+
58+QVariant primaryButtonConverter(const QVariant &value)
59+{
60+ QString stringValue = value.toString();
61+ if (stringValue == "left") {
62+ return QVariant::fromValue(0);
63+ } else if (stringValue == "right") {
64+ return QVariant::fromValue(1); // Mir is less clear on this -- any non-zero value is the same
65+ } else {
66+ return QVariant::fromValue(0); // default to left
67+ }
68+}
69+
2770AccountsService::AccountsService(QObject* parent, const QString &user)
28− : QObject(parent),
29− m_service(new AccountsServiceDBusAdaptor(this)),
30− m_demoEdges(false),
31− m_enableLauncherWhileLocked(false),
32− m_enableIndicatorsWhileLocked(false),
33− m_statsWelcomeScreen(false),
34− m_passwordDisplayHint(Keyboard),
35− m_failedLogins(0),
36− m_hereEnabled(false),
37− m_hereLicensePath() // null means not set yet
71+ : QObject(parent)
72+ , m_service(new AccountsServiceDBusAdaptor(this))
3873{
3974 m_unityInput = new QDBusInterface(QStringLiteral("com.canonical.Unity.Input"),
4075 QStringLiteral("/com/canonical/Unity/Input"),
@@ -44,6 +79,43 @@ AccountsService::AccountsService(QObject* parent, const QString &user)
4479 connect(m_service, &AccountsServiceDBusAdaptor::propertiesChanged, this, &AccountsService::onPropertiesChanged);
4580 connect(m_service, &AccountsServiceDBusAdaptor::maybeChanged, this, &AccountsService::onMaybeChanged);
4681
82+ registerProperty(IFACE_ACCOUNTS_USER, PROP_BACKGROUND_FILE, QStringLiteral("backgroundFileChanged"));
83+ registerProperty(IFACE_LOCATION_HERE, PROP_LICENSE_ACCEPTED, QStringLiteral("hereEnabledChanged"));
84+ registerProperty(IFACE_LOCATION_HERE, PROP_LICENSE_BASE_PATH, QStringLiteral("hereLicensePathChanged"));
85+ registerProperty(IFACE_UBUNTU_SECURITY, PROP_ENABLE_LAUNCHER_WHILE_LOCKED, QStringLiteral("enableLauncherWhileLockedChanged"));
86+ registerProperty(IFACE_UBUNTU_SECURITY, PROP_ENABLE_INDICATORS_WHILE_LOCKED, QStringLiteral("enableIndicatorsWhileLockedChanged"));
87+ registerProperty(IFACE_UBUNTU_SECURITY, PROP_PASSWORD_DISPLAY_HINT, QStringLiteral("passwordDisplayHintChanged"));
88+ registerProperty(IFACE_UBUNTU_SECURITY_OLD, PROP_STATS_WELCOME_SCREEN, QStringLiteral("statsWelcomeScreenChanged"));
89+ registerProperty(IFACE_UNITY, PROP_DEMO_EDGES, QStringLiteral("demoEdgesChanged"));
90+ registerProperty(IFACE_UNITY_PRIVATE, PROP_FAILED_LOGINS, QStringLiteral("failedLoginsChanged"));
91+
92+ registerProxy(IFACE_UBUNTU_INPUT, PROP_MOUSE_CURSOR_SPEED,
93+ m_unityInput, QStringLiteral("setMouseCursorSpeed"));
94+ registerProxy(IFACE_UBUNTU_INPUT, PROP_MOUSE_DOUBLE_CLICK_SPEED,
95+ m_unityInput, QStringLiteral("setMouseDoubleClickSpeed"));
96+ registerProxy(IFACE_UBUNTU_INPUT, PROP_MOUSE_PRIMARY_BUTTON,
97+ m_unityInput, QStringLiteral("setMousePrimaryButton"),
98+ primaryButtonConverter);
99+ registerProxy(IFACE_UBUNTU_INPUT, PROP_MOUSE_SCROLL_SPEED,
100+ m_unityInput, QStringLiteral("setMouseScrollSpeed"));
101+ registerProxy(IFACE_UBUNTU_INPUT, PROP_TOUCHPAD_CURSOR_SPEED,
102+ m_unityInput, QStringLiteral("setTouchpadCursorSpeed"));
103+ registerProxy(IFACE_UBUNTU_INPUT, PROP_TOUCHPAD_SCROLL_SPEED,
104+ m_unityInput, QStringLiteral("setTouchpadScrollSpeed"));
105+ registerProxy(IFACE_UBUNTU_INPUT, PROP_TOUCHPAD_DISABLE_WHILE_TYPING,
106+ m_unityInput, QStringLiteral("setTouchpadDisableWhileTyping"));
107+ registerProxy(IFACE_UBUNTU_INPUT, PROP_TOUCHPAD_DISABLE_WITH_MOUSE,
108+ m_unityInput, QStringLiteral("setTouchpadDisableWithMouse"));
109+ registerProxy(IFACE_UBUNTU_INPUT, PROP_TOUCHPAD_DOUBLE_CLICK_SPEED,
110+ m_unityInput, QStringLiteral("setTouchpadDoubleClickSpeed"));
111+ registerProxy(IFACE_UBUNTU_INPUT, PROP_TOUCHPAD_PRIMARY_BUTTON,
112+ m_unityInput, QStringLiteral("setTouchpadPrimaryButton"),
113+ primaryButtonConverter);
114+ registerProxy(IFACE_UBUNTU_INPUT, PROP_TOUCHPAD_TAP_TO_CLICK,
115+ m_unityInput, QStringLiteral("setTouchpadTapToClick"));
116+ registerProxy(IFACE_UBUNTU_INPUT, PROP_TOUCHPAD_TWO_FINGER_SCROLL,
117+ m_unityInput, QStringLiteral("setTouchpadTwoFingerScroll"));
118+
47119 setUser(!user.isEmpty() ? user : QString::fromUtf8(qgetenv("USER")));
48120}
49121
@@ -57,410 +129,200 @@ void AccountsService::setUser(const QString &user)
57129 if (user.isEmpty() || m_user == user)
58130 return;
59131
132+ bool wasEmpty = m_user.isEmpty();
133+
60134 m_user = user;
61135 Q_EMIT userChanged();
62136
63− updateDemoEdges(false);
64− updateEnableLauncherWhileLocked(false);
65− updateEnableIndicatorsWhileLocked(false);
66− updateBackgroundFile(false);
67− updateMouseCursorSpeed();
68− updateTouchpadCursorSpeed();
69− updateStatsWelcomeScreen(false);
70− updatePasswordDisplayHint(false);
71− updateFailedLogins(false);
72− updateHereEnabled(false);
73− updateHereLicensePath(false);
137+ // Do the first update synchronously, as a cheap way to block rendering
138+ // until we have the right values on bootup.
139+ refresh(!wasEmpty);
74140}
75141
76142bool AccountsService::demoEdges() const
77143{
78− return m_demoEdges;
144+ auto value = getProperty(IFACE_UNITY, PROP_DEMO_EDGES);
145+ return value.toBool();
79146}
80147
81148void AccountsService::setDemoEdges(bool demoEdges)
82149{
83− if (m_demoEdges != demoEdges) {
84− m_demoEdges = demoEdges;
85− m_service->setUserPropertyAsync(m_user, QStringLiteral("com.canonical.unity.AccountsService"), QStringLiteral("demo-edges"), demoEdges);
86−
87− Q_EMIT demoEdgesChanged();
88− }
150+ setProperty(IFACE_UNITY, PROP_DEMO_EDGES, demoEdges);
89151}
90152
91153bool AccountsService::enableLauncherWhileLocked() const
92154{
93− return m_enableLauncherWhileLocked;
155+ auto value = getProperty(IFACE_UBUNTU_SECURITY, PROP_ENABLE_LAUNCHER_WHILE_LOCKED);
156+ return value.toBool();
94157}
95158
96159bool AccountsService::enableIndicatorsWhileLocked() const
97160{
98− return m_enableIndicatorsWhileLocked;
161+ auto value = getProperty(IFACE_UBUNTU_SECURITY, PROP_ENABLE_INDICATORS_WHILE_LOCKED);
162+ return value.toBool();
99163}
100164
101165QString AccountsService::backgroundFile() const
102166{
103− return m_backgroundFile;
167+ auto value = getProperty(IFACE_ACCOUNTS_USER, PROP_BACKGROUND_FILE);
168+ return value.toString();
104169}
105170
106171bool AccountsService::statsWelcomeScreen() const
107172{
108− return m_statsWelcomeScreen;
173+ auto value = getProperty(IFACE_UBUNTU_SECURITY_OLD, PROP_STATS_WELCOME_SCREEN);
174+ return value.toBool();
109175}
110176
111177AccountsService::PasswordDisplayHint AccountsService::passwordDisplayHint() const
112178{
113− return m_passwordDisplayHint;
179+ auto value = getProperty(IFACE_UBUNTU_SECURITY, PROP_PASSWORD_DISPLAY_HINT);
180+ return (PasswordDisplayHint)value.toInt();
114181}
115182
116183bool AccountsService::hereEnabled() const
117184{
118− return m_hereEnabled;
185+ auto value = getProperty(IFACE_LOCATION_HERE, PROP_LICENSE_ACCEPTED);
186+ return value.toBool();
119187}
120188
121189void AccountsService::setHereEnabled(bool enabled)
122190{
123− if (m_hereEnabled != enabled) {
124− m_hereEnabled = enabled;
125− m_service->setUserPropertyAsync(m_user, QStringLiteral("com.ubuntu.location.providers.here.AccountsService"), QStringLiteral("LicenseAccepted"), enabled);
126−
127− Q_EMIT hereEnabledChanged();
128− }
191+ setProperty(IFACE_LOCATION_HERE, PROP_LICENSE_ACCEPTED, enabled);
129192}
130193
131194QString AccountsService::hereLicensePath() const
132195{
133− return m_hereLicensePath;
196+ auto value = getProperty(IFACE_LOCATION_HERE, PROP_LICENSE_BASE_PATH);
197+ QString hereLicensePath = value.toString();
198+ if (hereLicensePath.isEmpty() || !QFile::exists(hereLicensePath))
199+ hereLicensePath = QStringLiteral("");
200+ return hereLicensePath;
134201}
135202
136203bool AccountsService::hereLicensePathValid() const
137204{
138− return !m_hereLicensePath.isNull();
139−}
140−
141−void AccountsService::updateDemoEdges(bool async)
142−{
143− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
144− QStringLiteral("com.canonical.unity.AccountsService"),
145− QStringLiteral("demo-edges"));
146− QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
147−
148− connect(watcher, &QDBusPendingCallWatcher::finished,
149− this, [this](QDBusPendingCallWatcher* watcher) {
150−
151− QDBusPendingReply<QDBusVariant> reply = *watcher;
152− watcher->deleteLater();
153− if (reply.isError()) {
154− qWarning() << "Failed to get 'demo-edges' property - " << reply.error().message();
155− return;
156− }
157−
158− auto demoEdges = reply.value().variant().toBool();
159− if (m_demoEdges != demoEdges) {
160− m_demoEdges = demoEdges;
161− Q_EMIT demoEdgesChanged();
162− }
163− });
164− if (!async) {
165− watcher->waitForFinished();
166− delete watcher;
167− }
205+ auto value = getProperty(IFACE_LOCATION_HERE, PROP_LICENSE_BASE_PATH);
206+ return !value.toString().isNull();
168207}
169208
170−void AccountsService::updateEnableLauncherWhileLocked(bool async)
209+uint AccountsService::failedLogins() const
171210{
172− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
173− QStringLiteral("com.ubuntu.AccountsService.SecurityPrivacy"),
174− QStringLiteral("EnableLauncherWhileLocked"));
175− QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
176−
177− connect(watcher, &QDBusPendingCallWatcher::finished,
178− this, [this](QDBusPendingCallWatcher* watcher) {
179−
180− QDBusPendingReply<QVariant> reply = *watcher;
181− watcher->deleteLater();
182− if (reply.isError()) {
183− qWarning() << "Failed to get 'EnableLauncherWhileLocked' property - " << reply.error().message();
184− return;
185− }
186−
187− const bool enableLauncherWhileLocked = reply.value().toBool();
188− if (m_enableLauncherWhileLocked != enableLauncherWhileLocked) {
189− m_enableLauncherWhileLocked = enableLauncherWhileLocked;
190− Q_EMIT enableLauncherWhileLockedChanged();
191− }
192− });
193− if (!async) {
194− watcher->waitForFinished();
195− delete watcher;
196− }
211+ return getProperty(IFACE_UNITY_PRIVATE, PROP_FAILED_LOGINS).toUInt();
197212}
198213
199−void AccountsService::updateEnableIndicatorsWhileLocked(bool async)
214+void AccountsService::setFailedLogins(uint failedLogins)
200215{
201− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
202− QStringLiteral("com.ubuntu.AccountsService.SecurityPrivacy"),
203− QStringLiteral("EnableIndicatorsWhileLocked"));
204− QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
205−
206− connect(watcher, &QDBusPendingCallWatcher::finished,
207− this, [this](QDBusPendingCallWatcher* watcher) {
208−
209− QDBusPendingReply<QVariant> reply = *watcher;
210− watcher->deleteLater();
211− if (reply.isError()) {
212− qWarning() << "Failed to get 'EnableIndicatorsWhileLocked' property - " << reply.error().message();
213− return;
214− }
215−
216− const bool enableIndicatorsWhileLocked = reply.value().toBool();
217− if (m_enableIndicatorsWhileLocked != enableIndicatorsWhileLocked) {
218− m_enableIndicatorsWhileLocked = enableIndicatorsWhileLocked;
219− Q_EMIT enableIndicatorsWhileLockedChanged();
220− }
221− });
222− if (!async) {
223− watcher->waitForFinished();
224− delete watcher;
225− }
216+ setProperty(IFACE_UNITY_PRIVATE, PROP_FAILED_LOGINS, failedLogins);
226217}
227218
228−void AccountsService::updateBackgroundFile(bool async)
229−{
230− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
231− QStringLiteral("org.freedesktop.Accounts.User"),
232− QStringLiteral("BackgroundFile"));
233− QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
234−
235− connect(watcher, &QDBusPendingCallWatcher::finished,
236− this, [this](QDBusPendingCallWatcher* watcher) {
237−
238− QDBusPendingReply<QVariant> reply = *watcher;
239− watcher->deleteLater();
240− if (reply.isError()) {
241− qWarning() << "Failed to get 'BackgroundFile' property - " << reply.error().message();
242− return;
243− }
244−
245− const QString backgroundFile = reply.value().toString();
246− if (m_backgroundFile != backgroundFile) {
247− m_backgroundFile = backgroundFile;
248− Q_EMIT backgroundFileChanged();
249− }
250− });
251− if (!async) {
252− watcher->waitForFinished();
253− delete watcher;
254− }
255−}
219+// ====================================================
220+// Everything below this line is generic helper methods
221+// ====================================================
256222
257−void AccountsService::updateMouseCursorSpeed()
223+void AccountsService::emitChangedForProperty(const QString &interface, const QString &property)
258224{
259− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
260− QStringLiteral("com.ubuntu.AccountsService.Input"),
261− QStringLiteral("MouseCursorSpeed"));
262− QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
263−
264− connect(watcher, &QDBusPendingCallWatcher::finished,
265− this, [this](QDBusPendingCallWatcher* watcher) {
266−
267− QDBusPendingReply<QVariant> reply = *watcher;
268− watcher->deleteLater();
269− if (reply.isError()) {
270− qWarning() << "Failed to get 'MouseCursorSpeed' property - " << reply.error().message();
271− return;
272− }
273−
274− // Merely proxy this along to USC. We don't care about keeping a copy
275− // or exporting it internally.
276− m_unityInput->asyncCall(QStringLiteral("setMouseCursorSpeed"), reply.value());
277− });
225+ QString signalName = m_properties[interface][property].signal;
226+ QMetaObject::invokeMethod(this, signalName.toUtf8().data());
278227}
279228
280−void AccountsService::updateTouchpadCursorSpeed()
229+QVariant AccountsService::getProperty(const QString &interface, const QString &property) const
281230{
282− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
283− QStringLiteral("com.ubuntu.AccountsService.Input"),
284− QStringLiteral("TouchpadCursorSpeed"));
285− QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
286−
287− connect(watcher, &QDBusPendingCallWatcher::finished,
288− this, [this](QDBusPendingCallWatcher* watcher) {
289−
290− QDBusPendingReply<QVariant> reply = *watcher;
291− watcher->deleteLater();
292− if (reply.isError()) {
293− qWarning() << "Failed to get 'TouchpadCursorSpeed' property - " << reply.error().message();
294− return;
295− }
296−
297− // Merely proxy this along to USC. We don't care about keeping a copy
298− // or exporting it internally.
299− m_unityInput->asyncCall(QStringLiteral("setTouchpadCursorSpeed"), reply.value());
300− });
231+ return m_properties[interface][property].value;
301232}
302233
303−void AccountsService::updateStatsWelcomeScreen(bool async)
234+void AccountsService::setProperty(const QString &interface, const QString &property, const QVariant &value)
304235{
305− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
306− QStringLiteral("com.ubuntu.touch.AccountsService.SecurityPrivacy"),
307− QStringLiteral("StatsWelcomeScreen"));
308− QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
309−
310− connect(watcher, &QDBusPendingCallWatcher::finished,
311− this, [this](QDBusPendingCallWatcher* watcher) {
312−
313− QDBusPendingReply<QVariant> reply = *watcher;
314− watcher->deleteLater();
315− if (reply.isError()) {
316− qWarning() << "Failed to get 'StatsWelcomeScreen' property - " << reply.error().message();
317− return;
318− }
319−
320− const bool statsWelcomeScreen = reply.value().toBool();
321− if (m_statsWelcomeScreen != statsWelcomeScreen) {
322− m_statsWelcomeScreen = statsWelcomeScreen;
323− Q_EMIT statsWelcomeScreenChanged();
324− }
325− });
326− if (!async) {
327− watcher->waitForFinished();
328− delete watcher;
236+ if (m_properties[interface][property].value != value) {
237+ m_properties[interface][property].value = value;
238+ m_service->setUserPropertyAsync(m_user, interface, property, value);
239+ emitChangedForProperty(interface, property);
329240 }
330241}
331242
332−void AccountsService::updatePasswordDisplayHint(bool async)
243+void AccountsService::updateCache(const QString &interface, const QString &property, const QVariant &value)
333244{
334− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
335− QStringLiteral("com.ubuntu.AccountsService.SecurityPrivacy"),
336− QStringLiteral("PasswordDisplayHint"));
337− QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
338−
339− connect(watcher, &QDBusPendingCallWatcher::finished,
340− this, [this](QDBusPendingCallWatcher* watcher) {
341−
342− QDBusPendingReply<QVariant> reply = *watcher;
343− watcher->deleteLater();
344− if (reply.isError()) {
345− qWarning() << "Failed to get 'PasswordDisplayHint' property - " << reply.error().message();
346− return;
347− }
348−
349− const PasswordDisplayHint passwordDisplayHint = (PasswordDisplayHint)reply.value().toInt();
350− if (m_passwordDisplayHint != passwordDisplayHint) {
351− m_passwordDisplayHint = passwordDisplayHint;
352− Q_EMIT passwordDisplayHintChanged();
245+ PropertyInfo &info = m_properties[interface][property];
246+
247+ if (info.proxyInterface) {
248+ QVariant finalValue;
249+ if (info.proxyConverter) {
250+ finalValue = info.proxyConverter(value);
251+ } else {
252+ finalValue = value;
353253 }
354− });
355− if (!async) {
356− watcher->waitForFinished();
357− delete watcher;
254+ info.proxyInterface->asyncCall(info.proxyMethod, finalValue);
255+ return; // don't bother saving a copy
358256 }
359−}
360−
361−void AccountsService::updateFailedLogins(bool async)
362−{
363− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
364− QStringLiteral("com.canonical.unity.AccountsService.Private"),
365− QStringLiteral("FailedLogins"));
366− QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
367−
368− connect(watcher, &QDBusPendingCallWatcher::finished,
369− this, [this](QDBusPendingCallWatcher* watcher) {
370−
371− QDBusPendingReply<QVariant> reply = *watcher;
372− watcher->deleteLater();
373− if (reply.isError()) {
374− qWarning() << "Failed to get 'FailedLogins' property - " << reply.error().message();
375− return;
376− }
377257
378− const uint failedLogins = reply.value().toUInt();
379− if (m_failedLogins != failedLogins) {
380− m_failedLogins = failedLogins;
381− Q_EMIT failedLoginsChanged();
382− }
383− });
384− if (!async) {
385− watcher->waitForFinished();
386− delete watcher;
258+ if (info.value != value) {
259+ info.value = value;
260+ emitChangedForProperty(interface, property);
387261 }
388262}
389263
390−void AccountsService::updateHereEnabled(bool async)
264+void AccountsService::updateProperty(const QString &interface, const QString &property)
391265{
392266 QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
393− QStringLiteral("com.ubuntu.location.providers.here.AccountsService"),
394− QStringLiteral("LicenseAccepted"));
267+ interface,
268+ property);
395269 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
396270
397271 connect(watcher, &QDBusPendingCallWatcher::finished,
398− this, [this](QDBusPendingCallWatcher* watcher) {
272+ this, [this, interface, property](QDBusPendingCallWatcher* watcher) {
399273
400274 QDBusPendingReply<QVariant> reply = *watcher;
401275 watcher->deleteLater();
402276 if (reply.isError()) {
403− qWarning() << "Failed to get 'LicenseAccepted' property - " << reply.error().message();
277+ qWarning() << "Failed to get '" << property << "' property:" << reply.error().message();
404278 return;
405279 }
406280
407− const bool hereEnabled = reply.value().toBool();
408− if (m_hereEnabled != hereEnabled) {
409− m_hereEnabled = hereEnabled;
410− Q_EMIT hereEnabledChanged();
411− }
281+ updateCache(interface, property, reply.value());
412282 });
413− if (!async) {
414− watcher->waitForFinished();
415− delete watcher;
416− }
417283}
418284
419−void AccountsService::updateHereLicensePath(bool async)
285+void AccountsService::updateAllProperties(const QString &interface, bool async)
420286{
421− QDBusPendingCall pendingReply = m_service->getUserPropertyAsync(m_user,
422− QStringLiteral("com.ubuntu.location.providers.here.AccountsService"),
423− QStringLiteral("LicenseBasePath"));
287+ QDBusPendingCall pendingReply = m_service->getAllPropertiesAsync(m_user,
288+ interface);
424289 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingReply, this);
425290
426291 connect(watcher, &QDBusPendingCallWatcher::finished,
427− this, [this](QDBusPendingCallWatcher* watcher) {
292+ this, [this, interface](QDBusPendingCallWatcher* watcher) {
428293
429− QDBusPendingReply<QVariant> reply = *watcher;
294+ QDBusPendingReply< QHash<QString, QVariant> > reply = *watcher;
430295 watcher->deleteLater();
431296 if (reply.isError()) {
432− qWarning() << "Failed to get 'LicenseBasePath' property - " << reply.error().message();
297+ qWarning() << "Failed to get all properties for" << interface << ":" << reply.error().message();
433298 return;
434299 }
435300
436− QString hereLicensePath = reply.value().toString();
437− if (hereLicensePath.isEmpty() || !QFile::exists(hereLicensePath))
438− hereLicensePath = QLatin1String("");
439−
440− if (m_hereLicensePath.isNull() || m_hereLicensePath != hereLicensePath) {
441− m_hereLicensePath = hereLicensePath;
442− Q_EMIT hereLicensePathChanged();
301+ auto valueHash = reply.value();
302+ auto i = valueHash.constBegin();
303+ while (i != valueHash.constEnd()) {
304+ updateCache(interface, i.key(), i.value());
305+ ++i;
443306 }
444307 });
445308 if (!async) {
446309 watcher->waitForFinished();
447− delete watcher;
448310 }
449311}
450312
451−uint AccountsService::failedLogins() const
313+void AccountsService::registerProxy(const QString &interface, const QString &property, QDBusInterface *iface, const QString &method, ProxyConverter converter)
452314{
453− return m_failedLogins;
315+ registerProperty(interface, property, nullptr);
316+
317+ m_properties[interface][property].proxyInterface = iface;
318+ m_properties[interface][property].proxyMethod = method;
319+ m_properties[interface][property].proxyConverter = converter;
454320}
455321
456−void AccountsService::setFailedLogins(uint failedLogins)
322+void AccountsService::registerProperty(const QString &interface, const QString &property, const QString &signal)
457323{
458− if (m_failedLogins != failedLogins) {
459− m_failedLogins = failedLogins;
460− m_service->setUserPropertyAsync(m_user, QStringLiteral("com.canonical.unity.AccountsService.Private"), QStringLiteral("FailedLogins"), failedLogins);
461−
462− Q_EMIT failedLoginsChanged();
463− }
324+ m_properties[interface][property] = PropertyInfo();
325+ m_properties[interface][property].signal = signal;
464326}
465327
466328void AccountsService::onPropertiesChanged(const QString &user, const QString &interface, const QStringList &changed)
@@ -469,42 +331,13 @@ void AccountsService::onPropertiesChanged(const QString &user, const QString &in
469331 return;
470332 }
471333
472− if (interface == QLatin1String("com.canonical.unity.AccountsService")) {
473− if (changed.contains(QStringLiteral("demo-edges"))) {
474− updateDemoEdges();
475− }
476− } else if (interface == QLatin1String("com.canonical.unity.AccountsService.Private")) {
477− if (changed.contains(QStringLiteral("FailedLogins"))) {
478− updateFailedLogins();
479− }
480− } else if (interface == QLatin1String("com.ubuntu.AccountsService.Input")) {
481− if (changed.contains(QStringLiteral("MouseCursorSpeed"))) {
482− updateMouseCursorSpeed();
483− }
484− if (changed.contains(QStringLiteral("TouchpadCursorSpeed"))) {
485− updateTouchpadCursorSpeed();
486− }
487− } else if (interface == QLatin1String("com.ubuntu.touch.AccountsService.SecurityPrivacy")) {
488− if (changed.contains(QStringLiteral("StatsWelcomeScreen"))) {
489− updateStatsWelcomeScreen();
490− }
491− } else if (interface == QLatin1String("com.ubuntu.AccountsService.SecurityPrivacy")) {
492− if (changed.contains(QStringLiteral("PasswordDisplayHint"))) {
493− updatePasswordDisplayHint();
494− }
495− if (changed.contains(QStringLiteral("EnableLauncherWhileLocked"))) {
496− updateEnableLauncherWhileLocked();
497− }
498− if (changed.contains(QStringLiteral("EnableIndicatorsWhileLocked"))) {
499− updateEnableIndicatorsWhileLocked();
500− }
501− } else if (interface == QLatin1String("com.ubuntu.location.providers.here.AccountsService")) {
502− if (changed.contains(QStringLiteral("LicenseAccepted"))) {
503− updateHereEnabled();
504− }
505− if (changed.contains(QStringLiteral("LicenseBasePath"))) {
506− updateHereLicensePath();
334+ auto propHash = m_properties.value(interface);
335+ auto i = propHash.constBegin();
336+ while (i != propHash.constEnd()) {
337+ if (changed.contains(i.key())) {
338+ updateProperty(interface, i.key());
507339 }
340+ ++i;
508341 }
509342}
510343
@@ -514,6 +347,20 @@ void AccountsService::onMaybeChanged(const QString &user)
514347 return;
515348 }
516349
517− // Standard properties might have changed
518− updateBackgroundFile();
350+ // Any of the standard properties might have changed!
351+ auto propHash = m_properties.value(IFACE_ACCOUNTS_USER);
352+ auto i = propHash.constBegin();
353+ while (i != propHash.constEnd()) {
354+ updateProperty(IFACE_ACCOUNTS_USER, i.key());
355+ ++i;
356+ }
357+}
358+
359+void AccountsService::refresh(bool async)
360+{
361+ auto i = m_properties.constBegin();
362+ while (i != m_properties.constEnd()) {
363+ updateAllProperties(i.key(), async);
364+ ++i;
365+ }
519366}
plugins/AccountsService/AccountsService.h+25−20
@@ -19,8 +19,10 @@
1919#ifndef UNITY_ACCOUNTSSERVICE_H
2020#define UNITY_ACCOUNTSSERVICE_H
2121
22+#include <QHash>
2223#include <QObject>
2324#include <QString>
25+#include <QVariant>
2426
2527class AccountsServiceDBusAdaptor;
2628class QDBusInterface;
@@ -109,30 +111,33 @@ private Q_SLOTS:
109111 void onMaybeChanged(const QString &user);
110112
111113private:
112− void updateDemoEdges(bool async = true);
113− void updateEnableLauncherWhileLocked(bool async = true);
114− void updateEnableIndicatorsWhileLocked(bool async = true);
115− void updateBackgroundFile(bool async = true);
116− void updateMouseCursorSpeed();
117− void updateTouchpadCursorSpeed();
118− void updateStatsWelcomeScreen(bool async = true);
119− void updatePasswordDisplayHint(bool async = true);
120− void updateFailedLogins(bool async = true);
121− void updateHereEnabled(bool async = true);
122− void updateHereLicensePath(bool async = true);
114+ typedef QVariant (*ProxyConverter)(const QVariant &);
123115
116+ void refresh(bool async);
117+ void registerProperty(const QString &interface, const QString &property, const QString &signal);
118+ void registerProxy(const QString &interface, const QString &property, QDBusInterface *iface, const QString &method, ProxyConverter converter = nullptr);
119+
120+ void updateAllProperties(const QString &interface, bool async);
121+ void updateProperty(const QString &interface, const QString &property);
122+ void updateCache(const QString &interface, const QString &property, const QVariant &value);
123+
124+ void setProperty(const QString &interface, const QString &property, const QVariant &value);
125+ QVariant getProperty(const QString &interface, const QString &property) const;
126+
127+ void emitChangedForProperty(const QString &interface, const QString &property);
128+
129+ struct PropertyInfo {
130+ QVariant value{};
131+ QString signal{};
132+ QDBusInterface *proxyInterface{};
133+ QString proxyMethod{};
134+ ProxyConverter proxyConverter{};
135+ };
136+ typedef QHash< QString, QHash<QString, PropertyInfo> > PropertyHash;
137+ PropertyHash m_properties;
124138 AccountsServiceDBusAdaptor *m_service;
125139 QDBusInterface *m_unityInput;
126140 QString m_user;
127− bool m_demoEdges;
128− bool m_enableLauncherWhileLocked;
129− bool m_enableIndicatorsWhileLocked;
130− QString m_backgroundFile;
131− bool m_statsWelcomeScreen;
132− PasswordDisplayHint m_passwordDisplayHint;
133− uint m_failedLogins;
134− bool m_hereEnabled;
135− QString m_hereLicensePath;
136141};
137142
138143#endif
plugins/AccountsService/AccountsServiceDBusAdaptor.cpp+11−4
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013-2016 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
@@ -12,8 +12,6 @@
1212 *
1313 * You should have received a copy of the GNU General Public License
1414 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Author: Michael Terry <michael.terry@canonical.com>
1715 */
1816
1917#include "AccountsServiceDBusAdaptor.h"
@@ -37,6 +35,15 @@ AccountsServiceDBusAdaptor::AccountsServiceDBusAdaptor(QObject* parent)
3735 connection, this);
3836}
3937
38+QDBusPendingReply<QVariantMap> AccountsServiceDBusAdaptor::getAllPropertiesAsync(const QString &user, const QString &interface)
39+{
40+ QDBusInterface *iface = getUserInterface(user);
41+ if (iface != nullptr && iface->isValid()) {
42+ return iface->asyncCall(QStringLiteral("GetAll"), interface);
43+ }
44+ return QDBusPendingReply<QVariantMap>(QDBusMessage::createError(QDBusError::Other, QStringLiteral("Invalid Interface")));
45+}
46+
4047QDBusPendingReply<QVariant> AccountsServiceDBusAdaptor::getUserPropertyAsync(const QString &user, const QString &interface, const QString &property)
4148{
4249 QDBusInterface *iface = getUserInterface(user);
@@ -80,7 +87,7 @@ void AccountsServiceDBusAdaptor::maybeChangedSlot()
8087 m_ignoreNextChanged = false;
8188}
8289
83−QString AccountsServiceDBusAdaptor::getUserForPath(const QString &path)
90+QString AccountsServiceDBusAdaptor::getUserForPath(const QString &path) const
8491{
8592 QMap<QString, QDBusInterface *>::const_iterator i;
8693 for (i = m_users.constBegin(); i != m_users.constEnd(); ++i) {
plugins/AccountsService/AccountsServiceDBusAdaptor.h+5−6
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013-2016 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
@@ -12,8 +12,6 @@
1212 *
1313 * You should have received a copy of the GNU General Public License
1414 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors: Michael Terry <michael.terry@canonical.com>
1715 */
1816
1917#ifndef UNITY_ACCOUNTSSERVICEDBUSADAPTOR_H
@@ -35,8 +33,9 @@ public:
3533 explicit AccountsServiceDBusAdaptor(QObject *parent = 0);
3634 ~AccountsServiceDBusAdaptor() = default;
3735
38− Q_INVOKABLE QDBusPendingReply<QVariant> getUserPropertyAsync(const QString &user, const QString &interface, const QString &property);
39− Q_INVOKABLE QDBusPendingCall setUserPropertyAsync(const QString &user, const QString &interface, const QString &property, const QVariant &value);
36+ QDBusPendingReply<QVariantMap> getAllPropertiesAsync(const QString &user, const QString &interface);
37+ QDBusPendingReply<QVariant> getUserPropertyAsync(const QString &user, const QString &interface, const QString &property);
38+ QDBusPendingCall setUserPropertyAsync(const QString &user, const QString &interface, const QString &property, const QVariant &value);
4039
4140Q_SIGNALS:
4241 void propertiesChanged(const QString &user, const QString &interface, const QStringList &changed);
@@ -48,7 +47,7 @@ private Q_SLOTS:
4847
4948private:
5049 QDBusInterface *getUserInterface(const QString &user);
51− QString getUserForPath(const QString &path);
50+ QString getUserForPath(const QString &path) const;
5251
5352 QDBusInterface *m_accountsManager;
5453 QMap<QString, QDBusInterface *> m_users;
plugins/Dash/AudioProgressBar.qml+1
@@ -31,6 +31,7 @@ Item {
3131 anchors { left: parent.left; right: parent.right }
3232 height: units.dp(6)
3333 source: "graphics/music_progress_bg.png"
34+ asynchronous: true
3435 sourceSize.width: width
3536 sourceSize.height: height
3637 }
plugins/Dash/CardCreator.js+69−34
@@ -18,12 +18,13 @@
1818
1919// %1 is the template["card-background"]["elements"][0]
2020// %2 is the template["card-background"]["elements"][1]
21−// %3 is the template["card-background"] string
21+// %3 is whether the loader should be asynchronous or not
22+// %4 is the template["card-background"] string
2223var kBackgroundLoaderCode = 'Loader {\n\
2324 id: backgroundLoader; \n\
2425 objectName: "backgroundLoader"; \n\
2526 anchors.fill: parent; \n\
26− asynchronous: root.asynchronous; \n\
27+ asynchronous: %3; \n\
2728 visible: status == Loader.Ready; \n\
2829 sourceComponent: UbuntuShape { \n\
2930 objectName: "background"; \n\
@@ -46,7 +47,7 @@ var kBackgroundLoaderCode = 'Loader {\n\
4647 objectName: "backgroundImage"; \n\
4748 source: { \n\
4849 if (cardData && typeof cardData["background"] === "string") return cardData["background"]; \n\
49− else return %3; \n\
50+ else return %4; \n\
5051 } \n\
5152 } \n\
5253 function getColor(index) { \n\
@@ -63,8 +64,9 @@ var kBackgroundLoaderCode = 'Loader {\n\
6364// %3 is used as image height
6465// %4 is used for artShapeSource.hideSource and inner Loader visible
6566// %5 is used as aspect ratio fallback
66−// %6 is injected as code to artImage
67−// %7 is used as image fallback
67+// %6 is whether the loader should be asynchronous or not
68+// %7 is injected as code to artImage
69+// %8 is used as image fallback
6870var kArtShapeHolderCode = 'Item { \n\
6971 id: artShapeHolder; \n\
7072 height: root.fixedArtShapeSize.height > 0 ? root.fixedArtShapeSize.height : artShapeLoader.height; \n\
@@ -73,9 +75,9 @@ var kArtShapeHolderCode = 'Item { \n\
7375 Loader { \n\
7476 id: artShapeLoader; \n\
7577 objectName: "artShapeLoader"; \n\
76− readonly property string cardArt: cardData && cardData["art"] || %7; \n\
78+ readonly property string cardArt: cardData && cardData["art"] || %8; \n\
7779 active: cardArt != ""; \n\
78− asynchronous: root.asynchronous; \n\
80+ asynchronous: %6; \n\
7981 visible: status == Loader.Ready; \n\
8082 sourceComponent: Item { \n\
8183 id: artShape; \n\
@@ -132,10 +134,10 @@ var kArtShapeHolderCode = 'Item { \n\
132134 id: artImage; \n\
133135 objectName: "artImage"; \n\
134136 source: artShapeLoader.cardArt; \n\
135− asynchronous: root.asynchronous; \n\
137+ asynchronous: %6; \n\
136138 width: %2; \n\
137139 height: %3; \n\
138− %6 \n\
140+ %7 \n\
139141 } \n\
140142 } \n\
141143 } \n\
@@ -144,6 +146,7 @@ var kArtShapeHolderCode = 'Item { \n\
144146// %1 is anchors.fill
145147// %2 is width
146148// %3 is height
149+// %4 is whether the icon should be asynchronous or not
147150var kAudioButtonCode = 'AbstractButton { \n\
148151 id: audioButton; \n\
149152 anchors.fill: %1; \n\
@@ -169,6 +172,7 @@ var kAudioButtonCode = 'AbstractButton { \n\
169172 opacity: 0.9; \n\
170173 name: DashAudioPlayer.playing && AudioUrlComparer.compare(parent.source, DashAudioPlayer.currentSource) ? "media-playback-pause" : "media-playback-start"; \n\
171174 color: "white"; \n\
175+ asynchronous: %4; \n\
172176 } \n\
173177 onClicked: { \n\
174178 if (AudioUrlComparer.compare(source, DashAudioPlayer.currentSource)) { \n\
@@ -187,12 +191,14 @@ var kAudioButtonCode = 'AbstractButton { \n\
187191 } \n\
188192 }';
189193
194+// %1 is whether the loader should be asynchronous or not
195+// %2 is the header height code
190196var kOverlayLoaderCode = 'Loader { \n\
191197 id: overlayLoader; \n\
192− readonly property real overlayHeight: (fixedHeaderHeight > 0 ? fixedHeaderHeight : headerHeight) + units.gu(2); \n\
198+ readonly property real overlayHeight: %2 + units.gu(2); \n\
193199 anchors.fill: artShapeHolder; \n\
194200 active: artShapeLoader.active && artShapeLoader.item && artShapeLoader.item.image.status === Image.Ready || false; \n\
195− asynchronous: root.asynchronous; \n\
201+ asynchronous: %1; \n\
196202 visible: showHeader && status == Loader.Ready; \n\
197203 sourceComponent: UbuntuShapeOverlay { \n\
198204 id: overlay; \n\
@@ -211,17 +217,19 @@ function kHeaderRowCodeGenerator() {
211217 objectName: "outerRow"; \n\
212218 property real margins: units.gu(1); \n\
213219 spacing: margins; \n\
214− height: root.fixedHeaderHeight != -1 ? root.fixedHeaderHeight : implicitHeight; \n\
220+ %2\
215221 anchors { %1 } \n\
216222 anchors.right: parent.right; \n\
217223 anchors.margins: margins; \n\
218224 anchors.rightMargin: 0; \n\
219225 data: [ \n\
220− %2 \n\
226+ %3 \n\
221227 ] \n\
222228 }\n';
223229 var args = Array.prototype.slice.call(arguments);
224− var code = kHeaderRowCodeTemplate.arg(args.shift()).arg(args.join(',\n'));
230+ var isCardTool = args.shift();
231+ var heightCode = isCardTool ? "" : "height: root.fixedHeaderHeight; \n";
232+ var code = kHeaderRowCodeTemplate.arg(args.shift()).arg(heightCode).arg(args.join(',\n'));
225233 return code;
226234}
227235
@@ -242,10 +250,11 @@ function kHeaderContainerCodeGenerator() {
242250}
243251
244252// %1 is used as anchors of mascotShapeLoader
253+// %2 is whether the loader should be asynchronous or not
245254var kMascotShapeLoaderCode = 'Loader { \n\
246255 id: mascotShapeLoader; \n\
247256 objectName: "mascotShapeLoader"; \n\
248− asynchronous: root.asynchronous; \n\
257+ asynchronous: %2; \n\
249258 active: mascotImage.status === Image.Ready; \n\
250259 visible: showHeader && active && status == Loader.Ready; \n\
251260 width: units.gu(6); \n\
@@ -275,6 +284,7 @@ var kMascotImageCode = 'CroppedImageMinimumSourceSize { \n\
275284// %2 is used as color of titleLabel
276285// %3 is used as extra condition for visible of titleLabel
277286// %4 is used as title width
287+// %5 is used as horizontal alignment
278288var kTitleLabelCode = 'Label { \n\
279289 id: titleLabel; \n\
280290 objectName: "titleLabel"; \n\
@@ -289,7 +299,7 @@ var kTitleLabelCode = 'Label { \n\
289299 width: %4; \n\
290300 text: root.title; \n\
291301 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal; \n\
292− horizontalAlignment: root.titleAlignment; \n\
302+ horizontalAlignment: %5; \n\
293303 }\n';
294304
295305// %1 is used as extra anchors of emblemIcon
@@ -398,7 +408,7 @@ function sanitizeColor(colorString) {
398408 return colorString;
399409}
400410
401−function cardString(template, components) {
411+function cardString(template, components, isCardTool) {
402412 var code;
403413
404414 var templateInteractive = (template == null ? true : (template["non-interactive"] !== undefined ? !template["non-interactive"] : true)) ? "true" : "false";
@@ -410,16 +420,16 @@ function cardString(template, components) {
410420 property string backgroundShapeStyle: "inset"; \n\
411421 property real fontScale: 1.0; \n\
412422 property var scopeStyle: null; \n\
413− property int titleAlignment: Text.AlignLeft; \n\
414− property int fixedHeaderHeight: -1; \n\
423+ %2\
415424 property size fixedArtShapeSize: Qt.size(-1, -1); \n\
416425 readonly property string title: cardData && cardData["title"] || ""; \n\
417− property bool asynchronous: true; \n\
418426 property bool showHeader: true; \n\
419427 implicitWidth: childrenRect.width; \n\
420428 enabled: %1; \n\
421429 \n'.arg(templateInteractive);
422430
431+ code = code.arg(isCardTool ? "" : "property int fixedHeaderHeight: -1; \n");
432+
423433 var hasArt = components["art"] && components["art"]["field"] || false;
424434 var hasSummary = components["summary"] || false;
425435 var isConciergeMode = components["art"] && components["art"]["conciergeMode"] || false;
@@ -435,6 +445,7 @@ function cardString(template, components) {
435445 var hasHeaderRow = hasMascot && hasTitle;
436446 var hasAttributes = hasTitle && components["attributes"] && components["attributes"]["field"] || false;
437447 var isAudio = template["quick-preview-type"] === "audio";
448+ var asynchronous = isCardTool ? "false" : "true";
438449
439450 if (isAudio) {
440451 // For now we only support audio cards with [optional] art, title, subtitle
@@ -468,7 +479,7 @@ function cardString(template, components) {
468479 backgroundElements1 = '"%1"'.arg(element1);
469480 }
470481 }
471− code += kBackgroundLoaderCode.arg(backgroundElements0).arg(backgroundElements1).arg(templateCardBackground);
482+ code += kBackgroundLoaderCode.arg(backgroundElements0).arg(backgroundElements1).arg(asynchronous).arg(templateCardBackground);
472483 }
473484
474485 if (hasArt) {
@@ -497,23 +508,31 @@ function cardString(template, components) {
497508 if (isNaN(aspectRatio)) {
498509 aspectRatio = 1;
499510 }
500− var fallback = components["art"] && components["art"]["fallback"] || "";
511+ var fallback = !isCardTool && components["art"] && components["art"]["fallback"] || "";
501512 fallback = encodeURI(fallback);
502513 var fallbackStatusCode = "";
503514 var fallbackURICode = '""';
504515 if (fallback !== "") {
505516 // fallbackStatusCode has %6 in it because we want to substitute it for fallbackURICode
506− // which in kArtShapeHolderCode is %7
507− fallbackStatusCode += 'onStatusChanged: if (status === Image.Error) source = %7;';
517+ // which in kArtShapeHolderCode is %8
518+ fallbackStatusCode += 'onStatusChanged: if (status === Image.Error) source = %8;';
508519 fallbackURICode = 'decodeURI("%1")'.arg(fallback);
509520 }
510− code += kArtShapeHolderCode.arg(artAnchors).arg(widthCode).arg(heightCode).arg(isConciergeMode ? "false" : "true").arg(aspectRatio).arg(fallbackStatusCode).arg(fallbackURICode);
521+ code += kArtShapeHolderCode.arg(artAnchors)
522+ .arg(widthCode)
523+ .arg(heightCode)
524+ .arg(isConciergeMode ? "false" : "true")
525+ .arg(aspectRatio)
526+ .arg(asynchronous)
527+ .arg(fallbackStatusCode)
528+ .arg(fallbackURICode);
511529 } else {
512530 code += 'readonly property size artShapeSize: Qt.size(-1, -1);\n'
513531 }
514532
515533 if (headerAsOverlay) {
516− code += kOverlayLoaderCode;
534+ var headerHeightCode = isCardTool ? "headerHeight" : "root.fixedHeaderHeight";
535+ code += kOverlayLoaderCode.arg(asynchronous).arg(headerHeightCode);
517536 }
518537
519538 var headerVerticalAnchors;
@@ -595,11 +614,11 @@ function cardString(template, components) {
595614 }
596615
597616 if (useMascotShape) {
598− mascotShapeCode = kMascotShapeLoaderCode.arg(mascotAnchors);
617+ mascotShapeCode = kMascotShapeLoaderCode.arg(mascotAnchors).arg(asynchronous);
599618 }
600619
601620 var mascotImageVisible = useMascotShape ? 'false' : 'showHeader';
602− var fallback = components["mascot"] && components["mascot"]["fallback"] || "";
621+ var fallback = !isCardTool && components["mascot"] && components["mascot"]["fallback"] || "";
603622 fallback = encodeURI(fallback);
604623 var fallbackStatusCode = "";
605624 var fallbackURICode = '""';
@@ -715,9 +734,24 @@ function cardString(template, components) {
715734 }
716735 }
717736
737+ var titleAlignment = "Text.AlignHCenter";
738+ if (template["card-layout"] === "horizontal"
739+ || typeof components["title"] !== "object"
740+ || components["title"]["align"] === "left") titleAlignment = "Text.AlignLeft";
741+ var keys = ["mascot", "emblem", "subtitle", "attributes", "summary"];
742+ for (var key in keys) {
743+ key = keys[key];
744+ try {
745+ if (typeof components[key] === "string"
746+ || typeof components[key]["field"] === "string") titleAlignment = "Text.AlignLeft";
747+ } catch (e) {
748+ continue;
749+ }
750+ }
751+
718752 // code for different elements
719753 var titleLabelVisibleExtra = (headerAsOverlay ? '&& overlayLoader.active': '');
720− var titleCode = kTitleLabelCode.arg(titleAnchors).arg(titleColor).arg(titleLabelVisibleExtra).arg(titleWidth);
754+ var titleCode = kTitleLabelCode.arg(titleAnchors).arg(titleColor).arg(titleLabelVisibleExtra).arg(titleWidth).arg(titleAlignment);
721755 var subtitleCode;
722756 var attributesCode;
723757
@@ -759,7 +793,7 @@ function cardString(template, components) {
759793 if (mascotShapeCode != '') {
760794 rowCode.unshift(mascotShapeCode);
761795 }
762− code += kHeaderRowCodeGenerator(headerVerticalAnchors + headerLeftAnchor, rowCode)
796+ code += kHeaderRowCodeGenerator(isCardTool, headerVerticalAnchors + headerLeftAnchor, rowCode)
763797 } else {
764798 code += mascotShapeCode + mascotCode + titleSubtitleCode;
765799 }
@@ -783,9 +817,10 @@ function cardString(template, components) {
783817 } else {
784818 audioButtonAnchorsFill = 'undefined';
785819 audioButtonWidth = 'height';
786− audioButtonHeight = '(root.fixedHeaderHeight > 0 ? root.fixedHeaderHeight : headerHeight) + 2 * units.gu(1)';
820+ audioButtonHeight = isCardTool ? 'headerHeight + 2 * units.gu(1)'
821+ : 'root.fixedHeaderHeight + 2 * units.gu(1)';
787822 }
788− code += kAudioButtonCode.arg(audioButtonAnchorsFill).arg(audioButtonWidth).arg(audioButtonHeight);
823+ code += kAudioButtonCode.arg(audioButtonAnchorsFill).arg(audioButtonWidth).arg(audioButtonHeight).arg(asynchronous);
789824 }
790825
791826 if (hasSummary) {
@@ -854,13 +889,13 @@ function cardString(template, components) {
854889 return code;
855890}
856891
857−function createCardComponent(parent, template, components, identifier) {
892+function createCardComponent(parent, template, components, isCardTool, identifier) {
858893 var imports = 'import QtQuick 2.4; \n\
859894 import Ubuntu.Components 1.3; \n\
860895 import Ubuntu.Settings.Components 0.1; \n\
861896 import Dash 0.1;\n\
862897 import Utils 0.1;\n';
863− var card = cardString(template, components);
898+ var card = cardString(template, components, isCardTool);
864899 var code = imports + 'Component {\n' + card + '}\n';
865900
866901 try {
plugins/Dash/CardCreatorCache.qml+3−3
@@ -23,16 +23,16 @@ QtObject {
2323
2424 property var cache: new Object();
2525
26− function getCardComponent(template, components) {
26+ function getCardComponent(template, components, isCardTool) {
2727 if (template === undefined || components === undefined)
2828 return undefined;
2929
3030 var tString = JSON.stringify(template);
3131 var cString = JSON.stringify(components);
32− var allString = tString + cString;
32+ var allString = tString + cString + isCardTool;
3333 var component = cache[allString];
3434 if (component === undefined) {
35− component = CardCreator.createCardComponent(root, template, components, allString);
35+ component = CardCreator.createCardComponent(root, template, components, isCardTool, allString);
3636 cache[allString] = component;
3737 }
3838 return component;
plugins/Dash/plugin.cpp+6−6
@@ -28,12 +28,12 @@
2828static QUrl oauthCleanedUrl(QUrl u)
2929{
3030 QUrlQuery q(u);
31− q.removeQueryItem("oauth_nonce");
32− q.removeQueryItem("oauth_timestamp");
33− q.removeQueryItem("oauth_consumer_key");
34− q.removeQueryItem("oauth_signature_method");
35− q.removeQueryItem("oauth_version");
36− q.removeQueryItem("oauth_signature");
31+ q.removeQueryItem(QStringLiteral("oauth_nonce"));
32+ q.removeQueryItem(QStringLiteral("oauth_timestamp"));
33+ q.removeQueryItem(QStringLiteral("oauth_consumer_key"));
34+ q.removeQueryItem(QStringLiteral("oauth_signature_method"));
35+ q.removeQueryItem(QStringLiteral("oauth_version"));
36+ q.removeQueryItem(QStringLiteral("oauth_signature"));
3737 u.setQuery(q);
3838 return u;
3939}
plugins/GlobalShortcut/globalshortcutregistry.cpp+4−4
@@ -35,13 +35,13 @@ GlobalShortcutList GlobalShortcutRegistry::shortcuts() const
3535
3636bool GlobalShortcutRegistry::hasShortcut(const QVariant &seq) const
3737{
38− return m_shortcuts.keys().contains(seq);
38+ return m_shortcuts.contains(seq);
3939}
4040
4141void GlobalShortcutRegistry::addShortcut(const QVariant &seq, GlobalShortcut *sc)
4242{
4343 if (sc) {
44− if (!m_shortcuts.keys().contains(seq)) { // create a new entry
44+ if (!m_shortcuts.contains(seq)) { // create a new entry
4545 m_shortcuts.insert(seq, {sc});
4646 } else { // append to an existing one
4747 auto shortcuts = m_shortcuts[seq];
@@ -75,8 +75,8 @@ bool GlobalShortcutRegistry::eventFilter(QObject *obj, QEvent *event)
7575
7676 if (event->type() == QEvent::KeyPress) {
7777 QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
78− QKeySequence seq = QKeySequence(keyEvent->key() + keyEvent->modifiers());
79− if (m_shortcuts.keys().contains(seq)) {
78+ int seq = keyEvent->key() + keyEvent->modifiers();
79+ if (m_shortcuts.contains(seq)) {
8080 const auto shortcuts = m_shortcuts.value(seq);
8181 Q_FOREACH(const auto &shortcut, shortcuts) {
8282 if (shortcut) {
plugins/IntegratedLightDM/liblightdm/CMakeLists.txt+16−3
@@ -5,13 +5,16 @@ set(LibLightDM_SOURCES
55 UsersModel.cpp
66 GreeterPrivate.cpp
77 UsersModelPrivate.cpp
8+ ${CMAKE_SOURCE_DIR}/plugins/AccountsService/AccountsServiceDBusAdaptor.cpp
89 ${CMAKE_SOURCE_DIR}/plugins/Utils/qvariantlistmodel.cpp
910 )
1011
1112add_library(integratedLightDM STATIC ${LibLightDM_SOURCES})
13+add_library(integratedLightDMSession STATIC ${LibLightDM_SOURCES})
1214add_library(MockLightDM-demo-shared SHARED ${LibLightDM_SOURCES})
1315
1416include_directories(
17+ ${CMAKE_SOURCE_DIR}/plugins/AccountsService
1518 ${CMAKE_CURRENT_BINARY_DIR}
1619 ${GLIB_INCLUDE_DIRS}
1720 ${LIBUSERMETRICSOUTPUT_INCLUDE_DIRS}
@@ -22,17 +25,27 @@ target_link_libraries(integratedLightDM
2225 ${LIBUSERMETRICSOUTPUT_LDFLAGS}
2326 -lpam
2427)
28+target_link_libraries(integratedLightDMSession
29+ ${GLIB_LIBRARIES}
30+ ${LIBUSERMETRICSOUTPUT_LDFLAGS}
31+ -lpam
32+)
2533target_link_libraries(MockLightDM-demo-shared
2634 ${GLIB_LIBRARIES}
2735 ${LIBUSERMETRICSOUTPUT_LDFLAGS}
2836 -lpam
2937)
3038
31−qt5_use_modules(integratedLightDM Concurrent Gui)
32−qt5_use_modules(MockLightDM-demo-shared Concurrent Gui)
39+qt5_use_modules(integratedLightDM Concurrent DBus Gui)
40+qt5_use_modules(integratedLightDMSession Concurrent DBus Gui)
41+qt5_use_modules(MockLightDM-demo-shared Concurrent DBus Gui)
3342
34−set_target_properties(integratedLightDM PROPERTIES COMPILE_FLAGS -fPIC)
43+set_target_properties(integratedLightDM PROPERTIES
44+ COMPILE_FLAGS "-DSM_BUSNAME=systemBus -fPIC")
45+set_target_properties(integratedLightDMSession PROPERTIES
46+ COMPILE_FLAGS "-DSM_BUSNAME=sessionBus -fPIC")
3547set_target_properties(MockLightDM-demo-shared PROPERTIES
48+ COMPILE_FLAGS "-DSM_BUSNAME=systemBus"
3649 OUTPUT_NAME lightdm-qt5-2)
3750
3851install(TARGETS MockLightDM-demo-shared
plugins/IntegratedLightDM/liblightdm/UsersModel.cpp+4−18
@@ -54,24 +54,10 @@ UsersModel::UsersModel(QObject *parent) :
5454 roles[ImagePathRole] = "imagePath";
5555 setRoleNames(roles);
5656
57− // Now modify our mock user backgrounds
58− QDir bgdir = QDir(QStringLiteral("/usr/share/demo-assets/shell/backgrounds/"));
59− QStringList backgrounds = bgdir.entryList(QDir::Files | QDir::NoDotAndDotDot);
60−
61− for (int i = 0, j = 0; i < d->entries.size(); i++) {
62− Entry &entry = d->entries[i];
63− if (entry.background.isNull() && !backgrounds.isEmpty()) {
64− entry.background = bgdir.filePath(backgrounds[j++]);
65− if (j >= backgrounds.length()) {
66− j = 0;
67− }
68− }
69− }
70−}
71−
72−UsersModel::~UsersModel()
73−{
74− delete d_ptr;
57+ connect(d_ptr, &UsersModelPrivate::dataChanged, this, [this](int i) {
58+ QModelIndex index = createIndex(i, 0);
59+ Q_EMIT dataChanged(index, index);
60+ });
7561}
7662
7763int UsersModel::rowCount(const QModelIndex &parent) const
plugins/IntegratedLightDM/liblightdm/UsersModel.h+1−1
@@ -41,7 +41,7 @@ class Q_DECL_EXPORT UsersModel : public QAbstractListModel
4141
4242public:
4343 explicit UsersModel(QObject *parent = 0);
44− virtual ~UsersModel();
44+ virtual ~UsersModel() = default;
4545
4646 enum UserModelRoles {NameRole = Qt::UserRole,
4747 RealNameRole,
plugins/IntegratedLightDM/liblightdm/UsersModelPrivate.cpp+43−9
@@ -18,7 +18,11 @@
1818
1919#include "UsersModelPrivate.h"
2020
21+#include "AccountsServiceDBusAdaptor.h"
22+#include "UsersModel.h"
23+
2124#include <glib.h>
25+#include <QDebug>
2226#include <QDir>
2327#include <QSettings>
2428#include <QStringList>
@@ -27,7 +31,9 @@ namespace QLightDM
2731{
2832
2933UsersModelPrivate::UsersModelPrivate(UsersModel* parent)
30− : q_ptr(parent)
34+ : QObject(parent),
35+ q_ptr(parent),
36+ m_service(new AccountsServiceDBusAdaptor(this))
3137{
3238 QFileInfo demoFile(QDir::homePath() + "/.unity8-greeter-demo");
3339 QString currentUser = g_get_user_name();
@@ -43,15 +49,43 @@ UsersModelPrivate::UsersModelPrivate(UsersModel* parent)
4349 entries.append({user, name, 0, 0, false, false, 0, 0});
4450 }
4551 } else {
46− // If we were using the actual liblightdm, we could just ask it
47− // for the user's real name. But we aren't. We *should* ask
48− // AccountsService for the real name, like liblightdm does internally,
49− // but this is close enough since AS and passwd are always in sync.
50− QString realName = QString::fromUtf8(g_get_real_name()); // gets name from passwd entry
51− if (realName == QStringLiteral("Unknown")) { // glib doesn't translate this string
52− realName.clear();
52+ entries.append({currentUser, 0, 0, 0, false, false, 0, 0});
53+
54+ connect(m_service, &AccountsServiceDBusAdaptor::maybeChanged,
55+ this, [this](const QString &user) {
56+ if (user == entries[0].username) {
57+ updateName(true);
58+ }
59+ });
60+ updateName(false);
61+ }
62+}
63+
64+void UsersModelPrivate::updateName(bool async)
65+{
66+ auto pendingReply = m_service->getUserPropertyAsync(entries[0].username,
67+ QStringLiteral("org.freedesktop.Accounts.User"),
68+ QStringLiteral("RealName"));
69+ auto *watcher = new QDBusPendingCallWatcher(pendingReply, this);
70+
71+ connect(watcher, &QDBusPendingCallWatcher::finished,
72+ this, [this](QDBusPendingCallWatcher* watcher) {
73+
74+ QDBusPendingReply<QVariant> reply = *watcher;
75+ watcher->deleteLater();
76+ if (reply.isError()) {
77+ qWarning() << "Failed to get 'RealName' property - " << reply.error().message();
78+ return;
79+ }
80+
81+ const QString realName = reply.value().toString();
82+ if (entries[0].real_name != realName) {
83+ entries[0].real_name = realName;
84+ Q_EMIT dataChanged(0);
5385 }
54− entries.append({currentUser, realName, 0, 0, false, false, 0, 0});
86+ });
87+ if (!async) {
88+ watcher->waitForFinished();
5589 }
5690}
5791
plugins/IntegratedLightDM/liblightdm/UsersModelPrivate.h+15−3
@@ -19,8 +19,11 @@
1919#ifndef UNITY_MOCK_USERSMODEL_PRIVATE_H
2020#define UNITY_MOCK_USERSMODEL_PRIVATE_H
2121
22−#include <QtCore/QList>
23−#include <QtCore/QString>
22+#include <QList>
23+#include <QObject>
24+#include <QString>
25+
26+class AccountsServiceDBusAdaptor;
2427
2528namespace QLightDM
2629{
@@ -39,19 +42,28 @@ public:
3942 QString infographic;
4043};
4144
42−class UsersModelPrivate
45+class UsersModelPrivate : public QObject
4346{
47+ Q_OBJECT
48+
4449public:
4550 explicit UsersModelPrivate(UsersModel *parent = 0);
4651 virtual ~UsersModelPrivate() = default;
4752
4853 QList<Entry> entries;
4954
55+Q_SIGNALS:
56+ void dataChanged(int);
57+
5058protected:
5159 UsersModel * const q_ptr;
5260
5361private:
5462 Q_DECLARE_PUBLIC(UsersModel)
63+
64+ void updateName(bool async);
65+
66+ AccountsServiceDBusAdaptor *m_service;
5567};
5668
5769}
plugins/Unity/Indicators/indicatorsmanager.cpp+2−2
@@ -116,7 +116,7 @@ void IndicatorsManager::loadFile(const QFileInfo& file_info)
116116 QSettings indicator_settings(file_info.absoluteFilePath(), QSettings::IniFormat, this);
117117 const QString name = indicator_settings.value(QStringLiteral("Indicator Service/Name")).toString();
118118
119− if (m_platform.isPC() && name == "indicator-keyboard") {
119+ if (m_platform.isPC() && name == QLatin1String("indicator-keyboard")) {
120120 return; // convergence: skip this indicator until it works in Mir
121121 }
122122
@@ -293,7 +293,7 @@ Indicator::Ptr IndicatorsManager::indicator(const QString& indicator_name)
293293 // The rest of the indicators respect their default profile (which is "phone", even on desktop PCs)
294294 if ((new_indicator->identifier() == QStringLiteral("indicator-session") && m_platform.isMultiSession())
295295 || (new_indicator->identifier() == QStringLiteral("indicator-power") && m_platform.isPC())) {
296− new_indicator->setProfile("desktop");
296+ new_indicator->setProfile(QStringLiteral("desktop"));
297297 } else {
298298 new_indicator->setProfile(m_profile);
299299 }
plugins/Unity/Indicators/rootstateparser.h+1
@@ -23,6 +23,7 @@
2323
2424class UNITYINDICATORS_EXPORT RootStateParser : public ActionStateParser
2525{
26+Q_OBJECT
2627public:
2728 RootStateParser(QObject* parent = nullptr);
2829 virtual QVariant toQVariant(GVariant* state) const override;
plugins/Unity/Launcher/desktopfilehandler.cpp+2−2
@@ -146,9 +146,9 @@ QString DesktopFileHandler::icon() const
146146 QString iconString = settings.value(QStringLiteral("Icon")).toString();
147147 QString pathString = settings.value(QStringLiteral("Path")).toString();
148148
149− if (QFileInfo(iconString).exists()) {
149+ if (QFileInfo::exists(iconString)) {
150150 return QFileInfo(iconString).absoluteFilePath();
151− } else if (QFileInfo(pathString + '/' + iconString).exists()) {
151+ } else if (QFileInfo::exists(pathString + '/' + iconString)) {
152152 return pathString + '/' + iconString;
153153 }
154154 return "image://theme/" + iconString;
plugins/Unity/Launcher/launcheritem.cpp+1
@@ -37,6 +37,7 @@ LauncherItem::LauncherItem(const QString &appId, const QString &name, const QStr
3737 m_alerting(false),
3838 m_quickList(new QuickListModel(this))
3939{
40+ Q_ASSERT(parent != nullptr);
4041 QuickListEntry nameAction;
4142 nameAction.setActionId(QStringLiteral("launch_item"));
4243 nameAction.setText(m_name);
plugins/Unity/Launcher/launcheritem.h+1−1
@@ -32,7 +32,7 @@ class LauncherItem: public LauncherItemInterface
3232{
3333 Q_OBJECT
3434public:
35− LauncherItem(const QString &appId, const QString &name, const QString &icon, QObject *parent = 0);
35+ LauncherItem(const QString &appId, const QString &name, const QString &icon, QObject *parent);
3636
3737 QString appId() const override;
3838 QString name() const override;
plugins/Unity/Launcher/launchermodel.cpp+15−5
@@ -103,7 +103,7 @@ void LauncherModel::setAlerting(const QString &appId, bool alerting) {
103103 LauncherItem *item = m_list.at(index);
104104 if (!item->focused()) {
105105 item->setAlerting(alerting);
106− Q_EMIT dataChanged(modelIndex, modelIndex, QVector<int>() << RoleAlerting);
106+ Q_EMIT dataChanged(modelIndex, modelIndex, {RoleAlerting});
107107 }
108108 }
109109}
@@ -389,7 +389,8 @@ void LauncherModel::countVisibleChanged(const QString &appId, bool countVisible)
389389 if (countVisible && desktopFile.isValid()) {
390390 LauncherItem *item = new LauncherItem(appId,
391391 desktopFile.displayName(),
392− desktopFile.icon());
392+ desktopFile.icon(),
393+ this);
393394 item->setCountVisible(true);
394395 beginInsertRows(QModelIndex(), m_list.count(), m_list.count());
395396 m_list.append(item);
@@ -414,10 +415,19 @@ void LauncherModel::refresh()
414415 } else {
415416 int idx = m_list.indexOf(item);
416417 item->setName(desktopFile.displayName());
417− item->setIcon(desktopFile.icon());
418418 item->setPinned(item->pinned()); // update pinned text if needed
419419 item->setRunning(item->running());
420− Q_EMIT dataChanged(index(idx), index(idx), {RoleName, RoleIcon, RoleRunning});
420+ Q_EMIT dataChanged(index(idx), index(idx), {RoleName, RoleRunning});
421+
422+ const QString oldIcon = item->icon();
423+ if (oldIcon == desktopFile.icon()) { // same icon file, perhaps different contents, simulate changing the icon name to force reload
424+ item->setIcon(QString());
425+ Q_EMIT dataChanged(index(idx), index(idx), {RoleIcon});
426+ }
427+
428+ // now set the icon for real
429+ item->setIcon(desktopFile.icon());
430+ Q_EMIT dataChanged(index(idx), index(idx), {RoleIcon});
421431 }
422432 }
423433
@@ -489,7 +499,7 @@ void LauncherModel::alert(const QString &appId)
489499 if (idx >= 0) {
490500 LauncherItem *item = m_list.at(idx);
491501 setAlerting(item->appId(), true);
492− Q_EMIT dataChanged(index(idx), index(idx), QVector<int>() << RoleAlerting);
502+ Q_EMIT dataChanged(index(idx), index(idx), {RoleAlerting});
493503 }
494504}
495505
plugins/Unity/Launcher/launchermodel.h+1−1
@@ -38,7 +38,7 @@ class LauncherModel: public LauncherModelInterface
3838 Q_OBJECT
3939
4040public:
41− LauncherModel(QObject *parent = 0);
41+ LauncherModel(QObject *parent = nullptr);
4242 ~LauncherModel();
4343
4444 int rowCount(const QModelIndex &parent = QModelIndex()) const override;
plugins/Utils/CMakeLists.txt+1
@@ -23,6 +23,7 @@ set(QMLPLUGIN_SRC
2323 windowstatestorage.cpp
2424 timezoneFormatter.cpp
2525 inputeventgenerator.cpp
26+ deviceconfigparser.cpp
2627 plugin.cpp
2728 )
2829
plugins/Utils/deviceconfigparser.cppnew file+150
@@ -0,0 +1,150 @@
1+/*
2+ * Copyright 2016 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU Lesser General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU Lesser General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU Lesser General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#include "deviceconfigparser.h"
18+
19+#include <QSettings>
20+#include <QFileInfo>
21+#include <QDebug>
22+#include <QStandardPaths>
23+
24+DeviceConfigParser::DeviceConfigParser(QObject *parent): QObject(parent)
25+{
26+ QString path;
27+ Q_FOREACH (const QString &standardPath, QStandardPaths::standardLocations(QStandardPaths::GenericConfigLocation)) {
28+ if (QFileInfo(standardPath + "/devices.conf").exists()) {
29+ path = standardPath + "/devices.conf";
30+ break;
31+ }
32+ }
33+
34+ if (path.isEmpty()) {
35+ path = "/etc/ubuntu/devices.conf";
36+ }
37+ qDebug() << "Using" << path << "as device configuration file";
38+ m_config = new QSettings(path, QSettings::IniFormat, this);
39+}
40+
41+QString DeviceConfigParser::name() const
42+{
43+ return m_name;
44+}
45+
46+void DeviceConfigParser::setName(const QString &name)
47+{
48+ if (m_name == name) {
49+ return;
50+ }
51+ m_name = name;
52+ Q_EMIT changed();
53+}
54+
55+Qt::ScreenOrientation DeviceConfigParser::primaryOrientation() const
56+{
57+ return stringToOrientation(readOrientationFromConfig("PrimaryOrientation"), Qt::PrimaryOrientation);
58+}
59+
60+Qt::ScreenOrientations DeviceConfigParser::supportedOrientations() const
61+{
62+ QStringList values = readOrientationsFromConfig("SupportedOrientations");
63+ if (values.isEmpty()) {
64+ return Qt::PortraitOrientation
65+ | Qt::InvertedPortraitOrientation
66+ | Qt::LandscapeOrientation
67+ | Qt::InvertedLandscapeOrientation;
68+ }
69+
70+ Qt::ScreenOrientations ret = Qt::PrimaryOrientation;
71+ Q_FOREACH(const QString &orientationString, values) {
72+ ret |= stringToOrientation(orientationString, Qt::PrimaryOrientation);
73+ }
74+ return ret;
75+}
76+
77+Qt::ScreenOrientation DeviceConfigParser::landscapeOrientation() const
78+{
79+ return stringToOrientation(readOrientationFromConfig("LandscapeOrientation"), Qt::LandscapeOrientation);
80+}
81+
82+Qt::ScreenOrientation DeviceConfigParser::invertedLandscapeOrientation() const
83+{
84+ return stringToOrientation(readOrientationFromConfig("InvertedLandscapeOrientation"), Qt::InvertedLandscapeOrientation);
85+}
86+
87+Qt::ScreenOrientation DeviceConfigParser::portraitOrientation() const
88+{
89+ return stringToOrientation(readOrientationFromConfig("PortraitOrientation"), Qt::PortraitOrientation);
90+}
91+
92+Qt::ScreenOrientation DeviceConfigParser::invertedPortraitOrientation() const
93+{
94+ return stringToOrientation(readOrientationFromConfig("InvertedPortraitOrientation"), Qt::InvertedPortraitOrientation);
95+}
96+
97+QString DeviceConfigParser::category() const
98+{
99+ QStringList supportedValues = {"phone", "tablet", "desktop"};
100+ m_config->beginGroup(m_name);
101+ QString value = m_config->value("Category", "phone").toString();
102+ if (!supportedValues.contains(value)) {
103+ qWarning().nospace().noquote() << "Unknown option \"" << value << "\" in " << m_config->fileName()
104+ << ". Supported options are: " << supportedValues.join(", ") << ".";
105+ return "phone";
106+ }
107+ m_config->endGroup();
108+ return value;
109+}
110+
111+QStringList DeviceConfigParser::readOrientationsFromConfig(const QString &key) const
112+{
113+ m_config->beginGroup(m_name);
114+
115+ QStringList ret;
116+ if (m_config->contains(key)) {
117+ ret = m_config->value(key).toStringList();
118+ }
119+
120+ m_config->endGroup();
121+ return ret;
122+}
123+
124+QString DeviceConfigParser::readOrientationFromConfig(const QString &key) const
125+{
126+ QStringList ret = readOrientationsFromConfig(key);
127+ return ret.count() > 0 ? ret.first() : QString();
128+}
129+
130+Qt::ScreenOrientation DeviceConfigParser::stringToOrientation(const QString &orientationString, Qt::ScreenOrientation defaultValue) const
131+{
132+ if (orientationString == "Landscape") {
133+ return Qt::LandscapeOrientation;
134+ }
135+ if (orientationString == "InvertedLandscape") {
136+ return Qt::InvertedLandscapeOrientation;
137+ }
138+ if (orientationString == "Portrait") {
139+ return Qt::PortraitOrientation;
140+ }
141+ if (orientationString == "InvertedPortrait") {
142+ return Qt::InvertedPortraitOrientation;
143+ }
144+ if (!orientationString.isEmpty()) {
145+ // Some option we don't know. Give some hint on what went wrong.
146+ qWarning().nospace().noquote() << "Unknown option \"" << orientationString << "\" in " << m_config->fileName()
147+ << ". Supported options are: Landscape, InvertedLandscape, Portrait and InvertedPortrait.";
148+ }
149+ return defaultValue;
150+}
plugins/Utils/deviceconfigparser.hnew file+62
@@ -0,0 +1,62 @@
1+/*
2+ * Copyright 2016 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU Lesser General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU Lesser General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU Lesser General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#ifndef DEVICECONFIGPARSER_H
18+#define DEVICECONFIGPARSER_H
19+
20+#include <QObject>
21+#include <QSettings>
22+
23+class DeviceConfigParser: public QObject
24+{
25+ Q_OBJECT
26+ Q_PROPERTY(QString name READ name WRITE setName NOTIFY changed)
27+
28+ Q_PROPERTY(Qt::ScreenOrientation primaryOrientation READ primaryOrientation NOTIFY changed)
29+ Q_PROPERTY(Qt::ScreenOrientations supportedOrientations READ supportedOrientations NOTIFY changed)
30+ Q_PROPERTY(Qt::ScreenOrientation landscapeOrientation READ landscapeOrientation NOTIFY changed)
31+ Q_PROPERTY(Qt::ScreenOrientation invertedLandscapeOrientation READ invertedLandscapeOrientation NOTIFY changed)
32+ Q_PROPERTY(Qt::ScreenOrientation portraitOrientation READ portraitOrientation NOTIFY changed)
33+ Q_PROPERTY(Qt::ScreenOrientation invertedPortraitOrientation READ invertedPortraitOrientation NOTIFY changed)
34+ Q_PROPERTY(QString category READ category NOTIFY changed)
35+
36+public:
37+ DeviceConfigParser(QObject *parent = nullptr);
38+
39+ QString name() const;
40+ void setName(const QString &name);
41+
42+ Qt::ScreenOrientation primaryOrientation() const;
43+ Qt::ScreenOrientations supportedOrientations() const;
44+ Qt::ScreenOrientation landscapeOrientation() const;
45+ Qt::ScreenOrientation invertedLandscapeOrientation() const;
46+ Qt::ScreenOrientation portraitOrientation() const;
47+ Qt::ScreenOrientation invertedPortraitOrientation() const;
48+ QString category() const;
49+
50+Q_SIGNALS:
51+ void changed();
52+
53+private:
54+ QString m_name;
55+ QSettings *m_config;
56+
57+ QStringList readOrientationsFromConfig(const QString &key) const;
58+ QString readOrientationFromConfig(const QString &key) const;
59+ Qt::ScreenOrientation stringToOrientation(const QString &orientationString, Qt::ScreenOrientation defaultValue) const;
60+};
61+
62+#endif
plugins/Utils/plugin.cpp+2
@@ -37,6 +37,7 @@
3737#include "timezoneFormatter.h"
3838#include "applicationsfiltermodel.h"
3939#include "inputeventgenerator.h"
40+#include "deviceconfigparser.h"
4041
4142static QObject *createWindowStateStorage(QQmlEngine *engine, QJSEngine *scriptEngine)
4243{
@@ -70,6 +71,7 @@ void UtilsPlugin::registerTypes(const char *uri)
7071 qmlRegisterType<ActiveFocusLogger>(uri, 0, 1, "ActiveFocusLogger");
7172 qmlRegisterType<ApplicationsFilterModel>(uri, 0, 1, "ApplicationsFilterModel");
7273 qmlRegisterType<InputEventGenerator>(uri, 0, 1, "InputEventGenerator");
74+ qmlRegisterType<DeviceConfigParser>(uri, 0, 1, "DeviceConfigParser");
7375}
7476
7577void UtilsPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
po/aa.po+11−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"PO-Revision-Date: 2016-02-12 10:18+0000\n"
1212"Last-Translator: Charif AYFARAH <ayfarah@ymail.com>\n"
1313"Language-Team: Afar <aa@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:42+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:57+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171171msgid "Close all"
172172msgstr "Inkih alif"
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177177msgstr ""
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr "Goranto"
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr "Massosu"
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr ""
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr ""
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr ""
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr "Goranto"
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416416msgid "Call back"
417417msgstr ""
418418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427419#: qml/Tutorial/TutorialBottom.qml:28
428420msgid "Open special menus"
429421msgstr ""
po/am.po+20−22
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"PO-Revision-Date: 2015-11-19 19:27+0000\n"
1212"Last-Translator: samson <Unknown>\n"
1313"Language-Team: Amharic <am@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:42+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:57+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -173,38 +173,38 @@ msgstr "አሁን እንደገና መገናኛ!"
173173msgid "Close all"
174174msgstr "ሁሉንም መዝጊያ"
175175
176−#: qml/Dash/DashPageHeader.qml:266
176+#: qml/Dash/DashPageHeader.qml:270
177177msgctxt "Button: Open the Ubuntu Store"
178178msgid "Store"
179179msgstr "ማስቀመጫ"
180180
181−#: qml/Dash/DashPageHeader.qml:273
181+#: qml/Dash/DashPageHeader.qml:277
182182msgctxt "Button: Start a search in the current dash scope"
183183msgid "Search"
184184msgstr "መፈለጊያ"
185185
186−#: qml/Dash/DashPageHeader.qml:283
186+#: qml/Dash/DashPageHeader.qml:287
187187msgctxt "Button: Show the current dash scope settings"
188188msgid "Settings"
189189msgstr "ማሰናጃዎች"
190190
191−#: qml/Dash/DashPageHeader.qml:290
191+#: qml/Dash/DashPageHeader.qml:294
192192msgid "Remove from Favorites"
193193msgstr "ከምወዳቸው ማስወገጃ"
194194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196196msgid "Add to Favorites"
197197msgstr "ወደምወዳቸው መጨመሪያ"
198198
199−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
199+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
200200msgid "See less"
201201msgstr "አነስተኛ መመልከቻ"
202202
203−#: qml/Dash/GenericScopeView.qml:587
203+#: qml/Dash/GenericScopeView.qml:565
204204msgid "See all"
205205msgstr "ሁሉንም መመልከቻ"
206206
207−#: qml/Dash/GenericScopeView.qml:649
207+#: qml/Dash/GenericScopeView.qml:627
208208msgctxt "Label: Hint for dash search line edit"
209209msgid "Search"
210210msgstr "መፈለጊያ"
@@ -423,14 +423,6 @@ msgctxt "Button: Call back on phone"
423423msgid "Call back"
424424msgstr "መልሶ መደወያ"
425425
426−#: qml/Panel/Indicators/ModemInfoItem.qml:105
427−msgid "Unlock SIM"
428−msgstr "ሲም መክፈቻ"
429−
430−#: qml/Panel/Indicators/RoamingIndication.qml:27
431−msgid "Roaming"
432−msgstr "ማዘዋወሪያ"
433−
434426#: qml/Tutorial/TutorialBottom.qml:28
435427msgid "Open special menus"
436428msgstr "የተለዩ ዝርዝሮች መክፈቻ"
@@ -495,7 +487,7 @@ msgstr "ሰላም"
495487
496488#: qml/Wizard/Pages/10-welcome.qml:44
497489msgid "Welcome to your Ubuntu device."
498−msgstr ""
490+msgstr "እንኳን ድህና መጡ ወደ ኡቡንቱ"
499491
500492#: qml/Wizard/Pages/10-welcome.qml:52
501493msgid "Let’s get started."
@@ -526,7 +518,7 @@ msgstr "ደህንነት መቆለፊያ"
526518
527519#: qml/Wizard/Pages/30-passwd-type.qml:79
528520msgid "Please select how you’d like to unlock your device."
529−msgstr ""
521+msgstr "እባክዎን የ እርስዎን አካል እንዴት እንደሚከፈት ይምረጡ"
530522
531523#: qml/Wizard/Pages/30-passwd-type.qml:102
532524msgctxt "Label: Type of security method"
@@ -630,7 +622,7 @@ msgstr "ጥሩ ሰርተዋል!"
630622
631623#: qml/Wizard/Pages/80-finished.qml:46
632624msgid "Your device is now ready to use."
633−msgstr ""
625+msgstr "የ እርስዎ አካል አሁን ዝግጁ ነው"
634626
635627#: qml/Wizard/Pages/80-finished.qml:53
636628msgid "Finish"
@@ -751,12 +743,18 @@ msgstr "%1 〉"
751743#~ msgid "Settings"
752744#~ msgstr "ማሰናጃ"
753745
746+#~ msgid "Unlock SIM"
747+#~ msgstr "ሲም መክፈቻ"
748+
754749#~ msgid ""
755750#~ "You have now mastered the edge gestures and can start using the "
756751#~ "phone<br><br>Tap on the screen to start"
757752#~ msgstr ""
758753#~ "አሁን የ ጠርዝ እንቅስቃሴን አውቀዋል እና መጀመር ይችላሉ ስልኩን መጠቀም <br><br>መመልከቻውን መታ ያድርጉ ለመጀመር"
759754
755+#~ msgid "Roaming"
756+#~ msgstr "ማዘዋወሪያ"
757+
760758#~ msgid "Restart"
761759#~ msgstr "እንደገና ማስጀመሪያ"
762760
po/ar.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -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: 2016-02-17 05:42+0000\n"
20−"X-Generator: Launchpad (build 17925)\n"
19+"X-Launchpad-Export-Date: 2016-03-10 05:57+0000\n"
20+"X-Generator: Launchpad (build 17936)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -180,38 +180,38 @@ msgstr ""
180180msgid "Close all"
181181msgstr ""
182182
183−#: qml/Dash/DashPageHeader.qml:266
183+#: qml/Dash/DashPageHeader.qml:270
184184msgctxt "Button: Open the Ubuntu Store"
185185msgid "Store"
186186msgstr "المتجر"
187187
188−#: qml/Dash/DashPageHeader.qml:273
188+#: qml/Dash/DashPageHeader.qml:277
189189msgctxt "Button: Start a search in the current dash scope"
190190msgid "Search"
191191msgstr "بحث"
192192
193−#: qml/Dash/DashPageHeader.qml:283
193+#: qml/Dash/DashPageHeader.qml:287
194194msgctxt "Button: Show the current dash scope settings"
195195msgid "Settings"
196196msgstr "الإعدادات"
197197
198−#: qml/Dash/DashPageHeader.qml:290
198+#: qml/Dash/DashPageHeader.qml:294
199199msgid "Remove from Favorites"
200200msgstr "حذف من المفضلات"
201201
202−#: qml/Dash/DashPageHeader.qml:290
202+#: qml/Dash/DashPageHeader.qml:294
203203msgid "Add to Favorites"
204204msgstr "إضافة إلى المفضلات"
205205
206−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
206+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
207207msgid "See less"
208208msgstr "شاهد أقل"
209209
210−#: qml/Dash/GenericScopeView.qml:587
210+#: qml/Dash/GenericScopeView.qml:565
211211msgid "See all"
212212msgstr "عرض الكل"
213213
214−#: qml/Dash/GenericScopeView.qml:649
214+#: qml/Dash/GenericScopeView.qml:627
215215msgctxt "Label: Hint for dash search line edit"
216216msgid "Search"
217217msgstr "بحث"
@@ -441,14 +441,6 @@ msgctxt "Button: Call back on phone"
441441msgid "Call back"
442442msgstr ""
443443
444−#: qml/Panel/Indicators/ModemInfoItem.qml:105
445−msgid "Unlock SIM"
446−msgstr "فتح قفل بطاقة SIM"
447−
448−#: qml/Panel/Indicators/RoamingIndication.qml:27
449−msgid "Roaming"
450−msgstr "التجوال"
451−
452444#: qml/Tutorial/TutorialBottom.qml:28
453445msgid "Open special menus"
454446msgstr "فتح قوائم خاصة"
@@ -786,6 +778,9 @@ msgstr ""
786778#~ msgid "Please re-enter"
787779#~ msgstr "برجاء إعادة إدخالها"
788780
781+#~ msgid "Roaming"
782+#~ msgstr "التجوال"
783+
789784#~ msgid "Welcome to your Ubuntu phone."
790785#~ msgstr "مرحبا بك في أوبونتو للهواتف."
791786
@@ -794,3 +789,6 @@ msgstr ""
794789
795790#~ msgid "Your phone is now ready to use."
796791#~ msgstr "هاتفك جاهز الآن للاستخدام."
792+
793+#~ msgid "Unlock SIM"
794+#~ msgstr "فتح قفل بطاقة SIM"
po/ast.po+28−28
@@ -7,16 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
11−"PO-Revision-Date: 2015-10-06 12:07+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11+"PO-Revision-Date: 2016-02-19 19:39+0000\n"
1212"Last-Translator: Xuacu Saturio <xuacusk8@gmail.com>\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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:57+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -152,60 +152,62 @@ msgstr "Aceutar"
152152
153153#: qml/Components/ModeSwitchWarningDialog.qml:32
154154msgid "Apps may have unsaved data:"
155−msgstr ""
155+msgstr "Apps que pueden tener datos sin guardar:"
156156
157157#: qml/Components/ModeSwitchWarningDialog.qml:57
158158msgid "Re-dock, save your work and close these apps to continue."
159159msgstr ""
160+"Pa siguir coneuta nuevamente'l preséu, guarda'l trabayu y zarra estes "
161+"aplicaciones."
160162
161163#: qml/Components/ModeSwitchWarningDialog.qml:63
162164msgid "Or force close now (unsaved data will be lost)."
163−msgstr ""
165+msgstr "O fuerza salir agora (perderás tolos datos sin guardar)."
164166
165167#: qml/Components/ModeSwitchWarningDialog.qml:75
166168msgid "OK, I will reconnect"
167−msgstr ""
169+msgstr "D'alcuerdu, reconeutaré"
168170
169171#: qml/Components/ModeSwitchWarningDialog.qml:76
170172msgid "Reconnect now!"
171−msgstr ""
173+msgstr "Reconeutar agora."
172174
173175#: qml/Components/ModeSwitchWarningDialog.qml:88
174176msgid "Close all"
175−msgstr ""
177+msgstr "Zarrar too"
176178
177−#: qml/Dash/DashPageHeader.qml:266
179+#: qml/Dash/DashPageHeader.qml:270
178180msgctxt "Button: Open the Ubuntu Store"
179181msgid "Store"
180182msgstr "Tienda"
181183
182−#: qml/Dash/DashPageHeader.qml:273
184+#: qml/Dash/DashPageHeader.qml:277
183185msgctxt "Button: Start a search in the current dash scope"
184186msgid "Search"
185187msgstr "Guetar"
186188
187−#: qml/Dash/DashPageHeader.qml:283
189+#: qml/Dash/DashPageHeader.qml:287
188190msgctxt "Button: Show the current dash scope settings"
189191msgid "Settings"
190192msgstr "Axustes"
191193
192−#: qml/Dash/DashPageHeader.qml:290
194+#: qml/Dash/DashPageHeader.qml:294
193195msgid "Remove from Favorites"
194196msgstr "Desaniciar de favoritos"
195197
196−#: qml/Dash/DashPageHeader.qml:290
198+#: qml/Dash/DashPageHeader.qml:294
197199msgid "Add to Favorites"
198200msgstr "Amestar a favoritos"
199201
200−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
202+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
201203msgid "See less"
202204msgstr "Ver menos"
203205
204−#: qml/Dash/GenericScopeView.qml:587
206+#: qml/Dash/GenericScopeView.qml:565
205207msgid "See all"
206208msgstr "Ver too"
207209
208−#: qml/Dash/GenericScopeView.qml:649
210+#: qml/Dash/GenericScopeView.qml:627
209211msgctxt "Label: Hint for dash search line edit"
210212msgid "Search"
211213msgstr "Guetar"
@@ -233,7 +235,7 @@ msgstr "Amestar una reseña"
233235
234236#: qml/Dash/Previews/PreviewSharing.qml:50
235237msgid "Preview Share Item"
236−msgstr ""
238+msgstr "Entever l'elementu compartíu"
237239
238240#: qml/Dash/PullToRefreshScopeStyle.qml:55
239241msgid "Pull to refresh…"
@@ -411,7 +413,7 @@ msgstr "Falló, toca pa reintentar"
411413#: qml/Panel/Indicators/MessageMenuItemFactory.qml:214
412414msgctxt "Button: Send a reply message"
413415msgid "Send"
414−msgstr ""
416+msgstr "Unviar"
415417
416418#: qml/Panel/Indicators/MessageMenuItemFactory.qml:156
417419msgctxt "Label: Hint in message indicator line edit"
@@ -421,15 +423,7 @@ msgstr "Responder"
421423#: qml/Panel/Indicators/MessageMenuItemFactory.qml:213
422424msgctxt "Button: Call back on phone"
423425msgid "Call back"
424−msgstr ""
425−
426−#: qml/Panel/Indicators/ModemInfoItem.qml:105
427−msgid "Unlock SIM"
428−msgstr "Desbloquiar SIM"
429−
430−#: qml/Panel/Indicators/RoamingIndication.qml:27
431−msgid "Roaming"
432−msgstr "Roaming"
426+msgstr "Devolver llamada"
433427
434428#: qml/Tutorial/TutorialBottom.qml:28
435429msgid "Open special menus"
@@ -761,9 +755,15 @@ msgstr "%1 〉"
761755#~ msgid "All"
762756#~ msgstr "Too"
763757
758+#~ msgid "Unlock SIM"
759+#~ msgstr "Desbloquiar SIM"
760+
764761#~ msgid "Store"
765762#~ msgstr "Tienda"
766763
764+#~ msgid "Roaming"
765+#~ msgstr "Roaming"
766+
767767#~ msgid "Restart"
768768#~ msgstr "Reaniciar"
769769
po/az.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:57+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171171msgid "Close all"
172172msgstr ""
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177177msgstr ""
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr ""
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr ""
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr "Seçilmişlәrdәn çıxart"
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr "Seçilmişlәrә әlavә et"
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr "Daha azını gör"
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr "Hamısını gör"
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr ""
@@ -420,14 +420,6 @@ msgctxt "Button: Call back on phone"
420420msgid "Call back"
421421msgstr ""
422422
423−#: qml/Panel/Indicators/ModemInfoItem.qml:105
424−msgid "Unlock SIM"
425−msgstr "SIM kilidini aç"
426−
427−#: qml/Panel/Indicators/RoamingIndication.qml:27
428−msgid "Roaming"
429−msgstr "Rominq"
430−
431423#: qml/Tutorial/TutorialBottom.qml:28
432424msgid "Open special menus"
433425msgstr ""
@@ -713,6 +705,12 @@ msgstr ""
713705#~ msgid "Done"
714706#~ msgstr "Başa çatdı"
715707
708+#~ msgid "Unlock SIM"
709+#~ msgstr "SIM kilidini aç"
710+
711+#~ msgid "Roaming"
712+#~ msgstr "Rominq"
713+
716714#~ msgid "Log out"
717715#~ msgstr "Çıxış"
718716
po/be.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"PO-Revision-Date: 2015-12-13 13:12+0000\n"
1212"Last-Translator: Mikhail_SaTuRn <mikhail_saturn@tut.by>\n"
1313"Language-Team: Belarusian <be@li.org>\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: 2016-02-17 05:43+0000\n"
20−"X-Generator: Launchpad (build 17925)\n"
19+"X-Launchpad-Export-Date: 2016-03-10 05:57+0000\n"
20+"X-Generator: Launchpad (build 17936)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -178,38 +178,38 @@ msgstr "Перападлучыцца зараз!"
178178msgid "Close all"
179179msgstr "Зачыніць усё"
180180
181−#: qml/Dash/DashPageHeader.qml:266
181+#: qml/Dash/DashPageHeader.qml:270
182182msgctxt "Button: Open the Ubuntu Store"
183183msgid "Store"
184184msgstr "Крама"
185185
186−#: qml/Dash/DashPageHeader.qml:273
186+#: qml/Dash/DashPageHeader.qml:277
187187msgctxt "Button: Start a search in the current dash scope"
188188msgid "Search"
189189msgstr "Пошук"
190190
191−#: qml/Dash/DashPageHeader.qml:283
191+#: qml/Dash/DashPageHeader.qml:287
192192msgctxt "Button: Show the current dash scope settings"
193193msgid "Settings"
194194msgstr "Налады"
195195
196−#: qml/Dash/DashPageHeader.qml:290
196+#: qml/Dash/DashPageHeader.qml:294
197197msgid "Remove from Favorites"
198198msgstr "Выдаліць з абранага"
199199
200−#: qml/Dash/DashPageHeader.qml:290
200+#: qml/Dash/DashPageHeader.qml:294
201201msgid "Add to Favorites"
202202msgstr "Дадаць да абранага"
203203
204−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
204+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
205205msgid "See less"
206206msgstr "Карацей"
207207
208−#: qml/Dash/GenericScopeView.qml:587
208+#: qml/Dash/GenericScopeView.qml:565
209209msgid "See all"
210210msgstr "Больш падрабязна"
211211
212−#: qml/Dash/GenericScopeView.qml:649
212+#: qml/Dash/GenericScopeView.qml:627
213213msgctxt "Label: Hint for dash search line edit"
214214msgid "Search"
215215msgstr "Пошук"
@@ -430,14 +430,6 @@ msgctxt "Button: Call back on phone"
430430msgid "Call back"
431431msgstr "Патэлефанаваць"
432432
433−#: qml/Panel/Indicators/ModemInfoItem.qml:105
434−msgid "Unlock SIM"
435−msgstr "Разблакаваць SIM"
436−
437−#: qml/Panel/Indicators/RoamingIndication.qml:27
438−msgid "Roaming"
439−msgstr "Роўмінг"
440−
441433#: qml/Tutorial/TutorialBottom.qml:28
442434msgid "Open special menus"
443435msgstr "Адкрыць спецыяльныя меню"
@@ -705,6 +697,12 @@ msgstr "%1 〉"
705697#~ msgid "Confirm"
706698#~ msgstr "Пацвердзіць"
707699
700+#~ msgid "Unlock SIM"
701+#~ msgstr "Разблакаваць SIM"
702+
703+#~ msgid "Roaming"
704+#~ msgstr "Роўмінг"
705+
708706#~ msgid "Try swiping from the right edge to unlock the phone"
709707#~ msgstr "Правядзіце пальцам з правага краю, каб разблакаваць тэлефон"
710708
po/bg.po+11−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -173,38 +173,38 @@ msgstr ""
173173msgid "Close all"
174174msgstr ""
175175
176−#: qml/Dash/DashPageHeader.qml:266
176+#: qml/Dash/DashPageHeader.qml:270
177177msgctxt "Button: Open the Ubuntu Store"
178178msgid "Store"
179179msgstr ""
180180
181−#: qml/Dash/DashPageHeader.qml:273
181+#: qml/Dash/DashPageHeader.qml:277
182182msgctxt "Button: Start a search in the current dash scope"
183183msgid "Search"
184184msgstr ""
185185
186−#: qml/Dash/DashPageHeader.qml:283
186+#: qml/Dash/DashPageHeader.qml:287
187187msgctxt "Button: Show the current dash scope settings"
188188msgid "Settings"
189189msgstr ""
190190
191−#: qml/Dash/DashPageHeader.qml:290
191+#: qml/Dash/DashPageHeader.qml:294
192192msgid "Remove from Favorites"
193193msgstr ""
194194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196196msgid "Add to Favorites"
197197msgstr ""
198198
199−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
199+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
200200msgid "See less"
201201msgstr ""
202202
203−#: qml/Dash/GenericScopeView.qml:587
203+#: qml/Dash/GenericScopeView.qml:565
204204msgid "See all"
205205msgstr ""
206206
207−#: qml/Dash/GenericScopeView.qml:649
207+#: qml/Dash/GenericScopeView.qml:627
208208msgctxt "Label: Hint for dash search line edit"
209209msgid "Search"
210210msgstr ""
@@ -418,14 +418,6 @@ msgctxt "Button: Call back on phone"
418418msgid "Call back"
419419msgstr ""
420420
421−#: qml/Panel/Indicators/ModemInfoItem.qml:105
422−msgid "Unlock SIM"
423−msgstr ""
424−
425−#: qml/Panel/Indicators/RoamingIndication.qml:27
426−msgid "Roaming"
427−msgstr ""
428−
429421#: qml/Tutorial/TutorialBottom.qml:28
430422msgid "Open special menus"
431423msgstr ""
po/bn.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"PO-Revision-Date: 2015-11-27 19:38+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Bengali <bn@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:57+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -173,38 +173,38 @@ msgstr ""
173173msgid "Close all"
174174msgstr ""
175175
176−#: qml/Dash/DashPageHeader.qml:266
176+#: qml/Dash/DashPageHeader.qml:270
177177msgctxt "Button: Open the Ubuntu Store"
178178msgid "Store"
179179msgstr "স্টোর"
180180
181−#: qml/Dash/DashPageHeader.qml:273
181+#: qml/Dash/DashPageHeader.qml:277
182182msgctxt "Button: Start a search in the current dash scope"
183183msgid "Search"
184184msgstr "খুঁজুন"
185185
186−#: qml/Dash/DashPageHeader.qml:283
186+#: qml/Dash/DashPageHeader.qml:287
187187msgctxt "Button: Show the current dash scope settings"
188188msgid "Settings"
189189msgstr "সেটিংস"
190190
191−#: qml/Dash/DashPageHeader.qml:290
191+#: qml/Dash/DashPageHeader.qml:294
192192msgid "Remove from Favorites"
193193msgstr "পছন্দ থেকে মুছে ফেলুন"
194194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196196msgid "Add to Favorites"
197197msgstr "পছন্দতে যোগ করুন"
198198
199−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
199+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
200200msgid "See less"
201201msgstr "কম দেখুন"
202202
203−#: qml/Dash/GenericScopeView.qml:587
203+#: qml/Dash/GenericScopeView.qml:565
204204msgid "See all"
205205msgstr "সব দেখুন"
206206
207−#: qml/Dash/GenericScopeView.qml:649
207+#: qml/Dash/GenericScopeView.qml:627
208208msgctxt "Label: Hint for dash search line edit"
209209msgid "Search"
210210msgstr "খুঁজুন"
@@ -419,14 +419,6 @@ msgctxt "Button: Call back on phone"
419419msgid "Call back"
420420msgstr "কল ব্যাক"
421421
422−#: qml/Panel/Indicators/ModemInfoItem.qml:105
423−msgid "Unlock SIM"
424−msgstr "সিম লক খুলুন করুন"
425−
426−#: qml/Panel/Indicators/RoamingIndication.qml:27
427−msgid "Roaming"
428−msgstr "রোমিং"
429−
430422#: qml/Tutorial/TutorialBottom.qml:28
431423msgid "Open special menus"
432424msgstr ""
@@ -726,6 +718,12 @@ msgstr ""
726718#~ msgid "Speak Now..."
727719#~ msgstr "এখন বলুন..."
728720
721+#~ msgid "Unlock SIM"
722+#~ msgstr "সিম লক খুলুন করুন"
723+
724+#~ msgid "Roaming"
725+#~ msgstr "রোমিং"
726+
729727#~ msgid "Please re-enter"
730728#~ msgstr "অনুগ্রহ করে আবার লিখুন"
731729
po/br.po+32−30
@@ -7,16 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
11−"PO-Revision-Date: 2015-10-05 06:47+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11+"PO-Revision-Date: 2016-02-22 12:29+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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:57+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -155,60 +155,62 @@ msgstr "Mat eo"
155155
156156#: qml/Components/ModeSwitchWarningDialog.qml:32
157157msgid "Apps may have unsaved data:"
158−msgstr ""
158+msgstr "Roadennoù ha n'int ket enrollet a c'hall bezañ gant an arloadoù :"
159159
160160#: qml/Components/ModeSwitchWarningDialog.qml:57
161161msgid "Re-dock, save your work and close these apps to continue."
162162msgstr ""
163+"Adlugit, enrollit ho labour ha serrit an arloadoù-mañ evit kenderc'hel."
163164
164165#: qml/Components/ModeSwitchWarningDialog.qml:63
165166msgid "Or force close now (unsaved data will be lost)."
166167msgstr ""
168+"Pe rediañ da serriñ bremañ (kollet e vo ar roadennoù n'int ket bet enrollet)."
167169
168170#: qml/Components/ModeSwitchWarningDialog.qml:75
169171msgid "OK, I will reconnect"
170−msgstr ""
172+msgstr "Mat eo, ez an da adkevreañ"
171173
172174#: qml/Components/ModeSwitchWarningDialog.qml:76
173175msgid "Reconnect now!"
174−msgstr ""
176+msgstr "Adkevreañ bremañ !"
175177
176178#: qml/Components/ModeSwitchWarningDialog.qml:88
177179msgid "Close all"
178−msgstr ""
180+msgstr "Serriñ pep tra"
179181
180−#: qml/Dash/DashPageHeader.qml:266
182+#: qml/Dash/DashPageHeader.qml:270
181183msgctxt "Button: Open the Ubuntu Store"
182184msgid "Store"
183185msgstr "Stal"
184186
185−#: qml/Dash/DashPageHeader.qml:273
187+#: qml/Dash/DashPageHeader.qml:277
186188msgctxt "Button: Start a search in the current dash scope"
187189msgid "Search"
188190msgstr "Klask"
189191
190−#: qml/Dash/DashPageHeader.qml:283
192+#: qml/Dash/DashPageHeader.qml:287
191193msgctxt "Button: Show the current dash scope settings"
192194msgid "Settings"
193195msgstr "Arventennoù"
194196
195−#: qml/Dash/DashPageHeader.qml:290
197+#: qml/Dash/DashPageHeader.qml:294
196198msgid "Remove from Favorites"
197199msgstr "Lemel eus ar sinedoù"
198200
199−#: qml/Dash/DashPageHeader.qml:290
201+#: qml/Dash/DashPageHeader.qml:294
200202msgid "Add to Favorites"
201203msgstr "Ouzhpennañ d'ar sinedoù"
202204
203−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
205+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
204206msgid "See less"
205207msgstr "Gwelet nebeutoc'h"
206208
207−#: qml/Dash/GenericScopeView.qml:587
209+#: qml/Dash/GenericScopeView.qml:565
208210msgid "See all"
209211msgstr "Gwelet pep tra"
210212
211−#: qml/Dash/GenericScopeView.qml:649
213+#: qml/Dash/GenericScopeView.qml:627
212214msgctxt "Label: Hint for dash search line edit"
213215msgid "Search"
214216msgstr "Klask"
@@ -236,7 +238,7 @@ msgstr "Ouzhpennañ un ali"
236238
237239#: qml/Dash/Previews/PreviewSharing.qml:50
238240msgid "Preview Share Item"
239−msgstr ""
241+msgstr "Rakwelet an elfenn lodet"
240242
241243#: qml/Dash/PullToRefreshScopeStyle.qml:55
242244msgid "Pull to refresh…"
@@ -267,6 +269,8 @@ msgid ""
267269"Your device is now connected to an external display. Use this screen as a "
268270"touch pad to interact with the mouse."
269271msgstr ""
272+"N'eo ket kevreet ho penveg ouzh un diskwel diavaez. Implijit ar skramm-mañ "
273+"da douch evit ober gant al logodenn."
270274
271275#: qml/Greeter/CoverPage.qml:107
272276msgid "Unlock"
@@ -414,7 +418,7 @@ msgstr "C'hwitet, touchit evit adkregiñ"
414418#: qml/Panel/Indicators/MessageMenuItemFactory.qml:214
415419msgctxt "Button: Send a reply message"
416420msgid "Send"
417−msgstr ""
421+msgstr "Kas"
418422
419423#: qml/Panel/Indicators/MessageMenuItemFactory.qml:156
420424msgctxt "Label: Hint in message indicator line edit"
@@ -424,15 +428,7 @@ msgstr "Respont"
424428#: qml/Panel/Indicators/MessageMenuItemFactory.qml:213
425429msgctxt "Button: Call back on phone"
426430msgid "Call back"
427−msgstr ""
428−
429−#: qml/Panel/Indicators/ModemInfoItem.qml:105
430−msgid "Unlock SIM"
431−msgstr "Dibrennañ ar gartenn SIM"
432−
433−#: qml/Panel/Indicators/RoamingIndication.qml:27
434−msgid "Roaming"
435−msgstr "O kantren"
431+msgstr "Gervel en-dro"
436432
437433#: qml/Tutorial/TutorialBottom.qml:28
438434msgid "Open special menus"
@@ -498,7 +494,7 @@ msgstr "Salud deoc'h !"
498494
499495#: qml/Wizard/Pages/10-welcome.qml:44
500496msgid "Welcome to your Ubuntu device."
501−msgstr ""
497+msgstr "Donemat en ho penveg Ubuntu"
502498
503499#: qml/Wizard/Pages/10-welcome.qml:52
504500msgid "Let’s get started."
@@ -529,7 +525,7 @@ msgstr "Surentez ar prennañ"
529525
530526#: qml/Wizard/Pages/30-passwd-type.qml:79
531527msgid "Please select how you’d like to unlock your device."
532−msgstr ""
528+msgstr "Diuzit penaos e fell deoc'h dibrennañ ho penveg, mar plij."
533529
534530#: qml/Wizard/Pages/30-passwd-type.qml:102
535531msgctxt "Label: Type of security method"
@@ -637,7 +633,7 @@ msgstr "Gwellat labour !"
637633
638634#: qml/Wizard/Pages/80-finished.qml:46
639635msgid "Your device is now ready to use."
640−msgstr ""
636+msgstr "Prest eo ho penveg da vezañ implijet bremañ."
641637
642638#: qml/Wizard/Pages/80-finished.qml:53
643639msgid "Finish"
@@ -752,6 +748,12 @@ msgstr "%1 〉"
752748#~ msgid "All"
753749#~ msgstr "An holl anezho"
754750
751+#~ msgid "Unlock SIM"
752+#~ msgstr "Dibrennañ ar gartenn SIM"
753+
754+#~ msgid "Roaming"
755+#~ msgstr "O kantren"
756+
755757#~ msgid "Favorites"
756758#~ msgstr "Gwellañ deuet"
757759
po/bs.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"PO-Revision-Date: 2015-12-01 20:06+0000\n"
1212"Last-Translator: Kenan Gutić <Unknown>\n"
1313"Language-Team: Bosnian <bs@li.org>\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: 2016-02-17 05:43+0000\n"
20−"X-Generator: Launchpad (build 17925)\n"
19+"X-Launchpad-Export-Date: 2016-03-10 05:57+0000\n"
20+"X-Generator: Launchpad (build 17936)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -177,38 +177,38 @@ msgstr "Ponovo poveži sada"
177177msgid "Close all"
178178msgstr "Zatvori sve"
179179
180−#: qml/Dash/DashPageHeader.qml:266
180+#: qml/Dash/DashPageHeader.qml:270
181181msgctxt "Button: Open the Ubuntu Store"
182182msgid "Store"
183183msgstr "Trgovina"
184184
185−#: qml/Dash/DashPageHeader.qml:273
185+#: qml/Dash/DashPageHeader.qml:277
186186msgctxt "Button: Start a search in the current dash scope"
187187msgid "Search"
188188msgstr "Pretraživanje"
189189
190−#: qml/Dash/DashPageHeader.qml:283
190+#: qml/Dash/DashPageHeader.qml:287
191191msgctxt "Button: Show the current dash scope settings"
192192msgid "Settings"
193193msgstr "Podešavanja"
194194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196196msgid "Remove from Favorites"
197197msgstr "Ukloni iz Omiljenih"
198198
199−#: qml/Dash/DashPageHeader.qml:290
199+#: qml/Dash/DashPageHeader.qml:294
200200msgid "Add to Favorites"
201201msgstr "Dodaj u Omiljene"
202202
203−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
203+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
204204msgid "See less"
205205msgstr "Pogledati manje"
206206
207−#: qml/Dash/GenericScopeView.qml:587
207+#: qml/Dash/GenericScopeView.qml:565
208208msgid "See all"
209209msgstr "Pogledati sve"
210210
211−#: qml/Dash/GenericScopeView.qml:649
211+#: qml/Dash/GenericScopeView.qml:627
212212msgctxt "Label: Hint for dash search line edit"
213213msgid "Search"
214214msgstr "Pretraži"
@@ -429,14 +429,6 @@ msgctxt "Button: Call back on phone"
429429msgid "Call back"
430430msgstr "Uzvrati poziv"
431431
432−#: qml/Panel/Indicators/ModemInfoItem.qml:105
433−msgid "Unlock SIM"
434−msgstr "Otključajte SIM"
435−
436−#: qml/Panel/Indicators/RoamingIndication.qml:27
437−msgid "Roaming"
438−msgstr "Roaming"
439−
440432#: qml/Tutorial/TutorialBottom.qml:28
441433msgid "Open special menus"
442434msgstr "Otvorite posebne menije"
@@ -699,6 +691,12 @@ msgstr "%1 〉"
699691#~ msgid "Please re-enter"
700692#~ msgstr "Molimo ponovo unesite"
701693
694+#~ msgid "Unlock SIM"
695+#~ msgstr "Otključajte SIM"
696+
697+#~ msgid "Roaming"
698+#~ msgstr "Roaming"
699+
702700#~ msgid "Welcome to your Ubuntu phone."
703701#~ msgstr "Dobrodošli u vaš Ubuntu telefon."
704702
po/ca.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -179,38 +179,38 @@ msgstr "Torna a connectar"
179179msgid "Close all"
180180msgstr "Tanca-ho tot"
181181
182−#: qml/Dash/DashPageHeader.qml:266
182+#: qml/Dash/DashPageHeader.qml:270
183183msgctxt "Button: Open the Ubuntu Store"
184184msgid "Store"
185185msgstr "Botiga"
186186
187−#: qml/Dash/DashPageHeader.qml:273
187+#: qml/Dash/DashPageHeader.qml:277
188188msgctxt "Button: Start a search in the current dash scope"
189189msgid "Search"
190190msgstr "Cerca"
191191
192−#: qml/Dash/DashPageHeader.qml:283
192+#: qml/Dash/DashPageHeader.qml:287
193193msgctxt "Button: Show the current dash scope settings"
194194msgid "Settings"
195195msgstr "Paràmetres"
196196
197−#: qml/Dash/DashPageHeader.qml:290
197+#: qml/Dash/DashPageHeader.qml:294
198198msgid "Remove from Favorites"
199199msgstr "Suprimeix dels preferits"
200200
201−#: qml/Dash/DashPageHeader.qml:290
201+#: qml/Dash/DashPageHeader.qml:294
202202msgid "Add to Favorites"
203203msgstr "Afegeix als preferits"
204204
205−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
205+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
206206msgid "See less"
207207msgstr "Mostra'n menys"
208208
209−#: qml/Dash/GenericScopeView.qml:587
209+#: qml/Dash/GenericScopeView.qml:565
210210msgid "See all"
211211msgstr "Mostra-ho tot"
212212
213−#: qml/Dash/GenericScopeView.qml:649
213+#: qml/Dash/GenericScopeView.qml:627
214214msgctxt "Label: Hint for dash search line edit"
215215msgid "Search"
216216msgstr "Cerca"
@@ -430,14 +430,6 @@ msgctxt "Button: Call back on phone"
430430msgid "Call back"
431431msgstr "Retorna la trucada"
432432
433−#: qml/Panel/Indicators/ModemInfoItem.qml:105
434−msgid "Unlock SIM"
435−msgstr "Desbloca la SIM"
436−
437−#: qml/Panel/Indicators/RoamingIndication.qml:27
438−msgid "Roaming"
439−msgstr "Itinerància"
440−
441433#: qml/Tutorial/TutorialBottom.qml:28
442434msgid "Open special menus"
443435msgstr "Obre els menús especials"
@@ -747,12 +739,18 @@ msgstr "%1 〉"
747739#~ "Ja heu après com utilitzar els gestos de les vores per fer servir el "
748740#~ "telèfon<br><br>Feu un toc a la pantalla per començar"
749741
742+#~ msgid "Unlock SIM"
743+#~ msgstr "Desbloca la SIM"
744+
750745#~ msgid "Store"
751746#~ msgstr "Botiga"
752747
753748#~ msgid "Done"
754749#~ msgstr "Fet"
755750
751+#~ msgid "Roaming"
752+#~ msgstr "Itinerància"
753+
756754#~ msgid "Favorites"
757755#~ msgstr "Preferides"
758756
po/ca@valencia.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -177,38 +177,38 @@ msgstr ""
177177msgid "Close all"
178178msgstr ""
179179
180−#: qml/Dash/DashPageHeader.qml:266
180+#: qml/Dash/DashPageHeader.qml:270
181181msgctxt "Button: Open the Ubuntu Store"
182182msgid "Store"
183183msgstr ""
184184
185−#: qml/Dash/DashPageHeader.qml:273
185+#: qml/Dash/DashPageHeader.qml:277
186186msgctxt "Button: Start a search in the current dash scope"
187187msgid "Search"
188188msgstr ""
189189
190−#: qml/Dash/DashPageHeader.qml:283
190+#: qml/Dash/DashPageHeader.qml:287
191191msgctxt "Button: Show the current dash scope settings"
192192msgid "Settings"
193193msgstr ""
194194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196196msgid "Remove from Favorites"
197197msgstr "Suprimeix dels preferits"
198198
199−#: qml/Dash/DashPageHeader.qml:290
199+#: qml/Dash/DashPageHeader.qml:294
200200msgid "Add to Favorites"
201201msgstr "Afig als preferits"
202202
203−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
203+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
204204msgid "See less"
205205msgstr "Mostra'n menys"
206206
207−#: qml/Dash/GenericScopeView.qml:587
207+#: qml/Dash/GenericScopeView.qml:565
208208msgid "See all"
209209msgstr "Mostra-ho tot"
210210
211−#: qml/Dash/GenericScopeView.qml:649
211+#: qml/Dash/GenericScopeView.qml:627
212212msgctxt "Label: Hint for dash search line edit"
213213msgid "Search"
214214msgstr ""
@@ -428,14 +428,6 @@ msgctxt "Button: Call back on phone"
428428msgid "Call back"
429429msgstr ""
430430
431−#: qml/Panel/Indicators/ModemInfoItem.qml:105
432−msgid "Unlock SIM"
433−msgstr "Desbloca la SIM"
434−
435−#: qml/Panel/Indicators/RoamingIndication.qml:27
436−msgid "Roaming"
437−msgstr "Itinerància"
438−
439431#: qml/Tutorial/TutorialBottom.qml:28
440432msgid "Open special menus"
441433msgstr ""
@@ -771,6 +763,12 @@ msgstr "%1 〉"
771763#~ msgid "Speaking..."
772764#~ msgstr "S'està parlant..."
773765
766+#~ msgid "Unlock SIM"
767+#~ msgstr "Desbloca la SIM"
768+
769+#~ msgid "Roaming"
770+#~ msgstr "Itinerància"
771+
774772#~ msgid "Please re-enter"
775773#~ msgstr "Torneu-ho a introduir"
776774
po/ce.po+11−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171171msgid "Close all"
172172msgstr ""
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177177msgstr ""
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr ""
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr ""
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr ""
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr ""
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr ""
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416416msgid "Call back"
417417msgstr ""
418418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427419#: qml/Tutorial/TutorialBottom.qml:28
428420msgid "Open special menus"
429421msgstr ""
po/ckb.po+11−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171171msgid "Close all"
172172msgstr ""
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177177msgstr ""
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr ""
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr ""
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr ""
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr ""
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr ""
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416416msgid "Call back"
417417msgstr ""
418418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427419#: qml/Tutorial/TutorialBottom.qml:28
428420msgid "Open special menus"
429421msgstr ""
po/cs.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -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 && n<=4) ? 1 : 2;\n"
18−"X-Launchpad-Export-Date: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020"Language: cs\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -177,38 +177,38 @@ msgstr ""
177177msgid "Close all"
178178msgstr ""
179179
180−#: qml/Dash/DashPageHeader.qml:266
180+#: qml/Dash/DashPageHeader.qml:270
181181msgctxt "Button: Open the Ubuntu Store"
182182msgid "Store"
183183msgstr "Obchod"
184184
185−#: qml/Dash/DashPageHeader.qml:273
185+#: qml/Dash/DashPageHeader.qml:277
186186msgctxt "Button: Start a search in the current dash scope"
187187msgid "Search"
188188msgstr "Hledat"
189189
190−#: qml/Dash/DashPageHeader.qml:283
190+#: qml/Dash/DashPageHeader.qml:287
191191msgctxt "Button: Show the current dash scope settings"
192192msgid "Settings"
193193msgstr "Nastavení"
194194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196196msgid "Remove from Favorites"
197197msgstr "Odstranit z oblíbených"
198198
199−#: qml/Dash/DashPageHeader.qml:290
199+#: qml/Dash/DashPageHeader.qml:294
200200msgid "Add to Favorites"
201201msgstr "Přidat do oblíbených"
202202
203−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
203+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
204204msgid "See less"
205205msgstr "Zobrazit méně"
206206
207−#: qml/Dash/GenericScopeView.qml:587
207+#: qml/Dash/GenericScopeView.qml:565
208208msgid "See all"
209209msgstr "Zobrazit vše"
210210
211−#: qml/Dash/GenericScopeView.qml:649
211+#: qml/Dash/GenericScopeView.qml:627
212212msgctxt "Label: Hint for dash search line edit"
213213msgid "Search"
214214msgstr "Hledat"
@@ -429,14 +429,6 @@ msgctxt "Button: Call back on phone"
429429msgid "Call back"
430430msgstr ""
431431
432−#: qml/Panel/Indicators/ModemInfoItem.qml:105
433−msgid "Unlock SIM"
434−msgstr "Odemknout SIM"
435−
436−#: qml/Panel/Indicators/RoamingIndication.qml:27
437−msgid "Roaming"
438−msgstr "Roaming"
439−
440432#: qml/Tutorial/TutorialBottom.qml:28
441433msgid "Open special menus"
442434msgstr "Otevřít speciální menu"
@@ -734,6 +726,12 @@ msgstr "%1 〉"
734726#~ msgid "Please re-enter"
735727#~ msgstr "Vložte znovu"
736728
729+#~ msgid "Unlock SIM"
730+#~ msgstr "Odemknout SIM"
731+
732+#~ msgid "Roaming"
733+#~ msgstr "Roaming"
734+
737735#~ msgid "Welcome to your Ubuntu phone."
738736#~ msgstr "Vítejte ve vašem Ubuntu telefonu."
739737
po/cy.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -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: 2016-02-17 05:43+0000\n"
20−"X-Generator: Launchpad (build 17925)\n"
19+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
20+"X-Generator: Launchpad (build 17936)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -178,38 +178,38 @@ msgstr ""
178178msgid "Close all"
179179msgstr ""
180180
181−#: qml/Dash/DashPageHeader.qml:266
181+#: qml/Dash/DashPageHeader.qml:270
182182msgctxt "Button: Open the Ubuntu Store"
183183msgid "Store"
184184msgstr "Marchnad"
185185
186−#: qml/Dash/DashPageHeader.qml:273
186+#: qml/Dash/DashPageHeader.qml:277
187187msgctxt "Button: Start a search in the current dash scope"
188188msgid "Search"
189189msgstr "Chwilio"
190190
191−#: qml/Dash/DashPageHeader.qml:283
191+#: qml/Dash/DashPageHeader.qml:287
192192msgctxt "Button: Show the current dash scope settings"
193193msgid "Settings"
194194msgstr "Gosodiadau"
195195
196−#: qml/Dash/DashPageHeader.qml:290
196+#: qml/Dash/DashPageHeader.qml:294
197197msgid "Remove from Favorites"
198198msgstr "Tynnu o Ffefrynnau"
199199
200−#: qml/Dash/DashPageHeader.qml:290
200+#: qml/Dash/DashPageHeader.qml:294
201201msgid "Add to Favorites"
202202msgstr "Ychwanegu at Ffefrynnau"
203203
204−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
204+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
205205msgid "See less"
206206msgstr "Gweld llai"
207207
208−#: qml/Dash/GenericScopeView.qml:587
208+#: qml/Dash/GenericScopeView.qml:565
209209msgid "See all"
210210msgstr "Gweld y cyfan"
211211
212−#: qml/Dash/GenericScopeView.qml:649
212+#: qml/Dash/GenericScopeView.qml:627
213213msgctxt "Label: Hint for dash search line edit"
214214msgid "Search"
215215msgstr "Chwilio"
@@ -433,14 +433,6 @@ msgctxt "Button: Call back on phone"
433433msgid "Call back"
434434msgstr ""
435435
436−#: qml/Panel/Indicators/ModemInfoItem.qml:105
437−msgid "Unlock SIM"
438−msgstr "Datgloi SIM"
439−
440−#: qml/Panel/Indicators/RoamingIndication.qml:27
441−msgid "Roaming"
442−msgstr "Crwydrol"
443−
444436#: qml/Tutorial/TutorialBottom.qml:28
445437msgid "Open special menus"
446438msgstr "Agor dewislenni arbennig"
@@ -717,6 +709,12 @@ msgstr "%1 〉"
717709#~ msgid "Tomorrow %H:%M"
718710#~ msgstr "Yfory %H:%M"
719711
712+#~ msgid "Unlock SIM"
713+#~ msgstr "Datgloi SIM"
714+
715+#~ msgid "Roaming"
716+#~ msgstr "Crwydrol"
717+
720718#~ msgid "Welcome to your Ubuntu phone."
721719#~ msgstr "Croeso i'ch ffôn Ubuntu."
722720
po/da.po+17−19
@@ -8,7 +8,7 @@ msgid ""
88msgstr ""
99"Project-Id-Version: unity8\n"
1010"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
11+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1212"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"
@@ -16,8 +16,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
20−"X-Generator: Launchpad (build 17925)\n"
19+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
20+"X-Generator: Launchpad (build 17936)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -178,38 +178,38 @@ msgstr ""
178178msgid "Close all"
179179msgstr ""
180180
181−#: qml/Dash/DashPageHeader.qml:266
181+#: qml/Dash/DashPageHeader.qml:270
182182msgctxt "Button: Open the Ubuntu Store"
183183msgid "Store"
184184msgstr "Butik"
185185
186−#: qml/Dash/DashPageHeader.qml:273
186+#: qml/Dash/DashPageHeader.qml:277
187187msgctxt "Button: Start a search in the current dash scope"
188188msgid "Search"
189189msgstr "Søg"
190190
191−#: qml/Dash/DashPageHeader.qml:283
191+#: qml/Dash/DashPageHeader.qml:287
192192msgctxt "Button: Show the current dash scope settings"
193193msgid "Settings"
194194msgstr "Indstillinger"
195195
196−#: qml/Dash/DashPageHeader.qml:290
196+#: qml/Dash/DashPageHeader.qml:294
197197msgid "Remove from Favorites"
198198msgstr "Fjern fra Favoritter"
199199
200−#: qml/Dash/DashPageHeader.qml:290
200+#: qml/Dash/DashPageHeader.qml:294
201201msgid "Add to Favorites"
202202msgstr "Tilføj til Favoritter"
203203
204−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
204+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
205205msgid "See less"
206206msgstr "Vis mindre"
207207
208−#: qml/Dash/GenericScopeView.qml:587
208+#: qml/Dash/GenericScopeView.qml:565
209209msgid "See all"
210210msgstr "Se alle"
211211
212−#: qml/Dash/GenericScopeView.qml:649
212+#: qml/Dash/GenericScopeView.qml:627
213213msgctxt "Label: Hint for dash search line edit"
214214msgid "Search"
215215msgstr "Søg"
@@ -427,14 +427,6 @@ msgctxt "Button: Call back on phone"
427427msgid "Call back"
428428msgstr ""
429429
430−#: qml/Panel/Indicators/ModemInfoItem.qml:105
431−msgid "Unlock SIM"
432−msgstr "Lås SIM-kort op"
433−
434−#: qml/Panel/Indicators/RoamingIndication.qml:27
435−msgid "Roaming"
436−msgstr "Roaming"
437−
438430#: qml/Tutorial/TutorialBottom.qml:28
439431msgid "Open special menus"
440432msgstr "Åben specialmenuer"
@@ -738,6 +730,9 @@ msgstr "%1 〉"
738730#~ "Du mestrer nu kantbevægelserne og kan begynde at bruge telefonen<br><br>Tryk "
739731#~ "på skærmen for at starte"
740732
733+#~ msgid "Unlock SIM"
734+#~ msgstr "Lås SIM-kort op"
735+
741736#~ msgid "Please re-enter"
742737#~ msgstr "Vær venlig at genindtaste"
743738
@@ -750,6 +745,9 @@ msgstr "%1 〉"
750745#~ msgid "Welcome to your Ubuntu phone."
751746#~ msgstr "Velkommen til din Ubuntu-telefon."
752747
748+#~ msgid "Roaming"
749+#~ msgstr "Roaming"
750+
753751#~ msgid "%a %d %b %H:%M"
754752#~ msgstr "%a %b. %d %H:%M"
755753
po/de.po+24−24
@@ -7,16 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
11−"PO-Revision-Date: 2015-07-24 18:03+0000\n"
12−"Last-Translator: Torsten Franz <Unknown>\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11+"PO-Revision-Date: 2016-02-17 19:16+0000\n"
12+"Last-Translator: schuko24 <gerdsaenger@t-online.de>\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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -179,38 +179,38 @@ msgstr "Jetzt verbinden!"
179179msgid "Close all"
180180msgstr "Alle schließen"
181181
182−#: qml/Dash/DashPageHeader.qml:266
182+#: qml/Dash/DashPageHeader.qml:270
183183msgctxt "Button: Open the Ubuntu Store"
184184msgid "Store"
185185msgstr "Speichern"
186186
187−#: qml/Dash/DashPageHeader.qml:273
187+#: qml/Dash/DashPageHeader.qml:277
188188msgctxt "Button: Start a search in the current dash scope"
189189msgid "Search"
190190msgstr "Suchen"
191191
192−#: qml/Dash/DashPageHeader.qml:283
192+#: qml/Dash/DashPageHeader.qml:287
193193msgctxt "Button: Show the current dash scope settings"
194194msgid "Settings"
195195msgstr "Einstellungen"
196196
197−#: qml/Dash/DashPageHeader.qml:290
197+#: qml/Dash/DashPageHeader.qml:294
198198msgid "Remove from Favorites"
199199msgstr "Aus den Favoriten entfernen"
200200
201−#: qml/Dash/DashPageHeader.qml:290
201+#: qml/Dash/DashPageHeader.qml:294
202202msgid "Add to Favorites"
203203msgstr "Zu Favoriten hinzufügen"
204204
205−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
205+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
206206msgid "See less"
207207msgstr "Weniger ansehen"
208208
209−#: qml/Dash/GenericScopeView.qml:587
209+#: qml/Dash/GenericScopeView.qml:565
210210msgid "See all"
211211msgstr "Alle anzeigen"
212212
213−#: qml/Dash/GenericScopeView.qml:649
213+#: qml/Dash/GenericScopeView.qml:627
214214msgctxt "Label: Hint for dash search line edit"
215215msgid "Search"
216216msgstr "Suchen"
@@ -269,6 +269,8 @@ msgid ""
269269"Your device is now connected to an external display. Use this screen as a "
270270"touch pad to interact with the mouse."
271271msgstr ""
272+"Ihr Gerät ist nun mit einer externen Anzeige verbunden. Benutzen Sie diesen "
273+"Bildschirm als Touchpad zur Steuerung des Mauszeigers."
272274
273275#: qml/Greeter/CoverPage.qml:107
274276msgid "Unlock"
@@ -428,14 +430,6 @@ msgctxt "Button: Call back on phone"
428430msgid "Call back"
429431msgstr "Zurückrufen"
430432
431−#: qml/Panel/Indicators/ModemInfoItem.qml:105
432−msgid "Unlock SIM"
433−msgstr "SIM-Karte entsperren"
434−
435−#: qml/Panel/Indicators/RoamingIndication.qml:27
436−msgid "Roaming"
437−msgstr "Roaming"
438−
439433#: qml/Tutorial/TutorialBottom.qml:28
440434msgid "Open special menus"
441435msgstr "Spezielle Menüs öffnen"
@@ -501,7 +495,7 @@ msgstr "Hallo!"
501495
502496#: qml/Wizard/Pages/10-welcome.qml:44
503497msgid "Welcome to your Ubuntu device."
504−msgstr ""
498+msgstr "Willkommen auf Ihrem Ubuntu-Gerät."
505499
506500#: qml/Wizard/Pages/10-welcome.qml:52
507501msgid "Let’s get started."
@@ -532,7 +526,7 @@ msgstr "Sicherheit nach dem Sperren"
532526
533527#: qml/Wizard/Pages/30-passwd-type.qml:79
534528msgid "Please select how you’d like to unlock your device."
535−msgstr ""
529+msgstr "Bitte wählen Sie, wie Sie dieses Gerät entsperren möchten."
536530
537531#: qml/Wizard/Pages/30-passwd-type.qml:102
538532msgctxt "Label: Type of security method"
@@ -641,7 +635,7 @@ msgstr "Gute Arbeit!"
641635
642636#: qml/Wizard/Pages/80-finished.qml:46
643637msgid "Your device is now ready to use."
644−msgstr ""
638+msgstr "Ihr Gerät ist nun einsatzbereit."
645639
646640#: qml/Wizard/Pages/80-finished.qml:53
647641msgid "Finish"
@@ -748,6 +742,9 @@ msgstr "%1 〉"
748742#~ msgid "All"
749743#~ msgstr "Alle"
750744
745+#~ msgid "Roaming"
746+#~ msgstr "Roaming"
747+
751748#~ msgid "Done"
752749#~ msgstr "Erledigt"
753750
@@ -775,6 +772,9 @@ msgstr "%1 〉"
775772#~ msgid "Restart"
776773#~ msgstr "Neustarten"
777774
775+#~ msgid "Unlock SIM"
776+#~ msgstr "SIM-Karte entsperren"
777+
778778#~ msgid "Manage Scopes"
779779#~ msgstr "Filter verwalten"
780780
po/el.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"PO-Revision-Date: 2015-12-04 09:38+0000\n"
1212"Last-Translator: Aggelos Arnaoutis <angelosarn@hotmail.com>\n"
1313"Language-Team: Greek <el@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -179,38 +179,38 @@ msgstr "Επανασύνδεση τώρα!"
179179msgid "Close all"
180180msgstr "Κλείσιμο όλων"
181181
182−#: qml/Dash/DashPageHeader.qml:266
182+#: qml/Dash/DashPageHeader.qml:270
183183msgctxt "Button: Open the Ubuntu Store"
184184msgid "Store"
185185msgstr "Κατάστημα"
186186
187−#: qml/Dash/DashPageHeader.qml:273
187+#: qml/Dash/DashPageHeader.qml:277
188188msgctxt "Button: Start a search in the current dash scope"
189189msgid "Search"
190190msgstr "Αναζήτηση"
191191
192−#: qml/Dash/DashPageHeader.qml:283
192+#: qml/Dash/DashPageHeader.qml:287
193193msgctxt "Button: Show the current dash scope settings"
194194msgid "Settings"
195195msgstr "Ρυθμίσεις"
196196
197−#: qml/Dash/DashPageHeader.qml:290
197+#: qml/Dash/DashPageHeader.qml:294
198198msgid "Remove from Favorites"
199199msgstr "Αφαίρεση από τα αγαπημένα"
200200
201−#: qml/Dash/DashPageHeader.qml:290
201+#: qml/Dash/DashPageHeader.qml:294
202202msgid "Add to Favorites"
203203msgstr "Προσθήκη στα αγαπημένα"
204204
205−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
205+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
206206msgid "See less"
207207msgstr "Λιγότερα"
208208
209−#: qml/Dash/GenericScopeView.qml:587
209+#: qml/Dash/GenericScopeView.qml:565
210210msgid "See all"
211211msgstr "Εμφάνιση όλων"
212212
213−#: qml/Dash/GenericScopeView.qml:649
213+#: qml/Dash/GenericScopeView.qml:627
214214msgctxt "Label: Hint for dash search line edit"
215215msgid "Search"
216216msgstr "Αναζήτηση"
@@ -430,14 +430,6 @@ msgctxt "Button: Call back on phone"
430430msgid "Call back"
431431msgstr "Επανάκληση"
432432
433−#: qml/Panel/Indicators/ModemInfoItem.qml:105
434−msgid "Unlock SIM"
435−msgstr "Ξεκλείδωμα SIM"
436−
437−#: qml/Panel/Indicators/RoamingIndication.qml:27
438−msgid "Roaming"
439−msgstr "Περιαγωγή"
440−
441433#: qml/Tutorial/TutorialBottom.qml:28
442434msgid "Open special menus"
443435msgstr "Άνοιγμα ειδικών μενού"
@@ -756,6 +748,12 @@ msgstr "%1 〉"
756748#~ msgid "All"
757749#~ msgstr "Όλα"
758750
751+#~ msgid "Unlock SIM"
752+#~ msgstr "Ξεκλείδωμα SIM"
753+
754+#~ msgid "Roaming"
755+#~ msgstr "Περιαγωγή"
756+
759757#~ msgid "Favorites"
760758#~ msgstr "Αγαπημένα"
761759
po/en_AU.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"PO-Revision-Date: 2016-02-12 23:22+0000\n"
1212"Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
1313"Language-Team: English (Australia) <en_AU@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -173,38 +173,38 @@ msgstr "Reconnect now!"
173173msgid "Close all"
174174msgstr "Close all"
175175
176−#: qml/Dash/DashPageHeader.qml:266
176+#: qml/Dash/DashPageHeader.qml:270
177177msgctxt "Button: Open the Ubuntu Store"
178178msgid "Store"
179179msgstr "Store"
180180
181−#: qml/Dash/DashPageHeader.qml:273
181+#: qml/Dash/DashPageHeader.qml:277
182182msgctxt "Button: Start a search in the current dash scope"
183183msgid "Search"
184184msgstr "Search"
185185
186−#: qml/Dash/DashPageHeader.qml:283
186+#: qml/Dash/DashPageHeader.qml:287
187187msgctxt "Button: Show the current dash scope settings"
188188msgid "Settings"
189189msgstr "Settings"
190190
191−#: qml/Dash/DashPageHeader.qml:290
191+#: qml/Dash/DashPageHeader.qml:294
192192msgid "Remove from Favorites"
193193msgstr "Remove from Favourites"
194194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196196msgid "Add to Favorites"
197197msgstr "Add to Favourites"
198198
199−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
199+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
200200msgid "See less"
201201msgstr "See less"
202202
203−#: qml/Dash/GenericScopeView.qml:587
203+#: qml/Dash/GenericScopeView.qml:565
204204msgid "See all"
205205msgstr "See all"
206206
207−#: qml/Dash/GenericScopeView.qml:649
207+#: qml/Dash/GenericScopeView.qml:627
208208msgctxt "Label: Hint for dash search line edit"
209209msgid "Search"
210210msgstr "Search"
@@ -424,14 +424,6 @@ msgctxt "Button: Call back on phone"
424424msgid "Call back"
425425msgstr "Call back"
426426
427−#: qml/Panel/Indicators/ModemInfoItem.qml:105
428−msgid "Unlock SIM"
429−msgstr "Unlock SIM"
430−
431−#: qml/Panel/Indicators/RoamingIndication.qml:27
432−msgid "Roaming"
433−msgstr "Roaming"
434−
435427#: qml/Tutorial/TutorialBottom.qml:28
436428msgid "Open special menus"
437429msgstr "Open special menus"
@@ -735,6 +727,9 @@ msgstr "%1 〉"
735727#~ msgid "All"
736728#~ msgstr "All"
737729
730+#~ msgid "Unlock SIM"
731+#~ msgstr "Unlock SIM"
732+
738733#~ msgid "Favorites"
739734#~ msgstr "Favourites"
740735
@@ -747,6 +742,9 @@ msgstr "%1 〉"
747742#~ msgid "Done"
748743#~ msgstr "Done"
749744
745+#~ msgid "Roaming"
746+#~ msgstr "Roaming"
747+
750748#~ msgid "Log out"
751749#~ msgstr "Log out"
752750
po/en_GB.po+20−22
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -173,38 +173,38 @@ msgstr "Reconnect now!"
173173msgid "Close all"
174174msgstr "Close all"
175175
176−#: qml/Dash/DashPageHeader.qml:266
176+#: qml/Dash/DashPageHeader.qml:270
177177msgctxt "Button: Open the Ubuntu Store"
178178msgid "Store"
179179msgstr "Store"
180180
181−#: qml/Dash/DashPageHeader.qml:273
181+#: qml/Dash/DashPageHeader.qml:277
182182msgctxt "Button: Start a search in the current dash scope"
183183msgid "Search"
184184msgstr "Search"
185185
186−#: qml/Dash/DashPageHeader.qml:283
186+#: qml/Dash/DashPageHeader.qml:287
187187msgctxt "Button: Show the current dash scope settings"
188188msgid "Settings"
189189msgstr "Settings"
190190
191−#: qml/Dash/DashPageHeader.qml:290
191+#: qml/Dash/DashPageHeader.qml:294
192192msgid "Remove from Favorites"
193193msgstr "Remove from Favourites"
194194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196196msgid "Add to Favorites"
197197msgstr "Add to Favourites"
198198
199−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
199+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
200200msgid "See less"
201201msgstr "See less"
202202
203−#: qml/Dash/GenericScopeView.qml:587
203+#: qml/Dash/GenericScopeView.qml:565
204204msgid "See all"
205205msgstr "See all"
206206
207−#: qml/Dash/GenericScopeView.qml:649
207+#: qml/Dash/GenericScopeView.qml:627
208208msgctxt "Label: Hint for dash search line edit"
209209msgid "Search"
210210msgstr "Search"
@@ -424,14 +424,6 @@ msgctxt "Button: Call back on phone"
424424msgid "Call back"
425425msgstr "Call back"
426426
427−#: qml/Panel/Indicators/ModemInfoItem.qml:105
428−msgid "Unlock SIM"
429−msgstr "Unlock SIM"
430−
431−#: qml/Panel/Indicators/RoamingIndication.qml:27
432−msgid "Roaming"
433−msgstr "Roaming"
434−
435427#: qml/Tutorial/TutorialBottom.qml:28
436428msgid "Open special menus"
437429msgstr "Open special menus"
@@ -496,7 +488,7 @@ msgstr "Hi!"
496488
497489#: qml/Wizard/Pages/10-welcome.qml:44
498490msgid "Welcome to your Ubuntu device."
499−msgstr ""
491+msgstr "Welcome to your Ubuntu device."
500492
501493#: qml/Wizard/Pages/10-welcome.qml:52
502494msgid "Let’s get started."
@@ -527,7 +519,7 @@ msgstr "Lock security"
527519
528520#: qml/Wizard/Pages/30-passwd-type.qml:79
529521msgid "Please select how you’d like to unlock your device."
530−msgstr ""
522+msgstr "Please select how you would like to unlock your device."
531523
532524#: qml/Wizard/Pages/30-passwd-type.qml:102
533525msgctxt "Label: Type of security method"
@@ -634,7 +626,7 @@ msgstr "Nice work!"
634626
635627#: qml/Wizard/Pages/80-finished.qml:46
636628msgid "Your device is now ready to use."
637−msgstr ""
629+msgstr "Your device is now ready to use."
638630
639631#: qml/Wizard/Pages/80-finished.qml:53
640632msgid "Finish"
@@ -738,6 +730,9 @@ msgstr "%1 〉"
738730#~ msgid "All"
739731#~ msgstr "All"
740732
733+#~ msgid "Unlock SIM"
734+#~ msgstr "Unlock SIM"
735+
741736#~ msgid "Favorites"
742737#~ msgstr "Favourites"
743738
@@ -747,6 +742,9 @@ msgstr "%1 〉"
747742#~ msgid "Done"
748743#~ msgstr "Done"
749744
745+#~ msgid "Roaming"
746+#~ msgstr "Roaming"
747+
750748#~ msgid "Log out"
751749#~ msgstr "Log out"
752750
po/eo.po+53−28
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"PO-Revision-Date: 2015-06-06 23:37+0000\n"
1212"Last-Translator: Eliovir <Unknown>\n"
1313"Language-Team: Esperanto <eo@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -29,7 +29,7 @@ msgstr ""
2929
3030#: plugins/Unity/Launcher/launcheritem.cpp:52
3131msgid "Quit"
32−msgstr ""
32+msgstr "Ĉesi"
3333
3434#: plugins/Unity/Launcher/launcheritem.cpp:106
3535msgid "Unpin shortcut"
@@ -37,7 +37,7 @@ msgstr ""
3737
3838#: qml/Components/DelayedLockscreen.qml:49
3939msgid "Device Locked"
40−msgstr ""
40+msgstr "Aparato ŝlosita"
4141
4242#: qml/Components/DelayedLockscreen.qml:64
4343msgid "You have been locked out due to too many failed passphrase attempts."
@@ -171,38 +171,38 @@ msgstr ""
171171msgid "Close all"
172172msgstr ""
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177−msgstr ""
177+msgstr "Programarejo"
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr "Serĉi"
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr "Agordoj"
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr ""
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr "Aldoni al favoritoj"
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr ""
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr ""
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr "Serĉi"
@@ -213,7 +213,7 @@ msgstr "Pli…"
213213
214214#: qml/Dash/Previews/PreviewActionCombo.qml:35
215215msgid "Less..."
216−msgstr ""
216+msgstr "Malpli..."
217217
218218#: qml/Dash/Previews/PreviewCommentInput.qml:68
219219#: qml/Dash/Previews/PreviewRatingInput.qml:174
@@ -246,11 +246,11 @@ msgstr ""
246246
247247#: qml/Dash/ScopesList.qml:67
248248msgid "Manage"
249−msgstr ""
249+msgstr "Administri"
250250
251251#: qml/Dash/ScopesList.qml:113
252252msgid "Home"
253−msgstr ""
253+msgstr "Hejmo"
254254
255255#: qml/Dash/ScopesList.qml:114
256256msgid "Also installed"
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416416msgid "Call back"
417417msgstr ""
418418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr "Retmigrado"
426−
427419#: qml/Tutorial/TutorialBottom.qml:28
428420msgid "Open special menus"
429421msgstr ""
@@ -544,12 +536,12 @@ msgstr ""
544536#: qml/Wizard/Pages/30-passwd-type.qml:108
545537msgctxt "Label: Type of security method"
546538msgid "Passphrase"
547−msgstr ""
539+msgstr "Pasfrazo"
548540
549541#: qml/Wizard/Pages/30-passwd-type.qml:109
550542msgctxt "Label: Description of security method"
551543msgid "Numbers and letters"
552−msgstr ""
544+msgstr "Ciferoj kaj literoj"
553545
554546#: qml/Wizard/Pages/40-wifi.qml:29
555547msgid "Connect to Wi‑Fi"
@@ -616,7 +608,7 @@ msgstr ""
616608
617609#: qml/Wizard/Pages/80-finished.qml:39
618610msgid "Nice work!"
619−msgstr ""
611+msgstr "Bone farita!"
620612
621613#: qml/Wizard/Pages/80-finished.qml:46
622614msgid "Your device is now ready to use."
@@ -663,5 +655,38 @@ msgstr "〈 %1"
663655msgid "%1 〉"
664656msgstr "%1 〉"
665657
658+#~ msgid "Roaming"
659+#~ msgstr "Retmigrado"
660+
666661#~ msgid "Welcome to your Ubuntu phone."
667662#~ msgstr "Bonvenon al via Ubuntu-telefono."
663+
664+#~ msgid "%a %l:%M %p"
665+#~ msgstr "%a %l:%M %p"
666+
667+#~ msgid "Tomorrow %l:%M %p"
668+#~ msgstr "Morgaŭ %l:%M %p"
669+
670+#~ msgid "%l:%M %p"
671+#~ msgstr "%l:%M %p"
672+
673+#~ msgid "Yesterday %l:%M %p"
674+#~ msgstr "Hieraŭ %l:%M %p"
675+
676+#~ msgid "%H:%M"
677+#~ msgstr "%H:%M"
678+
679+#~ msgid "Yesterday %H:%M"
680+#~ msgstr "Hieraŭ %H:%M"
681+
682+#~ msgid "%a %d %b %l:%M %p"
683+#~ msgstr "%a %d %b %l:%M %p"
684+
685+#~ msgid "%a %d %b %H:%M"
686+#~ msgstr "%a %d %b %H:%M"
687+
688+#~ msgid "%a %H:%M"
689+#~ msgstr "%a %H:%M"
690+
691+#~ msgid "Tomorrow %H:%M"
692+#~ msgstr "Morgaŭ %H:%M"
po/es.po+20−22
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"PO-Revision-Date: 2016-01-15 14:48+0000\n"
1212"Last-Translator: Víctor R. Ruiz <Unknown>\n"
1313"Language-Team: Spanish <es@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -179,38 +179,38 @@ msgstr "¡Reconectar ahora!"
179179msgid "Close all"
180180msgstr "Cerrar todo"
181181
182−#: qml/Dash/DashPageHeader.qml:266
182+#: qml/Dash/DashPageHeader.qml:270
183183msgctxt "Button: Open the Ubuntu Store"
184184msgid "Store"
185185msgstr "Tienda"
186186
187−#: qml/Dash/DashPageHeader.qml:273
187+#: qml/Dash/DashPageHeader.qml:277
188188msgctxt "Button: Start a search in the current dash scope"
189189msgid "Search"
190190msgstr "Buscar"
191191
192−#: qml/Dash/DashPageHeader.qml:283
192+#: qml/Dash/DashPageHeader.qml:287
193193msgctxt "Button: Show the current dash scope settings"
194194msgid "Settings"
195195msgstr "Ajustes"
196196
197−#: qml/Dash/DashPageHeader.qml:290
197+#: qml/Dash/DashPageHeader.qml:294
198198msgid "Remove from Favorites"
199199msgstr "Quitar de favoritos"
200200
201−#: qml/Dash/DashPageHeader.qml:290
201+#: qml/Dash/DashPageHeader.qml:294
202202msgid "Add to Favorites"
203203msgstr "Añadir a favoritos"
204204
205−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
205+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
206206msgid "See less"
207207msgstr "Ver menos"
208208
209−#: qml/Dash/GenericScopeView.qml:587
209+#: qml/Dash/GenericScopeView.qml:565
210210msgid "See all"
211211msgstr "Ver todo"
212212
213−#: qml/Dash/GenericScopeView.qml:649
213+#: qml/Dash/GenericScopeView.qml:627
214214msgctxt "Label: Hint for dash search line edit"
215215msgid "Search"
216216msgstr "Búsqueda"
@@ -430,14 +430,6 @@ msgctxt "Button: Call back on phone"
430430msgid "Call back"
431431msgstr "Devolver llamada"
432432
433−#: qml/Panel/Indicators/ModemInfoItem.qml:105
434−msgid "Unlock SIM"
435−msgstr "Desbloquear SIM"
436−
437−#: qml/Panel/Indicators/RoamingIndication.qml:27
438−msgid "Roaming"
439−msgstr "Itinerancia"
440−
441433#: qml/Tutorial/TutorialBottom.qml:28
442434msgid "Open special menus"
443435msgstr "Abrir menús especiales"
@@ -502,7 +494,7 @@ msgstr "¡Hola!"
502494
503495#: qml/Wizard/Pages/10-welcome.qml:44
504496msgid "Welcome to your Ubuntu device."
505−msgstr ""
497+msgstr "Bienvenido a su dispositivo Ubuntu."
506498
507499#: qml/Wizard/Pages/10-welcome.qml:52
508500msgid "Let’s get started."
@@ -533,7 +525,7 @@ msgstr "Seguridad de bloqueo"
533525
534526#: qml/Wizard/Pages/30-passwd-type.qml:79
535527msgid "Please select how you’d like to unlock your device."
536−msgstr ""
528+msgstr "Por favor, seleccione cómo desea desbloquear el dispositivo."
537529
538530#: qml/Wizard/Pages/30-passwd-type.qml:102
539531msgctxt "Label: Type of security method"
@@ -640,7 +632,7 @@ msgstr "¡Buen trabajo!"
640632
641633#: qml/Wizard/Pages/80-finished.qml:46
642634msgid "Your device is now ready to use."
643−msgstr ""
635+msgstr "El dispositivo ya está listo."
644636
645637#: qml/Wizard/Pages/80-finished.qml:53
646638msgid "Finish"
@@ -744,9 +736,15 @@ msgstr "%1 〉"
744736#~ msgid "Power off"
745737#~ msgstr "Apagar"
746738
739+#~ msgid "Roaming"
740+#~ msgstr "Itinerancia"
741+
747742#~ msgid "All"
748743#~ msgstr "Todo"
749744
745+#~ msgid "Unlock SIM"
746+#~ msgstr "Desbloquear SIM"
747+
750748#~ msgid "Favorites"
751749#~ msgstr "Favoritos"
752750
po/eu.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:57+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -174,38 +174,38 @@ msgstr ""
174174msgid "Close all"
175175msgstr ""
176176
177−#: qml/Dash/DashPageHeader.qml:266
177+#: qml/Dash/DashPageHeader.qml:270
178178msgctxt "Button: Open the Ubuntu Store"
179179msgid "Store"
180180msgstr "Denda"
181181
182−#: qml/Dash/DashPageHeader.qml:273
182+#: qml/Dash/DashPageHeader.qml:277
183183msgctxt "Button: Start a search in the current dash scope"
184184msgid "Search"
185185msgstr "Bilatu"
186186
187−#: qml/Dash/DashPageHeader.qml:283
187+#: qml/Dash/DashPageHeader.qml:287
188188msgctxt "Button: Show the current dash scope settings"
189189msgid "Settings"
190190msgstr "Ezarpenak"
191191
192−#: qml/Dash/DashPageHeader.qml:290
192+#: qml/Dash/DashPageHeader.qml:294
193193msgid "Remove from Favorites"
194194msgstr "Kendu gogokoetatik"
195195
196−#: qml/Dash/DashPageHeader.qml:290
196+#: qml/Dash/DashPageHeader.qml:294
197197msgid "Add to Favorites"
198198msgstr "Gehitu gogokoetara"
199199
200−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
200+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
201201msgid "See less"
202202msgstr "Ikusi gutxiago"
203203
204−#: qml/Dash/GenericScopeView.qml:587
204+#: qml/Dash/GenericScopeView.qml:565
205205msgid "See all"
206206msgstr "Ikusi guztiak"
207207
208−#: qml/Dash/GenericScopeView.qml:649
208+#: qml/Dash/GenericScopeView.qml:627
209209msgctxt "Label: Hint for dash search line edit"
210210msgid "Search"
211211msgstr "Bilatu"
@@ -423,14 +423,6 @@ msgctxt "Button: Call back on phone"
423423msgid "Call back"
424424msgstr ""
425425
426−#: qml/Panel/Indicators/ModemInfoItem.qml:105
427−msgid "Unlock SIM"
428−msgstr "Desblokeatu SIMa"
429−
430−#: qml/Panel/Indicators/RoamingIndication.qml:27
431−msgid "Roaming"
432−msgstr "Ibiltaritza"
433−
434426#: qml/Tutorial/TutorialBottom.qml:28
435427msgid "Open special menus"
436428msgstr "Ireki menu bereziak"
@@ -749,6 +741,12 @@ msgstr "%1 〉"
749741#~ msgid "All"
750742#~ msgstr "Guztiak"
751743
744+#~ msgid "Unlock SIM"
745+#~ msgstr "Desblokeatu SIMa"
746+
747+#~ msgid "Roaming"
748+#~ msgstr "Ibiltaritza"
749+
752750#~ msgid "Favorites"
753751#~ msgstr "Gogokoak"
754752
po/fa.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -174,38 +174,38 @@ msgstr "هم‌اکنون دوباره وصل شود"
174174msgid "Close all"
175175msgstr "بستن همه"
176176
177−#: qml/Dash/DashPageHeader.qml:266
177+#: qml/Dash/DashPageHeader.qml:270
178178msgctxt "Button: Open the Ubuntu Store"
179179msgid "Store"
180180msgstr "ذخیره"
181181
182−#: qml/Dash/DashPageHeader.qml:273
182+#: qml/Dash/DashPageHeader.qml:277
183183msgctxt "Button: Start a search in the current dash scope"
184184msgid "Search"
185185msgstr "جست‌وجو"
186186
187−#: qml/Dash/DashPageHeader.qml:283
187+#: qml/Dash/DashPageHeader.qml:287
188188msgctxt "Button: Show the current dash scope settings"
189189msgid "Settings"
190190msgstr "تنظیمات"
191191
192−#: qml/Dash/DashPageHeader.qml:290
192+#: qml/Dash/DashPageHeader.qml:294
193193msgid "Remove from Favorites"
194194msgstr "برداشتن از برگزیده‌ها"
195195
196−#: qml/Dash/DashPageHeader.qml:290
196+#: qml/Dash/DashPageHeader.qml:294
197197msgid "Add to Favorites"
198198msgstr "افزودن به برگزیده‌ها"
199199
200−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
200+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
201201msgid "See less"
202202msgstr "کم‌تر ببینید"
203203
204−#: qml/Dash/GenericScopeView.qml:587
204+#: qml/Dash/GenericScopeView.qml:565
205205msgid "See all"
206206msgstr "دیدن همه"
207207
208−#: qml/Dash/GenericScopeView.qml:649
208+#: qml/Dash/GenericScopeView.qml:627
209209msgctxt "Label: Hint for dash search line edit"
210210msgid "Search"
211211msgstr "جست‌وجو"
@@ -420,14 +420,6 @@ msgctxt "Button: Call back on phone"
420420msgid "Call back"
421421msgstr "پاسخ تماس"
422422
423−#: qml/Panel/Indicators/ModemInfoItem.qml:105
424−msgid "Unlock SIM"
425−msgstr "باز کردن قفل سیم‌کارت"
426−
427−#: qml/Panel/Indicators/RoamingIndication.qml:27
428−msgid "Roaming"
429−msgstr "رومینگ"
430−
431423#: qml/Tutorial/TutorialBottom.qml:28
432424msgid "Open special menus"
433425msgstr "باز کردن فهرست‌های مخصوص"
@@ -733,6 +725,9 @@ msgstr "%1 〉"
733725#~ msgid "All"
734726#~ msgstr "همه"
735727
728+#~ msgid "Unlock SIM"
729+#~ msgstr "باز کردن قفل سیم‌کارت"
730+
736731#~ msgid "Favorites"
737732#~ msgstr "برگزیده‌ها"
738733
@@ -745,6 +740,9 @@ msgstr "%1 〉"
745740#~ msgid "Done"
746741#~ msgstr "انجام شد"
747742
743+#~ msgid "Roaming"
744+#~ msgstr "رومینگ"
745+
748746#~ msgid "Power"
749747#~ msgstr "توان"
750748
po/fi.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -177,38 +177,38 @@ msgstr "Yhdistä uudelleen nyt!"
177177msgid "Close all"
178178msgstr "Sulje kaikki"
179179
180−#: qml/Dash/DashPageHeader.qml:266
180+#: qml/Dash/DashPageHeader.qml:270
181181msgctxt "Button: Open the Ubuntu Store"
182182msgid "Store"
183183msgstr "Kauppa"
184184
185−#: qml/Dash/DashPageHeader.qml:273
185+#: qml/Dash/DashPageHeader.qml:277
186186msgctxt "Button: Start a search in the current dash scope"
187187msgid "Search"
188188msgstr "Etsi"
189189
190−#: qml/Dash/DashPageHeader.qml:283
190+#: qml/Dash/DashPageHeader.qml:287
191191msgctxt "Button: Show the current dash scope settings"
192192msgid "Settings"
193193msgstr "Asetukset"
194194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196196msgid "Remove from Favorites"
197197msgstr "Poista suosikeista"
198198
199−#: qml/Dash/DashPageHeader.qml:290
199+#: qml/Dash/DashPageHeader.qml:294
200200msgid "Add to Favorites"
201201msgstr "Lisää suosikkeihin"
202202
203−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
203+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
204204msgid "See less"
205205msgstr "Näytä vähemmän"
206206
207−#: qml/Dash/GenericScopeView.qml:587
207+#: qml/Dash/GenericScopeView.qml:565
208208msgid "See all"
209209msgstr "Näytä kaikki"
210210
211−#: qml/Dash/GenericScopeView.qml:649
211+#: qml/Dash/GenericScopeView.qml:627
212212msgctxt "Label: Hint for dash search line edit"
213213msgid "Search"
214214msgstr "Etsi"
@@ -428,14 +428,6 @@ msgctxt "Button: Call back on phone"
428428msgid "Call back"
429429msgstr "Soita takaisin"
430430
431−#: qml/Panel/Indicators/ModemInfoItem.qml:105
432−msgid "Unlock SIM"
433−msgstr "Avaa SIM-kortin lukitus"
434−
435−#: qml/Panel/Indicators/RoamingIndication.qml:27
436−msgid "Roaming"
437−msgstr "Verkkovierailu"
438−
439431#: qml/Tutorial/TutorialBottom.qml:28
440432msgid "Open special menus"
441433msgstr "Avaa erikoisvalikot"
@@ -737,6 +729,9 @@ msgstr "%1 〉"
737729#~ "Hallitset nyt reunaeleet, joten voit aloittaa puhelimen "
738730#~ "käytön<br><br>Napauta näyttöä aloittaaksesi"
739731
732+#~ msgid "Unlock SIM"
733+#~ msgstr "Avaa SIM-kortin lukitus"
734+
740735#~ msgid "All"
741736#~ msgstr "Kaikki"
742737
@@ -752,6 +747,9 @@ msgstr "%1 〉"
752747#~ msgid "Done"
753748#~ msgstr "Valmis"
754749
750+#~ msgid "Roaming"
751+#~ msgstr "Verkkovierailu"
752+
755753#~ msgid "Log out"
756754#~ msgstr "Kirjaudu ulos"
757755
po/fo.po+11−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171171msgid "Close all"
172172msgstr ""
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177177msgstr ""
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr ""
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr ""
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr ""
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr ""
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr ""
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416416msgid "Call back"
417417msgstr ""
418418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427419#: qml/Tutorial/TutorialBottom.qml:28
428420msgid "Open special menus"
429421msgstr ""
po/fr.po+22−22
@@ -7,16 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
11−"PO-Revision-Date: 2016-02-13 09:30+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11+"PO-Revision-Date: 2016-02-28 17:22+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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -181,38 +181,38 @@ msgstr "Se reconnecter maintenant !"
181181msgid "Close all"
182182msgstr "Tout fermer"
183183
184−#: qml/Dash/DashPageHeader.qml:266
184+#: qml/Dash/DashPageHeader.qml:270
185185msgctxt "Button: Open the Ubuntu Store"
186186msgid "Store"
187187msgstr "Logithèque"
188188
189−#: qml/Dash/DashPageHeader.qml:273
189+#: qml/Dash/DashPageHeader.qml:277
190190msgctxt "Button: Start a search in the current dash scope"
191191msgid "Search"
192192msgstr "Rechercher"
193193
194−#: qml/Dash/DashPageHeader.qml:283
194+#: qml/Dash/DashPageHeader.qml:287
195195msgctxt "Button: Show the current dash scope settings"
196196msgid "Settings"
197197msgstr "Paramètres"
198198
199−#: qml/Dash/DashPageHeader.qml:290
199+#: qml/Dash/DashPageHeader.qml:294
200200msgid "Remove from Favorites"
201201msgstr "Retirer des favoris"
202202
203−#: qml/Dash/DashPageHeader.qml:290
203+#: qml/Dash/DashPageHeader.qml:294
204204msgid "Add to Favorites"
205205msgstr "Ajouter aux favoris"
206206
207−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
207+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
208208msgid "See less"
209209msgstr "Voir moins"
210210
211−#: qml/Dash/GenericScopeView.qml:587
211+#: qml/Dash/GenericScopeView.qml:565
212212msgid "See all"
213213msgstr "Tout voir"
214214
215−#: qml/Dash/GenericScopeView.qml:649
215+#: qml/Dash/GenericScopeView.qml:627
216216msgctxt "Label: Hint for dash search line edit"
217217msgid "Search"
218218msgstr "Rechercher"
@@ -434,14 +434,6 @@ msgctxt "Button: Call back on phone"
434434msgid "Call back"
435435msgstr "Rappeler"
436436
437−#: qml/Panel/Indicators/ModemInfoItem.qml:105
438−msgid "Unlock SIM"
439−msgstr "Déverrouiller la carte SIM"
440−
441−#: qml/Panel/Indicators/RoamingIndication.qml:27
442−msgid "Roaming"
443−msgstr "Roaming"
444−
445437#: qml/Tutorial/TutorialBottom.qml:28
446438msgid "Open special menus"
447439msgstr "Ouvrir les menus spéciaux"
@@ -506,7 +498,7 @@ msgstr "Salut !"
506498
507499#: qml/Wizard/Pages/10-welcome.qml:44
508500msgid "Welcome to your Ubuntu device."
509−msgstr ""
501+msgstr "Bienvenue sur votre appareil Ubuntu."
510502
511503#: qml/Wizard/Pages/10-welcome.qml:52
512504msgid "Let’s get started."
@@ -540,6 +532,8 @@ msgstr "Sécurité de verrouillage"
540532#: qml/Wizard/Pages/30-passwd-type.qml:79
541533msgid "Please select how you’d like to unlock your device."
542534msgstr ""
535+"Veuillez sélectionner la façon dont vous souhaitez déverrouiller votre "
536+"appareil."
543537
544538#: qml/Wizard/Pages/30-passwd-type.qml:102
545539msgctxt "Label: Type of security method"
@@ -649,7 +643,7 @@ msgstr "Beau travail !"
649643
650644#: qml/Wizard/Pages/80-finished.qml:46
651645msgid "Your device is now ready to use."
652−msgstr ""
646+msgstr "Votre appareil est maintenant prêt à être utilisé."
653647
654648#: qml/Wizard/Pages/80-finished.qml:53
655649msgid "Finish"
@@ -754,6 +748,9 @@ msgstr "%1 〉"
754748#~ "Faites glisser votre doigt à partir du bord gauche pour afficher le lanceur "
755749#~ "d'applications."
756750
751+#~ msgid "Unlock SIM"
752+#~ msgstr "Déverrouiller la carte SIM"
753+
757754#~ msgid "Power off"
758755#~ msgstr "Éteindre"
759756
@@ -769,6 +766,9 @@ msgstr "%1 〉"
769766#~ msgid "Favorites"
770767#~ msgstr "Favorites"
771768
769+#~ msgid "Roaming"
770+#~ msgstr "Roaming"
771+
772772#~ msgid "Log out"
773773#~ msgstr "Se déconnecter"
774774
po/ga.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"PO-Revision-Date: 2016-01-25 11:33+0000\n"
1212"Last-Translator: Joshua Kiley <Unknown>\n"
1313"Language-Team: Irish <ga@li.org>\n"
@@ -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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -174,38 +174,38 @@ msgstr "Athnasc anois!"
174174msgid "Close all"
175175msgstr "Dún Gach Rud"
176176
177−#: qml/Dash/DashPageHeader.qml:266
177+#: qml/Dash/DashPageHeader.qml:270
178178msgctxt "Button: Open the Ubuntu Store"
179179msgid "Store"
180180msgstr "Siopa"
181181
182−#: qml/Dash/DashPageHeader.qml:273
182+#: qml/Dash/DashPageHeader.qml:277
183183msgctxt "Button: Start a search in the current dash scope"
184184msgid "Search"
185185msgstr "Cuardach"
186186
187−#: qml/Dash/DashPageHeader.qml:283
187+#: qml/Dash/DashPageHeader.qml:287
188188msgctxt "Button: Show the current dash scope settings"
189189msgid "Settings"
190190msgstr "Socruithe"
191191
192−#: qml/Dash/DashPageHeader.qml:290
192+#: qml/Dash/DashPageHeader.qml:294
193193msgid "Remove from Favorites"
194194msgstr "Bain ó Cheanáin"
195195
196−#: qml/Dash/DashPageHeader.qml:290
196+#: qml/Dash/DashPageHeader.qml:294
197197msgid "Add to Favorites"
198198msgstr "Cuir le Ceanáin"
199199
200−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
200+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
201201msgid "See less"
202202msgstr "Taispeáin níos lú"
203203
204−#: qml/Dash/GenericScopeView.qml:587
204+#: qml/Dash/GenericScopeView.qml:565
205205msgid "See all"
206206msgstr "Taispeáin gach rud"
207207
208−#: qml/Dash/GenericScopeView.qml:649
208+#: qml/Dash/GenericScopeView.qml:627
209209msgctxt "Label: Hint for dash search line edit"
210210msgid "Search"
211211msgstr "Cuardach"
@@ -426,14 +426,6 @@ msgctxt "Button: Call back on phone"
426426msgid "Call back"
427427msgstr "Glaoch Ar Ais"
428428
429−#: qml/Panel/Indicators/ModemInfoItem.qml:105
430−msgid "Unlock SIM"
431−msgstr "Díghlasail an SIM"
432−
433−#: qml/Panel/Indicators/RoamingIndication.qml:27
434−msgid "Roaming"
435−msgstr "Fánaíocht"
436−
437429#: qml/Tutorial/TutorialBottom.qml:28
438430msgid "Open special menus"
439431msgstr "Oscail Roghchláir Speisialta"
@@ -680,6 +672,12 @@ msgstr ""
680672msgid "%1 〉"
681673msgstr ""
682674
675+#~ msgid "Unlock SIM"
676+#~ msgstr "Díghlasail an SIM"
677+
678+#~ msgid "Roaming"
679+#~ msgstr "Fánaíocht"
680+
683681#~ msgid "Welcome to your Ubuntu phone."
684682#~ msgstr "Tá fáilte romhat chuig do fhón Ubuntu."
685683
po/gd.po+20−21
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -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: 2016-02-17 05:43+0000\n"
20−"X-Generator: Launchpad (build 17925)\n"
19+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
20+"X-Generator: Launchpad (build 17936)\n"
2121"Language: gd\n"
2222
2323#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -183,38 +183,38 @@ msgstr "Ath-cheangail an-dràsta!"
183183msgid "Close all"
184184msgstr "Dùin na h-uile"
185185
186−#: qml/Dash/DashPageHeader.qml:266
186+#: qml/Dash/DashPageHeader.qml:270
187187msgctxt "Button: Open the Ubuntu Store"
188188msgid "Store"
189189msgstr "Am bùth"
190190
191−#: qml/Dash/DashPageHeader.qml:273
191+#: qml/Dash/DashPageHeader.qml:277
192192msgctxt "Button: Start a search in the current dash scope"
193193msgid "Search"
194194msgstr "Lorg"
195195
196−#: qml/Dash/DashPageHeader.qml:283
196+#: qml/Dash/DashPageHeader.qml:287
197197msgctxt "Button: Show the current dash scope settings"
198198msgid "Settings"
199199msgstr "Roghainnean"
200200
201−#: qml/Dash/DashPageHeader.qml:290
201+#: qml/Dash/DashPageHeader.qml:294
202202msgid "Remove from Favorites"
203203msgstr "Thoir air falbh o na h-annsachdan"
204204
205−#: qml/Dash/DashPageHeader.qml:290
205+#: qml/Dash/DashPageHeader.qml:294
206206msgid "Add to Favorites"
207207msgstr "Cuir ris na h-annsachdan"
208208
209−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
209+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
210210msgid "See less"
211211msgstr "Seall nas lugha"
212212
213−#: qml/Dash/GenericScopeView.qml:587
213+#: qml/Dash/GenericScopeView.qml:565
214214msgid "See all"
215215msgstr "Seall na h-uile"
216216
217−#: qml/Dash/GenericScopeView.qml:649
217+#: qml/Dash/GenericScopeView.qml:627
218218msgctxt "Label: Hint for dash search line edit"
219219msgid "Search"
220220msgstr "Lorg"
@@ -443,14 +443,6 @@ msgctxt "Button: Call back on phone"
443443msgid "Call back"
444444msgstr "Fònaig air ais"
445445
446−#: qml/Panel/Indicators/ModemInfoItem.qml:105
447−msgid "Unlock SIM"
448−msgstr "Thoir a' ghlas far an SIM"
449−
450−#: qml/Panel/Indicators/RoamingIndication.qml:27
451−msgid "Roaming"
452−msgstr "Air fàrsan"
453−
454446#: qml/Tutorial/TutorialBottom.qml:28
455447msgid "Open special menus"
456448msgstr "Fosgail na clàran-taice sònraichte"
@@ -515,7 +507,7 @@ msgstr "Shin thu!"
515507
516508#: qml/Wizard/Pages/10-welcome.qml:44
517509msgid "Welcome to your Ubuntu device."
518−msgstr ""
510+msgstr "Fàilte dhan uidheam Ubuntu agad."
519511
520512#: qml/Wizard/Pages/10-welcome.qml:52
521513msgid "Let’s get started."
@@ -547,6 +539,7 @@ msgstr "Glas tèarainteachd"
547539#: qml/Wizard/Pages/30-passwd-type.qml:79
548540msgid "Please select how you’d like to unlock your device."
549541msgstr ""
542+"Tagh an dòigh sa tha thu airson a' ghlas a thoirt far an uidheam agad."
550543
551544#: qml/Wizard/Pages/30-passwd-type.qml:102
552545msgctxt "Label: Type of security method"
@@ -658,7 +651,7 @@ msgstr "Shin thu!"
658651
659652#: qml/Wizard/Pages/80-finished.qml:46
660653msgid "Your device is now ready to use."
661−msgstr ""
654+msgstr "Tha an t-uidheam agad ullamh a-nis."
662655
663656#: qml/Wizard/Pages/80-finished.qml:53
664657msgid "Finish"
@@ -765,6 +758,9 @@ msgstr "%1 〉"
765758#~ msgid "All"
766759#~ msgstr "Na h-uile"
767760
761+#~ msgid "Unlock SIM"
762+#~ msgstr "Thoir a' ghlas far an SIM"
763+
768764#~ msgid "Favorites"
769765#~ msgstr "Annsachdan"
770766
@@ -777,6 +773,9 @@ msgstr "%1 〉"
777773#~ msgid "Done"
778774#~ msgstr "Deiseil"
779775
776+#~ msgid "Roaming"
777+#~ msgstr "Air fàrsan"
778+
780779#~ msgid "Log out"
781780#~ msgstr "Clàraich a-mach"
782781
po/gl.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"PO-Revision-Date: 2016-01-15 14:56+0000\n"
1212"Last-Translator: Marcos Lans <Unknown>\n"
1313"Language-Team: Galician <gl@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -173,38 +173,38 @@ msgstr "Reconectar agora."
173173msgid "Close all"
174174msgstr "Pechar todo"
175175
176−#: qml/Dash/DashPageHeader.qml:266
176+#: qml/Dash/DashPageHeader.qml:270
177177msgctxt "Button: Open the Ubuntu Store"
178178msgid "Store"
179179msgstr "Tenda"
180180
181−#: qml/Dash/DashPageHeader.qml:273
181+#: qml/Dash/DashPageHeader.qml:277
182182msgctxt "Button: Start a search in the current dash scope"
183183msgid "Search"
184184msgstr "Buscar"
185185
186−#: qml/Dash/DashPageHeader.qml:283
186+#: qml/Dash/DashPageHeader.qml:287
187187msgctxt "Button: Show the current dash scope settings"
188188msgid "Settings"
189189msgstr "Axustes"
190190
191−#: qml/Dash/DashPageHeader.qml:290
191+#: qml/Dash/DashPageHeader.qml:294
192192msgid "Remove from Favorites"
193193msgstr "Eliminar dos favoritos"
194194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196196msgid "Add to Favorites"
197197msgstr "Engadir aos favoritos"
198198
199−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
199+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
200200msgid "See less"
201201msgstr "Ver menos"
202202
203−#: qml/Dash/GenericScopeView.qml:587
203+#: qml/Dash/GenericScopeView.qml:565
204204msgid "See all"
205205msgstr "Ver todo"
206206
207−#: qml/Dash/GenericScopeView.qml:649
207+#: qml/Dash/GenericScopeView.qml:627
208208msgctxt "Label: Hint for dash search line edit"
209209msgid "Search"
210210msgstr "Buscar"
@@ -424,14 +424,6 @@ msgctxt "Button: Call back on phone"
424424msgid "Call back"
425425msgstr "Chamar de volta"
426426
427−#: qml/Panel/Indicators/ModemInfoItem.qml:105
428−msgid "Unlock SIM"
429−msgstr "Desbloquear a SIM"
430−
431−#: qml/Panel/Indicators/RoamingIndication.qml:27
432−msgid "Roaming"
433−msgstr "Itinerancia"
434−
435427#: qml/Tutorial/TutorialBottom.qml:28
436428msgid "Open special menus"
437429msgstr "Abrir menús especiais"
@@ -738,6 +730,9 @@ msgstr "%1 〉"
738730#~ msgid "All"
739731#~ msgstr "Todos"
740732
733+#~ msgid "Unlock SIM"
734+#~ msgstr "Desbloquear a SIM"
735+
741736#~ msgid "Favorites"
742737#~ msgstr "Favoritos"
743738
@@ -750,6 +745,9 @@ msgstr "%1 〉"
750745#~ msgid "Done"
751746#~ msgstr "Feito"
752747
748+#~ msgid "Roaming"
749+#~ msgstr "Itinerancia"
750+
753751#~ msgid "Log out"
754752#~ msgstr "Saír da sesión"
755753
po/gv.po+11−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -178,38 +178,38 @@ msgstr ""
178178msgid "Close all"
179179msgstr ""
180180
181−#: qml/Dash/DashPageHeader.qml:266
181+#: qml/Dash/DashPageHeader.qml:270
182182msgctxt "Button: Open the Ubuntu Store"
183183msgid "Store"
184184msgstr ""
185185
186−#: qml/Dash/DashPageHeader.qml:273
186+#: qml/Dash/DashPageHeader.qml:277
187187msgctxt "Button: Start a search in the current dash scope"
188188msgid "Search"
189189msgstr ""
190190
191−#: qml/Dash/DashPageHeader.qml:283
191+#: qml/Dash/DashPageHeader.qml:287
192192msgctxt "Button: Show the current dash scope settings"
193193msgid "Settings"
194194msgstr ""
195195
196−#: qml/Dash/DashPageHeader.qml:290
196+#: qml/Dash/DashPageHeader.qml:294
197197msgid "Remove from Favorites"
198198msgstr "Jean scughey woish Reihyn"
199199
200−#: qml/Dash/DashPageHeader.qml:290
200+#: qml/Dash/DashPageHeader.qml:294
201201msgid "Add to Favorites"
202202msgstr "Cur ayns Reihyn"
203203
204−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
204+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
205205msgid "See less"
206206msgstr "Faik ny sloo"
207207
208−#: qml/Dash/GenericScopeView.qml:587
208+#: qml/Dash/GenericScopeView.qml:565
209209msgid "See all"
210210msgstr "Faik ooilley"
211211
212−#: qml/Dash/GenericScopeView.qml:649
212+#: qml/Dash/GenericScopeView.qml:627
213213msgctxt "Label: Hint for dash search line edit"
214214msgid "Search"
215215msgstr ""
@@ -423,14 +423,6 @@ msgctxt "Button: Call back on phone"
423423msgid "Call back"
424424msgstr ""
425425
426−#: qml/Panel/Indicators/ModemInfoItem.qml:105
427−msgid "Unlock SIM"
428−msgstr ""
429−
430−#: qml/Panel/Indicators/RoamingIndication.qml:27
431−msgid "Roaming"
432−msgstr ""
433−
434426#: qml/Tutorial/TutorialBottom.qml:28
435427msgid "Open special menus"
436428msgstr ""
po/he.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171171msgid "Close all"
172172msgstr ""
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177177msgstr "חנות"
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr "חיפוש"
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr "הגדרות"
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr "הסרה מהמועדפים"
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr "הוספה למועדפים"
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr "לראות פחות"
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr "להציג הכול"
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr "חיפוש"
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416416msgid "Call back"
417417msgstr ""
418418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr "שחרור נעילת ה־SIM"
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr "נדידה"
426−
427419#: qml/Tutorial/TutorialBottom.qml:28
428420msgid "Open special menus"
429421msgstr "פתיחת תפריטים מיוחדים"
@@ -730,9 +722,15 @@ msgstr ""
730722#~ msgid "All"
731723#~ msgstr "הכול"
732724
725+#~ msgid "Roaming"
726+#~ msgstr "נדידה"
727+
733728#~ msgid "Favorites"
734729#~ msgstr "מועדפים"
735730
731+#~ msgid "Unlock SIM"
732+#~ msgstr "שחרור נעילת ה־SIM"
733+
736734#~ msgid "Welcome to your Ubuntu phone."
737735#~ msgstr "ברוך בואך לטלפון האובונטו שלך."
738736
po/hi.po+11−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"PO-Revision-Date: 2014-01-15 01:49+0000\n"
1212"Last-Translator: Siddhanathan Shanmugam <Unknown>\n"
1313"Language-Team: Hindi <hi@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171171msgid "Close all"
172172msgstr ""
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177177msgstr ""
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr ""
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr ""
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr ""
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr ""
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr ""
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416416msgid "Call back"
417417msgstr ""
418418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427419#: qml/Tutorial/TutorialBottom.qml:28
428420msgid "Open special menus"
429421msgstr ""
po/hr.po+20−22
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -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: 2016-02-17 05:43+0000\n"
20−"X-Generator: Launchpad (build 17925)\n"
19+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
20+"X-Generator: Launchpad (build 17936)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -176,38 +176,38 @@ msgstr "Ponovno poveži odmah!"
176176msgid "Close all"
177177msgstr "Zatvori sve"
178178
179−#: qml/Dash/DashPageHeader.qml:266
179+#: qml/Dash/DashPageHeader.qml:270
180180msgctxt "Button: Open the Ubuntu Store"
181181msgid "Store"
182182msgstr "Trgovina"
183183
184−#: qml/Dash/DashPageHeader.qml:273
184+#: qml/Dash/DashPageHeader.qml:277
185185msgctxt "Button: Start a search in the current dash scope"
186186msgid "Search"
187187msgstr "Pretraži"
188188
189−#: qml/Dash/DashPageHeader.qml:283
189+#: qml/Dash/DashPageHeader.qml:287
190190msgctxt "Button: Show the current dash scope settings"
191191msgid "Settings"
192192msgstr "Postavke"
193193
194−#: qml/Dash/DashPageHeader.qml:290
194+#: qml/Dash/DashPageHeader.qml:294
195195msgid "Remove from Favorites"
196196msgstr "Ukloni iz omiljenih"
197197
198−#: qml/Dash/DashPageHeader.qml:290
198+#: qml/Dash/DashPageHeader.qml:294
199199msgid "Add to Favorites"
200200msgstr "Dodaj u omiljene"
201201
202−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
202+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
203203msgid "See less"
204204msgstr "Prikaži manje"
205205
206−#: qml/Dash/GenericScopeView.qml:587
206+#: qml/Dash/GenericScopeView.qml:565
207207msgid "See all"
208208msgstr "Prikaži sve"
209209
210−#: qml/Dash/GenericScopeView.qml:649
210+#: qml/Dash/GenericScopeView.qml:627
211211msgctxt "Label: Hint for dash search line edit"
212212msgid "Search"
213213msgstr "Pretraži"
@@ -430,14 +430,6 @@ msgctxt "Button: Call back on phone"
430430msgid "Call back"
431431msgstr "Uzvrati poziv"
432432
433−#: qml/Panel/Indicators/ModemInfoItem.qml:105
434−msgid "Unlock SIM"
435−msgstr "Otključaj SIM"
436−
437−#: qml/Panel/Indicators/RoamingIndication.qml:27
438−msgid "Roaming"
439−msgstr "Roaming"
440−
441433#: qml/Tutorial/TutorialBottom.qml:28
442434msgid "Open special menus"
443435msgstr "Otvori posebne izbornike"
@@ -502,7 +494,7 @@ msgstr "Bok!"
502494
503495#: qml/Wizard/Pages/10-welcome.qml:44
504496msgid "Welcome to your Ubuntu device."
505−msgstr ""
497+msgstr "Dobrodošli u svoj Ubuntu uređaj."
506498
507499#: qml/Wizard/Pages/10-welcome.qml:52
508500msgid "Let’s get started."
@@ -533,7 +525,7 @@ msgstr "Sigurnosno zaključavanje"
533525
534526#: qml/Wizard/Pages/30-passwd-type.qml:79
535527msgid "Please select how you’d like to unlock your device."
536−msgstr ""
528+msgstr "Odaberite kako želite otključavati svoj uređaj."
537529
538530#: qml/Wizard/Pages/30-passwd-type.qml:102
539531msgctxt "Label: Type of security method"
@@ -641,7 +633,7 @@ msgstr "Dobro obavljeno!"
641633
642634#: qml/Wizard/Pages/80-finished.qml:46
643635msgid "Your device is now ready to use."
644−msgstr ""
636+msgstr "Vaš uređaj je sada spreman za upotrebu."
645637
646638#: qml/Wizard/Pages/80-finished.qml:53
647639msgid "Finish"
@@ -702,6 +694,12 @@ msgstr "%1 〉"
702694#~ msgid "Search"
703695#~ msgstr "Pretraživanje"
704696
697+#~ msgid "Unlock SIM"
698+#~ msgstr "Otključaj SIM"
699+
700+#~ msgid "Roaming"
701+#~ msgstr "Roaming"
702+
705703#~ msgid "%a %l:%M %p"
706704#~ msgstr "%a %l:%M %p"
707705
po/hu.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"PO-Revision-Date: 2016-02-16 07:23+0000\n"
1212"Last-Translator: Richard Somlói <ricsipontaz@gmail.com>\n"
1313"Language-Team: Hungarian <hu@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -175,38 +175,38 @@ msgstr "Újracsatlakozás most!"
175175msgid "Close all"
176176msgstr "Minden bezárása"
177177
178−#: qml/Dash/DashPageHeader.qml:266
178+#: qml/Dash/DashPageHeader.qml:270
179179msgctxt "Button: Open the Ubuntu Store"
180180msgid "Store"
181181msgstr "Áruház"
182182
183−#: qml/Dash/DashPageHeader.qml:273
183+#: qml/Dash/DashPageHeader.qml:277
184184msgctxt "Button: Start a search in the current dash scope"
185185msgid "Search"
186186msgstr "Keresés"
187187
188−#: qml/Dash/DashPageHeader.qml:283
188+#: qml/Dash/DashPageHeader.qml:287
189189msgctxt "Button: Show the current dash scope settings"
190190msgid "Settings"
191191msgstr "Beállítások"
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Remove from Favorites"
195195msgstr "Eltávolítás a kedvencek közül"
196196
197−#: qml/Dash/DashPageHeader.qml:290
197+#: qml/Dash/DashPageHeader.qml:294
198198msgid "Add to Favorites"
199199msgstr "Hozzáadás a kedvencekhez"
200200
201−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
201+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
202202msgid "See less"
203203msgstr "Kevesebb"
204204
205−#: qml/Dash/GenericScopeView.qml:587
205+#: qml/Dash/GenericScopeView.qml:565
206206msgid "See all"
207207msgstr "Összes megtekintése"
208208
209−#: qml/Dash/GenericScopeView.qml:649
209+#: qml/Dash/GenericScopeView.qml:627
210210msgctxt "Label: Hint for dash search line edit"
211211msgid "Search"
212212msgstr "Keresés"
@@ -426,14 +426,6 @@ msgctxt "Button: Call back on phone"
426426msgid "Call back"
427427msgstr "Visszahívás"
428428
429−#: qml/Panel/Indicators/ModemInfoItem.qml:105
430−msgid "Unlock SIM"
431−msgstr "SIM feloldása"
432−
433−#: qml/Panel/Indicators/RoamingIndication.qml:27
434−msgid "Roaming"
435−msgstr "Barangolás"
436−
437429#: qml/Tutorial/TutorialBottom.qml:28
438430msgid "Open special menus"
439431msgstr "Speciális menük elérése"
@@ -744,6 +736,12 @@ msgstr "%1 〉"
744736#~ msgid "All"
745737#~ msgstr "Összes"
746738
739+#~ msgid "Unlock SIM"
740+#~ msgstr "SIM feloldása"
741+
742+#~ msgid "Roaming"
743+#~ msgstr "Barangolás"
744+
747745#~ msgid "Favorites"
748746#~ msgstr "Kedvencek"
749747
po/hy.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -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: 2016-02-17 05:42+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:57+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -175,38 +175,38 @@ msgstr ""
175175msgid "Close all"
176176msgstr ""
177177
178−#: qml/Dash/DashPageHeader.qml:266
178+#: qml/Dash/DashPageHeader.qml:270
179179msgctxt "Button: Open the Ubuntu Store"
180180msgid "Store"
181181msgstr ""
182182
183−#: qml/Dash/DashPageHeader.qml:273
183+#: qml/Dash/DashPageHeader.qml:277
184184msgctxt "Button: Start a search in the current dash scope"
185185msgid "Search"
186186msgstr ""
187187
188−#: qml/Dash/DashPageHeader.qml:283
188+#: qml/Dash/DashPageHeader.qml:287
189189msgctxt "Button: Show the current dash scope settings"
190190msgid "Settings"
191191msgstr ""
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Remove from Favorites"
195195msgstr "Հեռացնել ընտրյալների ցուցակից"
196196
197−#: qml/Dash/DashPageHeader.qml:290
197+#: qml/Dash/DashPageHeader.qml:294
198198msgid "Add to Favorites"
199199msgstr "Ավելացնել ընտրյալների ցուցակում"
200200
201−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
201+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
202202msgid "See less"
203203msgstr ""
204204
205−#: qml/Dash/GenericScopeView.qml:587
205+#: qml/Dash/GenericScopeView.qml:565
206206msgid "See all"
207207msgstr "Տեսնել բոլորը"
208208
209−#: qml/Dash/GenericScopeView.qml:649
209+#: qml/Dash/GenericScopeView.qml:627
210210msgctxt "Label: Hint for dash search line edit"
211211msgid "Search"
212212msgstr ""
@@ -420,14 +420,6 @@ msgctxt "Button: Call back on phone"
420420msgid "Call back"
421421msgstr ""
422422
423−#: qml/Panel/Indicators/ModemInfoItem.qml:105
424−msgid "Unlock SIM"
425−msgstr "Ապաբլոկավորել SIM-ը"
426−
427−#: qml/Panel/Indicators/RoamingIndication.qml:27
428−msgid "Roaming"
429−msgstr "Ռոումինգ"
430−
431423#: qml/Tutorial/TutorialBottom.qml:28
432424msgid "Open special menus"
433425msgstr ""
@@ -733,6 +725,12 @@ msgstr ""
733725#~ msgid "All"
734726#~ msgstr "Բոլորը"
735727
728+#~ msgid "Unlock SIM"
729+#~ msgstr "Ապաբլոկավորել SIM-ը"
730+
731+#~ msgid "Roaming"
732+#~ msgstr "Ռոումինգ"
733+
736734#~ msgid "Please re-enter"
737735#~ msgstr "Խնդրում ենք նորից մուտքագրել"
738736
po/ia.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -176,38 +176,38 @@ msgstr "Reconnecter nunc!"
176176msgid "Close all"
177177msgstr "Clauder toto"
178178
179−#: qml/Dash/DashPageHeader.qml:266
179+#: qml/Dash/DashPageHeader.qml:270
180180msgctxt "Button: Open the Ubuntu Store"
181181msgid "Store"
182182msgstr "Salva"
183183
184−#: qml/Dash/DashPageHeader.qml:273
184+#: qml/Dash/DashPageHeader.qml:277
185185msgctxt "Button: Start a search in the current dash scope"
186186msgid "Search"
187187msgstr "Cerca"
188188
189−#: qml/Dash/DashPageHeader.qml:283
189+#: qml/Dash/DashPageHeader.qml:287
190190msgctxt "Button: Show the current dash scope settings"
191191msgid "Settings"
192192msgstr "Configurationes"
193193
194−#: qml/Dash/DashPageHeader.qml:290
194+#: qml/Dash/DashPageHeader.qml:294
195195msgid "Remove from Favorites"
196196msgstr "Remover ex le Favoritos"
197197
198−#: qml/Dash/DashPageHeader.qml:290
198+#: qml/Dash/DashPageHeader.qml:294
199199msgid "Add to Favorites"
200200msgstr "Adder al Favoritos"
201201
202−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
202+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
203203msgid "See less"
204204msgstr "Vider minus"
205205
206−#: qml/Dash/GenericScopeView.qml:587
206+#: qml/Dash/GenericScopeView.qml:565
207207msgid "See all"
208208msgstr "Vider toto"
209209
210−#: qml/Dash/GenericScopeView.qml:649
210+#: qml/Dash/GenericScopeView.qml:627
211211msgctxt "Label: Hint for dash search line edit"
212212msgid "Search"
213213msgstr "Cerca"
@@ -425,14 +425,6 @@ msgctxt "Button: Call back on phone"
425425msgid "Call back"
426426msgstr "Appellar retro"
427427
428−#: qml/Panel/Indicators/ModemInfoItem.qml:105
429−msgid "Unlock SIM"
430−msgstr "Liberar le SIM"
431−
432−#: qml/Panel/Indicators/RoamingIndication.qml:27
433−msgid "Roaming"
434−msgstr "Roaming"
435−
436428#: qml/Tutorial/TutorialBottom.qml:28
437429msgid "Open special menus"
438430msgstr "Aperi le menus special"
@@ -757,6 +749,12 @@ msgstr "%1 〉"
757749#~ msgid "Speaking..."
758750#~ msgstr "Parlante..."
759751
752+#~ msgid "Unlock SIM"
753+#~ msgstr "Liberar le SIM"
754+
755+#~ msgid "Roaming"
756+#~ msgstr "Roaming"
757+
760758#~ msgid "Please re-enter"
761759#~ msgstr "Per favor re-inserer"
762760
po/id.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -174,38 +174,38 @@ msgstr ""
174174msgid "Close all"
175175msgstr ""
176176
177−#: qml/Dash/DashPageHeader.qml:266
177+#: qml/Dash/DashPageHeader.qml:270
178178msgctxt "Button: Open the Ubuntu Store"
179179msgid "Store"
180180msgstr ""
181181
182−#: qml/Dash/DashPageHeader.qml:273
182+#: qml/Dash/DashPageHeader.qml:277
183183msgctxt "Button: Start a search in the current dash scope"
184184msgid "Search"
185185msgstr ""
186186
187−#: qml/Dash/DashPageHeader.qml:283
187+#: qml/Dash/DashPageHeader.qml:287
188188msgctxt "Button: Show the current dash scope settings"
189189msgid "Settings"
190190msgstr ""
191191
192−#: qml/Dash/DashPageHeader.qml:290
192+#: qml/Dash/DashPageHeader.qml:294
193193msgid "Remove from Favorites"
194194msgstr "Hapus dari Favorit"
195195
196−#: qml/Dash/DashPageHeader.qml:290
196+#: qml/Dash/DashPageHeader.qml:294
197197msgid "Add to Favorites"
198198msgstr "Tambah ke Favorit"
199199
200−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
200+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
201201msgid "See less"
202202msgstr "Lihat lebih sedikit"
203203
204−#: qml/Dash/GenericScopeView.qml:587
204+#: qml/Dash/GenericScopeView.qml:565
205205msgid "See all"
206206msgstr "Lihat semua"
207207
208−#: qml/Dash/GenericScopeView.qml:649
208+#: qml/Dash/GenericScopeView.qml:627
209209msgctxt "Label: Hint for dash search line edit"
210210msgid "Search"
211211msgstr ""
@@ -423,14 +423,6 @@ msgctxt "Button: Call back on phone"
423423msgid "Call back"
424424msgstr ""
425425
426−#: qml/Panel/Indicators/ModemInfoItem.qml:105
427−msgid "Unlock SIM"
428−msgstr "Buka Kunci SIM"
429−
430−#: qml/Panel/Indicators/RoamingIndication.qml:27
431−msgid "Roaming"
432−msgstr "Roaming"
433−
434426#: qml/Tutorial/TutorialBottom.qml:28
435427msgid "Open special menus"
436428msgstr ""
@@ -745,6 +737,12 @@ msgstr ""
745737#~ msgid "Favorites"
746738#~ msgstr "Favorit"
747739
740+#~ msgid "Roaming"
741+#~ msgstr "Roaming"
742+
743+#~ msgid "Unlock SIM"
744+#~ msgstr "Buka Kunci SIM"
745+
748746#~ msgid "Manage Scopes"
749747#~ msgstr "Kelola Skup"
750748
po/is.po+17−19
@@ -9,7 +9,7 @@ msgid ""
99msgstr ""
1010"Project-Id-Version: po_unity8-is\n"
1111"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
12−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
12+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1313"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"
@@ -17,8 +17,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
21−"X-Generator: Launchpad (build 17925)\n"
20+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
21+"X-Generator: Launchpad (build 17936)\n"
2222"Language: is\n"
2323
2424#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -180,38 +180,38 @@ msgstr ""
180180msgid "Close all"
181181msgstr ""
182182
183−#: qml/Dash/DashPageHeader.qml:266
183+#: qml/Dash/DashPageHeader.qml:270
184184msgctxt "Button: Open the Ubuntu Store"
185185msgid "Store"
186186msgstr ""
187187
188−#: qml/Dash/DashPageHeader.qml:273
188+#: qml/Dash/DashPageHeader.qml:277
189189msgctxt "Button: Start a search in the current dash scope"
190190msgid "Search"
191191msgstr ""
192192
193−#: qml/Dash/DashPageHeader.qml:283
193+#: qml/Dash/DashPageHeader.qml:287
194194msgctxt "Button: Show the current dash scope settings"
195195msgid "Settings"
196196msgstr ""
197197
198−#: qml/Dash/DashPageHeader.qml:290
198+#: qml/Dash/DashPageHeader.qml:294
199199msgid "Remove from Favorites"
200200msgstr "Fjarlægja úr Eftirlæti"
201201
202−#: qml/Dash/DashPageHeader.qml:290
202+#: qml/Dash/DashPageHeader.qml:294
203203msgid "Add to Favorites"
204204msgstr "Bæta við Eftirlæti"
205205
206−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
206+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
207207msgid "See less"
208208msgstr "Sjá minna"
209209
210−#: qml/Dash/GenericScopeView.qml:587
210+#: qml/Dash/GenericScopeView.qml:565
211211msgid "See all"
212212msgstr "Sjá allt"
213213
214−#: qml/Dash/GenericScopeView.qml:649
214+#: qml/Dash/GenericScopeView.qml:627
215215msgctxt "Label: Hint for dash search line edit"
216216msgid "Search"
217217msgstr ""
@@ -429,14 +429,6 @@ msgctxt "Button: Call back on phone"
429429msgid "Call back"
430430msgstr ""
431431
432−#: qml/Panel/Indicators/ModemInfoItem.qml:105
433−msgid "Unlock SIM"
434−msgstr "Aflæsa SIM-korti"
435−
436−#: qml/Panel/Indicators/RoamingIndication.qml:27
437−msgid "Roaming"
438−msgstr "Ráphamur"
439−
440432#: qml/Tutorial/TutorialBottom.qml:28
441433msgid "Open special menus"
442434msgstr ""
@@ -756,6 +748,9 @@ msgstr ""
756748#~ msgid "All"
757749#~ msgstr "Allt"
758750
751+#~ msgid "Unlock SIM"
752+#~ msgstr "Aflæsa SIM-korti"
753+
759754#~ msgid "Favorites"
760755#~ msgstr "Eftirlæti"
761756
@@ -765,6 +760,9 @@ msgstr ""
765760#~ msgid "Done"
766761#~ msgstr "Lokið"
767762
763+#~ msgid "Roaming"
764+#~ msgstr "Ráphamur"
765+
768766#~ msgid "Please re-enter"
769767#~ msgstr "Settu aftur inn"
770768
po/it.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -179,38 +179,38 @@ msgstr "Collegare ora."
179179msgid "Close all"
180180msgstr "Chiudi tutto"
181181
182−#: qml/Dash/DashPageHeader.qml:266
182+#: qml/Dash/DashPageHeader.qml:270
183183msgctxt "Button: Open the Ubuntu Store"
184184msgid "Store"
185185msgstr "Store"
186186
187−#: qml/Dash/DashPageHeader.qml:273
187+#: qml/Dash/DashPageHeader.qml:277
188188msgctxt "Button: Start a search in the current dash scope"
189189msgid "Search"
190190msgstr "Cerca"
191191
192−#: qml/Dash/DashPageHeader.qml:283
192+#: qml/Dash/DashPageHeader.qml:287
193193msgctxt "Button: Show the current dash scope settings"
194194msgid "Settings"
195195msgstr "Impostazioni"
196196
197−#: qml/Dash/DashPageHeader.qml:290
197+#: qml/Dash/DashPageHeader.qml:294
198198msgid "Remove from Favorites"
199199msgstr "Rimuovi dai preferiti"
200200
201−#: qml/Dash/DashPageHeader.qml:290
201+#: qml/Dash/DashPageHeader.qml:294
202202msgid "Add to Favorites"
203203msgstr "Aggiungi ai preferiti"
204204
205−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
205+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
206206msgid "See less"
207207msgstr "Mostra meno"
208208
209−#: qml/Dash/GenericScopeView.qml:587
209+#: qml/Dash/GenericScopeView.qml:565
210210msgid "See all"
211211msgstr "Mostra tutto"
212212
213−#: qml/Dash/GenericScopeView.qml:649
213+#: qml/Dash/GenericScopeView.qml:627
214214msgctxt "Label: Hint for dash search line edit"
215215msgid "Search"
216216msgstr "Cerca"
@@ -428,14 +428,6 @@ msgctxt "Button: Call back on phone"
428428msgid "Call back"
429429msgstr "Richiama"
430430
431−#: qml/Panel/Indicators/ModemInfoItem.qml:105
432−msgid "Unlock SIM"
433−msgstr "Sblocca SIM"
434−
435−#: qml/Panel/Indicators/RoamingIndication.qml:27
436−msgid "Roaming"
437−msgstr "Roaming"
438−
439431#: qml/Tutorial/TutorialBottom.qml:28
440432msgid "Open special menus"
441433msgstr "Apri menù speciali"
@@ -743,6 +735,9 @@ msgstr "%1 〉"
743735#~ msgid "All"
744736#~ msgstr "Tutto"
745737
738+#~ msgid "Unlock SIM"
739+#~ msgstr "Sblocca SIM"
740+
746741#~ msgid "Favorites"
747742#~ msgstr "Preferiti"
748743
@@ -755,6 +750,9 @@ msgstr "%1 〉"
755750#~ msgid "Done"
756751#~ msgstr "Fatto"
757752
753+#~ msgid "Roaming"
754+#~ msgstr "Roaming"
755+
758756#~ msgid "Log out"
759757#~ msgstr "Termina sessione"
760758
po/ja.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"PO-Revision-Date: 2015-10-05 10:05+0000\n"
1212"Last-Translator: Kentaro Kazuhama <Unknown>\n"
1313"Language-Team: Japanese <ja@li.org>\n"
@@ -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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -170,38 +170,38 @@ msgstr ""
170170msgid "Close all"
171171msgstr ""
172172
173−#: qml/Dash/DashPageHeader.qml:266
173+#: qml/Dash/DashPageHeader.qml:270
174174msgctxt "Button: Open the Ubuntu Store"
175175msgid "Store"
176176msgstr ""
177177
178−#: qml/Dash/DashPageHeader.qml:273
178+#: qml/Dash/DashPageHeader.qml:277
179179msgctxt "Button: Start a search in the current dash scope"
180180msgid "Search"
181181msgstr ""
182182
183−#: qml/Dash/DashPageHeader.qml:283
183+#: qml/Dash/DashPageHeader.qml:287
184184msgctxt "Button: Show the current dash scope settings"
185185msgid "Settings"
186186msgstr ""
187187
188−#: qml/Dash/DashPageHeader.qml:290
188+#: qml/Dash/DashPageHeader.qml:294
189189msgid "Remove from Favorites"
190190msgstr "お気に入りから削除する"
191191
192−#: qml/Dash/DashPageHeader.qml:290
192+#: qml/Dash/DashPageHeader.qml:294
193193msgid "Add to Favorites"
194194msgstr "お気に入りに追加する"
195195
196−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
196+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
197197msgid "See less"
198198msgstr "隠す"
199199
200−#: qml/Dash/GenericScopeView.qml:587
200+#: qml/Dash/GenericScopeView.qml:565
201201msgid "See all"
202202msgstr "すべて表示する"
203203
204−#: qml/Dash/GenericScopeView.qml:649
204+#: qml/Dash/GenericScopeView.qml:627
205205msgctxt "Label: Hint for dash search line edit"
206206msgid "Search"
207207msgstr ""
@@ -415,14 +415,6 @@ msgctxt "Button: Call back on phone"
415415msgid "Call back"
416416msgstr ""
417417
418−#: qml/Panel/Indicators/ModemInfoItem.qml:105
419−msgid "Unlock SIM"
420−msgstr "SIMのアンロック"
421−
422−#: qml/Panel/Indicators/RoamingIndication.qml:27
423−msgid "Roaming"
424−msgstr "ローミング"
425−
426418#: qml/Tutorial/TutorialBottom.qml:28
427419msgid "Open special menus"
428420msgstr ""
@@ -722,6 +714,12 @@ msgstr ""
722714#~ msgid "Favorites"
723715#~ msgstr "お気に入り"
724716
717+#~ msgid "Unlock SIM"
718+#~ msgstr "SIMのアンロック"
719+
720+#~ msgid "Roaming"
721+#~ msgstr "ローミング"
722+
725723#~ msgid "Done"
726724#~ msgstr "完了"
727725
po/km.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -173,38 +173,38 @@ msgstr ""
173173msgid "Close all"
174174msgstr ""
175175
176−#: qml/Dash/DashPageHeader.qml:266
176+#: qml/Dash/DashPageHeader.qml:270
177177msgctxt "Button: Open the Ubuntu Store"
178178msgid "Store"
179179msgstr "រក្សាទុក"
180180
181−#: qml/Dash/DashPageHeader.qml:273
181+#: qml/Dash/DashPageHeader.qml:277
182182msgctxt "Button: Start a search in the current dash scope"
183183msgid "Search"
184184msgstr "ស្វែងរក"
185185
186−#: qml/Dash/DashPageHeader.qml:283
186+#: qml/Dash/DashPageHeader.qml:287
187187msgctxt "Button: Show the current dash scope settings"
188188msgid "Settings"
189189msgstr "ការ​កំណត់"
190190
191−#: qml/Dash/DashPageHeader.qml:290
191+#: qml/Dash/DashPageHeader.qml:294
192192msgid "Remove from Favorites"
193193msgstr "យក​ចេញពី​សំណព្វ"
194194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196196msgid "Add to Favorites"
197197msgstr "បន្ថែម​ទៅ​សណព្វ"
198198
199−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
199+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
200200msgid "See less"
201201msgstr "មើល​តិច​ជាង"
202202
203−#: qml/Dash/GenericScopeView.qml:587
203+#: qml/Dash/GenericScopeView.qml:565
204204msgid "See all"
205205msgstr "មើល​ទាំងអស់"
206206
207−#: qml/Dash/GenericScopeView.qml:649
207+#: qml/Dash/GenericScopeView.qml:627
208208msgctxt "Label: Hint for dash search line edit"
209209msgid "Search"
210210msgstr "ស្វែងរក"
@@ -424,14 +424,6 @@ msgctxt "Button: Call back on phone"
424424msgid "Call back"
425425msgstr ""
426426
427−#: qml/Panel/Indicators/ModemInfoItem.qml:105
428−msgid "Unlock SIM"
429−msgstr "ដោះ​សោ​ស៊ីម"
430−
431−#: qml/Panel/Indicators/RoamingIndication.qml:27
432−msgid "Roaming"
433−msgstr "រ៉ូមីង"
434−
435427#: qml/Tutorial/TutorialBottom.qml:28
436428msgid "Open special menus"
437429msgstr ""
@@ -731,6 +723,9 @@ msgstr "%1 〉"
731723#~ msgid "All"
732724#~ msgstr "ទាំងអស់"
733725
726+#~ msgid "Unlock SIM"
727+#~ msgstr "ដោះ​សោ​ស៊ីម"
728+
734729#~ msgid "Favorites"
735730#~ msgstr "និយម"
736731
@@ -743,6 +738,9 @@ msgstr "%1 〉"
743738#~ msgid "Done"
744739#~ msgstr "ធ្វើរួច"
745740
741+#~ msgid "Roaming"
742+#~ msgstr "រ៉ូមីង"
743+
746744#~ msgid "Power"
747745#~ msgstr "បីទ/បើក"
748746
po/kn.po+11−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171171msgid "Close all"
172172msgstr ""
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177177msgstr ""
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr ""
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr ""
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr ""
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr ""
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr ""
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416416msgid "Call back"
417417msgstr ""
418418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427419#: qml/Tutorial/TutorialBottom.qml:28
428420msgid "Open special menus"
429421msgstr ""
po/ko.po+20−22
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -170,38 +170,38 @@ msgstr "지급 다시 접속!"
170170msgid "Close all"
171171msgstr "모두 닫기"
172172
173−#: qml/Dash/DashPageHeader.qml:266
173+#: qml/Dash/DashPageHeader.qml:270
174174msgctxt "Button: Open the Ubuntu Store"
175175msgid "Store"
176176msgstr "상점"
177177
178−#: qml/Dash/DashPageHeader.qml:273
178+#: qml/Dash/DashPageHeader.qml:277
179179msgctxt "Button: Start a search in the current dash scope"
180180msgid "Search"
181181msgstr "검색"
182182
183−#: qml/Dash/DashPageHeader.qml:283
183+#: qml/Dash/DashPageHeader.qml:287
184184msgctxt "Button: Show the current dash scope settings"
185185msgid "Settings"
186186msgstr "설정"
187187
188−#: qml/Dash/DashPageHeader.qml:290
188+#: qml/Dash/DashPageHeader.qml:294
189189msgid "Remove from Favorites"
190190msgstr "즐겨찾기에서 제거"
191191
192−#: qml/Dash/DashPageHeader.qml:290
192+#: qml/Dash/DashPageHeader.qml:294
193193msgid "Add to Favorites"
194194msgstr "즐겨찾기에 추가"
195195
196−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
196+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
197197msgid "See less"
198198msgstr "간단히 표시"
199199
200−#: qml/Dash/GenericScopeView.qml:587
200+#: qml/Dash/GenericScopeView.qml:565
201201msgid "See all"
202202msgstr "모두 보기"
203203
204−#: qml/Dash/GenericScopeView.qml:649
204+#: qml/Dash/GenericScopeView.qml:627
205205msgctxt "Label: Hint for dash search line edit"
206206msgid "Search"
207207msgstr "검색"
@@ -412,14 +412,6 @@ msgctxt "Button: Call back on phone"
412412msgid "Call back"
413413msgstr "부재중 번호로 전화"
414414
415−#: qml/Panel/Indicators/ModemInfoItem.qml:105
416−msgid "Unlock SIM"
417−msgstr "심 카드 잠금 해제"
418−
419−#: qml/Panel/Indicators/RoamingIndication.qml:27
420−msgid "Roaming"
421−msgstr "로밍"
422−
423415#: qml/Tutorial/TutorialBottom.qml:28
424416msgid "Open special menus"
425417msgstr "특별 메뉴 열기"
@@ -484,7 +476,7 @@ msgstr "안녕!"
484476
485477#: qml/Wizard/Pages/10-welcome.qml:44
486478msgid "Welcome to your Ubuntu device."
487−msgstr ""
479+msgstr "우분투를 사용해주셔서 감사합니다."
488480
489481#: qml/Wizard/Pages/10-welcome.qml:52
490482msgid "Let’s get started."
@@ -515,7 +507,7 @@ msgstr "보안 잠금"
515507
516508#: qml/Wizard/Pages/30-passwd-type.qml:79
517509msgid "Please select how you’d like to unlock your device."
518−msgstr ""
510+msgstr "장치의 잠금 해제 방법을 선택해주십시오."
519511
520512#: qml/Wizard/Pages/30-passwd-type.qml:102
521513msgctxt "Label: Type of security method"
@@ -616,7 +608,7 @@ msgstr "잘 하셨습니다!"
616608
617609#: qml/Wizard/Pages/80-finished.qml:46
618610msgid "Your device is now ready to use."
619−msgstr ""
611+msgstr "이제 장치를 사용할 수 있습니다."
620612
621613#: qml/Wizard/Pages/80-finished.qml:53
622614msgid "Finish"
@@ -695,6 +687,9 @@ msgstr "%1 〉"
695687#~ msgid "All"
696688#~ msgstr "모두"
697689
690+#~ msgid "Roaming"
691+#~ msgstr "로밍"
692+
698693#~ msgid "Favorites"
699694#~ msgstr "즐겨찾기"
700695
@@ -731,6 +726,9 @@ msgstr "%1 〉"
731726#~ msgid "Loading. Please Wait..."
732727#~ msgstr "불러오는 중 입니다. 짐시 기다려주십시오..."
733728
729+#~ msgid "Unlock SIM"
730+#~ msgstr "심 카드 잠금 해제"
731+
734732#~ msgid "Try swiping from the top edge to access the indicators"
735733#~ msgstr "위쪽 가장자리에서 쓸면 알림에 접근할 수 있습니다."
736734
po/ku.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -173,38 +173,38 @@ msgstr ""
173173msgid "Close all"
174174msgstr ""
175175
176−#: qml/Dash/DashPageHeader.qml:266
176+#: qml/Dash/DashPageHeader.qml:270
177177msgctxt "Button: Open the Ubuntu Store"
178178msgid "Store"
179179msgstr ""
180180
181−#: qml/Dash/DashPageHeader.qml:273
181+#: qml/Dash/DashPageHeader.qml:277
182182msgctxt "Button: Start a search in the current dash scope"
183183msgid "Search"
184184msgstr ""
185185
186−#: qml/Dash/DashPageHeader.qml:283
186+#: qml/Dash/DashPageHeader.qml:287
187187msgctxt "Button: Show the current dash scope settings"
188188msgid "Settings"
189189msgstr ""
190190
191−#: qml/Dash/DashPageHeader.qml:290
191+#: qml/Dash/DashPageHeader.qml:294
192192msgid "Remove from Favorites"
193193msgstr "Ji nav Bijareyan rake"
194194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196196msgid "Add to Favorites"
197197msgstr "Li Bijareyan zêde bike"
198198
199−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
199+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
200200msgid "See less"
201201msgstr "Hindiktir bibîne"
202202
203−#: qml/Dash/GenericScopeView.qml:587
203+#: qml/Dash/GenericScopeView.qml:565
204204msgid "See all"
205205msgstr "Tevî bibîne"
206206
207−#: qml/Dash/GenericScopeView.qml:649
207+#: qml/Dash/GenericScopeView.qml:627
208208msgctxt "Label: Hint for dash search line edit"
209209msgid "Search"
210210msgstr ""
@@ -422,14 +422,6 @@ msgctxt "Button: Call back on phone"
422422msgid "Call back"
423423msgstr ""
424424
425−#: qml/Panel/Indicators/ModemInfoItem.qml:105
426−msgid "Unlock SIM"
427−msgstr "Kilîda SIMê veke"
428−
429−#: qml/Panel/Indicators/RoamingIndication.qml:27
430−msgid "Roaming"
431−msgstr "Geriyan"
432−
433425#: qml/Tutorial/TutorialBottom.qml:28
434426msgid "Open special menus"
435427msgstr ""
@@ -752,3 +744,9 @@ msgstr ""
752744
753745#~ msgid "Speaking..."
754746#~ msgstr "Diaxive..."
747+
748+#~ msgid "Unlock SIM"
749+#~ msgstr "Kilîda SIMê veke"
750+
751+#~ msgid "Roaming"
752+#~ msgstr "Geriyan"
po/ky.po+11−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171171msgid "Close all"
172172msgstr ""
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177177msgstr ""
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr ""
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr ""
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr ""
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr ""
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr ""
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416416msgid "Call back"
417417msgstr ""
418418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427419#: qml/Tutorial/TutorialBottom.qml:28
428420msgid "Open special menus"
429421msgstr ""
po/lo.po+11−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171171msgid "Close all"
172172msgstr ""
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177177msgstr ""
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr ""
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr ""
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr ""
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr ""
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr ""
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416416msgid "Call back"
417417msgstr ""
418418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427419#: qml/Tutorial/TutorialBottom.qml:28
428420msgid "Open special menus"
429421msgstr ""
po/lt.po+11−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -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: 2016-02-17 05:43+0000\n"
20−"X-Generator: Launchpad (build 17925)\n"
19+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
20+"X-Generator: Launchpad (build 17936)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -172,38 +172,38 @@ msgstr ""
172172msgid "Close all"
173173msgstr ""
174174
175−#: qml/Dash/DashPageHeader.qml:266
175+#: qml/Dash/DashPageHeader.qml:270
176176msgctxt "Button: Open the Ubuntu Store"
177177msgid "Store"
178178msgstr ""
179179
180−#: qml/Dash/DashPageHeader.qml:273
180+#: qml/Dash/DashPageHeader.qml:277
181181msgctxt "Button: Start a search in the current dash scope"
182182msgid "Search"
183183msgstr ""
184184
185−#: qml/Dash/DashPageHeader.qml:283
185+#: qml/Dash/DashPageHeader.qml:287
186186msgctxt "Button: Show the current dash scope settings"
187187msgid "Settings"
188188msgstr ""
189189
190−#: qml/Dash/DashPageHeader.qml:290
190+#: qml/Dash/DashPageHeader.qml:294
191191msgid "Remove from Favorites"
192192msgstr ""
193193
194−#: qml/Dash/DashPageHeader.qml:290
194+#: qml/Dash/DashPageHeader.qml:294
195195msgid "Add to Favorites"
196196msgstr ""
197197
198−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
198+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
199199msgid "See less"
200200msgstr ""
201201
202−#: qml/Dash/GenericScopeView.qml:587
202+#: qml/Dash/GenericScopeView.qml:565
203203msgid "See all"
204204msgstr ""
205205
206−#: qml/Dash/GenericScopeView.qml:649
206+#: qml/Dash/GenericScopeView.qml:627
207207msgctxt "Label: Hint for dash search line edit"
208208msgid "Search"
209209msgstr ""
@@ -417,14 +417,6 @@ msgctxt "Button: Call back on phone"
417417msgid "Call back"
418418msgstr ""
419419
420−#: qml/Panel/Indicators/ModemInfoItem.qml:105
421−msgid "Unlock SIM"
422−msgstr ""
423−
424−#: qml/Panel/Indicators/RoamingIndication.qml:27
425−msgid "Roaming"
426−msgstr ""
427−
428420#: qml/Tutorial/TutorialBottom.qml:28
429421msgid "Open special menus"
430422msgstr ""
po/lv.po+17−19
@@ -8,7 +8,7 @@ msgid ""
88msgstr ""
99"Project-Id-Version: unity\n"
1010"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
11+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1212"PO-Revision-Date: 2015-11-22 19:13+0000\n"
1313"Last-Translator: Klavs Anson <anson.klavs@gmail.com>\n"
1414"Language-Team: Latvian <lata-l10n@googlegroups.com>\n"
@@ -16,8 +16,8 @@ msgstr ""
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 != 0 ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-02-17 05:43+0000\n"
20−"X-Generator: Launchpad (build 17925)\n"
19+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
20+"X-Generator: Launchpad (build 17936)\n"
2121"Language: lv\n"
2222
2323#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -176,38 +176,38 @@ msgstr ""
176176msgid "Close all"
177177msgstr ""
178178
179−#: qml/Dash/DashPageHeader.qml:266
179+#: qml/Dash/DashPageHeader.qml:270
180180msgctxt "Button: Open the Ubuntu Store"
181181msgid "Store"
182182msgstr "Veikals"
183183
184−#: qml/Dash/DashPageHeader.qml:273
184+#: qml/Dash/DashPageHeader.qml:277
185185msgctxt "Button: Start a search in the current dash scope"
186186msgid "Search"
187187msgstr "Meklēt"
188188
189−#: qml/Dash/DashPageHeader.qml:283
189+#: qml/Dash/DashPageHeader.qml:287
190190msgctxt "Button: Show the current dash scope settings"
191191msgid "Settings"
192192msgstr "Iestatījumi"
193193
194−#: qml/Dash/DashPageHeader.qml:290
194+#: qml/Dash/DashPageHeader.qml:294
195195msgid "Remove from Favorites"
196196msgstr "Izņemt no izlases"
197197
198−#: qml/Dash/DashPageHeader.qml:290
198+#: qml/Dash/DashPageHeader.qml:294
199199msgid "Add to Favorites"
200200msgstr "Pievienot izlasei"
201201
202−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
202+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
203203msgid "See less"
204204msgstr "Skatīt mazāk"
205205
206−#: qml/Dash/GenericScopeView.qml:587
206+#: qml/Dash/GenericScopeView.qml:565
207207msgid "See all"
208208msgstr "Skatīt visus"
209209
210−#: qml/Dash/GenericScopeView.qml:649
210+#: qml/Dash/GenericScopeView.qml:627
211211msgctxt "Label: Hint for dash search line edit"
212212msgid "Search"
213213msgstr "Meklēt"
@@ -428,14 +428,6 @@ msgctxt "Button: Call back on phone"
428428msgid "Call back"
429429msgstr "Atzvanīt"
430430
431−#: qml/Panel/Indicators/ModemInfoItem.qml:105
432−msgid "Unlock SIM"
433−msgstr "Atbloķēt SIM"
434−
435−#: qml/Panel/Indicators/RoamingIndication.qml:27
436−msgid "Roaming"
437−msgstr "Viesabonēšana"
438−
439431#: qml/Tutorial/TutorialBottom.qml:28
440432msgid "Open special menus"
441433msgstr "Atvērt īpašas izvēlnes"
@@ -729,12 +721,18 @@ msgstr "%1 〉"
729721#~ msgid "All"
730722#~ msgstr "Visi"
731723
724+#~ msgid "Unlock SIM"
725+#~ msgstr "Atbloķēt SIM"
726+
732727#~ msgid "Favorites"
733728#~ msgstr "Iecienītās"
734729
735730#~ msgid "Done"
736731#~ msgstr "Pabeigts"
737732
733+#~ msgid "Roaming"
734+#~ msgstr "Viesabonēšana"
735+
738736#~ msgid "Store"
739737#~ msgstr "Veikals"
740738
po/ml.po+11−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171171msgid "Close all"
172172msgstr ""
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177177msgstr ""
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr ""
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr ""
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr ""
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr ""
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr ""
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416416msgid "Call back"
417417msgstr ""
418418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427419#: qml/Tutorial/TutorialBottom.qml:28
428420msgid "Open special menus"
429421msgstr ""
po/mr.po+11−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171171msgid "Close all"
172172msgstr ""
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177177msgstr ""
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr "शोध"
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr ""
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr "आवड पासून काढूण टाका"
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr "आवड मध्ये जोडा"
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr ""
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr ""
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr "शोध"
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416416msgid "Call back"
417417msgstr ""
418418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427419#: qml/Tutorial/TutorialBottom.qml:28
428420msgid "Open special menus"
429421msgstr ""
po/ms.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"PO-Revision-Date: 2014-01-17 09:05+0000\n"
1212"Last-Translator: abuyop <Unknown>\n"
1313"Language-Team: Malay <ms@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -173,38 +173,38 @@ msgstr "Sambung semula sekarang!"
173173msgid "Close all"
174174msgstr "Tutup semua"
175175
176−#: qml/Dash/DashPageHeader.qml:266
176+#: qml/Dash/DashPageHeader.qml:270
177177msgctxt "Button: Open the Ubuntu Store"
178178msgid "Store"
179179msgstr "Kedai"
180180
181−#: qml/Dash/DashPageHeader.qml:273
181+#: qml/Dash/DashPageHeader.qml:277
182182msgctxt "Button: Start a search in the current dash scope"
183183msgid "Search"
184184msgstr "Gelintar"
185185
186−#: qml/Dash/DashPageHeader.qml:283
186+#: qml/Dash/DashPageHeader.qml:287
187187msgctxt "Button: Show the current dash scope settings"
188188msgid "Settings"
189189msgstr "Tetapan"
190190
191−#: qml/Dash/DashPageHeader.qml:290
191+#: qml/Dash/DashPageHeader.qml:294
192192msgid "Remove from Favorites"
193193msgstr "Buang dari Kegemaran"
194194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196196msgid "Add to Favorites"
197197msgstr "Tambah ke Kegemaran"
198198
199−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
199+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
200200msgid "See less"
201201msgstr "Lihat kurang"
202202
203−#: qml/Dash/GenericScopeView.qml:587
203+#: qml/Dash/GenericScopeView.qml:565
204204msgid "See all"
205205msgstr "Lihat semua"
206206
207−#: qml/Dash/GenericScopeView.qml:649
207+#: qml/Dash/GenericScopeView.qml:627
208208msgctxt "Label: Hint for dash search line edit"
209209msgid "Search"
210210msgstr "Gelintar"
@@ -422,14 +422,6 @@ msgctxt "Button: Call back on phone"
422422msgid "Call back"
423423msgstr "Panggilan semula"
424424
425−#: qml/Panel/Indicators/ModemInfoItem.qml:105
426−msgid "Unlock SIM"
427−msgstr "Buka SIM"
428−
429−#: qml/Panel/Indicators/RoamingIndication.qml:27
430−msgid "Roaming"
431−msgstr "Perayauan"
432−
433425#: qml/Tutorial/TutorialBottom.qml:28
434426msgid "Open special menus"
435427msgstr "Buka menu khas"
@@ -758,12 +750,18 @@ msgstr "%1 〉"
758750#~ msgid "Done"
759751#~ msgstr "Selesai"
760752
753+#~ msgid "Roaming"
754+#~ msgstr "Perayauan"
755+
761756#~ msgid "Please re-enter"
762757#~ msgstr "Sila masuk-semula"
763758
764759#~ msgid "Manage Scopes"
765760#~ msgstr "Urus Skop"
766761
762+#~ msgid "Unlock SIM"
763+#~ msgstr "Buka SIM"
764+
767765#~ msgid ""
768766#~ "You have now mastered the edge gestures and can start using the "
769767#~ "phone<br><br>Tap on the screen to start"
po/my.po+14−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171171msgid "Close all"
172172msgstr ""
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177177msgstr "မှတ်သားပါ"
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr "ရှာဖွေရန်"
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr "ချိန်ညှိစရာများ"
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr "နှစ်သက်မှုအဖြစ်မှပယ်ဖျက်ပါ"
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr "နှစ်သက်မှုအဖြစ်ထည့်ပါ"
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr ""
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr ""
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr "ရှာဖွေရန်"
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416416msgid "Call back"
417417msgstr ""
418418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr "Roaming"
426−
427419#: qml/Tutorial/TutorialBottom.qml:28
428420msgid "Open special menus"
429421msgstr ""
@@ -698,3 +690,6 @@ msgstr ""
698690
699691#~ msgid "Well done"
700692#~ msgstr "ကောင်းအောင်ပြုလုပ်ခဲ့သည်"
693+
694+#~ msgid "Roaming"
695+#~ msgstr "Roaming"
po/nb.po+22−22
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -177,38 +177,38 @@ msgstr "Koble til nå!"
177177msgid "Close all"
178178msgstr "Lukk alle"
179179
180−#: qml/Dash/DashPageHeader.qml:266
180+#: qml/Dash/DashPageHeader.qml:270
181181msgctxt "Button: Open the Ubuntu Store"
182182msgid "Store"
183183msgstr "Butikk"
184184
185−#: qml/Dash/DashPageHeader.qml:273
185+#: qml/Dash/DashPageHeader.qml:277
186186msgctxt "Button: Start a search in the current dash scope"
187187msgid "Search"
188188msgstr "Søk"
189189
190−#: qml/Dash/DashPageHeader.qml:283
190+#: qml/Dash/DashPageHeader.qml:287
191191msgctxt "Button: Show the current dash scope settings"
192192msgid "Settings"
193193msgstr "Innstillinger"
194194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196196msgid "Remove from Favorites"
197197msgstr "Fjern fra favoritter"
198198
199−#: qml/Dash/DashPageHeader.qml:290
199+#: qml/Dash/DashPageHeader.qml:294
200200msgid "Add to Favorites"
201201msgstr "Legg til i favoritter"
202202
203−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
203+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
204204msgid "See less"
205205msgstr "Vis mindre"
206206
207−#: qml/Dash/GenericScopeView.qml:587
207+#: qml/Dash/GenericScopeView.qml:565
208208msgid "See all"
209209msgstr "Vis alt"
210210
211−#: qml/Dash/GenericScopeView.qml:649
211+#: qml/Dash/GenericScopeView.qml:627
212212msgctxt "Label: Hint for dash search line edit"
213213msgid "Search"
214214msgstr "Søk"
@@ -267,6 +267,8 @@ msgid ""
267267"Your device is now connected to an external display. Use this screen as a "
268268"touch pad to interact with the mouse."
269269msgstr ""
270+"Enheten er nå koblet til en ekstern skjerm. Bruk denne skjermen som "
271+"styreplate."
270272
271273#: qml/Greeter/CoverPage.qml:107
272274msgid "Unlock"
@@ -426,14 +428,6 @@ msgctxt "Button: Call back on phone"
426428msgid "Call back"
427429msgstr "Ring tilbake"
428430
429−#: qml/Panel/Indicators/ModemInfoItem.qml:105
430−msgid "Unlock SIM"
431−msgstr "Lås opp SIM"
432−
433−#: qml/Panel/Indicators/RoamingIndication.qml:27
434−msgid "Roaming"
435−msgstr "Fremmednett"
436−
437431#: qml/Tutorial/TutorialBottom.qml:28
438432msgid "Open special menus"
439433msgstr "Åpne spesialmenyer"
@@ -498,7 +492,7 @@ msgstr "Hei!"
498492
499493#: qml/Wizard/Pages/10-welcome.qml:44
500494msgid "Welcome to your Ubuntu device."
501−msgstr ""
495+msgstr "Velkommen til Ubuntu-enheten din."
502496
503497#: qml/Wizard/Pages/10-welcome.qml:52
504498msgid "Let’s get started."
@@ -529,7 +523,7 @@ msgstr "Låsesikkerhet"
529523
530524#: qml/Wizard/Pages/30-passwd-type.qml:79
531525msgid "Please select how you’d like to unlock your device."
532−msgstr ""
526+msgstr "Velg hvordan du vil låse opp enheten."
533527
534528#: qml/Wizard/Pages/30-passwd-type.qml:102
535529msgctxt "Label: Type of security method"
@@ -636,7 +630,7 @@ msgstr "Godt jobba!"
636630
637631#: qml/Wizard/Pages/80-finished.qml:46
638632msgid "Your device is now ready to use."
639−msgstr ""
633+msgstr "Enheten er nå klar til bruk."
640634
641635#: qml/Wizard/Pages/80-finished.qml:53
642636msgid "Finish"
@@ -731,6 +725,9 @@ msgstr "%1 〉"
731725#~ msgid "All"
732726#~ msgstr "Alt"
733727
728+#~ msgid "Unlock SIM"
729+#~ msgstr "Lås opp SIM"
730+
734731#~ msgid "Favorites"
735732#~ msgstr "Favoritter"
736733
@@ -743,6 +740,9 @@ msgstr "%1 〉"
743740#~ msgid "Done"
744741#~ msgstr "Ferdig"
745742
743+#~ msgid "Roaming"
744+#~ msgstr "Fremmednett"
745+
746746#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
747747#~ msgstr "Skyv fra venstre for å få tilgang til programoppstarteren"
748748
po/ne.po+11−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"PO-Revision-Date: 2015-12-06 15:11+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Nepali <ne@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171171msgid "Close all"
172172msgstr ""
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177177msgstr ""
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr ""
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr ""
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr ""
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr ""
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr ""
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416416msgid "Call back"
417417msgstr ""
418418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427419#: qml/Tutorial/TutorialBottom.qml:28
428420msgid "Open special menus"
429421msgstr ""
po/nl.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -177,38 +177,38 @@ msgstr ""
177177msgid "Close all"
178178msgstr ""
179179
180−#: qml/Dash/DashPageHeader.qml:266
180+#: qml/Dash/DashPageHeader.qml:270
181181msgctxt "Button: Open the Ubuntu Store"
182182msgid "Store"
183183msgstr "Winkel"
184184
185−#: qml/Dash/DashPageHeader.qml:273
185+#: qml/Dash/DashPageHeader.qml:277
186186msgctxt "Button: Start a search in the current dash scope"
187187msgid "Search"
188188msgstr "Zoeken"
189189
190−#: qml/Dash/DashPageHeader.qml:283
190+#: qml/Dash/DashPageHeader.qml:287
191191msgctxt "Button: Show the current dash scope settings"
192192msgid "Settings"
193193msgstr "Instellingen"
194194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196196msgid "Remove from Favorites"
197197msgstr "Verwijderen uit favorieten"
198198
199−#: qml/Dash/DashPageHeader.qml:290
199+#: qml/Dash/DashPageHeader.qml:294
200200msgid "Add to Favorites"
201201msgstr "Toevoegen aan favorieten"
202202
203−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
203+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
204204msgid "See less"
205205msgstr "Minder zien"
206206
207−#: qml/Dash/GenericScopeView.qml:587
207+#: qml/Dash/GenericScopeView.qml:565
208208msgid "See all"
209209msgstr "Alles zien"
210210
211−#: qml/Dash/GenericScopeView.qml:649
211+#: qml/Dash/GenericScopeView.qml:627
212212msgctxt "Label: Hint for dash search line edit"
213213msgid "Search"
214214msgstr "Zoeken"
@@ -426,14 +426,6 @@ msgctxt "Button: Call back on phone"
426426msgid "Call back"
427427msgstr ""
428428
429−#: qml/Panel/Indicators/ModemInfoItem.qml:105
430−msgid "Unlock SIM"
431−msgstr "Simkaart deblokkeren"
432−
433−#: qml/Panel/Indicators/RoamingIndication.qml:27
434−msgid "Roaming"
435−msgstr "Roaming"
436−
437429#: qml/Tutorial/TutorialBottom.qml:28
438430msgid "Open special menus"
439431msgstr "Speciale menu's openen"
@@ -746,6 +738,9 @@ msgstr "%1 〉"
746738#~ msgid "Store"
747739#~ msgstr "Winkel"
748740
741+#~ msgid "Roaming"
742+#~ msgstr "Roaming"
743+
749744#~ msgid "Done"
750745#~ msgstr "Klaar"
751746
@@ -767,6 +762,9 @@ msgstr "%1 〉"
767762#~ msgid "Power"
768763#~ msgstr "Energie"
769764
765+#~ msgid "Unlock SIM"
766+#~ msgstr "Simkaart deblokkeren"
767+
770768#~ msgid "Restart"
771769#~ msgstr "Herstarten"
772770
po/nn.po+11−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171171msgid "Close all"
172172msgstr ""
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177177msgstr ""
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr ""
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr ""
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr ""
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr ""
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr ""
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416416msgid "Call back"
417417msgstr ""
418418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427419#: qml/Tutorial/TutorialBottom.qml:28
428420msgid "Open special menus"
429421msgstr ""
po/oc.po+11−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171171msgid "Close all"
172172msgstr ""
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177177msgstr ""
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr ""
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr ""
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr ""
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr ""
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr ""
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416416msgid "Call back"
417417msgstr ""
418418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427419#: qml/Tutorial/TutorialBottom.qml:28
428420msgid "Open special menus"
429421msgstr ""
po/or.po+11−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171171msgid "Close all"
172172msgstr ""
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177177msgstr ""
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr ""
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr ""
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr ""
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr ""
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr ""
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416416msgid "Call back"
417417msgstr ""
418418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427419#: qml/Tutorial/TutorialBottom.qml:28
428420msgid "Open special menus"
429421msgstr ""
po/pa.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -173,38 +173,38 @@ msgstr ""
173173msgid "Close all"
174174msgstr ""
175175
176−#: qml/Dash/DashPageHeader.qml:266
176+#: qml/Dash/DashPageHeader.qml:270
177177msgctxt "Button: Open the Ubuntu Store"
178178msgid "Store"
179179msgstr "ਸਟੋਰ"
180180
181−#: qml/Dash/DashPageHeader.qml:273
181+#: qml/Dash/DashPageHeader.qml:277
182182msgctxt "Button: Start a search in the current dash scope"
183183msgid "Search"
184184msgstr "ਖੋਜ"
185185
186−#: qml/Dash/DashPageHeader.qml:283
186+#: qml/Dash/DashPageHeader.qml:287
187187msgctxt "Button: Show the current dash scope settings"
188188msgid "Settings"
189189msgstr "ਸੈਟਿੰਗ"
190190
191−#: qml/Dash/DashPageHeader.qml:290
191+#: qml/Dash/DashPageHeader.qml:294
192192msgid "Remove from Favorites"
193193msgstr "ਪਸੰਦ ਵਿੱਚੋਂ ਹਟਾਓ"
194194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196196msgid "Add to Favorites"
197197msgstr "ਪਸੰਦ ਵਿੱਚ ਜੋੜੋ"
198198
199−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
199+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
200200msgid "See less"
201201msgstr "ਘੱਟ ਵੇਖੋ"
202202
203−#: qml/Dash/GenericScopeView.qml:587
203+#: qml/Dash/GenericScopeView.qml:565
204204msgid "See all"
205205msgstr "ਸਾਰਾ ਵੇਖੋ"
206206
207−#: qml/Dash/GenericScopeView.qml:649
207+#: qml/Dash/GenericScopeView.qml:627
208208msgctxt "Label: Hint for dash search line edit"
209209msgid "Search"
210210msgstr "ਖੋਜ"
@@ -422,14 +422,6 @@ msgctxt "Button: Call back on phone"
422422msgid "Call back"
423423msgstr ""
424424
425−#: qml/Panel/Indicators/ModemInfoItem.qml:105
426−msgid "Unlock SIM"
427−msgstr "ਅਣਲਾਕ SIM"
428−
429−#: qml/Panel/Indicators/RoamingIndication.qml:27
430−msgid "Roaming"
431−msgstr "ਰੋਮਿੰਗ"
432−
433425#: qml/Tutorial/TutorialBottom.qml:28
434426msgid "Open special menus"
435427msgstr "ਖਾਸ਼ ਮੀਨੂੰ ਖੋਲ੍ਹੋ"
@@ -714,6 +706,12 @@ msgstr "%1 〉"
714706#~ msgid "Please re-enter"
715707#~ msgstr "ਕਿਰਪਾ ਕਰਕੇ ਮੁੜ-ਦਰਜ ਕਰੋ"
716708
709+#~ msgid "Unlock SIM"
710+#~ msgstr "ਅਣਲਾਕ SIM"
711+
712+#~ msgid "Roaming"
713+#~ msgstr "ਰੋਮਿੰਗ"
714+
717715#~ msgid "Please select how you’d like to unlock your phone."
718716#~ msgstr ""
719717#~ "ਕਿਰਪਾ ਕਰਕੇ ਚੁਣੋ ਤੁਸੀਂ ਆਪਣੇ ਫ਼ੋਨ ਨੂੰ ਕਿਸ ਤਰ੍ਹਾਂ ਅਣ-ਲਾਕ ਕਰਨਾ ਪਸੰਦ ਕਰੋਗੇ।"
po/pl.po+20−22
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -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: 2016-02-17 05:43+0000\n"
20−"X-Generator: Launchpad (build 17925)\n"
19+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
20+"X-Generator: Launchpad (build 17936)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -175,38 +175,38 @@ msgstr "Ponownie połącz teraz!"
175175msgid "Close all"
176176msgstr "Zamknij wszystko"
177177
178−#: qml/Dash/DashPageHeader.qml:266
178+#: qml/Dash/DashPageHeader.qml:270
179179msgctxt "Button: Open the Ubuntu Store"
180180msgid "Store"
181181msgstr "Sklep"
182182
183−#: qml/Dash/DashPageHeader.qml:273
183+#: qml/Dash/DashPageHeader.qml:277
184184msgctxt "Button: Start a search in the current dash scope"
185185msgid "Search"
186186msgstr "Wyszukaj"
187187
188−#: qml/Dash/DashPageHeader.qml:283
188+#: qml/Dash/DashPageHeader.qml:287
189189msgctxt "Button: Show the current dash scope settings"
190190msgid "Settings"
191191msgstr "Ustawienia"
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Remove from Favorites"
195195msgstr "Usuń z ulubionych"
196196
197−#: qml/Dash/DashPageHeader.qml:290
197+#: qml/Dash/DashPageHeader.qml:294
198198msgid "Add to Favorites"
199199msgstr "Dodaj do ulubionych"
200200
201−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
201+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
202202msgid "See less"
203203msgstr "Zobacz mniej"
204204
205−#: qml/Dash/GenericScopeView.qml:587
205+#: qml/Dash/GenericScopeView.qml:565
206206msgid "See all"
207207msgstr "Zobacz wszystko"
208208
209−#: qml/Dash/GenericScopeView.qml:649
209+#: qml/Dash/GenericScopeView.qml:627
210210msgctxt "Label: Hint for dash search line edit"
211211msgid "Search"
212212msgstr "Szukaj"
@@ -429,14 +429,6 @@ msgctxt "Button: Call back on phone"
429429msgid "Call back"
430430msgstr "Oddzwoń"
431431
432−#: qml/Panel/Indicators/ModemInfoItem.qml:105
433−msgid "Unlock SIM"
434−msgstr "Odblokuj kartę SIM"
435−
436−#: qml/Panel/Indicators/RoamingIndication.qml:27
437−msgid "Roaming"
438−msgstr "Roaming"
439−
440432#: qml/Tutorial/TutorialBottom.qml:28
441433msgid "Open special menus"
442434msgstr "Otwórz menu specjalne"
@@ -501,7 +493,7 @@ msgstr "Witaj!"
501493
502494#: qml/Wizard/Pages/10-welcome.qml:44
503495msgid "Welcome to your Ubuntu device."
504−msgstr ""
496+msgstr "Witaj w swoim urządzeniu Ubuntu."
505497
506498#: qml/Wizard/Pages/10-welcome.qml:52
507499msgid "Let’s get started."
@@ -533,7 +525,7 @@ msgstr "Blokada"
533525
534526#: qml/Wizard/Pages/30-passwd-type.qml:79
535527msgid "Please select how you’d like to unlock your device."
536−msgstr ""
528+msgstr "Prosimy wybrać sposób, w jaki chcesz odblokować swoje urządzenie."
537529
538530#: qml/Wizard/Pages/30-passwd-type.qml:102
539531msgctxt "Label: Type of security method"
@@ -640,7 +632,7 @@ msgstr "Dobra robota!"
640632
641633#: qml/Wizard/Pages/80-finished.qml:46
642634msgid "Your device is now ready to use."
643−msgstr ""
635+msgstr "Twoje urządzenie jest już gotowe do użytku."
644636
645637#: qml/Wizard/Pages/80-finished.qml:53
646638msgid "Finish"
@@ -740,6 +732,9 @@ msgstr "%1 〉"
740732#~ "Wydawanie poleceń krawędzi zostało opanowane. Urządzenie gotowe do "
741733#~ "pracy.<br><br>Dotknij ekranu by rozpocząć"
742734
735+#~ msgid "Unlock SIM"
736+#~ msgstr "Odblokuj kartę SIM"
737+
743738#~ msgid "Log out"
744739#~ msgstr "Wyloguj"
745740
@@ -764,6 +759,9 @@ msgstr "%1 〉"
764759#~ msgid "Settings"
765760#~ msgstr "Ustawienia"
766761
762+#~ msgid "Roaming"
763+#~ msgstr "Roaming"
764+
767765#~ msgid "Please re-enter"
768766#~ msgstr "Proszę wprowadź ponownie"
769767
po/pt.po+28−30
@@ -7,16 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
11−"PO-Revision-Date: 2015-12-20 09:20+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11+"PO-Revision-Date: 2016-02-18 01:11+0000\n"
1212"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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -143,7 +143,7 @@ msgstr "Reiniciar"
143143
144144#: qml/Components/Lockscreen.qml:245
145145msgid "Return to Call"
146−msgstr "Volte para chamada"
146+msgstr "Volte para a chamada"
147147
148148#: qml/Components/Lockscreen.qml:245
149149msgid "Emergency Call"
@@ -177,38 +177,38 @@ msgstr "Volte a ligar agora!"
177177msgid "Close all"
178178msgstr "Fechar tudo"
179179
180−#: qml/Dash/DashPageHeader.qml:266
180+#: qml/Dash/DashPageHeader.qml:270
181181msgctxt "Button: Open the Ubuntu Store"
182182msgid "Store"
183183msgstr "Store"
184184
185−#: qml/Dash/DashPageHeader.qml:273
185+#: qml/Dash/DashPageHeader.qml:277
186186msgctxt "Button: Start a search in the current dash scope"
187187msgid "Search"
188188msgstr "Procurar"
189189
190−#: qml/Dash/DashPageHeader.qml:283
190+#: qml/Dash/DashPageHeader.qml:287
191191msgctxt "Button: Show the current dash scope settings"
192192msgid "Settings"
193193msgstr "Definições"
194194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196196msgid "Remove from Favorites"
197197msgstr "Remover dos favoritos"
198198
199−#: qml/Dash/DashPageHeader.qml:290
199+#: qml/Dash/DashPageHeader.qml:294
200200msgid "Add to Favorites"
201201msgstr "Adicionar aos favoritos"
202202
203−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
203+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
204204msgid "See less"
205205msgstr "Ver menos"
206206
207−#: qml/Dash/GenericScopeView.qml:587
207+#: qml/Dash/GenericScopeView.qml:565
208208msgid "See all"
209209msgstr "Ver todos"
210210
211−#: qml/Dash/GenericScopeView.qml:649
211+#: qml/Dash/GenericScopeView.qml:627
212212msgctxt "Label: Hint for dash search line edit"
213213msgid "Search"
214214msgstr "Procurar"
@@ -347,7 +347,7 @@ msgstr "Mostrar palavra-passe"
347347
348348#: qml/Panel/ActiveCallHint.qml:79
349349msgid "Tap to return to call..."
350−msgstr "Toque para voltar a chamar..."
350+msgstr "Toque para voltar à chamada..."
351351
352352#: qml/Panel/ActiveCallHint.qml:92
353353msgid "Conference"
@@ -428,14 +428,6 @@ msgctxt "Button: Call back on phone"
428428msgid "Call back"
429429msgstr "Ligar de volta"
430430
431−#: qml/Panel/Indicators/ModemInfoItem.qml:105
432−msgid "Unlock SIM"
433−msgstr "Desbloquear SIM"
434−
435−#: qml/Panel/Indicators/RoamingIndication.qml:27
436−msgid "Roaming"
437−msgstr "Roaming"
438−
439431#: qml/Tutorial/TutorialBottom.qml:28
440432msgid "Open special menus"
441433msgstr "Abrir menus especiais"
@@ -500,7 +492,7 @@ msgstr "Olá!"
500492
501493#: qml/Wizard/Pages/10-welcome.qml:44
502494msgid "Welcome to your Ubuntu device."
503−msgstr ""
495+msgstr "Bem-vindo ao seu dispositivo Ubuntu."
504496
505497#: qml/Wizard/Pages/10-welcome.qml:52
506498msgid "Let’s get started."
@@ -532,7 +524,7 @@ msgstr "Bloqueio de segurança"
532524
533525#: qml/Wizard/Pages/30-passwd-type.qml:79
534526msgid "Please select how you’d like to unlock your device."
535−msgstr ""
527+msgstr "Escolha como quer desbloquear o seu dispositivo."
536528
537529#: qml/Wizard/Pages/30-passwd-type.qml:102
538530msgctxt "Label: Type of security method"
@@ -607,7 +599,7 @@ msgstr "De modo nenhum"
607599
608600#: qml/Wizard/Pages/50-location.qml:124
609601msgid "You can change your mind later in <b>System Settings</b>."
610−msgstr "Pode mudar de ideias mais tarde em <b>Definições</b>."
602+msgstr "Pode mudar de ideias mais tarde nas <b>Definições</b>."
611603
612604#: qml/Wizard/Pages/60-reporting.qml:26
613605msgid "Improving your experience"
@@ -626,8 +618,8 @@ msgid ""
626618"This can be disabled in <b>System Settings</b> under <b>Security &amp; "
627619"Privacy</b>"
628620msgstr ""
629−"Isto pode ser desligado nas <b>Definições do Sistema</b> debaixo da "
630−"<b>Segurança eamp; Privacidade</b>"
621+"Isto pode ser desligado nas <b>Definições</b> debaixo da <b>Segurança eamp; "
622+"Privacidade</b>"
631623
632624#: qml/Wizard/Pages/80-finished.qml:24
633625msgid "All done"
@@ -639,7 +631,7 @@ msgstr "Bom trabalho!"
639631
640632#: qml/Wizard/Pages/80-finished.qml:46
641633msgid "Your device is now ready to use."
642−msgstr ""
634+msgstr "O seu dispositivo está pronto."
643635
644636#: qml/Wizard/Pages/80-finished.qml:53
645637msgid "Finish"
@@ -655,7 +647,7 @@ msgstr "Confirmar a palavra-passe"
655647
656648#: qml/Wizard/Pages/passwd-confirm.qml:50
657649msgid "Confirm passcode"
658−msgstr "Confirmar código"
650+msgstr "Confirme o código"
659651
660652#: qml/Wizard/Pages/passwd-confirm.qml:53
661653#: qml/Wizard/Pages/passwd-confirm.qml:54
@@ -664,7 +656,7 @@ msgstr "Por favor, tente novamente."
664656
665657#: qml/Wizard/Pages/passwd-set.qml:61
666658msgid "Choose your passcode"
667−msgstr "Escolha o seu código"
659+msgstr "Escolha o código"
668660
669661#: qml/Wizard/Pages/passwd-set.qml:68
670662msgid "Passphrase must be 4 characters long"
@@ -721,6 +713,9 @@ msgstr "%1 〉"
721713#~ msgid "All"
722714#~ msgstr "Todos"
723715
716+#~ msgid "Unlock SIM"
717+#~ msgstr "Desbloquear SIM"
718+
724719#~ msgid "Favorites"
725720#~ msgstr "Favoritos"
726721
@@ -730,6 +725,9 @@ msgstr "%1 〉"
730725#~ msgid "Done"
731726#~ msgstr "Concluído"
732727
728+#~ msgid "Roaming"
729+#~ msgstr "Roaming"
730+
733731#~ msgid "Log out"
734732#~ msgstr "Terminar sessão"
735733
po/pt_BR.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -175,38 +175,38 @@ msgstr ""
175175msgid "Close all"
176176msgstr ""
177177
178−#: qml/Dash/DashPageHeader.qml:266
178+#: qml/Dash/DashPageHeader.qml:270
179179msgctxt "Button: Open the Ubuntu Store"
180180msgid "Store"
181181msgstr "Loja"
182182
183−#: qml/Dash/DashPageHeader.qml:273
183+#: qml/Dash/DashPageHeader.qml:277
184184msgctxt "Button: Start a search in the current dash scope"
185185msgid "Search"
186186msgstr "Pesquisar"
187187
188−#: qml/Dash/DashPageHeader.qml:283
188+#: qml/Dash/DashPageHeader.qml:287
189189msgctxt "Button: Show the current dash scope settings"
190190msgid "Settings"
191191msgstr "Configurações"
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Remove from Favorites"
195195msgstr "Remover dos favoritos"
196196
197−#: qml/Dash/DashPageHeader.qml:290
197+#: qml/Dash/DashPageHeader.qml:294
198198msgid "Add to Favorites"
199199msgstr "Adicionar aos favoritos"
200200
201−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
201+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
202202msgid "See less"
203203msgstr "Ver menos"
204204
205−#: qml/Dash/GenericScopeView.qml:587
205+#: qml/Dash/GenericScopeView.qml:565
206206msgid "See all"
207207msgstr "Ver todos"
208208
209−#: qml/Dash/GenericScopeView.qml:649
209+#: qml/Dash/GenericScopeView.qml:627
210210msgctxt "Label: Hint for dash search line edit"
211211msgid "Search"
212212msgstr "Pesquisar"
@@ -424,14 +424,6 @@ msgctxt "Button: Call back on phone"
424424msgid "Call back"
425425msgstr ""
426426
427−#: qml/Panel/Indicators/ModemInfoItem.qml:105
428−msgid "Unlock SIM"
429−msgstr "Desbloquear SIM"
430−
431−#: qml/Panel/Indicators/RoamingIndication.qml:27
432−msgid "Roaming"
433−msgstr "Roaming"
434−
435427#: qml/Tutorial/TutorialBottom.qml:28
436428msgid "Open special menus"
437429msgstr "Abrir menus especiais"
@@ -737,6 +729,9 @@ msgstr "%1 〉"
737729#~ "Agora você já domina os gestos das bordas e pode começar a usar o "
738730#~ "telefone<br><br>Toque na tela para iniciar"
739731
732+#~ msgid "Unlock SIM"
733+#~ msgstr "Desbloquear SIM"
734+
740735#~ msgid "Store"
741736#~ msgstr "Loja"
742737
@@ -749,6 +744,9 @@ msgstr "%1 〉"
749744#~ msgid "Favorites"
750745#~ msgstr "Favoritos"
751746
747+#~ msgid "Roaming"
748+#~ msgstr "Roaming"
749+
752750#~ msgid "All"
753751#~ msgstr "Tudo"
754752
po/ro.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -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: 2016-02-17 05:43+0000\n"
20−"X-Generator: Launchpad (build 17925)\n"
19+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
20+"X-Generator: Launchpad (build 17936)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -178,38 +178,38 @@ msgstr ""
178178msgid "Close all"
179179msgstr ""
180180
181−#: qml/Dash/DashPageHeader.qml:266
181+#: qml/Dash/DashPageHeader.qml:270
182182msgctxt "Button: Open the Ubuntu Store"
183183msgid "Store"
184184msgstr "Magazin"
185185
186−#: qml/Dash/DashPageHeader.qml:273
186+#: qml/Dash/DashPageHeader.qml:277
187187msgctxt "Button: Start a search in the current dash scope"
188188msgid "Search"
189189msgstr "Căutare"
190190
191−#: qml/Dash/DashPageHeader.qml:283
191+#: qml/Dash/DashPageHeader.qml:287
192192msgctxt "Button: Show the current dash scope settings"
193193msgid "Settings"
194194msgstr "Configurări"
195195
196−#: qml/Dash/DashPageHeader.qml:290
196+#: qml/Dash/DashPageHeader.qml:294
197197msgid "Remove from Favorites"
198198msgstr "Șterge din favorite"
199199
200−#: qml/Dash/DashPageHeader.qml:290
200+#: qml/Dash/DashPageHeader.qml:294
201201msgid "Add to Favorites"
202202msgstr "Adaugă la favorite"
203203
204−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
204+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
205205msgid "See less"
206206msgstr "Afișează mai puține"
207207
208−#: qml/Dash/GenericScopeView.qml:587
208+#: qml/Dash/GenericScopeView.qml:565
209209msgid "See all"
210210msgstr "Afișează tot"
211211
212−#: qml/Dash/GenericScopeView.qml:649
212+#: qml/Dash/GenericScopeView.qml:627
213213msgctxt "Label: Hint for dash search line edit"
214214msgid "Search"
215215msgstr "Căutare"
@@ -432,14 +432,6 @@ msgctxt "Button: Call back on phone"
432432msgid "Call back"
433433msgstr ""
434434
435−#: qml/Panel/Indicators/ModemInfoItem.qml:105
436−msgid "Unlock SIM"
437−msgstr "Deblocare SIM"
438−
439−#: qml/Panel/Indicators/RoamingIndication.qml:27
440−msgid "Roaming"
441−msgstr "Roaming"
442−
443435#: qml/Tutorial/TutorialBottom.qml:28
444436msgid "Open special menus"
445437msgstr "Deschide meniurile speciale"
@@ -751,6 +743,9 @@ msgstr "%1 〉"
751743#~ msgid "All"
752744#~ msgstr "Tot"
753745
746+#~ msgid "Unlock SIM"
747+#~ msgstr "Deblocare SIM"
748+
754749#~ msgid "Favorites"
755750#~ msgstr "Favorite"
756751
@@ -763,6 +758,9 @@ msgstr "%1 〉"
763758#~ msgid "Done"
764759#~ msgstr "Finalizat"
765760
761+#~ msgid "Roaming"
762+#~ msgstr "Roaming"
763+
766764#~ msgid "Log out"
767765#~ msgstr "Închide sesiunea"
768766
po/ru.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -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: 2016-02-17 05:43+0000\n"
20−"X-Generator: Launchpad (build 17925)\n"
19+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
20+"X-Generator: Launchpad (build 17936)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -179,38 +179,38 @@ msgstr "Переподключиться сейчас!"
179179msgid "Close all"
180180msgstr "Закрыть все"
181181
182−#: qml/Dash/DashPageHeader.qml:266
182+#: qml/Dash/DashPageHeader.qml:270
183183msgctxt "Button: Open the Ubuntu Store"
184184msgid "Store"
185185msgstr "Магазин"
186186
187−#: qml/Dash/DashPageHeader.qml:273
187+#: qml/Dash/DashPageHeader.qml:277
188188msgctxt "Button: Start a search in the current dash scope"
189189msgid "Search"
190190msgstr "Найти"
191191
192−#: qml/Dash/DashPageHeader.qml:283
192+#: qml/Dash/DashPageHeader.qml:287
193193msgctxt "Button: Show the current dash scope settings"
194194msgid "Settings"
195195msgstr "Настройки"
196196
197−#: qml/Dash/DashPageHeader.qml:290
197+#: qml/Dash/DashPageHeader.qml:294
198198msgid "Remove from Favorites"
199199msgstr "Удалить из избранного"
200200
201−#: qml/Dash/DashPageHeader.qml:290
201+#: qml/Dash/DashPageHeader.qml:294
202202msgid "Add to Favorites"
203203msgstr "Добавить в избранное"
204204
205−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
205+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
206206msgid "See less"
207207msgstr "Вкратце"
208208
209−#: qml/Dash/GenericScopeView.qml:587
209+#: qml/Dash/GenericScopeView.qml:565
210210msgid "See all"
211211msgstr "Показать всё"
212212
213−#: qml/Dash/GenericScopeView.qml:649
213+#: qml/Dash/GenericScopeView.qml:627
214214msgctxt "Label: Hint for dash search line edit"
215215msgid "Search"
216216msgstr "Поиск"
@@ -431,14 +431,6 @@ msgctxt "Button: Call back on phone"
431431msgid "Call back"
432432msgstr "Позвонить"
433433
434−#: qml/Panel/Indicators/ModemInfoItem.qml:105
435−msgid "Unlock SIM"
436−msgstr "Разблокировать SIM-карту"
437−
438−#: qml/Panel/Indicators/RoamingIndication.qml:27
439−msgid "Roaming"
440−msgstr "Роуминг"
441−
442434#: qml/Tutorial/TutorialBottom.qml:28
443435msgid "Open special menus"
444436msgstr "Открытие специальных меню"
@@ -747,12 +739,18 @@ msgstr "%1 〉"
747739#~ "Вы научились пользоваться Ubuntu и можете начать использовать свой "
748740#~ "телефон<br><br>Нажмите на экран"
749741
742+#~ msgid "Unlock SIM"
743+#~ msgstr "Разблокировать SIM-карту"
744+
750745#~ msgid "Power off"
751746#~ msgstr "Отключить"
752747
753748#~ msgid "All"
754749#~ msgstr "Все"
755750
751+#~ msgid "Roaming"
752+#~ msgstr "Роуминг"
753+
756754#~ msgid "Favorites"
757755#~ msgstr "Избранное"
758756
po/shn.po+11−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"PO-Revision-Date: 2015-11-10 12:09+0000\n"
1212"Last-Translator: Rockworld <sumoisrock@gmail.com>\n"
1313"Language-Team: Shan <shn@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171171msgid "Close all"
172172msgstr ""
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177177msgstr ""
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr ""
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr ""
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr ""
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr ""
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr ""
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416416msgid "Call back"
417417msgstr ""
418418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427419#: qml/Tutorial/TutorialBottom.qml:28
428420msgid "Open special menus"
429421msgstr ""
po/si.po+11−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -173,38 +173,38 @@ msgstr ""
173173msgid "Close all"
174174msgstr ""
175175
176−#: qml/Dash/DashPageHeader.qml:266
176+#: qml/Dash/DashPageHeader.qml:270
177177msgctxt "Button: Open the Ubuntu Store"
178178msgid "Store"
179179msgstr ""
180180
181−#: qml/Dash/DashPageHeader.qml:273
181+#: qml/Dash/DashPageHeader.qml:277
182182msgctxt "Button: Start a search in the current dash scope"
183183msgid "Search"
184184msgstr ""
185185
186−#: qml/Dash/DashPageHeader.qml:283
186+#: qml/Dash/DashPageHeader.qml:287
187187msgctxt "Button: Show the current dash scope settings"
188188msgid "Settings"
189189msgstr ""
190190
191−#: qml/Dash/DashPageHeader.qml:290
191+#: qml/Dash/DashPageHeader.qml:294
192192msgid "Remove from Favorites"
193193msgstr ""
194194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196196msgid "Add to Favorites"
197197msgstr ""
198198
199−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
199+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
200200msgid "See less"
201201msgstr ""
202202
203−#: qml/Dash/GenericScopeView.qml:587
203+#: qml/Dash/GenericScopeView.qml:565
204204msgid "See all"
205205msgstr ""
206206
207−#: qml/Dash/GenericScopeView.qml:649
207+#: qml/Dash/GenericScopeView.qml:627
208208msgctxt "Label: Hint for dash search line edit"
209209msgid "Search"
210210msgstr ""
@@ -418,14 +418,6 @@ msgctxt "Button: Call back on phone"
418418msgid "Call back"
419419msgstr ""
420420
421−#: qml/Panel/Indicators/ModemInfoItem.qml:105
422−msgid "Unlock SIM"
423−msgstr ""
424−
425−#: qml/Panel/Indicators/RoamingIndication.qml:27
426−msgid "Roaming"
427−msgstr ""
428−
429421#: qml/Tutorial/TutorialBottom.qml:28
430422msgid "Open special menus"
431423msgstr ""
po/sk.po+179−157
@@ -7,577 +7,587 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
11−"PO-Revision-Date: 2015-04-10 09:15+0000\n"
12−"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11+"PO-Revision-Date: 2016-03-02 01:54+0000\n"
12+"Last-Translator: P_E_T_O <Unknown>\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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
20+"Language: sk\n"
2021
2122#: plugins/IntegratedLightDM/Greeter.cpp:112
2223msgid "Password: "
23−msgstr ""
24+msgstr "Heslo: "
2425
2526#: plugins/Unity/Launcher/launcheritem.cpp:47
2627#: plugins/Unity/Launcher/launcheritem.cpp:106
2728msgid "Pin shortcut"
28−msgstr ""
29+msgstr "Pripnúť odkaz"
2930
3031#: plugins/Unity/Launcher/launcheritem.cpp:52
3132msgid "Quit"
32−msgstr ""
33+msgstr "Ukončiť"
3334
3435#: plugins/Unity/Launcher/launcheritem.cpp:106
3536msgid "Unpin shortcut"
36−msgstr ""
37+msgstr "Odopnúť odkaz"
3738
3839#: qml/Components/DelayedLockscreen.qml:49
3940msgid "Device Locked"
40−msgstr ""
41+msgstr "Zariadenie zamknuté"
4142
4243#: qml/Components/DelayedLockscreen.qml:64
4344msgid "You have been locked out due to too many failed passphrase attempts."
4445msgstr ""
46+"Boli ste zablokovaný z dôvodu príliš veľkého počtu neúspešných pokusov o "
47+"prístupovú frázu."
4548
4649#: qml/Components/DelayedLockscreen.qml:65
4750msgid "You have been locked out due to too many failed passcode attempts."
4851msgstr ""
52+"Boli ste zablokovaný z dôvodu príliš veľkého počtu neúspešných pokusov o "
53+"prístupové heslo."
4954
5055#: qml/Components/DelayedLockscreen.qml:74
5156#, qt-format
5257msgid "Please wait %1 minute and then try again…"
5358msgid_plural "Please wait %1 minutes and then try again…"
54−msgstr[0] ""
55−msgstr[1] ""
59+msgstr[0] "Prosím počkajte %1 minút a skúste znova…"
60+msgstr[1] "Prosím počkajte %1 minútu a skúste znova…"
61+msgstr[2] "Prosím počkajte %1 minúty a skúste znova…"
5662
5763#: qml/Components/Dialogs.qml:144
5864msgctxt "Title: Lock/Log out dialog"
5965msgid "Log out"
60−msgstr ""
66+msgstr "Odhlásiť sa"
6167
6268#: qml/Components/Dialogs.qml:145
6369msgid "Are you sure you want to log out?"
64−msgstr ""
70+msgstr "Ste si istý, že sa chcete odhlásiť?"
6571
6672#: qml/Components/Dialogs.qml:147
6773msgctxt "Button: Lock the system"
6874msgid "Lock"
69−msgstr ""
75+msgstr "Zamknúť"
7076
7177#: qml/Components/Dialogs.qml:154
7278msgctxt "Button: Log out from the system"
7379msgid "Log Out"
74−msgstr ""
80+msgstr "Odhlásiť"
7581
7682#: qml/Components/Dialogs.qml:161 qml/Components/Dialogs.qml:194
7783#: qml/Components/Dialogs.qml:253
7884msgid "Cancel"
79−msgstr ""
85+msgstr "Zrušiť"
8086
8187#: qml/Components/Dialogs.qml:173
8288msgctxt "Title: Reboot/Shut down dialog"
8389msgid "Shut down"
84−msgstr ""
90+msgstr "Vypnúť"
8591
8692#: qml/Components/Dialogs.qml:174
8793msgid "Are you sure you want to shut down?"
88−msgstr ""
94+msgstr "Chcete skutočne vypnúť zariadenie?"
8995
9096#: qml/Components/Dialogs.qml:176
9197msgctxt "Button: Reboot the system"
9298msgid "Reboot"
93−msgstr ""
99+msgstr "Reštartovať"
94100
95101#: qml/Components/Dialogs.qml:185
96102msgctxt "Button: Shut down the system"
97103msgid "Shut down"
98−msgstr ""
104+msgstr "Vypnúť"
99105
100106#: qml/Components/Dialogs.qml:207
101107msgctxt "Title: Reboot dialog"
102108msgid "Reboot"
103−msgstr ""
109+msgstr "Reštartovať"
104110
105111#: qml/Components/Dialogs.qml:208
106112msgid "Are you sure you want to reboot?"
107−msgstr ""
113+msgstr "Ste si istý, že chcete zariadenie reštartovať?"
108114
109115#: qml/Components/Dialogs.qml:210
110116msgid "No"
111−msgstr ""
117+msgstr "Nie"
112118
113119#: qml/Components/Dialogs.qml:217
114120msgid "Yes"
115−msgstr ""
121+msgstr "Áno"
116122
117123#: qml/Components/Dialogs.qml:232
118124msgctxt "Title: Power off/Restart dialog"
119125msgid "Power"
120−msgstr ""
126+msgstr "Napájanie"
121127
122128#: qml/Components/Dialogs.qml:233
123129msgid ""
124130"Are you sure you would like\n"
125131"to power off?"
126132msgstr ""
133+"Naozaj chcete zariadenie\n"
134+"vypnúť?"
127135
128136#: qml/Components/Dialogs.qml:235
129137msgctxt "Button: Power off the system"
130138msgid "Power off"
131−msgstr ""
139+msgstr "Vypnúť"
132140
133141#: qml/Components/Dialogs.qml:244
134142msgctxt "Button: Restart the system"
135143msgid "Restart"
136−msgstr ""
144+msgstr "Reštartovať"
137145
138146#: qml/Components/Lockscreen.qml:245
139147msgid "Return to Call"
140−msgstr ""
148+msgstr "Návrat k hovoru"
141149
142150#: qml/Components/Lockscreen.qml:245
143151msgid "Emergency Call"
144−msgstr ""
152+msgstr "Tiesňový hovor"
145153
146154#: qml/Components/Lockscreen.qml:277
147155msgid "OK"
148−msgstr ""
156+msgstr "OK"
149157
150158#: qml/Components/ModeSwitchWarningDialog.qml:32
151159msgid "Apps may have unsaved data:"
152−msgstr ""
160+msgstr "Aplikácia môže mať neuložené údaje:"
153161
154162#: qml/Components/ModeSwitchWarningDialog.qml:57
155163msgid "Re-dock, save your work and close these apps to continue."
156164msgstr ""
165+"Re-dock, uložte si prácu a zatvorte tieto aplikácie pre pokračovanie."
157166
158167#: qml/Components/ModeSwitchWarningDialog.qml:63
159168msgid "Or force close now (unsaved data will be lost)."
160−msgstr ""
169+msgstr "Alebo vynútiť ukončenie (neuložené údaje budú stratené)."
161170
162171#: qml/Components/ModeSwitchWarningDialog.qml:75
163172msgid "OK, I will reconnect"
164−msgstr ""
173+msgstr "OK, chcem sa znovu pripojiť"
165174
166175#: qml/Components/ModeSwitchWarningDialog.qml:76
167176msgid "Reconnect now!"
168−msgstr ""
177+msgstr "Znova pripojiť!"
169178
170179#: qml/Components/ModeSwitchWarningDialog.qml:88
171180msgid "Close all"
172−msgstr ""
181+msgstr "Zavrieť všetko"
173182
174−#: qml/Dash/DashPageHeader.qml:266
183+#: qml/Dash/DashPageHeader.qml:270
175184msgctxt "Button: Open the Ubuntu Store"
176185msgid "Store"
177−msgstr ""
186+msgstr "Obchod"
178187
179−#: qml/Dash/DashPageHeader.qml:273
188+#: qml/Dash/DashPageHeader.qml:277
180189msgctxt "Button: Start a search in the current dash scope"
181190msgid "Search"
182−msgstr ""
191+msgstr "Hľadať"
183192
184−#: qml/Dash/DashPageHeader.qml:283
193+#: qml/Dash/DashPageHeader.qml:287
185194msgctxt "Button: Show the current dash scope settings"
186195msgid "Settings"
187−msgstr ""
196+msgstr "Nastavenia"
188197
189−#: qml/Dash/DashPageHeader.qml:290
198+#: qml/Dash/DashPageHeader.qml:294
190199msgid "Remove from Favorites"
191−msgstr ""
200+msgstr "Odstrániť z obľúbených"
192201
193−#: qml/Dash/DashPageHeader.qml:290
202+#: qml/Dash/DashPageHeader.qml:294
194203msgid "Add to Favorites"
195−msgstr ""
204+msgstr "Pridať k obľúbeným"
196205
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
206+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198207msgid "See less"
199−msgstr ""
208+msgstr "Zobraziť menej"
200209
201−#: qml/Dash/GenericScopeView.qml:587
210+#: qml/Dash/GenericScopeView.qml:565
202211msgid "See all"
203−msgstr ""
212+msgstr "Zobraziť všetko"
204213
205−#: qml/Dash/GenericScopeView.qml:649
214+#: qml/Dash/GenericScopeView.qml:627
206215msgctxt "Label: Hint for dash search line edit"
207216msgid "Search"
208−msgstr ""
217+msgstr "Hľadať"
209218
210219#: qml/Dash/Previews/PreviewActionCombo.qml:35
211220msgid "More..."
212−msgstr ""
221+msgstr "Viac..."
213222
214223#: qml/Dash/Previews/PreviewActionCombo.qml:35
215224msgid "Less..."
216−msgstr ""
225+msgstr "Menej..."
217226
218227#: qml/Dash/Previews/PreviewCommentInput.qml:68
219228#: qml/Dash/Previews/PreviewRatingInput.qml:174
220229msgid "Send"
221−msgstr ""
230+msgstr "Poslať"
222231
223232#: qml/Dash/Previews/PreviewRatingInput.qml:84
224233msgid "Rate this"
225−msgstr ""
234+msgstr "Ohodnotiť"
226235
227236#: qml/Dash/Previews/PreviewRatingInput.qml:129
228237msgid "Add a review"
229−msgstr ""
238+msgstr "Pridať recenziu"
230239
231240#: qml/Dash/Previews/PreviewSharing.qml:50
232241msgid "Preview Share Item"
233−msgstr ""
242+msgstr "Náhľad zdieľaných položiek"
234243
235244#: qml/Dash/PullToRefreshScopeStyle.qml:55
236245msgid "Pull to refresh…"
237−msgstr ""
246+msgstr "Potiahnúť pre obnovenie..."
238247
239248#: qml/Dash/PullToRefreshScopeStyle.qml:60
240249msgid "Release to refresh…"
241−msgstr ""
250+msgstr "Uvoľniť pre obnovenie..."
242251
243252#: qml/Dash/ScopeSettings/ScopeSettingBoolean.qml:43
244253msgid "Enable location data"
245−msgstr ""
254+msgstr "Zapnúť údaje o polohe"
246255
247256#: qml/Dash/ScopesList.qml:67
248257msgid "Manage"
249−msgstr ""
258+msgstr "Spravovať"
250259
251260#: qml/Dash/ScopesList.qml:113
252261msgid "Home"
253−msgstr ""
262+msgstr "Domov"
254263
255264#: qml/Dash/ScopesList.qml:114
256265msgid "Also installed"
257−msgstr ""
266+msgstr "Tiež nainštalované"
258267
259268#: qml/DisabledScreenNotice.qml:87
260269msgid ""
261270"Your device is now connected to an external display. Use this screen as a "
262271"touch pad to interact with the mouse."
263272msgstr ""
273+"Zariadenie je pripojené k externej obrazovke. Použite obrazovku ako touchpad "
274+"pre spoluprácu s myšou."
264275
265276#: qml/Greeter/CoverPage.qml:107
266277msgid "Unlock"
267−msgstr ""
278+msgstr "Odomknúť"
268279
269280#: qml/Greeter/LoginList.qml:239
270281msgid "Retry"
271−msgstr ""
282+msgstr "Skúsiť znova"
272283
273284#: qml/Greeter/LoginList.qml:240
274285msgid "Tap to unlock"
275−msgstr ""
286+msgstr "Kliknúť pre odomknutie"
276287
277288#: qml/Greeter/NarrowView.qml:54 qml/Wizard/Pages/passwd-confirm.qml:53
278289msgid "Sorry, incorrect passphrase."
279−msgstr ""
290+msgstr "Prepáčte, nesprávna prístupová fráza."
280291
281292#: qml/Greeter/NarrowView.qml:55 qml/Wizard/Pages/passwd-confirm.qml:54
282293msgid "Sorry, incorrect passcode."
283−msgstr ""
294+msgstr "Prepáčte, nesprávne prístupové heslo."
284295
285296#: qml/Greeter/NarrowView.qml:56
286297msgid "This will be your last attempt."
287−msgstr ""
298+msgstr "Bude to váš posledný pokus."
288299
289300#: qml/Greeter/NarrowView.qml:58
290301msgid ""
291302"If passphrase is entered incorrectly, your phone will conduct a factory "
292303"reset and all personal data will be deleted."
293304msgstr ""
305+"Ak bude zle zadaná prístupová fráza, váš telefón vykoná továrenský reset a "
306+"všetky osobné údaje budú vymazané."
294307
295308#: qml/Greeter/NarrowView.qml:59
296309msgid ""
297310"If passcode is entered incorrectly, your phone will conduct a factory reset "
298311"and all personal data will be deleted."
299312msgstr ""
313+"Ak bude zle zadané heslo, váš telefón vykoná továrenský reset a všetky "
314+"osobné údaje budú vymazané."
300315
301316#: qml/Greeter/NarrowView.qml:116
302317#, qt-format
303318msgid "Enter %1"
304−msgstr ""
319+msgstr "Zadajte %1"
305320
306321#: qml/Greeter/NarrowView.qml:117 qml/Wizard/Pages/passwd-set.qml:60
307322msgid "Enter passphrase"
308−msgstr ""
323+msgstr "Zadajte prístupovú frázu"
309324
310325#: qml/Greeter/NarrowView.qml:118
311326msgid "Enter passcode"
312−msgstr ""
327+msgstr "Zadajte heslo"
313328
314329#: qml/Greeter/NarrowView.qml:119
315330#, qt-format
316331msgid "Sorry, incorrect %1"
317−msgstr ""
332+msgstr "Prepáčte, nesprávne %1"
318333
319334#: qml/Greeter/NarrowView.qml:120
320335msgid "Sorry, incorrect passphrase"
321−msgstr ""
336+msgstr "Prepáčte, nesprávna prístupová fráza"
322337
323338#: qml/Greeter/NarrowView.qml:121
324339msgctxt "passphrase"
325340msgid "Please re-enter"
326−msgstr ""
341+msgstr "Zadajte znova"
327342
328343#: qml/Greeter/NarrowView.qml:122
329344msgid "Sorry, incorrect passcode"
330−msgstr ""
345+msgstr "Prepáčte, nesprávne heslo"
331346
332347#: qml/Notifications/NotificationMenuItemFactory.qml:129
333348msgid "Show password"
334−msgstr ""
349+msgstr "Zobraziť heslo"
335350
336351#: qml/Panel/ActiveCallHint.qml:79
337352msgid "Tap to return to call..."
338−msgstr ""
353+msgstr "Kliknúť pre návrat k hovoru..."
339354
340355#: qml/Panel/ActiveCallHint.qml:92
341356msgid "Conference"
342−msgstr ""
357+msgstr "Konferencia"
343358
344359#: qml/Panel/Indicators/MenuItemFactory.qml:753
345360msgid "Nothing is playing"
346−msgstr ""
361+msgstr "Nič nehrá"
347362
348363#: qml/Panel/Indicators/MenuItemFactory.qml:882
349364#, qt-format
350365msgid "%1 hour"
351366msgid_plural "%1 hours"
352−msgstr[0] ""
353−msgstr[1] ""
367+msgstr[0] "%1 hodín"
368+msgstr[1] "%1 hodina"
369+msgstr[2] "%1 hodiny"
354370
355371#: qml/Panel/Indicators/MenuItemFactory.qml:886
356372#, qt-format
357373msgid "%1 minute"
358374msgid_plural "%1 minutes"
359−msgstr[0] ""
360−msgstr[1] ""
375+msgstr[0] "%1 minút"
376+msgstr[1] "%1 minúta"
377+msgstr[2] "%1 minúty"
361378
362379#: qml/Panel/Indicators/MenuItemFactory.qml:891
363380#, qt-format
364381msgid "%1 second"
365382msgid_plural "%1 seconds"
366−msgstr[0] ""
367−msgstr[1] ""
383+msgstr[0] "%1 sekúnd"
384+msgstr[1] "%1 sekunda"
385+msgstr[2] "%1 sekundy"
368386
369387#: qml/Panel/Indicators/MenuItemFactory.qml:894
370388msgid "0 seconds"
371−msgstr ""
389+msgstr "0 sekúnd"
372390
373391#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
374392#: qml/Panel/Indicators/MenuItemFactory.qml:896
375393#, qt-format
376394msgid "%1 remaining"
377−msgstr ""
395+msgstr "Zostáva %1"
378396
379397#: qml/Panel/Indicators/MenuItemFactory.qml:902
380398msgid "In queue…"
381−msgstr ""
399+msgstr "V poradí..."
382400
383401#: qml/Panel/Indicators/MenuItemFactory.qml:906
384402msgid "Downloading"
385−msgstr ""
403+msgstr "Sťahuje sa"
386404
387405#: qml/Panel/Indicators/MenuItemFactory.qml:908
388406msgid "Paused, tap to resume"
389−msgstr ""
407+msgstr "Pauza, kliknúť pre pokračovanie"
390408
391409#: qml/Panel/Indicators/MenuItemFactory.qml:910
392410msgid "Canceled"
393−msgstr ""
411+msgstr "Zrušené"
394412
395413#: qml/Panel/Indicators/MenuItemFactory.qml:912
396414msgid "Finished"
397−msgstr ""
415+msgstr "Ukončené"
398416
399417#: qml/Panel/Indicators/MenuItemFactory.qml:914
400418msgid "Failed, tap to retry"
401−msgstr ""
419+msgstr "Zlyhanie, kliknúť pre zopakovanie"
402420
403421#: qml/Panel/Indicators/MessageMenuItemFactory.qml:155
404422#: qml/Panel/Indicators/MessageMenuItemFactory.qml:214
405423msgctxt "Button: Send a reply message"
406424msgid "Send"
407−msgstr ""
425+msgstr "Poslať"
408426
409427#: qml/Panel/Indicators/MessageMenuItemFactory.qml:156
410428msgctxt "Label: Hint in message indicator line edit"
411429msgid "Reply"
412−msgstr ""
430+msgstr "Odpoveď"
413431
414432#: qml/Panel/Indicators/MessageMenuItemFactory.qml:213
415433msgctxt "Button: Call back on phone"
416434msgid "Call back"
417−msgstr ""
418−
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
435+msgstr "Zavolať naspäť"
426436
427437#: qml/Tutorial/TutorialBottom.qml:28
428438msgid "Open special menus"
429−msgstr ""
439+msgstr "Otvoriť špeciálne menu"
430440
431441#: qml/Tutorial/TutorialBottom.qml:29
432442msgid "Swipe up from the bottom edge."
433−msgstr ""
443+msgstr "Potiahnite nahor od spodného okraja."
434444
435445#: qml/Tutorial/TutorialBottomFinish.qml:24
436446msgid "This action does different things for different apps"
437−msgstr ""
447+msgstr "Táto akcia robí rôzne veci pre rôzne aplikácie"
438448
439449#: qml/Tutorial/TutorialBottomFinish.qml:25
440450msgid "Tap here to finish."
441−msgstr ""
451+msgstr "Klik tu pre ukončenie."
442452
443453#: qml/Tutorial/TutorialContent.qml:80 qml/Tutorial/TutorialLeftFinish.qml:25
444454#: qml/Tutorial/TutorialRight.qml:144
445455msgid "Tap here to continue."
446−msgstr ""
456+msgstr "Klik tu pre pokračovanie."
447457
448458#: qml/Tutorial/TutorialLeft.qml:26
449459msgid "Open the launcher"
450−msgstr ""
460+msgstr "Otvoriť Launcher"
451461
452462#: qml/Tutorial/TutorialLeft.qml:27
453463msgid "Short swipe from the left edge."
454−msgstr ""
464+msgstr "Krátke potiahnutie od ľavého okraja."
455465
456466#: qml/Tutorial/TutorialLeftFinish.qml:24
457467msgid "These are the shortcuts to favorite apps"
458−msgstr ""
468+msgstr "Toto sú skratky pre obľúbené aplikácie"
459469
460470#: qml/Tutorial/TutorialPage.qml:178
461471msgid "You almost got it!"
462−msgstr ""
472+msgstr "Skoro to máte!"
463473
464474#: qml/Tutorial/TutorialPage.qml:195
465475msgid "Try again."
466−msgstr ""
476+msgstr "Skúste znova."
467477
468478#: qml/Tutorial/TutorialRight.qml:31
469479msgid "To view open apps"
470−msgstr ""
480+msgstr "Ak chcete zobraziť otvorené aplikácie"
471481
472482#: qml/Tutorial/TutorialRight.qml:32
473483msgid "Long swipe from the right edge."
474−msgstr ""
484+msgstr "Dlhé potiahnutie od pravého okraja."
475485
476486#: qml/Tutorial/TutorialRight.qml:122
477487msgid "View all your running tasks."
478−msgstr ""
488+msgstr "Zobraziť všetky bežiace procesy."
479489
480490#: qml/Wizard/Page.qml:89
481491msgctxt "Button: Go back one page in the Wizard"
482492msgid "Back"
483−msgstr ""
493+msgstr "Naspäť"
484494
485495#: qml/Wizard/Pages/10-welcome.qml:27
486496msgid "Hi!"
487−msgstr ""
497+msgstr "Ahoj!"
488498
489499#: qml/Wizard/Pages/10-welcome.qml:44
490500msgid "Welcome to your Ubuntu device."
491−msgstr ""
501+msgstr "Vitajte vo svojom Ubuntu zariadení."
492502
493503#: qml/Wizard/Pages/10-welcome.qml:52
494504msgid "Let’s get started."
495−msgstr ""
505+msgstr "Začíname."
496506
497507#: qml/Wizard/Pages/10-welcome.qml:88 qml/Wizard/Pages/30-passwd-type.qml:133
498508#: qml/Wizard/Pages/40-wifi.qml:215 qml/Wizard/Pages/50-location.qml:131
499509#: qml/Wizard/Pages/60-reporting.qml:60 qml/Wizard/Pages/passwd-confirm.qml:82
500510#: qml/Wizard/Pages/passwd-set.qml:90
501511msgid "Continue"
502−msgstr ""
512+msgstr "Pokračovať"
503513
504514#: qml/Wizard/Pages/20-sim.qml:25
505515msgid "Add a SIM card and restart your device"
506−msgstr ""
516+msgstr "Vložte SIM kartu a reštartujte zariadenie"
507517
508518#: qml/Wizard/Pages/20-sim.qml:59
509519msgid "Without it, you won’t be able to make calls or use text messaging."
510−msgstr ""
520+msgstr "Bez nej nebudete môcť volať alebo používať textové správy."
511521
512522#: qml/Wizard/Pages/20-sim.qml:73 qml/Wizard/Pages/40-wifi.qml:215
513523msgid "Skip"
514−msgstr ""
524+msgstr "Preskočiť"
515525
516526#: qml/Wizard/Pages/30-passwd-type.qml:39
517527msgid "Lock security"
518−msgstr ""
528+msgstr "Bezpečnosť uzamknutia"
519529
520530#: qml/Wizard/Pages/30-passwd-type.qml:79
521531msgid "Please select how you’d like to unlock your device."
522−msgstr ""
532+msgstr "Prosím vyberte, ako by ste chceli odblokovať zariadenie."
523533
524534#: qml/Wizard/Pages/30-passwd-type.qml:102
525535msgctxt "Label: Type of security method"
526536msgid "Swipe"
527−msgstr ""
537+msgstr "Potiahnuť"
528538
529539#: qml/Wizard/Pages/30-passwd-type.qml:103
530540msgctxt "Label: Description of security method"
531541msgid "No security"
532−msgstr ""
542+msgstr "Bez ochrany"
533543
534544#: qml/Wizard/Pages/30-passwd-type.qml:105
535545msgctxt "Label: Type of security method"
536546msgid "Passcode"
537−msgstr ""
547+msgstr "Heslo"
538548
539549#: qml/Wizard/Pages/30-passwd-type.qml:106
540550msgctxt "Label: Description of security method"
541551msgid "4 digits only"
542−msgstr ""
552+msgstr "Len 4 číslice"
543553
544554#: qml/Wizard/Pages/30-passwd-type.qml:108
545555msgctxt "Label: Type of security method"
546556msgid "Passphrase"
547−msgstr ""
557+msgstr "Prístupová fráza"
548558
549559#: qml/Wizard/Pages/30-passwd-type.qml:109
550560msgctxt "Label: Description of security method"
551561msgid "Numbers and letters"
552−msgstr ""
562+msgstr "Čísla a písmená"
553563
554564#: qml/Wizard/Pages/40-wifi.qml:29
555565msgid "Connect to Wi‑Fi"
556−msgstr ""
566+msgstr "Pripojiť k Wifi"
557567
558568#: qml/Wizard/Pages/40-wifi.qml:168
559569msgid "Available networks…"
560−msgstr ""
570+msgstr "Dostupné siete..."
561571
562572#: qml/Wizard/Pages/40-wifi.qml:169
563573msgid "No available networks."
564−msgstr ""
574+msgstr "Žiadne dostupné siete."
565575
566576#: qml/Wizard/Pages/50-location.qml:27
567577msgid "Location"
568−msgstr ""
578+msgstr "Poloha"
569579
570580#: qml/Wizard/Pages/50-location.qml:62
571581msgid "Let the phone detect your location:"
572−msgstr ""
582+msgstr "Nechajte telefón zisťovať vašu polohu:"
573583
574584#: qml/Wizard/Pages/50-location.qml:69
575585msgid "Using GPS only (less accurate)"
576−msgstr ""
586+msgstr "Použiť len GPS (menej presné)"
577587
578588#: qml/Wizard/Pages/50-location.qml:86
579589msgid "Using GPS, anonymized Wi-Fi and cellular network info (recommended)"
580−msgstr ""
590+msgstr "Použiť GPS, anonymné informácie Wifi a mobilnej siete (odporúčané)"
581591
582592#. Translators: HERE is a trademark for Nokia's location service, you probably shouldn't translate it
583593#: qml/Wizard/Pages/50-location.qml:103
@@ -585,80 +595,92 @@ msgid ""
585595"By selecting this option you agree to the Nokia HERE <a href='#'>terms and "
586596"conditions</a>."
587597msgstr ""
598+"Vybraním tejto možnosti súhlasíte s Nokia HERE <a href='#'>terms and "
599+"conditions</a>."
588600
589601#: qml/Wizard/Pages/50-location.qml:112
590602msgid "Not at all"
591−msgstr ""
603+msgstr "Vôbec"
592604
593605#: qml/Wizard/Pages/50-location.qml:124
594606msgid "You can change your mind later in <b>System Settings</b>."
595−msgstr ""
607+msgstr "Svoj názor môžete zmeniť neskôr v <b>Systémové nastavenia</b>."
596608
597609#: qml/Wizard/Pages/60-reporting.qml:26
598610msgid "Improving your experience"
599−msgstr ""
611+msgstr "Zlepšovanie vašich skúseností"
600612
601613#: qml/Wizard/Pages/60-reporting.qml:46
602614msgid ""
603615"Your phone is set up to automatically report errors to Canonical and its "
604616"partners, the makers of the operating system."
605617msgstr ""
618+"Telefón je nastavený tak, aby automaticky hlásil chyby Canonical-u a jeho "
619+"partnerom, tvorcom operačného systému."
606620
607621#: qml/Wizard/Pages/60-reporting.qml:53
608622msgid ""
609623"This can be disabled in <b>System Settings</b> under <b>Security &amp; "
610624"Privacy</b>"
611625msgstr ""
626+"Môžete to vypnúť v <b>Systémové nastavenia</b> pod <b>Zabezpečenie a "
627+"súkromie</b>"
612628
613629#: qml/Wizard/Pages/80-finished.qml:24
614630msgid "All done"
615−msgstr ""
631+msgstr "Hotovo"
616632
617633#: qml/Wizard/Pages/80-finished.qml:39
618634msgid "Nice work!"
619−msgstr ""
635+msgstr "Dobrá práca!"
620636
621637#: qml/Wizard/Pages/80-finished.qml:46
622638msgid "Your device is now ready to use."
623−msgstr ""
639+msgstr "Vaše zariadenie je teraz pripravené."
624640
625641#: qml/Wizard/Pages/80-finished.qml:53
626642msgid "Finish"
627−msgstr ""
643+msgstr "Dokončiť"
628644
629645#: qml/Wizard/Pages/here-terms.qml:27
630646msgid "Terms & Conditions"
631−msgstr ""
647+msgstr "Všeobecné obchodné podmienky"
632648
633649#: qml/Wizard/Pages/passwd-confirm.qml:49
634650msgid "Confirm passphrase"
635−msgstr ""
651+msgstr "Potvrdiť prístupovú frázu"
636652
637653#: qml/Wizard/Pages/passwd-confirm.qml:50
638654msgid "Confirm passcode"
639−msgstr ""
655+msgstr "Potvrdiť heslo"
640656
641657#: qml/Wizard/Pages/passwd-confirm.qml:53
642658#: qml/Wizard/Pages/passwd-confirm.qml:54
643659msgid "Please try again."
644−msgstr ""
660+msgstr "Prosím, skúste znovu."
645661
646662#: qml/Wizard/Pages/passwd-set.qml:61
647663msgid "Choose your passcode"
648−msgstr ""
664+msgstr "Zvoliť heslo"
649665
650666#: qml/Wizard/Pages/passwd-set.qml:68
651667msgid "Passphrase must be 4 characters long"
652−msgstr ""
668+msgstr "Prístupová fráza musí mať 4 znaky"
653669
654670#. Translators: This is the arrow for "Back" buttons
655671#: qml/Wizard/StackButton.qml:39
656672#, qt-format
657673msgid "〈 %1"
658−msgstr ""
674+msgstr "〈 %1"
659675
660676#. Translators: This is the arrow for "Forward" buttons
661677#: qml/Wizard/StackButton.qml:42
662678#, qt-format
663679msgid "%1 〉"
664−msgstr ""
680+msgstr "%1 〉"
681+
682+#~ msgid "Unlock SIM"
683+#~ msgstr "Odomknúť SIM"
684+
685+#~ msgid "Roaming"
686+#~ msgstr "Roaming"
po/sl.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"PO-Revision-Date: 2016-01-31 18:34+0000\n"
1212"Last-Translator: Bernard Banko <Unknown>\n"
1313"Language-Team: Slovenian <sl@li.org>\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: 2016-02-17 05:43+0000\n"
20−"X-Generator: Launchpad (build 17925)\n"
19+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
20+"X-Generator: Launchpad (build 17936)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -178,38 +178,38 @@ msgstr "Ponovno priključi sedaj!"
178178msgid "Close all"
179179msgstr "Zapri vse"
180180
181−#: qml/Dash/DashPageHeader.qml:266
181+#: qml/Dash/DashPageHeader.qml:270
182182msgctxt "Button: Open the Ubuntu Store"
183183msgid "Store"
184184msgstr "Trgovina"
185185
186−#: qml/Dash/DashPageHeader.qml:273
186+#: qml/Dash/DashPageHeader.qml:277
187187msgctxt "Button: Start a search in the current dash scope"
188188msgid "Search"
189189msgstr "Iskanje"
190190
191−#: qml/Dash/DashPageHeader.qml:283
191+#: qml/Dash/DashPageHeader.qml:287
192192msgctxt "Button: Show the current dash scope settings"
193193msgid "Settings"
194194msgstr "Nastavitve"
195195
196−#: qml/Dash/DashPageHeader.qml:290
196+#: qml/Dash/DashPageHeader.qml:294
197197msgid "Remove from Favorites"
198198msgstr "Odstrani iz priljubljenih"
199199
200−#: qml/Dash/DashPageHeader.qml:290
200+#: qml/Dash/DashPageHeader.qml:294
201201msgid "Add to Favorites"
202202msgstr "Dodaj med priljubljene"
203203
204−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
204+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
205205msgid "See less"
206206msgstr "Pokaži manj"
207207
208−#: qml/Dash/GenericScopeView.qml:587
208+#: qml/Dash/GenericScopeView.qml:565
209209msgid "See all"
210210msgstr "Pokaži vse"
211211
212−#: qml/Dash/GenericScopeView.qml:649
212+#: qml/Dash/GenericScopeView.qml:627
213213msgctxt "Label: Hint for dash search line edit"
214214msgid "Search"
215215msgstr "Iskanje"
@@ -435,14 +435,6 @@ msgctxt "Button: Call back on phone"
435435msgid "Call back"
436436msgstr "Pokliči nazaj"
437437
438−#: qml/Panel/Indicators/ModemInfoItem.qml:105
439−msgid "Unlock SIM"
440−msgstr "Odkleni SIM"
441−
442−#: qml/Panel/Indicators/RoamingIndication.qml:27
443−msgid "Roaming"
444−msgstr "Gostovanje"
445−
446438#: qml/Tutorial/TutorialBottom.qml:28
447439msgid "Open special menus"
448440msgstr "Odpri posebne menije"
@@ -759,6 +751,12 @@ msgstr "%1 〉"
759751#~ msgid "All"
760752#~ msgstr "Vse"
761753
754+#~ msgid "Unlock SIM"
755+#~ msgstr "Odkleni SIM"
756+
757+#~ msgid "Roaming"
758+#~ msgstr "Gostovanje"
759+
762760#~ msgid "Favorites"
763761#~ msgstr "Priljubljeni"
764762
po/sq.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"PO-Revision-Date: 2015-11-30 21:05+0000\n"
1212"Last-Translator: Indrit Bashkimi <indrit.bashkimi@gmail.com>\n"
1313"Language-Team: Albanian <sq@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:42+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:57+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -171,38 +171,38 @@ msgstr "Rilidhu tani!"
171171msgid "Close all"
172172msgstr "Mbylli të gjitha"
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177177msgstr "Ruaje"
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr "Kërko"
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr "Parametrat"
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr "Hiq nga të preferuarit"
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr "Shto në të preferuarit"
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr "Shfaq më pak"
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr "Shfaqe të tërin"
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr "Kërko"
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416416msgid "Call back"
417417msgstr ""
418418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr "Zhblloko SIM"
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr "Roaming"
426−
427419#: qml/Tutorial/TutorialBottom.qml:28
428420msgid "Open special menus"
429421msgstr ""
@@ -682,11 +674,17 @@ msgstr "%1 〉"
682674#~ msgid "Right edge"
683675#~ msgstr "Cepi djathtas"
684676
677+#~ msgid "Unlock SIM"
678+#~ msgstr "Zhblloko SIM"
679+
685680#~ msgid "Welcome to your Ubuntu phone."
686681#~ msgstr "Mirëseerdhët në telefonin tuaj Ubuntu."
687682
688683#~ msgid "Your phone is now ready to use."
689684#~ msgstr "Telefoni juaj tani është gati për përdorim."
690685
686+#~ msgid "Roaming"
687+#~ msgstr "Roaming"
688+
691689#~ msgid "Please select how you’d like to unlock your phone."
692690#~ msgstr "Zgjidhni mënyrën e zhbllokimit të telefonit."
po/sr.po+68−70
@@ -8,8 +8,8 @@ msgid ""
88msgstr ""
99"Project-Id-Version: unity\n"
1010"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
12−"PO-Revision-Date: 2016-02-10 21:21+0000\n"
11+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
12+"PO-Revision-Date: 2016-03-09 21:47+0000\n"
1313"Last-Translator: Bojan Bogdanović <Unknown>\n"
1414"Language-Team: српски <xfce4@xfce4.org>\n"
1515"MIME-Version: 1.0\n"
@@ -17,8 +17,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
21−"X-Generator: Launchpad (build 17925)\n"
20+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
21+"X-Generator: Launchpad (build 17936)\n"
2222"Language: sr\n"
2323
2424#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -54,9 +54,9 @@ msgstr "Закључано је због превише погрешних по
5454#, qt-format
5555msgid "Please wait %1 minute and then try again…"
5656msgid_plural "Please wait %1 minutes and then try again…"
57−msgstr[0] "Молим, сачекајте %1 минута, па покушајте поново…"
58−msgstr[1] "Молим, сачекајте %1 минута, па покушајте поново…"
59−msgstr[2] "Молим, сачекајте %1 минута, па покушајте поново…"
57+msgstr[0] "Сачекајте %1 минут, па покушајте поново…"
58+msgstr[1] "Сачекајте %1 минута, па покушајте поново…"
59+msgstr[2] "Сачекајте %1 минута, па покушајте поново…"
6060
6161#: qml/Components/Dialogs.qml:144
6262msgctxt "Title: Lock/Log out dialog"
@@ -75,7 +75,7 @@ msgstr "Закључај"
7575#: qml/Components/Dialogs.qml:154
7676msgctxt "Button: Log out from the system"
7777msgid "Log Out"
78−msgstr "Одјава"
78+msgstr "Одјави ме"
7979
8080#: qml/Components/Dialogs.qml:161 qml/Components/Dialogs.qml:194
8181#: qml/Components/Dialogs.qml:253
@@ -85,7 +85,7 @@ msgstr "Откажи"
8585#: qml/Components/Dialogs.qml:173
8686msgctxt "Title: Reboot/Shut down dialog"
8787msgid "Shut down"
88−msgstr "Угаси"
88+msgstr "Гашење"
8989
9090#: qml/Components/Dialogs.qml:174
9191msgid "Are you sure you want to shut down?"
@@ -104,11 +104,11 @@ msgstr "Угаси"
104104#: qml/Components/Dialogs.qml:207
105105msgctxt "Title: Reboot dialog"
106106msgid "Reboot"
107−msgstr "Поново покрени"
107+msgstr "Поновно покретање"
108108
109109#: qml/Components/Dialogs.qml:208
110110msgid "Are you sure you want to reboot?"
111−msgstr "Сигурно желите да поново покренете?"
111+msgstr "Сигурно желите поново да покренете?"
112112
113113#: qml/Components/Dialogs.qml:210
114114msgid "No"
@@ -143,7 +143,7 @@ msgstr "Покрени поново"
143143
144144#: qml/Components/Lockscreen.qml:245
145145msgid "Return to Call"
146−msgstr "Пређи поново на позив"
146+msgstr "Врати се на позив"
147147
148148#: qml/Components/Lockscreen.qml:245
149149msgid "Emergency Call"
@@ -155,61 +155,61 @@ msgstr "У реду"
155155
156156#: qml/Components/ModeSwitchWarningDialog.qml:32
157157msgid "Apps may have unsaved data:"
158−msgstr "Апликације можда имају несачуванх података:"
158+msgstr "Програми можда имају несачуванх података:"
159159
160160#: qml/Components/ModeSwitchWarningDialog.qml:57
161161msgid "Re-dock, save your work and close these apps to continue."
162162msgstr ""
163−"Поново убаците у док, счувајте рад и затворите те апликације да наставите."
163+"Поново убаците у док, сачувајте рад и затворите те програме да наставите."
164164
165165#: qml/Components/ModeSwitchWarningDialog.qml:63
166166msgid "Or force close now (unsaved data will be lost)."
167−msgstr "Или форсирајте затварање одмах (несачувани подаци биће изгубљени)."
167+msgstr "Или сада приморајте затварање (несачувани подаци биће изгубљени)."
168168
169169#: qml/Components/ModeSwitchWarningDialog.qml:75
170170msgid "OK, I will reconnect"
171−msgstr "ОК, поново ћу се повезати"
171+msgstr "У реду, поново ћу се повезати"
172172
173173#: qml/Components/ModeSwitchWarningDialog.qml:76
174174msgid "Reconnect now!"
175−msgstr "Поновоно повезивање одмах!"
175+msgstr "Поново се повежи!"
176176
177177#: qml/Components/ModeSwitchWarningDialog.qml:88
178178msgid "Close all"
179179msgstr "Затворите све"
180180
181−#: qml/Dash/DashPageHeader.qml:266
181+#: qml/Dash/DashPageHeader.qml:270
182182msgctxt "Button: Open the Ubuntu Store"
183183msgid "Store"
184184msgstr "Продавница"
185185
186−#: qml/Dash/DashPageHeader.qml:273
186+#: qml/Dash/DashPageHeader.qml:277
187187msgctxt "Button: Start a search in the current dash scope"
188188msgid "Search"
189189msgstr "Тражи"
190190
191−#: qml/Dash/DashPageHeader.qml:283
191+#: qml/Dash/DashPageHeader.qml:287
192192msgctxt "Button: Show the current dash scope settings"
193193msgid "Settings"
194194msgstr "Подешавања"
195195
196−#: qml/Dash/DashPageHeader.qml:290
196+#: qml/Dash/DashPageHeader.qml:294
197197msgid "Remove from Favorites"
198198msgstr "Уклони из омиљених"
199199
200−#: qml/Dash/DashPageHeader.qml:290
200+#: qml/Dash/DashPageHeader.qml:294
201201msgid "Add to Favorites"
202−msgstr "Додај међу омиљене"
202+msgstr "Додај у омиљене"
203203
204−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
204+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
205205msgid "See less"
206206msgstr "Сажетије"
207207
208−#: qml/Dash/GenericScopeView.qml:587
208+#: qml/Dash/GenericScopeView.qml:565
209209msgid "See all"
210210msgstr "Опширније"
211211
212−#: qml/Dash/GenericScopeView.qml:649
212+#: qml/Dash/GenericScopeView.qml:627
213213msgctxt "Label: Hint for dash search line edit"
214214msgid "Search"
215215msgstr "Претрага"
@@ -237,7 +237,7 @@ msgstr "Напиши оцену"
237237
238238#: qml/Dash/Previews/PreviewSharing.qml:50
239239msgid "Preview Share Item"
240−msgstr "Предпреглед дељене ставке"
240+msgstr "Преглед дељене ставке"
241241
242242#: qml/Dash/PullToRefreshScopeStyle.qml:55
243243msgid "Pull to refresh…"
@@ -268,8 +268,8 @@ msgid ""
268268"Your device is now connected to an external display. Use this screen as a "
269269"touch pad to interact with the mouse."
270270msgstr ""
271−"Ваш уређај је сада повезан на спољњи монитор. Користите овај екран као "
272−"додирну плочу да остварите интеракцију са мишем."
271+"Ваш уређај је сада повезан на спољни монитор. Користите овај екран као "
272+"додирну плочу да радите са мишем."
273273
274274#: qml/Greeter/CoverPage.qml:107
275275msgid "Unlock"
@@ -281,15 +281,15 @@ msgstr "Покушај поново"
281281
282282#: qml/Greeter/LoginList.qml:240
283283msgid "Tap to unlock"
284−msgstr "Додирните да откључате"
284+msgstr "Лупните да откључате"
285285
286286#: qml/Greeter/NarrowView.qml:54 qml/Wizard/Pages/passwd-confirm.qml:53
287287msgid "Sorry, incorrect passphrase."
288−msgstr "Жао ми је, погрешна приступна фраза."
288+msgstr "Извините, погрешна приступна фраза."
289289
290290#: qml/Greeter/NarrowView.qml:55 qml/Wizard/Pages/passwd-confirm.qml:54
291291msgid "Sorry, incorrect passcode."
292−msgstr "Жао нам је, погрешан приступни код."
292+msgstr "Извините, погрешан приступни код."
293293
294294#: qml/Greeter/NarrowView.qml:56
295295msgid "This will be your last attempt."
@@ -300,16 +300,16 @@ msgid ""
300300"If passphrase is entered incorrectly, your phone will conduct a factory "
301301"reset and all personal data will be deleted."
302302msgstr ""
303−"Ако се унесе погрешна присупна фраза, ваш телефон ће се ресетовати и сви "
304−"лични подаци ће бити обрисани."
303+"Ако се унесе погрешна присупна фраза, ваш телефон ће се вратити на фабричка "
304+"подешавања и сви лични подаци биће обрисани."
305305
306306#: qml/Greeter/NarrowView.qml:59
307307msgid ""
308308"If passcode is entered incorrectly, your phone will conduct a factory reset "
309309"and all personal data will be deleted."
310310msgstr ""
311−"Ако се унесе погрешан приступни код, ваш телефон ће се ресетовати и сви "
312−"лични подаци ће бити обрисани."
311+"Ако се унесе погрешан приступни код, ваш телефон ће се вратити на фабричка "
312+"подешавања и сви лични подаци биће обрисани."
313313
314314#: qml/Greeter/NarrowView.qml:116
315315#, qt-format
@@ -327,20 +327,20 @@ msgstr "Унесите приступни код"
327327#: qml/Greeter/NarrowView.qml:119
328328#, qt-format
329329msgid "Sorry, incorrect %1"
330−msgstr "Жао ми је, погрешан %1"
330+msgstr "Извините, погрешан %1"
331331
332332#: qml/Greeter/NarrowView.qml:120
333333msgid "Sorry, incorrect passphrase"
334−msgstr "Жао ми је, погрешна приступна фраза"
334+msgstr "Извините, погрешна приступна фраза"
335335
336336#: qml/Greeter/NarrowView.qml:121
337337msgctxt "passphrase"
338338msgid "Please re-enter"
339−msgstr "Молим, унесите поново"
339+msgstr "Поново унесите"
340340
341341#: qml/Greeter/NarrowView.qml:122
342342msgid "Sorry, incorrect passcode"
343−msgstr "Жао ми је, погрешанприступни код"
343+msgstr "Извините, погрешан приступни код"
344344
345345#: qml/Notifications/NotificationMenuItemFactory.qml:129
346346msgid "Show password"
@@ -348,7 +348,7 @@ msgstr "Прикажи лозинку"
348348
349349#: qml/Panel/ActiveCallHint.qml:79
350350msgid "Tap to return to call..."
351−msgstr "Тапните да се вратите на позив..."
351+msgstr "Лупните да се вратите на позив..."
352352
353353#: qml/Panel/ActiveCallHint.qml:92
354354msgid "Conference"
@@ -356,7 +356,7 @@ msgstr "Конференција"
356356
357357#: qml/Panel/Indicators/MenuItemFactory.qml:753
358358msgid "Nothing is playing"
359−msgstr "Ништа се не репродукује"
359+msgstr "Ништа се не пушта"
360360
361361#: qml/Panel/Indicators/MenuItemFactory.qml:882
362362#, qt-format
@@ -384,17 +384,17 @@ msgstr[2] "%1 секунди"
384384
385385#: qml/Panel/Indicators/MenuItemFactory.qml:894
386386msgid "0 seconds"
387−msgstr "0 секунди"
387+msgstr "0 секунде"
388388
389389#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
390390#: qml/Panel/Indicators/MenuItemFactory.qml:896
391391#, qt-format
392392msgid "%1 remaining"
393−msgstr "%1 преостало"
393+msgstr "Преостаје %1"
394394
395395#: qml/Panel/Indicators/MenuItemFactory.qml:902
396396msgid "In queue…"
397−msgstr "Је заказано…"
397+msgstr "Заказано…"
398398
399399#: qml/Panel/Indicators/MenuItemFactory.qml:906
400400msgid "Downloading"
@@ -402,7 +402,7 @@ msgstr "Преузимање"
402402
403403#: qml/Panel/Indicators/MenuItemFactory.qml:908
404404msgid "Paused, tap to resume"
405−msgstr "Заустављено, тапните да наставите"
405+msgstr "Заустављено, лупните да наставите"
406406
407407#: qml/Panel/Indicators/MenuItemFactory.qml:910
408408msgid "Canceled"
@@ -414,7 +414,7 @@ msgstr "Завршено"
414414
415415#: qml/Panel/Indicators/MenuItemFactory.qml:914
416416msgid "Failed, tap to retry"
417−msgstr "Неуспешно, тапните да покушате поново"
417+msgstr "Неуспело, лупните да покушате поново"
418418
419419#: qml/Panel/Indicators/MessageMenuItemFactory.qml:155
420420#: qml/Panel/Indicators/MessageMenuItemFactory.qml:214
@@ -432,14 +432,6 @@ msgctxt "Button: Call back on phone"
432432msgid "Call back"
433433msgstr "Позови назад"
434434
435−#: qml/Panel/Indicators/ModemInfoItem.qml:105
436−msgid "Unlock SIM"
437−msgstr "Откључај СИМ картицу"
438−
439−#: qml/Panel/Indicators/RoamingIndication.qml:27
440−msgid "Roaming"
441−msgstr "Роминг"
442−
443435#: qml/Tutorial/TutorialBottom.qml:28
444436msgid "Open special menus"
445437msgstr "Отвори нарочите изборнике"
@@ -454,12 +446,12 @@ msgstr "Ова радња ради различите ствари за разл
454446
455447#: qml/Tutorial/TutorialBottomFinish.qml:25
456448msgid "Tap here to finish."
457−msgstr "Тапните овде за завршетак."
449+msgstr "Лупните овде да завршите."
458450
459451#: qml/Tutorial/TutorialContent.qml:80 qml/Tutorial/TutorialLeftFinish.qml:25
460452#: qml/Tutorial/TutorialRight.qml:144
461453msgid "Tap here to continue."
462−msgstr "Тапните овде за наставак."
454+msgstr "Лупните овде да наставите."
463455
464456#: qml/Tutorial/TutorialLeft.qml:26
465457msgid "Open the launcher"
@@ -491,7 +483,7 @@ msgstr "Дуго превуците са десне ивице."
491483
492484#: qml/Tutorial/TutorialRight.qml:122
493485msgid "View all your running tasks."
494−msgstr "Прегледајте покренуте задатке."
486+msgstr "Прегледајте све покренуте задатке."
495487
496488#: qml/Wizard/Page.qml:89
497489msgctxt "Button: Go back one page in the Wizard"
@@ -504,7 +496,7 @@ msgstr "Здраво!"
504496
505497#: qml/Wizard/Pages/10-welcome.qml:44
506498msgid "Welcome to your Ubuntu device."
507−msgstr ""
499+msgstr "Добро дошли у Убунту уређај."
508500
509501#: qml/Wizard/Pages/10-welcome.qml:52
510502msgid "Let’s get started."
@@ -535,7 +527,7 @@ msgstr "Безбедносно закључавање"
535527
536528#: qml/Wizard/Pages/30-passwd-type.qml:79
537529msgid "Please select how you’d like to unlock your device."
538−msgstr ""
530+msgstr "Изаберите како желите да откључате уређај."
539531
540532#: qml/Wizard/Pages/30-passwd-type.qml:102
541533msgctxt "Label: Type of security method"
@@ -585,7 +577,7 @@ msgstr "Положај"
585577
586578#: qml/Wizard/Pages/50-location.qml:62
587579msgid "Let the phone detect your location:"
588−msgstr "Допустите да телефон препозна Ваш положај:"
580+msgstr "Допустите да телефон препозна ваш положај:"
589581
590582#: qml/Wizard/Pages/50-location.qml:69
591583msgid "Using GPS only (less accurate)"
@@ -594,7 +586,7 @@ msgstr "Користећи само ГПС (мања тачност)"
594586#: qml/Wizard/Pages/50-location.qml:86
595587msgid "Using GPS, anonymized Wi-Fi and cellular network info (recommended)"
596588msgstr ""
597−"Помоћу GPS-a, заштићених података о бежичним и мобилним мрежама (препоручено)"
589+"Користећи ГПС, заштићене податке о бежичним и мобилним мрежама (препоручено)"
598590
599591#. Translators: HERE is a trademark for Nokia's location service, you probably shouldn't translate it
600592#: qml/Wizard/Pages/50-location.qml:103
@@ -602,7 +594,7 @@ msgid ""
602594"By selecting this option you agree to the Nokia HERE <a href='#'>terms and "
603595"conditions</a>."
604596msgstr ""
605−"Избором ове могућности се слажете са <a href='#'>условима и одредбама</a> "
597+"Избором ове могућности слажете се са <a href='#'>условима и одредбама</a> "
606598"Nokia HERE-а."
607599
608600#: qml/Wizard/Pages/50-location.qml:112
@@ -611,18 +603,18 @@ msgstr "Нимало"
611603
612604#: qml/Wizard/Pages/50-location.qml:124
613605msgid "You can change your mind later in <b>System Settings</b>."
614−msgstr "Можете да измените поставке касније у <b>Поставкама система</b>."
606+msgstr "Можете да измените поставке касније у <b>Подешавањима система</b>."
615607
616608#: qml/Wizard/Pages/60-reporting.qml:26
617609msgid "Improving your experience"
618−msgstr "Унапређивање доживљаја"
610+msgstr "Побољшање искуства"
619611
620612#: qml/Wizard/Pages/60-reporting.qml:46
621613msgid ""
622614"Your phone is set up to automatically report errors to Canonical and its "
623615"partners, the makers of the operating system."
624616msgstr ""
625−"Телефон је подешен да аутоматски пријављује грешке Каноникалу и сарадницима, "
617+"Телефон је подешен да сам пријављује грешке Каноникалу и сарадницима, "
626618"творцима оперативног система."
627619
628620#: qml/Wizard/Pages/60-reporting.qml:53
@@ -630,7 +622,7 @@ msgid ""
630622"This can be disabled in <b>System Settings</b> under <b>Security &amp; "
631623"Privacy</b>"
632624msgstr ""
633−"Ово може да се онемогући у <b>Поставкама система</b> под ставком "
625+"Ово можете да искључите у <b>Подешавањима система</b> под ставком "
634626"<b>Безбедност и приватност</b>"
635627
636628#: qml/Wizard/Pages/80-finished.qml:24
@@ -643,7 +635,7 @@ msgstr "Лепо одрађено!"
643635
644636#: qml/Wizard/Pages/80-finished.qml:46
645637msgid "Your device is now ready to use."
646−msgstr ""
638+msgstr "Ваш уређај је сада спреман за употребу."
647639
648640#: qml/Wizard/Pages/80-finished.qml:53
649641msgid "Finish"
@@ -664,11 +656,11 @@ msgstr "Потврдите приступни код"
664656#: qml/Wizard/Pages/passwd-confirm.qml:53
665657#: qml/Wizard/Pages/passwd-confirm.qml:54
666658msgid "Please try again."
667−msgstr "Молим, покушајте поново."
659+msgstr "Покушајте поново."
668660
669661#: qml/Wizard/Pages/passwd-set.qml:61
670662msgid "Choose your passcode"
671−msgstr "Изаберите ваш приступни код"
663+msgstr "Изаберите приступни код"
672664
673665#: qml/Wizard/Pages/passwd-set.qml:68
674666msgid "Passphrase must be 4 characters long"
@@ -771,6 +763,12 @@ msgstr "%1 〉"
771763#~ msgid "Done"
772764#~ msgstr "Готово"
773765
766+#~ msgid "Unlock SIM"
767+#~ msgstr "Откључај СИМ картицу"
768+
769+#~ msgid "Roaming"
770+#~ msgstr "Роминг"
771+
774772#~ msgid "Restart"
775773#~ msgstr "Поново покрени"
776774
po/sv.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"PO-Revision-Date: 2015-07-12 22:17+0000\n"
1212"Last-Translator: Josef Andersson <Unknown>\n"
1313"Language-Team: Swedish\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020"Language: sv\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -175,38 +175,38 @@ msgstr "Återanslut nu!"
175175msgid "Close all"
176176msgstr "Stäng alla"
177177
178−#: qml/Dash/DashPageHeader.qml:266
178+#: qml/Dash/DashPageHeader.qml:270
179179msgctxt "Button: Open the Ubuntu Store"
180180msgid "Store"
181181msgstr "Förråd"
182182
183−#: qml/Dash/DashPageHeader.qml:273
183+#: qml/Dash/DashPageHeader.qml:277
184184msgctxt "Button: Start a search in the current dash scope"
185185msgid "Search"
186186msgstr "Sök"
187187
188−#: qml/Dash/DashPageHeader.qml:283
188+#: qml/Dash/DashPageHeader.qml:287
189189msgctxt "Button: Show the current dash scope settings"
190190msgid "Settings"
191191msgstr "Inställningar"
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Remove from Favorites"
195195msgstr "Ta bort från Favoriter"
196196
197−#: qml/Dash/DashPageHeader.qml:290
197+#: qml/Dash/DashPageHeader.qml:294
198198msgid "Add to Favorites"
199199msgstr "Lägg till Favoriter"
200200
201−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
201+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
202202msgid "See less"
203203msgstr "Visa mindre"
204204
205−#: qml/Dash/GenericScopeView.qml:587
205+#: qml/Dash/GenericScopeView.qml:565
206206msgid "See all"
207207msgstr "Visa alla"
208208
209−#: qml/Dash/GenericScopeView.qml:649
209+#: qml/Dash/GenericScopeView.qml:627
210210msgctxt "Label: Hint for dash search line edit"
211211msgid "Search"
212212msgstr "Sök"
@@ -426,14 +426,6 @@ msgctxt "Button: Call back on phone"
426426msgid "Call back"
427427msgstr "Ring upp"
428428
429−#: qml/Panel/Indicators/ModemInfoItem.qml:105
430−msgid "Unlock SIM"
431−msgstr "Lås upp SIM-kort"
432−
433−#: qml/Panel/Indicators/RoamingIndication.qml:27
434−msgid "Roaming"
435−msgstr "Roaming"
436−
437429#: qml/Tutorial/TutorialBottom.qml:28
438430msgid "Open special menus"
439431msgstr "Öppna specialmenyer"
@@ -736,6 +728,12 @@ msgstr "%1 〉"
736728#~ msgid "Speaking..."
737729#~ msgstr "Talar…"
738730
731+#~ msgid "Unlock SIM"
732+#~ msgstr "Lås upp SIM-kort"
733+
734+#~ msgid "Roaming"
735+#~ msgstr "Roaming"
736+
739737#~ msgid "Favorites"
740738#~ msgstr "Favoriter"
741739
po/sw.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -173,38 +173,38 @@ msgstr ""
173173msgid "Close all"
174174msgstr ""
175175
176−#: qml/Dash/DashPageHeader.qml:266
176+#: qml/Dash/DashPageHeader.qml:270
177177msgctxt "Button: Open the Ubuntu Store"
178178msgid "Store"
179179msgstr "Duka"
180180
181−#: qml/Dash/DashPageHeader.qml:273
181+#: qml/Dash/DashPageHeader.qml:277
182182msgctxt "Button: Start a search in the current dash scope"
183183msgid "Search"
184184msgstr "Tafuta"
185185
186−#: qml/Dash/DashPageHeader.qml:283
186+#: qml/Dash/DashPageHeader.qml:287
187187msgctxt "Button: Show the current dash scope settings"
188188msgid "Settings"
189189msgstr "Mipangilio"
190190
191−#: qml/Dash/DashPageHeader.qml:290
191+#: qml/Dash/DashPageHeader.qml:294
192192msgid "Remove from Favorites"
193193msgstr "Toa kutoka nilizopenda"
194194
195−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
196196msgid "Add to Favorites"
197197msgstr "Ongeza kwenye nilizopenda"
198198
199−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
199+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
200200msgid "See less"
201201msgstr "Onyesha kidogo"
202202
203−#: qml/Dash/GenericScopeView.qml:587
203+#: qml/Dash/GenericScopeView.qml:565
204204msgid "See all"
205205msgstr "Onyesha zote"
206206
207−#: qml/Dash/GenericScopeView.qml:649
207+#: qml/Dash/GenericScopeView.qml:627
208208msgctxt "Label: Hint for dash search line edit"
209209msgid "Search"
210210msgstr "Tafuta"
@@ -422,14 +422,6 @@ msgctxt "Button: Call back on phone"
422422msgid "Call back"
423423msgstr ""
424424
425−#: qml/Panel/Indicators/ModemInfoItem.qml:105
426−msgid "Unlock SIM"
427−msgstr "Fungua SIM"
428−
429−#: qml/Panel/Indicators/RoamingIndication.qml:27
430−msgid "Roaming"
431−msgstr "Uzururaji"
432−
433425#: qml/Tutorial/TutorialBottom.qml:28
434426msgid "Open special menus"
435427msgstr "Fungua orodha maalum"
@@ -711,6 +703,12 @@ msgstr ""
711703#~ msgid "Please re-enter"
712704#~ msgstr "Tafadhali bonyeza tena"
713705
706+#~ msgid "Unlock SIM"
707+#~ msgstr "Fungua SIM"
708+
709+#~ msgid "Roaming"
710+#~ msgstr "Uzururaji"
711+
714712#~ msgid "Please select how you’d like to unlock your phone."
715713#~ msgstr "Tafadhali chagua vile ungependa kufunga simu."
716714
po/ta.po+11−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020"Language: ta\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -172,38 +172,38 @@ msgstr ""
172172msgid "Close all"
173173msgstr ""
174174
175−#: qml/Dash/DashPageHeader.qml:266
175+#: qml/Dash/DashPageHeader.qml:270
176176msgctxt "Button: Open the Ubuntu Store"
177177msgid "Store"
178178msgstr ""
179179
180−#: qml/Dash/DashPageHeader.qml:273
180+#: qml/Dash/DashPageHeader.qml:277
181181msgctxt "Button: Start a search in the current dash scope"
182182msgid "Search"
183183msgstr ""
184184
185−#: qml/Dash/DashPageHeader.qml:283
185+#: qml/Dash/DashPageHeader.qml:287
186186msgctxt "Button: Show the current dash scope settings"
187187msgid "Settings"
188188msgstr ""
189189
190−#: qml/Dash/DashPageHeader.qml:290
190+#: qml/Dash/DashPageHeader.qml:294
191191msgid "Remove from Favorites"
192192msgstr ""
193193
194−#: qml/Dash/DashPageHeader.qml:290
194+#: qml/Dash/DashPageHeader.qml:294
195195msgid "Add to Favorites"
196196msgstr ""
197197
198−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
198+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
199199msgid "See less"
200200msgstr ""
201201
202−#: qml/Dash/GenericScopeView.qml:587
202+#: qml/Dash/GenericScopeView.qml:565
203203msgid "See all"
204204msgstr ""
205205
206−#: qml/Dash/GenericScopeView.qml:649
206+#: qml/Dash/GenericScopeView.qml:627
207207msgctxt "Label: Hint for dash search line edit"
208208msgid "Search"
209209msgstr ""
@@ -417,14 +417,6 @@ msgctxt "Button: Call back on phone"
417417msgid "Call back"
418418msgstr ""
419419
420−#: qml/Panel/Indicators/ModemInfoItem.qml:105
421−msgid "Unlock SIM"
422−msgstr ""
423−
424−#: qml/Panel/Indicators/RoamingIndication.qml:27
425−msgid "Roaming"
426−msgstr ""
427−
428420#: qml/Tutorial/TutorialBottom.qml:28
429421msgid "Open special menus"
430422msgstr ""
po/te.po+11−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171171msgid "Close all"
172172msgstr ""
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177177msgstr ""
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr ""
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr ""
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr ""
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr ""
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr ""
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416416msgid "Call back"
417417msgstr ""
418418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427419#: qml/Tutorial/TutorialBottom.qml:28
428420msgid "Open special menus"
429421msgstr ""
po/th.po+11−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171171msgid "Close all"
172172msgstr ""
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177177msgstr ""
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr ""
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr ""
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr ""
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr ""
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr ""
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416416msgid "Call back"
417417msgstr ""
418418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427419#: qml/Tutorial/TutorialBottom.qml:28
428420msgid "Open special menus"
429421msgstr ""
po/tr.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171171msgid "Close all"
172172msgstr ""
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177177msgstr "Mağaza"
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr "Ara"
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr "Ayarlar"
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr "Sık kullanılanlardan kaldır"
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr "Yer İmlerine Ekle"
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr "Daha azını gör"
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr "Tümünü gör"
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr "Ara"
@@ -420,14 +420,6 @@ msgctxt "Button: Call back on phone"
420420msgid "Call back"
421421msgstr ""
422422
423−#: qml/Panel/Indicators/ModemInfoItem.qml:105
424−msgid "Unlock SIM"
425−msgstr "SIM kilidini aç"
426−
427−#: qml/Panel/Indicators/RoamingIndication.qml:27
428−msgid "Roaming"
429−msgstr "Dolaşım"
430−
431423#: qml/Tutorial/TutorialBottom.qml:28
432424msgid "Open special menus"
433425msgstr "Özel menüleri aç"
@@ -739,6 +731,9 @@ msgstr "%1 〉"
739731#~ msgid "Store"
740732#~ msgstr "Mağaza"
741733
734+#~ msgid "Unlock SIM"
735+#~ msgstr "SIM kilidini aç"
736+
742737#~ msgid "Reboot"
743738#~ msgstr "Yeniden başlat"
744739
@@ -760,6 +755,9 @@ msgstr "%1 〉"
760755#~ msgid "Restart"
761756#~ msgstr "Yeniden başlat"
762757
758+#~ msgid "Roaming"
759+#~ msgstr "Dolaşım"
760+
763761#~ msgid "Please re-enter"
764762#~ msgstr "Lütfen yeniden girin"
765763
po/ug.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"PO-Revision-Date: 2015-12-01 07:37+0000\n"
1212"Last-Translator: Eltikin <eltikinuyghur@hotmail.com>\n"
1313"Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
@@ -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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -172,38 +172,38 @@ msgstr ""
172172msgid "Close all"
173173msgstr ""
174174
175−#: qml/Dash/DashPageHeader.qml:266
175+#: qml/Dash/DashPageHeader.qml:270
176176msgctxt "Button: Open the Ubuntu Store"
177177msgid "Store"
178178msgstr "ساقلا"
179179
180−#: qml/Dash/DashPageHeader.qml:273
180+#: qml/Dash/DashPageHeader.qml:277
181181msgctxt "Button: Start a search in the current dash scope"
182182msgid "Search"
183183msgstr "ئىزدە"
184184
185−#: qml/Dash/DashPageHeader.qml:283
185+#: qml/Dash/DashPageHeader.qml:287
186186msgctxt "Button: Show the current dash scope settings"
187187msgid "Settings"
188188msgstr "تەڭشەك"
189189
190−#: qml/Dash/DashPageHeader.qml:290
190+#: qml/Dash/DashPageHeader.qml:294
191191msgid "Remove from Favorites"
192192msgstr "يىغقۇچتىن چىقىرىۋەت"
193193
194−#: qml/Dash/DashPageHeader.qml:290
194+#: qml/Dash/DashPageHeader.qml:294
195195msgid "Add to Favorites"
196196msgstr "يىغقۇچقا قوش"
197197
198−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
198+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
199199msgid "See less"
200200msgstr "ئازراق كۆرۈش"
201201
202−#: qml/Dash/GenericScopeView.qml:587
202+#: qml/Dash/GenericScopeView.qml:565
203203msgid "See all"
204204msgstr "ھەممىنى كۆرۈش…"
205205
206−#: qml/Dash/GenericScopeView.qml:649
206+#: qml/Dash/GenericScopeView.qml:627
207207msgctxt "Label: Hint for dash search line edit"
208208msgid "Search"
209209msgstr "ئىزدە"
@@ -418,14 +418,6 @@ msgctxt "Button: Call back on phone"
418418msgid "Call back"
419419msgstr "تىلفۇن ئۇرلىۋاتىدۇ"
420420
421−#: qml/Panel/Indicators/ModemInfoItem.qml:105
422−msgid "Unlock SIM"
423−msgstr "SIM نى قۇلۇپسىزلاش"
424−
425−#: qml/Panel/Indicators/RoamingIndication.qml:27
426−msgid "Roaming"
427−msgstr "كەزمە"
428−
429421#: qml/Tutorial/TutorialBottom.qml:28
430422msgid "Open special menus"
431423msgstr "تىزملىكنى ئاچ"
@@ -756,6 +748,12 @@ msgstr "%1 〉"
756748#~ msgid "All"
757749#~ msgstr "ھەممىسى"
758750
751+#~ msgid "Unlock SIM"
752+#~ msgstr "SIM نى قۇلۇپسىزلاش"
753+
754+#~ msgid "Roaming"
755+#~ msgstr "كەزمە"
756+
759757#~ msgid "Restart"
760758#~ msgstr "قايتا قوزغات"
761759
po/uk.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -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: 2016-02-17 05:43+0000\n"
20−"X-Generator: Launchpad (build 17925)\n"
19+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
20+"X-Generator: Launchpad (build 17936)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -180,38 +180,38 @@ msgstr "Перепід’єднатися зараз!"
180180msgid "Close all"
181181msgstr "Закрити усе"
182182
183−#: qml/Dash/DashPageHeader.qml:266
183+#: qml/Dash/DashPageHeader.qml:270
184184msgctxt "Button: Open the Ubuntu Store"
185185msgid "Store"
186186msgstr "Крамниця"
187187
188−#: qml/Dash/DashPageHeader.qml:273
188+#: qml/Dash/DashPageHeader.qml:277
189189msgctxt "Button: Start a search in the current dash scope"
190190msgid "Search"
191191msgstr "Пошук"
192192
193−#: qml/Dash/DashPageHeader.qml:283
193+#: qml/Dash/DashPageHeader.qml:287
194194msgctxt "Button: Show the current dash scope settings"
195195msgid "Settings"
196196msgstr "Параметри"
197197
198−#: qml/Dash/DashPageHeader.qml:290
198+#: qml/Dash/DashPageHeader.qml:294
199199msgid "Remove from Favorites"
200200msgstr "Вилучити з вибраного"
201201
202−#: qml/Dash/DashPageHeader.qml:290
202+#: qml/Dash/DashPageHeader.qml:294
203203msgid "Add to Favorites"
204204msgstr "Додати до вибраного"
205205
206−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
206+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
207207msgid "See less"
208208msgstr "Стисліше"
209209
210−#: qml/Dash/GenericScopeView.qml:587
210+#: qml/Dash/GenericScopeView.qml:565
211211msgid "See all"
212212msgstr "Детальніше"
213213
214−#: qml/Dash/GenericScopeView.qml:649
214+#: qml/Dash/GenericScopeView.qml:627
215215msgctxt "Label: Hint for dash search line edit"
216216msgid "Search"
217217msgstr "Пошук"
@@ -434,14 +434,6 @@ msgctxt "Button: Call back on phone"
434434msgid "Call back"
435435msgstr "Зворотний виклик"
436436
437−#: qml/Panel/Indicators/ModemInfoItem.qml:105
438−msgid "Unlock SIM"
439−msgstr "Розблокувати SIM"
440−
441−#: qml/Panel/Indicators/RoamingIndication.qml:27
442−msgid "Roaming"
443−msgstr "Роумінг"
444−
445437#: qml/Tutorial/TutorialBottom.qml:28
446438msgid "Open special menus"
447439msgstr "Відкрити спеціальні меню"
@@ -751,6 +743,9 @@ msgstr "%1 〉"
751743#~ msgid "All"
752744#~ msgstr "Все"
753745
746+#~ msgid "Unlock SIM"
747+#~ msgstr "Розблокувати SIM"
748+
754749#~ msgid "Favorites"
755750#~ msgstr "Улюблене"
756751
@@ -763,6 +758,9 @@ msgstr "%1 〉"
763758#~ msgid "Done"
764759#~ msgstr "Виконано"
765760
761+#~ msgid "Roaming"
762+#~ msgstr "Роумінг"
763+
766764#~ msgid "Log out"
767765#~ msgstr "Вийти"
768766
po/unity8.pot+34−40
@@ -8,7 +8,7 @@ msgid ""
88msgstr ""
99"Project-Id-Version: unity8\n"
1010"Report-Msgid-Bugs-To: \n"
11−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
11+"POT-Creation-Date: 2016-03-10 22:48+0000\n"
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"
@@ -22,16 +22,16 @@ msgstr ""
2222msgid "Password: "
2323msgstr ""
2424
25−#: plugins/Unity/Launcher/launcheritem.cpp:47
26−#: plugins/Unity/Launcher/launcheritem.cpp:106
25+#: plugins/Unity/Launcher/launcheritem.cpp:48
26+#: plugins/Unity/Launcher/launcheritem.cpp:107
2727msgid "Pin shortcut"
2828msgstr ""
2929
30−#: plugins/Unity/Launcher/launcheritem.cpp:52
30+#: plugins/Unity/Launcher/launcheritem.cpp:53
3131msgid "Quit"
3232msgstr ""
3333
34−#: plugins/Unity/Launcher/launcheritem.cpp:106
34+#: plugins/Unity/Launcher/launcheritem.cpp:107
3535msgid "Unpin shortcut"
3636msgstr ""
3737
@@ -135,15 +135,15 @@ msgctxt "Button: Restart the system"
135135msgid "Restart"
136136msgstr ""
137137
138−#: qml/Components/Lockscreen.qml:245
138+#: qml/Components/Lockscreen.qml:231
139139msgid "Return to Call"
140140msgstr ""
141141
142−#: qml/Components/Lockscreen.qml:245
142+#: qml/Components/Lockscreen.qml:231
143143msgid "Emergency Call"
144144msgstr ""
145145
146−#: qml/Components/Lockscreen.qml:277
146+#: qml/Components/Lockscreen.qml:263
147147msgid "OK"
148148msgstr ""
149149
@@ -152,6 +152,8 @@ msgid "Apps may have unsaved data:"
152152msgstr ""
153153
154154#: qml/Components/ModeSwitchWarningDialog.qml:57
155+msgctxt ""
156+"Re-dock means connect the device again to an external screen/mouse/keyboard"
155157msgid "Re-dock, save your work and close these apps to continue."
156158msgstr ""
157159
@@ -171,38 +173,38 @@ msgstr ""
171173msgid "Close all"
172174msgstr ""
173175
174−#: qml/Dash/DashPageHeader.qml:266
176+#: qml/Dash/DashPageHeader.qml:270
175177msgctxt "Button: Open the Ubuntu Store"
176178msgid "Store"
177179msgstr ""
178180
179−#: qml/Dash/DashPageHeader.qml:273
181+#: qml/Dash/DashPageHeader.qml:277
180182msgctxt "Button: Start a search in the current dash scope"
181183msgid "Search"
182184msgstr ""
183185
184−#: qml/Dash/DashPageHeader.qml:283
186+#: qml/Dash/DashPageHeader.qml:287
185187msgctxt "Button: Show the current dash scope settings"
186188msgid "Settings"
187189msgstr ""
188190
189−#: qml/Dash/DashPageHeader.qml:290
191+#: qml/Dash/DashPageHeader.qml:294
190192msgid "Remove from Favorites"
191193msgstr ""
192194
193−#: qml/Dash/DashPageHeader.qml:290
195+#: qml/Dash/DashPageHeader.qml:294
194196msgid "Add to Favorites"
195197msgstr ""
196198
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
199+#: qml/Dash/GenericScopeView.qml:567 qml/Dash/GenericScopeView.qml:725
198200msgid "See less"
199201msgstr ""
200202
201−#: qml/Dash/GenericScopeView.qml:587
203+#: qml/Dash/GenericScopeView.qml:567
202204msgid "See all"
203205msgstr ""
204206
205−#: qml/Dash/GenericScopeView.qml:649
207+#: qml/Dash/GenericScopeView.qml:629
206208msgctxt "Label: Hint for dash search line edit"
207209msgid "Search"
208210msgstr ""
@@ -228,7 +230,7 @@ msgstr ""
228230msgid "Add a review"
229231msgstr ""
230232
231−#: qml/Dash/Previews/PreviewSharing.qml:50
233+#: qml/Dash/Previews/PreviewSharing.qml:66
232234msgid "Preview Share Item"
233235msgstr ""
234236
@@ -256,13 +258,13 @@ msgstr ""
256258msgid "Also installed"
257259msgstr ""
258260
259−#: qml/DisabledScreenNotice.qml:87
261+#: qml/DisabledScreenNotice.qml:104
260262msgid ""
261263"Your device is now connected to an external display. Use this screen as a "
262−"touch pad to interact with the mouse."
264+"touch pad to interact with the pointer."
263265msgstr ""
264266
265−#: qml/Greeter/CoverPage.qml:107
267+#: qml/Greeter/CoverPage.qml:118
266268msgid "Unlock"
267269msgstr ""
268270
@@ -341,62 +343,62 @@ msgstr ""
341343msgid "Conference"
342344msgstr ""
343345
344−#: qml/Panel/Indicators/MenuItemFactory.qml:753
346+#: qml/Panel/Indicators/MenuItemFactory.qml:752
345347msgid "Nothing is playing"
346348msgstr ""
347349
348−#: qml/Panel/Indicators/MenuItemFactory.qml:882
350+#: qml/Panel/Indicators/MenuItemFactory.qml:881
349351#, qt-format
350352msgid "%1 hour"
351353msgid_plural "%1 hours"
352354msgstr[0] ""
353355msgstr[1] ""
354356
355−#: qml/Panel/Indicators/MenuItemFactory.qml:886
357+#: qml/Panel/Indicators/MenuItemFactory.qml:885
356358#, qt-format
357359msgid "%1 minute"
358360msgid_plural "%1 minutes"
359361msgstr[0] ""
360362msgstr[1] ""
361363
362−#: qml/Panel/Indicators/MenuItemFactory.qml:891
364+#: qml/Panel/Indicators/MenuItemFactory.qml:890
363365#, qt-format
364366msgid "%1 second"
365367msgid_plural "%1 seconds"
366368msgstr[0] ""
367369msgstr[1] ""
368370
369−#: qml/Panel/Indicators/MenuItemFactory.qml:894
371+#: qml/Panel/Indicators/MenuItemFactory.qml:893
370372msgid "0 seconds"
371373msgstr ""
372374
373375#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
374−#: qml/Panel/Indicators/MenuItemFactory.qml:896
376+#: qml/Panel/Indicators/MenuItemFactory.qml:895
375377#, qt-format
376378msgid "%1 remaining"
377379msgstr ""
378380
379−#: qml/Panel/Indicators/MenuItemFactory.qml:902
381+#: qml/Panel/Indicators/MenuItemFactory.qml:901
380382msgid "In queue…"
381383msgstr ""
382384
383−#: qml/Panel/Indicators/MenuItemFactory.qml:906
385+#: qml/Panel/Indicators/MenuItemFactory.qml:905
384386msgid "Downloading"
385387msgstr ""
386388
387−#: qml/Panel/Indicators/MenuItemFactory.qml:908
389+#: qml/Panel/Indicators/MenuItemFactory.qml:907
388390msgid "Paused, tap to resume"
389391msgstr ""
390392
391−#: qml/Panel/Indicators/MenuItemFactory.qml:910
393+#: qml/Panel/Indicators/MenuItemFactory.qml:909
392394msgid "Canceled"
393395msgstr ""
394396
395−#: qml/Panel/Indicators/MenuItemFactory.qml:912
397+#: qml/Panel/Indicators/MenuItemFactory.qml:911
396398msgid "Finished"
397399msgstr ""
398400
399−#: qml/Panel/Indicators/MenuItemFactory.qml:914
401+#: qml/Panel/Indicators/MenuItemFactory.qml:913
400402msgid "Failed, tap to retry"
401403msgstr ""
402404
@@ -416,14 +418,6 @@ msgctxt "Button: Call back on phone"
416418msgid "Call back"
417419msgstr ""
418420
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427421#: qml/Tutorial/TutorialBottom.qml:28
428422msgid "Open special menus"
429423msgstr ""
po/ur.po+11−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171171msgid "Close all"
172172msgstr ""
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177177msgstr ""
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr ""
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr ""
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr ""
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr ""
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr ""
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416416msgid "Call back"
417417msgstr ""
418418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427419#: qml/Tutorial/TutorialBottom.qml:28
428420msgid "Open special menus"
429421msgstr ""
po/uz.po+11−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"PO-Revision-Date: 2015-07-04 16:03+0000\n"
1212"Last-Translator: Learner <muzaffar.habibullayev@yandex.ru>\n"
1313"Language-Team: Uzbek <uz@li.org>\n"
@@ -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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171171msgid "Close all"
172172msgstr ""
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177177msgstr ""
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr ""
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr ""
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr ""
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr ""
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr ""
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416416msgid "Call back"
417417msgstr ""
418418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427419#: qml/Tutorial/TutorialBottom.qml:28
428420msgid "Open special menus"
429421msgstr ""
po/vi.po+11−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171171msgid "Close all"
172172msgstr ""
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177177msgstr ""
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr ""
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr ""
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr ""
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr ""
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr ""
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416416msgid "Call back"
417417msgstr ""
418418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427419#: qml/Tutorial/TutorialBottom.qml:28
428420msgid "Open special menus"
429421msgstr ""
po/wo.po+17−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"PO-Revision-Date: 2015-10-29 11:16+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Wolof <wo@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171171msgid "Close all"
172172msgstr ""
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177177msgstr "Ja"
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr "Seet"
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr "Jekkal"
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr "Dindee ci Tànneef yi"
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr "Yokk ci Tànneef yi"
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr "Gis lu néew"
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr "Gis lépp"
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr "Seet"
@@ -420,14 +420,6 @@ msgctxt "Button: Call back on phone"
420420msgid "Call back"
421421msgstr ""
422422
423−#: qml/Panel/Indicators/ModemInfoItem.qml:105
424−msgid "Unlock SIM"
425−msgstr "Tijji SIM"
426−
427−#: qml/Panel/Indicators/RoamingIndication.qml:27
428−msgid "Roaming"
429−msgstr "Roaming"
430−
431423#: qml/Tutorial/TutorialBottom.qml:28
432424msgid "Open special menus"
433425msgstr "Open njëli jagleel"
@@ -755,6 +747,12 @@ msgstr "%1 〉"
755747#~ msgid "Confirm"
756748#~ msgstr "Dëggal"
757749
750+#~ msgid "Unlock SIM"
751+#~ msgstr "Tijji SIM"
752+
753+#~ msgid "Roaming"
754+#~ msgstr "Roaming"
755+
758756#~ msgid "Please re-enter"
759757#~ msgstr "Di la ñaan nga duggalaat"
760758
po/xh.po+11−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -15,8 +15,8 @@ msgstr ""
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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171171msgid "Close all"
172172msgstr ""
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177177msgstr ""
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr ""
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr ""
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr ""
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr ""
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr ""
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416416msgid "Call back"
417417msgstr ""
418418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427419#: qml/Tutorial/TutorialBottom.qml:28
428420msgid "Open special menus"
429421msgstr ""
po/zh_CN.po+20−22
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -172,38 +172,38 @@ msgstr "即刻重新连接!"
172172msgid "Close all"
173173msgstr "关闭所有"
174174
175−#: qml/Dash/DashPageHeader.qml:266
175+#: qml/Dash/DashPageHeader.qml:270
176176msgctxt "Button: Open the Ubuntu Store"
177177msgid "Store"
178178msgstr "商店"
179179
180−#: qml/Dash/DashPageHeader.qml:273
180+#: qml/Dash/DashPageHeader.qml:277
181181msgctxt "Button: Start a search in the current dash scope"
182182msgid "Search"
183183msgstr "搜索"
184184
185−#: qml/Dash/DashPageHeader.qml:283
185+#: qml/Dash/DashPageHeader.qml:287
186186msgctxt "Button: Show the current dash scope settings"
187187msgid "Settings"
188188msgstr "设置"
189189
190−#: qml/Dash/DashPageHeader.qml:290
190+#: qml/Dash/DashPageHeader.qml:294
191191msgid "Remove from Favorites"
192192msgstr "从收藏夹中移除"
193193
194−#: qml/Dash/DashPageHeader.qml:290
194+#: qml/Dash/DashPageHeader.qml:294
195195msgid "Add to Favorites"
196196msgstr "添加到收藏夹"
197197
198−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
198+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
199199msgid "See less"
200200msgstr "显示更少"
201201
202−#: qml/Dash/GenericScopeView.qml:587
202+#: qml/Dash/GenericScopeView.qml:565
203203msgid "See all"
204204msgstr "查看全部"
205205
206−#: qml/Dash/GenericScopeView.qml:649
206+#: qml/Dash/GenericScopeView.qml:627
207207msgctxt "Label: Hint for dash search line edit"
208208msgid "Search"
209209msgstr "搜索"
@@ -414,14 +414,6 @@ msgctxt "Button: Call back on phone"
414414msgid "Call back"
415415msgstr "回电"
416416
417−#: qml/Panel/Indicators/ModemInfoItem.qml:105
418−msgid "Unlock SIM"
419−msgstr "解开 SIM"
420−
421−#: qml/Panel/Indicators/RoamingIndication.qml:27
422−msgid "Roaming"
423−msgstr "漫游"
424−
425417#: qml/Tutorial/TutorialBottom.qml:28
426418msgid "Open special menus"
427419msgstr "打开专题菜单"
@@ -486,7 +478,7 @@ msgstr "您好!"
486478
487479#: qml/Wizard/Pages/10-welcome.qml:44
488480msgid "Welcome to your Ubuntu device."
489−msgstr ""
481+msgstr "欢迎使用您的Ubuntu设备。"
490482
491483#: qml/Wizard/Pages/10-welcome.qml:52
492484msgid "Let’s get started."
@@ -517,7 +509,7 @@ msgstr "锁屏安全设定"
517509
518510#: qml/Wizard/Pages/30-passwd-type.qml:79
519511msgid "Please select how you’d like to unlock your device."
520−msgstr ""
512+msgstr "请选择你偏好的设备解锁方式。"
521513
522514#: qml/Wizard/Pages/30-passwd-type.qml:102
523515msgctxt "Label: Type of security method"
@@ -618,7 +610,7 @@ msgstr "干得好!"
618610
619611#: qml/Wizard/Pages/80-finished.qml:46
620612msgid "Your device is now ready to use."
621−msgstr ""
613+msgstr "您的设备已就绪。"
622614
623615#: qml/Wizard/Pages/80-finished.qml:53
624616msgid "Finish"
@@ -717,6 +709,9 @@ msgstr "%1 〉"
717709#~ msgid "All"
718710#~ msgstr "所有"
719711
712+#~ msgid "Unlock SIM"
713+#~ msgstr "解开 SIM"
714+
720715#~ msgid "Favorites"
721716#~ msgstr "收藏夹"
722717
@@ -729,6 +724,9 @@ msgstr "%1 〉"
729724#~ msgid "Done"
730725#~ msgstr "完成"
731726
727+#~ msgid "Roaming"
728+#~ msgstr "漫游"
729+
732730#~ msgid "Please re-enter"
733731#~ msgstr "请重新输入"
734732
po/zh_HK.po+11−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
1111"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"
@@ -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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -171,38 +171,38 @@ msgstr ""
171171msgid "Close all"
172172msgstr ""
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177177msgstr ""
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr ""
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr ""
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr ""
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr "縮減查看"
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr "查看全部"
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr ""
@@ -416,14 +416,6 @@ msgctxt "Button: Call back on phone"
416416msgid "Call back"
417417msgstr ""
418418
419−#: qml/Panel/Indicators/ModemInfoItem.qml:105
420−msgid "Unlock SIM"
421−msgstr ""
422−
423−#: qml/Panel/Indicators/RoamingIndication.qml:27
424−msgid "Roaming"
425−msgstr ""
426−
427419#: qml/Tutorial/TutorialBottom.qml:28
428420msgid "Open special menus"
429421msgstr ""
po/zh_TW.po+22−24
@@ -7,16 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-02-12 00:28+0000\n"
11−"PO-Revision-Date: 2015-07-31 09:29+0000\n"
10+"POT-Creation-Date: 2016-03-08 21:04+0000\n"
11+"PO-Revision-Date: 2016-02-24 04:40+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: 2016-02-17 05:43+0000\n"
19−"X-Generator: Launchpad (build 17925)\n"
18+"X-Launchpad-Export-Date: 2016-03-10 05:58+0000\n"
19+"X-Generator: Launchpad (build 17936)\n"
2020"Language: zh_TW\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -171,38 +171,38 @@ msgstr "即刻重新連線!"
171171msgid "Close all"
172172msgstr "全部關閉"
173173
174−#: qml/Dash/DashPageHeader.qml:266
174+#: qml/Dash/DashPageHeader.qml:270
175175msgctxt "Button: Open the Ubuntu Store"
176176msgid "Store"
177177msgstr "商城"
178178
179−#: qml/Dash/DashPageHeader.qml:273
179+#: qml/Dash/DashPageHeader.qml:277
180180msgctxt "Button: Start a search in the current dash scope"
181181msgid "Search"
182182msgstr "搜尋"
183183
184−#: qml/Dash/DashPageHeader.qml:283
184+#: qml/Dash/DashPageHeader.qml:287
185185msgctxt "Button: Show the current dash scope settings"
186186msgid "Settings"
187187msgstr "設定"
188188
189−#: qml/Dash/DashPageHeader.qml:290
189+#: qml/Dash/DashPageHeader.qml:294
190190msgid "Remove from Favorites"
191191msgstr "自「最愛」移除"
192192
193−#: qml/Dash/DashPageHeader.qml:290
193+#: qml/Dash/DashPageHeader.qml:294
194194msgid "Add to Favorites"
195195msgstr "加入到「最愛」"
196196
197−#: qml/Dash/GenericScopeView.qml:587 qml/Dash/GenericScopeView.qml:745
197+#: qml/Dash/GenericScopeView.qml:565 qml/Dash/GenericScopeView.qml:723
198198msgid "See less"
199199msgstr "縮減查看"
200200
201−#: qml/Dash/GenericScopeView.qml:587
201+#: qml/Dash/GenericScopeView.qml:565
202202msgid "See all"
203203msgstr "查看全部"
204204
205−#: qml/Dash/GenericScopeView.qml:649
205+#: qml/Dash/GenericScopeView.qml:627
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr "搜尋"
@@ -401,7 +401,7 @@ msgstr "失敗,點按可重試"
401401#: qml/Panel/Indicators/MessageMenuItemFactory.qml:214
402402msgctxt "Button: Send a reply message"
403403msgid "Send"
404−msgstr ""
404+msgstr "傳送"
405405
406406#: qml/Panel/Indicators/MessageMenuItemFactory.qml:156
407407msgctxt "Label: Hint in message indicator line edit"
@@ -413,14 +413,6 @@ msgctxt "Button: Call back on phone"
413413msgid "Call back"
414414msgstr "回撥"
415415
416−#: qml/Panel/Indicators/ModemInfoItem.qml:105
417−msgid "Unlock SIM"
418−msgstr "解鎖 SIM 卡"
419−
420−#: qml/Panel/Indicators/RoamingIndication.qml:27
421−msgid "Roaming"
422−msgstr "漫遊"
423−
424416#: qml/Tutorial/TutorialBottom.qml:28
425417msgid "Open special menus"
426418msgstr "開啟特殊選單"
@@ -485,7 +477,7 @@ msgstr "您好!"
485477
486478#: qml/Wizard/Pages/10-welcome.qml:44
487479msgid "Welcome to your Ubuntu device."
488−msgstr ""
480+msgstr "歡迎使用您的 Ubuntu 裝置"
489481
490482#: qml/Wizard/Pages/10-welcome.qml:52
491483msgid "Let’s get started."
@@ -516,7 +508,7 @@ msgstr "安全鎖"
516508
517509#: qml/Wizard/Pages/30-passwd-type.qml:79
518510msgid "Please select how you’d like to unlock your device."
519−msgstr ""
511+msgstr "請選擇您想要的裝置解鎖方式。"
520512
521513#: qml/Wizard/Pages/30-passwd-type.qml:102
522514msgctxt "Label: Type of security method"
@@ -617,7 +609,7 @@ msgstr "做得漂亮!"
617609
618610#: qml/Wizard/Pages/80-finished.qml:46
619611msgid "Your device is now ready to use."
620−msgstr ""
612+msgstr "您的裝置已準備就緒。"
621613
622614#: qml/Wizard/Pages/80-finished.qml:53
623615msgid "Finish"
@@ -743,12 +735,18 @@ msgstr "%1 〉"
743735#~ msgid "Done"
744736#~ msgstr "完成"
745737
738+#~ msgid "Roaming"
739+#~ msgstr "漫遊"
740+
746741#~ msgid "Restart"
747742#~ msgstr "重新啟動"
748743
749744#~ msgid "Please re-enter"
750745#~ msgstr "請再輸入"
751746
747+#~ msgid "Unlock SIM"
748+#~ msgstr "解鎖 SIM 卡"
749+
752750#~ msgid "Welcome to your Ubuntu phone."
753751#~ msgstr "歡迎使用您的 Ubuntu 手機。"
754752
qml/Components/EdgeBarrier.qml+1−1
@@ -105,7 +105,7 @@ Item {
105105 },
106106 Transition {
107107 from: "resisting"; to: "passed"
108− UbuntuNumberAnimation { target: materialContainer; property: "opacity" }
108+ UbuntuNumberAnimation { duration: UbuntuAnimation.BriskDuration; target: materialContainer; property: "opacity" }
109109 }
110110 ]
111111}
qml/Components/Header.qml+1
@@ -18,6 +18,7 @@ import Ubuntu.Components 1.3
1818import Ubuntu.Components.Themes.Ambiance 1.3
1919
2020PageHeadStyle {
21+ // FIXME: Don't use this but PageHeader from Ubuntu.Components 1.3.
2122 id: root
2223
2324 property var styledItem: root
qml/Components/InputMethod.qml+1−9
@@ -22,15 +22,6 @@ import Ubuntu.Gestures 0.1
2222Item {
2323 id: root
2424
25− Connections {
26− target: SurfaceManager
27− onSurfaceCreated: {
28− if (surface.type == Mir.InputMethodType) {
29− surfaceItem.surface = surface;
30− }
31− }
32− }
33−
3425 property int transitionDuration: UbuntuAnimation.FastDuration
3526
3627 MirSurfaceItem {
@@ -41,6 +32,7 @@ Item {
4132
4233 surfaceWidth: width
4334 surfaceHeight: height
35+ surface: SurfaceManager.inputMethodSurface
4436
4537 onLiveChanged: {
4638 if (surface !== null && !live) {
qml/Components/Lockscreen.qml+80−94
@@ -121,108 +121,94 @@ Showable {
121121 opacity: root.darkenBackground
122122 }
123123
124− MouseArea {
125− anchors.fill: root
126− onClicked: {
127− if (pinPadLoader.item)
128− pinPadLoader.item.forceActiveFocus()
129− }
130− }
131−
132− FocusScope {
133− id: loaderScope
124+ Loader {
125+ id: pinPadLoader
126+ objectName: "pinPadLoader"
134127 anchors.fill: parent
135−
136− Loader {
137− id: pinPadLoader
138− objectName: "pinPadLoader"
139− anchors.fill: parent
140− property bool resetting: false
141− property bool waiting: false
142− property bool showWrongText: false
143−
144− source: {
145− if (resetting || !root.required) {
146− return ""
147− } else if (root.delayMinutes > 0) {
148− return "DelayedLockscreen.qml"
149− } else if (root.alphaNumeric) {
150− return "PassphraseLockscreen.qml"
151− } else {
152− return "PinLockscreen.qml"
153− }
154− }
155− onSourceChanged: {
156− waiting = false
157− showWrongText = false
158− if (loaderScope.activeFocus && pinPadLoader.item)
159− pinPadLoader.item.forceActiveFocus()
128+ property bool resetting: false
129+ property bool waiting: false
130+ property bool showWrongText: false
131+ focus: true
132+
133+ source: {
134+ if (resetting || !root.required) {
135+ return ""
136+ } else if (root.delayMinutes > 0) {
137+ return "DelayedLockscreen.qml"
138+ } else if (root.alphaNumeric) {
139+ return "PassphraseLockscreen.qml"
140+ } else {
141+ return "PinLockscreen.qml"
160142 }
143+ }
144+ onSourceChanged: {
145+ waiting = false
146+ showWrongText = false
147+ }
161148
162− Connections {
163− target: pinPadLoader.item
164−
165− onEntered: {
166− pinPadLoader.waiting = true
167− root.entered(passphrase);
168− }
149+ Connections {
150+ target: pinPadLoader.item
169151
170− onCancel: {
171− root.cancel()
172− }
152+ onEntered: {
153+ pinPadLoader.waiting = true
154+ root.entered(passphrase);
173155 }
174156
175− Binding {
176− target: pinPadLoader.item
177− property: "minPinLength"
178− value: root.minPinLength
179− }
180− Binding {
181− target: pinPadLoader.item
182− property: "maxPinLength"
183− value: root.maxPinLength
184− }
185− Binding {
186− target: pinPadLoader.item
187− property: "infoText"
188− value: root.infoText
189− }
190− Binding {
191− target: pinPadLoader.item
192− property: "retryText"
193− value: root.retryText
194− }
195− Binding {
196− target: pinPadLoader.item
197− property: "errorText"
198− value: pinPadLoader.showWrongText ? root.errorText : ""
199− }
200− Binding {
201− target: pinPadLoader.item
202− property: "entryEnabled"
203− value: !pinPadLoader.waiting
204− }
205− Binding {
206− target: pinPadLoader.item
207− property: "alphaNumeric"
208− value: root.alphaNumeric
209− }
210− Binding {
211− target: pinPadLoader.item
212− property: "delayMinutes"
213− value: root.delayMinutes
214− }
215− Binding {
216− target: pinPadLoader.item
217− property: "showCancelButton"
218− value: root.showCancelButton
219− }
220− Binding {
221− target: pinPadLoader.item
222− property: "foregroundColor"
223− value: root.foregroundColor
157+ onCancel: {
158+ root.cancel()
224159 }
225160 }
161+
162+ Binding {
163+ target: pinPadLoader.item
164+ property: "minPinLength"
165+ value: root.minPinLength
166+ }
167+ Binding {
168+ target: pinPadLoader.item
169+ property: "maxPinLength"
170+ value: root.maxPinLength
171+ }
172+ Binding {
173+ target: pinPadLoader.item
174+ property: "infoText"
175+ value: root.infoText
176+ }
177+ Binding {
178+ target: pinPadLoader.item
179+ property: "retryText"
180+ value: root.retryText
181+ }
182+ Binding {
183+ target: pinPadLoader.item
184+ property: "errorText"
185+ value: pinPadLoader.showWrongText ? root.errorText : ""
186+ }
187+ Binding {
188+ target: pinPadLoader.item
189+ property: "entryEnabled"
190+ value: !pinPadLoader.waiting
191+ }
192+ Binding {
193+ target: pinPadLoader.item
194+ property: "alphaNumeric"
195+ value: root.alphaNumeric
196+ }
197+ Binding {
198+ target: pinPadLoader.item
199+ property: "delayMinutes"
200+ value: root.delayMinutes
201+ }
202+ Binding {
203+ target: pinPadLoader.item
204+ property: "showCancelButton"
205+ value: root.showCancelButton
206+ }
207+ Binding {
208+ target: pinPadLoader.item
209+ property: "foregroundColor"
210+ value: root.foregroundColor
211+ }
226212 }
227213
228214 Item {
qml/Components/ModeSwitchWarningDialog.qml+1−1
@@ -54,7 +54,7 @@ ShellDialog {
5454 }
5555
5656 Label {
57− text: i18n.tr("Re-dock, save your work and close these apps to continue.")
57+ text: i18n.ctr("Re-dock means connect the device again to an external screen/mouse/keyboard", "Re-dock, save your work and close these apps to continue.")
5858 wrapMode: Text.WordWrap
5959 color: "#888888"
6060 }
qml/Components/PassphraseLockscreen.qml+5−4
@@ -18,10 +18,11 @@ import QtQuick 2.4
1818import Ubuntu.Components 1.3
1919import "../Components"
2020
21−Item {
21+FocusScope {
2222 id: root
2323 y: units.gu(4)
2424 height: shakeContainer.height
25+ focus: true
2526
2627 property string infoText
2728 property string errorText
@@ -42,8 +43,6 @@ Item {
4243 }
4344 }
4445
45− onActiveFocusChanged: if (activeFocus) pinentryField.forceActiveFocus()
46−
4746 Column {
4847 id: shakeContainer
4948 anchors.horizontalCenter: parent.horizontalCenter
@@ -59,14 +58,16 @@ Item {
5958 text: root.infoText
6059 }
6160
62− Item {
61+ FocusScope {
6362 id: entryContainer
6463 anchors { left: parent.left; right: parent.right; margins: units.gu(2) }
6564 height: units.gu(4)
65+ focus: true
6666
6767 TextInput {
6868 id: pinentryField
6969 objectName: "pinentryField"
70+ focus: true
7071
7172 property bool incorrectOverride: false
7273
qml/Components/PinLockscreen.qml+22−1
@@ -19,8 +19,9 @@ import Ubuntu.Components 1.3
1919import Ubuntu.Components.ListItems 1.3
2020import "../Components"
2121
22−Item {
22+FocusScope {
2323 id: root
24+ focus: true
2425
2526 property string infoText
2627 property string retryText
@@ -45,6 +46,24 @@ Item {
4546 }
4647 }
4748
49+ Keys.onPressed: {
50+ if (pinentryField.text.length == root.maxPinLength)
51+ return;
52+
53+ if (event.key === Qt.Key_Backspace) {
54+ pinentryField.backspace();
55+ } else if (event.key === Qt.Key_Delete || event.key === Qt.Key_Escape) {
56+ closeButton.clicked()
57+ } else if (event.key === Qt.Key_Enter || event.key === Qt.Key_Return) {
58+ confirmButton.clicked()
59+ } else {
60+ var digit = parseInt(event.text);
61+ if (!isNaN(digit) && typeof digit == "number") {
62+ pinentryField.appendNumber(digit);
63+ }
64+ }
65+ }
66+
4867 Column {
4968 anchors {
5069 left: parent.left;
@@ -204,6 +223,7 @@ Item {
204223 width: numbersGrid.buttonWidth
205224 }
206225 PinPadButton {
226+ id: closeButton
207227 iconName: "close"
208228 height: units.gu(5) // visual spec has this row a little closer in
209229 width: numbersGrid.buttonWidth
@@ -216,6 +236,7 @@ Item {
216236 width: numbersGrid.buttonWidth
217237 }
218238 PinPadButton {
239+ id: confirmButton
219240 iconName: "tick"
220241 objectName: "confirmButton"
221242 height: units.gu(5)
qml/Components/ShellDialog.qml+8
@@ -37,7 +37,15 @@ Dialog {
3737
3838 focus: true
3939
40+ // FIXME: this is a hack because Dialog subtheming seems broken atm
41+ // https://bugs.launchpad.net/ubuntu/+source/ubuntu-ui-toolkit/+bug/1555548
42+ ThemeSettings {
43+ id: themeHack
44+ name: "Ubuntu.Components.Themes.Ambiance"
45+ }
46+
4047 Component.onCompleted: {
48+ __foreground.theme = themeHack
4149 show();
4250 }
4351}
qml/Dash/CardCarousel.qml−1
@@ -66,7 +66,6 @@ DashRenderer {
6666 item.cardData = Qt.binding(function() { return model; });
6767 item.fontScale = Qt.binding(function() { return carousel.fontScale; });
6868 item.showHeader = Qt.binding(function() { return loader.explicitlyScaled; });
69− item.titleAlignment = Qt.binding(function() { return cardTool.titleAlignment; });
7069 item.artShapeStyle = "shadow";
7170 item.scopeStyle = cardCarousel.scopeStyle;
7271 }
qml/Dash/CardGrid.qml−1
@@ -70,7 +70,6 @@ DashRenderer {
7070 item.fixedHeaderHeight = Qt.binding(function() { return cardTool.headerHeight; });
7171 item.fixedArtShapeSize = Qt.binding(function() { return cardTool.artShapeSize; });
7272 item.cardData = Qt.binding(function() { return model; });
73− item.titleAlignment = Qt.binding(function() { return cardTool.titleAlignment; });
7473 item.scopeStyle = root.scopeStyle;
7574 item.artShapeStyle = root.artShapeStyle;
7675 item.backgroundShapeStyle = root.backgroundShapeStyle;
qml/Dash/CardHorizontalList.qml−1
@@ -53,7 +53,6 @@ DashRenderer {
5353 item.fixedArtShapeSize = Qt.binding(function() { return cardTool.artShapeSize; });
5454 item.fixedHeaderHeight = Qt.binding(function() { return cardTool.headerHeight; });
5555 item.cardData = Qt.binding(function() { return model; });
56− item.titleAlignment = Qt.binding(function() { return cardTool.titleAlignment; });
5756 item.scopeStyle = root.scopeStyle;
5857 }
5958 Connections {
qml/Dash/CardTool.qml+2−26
@@ -66,7 +66,7 @@ Item {
6666 return layout;
6767 }
6868
69− property var cardComponent: CardCreatorCache.getCardComponent(cardTool.template, cardTool.components);
69+ property var cardComponent: CardCreatorCache.getCardComponent(cardTool.template, cardTool.components, false);
7070
7171 // FIXME: Saviq
7272 // Only way for the card below to actually be laid out completely.
@@ -139,29 +139,6 @@ Item {
139139 readonly property int headerHeight: cardLoader.item ? cardLoader.item.headerHeight : 0
140140 property size artShapeSize: cardLoader.item ? cardLoader.item.artShapeSize : 0
141141
142− /*!
143− \brief Desired alignment of title
144− */
145− readonly property int titleAlignment: {
146− if (template["card-layout"] === "horizontal"
147− || typeof components["title"] !== "object"
148− || components["title"]["align"] === "left") return Text.AlignLeft;
149−
150− var keys = ["mascot", "emblem", "subtitle", "attributes", "summary"];
151−
152− for (var key in keys) {
153− key = keys[key];
154− try {
155− if (typeof components[key] === "string"
156− || typeof components[key]["field"] === "string") return Text.AlignLeft;
157− } catch (e) {
158− continue;
159− }
160− }
161−
162− return Text.AlignHCenter;
163− }
164−
165142 QtObject {
166143 id: carouselTool
167144
@@ -216,10 +193,9 @@ Item {
216193 "summary": "—\n—\n—\n—\n—",
217194 "attributes": attributesModel.model
218195 }
219− sourceComponent: cardTool.cardComponent
196+ sourceComponent: CardCreatorCache.getCardComponent(cardTool.template, cardTool.components, true);
220197 onLoaded: {
221198 item.objectName = "cardToolCard";
222− item.asynchronous = false;
223199 item.width = Qt.binding(function() { return cardTool.cardWidth !== -1 ? cardTool.cardWidth : item.implicitWidth; });
224200 item.height = Qt.binding(function() { return cardTool.cardHeight !== -1 ? cardTool.cardHeight : item.implicitHeight; });
225201 }
qml/Dash/CardVerticalJournal.qml−1
@@ -72,7 +72,6 @@ DashRenderer {
7272 item.fixedArtShapeSize = Qt.binding(function() { return cardTool.artShapeSize; });
7373 item.fixedHeaderHeight = Qt.binding(function() { return cardTool.headerHeight; });
7474 item.cardData = Qt.binding(function() { return model; });
75− item.titleAlignment = Qt.binding(function() { return cardTool.titleAlignment; });
7675 item.scopeStyle = root.scopeStyle;
7776 }
7877 Connections {
qml/Dash/Dash.qml+11−11
@@ -37,6 +37,7 @@ Showable {
3737 }
3838
3939 property bool windowActive: window.active
40+ property bool showOverlayScope: false
4041
4142 DashCommunicatorService {
4243 objectName: "dashCommunicatorService"
@@ -80,7 +81,7 @@ Showable {
8081 return
8182 }
8283
83− closeOverlayScope();
84+ dash.showOverlayScope = false;
8485
8586 dashContent.closePreview();
8687
@@ -93,12 +94,6 @@ Showable {
9394 dashContent.setCurrentScopeAtIndex(scopeIndex, animate, reset)
9495 }
9596
96− function closeOverlayScope() {
97− if (dashContent.x != 0) {
98− dashContent.x = 0;
99− }
100− }
101−
10297 Scopes {
10398 id: scopes
10499 }
@@ -133,12 +128,13 @@ Showable {
133128 height: dash.height
134129 scopes: scopes
135130 visible: x != -width
131+ x: dash.showOverlayScope ? -width : 0
136132 onGotoScope: {
137133 dash.setCurrentScope(scopeId, true, false);
138134 }
139135 onOpenScope: {
140136 scopeItem.scope = scope;
141− x = -width;
137+ dash.showOverlayScope = true;
142138 }
143139 Behavior on x {
144140 UbuntuNumberAnimation {
@@ -207,7 +203,7 @@ Showable {
207203 bottomEdgeController.enableAnimation = true;
208204 bottomEdgeController.progress = 0;
209205 scopeItem.scope = scope;
210− dashContent.x = -dashContent.width;
206+ dash.showOverlayScope = true;
211207 }
212208 onGotoScope: {
213209 bottomEdgeController.enableAnimation = true;
@@ -226,7 +222,7 @@ Showable {
226222 id: scopeItem
227223 objectName: "dashTempScopeItem"
228224
229− x: dashContent.x + width
225+ x: dash.showOverlayScope ? 0 : width
230226 y: dashContent.y
231227 width: parent.width
232228 height: parent.height
@@ -234,7 +230,7 @@ Showable {
234230 hasBackAction: true
235231 isCurrent: visible
236232 onBackClicked: {
237− closeOverlayScope();
233+ dash.showOverlayScope = false;
238234 closePreview();
239235 }
240236
@@ -250,6 +246,10 @@ Showable {
250246 scopes.closeScope(oldScope);
251247 }
252248 }
249+
250+ Behavior on x {
251+ UbuntuNumberAnimation { }
252+ }
253253 }
254254
255255 Rectangle {
qml/Dash/DashPageHeader.qml+4
@@ -170,6 +170,7 @@ Item {
170170 anchors { left: parent.left; right: parent.right }
171171
172172 PageHeadStyle {
173+ // FIXME: Replace PageHeadStyle from the Ambiance theme by the new PageHeader from Ubuntu.Components 1.3.
173174 id: searchHeader
174175 anchors { left: parent.left; right: parent.right }
175176 opacity: headerContainer.clip || headerContainer.showSearch ? 1 : 0 // setting visible false cause column to relayout
@@ -179,6 +180,7 @@ Item {
179180 property color dividerColor: "transparent" // Doesn't matter as we don't have PageHeadSections
180181 property color panelColor: background.topColor
181182 panelForegroundColor: config.foregroundColor
183+ backgroundColor: "transparent"
182184 config: PageHeadConfiguration {
183185 foregroundColor: root.scopeStyle ? root.scopeStyle.headerForeground : theme.palette.normal.baseText
184186 backAction: Action {
@@ -241,6 +243,7 @@ Item {
241243 }
242244
243245 PageHeadStyle {
246+ // FIXME: Replace PageHeadStyle from the Ambiance theme by the new PageHeader from Ubuntu.Components 1.3.
244247 id: header
245248 objectName: "innerPageHeader"
246249 anchors { left: parent.left; right: parent.right }
@@ -251,6 +254,7 @@ Item {
251254 property color dividerColor: "transparent" // Doesn't matter as we don't have PageHeadSections
252255 property color panelColor: background.topColor
253256 panelForegroundColor: config.foregroundColor
257+ backgroundColor: "transparent"
254258 config: PageHeadConfiguration {
255259 title: root.title
256260 foregroundColor: root.scopeStyle ? root.scopeStyle.headerForeground : theme.palette.normal.baseText
qml/Dash/GenericScopeView.qml+16−42
@@ -47,7 +47,7 @@ FocusScope {
4747 style: scope ? scope.customizations : {}
4848 }
4949
50− readonly property bool processing: scope ? scope.searchInProgress || subPageLoader.processing : false
50+ readonly property bool processing: scope ? (scope.searchInProgress || scope.activationInProgress || subPageLoader.processing) : false
5151
5252 signal backClicked()
5353
@@ -73,49 +73,30 @@ FocusScope {
7373 }
7474
7575 property var maybePreviewResult;
76− property int maybePreviewIndex;
77− property var maybePreviewResultsModel;
78− property int maybePreviewLimitedCategoryItemCount;
7976 property string maybePreviewCategoryId;
8077
8178 function clearMaybePreviewData() {
8279 scopeView.maybePreviewResult = undefined;
83− scopeView.maybePreviewIndex = -1;
84− scopeView.maybePreviewResultsModel = undefined;
85− scopeView.maybePreviewLimitedCategoryItemCount = -1;
8680 scopeView.maybePreviewCategoryId = "";
8781 }
8882
89− function itemClicked(index, result, itemModel, resultsModel, limitedCategoryItemCount, categoryId) {
83+ function itemClicked(result, categoryId) {
9084 scopeView.maybePreviewResult = result;
91− scopeView.maybePreviewIndex = index;
92− scopeView.maybePreviewResultsModel = resultsModel;
93− scopeView.maybePreviewLimitedCategoryItemCount = limitedCategoryItemCount;
9485 scopeView.maybePreviewCategoryId = categoryId;
9586
9687 scope.activate(result, categoryId);
9788 }
9889
99− function itemPressedAndHeld(index, result, resultsModel, limitedCategoryItemCount, categoryId) {
90+ function itemPressedAndHeld(result, categoryId) {
10091 clearMaybePreviewData();
10192
102− openPreview(result, index, resultsModel, limitedCategoryItemCount, categoryId);
93+ openPreview(result, categoryId);
10394 }
10495
105− function openPreview(result, index, resultsModel, limitedCategoryItemCount, categoryId) {
106− var previewStack = scope.preview(result, categoryId);
107− if (previewStack) {
108− if (limitedCategoryItemCount > 0) {
109− previewLimitModel.model = resultsModel;
110− previewLimitModel.limit = limitedCategoryItemCount;
111− subPageLoader.model = previewLimitModel;
112− } else {
113− subPageLoader.model = resultsModel;
114− }
115− subPageLoader.initialIndex = -1;
116− subPageLoader.initialIndex = index;
117− subPageLoader.categoryId = categoryId;
118− subPageLoader.previewStack = previewStack;
96+ function openPreview(result, categoryId) {
97+ var previewModel = scope.preview(result, categoryId);
98+ if (previewModel) {
99+ subPageLoader.previewModel = previewModel;
119100 subPageLoader.openSubPage("preview");
120101 }
121102 }
@@ -166,9 +147,6 @@ FocusScope {
166147 onPreviewRequested: { // (QVariant const& result)
167148 if (result === scopeView.maybePreviewResult) {
168149 openPreview(result,
169− scopeView.maybePreviewIndex,
170− scopeView.maybePreviewResultsModel,
171− scopeView.maybePreviewLimitedCategoryItemCount,
172150 scopeView.maybePreviewCategoryId);
173151
174152 clearMaybePreviewData();
@@ -392,6 +370,8 @@ FocusScope {
392370 } else {
393371 cardTool.cardWidth = units.gu(10);
394372 }
373+ } else {
374+ cardTool.cardWidth = units.gu(12);
395375 }
396376 item.minimumHorizontalSpacing = item.defaultMinimumHorizontalSpacing;
397377 }
@@ -400,11 +380,11 @@ FocusScope {
400380 Connections {
401381 target: rendererLoader.item
402382 onClicked: { // (int index, var result, var item, var itemModel)
403− scopeView.itemClicked(index, result, itemModel, target.model, categoryItemCount(), baseItem.category);
383+ scopeView.itemClicked(result, baseItem.category);
404384 }
405385
406386 onPressAndHold: { // (int index, var result, var itemModel)
407− scopeView.itemPressedAndHeld(index, result, target.model, categoryItemCount(), baseItem.category);
387+ scopeView.itemPressedAndHeld(result, baseItem.category);
408388 }
409389
410390 function categoryItemCount() {
@@ -779,13 +759,10 @@ FocusScope {
779759 property var scope: scopeView.scope
780760 property var scopeStyle: scopeView.scopeStyle
781761 property int initialIndex: -1
782− property var previewStack;
783− property string categoryId
784− property var model: null
762+ property var previewModel;
785763
786764 readonly property bool processing: item && item.processing || false
787765 readonly property int count: item && item.count || 0
788− readonly property int currentIndex: item && item.currentIndex || 0
789766 readonly property var currentItem: item && item.currentItem || null
790767
791768 property string subPage: ""
@@ -800,7 +777,7 @@ FocusScope {
800777 }
801778
802779 source: switch(subPage) {
803− case "preview": return "PreviewListView.qml";
780+ case "preview": return "PreviewView.qml";
804781 case "settings": return "ScopeSettingsPage.qml";
805782 default: return "";
806783 }
@@ -810,11 +787,8 @@ FocusScope {
810787 item.scopeStyle = Qt.binding(function() { return subPageLoader.scopeStyle; } )
811788 if (subPage == "preview") {
812789 item.open = Qt.binding(function() { return subPageLoader.open; } )
813− item.initialIndex = Qt.binding(function() { return subPageLoader.initialIndex; } )
814− item.model = Qt.binding(function() { return subPageLoader.model; } )
815− item.categoryId = Qt.binding(function() { return subPageLoader.categoryId; } )
816− item.initialIndexPreviewStack = subPageLoader.previewStack;
817− subPageLoader.previewStack = null;
790+ item.previewModel = subPageLoader.previewModel;
791+ subPageLoader.previewModel = null;
818792 }
819793 open = true;
820794 }
qml/Dash/PreviewListView.qmldeleted−140
@@ -1,140 +0,0 @@
1−/*
2− * Copyright (C) 2013 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.4
18−import Ubuntu.Components 1.3
19−import Unity 0.2
20−import "../Components"
21−import "Previews" as Previews
22−
23−Item {
24− id: root
25−
26− property int initialIndex: -1
27− property var initialIndexPreviewStack: null
28− property var scope: null
29− property var scopeStyle: null
30− property string categoryId
31− property bool usedInitialIndex: false
32−
33− property alias showSignatureLine: header.showSignatureLine
34−
35− property alias open: previewListView.open
36− property alias model: previewListView.model
37− property alias currentIndex: previewListView.currentIndex
38− property alias currentItem: previewListView.currentItem
39− property alias count: previewListView.count
40−
41− readonly property bool processing: currentItem && (!currentItem.previewModel.loaded
42− || currentItem.previewModel.processingAction)
43−
44− signal backClicked()
45−
46− DashPageHeader {
47− id: header
48− objectName: "pageHeader"
49− width: parent.width
50− title: root.scope ? root.scope.name : ""
51− showBackButton: true
52− searchEntryEnabled: false
53− scopeStyle: root.scopeStyle
54−
55− onBackClicked: root.backClicked()
56− }
57−
58− ListView {
59− id: previewListView
60− objectName: "listView"
61− anchors {
62− top: header.bottom
63− bottom: parent.bottom
64− left: parent.left
65− right: parent.right
66− }
67− orientation: ListView.Horizontal
68− highlightRangeMode: ListView.StrictlyEnforceRange
69− snapMode: ListView.SnapOneItem
70− boundsBehavior: Flickable.DragAndOvershootBounds
71− highlightMoveDuration: 250
72− flickDeceleration: units.gu(625)
73− maximumFlickVelocity: width * 5
74− cacheBuffer: 0
75−
76− property bool open: false
77−
78− onOpenChanged: {
79− if (!open) {
80− // Cancel any pending preview requests or actions
81− if (previewListView.currentItem && previewListView.currentItem.previewData !== undefined) {
82− previewListView.currentItem.previewData.cancelAction();
83− }
84− root.scope.cancelActivation();
85− model = undefined;
86− }
87− }
88−
89− onModelChanged: {
90− if (count > 0 && initialIndex >= 0 && !usedInitialIndex) {
91− usedInitialIndex = true;
92− previewListView.positionViewAtIndex(initialIndex, ListView.SnapPosition);
93− }
94− }
95−
96− delegate: Previews.Preview {
97− id: preview
98− objectName: "preview" + index
99− height: previewListView.height
100− width: previewListView.width
101−
102− isCurrent: ListView.isCurrentItem
103−
104− readonly property var previewStack: {
105− if (root.open) {
106− if (index === root.initialIndex) {
107− return root.initialIndexPreviewStack;
108− } else {
109− return root.scope.preview(result, root.categoryId);
110− }
111− } else {
112− return null;
113− }
114− }
115−
116− previewModel: {
117− if (previewStack) {
118− return previewStack.getPreviewModel(0);
119− } else {
120− return null;
121− }
122− }
123−
124− scopeStyle: root.scopeStyle
125− }
126− }
127−
128− MouseArea {
129− id: processingMouseArea
130− objectName: "processingMouseArea"
131− anchors {
132− left: parent.left
133− right: parent.right
134− top: header.bottom
135− bottom: parent.bottom
136− }
137−
138− enabled: root.processing
139− }
140−}
qml/Dash/PreviewView.qmlnew file+76
@@ -0,0 +1,76 @@
1+/*
2+ * Copyright (C) 2013 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+import Ubuntu.Components 1.3
19+import Unity 0.2
20+import "../Components"
21+import "Previews" as Previews
22+
23+Item {
24+ id: root
25+
26+ property bool open: false
27+ property var scope: null
28+ property var scopeStyle: null
29+ property alias showSignatureLine: header.showSignatureLine
30+ property alias previewModel: preview.previewModel
31+ readonly property bool processing: previewModel && (!previewModel.loaded || previewModel.processingAction)
32+
33+ signal backClicked()
34+
35+ DashPageHeader {
36+ id: header
37+ objectName: "pageHeader"
38+ width: parent.width
39+ title: root.scope ? root.scope.name : ""
40+ showBackButton: true
41+ searchEntryEnabled: false
42+ scopeStyle: root.scopeStyle
43+
44+ onBackClicked: root.backClicked()
45+ }
46+
47+ onOpenChanged: {
48+ if (!open) {
49+ root.scope.cancelActivation();
50+ }
51+ }
52+
53+ Previews.Preview {
54+ id: preview
55+ objectName: "preview"
56+ anchors {
57+ top: header.bottom
58+ bottom: parent.bottom
59+ left: parent.left
60+ right: parent.right
61+ }
62+ scopeStyle: root.scopeStyle
63+ }
64+
65+ MouseArea {
66+ id: processingMouseArea
67+ objectName: "processingMouseArea"
68+ anchors {
69+ top: header.bottom
70+ bottom: parent.bottom
71+ left: parent.left
72+ right: parent.right
73+ }
74+ enabled: root.processing
75+ }
76+}
qml/Dash/Previews/Preview.qml−4
@@ -34,9 +34,6 @@ Item {
3434 */
3535 property var previewModel
3636
37− //! \brief Should be set to true if this preview is currently displayed.
38− property bool isCurrent: false
39−
4037 //! \brief The ScopeStyle component.
4138 property var scopeStyle: null
4239
@@ -88,7 +85,6 @@ Item {
8885 widgetId: model.widgetId
8986 widgetType: model.type
9087 widgetData: model.properties
91− isCurrentPreview: root.isCurrent
9288 scopeStyle: root.scopeStyle
9389 parentFlickable: column
9490
qml/Dash/Previews/PreviewAudioPlayback.qml+5−1
@@ -85,7 +85,11 @@ PreviewWidget {
8585 DashAudioPlayer.play();
8686 }
8787 } else {
88− DashAudioPlayer.playSource(sourceUrl);
88+ var playlist = [];
89+ for (var i = 0; i < trackRepeater.count; ++i) {
90+ playlist.push(trackRepeater.itemAt(i).sourceUrl);
91+ }
92+ DashAudioPlayer.playSource(sourceUrl, playlist);
8993 }
9094 }
9195 }
qml/Dash/Previews/PreviewExpandable.qml−1
@@ -84,7 +84,6 @@ PreviewWidget {
8484 widgetId: model.widgetId
8585 widgetType: model.type
8686 widgetData: model.properties
87− isCurrentPreview: root.isCurrentPreview
8887 scopeStyle: root.scopeStyle
8988 anchors {
9089 left: parent.left
qml/Dash/Previews/PreviewHeader.qml+37−9
@@ -25,6 +25,7 @@ import "../"
2525 * The mascot fall back image comes in widgetData["fallback"]
2626 * The subtitle comes in widgetData["subtitle"]
2727 * The attributes comes in widgetData["attributes"]
28+ * The emblem comes in widgetData["emblem"]
2829 */
2930
3031PreviewWidget {
@@ -40,6 +41,7 @@ PreviewWidget {
4041 readonly property string title: root.widgetData["title"] || ""
4142 readonly property string subtitle: root.widgetData["subtitle"] || ""
4243 readonly property var attributes: root.widgetData["attributes"] || null
44+ readonly property url emblem: root.widgetData["emblem"] || ""
4345 readonly property color fontColor: root.scopeStyle ? root.scopeStyle.foreground : theme.palette.normal.baseText
4446
4547 // Rewire the source since we may have unwired it on onStatusChanged
@@ -98,16 +100,42 @@ PreviewWidget {
98100 spacing: units.dp(2)
99101 anchors.verticalCenter: parent.verticalCenter
100102
101− Label {
102− id: titleLabel
103− objectName: "titleLabel"
103+ Item {
104104 anchors { left: parent.left; right: parent.right }
105− elide: Text.ElideRight
106− font.weight: Font.Normal
107− fontSize: "large"
108− wrapMode: Text.Wrap
109− color: headerRoot.fontColor
110− text: headerRoot.title
105+ height: titleLabel.height
106+
107+ Label {
108+ id: titleLabel
109+ objectName: "titleLabel"
110+ anchors {
111+ left: parent.left;
112+ right: iconLoader.right
113+ rightMargin: iconLoader.width > 0 ? units.gu(0.5) : 0
114+ }
115+ elide: Text.ElideRight
116+ font.weight: Font.Normal
117+ fontSize: "large"
118+ wrapMode: Text.Wrap
119+ color: headerRoot.fontColor
120+ text: headerRoot.title
121+ }
122+
123+ Loader {
124+ id: iconLoader
125+ active: headerRoot.emblem != ""
126+ anchors {
127+ bottom: titleLabel.baseline
128+ right: parent.right
129+ }
130+ sourceComponent: Icon {
131+ objectName: "emblemIcon"
132+ source: headerRoot.emblem
133+ color: headerRoot.fontColor
134+ height: source != "" ? titleLabel.font.pixelSize : 0
135+ // FIXME Workaround for bug https://bugs.launchpad.net/ubuntu/+source/ubuntu-ui-toolkit/+bug/1421293
136+ width: implicitWidth > 0 && implicitHeight > 0 ? (implicitWidth / implicitHeight * height) : implicitWidth
137+ }
138+ }
111139 }
112140
113141 Loader {
qml/Dash/Previews/PreviewOverlay.qml+1−1
@@ -158,7 +158,7 @@ Rectangle {
158158 anchors.centerIn: parent
159159 width: units.gu(2.5)
160160 height: width
161− color: theme.palette.normal.foregroundText
161+ color: "white"
162162 name: "close"
163163 }
164164 }
qml/Dash/Previews/PreviewPayments.qml+1−3
@@ -65,9 +65,7 @@ PreviewWidget {
6565 }
6666 onPurchaseCancelled: {
6767 paymentButton.opacity = 1;
68− // DO NOT emit the signal right now, as it causes a new
69− // preview to be requested, when that is not what we want.
70− //root.triggered(widgetId, "purchaseCancelled", source);
68+ root.triggered(widgetId, "purchaseCancelled", source);
7169 }
7270 }
7371 }
qml/Dash/Previews/PreviewRatingDisplay.qml−1
@@ -40,7 +40,6 @@ PreviewWidget {
4040 id: root
4141 implicitHeight: childrenRect.height
4242
43− onIsCurrentPreviewChanged: ratingsList.updateRanges();
4443 onParentFlickableChanged: ratingsList.updateRanges();
4544
4645 Connections {
qml/Dash/Previews/PreviewRatingEdit.qml−1
@@ -68,7 +68,6 @@ PreviewWidget {
6868
6969 widgetId: root.widgetId
7070 widgetData: root.widgetData
71− isCurrentPreview: root.isCurrentPreview
7271 scopeStyle: root.scopeStyle
7372
7473 ratingValue: widgetData["rating"]
qml/Dash/Previews/PreviewSharing.qml+17−7
@@ -44,6 +44,22 @@ Item {
4444 }
4545 }
4646
47+ function createExportedItems(url) {
48+ var items = new Array();
49+ if (typeof url === "string") {
50+ var exportItem = exportItemComponent.createObject();
51+ exportItem.url = url;
52+ items.push(exportItem);
53+ } else {
54+ for (var i = 0; i < url.length; i++) {
55+ var exportItem = exportItemComponent.createObject();
56+ exportItem.url = url[i];
57+ items.push(exportItem);
58+ }
59+ }
60+ return items;
61+ }
62+
4763 Component {
4864 id: exportItemComponent
4965 ContentItem {
@@ -76,13 +92,7 @@ Item {
7692 onPeerSelected: {
7793 var transfer = peer.request();
7894 if (transfer.state === ContentTransfer.InProgress) {
79− var items = new Array();
80− for (var i = 0; i < url.length; i++) {
81− var exportItem = exportItemComponent.createObject();
82− exportItem.url = url[i];
83− items.push(exportItem);
84− }
85− transfer.items = items;
95+ transfer.items = createExportedItems(url);
8696 transfer.state = ContentTransfer.Charged;
8797 }
8898 peerPicker.visible = false;
qml/Dash/Previews/PreviewWidget.qml−3
@@ -19,9 +19,6 @@ import QtQuick 2.4
1919/*! Interface for preview widgets. */
2020
2121Item {
22− //! Specifies the preview widget being currently used or not
23− property bool isCurrentPreview: true
24−
2522 //! The widget identifier
2623 property string widgetId
2724
qml/Dash/Previews/PreviewWidgetFactory.qml−4
@@ -37,9 +37,6 @@ Loader {
3737 //! Should the widget show in expanded mode (For those that support it)
3838 property bool expanded: widgetType !== "expandable" || widgetData["expanded"] === true
3939
40− //! Set to true if the parent preview is displayed.
41− property bool isCurrentPreview: false
42−
4340 //! Set margins width.
4441 property real widgetMargins: status === Loader.Ready ? item.widgetMargins : units.gu(1)
4542
@@ -82,7 +79,6 @@ Loader {
8279 onLoaded: {
8380 item.widgetId = Qt.binding(function() { return root.widgetId } )
8481 item.widgetData = Qt.binding(function() { return root.widgetData } )
85− item.isCurrentPreview = Qt.binding(function() { return root.isCurrentPreview } )
8682 item.expanded = Qt.binding(function() { return root.expanded } )
8783 item.scopeStyle = Qt.binding(function() { return root.scopeStyle } )
8884 item.parentFlickable = Qt.binding(function() { return root.parentFlickable } )
qml/Dash/ScopesList.qml+1−1
@@ -24,7 +24,7 @@ Item {
2424 property var scope: null
2525
2626 // Properties used by parent
27− readonly property bool processing: scope ? scope.searchInProgress : false
27+ readonly property bool processing: scope ? (scope.searchInProgress || scope.activationInProgress) : false
2828
2929 // Signals
3030 signal backClicked()
qml/Dash/ScopesListCategoryItem.qml+8−4
@@ -18,7 +18,7 @@ import QtQuick 2.4
1818import QtQuick.Layouts 1.1
1919import Ubuntu.Components 1.3
2020
21−MouseArea {
21+AbstractButton {
2222 id: root
2323
2424 signal requestFavorite(string scopeId, bool favorite)
@@ -84,15 +84,19 @@ MouseArea {
8484 visible: text != ""
8585 }
8686 }
87− MouseArea {
87+ AbstractButton {
8888 id: starArea
8989 objectName: "starArea"
9090 height: parent.height
9191 width: height
9292 anchors.right: parent.right
9393 onClicked: if (!editMode) root.requestFavorite(model.scopeId, !isFavorite);
94− onPressed: if (editMode) root.handlePressed(starArea);
95− onReleased: if (editMode) root.handleReleased(starArea);
94+ onPressedChanged: {
95+ if (editMode) {
96+ if (pressed) root.handlePressed(starArea.__mouseArea);
97+ else root.handleReleased(starArea.__mouseArea);
98+ }
99+ }
96100 visible: editMode || showStar
97101 Icon {
98102 id: star
qml/DeviceConfiguration.qml+54−16
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2015 Canonical, Ltd.
2+ * Copyright (C) 2015-2016 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,6 +15,7 @@
1515 */
1616
1717import QtQuick 2.4
18+import Utils 0.1
1819
1920QtObject {
2021 id: root
@@ -34,57 +35,83 @@ QtObject {
3435
3536 readonly property alias category: priv.category
3637
38+ readonly property var deviceConfigParser: DeviceConfigParser {
39+ name: root.name
40+ }
41+
3742 readonly property var priv: StateGroup {
3843 id: priv
3944
40− property int primaryOrientation: root.useNativeOrientation
45+ property int primaryOrientation: deviceConfigParser.primaryOrientation == Qt.PrimaryOrientation ?
46+ root.useNativeOrientation : deviceConfigParser.primaryOrientation
4147
42− property int supportedOrientations: Qt.PortraitOrientation
43− | Qt.InvertedPortraitOrientation
44− | Qt.LandscapeOrientation
45− | Qt.InvertedLandscapeOrientation
48+ property int supportedOrientations: deviceConfigParser.supportedOrientations
4649
47− property int landscapeOrientation: Qt.LandscapeOrientation
48− property int invertedLandscapeOrientation: Qt.InvertedLandscapeOrientation
49− property int portraitOrientation: Qt.PortraitOrientation
50− property int invertedPortraitOrientation: Qt.InvertedPortraitOrientation
51−
52− // Supported values so far:
53− // "phone", "tablet" or "desktop"
54− property string category: "phone"
50+ property int landscapeOrientation: deviceConfigParser.landscapeOrientation
51+ property int invertedLandscapeOrientation: deviceConfigParser.invertedLandscapeOrientation
52+ property int portraitOrientation: deviceConfigParser.portraitOrientation
53+ property int invertedPortraitOrientation: deviceConfigParser.invertedPortraitOrientation
54+ property string category: deviceConfigParser.category
5555
5656 states: [
5757 State {
5858 name: "mako"
5959 PropertyChanges {
6060 target: priv
61+ primaryOrientation: root.useNativeOrientation
6162 supportedOrientations: Qt.PortraitOrientation
6263 | Qt.LandscapeOrientation
6364 | Qt.InvertedLandscapeOrientation
65+ landscapeOrientation: Qt.LandscapeOrientation
66+ invertedLandscapeOrientation: Qt.InvertedLandscapeOrientation
67+ portraitOrientation: Qt.PortraitOrientation
68+ invertedPortraitOrientation: Qt.InvertedPortraitOrientation
69+ category: "phone"
6470 }
6571 },
6672 State {
6773 name: "krillin"
6874 PropertyChanges {
6975 target: priv
76+ primaryOrientation: root.useNativeOrientation
7077 supportedOrientations: Qt.PortraitOrientation
7178 | Qt.LandscapeOrientation
7279 | Qt.InvertedLandscapeOrientation
80+ landscapeOrientation: Qt.LandscapeOrientation
81+ invertedLandscapeOrientation: Qt.InvertedLandscapeOrientation
82+ portraitOrientation: Qt.PortraitOrientation
83+ invertedPortraitOrientation: Qt.InvertedPortraitOrientation
84+ category: "phone"
7385 }
7486 },
7587 State {
7688 name: "arale"
7789 PropertyChanges {
7890 target: priv
91+ primaryOrientation: root.useNativeOrientation
7992 supportedOrientations: Qt.PortraitOrientation
8093 | Qt.LandscapeOrientation
8194 | Qt.InvertedLandscapeOrientation
95+ landscapeOrientation: Qt.LandscapeOrientation
96+ invertedLandscapeOrientation: Qt.InvertedLandscapeOrientation
97+ portraitOrientation: Qt.PortraitOrientation
98+ invertedPortraitOrientation: Qt.InvertedPortraitOrientation
99+ category: "phone"
82100 }
83101 },
84102 State {
85103 name: "manta"
86104 PropertyChanges {
87105 target: priv
106+ primaryOrientation: root.useNativeOrientation
107+ supportedOrientations: Qt.PortraitOrientation
108+ | Qt.InvertedPortraitOrientation
109+ | Qt.LandscapeOrientation
110+ | Qt.InvertedLandscapeOrientation
111+ landscapeOrientation: Qt.LandscapeOrientation
112+ invertedLandscapeOrientation: Qt.InvertedLandscapeOrientation
113+ portraitOrientation: Qt.PortraitOrientation
114+ invertedPortraitOrientation: Qt.InvertedPortraitOrientation
88115 category: "tablet"
89116 }
90117 },
@@ -92,9 +119,15 @@ QtObject {
92119 name: "flo"
93120 PropertyChanges {
94121 target: priv
122+ primaryOrientation: Qt.InvertedLandscapeOrientation
123+ supportedOrientations: Qt.PortraitOrientation
124+ | Qt.InvertedPortraitOrientation
125+ | Qt.LandscapeOrientation
126+ | Qt.InvertedLandscapeOrientation
95127 landscapeOrientation: Qt.InvertedLandscapeOrientation
96128 invertedLandscapeOrientation: Qt.LandscapeOrientation
97− primaryOrientation: Qt.InvertedLandscapeOrientation
129+ portraitOrientation: Qt.PortraitOrientation
130+ invertedPortraitOrientation: Qt.InvertedPortraitOrientation
98131 category: "tablet"
99132 }
100133 },
@@ -102,8 +135,13 @@ QtObject {
102135 name: "desktop"
103136 PropertyChanges {
104137 target: priv
105− category: "desktop"
138+ primaryOrientation: root.useNativeOrientation
106139 supportedOrientations: root.useNativeOrientation
140+ landscapeOrientation: Qt.LandscapeOrientation
141+ invertedLandscapeOrientation: Qt.InvertedLandscapeOrientation
142+ portraitOrientation: Qt.PortraitOrientation
143+ invertedPortraitOrientation: Qt.InvertedPortraitOrientation
144+ category: "desktop"
107145 }
108146 }
109147 ]
qml/DisabledScreenNotice.qml+44−20
@@ -17,6 +17,7 @@
1717import QtQuick 2.4
1818import QtQuick.Layouts 1.1
1919import Ubuntu.Components 1.3
20+import Unity.Session 0.1
2021import QtQuick.Window 2.2
2122import "Components"
2223
@@ -25,19 +26,36 @@ Item {
2526
2627 property bool infoNoteDisplayed: true
2728
28− WallpaperResolver {
29− width: root.width
30− id: wallpaperResolver
29+ // For testing
30+ property var screen: Screen
31+ property var orientationLock: OrientationLock
32+
33+ DeviceConfiguration {
34+ id: deviceConfiguration
35+ name: applicationArguments.deviceName
3136 }
3237
3338 Item {
3439 id: contentContainer
40+ objectName: "contentContainer"
3541 anchors.centerIn: parent
3642 height: rotation == 90 || rotation == 270 ? parent.width : parent.height
3743 width: rotation == 90 || rotation == 270 ? parent.height : parent.width
3844
45+ property int savedOrientation: deviceConfiguration.primaryOrientation == deviceConfiguration.useNativeOrientation
46+ ? (root.width > root.height ? Qt.LandscapeOrientation : Qt.PortraitOrientation)
47+ : deviceConfiguration.primaryOrientation
48+
3949 rotation: {
40− switch (Screen.orientation) {
50+ var usedOrientation = root.screen.orientation;
51+
52+ if (root.orientationLock.enabled) {
53+ usedOrientation = savedOrientation;
54+ }
55+
56+ savedOrientation = usedOrientation;
57+
58+ switch (usedOrientation) {
4159 case Qt.PortraitOrientation:
4260 return 0;
4361 case Qt.LandscapeOrientation:
@@ -47,6 +65,8 @@ Item {
4765 case Qt.InvertedLandscapeOrientation:
4866 return 90;
4967 }
68+
69+ return 0;
5070 }
5171 transformOrigin: Item.Center
5272
@@ -60,9 +80,9 @@ Item {
6080 }
6181 }
6282
63− Image {
83+ Rectangle {
6484 anchors.fill: parent
65− source: wallpaperResolver.background
85+ color: "#3b3b3b"
6686 }
6787
6888 Item {
@@ -74,22 +94,26 @@ Item {
7494 UbuntuNumberAnimation { }
7595 }
7696
77− Rectangle {
78− anchors.fill: parent
79− color: "black"
80− opacity: 0.4
81− }
82−
83− Label {
84− id: text
97+ Column {
8598 anchors.centerIn: parent
8699 width: parent.width - units.gu(8)
87− text: i18n.tr("Your device is now connected to an external display. Use this screen as a touch pad to interact with the mouse.")
88− color: "white"
89− horizontalAlignment: Text.AlignHCenter
90− verticalAlignment: Text.AlignVCenter
91− fontSize: "x-large"
92− wrapMode: Text.Wrap
100+ spacing: units.gu(4)
101+
102+ Label {
103+ id: text
104+ text: i18n.tr("Your device is now connected to an external display. Use this screen as a touch pad to interact with the pointer.")
105+ color: "white"
106+ width: parent.width
107+ fontSize: "large"
108+ wrapMode: Text.Wrap
109+ }
110+ Icon {
111+ height: units.gu(8)
112+ width: height
113+ name: "input-touchpad-symbolic"
114+ color: "white"
115+ anchors.horizontalCenter: parent.horizontalCenter
116+ }
93117 }
94118 }
95119
qml/Greeter/CoverPage.qml+13−2
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2013,2014,2015 Canonical, Ltd.
2+ * Copyright (C) 2013-2016 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
@@ -34,6 +34,7 @@ Showable {
3434 readonly property real showProgress: MathUtils.clamp((width - Math.abs(x)) / width, 0, 1)
3535
3636 signal tease()
37+ signal clicked()
3738
3839 function hideRight() {
3940 d.forceRightOnNextHideAnimation = true;
@@ -55,7 +56,17 @@ Showable {
5556 // instead, we can get a little extra horizontal push by using transforms.
5657 transform: Translate { id: translation; x: root.draggable ? launcherOffset : 0 }
5758
58− MouseArea { anchors.fill: parent; }
59+ // Eat events elsewhere on the coverpage, except mouse clicks which we pass
60+ // up (they are used in the NarrowView to hide the cover page)
61+ MouseArea {
62+ anchors.fill: parent
63+ onClicked: root.clicked()
64+
65+ MultiPointTouchArea {
66+ anchors.fill: parent
67+ mouseEnabled: false
68+ }
69+ }
5970
6071 Rectangle {
6172 // In case background fails to load
qml/Greeter/Infographics.qml+2−1
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013-2016 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
@@ -402,6 +402,7 @@ Item {
402402
403403 MouseArea {
404404 anchors.fill: dataCircle
405+ enabled: notification.text != ""
405406
406407 onDoubleClicked: {
407408 if (!d.animating) {
qml/Greeter/NarrowView.qml+14−1
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2015 Canonical, Ltd.
2+ * Copyright (C) 2015-2016 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
@@ -125,6 +125,18 @@ FocusScope {
125125 onCancel: coverPage.show()
126126 onEmergencyCall: root.emergencyCall()
127127
128+ onEnabledChanged: {
129+ if (enabled) {
130+ lockscreen.forceActiveFocus();
131+ }
132+ }
133+
134+ onVisibleChanged: {
135+ if (visible) {
136+ lockscreen.forceActiveFocus();
137+ }
138+ }
139+
128140 function maybeShow() {
129141 if (root.locked && !shown) {
130142 showNow();
@@ -145,6 +157,7 @@ FocusScope {
145157 width: parent.width
146158 background: root.background
147159 onTease: root.tease()
160+ onClicked: hide()
148161
149162 onShowProgressChanged: {
150163 if (showProgress === 1) {
qml/Launcher/Launcher.qml+4−3
@@ -175,7 +175,7 @@ FocusScope {
175175 event.accepted = true;
176176 break;
177177 case Qt.Key_Escape:
178− panel.highlightIndex = -2
178+ panel.highlightIndex = -2;
179179 // Falling through intentionally
180180 case Qt.Key_Enter:
181181 case Qt.Key_Return:
@@ -186,6 +186,7 @@ FocusScope {
186186 launcherApplicationSelected(LauncherModel.get(panel.highlightIndex).appId);
187187 }
188188 root.hide();
189+ panel.highlightIndex = -2
189190 event.accepted = true;
190191 root.focus = false;
191192 }
@@ -328,8 +329,8 @@ FocusScope {
328329 rotation: -90
329330 anchors.centerIn: parent
330331 gradient: Gradient {
331− GradientStop { position: 0.0; color: panel.color}
332− GradientStop { position: 1.0; color: Qt.rgba(panel.r,panel.g,panel.b,0)}
332+ GradientStop { position: 0.0; color: Qt.rgba(panel.color.r, panel.color.g, panel.color.b, .5)}
333+ GradientStop { position: 1.0; color: Qt.rgba(panel.color.r,panel.color.g,panel.color.b,0)}
333334 }
334335 }
335336 }
qml/Launcher/LauncherDelegate.qml+1
@@ -149,6 +149,7 @@ Item {
149149 sourceSize.width: iconShape.width
150150 sourceSize.height: iconShape.height
151151 source: root.iconName
152+ cache: false // see lpbug#1543290 why no cache
152153 }
153154 }
154155
qml/Notifications/Notification.qml+9−5
@@ -23,7 +23,7 @@ import QMenuModel 0.1
2323import Utils 0.1
2424import "../Components"
2525
26−Item {
26+StyledItem {
2727 id: notification
2828
2929 property alias iconSource: icon.fileSource
@@ -58,6 +58,10 @@ Item {
5858 color: (type === Notification.Confirmation && notificationList.useModal && !greeter.shown) || darkOnBright ? sdLightGrey : Qt.rgba(0.132, 0.117, 0.109, 0.97)
5959 opacity: 1 - (x / notification.width) // FIXME: non-zero initially because of LP: #1354406 workaround, we want this to start at 0 upon creation eventually
6060
61+ theme: ThemeSettings {
62+ name: "Ubuntu.Components.Themes.Ambiance"
63+ }
64+
6165 state: {
6266 var result = "";
6367
@@ -281,7 +285,7 @@ Item {
281285 }
282286 visible: type !== Notification.Confirmation
283287 fontSize: "medium"
284− color: darkOnBright ? sdFontColor : theme.palette.selected.backgroundText
288+ color: darkOnBright ? sdFontColor : theme.palette.normal.backgroundText
285289 elide: Text.ElideRight
286290 textFormat: Text.PlainText
287291 }
@@ -296,8 +300,8 @@ Item {
296300 }
297301 visible: body != "" && type !== Notification.Confirmation
298302 fontSize: "small"
299− color: darkOnBright ? sdFontColor : theme.palette.selected.backgroundText
300− wrapMode: Text.WordWrap
303+ color: darkOnBright ? sdFontColor : theme.palette.normal.backgroundText
304+ wrapMode: Text.Wrap
301305 maximumLineCount: type == Notification.SnapDecision ? 12 : 2
302306 elide: Text.ElideRight
303307 textFormat: Text.PlainText
@@ -337,7 +341,7 @@ Item {
337341 anchors.horizontalCenter: parent.horizontalCenter
338342 visible: type === Notification.Confirmation && body !== ""
339343 fontSize: "medium"
340− color: darkOnBright ? sdFontColor : theme.palette.selected.backgroundText
344+ color: darkOnBright ? sdFontColor : theme.palette.normal.backgroundText
341345 wrapMode: Text.WordWrap
342346 maximumLineCount: 1
343347 elide: Text.ElideRight
qml/OrientedShell.qml+26−1
@@ -19,6 +19,7 @@ import QtQuick.Window 2.2
1919import Unity.InputInfo 0.1
2020import Unity.Session 0.1
2121import Unity.Screens 0.1
22+import Utils 0.1
2223import GSettings 1.0
2324import "Components"
2425import "Rotation"
@@ -77,6 +78,8 @@ Rectangle {
7778 InputDeviceModel {
7879 id: keyboardsModel
7980 deviceFilter: InputInfo.Keyboard
81+ onDeviceAdded: forceOSKEnabled = autopilotDevicePresent();
82+ onDeviceRemoved: forceOSKEnabled = autopilotDevicePresent();
8083 }
8184
8285 InputDeviceModel {
@@ -84,6 +87,27 @@ Rectangle {
8487 deviceFilter: InputInfo.TouchScreen
8588 }
8689
90+ /* FIXME: This exposes the NameRole as a work arround for lp:1542224.
91+ * When QInputInfo exposes NameRole to QML, this should be removed.
92+ */
93+ property bool forceOSKEnabled: false
94+ property var autopilotEmulatedDeviceNames: ["py-evdev-uinput"]
95+ UnitySortFilterProxyModel {
96+ id: autopilotDevices
97+ model: keyboardsModel
98+ }
99+
100+ function autopilotDevicePresent() {
101+ for(var i = 0; i < autopilotDevices.count; i++) {
102+ var device = autopilotDevices.get(i);
103+ if (autopilotEmulatedDeviceNames.indexOf(device.name) != -1) {
104+ console.warn("Forcing the OSK to be enabled as there is an autopilot eumlated device present.")
105+ return true;
106+ }
107+ }
108+ return false;
109+ }
110+
87111 Screens {
88112 id: screens
89113 }
@@ -195,7 +219,8 @@ Rectangle {
195219 // have multiple keyboards around. For now we only enable one keyboard at a time
196220 // thus hiding it here if there is a physical one around or if we have a second
197221 // screen (the virtual touchpad & osk on the phone) attached.
198− oskEnabled: keyboardsModel.count === 0 && screens.count === 1
222+ oskEnabled: (keyboardsModel.count === 0 && screens.count === 1) ||
223+ forceOSKEnabled
199224
200225 // TODO: Factor in the connected input devices (eg: physical keyboard, mouse, touchscreen),
201226 // what's the output device (eg: big TV, desktop monitor, phone display), etc.
qml/Panel/Handle.qml+2−2
@@ -19,7 +19,7 @@ import Ubuntu.Components 1.3
1919
2020Rectangle {
2121 id: handle
22− color: "#5d5d5d"
22+ color: theme.palette.normal.foreground
2323 height: units.gu(2)
2424 property bool active: false
2525
@@ -35,7 +35,7 @@ Rectangle {
3535 id: dot
3636 width: units.dp(3)
3737 height: width
38− color: handle.active ? UbuntuColors.orange : "#888888"
38+ color: handle.active ? theme.palette.highlighted.foreground : theme.palette.normal.raised
3939 radius: units.dp(1)
4040 }
4141 }
qml/Panel/IndicatorItem.qml+3−3
@@ -32,9 +32,9 @@ IndicatorDelegate {
3232 property bool selected: false
3333 property real iconHeight: units.gu(2)
3434 readonly property color color: {
35− if (!expanded) return "#ffffff";
36− if (!selected) return "#888888";
37− return "#ffffff";
35+ if (!expanded) return theme.palette.normal.backgroundText;
36+ if (!selected) return theme.palette.disabled.backgroundText;
37+ return theme.palette.normal.backgroundText;
3838 }
3939
4040 implicitWidth: mainItems.width
qml/Panel/Indicators/MenuItemFactory.qml+3−4
@@ -228,7 +228,6 @@ Item {
228228 text: menuData && menuData.label || ""
229229 iconSource: menuData && menuData.icon || ""
230230 value : menuData && menuData.actionState || 0.0
231− enabled: menuData && menuData.sensitive || false
232231 highlightWhenPressed: false
233232 }
234233 }
@@ -261,7 +260,7 @@ Item {
261260 name: "settings"
262261 height: units.gu(3)
263262 width: height
264− color: theme.palette.selected.backgroundText
263+ color: theme.palette.normal.backgroundText
265264 }
266265 }
267266 }
@@ -293,7 +292,7 @@ Item {
293292 source: menuData.icon
294293 height: units.gu(3)
295294 width: height
296− color: theme.palette.selected.backgroundText
295+ color: theme.palette.normal.backgroundText
297296 }
298297 }
299298 }
@@ -620,7 +619,7 @@ Item {
620619
621620 Component {
622621 id: modeminfoitem;
623− ModemInfoItem {
622+ Menus.ModemInfoItem {
624623 objectName: "modemInfoItem"
625624 property QtObject menuData: null
626625 property var menuModel: menuFactory.menuModel
qml/Panel/Indicators/ModemInfoItem.qmldeleted−111
@@ -1,111 +0,0 @@
1−/*
2− * Copyright 2014,2015 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.4
18−import QtQuick.Layouts 1.1
19−import Ubuntu.Components 1.3
20−import Ubuntu.Components.ListItems 1.3 as ListItem
21−
22−ListItem.Empty {
23− id: menu
24− implicitHeight: mainColumn.implicitHeight
25− + mainColumn.anchors.topMargin
26− + mainColumn.anchors.bottomMargin
27−
28− property alias statusIcon: statusIcon.name
29− property alias statusText: labelStatus.text
30− property alias connectivityIcon: iconConnectivity.name
31− property alias simIdentifierText: labelSimIdentifier.text
32− property bool locked : false
33− property bool roaming: false
34− signal unlock
35−
36− ColumnLayout {
37− id: mainColumn
38− anchors.fill: parent
39− anchors.margins: menu.__contentsMargins
40− spacing: units.gu(0.5)
41−
42− Label {
43− id: labelSimIdentifier
44− elide: Text.ElideRight
45− visible: text !== ""
46− font.bold: true
47− opacity: menu.locked ? 0.6 : 1.0
48− }
49−
50− RowLayout {
51− id: statusRow
52− spacing: units.gu(1)
53−
54− height: labelStatus.height
55− width: parent.width
56−
57− Label {
58− id: labelStatus
59− elide: Text.ElideRight
60− opacity: 0.6
61− }
62−
63− RowLayout {
64− spacing: 0.5
65− height: parent.height
66− Icon {
67− id: statusIcon
68− color: theme.palette.selected.backgroundText
69−
70− Layout.preferredHeight: parent.height
71− Layout.preferredWidth: Layout.preferredHeight
72−
73− visible: name !== ""
74− }
75−
76− Icon {
77− id: iconConnectivity
78− color: theme.palette.selected.backgroundText
79−
80− Layout.preferredHeight: parent.height
81− Layout.preferredWidth: Layout.preferredHeight
82−
83− visible: name !== ""
84− }
85− }
86−
87− Item {
88− // eat up all the excess space so that RoamingIndication
89− // ends up to the far right
90− Layout.fillWidth: true
91− }
92−
93− RoamingIndication {
94− id: roamingIndication
95− visible: menu.roaming
96− Layout.fillHeight: true
97− }
98− }
99−
100− Button {
101− id: buttonUnlock
102− objectName: "buttonUnlockSim"
103− visible: menu.locked
104−
105− text: i18n.tr("Unlock SIM")
106− Layout.preferredWidth: implicitWidth + units.gu(5)
107−
108− onTriggered: menu.unlock()
109− }
110− }
111−}
qml/Panel/Indicators/RoamingIndication.qmldeleted−40
@@ -1,40 +0,0 @@
1−/*
2− * Copyright 2014,2015 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.4
18−import QtQuick.Layouts 1.1
19−import Ubuntu.Components 1.3
20−
21−RowLayout {
22− spacing: units.gu(0.5)
23− Label {
24− id: labelRoaming
25− elide: Text.ElideRight
26− fontSize: "x-small"
27− text: i18n.tr("Roaming")
28− opacity: 0.6
29− }
30−
31− Icon {
32− id: iconRoaming
33− color: theme.palette.selected.backgroundText
34−
35− Layout.preferredHeight: parent.height
36− Layout.preferredWidth: Layout.preferredHeight
37−
38− name: "network-cellular-roaming"
39− }
40−}
qml/Panel/Indicators/client/IndicatorsClient.qml+1−1
@@ -26,7 +26,7 @@ Rectangle {
2626 id: root
2727
2828 Component.onCompleted: {
29− theme.name = "Ubuntu.Components.Themes.SuruGradient"
29+ theme.name = "Ubuntu.Components.Themes.SuruDark"
3030 }
3131
3232 PageStack {
qml/Panel/IndicatorsMenu.qml+3−2
@@ -38,7 +38,7 @@ Showable {
3838 property bool enableHint: true
3939 property bool contentEnabled: true
4040 property bool showOnClick: true
41− property color panelColor: "#292929"
41+ property color panelColor: UbuntuColors.jet
4242
4343 signal showTapped(point position)
4444
@@ -76,6 +76,7 @@ Showable {
7676 MenuContent {
7777 id: content
7878 objectName: "menuContent"
79+ color: root.panelColor
7980
8081 anchors {
8182 left: parent.left
@@ -110,7 +111,7 @@ Showable {
110111 height: units.gu(0.5)
111112 gradient: Gradient {
112113 GradientStop { position: 0.0; color: "transparent" }
113− GradientStop { position: 1.0; color: "#292929" }
114+ GradientStop { position: 1.0; color: root.panelColor }
114115 }
115116 opacity: 0.3
116117 }
qml/Panel/MenuContent.qml+1−1
@@ -27,7 +27,7 @@ Rectangle {
2727
2828 property QtObject indicatorsModel: null
2929 property int currentMenuIndex: -1
30− color: "#292929" // FIXME not in palette yet
30+ color: theme.palette.normal.background
3131
3232 width: units.gu(40)
3333 height: units.gu(42)
qml/Panel/Panel.qml+5−1
@@ -89,7 +89,7 @@ Item {
8989
9090 Rectangle {
9191 id: indicatorAreaBackground
92− color: callHint.visible ? "green" : "#292929"
92+ color: callHint.visible ? UbuntuColors.green : indicators.panelColor
9393 anchors {
9494 top: parent.top
9595 left: parent.left
@@ -169,8 +169,10 @@ Item {
169169 objectName: "windowDecorationTitle"
170170 anchors {
171171 left: parent.left
172+ right: __indicators.left
172173 top: parent.top
173174 leftMargin: units.gu(1)
175+ rightMargin: units.gu(1)
174176 topMargin: units.gu(0.5)
175177 bottomMargin: units.gu(0.5)
176178 }
@@ -181,6 +183,8 @@ Item {
181183 fontSize: "medium"
182184 font.weight: Font.Normal
183185 text: PanelState.title
186+ elide: Text.ElideRight
187+ maximumLineCount: 1
184188 }
185189
186190 // TODO here would the Locally integrated menus come
qml/ScopeTool.qml−8
@@ -52,14 +52,6 @@ Rectangle {
5252 color: "#FCFCFC"
5353 }
5454
55− Image {
56− anchors.fill: dashContent
57− source: root.width > root.height ? "Dash/graphics/paper_landscape.png" : "Dash/graphics/paper_portrait.png"
58− fillMode: Image.PreserveAspectCrop
59− horizontalAlignment: Image.AlignRight
60− verticalAlignment: Image.AlignTop
61− }
62−
6355 DashContent {
6456 id: dashContent
6557
qml/Shell.qml+1−1
@@ -140,7 +140,7 @@ Item {
140140 }
141141
142142 Component.onCompleted: {
143− theme.name = "Ubuntu.Components.Themes.SuruGradient"
143+ theme.name = "Ubuntu.Components.Themes.SuruDark"
144144 if (ApplicationManager.count > 0) {
145145 ApplicationManager.focusApplication(ApplicationManager.get(0).appId);
146146 }
qml/Stages/AbstractStage.qml+1−1
@@ -21,7 +21,7 @@ import GSettings 1.0
2121Rectangle {
2222 id: root
2323
24− color: "#111111"
24+ color: "#060606"
2525
2626 // Controls to be set from outside
2727 property bool altTabPressed
qml/Stages/DesktopSpread.qml+64−17
@@ -19,6 +19,7 @@ import QtQuick.Layouts 1.1
1919import Ubuntu.Components 1.3
2020import Ubuntu.Gestures 0.1
2121import Unity.Application 0.1
22+import "../Components"
2223
2324FocusScope {
2425 id: root
@@ -26,8 +27,11 @@ FocusScope {
2627 property bool altTabPressed: false
2728 property Item workspace: null
2829
30+ readonly property alias ready: blurLayer.ready
2931 readonly property alias highlightedIndex: spreadRepeater.highlightedIndex
3032
33+ signal playFocusAnimation(int index)
34+
3135 function show() {
3236 spreadContainer.animateIn = true;
3337 root.state = "altTab";
@@ -91,6 +95,9 @@ FocusScope {
9195
9296 function focusSelected() {
9397 if (spreadRepeater.highlightedIndex != -1) {
98+ if (spreadContainer.visible) {
99+ root.playFocusAnimation(spreadRepeater.highlightedIndex)
100+ }
94101 var application = ApplicationManager.get(spreadRepeater.highlightedIndex);
95102 ApplicationManager.requestFocusApplication(application.appId);
96103 }
@@ -101,6 +108,31 @@ FocusScope {
101108 state = ""
102109 }
103110
111+ BlurLayer {
112+ id: blurLayer
113+ anchors.fill: parent
114+ source: root.workspace
115+ visible: false
116+ }
117+
118+ Rectangle {
119+ id: spreadBackground
120+ anchors.fill: parent
121+ color: "#B2000000"
122+ visible: false
123+ opacity: visible ? 1 : 0
124+ Behavior on opacity {
125+ UbuntuNumberAnimation { duration: UbuntuAnimation.SnapDuration }
126+ }
127+ }
128+
129+ MouseArea {
130+ id: eventEater
131+ anchors.fill: parent
132+ visible: spreadBackground.visible
133+ enabled: visible
134+ }
135+
104136 Item {
105137 id: spreadContainer
106138 objectName: "spreadContainer"
@@ -226,13 +258,20 @@ FocusScope {
226258 Transition {
227259 from: ""
228260 to: "altTab"
229− PropertyAction { target: spreadDelegate; properties: "y,height,width,angle,z,itemScale,itemScaleOriginY,visible" }
230− PropertyAction { target: clippedSpreadDelegate; properties: "anchors.topMargin" }
231− PropertyAnimation {
232− target: spreadDelegate; properties: "x"
233− from: root.width
234− duration: spreadContainer.animateIn ? UbuntuAnimation.FastDuration :0
235− easing: UbuntuAnimation.StandardEasing
261+ SequentialAnimation {
262+ ParallelAnimation {
263+ PropertyAction { target: spreadDelegate; properties: "y,height,width,angle,z,itemScale,itemScaleOriginY,visible" }
264+ PropertyAction { target: clippedSpreadDelegate; properties: "anchors.topMargin" }
265+ PropertyAnimation {
266+ target: spreadDelegate; properties: "x"
267+ from: root.width
268+ duration: spreadContainer.animateIn ? UbuntuAnimation.FastDuration :0
269+ easing: UbuntuAnimation.StandardEasing
270+ }
271+ UbuntuNumberAnimation { target: clippedSpreadDelegate; property: "shadowOpacity"; from: 0; to: spreadMaths.shadowOpacity; duration: spreadContainer.animateIn ? UbuntuAnimation.FastDuration : 0 }
272+ UbuntuNumberAnimation { target: tileInfo; property: "opacity"; from: 0; to: spreadMaths.tileInfoOpacity; duration: spreadContainer.animateIn ? UbuntuAnimation.FastDuration : 0 }
273+ }
274+ PropertyAction { target: spreadSelectArea; property: "enabled" }
236275 }
237276 }
238277 ]
@@ -240,7 +279,11 @@ FocusScope {
240279 MouseArea {
241280 id: tileInfo
242281 objectName: "tileInfo"
243− anchors { left: parent.left; top: clippedSpreadDelegate.bottom; topMargin: units.gu(5) }
282+ anchors {
283+ left: parent.left
284+ top: clippedSpreadDelegate.bottom
285+ topMargin: ((spreadMaths.sceneHeight - spreadDelegate.y) - clippedSpreadDelegate.height) * 0.2
286+ }
244287 property int nextItemX: spreadRepeater.count > index + 1 ? spreadRepeater.itemAt(index + 1).x : spreadDelegate.x + units.gu(30)
245288 width: Math.min(units.gu(30), nextItemX - spreadDelegate.x)
246289 height: titleInfoColumn.height
@@ -262,12 +305,20 @@ FocusScope {
262305 anchors { left: parent.left; top: parent.top; right: parent.right }
263306 spacing: units.gu(1)
264307
265− UbuntuShape {
308+ UbuntuShapeForItem {
266309 Layout.preferredHeight: Math.min(units.gu(6), root.height * .05)
267310 Layout.preferredWidth: height * 8 / 7.6
268311 image: Image {
269312 anchors.fill: parent
270313 source: model.icon
314+ Rectangle {
315+ anchors.fill: parent
316+ color: "black"
317+ opacity: clippedSpreadDelegate.highlightShown ? 0 : .1
318+ Behavior on opacity {
319+ UbuntuNumberAnimation { duration: UbuntuAnimation.SnapDuration }
320+ }
321+ }
271322 }
272323 }
273324 Label {
@@ -420,7 +471,7 @@ FocusScope {
420471
421472 property var source: ShaderEffectSource {
422473 id: shaderEffectSource
423− sourceItem: appContainer
474+ sourceItem: root.workspace
424475 }
425476
426477 fragmentShader: "
@@ -494,20 +545,17 @@ FocusScope {
494545 from: "*"
495546 to: "altTab"
496547 SequentialAnimation {
497− PropertyAction { target: hoverMouseArea; property: "progressiveScrollingEnabled"; value: false }
498548 PropertyAction { target: spreadRepeater; property: "highlightedIndex"; value: Math.min(ApplicationManager.count - 1, 1) }
499− PauseAnimation { duration: 140 }
549+ PauseAnimation { duration: spreadContainer.animateIn ? 0 : 140 }
500550 PropertyAction { target: workspaceSelector; property: "visible" }
501551 PropertyAction { target: spreadContainer; property: "visible" }
502552 ParallelAnimation {
503− UbuntuNumberAnimation {
504− target: blurLayer; properties: "saturation,blurRadius";
505− duration: spreadContainer.animateIn ? UbuntuAnimation.FastDuration : 0
506− }
553+ UbuntuNumberAnimation { target: blurLayer; properties: "saturation,blurRadius"; duration: UbuntuAnimation.SnapDuration }
507554 PropertyAction { target: spreadFlickable; property: "visible" }
508555 PropertyAction { targets: [currentSelectedLabel,spreadBackground]; property: "visible" }
509556 PropertyAction { target: spreadFlickable; property: "contentX"; value: 0 }
510557 }
558+ PropertyAction { target: hoverMouseArea; properties: "enabled,progressiveScrollingEnabled"; value: false }
511559 }
512560 },
513561 Transition {
@@ -518,6 +566,5 @@ FocusScope {
518566 PropertyAction { target: spreadRepeater; property: "highlightedIndex"; value: -1 }
519567 PropertyAction { target: spreadContainer; property: "animateIn"; value: false }
520568 }
521−
522569 ]
523570}
qml/Stages/DesktopSpreadDelegate.qml+15−1
@@ -56,6 +56,11 @@ Item {
5656 }
5757 ]
5858
59+ scale: highlightShown ? 1.025 : 1
60+ Behavior on scale {
61+ UbuntuNumberAnimation { duration: UbuntuAnimation.SnapDuration }
62+ }
63+
5964 BorderImage {
6065 anchors {
6166 fill: root
@@ -70,7 +75,7 @@ Item {
7075 anchors.fill: parent
7176 anchors.margins: -units.gu(1)
7277 color: "white"
73− opacity: highlightShown ? 0.15 : 0
78+ opacity: highlightShown ? 0.55 : 0
7479 antialiasing: true
7580 }
7681
@@ -108,4 +113,13 @@ Item {
108113 ]
109114 }
110115 }
116+
117+ Rectangle {
118+ anchors.fill: parent
119+ color: "black"
120+ opacity: root.highlightShown ? 0 : .1
121+ Behavior on opacity {
122+ UbuntuNumberAnimation { duration: UbuntuAnimation.SnapDuration }
123+ }
124+ }
111125}
qml/Stages/DesktopStage.qml+19−23
@@ -377,6 +377,19 @@ AbstractStage {
377377 ApplicationManager.focusApplication(appId);
378378 }
379379
380+ function playFocusAnimation() {
381+ focusAnimation.start()
382+ }
383+
384+ UbuntuNumberAnimation {
385+ id: focusAnimation
386+ target: appDelegate
387+ property: "scale"
388+ from: 0.98
389+ to: 1
390+ duration: UbuntuAnimation.SnapDuration
391+ }
392+
380393 states: [
381394 State {
382395 name: "fullscreen"; when: decoratedWindow.fullscreen
@@ -468,7 +481,7 @@ AbstractStage {
468481 target: appDelegate
469482 property: "z"
470483 value: ApplicationManager.count + 1
471− when: index == spread.highlightedIndex && blurLayer.ready
484+ when: index == spread.highlightedIndex && spread.ready
472485 }
473486
474487 WindowResizeArea {
@@ -504,27 +517,6 @@ AbstractStage {
504517 }
505518 }
506519
507− BlurLayer {
508− id: blurLayer
509− anchors.fill: appContainer
510− source: appContainer
511− visible: false
512− }
513−
514− Rectangle {
515− id: spreadBackground
516− anchors.fill: parent
517− color: "#55000000"
518− visible: false
519− }
520−
521− MouseArea {
522− id: eventEater
523− anchors.fill: parent
524− visible: spreadBackground.visible
525− enabled: visible
526− }
527−
528520 EdgeBarrier {
529521 id: edgeBarrier
530522
@@ -540,7 +532,7 @@ AbstractStage {
540532 rotation: 90
541533 anchors.centerIn: parent
542534 gradient: Gradient {
543− GradientStop { position: 0.0; color: Qt.rgba(0.16,0.16,0.16,0.7)}
535+ GradientStop { position: 0.0; color: Qt.rgba(0.16,0.16,0.16,0.5)}
544536 GradientStop { position: 1.0; color: Qt.rgba(0.16,0.16,0.16,0)}
545537 }
546538 }
@@ -562,5 +554,9 @@ AbstractStage {
562554 workspace: appContainer
563555 focus: state == "altTab"
564556 altTabPressed: root.altTabPressed
557+
558+ onPlayFocusAnimation: {
559+ appRepeater.itemAt(index).playFocusAnimation();
560+ }
565561 }
566562}
qml/Stages/PhoneStage.qml+77−3
@@ -44,6 +44,33 @@ AbstractStage {
4444 }
4545 }
4646
47+ onAltTabPressedChanged: {
48+ if (!spreadEnabled || !altTabEnabled) {
49+ return;
50+ }
51+ if (altTabPressed) {
52+ spreadView.snapToSpread();
53+ priv.highlightIndex = Math.min(spreadRepeater.count - 1, 1);
54+ } else {
55+ spreadView.snapTo(priv.highlightIndex)
56+ }
57+ }
58+
59+ FocusScope {
60+ focus: root.altTabPressed
61+
62+ Keys.onPressed: {
63+ switch (event.key) {
64+ case Qt.Key_Tab:
65+ priv.highlightIndex = (priv.highlightIndex + 1) % spreadRepeater.count
66+ break;
67+ case Qt.Key_Backtab:
68+ priv.highlightIndex = (priv.highlightIndex + spreadRepeater.count - 1) % spreadRepeater.count
69+ break;
70+ }
71+ }
72+ }
73+
4774 // Functions to be called from outside
4875 function updateFocusedAppOrientation() {
4976 if (spreadRepeater.count > 0) {
@@ -74,6 +101,12 @@ AbstractStage {
74101 }
75102 }
76103
104+ function pushRightEdge(amount) {
105+ if (spreadView.contentX == -spreadView.shift) {
106+ edgeBarrier.push(amount);
107+ }
108+ }
109+
77110 mainApp: applicationManager.focusedApplicationId
78111 ? applicationManager.findApplication(applicationManager.focusedApplicationId)
79112 : null
@@ -180,6 +213,7 @@ AbstractStage {
180213
181214 property real oldInverseProgress: 0
182215 property bool animateX: false
216+ property int highlightIndex: 0
183217
184218 onFocusedAppDelegateChanged: {
185219 if (focusedAppDelegate) {
@@ -214,6 +248,10 @@ AbstractStage {
214248 spreadView.phase = 0;
215249 spreadView.contentX = -spreadView.shift;
216250 }
251+
252+ onHighlightIndexChanged: {
253+ spreadView.contentX = highlightIndex * spreadView.contentWidth / (spreadRepeater.count + 2)
254+ }
217255 }
218256 Timer {
219257 id: fullyShowingFocusedAppUpdateTimer
@@ -281,6 +319,11 @@ AbstractStage {
281319 }
282320 }
283321
322+ Behavior on contentX {
323+ enabled: root.altTabPressed
324+ UbuntuNumberAnimation {}
325+ }
326+
284327 onShiftedContentXChanged: {
285328 if (root.beingResized) {
286329 // Flickabe.contentX wiggles during resizes. Don't react to it.
@@ -319,12 +362,17 @@ AbstractStage {
319362 } else if (shiftedContentX < positionMarker3 * width) {
320363 snapTo(1);
321364 } else if (phase < 2){
322− // Add 1 pixel to make sure we definitely hit positionMarker4 even with rounding errors of the animation.
323− snapAnimation.targetContentX = width * positionMarker4 + 1 - shift;
324− snapAnimation.start();
365+ snapToSpread();
325366 root.opened();
326367 }
327368 }
369+
370+ function snapToSpread() {
371+ // Add 1 pixel to make sure we definitely hit positionMarker4 even with rounding errors of the animation.
372+ snapAnimation.targetContentX = (root.width * spreadView.positionMarker4) + 1 - spreadView.shift;
373+ snapAnimation.start();
374+ }
375+
328376 function snapTo(index) {
329377 if (!root.altTabEnabled) {
330378 // Reset to start instead
@@ -427,6 +475,7 @@ AbstractStage {
427475 maximizedAppTopMargin: root.maximizedAppTopMargin
428476 dropShadow: spreadView.active || priv.focusedAppDelegateIsDislocated
429477 focusFirstApp: root.focusFirstApp
478+ highlightShown: root.altTabPressed && index === priv.highlightIndex
430479
431480 readonly property bool isDash: model.appId == "unity8-dash"
432481
@@ -651,4 +700,29 @@ AbstractStage {
651700 }
652701 }
653702 }
703+
704+ EdgeBarrier {
705+ id: edgeBarrier
706+
707+ // NB: it does its own positioning according to the specified edge
708+ edge: Qt.RightEdge
709+
710+ onPassed: {
711+ spreadView.snapToSpread();
712+ }
713+ material: Component {
714+ Item {
715+ Rectangle {
716+ width: parent.height
717+ height: parent.width
718+ rotation: 90
719+ anchors.centerIn: parent
720+ gradient: Gradient {
721+ GradientStop { position: 0.0; color: Qt.rgba(0.16,0.16,0.16,0.7)}
722+ GradientStop { position: 1.0; color: Qt.rgba(0.16,0.16,0.16,0)}
723+ }
724+ }
725+ }
726+ }
727+ }
654728}
qml/Stages/Splash.qml+4−2
@@ -76,6 +76,7 @@ Item {
7676 }
7777
7878 Ambiance.PageHeadStyle {
79+ // FIXME: Replace PageHeadStyle by PageHeader from Ubuntu.Components 1.3.
7980 id: header
8081 anchors {
8182 left: parent.left;
@@ -86,9 +87,10 @@ Item {
8687 property color dividerColor: Qt.darker(styledItem.backgroundColor, 1.1)
8788 property color panelColor: Qt.lighter(styledItem.backgroundColor, 1.1)
8889 panelForegroundColor: config.foregroundColor
90+ backgroundColor: "transparent"
8991 config: PageHeadConfiguration {
9092 id: headerConfig
91− foregroundColor: styledItem.fakeTheme.palette.selected.backgroundText
93+ foregroundColor: styledItem.fakeTheme.palette.normal.backgroundText
9294 }
9395
9496 property var contents: null
@@ -134,7 +136,7 @@ Item {
134136 anchors.topMargin: units.gu(2)
135137 fontSize: "large"
136138
137− color: styledItem.fakeTheme.palette.selected.backgroundText
139+ color: styledItem.fakeTheme.palette.normal.backgroundText
138140 visible: d.showIcon
139141 }
140142
qml/Stages/SpreadDelegate.qml+20
@@ -43,6 +43,7 @@ FocusScope {
4343 property int shellOrientationAngle
4444 property int shellOrientation
4545 property QtObject orientations
46+ property bool highlightShown: false
4647
4748 function matchShellOrientation() {
4849 if (!root.application)
@@ -261,6 +262,25 @@ FocusScope {
261262 Behavior on opacity { UbuntuNumberAnimation {} }
262263 }
263264
265+ Rectangle {
266+ id: selectionHighlight
267+ objectName: "selectionHighlight"
268+ anchors.fill: appWindow
269+ anchors.margins: -units.gu(1)
270+ color: "white"
271+ opacity: root.highlightShown ? 0.15 : 0
272+ antialiasing: true
273+ visible: opacity > 0
274+ }
275+
276+ Rectangle {
277+ anchors { left: selectionHighlight.left; right: selectionHighlight.right; bottom: selectionHighlight.bottom; }
278+ height: units.dp(2)
279+ color: UbuntuColors.orange
280+ visible: root.highlightShown
281+ antialiasing: true
282+ }
283+
264284 ApplicationWindow {
265285 id: appWindow
266286 objectName: application ? "appWindow_" + application.appId : "appWindow_null"
qml/Stages/TabletStage.qml+83−3
@@ -70,6 +70,12 @@ AbstractStage {
7070 }
7171 }
7272
73+ function pushRightEdge(amount) {
74+ if (spreadView.contentX == -spreadView.shift) {
75+ edgeBarrier.push(amount);
76+ }
77+ }
78+
7379 orientationChangesEnabled: priv.mainAppOrientationChangesEnabled
7480
7581 supportedOrientations: mainApp ? mainApp.supportedOrientations
@@ -102,6 +108,38 @@ AbstractStage {
102108 priv.oldInverseProgress = inverseProgress;
103109 }
104110
111+ onAltTabPressedChanged: {
112+ if (!spreadEnabled) {
113+ return;
114+ }
115+ if (altTabPressed) {
116+ priv.highlightIndex = Math.min(spreadRepeater.count - 1, 1);
117+ spreadView.snapToSpread();
118+ } else {
119+ for (var i = 0; i < spreadRepeater.count; i++) {
120+ if (spreadRepeater.itemAt(i).zIndex === priv.highlightIndex) {
121+ spreadView.snapTo(i);
122+ return;
123+ }
124+ }
125+ }
126+ }
127+
128+ FocusScope {
129+ focus: root.altTabPressed
130+
131+ Keys.onPressed: {
132+ switch (event.key) {
133+ case Qt.Key_Tab:
134+ priv.highlightIndex = (priv.highlightIndex + 1) % spreadRepeater.count
135+ break;
136+ case Qt.Key_Backtab:
137+ priv.highlightIndex = (priv.highlightIndex + spreadRepeater.count - 1) % spreadRepeater.count
138+ break;
139+ }
140+ }
141+ }
142+
105143 QtObject {
106144 id: priv
107145 objectName: "stagesPriv"
@@ -130,6 +168,8 @@ AbstractStage {
130168
131169 property int oldInverseProgress: 0
132170
171+ property int highlightIndex: 0
172+
133173 onFocusedAppIdChanged: {
134174 if (priv.focusedAppId.length > 0) {
135175 var focusedApp = ApplicationManager.findApplication(focusedAppId);
@@ -185,6 +225,10 @@ AbstractStage {
185225 }
186226 return oneWayFlick;
187227 }
228+
229+ onHighlightIndexChanged: {
230+ spreadView.contentX = highlightIndex * spreadView.contentWidth / (spreadRepeater.count + 2)
231+ }
188232 }
189233
190234 Connections {
@@ -391,11 +435,16 @@ AbstractStage {
391435 } else if (shiftedContentX < phase1Width) {
392436 snapTo(1);
393437 } else {
394− // Add 1 pixel to make sure we definitely hit positionMarker4 even with rounding errors of the animation.
395− snapAnimation.targetContentX = spreadView.width * spreadView.positionMarker4 + 1 - shift;
396− snapAnimation.start();
438+ snapToSpread();
397439 }
398440 }
441+
442+ function snapToSpread() {
443+ // Add 1 pixel to make sure we definitely hit positionMarker4 even with rounding errors of the animation.
444+ snapAnimation.targetContentX = (spreadView.width * spreadView.positionMarker4) + 1 - shift;
445+ snapAnimation.start();
446+ }
447+
399448 function snapTo(index) {
400449 spreadView.selectedIndex = index;
401450 snapAnimation.targetContentX = -shift;
@@ -481,6 +530,11 @@ AbstractStage {
481530 }
482531 }
483532
533+ Behavior on contentX {
534+ enabled: root.altTabPressed
535+ UbuntuNumberAnimation {}
536+ }
537+
484538 MouseArea {
485539 id: spreadRow
486540 x: spreadView.contentX
@@ -611,6 +665,7 @@ AbstractStage {
611665 dragOffset: !isDash && model.appId == priv.mainStageAppId && root.inverseProgress > 0 && spreadView.phase === 0 ? root.inverseProgress : 0
612666 application: ApplicationManager.get(index)
613667 closeable: !isDash
668+ highlightShown: root.altTabPressed && priv.highlightIndex == zIndex
614669
615670 readonly property bool wantsMainStage: model.stage == ApplicationInfoInterface.MainStage
616671
@@ -805,4 +860,29 @@ AbstractStage {
805860 }
806861 }
807862 }
863+
864+ EdgeBarrier {
865+ id: edgeBarrier
866+
867+ // NB: it does its own positioning according to the specified edge
868+ edge: Qt.RightEdge
869+
870+ onPassed: {
871+ spreadView.snapToSpread();
872+ }
873+ material: Component {
874+ Item {
875+ Rectangle {
876+ width: parent.height
877+ height: parent.width
878+ rotation: 90
879+ anchors.centerIn: parent
880+ gradient: Gradient {
881+ GradientStop { position: 0.0; color: Qt.rgba(0.16,0.16,0.16,0.7)}
882+ GradientStop { position: 1.0; color: Qt.rgba(0.16,0.16,0.16,0)}
883+ }
884+ }
885+ }
886+ }
887+ }
808888}
qml/Stages/WindowResizeArea.qml+1−1
@@ -301,7 +301,7 @@ MouseArea {
301301 }
302302
303303 if (d.topBorder) {
304− var newTargetY = d.startY + deltaY;
304+ var newTargetY = Math.max(d.startY + deltaY, PanelState.panelHeight); // disallow resizing up past Panel
305305 var bottomBorderY = target.y + target.height;
306306 if (bottomBorderY > newTargetY + d.minimumHeight) {
307307 if (bottomBorderY < newTargetY + d.maximumHeight) {
qml/Wizard/StackButton.qml+1−1
@@ -32,7 +32,7 @@ AbstractButton {
3232 anchors.verticalCenter: parent.verticalCenter
3333 anchors.left: parent.left
3434 anchors.right: parent.right
35− color: enabled ? theme.palette.selected.backgroundText : Qt.darker(theme.palette.selected.backgroundText, 1.5)
35+ color: enabled ? theme.palette.normal.backgroundText : Qt.darker(theme.palette.normal.backgroundText, 1.5)
3636 text: {
3737 if (backArrow) {
3838 // Translators: This is the arrow for "Back" buttons
src/CMakeLists.txt+1−1
@@ -33,7 +33,7 @@ endif()
3333
3434pkg_check_modules(ANDROID_PROPERTIES REQUIRED libandroid-properties)
3535add_executable(${SHELL_APP} ${SOURCE_FILES})
36−qt5_use_modules(${SHELL_APP} Gui Qml Quick Test)
36+qt5_use_modules(${SHELL_APP} DBus Gui Qml Quick Test)
3737
3838if (NOT "${ANDROID_PROPERTIES_INCLUDE_DIRS}" STREQUAL "")
3939 set_target_properties(${SHELL_APP} PROPERTIES INCLUDE_DIRECTORIES ${ANDROID_PROPERTIES_INCLUDE_DIRS})
src/CachingNetworkManagerFactory.cpp+2−2
@@ -24,12 +24,12 @@
2424CachingNetworkAccessManager::CachingNetworkAccessManager(QObject *parent)
2525 : QNetworkAccessManager(parent)
2626{
27− m_networkingStatus = new ubuntu::connectivity::NetworkingStatus(this);
27+ m_networkingStatus = new connectivityqt::Connectivity(QDBusConnection::sessionBus(), this);
2828}
2929
3030QNetworkReply* CachingNetworkAccessManager::createRequest(Operation op, const QNetworkRequest &request, QIODevice *outgoingData)
3131{
32− if (m_networkingStatus->status() != ubuntu::connectivity::NetworkingStatus::Status::Online) {
32+ if (m_networkingStatus->status() != connectivityqt::Connectivity::Status::Online) {
3333 qDebug() << "Not connected to the internet. Request for" << request.url().toString() << "will be served only from the cache.";
3434 QNetworkRequest req(request);
3535 req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysCache);
src/CachingNetworkManagerFactory.h+3−2
@@ -21,10 +21,11 @@
2121#include <QQmlNetworkAccessManagerFactory>
2222#include <QNetworkAccessManager>
2323
24−#include <ubuntu/connectivity/networking-status.h>
24+#include <connectivityqt/connectivity.h>
2525
2626class CachingNetworkAccessManager : public QNetworkAccessManager
2727{
28+Q_OBJECT
2829public:
2930 CachingNetworkAccessManager(QObject *parent = 0);
3031
@@ -32,7 +33,7 @@ protected:
3233 QNetworkReply* createRequest(Operation op, const QNetworkRequest &req, QIODevice *outgoingData = 0) override;
3334
3435private:
35− ubuntu::connectivity::NetworkingStatus* m_networkingStatus;
36+ connectivityqt::Connectivity* m_networkingStatus;
3637};
3738
3839class CachingNetworkManagerFactory : public QQmlNetworkAccessManagerFactory
src/Dash/CMakeLists.txt+1−1
@@ -9,7 +9,7 @@ endif()
99
1010add_executable(unity8-dash ${DASH_SRCS})
1111
12−qt5_use_modules(unity8-dash Gui Qml Quick Test)
12+qt5_use_modules(unity8-dash DBus Gui Qml Quick Test)
1313
1414# For it to find libUbuntuGestures.so, needed by Ubuntu.Gestures QML module.
1515set_target_properties(unity8-dash PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${SHELL_PRIVATE_LIBDIR}")
tests/autopilot/unity8/dash.py+1−2
@@ -211,8 +211,7 @@ class GenericScopeView(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
211211 self.get_root_instance().select_single(
212212 objectName='processingIndicator').visible.wait_for(False)
213213 return preview_list.select_single(
214− Preview, objectName='preview{}'.format(
215− preview_list.initialIndex))
214+ Preview, objectName='preview')
216215
217216 @autopilot_logging.log_action(logger.debug)
218217 def click_scope_item(self, category, title, press_duration=0.10):
tests/autopilot/unity8/shell/tests/test_helpers.py−2
@@ -117,13 +117,11 @@ class GenericScopeViewHelperTestCase(tests.DashBaseTestCase):
117117 def test_open_preview(self):
118118 preview = self.generic_scope.open_preview('0', 'Title.0.0')
119119 self.assertIsInstance(preview, dash_helpers.Preview)
120− self.assertTrue(preview.isCurrent)
121120
122121 def test_open_preview_of_non_visible_item(self):
123122 """Open an item that requires swiping to make it visible."""
124123 preview = self.generic_scope.open_preview('2', 'Title.2.0')
125124 self.assertIsInstance(preview, dash_helpers.Preview)
126− self.assertTrue(preview.isCurrent)
127125
128126
129127class DashAppsHelperTestCase(tests.DashBaseTestCase):
tests/mocks/IntegratedLightDM/liblightdm/UsersModel.cpp−14
@@ -47,20 +47,6 @@ UsersModel::UsersModel(QObject *parent) :
4747 roles[HasMessagesRole] = "hasMessages";
4848 roles[ImagePathRole] = "imagePath";
4949 setRoleNames(roles);
50−
51− // Now modify our mock user backgrounds
52− QDir bgdir = QDir("/usr/share/demo-assets/shell/backgrounds/");
53− QStringList backgrounds = bgdir.entryList(QDir::Files | QDir::NoDotAndDotDot);
54−
55− for (int i = 0, j = 0; i < d->entries.size(); i++) {
56− Entry &entry = d->entries[i];
57− if (entry.background.isNull() && !backgrounds.isEmpty()) {
58− entry.background = bgdir.filePath(backgrounds[j++]);
59− if (j >= backgrounds.length()) {
60− j = 0;
61− }
62− }
63− }
6450}
6551
6652UsersModel::~UsersModel()
tests/mocks/Unity/Application/MirSurface.cpp+6−2
@@ -17,13 +17,15 @@
1717#include "MirSurface.h"
1818
1919#include <QDebug>
20+#include <QQmlEngine>
2021
2122MirSurface::MirSurface(const QString& name,
2223 Mir::Type type,
2324 Mir::State state,
2425 const QUrl& screenshot,
25− const QUrl &qmlFilePath)
26− : unity::shell::application::MirSurfaceInterface(nullptr)
26+ const QUrl &qmlFilePath,
27+ QObject *parent)
28+ : unity::shell::application::MirSurfaceInterface(parent)
2729 , m_name(name)
2830 , m_type(type)
2931 , m_state(state)
@@ -38,6 +40,8 @@ MirSurface::MirSurface(const QString& name,
3840 , m_slowToResize(false)
3941{
4042// qDebug() << "MirSurface::MirSurface() " << name;
43+ QQmlEngine::setObjectOwnership(this, QQmlEngine::CppOwnership);
44+
4145 m_delayedResizeTimer.setInterval(600);
4246 m_delayedResizeTimer.setSingleShot(true);
4347 connect(&m_delayedResizeTimer, &QTimer::timeout, this, &MirSurface::applyDelayedResize);
tests/mocks/Unity/Application/MirSurface.h+2−1
@@ -41,7 +41,8 @@ public:
4141 Mir::Type type,
4242 Mir::State state,
4343 const QUrl& screenshot,
44− const QUrl &qmlFilePath = QUrl());
44+ const QUrl &qmlFilePath = QUrl(),
45+ QObject *parent = nullptr);
4546 virtual ~MirSurface();
4647
4748 ////
tests/mocks/Unity/Application/MirSurfaceItem.cpp+2−5
@@ -20,6 +20,7 @@
2020
2121#include <QGuiApplication>
2222#include <QQuickView>
23+#include <QQmlContext>
2324#include <QQmlProperty>
2425#include <QQmlEngine>
2526#include <QString>
@@ -220,10 +221,6 @@ void MirSurfaceItem::setSurface(MirSurfaceInterface* surface)
220221 connect(m_qmlSurface, &MirSurface::liveChanged, this, &MirSurfaceItem::liveChanged);
221222 connect(m_qmlSurface, &MirSurface::stateChanged, this, &MirSurfaceItem::surfaceStateChanged);
222223
223− // The assumptions I make here really should hold.
224− QQuickView *quickView =
225− qobject_cast<QQuickView*>(QGuiApplication::topLevelWindows()[0]);
226−
227224 QUrl qmlComponentFilePath;
228225 if (!m_qmlSurface->qmlFilePath().isEmpty()) {
229226 qmlComponentFilePath = m_qmlSurface->qmlFilePath();
@@ -231,7 +228,7 @@ void MirSurfaceItem::setSurface(MirSurfaceInterface* surface)
231228 qmlComponentFilePath = QUrl("qrc:///Unity/Application/MirSurfaceItem.qml");
232229 }
233230
234− m_qmlContentComponent = new QQmlComponent(quickView->engine(), qmlComponentFilePath);
231+ m_qmlContentComponent = new QQmlComponent(QQmlEngine::contextForObject(parent())->engine(), qmlComponentFilePath);
235232
236233 switch (m_qmlContentComponent->status()) {
237234 case QQmlComponent::Ready:
tests/mocks/Unity/Application/SurfaceManager.cpp+8−9
@@ -34,6 +34,13 @@ SurfaceManager::SurfaceManager(QObject *parent) :
3434 QObject(parent)
3535 , m_virtualKeyboard(nullptr)
3636{
37+ m_virtualKeyboard = new VirtualKeyboard(this);
38+ connect(m_virtualKeyboard, &QObject::destroyed, this, [this](QObject *obj) {
39+ MirSurface* surface = qobject_cast<MirSurface*>(obj);
40+ m_virtualKeyboard = nullptr;
41+ Q_EMIT inputMethodSurfaceChanged();
42+ Q_EMIT surfaceDestroyed(surface);
43+ });
3744}
3845
3946MirSurface *SurfaceManager::createSurface(const QString& name,
@@ -58,16 +65,8 @@ MirSurface *SurfaceManager::createSurface(const QString& name,
5865 return surface;
5966}
6067
61−MirSurface *SurfaceManager::inputMethodSurface()
68+MirSurface *SurfaceManager::inputMethodSurface() const
6269{
63− if (!m_virtualKeyboard) {
64− m_virtualKeyboard = new VirtualKeyboard;
65− connect(m_virtualKeyboard, &QObject::destroyed, this, [this](QObject *obj) {
66− MirSurface* surface = qobject_cast<MirSurface*>(obj);
67− Q_EMIT surfaceDestroyed(surface);
68− });
69− Q_EMIT surfaceCreated(m_virtualKeyboard);
70− }
7170 return m_virtualKeyboard;
7271}
7372
tests/mocks/Unity/Application/SurfaceManager.h+3−3
@@ -25,7 +25,7 @@
2525class SurfaceManager : public QObject
2626{
2727 Q_OBJECT
28−
28+ Q_PROPERTY(MirSurface* inputMethodSurface READ inputMethodSurface NOTIFY inputMethodSurfaceChanged)
2929 Q_PROPERTY(int newSurfaceMinimumWidth READ newSurfaceMinimumWidth WRITE setNewSurfaceMinimumWidth NOTIFY newSurfaceMinimumWidthChanged)
3030 Q_PROPERTY(int newSurfaceMaximumWidth READ newSurfaceMaximumWidth WRITE setNewSurfaceMaximumWidth NOTIFY newSurfaceMaximumWidthChanged)
3131 Q_PROPERTY(int newSurfaceMinimumHeight READ newSurfaceMinimumHeight WRITE setNewSurfaceMinimumHeight NOTIFY newSurfaceMinimumHeightChanged)
@@ -43,8 +43,7 @@ public:
4343 Mir::State state,
4444 const QUrl& screenshot);
4545
46− // To be used in the tests
47− Q_INVOKABLE MirSurface* inputMethodSurface();
46+ MirSurface* inputMethodSurface() const;
4847
4948 int newSurfaceMinimumWidth() const { return m_newSurfaceMinimumWidth; }
5049 void setNewSurfaceMinimumWidth(int value);
@@ -65,6 +64,7 @@ public:
6564 void setNewSurfaceHeightIncrement(int);
6665
6766Q_SIGNALS:
67+ void inputMethodSurfaceChanged();
6868 void countChanged();
6969 void surfaceCreated(MirSurface *surface);
7070 void surfaceDestroyed(MirSurface*surface);
tests/mocks/Unity/Application/VirtualKeyboard.cpp+3−2
@@ -22,12 +22,13 @@
2222
2323#include <QDebug>
2424
25−VirtualKeyboard::VirtualKeyboard()
25+VirtualKeyboard::VirtualKeyboard(QObject *parent)
2626 : MirSurface("input-method",
2727 Mir::InputMethodType,
2828 Mir::MinimizedState,
2929 QUrl("qrc:///Unity/Application/vkb_portrait.png"),
30− QUrl("qrc:///Unity/Application/VirtualKeyboard.qml"))
30+ QUrl("qrc:///Unity/Application/VirtualKeyboard.qml"),
31+ parent)
3132{
3233}
3334
tests/mocks/Unity/Application/VirtualKeyboard.h+1−1
@@ -25,7 +25,7 @@ class VirtualKeyboard : public MirSurface
2525{
2626 Q_OBJECT
2727public:
28− explicit VirtualKeyboard();
28+ explicit VirtualKeyboard(QObject *parent = nullptr);
2929 ~VirtualKeyboard();
3030};
3131
tests/mocks/Unity/Application/plugin.cpp+2−1
@@ -78,8 +78,9 @@ void FakeUnityApplicationQmlPlugin::registerTypes(const char *uri)
7878 qmlRegisterUncreatableType<unity::shell::application::ApplicationInfoInterface>(uri, 0, 1, "ApplicationInfoInterface", "Abstract interface. Cannot be created in QML");
7979 qmlRegisterUncreatableType<Session>(uri, 0, 1, "Session", "Session can't be instantiated from QML");
8080 qmlRegisterUncreatableType<MirSurface>(uri, 0, 1, "MirSurface", "MirSurface can't be instantiated from QML");
81+ qmlRegisterUncreatableType<unity::shell::application::MirSurfaceInterface>(
82+ uri, 0, 1, "MirSurface", "MirSurface can't be instantiated from QML");
8183 qmlRegisterType<MirSurfaceItem>(uri, 0, 1, "MirSurfaceItem");
82−
8384 qmlRegisterType<ApplicationInfo>(uri, 0, 1, "ApplicationInfo");
8485
8586 qmlRegisterSingletonType<ApplicationManager>(uri, 0, 1, "ApplicationManager", applicationManagerSingleton);
tests/mocks/Unity/CMakeLists.txt+1−3
@@ -8,7 +8,7 @@ add_subdirectory(DashCommunicator)
88add_subdirectory(Screens)
99
1010pkg_search_module(GOBJECT gobject-2.0 REQUIRED)
11−pkg_check_modules(SCOPES_API REQUIRED unity-shell-scopes=9)
11+pkg_check_modules(SCOPES_API REQUIRED unity-shell-scopes=10)
1212
1313include_directories(
1414 ${CMAKE_CURRENT_BINARY_DIR}
@@ -28,13 +28,11 @@ set(UnityQML_SOURCES
2828 fake_navigation.cpp
2929 fake_resultsmodel.cpp
3030 fake_previewmodel.cpp
31− fake_previewstack.cpp
3231 fake_previewwidgetmodel.cpp
3332 fake_unity_plugin.cpp
3433 ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/CategoriesInterface.h
3534 ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/NavigationInterface.h
3635 ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/PreviewModelInterface.h
37− ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/PreviewStackInterface.h
3836 ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/PreviewWidgetModelInterface.h
3937 ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/ResultsModelInterface.h
4038 ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/ScopeInterface.h
tests/mocks/Unity/Unity.qmltypes+33−50
@@ -1,4 +1,4 @@
1−import QtQuick.tooling 1.1
1+import QtQuick.tooling 1.2
22
33// This file describes the plugin-supplied types contained in the library.
44// It is used for QML tooling purposes only.
@@ -7,17 +7,10 @@ import QtQuick.tooling 1.1
77// 'qmlplugindump -notrelocatable Unity 0.2 tests/mocks'
88
99Module {
10+ dependencies: ["QtQuick 2.4", "Unity.Indicators 0.1"]
1011 Component {
1112 name: "Categories"
1213 prototype: "unity::shell::scopes::CategoriesInterface"
13− Method {
14− name: "addSpecialCategory"
15− Parameter { name: "categoryId"; type: "string" }
16− Parameter { name: "name"; type: "string" }
17− Parameter { name: "icon"; type: "string" }
18− Parameter { name: "rawTemplate"; type: "string" }
19− Parameter { name: "countObject"; type: "QObject"; isPointer: true }
20− }
2114 Method {
2215 name: "overrideCategoryJson"
2316 type: "bool"
@@ -60,18 +53,6 @@ Module {
6053 Parameter { type: "bool" }
6154 }
6255 }
63− Component {
64− name: "PreviewStack"
65− prototype: "unity::shell::scopes::PreviewStackInterface"
66− exports: ["Unity/PreviewStack 0.2"]
67− isCreatable: false
68− exportMetaObjectRevisions: [0]
69− Method {
70− name: "getPreviewModel"
71− type: "unity::shell::scopes::PreviewModelInterface*"
72− Parameter { name: "index"; type: "int" }
73− }
74− }
7556 Component {
7657 name: "PreviewWidgetModel"
7758 prototype: "unity::shell::scopes::PreviewWidgetModelInterface"
@@ -95,11 +76,11 @@ Module {
9576 prototype: "unity::shell::scopes::ScopeInterface"
9677 exports: ["Unity/MockScope 0.2"]
9778 exportMetaObjectRevisions: [0]
79+ Signal { name: "refreshed" }
9880 Signal {
99− name: "performQuery"
81+ name: "queryPerformed"
10082 Parameter { name: "query"; type: "string" }
10183 }
102− Signal { name: "refreshed" }
10384 Method {
10485 name: "setId"
10586 Parameter { name: "id"; type: "string" }
@@ -115,11 +96,13 @@ Module {
11596 Method {
11697 name: "activate"
11798 Parameter { name: "result"; type: "QVariant" }
99+ Parameter { name: "categoryId"; type: "string" }
118100 }
119101 Method {
120102 name: "preview"
121− type: "PreviewStack*"
103+ type: "PreviewModel*"
122104 Parameter { name: "result"; type: "QVariant" }
105+ Parameter { name: "categoryId"; type: "string" }
123106 }
124107 Method { name: "cancelActivation" }
125108 Method {
@@ -142,6 +125,12 @@ Module {
142125 Parameter { name: "isAltNavigation"; type: "bool" }
143126 }
144127 Method { name: "refresh" }
128+ Method {
129+ name: "activateAction"
130+ Parameter { name: "result"; type: "QVariant" }
131+ Parameter { name: "categoryId"; type: "string" }
132+ Parameter { name: "actionId"; type: "string" }
133+ }
145134 }
146135 Component {
147136 name: "Scopes"
@@ -181,6 +170,10 @@ Module {
181170 Parameter { name: "scopeId"; type: "string" }
182171 Parameter { name: "index"; type: "int" }
183172 }
173+ Method {
174+ name: "closeScope"
175+ Parameter { name: "scope"; type: "unity::shell::scopes::ScopeInterface"; isPointer: true }
176+ }
184177 Method {
185178 name: "getScopeFromAll"
186179 type: "Scope*"
@@ -214,14 +207,6 @@ Module {
214207 Parameter { name: "categoryId"; type: "string" }
215208 Parameter { name: "json"; type: "string" }
216209 }
217− Method {
218− name: "addSpecialCategory"
219− Parameter { name: "categoryId"; type: "string" }
220− Parameter { name: "name"; type: "string" }
221− Parameter { name: "icon"; type: "string" }
222− Parameter { name: "rawTemplate"; type: "string" }
223− Parameter { name: "countObject"; type: "QObject"; isPointer: true }
224− }
225210 }
226211 Component {
227212 name: "unity::shell::scopes::NavigationInterface"
@@ -270,22 +255,6 @@ Module {
270255 Parameter { type: "QVariantMap" }
271256 }
272257 }
273− Component {
274− name: "unity::shell::scopes::PreviewStackInterface"
275− prototype: "QAbstractListModel"
276− Enum {
277− name: "Roles"
278− values: {
279− "RolePreviewModel": 0
280− }
281− }
282− Property { name: "widgetColumnCount"; type: "int" }
283− Method {
284− name: "getPreviewModel"
285− type: "unity::shell::scopes::PreviewModelInterface*"
286− Parameter { name: "index"; type: "int" }
287− }
288− }
289258 Component {
290259 name: "unity::shell::scopes::PreviewWidgetModelInterface"
291260 prototype: "QAbstractListModel"
@@ -316,7 +285,8 @@ Module {
316285 "RoleSummary": 9,
317286 "RoleAttributes": 10,
318287 "RoleBackground": 11,
319− "RoleOverlayColor": 12
288+ "RoleOverlayColor": 12,
289+ "RoleQuickPreviewData": 13
320290 }
321291 }
322292 Property { name: "categoryId"; type: "string" }
@@ -343,6 +313,7 @@ Module {
343313 Property { name: "description"; type: "string"; isReadonly: true }
344314 Property { name: "searchHint"; type: "string"; isReadonly: true }
345315 Property { name: "searchInProgress"; type: "bool"; isReadonly: true }
316+ Property { name: "activationInProgress"; type: "bool"; isReadonly: true }
346317 Property { name: "favorite"; type: "bool" }
347318 Property { name: "shortcut"; type: "string"; isReadonly: true }
348319 Property {
@@ -393,11 +364,13 @@ Module {
393364 Method {
394365 name: "activate"
395366 Parameter { name: "result"; type: "QVariant" }
367+ Parameter { name: "categoryId"; type: "string" }
396368 }
397369 Method {
398370 name: "preview"
399− type: "unity::shell::scopes::PreviewStackInterface*"
371+ type: "unity::shell::scopes::PreviewModelInterface*"
400372 Parameter { name: "result"; type: "QVariant" }
373+ Parameter { name: "categoryId"; type: "string" }
401374 }
402375 Method { name: "cancelActivation" }
403376 Method {
@@ -424,6 +397,12 @@ Module {
424397 Parameter { name: "cannedQuery"; type: "string" }
425398 }
426399 Method { name: "refresh" }
400+ Method {
401+ name: "activateAction"
402+ Parameter { name: "result"; type: "QVariant" }
403+ Parameter { name: "categoryId"; type: "string" }
404+ Parameter { name: "actionId"; type: "string" }
405+ }
427406 }
428407 Component {
429408 name: "unity::shell::scopes::ScopesInterface"
@@ -464,6 +443,10 @@ Module {
464443 Parameter { name: "scopeId"; type: "string" }
465444 Parameter { name: "index"; type: "int" }
466445 }
446+ Method {
447+ name: "closeScope"
448+ Parameter { name: "scope"; type: "unity::shell::scopes::ScopeInterface"; isPointer: true }
449+ }
467450 }
468451 Component {
469452 name: "unity::shell::scopes::SettingsModelInterface"
tests/mocks/Unity/fake_previewstack.cppdeleted−68
@@ -1,68 +0,0 @@
1−/*
2− * Copyright (C) 2014 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−// self
18−#include "fake_previewstack.h"
19−
20−// local
21−#include "fake_previewmodel.h"
22−#include "fake_scope.h"
23−
24−PreviewStack::PreviewStack(Scope *scope)
25− : unity::shell::scopes::PreviewStackInterface(nullptr)
26−{
27− m_previews << new PreviewModel(this, scope);
28−}
29−
30−PreviewStack::~PreviewStack()
31−{
32−}
33−
34−void PreviewStack::setWidgetColumnCount(int columnCount)
35−{
36− if (columnCount != 1) {
37− qFatal("PreviewStack::setWidgetColumnCount != 1 not implemented");
38− }
39−}
40−
41−int PreviewStack::widgetColumnCount() const
42−{
43− return 1;
44−}
45−
46−int PreviewStack::rowCount(const QModelIndex&) const
47−{
48− return m_previews.size();
49−}
50−
51−unity::shell::scopes::PreviewModelInterface* PreviewStack::getPreviewModel(int index) const
52−{
53− if (index >= m_previews.size()) {
54− return nullptr;
55− }
56−
57− return m_previews.at(index);
58−}
59−
60−QVariant PreviewStack::data(const QModelIndex& index, int role) const
61−{
62− switch (role) {
63− case RolePreviewModel:
64− return QVariant::fromValue(m_previews.at(index.row()));
65− default:
66− return QVariant();
67− }
68−}
tests/mocks/Unity/fake_previewstack.hdeleted−52
@@ -1,52 +0,0 @@
1−/*
2− * Copyright (C) 2014 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−
18−#ifndef FAKE_PREVIEWSTACK_H
19−#define FAKE_PREVIEWSTACK_H
20−
21−#include <unity/shell/scopes/PreviewStackInterface.h>
22−
23−#include <QSharedPointer>
24−#include <QVariantMap>
25−
26−class PreviewModel;
27−
28−class Scope;
29−
30−class PreviewStack : public unity::shell::scopes::PreviewStackInterface
31−{
32− Q_OBJECT
33−
34−public:
35− explicit PreviewStack(Scope* scope = 0);
36− virtual ~PreviewStack();
37−
38− QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
39− int rowCount(const QModelIndex& parent = QModelIndex()) const override;
40−
41− Q_INVOKABLE unity::shell::scopes::PreviewModelInterface* getPreviewModel(int index) const override;
42−
43− void setWidgetColumnCount(int columnCount) override;
44− int widgetColumnCount() const override;
45−
46−private:
47− QList<PreviewModel*> m_previews;
48−};
49−
50−Q_DECLARE_METATYPE(PreviewStack*)
51−
52−#endif // FAKE_PREVIEWSTACK_H
tests/mocks/Unity/fake_scope.cpp+7−2
@@ -87,6 +87,11 @@ bool Scope::searchInProgress() const
8787 return m_searching;
8888}
8989
90+bool Scope::activationInProgress() const
91+{
92+ return false;
93+}
94+
9095bool Scope::favorite() const
9196{
9297 return m_favorite;
@@ -194,14 +199,14 @@ void Scope::activate(QVariant const& result, QString const& categoryId)
194199 }
195200}
196201
197−PreviewStack* Scope::preview(QVariant const& result, QString const& /*categoryId*/)
202+PreviewModel* Scope::preview(QVariant const& result, QString const& /*categoryId*/)
198203{
199204 Q_UNUSED(result);
200205
201206 if (m_returnNullPreview) {
202207 return nullptr;
203208 } else {
204− return new PreviewStack(this);
209+ return new PreviewModel(this, this);
205210 }
206211}
207212
tests/mocks/Unity/fake_scope.h+3−2
@@ -20,7 +20,7 @@
2020#include <unity/shell/scopes/ScopeInterface.h>
2121
2222#include "fake_categories.h"
23−#include "fake_previewstack.h"
23+#include "fake_previewmodel.h"
2424
2525#include <QTimer>
2626
@@ -42,6 +42,7 @@ public:
4242 QString searchHint() const override;
4343 QString shortcut() const override;
4444 bool searchInProgress() const override;
45+ bool activationInProgress() const override;
4546 bool favorite() const override;
4647 unity::shell::scopes::CategoriesInterface* categories() const override;
4748 QString searchQuery() const override;
@@ -61,7 +62,7 @@ public:
6162 Q_INVOKABLE void setSearchInProgress(const bool inProg); // This is not invokable in the Interface, here for testing benefits
6263
6364 Q_INVOKABLE void activate(QVariant const& result, QString const& categoryId) override;
64− Q_INVOKABLE PreviewStack* preview(QVariant const& result, QString const& categoryId) override;
65+ Q_INVOKABLE PreviewModel* preview(QVariant const& result, QString const& categoryId) override;
6566 Q_INVOKABLE void cancelActivation() override;
6667 Q_INVOKABLE void closeScope(unity::shell::scopes::ScopeInterface* scope) override;
6768
tests/mocks/Unity/fake_unity_plugin.cpp+1−2
@@ -47,10 +47,9 @@ void FakeUnityPlugin::registerTypes(const char *uri)
4747 qmlRegisterUncreatableType<unity::shell::scopes::SettingsModelInterface>(uri, 0, 2, "SettingsModel", "Can't create SettingsModel object in QML.");
4848 qmlRegisterUncreatableType<unity::shell::scopes::NavigationInterface>(uri, 0, 2, "Navigation", "Can't create Navigation object in QML.");
4949 qmlRegisterUncreatableType<unity::shell::scopes::CategoriesInterface>(uri, 0, 2, "Categories", "Can't create Categories object in QML.");
50− qmlRegisterUncreatableType<unity::shell::scopes::PreviewModelInterface>(uri, 0, 2, "PreviewModel", "Can't create new PreviewModel in QML. Get them from PreviewStack instance.");
50+ qmlRegisterUncreatableType<unity::shell::scopes::PreviewModelInterface>(uri, 0, 2, "PreviewModel", "Can't create new PreviewModel in QML. Get them from Scope instance.");
5151 qmlRegisterUncreatableType<ResultsModel>(uri, 0, 2, "ResultsModel", "Can't create ResultsModel object in QML.");
5252 qmlRegisterType<ResultsModel>(uri, 0, 2, "FakeResultsModel");
5353 qmlRegisterType<PreviewModel>(uri, 0, 2, "FakePreviewModel");
5454 qmlRegisterUncreatableType<PreviewWidgetModel>(uri, 0, 2, "PreviewWidgetModel", "Can't create new PreviewWidgetModel in QML. Get them from PreviewModel instance.");
55− qmlRegisterUncreatableType<PreviewStack>(uri, 0, 2, "PreviewStack", "Can't create new PreviewStack in QML. Get them from Scope instance.");
5655}
tests/mocks/Utils/CMakeLists.txt+1
@@ -18,6 +18,7 @@ set(QMLPLUGIN_SRC
1818 ${CMAKE_SOURCE_DIR}/plugins/Utils/inputwatcher.cpp
1919 ${CMAKE_SOURCE_DIR}/plugins/Utils/applicationsfiltermodel.cpp
2020 ${CMAKE_SOURCE_DIR}/plugins/Utils/inputeventgenerator.cpp
21+ ${CMAKE_SOURCE_DIR}/plugins/Utils/deviceconfigparser.cpp
2122 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationManagerInterface.h
2223 constants.cpp
2324 plugin.cpp
tests/mocks/Utils/plugin.cpp+2
@@ -37,6 +37,7 @@
3737#include <easingcurve.h>
3838#include <applicationsfiltermodel.h>
3939#include <inputeventgenerator.h>
40+#include <deviceconfigparser.h>
4041
4142static QObject *createWindowStateStorage(QQmlEngine *engine, QJSEngine *scriptEngine)
4243{
@@ -67,6 +68,7 @@ void FakeUtilsPlugin::registerTypes(const char *uri)
6768 qmlRegisterType<ActiveFocusLogger>(uri, 0, 1, "ActiveFocusLogger");
6869 qmlRegisterType<ApplicationsFilterModel>(uri, 0, 1, "ApplicationsFilterModel");
6970 qmlRegisterType<InputEventGenerator>(uri, 0, 1, "InputEventGenerator");
71+ qmlRegisterType<DeviceConfigParser>(uri, 0, 1, "DeviceConfigParser");
7072}
7173
7274void FakeUtilsPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
tests/plugins/AccountsService/CMakeLists.txt+5
@@ -10,11 +10,13 @@ macro(make_dbus_class NAME INTERFACE)
1010endmacro(make_dbus_class)
1111
1212make_dbus_class(Accounts org.freedesktop.Accounts)
13+make_dbus_class(Input com.ubuntu.AccountsService.Input)
1314make_dbus_class(Properties org.freedesktop.DBus.Properties)
1415make_dbus_class(SecurityPrivacy com.ubuntu.touch.AccountsService.SecurityPrivacy)
1516make_dbus_class(Location com.ubuntu.location.providers.here.AccountsService)
1617make_dbus_class(AccountsUser org.freedesktop.Accounts.User)
1718make_dbus_class(AccountsPrivate com.canonical.unity.AccountsService.Private)
19+make_dbus_class(UscInput com.canonical.Unity.Input)
1820
1921include_directories(
2022 ${CMAKE_CURRENT_BINARY_DIR}
@@ -27,12 +29,15 @@ add_executable(mock-server
2729 ${CMAKE_CURRENT_BINARY_DIR}/AccountsAdaptor.cpp
2830 ${CMAKE_CURRENT_BINARY_DIR}/AccountsPrivateAdaptor.cpp
2931 ${CMAKE_CURRENT_BINARY_DIR}/AccountsUserAdaptor.cpp
32+ ${CMAKE_CURRENT_BINARY_DIR}/InputAdaptor.cpp
3033 ${CMAKE_CURRENT_BINARY_DIR}/PropertiesAdaptor.cpp
3134 ${CMAKE_CURRENT_BINARY_DIR}/LocationAdaptor.cpp
3235 ${CMAKE_CURRENT_BINARY_DIR}/SecurityPrivacyAdaptor.cpp
36+ ${CMAKE_CURRENT_BINARY_DIR}/UscInputAdaptor.cpp
3337 server.cpp
3438 AccountsServer.cpp
3539 PropertiesServer.cpp
40+ UscServer.cpp
3641 )
3742qt5_use_modules(mock-server Core DBus)
3843
tests/plugins/AccountsService/PropertiesServer.cpp+16−4
@@ -32,9 +32,9 @@ PropertiesServer::PropertiesServer(QObject *parent)
3232 Reset();
3333}
3434
35−QDBusVariant PropertiesServer::Get(const QString &interface, const QString &property)
35+QDBusVariant PropertiesServer::Get(const QString &interface, const QString &property) const
3636{
37− if (m_properties[interface].contains(property)) {
37+ if (m_properties.contains(interface) && m_properties[interface].contains(property)) {
3838 return QDBusVariant(m_properties[interface][property]);
3939 } else {
4040 sendErrorReply(QDBusError::InvalidArgs, "Bad interface or property");
@@ -42,6 +42,16 @@ QDBusVariant PropertiesServer::Get(const QString &interface, const QString &prop
4242 }
4343}
4444
45+QVariantMap PropertiesServer::GetAll(const QString &interface) const
46+{
47+ if (m_properties.contains(interface)) {
48+ return m_properties[interface];
49+ } else {
50+ sendErrorReply(QDBusError::InvalidArgs, "Bad interface");
51+ return QVariantMap();
52+ }
53+}
54+
4555void PropertiesServer::Set(const QString &interface, const QString &property, const QDBusVariant &variant)
4656{
4757 QVariant newValue = variant.variant();
@@ -57,8 +67,8 @@ void PropertiesServer::Set(const QString &interface, const QString &property, co
5767
5868 oldValue = newValue;
5969
60− // Special case for Background file.
61− if (interface == "org.freedesktop.Accounts.User" && property == "BackgroundFile") {
70+ // Special case for user properties.
71+ if (interface == "org.freedesktop.Accounts.User") {
6272 Q_EMIT Changed();
6373 } else {
6474 QVariantMap propertyChanges;
@@ -82,10 +92,12 @@ void PropertiesServer::Reset()
8292 m_properties["com.canonical.unity.AccountsService"]["LauncherItems"] = QVariant::fromValue(QList<QVariantMap>());
8393 m_properties["com.canonical.unity.AccountsService.Private"]["FailedLogins"] = 0;
8494 m_properties["com.ubuntu.touch.AccountsService.SecurityPrivacy"]["StatsWelcomeScreen"] = true;
95+ m_properties["com.ubuntu.AccountsService.Input"]["MousePrimaryButton"] = "right";
8596 m_properties["com.ubuntu.AccountsService.SecurityPrivacy"]["EnableLauncherWhileLocked"] = true;
8697 m_properties["com.ubuntu.AccountsService.SecurityPrivacy"]["EnableIndicatorsWhileLocked"] = true;
8798 m_properties["com.ubuntu.AccountsService.SecurityPrivacy"]["PasswordDisplayHint"] = AccountsService::Keyboard;
8899 m_properties["com.ubuntu.location.providers.here.AccountsService"]["LicenseAccepted"] = false;
89100 m_properties["com.ubuntu.location.providers.here.AccountsService"]["LicenseBasePath"] = "";
90101 m_properties["org.freedesktop.Accounts.User"]["BackgroundFile"] = "";
102+ m_properties["org.freedesktop.Accounts.User"]["RealName"] = "";
91103}
tests/plugins/AccountsService/PropertiesServer.h+2−1
@@ -34,7 +34,8 @@ public:
3434 explicit PropertiesServer(QObject *parent = 0);
3535
3636public Q_SLOTS:
37− QDBusVariant Get(const QString &interface, const QString &property);
37+ QDBusVariant Get(const QString &interface, const QString &property) const;
38+ QVariantMap GetAll(const QString &interface) const;
3839 void Set(const QString &interface, const QString &property, const QDBusVariant &variant);
3940
4041 // mock only.
tests/plugins/AccountsService/UscServer.cppnew file+28
@@ -0,0 +1,28 @@
1+/*
2+ * Copyright 2016 Canonical Ltd.
3+ *
4+ * This program is free software: you can redistribute it and/or modify it
5+ * under the terms of the GNU General Public License version 3, as published
6+ * by the Free Software Foundation.
7+ *
8+ * This program is distributed in the hope that it will be useful, but
9+ * WITHOUT ANY WARRANTY; without even the implied warranties of
10+ * MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
11+ * PURPOSE. See the GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * version 3 along with this program. If not, see
15+ * <http://www.gnu.org/licenses/>
16+ */
17+
18+#include "UscServer.h"
19+
20+UscServer::UscServer(QObject *parent)
21+ : QObject(parent)
22+{
23+}
24+
25+void UscServer::setMousePrimaryButton(int button)
26+{
27+ Q_EMIT setMousePrimaryButtonCalled(button);
28+}
tests/plugins/AccountsService/UscServer.hnew file+39
@@ -0,0 +1,39 @@
1+/*
2+ * Copyright 2016 Canonical Ltd.
3+ *
4+ * This program is free software: you can redistribute it and/or modify it
5+ * under the terms of the GNU General Public License version 3, as published
6+ * by the Free Software Foundation.
7+ *
8+ * This program is distributed in the hope that it will be useful, but
9+ * WITHOUT ANY WARRANTY; without even the implied warranties of
10+ * MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
11+ * PURPOSE. See the GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * version 3 along with this program. If not, see
15+ * <http://www.gnu.org/licenses/>
16+ */
17+
18+#ifndef UNITY_USCSERVER_H
19+#define UNITY_USCSERVER_H
20+
21+#include <QDBusContext>
22+#include <QObject>
23+
24+class UscServer: public QObject, protected QDBusContext
25+{
26+ Q_OBJECT
27+
28+public:
29+ explicit UscServer(QObject *parent = nullptr);
30+
31+public Q_SLOTS:
32+ void setMousePrimaryButton(int button);
33+
34+Q_SIGNALS:
35+ // mock only.
36+ void setMousePrimaryButtonCalled(int button);
37+};
38+
39+#endif
tests/plugins/AccountsService/client.cpp+63−9
@@ -42,7 +42,16 @@ public:
4242 : QObject(parent)
4343 , m_userInterface(nullptr)
4444 , m_spy(this, &AccountsServiceTest::propertiesChanged)
45+ , m_mousePrimaryButtonSpy(this, &AccountsServiceTest::setMousePrimaryButtonCalled)
4546 {
47+ m_uscInputInterface = new QDBusInterface("com.canonical.Unity.Input",
48+ "/com/canonical/Unity/Input",
49+ "com.canonical.Unity.Input",
50+ QDBusConnection::sessionBus(),
51+ this);
52+
53+ QObject::connect(m_uscInputInterface, SIGNAL(setMousePrimaryButtonCalled(int)),
54+ this, SIGNAL(setMousePrimaryButtonCalled(int)));
4655 }
4756
4857private Q_SLOTS:
@@ -71,6 +80,7 @@ private Q_SLOTS:
7180
7281 delete m_userInterface;
7382 m_spy.clear();
83+ m_mousePrimaryButtonSpy.clear();
7484 }
7585
7686 void testInvalids()
@@ -107,7 +117,7 @@ private Q_SLOTS:
107117 QCOMPARE(session.hereEnabled(), true);
108118 }
109119
110− void testAsynchornousChangeForDemoEdges()
120+ void testAsynchronousChangeForDemoEdges()
111121 {
112122 AccountsService session(this, QTest::currentTestFunction());
113123
@@ -119,7 +129,7 @@ private Q_SLOTS:
119129 QTRY_COMPARE(session.demoEdges(), true);
120130 }
121131
122− void testAsynchornousChangeForFailedLogins()
132+ void testAsynchronousChangeForFailedLogins()
123133 {
124134 AccountsService session(this, QTest::currentTestFunction());
125135
@@ -131,7 +141,7 @@ private Q_SLOTS:
131141 QTRY_COMPARE(session.failedLogins(), (uint)5);
132142 }
133143
134− void testAsynchornousChangeForStatsWelcomeScreen()
144+ void testAsynchronousChangeForStatsWelcomeScreen()
135145 {
136146 AccountsService session(this, QTest::currentTestFunction());
137147
@@ -143,7 +153,7 @@ private Q_SLOTS:
143153 QTRY_COMPARE(session.statsWelcomeScreen(), false);
144154 }
145155
146− void testAsynchornousChangeForStatsEnableLauncherWhileLocked()
156+ void testAsynchronousChangeForEnableLauncherWhileLocked()
147157 {
148158 AccountsService session(this, QTest::currentTestFunction());
149159
@@ -155,7 +165,7 @@ private Q_SLOTS:
155165 QTRY_COMPARE(session.enableLauncherWhileLocked(), false);
156166 }
157167
158− void testAsynchornousChangeForStatsEnableIndicatorsWhileLocked()
168+ void testAsynchronousChangeForEnableIndicatorsWhileLocked()
159169 {
160170 AccountsService session(this, QTest::currentTestFunction());
161171
@@ -167,7 +177,7 @@ private Q_SLOTS:
167177 QTRY_COMPARE(session.enableIndicatorsWhileLocked(), false);
168178 }
169179
170− void testAsynchornousChangeForStatsPasswordDisplayHint()
180+ void testAsynchronousChangeForPasswordDisplayHint()
171181 {
172182 AccountsService session(this, QTest::currentTestFunction());
173183
@@ -179,7 +189,7 @@ private Q_SLOTS:
179189 QTRY_COMPARE(session.passwordDisplayHint(), AccountsService::Numeric);
180190 }
181191
182− void testAsynchornousChangeForStatsLicenseAccepted()
192+ void testAsynchronousChangeForLicenseAccepted()
183193 {
184194 AccountsService session(this, QTest::currentTestFunction());
185195
@@ -191,7 +201,7 @@ private Q_SLOTS:
191201 QTRY_COMPARE(session.hereEnabled(), true);
192202 }
193203
194− void testAsynchornousChangeForLicenseBasePath()
204+ void testAsynchronousChangeForLicenseBasePath()
195205 {
196206 AccountsService session(this, QTest::currentTestFunction());
197207
@@ -203,7 +213,7 @@ private Q_SLOTS:
203213 QTRY_COMPARE(session.hereLicensePath(), QString("/"));
204214 }
205215
206− void testAsynchornousChangeForStatsBackgroundFile()
216+ void testAsynchronousChangeForBackgroundFile()
207217 {
208218 AccountsService session(this, QTest::currentTestFunction());
209219
@@ -215,12 +225,56 @@ private Q_SLOTS:
215225 QTRY_COMPARE(session.backgroundFile(), QString("/test/BackgroundFile"));
216226 }
217227
228+ void testProxyOnStartup()
229+ {
230+ AccountsService session(this, QTest::currentTestFunction());
231+
232+ QTRY_COMPARE(m_mousePrimaryButtonSpy.count(), 1);
233+ QList<QVariant> arguments = m_mousePrimaryButtonSpy.takeFirst();
234+ QCOMPARE(arguments.at(0).toInt(), 1);
235+ }
236+
237+ void testProxyOnChange()
238+ {
239+ AccountsService session(this, QTest::currentTestFunction());
240+ QTRY_COMPARE(m_mousePrimaryButtonSpy.count(), 1);
241+ m_mousePrimaryButtonSpy.clear();
242+
243+ ASSERT_DBUS_CALL(m_userInterface->asyncCall("Set",
244+ "com.ubuntu.AccountsService.Input",
245+ "MousePrimaryButton",
246+ dbusVariant("left")));
247+
248+ QTRY_COMPARE(m_mousePrimaryButtonSpy.count(), 1);
249+ QList<QVariant> arguments = m_mousePrimaryButtonSpy.takeFirst();
250+ QCOMPARE(arguments.at(0).toInt(), 0);
251+ }
252+
253+ void testInvalidPrimaryButton()
254+ {
255+ AccountsService session(this, QTest::currentTestFunction());
256+ QTRY_COMPARE(m_mousePrimaryButtonSpy.count(), 1);
257+ m_mousePrimaryButtonSpy.clear();
258+
259+ ASSERT_DBUS_CALL(m_userInterface->asyncCall("Set",
260+ "com.ubuntu.AccountsService.Input",
261+ "MousePrimaryButton",
262+ dbusVariant("NOPE")));
263+
264+ QTRY_COMPARE(m_mousePrimaryButtonSpy.count(), 1);
265+ QList<QVariant> arguments = m_mousePrimaryButtonSpy.takeFirst();
266+ QCOMPARE(arguments.at(0).toInt(), 0);
267+ }
268+
218269Q_SIGNALS:
219270 void propertiesChanged(const QString &interface, const QVariantMap &changed, const QStringList &invalid);
271+ void setMousePrimaryButtonCalled(int button);
220272
221273private:
274+ QDBusInterface* m_uscInputInterface;
222275 QDBusInterface* m_userInterface;
223276 QSignalSpy m_spy;
277+ QSignalSpy m_mousePrimaryButtonSpy;
224278};
225279
226280QTEST_MAIN(AccountsServiceTest)
tests/plugins/AccountsService/interfaces.xml+16
@@ -5,6 +5,11 @@
55 <arg name="property" type="s" direction="in" />
66 <arg name="value" type="v" direction="out" />
77 </method>
8+ <method name="GetAll">
9+ <annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="QVariantMap"/>
10+ <arg name="interface" type="s" direction="in" />
11+ <arg name="value" type="a{sv}" direction="out" />
12+ </method>
813 <method name="Set">
914 <arg name="interface" type="s" direction="in" />
1015 <arg name="property" type="s" direction="in" />
@@ -32,10 +37,21 @@
3237 <arg name="success" type="b" direction="out" />
3338 </method>
3439 </interface>
40+ <interface name="com.ubuntu.AccountsService.Input" />
3541 <interface name="com.ubuntu.touch.AccountsService.SecurityPrivacy" />
3642 <interface name="com.ubuntu.location.providers.here.AccountsService" />
3743 <interface name="org.freedesktop.Accounts.User">
3844 <signal name="Changed" />
3945 </interface>
4046 <interface name="com.canonical.unity.AccountsService.Private" />
47+
48+ <interface name="com.canonical.Unity.Input">
49+ <method name="setMousePrimaryButton">
50+ <arg name="button" type="i" direction="in" />
51+ </method>
52+ <!-- Just for testing -->
53+ <signal name="setMousePrimaryButtonCalled">
54+ <arg name="button" type="i" direction="out" />
55+ </signal>
56+ </interface>
4157</node>
tests/plugins/AccountsService/server.cpp+12
@@ -19,10 +19,13 @@
1919
2020#include "AccountsAdaptor.h"
2121#include "AccountsServer.h"
22+#include "InputAdaptor.h"
2223#include "PropertiesServer.h"
2324#include "SecurityPrivacyAdaptor.h"
2425#include "LocationAdaptor.h"
2526#include "AccountsPrivateAdaptor.h"
27+#include "UscInputAdaptor.h"
28+#include "UscServer.h"
2629#include <QCoreApplication>
2730
2831int main(int argc, char *argv[])
@@ -31,11 +34,20 @@ int main(int argc, char *argv[])
3134
3235 auto accounts = new AccountsServer(&a);
3336 new AccountsAdaptor(accounts);
37+ new InputAdaptor(accounts);
3438 new SecurityPrivacyAdaptor(accounts);
3539 new LocationAdaptor(accounts);
3640 new AccountsPrivateAdaptor(accounts);
41+
42+ auto usc = new UscServer(&a);
43+ new UscInputAdaptor(usc);
44+
3745 // We use the session bus for testing. The real plugin uses the system bus
3846 auto connection = QDBusConnection::sessionBus();
47+ if (!connection.registerObject("/com/canonical/Unity/Input", usc))
48+ return 1;
49+ if (!connection.registerService("com.canonical.Unity.Input"))
50+ return 1;
3951 if (!connection.registerObject("/org/freedesktop/Accounts", accounts))
4052 return 1;
4153 if (!connection.registerService("org.freedesktop.Accounts"))
tests/plugins/Dash/cardcreator/1.res+4−6
@@ -5,12 +5,10 @@ AbstractButton {
55 property string backgroundShapeStyle: "inset";
66 property real fontScale: 1.0;
77 property var scopeStyle: null;
8− property int titleAlignment: Text.AlignLeft;
98 property int fixedHeaderHeight: -1;
109 property size fixedArtShapeSize: Qt.size(-1, -1);
1110 readonly property string title: cardData && cardData["title"] || "";
12− property bool asynchronous: true;
13− property bool showHeader: true;
11+ property bool showHeader: true;
1412 implicitWidth: childrenRect.width;
1513 enabled: true;
1614
@@ -25,7 +23,7 @@ Item {
2523 objectName: "artShapeLoader";
2624 readonly property string cardArt: cardData && cardData["art"] || "";
2725 active: cardArt != "";
28− asynchronous: root.asynchronous;
26+ asynchronous: true;
2927 visible: status == Loader.Ready;
3028 sourceComponent: Item {
3129 id: artShape;
@@ -82,7 +80,7 @@ Item {
8280 id: artImage;
8381 objectName: "artImage";
8482 source: artShapeLoader.cardArt;
85− asynchronous: root.asynchronous;
83+ asynchronous: true;
8684 width: root.width;
8785 height: width / artShape.aspect;
8886 }
@@ -108,7 +106,7 @@ Label {
108106 width: undefined;
109107 text: root.title;
110108 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
111− horizontalAlignment: root.titleAlignment;
109+ horizontalAlignment: Text.AlignHCenter;
112110 }
113111UbuntuShape {
114112 id: touchdown;
tests/plugins/Dash/cardcreator/1.res.cardcreatornew file+119
@@ -0,0 +1,119 @@
1+AbstractButton {
2+ id: root;
3+ property var cardData;
4+ property string artShapeStyle: "inset";
5+ property string backgroundShapeStyle: "inset";
6+ property real fontScale: 1.0;
7+ property var scopeStyle: null;
8+ property size fixedArtShapeSize: Qt.size(-1, -1);
9+ readonly property string title: cardData && cardData["title"] || "";
10+ property bool showHeader: true;
11+ implicitWidth: childrenRect.width;
12+ enabled: true;
13+
14+readonly property size artShapeSize: artShapeLoader.item ? Qt.size(artShapeLoader.item.width, artShapeLoader.item.height) : Qt.size(-1, -1);
15+Item {
16+ id: artShapeHolder;
17+ height: root.fixedArtShapeSize.height > 0 ? root.fixedArtShapeSize.height : artShapeLoader.height;
18+ width: root.fixedArtShapeSize.width > 0 ? root.fixedArtShapeSize.width : artShapeLoader.width;
19+ anchors { horizontalCenter: parent.horizontalCenter; }
20+ Loader {
21+ id: artShapeLoader;
22+ objectName: "artShapeLoader";
23+ readonly property string cardArt: cardData && cardData["art"] || "";
24+ active: cardArt != "";
25+ asynchronous: false;
26+ visible: status == Loader.Ready;
27+ sourceComponent: Item {
28+ id: artShape;
29+ objectName: "artShape";
30+ visible: image.status == Image.Ready;
31+ readonly property alias image: artImage;
32+ ShaderEffectSource {
33+ id: artShapeSource;
34+ sourceItem: artImage;
35+ anchors.centerIn: parent;
36+ width: 1;
37+ height: 1;
38+ hideSource: true;
39+ }
40+ Loader {
41+ anchors.fill: parent;
42+ visible: true;
43+ sourceComponent: root.artShapeStyle === "icon" ? artShapeIconComponent : artShapeShapeComponent;
44+ Component {
45+ id: artShapeShapeComponent;
46+ UbuntuShape {
47+ source: artShapeSource;
48+ sourceFillMode: UbuntuShape.PreserveAspectCrop;
49+ radius: "medium";
50+ aspect: {
51+ switch (root.artShapeStyle) {
52+ case "inset": return UbuntuShape.Inset;
53+ case "shadow": return UbuntuShape.DropShadow;
54+ default:
55+ case "flat": return UbuntuShape.Flat;
56+ }
57+ }
58+ }
59+ }
60+ Component {
61+ id: artShapeIconComponent;
62+ ProportionalShape { source: artShapeSource; aspect: UbuntuShape.DropShadow; }
63+ }
64+ }
65+ readonly property real fixedArtShapeSizeAspect: (root.fixedArtShapeSize.height > 0 && root.fixedArtShapeSize.width > 0) ? root.fixedArtShapeSize.width / root.fixedArtShapeSize.height : -1;
66+ readonly property real aspect: fixedArtShapeSizeAspect > 0 ? fixedArtShapeSizeAspect : 1.6;
67+ Component.onCompleted: { updateWidthHeightBindings(); }
68+ Connections { target: root; onFixedArtShapeSizeChanged: updateWidthHeightBindings(); }
69+ function updateWidthHeightBindings() {
70+ if (root.fixedArtShapeSize.height > 0 && root.fixedArtShapeSize.width > 0) {
71+ width = root.fixedArtShapeSize.width;
72+ height = root.fixedArtShapeSize.height;
73+ } else {
74+ width = Qt.binding(function() { return image.status !== Image.Ready ? 0 : image.width });
75+ height = Qt.binding(function() { return image.status !== Image.Ready ? 0 : image.height });
76+ }
77+ }
78+ CroppedImageMinimumSourceSize {
79+ id: artImage;
80+ objectName: "artImage";
81+ source: artShapeLoader.cardArt;
82+ asynchronous: false;
83+ width: root.width;
84+ height: width / artShape.aspect;
85+ }
86+ }
87+ }
88+ }
89+readonly property int headerHeight: titleLabel.height;
90+Label {
91+ id: titleLabel;
92+ objectName: "titleLabel";
93+ anchors { right: parent.right;
94+ left: parent.left;
95+ top: artShapeHolder.bottom;
96+ topMargin: units.gu(1);
97+ }
98+ elide: Text.ElideRight;
99+ fontSize: "small";
100+ wrapMode: Text.Wrap;
101+ maximumLineCount: 2;
102+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
103+ color: root.scopeStyle ? root.scopeStyle.foreground : theme.palette.normal.baseText;
104+ visible: showHeader ;
105+ width: undefined;
106+ text: root.title;
107+ font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
108+ horizontalAlignment: Text.AlignHCenter;
109+ }
110+UbuntuShape {
111+ id: touchdown;
112+ objectName: "touchdown";
113+ anchors { fill: artShapeHolder }
114+ visible: root.artShapeStyle != "shadow" && root.artShapeStyle != "icon" && root.pressed;
115+ radius: "medium";
116+ borderSource: "radius_pressed.sci"
117+}
118+implicitHeight: titleLabel.y + titleLabel.height + units.gu(1);
119+}
tests/plugins/Dash/cardcreator/10.res+3−5
@@ -5,11 +5,9 @@ AbstractButton {
55 property string backgroundShapeStyle: "inset";
66 property real fontScale: 1.0;
77 property var scopeStyle: null;
8− property int titleAlignment: Text.AlignLeft;
98 property int fixedHeaderHeight: -1;
109 property size fixedArtShapeSize: Qt.size(-1, -1);
1110 readonly property string title: cardData && cardData["title"] || "";
12− property bool asynchronous: true;
1311 property bool showHeader: true;
1412 implicitWidth: childrenRect.width;
1513 enabled: true;
@@ -18,7 +16,7 @@ Loader {
1816 id: backgroundLoader;
1917 objectName: "backgroundLoader";
2018 anchors.fill: parent;
21− asynchronous: root.asynchronous;
19+ asynchronous: true;
2220 visible: status == Loader.Ready;
2321 sourceComponent: UbuntuShape {
2422 objectName: "background";
@@ -59,7 +57,7 @@ Row {
5957 objectName: "outerRow";
6058 property real margins: units.gu(1);
6159 spacing: margins;
62− height: root.fixedHeaderHeight != -1 ? root.fixedHeaderHeight : implicitHeight;
60+ height: root.fixedHeaderHeight;
6361 anchors { top: parent.top;
6462 topMargin: units.gu(1);
6563left: parent.left;
@@ -103,7 +101,7 @@ left: parent.left;
103101 width: undefined;
104102 text: root.title;
105103 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
106− horizontalAlignment: root.titleAlignment;
104+ horizontalAlignment: Text.AlignLeft;
107105 }
108106,Label {
109107 id: subtitleLabel;
tests/plugins/Dash/cardcreator/10.res.cardcreatornew file+137
@@ -0,0 +1,137 @@
1+AbstractButton {
2+ id: root;
3+ property var cardData;
4+ property string artShapeStyle: "inset";
5+ property string backgroundShapeStyle: "inset";
6+ property real fontScale: 1.0;
7+ property var scopeStyle: null;
8+ property size fixedArtShapeSize: Qt.size(-1, -1);
9+ readonly property string title: cardData && cardData["title"] || "";
10+ property bool showHeader: true;
11+ implicitWidth: childrenRect.width;
12+ enabled: true;
13+
14+Loader {
15+ id: backgroundLoader;
16+ objectName: "backgroundLoader";
17+ anchors.fill: parent;
18+ asynchronous: false;
19+ visible: status == Loader.Ready;
20+ sourceComponent: UbuntuShape {
21+ objectName: "background";
22+ radius: "medium";
23+ aspect: {
24+ switch (root.backgroundShapeStyle) {
25+ case "inset": return UbuntuShape.Inset;
26+ case "shadow": return UbuntuShape.DropShadow;
27+ default:
28+ case "flat": return UbuntuShape.Flat;
29+ }
30+ }
31+ backgroundColor: getColor(0) || "white";
32+ secondaryBackgroundColor: getColor(1) || backgroundColor;
33+ backgroundMode: UbuntuShape.VerticalGradient;
34+ anchors.fill: parent;
35+ source: backgroundImage.source ? backgroundImage : null;
36+ property real luminance: Style.luminance(backgroundColor);
37+ property Image backgroundImage: Image {
38+ objectName: "backgroundImage";
39+ source: {
40+ if (cardData && typeof cardData["background"] === "string") return cardData["background"];
41+ else return "";
42+ }
43+ }
44+ function getColor(index) {
45+ if (cardData && typeof cardData["background"] === "object"
46+ && (cardData["background"]["type"] === "color" || cardData["background"]["type"] === "gradient")) {
47+ return cardData["background"]["elements"][index];
48+ } else return index === 0 ? "" : "";
49+ }
50+ }
51+ }
52+readonly property size artShapeSize: Qt.size(-1, -1);
53+readonly property int headerHeight: row.height;
54+Row {
55+ id: row;
56+ objectName: "outerRow";
57+ property real margins: units.gu(1);
58+ spacing: margins;
59+ anchors { top: parent.top;
60+ topMargin: units.gu(1);
61+left: parent.left;
62+ }
63+ anchors.right: parent.right;
64+ anchors.margins: margins;
65+ anchors.rightMargin: 0;
66+ data: [
67+ CroppedImageMinimumSourceSize {
68+ id: mascotImage;
69+ objectName: "mascotImage";
70+ anchors { verticalCenter: parent.verticalCenter; }
71+ source: cardData && cardData["mascot"] || "";
72+ width: units.gu(6);
73+ height: units.gu(5.625);
74+ horizontalAlignment: Image.AlignHCenter;
75+ verticalAlignment: Image.AlignVCenter;
76+ visible: showHeader;
77+
78+ }
79+,Item {
80+ id: headerTitleContainer;
81+ anchors { verticalCenter: parent.verticalCenter; }
82+ width: parent.width - x;
83+ implicitHeight: titleLabel.height + subtitleLabel.height;
84+ data: [
85+ Label {
86+ id: titleLabel;
87+ objectName: "titleLabel";
88+ anchors { right: parent.right;
89+rightMargin: units.gu(1);
90+left: parent.left;
91+ top: parent.top; }
92+ elide: Text.ElideRight;
93+ fontSize: "small";
94+ wrapMode: Text.Wrap;
95+ maximumLineCount: 2;
96+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
97+ color: backgroundLoader.active && backgroundLoader.item && root.scopeStyle ? root.scopeStyle.getTextColor(backgroundLoader.item.luminance) : (backgroundLoader.item && backgroundLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
98+ visible: showHeader ;
99+ width: undefined;
100+ text: root.title;
101+ font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
102+ horizontalAlignment: Text.AlignLeft;
103+ }
104+,Label {
105+ id: subtitleLabel;
106+ objectName: "subtitleLabel";
107+ anchors { right: parent.right;
108+ left: parent.left;
109+rightMargin: units.gu(1);
110+top: titleLabel.bottom;
111+ }
112+ anchors.topMargin: units.dp(2);
113+ elide: Text.ElideRight;
114+ maximumLineCount: 1;
115+ fontSize: "x-small";
116+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
117+ color: backgroundLoader.active && backgroundLoader.item && root.scopeStyle ? root.scopeStyle.getTextColor(backgroundLoader.item.luminance) : (backgroundLoader.item && backgroundLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
118+ visible: titleLabel.visible && titleLabel.text;
119+ text: cardData && cardData["subtitle"] || "";
120+ font.weight: Font.Light;
121+ }
122+
123+ ]
124+ }
125+
126+ ]
127+ }
128+UbuntuShape {
129+ id: touchdown;
130+ objectName: "touchdown";
131+ anchors { fill: backgroundLoader }
132+ visible: root.artShapeStyle != "shadow" && root.artShapeStyle != "icon" && root.pressed;
133+ radius: "medium";
134+ borderSource: "radius_pressed.sci"
135+ }
136+implicitHeight: row.y + row.height + units.gu(1);
137+}
tests/plugins/Dash/cardcreator/11.res+5−7
@@ -5,11 +5,9 @@ AbstractButton {
55 property string backgroundShapeStyle: "inset";
66 property real fontScale: 1.0;
77 property var scopeStyle: null;
8− property int titleAlignment: Text.AlignLeft;
98 property int fixedHeaderHeight: -1;
109 property size fixedArtShapeSize: Qt.size(-1, -1);
1110 readonly property string title: cardData && cardData["title"] || "";
12− property bool asynchronous: true;
1311 property bool showHeader: true;
1412 implicitWidth: childrenRect.width;
1513 enabled: true;
@@ -18,7 +16,7 @@ Loader {
1816 id: backgroundLoader;
1917 objectName: "backgroundLoader";
2018 anchors.fill: parent;
21− asynchronous: root.asynchronous;
19+ asynchronous: true;
2220 visible: status == Loader.Ready;
2321 sourceComponent: UbuntuShape {
2422 objectName: "background";
@@ -63,7 +61,7 @@ Item {
6361 objectName: "artShapeLoader";
6462 readonly property string cardArt: cardData && cardData["art"] || decodeURI("%5C");
6563 active: cardArt != "";
66− asynchronous: root.asynchronous;
64+ asynchronous: true;
6765 visible: status == Loader.Ready;
6866 sourceComponent: Item {
6967 id: artShape;
@@ -120,7 +118,7 @@ Item {
120118 id: artImage;
121119 objectName: "artImage";
122120 source: artShapeLoader.cardArt;
123− asynchronous: root.asynchronous;
121+ asynchronous: true;
124122 width: root.width;
125123 height: width / artShape.aspect;
126124 onStatusChanged: if (status === Image.Error) source = decodeURI("%5C");
@@ -134,7 +132,7 @@ Row {
134132 objectName: "outerRow";
135133 property real margins: units.gu(1);
136134 spacing: margins;
137− height: root.fixedHeaderHeight != -1 ? root.fixedHeaderHeight : implicitHeight;
135+ height: root.fixedHeaderHeight;
138136 anchors { top: artShapeHolder.bottom;
139137 topMargin: units.gu(1);
140138left: parent.left;
@@ -178,7 +176,7 @@ left: parent.left;
178176 width: undefined;
179177 text: root.title;
180178 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
181− horizontalAlignment: root.titleAlignment;
179+ horizontalAlignment: Text.AlignLeft;
182180 }
183181,Label {
184182 id: subtitleLabel;
tests/plugins/Dash/cardcreator/11.res.cardcreatornew file+210
@@ -0,0 +1,210 @@
1+AbstractButton {
2+ id: root;
3+ property var cardData;
4+ property string artShapeStyle: "inset";
5+ property string backgroundShapeStyle: "inset";
6+ property real fontScale: 1.0;
7+ property var scopeStyle: null;
8+ property size fixedArtShapeSize: Qt.size(-1, -1);
9+ readonly property string title: cardData && cardData["title"] || "";
10+ property bool showHeader: true;
11+ implicitWidth: childrenRect.width;
12+ enabled: true;
13+
14+Loader {
15+ id: backgroundLoader;
16+ objectName: "backgroundLoader";
17+ anchors.fill: parent;
18+ asynchronous: false;
19+ visible: status == Loader.Ready;
20+ sourceComponent: UbuntuShape {
21+ objectName: "background";
22+ radius: "medium";
23+ aspect: {
24+ switch (root.backgroundShapeStyle) {
25+ case "inset": return UbuntuShape.Inset;
26+ case "shadow": return UbuntuShape.DropShadow;
27+ default:
28+ case "flat": return UbuntuShape.Flat;
29+ }
30+ }
31+ backgroundColor: getColor(0) || "white";
32+ secondaryBackgroundColor: getColor(1) || backgroundColor;
33+ backgroundMode: UbuntuShape.VerticalGradient;
34+ anchors.fill: parent;
35+ source: backgroundImage.source ? backgroundImage : null;
36+ property real luminance: Style.luminance(backgroundColor);
37+ property Image backgroundImage: Image {
38+ objectName: "backgroundImage";
39+ source: {
40+ if (cardData && typeof cardData["background"] === "string") return cardData["background"];
41+ else return "";
42+ }
43+ }
44+ function getColor(index) {
45+ if (cardData && typeof cardData["background"] === "object"
46+ && (cardData["background"]["type"] === "color" || cardData["background"]["type"] === "gradient")) {
47+ return cardData["background"]["elements"][index];
48+ } else return index === 0 ? "#E9E9E9" : undefined;
49+ }
50+ }
51+ }
52+readonly property size artShapeSize: artShapeLoader.item ? Qt.size(artShapeLoader.item.width, artShapeLoader.item.height) : Qt.size(-1, -1);
53+Item {
54+ id: artShapeHolder;
55+ height: root.fixedArtShapeSize.height > 0 ? root.fixedArtShapeSize.height : artShapeLoader.height;
56+ width: root.fixedArtShapeSize.width > 0 ? root.fixedArtShapeSize.width : artShapeLoader.width;
57+ anchors { horizontalCenter: parent.horizontalCenter; }
58+ Loader {
59+ id: artShapeLoader;
60+ objectName: "artShapeLoader";
61+ readonly property string cardArt: cardData && cardData["art"] || "";
62+ active: cardArt != "";
63+ asynchronous: false;
64+ visible: status == Loader.Ready;
65+ sourceComponent: Item {
66+ id: artShape;
67+ objectName: "artShape";
68+ visible: image.status == Image.Ready;
69+ readonly property alias image: artImage;
70+ ShaderEffectSource {
71+ id: artShapeSource;
72+ sourceItem: artImage;
73+ anchors.centerIn: parent;
74+ width: 1;
75+ height: 1;
76+ hideSource: true;
77+ }
78+ Loader {
79+ anchors.fill: parent;
80+ visible: true;
81+ sourceComponent: root.artShapeStyle === "icon" ? artShapeIconComponent : artShapeShapeComponent;
82+ Component {
83+ id: artShapeShapeComponent;
84+ UbuntuShape {
85+ source: artShapeSource;
86+ sourceFillMode: UbuntuShape.PreserveAspectCrop;
87+ radius: "medium";
88+ aspect: {
89+ switch (root.artShapeStyle) {
90+ case "inset": return UbuntuShape.Inset;
91+ case "shadow": return UbuntuShape.DropShadow;
92+ default:
93+ case "flat": return UbuntuShape.Flat;
94+ }
95+ }
96+ }
97+ }
98+ Component {
99+ id: artShapeIconComponent;
100+ ProportionalShape { source: artShapeSource; aspect: UbuntuShape.DropShadow; }
101+ }
102+ }
103+ readonly property real fixedArtShapeSizeAspect: (root.fixedArtShapeSize.height > 0 && root.fixedArtShapeSize.width > 0) ? root.fixedArtShapeSize.width / root.fixedArtShapeSize.height : -1;
104+ readonly property real aspect: fixedArtShapeSizeAspect > 0 ? fixedArtShapeSizeAspect : 1;
105+ Component.onCompleted: { updateWidthHeightBindings(); }
106+ Connections { target: root; onFixedArtShapeSizeChanged: updateWidthHeightBindings(); }
107+ function updateWidthHeightBindings() {
108+ if (root.fixedArtShapeSize.height > 0 && root.fixedArtShapeSize.width > 0) {
109+ width = root.fixedArtShapeSize.width;
110+ height = root.fixedArtShapeSize.height;
111+ } else {
112+ width = Qt.binding(function() { return image.status !== Image.Ready ? 0 : image.width });
113+ height = Qt.binding(function() { return image.status !== Image.Ready ? 0 : image.height });
114+ }
115+ }
116+ CroppedImageMinimumSourceSize {
117+ id: artImage;
118+ objectName: "artImage";
119+ source: artShapeLoader.cardArt;
120+ asynchronous: false;
121+ width: root.width;
122+ height: width / artShape.aspect;
123+ }
124+ }
125+ }
126+ }
127+readonly property int headerHeight: row.height;
128+Row {
129+ id: row;
130+ objectName: "outerRow";
131+ property real margins: units.gu(1);
132+ spacing: margins;
133+ anchors { top: artShapeHolder.bottom;
134+ topMargin: units.gu(1);
135+left: parent.left;
136+ }
137+ anchors.right: parent.right;
138+ anchors.margins: margins;
139+ anchors.rightMargin: 0;
140+ data: [
141+ CroppedImageMinimumSourceSize {
142+ id: mascotImage;
143+ objectName: "mascotImage";
144+ anchors { verticalCenter: parent.verticalCenter; }
145+ source: cardData && cardData["mascot"] || "";
146+ width: units.gu(6);
147+ height: units.gu(5.625);
148+ horizontalAlignment: Image.AlignHCenter;
149+ verticalAlignment: Image.AlignVCenter;
150+ visible: showHeader;
151+ }
152+,Item {
153+ id: headerTitleContainer;
154+ anchors { verticalCenter: parent.verticalCenter; }
155+ width: parent.width - x;
156+ implicitHeight: titleLabel.height + subtitleLabel.height;
157+ data: [
158+ Label {
159+ id: titleLabel;
160+ objectName: "titleLabel";
161+ anchors { right: parent.right;
162+rightMargin: units.gu(1);
163+left: parent.left;
164+ top: parent.top; }
165+ elide: Text.ElideRight;
166+ fontSize: "small";
167+ wrapMode: Text.Wrap;
168+ maximumLineCount: 2;
169+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
170+ color: backgroundLoader.active && backgroundLoader.item && root.scopeStyle ? root.scopeStyle.getTextColor(backgroundLoader.item.luminance) : (backgroundLoader.item && backgroundLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
171+ visible: showHeader ;
172+ width: undefined;
173+ text: root.title;
174+ font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
175+ horizontalAlignment: Text.AlignLeft;
176+ }
177+,Label {
178+ id: subtitleLabel;
179+ objectName: "subtitleLabel";
180+ anchors { right: parent.right;
181+ left: parent.left;
182+rightMargin: units.gu(1);
183+top: titleLabel.bottom;
184+ }
185+ anchors.topMargin: units.dp(2);
186+ elide: Text.ElideRight;
187+ maximumLineCount: 1;
188+ fontSize: "x-small";
189+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
190+ color: backgroundLoader.active && backgroundLoader.item && root.scopeStyle ? root.scopeStyle.getTextColor(backgroundLoader.item.luminance) : (backgroundLoader.item && backgroundLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
191+ visible: titleLabel.visible && titleLabel.text;
192+ text: cardData && cardData["subtitle"] || "";
193+ font.weight: Font.Light;
194+ }
195+
196+ ]
197+ }
198+
199+ ]
200+ }
201+UbuntuShape {
202+ id: touchdown;
203+ objectName: "touchdown";
204+ anchors { fill: backgroundLoader }
205+ visible: root.artShapeStyle != "shadow" && root.artShapeStyle != "icon" && root.pressed;
206+ radius: "medium";
207+ borderSource: "radius_pressed.sci"
208+ }
209+implicitHeight: row.y + row.height + units.gu(1);
210+}
tests/plugins/Dash/cardcreator/2.res+3−5
@@ -5,11 +5,9 @@ AbstractButton {
55 property string backgroundShapeStyle: "inset";
66 property real fontScale: 1.0;
77 property var scopeStyle: null;
8− property int titleAlignment: Text.AlignLeft;
98 property int fixedHeaderHeight: -1;
109 property size fixedArtShapeSize: Qt.size(-1, -1);
1110 readonly property string title: cardData && cardData["title"] || "";
12− property bool asynchronous: true;
1311 property bool showHeader: true;
1412 implicitWidth: childrenRect.width;
1513 enabled: true;
@@ -18,7 +16,7 @@ Loader {
1816 id: backgroundLoader;
1917 objectName: "backgroundLoader";
2018 anchors.fill: parent;
21− asynchronous: root.asynchronous;
19+ asynchronous: true;
2220 visible: status == Loader.Ready;
2321 sourceComponent: UbuntuShape {
2422 objectName: "background";
@@ -59,7 +57,7 @@ Row {
5957 objectName: "outerRow";
6058 property real margins: units.gu(1);
6159 spacing: margins;
62− height: root.fixedHeaderHeight != -1 ? root.fixedHeaderHeight : implicitHeight;
60+ height: root.fixedHeaderHeight;
6361 anchors { top: parent.top;
6462 topMargin: units.gu(1);
6563 left: parent.left;
@@ -102,7 +100,7 @@ CroppedImageMinimumSourceSize {
102100 width: undefined;
103101 text: root.title;
104102 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
105− horizontalAlignment: root.titleAlignment;
103+ horizontalAlignment: Text.AlignLeft;
106104 }
107105 ,Label {
108106 id: subtitleLabel;
tests/plugins/Dash/cardcreator/2.res.cardcreatornew file+136
@@ -0,0 +1,136 @@
1+AbstractButton {
2+ id: root;
3+ property var cardData;
4+ property string artShapeStyle: "inset";
5+ property string backgroundShapeStyle: "inset";
6+ property real fontScale: 1.0;
7+ property var scopeStyle: null;
8+ property size fixedArtShapeSize: Qt.size(-1, -1);
9+ readonly property string title: cardData && cardData["title"] || "";
10+ property bool showHeader: true;
11+ implicitWidth: childrenRect.width;
12+ enabled: true;
13+
14+Loader {
15+ id: backgroundLoader;
16+ objectName: "backgroundLoader";
17+ anchors.fill: parent;
18+ asynchronous: false;
19+ visible: status == Loader.Ready;
20+ sourceComponent: UbuntuShape {
21+ objectName: "background";
22+ radius: "medium";
23+ aspect: {
24+ switch (root.backgroundShapeStyle) {
25+ case "inset": return UbuntuShape.Inset;
26+ case "shadow": return UbuntuShape.DropShadow;
27+ default:
28+ case "flat": return UbuntuShape.Flat;
29+ }
30+ }
31+ backgroundColor: getColor(0) || "white";
32+ secondaryBackgroundColor: getColor(1) || backgroundColor;
33+ backgroundMode: UbuntuShape.VerticalGradient;
34+ anchors.fill: parent;
35+ source: backgroundImage.source ? backgroundImage : null;
36+ property real luminance: Style.luminance(backgroundColor);
37+ property Image backgroundImage: Image {
38+ objectName: "backgroundImage";
39+ source: {
40+ if (cardData && typeof cardData["background"] === "string") return cardData["background"];
41+ else return "";
42+ }
43+ }
44+ function getColor(index) {
45+ if (cardData && typeof cardData["background"] === "object"
46+ && (cardData["background"]["type"] === "color" || cardData["background"]["type"] === "gradient")) {
47+ return cardData["background"]["elements"][index];
48+ } else return index === 0 ? "#E9E9E9" : undefined;
49+ }
50+ }
51+ }
52+readonly property size artShapeSize: Qt.size(-1, -1);
53+readonly property int headerHeight: row.height;
54+Row {
55+ id: row;
56+ objectName: "outerRow";
57+ property real margins: units.gu(1);
58+ spacing: margins;
59+ anchors { top: parent.top;
60+ topMargin: units.gu(1);
61+ left: parent.left;
62+ }
63+ anchors.right: parent.right;
64+ anchors.margins: margins;
65+ anchors.rightMargin: 0;
66+ data: [
67+CroppedImageMinimumSourceSize {
68+ id: mascotImage;
69+ objectName: "mascotImage";
70+ anchors { verticalCenter: parent.verticalCenter; }
71+ source: cardData && cardData["mascot"] || "";
72+ width: units.gu(6);
73+ height: units.gu(5.625);
74+ horizontalAlignment: Image.AlignHCenter;
75+ verticalAlignment: Image.AlignVCenter;
76+ visible: showHeader;
77+ }
78+,Item {
79+ id: headerTitleContainer;
80+ anchors { verticalCenter: parent.verticalCenter; }
81+ width: parent.width - x;
82+ implicitHeight: titleLabel.height + subtitleLabel.height;
83+ data: [
84+ Label {
85+ id: titleLabel;
86+ objectName: "titleLabel";
87+ anchors { right: parent.right;
88+ rightMargin: units.gu(1);
89+ left: parent.left;
90+ top: parent.top; }
91+ elide: Text.ElideRight;
92+ fontSize: "small";
93+ wrapMode: Text.Wrap;
94+ maximumLineCount: 2;
95+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
96+ color: backgroundLoader.active && backgroundLoader.item && root.scopeStyle ? root.scopeStyle.getTextColor(backgroundLoader.item.luminance) : (backgroundLoader.item && backgroundLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
97+ visible: showHeader ;
98+ width: undefined;
99+ text: root.title;
100+ font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
101+ horizontalAlignment: Text.AlignLeft;
102+ }
103+ ,Label {
104+ id: subtitleLabel;
105+ objectName: "subtitleLabel";
106+ anchors { right: parent.right;
107+ left: parent.left;
108+ rightMargin: units.gu(1);
109+ top: titleLabel.bottom;
110+ }
111+ anchors.topMargin: units.dp(2);
112+ elide: Text.ElideRight;
113+ maximumLineCount: 1;
114+ fontSize: "x-small";
115+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
116+ color: backgroundLoader.active && backgroundLoader.item && root.scopeStyle ? root.scopeStyle.getTextColor(backgroundLoader.item.luminance) : (backgroundLoader.item && backgroundLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
117+ visible: titleLabel.visible && titleLabel.text;
118+ text: cardData && cardData["subtitle"] || "";
119+ font.weight: Font.Light;
120+ }
121+
122+ ]
123+ }
124+
125+ ]
126+ }
127+UbuntuShape {
128+ id: touchdown;
129+ objectName: "touchdown";
130+ anchors { fill: backgroundLoader }
131+ visible: root.artShapeStyle != "shadow" && root.artShapeStyle != "icon" && root.pressed;
132+ radius: "medium";
133+ borderSource: "radius_pressed.sci"
134+}
135+implicitHeight: row.y + row.height + units.gu(1);
136+}
tests/plugins/Dash/cardcreator/3.res+3−5
@@ -5,11 +5,9 @@ AbstractButton {
55 property string backgroundShapeStyle: "inset";
66 property real fontScale: 1.0;
77 property var scopeStyle: null;
8− property int titleAlignment: Text.AlignLeft;
98 property int fixedHeaderHeight: -1;
109 property size fixedArtShapeSize: Qt.size(-1, -1);
1110 readonly property string title: cardData && cardData["title"] || "";
12− property bool asynchronous: true;
1311 property bool showHeader: true;
1412 implicitWidth: childrenRect.width;
1513 enabled: true;
@@ -25,7 +23,7 @@ Item {
2523 objectName: "artShapeLoader";
2624 readonly property string cardArt: cardData && cardData["art"] || decodeURI("IHAVE%5C%22ESCAPED%5C%22QUOTES%5C%22");
2725 active: cardArt != "";
28− asynchronous: root.asynchronous;
26+ asynchronous: true;
2927 visible: status == Loader.Ready;
3028 sourceComponent: Item {
3129 id: artShape;
@@ -82,7 +80,7 @@ Item {
8280 id: artImage;
8381 objectName: "artImage";
8482 source: artShapeLoader.cardArt;
85− asynchronous: root.asynchronous;
83+ asynchronous: true;
8684 width: root.width;
8785 height: width / artShape.aspect;
8886 onStatusChanged: if (status === Image.Error) source = decodeURI("IHAVE%5C%22ESCAPED%5C%22QUOTES%5C%22");
@@ -109,7 +107,7 @@ Label {
109107 width: undefined;
110108 text: root.title;
111109 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
112− horizontalAlignment: root.titleAlignment;
110+ horizontalAlignment: Text.AlignLeft;
113111 }
114112Label {
115113 id: subtitleLabel;
tests/plugins/Dash/cardcreator/3.res.cardcreatornew file+137
@@ -0,0 +1,137 @@
1+AbstractButton {
2+ id: root;
3+ property var cardData;
4+ property string artShapeStyle: "inset";
5+ property string backgroundShapeStyle: "inset";
6+ property real fontScale: 1.0;
7+ property var scopeStyle: null;
8+ property size fixedArtShapeSize: Qt.size(-1, -1);
9+ readonly property string title: cardData && cardData["title"] || "";
10+ property bool showHeader: true;
11+ implicitWidth: childrenRect.width;
12+ enabled: true;
13+
14+readonly property size artShapeSize: artShapeLoader.item ? Qt.size(artShapeLoader.item.width, artShapeLoader.item.height) : Qt.size(-1, -1);
15+Item {
16+ id: artShapeHolder;
17+ height: root.fixedArtShapeSize.height > 0 ? root.fixedArtShapeSize.height : artShapeLoader.height;
18+ width: root.fixedArtShapeSize.width > 0 ? root.fixedArtShapeSize.width : artShapeLoader.width;
19+ anchors { horizontalCenter: parent.horizontalCenter; }
20+ Loader {
21+ id: artShapeLoader;
22+ objectName: "artShapeLoader";
23+ readonly property string cardArt: cardData && cardData["art"] || "";
24+ active: cardArt != "";
25+ asynchronous: false;
26+ visible: status == Loader.Ready;
27+ sourceComponent: Item {
28+ id: artShape;
29+ objectName: "artShape";
30+ visible: image.status == Image.Ready;
31+ readonly property alias image: artImage;
32+ ShaderEffectSource {
33+ id: artShapeSource;
34+ sourceItem: artImage;
35+ anchors.centerIn: parent;
36+ width: 1;
37+ height: 1;
38+ hideSource: true;
39+ }
40+ Loader {
41+ anchors.fill: parent;
42+ visible: true;
43+ sourceComponent: root.artShapeStyle === "icon" ? artShapeIconComponent : artShapeShapeComponent;
44+ Component {
45+ id: artShapeShapeComponent;
46+ UbuntuShape {
47+ source: artShapeSource;
48+ sourceFillMode: UbuntuShape.PreserveAspectCrop;
49+ radius: "medium";
50+ aspect: {
51+ switch (root.artShapeStyle) {
52+ case "inset": return UbuntuShape.Inset;
53+ case "shadow": return UbuntuShape.DropShadow;
54+ default:
55+ case "flat": return UbuntuShape.Flat;
56+ }
57+ }
58+ }
59+ }
60+ Component {
61+ id: artShapeIconComponent;
62+ ProportionalShape { source: artShapeSource; aspect: UbuntuShape.DropShadow; }
63+ }
64+ }
65+ readonly property real fixedArtShapeSizeAspect: (root.fixedArtShapeSize.height > 0 && root.fixedArtShapeSize.width > 0) ? root.fixedArtShapeSize.width / root.fixedArtShapeSize.height : -1;
66+ readonly property real aspect: fixedArtShapeSizeAspect > 0 ? fixedArtShapeSizeAspect : 0.75;
67+ Component.onCompleted: { updateWidthHeightBindings(); }
68+ Connections { target: root; onFixedArtShapeSizeChanged: updateWidthHeightBindings(); }
69+ function updateWidthHeightBindings() {
70+ if (root.fixedArtShapeSize.height > 0 && root.fixedArtShapeSize.width > 0) {
71+ width = root.fixedArtShapeSize.width;
72+ height = root.fixedArtShapeSize.height;
73+ } else {
74+ width = Qt.binding(function() { return image.status !== Image.Ready ? 0 : image.width });
75+ height = Qt.binding(function() { return image.status !== Image.Ready ? 0 : image.height });
76+ }
77+ }
78+ CroppedImageMinimumSourceSize {
79+ id: artImage;
80+ objectName: "artImage";
81+ source: artShapeLoader.cardArt;
82+ asynchronous: false;
83+ width: root.width;
84+ height: width / artShape.aspect;
85+ }
86+ }
87+ }
88+ }
89+readonly property int headerHeight: titleLabel.height + subtitleLabel.height + subtitleLabel.anchors.topMargin;
90+Label {
91+ id: titleLabel;
92+ objectName: "titleLabel";
93+ anchors { right: parent.right;
94+ left: parent.left;
95+ top: artShapeHolder.bottom;
96+ topMargin: units.gu(1);
97+ }
98+ elide: Text.ElideRight;
99+ fontSize: "small";
100+ wrapMode: Text.Wrap;
101+ maximumLineCount: 2;
102+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
103+ color: root.scopeStyle ? root.scopeStyle.foreground : theme.palette.normal.baseText;
104+ visible: showHeader ;
105+ width: undefined;
106+ text: root.title;
107+ font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
108+ horizontalAlignment: Text.AlignLeft;
109+ }
110+Label {
111+ id: subtitleLabel;
112+ objectName: "subtitleLabel";
113+ anchors { left: titleLabel.left;
114+ leftMargin: titleLabel.leftMargin;
115+ right: titleLabel.right;
116+ top: titleLabel.bottom;
117+ }
118+ anchors.topMargin: units.dp(2);
119+ elide: Text.ElideRight;
120+ maximumLineCount: 1;
121+ fontSize: "x-small";
122+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
123+ color: root.scopeStyle ? root.scopeStyle.foreground : theme.palette.normal.baseText;
124+ visible: titleLabel.visible && titleLabel.text;
125+ text: cardData && cardData["subtitle"] || "";
126+ font.weight: Font.Light;
127+ }
128+UbuntuShape {
129+ id: touchdown;
130+ objectName: "touchdown";
131+ anchors { fill: artShapeHolder }
132+ visible: root.artShapeStyle != "shadow" && root.artShapeStyle != "icon" && root.pressed;
133+ radius: "medium";
134+ borderSource: "radius_pressed.sci"
135+}
136+implicitHeight: subtitleLabel.y + subtitleLabel.height + units.gu(1);
137+}
tests/plugins/Dash/cardcreator/4.res+3−5
@@ -5,11 +5,9 @@ AbstractButton {
55 property string backgroundShapeStyle: "inset";
66 property real fontScale: 1.0;
77 property var scopeStyle: null;
8− property int titleAlignment: Text.AlignLeft;
98 property int fixedHeaderHeight: -1;
109 property size fixedArtShapeSize: Qt.size(-1, -1);
1110 readonly property string title: cardData && cardData["title"] || "";
12− property bool asynchronous: true;
1311 property bool showHeader: true;
1412 implicitWidth: childrenRect.width;
1513 enabled: true;
@@ -21,7 +19,7 @@ Row {
2119 objectName: "outerRow";
2220 property real margins: units.gu(1);
2321 spacing: margins;
24− height: root.fixedHeaderHeight != -1 ? root.fixedHeaderHeight : implicitHeight;
22+ height: root.fixedHeaderHeight;
2523 anchors { top: parent.top;
2624 topMargin: units.gu(1);
2725 left: parent.left;
@@ -33,7 +31,7 @@ data: [
3331Loader {
3432 id: mascotShapeLoader;
3533 objectName: "mascotShapeLoader";
36− asynchronous: root.asynchronous;
34+ asynchronous: true;
3735 active: mascotImage.status === Image.Ready;
3836 visible: showHeader && active && status == Loader.Ready;
3937 width: units.gu(6);
@@ -77,7 +75,7 @@ Label {
7775 width: undefined;
7876 text: root.title;
7977 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
80− horizontalAlignment: root.titleAlignment;
78+ horizontalAlignment: Text.AlignLeft;
8179 }
8280,Label {
8381 id: subtitleLabel;
tests/plugins/Dash/cardcreator/4.res.cardcreatornew file+109
@@ -0,0 +1,109 @@
1+AbstractButton {
2+ id: root;
3+ property var cardData;
4+ property string artShapeStyle: "inset";
5+ property string backgroundShapeStyle: "inset";
6+ property real fontScale: 1.0;
7+ property var scopeStyle: null;
8+ property size fixedArtShapeSize: Qt.size(-1, -1);
9+ readonly property string title: cardData && cardData["title"] || "";
10+ property bool showHeader: true;
11+ implicitWidth: childrenRect.width;
12+ enabled: true;
13+
14+readonly property size artShapeSize: Qt.size(-1, -1);
15+readonly property int headerHeight: row.height;
16+Row {
17+ id: row;
18+ objectName: "outerRow";
19+ property real margins: units.gu(1);
20+ spacing: margins;
21+ anchors { top: parent.top;
22+ topMargin: units.gu(1);
23+ left: parent.left;
24+}
25+ anchors.right: parent.right;
26+ anchors.margins: margins;
27+ anchors.rightMargin: 0;
28+data: [
29+Loader {
30+ id: mascotShapeLoader;
31+ objectName: "mascotShapeLoader";
32+ asynchronous: false;
33+ active: mascotImage.status === Image.Ready;
34+ visible: showHeader && active && status == Loader.Ready;
35+ width: units.gu(6);
36+ height: units.gu(5.625);
37+ sourceComponent: UbuntuShape { image: mascotImage }
38+ anchors { verticalCenter: parent.verticalCenter; }
39+ }
40+
41+,CroppedImageMinimumSourceSize {
42+ id: mascotImage;
43+ objectName: "mascotImage";
44+ anchors { verticalCenter: parent.verticalCenter; }
45+ source: cardData && cardData["mascot"] || "";
46+ width: units.gu(6);
47+ height: units.gu(5.625);
48+ horizontalAlignment: Image.AlignHCenter;
49+ verticalAlignment: Image.AlignVCenter;
50+ visible: false;
51+ }
52+
53+,Item {
54+ id: headerTitleContainer;
55+ anchors { verticalCenter: parent.verticalCenter; }
56+ width: parent.width - x;
57+ implicitHeight: titleLabel.height + subtitleLabel.height;
58+ data: [
59+Label {
60+ id: titleLabel;
61+ objectName: "titleLabel";
62+ anchors { right: parent.right;
63+ rightMargin: units.gu(1);
64+ left: parent.left;
65+ top: parent.top; }
66+ elide: Text.ElideRight;
67+ fontSize: "small";
68+ wrapMode: Text.Wrap;
69+ maximumLineCount: 2;
70+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
71+ color: root.scopeStyle ? root.scopeStyle.foreground : theme.palette.normal.baseText;
72+ visible: showHeader ;
73+ width: undefined;
74+ text: root.title;
75+ font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
76+ horizontalAlignment: Text.AlignLeft;
77+ }
78+,Label {
79+ id: subtitleLabel;
80+ objectName: "subtitleLabel";
81+ anchors { right: parent.right;
82+ left: parent.left;
83+ rightMargin: units.gu(1);
84+ top: titleLabel.bottom;
85+ }
86+ anchors.topMargin: units.dp(2);
87+ elide: Text.ElideRight;
88+ maximumLineCount: 1;
89+ fontSize: "x-small";
90+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
91+ color: root.scopeStyle ? root.scopeStyle.foreground : theme.palette.normal.baseText;
92+ visible: titleLabel.visible && titleLabel.text;
93+ text: cardData && cardData["subtitle"] || "";
94+ font.weight: Font.Light;
95+ }
96+]
97+}
98+]
99+}
100+UbuntuShape {
101+ id: touchdown;
102+ objectName: "touchdown";
103+ anchors { fill: root }
104+ visible: root.artShapeStyle != "shadow" && root.artShapeStyle != "icon" && root.pressed;
105+ radius: "medium";
106+ borderSource: "radius_pressed.sci"
107+}
108+implicitHeight: row.y + row.height + units.gu(1);
109+}
tests/plugins/Dash/cardcreator/5.res+5−7
@@ -5,11 +5,9 @@ AbstractButton {
55 property string backgroundShapeStyle: "inset";
66 property real fontScale: 1.0;
77 property var scopeStyle: null;
8− property int titleAlignment: Text.AlignLeft;
98 property int fixedHeaderHeight: -1;
109 property size fixedArtShapeSize: Qt.size(-1, -1);
1110 readonly property string title: cardData && cardData["title"] || "";
12− property bool asynchronous: true;
1311 property bool showHeader: true;
1412 implicitWidth: childrenRect.width;
1513 enabled: false;
@@ -25,7 +23,7 @@ Item {
2523 objectName: "artShapeLoader";
2624 readonly property string cardArt: cardData && cardData["art"] || "";
2725 active: cardArt != "";
28− asynchronous: root.asynchronous;
26+ asynchronous: true;
2927 visible: status == Loader.Ready;
3028 sourceComponent: Item {
3129 id: artShape;
@@ -82,7 +80,7 @@ Item {
8280 id: artImage;
8381 objectName: "artImage";
8482 source: artShapeLoader.cardArt;
85− asynchronous: root.asynchronous;
83+ asynchronous: true;
8684 width: root.width;
8785 height: width / artShape.aspect;
8886 }
@@ -91,10 +89,10 @@ Item {
9189 }
9290Loader {
9391 id: overlayLoader;
94− readonly property real overlayHeight: (fixedHeaderHeight > 0 ? fixedHeaderHeight : headerHeight) + units.gu(2);
92+ readonly property real overlayHeight: root.fixedHeaderHeight + units.gu(2);
9593 anchors.fill: artShapeHolder;
9694 active: artShapeLoader.active && artShapeLoader.item && artShapeLoader.item.image.status === Image.Ready || false;
97− asynchronous: root.asynchronous;
95+ asynchronous: true;
9896 visible: showHeader && status == Loader.Ready;
9997 sourceComponent: UbuntuShapeOverlay {
10098 id: overlay;
@@ -126,7 +124,7 @@ Label {
126124 width: undefined;
127125 text: root.title;
128126 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
129− horizontalAlignment: root.titleAlignment;
127+ horizontalAlignment: Text.AlignLeft;
130128 }
131129Label {
132130 id: subtitleLabel;
tests/plugins/Dash/cardcreator/5.res.cardcreatornew file+156
@@ -0,0 +1,156 @@
1+AbstractButton {
2+ id: root;
3+ property var cardData;
4+ property string artShapeStyle: "inset";
5+ property string backgroundShapeStyle: "inset";
6+ property real fontScale: 1.0;
7+ property var scopeStyle: null;
8+ property size fixedArtShapeSize: Qt.size(-1, -1);
9+ readonly property string title: cardData && cardData["title"] || "";
10+ property bool showHeader: true;
11+ implicitWidth: childrenRect.width;
12+ enabled: false;
13+
14+readonly property size artShapeSize: artShapeLoader.item ? Qt.size(artShapeLoader.item.width, artShapeLoader.item.height) : Qt.size(-1, -1);
15+Item {
16+ id: artShapeHolder;
17+ height: root.fixedArtShapeSize.height > 0 ? root.fixedArtShapeSize.height : artShapeLoader.height;
18+ width: root.fixedArtShapeSize.width > 0 ? root.fixedArtShapeSize.width : artShapeLoader.width;
19+ anchors { horizontalCenter: parent.horizontalCenter; }
20+ Loader {
21+ id: artShapeLoader;
22+ objectName: "artShapeLoader";
23+ readonly property string cardArt: cardData && cardData["art"] || "";
24+ active: cardArt != "";
25+ asynchronous: false;
26+ visible: status == Loader.Ready;
27+ sourceComponent: Item {
28+ id: artShape;
29+ objectName: "artShape";
30+ visible: image.status == Image.Ready;
31+ readonly property alias image: artImage;
32+ ShaderEffectSource {
33+ id: artShapeSource;
34+ sourceItem: artImage;
35+ anchors.centerIn: parent;
36+ width: 1;
37+ height: 1;
38+ hideSource: false;
39+ }
40+ Loader {
41+ anchors.fill: parent;
42+ visible: false;
43+ sourceComponent: root.artShapeStyle === "icon" ? artShapeIconComponent : artShapeShapeComponent;
44+ Component {
45+ id: artShapeShapeComponent;
46+ UbuntuShape {
47+ source: artShapeSource;
48+ sourceFillMode: UbuntuShape.PreserveAspectCrop;
49+ radius: "medium";
50+ aspect: {
51+ switch (root.artShapeStyle) {
52+ case "inset": return UbuntuShape.Inset;
53+ case "shadow": return UbuntuShape.DropShadow;
54+ default:
55+ case "flat": return UbuntuShape.Flat;
56+ }
57+ }
58+ }
59+ }
60+ Component {
61+ id: artShapeIconComponent;
62+ ProportionalShape { source: artShapeSource; aspect: UbuntuShape.DropShadow; }
63+ }
64+ }
65+ readonly property real fixedArtShapeSizeAspect: (root.fixedArtShapeSize.height > 0 && root.fixedArtShapeSize.width > 0) ? root.fixedArtShapeSize.width / root.fixedArtShapeSize.height : -1;
66+ readonly property real aspect: fixedArtShapeSizeAspect > 0 ? fixedArtShapeSizeAspect : 1;
67+ Component.onCompleted: { updateWidthHeightBindings(); }
68+ Connections { target: root; onFixedArtShapeSizeChanged: updateWidthHeightBindings(); }
69+ function updateWidthHeightBindings() {
70+ if (root.fixedArtShapeSize.height > 0 && root.fixedArtShapeSize.width > 0) {
71+ width = root.fixedArtShapeSize.width;
72+ height = root.fixedArtShapeSize.height;
73+ } else {
74+ width = Qt.binding(function() { return image.status !== Image.Ready ? 0 : image.width });
75+ height = Qt.binding(function() { return image.status !== Image.Ready ? 0 : image.height });
76+ }
77+ }
78+ CroppedImageMinimumSourceSize {
79+ id: artImage;
80+ objectName: "artImage";
81+ source: artShapeLoader.cardArt;
82+ asynchronous: false;
83+ width: root.width;
84+ height: width / artShape.aspect;
85+ }
86+ }
87+ }
88+ }
89+Loader {
90+ id: overlayLoader;
91+ readonly property real overlayHeight: headerHeight + units.gu(2);
92+ anchors.fill: artShapeHolder;
93+ active: artShapeLoader.active && artShapeLoader.item && artShapeLoader.item.image.status === Image.Ready || false;
94+ asynchronous: false;
95+ visible: showHeader && status == Loader.Ready;
96+ sourceComponent: UbuntuShapeOverlay {
97+ id: overlay;
98+ property real luminance: Style.luminance(overlayColor);
99+ aspect: UbuntuShape.Flat;
100+ radius: "medium";
101+ overlayColor: cardData && cardData["overlayColor"] || "#99000000";
102+ overlayRect: Qt.rect(0, 1 - overlayLoader.overlayHeight / height, 1, 1);
103+ }
104+ }
105+readonly property int headerHeight: titleLabel.height + subtitleLabel.height + subtitleLabel.anchors.topMargin;
106+Label {
107+ id: titleLabel;
108+ objectName: "titleLabel";
109+ anchors { right: parent.right;
110+ rightMargin: units.gu(1);
111+ left: parent.left;
112+ leftMargin: units.gu(1);
113+ top: overlayLoader.top;
114+ topMargin: units.gu(1) + overlayLoader.height - overlayLoader.overlayHeight;
115+ }
116+ elide: Text.ElideRight;
117+ fontSize: "small";
118+ wrapMode: Text.Wrap;
119+ maximumLineCount: 2;
120+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
121+ color: root.scopeStyle && overlayLoader.item ? root.scopeStyle.getTextColor(overlayLoader.item.luminance) : (overlayLoader.item && overlayLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
122+ visible: showHeader && overlayLoader.active;
123+ width: undefined;
124+ text: root.title;
125+ font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
126+ horizontalAlignment: Text.AlignLeft;
127+ }
128+Label {
129+ id: subtitleLabel;
130+ objectName: "subtitleLabel";
131+ anchors { left: titleLabel.left;
132+ leftMargin: titleLabel.leftMargin;
133+ rightMargin: units.gu(1);
134+ right: titleLabel.right;
135+ top: titleLabel.bottom;
136+ }
137+ anchors.topMargin: units.dp(2);
138+ elide: Text.ElideRight;
139+ maximumLineCount: 1;
140+ fontSize: "x-small";
141+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
142+ color: root.scopeStyle && overlayLoader.item ? root.scopeStyle.getTextColor(overlayLoader.item.luminance) : (overlayLoader.item && overlayLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
143+ visible: titleLabel.visible && titleLabel.text;
144+ text: cardData && cardData["subtitle"] || "";
145+ font.weight: Font.Light;
146+ }
147+UbuntuShape {
148+ id: touchdown;
149+ objectName: "touchdown";
150+ anchors { fill: artShapeHolder }
151+ visible: root.artShapeStyle != "shadow" && root.artShapeStyle != "icon" && root.pressed;
152+ radius: "medium";
153+ borderSource: "radius_pressed.sci"
154+}
155+implicitHeight: artShapeHolder.height;
156+}
tests/plugins/Dash/cardcreator/6.res+2−4
@@ -5,11 +5,9 @@ AbstractButton {
55 property string backgroundShapeStyle: "inset";
66 property real fontScale: 1.0;
77 property var scopeStyle: null;
8− property int titleAlignment: Text.AlignLeft;
98 property int fixedHeaderHeight: -1;
109 property size fixedArtShapeSize: Qt.size(-1, -1);
1110 readonly property string title: cardData && cardData["title"] || "";
12− property bool asynchronous: true;
1311 property bool showHeader: true;
1412 implicitWidth: childrenRect.width;
1513 enabled: true;
@@ -18,7 +16,7 @@ Loader {
1816 id: backgroundLoader;
1917 objectName: "backgroundLoader";
2018 anchors.fill: parent;
21− asynchronous: root.asynchronous;
19+ asynchronous: true;
2220 visible: status == Loader.Ready;
2321 sourceComponent: UbuntuShape {
2422 objectName: "background";
@@ -81,7 +79,7 @@ Item {
8179 width: undefined;
8280 text: root.title;
8381 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
84− horizontalAlignment: root.titleAlignment;
82+ horizontalAlignment: Text.AlignLeft;
8583 }
8684,Label {
8785 id: subtitleLabel;
tests/plugins/Dash/cardcreator/6.res.cardcreatornew file+126
@@ -0,0 +1,126 @@
1+AbstractButton {
2+ id: root;
3+ property var cardData;
4+ property string artShapeStyle: "inset";
5+ property string backgroundShapeStyle: "inset";
6+ property real fontScale: 1.0;
7+ property var scopeStyle: null;
8+ property size fixedArtShapeSize: Qt.size(-1, -1);
9+ readonly property string title: cardData && cardData["title"] || "";
10+ property bool showHeader: true;
11+ implicitWidth: childrenRect.width;
12+ enabled: true;
13+
14+Loader {
15+ id: backgroundLoader;
16+ objectName: "backgroundLoader";
17+ anchors.fill: parent;
18+ asynchronous: false;
19+ visible: status == Loader.Ready;
20+ sourceComponent: UbuntuShape {
21+ objectName: "background";
22+ radius: "medium";
23+ aspect: {
24+ switch (root.backgroundShapeStyle) {
25+ case "inset": return UbuntuShape.Inset;
26+ case "shadow": return UbuntuShape.DropShadow;
27+ default:
28+ case "flat": return UbuntuShape.Flat;
29+ }
30+ }
31+ backgroundColor: getColor(0) || "white";
32+ secondaryBackgroundColor: getColor(1) || backgroundColor;
33+ backgroundMode: UbuntuShape.VerticalGradient;
34+ anchors.fill: parent;
35+ source: backgroundImage.source ? backgroundImage : null;
36+ property real luminance: Style.luminance(backgroundColor);
37+ property Image backgroundImage: Image {
38+ objectName: "backgroundImage";
39+ source: {
40+ if (cardData && typeof cardData["background"] === "string") return cardData["background"];
41+ else return decodeURI("http://assets.ubuntu.com/sites/ubuntu/latest/u/img/logos/logo-ubuntu-grey.png");
42+ }
43+ }
44+ function getColor(index) {
45+ if (cardData && typeof cardData["background"] === "object"
46+ && (cardData["background"]["type"] === "color" || cardData["background"]["type"] === "gradient")) {
47+ return cardData["background"]["elements"][index];
48+ } else return index === 0 ? undefined : undefined;
49+ }
50+ }
51+ }
52+readonly property size artShapeSize: Qt.size(-1, -1);
53+readonly property int headerHeight: titleLabel.height + subtitleLabel.height + subtitleLabel.anchors.topMargin;
54+Item {
55+ id: headerTitleContainer;
56+ anchors { right: parent.right; left: parent.left;
57+ top: parent.top;
58+ topMargin: units.gu(1);
59+ leftMargin: units.gu(1);
60+ }
61+ width: parent.width - x;
62+ implicitHeight: titleLabel.height + subtitleLabel.height;
63+ data: [
64+ Label {
65+ id: titleLabel;
66+ objectName: "titleLabel";
67+ anchors { right: emblemIcon.left;
68+ rightMargin: emblemIcon.width > 0 ? units.gu(0.5) : 0;
69+ left: parent.left;
70+ top: parent.top; }
71+ elide: Text.ElideRight;
72+ fontSize: "small";
73+ wrapMode: Text.Wrap;
74+ maximumLineCount: 2;
75+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
76+ color: backgroundLoader.active && backgroundLoader.item && root.scopeStyle ? root.scopeStyle.getTextColor(backgroundLoader.item.luminance) : (backgroundLoader.item && backgroundLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
77+ visible: showHeader ;
78+ width: undefined;
79+ text: root.title;
80+ font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
81+ horizontalAlignment: Text.AlignLeft;
82+ }
83+,Label {
84+ id: subtitleLabel;
85+ objectName: "subtitleLabel";
86+ anchors { right: parent.right;
87+ left: parent.left;
88+ rightMargin: units.gu(1);
89+ top: titleLabel.bottom;
90+ }
91+ anchors.topMargin: units.dp(2);
92+ elide: Text.ElideRight;
93+ maximumLineCount: 1;
94+ fontSize: "x-small";
95+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
96+ color: backgroundLoader.active && backgroundLoader.item && root.scopeStyle ? root.scopeStyle.getTextColor(backgroundLoader.item.luminance) : (backgroundLoader.item && backgroundLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
97+ visible: titleLabel.visible && titleLabel.text;
98+ text: cardData && cardData["subtitle"] || "";
99+ font.weight: Font.Light;
100+ }
101+,Icon {
102+ id: emblemIcon;
103+ objectName: "emblemIcon";
104+ anchors {
105+ bottom: titleLabel.baseline;
106+ right: parent.right;
107+ rightMargin: units.gu(1);
108+ }
109+ source: cardData && cardData["emblem"] || "";
110+ color: backgroundLoader.active && backgroundLoader.item && root.scopeStyle ? root.scopeStyle.getTextColor(backgroundLoader.item.luminance) : (backgroundLoader.item && backgroundLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
111+ height: source != "" ? titleLabel.font.pixelSize : 0;
112+ width: implicitWidth > 0 && implicitHeight > 0 ? (implicitWidth / implicitHeight * height) : implicitWidth;
113+ }
114+
115+ ]
116+ }
117+UbuntuShape {
118+ id: touchdown;
119+ objectName: "touchdown";
120+ anchors { fill: backgroundLoader }
121+ visible: root.artShapeStyle != "shadow" && root.artShapeStyle != "icon" && root.pressed;
122+ radius: "medium";
123+ borderSource: "radius_pressed.sci"
124+}
125+implicitHeight: headerTitleContainer.y + headerTitleContainer.height + units.gu(1);
126+}
tests/plugins/Dash/cardcreator/7.res+3−5
@@ -5,11 +5,9 @@ AbstractButton {
55 property string backgroundShapeStyle: "inset";
66 property real fontScale: 1.0;
77 property var scopeStyle: null;
8− property int titleAlignment: Text.AlignLeft;
98 property int fixedHeaderHeight: -1;
109 property size fixedArtShapeSize: Qt.size(-1, -1);
1110 readonly property string title: cardData && cardData["title"] || "";
12− property bool asynchronous: true;
1311 property bool showHeader: true;
1412 implicitWidth: childrenRect.width;
1513 enabled: true;
@@ -18,7 +16,7 @@ Loader {
1816 id: backgroundLoader;
1917 objectName: "backgroundLoader";
2018 anchors.fill: parent;
21− asynchronous: root.asynchronous;
19+ asynchronous: true;
2220 visible: status == Loader.Ready;
2321 sourceComponent: UbuntuShape {
2422 objectName: "background";
@@ -59,7 +57,7 @@ Row {
5957 objectName: "outerRow";
6058 property real margins: units.gu(1);
6159 spacing: margins;
62− height: root.fixedHeaderHeight != -1 ? root.fixedHeaderHeight : implicitHeight;
60+ height: root.fixedHeaderHeight;
6361 anchors { top: parent.top;
6462 topMargin: units.gu(1);
6563 left: parent.left;
@@ -103,7 +101,7 @@ CroppedImageMinimumSourceSize {
103101 width: undefined;
104102 text: root.title;
105103 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
106− horizontalAlignment: root.titleAlignment;
104+ horizontalAlignment: Text.AlignLeft;
107105 }
108106,Label {
109107 id: subtitleLabel;
tests/plugins/Dash/cardcreator/7.res.cardcreatornew file+149
@@ -0,0 +1,149 @@
1+AbstractButton {
2+ id: root;
3+ property var cardData;
4+ property string artShapeStyle: "inset";
5+ property string backgroundShapeStyle: "inset";
6+ property real fontScale: 1.0;
7+ property var scopeStyle: null;
8+ property size fixedArtShapeSize: Qt.size(-1, -1);
9+ readonly property string title: cardData && cardData["title"] || "";
10+ property bool showHeader: true;
11+ implicitWidth: childrenRect.width;
12+ enabled: true;
13+
14+Loader {
15+ id: backgroundLoader;
16+ objectName: "backgroundLoader";
17+ anchors.fill: parent;
18+ asynchronous: false;
19+ visible: status == Loader.Ready;
20+ sourceComponent: UbuntuShape {
21+ objectName: "background";
22+ radius: "medium";
23+ aspect: {
24+ switch (root.backgroundShapeStyle) {
25+ case "inset": return UbuntuShape.Inset;
26+ case "shadow": return UbuntuShape.DropShadow;
27+ default:
28+ case "flat": return UbuntuShape.Flat;
29+ }
30+ }
31+ backgroundColor: getColor(0) || "white";
32+ secondaryBackgroundColor: getColor(1) || backgroundColor;
33+ backgroundMode: UbuntuShape.VerticalGradient;
34+ anchors.fill: parent;
35+ source: backgroundImage.source ? backgroundImage : null;
36+ property real luminance: Style.luminance(backgroundColor);
37+ property Image backgroundImage: Image {
38+ objectName: "backgroundImage";
39+ source: {
40+ if (cardData && typeof cardData["background"] === "string") return cardData["background"];
41+ else return "";
42+ }
43+ }
44+ function getColor(index) {
45+ if (cardData && typeof cardData["background"] === "object"
46+ && (cardData["background"]["type"] === "color" || cardData["background"]["type"] === "gradient")) {
47+ return cardData["background"]["elements"][index];
48+ } else return index === 0 ? "#E9E9E9" : "#E9AAE9";
49+ }
50+ }
51+ }
52+readonly property size artShapeSize: Qt.size(-1, -1);
53+readonly property int headerHeight: row.height;
54+Row {
55+ id: row;
56+ objectName: "outerRow";
57+ property real margins: units.gu(1);
58+ spacing: margins;
59+ anchors { top: parent.top;
60+ topMargin: units.gu(1);
61+ left: parent.left;
62+ }
63+ anchors.right: parent.right;
64+ anchors.margins: margins;
65+ anchors.rightMargin: 0;
66+ data: [
67+CroppedImageMinimumSourceSize {
68+ id: mascotImage;
69+ objectName: "mascotImage";
70+ anchors { verticalCenter: parent.verticalCenter; }
71+ source: cardData && cardData["mascot"] || "";
72+ width: units.gu(6);
73+ height: units.gu(5.625);
74+ horizontalAlignment: Image.AlignHCenter;
75+ verticalAlignment: Image.AlignVCenter;
76+ visible: showHeader;
77+ }
78+
79+,Item {
80+ id: headerTitleContainer;
81+ anchors { verticalCenter: parent.verticalCenter; }
82+ width: parent.width - x;
83+ implicitHeight: titleLabel.height + subtitleLabel.height + attributesRow.height;
84+ data: [
85+ Label {
86+ id: titleLabel;
87+ objectName: "titleLabel";
88+ anchors { right: parent.right;
89+ rightMargin: units.gu(1);
90+ left: parent.left;
91+ top: parent.top; }
92+ elide: Text.ElideRight;
93+ fontSize: "small";
94+ wrapMode: Text.Wrap;
95+ maximumLineCount: 2;
96+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
97+ color: backgroundLoader.active && backgroundLoader.item && root.scopeStyle ? root.scopeStyle.getTextColor(backgroundLoader.item.luminance) : (backgroundLoader.item && backgroundLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
98+ visible: showHeader ;
99+ width: undefined;
100+ text: root.title;
101+ font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
102+ horizontalAlignment: Text.AlignLeft;
103+ }
104+,Label {
105+ id: subtitleLabel;
106+ objectName: "subtitleLabel";
107+ anchors { right: parent.right;
108+ left: parent.left;
109+ rightMargin: units.gu(1);
110+ top: titleLabel.bottom;
111+ }
112+ anchors.topMargin: units.dp(2);
113+ elide: Text.ElideRight;
114+ maximumLineCount: 1;
115+ fontSize: "x-small";
116+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
117+ color: backgroundLoader.active && backgroundLoader.item && root.scopeStyle ? root.scopeStyle.getTextColor(backgroundLoader.item.luminance) : (backgroundLoader.item && backgroundLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
118+ visible: titleLabel.visible && titleLabel.text;
119+ text: cardData && cardData["subtitle"] || "";
120+ font.weight: Font.Light;
121+ }
122+,CardAttributes {
123+ id: attributesRow;
124+ objectName: "attributesRow";
125+ anchors { right: parent.right;
126+ left: parent.left;
127+ rightMargin: units.gu(1);
128+ top: subtitleLabel.bottom;
129+ }
130+ color: backgroundLoader.active && backgroundLoader.item && root.scopeStyle ? root.scopeStyle.getTextColor(backgroundLoader.item.luminance) : (backgroundLoader.item && backgroundLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
131+ fontScale: root.fontScale;
132+ model: cardData && cardData["attributes"];
133+ }
134+
135+ ]
136+ }
137+
138+ ]
139+ }
140+UbuntuShape {
141+ id: touchdown;
142+ objectName: "touchdown";
143+ anchors { fill: backgroundLoader }
144+ visible: root.artShapeStyle != "shadow" && root.artShapeStyle != "icon" && root.pressed;
145+ radius: "medium";
146+ borderSource: "radius_pressed.sci"
147+}
148+implicitHeight: row.y + row.height + units.gu(1);
149+}
tests/plugins/Dash/cardcreator/8.res+3−5
@@ -5,11 +5,9 @@ AbstractButton {
55 property string backgroundShapeStyle: "inset";
66 property real fontScale: 1.0;
77 property var scopeStyle: null;
8− property int titleAlignment: Text.AlignLeft;
98 property int fixedHeaderHeight: -1;
109 property size fixedArtShapeSize: Qt.size(-1, -1);
1110 readonly property string title: cardData && cardData["title"] || "";
12− property bool asynchronous: true;
1311 property bool showHeader: true;
1412 implicitWidth: childrenRect.width;
1513 enabled: true;
@@ -18,7 +16,7 @@ Loader {
1816 id: backgroundLoader;
1917 objectName: "backgroundLoader";
2018 anchors.fill: parent;
21− asynchronous: root.asynchronous;
19+ asynchronous: true;
2220 visible: status == Loader.Ready;
2321 sourceComponent: UbuntuShape {
2422 objectName: "background";
@@ -59,7 +57,7 @@ Row {
5957 objectName: "outerRow";
6058 property real margins: units.gu(1);
6159 spacing: margins;
62− height: root.fixedHeaderHeight != -1 ? root.fixedHeaderHeight : implicitHeight;
60+ height: root.fixedHeaderHeight;
6361 anchors { top: parent.top;
6462 topMargin: units.gu(1);
6563left: parent.left;
@@ -94,7 +92,7 @@ left: parent.left;
9492 width: parent.width - x;
9593 text: root.title;
9694 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
97− horizontalAlignment: root.titleAlignment;
95+ horizontalAlignment: Text.AlignLeft;
9896 }
9997
10098 ]
tests/plugins/Dash/cardcreator/8.res.cardcreatornew file+107
@@ -0,0 +1,107 @@
1+AbstractButton {
2+ id: root;
3+ property var cardData;
4+ property string artShapeStyle: "inset";
5+ property string backgroundShapeStyle: "inset";
6+ property real fontScale: 1.0;
7+ property var scopeStyle: null;
8+ property size fixedArtShapeSize: Qt.size(-1, -1);
9+ readonly property string title: cardData && cardData["title"] || "";
10+ property bool showHeader: true;
11+ implicitWidth: childrenRect.width;
12+ enabled: true;
13+
14+Loader {
15+ id: backgroundLoader;
16+ objectName: "backgroundLoader";
17+ anchors.fill: parent;
18+ asynchronous: false;
19+ visible: status == Loader.Ready;
20+ sourceComponent: UbuntuShape {
21+ objectName: "background";
22+ radius: "medium";
23+ aspect: {
24+ switch (root.backgroundShapeStyle) {
25+ case "inset": return UbuntuShape.Inset;
26+ case "shadow": return UbuntuShape.DropShadow;
27+ default:
28+ case "flat": return UbuntuShape.Flat;
29+ }
30+ }
31+ backgroundColor: getColor(0) || "white";
32+ secondaryBackgroundColor: getColor(1) || backgroundColor;
33+ backgroundMode: UbuntuShape.VerticalGradient;
34+ anchors.fill: parent;
35+ source: backgroundImage.source ? backgroundImage : null;
36+ property real luminance: Style.luminance(backgroundColor);
37+ property Image backgroundImage: Image {
38+ objectName: "backgroundImage";
39+ source: {
40+ if (cardData && typeof cardData["background"] === "string") return cardData["background"];
41+ else return "";
42+ }
43+ }
44+ function getColor(index) {
45+ if (cardData && typeof cardData["background"] === "object"
46+ && (cardData["background"]["type"] === "color" || cardData["background"]["type"] === "gradient")) {
47+ return cardData["background"]["elements"][index];
48+ } else return index === 0 ? "#E9E9E9" : "#E9AAE9";
49+ }
50+ }
51+ }
52+readonly property size artShapeSize: Qt.size(-1, -1);
53+readonly property int headerHeight: row.height;
54+Row {
55+ id: row;
56+ objectName: "outerRow";
57+ property real margins: units.gu(1);
58+ spacing: margins;
59+ anchors { top: parent.top;
60+ topMargin: units.gu(1);
61+left: parent.left;
62+ }
63+ anchors.right: parent.right;
64+ anchors.margins: margins;
65+ anchors.rightMargin: 0;
66+ data: [
67+ CroppedImageMinimumSourceSize {
68+ id: mascotImage;
69+ objectName: "mascotImage";
70+ anchors { verticalCenter: parent.verticalCenter; }
71+ source: cardData && cardData["mascot"] || "";
72+ width: units.gu(6);
73+ height: units.gu(5.625);
74+ horizontalAlignment: Image.AlignHCenter;
75+ verticalAlignment: Image.AlignVCenter;
76+ visible: showHeader;
77+ }
78+,Label {
79+ id: titleLabel;
80+ objectName: "titleLabel";
81+ anchors { verticalCenter: parent.verticalCenter;
82+ }
83+ elide: Text.ElideRight;
84+ fontSize: "small";
85+ wrapMode: Text.Wrap;
86+ maximumLineCount: 2;
87+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
88+ color: backgroundLoader.active && backgroundLoader.item && root.scopeStyle ? root.scopeStyle.getTextColor(backgroundLoader.item.luminance) : (backgroundLoader.item && backgroundLoader.item.luminance > 0.7 ? theme.palette.normal.baseText : "white");
89+ visible: showHeader ;
90+ width: parent.width - x;
91+ text: root.title;
92+ font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
93+ horizontalAlignment: Text.AlignLeft;
94+ }
95+
96+ ]
97+ }
98+UbuntuShape {
99+ id: touchdown;
100+ objectName: "touchdown";
101+ anchors { fill: backgroundLoader }
102+ visible: root.artShapeStyle != "shadow" && root.artShapeStyle != "icon" && root.pressed;
103+ radius: "medium";
104+ borderSource: "radius_pressed.sci"
105+}
106+implicitHeight: row.y + row.height + units.gu(1);
107+}
tests/plugins/Dash/cardcreator/9.res+4−5
@@ -5,11 +5,9 @@ AbstractButton {
55 property string backgroundShapeStyle: "inset";
66 property real fontScale: 1.0;
77 property var scopeStyle: null;
8− property int titleAlignment: Text.AlignLeft;
98 property int fixedHeaderHeight: -1;
109 property size fixedArtShapeSize: Qt.size(-1, -1);
1110 readonly property string title: cardData && cardData["title"] || "";
12− property bool asynchronous: true;
1311 property bool showHeader: true;
1412 implicitWidth: childrenRect.width;
1513 enabled: true;
@@ -36,7 +34,7 @@ top: parent.top;
3634 width: undefined;
3735 text: root.title;
3836 font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
39− horizontalAlignment: root.titleAlignment;
37+ horizontalAlignment: Text.AlignLeft;
4038 }
4139Label {
4240 id: subtitleLabel;
@@ -72,7 +70,7 @@ CardAudioProgress {
7270 id: audioButton;
7371 anchors.fill: undefined;
7472 width: height;
75− height: (root.fixedHeaderHeight > 0 ? root.fixedHeaderHeight : headerHeight) + 2 * units.gu(1);
73+ height: root.fixedHeaderHeight + 2 * units.gu(1);
7674 readonly property url source: (cardData["quickPreviewData"] && cardData["quickPreviewData"]["uri"]) || "";
7775 UbuntuShape {
7876 anchors.fill: parent;
@@ -93,7 +91,8 @@ CardAudioProgress {
9391 opacity: 0.9;
9492 name: DashAudioPlayer.playing && AudioUrlComparer.compare(parent.source, DashAudioPlayer.currentSource) ? "media-playback-pause" : "media-playback-start";
9593 color: "white";
96− }
94+ asynchronous: true;
95+ }
9796 onClicked: {
9897 if (AudioUrlComparer.compare(source, DashAudioPlayer.currentSource)) {
9998 if (DashAudioPlayer.playing) {
tests/plugins/Dash/cardcreator/9.res.cardcreatornew file+119
@@ -0,0 +1,119 @@
1+AbstractButton {
2+ id: root;
3+ property var cardData;
4+ property string artShapeStyle: "inset";
5+ property string backgroundShapeStyle: "inset";
6+ property real fontScale: 1.0;
7+ property var scopeStyle: null;
8+ property size fixedArtShapeSize: Qt.size(-1, -1);
9+ readonly property string title: cardData && cardData["title"] || "";
10+ property bool showHeader: true;
11+ implicitWidth: childrenRect.width;
12+ enabled: true;
13+
14+readonly property size artShapeSize: Qt.size(-1, -1);
15+readonly property int headerHeight: titleLabel.height + subtitleLabel.height + subtitleLabel.anchors.topMargin + audioProgressBar.height + audioProgressBar.anchors.topMargin;
16+Label {
17+ id: titleLabel;
18+ objectName: "titleLabel";
19+ anchors { right: parent.right;
20+rightMargin: units.gu(1);
21+left: audioButton.right;
22+ leftMargin: units.gu(1);
23+top: parent.top;
24+ topMargin: units.gu(1);
25+ }
26+ elide: Text.ElideRight;
27+ fontSize: "small";
28+ wrapMode: Text.Wrap;
29+ maximumLineCount: 2;
30+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
31+ color: root.scopeStyle ? root.scopeStyle.foreground : theme.palette.normal.baseText;
32+ visible: showHeader ;
33+ width: undefined;
34+ text: root.title;
35+ font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
36+ horizontalAlignment: Text.AlignLeft;
37+ }
38+Label {
39+ id: subtitleLabel;
40+ objectName: "subtitleLabel";
41+ anchors { left: titleLabel.left;
42+ leftMargin: titleLabel.leftMargin;
43+rightMargin: units.gu(1);
44+right: titleLabel.right;
45+top: titleLabel.bottom;
46+ }
47+ anchors.topMargin: units.dp(2);
48+ elide: Text.ElideRight;
49+ maximumLineCount: 1;
50+ fontSize: "x-small";
51+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
52+ color: root.scopeStyle ? root.scopeStyle.foreground : theme.palette.normal.baseText;
53+ visible: titleLabel.visible && titleLabel.text;
54+ text: cardData && cardData["subtitle"] || "";
55+ font.weight: Font.Light;
56+ }
57+CardAudioProgress {
58+ id: audioProgressBar;
59+ duration: (cardData["quickPreviewData"] && cardData["quickPreviewData"]["duration"]) || 0;
60+ source: (cardData["quickPreviewData"] && cardData["quickPreviewData"]["uri"]) || "";
61+ anchors {
62+ bottom: audioButton.bottom;
63+ left: audioButton.right;
64+ right: parent.right;
65+ margins: units.gu(1);
66+ }
67+ color: root.scopeStyle ? root.scopeStyle.foreground : theme.palette.normal.baseText;
68+ }AbstractButton {
69+ id: audioButton;
70+ anchors.fill: undefined;
71+ width: height;
72+ height: headerHeight + 2 * units.gu(1);
73+ readonly property url source: (cardData["quickPreviewData"] && cardData["quickPreviewData"]["uri"]) || "";
74+ UbuntuShape {
75+ anchors.fill: parent;
76+ visible: parent.pressed;
77+ radius: "medium";
78+ }
79+ Rectangle {
80+ color: Qt.rgba(0, 0, 0, 0.5);
81+ anchors.centerIn: parent;
82+ width: parent.width * 0.5;
83+ height: width;
84+ radius: width / 2;
85+ }
86+ Icon {
87+ anchors.centerIn: parent;
88+ width: parent.width * 0.3;
89+ height: width;
90+ opacity: 0.9;
91+ name: DashAudioPlayer.playing && AudioUrlComparer.compare(parent.source, DashAudioPlayer.currentSource) ? "media-playback-pause" : "media-playback-start";
92+ color: "white";
93+ asynchronous: false;
94+ }
95+ onClicked: {
96+ if (AudioUrlComparer.compare(source, DashAudioPlayer.currentSource)) {
97+ if (DashAudioPlayer.playing) {
98+ DashAudioPlayer.pause();
99+ } else {
100+ DashAudioPlayer.play();
101+ }
102+ } else {
103+ var playlist = (cardData["quickPreviewData"] && cardData["quickPreviewData"]["playlist"]) || null;
104+ DashAudioPlayer.playSource(source, playlist);
105+ }
106+ }
107+ onPressAndHold: {
108+ root.pressAndHold();
109+ }
110+ }UbuntuShape {
111+ id: touchdown;
112+ objectName: "touchdown";
113+ anchors { fill: root }
114+ visible: root.artShapeStyle != "shadow" && root.artShapeStyle != "icon" && root.pressed;
115+ radius: "medium";
116+ borderSource: "radius_pressed.sci"
117+ }
118+implicitHeight: audioButton.height;
119+}
tests/plugins/Dash/cardcreatortest.cpp+32−22
@@ -45,6 +45,30 @@ private Q_SLOTS:
4545 delete view;
4646 }
4747
48+ void compareFileContents(const QString &filePath, const QString cardStringResult)
49+ {
50+ QFile testResultFile(filePath);
51+ QVERIFY(testResultFile.open(QIODevice::ReadOnly));
52+ QTextStream ts2(&testResultFile);
53+
54+ // Record failed results to /tmp
55+ const QString executedResult = cardStringResult;
56+ QTemporaryFile tmpFile(QDir::tempPath() + QDir::separator() + "testCardCreatorFailedResultXXXXXX");
57+ tmpFile.open();
58+ tmpFile.setAutoRemove(false);
59+ tmpFile.write(executedResult.toUtf8().constData());
60+
61+ // Line by line comparison
62+ const QStringList expectedLines = ts2.readAll().trimmed().replace(QRegExp("\n\\s*\n"),"\n").split("\n");
63+ const QStringList cardStringResultLines = cardStringResult.trimmed().replace(QRegExp("\n\\s*\n"),"\n").split("\n");
64+ for (int i = 0; i < expectedLines.size(); ++i) {
65+ QCOMPARE(cardStringResultLines[i].simplified(), expectedLines[i].simplified());
66+ }
67+
68+ // Remove the result if it passed
69+ tmpFile.setAutoRemove(true);
70+ }
71+
4872 void testKnownCases()
4973 {
5074 const QString templateString("template: ");
@@ -68,33 +92,19 @@ private Q_SLOTS:
6892 const QString templateJSON = lines[0].mid(templateString.length());
6993 const QString componentsJSON = lines[1].mid(componentsString.length());
7094 const QString resultFileName = lines[2].mid(resultString.length());
71−
7295 QVariant cardStringResult;
73− QMetaObject::invokeMethod(view->rootObject(), "cardString", Q_RETURN_ARG(QVariant, cardStringResult), Q_ARG(QVariant, templateJSON), Q_ARG(QVariant, componentsJSON));
74−
75− QFile testResultFile(testDirPath + resultFileName);
76− QVERIFY(testResultFile.open(QIODevice::ReadOnly));
77− QTextStream ts2(&testResultFile);
96+ QVariant createCardComponentResult;
7897
79− // Record failed results to /tmp
80− const QString executedResult = cardStringResult.toString();
81− QTemporaryFile tmpFile(QDir::tempPath() + QDir::separator() + "testCardCreatorFailedResultXXXXXX");
82− tmpFile.open();
83− tmpFile.setAutoRemove(false);
84− tmpFile.write(executedResult.toUtf8().constData());
98+ QMetaObject::invokeMethod(view->rootObject(), "cardString", Q_RETURN_ARG(QVariant, cardStringResult), Q_ARG(QVariant, templateJSON), Q_ARG(QVariant, componentsJSON), Q_ARG(QVariant, false));
99+ compareFileContents(testDirPath + resultFileName, cardStringResult.toString());
85100
86− // Line by line comparison
87− const QStringList expectedLines = ts2.readAll().trimmed().replace(QRegExp("\n\\s*\n"),"\n").split("\n");
88− const QStringList cardStringResultLines = cardStringResult.toString().trimmed().replace(QRegExp("\n\\s*\n"),"\n").split("\n");
89− for (int i = 0; i < expectedLines.size(); ++i) {
90− QCOMPARE(cardStringResultLines[i].simplified(), expectedLines[i].simplified());
91− }
101+ QMetaObject::invokeMethod(view->rootObject(), "cardString", Q_RETURN_ARG(QVariant, cardStringResult), Q_ARG(QVariant, templateJSON), Q_ARG(QVariant, componentsJSON), Q_ARG(QVariant, true));
102+ compareFileContents(testDirPath + resultFileName + ".cardcreator", cardStringResult.toString());
92103
93− // Remove the result if it passed
94− tmpFile.setAutoRemove(true);
104+ QMetaObject::invokeMethod(view->rootObject(), "createCardComponent", Q_RETURN_ARG(QVariant, createCardComponentResult), Q_ARG(QVariant, templateJSON), Q_ARG(QVariant, componentsJSON), Q_ARG(QVariant, false));
105+ QVERIFY(createCardComponentResult.toBool());
95106
96− QVariant createCardComponentResult;
97− QMetaObject::invokeMethod(view->rootObject(), "createCardComponent", Q_RETURN_ARG(QVariant, createCardComponentResult), Q_ARG(QVariant, templateJSON), Q_ARG(QVariant, componentsJSON));
107+ QMetaObject::invokeMethod(view->rootObject(), "createCardComponent", Q_RETURN_ARG(QVariant, createCardComponentResult), Q_ARG(QVariant, templateJSON), Q_ARG(QVariant, componentsJSON), Q_ARG(QVariant, true));
98108 QVERIFY(createCardComponentResult.toBool());
99109 }
100110 }
tests/plugins/Dash/cardcreatortest.qml+4−4
@@ -19,11 +19,11 @@ import "../../../plugins/Dash/CardCreator.js" as CardCreator
1919
2020Item {
2121 id: root
22− function cardString(template, components) {
23− return CardCreator.cardString(JSON.parse(template), JSON.parse(components));
22+ function cardString(template, components, isCardCreator) {
23+ return CardCreator.cardString(JSON.parse(template), JSON.parse(components), isCardCreator);
2424 }
2525
26− function createCardComponent(template, components) {
27− return CardCreator.createCardComponent(root, JSON.parse(template), JSON.parse(components)) !== null;
26+ function createCardComponent(template, components, isCardCreator) {
27+ return CardCreator.createCardComponent(root, JSON.parse(template), JSON.parse(components), isCardCreator) !== null;
2828 }
2929}
tests/plugins/IntegratedLightDM/CMakeLists.txt+25
@@ -65,3 +65,28 @@ add_unity8_uitest(GreeterUsers GreeterUsersModelTestExec
6565 DEPENDS MockLightDM
6666 LIGHTDM
6767 )
68+
69+add_executable(GreeterIntegratedTestExec
70+ integrated.cpp
71+ )
72+qt5_use_modules(GreeterIntegratedTestExec Core DBus Quick Test)
73+target_link_libraries(GreeterIntegratedTestExec
74+ ${GLIB_LIBRARIES}
75+ integratedLightDMSession
76+ )
77+target_include_directories(GreeterIntegratedTestExec PUBLIC
78+ ${GLIB_INCLUDE_DIRS}
79+ ${CMAKE_SOURCE_DIR}/plugins/IntegratedLightDM/liblightdm
80+ )
81+add_unity8_unittest(GreeterIntegrated dbus-test-runner
82+ ENVIRONMENT LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/plugins/IntegratedLightDM/liblightdm/
83+ ARG_PREFIX "--parameter"
84+ ARGS
85+ --task $<TARGET_FILE:mock-server>
86+ --task-name server
87+ --ignore-return
88+ --task $<TARGET_FILE:GreeterIntegratedTestExec>
89+ --task-name client
90+ --wait-for org.freedesktop.Accounts
91+ DEPENDS integratedLightDMSession
92+ )
tests/plugins/IntegratedLightDM/integrated.cppnew file+91
@@ -0,0 +1,91 @@
1+/*
2+ * Copyright (C) 2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#include "UsersModel.h"
18+
19+#include <glib.h>
20+#include <QDBusInterface>
21+#include <QDBusReply>
22+#include <QtTest>
23+
24+class GreeterIntegratedTest : public QObject
25+{
26+ Q_OBJECT
27+
28+private Q_SLOTS:
29+
30+ void init()
31+ {
32+ m_accounts = new QDBusInterface(QStringLiteral("org.freedesktop.Accounts"),
33+ QStringLiteral("/org/freedesktop/Accounts"),
34+ QStringLiteral("org.freedesktop.Accounts"),
35+ QDBusConnection::sessionBus());
36+ QDBusReply<bool> addReply = m_accounts->call(QStringLiteral("AddUser"),
37+ g_get_user_name());
38+ QVERIFY(addReply.isValid());
39+ QCOMPARE(addReply.value(), true);
40+
41+ m_user = new QDBusInterface(QStringLiteral("org.freedesktop.Accounts"),
42+ QStringLiteral("/%1").arg(g_get_user_name()),
43+ QStringLiteral("org.freedesktop.DBus.Properties"),
44+ QDBusConnection::sessionBus());
45+
46+ m_model = new QLightDM::UsersModel();
47+ QVERIFY(m_model);
48+ }
49+
50+ void cleanup()
51+ {
52+ QDBusReply<bool> addReply = m_accounts->call(QStringLiteral("RemoveUser"),
53+ g_get_user_name());
54+ QVERIFY(addReply.isValid());
55+ QCOMPARE(addReply.value(), true);
56+
57+ delete m_model;
58+ delete m_accounts;
59+ delete m_user;
60+ }
61+
62+ void testWatchRealName()
63+ {
64+ auto index = m_model->index(0, 0);
65+
66+ QCOMPARE(m_model->data(index, QLightDM::UsersModel::RealNameRole).toString(),
67+ QStringLiteral(""));
68+
69+ // The real AccountsService doesn't let you set via dbus properties. You
70+ // have to call SetRealName instead (so that they can protect the call
71+ // via policykit). But our test server does let us.
72+ QVariant wrapped = QVariant::fromValue(QDBusVariant(QStringLiteral("Test User")));
73+ QDBusReply<void> reply = m_user->call(QStringLiteral("Set"),
74+ QStringLiteral("org.freedesktop.Accounts.User"),
75+ QStringLiteral("RealName"),
76+ wrapped);
77+ QVERIFY(reply.isValid());
78+
79+ QTRY_COMPARE(m_model->data(index, QLightDM::UsersModel::RealNameRole).toString(),
80+ QStringLiteral("Test User"));
81+ }
82+
83+private:
84+ QLightDM::UsersModel *m_model;
85+ QDBusInterface *m_accounts;
86+ QDBusInterface *m_user;
87+};
88+
89+QTEST_MAIN(GreeterIntegratedTest)
90+
91+#include "integrated.moc"
tests/plugins/Utils/CMakeLists.txt+7−1
@@ -4,15 +4,21 @@ include_directories(
44 ${CMAKE_CURRENT_BINARY_DIR}
55 )
66
7+add_definitions(-DCONFIG_TESTING)
8+
79foreach(util_test
810 QLimitProxyModel
911 UnitySortFilterProxyModel
1012 WindowInputMonitor
13+ DeviceConfigParser
1114)
1215 add_executable(${util_test}TestExec ${util_test}Test.cpp ModelTest.cpp)
1316 qt5_use_modules(${util_test}TestExec Test Core Qml)
1417 target_link_libraries(${util_test}TestExec Utils-qml)
15− add_unity8_unittest(${util_test} ${util_test}TestExec ADD_TEST)
18+ add_unity8_unittest(${util_test} ${util_test}TestExec ADD_TEST
19+ ENVIRONMENT XDG_CONFIG_HOME=${CMAKE_CURRENT_BINARY_DIR}
20+ )
21+
1622endforeach()
1723
1824# plain qml test
tests/plugins/Utils/DeviceConfigParserTest.cppnew file+70
@@ -0,0 +1,70 @@
1+/*
2+ * Copyright (C) 2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+// local
18+#include "deviceconfigparser.h"
19+
20+// Qt
21+#include <QTest>
22+#include <QDebug>
23+#include <QSettings>
24+
25+class DeviceConfigParserTest : public QObject
26+{
27+ Q_OBJECT
28+
29+private Q_SLOTS:
30+
31+ void initTestCase() {
32+ }
33+
34+ void testDefaults()
35+ {
36+ DeviceConfigParser p;
37+ p.setName("nonexistent");
38+
39+ QCOMPARE(p.supportedOrientations(), Qt::PortraitOrientation | Qt::InvertedPortraitOrientation | Qt::LandscapeOrientation | Qt::InvertedLandscapeOrientation);
40+ QCOMPARE(p.primaryOrientation(), Qt::PrimaryOrientation);
41+ QCOMPARE(p.portraitOrientation(), Qt::PortraitOrientation);
42+ QCOMPARE(p.invertedPortraitOrientation(), Qt::InvertedPortraitOrientation);
43+ QCOMPARE(p.landscapeOrientation(), Qt::LandscapeOrientation);
44+ QCOMPARE(p.invertedLandscapeOrientation(), Qt::InvertedLandscapeOrientation);
45+ }
46+
47+ void testCustomFile() {
48+ QSettings s("./devices.conf", QSettings::IniFormat);
49+ s.beginGroup("fakedevice");
50+
51+ s.setValue("SupportedOrientations", QStringList() << "Portrait" << "Landscape" << "InvertedLandscape");
52+ s.setValue("PrimaryOrientation", "InvertedLandscape");
53+ s.sync();
54+
55+ DeviceConfigParser p;
56+ p.setName("fakedevice");
57+
58+ QCOMPARE(p.supportedOrientations(), Qt::PortraitOrientation | Qt::LandscapeOrientation | Qt::InvertedLandscapeOrientation);
59+ QCOMPARE(p.primaryOrientation(), Qt::InvertedLandscapeOrientation);
60+ QCOMPARE(p.portraitOrientation(), Qt::PortraitOrientation);
61+ QCOMPARE(p.invertedPortraitOrientation(), Qt::InvertedPortraitOrientation);
62+ QCOMPARE(p.landscapeOrientation(), Qt::LandscapeOrientation);
63+ QCOMPARE(p.invertedLandscapeOrientation(), Qt::InvertedLandscapeOrientation);
64+ }
65+
66+};
67+
68+QTEST_GUILESS_MAIN(DeviceConfigParserTest)
69+
70+#include "DeviceConfigParserTest.moc"
tests/qmltests/CMakeLists.txt+2−1
@@ -5,6 +5,7 @@ add_unity8_qmltest(. OrientedShell LIGHTDM)
55add_unity8_qmltest(. DisabledScreenNotice)
66add_unity8_qmltest(. Shell LIGHTDM)
77add_unity8_qmltest(. ShellWithPin LIGHTDM)
8+add_unity8_qmltest(. DeviceConfiguration)
89add_unity8_qmltest(Components Background)
910add_unity8_qmltest(Components Carousel)
1011add_unity8_qmltest(Components Dialogs LIGHTDM)
@@ -29,7 +30,7 @@ add_unity8_qmlbenchmark(Dash CardBenchmark 1000)
2930add_unity8_qmltest(Dash CardTool)
3031add_unity8_qmltest(Dash GenericScopeView)
3132add_unity8_qmltest(Dash DashPageHeader)
32−add_unity8_qmltest(Dash PreviewListView)
33+add_unity8_qmltest(Dash PreviewView)
3334add_unity8_qmltest(Dash/Previews Preview)
3435add_unity8_qmltest(Dash/Previews PreviewActions)
3536add_unity8_qmltest(Dash/Previews PreviewAudioPlayback)
tests/qmltests/Components/tst_Lockscreen.qml+14−7
@@ -235,11 +235,14 @@ Rectangle {
235235
236236 function test_unlock_data() {
237237 return [
238− {tag: "numeric", alphanumeric: false, password: "1234", minPinLength: 4, maxPinLength: 4},
239− {tag: "alphanumeric", alphanumeric: true, password: "password", minPinLength: -1, maxPinLength: -1},
240− {tag: "numeric (wrong)", alphanumeric: false, password: "4321", minPinLength: 4, maxPinLength: 4},
241− {tag: "alphanumeric (wrong)", alphanumeric: true, password: "drowssap", minPinLength: -1, maxPinLength: -1},
242− {tag: "flexible length", alphanumeric: false, password: "1234", minPinLength: -1, maxPinLength: -1},
238+ {tag: "numeric", alphanumeric: false, password: "1234", minPinLength: 4, maxPinLength: 4, keyboard: false},
239+ {tag: "alphanumeric", alphanumeric: true, password: "password", minPinLength: -1, maxPinLength: -1, keyboard: false},
240+ {tag: "numeric (wrong)", alphanumeric: false, password: "4321", minPinLength: 4, maxPinLength: 4, keyboard: false},
241+ {tag: "alphanumeric (wrong)", alphanumeric: true, password: "drowssap", minPinLength: -1, maxPinLength: -1, keyboard: false},
242+ {tag: "flexible length", alphanumeric: false, password: "1234", minPinLength: -1, maxPinLength: -1, keyboard: false},
243+ {tag: "numeric", alphanumeric: false, password: "1234", minPinLength: 4, maxPinLength: 4, keyboard: true},
244+ {tag: "numeric (wrong)", alphanumeric: false, password: "4321", minPinLength: 4, maxPinLength: 4, keyboard: true},
245+ {tag: "flexible length", alphanumeric: false, password: "1234", minPinLength: -1, maxPinLength: -1, keyboard: true}
243246 ]
244247 }
245248
@@ -259,8 +262,12 @@ Rectangle {
259262 } else {
260263 for (var i = 0; i < data.password.length; ++i) {
261264 var character = data.password.charAt(i)
262− var button = findChild(lockscreen, "pinPadButton" + character)
263− mouseClick(button, units.gu(1), units.gu(1))
265+ if (data.keyboard) {
266+ typeString(character)
267+ } else {
268+ var button = findChild(lockscreen, "pinPadButton" + character)
269+ mouseClick(button, units.gu(1), units.gu(1))
270+ }
264271 }
265272 var confirmButton = findChild(lockscreen, "confirmButton");
266273 mouseClick(confirmButton, units.gu(1), units.gu(1));
tests/qmltests/Dash/Previews/tst_PreviewAudioPlayback.qml+12−3
@@ -100,13 +100,17 @@ Rectangle {
100100 }
101101 }
102102
103− function checkPlayerSource(index) {
104− var modelFilename = previewAudioPlayback.widgetData["tracks"][index]["source"].replace(/^.*[\\\/]/, '');
105− var playerFilename = DashAudioPlayer.currentSource.toString().replace(/^.*[\\\/]/, '');
103+ function checkPlayerUrls(modelFilename, playerUrl) {
104+ var modelFilename = modelFilename.replace(/^.*[\\\/]/, '');
105+ var playerFilename = playerUrl.toString().replace(/^.*[\\\/]/, '');
106106
107107 compare(modelFilename, playerFilename, "Player source is not set correctly.");
108108 }
109109
110+ function checkPlayerSource(index) {
111+ checkPlayerUrls(previewAudioPlayback.widgetData["tracks"][index]["source"], DashAudioPlayer.currentSource);
112+ }
113+
110114 function test_playback() {
111115 previewAudioPlayback.widgetData = tracksModel2;
112116 waitForRendering(previewAudioPlayback);
@@ -157,6 +161,11 @@ Rectangle {
157161 tryCompare(audio, "playbackState", Audio.PlayingState);
158162 checkPlayerSource(1);
159163
164+ // Check the playlist is song 0, 1, 2
165+ checkPlayerUrls(tracksModel2["tracks"][0].source, audio.playlist.itemSource(0));
166+ checkPlayerUrls(tracksModel2["tracks"][1].source, audio.playlist.itemSource(1));
167+ checkPlayerUrls(tracksModel2["tracks"][2].source, audio.playlist.itemSource(2));
168+
160169 tryCompare(track0ProgressBar, "visible", false);
161170 tryCompare(track1ProgressBar, "visible", true);
162171 tryCompare(track2ProgressBar, "visible", false);
tests/qmltests/Dash/Previews/tst_PreviewHeader.qml+18−1
@@ -38,6 +38,14 @@ Rectangle {
3838 "attributes": [{"value":"text1","icon":"image://theme/ok"},{"value":"text2","icon":"image://theme/cancel"}]
3939 }
4040
41+ property var emblemheaderjson: {
42+ "title": "THE TITLE",
43+ "subtitle": "Something catchy",
44+ "mascot": "../graphics/play_button.png",
45+ "attributes": [{"value":"text1","icon":"image://theme/ok"},{"value":"text2","icon":"image://theme/cancel"}],
46+ "emblem": Qt.resolvedUrl("../artwork/emblem.png")
47+ }
48+
4149 property var brokenheaderjson: {
4250 "title": "THE TITLE",
4351 "subtitle": "Something catchy",
@@ -64,7 +72,7 @@ Rectangle {
6472
6573 PreviewHeader {
6674 id: previewHeader
67− widgetData: headerjson
75+ widgetData: emblemheaderjson
6876 width: units.gu(30)
6977
7078 Rectangle {
@@ -136,6 +144,15 @@ Rectangle {
136144 }
137145 }
138146
147+ function test_emblem() {
148+ previewHeader.widgetData = emblemheaderjson;
149+
150+ var emblemIcon = findChild(previewHeader, "emblemIcon");
151+ var titleLabel = findChild(previewHeader, "titleLabel");
152+ verify(emblemIcon.height > 0);
153+ compare(emblemIcon.height, titleLabel.font.pixelSize);
154+ }
155+
139156 function test_json() {
140157 headerjson = origHeaderjson;
141158 previewHeader.widgetData = headerjson;
tests/qmltests/Dash/Previews/tst_PreviewSharing.qml+17−3
@@ -28,13 +28,18 @@ Rectangle {
2828
2929 property var shareData: {
3030 "uri": [
31− "Text here",
32− "text here 2",
33− "text here 3"
31+ "file:///this/is/an/url",
32+ "file:///this/is/an/url/2",
33+ "file:///this/is/an/url/3"
3434 ],
3535 "content-type": "text"
3636 }
3737
38+ property var shareDataString: {
39+ "uri": "file:///this/is/an/url",
40+ "content-type": "text"
41+ }
42+
3843 PreviewSharing {
3944 id: previewSharing
4045 anchors { left: parent.left; bottom: parent.bottom; }
@@ -55,5 +60,14 @@ Rectangle {
5560 mouseClick(previewSharing);
5661 compare(peerPicker.visible, true);
5762 }
63+
64+ function test_createExportedItems() {
65+ var exportedItems = previewSharing.createExportedItems(shareData["uri"]);
66+ for (var i = 0; i < exportedItems.length; i++) {
67+ compare(exportedItems[i].url, shareData["uri"][i]);
68+ }
69+ exportedItems = previewSharing.createExportedItems(shareDataString["uri"]);
70+ compare(exportedItems[0].url, shareDataString["uri"]);
71+ }
5872 }
5973}
tests/qmltests/Dash/tst_CardTool.qml+4−4
@@ -339,22 +339,22 @@ Rectangle {
339339 function test_card_title_alignment(data) {
340340 selector.selectedIndex = data.index;
341341
342− tryCompare(cardTool, "titleAlignment", Text.AlignLeft);
342+ tryCompareFunction(function() { return findChild(internalCard, "titleLabel").horizontalAlignment == Text.AlignLeft; }, true);
343343
344344 cardTool.components['title'] = { "field": "title", "align": "center" };
345345 cardTool.componentsChanged();
346346
347− tryCompare(cardTool, "titleAlignment", data.value);
347+ tryCompareFunction(function() { return findChild(internalCard, "titleLabel").horizontalAlignment == data.value; }, true);
348348
349349 cardTool.components['title'] = { "field": "title" };
350350 cardTool.componentsChanged();
351351
352− tryCompare(cardTool, "titleAlignment", data.value);
352+ tryCompareFunction(function() { return findChild(internalCard, "titleLabel").horizontalAlignment == data.value; }, true);
353353
354354 cardTool.components['title'] = { "field": "title", "align": "left" };
355355 cardTool.componentsChanged();
356356
357− tryCompare(cardTool, "titleAlignment", Text.AlignLeft);
357+ tryCompareFunction(function() { return findChild(internalCard, "titleLabel").horizontalAlignment == Text.AlignLeft; }, true);
358358 }
359359
360360 function test_categoryLayout_data() {
tests/qmltests/Dash/tst_Dash.qml+89
@@ -70,6 +70,42 @@ Item {
7070 waitForRendering(findChild(dash, "scopeLoader0").item);
7171 }
7272
73+ function scrollToCategory(categoryName) {
74+ var dashContentList = findChild(dash, "dashContentList");
75+ var genericScopeView = dashContentList.currentItem;
76+ var categoryListView = findChild(genericScopeView, "categoryListView");
77+ tryCompareFunction(function() {
78+ var category = findChild(genericScopeView, categoryName);
79+ if (category && category.y > 0 && category.y < genericScopeView.height) return true;
80+ touchFlick(genericScopeView, genericScopeView.width/2, units.gu(20),
81+ genericScopeView.width/2, genericScopeView.y)
82+ tryCompare(categoryListView, "moving", false);
83+ return false;
84+ }, true);
85+
86+ tryCompareFunction(function() { return findChild(genericScopeView, "delegate0") !== null; }, true);
87+ return findChild(genericScopeView, categoryName);
88+ }
89+
90+ function clickCategoryDelegate(category, delegate) {
91+ var dashContentList = findChild(dash, "dashContentList");
92+ var genericScopeView = dashContentList.currentItem;
93+ if (category === undefined) category = 0;
94+ if (delegate === undefined) delegate = 0;
95+ tryCompareFunction(function() {
96+ var cardGrid = findChild(genericScopeView, "dashCategory"+category);
97+ if (cardGrid != null) {
98+ var tile = findChild(cardGrid, "delegate"+delegate);
99+ return tile != null;
100+ }
101+ return false;
102+ },
103+ true);
104+ var tile = findChild(findChild(genericScopeView, "dashCategory"+category), "delegate"+delegate);
105+ waitForRendering(tile);
106+ mouseClick(tile);
107+ }
108+
73109 function test_manage_dash_clickscope_unfavoritable() {
74110 // Show the manage dash
75111 touchFlick(dash, dash.width / 2, dash.height - 1, dash.width / 2, units.gu(2));
@@ -565,5 +601,58 @@ Item {
565601 tryCompare(dashTempScopeItem, "x", dashTempScopeItem.width);
566602 tryCompare(dashTempScopeItem, "visible", false);
567603 }
604+
605+ function test_openScope()
606+ {
607+ scrollToCategory("dashCategory2");
608+ clickCategoryDelegate(2, 2);
609+
610+ var dashTempScopeItem = findChild(dash, "dashTempScopeItem");
611+ tryCompare(dashTempScopeItem, "x", 0);
612+ tryCompare(dashTempScopeItem, "visible", true);
613+ tryCompare(dashContent, "x", -dash.width);
614+
615+ // Go back
616+ var dashTempScopeItemHeader = findChild(dashTempScopeItem, "scopePageHeader");
617+ var backButton = findChild(findChild(dashTempScopeItemHeader, "innerPageHeader"), "customBackButton");
618+ mouseClick(backButton);
619+
620+ // Check temp scope is gone
621+ tryCompare(dashTempScopeItem, "x", dash.width);
622+ tryCompare(dashTempScopeItem, "visible", false);
623+ tryCompare(dashContent, "x", 0);
624+ }
625+
626+ function test_tempScopeItemXOnResize()
627+ {
628+ // Go to a temp scope
629+ touchFlick(dash, dash.width / 2, dash.height - 1, dash.width / 2, units.gu(2));
630+ var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
631+ tryCompare(bottomEdgeController, "progress", 1);
632+ var nonfavScopesListCategory = findChild(dash, "scopesListCategoryother");
633+ var nonfavScopesListCategoryList = findChild(nonfavScopesListCategory, "scopesListCategoryInnerList");
634+ tryCompare(nonfavScopesListCategoryList, "currentIndex", 0);
635+ mouseClick(nonfavScopesListCategoryList.currentItem);
636+ var dashTempScopeItem = findChild(dash, "dashTempScopeItem");
637+ tryCompare(dashTempScopeItem, "x", 0);
638+ tryCompare(dashTempScopeItem, "visible", true);
639+
640+ shell.width = units.gu(80);
641+ tryCompare(dashTempScopeItem, "x", 0);
642+ tryCompare(dashContent, "x", -dash.width);
643+
644+ shell.width = units.gu(40);
645+ tryCompare(dashTempScopeItem, "x", 0);
646+
647+ // Go back
648+ var dashTempScopeItemHeader = findChild(dashTempScopeItem, "scopePageHeader");
649+ var backButton = findChild(findChild(dashTempScopeItemHeader, "innerPageHeader"), "customBackButton");
650+ mouseClick(backButton);
651+
652+ // Check temp scope is gone
653+ tryCompare(dashTempScopeItem, "x", dash.width);
654+ tryCompare(dashTempScopeItem, "visible", false);
655+ tryCompare(dashContent, "x", 0);
656+ }
568657 }
569658}
tests/qmltests/Dash/tst_GenericScopeView.qml−28
@@ -236,12 +236,6 @@ Item {
236236 verify(seeAll, "Can't find the seeAll element");
237237
238238 compare(seeAll.height, 0, "SeeAll should be 0-height.");
239−
240− openPreview(4, 0);
241−
242− compare(testCase.subPageLoader.count, 16, "There should only be 16 items in preview.");
243−
244− closePreview();
245239 }
246240
247241 function test_narrow_delegate_ranges_expand() {
@@ -404,28 +398,6 @@ Item {
404398 closePreview();
405399 }
406400
407− function test_previewCycle() {
408− var categoryListView = findChild(genericScopeView, "categoryListView");
409− categoryListView.positionAtBeginning();
410−
411− tryCompare(testCase.subPageLoader, "open", false);
412−
413− openPreview();
414− var previewListViewList = findChild(subPageLoader.item, "listView");
415−
416− // flick to the next previews
417− tryCompare(testCase.subPageLoader, "count", 25);
418− for (var i = 1; i < testCase.subPageLoader.count; ++i) {
419− mouseFlick(testCase.subPageLoader.item, testCase.subPageLoader.width - units.gu(1),
420− testCase.subPageLoader.height / 2,
421− units.gu(2),
422− testCase.subPageLoader.height / 2);
423− tryCompare(previewListViewList, "moving", false);
424− tryCompare(testCase.subPageLoader.currentItem, "objectName", "preview" + i);
425− }
426− closePreview();
427− }
428−
429401 function test_settingsOpenClose() {
430402 waitForRendering(genericScopeView);
431403 verify(header, "Could not find the header.");
tests/qmltests/Dash/tst_PreviewListView.qml → tests/qmltests/Dash/tst_PreviewView.qmlrenamed+23−16
@@ -36,8 +36,8 @@ Rectangle {
3636 id: mockResultsModel
3737 }
3838
39− PreviewListView {
40− id: listView
39+ PreviewView {
40+ id: view
4141 anchors.fill: parent
4242 scope: mockScope
4343 scopeStyle: ScopeStyle {
@@ -45,12 +45,22 @@ Rectangle {
4545 }
4646 }
4747
48+ Item {
49+ Repeater {
50+ id: repeater
51+ model: mockResultsModel
52+ Item {
53+ property var previewModel: mockScope.preview(model.result, model.categoryId);
54+ }
55+ }
56+ }
57+
4858 UT.UnityTestCase {
4959 id: testCase
50− name: "PreviewListView"
60+ name: "PreviewView"
5161 when: windowShown
5262
53− property MouseArea mouseArea: findChild(listView, "processingMouseArea")
63+ property MouseArea mouseArea: findChild(view, "processingMouseArea")
5464
5565 SignalSpy {
5666 id: clickedSpy
@@ -59,43 +69,40 @@ Rectangle {
5969 }
6070
6171 function init() {
62− listView.model = mockResultsModel;
63− listView.currentIndex = 1;
64− listView.open = true;
72+ view.open = true;
73+ view.previewModel = repeater.itemAt(0).previewModel
6574 verify(testCase.mouseArea, "Can't find the processingMouseArea object.");
6675 }
6776
6877 function cleanup() {
69− listView.open = false;
70− listView.model = null;
78+ view.open = false;
7179 clickedSpy.clear();
7280 }
7381
7482 function test_notProcessing() {
7583 expectFail("", "processingMouseArea should not receive the click.");
76− mouseClick(listView);
84+ mouseClick(view);
7785 clickedSpy.wait();
7886 }
7987
8088 function test_processing() {
81− verify(listView.currentItem, "currentItem is not ready yet");
82− listView.currentItem.previewModel.setLoaded(false);
89+ view.previewModel.setLoaded(false);
8390
84− tryCompare(listView, "processing", true);
91+ tryCompare(view, "processing", true);
8592
86− mouseClick(listView);
93+ mouseClick(view);
8794 clickedSpy.wait();
8895 }
8996
9097 function test_title() {
91− var header = findChild(listView, "innerPageHeader");
98+ var header = findChild(view, "innerPageHeader");
9299 verify(header, "Could not find the preview header");
93100
94101 compare(header.config.title, "Mock Scope");
95102 }
96103
97104 function test_header_style() {
98− var header = findChild(listView, "pageHeader");
105+ var header = findChild(view, "pageHeader");
99106 verify(header, "Could not find the header");
100107
101108 var innerHeader = findChild(header, "innerPageHeader");
tests/qmltests/Greeter/tst_NarrowView.qml+9
@@ -518,5 +518,14 @@ Item {
518518 tryCompare(coverPage, "shown", false);
519519 tryCompare(coverPage, "showProgress", 0);
520520 }
521+
522+ // Make sure that if user has a mouse, they can still get rid of cover page
523+ function test_mouseClickHidesCoverPage() {
524+ var coverPage = findChild(view, "coverPage");
525+
526+ verify(coverPage.shown);
527+ mouseClick(coverPage, coverPage.width/2, coverPage.height - units.gu(2));
528+ verify(!coverPage.shown);
529+ }
521530 }
522531}
tests/qmltests/Launcher/tst_Launcher.qml+13−3
@@ -320,14 +320,21 @@ Item {
320320 }
321321
322322 function assertFocusOnIndex(index) {
323+ var launcherPanel = findChild(launcher, "launcherPanel");
323324 var launcherListView = findChild(launcher, "launcherListView");
324325 var bfbFocusHighlight = findChild(launcher, "bfbFocusHighlight");
325326
326327 waitForRendering(launcher);
328+ tryCompare(launcherPanel, "highlightIndex", index);
327329 compare(bfbFocusHighlight.visible, index === -1);
328330 for (var i = 0; i < launcherListView.count; i++) {
329− var focusRing = findChild(findChild(launcher, "launcherDelegate" + i), "focusRing")
330− compare(focusRing.visible, index === i);
331+ var item = findChild(launcher, "launcherDelegate" + i);
332+ // Delegates might be destroyed when not visible. We can't check if they paint a focus highlight.
333+ // Make sure the requested index does have focus. for the others, try best effort to check if they don't
334+ if (index === i || item) {
335+ var focusRing = findChild(item, "focusRing")
336+ tryCompare(focusRing, "visible", index === i);
337+ }
331338 }
332339 }
333340
@@ -1129,7 +1136,6 @@ Item {
11291136 var last = launcherListView.count - 1;
11301137
11311138 compare(bfbFocusHighlight.visible, false);
1132−
11331139 launcher.openForKeyboardNavigation();
11341140 tryCompare(launcherPanel, "x", 0);
11351141 waitForRendering(launcher);
@@ -1154,6 +1160,7 @@ Item {
11541160
11551161 // The list should wrap around
11561162 keyClick(Qt.Key_Up);
1163+ waitForRendering(launcher);
11571164 assertFocusOnIndex(last);
11581165
11591166 keyClick(Qt.Key_Down);
@@ -1186,6 +1193,9 @@ Item {
11861193 // Go bar to top by wrapping around
11871194 keyClick(Qt.Key_Down);
11881195 assertFocusOnIndex(1);
1196+
1197+ keyClick(Qt.Key_Enter);
1198+ assertFocusOnIndex(-2);
11891199 }
11901200
11911201 function test_selectQuicklistItemByKeyboard() {
tests/qmltests/Notifications/tst_OptionToggle.qml+1−1
@@ -225,7 +225,7 @@ Row {
225225 }
226226
227227 // test input does not fall through
228− mouseClick(notification)
228+ mouseClick(notification, units.gu(2), units.gu(2))
229229 if(data.type == Notification.Interactive) {
230230 actionSpy.wait()
231231 compare(actionSpy.signalArguments[0][0], data.actions[0]["id"], "got wrong id for interactive action")
tests/qmltests/Notifications/tst_VisualSnapDecisionsQueue.qml+1
@@ -226,6 +226,7 @@ Row {
226226
227227 // remove top-most and verify one of the remaining ones is still getting expanded
228228
229+ waitForRendering(notifications);
229230 // make first snap-decision expand
230231 mouseClick(snap_decision[0]);
231232
tests/qmltests/Panel/Indicators/tst_MenuItemFactory.qml+2−4
@@ -274,15 +274,14 @@ Item {
274274
275275 function test_create_progressMenu_data() {
276276 return [
277− {label: "testLabel1", enabled: true, value: 10 },
278− {label: "testLabel2", enabled: false, value: 55 },
277+ {label: "testLabel1", value: 10 },
278+ {label: "testLabel2", value: 55 },
279279 ];
280280 }
281281
282282 function test_create_progressMenu(data) {
283283 menuData.type = "com.canonical.indicator.progress"
284284 menuData.label = data.label;
285− menuData.sensitive = data.enabled;
286285 menuData.actionState = data.value;
287286
288287 loader.data = menuData;
@@ -292,7 +291,6 @@ Item {
292291
293292 compare(loader.item.text, data.label, "Label does not match data");
294293 compare(loader.item.value, data.value, "Value does not match data");
295− compare(loader.item.enabled, data.enabled, "Enabled does not match data");
296294 }
297295
298296 function test_create_standardMenu_data() {
tests/qmltests/Panel/tst_IndicatorItem.qml+16−14
@@ -24,7 +24,9 @@ import "../../../qml/Panel"
2424Rectangle {
2525 width: units.gu(80)
2626 height: units.gu(30)
27− color: "white"
27+ color: theme.palette.normal.background
28+
29+ Component.onCompleted: theme.name = "Ubuntu.Components.Themes.SuruDark"
2830
2931 RowLayout {
3032 anchors.fill: parent
@@ -37,7 +39,7 @@ Rectangle {
3739 Layout.fillHeight: true
3840
3941 Rectangle {
40− color: "black"
42+ color: theme.palette.normal.background
4143 anchors.fill: indicatorItem
4244 }
4345
@@ -181,25 +183,25 @@ Rectangle {
181183 }
182184
183185 function test_select() {
184− tryCompare(findChild(indicatorItem, "icon0"), "color", "#ffffff");
186+ tryCompare(findChild(indicatorItem, "icon0"), "color", theme.palette.normal.backgroundText);
185187 tryCompare(findChild(indicatorItem, "icon0"), "opacity", 1.0);
186− tryCompare(findChild(indicatorItem, "leftLabel"), "color", "#ffffff");
187− tryCompare(findChild(indicatorItem, "rightLabel"), "color", "#ffffff");
188− tryCompare(findChild(indicatorItem, "indicatorName"), "color", "#ffffff");
188+ tryCompare(findChild(indicatorItem, "leftLabel"), "color", theme.palette.normal.backgroundText);
189+ tryCompare(findChild(indicatorItem, "rightLabel"), "color", theme.palette.normal.backgroundText);
190+ tryCompare(findChild(indicatorItem, "indicatorName"), "color", theme.palette.normal.backgroundText);
189191
190192 indicatorItem.expanded = true;
191− tryCompare(findChild(indicatorItem, "icon0"), "color", "#888888");
193+ tryCompare(findChild(indicatorItem, "icon0"), "color", theme.palette.disabled.backgroundText);
192194 tryCompare(findChild(indicatorItem, "icon0"), "opacity", 0.6);
193− tryCompare(findChild(indicatorItem, "leftLabel"), "color", "#888888");
194− tryCompare(findChild(indicatorItem, "rightLabel"), "color", "#888888");
195− tryCompare(findChild(indicatorItem, "indicatorName"), "color", "#888888");
195+ tryCompare(findChild(indicatorItem, "leftLabel"), "color", theme.palette.disabled.backgroundText);
196+ tryCompare(findChild(indicatorItem, "rightLabel"), "color", theme.palette.disabled.backgroundText);
197+ tryCompare(findChild(indicatorItem, "indicatorName"), "color", theme.palette.disabled.backgroundText);
196198
197199 indicatorItem.selected = true;
198− tryCompare(findChild(indicatorItem, "icon0"), "color", "#ffffff");
200+ tryCompare(findChild(indicatorItem, "icon0"), "color", theme.palette.normal.backgroundText);
199201 tryCompare(findChild(indicatorItem, "icon0"), "opacity", 1.0);
200− tryCompare(findChild(indicatorItem, "leftLabel"), "color", "#ffffff");
201− tryCompare(findChild(indicatorItem, "rightLabel"), "color", "#ffffff");
202− tryCompare(findChild(indicatorItem, "indicatorName"), "color", "#ffffff");
202+ tryCompare(findChild(indicatorItem, "leftLabel"), "color", theme.palette.normal.backgroundText);
203+ tryCompare(findChild(indicatorItem, "rightLabel"), "color", theme.palette.normal.backgroundText);
204+ tryCompare(findChild(indicatorItem, "indicatorName"), "color", theme.palette.normal.backgroundText);
203205 }
204206 }
205207}
tests/qmltests/Panel/tst_Panel.qml+2
@@ -31,6 +31,8 @@ IndicatorTest {
3131 height: units.gu(71)
3232 color: "white"
3333
34+ Component.onCompleted: theme.name = "Ubuntu.Components.Themes.SuruDark"
35+
3436 Binding {
3537 target: mouseEmulation
3638 property: "checked"
tests/qmltests/Stages/tst_DesktopStage.qml+2−1
@@ -65,8 +65,9 @@ Item {
6565 property bool itemDestroyed: false
6666 sourceComponent: Component {
6767 DesktopStage {
68− color: "darkblue"
68+ color: "white"
6969 anchors.fill: parent
70+ background: "../../../qml/graphics/tablet_background.jpg"
7071
7172 Component.onCompleted: {
7273 edgeBarrierControls.target = testCase.findChild(this, "edgeBarrierController");
tests/qmltests/Stages/tst_PhoneStage.qml+19−6
@@ -40,12 +40,6 @@ Item {
4040 orientations: Orientations {}
4141 }
4242
43− Binding {
44− target: ApplicationManager
45− property: "rightMargin"
46− value: phoneStage.anchors.rightMargin
47− }
48−
4943 Rectangle {
5044 anchors { fill: parent; leftMargin: phoneStage.width }
5145
@@ -77,6 +71,15 @@ Item {
7771 ApplicationManager.get(appList.selectedAppIndex).setState(ApplicationInfoInterface.Stopped);
7872 }
7973 }
74+ EdgeBarrierControls {
75+ id: edgeBarrierControls
76+ text: "Drag here to pull out spread"
77+ backgroundColor: "blue"
78+ onDragged: { phoneStage.pushRightEdge(amount); }
79+ Component.onCompleted: {
80+ edgeBarrierControls.target = testCase.findChild(phoneStage, "edgeBarrierController");
81+ }
82+ }
8083 }
8184 ListView {
8285 id: appList
@@ -463,5 +466,15 @@ Item {
463466
464467 tryCompare(delegate.application, "requestedState", ApplicationInfoInterface.RequestedRunning);
465468 }
469+
470+ function test_mouseEdgePush() {
471+ var spreadView = findChild(phoneStage, "spreadView")
472+ addApps(1);
473+ mouseMove(phoneStage, phoneStage.width - 1, units.gu(10));
474+ for (var i = 0; i < units.gu(10); i++) {
475+ phoneStage.pushRightEdge(1);
476+ }
477+ tryCompare(spreadView, "phase", 2);
478+ }
466479 }
467480}
tests/qmltests/Stages/tst_SpreadDelegate.qml+7
@@ -308,5 +308,12 @@ Rectangle {
308308 tryCompare(closeAnimation, "running", false);
309309 }
310310
311+ function test_showHighLight() {
312+ loadWithGalleryApp.clicked();
313+ var highlightRect = findChild(spreadDelegateLoader.item, "selectionHighlight")
314+ tryCompare(highlightRect, "visible", false)
315+ spreadDelegateLoader.item.highlightShown = true;
316+ tryCompare(highlightRect, "visible", true)
317+ }
311318 }
312319}
tests/qmltests/Stages/tst_TabletStage.qml+19−1
@@ -21,6 +21,7 @@ import Ubuntu.Components.ListItems 1.3 as ListItem
2121import Unity.Application 0.1
2222import Unity.Test 0.1
2323
24+import ".."
2425import "../../../qml/Stages"
2526import "../../../qml/Components"
2627
@@ -77,6 +78,15 @@ Rectangle {
7778 Column {
7879 anchors { left: parent.left; right: parent.right; top: parent.top; margins: units.gu(1) }
7980 spacing: units.gu(1)
81+ EdgeBarrierControls {
82+ id: edgeBarrierControls
83+ text: "Drag here to pull out spread"
84+ backgroundColor: "blue"
85+ onDragged: { tabletStageLoader.item.pushRightEdge(amount); }
86+ Component.onCompleted: {
87+ edgeBarrierControls.target = testCase.findChild(tabletStageLoader, "edgeBarrierController");
88+ }
89+ }
8090 ApplicationCheckBox {
8191 id: webbrowserCheckBox
8292 appId: "webbrowser-app"
@@ -365,6 +375,14 @@ Rectangle {
365375 tryCompare(webbrowserApp, "requestedState", ApplicationInfoInterface.RequestedRunning);
366376 tryCompare(dialerApp, "requestedState", ApplicationInfoInterface.RequestedRunning);
367377 }
368− }
369378
379+ function test_mouseEdgePush() {
380+ var spreadView = findChild(tabletStageLoader, "spreadView")
381+ mouseMove(tabletStageLoader, tabletStageLoader.width - 1, units.gu(10));
382+ for (var i = 0; i < units.gu(10); i++) {
383+ tabletStageLoader.item.pushRightEdge(1);
384+ }
385+ tryCompare(spreadView, "phase", 2);
386+ }
387+ }
370388}
tests/qmltests/Wizard/tst_Wizard.qml+1−1
@@ -96,7 +96,7 @@ Item {
9696 }
9797
9898 Component.onCompleted: {
99− theme.name = "Ubuntu.Components.Themes.SuruGradient";
99+ theme.name = "Ubuntu.Components.Themes.SuruDark";
100100 setup();
101101 }
102102
tests/qmltests/tst_DeviceConfiguration.qmlnew file+49
@@ -0,0 +1,49 @@
1+/*
2+ * Copyright (C) 2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+import QtTest 1.0
19+import Unity.Test 0.1
20+import "../../qml"
21+
22+Item {
23+ id: root
24+ width: units.gu(40)
25+ height: units.gu(70)
26+
27+ DeviceConfiguration {
28+ id: deviceConfiguration
29+ }
30+
31+ UnityTestCase {
32+ id: testCase
33+ name: "DeviceConfiguration"
34+ when: windowShown
35+
36+ function test_defaults() {
37+ deviceConfiguration.name = "nonexisting"
38+ compare(deviceConfiguration.primaryOrientation, -1)
39+ compare(deviceConfiguration.landscapeOrientation, Qt.LandscapeOrientation)
40+ compare(deviceConfiguration.portraitOrientation, Qt.PortraitOrientation)
41+ compare(deviceConfiguration.invertedLandscapeOrientation, Qt.InvertedLandscapeOrientation)
42+ compare(deviceConfiguration.invertedPortraitOrientation, Qt.InvertedPortraitOrientation)
43+ compare(deviceConfiguration.supportedOrientations, Qt.PortraitOrientation
44+ | Qt.InvertedPortraitOrientation
45+ | Qt.LandscapeOrientation
46+ | Qt.InvertedLandscapeOrientation)
47+ }
48+ }
49+}
tests/qmltests/tst_DisabledScreenNotice.qml+76−2
@@ -15,18 +15,62 @@
1515 */
1616
1717import QtQuick 2.4
18+import QtQuick.Layouts 1.1
1819import QtTest 1.0
1920import Unity.Test 0.1
21+import Ubuntu.Components 1.3
22+import Ubuntu.Components.ListItems 1.3
2023import "../../qml"
2124
2225Item {
2326 id: root
24− width: units.gu(40)
27+ width: units.gu(80)
2528 height: units.gu(70)
2629
2730 DisabledScreenNotice {
2831 id: touchScreenPad
2932 anchors.fill: parent
33+ anchors.rightMargin: units.gu(40)
34+
35+ screen: QtObject {
36+ property int orientation: {
37+ switch (orientationSelector.selectedIndex) {
38+ case 0:
39+ return Qt.PortraitOrientation;
40+ case 1:
41+ return Qt.LandscapeOrientation;
42+ case 2:
43+ return Qt.InvertedPortraitOrientation;
44+ case 3:
45+ return Qt.InvertedLandscapeOrientation;
46+ }
47+ }
48+ }
49+ orientationLock: QtObject {
50+ property bool enabled: orientationLockCheckBox.checked
51+ }
52+ }
53+
54+ Column {
55+ anchors.fill: parent
56+ anchors.leftMargin: units.gu(40)
57+
58+ ItemSelector {
59+ id: orientationSelector
60+ model: ["Portrait", "Landscape", "InvertedPortrait", "InvertedLandscape"]
61+ selectedIndex: 0
62+ }
63+
64+ RowLayout {
65+ CheckBox {
66+ id: orientationLockCheckBox
67+ checked: false
68+ }
69+ Label {
70+ text: "Rotation lock"
71+ Layout.fillWidth: true
72+ }
73+ }
3074 }
3175
3276 UnityTestCase {
@@ -36,10 +80,40 @@ Item {
3680
3781 function test_mouseAreaHidesOnFirstTap() {
3882 var noticeArea = findChild(touchScreenPad, "infoNoticeArea")
39− print("noticeArea", noticeArea.visible)
4083 compare(noticeArea.visible, true)
4184 tap(root)
4285 tryCompare(noticeArea, "visible", false)
4386 }
87+
88+ function test_rotation_data() {
89+ return [
90+ {tag: "portrait", selectedOrientation: 0, expectedAngle: 0},
91+ {tag: "landscape", selectedOrientation: 1, expectedAngle: 270},
92+ {tag: "invertedportrait", selectedOrientation: 2, expectedAngle: 180},
93+ {tag: "invertetlandscape", selectedOrientation: 3, expectedAngle: 90}
94+ ];
95+ }
96+
97+ function test_rotation(data) {
98+ var content = findChild(touchScreenPad, "contentContainer");
99+
100+ var oldRotation = content.rotation;
101+
102+ // Turn on orientation lock
103+ orientationLockCheckBox.checked = true;
104+
105+ // simulate the rotation
106+ orientationSelector.selectedIndex = data.selectedOrientation;
107+
108+ // Make sure it is still in the old rotation (as we have the lock turned on)
109+ expectFail("", "Rotation lock set. Expecting automatic rotation to fail.");
110+ tryCompareFunction(function() { return content.rotation != oldRotation; }, true, 300);
111+
112+ // Now uncheck the rotation lock
113+ orientationLockCheckBox.checked = false;
114+
115+ // And make sure it catches up to the expected angle
116+ tryCompare(content, "rotation", data.expectedAngle);
117+ }
44118 }
45119}
tests/qmltests/tst_OrientedShell.qml+1−1
@@ -315,7 +315,7 @@ Rectangle {
315315 checked: false
316316 activeFocusOnPress: false
317317 onCheckedChanged: {
318− var surface = SurfaceManager.inputMethodSurface();
318+ var surface = SurfaceManager.inputMethodSurface;
319319 if (checked) {
320320 surface.setState(Mir.RestoredState);
321321 } else {
tests/qmltests/tst_Shell.qml+39−25
@@ -50,11 +50,6 @@ Rectangle {
5050 shellLoader.active = true;
5151 }
5252
53− MouseArea {
54− id: clickThroughCatcher
55− anchors.fill: shellContainer
56− }
57−
5853 Item {
5954 id: shellContainer
6055 anchors.left: root.left
@@ -318,12 +313,6 @@ Rectangle {
318313 signalName: "applicationRemoved"
319314 }
320315
321− SignalSpy {
322− id: clickThroughSpy
323− target: clickThroughCatcher
324− signalName: "clicked"
325− }
326−
327316 Telephony.CallEntry {
328317 id: phoneCall
329318 phoneNumber: "+447812221111"
@@ -692,6 +681,7 @@ Rectangle {
692681 function swipeAwayGreeter() {
693682 var greeter = findChild(shell, "greeter");
694683 tryCompare(greeter, "fullyShown", true);
684+ waitForGreeterToStabilize();
695685 removeTimeConstraintsFromDirectionalDragAreas(greeter);
696686
697687 var touchX = shell.width - (shell.edgeSize / 2);
@@ -795,7 +785,7 @@ Rectangle {
795785 loadShell("phone");
796786 swipeAwayGreeter();
797787 var item = findChild(shell, "inputMethod");
798− var surface = SurfaceManager.inputMethodSurface();
788+ var surface = SurfaceManager.inputMethodSurface;
799789
800790 surface.setState(Mir.MinimizedState);
801791 tryCompare(item, "visible", false);
@@ -866,7 +856,6 @@ Rectangle {
866856 function test_launchedAppHasActiveFocus(data) {
867857 loadShell(data.formFactor);
868858 shell.usageScenario = data.usageScenario;
869− waitForGreeterToStabilize();
870859 swipeAwayGreeter();
871860
872861 var webApp = ApplicationManager.startApplication("webbrowser-app");
@@ -1447,9 +1436,17 @@ Rectangle {
14471436 tryCompare(galleryApp, "requestedState", ApplicationInfoInterface.RequestedRunning);
14481437 }
14491438
1450− function test_altTabSwitchesFocus() {
1451− loadShell("desktop");
1452− shell.usageScenario = "desktop"
1439+ function test_altTabSwitchesFocus_data() {
1440+ return [
1441+ { tag: "windowed", shellType: "desktop" },
1442+ { tag: "staged", shellType: "phone" },
1443+ { tag: "sidestaged", shellType: "tablet" }
1444+ ];
1445+ }
1446+
1447+ function test_altTabSwitchesFocus(data) {
1448+ loadShell(data.shellType);
1449+ shell.usageScenario = data.shellType;
14531450 waitForRendering(root)
14541451
14551452 var desktopStage = findChild(shell, "stage");
@@ -1467,18 +1464,10 @@ Rectangle {
14671464 keyClick(Qt.Key_Tab, Qt.AltModifier)
14681465 tryCompare(app2.session.lastSurface, "activeFocus", true)
14691466
1470− var desktopSpread = findChild(shell, "spread")
1471−
1472− tryCompare(desktopSpread, "state", "")
1473−
1474− // Just press Alt, make sure the spread comes up
1467+ // Press Alt+Tab
14751468 keyPress(Qt.Key_Alt);
14761469 keyClick(Qt.Key_Tab);
1477− tryCompare(desktopSpread, "state", "altTab")
1478−
1479− // Release control, check if spread disappears
14801470 keyRelease(Qt.Key_Alt)
1481− tryCompare(desktopSpread, "state", "")
14821471
14831472 // Focus should have switched back now
14841473 tryCompare(app3.session.lastSurface, "activeFocus", true)
@@ -1890,6 +1879,31 @@ Rectangle {
18901879 compare(appDelegate.y >= PanelState.panelHeight, true);
18911880 }
18921881
1882+ function test_cantResizeWindowUnderPanel() {
1883+ loadShell("desktop");
1884+ shell.usageScenario = "desktop";
1885+ waitForRendering(shell);
1886+
1887+ var app = ApplicationManager.startApplication("dialer-app")
1888+ waitUntilAppWindowIsFullyLoaded(app);
1889+
1890+ var appContainer = findChild(shell, "appContainer");
1891+ var appDelegate = findChild(appContainer, "appDelegate_dialer-app");
1892+ var decoration = findChild(appDelegate, "appWindowDecoration_dialer-app");
1893+ verify(decoration);
1894+
1895+ // move it away from launcher and panel
1896+ appDelegate.x = units.gu(10)
1897+ appDelegate.y = units.gu(10)
1898+
1899+ // drag-resize the area up
1900+ mousePress(decoration, decoration.width/2, -units.gu(1));
1901+ mouseMove(decoration, decoration.width/2, -units.gu(100));
1902+
1903+ // verify we don't go past the panel
1904+ compare(appDelegate.y >= PanelState.panelHeight, true);
1905+ }
1906+
18931907 function test_restoreWindowStateFixesIfUnderPanel() {
18941908 loadDesktopShellWithApps();
18951909 var appRepeater = findChild(shell, "appRepeater")