on xenial help sign in
merge trunk
commit75f8170469c0a067c773856487b4a190ffa21226 authorMichael Zanetti <michael.zanetti@canonical.com> dateFri 9 May 2014, 12:24 (12 years ago) parent0a9e4a7cae7d3f
152 files changed+2253−2033
CMakeLists.txt+5−5 CODING+11−15 build → build.sh+2−1 cmake/modules/QmlTest.cmake+2−4 data/CMakeLists.txt+1−2 data/unity-scope-tool.desktop.in−8 data/unity8.conf+9−1 debian/changelog+80 debian/control+41−22 debian/rules+1−2 debian/unity-scope-tool.install−1 debian/unity8-common.install+5 debian/unity8-fake-env.install+1−1 debian/unity8-private.install+1−1 debian/unity8.install+1−7 plugins/DashViews/abstractdashview.cpp−34 plugins/DashViews/abstractdashview.h−17 plugins/DashViews/horizontaljournal.cpp−12 plugins/DashViews/horizontaljournal.h−4 plugins/DashViews/listviewwithpageheader.cpp−50 plugins/DashViews/listviewwithpageheader.h−20 plugins/DashViews/organicgrid.cpp−8 plugins/DashViews/organicgrid.h−4 plugins/DashViews/verticaljournal.cpp−8 plugins/DashViews/verticaljournal.h−4 plugins/Unity/Indicators/qml/MenuItemFactory.qml+1−1 plugins/Unity/Launcher/backend/launcherbackend.cpp+266−16 plugins/Unity/Launcher/backend/launcherbackend.h+52−4 plugins/Utils/CMakeLists.txt−1 plugins/Utils/bottombarvisibilitycommunicatorshell.cpp−49 plugins/Utils/bottombarvisibilitycommunicatorshell.h−59 plugins/Utils/plugin.cpp−10 po/am.po+9−13 po/ar.po+9−27 po/ast.po+9−5 po/az.po+9−22 po/bg.po+9−5 po/br.po+9−5 po/bs.po+9−7 po/ca.po+9−22 po/ckb.po+9−22 po/cs.po+9−23 po/da.po+9−6 po/de.po+9−22 po/el.po+9−22 po/en_AU.po+9−22 po/en_GB.po+9−22 po/eo.po+9−6 po/es.po+9−5 po/eu.po+9−5 po/fa.po+9−6 po/fi.po+9−5 po/fo.po+9−6 po/fr.po+9−22 po/gd.po+9−25 po/gl.po+10−6 po/he.po+9−22 po/hi.po+9−9 po/hr.po+9−7 po/hu.po+9−22 po/hy.po+9−6 po/id.po+9−6 po/is.po+9−22 po/it.po+9−22 po/ja.po+9−13 po/km.po+9−21 po/kn.po+9−6 po/ko.po+9−6 po/ky.po+9−6 po/lo.po+9−13 po/lt.po+9−24 po/lv.po+27−24 po/ml.po+10−23 po/mr.po+9−6 po/ms.po+9−22 po/my.po+9−13 po/nb.po+9−6 po/nl.po+9−22 po/pl.po+9−24 po/pt.po+9−6 po/pt_BR.po+9−22 po/ro.po+9−7 po/ru.po+9−5 po/shn.po+9−6 po/si.po+9−6 po/sl.po+9−25 po/sq.po+9−16 po/sr.po+9−7 po/sv.po+9−6 po/sw.po+9−9 po/ta.po+10−23 po/te.po+9−6 po/tr.po+9−22 po/ug.po+12−8 po/uk.po+9−24 po/unity8.pot+7−3 po/vi.po+9−6 po/xh.po+9−6 po/zh_CN.po+9−6 po/zh_HK.po+9−21 po/zh_TW.po+9−21 qml/Bottombar/Bottombar.qml−227 qml/Bottombar/HudButton.qml−64 qml/Bottombar/graphics/hud@20.png qml/Bottombar/graphics/hud_invoke_button_active@20.png qml/CMakeLists.txt−1 qml/Components/FilterGrid.qml+37−24 qml/Components/LazyImage.qml+1 qml/Components/ZoomableImage.qml+153 qml/Dash/CardFilterGrid.qml+3−8 qml/Dash/DashContent.qml+18−10 qml/Dash/DashRenderer.qml+3−3 qml/Dash/GenericScopeView.qml+13−15 qml/Dash/Previews/PreviewProgress.qml+3−2 qml/Dash/Previews/PreviewRatingInput.qml+2−2 qml/Dash/Previews/PreviewZoomableImage.qml+4−7 qml/Greeter/Clock.qml+3−6 qml/Greeter/Greeter.qml+115−42 qml/Greeter/GreeterContent.qml+1−10 qml/Greeter/Infographics.qml+3 qml/Hud/Hud.qml+1−1 qml/Notifications/Notifications.qml+11 qml/Shell.qml+79−92 qml/graphics/dropshadow_left@20.png qml/Hud/graphics/dropshadow_right@20.png → qml/graphics/dropshadow_right@20.png run → run.sh+1−1 run_on_device → run_on_device.sh+2−2 tests/autopilot/unity8/shell/__init__.py+50−1 tests/autopilot/unity8/shell/tests/test_emulators.py+1−1 tests/autopilot/unity8/shell/tests/test_notifications.py+97−57 tests/autopilot/unity8/shell/tests/test_upstart.py+2−2 tests/plugins/DashViews/CMakeLists.txt+23−35 tests/plugins/DashViews/listviewwithpageheadertestsectionexternalmodel.cpp → tests/plugins/DashViews/listviewwithpageheadersectionexternalmodeltest.cpp+1−5 tests/plugins/DashViews/listviewwithpageheadertestsection.cpp → tests/plugins/DashViews/listviewwithpageheadersectiontest.cpp+1−13 tests/plugins/DashViews/listviewwithpageheadertest.cpp−15 tests/plugins/DashViews/tst_listviewwithpageheaderqml.qml → tests/plugins/DashViews/tst_ListViewWithPageHeaderQML.qml tests/plugins/Ubuntu/Gestures/CMakeLists.txt+1 tests/plugins/Unity/Launcher/CMakeLists.txt+3−3 tests/plugins/Unity/Launcher/launcherbackendtest.cpp+167 tests/plugins/Utils/CMakeLists.txt+2−1 tests/qmltests/CMakeLists.txt+2−1 tests/qmltests/Components/CMakeLists.txt+1 tests/qmltests/Components/tst_FilterGrid.qml+1−1 tests/qmltests/Components/tst_ZoomableImage.qml+192 tests/qmltests/Dash/Previews/tst_PreviewRatingInput.qml+21−2 tests/qmltests/Dash/Previews/tst_PreviewZoomableImage.qml+6−3 tests/qmltests/Dash/tst_GenericScopeView.qml+3−3 tests/qmltests/Greeter/tst_Clock.qml+3−3 tests/qmltests/Greeter/tst_Phone.qml+10−50 tests/qmltests/Greeter/tst_Tablet.qml+36−8 tests/qmltests/Panel/Indicators/tst_MenuItemFactory.qml+29−4 tests/utils/modules/Unity/Test/UnityTestCase.qml+26
CMakeLists.txt+5−5
@@ -48,11 +48,11 @@ add_custom_target(cppcheck COMMAND cppcheck --enable=all -q --error-exitcode=2
4848 ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/tests)
4949
5050include(FindPkgConfig)
51−find_package(Qt5Core)
52−find_package(Qt5Qml)
53−find_package(Qt5Quick)
54−find_package(Qt5Gui)
55−find_package(Qt5DBus)
51+find_package(Qt5Core 5.2 REQUIRED)
52+find_package(Qt5Qml 5.2 REQUIRED)
53+find_package(Qt5Quick 5.2 REQUIRED)
54+find_package(Qt5Gui 5.2 REQUIRED)
55+find_package(Qt5DBus 5.2 REQUIRED)
5656
5757# Standard install paths
5858include(GNUInstallDirs)
CODING+11−15
@@ -20,7 +20,7 @@ install dependencies
2020If its your first time, install build dependencies
2121
2222$ cd ~/unity8/trunk
23−$ ./build --setup
23+$ ./build.sh --setup
2424
2525 this will:
2626 - install the required dependencies to build, as well as run on the desktop
@@ -31,7 +31,7 @@ build Unity 8
3131-------------
3232
3333$ cd ~/unity8/trunk
34−$ ./build
34+$ ./build.sh
3535
3636You may also rebuild with the -c for clean, which just deletes the build
3737directory.
@@ -43,10 +43,10 @@ Running Unity 8 on your desktop
4343run the Unity 8 shell
4444---------------------
4545$ cd ~/unity8/trunk
46−$ ./run
46+$ ./run.sh
4747
4848Options can be passed to test the lock screen
49−$ ./run -p OR -k
49+$ ./run.sh -p OR -k
5050
5151-p is for pin lock, for which the default prompt answer is "1234"
5252-k is for keylock passphrase, for which the default prompt answer is "password"
@@ -78,19 +78,19 @@ Running Unity 8 on devices
7878 on the device yourself)
7979
8080$ cd ~/unity/trunk
81−$ ./run_on_device --setup
81+$ ./run_on_device.sh --setup
8282 this will:
8383 - install your public SSH key on the device
8484 - install the needed dependencies
8585
86−$ ./run_on_device
86+$ ./run_on_device.sh
8787 this will:
8888 - rsync the code to the device
8989 - build on the device
9090 - replace the running shell
9191
9292Options can be passed to test the lock screen
93−$ ./run_on_device -p OR -k
93+$ ./run_on_device.sh -p OR -k
9494
9595-p is for pin lock, for which the default prompt answer is "1234"
9696-k is for keylock passphrase, for which the default prompt answer is "password"
@@ -107,9 +107,9 @@ Notes
107107- exporting ANDROID_SERIAL=$your_device_serial or
108108 ANDROID_SERIAL=$your_device_ip:5555 will make adb not complain about
109109 multiple devices
110−- you can export TARGET_IP=$your_device_ip TARGET_SSH_PORT=22 for run_on_device
110+- you can export TARGET_IP=$your_device_ip TARGET_SSH_PORT=22 for run_on_device.sh
111111 to not use adb forwarding - useful if you use multiple devices
112−- using Ninja (package ninja-build - run_on_device -s installs this now)
112+- using Ninja (package ninja-build - run_on_device.sh -s installs this now)
113113 will improve build times (especially in the nothing-to-build case)
114114
115115
@@ -131,7 +131,7 @@ Running tests
131131=============
132132
133133Tests are run from the build directory (which will be ./builddir if you used
134−the ./build script).
134+the ./build.sh script).
135135
136136To run the tests that do not require any graphical capability and therefore
137137are pretty fast run:
@@ -167,15 +167,11 @@ NB: Manual test or interation doesn't make sense for all components or classes,
167167particularly the non-graphical ones. In such cases no "tryFoo" make target is
168168provided.
169169
170−NB: The tests expect the locale to be the C locale, they may fail if run
171−under a different locale, if you get failures others can not reproduce
172−prepend 'LC_ALL=C' to the 'make test' command
173−
174170Running autopilot tests
175171=======================
176172
177173Autopilot tests are run from the build directory (which will be ./builddir if you used
178−the ./build script).
174+the ./build.sh script).
179175
180176$ make autopilot
181177
build → build.shrenamed+2−1
@@ -43,13 +43,14 @@ install_dependencies() {
4343 gsettings-desktop-schemas \
4444 gsettings-ubuntu-schemas \
4545 qmenumodel-qml \
46− qtdeclarative5-dee-plugin \
46+ qml-module-qtquick-xmllistmodel \
4747 qtdeclarative5-gsettings1.0 \
4848 qtdeclarative5-ubuntu-ui-toolkit-plugin \
4949 qtdeclarative5-ubuntu-settings-components \
5050 qtdeclarative5-ubuntu-thumbnailer0.1 \
5151 unity-notifications-impl \
5252 qtdeclarative5-xmllistmodel-plugin \
53+ ubuntu-mobile-icons \
5354 unity-scope-home \
5455 unity-lens-applications \
5556 unity-plugin-scopes \
cmake/modules/QmlTest.cmake+2−4
@@ -59,11 +59,11 @@ macro(add_manual_qml_test SUBPATH COMPONENT_NAME)
5959endmacro(add_manual_qml_test)
6060
6161macro(add_qml_benchmark SUBPATH COMPONENT_NAME ITERATIONS)
62− add_qml_test_internal(${SUBPATH} ${COMPONENT_NAME} ${ITERATIONS})
62+ add_qml_test_internal(${SUBPATH} ${COMPONENT_NAME} ${ITERATIONS} ${ARGN})
6363endmacro(add_qml_benchmark)
6464
6565macro(add_qml_test SUBPATH COMPONENT_NAME)
66− add_qml_test_internal(${SUBPATH} ${COMPONENT_NAME} 0)
66+ add_qml_test_internal(${SUBPATH} ${COMPONENT_NAME} 0 ${ARGN})
6767endmacro(add_qml_test)
6868
6969macro(add_qml_test_internal SUBPATH COMPONENT_NAME ITERATIONS)
@@ -156,8 +156,6 @@ macro(add_binary_qml_test CLASS_NAME LD_PATH DEPS)
156156
157157 add_qmltest_target(xvfbtest${CLASS_NAME} "${xvfbtestCommand}" FALSE TRUE)
158158 add_dependencies(qmluitests xvfbtest${CLASS_NAME})
159−
160− add_manual_qml_test(. ${CLASS_NAME} IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins)
161159endmacro(add_binary_qml_test)
162160
163161macro(add_qmltest_target qmltest_TARGET qmltest_command qmltest_NO_TARGETS qmltest_NO_ADD_TEST)
data/CMakeLists.txt+1−2
@@ -1,8 +1,7 @@
11# generate desktop file
22configure_file(${SHELL_APP}.desktop.in ${CMAKE_CURRENT_BINARY_DIR}/${SHELL_APP}.desktop @ONLY)
3−configure_file(${SCOPE_TOOL}.desktop.in ${CMAKE_CURRENT_BINARY_DIR}/${SCOPE_TOOL}.desktop @ONLY)
43
54# install desktop files
6−install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${SHELL_APP}.desktop ${CMAKE_CURRENT_BINARY_DIR}/${SCOPE_TOOL}.desktop
5+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${SHELL_APP}.desktop
76 DESTINATION ${CMAKE_INSTALL_DATADIR}/applications
87 )
data/unity-scope-tool.desktop.indeleted−8
@@ -1,8 +0,0 @@
1−[Desktop Entry]
2−Type=Application
3−Name=Unity Scope Tool
4−Comment=Developer tool for Unity scopes.
5−Exec=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_BINDIR@/unity-scope-tool
6−Terminal=false
7−Icon=unity-scope-tool
8−X-Ubuntu-Touch=true
data/unity8.conf+9−1
@@ -12,6 +12,9 @@ respawn
1212expect stop
1313
1414pre-start script
15+ # Tell unity-mir to raise SIGSTOP after we start
16+ initctl set-env UNITY_MIR_EMITS_SIGSTOP=1
17+
1518 if [ -n "$MIR_SOCKET" ]; then
1619 if [ -z "$UNITY_MIR_SOCKET" ]; then
1720 # Save original value of MIR_SOCKET in case we are restarted,
@@ -42,7 +45,12 @@ pre-start script
4245 fi
4346
4447 initctl emit scope-ui-starting
45− initctl emit indicator-services-start
48+ initctl emit --no-wait indicator-services-start
4649end script
4750
4851exec ${BINARY:-unity8} $ARGS
52+
53+post-stop script
54+ initctl set-env --global MIR_SOCKET=$UNITY_MIR_SOCKET
55+ initctl unset-env --global UNITY_MIR_SOCKET
56+end script
debian/changelog+80
@@ -1,3 +1,83 @@
1+unity8 (7.86+14.10.20140507.3-0ubuntu1) utopic; urgency=low
2+
3+ [ Michał Sawicz ]
4+ * Remove HUD from the bottom edge. Again.
5+
6+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Wed, 07 May 2014 11:14:30 +0000
7+
8+unity8 (7.86+14.10.20140505-0ubuntu1) utopic; urgency=low
9+
10+ [ Ted Gould ]
11+ * Provide a dbus interface for setting the count and countVisible
12+ properties. (LP: #1301400)
13+
14+ [ Michał Sawicz ]
15+ * Pass env variables to initctl start.
16+ * Suffix .sh to our scripts and clean up debian/rules.
17+ * Adapt to Debian Qt package renames and drop unneeded Dee plugin
18+ dependency.
19+
20+ [ Ying-Chun Liu ]
21+ * Add Zoomable Image for Preview widgets.
22+
23+ [ Albert Astals ]
24+ * Remove support for Qt <= 5.2.1
25+
26+ [ Mirco Müller ]
27+ * Implemented feature-request from Design for modal snap-decision
28+ notifications on the phone. See LP #1285712 (LP: #1285712)
29+
30+ [ Andrea Cimitan ]
31+ * Make progressbas in preview widget big as the button
32+
33+ [ CI bot ]
34+ * Resync trunk
35+
36+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Mon, 05 May 2014 12:09:43 +0000
37+
38+unity8 (7.86+14.10.20140502.6-0ubuntu1) utopic; urgency=low
39+
40+ [ tpeeters ]
41+ * Adapt to new TabBar
42+
43+ [ Tim Peeters ]
44+ * Adapt to new TabBar
45+
46+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Fri, 02 May 2014 16:44:52 +0000
47+
48+unity8 (7.86+14.10.20140429.2-0ubuntu1) utopic; urgency=medium
49+
50+ [ Andrea Cimitan ]
51+ * Update upstart job to reflect latest unity-mir changes
52+ * Fix locale in qml tests and fixtimeformattertest (LP: #1301038)
53+ * Fix 1309135 (LP: #1309135)
54+
55+ [ Michał Sawicz ]
56+ * Split out unity8-common package
57+ * Don't wait for indicator services to start, and drop Scope Tool's
58+ .desktop file. (LP: #1310172)
59+
60+ [ Michael Terry ]
61+ * Stop clock from hiding when the 'show dash' button is pressed in
62+ greeter. (LP: #1308139)
63+ * Make swipe teases in the greeter more helpful and obvious (LP:
64+ #1267623)
65+
66+ [ Nick Dedekind ]
67+ * Fixed datetime indicator appointment colour (LP: #1307048)
68+
69+ [ Albert Astals ]
70+ * Improve Card creation time by adding loaders that make sure only
71+ what's needed is loaded (LP: #1297197)
72+ * CategoryDelegateRange: Fix condition for detecting overshooting
73+ * Make xvfbtests work in the DashView plugins
74+ * Fix binding loop in FilterGrid height
75+
76+ [ Victor R. Ruiz ]
77+ * Move autopilot notification code to a helper method.
78+
79+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Tue, 29 Apr 2014 15:21:33 +0000
80+
181unity8 (7.85+14.04.20140416-0ubuntu1) trusty; urgency=low
282
383 [ Albert Astals ]
debian/control+41−22
@@ -11,30 +11,32 @@ Build-Depends: cmake,
1111 libgl1-mesa-dev[!armhf] | libgl-dev[!armhf],
1212 libgl1-mesa-dri,
1313 libgles2-mesa-dev[armhf],
14+ libglib2.0-dev,
1415 libgsettings-qt-dev,
1516 libhud-client2-dev,
1617 libpulse-dev,
1718 libqmenumodel-dev (>= 0.2.7),
19+ libqt5xmlpatterns5-dev,
1820 libunity-api-dev (>= 7.80.6),
1921 libunity-mir-dev,
2022 libusermetricsoutput1-dev,
2123 libxcb1-dev,
22− libglib2.0-dev,
2324 pkg-config,
24− python:any (>= 2.7),
2525 python-setuptools,
2626 python3-all:any,
2727 python3-setuptools,
28+ python:any (>= 2.7),
29+ qml-module-qtquick-xmllistmodel,
30+ qml-module-qtquick2,
31+ qml-module-qttest,
2832 qt5-default,
29− qtbase5-dev,
33+ qtbase5-dev (>= 5.2.1),
3034 qtbase5-dev-tools,
31− qtbase5-private-dev,
32− qtdeclarative5-dev,
35+ qtbase5-private-dev (>= 5.2.1),
36+ qtdeclarative5-dev (>= 5.2.1),
3337 qtdeclarative5-dev-tools,
38+ qtdeclarative5-private-dev (>= 5.2.1),
3439 qtdeclarative5-qtmultimedia-plugin,
35− qtdeclarative5-private-dev,
36− qtdeclarative5-qtquick2-plugin,
37− qtdeclarative5-test-plugin,
3840 qtdeclarative5-ubuntu-settings-components,
3941 qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 0.1.47),
4042 qtdeclarative5-xmllistmodel-plugin,
@@ -60,7 +62,8 @@ Description: Indicators client test application
6062
6163Package: unity-scope-tool
6264Architecture: any
63−Depends: unity8 (= ${binary:Version}),
65+Depends: unity8-common (= ${source:Version}),
66+ unity8-private (= ${binary:Version}),
6467 ${misc:Depends},
6568 ${shlibs:Depends},
6669Description: Development tool for Unity scopes
@@ -71,10 +74,11 @@ Package: unity8
7174Architecture: any
7275Provides: indicator-renderer,
7376Depends: gsettings-desktop-schemas,
77+ libcap2-bin,
7478 libglib2.0-bin,
75− libunity-mir1,
79+ libunity-mir1 (>= 0.4),
7680 qmenumodel-qml (>= 0.2.7),
77− qtdeclarative5-dee-plugin,
81+ qml-module-qtquick-xmllistmodel,
7882 qtdeclarative5-gsettings1.0,
7983 qtdeclarative5-ubuntu-settings-components,
8084 qtdeclarative5-ubuntu-thumbnailer0.1 | ubuntu-thumbnailer-impl,
@@ -84,14 +88,9 @@ Depends: gsettings-desktop-schemas,
8488 qtdeclarative5-xmllistmodel-plugin,
8589 unity-application-impl-2,
8690 unity-launcher-impl-3,
87− unity-notifications-impl-2,
88− unity8-fake-env | unity-application-impl,
91+ unity8-common (= ${source:Version}),
8992 unity8-private (= ${binary:Version}),
9093 unity8-private | unity-launcher-impl,
91− unity-plugin-scopes | unity-scopes-impl,
92− unity-scopes-impl-0,
93−# for setcap:
94− libcap2-bin,
9594 ${misc:Depends},
9695 ${shlibs:Depends},
9796Recommends: unity-scope-click,
@@ -99,10 +98,30 @@ Recommends: unity-scope-click,
9998 unity-scope-scopes,
10099Breaks: indicator-network (<< 0.5.1),
101100 ubuntu-touch-session (<< 0.107),
102−Replaces: ubuntu-touch-session (<< 0.82~)
101+Replaces: ubuntu-touch-session (<< 0.82~),
103102Description: Unity 8 shell
104103 The Unity 8 shell is the primary user interface for Ubuntu devices.
105104
105+Package: unity8-common
106+Architecture: all
107+Depends: qtdeclarative5-ubuntu-thumbnailer0.1 | ubuntu-thumbnailer-impl,
108+ qtdeclarative5-ubuntu-ui-toolkit-plugin,
109+ qtdeclarative5-unity-notifications-plugin | unity-notifications-impl,
110+ ubuntu-thumbnailer-impl-0,
111+ unity-application-impl-2,
112+ unity-notifications-impl-3,
113+ unity-plugin-scopes | unity-scopes-impl,
114+ unity-scopes-impl-0,
115+ unity8-fake-env | unity-application-impl,
116+ ${misc:Depends},
117+Breaks: unity8 (<< 7.86),
118+Replaces: unity8 (<< 7.86),
119+Description: Unity 8 shell (common files)
120+ The Unity 8 shell is the primary user interface for Ubuntu devices.
121+ .
122+ This package contains the QML, graphics and locale files shared between
123+ unity8 and unity-scope-tool.
124+
106125Package: unity8-autopilot
107126Architecture: all
108127Depends: gir1.2-glib-2.0,
@@ -119,12 +138,12 @@ Depends: gir1.2-glib-2.0,
119138 python3-fixtures,
120139 python3-gi,
121140 ubuntu-ui-toolkit-autopilot,
122− unity8 (>= ${source:Version}),
123− unity8-fake-env (>= ${source:Version}),
141+ unity8 (= ${source:Version}),
142+ unity8-fake-env (= ${source:Version}),
124143 url-dispatcher-tools,
125144 ${misc:Depends},
126− ${python:Depends},
127145 ${python3:Depends},
146+ ${python:Depends},
128147 ${shlibs:Depends},
129148Description: Test package for Unity 8 shell
130149 Autopilot tests for the unity8 package
@@ -146,9 +165,9 @@ Architecture: any
146165Multi-Arch: same
147166Pre-Depends: ${misc:Pre-Depends},
148167Depends: gsettings-ubuntu-schemas,
168+ libunity-core-6.0-9,
149169 ${misc:Depends},
150170 ${shlibs:Depends},
151− libunity-core-6.0-9,
152171Provides: unity-launcher-impl,
153172 unity-launcher-impl-3,
154173Description: Unity 8 private libs
debian/rules+1−2
@@ -6,8 +6,7 @@
66export DPKG_GENSYMBOLS_CHECK_LEVEL=4
77export NO_PNG_PKG_MANGLE=1
88
9−.PHONY: build
10−build %:
9+%:
1110 dh $@ --parallel --fail-missing --with python2,python3
1211
1312override_dh_auto_clean:
debian/unity-scope-tool.install−1
@@ -1,3 +1,2 @@
11usr/bin/unity-scope-tool
2−usr/share/applications/unity-scope-tool.desktop
32usr/share/unity8/ScopeTool.qml
debian/unity8-common.installnew file+5
@@ -0,0 +1,5 @@
1+usr/share/locale
2+usr/share/unity8/Components
3+usr/share/unity8/Dash
4+usr/share/unity8/Notifications
5+usr/share/unity8/graphics
debian/unity8-fake-env.install+1−1
@@ -1,4 +1,4 @@
1−usr/lib/*/unity8/qml/nonmirplugins
21usr/lib/*/unity8/qml/mocks
2+usr/lib/*/unity8/qml/nonmirplugins
33usr/lib/*/unity8/qml/scopefakes
44usr/share/unity8/mocks
debian/unity8-private.install+1−1
@@ -1,7 +1,7 @@
11usr/lib/*/unity8/qml/AccountsService
2+usr/lib/*/unity8/qml/DashViews
23usr/lib/*/unity8/qml/HudClient
34usr/lib/*/unity8/qml/LightDM
4−usr/lib/*/unity8/qml/DashViews
55usr/lib/*/unity8/qml/Powerd
66usr/lib/*/unity8/qml/SessionBroadcast
77usr/lib/*/unity8/qml/Ubuntu
debian/unity8.install+1−7
@@ -1,15 +1,9 @@
1+data/unity8.conf usr/share/upstart/sessions/
12usr/bin/unity8
23usr/share/applications/unity8.desktop
3−usr/share/locale
4−usr/share/unity8/Bottombar
5−usr/share/unity8/Components
6−usr/share/unity8/Dash
74usr/share/unity8/Greeter
85usr/share/unity8/Hud
96usr/share/unity8/Launcher
10−usr/share/unity8/Notifications
117usr/share/unity8/Panel
128usr/share/unity8/Shell.qml
139usr/share/unity8/Stages
14−usr/share/unity8/graphics
15−data/unity8.conf usr/share/upstart/sessions/
plugins/DashViews/abstractdashview.cpp−34
@@ -46,17 +46,10 @@ void AbstractDashView::setModel(QAbstractItemModel *model)
4646 if (!m_delegateModel) {
4747 createDelegateModel();
4848 } else {
49−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
50− disconnect(m_delegateModel, SIGNAL(modelUpdated(QQuickChangeSet,bool)), this, SLOT(onModelUpdated(QQuickChangeSet,bool)));
51− }
52− m_delegateModel->setModel(QVariant::fromValue<QAbstractItemModel *>(model));
53− connect(m_delegateModel, SIGNAL(modelUpdated(QQuickChangeSet,bool)), this, SLOT(onModelUpdated(QQuickChangeSet,bool)));
54−#else
5549 disconnect(m_delegateModel, SIGNAL(modelUpdated(QQmlChangeSet,bool)), this, SLOT(onModelUpdated(QQmlChangeSet,bool)));
5650 }
5751 m_delegateModel->setModel(QVariant::fromValue<QAbstractItemModel *>(model));
5852 connect(m_delegateModel, SIGNAL(modelUpdated(QQmlChangeSet,bool)), this, SLOT(onModelUpdated(QQmlChangeSet,bool)));
59−#endif
6053
6154 cleanupExistingItems();
6255
@@ -181,13 +174,8 @@ void AbstractDashView::resetDelegateCreationEnd()
181174
182175void AbstractDashView::createDelegateModel()
183176{
184−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
185− m_delegateModel = new QQuickVisualDataModel(qmlContext(this), this);
186− connect(m_delegateModel, SIGNAL(createdItem(int,QQuickItem*)), this, SLOT(itemCreated(int,QQuickItem*)));
187−#else
188177 m_delegateModel = new QQmlDelegateModel(qmlContext(this), this);
189178 connect(m_delegateModel, SIGNAL(createdItem(int,QObject*)), this, SLOT(itemCreated(int,QObject*)));
190−#endif
191179 if (isComponentComplete())
192180 m_delegateModel->componentComplete();
193181}
@@ -253,16 +241,9 @@ QQuickItem *AbstractDashView::createItem(int modelIndex, bool asynchronous)
253241 return nullptr;
254242
255243 m_asyncRequestedIndex = -1;
256−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
257− QQuickItem *item = m_delegateModel->item(modelIndex, asynchronous);
258−#else
259244 QObject* object = m_delegateModel->object(modelIndex, asynchronous);
260245 QQuickItem *item = qmlobject_cast<QQuickItem*>(object);
261−#endif
262246 if (!item) {
263−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
264− m_asyncRequestedIndex = modelIndex;
265−#else
266247 if (object) {
267248 m_delegateModel->release(object);
268249 if (!m_delegateValidated) {
@@ -273,7 +254,6 @@ QQuickItem *AbstractDashView::createItem(int modelIndex, bool asynchronous)
273254 } else {
274255 m_asyncRequestedIndex = modelIndex;
275256 }
276−#endif
277257 return nullptr;
278258 } else {
279259 addItemToView(modelIndex, item);
@@ -283,13 +263,8 @@ QQuickItem *AbstractDashView::createItem(int modelIndex, bool asynchronous)
283263
284264void AbstractDashView::releaseItem(QQuickItem *item)
285265{
286−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
287− QQuickVisualModel::ReleaseFlags flags = m_delegateModel->release(item);
288− if (flags & QQuickVisualModel::Destroyed) {
289−#else
290266 QQmlDelegateModel::ReleaseFlags flags = m_delegateModel->release(item);
291267 if (flags & QQmlDelegateModel::Destroyed) {
292−#endif
293268 item->setParentItem(nullptr);
294269 }
295270}
@@ -299,10 +274,6 @@ void AbstractDashView::setImplicitHeightDirty()
299274 m_implicitHeightDirty = true;
300275}
301276
302−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
303−void AbstractDashView::itemCreated(int modelIndex, QQuickItem *item)
304−{
305−#else
306277void AbstractDashView::itemCreated(int modelIndex, QObject *object)
307278{
308279 QQuickItem *item = qmlobject_cast<QQuickItem*>(object);
@@ -310,7 +281,6 @@ void AbstractDashView::itemCreated(int modelIndex, QObject *object)
310281 qWarning() << "AbstractDashView::itemCreated got a non item for index" << modelIndex;
311282 return;
312283 }
313−#endif
314284 item->setParentItem(this);
315285
316286 // We only need to call createItem if we are here because of an asynchronous generation
@@ -325,11 +295,7 @@ void AbstractDashView::itemCreated(int modelIndex, QObject *object)
325295 }
326296}
327297
328−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
329−void AbstractDashView::onModelUpdated(const QQuickChangeSet &changeSet, bool reset)
330−#else
331298void AbstractDashView::onModelUpdated(const QQmlChangeSet &changeSet, bool reset)
332−#endif
333299{
334300 if (reset) {
335301 cleanupExistingItems();
plugins/DashViews/abstractdashview.h−17
@@ -23,12 +23,8 @@ class QAbstractItemModel;
2323class QQmlComponent;
2424#pragma GCC diagnostic push
2525#pragma GCC diagnostic ignored "-pedantic"
26−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
27−#include <private/qquickvisualdatamodel_p.h>
28−#else
2926#include <private/qqmldelegatemodel_p.h>
3027#include <qqmlinfo.h>
31−#endif
3228#pragma GCC diagnostic pop
3329
3430class AbstractDashView : public QQuickItem
@@ -94,13 +90,8 @@ protected:
9490 void setImplicitHeightDirty();
9591
9692private Q_SLOTS:
97−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
98− void itemCreated(int modelIndex, QQuickItem *item);
99− void onModelUpdated(const QQuickChangeSet &changeSet, bool reset);
100−#else
10193 void itemCreated(int modelIndex, QObject *object);
10294 void onModelUpdated(const QQmlChangeSet &changeSet, bool reset);
103−#endif
10495 void onHeightChanged();
10596
10697private:
@@ -117,17 +108,9 @@ private:
117108 virtual void doRelayout() = 0;
118109 virtual void updateItemCulling(qreal visibleFromY, qreal visibleToY) = 0;
119110 virtual void calculateImplicitHeight() = 0;
120−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
121− virtual void processModelRemoves(const QVector<QQuickChangeSet::Remove> &removes) = 0;
122−#else
123111 virtual void processModelRemoves(const QVector<QQmlChangeSet::Remove> &removes) = 0;
124−#endif
125112
126−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
127− QQuickVisualDataModel *m_delegateModel;
128−#else
129113 QQmlDelegateModel *m_delegateModel;
130−#endif
131114
132115 // Index we are waiting because we requested it asynchronously
133116 int m_asyncRequestedIndex;
plugins/DashViews/horizontaljournal.cpp−12
@@ -28,12 +28,8 @@
2828#include <qqmlengine.h>
2929#pragma GCC diagnostic push
3030#pragma GCC diagnostic ignored "-pedantic"
31−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
32−#include <private/qquickvisualdatamodel_p.h>
33−#else
3431#include <private/qqmldelegatemodel_p.h>
3532#include <qqmlinfo.h>
36−#endif
3733#include <private/qquickitem_p.h>
3834#pragma GCC diagnostic pop
3935
@@ -188,17 +184,9 @@ void HorizontalJournal::calculateImplicitHeight()
188184 }
189185}
190186
191−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
192−void HorizontalJournal::processModelRemoves(const QVector<QQuickChangeSet::Remove> &removes)
193−#else
194187void HorizontalJournal::processModelRemoves(const QVector<QQmlChangeSet::Remove> &removes)
195−#endif
196188{
197−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
198− Q_FOREACH(const QQuickChangeSet::Remove &remove, removes) {
199−#else
200189 Q_FOREACH(const QQmlChangeSet::Remove &remove, removes) {
201−#endif
202190 for (int i = remove.count - 1; i >= 0; --i) {
203191 const int indexToRemove = remove.index + i;
204192 // We only support removing from the end so
plugins/DashViews/horizontaljournal.h−4
@@ -52,11 +52,7 @@ private:
5252 void calculateImplicitHeight() override;
5353 void doRelayout() override;
5454 void updateItemCulling(qreal visibleFromY, qreal visibleToY) override;
55−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
56− void processModelRemoves(const QVector<QQuickChangeSet::Remove> &removes) override;
57−#else
5855 void processModelRemoves(const QVector<QQmlChangeSet::Remove> &removes) override;
59−#endif
6056
6157 int m_firstVisibleIndex;
6258 QList<QQuickItem*> m_visibleItems;
plugins/DashViews/listviewwithpageheader.cpp−50
@@ -97,11 +97,7 @@
9797#include <qqmlengine.h>
9898#pragma GCC diagnostic push
9999#pragma GCC diagnostic ignored "-pedantic"
100−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
101−#include <private/qquickvisualdatamodel_p.h>
102−#else
103100#include <private/qqmldelegatemodel_p.h>
104−#endif
105101#include <private/qqmlglobal_p.h>
106102#include <private/qquickitem_p.h>
107103#include <private/qquickanimation_p.h>
@@ -191,17 +187,10 @@ void ListViewWithPageHeader::setModel(QAbstractItemModel *model)
191187 if (!m_delegateModel) {
192188 createDelegateModel();
193189 } else {
194−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
195− disconnect(m_delegateModel, SIGNAL(modelUpdated(QQuickChangeSet,bool)), this, SLOT(onModelUpdated(QQuickChangeSet,bool)));
196− }
197− m_delegateModel->setModel(QVariant::fromValue<QAbstractItemModel *>(model));
198− connect(m_delegateModel, SIGNAL(modelUpdated(QQuickChangeSet,bool)), this, SLOT(onModelUpdated(QQuickChangeSet,bool)));
199−#else
200190 disconnect(m_delegateModel, SIGNAL(modelUpdated(QQmlChangeSet,bool)), this, SLOT(onModelUpdated(QQmlChangeSet,bool)));
201191 }
202192 m_delegateModel->setModel(QVariant::fromValue<QAbstractItemModel *>(model));
203193 connect(m_delegateModel, SIGNAL(modelUpdated(QQmlChangeSet,bool)), this, SLOT(onModelUpdated(QQmlChangeSet,bool)));
204−#endif
205194 Q_EMIT modelChanged();
206195 polish();
207196 // TODO?
@@ -570,13 +559,8 @@ void ListViewWithPageHeader::viewportMoved(Qt::Orientations orient)
570559
571560void ListViewWithPageHeader::createDelegateModel()
572561{
573−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
574− m_delegateModel = new QQuickVisualDataModel(qmlContext(this), this);
575− connect(m_delegateModel, SIGNAL(createdItem(int,QQuickItem*)), this, SLOT(itemCreated(int,QQuickItem*)));
576−#else
577562 m_delegateModel = new QQmlDelegateModel(qmlContext(this), this);
578563 connect(m_delegateModel, SIGNAL(createdItem(int,QObject*)), this, SLOT(itemCreated(int,QObject*)));
579−#endif
580564 if (isComponentComplete())
581565 m_delegateModel->componentComplete();
582566 updateWatchedRoles();
@@ -657,13 +641,8 @@ bool ListViewWithPageHeader::addVisibleItems(qreal fillFrom, qreal fillTo, bool
657641void ListViewWithPageHeader::reallyReleaseItem(ListItem *listItem)
658642{
659643 QQuickItem *item = listItem->m_item;
660−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
661− QQuickVisualModel::ReleaseFlags flags = m_delegateModel->release(item);
662− if (flags & QQuickVisualModel::Destroyed) {
663−#else
664644 QQmlDelegateModel::ReleaseFlags flags = m_delegateModel->release(item);
665645 if (flags & QQmlDelegateModel::Destroyed) {
666−#endif
667646 item->setParentItem(nullptr);
668647 }
669648 delete listItem->m_sectionItem;
@@ -796,16 +775,9 @@ ListViewWithPageHeader::ListItem *ListViewWithPageHeader::createItem(int modelIn
796775 return nullptr;
797776
798777 m_asyncRequestedIndex = -1;
799−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
800− QQuickItem *item = m_delegateModel->item(modelIndex, asynchronous);
801−#else
802778 QObject* object = m_delegateModel->object(modelIndex, asynchronous);
803779 QQuickItem *item = qmlobject_cast<QQuickItem*>(object);
804−#endif
805780 if (!item) {
806−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
807− m_asyncRequestedIndex = modelIndex;
808−#else
809781 if (object) {
810782 m_delegateModel->release(object);
811783 if (!m_delegateValidated) {
@@ -816,7 +788,6 @@ ListViewWithPageHeader::ListItem *ListViewWithPageHeader::createItem(int modelIn
816788 } else {
817789 m_asyncRequestedIndex = modelIndex;
818790 }
819−#endif
820791 return 0;
821792 } else {
822793// qDebug() << "ListViewWithPageHeader::createItem::We have the item" << modelIndex << item;
@@ -872,10 +843,6 @@ ListViewWithPageHeader::ListItem *ListViewWithPageHeader::createItem(int modelIn
872843 }
873844}
874845
875−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
876−void ListViewWithPageHeader::itemCreated(int modelIndex, QQuickItem *item)
877−{
878−#else
879846void ListViewWithPageHeader::itemCreated(int modelIndex, QObject *object)
880847{
881848 QQuickItem *item = qmlobject_cast<QQuickItem*>(object);
@@ -883,7 +850,6 @@ void ListViewWithPageHeader::itemCreated(int modelIndex, QObject *object)
883850 qWarning() << "ListViewWithPageHeader::itemCreated got a non item for index" << modelIndex;
884851 return;
885852 }
886−#endif
887853// qDebug() << "ListViewWithPageHeader::itemCreated" << modelIndex << item;
888854 // Check we are not being taken down and don't paint anything
889855 // TODO Check if we still need this in 5.2
@@ -924,21 +890,13 @@ void ListViewWithPageHeader::onHeightChanged()
924890}
925891
926892
927−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
928−void ListViewWithPageHeader::onModelUpdated(const QQuickChangeSet &changeSet, bool /*reset*/)
929−#else
930893void ListViewWithPageHeader::onModelUpdated(const QQmlChangeSet &changeSet, bool /*reset*/)
931−#endif
932894{
933895 // TODO Do something with reset
934896// qDebug() << "ListViewWithPageHeader::onModelUpdated" << changeSet << reset;
935897 const auto oldFirstVisibleIndex = m_firstVisibleIndex;
936898
937−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
938− Q_FOREACH(const QQuickChangeSet::Remove &remove, changeSet.removes()) {
939−#else
940899 Q_FOREACH(const QQmlChangeSet::Remove &remove, changeSet.removes()) {
941−#endif
942900// qDebug() << "ListViewWithPageHeader::onModelUpdated Remove" << remove.index << remove.count;
943901 if (remove.index + remove.count > m_firstVisibleIndex && remove.index < m_firstVisibleIndex + m_visibleItems.count()) {
944902 const qreal oldFirstValidIndexPos = m_visibleItems.first()->y();
@@ -992,11 +950,7 @@ void ListViewWithPageHeader::onModelUpdated(const QQmlChangeSet &changeSet, bool
992950 }
993951 }
994952
995−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
996− Q_FOREACH(const QQuickChangeSet::Insert &insert, changeSet.inserts()) {
997−#else
998953 Q_FOREACH(const QQmlChangeSet::Insert &insert, changeSet.inserts()) {
999−#endif
1000954// qDebug() << "ListViewWithPageHeader::onModelUpdated Insert" << insert.index << insert.count;
1001955 const bool insertingInValidIndexes = insert.index > m_firstVisibleIndex && insert.index < m_firstVisibleIndex + m_visibleItems.count();
1002956 const bool firstItemWithViewOnTop = insert.index == 0 && m_firstVisibleIndex == 0 && m_visibleItems.first()->y() + m_clipItem->y() > contentY();
@@ -1054,11 +1008,7 @@ void ListViewWithPageHeader::onModelUpdated(const QQmlChangeSet &changeSet, bool
10541008 }
10551009 }
10561010
1057−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
1058− Q_FOREACH(const QQuickChangeSet::Change &change, changeSet.changes()) {
1059−#else
10601011 Q_FOREACH(const QQmlChangeSet::Change &change, changeSet.changes()) {
1061−#endif
10621012// qDebug() << "ListViewWithPageHeader::onModelUpdated Change" << change.index << change.count;
10631013 for (int i = change.index; i < change.count; ++i) {
10641014 ListItem *item = itemAtIndex(i);
plugins/DashViews/listviewwithpageheader.h−20
@@ -17,21 +17,13 @@
1717#ifndef LISTVIEWWITHPAGEHEADER_H
1818#define LISTVIEWWITHPAGEHEADER_H
1919
20−#pragma GCC diagnostic push
21−#pragma GCC diagnostic ignored "-pedantic"
2220#include <private/qquickitemchangelistener_p.h>
2321#include <private/qquickflickable_p.h>
24−#pragma GCC diagnostic pop
2522
2623class QAbstractItemModel;
2724class QQuickNumberAnimation;
28−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
29−class QQuickChangeSet;
30−class QQuickVisualDataModel;
31−#else
3225class QQmlChangeSet;
3326class QQmlDelegateModel;
34−#endif
3527
3628
3729/**
@@ -117,19 +109,11 @@ protected:
117109 void updatePolish();
118110
119111private Q_SLOTS:
120−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
121− void itemCreated(int modelIndex, QQuickItem *item);
122−#else
123112 void itemCreated(int modelIndex, QObject *object);
124−#endif
125113 void onContentHeightChanged();
126114 void onContentWidthChanged();
127115 void onHeightChanged();
128−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
129− void onModelUpdated(const QQuickChangeSet &changeSet, bool reset);
130−#else
131116 void onModelUpdated(const QQmlChangeSet &changeSet, bool reset);
132−#endif
133117 void onShowHeaderAnimationFinished();
134118
135119private:
@@ -168,11 +152,7 @@ private:
168152 QQuickItem *getSectionItem(int modelIndex, bool alreadyInserted);
169153 QQuickItem *getSectionItem(const QString &sectionText);
170154
171−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
172− QQuickVisualDataModel *m_delegateModel;
173−#else
174155 QQmlDelegateModel *m_delegateModel;
175−#endif
176156
177157 // Index we are waiting because we requested it asynchronously
178158 int m_asyncRequestedIndex;
plugins/DashViews/organicgrid.cpp−8
@@ -237,17 +237,9 @@ void OrganicGrid::calculateImplicitHeight()
237237 }
238238}
239239
240−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
241−void OrganicGrid::processModelRemoves(const QVector<QQuickChangeSet::Remove> &removes)
242−#else
243240void OrganicGrid::processModelRemoves(const QVector<QQmlChangeSet::Remove> &removes)
244−#endif
245241{
246−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
247− Q_FOREACH(const QQuickChangeSet::Remove &remove, removes) {
248−#else
249242 Q_FOREACH(const QQmlChangeSet::Remove &remove, removes) {
250−#endif
251243 for (int i = remove.count - 1; i >= 0; --i) {
252244 const int indexToRemove = remove.index + i;
253245 // We only support removing from the end
plugins/DashViews/organicgrid.h−4
@@ -79,11 +79,7 @@ private:
7979 void doRelayout() override;
8080 void updateItemCulling(qreal visibleFromY, qreal visibleToY) override;
8181 void calculateImplicitHeight() override;
82−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
83− void processModelRemoves(const QVector<QQuickChangeSet::Remove> &removes) override;
84−#else
8582 void processModelRemoves(const QVector<QQmlChangeSet::Remove> &removes) override;
86−#endif
8783
8884 QSizeF m_smallDelegateSize;
8985 QSizeF m_bigDelegateSize;
plugins/DashViews/verticaljournal.cpp−8
@@ -239,17 +239,9 @@ void VerticalJournal::updateItemCulling(qreal visibleFromY, qreal visibleToY)
239239 }
240240}
241241
242−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
243−void VerticalJournal::processModelRemoves(const QVector<QQuickChangeSet::Remove> &removes)
244−#else
245242void VerticalJournal::processModelRemoves(const QVector<QQmlChangeSet::Remove> &removes)
246−#endif
247243{
248−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
249− Q_FOREACH(const QQuickChangeSet::Remove &remove, removes) {
250−#else
251244 Q_FOREACH(const QQmlChangeSet::Remove &remove, removes) {
252−#endif
253245 for (int i = remove.count - 1; i >= 0; --i) {
254246 const int indexToRemove = remove.index + i;
255247 // Since we only support removing from the end, indexToRemove
plugins/DashViews/verticaljournal.h−4
@@ -90,11 +90,7 @@ private:
9090 void calculateImplicitHeight() override;
9191 void doRelayout() override;
9292 void updateItemCulling(qreal visibleFromY, qreal visibleToY) override;
93−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
94− void processModelRemoves(const QVector<QQuickChangeSet::Remove> &removes) override;
95−#else
9693 void processModelRemoves(const QVector<QQmlChangeSet::Remove> &removes) override;
97−#endif
9894
9995 QVector<QList<ViewItem>> m_columnVisibleItems;
10096 QHash<int, int> m_indexColumnMap;
plugins/Unity/Indicators/qml/MenuItemFactory.qml+1−1
@@ -273,7 +273,7 @@ Item {
273273 text: menuData && menuData.label || ""
274274 iconSource: menuData && menuData.icon || "image://theme/calendar"
275275 time: timeFormatter.timeString
276− eventColor: menu && menu.ext.hasOwnProperty("xCanonicalColor") ? menu.ext.xCanonicalColor : Qt.rgba(0.0, 0.0, 0.0, 0.0)
276+ eventColor: getExtendedProperty(extendedData, "xCanonicalColor", Qt.rgba(0.0, 0.0, 0.0, 0.0))
277277 enabled: menuData && menuData.sensitive || false
278278
279279 onMenuModelChanged: {
plugins/Unity/Launcher/backend/launcherbackend.cpp+266−16
@@ -34,10 +34,12 @@ public:
3434 QString desktopFile;
3535 QString displayName;
3636 QString icon;
37+ int count;
38+ bool countVisible;
3739};
3840
3941LauncherBackend::LauncherBackend(QObject *parent):
40− QObject(parent),
42+ QDBusVirtualObject(parent),
4143 m_accounts(nullptr)
4244{
4345#ifndef LAUNCHER_TESTING
@@ -45,10 +47,25 @@ LauncherBackend::LauncherBackend(QObject *parent):
4547#endif
4648 m_user = qgetenv("USER");
4749 syncFromAccounts();
50+
51+ /* Set up ourselves on DBus */
52+ QDBusConnection con = QDBusConnection::sessionBus();
53+ if (!con.registerService("com.canonical.Unity.Launcher")) {
54+ qDebug() << "Unable to register launcher name";
55+ }
56+ if (!con.registerVirtualObject("/com/canonical/Unity/Launcher", this, QDBusConnection::VirtualObjectRegisterOption::SubPath)) {
57+ qDebug() << "Unable to register launcher object";
58+ }
4859}
4960
5061LauncherBackend::~LauncherBackend()
5162{
63+ /* Remove oursevles from DBus */
64+ QDBusConnection con = QDBusConnection::sessionBus();
65+ con.unregisterService("com.canonical.Unity.Launcher");
66+ con.unregisterObject("/com/canonical/Unity/Launcher");
67+
68+ /* Clear data */
5269 m_storedApps.clear();
5370
5471 Q_FOREACH(LauncherBackendItem *item, m_itemCache) {
@@ -90,7 +107,7 @@ void LauncherBackend::setStoredApplications(const QStringList &appIds)
90107
91108QString LauncherBackend::desktopFile(const QString &appId) const
92109{
93− LauncherBackendItem *item = m_itemCache.value(appId);
110+ LauncherBackendItem *item = m_itemCache.value(appId, nullptr);
94111 if (item) {
95112 return item->desktopFile;
96113 }
@@ -100,7 +117,7 @@ QString LauncherBackend::desktopFile(const QString &appId) const
100117
101118QString LauncherBackend::displayName(const QString &appId) const
102119{
103− LauncherBackendItem *item = m_itemCache.value(appId);
120+ LauncherBackendItem *item = m_itemCache.value(appId, nullptr);
104121 if (item) {
105122 return item->displayName;
106123 }
@@ -118,16 +135,9 @@ QString LauncherBackend::displayName(const QString &appId) const
118135QString LauncherBackend::icon(const QString &appId) const
119136{
120137 QString iconName;
121− LauncherBackendItem *item = m_itemCache.value(appId);
138+ LauncherBackendItem *item = getItem(appId);
122139 if (item) {
123140 iconName = item->icon;
124− } else {
125− QString df = findDesktopFile(appId);
126− if (!df.isEmpty()) {
127− LauncherBackendItem *item = parseDesktopFile(df);
128− m_itemCache.insert(appId, item);
129− iconName = item->icon;
130− }
131141 }
132142
133143 return iconName;
@@ -153,10 +163,70 @@ int LauncherBackend::progress(const QString &appId) const
153163
154164int LauncherBackend::count(const QString &appId) const
155165{
156− // TODO: Return value for count emblem.
157− // TODO: emit countChanged() when this value changes.
158− Q_UNUSED(appId)
159− return 0;
166+ int count = -1;
167+ LauncherBackendItem *item = getItem(appId);
168+
169+ if (item) {
170+ if (item->countVisible) {
171+ count = item->count;
172+ }
173+ }
174+
175+ return count;
176+}
177+
178+void LauncherBackend::setCount(const QString &appId, int count) const
179+{
180+ LauncherBackendItem *item = getItem(appId);
181+
182+ bool emitchange = false;
183+ if (item) {
184+ emitchange = (item->count != count);
185+ item->count = count;
186+ }
187+
188+ if (emitchange) {
189+ /* TODO: This needs to use the accessor to handle the visibility
190+ correctly, but when we have the two properties we can just use
191+ the local value */
192+ Q_EMIT countChanged(appId, this->count(appId));
193+ QVariant vcount(item->count);
194+ emitPropChangedDbus(appId, "count", vcount);
195+ }
196+}
197+
198+bool LauncherBackend::countVisible(const QString &appId) const
199+{
200+ bool visible = false;
201+ LauncherBackendItem *item = getItem(appId);
202+
203+ if (item) {
204+ visible = item->countVisible;
205+ }
206+
207+ return visible;
208+}
209+
210+void LauncherBackend::setCountVisible(const QString &appId, bool visible) const
211+{
212+ LauncherBackendItem *item = getItem(appId);
213+
214+ bool emitchange = false;
215+ if (item) {
216+ emitchange = (item->countVisible != visible);
217+ item->countVisible = visible;
218+ } else {
219+ qDebug() << "Unable to find:" << appId;
220+ }
221+
222+ if (emitchange) {
223+ /* TODO: Because we're using visible in determining the
224+ count we need to emit a count changed as well */
225+ Q_EMIT countChanged(appId, this->count(appId));
226+ Q_EMIT countVisibleChanged(appId, item->countVisible);
227+ QVariant vCountVisible(item->countVisible);
228+ emitPropChangedDbus(appId, "countVisible", vCountVisible);
229+ }
160230}
161231
162232void LauncherBackend::setUser(const QString &username)
@@ -275,6 +345,35 @@ LauncherBackendItem* LauncherBackend::parseDesktopFile(const QString &desktopFil
275345 } else {
276346 item->icon = "image://theme/" + iconString;
277347 }
348+
349+ /* TODO: These should be looked up in a cache somewhere */
350+ item->count = 0;
351+ item->countVisible = false;
352+
353+ return item;
354+}
355+
356+/* Gets an item, and tries to create a new one if we need it to */
357+LauncherBackendItem* LauncherBackend::getItem(const QString &appId) const
358+{
359+ LauncherBackendItem *item = m_itemCache.value(appId, nullptr);
360+ if (!item) {
361+ QString df = findDesktopFile(appId);
362+ if (!df.isEmpty()) {
363+ item = parseDesktopFile(df);
364+ if (item) {
365+ m_itemCache[appId] = item;
366+ } else {
367+ qWarning() << "Unable to parse desktop file for" << appId << "path" << df;
368+ }
369+ } else {
370+ qDebug() << "Unable to find desktop file for:" << appId;
371+ }
372+ }
373+
374+ if (!item)
375+ qWarning() << "Unable to find item for: " << appId;
376+
278377 return item;
279378}
280379
@@ -285,7 +384,7 @@ void LauncherBackend::loadFromVariant(const QVariantMap &details)
285384 }
286385 QString appId = details.value("id").toString();
287386
288− LauncherBackendItem *item = m_itemCache.value(appId);
387+ LauncherBackendItem *item = m_itemCache.value(appId, nullptr);
289388 if (item) {
290389 delete item;
291390 }
@@ -295,6 +394,8 @@ void LauncherBackend::loadFromVariant(const QVariantMap &details)
295394 item->desktopFile = details.value("desktopFile").toString();
296395 item->displayName = details.value("name").toString();
297396 item->icon = details.value("icon").toString();
397+ item->count = details.value("count").toInt();
398+ item->countVisible = details.value("countVisible").toBool();
298399
299400 m_itemCache.insert(appId, item);
300401 m_storedApps.append(appId);
@@ -308,6 +409,8 @@ QVariantMap LauncherBackend::itemToVariant(const QString &appId) const
308409 details.insert("name", item->displayName);
309410 details.insert("icon", item->icon);
310411 details.insert("desktopFile", item->desktopFile);
412+ details.insert("count", item->count);
413+ details.insert("countVisible", item->countVisible);
311414 return details;
312415}
313416
@@ -318,3 +421,150 @@ bool LauncherBackend::isDefaultsItem(const QList<QVariantMap> &apps) const
318421 // list of one item with the 'defaults' field set to true.
319422 return (apps.size() == 1 && apps[0].value("defaults").toBool());
320423}
424+
425+bool LauncherBackend::handleMessage(const QDBusMessage& message, const QDBusConnection& connection)
426+{
427+ /* Check to make sure we're getting properties on our interface */
428+ if (message.type() != QDBusMessage::MessageType::MethodCallMessage) {
429+ return false;
430+ }
431+ if (message.interface() != "org.freedesktop.DBus.Properties") {
432+ return false;
433+ }
434+ if (message.arguments()[0].toString() != "com.canonical.Unity.Launcher.Item") {
435+ return false;
436+ }
437+
438+ /* Break down the path to just the app id */
439+ QString pathtemp = message.path();
440+ if (!pathtemp.startsWith("/com/canonical/Unity/Launcher/")) {
441+ return false;
442+ }
443+ pathtemp.remove("/com/canonical/Unity/Launcher/");
444+ if (pathtemp.indexOf('/') >= 0) {
445+ return false;
446+ }
447+
448+ /* Find ourselves an appid */
449+ QString appid = decodeAppId(pathtemp);
450+ QVariantList retval;
451+
452+ if (message.member() == "Get") {
453+ if (message.arguments()[1].toString() == "count") {
454+ retval.append(QVariant::fromValue(QDBusVariant(this->count(appid))));
455+ } else if (message.arguments()[1].toString() == "countVisible") {
456+ retval.append(QVariant::fromValue(QDBusVariant(this->countVisible(appid))));
457+ }
458+ } else if (message.member() == "Set") {
459+ if (message.arguments()[1].toString() == "count") {
460+ this->setCount(appid, message.arguments()[2].value<QDBusVariant>().variant().toInt());
461+ } else if (message.arguments()[1].toString() == "countVisible") {
462+ this->setCountVisible(appid, message.arguments()[2].value<QDBusVariant>().variant().toBool());
463+ }
464+ } else if (message.member() == "GetAll") {
465+ retval.append(this->itemToVariant(appid));
466+ } else {
467+ return false;
468+ }
469+
470+ QDBusMessage reply = message.createReply(retval);
471+ return connection.send(reply);
472+}
473+
474+QString LauncherBackend::introspect(const QString &path) const
475+{
476+ /* This case we should just list the nodes */
477+ if (path == "/com/canonical/Unity/Launcher/" || path == "/com/canonical/Unity/Launcher") {
478+ QString nodes;
479+
480+ Q_FOREACH(const QString &appId, m_itemCache.keys()) {
481+ nodes.append("<node name=\"");
482+ nodes.append(encodeAppId(appId));
483+ nodes.append("\"/>\n");
484+ }
485+
486+ return nodes;
487+ }
488+
489+ /* Should not happen, but let's handle it */
490+ if (!path.startsWith("/com/canonical/Unity/Launcher")) {
491+ return "";
492+ }
493+
494+ /* Now we should be looking at a node */
495+ QString nodeiface =
496+ "<interface name=\"com.canonical.Unity.Launcher.Item\">"
497+ "<property name=\"count\" type=\"i\" access=\"readwrite\" />"
498+ "<property name=\"countVisible\" type=\"b\" access=\"readwrite\" />"
499+ "</interface>";
500+ return nodeiface;
501+}
502+
503+QString LauncherBackend::decodeAppId(const QString& path)
504+{
505+ QByteArray bytes = path.toUtf8();
506+ QByteArray decoded;
507+
508+ for (int i = 0; i < bytes.size(); ++i) {
509+ char chr = bytes.at(i);
510+
511+ if (chr == '_') {
512+ QString number;
513+ number.append(bytes.at(i+1));
514+ number.append(bytes.at(i+2));
515+
516+ bool okay;
517+ char newchar = number.toUInt(&okay, 16);
518+ if (okay)
519+ decoded.append(newchar);
520+
521+ i += 2;
522+ } else {
523+ decoded.append(chr);
524+ }
525+ }
526+
527+ return QString::fromUtf8(decoded);
528+}
529+
530+QString LauncherBackend::encodeAppId(const QString& appId)
531+{
532+ QByteArray bytes = appId.toUtf8();
533+ QString encoded;
534+
535+ for (int i = 0; i < bytes.size(); ++i) {
536+ uchar chr = bytes.at(i);
537+
538+ if ((chr >= 'a' && chr <= 'z') ||
539+ (chr >= 'A' && chr <= 'Z') ||
540+ (chr >= '0' && chr <= '9'&& i != 0)) {
541+ encoded.append(chr);
542+ } else {
543+ QString hexval = QString("_%1").arg(chr, 2, 16, QChar('0'));
544+ encoded.append(hexval.toUpper());
545+ }
546+ }
547+
548+ return encoded;
549+}
550+
551+void LauncherBackend::emitPropChangedDbus(const QString& appId, const QString& property, QVariant &value) const
552+{
553+ QString path("/com/canonical/Unity/Launcher/");
554+ path.append(encodeAppId(appId));
555+
556+ QDBusMessage message = QDBusMessage::createSignal(path, "org.freedesktop.DBus.Properties", "PropertiesChanged");
557+
558+ QList<QVariant> arguments;
559+ QVariantHash changedprops;
560+ changedprops[property] = QVariant::fromValue(QDBusVariant(value));
561+ QVariantList deletedprops;
562+
563+ arguments.append(changedprops);
564+ arguments.append(deletedprops);
565+
566+ message.setArguments(arguments);
567+
568+ QDBusConnection con = QDBusConnection::sessionBus();
569+ con.send(message);
570+}
plugins/Unity/Launcher/backend/launcherbackend.h+52−4
@@ -24,6 +24,7 @@
2424#include <QObject>
2525#include <QSettings>
2626#include <QStringList>
27+#include <QDBusVirtualObject>
2728
2829class AccountsServiceDBusAdaptor;
2930
@@ -32,11 +33,13 @@ class AccountsServiceDBusAdaptor;
3233 */
3334
3435class LauncherBackendItem;
36+class LauncherBackendTest;
3537
36−class LauncherBackend : public QObject
38+class LauncherBackend : public QDBusVirtualObject
3739{
3840 Q_OBJECT
3941
42+ friend LauncherBackendTest;
4043
4144public:
4245 LauncherBackend(QObject *parent = 0);
@@ -116,16 +119,53 @@ public:
116119 */
117120 int count(const QString &appId) const;
118121
122+ /**
123+ * @brief Set the count on an item
124+ * @param appId The ID of the application
125+ * @param count Count to show on the application
126+ */
127+ void setCount(const QString &appId, int count) const;
128+
129+ /**
130+ * @brief Get whether the count should be visible
131+ * @param appId The ID of the application.
132+ * @returns Whether to show a count on the launcher
133+ */
134+ bool countVisible(const QString &appId) const;
135+
136+ /**
137+ * @brief Set the visibility of the count item
138+ * @param appId The ID of the application
139+ * @param visible Whether the count should be visible
140+ */
141+ void setCountVisible(const QString &appId, bool visible) const;
142+
119143 /**
120144 * @brief Sets the username for which to look up launcher items.
121145 * @param username The username to use.
122146 */
123147 void setUser(const QString &username);
124148
149+ /**
150+ * @brief Handle a message to an application node
151+ * @param message DBus message to handle
152+ * @param connection DBus connection that we're using
153+ * @returns whether the message was handled
154+ */
155+ virtual bool handleMessage(const QDBusMessage& message, const QDBusConnection& connection);
156+
157+ /**
158+ * @brief Get introspection information on the objects we're exporting
159+ * @param path the dbus path containing the appid
160+ * @returns Introspection information for that node in the tree
161+ */
162+ virtual QString introspect (const QString &path) const;
163+
125164Q_SIGNALS:
126− void quickListChanged(const QString &appId, const QList<QuickListEntry> &quickList);
127− void progressChanged(const QString &appId, int progress);
128− void countChanged(const QString &appId, int count);
165+ void quickListChanged(const QString &appId, const QList<QuickListEntry> &quickList) const;
166+ void progressChanged(const QString &appId, int progress) const;
167+ void countChanged(const QString &appId, int count) const;
168+ void countVisibleChanged(const QString &appId, bool visible) const;
129169
130170private:
131171 QString findDesktopFile(const QString &appId) const;
@@ -143,6 +183,14 @@ private:
143183
144184 AccountsServiceDBusAdaptor *m_accounts;
145185 QString m_user;
186+
187+ void emitPropChangedDbus(const QString& appId, const QString& property, QVariant &value) const;
188+
189+protected: /* Protected to allow testing */
190+ LauncherBackendItem* getItem(const QString& appId) const;
191+
192+ static QString decodeAppId(const QString& path);
193+ static QString encodeAppId(const QString& appId);
146194};
147195
148196#endif // LAUNCHERBACKEND_H
plugins/Utils/CMakeLists.txt−1
@@ -11,7 +11,6 @@ include_directories(
1111)
1212
1313set(QMLPLUGIN_SRC
14− bottombarvisibilitycommunicatorshell.cpp
1514 qlimitproxymodelqml.cpp
1615 qsortfilterproxymodelqml.cpp
1716 timeformatter.cpp
plugins/Utils/bottombarvisibilitycommunicatorshell.cppdeleted−49
@@ -1,49 +0,0 @@
1−/*
2− * Copyright (C) 2012 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 "bottombarvisibilitycommunicatorshell.h"
18−
19−BottomBarVisibilityCommunicatorShell::BottomBarVisibilityCommunicatorShell()
20− : m_forceHidden(false),
21− m_position(0)
22−{
23−}
24−
25−bool BottomBarVisibilityCommunicatorShell::forceHidden() const
26−{
27− return m_forceHidden;
28−}
29−
30−double BottomBarVisibilityCommunicatorShell::position() const
31−{
32− return m_position;
33−}
34−
35−void BottomBarVisibilityCommunicatorShell::setForceHidden(bool forceHidden)
36−{
37− if (forceHidden != m_forceHidden) {
38− m_forceHidden = forceHidden;
39− Q_EMIT forceHiddenChanged(forceHidden);
40− }
41−}
42−
43−void BottomBarVisibilityCommunicatorShell::setPosition(double position)
44−{
45− if (position != m_position) {
46− m_position = position;
47− Q_EMIT positionChanged(position);
48− }
49−}
plugins/Utils/bottombarvisibilitycommunicatorshell.hdeleted−59
@@ -1,59 +0,0 @@
1−/*
2− * Copyright (C) 2012 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−#ifndef BOTTOMBARVISIBILITYCOMMUNICATORSHELL_H
18−#define BOTTOMBARVISIBILITYCOMMUNICATORSHELL_H
19−
20−#include <QObject>
21−
22−class QDBusInterface;
23−
24−/** This is an internal class used to talk with the bottom bar used by either
25− * applications or the SDK.
26− * There is a method to force the bottom bar to be hidden or otherwise behave as usual
27− */
28−
29−class BottomBarVisibilityCommunicatorShell : public QObject
30−{
31− Q_OBJECT
32− Q_PROPERTY(bool forceHidden READ forceHidden WRITE setForceHidden NOTIFY forceHiddenChanged)
33− Q_PROPERTY(double position READ position WRITE setPosition NOTIFY positionChanged)
34−
35− Q_CLASSINFO("D-Bus Interface", "com.canonical.Shell.BottomBarVisibilityCommunicator")
36−public:
37− static BottomBarVisibilityCommunicatorShell& instance() {
38− static BottomBarVisibilityCommunicatorShell instance;
39− return instance;
40− }
41−
42− bool forceHidden() const;
43− void setForceHidden(bool forceHidden);
44−
45− double position() const;
46− void setPosition(double position);
47−
48−Q_SIGNALS:
49− void forceHiddenChanged(bool forceHidden);
50− void positionChanged(double position);
51−
52−private:
53− BottomBarVisibilityCommunicatorShell();
54−
55− bool m_forceHidden;
56− double m_position;
57−};
58−
59−#endif
plugins/Utils/plugin.cpp−10
@@ -26,16 +26,12 @@
2626#include "plugin.h"
2727
2828// local
29−#include "bottombarvisibilitycommunicatorshell.h"
3029#include "qlimitproxymodelqml.h"
3130#include "qsortfilterproxymodelqml.h"
3231#include "timeformatter.h"
3332#include "unitymenumodelpaths.h"
3433#include "easingcurve.h"
3534
36−static const char* BOTTOM_BAR_VISIBILITY_COMMUNICATOR_DBUS_PATH = "/BottomBarVisibilityCommunicator";
37−static const char* DBUS_SERVICE = "com.canonical.Shell.BottomBarVisibilityCommunicator";
38−
3935void UtilsPlugin::registerTypes(const char *uri)
4036{
4137 Q_ASSERT(uri == QLatin1String("Utils"));
@@ -45,16 +41,10 @@ void UtilsPlugin::registerTypes(const char *uri)
4541 qmlRegisterType<UnityMenuModelPaths>(uri, 0, 1, "UnityMenuModelPaths");
4642 qmlRegisterType<TimeFormatter>(uri, 0, 1, "TimeFormatter");
4743 qmlRegisterType<GDateTimeFormatter>(uri, 0, 1, "GDateTimeFormatter");
48− qmlRegisterUncreatableType<BottomBarVisibilityCommunicatorShell>(uri, 0, 1, "BottomBarVisibilityCommunicatorShell", "Can't create BottomBarVisibilityCommunicatorShell");
4944 qmlRegisterType<EasingCurve>(uri, 0, 1, "EasingCurve");
5045}
5146
5247void UtilsPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
5348{
5449 QQmlExtensionPlugin::initializeEngine(engine, uri);
55−
56− QDBusConnection::sessionBus().registerService(DBUS_SERVICE);
57− BottomBarVisibilityCommunicatorShell *bottomBarVisibilityCommunicator = &BottomBarVisibilityCommunicatorShell::instance();
58− QDBusConnection::sessionBus().registerObject(BOTTOM_BAR_VISIBILITY_COMMUNICATOR_DBUS_PATH, bottomBarVisibilityCommunicator, QDBusConnection::ExportAllContents);
59− engine->rootContext()->setContextProperty("bottomBarVisibilityCommunicatorShell", bottomBarVisibilityCommunicator);
6050}
po/am.po+9−13
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-01-18 19:28+0000\n"
1212"Last-Translator: samson <Unknown>\n"
1313"Language-Team: Amharic <am@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:48+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr ""
114113msgid "Send"
115114msgstr "መላኪያ"
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr ""
@@ -159,14 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr "መፈለጊያ"
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr "እባክዎን ያስገቡ %1"
166−
167−#~ msgid "Comments:"
168−#~ msgstr "አስተያየቶች:"
169−
170−#, qt-format
171−#~ msgid "(%1)"
172−#~ msgstr "(%1)"
po/ar.po+9−27
@@ -7,17 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-02-21 11:19+0000\n"
1212"Last-Translator: Ibrahim Saed <ibraheem5000@gmail.com>\n"
1313"Language-Team: Arabic <ar@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n % 100 >= "
18−"3 && n % 100 <= 10 ? 3 : n % 100 >= 11 && n % 100 <= 99 ? 4 : 5;\n"
19−"X-Launchpad-Export-Date: 2014-03-28 06:48+0000\n"
20−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2119
2220#: plugins/Unity/Launcher/launcheritem.cpp:43
2321#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -89,7 +87,7 @@ msgstr "شاهد المزيد"
8987msgid "See less"
9088msgstr "شاهد أقل"
9189
92−#: qml/Dash/DashApps.qml:38
90+#: qml/Dash/DashApps.qml:37
9391msgid "Recent"
9492msgstr ""
9593
@@ -118,6 +116,10 @@ msgstr "أضف تعليق"
118116msgid "Send"
119117msgstr "أرسل"
120118
119+#: qml/Greeter/Greeter.qml:151
120+msgid "Swipe to unlock"
121+msgstr ""
122+
121123#: qml/Greeter/Lockscreen.qml:149
122124msgid "Emergency Call"
123125msgstr "مكالمة طوارئ"
@@ -163,27 +165,7 @@ msgstr "من فضلك أدخِل رقم التعريف الشخصي لبطاقة
163165msgid "Search"
164166msgstr "ابحث"
165167
166−#: qml/Shell.qml:417
168+#: qml/Shell.qml:348
167169#, qt-format
168170msgid "Please enter %1"
169171msgstr "من فضلك أدخِل %1"
170−
171−#~ msgid "Review"
172−#~ msgstr "التعليق"
173−
174−#, qt-format
175−#~ msgid "(%1)"
176−#~ msgstr "(%1)"
177−
178−#~ msgid "Comments:"
179−#~ msgstr "التعليقات:"
180−
181−#, qt-format
182−#~ msgid "%1 review"
183−#~ msgid_plural "%1 reviews"
184−#~ msgstr[0] "لا تعليقات (%1)"
185−#~ msgstr[1] "تعليق واحد (%1)"
186−#~ msgstr[2] "تعليقان (%1)"
187−#~ msgstr[3] "%1 تعليقات"
188−#~ msgstr[4] "%1 تعليقا"
189−#~ msgstr[5] "%1 تعليق"
po/ast.po+9−5
@@ -7,15 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-04-04 02:16+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"
17−"X-Launchpad-Export-Date: 2014-04-08 07:13+0000\n"
18−"X-Generator: Launchpad (build 16976)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -88,7 +88,7 @@ msgstr "Ver más"
8888msgid "See less"
8989msgstr "Ver menos"
9090
91−#: qml/Dash/DashApps.qml:38
91+#: qml/Dash/DashApps.qml:37
9292msgid "Recent"
9393msgstr "Reciente"
9494
@@ -117,6 +117,10 @@ msgstr "Amestar una reseña"
117117msgid "Send"
118118msgstr "Unviar"
119119
120+#: qml/Greeter/Greeter.qml:151
121+msgid "Swipe to unlock"
122+msgstr ""
123+
120124#: qml/Greeter/Lockscreen.qml:149
121125msgid "Emergency Call"
122126msgstr "Llamada d'emerxencia"
@@ -162,7 +166,7 @@ msgstr "Escriba'l PIN de la SIM"
162166msgid "Search"
163167msgstr "Guetar"
164168
165−#: qml/Shell.qml:417
169+#: qml/Shell.qml:348
166170#, qt-format
167171msgid "Please enter %1"
168172msgstr "Introduz %1"
po/az.po+9−22
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-01-15 09:50+0000\n"
1212"Last-Translator: Turan Mahmudov <turan.mahmudov@gmail.com>\n"
1313"Language-Team: Azerbaijani <az@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:48+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -86,7 +85,7 @@ msgstr ""
8685msgid "See less"
8786msgstr ""
8887
89−#: qml/Dash/DashApps.qml:38
88+#: qml/Dash/DashApps.qml:37
9089msgid "Recent"
9190msgstr ""
9291
@@ -115,6 +114,10 @@ msgstr "Rəy yaz"
115114msgid "Send"
116115msgstr "Göndər"
117116
117+#: qml/Greeter/Greeter.qml:151
118+msgid "Swipe to unlock"
119+msgstr ""
120+
118121#: qml/Greeter/Lockscreen.qml:149
119122msgid "Emergency Call"
120123msgstr "Zərurət zəngi"
@@ -160,23 +163,7 @@ msgstr ""
160163msgid "Search"
161164msgstr "Axtar"
162165
163−#: qml/Shell.qml:417
166+#: qml/Shell.qml:348
164167#, qt-format
165168msgid "Please enter %1"
166169msgstr "Xahiş edirik daxil edin: %1"
167−
168−#~ msgid "Comments:"
169−#~ msgstr "Şərhlər:"
170−
171−#~ msgid "Review"
172−#~ msgstr "Rəy"
173−
174−#, qt-format
175−#~ msgid "%1 review"
176−#~ msgid_plural "%1 reviews"
177−#~ msgstr[0] "%1 rəy"
178−#~ msgstr[1] "%1 rəy"
179−
180−#, qt-format
181−#~ msgid "(%1)"
182−#~ msgstr "(%1)"
po/bg.po+9−5
@@ -7,15 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-04-01 14:08+0000\n"
1212"Last-Translator: Atanas Kovachki <Unknown>\n"
1313"Language-Team: Bulgarian <bg@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-04-03 06:06+0000\n"
18−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -91,7 +91,7 @@ msgstr ""
9191msgid "See less"
9292msgstr ""
9393
94−#: qml/Dash/DashApps.qml:38
94+#: qml/Dash/DashApps.qml:37
9595msgid "Recent"
9696msgstr "Последни"
9797
@@ -120,6 +120,10 @@ msgstr "Добави отзив"
120120msgid "Send"
121121msgstr "Изпрати"
122122
123+#: qml/Greeter/Greeter.qml:151
124+msgid "Swipe to unlock"
125+msgstr ""
126+
123127#: qml/Greeter/Lockscreen.qml:149
124128msgid "Emergency Call"
125129msgstr "Спешно повикване"
@@ -165,7 +169,7 @@ msgstr ""
165169msgid "Search"
166170msgstr "Търсене"
167171
168−#: qml/Shell.qml:417
172+#: qml/Shell.qml:348
169173#, qt-format
170174msgid "Please enter %1"
171175msgstr "Моля, въведете %1"
po/br.po+9−5
@@ -7,15 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-04-15 18:15+0000\n"
1212"Last-Translator: Rouxel <vincent.rouxel@mailoo.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"
17−"X-Launchpad-Export-Date: 2014-04-16 07:12+0000\n"
18−"X-Generator: Launchpad (build 16976)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -84,7 +84,7 @@ msgstr ""
8484msgid "See less"
8585msgstr ""
8686
87−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8888msgid "Recent"
8989msgstr ""
9090
@@ -113,6 +113,10 @@ msgstr ""
113113msgid "Send"
114114msgstr ""
115115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
116120#: qml/Greeter/Lockscreen.qml:149
117121msgid "Emergency Call"
118122msgstr ""
@@ -158,7 +162,7 @@ msgstr ""
158162msgid "Search"
159163msgstr ""
160164
161−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
162166#, qt-format
163167msgid "Please enter %1"
164168msgstr ""
po/bs.po+9−7
@@ -7,17 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-01-16 22:33+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Bosnian <bs@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18−"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2014-03-28 06:48+0000\n"
20−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2119
2220#: plugins/Unity/Launcher/launcheritem.cpp:43
2321#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -86,7 +84,7 @@ msgstr ""
8684msgid "See less"
8785msgstr ""
8886
89−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
9088msgid "Recent"
9189msgstr ""
9290
@@ -115,6 +113,10 @@ msgstr ""
115113msgid "Send"
116114msgstr ""
117115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
118120#: qml/Greeter/Lockscreen.qml:149
119121msgid "Emergency Call"
120122msgstr ""
@@ -160,7 +162,7 @@ msgstr ""
160162msgid "Search"
161163msgstr ""
162164
163−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
164166#, qt-format
165167msgid "Please enter %1"
166168msgstr ""
po/ca.po+9−22
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-01-10 07:45+0000\n"
1212"Last-Translator: Adolfo Jayme <fitoschido@gmail.com>\n"
1313"Language-Team: Catalan <ca@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:48+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -91,7 +90,7 @@ msgstr ""
9190msgid "See less"
9291msgstr ""
9392
94−#: qml/Dash/DashApps.qml:38
93+#: qml/Dash/DashApps.qml:37
9594msgid "Recent"
9695msgstr ""
9796
@@ -120,6 +119,10 @@ msgstr "Afegiu una ressenya"
120119msgid "Send"
121120msgstr "Envia"
122121
122+#: qml/Greeter/Greeter.qml:151
123+msgid "Swipe to unlock"
124+msgstr ""
125+
123126#: qml/Greeter/Lockscreen.qml:149
124127msgid "Emergency Call"
125128msgstr "Trucada d'emergència"
@@ -165,23 +168,7 @@ msgstr ""
165168msgid "Search"
166169msgstr "Cerca"
167170
168−#: qml/Shell.qml:417
171+#: qml/Shell.qml:348
169172#, qt-format
170173msgid "Please enter %1"
171174msgstr "Introduïu %1"
172−
173−#, qt-format
174−#~ msgid "(%1)"
175−#~ msgstr "(%1)"
176−
177−#~ msgid "Comments:"
178−#~ msgstr "Comentaris:"
179−
180−#~ msgid "Review"
181−#~ msgstr "Ressenya"
182−
183−#, qt-format
184−#~ msgid "%1 review"
185−#~ msgid_plural "%1 reviews"
186−#~ msgstr[0] "%1 ressenya"
187−#~ msgstr[1] "%1 ressenyes"
po/ckb.po+9−22
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\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"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr "پێداچوونەوە زۆر بکە"
114113msgid "Send"
115114msgstr "ناردن"
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr "هێڵی فریاگوزاری"
@@ -159,23 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr "گەڕان"
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr "تکایە %1 بنووسە"
166−
167−#, qt-format
168−#~ msgid "(%1)"
169−#~ msgstr "(%1)"
170−
171−#~ msgid "Comments:"
172−#~ msgstr "لێدوانەکان:"
173−
174−#, qt-format
175−#~ msgid "%1 review"
176−#~ msgid_plural "%1 reviews"
177−#~ msgstr[0] "%1 پێداچوونەوە"
178−#~ msgstr[1] "%1 پێداچوونەوەکان"
179−
180−#~ msgid "Review"
181−#~ msgstr "پێداچوونەوە"
po/cs.po+9−23
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-01-08 10:11+0000\n"
1212"Last-Translator: Tadeáš Pařík <tadeas.parik@gmail.com>\n"
1313"Language-Team: Czech <cs@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:48+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr "Přidat recenzi"
114113msgid "Send"
115114msgstr "Odeslat"
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr "Tísňové volání"
@@ -159,24 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr "Hledat"
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr "Zadejte prosím %1"
166−
167−#~ msgid "Comments:"
168−#~ msgstr "Komentáře:"
169−
170−#, qt-format
171−#~ msgid "(%1)"
172−#~ msgstr "(%1)"
173−
174−#~ msgid "Review"
175−#~ msgstr "Recenze"
176−
177−#, qt-format
178−#~ msgid "%1 review"
179−#~ msgid_plural "%1 reviews"
180−#~ msgstr[0] "%1 recenze"
181−#~ msgstr[1] "%1 recenze"
182−#~ msgstr[2] "%1 recenzí"
po/da.po+9−6
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-01-14 20:16+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Danish <da@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:48+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr ""
114113msgid "Send"
115114msgstr ""
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr ""
@@ -159,7 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr ""
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr ""
po/de.po+9−22
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-01-15 11:01+0000\n"
1212"Last-Translator: Dennis Baudys <Unknown>\n"
1313"Language-Team: German <de@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:48+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -87,7 +86,7 @@ msgstr ""
8786msgid "See less"
8887msgstr ""
8988
90−#: qml/Dash/DashApps.qml:38
89+#: qml/Dash/DashApps.qml:37
9190msgid "Recent"
9291msgstr ""
9392
@@ -116,6 +115,10 @@ msgstr "Bewertung hinzufügen"
116115msgid "Send"
117116msgstr "Senden"
118117
118+#: qml/Greeter/Greeter.qml:151
119+msgid "Swipe to unlock"
120+msgstr ""
121+
119122#: qml/Greeter/Lockscreen.qml:149
120123msgid "Emergency Call"
121124msgstr "Notruf"
@@ -161,23 +164,7 @@ msgstr ""
161164msgid "Search"
162165msgstr "Suchen"
163166
164−#: qml/Shell.qml:417
167+#: qml/Shell.qml:348
165168#, qt-format
166169msgid "Please enter %1"
167170msgstr "Bitte geben Sie %1 ein"
168−
169−#~ msgid "Comments:"
170−#~ msgstr "Kommentare:"
171−
172−#, qt-format
173−#~ msgid "(%1)"
174−#~ msgstr "(%1)"
175−
176−#~ msgid "Review"
177−#~ msgstr "Bewertung"
178−
179−#, qt-format
180−#~ msgid "%1 review"
181−#~ msgid_plural "%1 reviews"
182−#~ msgstr[0] "%1 Bewertung"
183−#~ msgstr[1] "%1 Bewertungen"
po/el.po+9−22
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-02-26 09:58+0000\n"
1212"Last-Translator: j3lc <x_nikos@yahoo.gr>\n"
1313"Language-Team: Greek <el@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:48+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -89,7 +88,7 @@ msgstr "Περρισότερα"
8988msgid "See less"
9089msgstr "Λιγότερα"
9190
92−#: qml/Dash/DashApps.qml:38
91+#: qml/Dash/DashApps.qml:37
9392msgid "Recent"
9493msgstr ""
9594
@@ -118,6 +117,10 @@ msgstr "Προσθέστε την αξιολόγησή σας"
118117msgid "Send"
119118msgstr "Αποστολή"
120119
120+#: qml/Greeter/Greeter.qml:151
121+msgid "Swipe to unlock"
122+msgstr ""
123+
121124#: qml/Greeter/Lockscreen.qml:149
122125msgid "Emergency Call"
123126msgstr "Κλήση έκτακτης ανάγκης"
@@ -163,23 +166,7 @@ msgstr "Παρακαλώ εισάγετε το PIN της κάρτας SIM"
163166msgid "Search"
164167msgstr "Αναζήτηση"
165168
166−#: qml/Shell.qml:417
169+#: qml/Shell.qml:348
167170#, qt-format
168171msgid "Please enter %1"
169172msgstr "Πληκτρολογήστε %1"
170−
171−#, qt-format
172−#~ msgid "%1 review"
173−#~ msgid_plural "%1 reviews"
174−#~ msgstr[0] "%1 αξιολόγηση"
175−#~ msgstr[1] "%1 αξιολογήσεις"
176−
177−#, qt-format
178−#~ msgid "(%1)"
179−#~ msgstr "(%1)"
180−
181−#~ msgid "Comments:"
182−#~ msgstr "Σχόλια:"
183−
184−#~ msgid "Review"
185−#~ msgstr "Αξιολόγηση"
po/en_AU.po+9−22
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2013-09-28 07:46+0000\n"
1212"Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
1313"Language-Team: English (Australia) <en_AU@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr "Add a review"
114113msgid "Send"
115114msgstr "Send"
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr "Emergency Call"
@@ -159,23 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr "Search"
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr "Please enter %1"
166−
167−#~ msgid "Comments:"
168−#~ msgstr "Comments:"
169−
170−#~ msgid "Review"
171−#~ msgstr "Review"
172−
173−#, qt-format
174−#~ msgid "%1 review"
175−#~ msgid_plural "%1 reviews"
176−#~ msgstr[0] "%1 review"
177−#~ msgstr[1] "%1 reviews"
178−
179−#, qt-format
180−#~ msgid "(%1)"
181−#~ msgstr "(%1)"
po/en_GB.po+9−22
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-03-07 13:27+0000\n"
1212"Last-Translator: Andi Chandler <Unknown>\n"
1313"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -87,7 +86,7 @@ msgstr "See more"
8786msgid "See less"
8887msgstr "See less"
8988
90−#: qml/Dash/DashApps.qml:38
89+#: qml/Dash/DashApps.qml:37
9190msgid "Recent"
9291msgstr ""
9392
@@ -116,6 +115,10 @@ msgstr "Add a review"
116115msgid "Send"
117116msgstr "Send"
118117
118+#: qml/Greeter/Greeter.qml:151
119+msgid "Swipe to unlock"
120+msgstr ""
121+
119122#: qml/Greeter/Lockscreen.qml:149
120123msgid "Emergency Call"
121124msgstr "Emergency Call"
@@ -161,23 +164,7 @@ msgstr "Please enter SIM PIN"
161164msgid "Search"
162165msgstr "Search"
163166
164−#: qml/Shell.qml:417
167+#: qml/Shell.qml:348
165168#, qt-format
166169msgid "Please enter %1"
167170msgstr "Please enter %1"
168−
169−#~ msgid "Comments:"
170−#~ msgstr "Comments:"
171−
172−#~ msgid "Review"
173−#~ msgstr "Review"
174−
175−#, qt-format
176−#~ msgid "%1 review"
177−#~ msgid_plural "%1 reviews"
178−#~ msgstr[0] "%1 review"
179−#~ msgstr[1] "%1 reviews"
180−
181−#, qt-format
182−#~ msgid "(%1)"
183−#~ msgstr "(%1)"
po/eo.po+9−6
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2013-06-26 22:35+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Esperanto <eo@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:48+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr ""
114113msgid "Send"
115114msgstr ""
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr ""
@@ -159,7 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr ""
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr ""
po/es.po+9−5
@@ -7,15 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-03-28 22:37+0000\n"
1212"Last-Translator: Adolfo Jayme <fitoschido@gmail.com>\n"
1313"Language-Team: Spanish <es@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-03-29 07:34+0000\n"
18−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -89,7 +89,7 @@ msgstr "Ver más"
8989msgid "See less"
9090msgstr "Ver menos"
9191
92−#: qml/Dash/DashApps.qml:38
92+#: qml/Dash/DashApps.qml:37
9393msgid "Recent"
9494msgstr "Recientes"
9595
@@ -118,6 +118,10 @@ msgstr "Añadir una reseña"
118118msgid "Send"
119119msgstr "Enviar"
120120
121+#: qml/Greeter/Greeter.qml:151
122+msgid "Swipe to unlock"
123+msgstr ""
124+
121125#: qml/Greeter/Lockscreen.qml:149
122126msgid "Emergency Call"
123127msgstr "Llamada de emergencia"
@@ -163,7 +167,7 @@ msgstr "Escriba el PIN de la SIM"
163167msgid "Search"
164168msgstr "Buscar"
165169
166−#: qml/Shell.qml:417
170+#: qml/Shell.qml:348
167171#, qt-format
168172msgid "Please enter %1"
169173msgstr "Introduzca %1"
po/eu.po+9−5
@@ -7,15 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-03-30 12:44+0000\n"
1212"Last-Translator: Ibai Oihanguren Sala <Unknown>\n"
1313"Language-Team: Basque <eu@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-03-31 06:44+0000\n"
18−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -88,7 +88,7 @@ msgstr "Ikusi gehiago"
8888msgid "See less"
8989msgstr "Ikusi gutxiago"
9090
91−#: qml/Dash/DashApps.qml:38
91+#: qml/Dash/DashApps.qml:37
9292msgid "Recent"
9393msgstr "Azkenak"
9494
@@ -117,6 +117,10 @@ msgstr "Gehitu kritika"
117117msgid "Send"
118118msgstr "Bidali"
119119
120+#: qml/Greeter/Greeter.qml:151
121+msgid "Swipe to unlock"
122+msgstr ""
123+
120124#: qml/Greeter/Lockscreen.qml:149
121125msgid "Emergency Call"
122126msgstr "Larrialdi-deia"
@@ -162,7 +166,7 @@ msgstr "Sartu SIMaren PINa"
162166msgid "Search"
163167msgstr "Bilatu"
164168
165−#: qml/Shell.qml:417
169+#: qml/Shell.qml:348
166170#, qt-format
167171msgid "Please enter %1"
168172msgstr "Sartu %1"
po/fa.po+9−6
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2013-10-31 19:02+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Persian <fa@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr ""
114113msgid "Send"
115114msgstr ""
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr ""
@@ -159,7 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr ""
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr ""
po/fi.po+9−5
@@ -7,15 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-04-05 09:57+0000\n"
1212"Last-Translator: Jiri Grönroos <Unknown>\n"
1313"Language-Team: Finnish <fi@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-04-08 07:13+0000\n"
18−"X-Generator: Launchpad (build 16976)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -86,7 +86,7 @@ msgstr "Näytä lisää"
8686msgid "See less"
8787msgstr "Näytä vähemmän"
8888
89−#: qml/Dash/DashApps.qml:38
89+#: qml/Dash/DashApps.qml:37
9090msgid "Recent"
9191msgstr "Viimeisimmät"
9292
@@ -115,6 +115,10 @@ msgstr "Lisää arvostelu"
115115msgid "Send"
116116msgstr "Lähetä"
117117
118+#: qml/Greeter/Greeter.qml:151
119+msgid "Swipe to unlock"
120+msgstr ""
121+
118122#: qml/Greeter/Lockscreen.qml:149
119123msgid "Emergency Call"
120124msgstr "Hätäpuhelu"
@@ -160,7 +164,7 @@ msgstr "Anna SIM-kortin PIN-koodi"
160164msgid "Search"
161165msgstr "Hae"
162166
163−#: qml/Shell.qml:417
167+#: qml/Shell.qml:348
164168#, qt-format
165169msgid "Please enter %1"
166170msgstr "Kirjoita %1"
po/fo.po+9−6
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\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"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:48+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr ""
114113msgid "Send"
115114msgstr ""
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr ""
@@ -159,7 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr "Leita"
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr ""
po/fr.po+9−22
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-01-28 00:34+0000\n"
1212"Last-Translator: Pierre <Unknown>\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"
17−"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:48+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr "Ajouter un avis"
114113msgid "Send"
115114msgstr "Envoyer"
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr "Appel d'urgence"
@@ -159,23 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr "Rechercher"
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr "Veuillez saisir %1"
166−
167−#~ msgid "Review"
168−#~ msgstr "Avis"
169−
170−#, qt-format
171−#~ msgid "%1 review"
172−#~ msgid_plural "%1 reviews"
173−#~ msgstr[0] "%1 avis"
174−#~ msgstr[1] "%1 avis"
175−
176−#~ msgid "Comments:"
177−#~ msgstr "Commentaires :"
178−
179−#, qt-format
180−#~ msgid "(%1)"
181−#~ msgstr "(%1)"
po/gd.po+9−25
@@ -7,17 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2013-09-30 10:34+0000\n"
1212"Last-Translator: Akerbeltz <fios@akerbeltz.org>\n"
1313"Language-Team: Gaelic; Scottish <gd@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : "
18−"(n > 2 && n < 20) ? 2 : 3;\n"
19−"X-Launchpad-Export-Date: 2014-03-28 06:48+0000\n"
20−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2119
2220#: plugins/Unity/Launcher/launcheritem.cpp:43
2321#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -92,7 +90,7 @@ msgstr ""
9290msgid "See less"
9391msgstr ""
9492
95−#: qml/Dash/DashApps.qml:38
93+#: qml/Dash/DashApps.qml:37
9694msgid "Recent"
9795msgstr ""
9896
@@ -121,6 +119,10 @@ msgstr "Cuir lèirmheas ris"
121119msgid "Send"
122120msgstr "Cuir"
123121
122+#: qml/Greeter/Greeter.qml:151
123+msgid "Swipe to unlock"
124+msgstr ""
125+
124126#: qml/Greeter/Lockscreen.qml:149
125127msgid "Emergency Call"
126128msgstr "Gairm èiginn"
@@ -166,25 +168,7 @@ msgstr ""
166168msgid "Search"
167169msgstr "Lorg"
168170
169−#: qml/Shell.qml:417
171+#: qml/Shell.qml:348
170172#, qt-format
171173msgid "Please enter %1"
172174msgstr "Cuir a-steach %1"
173−
174−#, qt-format
175−#~ msgid "(%1)"
176−#~ msgstr "(%1)"
177−
178−#~ msgid "Comments:"
179−#~ msgstr "Beachdan"
180−
181−#~ msgid "Review"
182−#~ msgstr "Lèirmheas"
183−
184−#, qt-format
185−#~ msgid "%1 review"
186−#~ msgid_plural "%1 reviews"
187−#~ msgstr[0] "%1 lèirmheas"
188−#~ msgstr[1] "%1 lèirmheas"
189−#~ msgstr[2] "%1 lèirmheasan"
190−#~ msgstr[3] "%1 lèirmheas"
po/gl.po+10−6
@@ -7,15 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
11−"PO-Revision-Date: 2014-04-08 07:04+0000\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
11+"PO-Revision-Date: 2014-05-03 07:31+0000\n"
1212"Last-Translator: Marcos Lans <Unknown>\n"
1313"Language-Team: Galician <gl@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-04-09 07:31+0000\n"
18−"X-Generator: Launchpad (build 16976)\n"
17+"X-Launchpad-Export-Date: 2014-05-06 07:34+0000\n"
18+"X-Generator: Launchpad (build 16996)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -86,7 +86,7 @@ msgstr "Ver máis"
8686msgid "See less"
8787msgstr "Ver menos"
8888
89−#: qml/Dash/DashApps.qml:38
89+#: qml/Dash/DashApps.qml:37
9090msgid "Recent"
9191msgstr "Recentes"
9292
@@ -115,6 +115,10 @@ msgstr "Engadir unha opinión"
115115msgid "Send"
116116msgstr "Enviar"
117117
118+#: qml/Greeter/Greeter.qml:151
119+msgid "Swipe to unlock"
120+msgstr "Esvare para desbloquear"
121+
118122#: qml/Greeter/Lockscreen.qml:149
119123msgid "Emergency Call"
120124msgstr "Chamada de emerxencia"
@@ -160,7 +164,7 @@ msgstr "Introduza o PIN da SIM"
160164msgid "Search"
161165msgstr "Buscar"
162166
163−#: qml/Shell.qml:417
167+#: qml/Shell.qml:348
164168#, qt-format
165169msgid "Please enter %1"
166170msgstr "Introduza %1"
po/he.po+9−22
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2013-11-20 08:30+0000\n"
1212"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
1313"Language-Team: Hebrew <he@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:48+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr "הוספת סקירה"
114113msgid "Send"
115114msgstr "שליחה"
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr "שיחת חירום"
@@ -159,23 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr "חיפוש"
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr "נא להזין %1"
166−
167−#, qt-format
168−#~ msgid "(%1)"
169−#~ msgstr "(%1)"
170−
171−#~ msgid "Comments:"
172−#~ msgstr "הערות:"
173−
174−#~ msgid "Review"
175−#~ msgstr "סקירה"
176−
177−#, qt-format
178−#~ msgid "%1 review"
179−#~ msgid_plural "%1 reviews"
180−#~ msgstr[0] "סקירה %1"
181−#~ msgstr[1] "%1 סקירות"
po/hi.po+9−9
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-01-15 01:49+0000\n"
1212"Last-Translator: Siddhanathan S. <Unknown>\n"
1313"Language-Team: Hindi <hi@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:48+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr "समीक्षा दे"
114113msgid "Send"
115114msgstr "भेजें"
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr "आपातकालीन कॉल"
@@ -159,10 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr "खोजें"
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr ""
166−
167−#~ msgid "Review"
168−#~ msgstr "समीक्षा"
po/hr.po+9−7
@@ -7,17 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\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"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18−"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
20−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2119
2220#: plugins/Unity/Launcher/launcheritem.cpp:43
2321#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -86,7 +84,7 @@ msgstr ""
8684msgid "See less"
8785msgstr ""
8886
89−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
9088msgid "Recent"
9189msgstr ""
9290
@@ -115,6 +113,10 @@ msgstr ""
115113msgid "Send"
116114msgstr ""
117115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
118120#: qml/Greeter/Lockscreen.qml:149
119121msgid "Emergency Call"
120122msgstr ""
@@ -160,7 +162,7 @@ msgstr ""
160162msgid "Search"
161163msgstr "Pretraživanje"
162164
163−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
164166#, qt-format
165167msgid "Please enter %1"
166168msgstr ""
po/hu.po+9−22
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-01-14 23:02+0000\n"
1212"Last-Translator: Kristóf Kiszel <Unknown>\n"
1313"Language-Team: Hungarian <hu@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:48+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -87,7 +86,7 @@ msgstr ""
8786msgid "See less"
8887msgstr ""
8988
90−#: qml/Dash/DashApps.qml:38
89+#: qml/Dash/DashApps.qml:37
9190msgid "Recent"
9291msgstr ""
9392
@@ -116,6 +115,10 @@ msgstr "Értékelés hozzáadása"
116115msgid "Send"
117116msgstr "Küldés"
118117
118+#: qml/Greeter/Greeter.qml:151
119+msgid "Swipe to unlock"
120+msgstr ""
121+
119122#: qml/Greeter/Lockscreen.qml:149
120123msgid "Emergency Call"
121124msgstr "Vészhívás"
@@ -161,23 +164,7 @@ msgstr ""
161164msgid "Search"
162165msgstr "Keresés"
163166
164−#: qml/Shell.qml:417
167+#: qml/Shell.qml:348
165168#, qt-format
166169msgid "Please enter %1"
167170msgstr "Adja meg a következőt: %1"
168−
169−#, qt-format
170−#~ msgid "%1 review"
171−#~ msgid_plural "%1 reviews"
172−#~ msgstr[0] "%1 értékelés"
173−#~ msgstr[1] "%1 értékelés"
174−
175−#, qt-format
176−#~ msgid "(%1)"
177−#~ msgstr "(%1)"
178−
179−#~ msgid "Comments:"
180−#~ msgstr "Hozzászólások:"
181−
182−#~ msgid "Review"
183−#~ msgstr "Értékelés"
po/hy.po+9−6
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2013-06-27 04:43+0000\n"
1212"Last-Translator: iAbaS <sosabazyan@yandex.ru>\n"
1313"Language-Team: Armenian <hy@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:48+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr ""
114113msgid "Send"
115114msgstr ""
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr ""
@@ -159,7 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr "Որոնում"
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr ""
po/id.po+9−6
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\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"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:48+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr ""
114113msgid "Send"
115114msgstr ""
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr ""
@@ -159,7 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr ""
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr ""
po/is.po+9−22
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2013-09-18 16:22+0000\n"
1212"Last-Translator: Andri Thorlacius <Unknown>\n"
1313"Language-Team: Icelandic <is@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:48+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -86,7 +85,7 @@ msgstr ""
8685msgid "See less"
8786msgstr ""
8887
89−#: qml/Dash/DashApps.qml:38
88+#: qml/Dash/DashApps.qml:37
9089msgid "Recent"
9190msgstr ""
9291
@@ -115,6 +114,10 @@ msgstr "Gefa umsögn"
115114msgid "Send"
116115msgstr "Senda"
117116
117+#: qml/Greeter/Greeter.qml:151
118+msgid "Swipe to unlock"
119+msgstr ""
120+
118121#: qml/Greeter/Lockscreen.qml:149
119122msgid "Emergency Call"
120123msgstr "Neyðarsímtal"
@@ -160,23 +163,7 @@ msgstr ""
160163msgid "Search"
161164msgstr "Leita"
162165
163−#: qml/Shell.qml:417
166+#: qml/Shell.qml:348
164167#, qt-format
165168msgid "Please enter %1"
166169msgstr ""
167−
168−#, qt-format
169−#~ msgid "(%1)"
170−#~ msgstr "(%1)"
171−
172−#~ msgid "Comments:"
173−#~ msgstr "Athugasemdir:"
174−
175−#~ msgid "Review"
176−#~ msgstr "Umsögn"
177−
178−#, qt-format
179−#~ msgid "%1 review"
180−#~ msgid_plural "%1 reviews"
181−#~ msgstr[0] "%1 ummæli"
182−#~ msgstr[1] "%1 ummæli"
po/it.po+9−22
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-01-22 09:15+0000\n"
1212"Last-Translator: Domenico <domenico.verde125@live.it>\n"
1313"Language-Team: Italian <it@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:48+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -90,7 +89,7 @@ msgstr ""
9089msgid "See less"
9190msgstr ""
9291
93−#: qml/Dash/DashApps.qml:38
92+#: qml/Dash/DashApps.qml:37
9493msgid "Recent"
9594msgstr ""
9695
@@ -119,6 +118,10 @@ msgstr "Aggiungi una recensione"
119118msgid "Send"
120119msgstr "Invia"
121120
121+#: qml/Greeter/Greeter.qml:151
122+msgid "Swipe to unlock"
123+msgstr ""
124+
122125#: qml/Greeter/Lockscreen.qml:149
123126msgid "Emergency Call"
124127msgstr "Chiamata di emergenza"
@@ -164,23 +167,7 @@ msgstr ""
164167msgid "Search"
165168msgstr "Cerca"
166169
167−#: qml/Shell.qml:417
170+#: qml/Shell.qml:348
168171#, qt-format
169172msgid "Please enter %1"
170173msgstr "Inserire %1"
171−
172−#, qt-format
173−#~ msgid "(%1)"
174−#~ msgstr "(%1)"
175−
176−#, qt-format
177−#~ msgid "%1 review"
178−#~ msgid_plural "%1 reviews"
179−#~ msgstr[0] "%1 recensione"
180−#~ msgstr[1] "%1 recensioni"
181−
182−#~ msgid "Comments:"
183−#~ msgstr "Commenti:"
184−
185−#~ msgid "Review"
186−#~ msgstr "Recensisci"
po/ja.po+9−13
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-01-18 07:01+0000\n"
1212"Last-Translator: Shushi Kurose <md81bird@hitaki.net>\n"
1313"Language-Team: Japanese <ja@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:48+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr ""
114113msgid "Send"
115114msgstr "送信"
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr ""
@@ -159,14 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr "検索"
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr ""
166−
167−#~ msgid "Comments:"
168−#~ msgstr "コメント:"
169−
170−#, qt-format
171−#~ msgid "(%1)"
172−#~ msgstr "(%1)"
po/km.po+9−21
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-03-04 02:32+0000\n"
1212"Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>\n"
1313"Language-Team: Khmer <km@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -89,7 +88,7 @@ msgstr "មើល​ច្រើន​ទៀត"
8988msgid "See less"
9089msgstr "មើល​តិច​ជាង"
9190
92−#: qml/Dash/DashApps.qml:38
91+#: qml/Dash/DashApps.qml:37
9392msgid "Recent"
9493msgstr ""
9594
@@ -118,6 +117,10 @@ msgstr "បន្ថែម​ការ​ពិនិត្យ"
118117msgid "Send"
119118msgstr "ផ្ញើ"
120119
120+#: qml/Greeter/Greeter.qml:151
121+msgid "Swipe to unlock"
122+msgstr ""
123+
121124#: qml/Greeter/Lockscreen.qml:149
122125msgid "Emergency Call"
123126msgstr "ការ​ហៅ​ពេល​អាសន្ន"
@@ -163,22 +166,7 @@ msgstr "បញ្ចូល​កូដ PIN របស់​ស៊ីមកាត"
163166msgid "Search"
164167msgstr "ស្វែង​រក"
165168
166−#: qml/Shell.qml:417
169+#: qml/Shell.qml:348
167170#, qt-format
168171msgid "Please enter %1"
169172msgstr "សូម​បញ្ចូល %1"
170−
171−#, qt-format
172−#~ msgid "(%1)"
173−#~ msgstr "(%1)"
174−
175−#, qt-format
176−#~ msgid "%1 review"
177−#~ msgid_plural "%1 reviews"
178−#~ msgstr[0] "ពិនិត្យ​មើល %1"
179−
180−#~ msgid "Comments:"
181−#~ msgstr "មតិយោបល់៖"
182−
183−#~ msgid "Review"
184−#~ msgstr "ការ​ពិនិត្យ"
po/kn.po+9−6
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\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"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr ""
114113msgid "Send"
115114msgstr ""
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr ""
@@ -159,7 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr "ಹುಡುಕು"
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr ""
po/ko.po+9−6
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2013-10-10 07:04+0000\n"
1212"Last-Translator: Kim Boram <boramism@gmail.com>\n"
1313"Language-Team: Korean <ko@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr ""
114113msgid "Send"
115114msgstr ""
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr ""
@@ -159,7 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr "검색"
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr ""
po/ky.po+9−6
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\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"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr ""
114113msgid "Send"
115114msgstr ""
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr ""
@@ -159,7 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr "Издөө"
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr ""
po/lo.po+9−13
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\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"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr ""
114113msgid "Send"
115114msgstr "ສົ່ງ"
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr ""
@@ -159,14 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr "ຊອກຫາ"
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr "ກະລູນາປ້ອນ %1"
166−
167−#, qt-format
168−#~ msgid "(%1)"
169−#~ msgstr "(%1)"
170−
171−#~ msgid "Comments:"
172−#~ msgstr "ຄໍ່ເຫັນ"
po/lt.po+9−24
@@ -7,17 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-01-15 12:42+0000\n"
1212"Last-Translator: Gediminas Paulauskas <menesis@pov.lt>\n"
1313"Language-Team: Lithuanian <lt@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18−"(n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
20−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2119
2220#: plugins/Unity/Launcher/launcheritem.cpp:43
2321#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -89,7 +87,7 @@ msgstr ""
8987msgid "See less"
9088msgstr ""
9189
92−#: qml/Dash/DashApps.qml:38
90+#: qml/Dash/DashApps.qml:37
9391msgid "Recent"
9492msgstr ""
9593
@@ -118,6 +116,10 @@ msgstr "Pridėkite apžvalgą"
118116msgid "Send"
119117msgstr "Siųsti"
120118
119+#: qml/Greeter/Greeter.qml:151
120+msgid "Swipe to unlock"
121+msgstr ""
122+
121123#: qml/Greeter/Lockscreen.qml:149
122124msgid "Emergency Call"
123125msgstr "Pagalbos skambutis"
@@ -163,24 +165,7 @@ msgstr ""
163165msgid "Search"
164166msgstr "Paieška"
165167
166−#: qml/Shell.qml:417
168+#: qml/Shell.qml:348
167169#, qt-format
168170msgid "Please enter %1"
169171msgstr "Prašom įvesti %1"
170−
171−#~ msgid "Comments:"
172−#~ msgstr "Komentarai:"
173−
174−#~ msgid "Review"
175−#~ msgstr "Apžvalga"
176−
177−#, qt-format
178−#~ msgid "%1 review"
179−#~ msgid_plural "%1 reviews"
180−#~ msgstr[0] "%1 apžvalga"
181−#~ msgstr[1] "%1 apžvalgos"
182−#~ msgstr[2] "%1 apžvalgų"
183−
184−#, qt-format
185−#~ msgid "(%1)"
186−#~ msgstr "(%1)"
po/lv.po+27−24
@@ -7,29 +7,28 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
11−"PO-Revision-Date: 2014-01-11 16:48+0000\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
11+"PO-Revision-Date: 2014-05-07 18:17+0000\n"
1212"Last-Translator: Jānis-Marks Gailis <jeanmarc.gailis@gmail.com>\n"
1313"Language-Team: Latvian <lv@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-08 06:40+0000\n"
18+"X-Generator: Launchpad (build 16996)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
2322msgid "Lock to Launcher"
24−msgstr ""
23+msgstr "Pieslēgt palaidējam"
2524
2625#: plugins/Unity/Launcher/launcheritem.cpp:73
2726msgid "Unlock from Launcher"
28−msgstr ""
27+msgstr "Atslēgt no palaidēja"
2928
3029#: qml/Components/EdgeDemoOverlay.qml:151
3130msgid "Skip intro"
32−msgstr ""
31+msgstr "Izlaist Intro"
3332
3433#: qml/Components/EdgeDemo.qml:113
3534msgid "Right edge"
@@ -37,7 +36,7 @@ msgstr "Labā mala"
3736
3837#: qml/Components/EdgeDemo.qml:114
3938msgid "Try swiping from the right edge to unlock the phone"
40−msgstr ""
39+msgstr "Mēģiniet iesvelt no labās malas, lai atbloķētu tālruni"
4140
4241#: qml/Components/EdgeDemo.qml:145
4342msgid "Top edge"
@@ -45,7 +44,7 @@ msgstr "Augšējā mala"
4544
4645#: qml/Components/EdgeDemo.qml:146
4746msgid "Try swiping from the top edge to access the indicators"
48−msgstr ""
47+msgstr "Mēģiniet iesvelt no augšējās malas, lai piekļūt pie indikatoriem"
4948
5049#: qml/Components/EdgeDemo.qml:171
5150msgid "Close"
@@ -79,15 +78,15 @@ msgstr "Nesen veiktās meklēšanas"
7978
8079#: qml/Components/SeeMore.qml:35
8180msgid "See more"
82−msgstr ""
81+msgstr "Redzēt vairāk"
8382
8483#: qml/Components/SeeMore.qml:58
8584msgid "See less"
86−msgstr ""
85+msgstr "Redzēt mazāk"
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
90−msgstr ""
89+msgstr "Nesens"
9190
9291#: qml/Dash/PreviewListView.qml:52
9392#, qt-format
@@ -96,36 +95,40 @@ msgstr ""
9695
9796#: qml/Dash/Previews/PreviewActionCombo.qml:34
9897msgid "More..."
99−msgstr ""
98+msgstr "Vairāk..."
10099
101100#: qml/Dash/Previews/PreviewActionCombo.qml:34
102101msgid "Less..."
103−msgstr ""
102+msgstr "Mazāk..."
104103
105104#: qml/Dash/Previews/PreviewRatingInput.qml:81
106105msgid "Rate this"
107−msgstr ""
106+msgstr "Novērtēt šo"
108107
109108#: qml/Dash/Previews/PreviewRatingInput.qml:126
110109msgid "Add a review"
111−msgstr ""
110+msgstr "Komentēt"
112111
113112#: qml/Dash/Previews/PreviewRatingInput.qml:166
114113msgid "Send"
114+msgstr "Sūtīt"
115+
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
115118msgstr ""
116119
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119−msgstr ""
122+msgstr "Neatliekamās Palīdzības zvans"
120123
121124#: qml/Greeter/PassphraseLockscreen.qml:59
122125#, qt-format
123126msgid "Hello %1"
124−msgstr ""
127+msgstr "Sveiki, %1"
125128
126129#: qml/Greeter/PassphraseLockscreen.qml:59
127130msgid "Hello"
128−msgstr ""
131+msgstr "Sveiki"
129132
130133#: qml/Hud/HudParametrizedActionsPage.qml:132
131134msgid "Confirm"
@@ -149,7 +152,7 @@ msgstr "Runa..."
149152
150153#: qml/Notifications/NotificationMenuItemFactory.qml:91
151154msgid "Show password"
152−msgstr ""
155+msgstr "Rādīt paroli"
153156
154157#: qml/Notifications/NotificationMenuItemFactory.qml:103
155158msgid "Please enter SIM PIN"
@@ -159,7 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr "Meklēt"
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165−msgstr ""
168+msgstr "Lūdzu ievadiet %1"
po/ml.po+10−23
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2013-11-23 11:44+0000\n"
12−"Last-Translator: STyM Alfazz <Unknown>\n"
12+"Last-Translator: Stym alfaZ <Unknown>\n"
1313"Language-Team: Malayalam <ml@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -87,7 +86,7 @@ msgstr ""
8786msgid "See less"
8887msgstr ""
8988
90−#: qml/Dash/DashApps.qml:38
89+#: qml/Dash/DashApps.qml:37
9190msgid "Recent"
9291msgstr ""
9392
@@ -116,6 +115,10 @@ msgstr "ഒരു അവലോകനം ചേര്‍ക്കുക"
116115msgid "Send"
117116msgstr "അയയ്‌ക്കുക"
118117
118+#: qml/Greeter/Greeter.qml:151
119+msgid "Swipe to unlock"
120+msgstr ""
121+
119122#: qml/Greeter/Lockscreen.qml:149
120123msgid "Emergency Call"
121124msgstr "അടിയന്തിര വിളി"
@@ -161,23 +164,7 @@ msgstr ""
161164msgid "Search"
162165msgstr "തിരയുക"
163166
164−#: qml/Shell.qml:417
167+#: qml/Shell.qml:348
165168#, qt-format
166169msgid "Please enter %1"
167170msgstr "ദയവായി %1 നല്‍കുക"
168−
169−#, qt-format
170−#~ msgid "(%1)"
171−#~ msgstr "(%1)"
172−
173−#~ msgid "Comments:"
174−#~ msgstr "അഭിപ്രായങ്ങള്‍:"
175−
176−#~ msgid "Review"
177−#~ msgstr "അവലോകനം"
178−
179−#, qt-format
180−#~ msgid "%1 review"
181−#~ msgid_plural "%1 reviews"
182−#~ msgstr[0] "%1 അവലോകനം"
183−#~ msgstr[1] "%1 അവലോകനങ്ങള്‍"
po/mr.po+9−6
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\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"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr ""
114113msgid "Send"
115114msgstr ""
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr ""
@@ -159,7 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr ""
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr ""
po/ms.po+9−22
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\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"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr "Tambah ulasan"
114113msgid "Send"
115114msgstr "Hantar"
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr "panggilan Kecemasan"
@@ -159,23 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr "Gelintar"
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr "Sila masukkan %1"
166−
167−#~ msgid "Comments:"
168−#~ msgstr "Ulasan:"
169−
170−#~ msgid "Review"
171−#~ msgstr "Tinjauan"
172−
173−#, qt-format
174−#~ msgid "%1 review"
175−#~ msgid_plural "%1 reviews"
176−#~ msgstr[0] "%1 ulasan"
177−#~ msgstr[1] "%1 ulasan"
178−
179−#, qt-format
180−#~ msgid "(%1)"
181−#~ msgstr "(%1)"
po/my.po+9−13
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\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"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:48+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr ""
114113msgid "Send"
115114msgstr "ပို့မည်"
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr "အရေးပေါ်ခေါ်မည်"
@@ -159,14 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr "ရှာဖွေ"
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr "%1ကိုရိုက်ထည့်ပါ"
166−
167−#, qt-format
168−#~ msgid "(%1)"
169−#~ msgstr "(%1)"
170−
171−#~ msgid "Comments:"
172−#~ msgstr "မှတ်ချက်များ-"
po/nb.po+9−6
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2013-06-27 07:02+0000\n"
1212"Last-Translator: Joakim Langvand <jlangvand@gmail.com>\n"
1313"Language-Team: Norwegian Bokmal <nb@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr ""
114113msgid "Send"
115114msgstr ""
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr ""
@@ -159,7 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr "Søk"
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr ""
po/nl.po+9−22
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-01-15 16:42+0000\n"
1212"Last-Translator: Hannie Dumoleyn <Unknown>\n"
1313"Language-Team: Dutch <nl@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:48+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr "Voeg recensie toe"
114113msgid "Send"
115114msgstr "Versturen"
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr "Noodoproep"
@@ -159,23 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr "Zoeken"
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr "Voer %1 in"
166−
167−#, qt-format
168−#~ msgid "%1 review"
169−#~ msgid_plural "%1 reviews"
170−#~ msgstr[0] "%1 recensie"
171−#~ msgstr[1] "%1 recensies"
172−
173−#, qt-format
174−#~ msgid "(%1)"
175−#~ msgstr "(%1)"
176−
177−#~ msgid "Comments:"
178−#~ msgstr "Reacties:"
179−
180−#~ msgid "Review"
181−#~ msgstr "Recensie"
po/pl.po+9−24
@@ -7,17 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-01-10 11:38+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Polish <pl@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
18−"|| n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
20−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2119
2220#: plugins/Unity/Launcher/launcheritem.cpp:43
2321#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -88,7 +86,7 @@ msgstr ""
8886msgid "See less"
8987msgstr ""
9088
91−#: qml/Dash/DashApps.qml:38
89+#: qml/Dash/DashApps.qml:37
9290msgid "Recent"
9391msgstr ""
9492
@@ -117,6 +115,10 @@ msgstr "Dodaj recenzję"
117115msgid "Send"
118116msgstr "Wyślij"
119117
118+#: qml/Greeter/Greeter.qml:151
119+msgid "Swipe to unlock"
120+msgstr ""
121+
120122#: qml/Greeter/Lockscreen.qml:149
121123msgid "Emergency Call"
122124msgstr "Telefon ratunkowy"
@@ -162,24 +164,7 @@ msgstr ""
162164msgid "Search"
163165msgstr "Szukaj"
164166
165−#: qml/Shell.qml:417
167+#: qml/Shell.qml:348
166168#, qt-format
167169msgid "Please enter %1"
168170msgstr "Wprowadź %1"
169−
170−#~ msgid "Comments:"
171−#~ msgstr "Komentarze:"
172−
173−#~ msgid "Review"
174−#~ msgstr "Recenzja"
175−
176−#, qt-format
177−#~ msgid "%1 review"
178−#~ msgid_plural "%1 reviews"
179−#~ msgstr[0] "%1 opinia"
180−#~ msgstr[1] "%1 opinie"
181−#~ msgstr[2] "%1 opinii"
182−
183−#, qt-format
184−#~ msgid "(%1)"
185−#~ msgstr "(%1)"
po/pt.po+9−6
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-01-14 19:18+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr ""
114113msgid "Send"
115114msgstr ""
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr ""
@@ -159,7 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr ""
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr ""
po/pt_BR.po+9−22
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-01-18 23:24+0000\n"
1212"Last-Translator: Fábio Nogueira <deb-user-ba@ubuntu.com>\n"
1313"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -87,7 +86,7 @@ msgstr ""
8786msgid "See less"
8887msgstr ""
8988
90−#: qml/Dash/DashApps.qml:38
89+#: qml/Dash/DashApps.qml:37
9190msgid "Recent"
9291msgstr ""
9392
@@ -116,6 +115,10 @@ msgstr "Adicionar uma análise"
116115msgid "Send"
117116msgstr "Enviar"
118117
118+#: qml/Greeter/Greeter.qml:151
119+msgid "Swipe to unlock"
120+msgstr ""
121+
119122#: qml/Greeter/Lockscreen.qml:149
120123msgid "Emergency Call"
121124msgstr "Chamada de emergência"
@@ -161,23 +164,7 @@ msgstr ""
161164msgid "Search"
162165msgstr "Pesquisar"
163166
164−#: qml/Shell.qml:417
167+#: qml/Shell.qml:348
165168#, qt-format
166169msgid "Please enter %1"
167170msgstr "Por favor, digite %1"
168−
169−#, qt-format
170−#~ msgid "(%1)"
171−#~ msgstr "(%1)"
172−
173−#, qt-format
174−#~ msgid "%1 review"
175−#~ msgid_plural "%1 reviews"
176−#~ msgstr[0] "%1 análise"
177−#~ msgstr[1] "%1 análises"
178−
179−#~ msgid "Comments:"
180−#~ msgstr "Comentários:"
181−
182−#~ msgid "Review"
183−#~ msgstr "Revisão"
po/ro.po+9−7
@@ -7,17 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2013-06-27 07:53+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Romanian <ro@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 "
18−"== 0) && (n != 0))) ? 2: 1));\n"
19−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
20−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2119
2220#: plugins/Unity/Launcher/launcheritem.cpp:43
2321#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -86,7 +84,7 @@ msgstr ""
8684msgid "See less"
8785msgstr ""
8886
89−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
9088msgid "Recent"
9189msgstr ""
9290
@@ -115,6 +113,10 @@ msgstr ""
115113msgid "Send"
116114msgstr ""
117115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
118120#: qml/Greeter/Lockscreen.qml:149
119121msgid "Emergency Call"
120122msgstr ""
@@ -160,7 +162,7 @@ msgstr ""
160162msgid "Search"
161163msgstr "Căutare"
162164
163−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
164166#, qt-format
165167msgid "Please enter %1"
166168msgstr ""
po/ru.po+9−5
@@ -7,15 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-04-03 13:07+0000\n"
1212"Last-Translator: Zonov Roman <Unknown>\n"
1313"Language-Team: Russian <ru@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-04-04 07:12+0000\n"
18−"X-Generator: Launchpad (build 16976)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -91,7 +91,7 @@ msgstr "Подробнее"
9191msgid "See less"
9292msgstr "Вкратце"
9393
94−#: qml/Dash/DashApps.qml:38
94+#: qml/Dash/DashApps.qml:37
9595msgid "Recent"
9696msgstr "Недавние"
9797
@@ -120,6 +120,10 @@ msgstr "Добавьте отзыв"
120120msgid "Send"
121121msgstr "Отправить"
122122
123+#: qml/Greeter/Greeter.qml:151
124+msgid "Swipe to unlock"
125+msgstr ""
126+
123127#: qml/Greeter/Lockscreen.qml:149
124128msgid "Emergency Call"
125129msgstr "Экстренный вызов"
@@ -165,7 +169,7 @@ msgstr "Введите PIN код"
165169msgid "Search"
166170msgstr "Поиск"
167171
168−#: qml/Shell.qml:417
172+#: qml/Shell.qml:348
169173#, qt-format
170174msgid "Please enter %1"
171175msgstr "Пожалуйста, введите %1"
po/shn.po+9−6
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2013-10-07 11:46+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Shan <shn@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=(n == 1) ? 0 : 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr ""
114113msgid "Send"
115114msgstr ""
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr ""
@@ -159,7 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr ""
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr ""
po/si.po+9−6
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\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"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr ""
114113msgid "Send"
115114msgstr ""
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr ""
@@ -159,7 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr ""
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr ""
po/sl.po+9−25
@@ -7,17 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-02-21 16:38+0000\n"
1212"Last-Translator: Damir Jerovšek <Unknown>\n"
1313"Language-Team: Slovenian <sl@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || "
18−"n%100==4 ? 3 : 0);\n"
19−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
20−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2119
2220#: plugins/Unity/Launcher/launcheritem.cpp:43
2321#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -90,7 +88,7 @@ msgstr "Pokaži več"
9088msgid "See less"
9189msgstr "Pokaži manj"
9290
93−#: qml/Dash/DashApps.qml:38
91+#: qml/Dash/DashApps.qml:37
9492msgid "Recent"
9593msgstr ""
9694
@@ -119,6 +117,10 @@ msgstr "Dodaj oceno"
119117msgid "Send"
120118msgstr "Pošlji"
121119
120+#: qml/Greeter/Greeter.qml:151
121+msgid "Swipe to unlock"
122+msgstr ""
123+
122124#: qml/Greeter/Lockscreen.qml:149
123125msgid "Emergency Call"
124126msgstr "Klic v sili"
@@ -164,25 +166,7 @@ msgstr "Vnesite PIN kartice SIM"
164166msgid "Search"
165167msgstr "Iskanje"
166168
167−#: qml/Shell.qml:417
169+#: qml/Shell.qml:348
168170#, qt-format
169171msgid "Please enter %1"
170172msgstr "Vnesite %1"
171−
172−#~ msgid "Review"
173−#~ msgstr "Ocena"
174−
175−#~ msgid "Comments:"
176−#~ msgstr "Opombe:"
177−
178−#, qt-format
179−#~ msgid "%1 review"
180−#~ msgid_plural "%1 reviews"
181−#~ msgstr[0] "%1 ocen"
182−#~ msgstr[1] "%1 ocena"
183−#~ msgstr[2] "%1 oceni"
184−#~ msgstr[3] "%1 ocene"
185−
186−#, qt-format
187−#~ msgid "(%1)"
188−#~ msgstr "(%1)"
po/sq.po+9−16
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-01-15 13:51+0000\n"
1212"Last-Translator: Besmir Zanaj <besmirzanaj@gmail.com>\n"
1313"Language-Team: Albanian <sq@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:48+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -86,7 +85,7 @@ msgstr ""
8685msgid "See less"
8786msgstr ""
8887
89−#: qml/Dash/DashApps.qml:38
88+#: qml/Dash/DashApps.qml:37
9089msgid "Recent"
9190msgstr ""
9291
@@ -115,6 +114,10 @@ msgstr "Shto një rishikim"
115114msgid "Send"
116115msgstr ""
117116
117+#: qml/Greeter/Greeter.qml:151
118+msgid "Swipe to unlock"
119+msgstr ""
120+
118121#: qml/Greeter/Lockscreen.qml:149
119122msgid "Emergency Call"
120123msgstr ""
@@ -160,17 +163,7 @@ msgstr ""
160163msgid "Search"
161164msgstr ""
162165
163−#: qml/Shell.qml:417
166+#: qml/Shell.qml:348
164167#, qt-format
165168msgid "Please enter %1"
166169msgstr ""
167−
168−#, qt-format
169−#~ msgid "%1 review"
170−#~ msgid_plural "%1 reviews"
171−#~ msgstr[0] "%1 rishikim"
172−#~ msgstr[1] "%1 rishikime"
173−
174−#, qt-format
175−#~ msgid "(%1)"
176−#~ msgstr "(%1)"
po/sr.po+9−7
@@ -7,17 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2013-06-27 09:19+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Serbian <sr@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18−"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
20−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2119
2220#: plugins/Unity/Launcher/launcheritem.cpp:43
2321#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -86,7 +84,7 @@ msgstr ""
8684msgid "See less"
8785msgstr ""
8886
89−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
9088msgid "Recent"
9189msgstr ""
9290
@@ -115,6 +113,10 @@ msgstr ""
115113msgid "Send"
116114msgstr ""
117115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
118120#: qml/Greeter/Lockscreen.qml:149
119121msgid "Emergency Call"
120122msgstr ""
@@ -160,7 +162,7 @@ msgstr ""
160162msgid "Search"
161163msgstr "Претрага"
162164
163−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
164166#, qt-format
165167msgid "Please enter %1"
166168msgstr ""
po/sv.po+9−6
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2013-06-26 22:36+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Swedish <sv@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr ""
114113msgid "Send"
115114msgstr ""
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr ""
@@ -159,7 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr ""
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr ""
po/sw.po+9−9
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-01-14 19:28+0000\n"
1212"Last-Translator: Damas Mlabwa <Unknown>\n"
1313"Language-Team: Swahili <sw@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr ""
114113msgid "Send"
115114msgstr "Tuma"
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr ""
@@ -159,10 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr "Tafuta"
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr ""
166−
167−#~ msgid "Comments:"
168−#~ msgstr "Maoni:"
po/ta.po+10−23
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2013-10-24 11:36+0000\n"
12−"Last-Translator: Arun Kumar -அருண் குமார் <thangam.arunx@gmail.com>\n"
12+"Last-Translator: Arun Kumar - அருண் குமார் <thangam.arunx@gmail.com>\n"
1313"Language-Team: Ubuntu Tamil Team/Free Tamil Computing/Thamizha\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019"Language: ta\n"
2120
2221#: plugins/Unity/Launcher/launcheritem.cpp:43
@@ -88,7 +87,7 @@ msgstr ""
8887msgid "See less"
8988msgstr ""
9089
91−#: qml/Dash/DashApps.qml:38
90+#: qml/Dash/DashApps.qml:37
9291msgid "Recent"
9392msgstr ""
9493
@@ -117,6 +116,10 @@ msgstr "ஒரு பரிசீலனையை சேர்"
117116msgid "Send"
118117msgstr "அனுப்பு"
119118
119+#: qml/Greeter/Greeter.qml:151
120+msgid "Swipe to unlock"
121+msgstr ""
122+
120123#: qml/Greeter/Lockscreen.qml:149
121124msgid "Emergency Call"
122125msgstr "அவசர அழைப்பு"
@@ -162,23 +165,7 @@ msgstr ""
162165msgid "Search"
163166msgstr "தெடு"
164167
165−#: qml/Shell.qml:417
168+#: qml/Shell.qml:348
166169#, qt-format
167170msgid "Please enter %1"
168171msgstr "தயவுச்செய்து %1 உள்ளிடு"
169−
170−#, qt-format
171−#~ msgid "(%1)"
172−#~ msgstr "(%1)"
173−
174−#, qt-format
175−#~ msgid "%1 review"
176−#~ msgid_plural "%1 reviews"
177−#~ msgstr[0] "%1 பரிசீலனை"
178−#~ msgstr[1] "%1 பரிசீலனைகள்"
179−
180−#~ msgid "Review"
181−#~ msgstr "மறுஆய்வு"
182−
183−#~ msgid "Comments:"
184−#~ msgstr "கருத்துகள்:"
po/te.po+9−6
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2013-06-27 09:57+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Telugu <te@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr ""
114113msgid "Send"
115114msgstr ""
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr ""
@@ -159,7 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr ""
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr ""
po/tr.po+9−22
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-03-05 08:54+0000\n"
1212"Last-Translator: Muhammed Yüce <muhammedyuceee@gmail.com>\n"
1313"Language-Team: Turkish <tr@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -88,7 +87,7 @@ msgstr "Daha fazlası"
8887msgid "See less"
8988msgstr "Daha azını gör"
9089
91−#: qml/Dash/DashApps.qml:38
90+#: qml/Dash/DashApps.qml:37
9291msgid "Recent"
9392msgstr ""
9493
@@ -117,6 +116,10 @@ msgstr "Bir inceleme ekle"
117116msgid "Send"
118117msgstr "Gönder"
119118
119+#: qml/Greeter/Greeter.qml:151
120+msgid "Swipe to unlock"
121+msgstr ""
122+
120123#: qml/Greeter/Lockscreen.qml:149
121124msgid "Emergency Call"
122125msgstr "Acil Arama"
@@ -162,23 +165,7 @@ msgstr "Lütfen SIM PIN'inizi girin"
162165msgid "Search"
163166msgstr "Ara"
164167
165−#: qml/Shell.qml:417
168+#: qml/Shell.qml:348
166169#, qt-format
167170msgid "Please enter %1"
168171msgstr "Lütfen %1 girin"
169−
170−#~ msgid "Review"
171−#~ msgstr "İnceleme"
172−
173−#, qt-format
174−#~ msgid "%1 review"
175−#~ msgid_plural "%1 reviews"
176−#~ msgstr[0] "%1 inceleme"
177−#~ msgstr[1] "%1 inceleme"
178−
179−#, qt-format
180−#~ msgid "(%1)"
181−#~ msgstr "(%1)"
182−
183−#~ msgid "Comments:"
184−#~ msgstr "Yorumlar:"
po/ug.po+12−8
@@ -7,15 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
11−"PO-Revision-Date: 2014-04-14 09:31+0000\n"
12−"Last-Translator: volkhan <Unknown>\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
11+"PO-Revision-Date: 2014-04-22 05:46+0000\n"
12+"Last-Translator: abdurahman <Unknown>\n"
1313"Language-Team: Uyghur <ug@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-04-15 07:57+0000\n"
18−"X-Generator: Launchpad (build 16976)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -86,14 +86,14 @@ msgstr "جىقراق كۆرۈش"
8686msgid "See less"
8787msgstr "ئازراق كۆرۈش"
8888
89−#: qml/Dash/DashApps.qml:38
89+#: qml/Dash/DashApps.qml:37
9090msgid "Recent"
9191msgstr "يېقىنقى"
9292
9393#: qml/Dash/PreviewListView.qml:52
9494#, qt-format
9595msgid "%1 Preview"
96−msgstr ""
96+msgstr "%1 ئالدىن كۆرۈپ بىقىش"
9797
9898#: qml/Dash/Previews/PreviewActionCombo.qml:34
9999msgid "More..."
@@ -115,6 +115,10 @@ msgstr "باھا قوشۇش"
115115msgid "Send"
116116msgstr "ئەۋەت"
117117
118+#: qml/Greeter/Greeter.qml:151
119+msgid "Swipe to unlock"
120+msgstr ""
121+
118122#: qml/Greeter/Lockscreen.qml:149
119123msgid "Emergency Call"
120124msgstr "جىددىي تېلېفون"
@@ -160,7 +164,7 @@ msgstr "پارولىنى كىرگۈزۈڭPINكارتىڭىزنىڭ SIM"
160164msgid "Search"
161165msgstr "ئىزدە"
162166
163−#: qml/Shell.qml:417
167+#: qml/Shell.qml:348
164168#, qt-format
165169msgid "Please enter %1"
166170msgstr "%1 نى كىرگۈزۈڭ"
po/uk.po+9−24
@@ -7,17 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2013-11-23 12:37+0000\n"
1212"Last-Translator: Ignat Kizenko <Unknown>\n"
1313"Language-Team: Ukrainian <uk@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18−"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
20−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2119
2220#: plugins/Unity/Launcher/launcheritem.cpp:43
2321#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -89,7 +87,7 @@ msgstr ""
8987msgid "See less"
9088msgstr ""
9189
92−#: qml/Dash/DashApps.qml:38
90+#: qml/Dash/DashApps.qml:37
9391msgid "Recent"
9492msgstr ""
9593
@@ -118,6 +116,10 @@ msgstr "Додати рецензію"
118116msgid "Send"
119117msgstr "Надіслати"
120118
119+#: qml/Greeter/Greeter.qml:151
120+msgid "Swipe to unlock"
121+msgstr ""
122+
121123#: qml/Greeter/Lockscreen.qml:149
122124msgid "Emergency Call"
123125msgstr "Терміновий виклик"
@@ -163,24 +165,7 @@ msgstr ""
163165msgid "Search"
164166msgstr "Пошук"
165167
166−#: qml/Shell.qml:417
168+#: qml/Shell.qml:348
167169#, qt-format
168170msgid "Please enter %1"
169171msgstr "Будь ласка, введіть %1"
170−
171−#~ msgid "Comments:"
172−#~ msgstr "Коментарі:"
173−
174−#~ msgid "Review"
175−#~ msgstr "Рецензія"
176−
177−#, qt-format
178−#~ msgid "%1 review"
179−#~ msgid_plural "%1 reviews"
180−#~ msgstr[0] "%1 рецензія"
181−#~ msgstr[1] "%1 рецензії"
182−#~ msgstr[2] "%1 рецензій"
183−
184−#, qt-format
185−#~ msgid "(%1)"
186−#~ msgstr "(%1)"
po/unity8.pot+7−3
@@ -8,7 +8,7 @@ msgid ""
88msgstr ""
99"Project-Id-Version: unity8\n"
1010"Report-Msgid-Bugs-To: \n"
11−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
11+"POT-Creation-Date: 2014-04-10 11:13-0400\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"
@@ -84,7 +84,7 @@ msgstr ""
8484msgid "See less"
8585msgstr ""
8686
87−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8888msgid "Recent"
8989msgstr ""
9090
@@ -113,6 +113,10 @@ msgstr ""
113113msgid "Send"
114114msgstr ""
115115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
116120#: qml/Greeter/Lockscreen.qml:149
117121msgid "Emergency Call"
118122msgstr ""
@@ -158,7 +162,7 @@ msgstr ""
158162msgid "Search"
159163msgstr ""
160164
161−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
162166#, qt-format
163167msgid "Please enter %1"
164168msgstr ""
po/vi.po+9−6
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\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"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr ""
114113msgid "Send"
115114msgstr ""
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr ""
@@ -159,7 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr ""
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr ""
po/xh.po+9−6
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\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"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr ""
114113msgid "Send"
115114msgstr ""
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr ""
@@ -159,7 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr ""
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr ""
po/zh_CN.po+9−6
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2013-10-09 13:51+0000\n"
1212"Last-Translator: Aron Xu <Unknown>\n"
1313"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr ""
114113msgid "Send"
115114msgstr ""
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr ""
@@ -159,7 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr "搜索"
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr ""
po/zh_HK.po+9−21
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-01-25 13:32+0000\n"
1212"Last-Translator: Daniel Cheung <daniel.2345@hotmail.com>\n"
1313"Language-Team: Chinese (Hong Kong) <zh_HK@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr "新增評論"
114113msgid "Send"
115114msgstr "傳送"
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr "緊急電話"
@@ -159,22 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr "搜尋"
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr "請輸入 %1"
166−
167−#~ msgid "Comments:"
168−#~ msgstr "評論:"
169−
170−#~ msgid "Review"
171−#~ msgstr "評論"
172−
173−#, qt-format
174−#~ msgid "%1 review"
175−#~ msgid_plural "%1 reviews"
176−#~ msgstr[0] "%1 評論"
177−
178−#, qt-format
179−#~ msgid "(%1)"
180−#~ msgstr "(%1)"
po/zh_TW.po+9−21
@@ -7,16 +7,15 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-03-25 16:48+0100\n"
10+"POT-Creation-Date: 2014-04-10 11:13-0400\n"
1111"PO-Revision-Date: 2014-01-16 06:04+0000\n"
1212"Last-Translator: Henry Yang <henry9846@hotmail.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"
17−"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-03-28 06:49+0000\n"
19−"X-Generator: Launchpad (build 16967)\n"
17+"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18+"X-Generator: Launchpad (build 16985)\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,7 +84,7 @@ msgstr ""
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/DashApps.qml:38
87+#: qml/Dash/DashApps.qml:37
8988msgid "Recent"
9089msgstr ""
9190
@@ -114,6 +113,10 @@ msgstr "新增回覆"
114113msgid "Send"
115114msgstr "發送"
116115
116+#: qml/Greeter/Greeter.qml:151
117+msgid "Swipe to unlock"
118+msgstr ""
119+
117120#: qml/Greeter/Lockscreen.qml:149
118121msgid "Emergency Call"
119122msgstr "緊急連絡"
@@ -159,22 +162,7 @@ msgstr ""
159162msgid "Search"
160163msgstr "搜尋"
161164
162−#: qml/Shell.qml:417
165+#: qml/Shell.qml:348
163166#, qt-format
164167msgid "Please enter %1"
165168msgstr ""
166−
167−#~ msgid "Comments:"
168−#~ msgstr "備註:"
169−
170−#~ msgid "Review"
171−#~ msgstr "回覆"
172−
173−#, qt-format
174−#~ msgid "%1 review"
175−#~ msgid_plural "%1 reviews"
176−#~ msgstr[0] "%1 回覆"
177−
178−#, qt-format
179−#~ msgid "(%1)"
180−#~ msgstr "(%1)"
qml/Bottombar/Bottombar.qmldeleted−227
@@ -1,227 +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.0
18−import "../Components"
19−import Utils 0.1
20−import Unity.Application 0.1
21−import Ubuntu.Gestures 0.1
22−import Ubuntu.Components 0.1
23−
24−Item {
25− id: bottombar
26−
27− // Whether there's an application on foreground (as opposed to have shell's Dash on foreground)
28− property bool applicationIsOnForeground
29−
30− property variant theHud
31− property bool enabled: false
32− property bool preventHiding: dragArea.dragging
33− readonly property real bottomEdgeButtonCenterDistance: units.gu(34)
34−
35− state: "hidden"
36−
37− function hide() {
38− dismissTimer.stop()
39− bottombar.state = "hidden"
40− }
41−
42− onApplicationIsOnForegroundChanged: {
43− if (!applicationIsOnForeground) {
44− hide()
45− }
46− }
47−
48− onStateChanged: {
49− if (state == "hidden") {
50− dismissTimer.stop()
51− bottomBarVisibilityCommunicatorShell.forceHidden = false
52− } else {
53− dismissTimer.restart()
54− }
55− }
56−
57− onPreventHidingChanged: {
58− if (!preventHiding) {
59− if (state == "hint" || state == "reveal")
60− hide()
61− }
62−
63− if (dismissTimer.running) {
64− dismissTimer.restart();
65− }
66− }
67−
68− Timer {
69− id: dismissTimer
70− interval: 1000
71− onTriggered: {
72− if (!bottombar.preventHiding) {
73− bottombar.state = "hidden"
74− } else {
75− dismissTimer.restart()
76− }
77− }
78− }
79−
80− HudButton {
81− id: hudButton
82−
83− readonly property bool centeredHud: parent.width < units.gu(68) // Nexus 7 has 67 gu width
84−
85− x: centeredHud ? parent.width / 2 - width / 2 : MathUtils.clamp(dragArea.touchStartX - (width / 2), 0, bottombar.width - width)
86− y: bottombar.height - bottomEdgeButtonCenterDistance - (height / 2) - bottomMargin
87− z: 1
88− visible: opacity != 0
89−
90− mouseOver: {
91− if (dragArea.status === DirectionalDragArea.Recognized) {
92− var touchLocal = mapFromItem(dragArea, dragArea.touchX, dragArea.touchY)
93− return touchLocal.x > 0 && touchLocal.x < width
94− && touchLocal.y > 0 && touchLocal.y < height
95− } else {
96− return false
97− }
98− }
99−
100− onClicked: theHud.show()
101−
102− Behavior on bottomMargin {
103− NumberAnimation{duration: hudButton.opacity < 0.01 ? 200 : 70; easing.type: Easing.OutQuart}
104− }
105−
106− Behavior on opacity {
107− NumberAnimation{duration: 200; easing.type: Easing.OutCubic}
108− }
109− }
110−
111− Connections {
112− target: theHud
113− onShownChanged: {
114− bottomBarVisibilityCommunicatorShell.forceHidden = theHud.shown
115− if (theHud.shown) {
116− bottombar.state = "hidden"
117− }
118− }
119− }
120−
121− EdgeDragArea {
122− id: dragArea
123− objectName: "hudDragArea"
124− width: parent.width
125− height: shell.edgeSize
126− anchors.bottom: parent.bottom
127−
128− distanceThreshold: units.gu(8)
129− enabled: !theHud.shown && bottombar.enabled && applicationIsOnForeground
130− direction: Direction.Upwards
131− maxSilenceTime: 2000
132−
133− property int previousStatus: -1
134− property real touchStartX: -1
135−
136− readonly property real distanceFromThreshold: (-distance) - distanceThreshold // distance is negative
137− readonly property real revealDistance: units.gu(2)
138− readonly property real commitDistance: units.gu(6)
139− readonly property real commitProgress: MathUtils.clamp(distanceFromThreshold / commitDistance, 0, 1)
140−
141− onStatusChanged: {
142− if (status === DirectionalDragArea.WaitingForTouch) {
143− if (previousStatus == DirectionalDragArea.Recognized) {
144− if (hudButton.mouseOver) {
145− hudButton.clicked()
146− }
147− }
148− } else if (status === DirectionalDragArea.Undecided) {
149− if (!hudButton.centeredHud) {
150− touchStartX = touchX
151− }
152− } else if (status === DirectionalDragArea.Recognized) {
153− bottombar.state = "hint"
154− }
155− previousStatus = status
156− }
157−
158− onDistanceChanged: {
159− if (status === DirectionalDragArea.Recognized) {
160− if (distanceFromThreshold > commitDistance)
161− bottombar.state = "shown"
162− else if (distanceFromThreshold > revealDistance)
163− bottombar.state = "reveal"
164− }
165− }
166− }
167−
168− Item {
169− id: dismissArea
170− anchors {
171− top: parent.top
172− left: parent.left
173− right: parent.right
174− }
175− height: parent.height - bottomBarVisibilityCommunicatorShell.position
176−
177− MouseArea {
178− anchors.fill: parent
179− enabled: bottombar.state == "shown"
180− onPressed: {
181− bottomBarVisibilityCommunicatorShell.forceHidden = true
182− bottombar.state = "hidden"
183− }
184− }
185−
186− InputFilterArea {
187− anchors.fill: parent
188− blockInput: (hudButton.opacity == 1)
189− }
190− }
191−
192− MouseArea {
193− anchors {
194− top: dismissArea.bottom
195− left: parent.left
196− right: parent.right
197− bottom: parent.bottom
198− }
199− enabled: bottombar.state == "shown" && bottomBarVisibilityCommunicatorShell.position > 0
200− onPressed: {
201− bottombar.state = "hidden"
202− }
203− }
204−
205− states: [
206− State {
207− name: "hidden"
208− PropertyChanges { target: hudButton; opacity: 0 }
209− PropertyChanges { target: hudButton; bottomMargin: units.gu(-2) }
210− },
211− State {
212− name: "hint"
213− extend: "hidden"
214− PropertyChanges { target: hudButton; opacity: 0.5 }
215− },
216− State {
217− name: "reveal"
218− extend: "hint"
219− PropertyChanges { target: hudButton; bottomMargin: units.gu(-2) + units.gu(2) * dragArea.commitProgress }
220− },
221− State {
222− name: "shown"
223− PropertyChanges { target: hudButton; opacity: 1 }
224− PropertyChanges { target: hudButton; bottomMargin: units.gu(0) }
225− }
226− ]
227−}
qml/Bottombar/HudButton.qmldeleted−64
@@ -1,64 +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.0
18−import Ubuntu.Components 0.1
19−
20−Item {
21− id: item
22−
23− property bool mouseOver
24−
25− property int bottomMargin: units.gu(2)
26−
27− signal clicked()
28−
29− readonly property real scaleOnMouseOver: 1.2
30−
31− width: hudButton.width * scaleOnMouseOver
32− height: hudButton.height * scaleOnMouseOver
33−
34− Item {
35− id: hudButton
36−
37− anchors.centerIn: parent
38− height: units.gu(12)
39− width: height
40− opacity: item.mouseOver || abstractButton.pressed ? 1 : 0.7
41− scale: item.mouseOver || abstractButton.pressed ? scaleOnMouseOver : 1
42− Behavior on opacity {NumberAnimation{duration: 200; easing.type: Easing.OutQuart}}
43− Behavior on scale {NumberAnimation{duration: 200; easing.type: Easing.OutQuart}}
44−
45− AbstractButton {
46− id: abstractButton
47− anchors.fill: parent
48− style: Image {
49− anchors.fill: parent
50− source: "graphics/hud_invoke_button_active.png"
51− }
52−
53− onClicked: item.clicked()
54− }
55−
56− Image {
57− width: units.gu(4)
58− height: width
59− source: "graphics/hud.png"
60− anchors.centerIn: parent
61− fillMode: Image.PreserveAspectFit
62− }
63− }
64−}
qml/Bottombar/graphics/hud@20.pngdeleted

Binary file not shown.

qml/Bottombar/graphics/hud_invoke_button_active@20.pngdeleted

Binary file not shown.

qml/CMakeLists.txt−1
@@ -5,7 +5,6 @@ install(FILES ${QML_JS_FILES}
55 )
66
77set(QML_DIRS
8− Bottombar
98 Components
109 Dash
1110 graphics
qml/Components/FilterGrid.qml+37−24
@@ -28,11 +28,6 @@ import "../Components"
2828Item {
2929 id: root
3030
31− /* If true, the number of elements displayed will be limited by collapsedRowCount.
32− If false, all elements will be displayed, effectively looking the same as a regular
33− ResponsiveGridView. */
34− property bool filter: true
35−
3631 /* Whether, when collapsed, a button should be displayed enabling the user to expand
3732 the grid to its full size. */
3833 readonly property bool expandable: model.count > rowsWhenCollapsed * iconTileGrid.columns
@@ -65,30 +60,48 @@ Item {
6560 readonly property alias pressDelay: iconTileGrid.pressDelay
6661 property alias highlightIndex: iconTileGrid.highlightIndex
6762 readonly property alias currentItem: iconTileGrid.currentItem
63+ readonly property alias filtered: d.filter
64+
65+ QtObject {
66+ id: d
67+ // We do have filter and collapsed properties because we need to decouple
68+ // the real filtering with the animation since the closing animation
69+ // i.e. setFilter(false. true) we still need to not be filtering until
70+ // the animation finishes otherwise we hide the items when the animation
71+ // is still running
72+ property bool filter: true
73+ property bool collapsed: true
74+ }
6875
69− height: !filterAnimation.running ? childrenRect.height : height
76+ height: d.collapsed ? root.collapsedHeight : root.uncollapsedHeight
7077 clip: filterAnimation.running
7178
72− NumberAnimation {
73− property bool filterEndValue
74− id: filterAnimation
75− target: root
76− property: "height"
77− to: filterEndValue ? root.collapsedHeight : root.uncollapsedHeight
78− // Duration and easing here match the ListViewWithPageHeader::m_contentYAnimation
79− // otherwise since both animations can run at the same time you'll get
80− // some visual weirdness.
81− duration: 200
82− easing.type: Easing.InOutQuad
83− onStopped: {
84− root.filter = filterEndValue;
79+ Behavior on height {
80+ id: heightBehaviour
81+ enabled: false
82+ NumberAnimation {
83+ id: filterAnimation
84+ // Duration and easing here match the ListViewWithPageHeader::m_contentYAnimation
85+ // otherwise since both animations can run at the same time you'll get
86+ // some visual weirdness.
87+ duration: 200
88+ easing.type: Easing.InOutQuad
89+ onRunningChanged: {
90+ if (!running) {
91+ d.filter = d.collapsed;
92+ }
93+ heightBehaviour.enabled = false;
94+ }
8595 }
8696 }
8797
88− function startFilterAnimation(filter) {
89− filterAnimation.filterEndValue = filter
90− filterAnimation.start();
91− }
98+ function setFilter(filter, animate) {
99+ heightBehaviour.enabled = animate;
100+ d.collapsed = filter;
101+ if (!animate || !filter) {
102+ d.filter = filter;
103+ }
104+ }
92105
93106 ResponsiveGridView {
94107 id: iconTileGrid
@@ -105,7 +118,7 @@ Item {
105118
106119 model: LimitProxyModel {
107120 model: root.model
108− limit: (filter && !filterAnimation.running) ? rowsWhenCollapsed * iconTileGrid.columns : -1
121+ limit: d.filter ? rowsWhenCollapsed * iconTileGrid.columns : -1
109122 }
110123 }
111124}
qml/Components/LazyImage.qml+1
@@ -36,6 +36,7 @@ Item {
3636 property alias cache: image.cache
3737 property alias horizontalAlignment: image.horizontalAlignment
3838 property alias verticalAlignment: image.verticalAlignment
39+ property alias sourceImage: image
3940
4041 state: "default"
4142
qml/Components/ZoomableImage.qmlnew file+153
@@ -0,0 +1,153 @@
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+import QtQuick 2.0
18+import Ubuntu.Components 0.1
19+import "../Components"
20+
21+/*! \brief Zoomable for image.
22+
23+ This widget shows image contained in source,
24+ can be zoomable accordingly with zoomable.
25+ */
26+
27+Item {
28+ id: root
29+ property alias source: lazyImage.source
30+ property var zoomable: false
31+ property alias imageState: lazyImage.state
32+ property alias scaleTo: lazyImage.scaleTo
33+ property alias asynchronous: lazyImage.asynchronous
34+
35+ Flickable {
36+ id: flickable
37+ objectName: "flickable"
38+ clip: true
39+ contentHeight: imageContainer.height
40+ contentWidth: imageContainer.width
41+
42+ onHeightChanged: image.resetScale()
43+ onWidthChanged: image.resetScale()
44+ anchors.fill: parent
45+
46+ Item {
47+ id: imageContainer
48+ objectName: "imageContainer"
49+ width: Math.max(image.width * image.scale, flickable.width)
50+ height: Math.max(image.height * image.scale, flickable.height)
51+
52+ Item {
53+ id: image
54+ objectName: "image"
55+ property alias imageState: lazyImage.state
56+ property var prevScale
57+ anchors.centerIn: parent
58+
59+ signal imageReloaded
60+
61+ LazyImage {
62+ id: lazyImage
63+ objectName: "lazyImage"
64+ smooth: !flickable.movingVertically
65+ anchors.fill: parent
66+ fillMode: Image.PreserveAspectFit
67+ scaleTo: "fit"
68+
69+ onStateChanged: {
70+ if (state == "ready") {
71+ image.imageReloaded();
72+ }
73+ }
74+ }
75+
76+ onImageReloaded: {
77+ image.height = lazyImage.sourceImage.implicitHeight
78+ image.width = lazyImage.sourceImage.implicitWidth
79+ image.resetScale();
80+ }
81+
82+ function resetScale() {
83+ image.scale = Math.min(flickable.width / image.width, flickable.height / image.height);
84+ pinchArea.minScale = image.scale;
85+ prevScale = Math.min(image.scale, 1);
86+ }
87+
88+ onScaleChanged: {
89+ var currentWidth = width * scale
90+ var currentHeight = height * scale
91+ var scaleRatio = scale / prevScale
92+ if (currentWidth > flickable.width) {
93+ var xpos = flickable.width / 2 + flickable.contentX;
94+ var xoff = xpos * scaleRatio;
95+ flickable.contentX = xoff - flickable.width / 2;
96+ }
97+ if (currentHeight > flickable.height) {
98+ var ypos = flickable.height / 2 + flickable.contentY;
99+ var yoff = ypos * scaleRatio;
100+ flickable.contentY = yoff - flickable.height / 2;
101+ }
102+ prevScale = scale;
103+ }
104+ }
105+ }
106+
107+ PinchArea {
108+ id: pinchArea
109+ objectName: "pinchArea"
110+ property real minScale: 1.0
111+ anchors.fill: parent
112+ enabled: zoomable ? zoomable : false
113+
114+ pinch.target: image
115+ pinch.minimumScale: minScale
116+ pinch.maximumScale: 10
117+
118+ onPinchFinished: flickable.returnToBounds()
119+ }
120+
121+ MouseArea {
122+ id: mouseArea
123+ objectName: "mouseArea"
124+
125+ anchors.fill: parent
126+ enabled: zoomable ? zoomable : false
127+
128+ onWheel: {
129+ var startScale = image.scale;
130+ if (wheel.angleDelta.y > 0) {
131+ image.scale = startScale + 0.1;
132+ } else if (wheel.angleDelta.y < 0) {
133+ if (image.scale > 0.1 && image.scale > pinchArea.minScale) {
134+ image.scale = startScale - 0.1;
135+ }
136+ }
137+ wheel.accepted = true;
138+ }
139+
140+ onPressed: {
141+ mouse.accepted = false;
142+ }
143+
144+ onReleased: {
145+ mouse.accepted = false;
146+ }
147+
148+ onClicked: {
149+ mouse.accepted = false;
150+ }
151+ }
152+ }
153+}
qml/Dash/CardFilterGrid.qml+3−8
@@ -28,9 +28,10 @@ DashRenderer {
2828 verticalSpacing: units.gu(1)
2929 currentItem: filterGrid.currentItem
3030 height: filterGrid.height
31+ filtered: filterGrid.filtered
3132
32− function startFilterAnimation(filter) {
33− filterGrid.startFilterAnimation(filter)
33+ function setFilter(filter, animate) {
34+ filterGrid.setFilter(filter, animate)
3435 }
3536
3637 FilterGrid {
@@ -41,7 +42,6 @@ DashRenderer {
4142 delegateHeight: cardTool.cardHeight
4243 verticalSpacing: genericFilterGrid.verticalSpacing
4344 model: genericFilterGrid.model
44− filter: genericFilterGrid.filter
4545 collapsedRowCount: Math.min(2, cardTool && cardTool.template && cardTool.template["collapsed-rows"] || 2)
4646 delegateCreationBegin: genericFilterGrid.delegateCreationBegin
4747 delegateCreationEnd: genericFilterGrid.delegateCreationEnd
@@ -66,10 +66,5 @@ DashRenderer {
6666 onPressAndHold: genericFilterGrid.pressAndHold(index, card.y)
6767 }
6868 }
69−
70− onFilterChanged: {
71− genericFilterGrid.filter = filter
72− filter = Qt.binding(function() { return genericFilterGrid.filter })
73− }
7469 }
7570}
qml/Dash/DashContent.qml+18−10
@@ -17,6 +17,7 @@
1717import QtQuick 2.0
1818import Ubuntu.Components 0.1
1919import Unity 0.2
20+import Utils 0.1
2021import "../Components"
2122
2223Item {
@@ -183,23 +184,30 @@ Item {
183184 width: parent.width
184185 style: DashContentTabBarStyle {}
185186
186− model: dashContentList.model
187+ SortFilterProxyModel {
188+ id: tabBarModel
187189
188− onSelectedIndexChanged: {
189− if (dashContentList.currentIndex == -1 && tabBar.selectedIndex != -1) {
190− // TODO This together with the Timer below
191− // are a workaround for the first tab sometimes not showing the text.
192− // But Tabs are going away in the future so not sure if makes
193− // sense invetigating what's the problem at this stage
194− selectionModeTimer.restart();
190+ model: dashContentList.model
191+
192+ property int selectedIndex: -1
193+ onSelectedIndexChanged: {
194+ if (dashContentList.currentIndex == -1 && tabBar.selectedIndex != -1) {
195+ // TODO This together with the Timer below
196+ // are a workaround for the first tab sometimes not showing the text.
197+ // But Tabs are going away in the future so not sure if makes
198+ // sense invetigating what's the problem at this stage
199+ selectionModeTimer.restart();
200+ }
201+ dashContentList.currentIndex = selectedIndex;
195202 }
196− dashContentList.currentIndex = selectedIndex;
197203 }
198204
205+ model: tabBarModel.count > 0 ? tabBarModel : null
206+
199207 Connections {
200208 target: dashContentList
201209 onCurrentIndexChanged: {
202− tabBar.selectedIndex = dashContentList.currentIndex
210+ tabBarModel.selectedIndex = dashContentList.currentIndex
203211 }
204212 }
205213
qml/Dash/DashRenderer.qml+3−3
@@ -20,8 +20,8 @@ Item {
2020 // Can the item be expanded?
2121 property bool expandable: false
2222
23− // In case it can be expanded, should we filter it
24− property bool filter: true
23+ // In case it can be expanded, is it filtered
24+ property bool filtered: true
2525
2626 property int collapsedHeight: height
2727
@@ -58,6 +58,6 @@ Item {
5858 /// @param itemY is y of the held delegate
5959 signal pressAndHold(int index, real itemY)
6060
61− function startFilterAnimation(filter) {
61+ function setFilter(filter, animate) {
6262 }
6363}
qml/Dash/GenericScopeView.qml+13−15
@@ -122,7 +122,7 @@ FocusScope {
122122 showDivider: false
123123
124124 readonly property bool expandable: rendererLoader.item ? rendererLoader.item.expandable : false
125− readonly property bool filtered: rendererLoader.item ? rendererLoader.item.filter : true
125+ readonly property bool filtered: rendererLoader.item ? rendererLoader.item.filtered : true
126126 readonly property string category: categoryId
127127 readonly property var item: rendererLoader.item
128128
@@ -168,9 +168,7 @@ FocusScope {
168168 item.objectName = Qt.binding(function() { return categoryId })
169169 if (item.expandable) {
170170 var shouldFilter = categoryId != categoryView.expandedCategoryId;
171− if (shouldFilter != item.filter) {
172− item.filter = shouldFilter;
173− }
171+ item.setFilter(shouldFilter, false /*animate*/);
174172 }
175173 updateDelegateCreationRange();
176174 item.cardTool = cardTool;
@@ -219,11 +217,8 @@ FocusScope {
219217 var shrinkingVisible = shouldFilter && y + item.collapsedHeight < categoryView.height;
220218 var growingVisible = !shouldFilter && y + height < categoryView.height;
221219 if (!previewListView.open || !shouldFilter) {
222− if (shrinkingVisible || growingVisible) {
223− item.startFilterAnimation(shouldFilter)
224− } else {
225− item.filter = shouldFilter;
226− }
220+ var animate = shrinkingVisible || growingVisible;
221+ item.setFilter(shouldFilter, animate)
227222 if (!shouldFilter && !previewListView.open) {
228223 categoryView.maximizeVisibleArea(index, item.uncollapsedHeight);
229224 }
@@ -238,12 +233,15 @@ FocusScope {
238233 }
239234
240235 function updateDelegateCreationRange() {
241− // Do not update the range if we are overshooting up or down, since we'll come back
242− // to the stable position and delete/create items without any reason
243− if (categoryView.contentY < categoryView.originY) {
244− return;
245− } else if (categoryView.contentHeight > categoryView.height && categoryView.contentY + categoryView.height > categoryView.contentHeight) {
246− return;
236+ if (categoryView.moving) {
237+ // Do not update the range if we are overshooting up or down, since we'll come back
238+ // to the stable position and delete/create items without any reason
239+ if (categoryView.contentY < categoryView.originY) {
240+ return;
241+ } else if (categoryView.contentHeight - categoryView.originY > categoryView.height &&
242+ categoryView.contentY + categoryView.height > categoryView.contentHeight) {
243+ return;
244+ }
247245 }
248246
249247 if (item && item.hasOwnProperty("delegateCreationBegin")) {
qml/Dash/Previews/PreviewProgress.qml+3−2
@@ -34,11 +34,12 @@ PreviewWidget {
3434 ProgressBar {
3535 id: progressBar
3636 objectName: "progressBar"
37+ anchors.right: parent.right
3738 value: 0
3839 maximumValue: 100
39− implicitHeight: units.gu(5)
40+ implicitHeight: units.gu(4)
4041 height: parent.height
41− width: parent.width
42+ width: (root.width - units.gu(1)) / 2
4243
4344 property var source: widgetData["source"]
4445 // TODO Eventually we will need to support more sources other
qml/Dash/Previews/PreviewRatingInput.qml+2−2
@@ -155,8 +155,8 @@ PreviewWidget {
155155 objectName: "submitButton"
156156
157157 readonly property bool readyToSubmit: {
158− if (reviewTextArea.text === "" ||
159− (widgetData["visible"] === "both" && rating.value < 0)) return false;
158+ if ((widgetData["required"] !== "review" && rating.value < 0) ||
159+ (widgetData["required"] !== "rating" && reviewTextArea.text === "")) return false;
160160 else return true;
161161 }
162162
qml/Dash/Previews/PreviewZoomableImage.qml+4−7
@@ -28,14 +28,11 @@ PreviewWidget {
2828 id: root
2929 implicitHeight: units.gu(22)
3030
31− LazyImage {
31+ ZoomableImage {
32+ id: image
3233 objectName: "image"
33− anchors {
34− top: parent.top
35− bottom: parent.bottom
36− }
37− scaleTo: "height"
3834 source: widgetData["source"]
39− initialWidth: units.gu(13)
35+ zoomable: widgetData["zoomable"] ? widgetData["zoomable"] : false
36+ anchors.fill: parent
4037 }
4138}
qml/Greeter/Clock.qml+3−6
@@ -24,14 +24,11 @@ Item {
2424 implicitWidth: childrenRect.width
2525 implicitHeight: childrenRect.height
2626
27− // Allows to set the current Date. Will be overwritten if active
27+ // Allows to set the current Date. Will be overwritten if visible
2828 property date currentDate
2929
30− // If active, time will be updated through the indicators service
31− property bool active: clock.enabled && clock.visible
32−
3330 Component.onCompleted: {
34− if (active) {
31+ if (visible) {
3532 currentDate = new Date()
3633 }
3734 }
@@ -42,7 +39,7 @@ Item {
4239
4340 busName: "com.canonical.indicator.datetime"
4441 actionsObjectPath: "/com/canonical/indicator/datetime"
45− menuObjectPath: clock.active ? "/com/canonical/indicator/datetime/phone" : ""
42+ menuObjectPath: clock.visible ? "/com/canonical/indicator/datetime/phone" : ""
4643
4744 Indicators.RootActionState {
4845 menu: timeModel.model
qml/Greeter/Greeter.qml+115−42
@@ -28,10 +28,10 @@ Showable {
2828 property url defaultBackground
2929
3030 // 1 when fully shown and 0 when fully hidden
31− property real showProgress: MathUtils.clamp((width + x) / width, 0, 1)
31+ property real showProgress: MathUtils.clamp((width - Math.abs(x)) / width, 0, 1)
3232
3333 showAnimation: StandardAnimation { property: "x"; to: 0 }
34− hideAnimation: StandardAnimation { property: "x"; to: -width }
34+ hideAnimation: __leftHideAnimation
3535
3636 property alias dragHandleWidth: dragHandle.width
3737 property alias model: greeterContentLoader.model
@@ -40,19 +40,81 @@ Showable {
4040 readonly property bool narrowMode: !multiUser && height > width
4141 readonly property bool multiUser: LightDM.Users.count > 1
4242
43− readonly property bool leftTeaserPressed: greeterContentLoader.status == Loader.Ready &&
44− greeterContentLoader.item.leftTeaserPressed
45− readonly property bool rightTeaserPressed: greeterContentLoader.status == Loader.Ready &&
46− greeterContentLoader.item.rightTeaserPressed
47−
4843 readonly property int currentIndex: greeterContentLoader.currentIndex
4944
45+ property var __leftHideAnimation: StandardAnimation { property: "x"; to: -width }
46+ property var __rightHideAnimation: StandardAnimation { property: "x"; to: width }
47+
5048 signal selected(int uid)
5149 signal unlocked(int uid)
50+ signal tease()
51+
52+ function hideRight() {
53+ if (shown) {
54+ hideAnimation = __rightHideAnimation
55+ hide()
56+ }
57+ }
58+
59+ onRequiredChanged: {
60+ // Reset hide animation to default once we're finished with it
61+ if (!required) {
62+ // Put back on left for reliable show direction and so that
63+ // if normal hide() is called, we don't animate from right.
64+ x = -width
65+ hideAnimation = __leftHideAnimation
66+ }
67+ }
68+
69+ // Bi-directional revealer
70+ DraggingArea {
71+ id: dragHandle
72+ anchors.fill: parent
73+ enabled: greeter.narrowMode || !greeter.locked
74+ orientation: Qt.Horizontal
75+ propagateComposedEvents: true
76+
77+ Component.onCompleted: {
78+ // set evaluators to baseline of dragValue == 0
79+ leftEvaluator.reset()
80+ rightEvaluator.reset()
81+ }
82+
83+ function maybeTease() {
84+ if (!greeter.locked || greeter.narrowMode)
85+ greeter.tease();
86+ }
87+
88+ onClicked: maybeTease()
89+ onDragStart: maybeTease()
90+ onPressAndHold: {} // eat event, but no need to tease, as drag will cover it
91+
92+ onDragEnd: {
93+ if (rightEvaluator.shouldAutoComplete())
94+ greeter.hideRight()
95+ else if (leftEvaluator.shouldAutoComplete())
96+ greeter.hide();
97+ else
98+ greeter.show(); // undo drag
99+ }
100+
101+ onDragValueChanged: {
102+ // dragValue is kept as a "step" value since we do this x adjusting on the fly
103+ greeter.x += dragValue
104+ }
105+
106+ EdgeDragEvaluator {
107+ id: rightEvaluator
108+ trackedPosition: dragHandle.dragValue + greeter.x
109+ maxDragDistance: parent.width
110+ direction: Direction.Rightwards
111+ }
52112
53− onRightTeaserPressedChanged: {
54− if (rightTeaserPressed && (!locked || narrowMode) && x == 0) {
55− teasingTimer.start();
113+ EdgeDragEvaluator {
114+ id: leftEvaluator
115+ trackedPosition: dragHandle.dragValue + greeter.x
116+ maxDragDistance: parent.width
117+ direction: Direction.Leftwards
56118 }
57119 }
58120
@@ -82,45 +144,56 @@ Showable {
82144 }
83145 }
84146
85− Timer {
86− id: teasingTimer
87− interval: 200
88− }
147+ onTease: showLabelAnimation.start()
89148
90− states: [
91− State {
92− name: "teasing"
93− when: teasingTimer.running
94− PropertyChanges {
95− target: greeter
96− x: -dragHandle.hintDisplacement
149+ Label {
150+ id: swipeHint
151+ visible: greeter.shown
152+ property real baseOpacity: 0.5
153+ opacity: 0.0
154+ anchors.horizontalCenter: parent.horizontalCenter
155+ anchors.bottom: parent.bottom
156+ anchors.bottomMargin: units.gu(5)
157+ text: i18n.tr("Swipe to unlock")
158+ color: "white"
159+ font.weight: Font.Light
160+
161+ SequentialAnimation on opacity {
162+ id: showLabelAnimation
163+ running: false
164+ loops: 2
165+
166+ StandardAnimation {
167+ from: 0.0
168+ to: swipeHint.baseOpacity
169+ duration: UbuntuAnimation.SleepyDuration
97170 }
98− }
99− ]
100− transitions: [
101− Transition {
102− from: "*"
103− to: "*"
104− NumberAnimation {
105− target: greeter
106− property: "x"
107− duration: 300
108− easing.type: Easing.OutCubic
171+ PauseAnimation { duration: UbuntuAnimation.BriskDuration }
172+ StandardAnimation {
173+ from: swipeHint.baseOpacity
174+ to: 0.0
175+ duration: UbuntuAnimation.SleepyDuration
109176 }
110177 }
111− ]
112−
113− DragHandle {
114− id: dragHandle
178+ }
115179
180+ // right side shadow
181+ Image {
182+ anchors.left: parent.right
116183 anchors.top: parent.top
117184 anchors.bottom: parent.bottom
118− anchors.right: parent.right
119−
120− hintDisplacement: units.gu(2)
121−
122− enabled: greeter.narrowMode || !greeter.locked
185+ visible: parent.required
186+ fillMode: Image.Tile
187+ source: "../graphics/dropshadow_right.png"
188+ }
123189
124− direction: Direction.Leftwards
190+ // left side shadow
191+ Image {
192+ anchors.right: parent.left
193+ anchors.top: parent.top
194+ anchors.bottom: parent.bottom
195+ visible: parent.required
196+ fillMode: Image.Tile
197+ source: "../graphics/dropshadow_left.png"
125198 }
126199}
qml/Greeter/GreeterContent.qml+1−10
@@ -20,15 +20,11 @@ import Ubuntu.Components 0.1
2020import LightDM 0.1 as LightDM
2121import "../Components"
2222
23−MouseArea {
23+Item {
2424 id: root
2525 anchors.fill: parent
2626
2727 property bool ready: background.source == "" || background.status == Image.Ready || background.status == Image.Error
28− property bool leftTeaserPressed: teasingMouseArea.pressed &&
29− teasingMouseArea.mouseX < teasingMouseArea.width / 2
30− property bool rightTeaserPressed: teasingMouseArea.pressed &&
31− teasingMouseArea.mouseX > teasingMouseArea.width / 2
3228
3329 signal selected(int uid)
3430 signal unlocked(int uid)
@@ -74,11 +70,6 @@ MouseArea {
7470 opacity: 0.4
7571 }
7672
77− MouseArea {
78− id: teasingMouseArea
79− anchors.fill: parent
80− }
81−
8273 Loader {
8374 id: loginLoader
8475 objectName: "loginLoader"
qml/Greeter/Infographics.qml+3
@@ -457,5 +457,8 @@ Item {
457457 !circleGrowAnimTimer.running)
458458 infographic.model.nextDataSource()
459459 }
460+
461+ onClicked: mouse.accepted = false
462+ onPressed: mouse.accepted = false
460463 }
461464}
qml/Hud/Hud.qml+1−1
@@ -491,6 +491,6 @@ Item {
491491 anchors.top: hudContentClipper.top
492492 anchors.bottom: hudContentClipper.bottom
493493 fillMode: Image.Tile
494− source: "graphics/dropshadow_right.png"
494+ source: "../graphics/dropshadow_right.png"
495495 }
496496}
qml/Notifications/Notifications.qml+11
@@ -16,6 +16,8 @@
1616
1717import QtQuick 2.0
1818import Ubuntu.Components 0.1
19+import Unity.Notifications 1.0 as UnityNotifications
20+import Utils 0.1
1921import "../Components"
2022
2123ListView {
@@ -25,6 +27,15 @@ ListView {
2527 interactive: false
2628
2729 property real margin
30+ property bool useModal: snapDecisionProxyModel.count > 0
31+
32+ SortFilterProxyModel {
33+ id: snapDecisionProxyModel
34+
35+ model: notificationList.model
36+ filterRole: UnityNotifications.ModelInterface.RoleType
37+ filterRegExp: RegExp(UnityNotifications.Notification.SnapDecision)
38+ }
2839 spacing: delegate.fullscreen ? 0 : units.gu(.5)
2940
3041 currentIndex: (currentIndex < 1 && count > 1) ? 1 : -1
qml/Shell.qml+79−92
@@ -28,9 +28,7 @@ import "Dash"
2828import "Greeter"
2929import "Launcher"
3030import "Panel"
31−import "Hud"
3231import "Components"
33−import "Bottombar"
3432import "Notifications"
3533import Unity.Notifications 1.0 as NotificationBackend
3634
@@ -148,8 +146,8 @@ FocusScope {
148146
149147 available: !greeter.shown && !lockscreen.shown
150148 hides: [stages, launcher, panel.indicators]
151− shown: disappearingAnimationProgress !== 1.0
152− enabled: disappearingAnimationProgress === 0.0 && edgeDemo.dashEnabled
149+ shown: disappearingAnimationProgress !== 1.0 && greeterWrapper.showProgress !== 1.0
150+ enabled: disappearingAnimationProgress === 0.0 && greeterWrapper.showProgress === 0.0 && edgeDemo.dashEnabled
153151
154152 anchors {
155153 fill: parent
@@ -159,18 +157,14 @@ FocusScope {
159157 contentScale: 1.0 - 0.2 * disappearingAnimationProgress
160158 opacity: 1.0 - disappearingAnimationProgress
161159 property real disappearingAnimationProgress: {
162− if (greeter.shown) {
163− return greeter.showProgress;
160+ if (stages.overlayMode) {
161+ return 0;
164162 } else {
165− if (stages.overlayMode) {
166− return 0;
167− }
168163 return stages.showProgress
169164 }
170165 }
171166
172− // FIXME: only necessary because stages.showProgress and
173− // greeterRevealer.animatedProgress are not animated
167+ // FIXME: only necessary because stages.showProgress is not animated
174168 Behavior on disappearingAnimationProgress { SmoothedAnimation { velocity: 5 }}
175169 }
176170 }
@@ -312,7 +306,7 @@ FocusScope {
312306
313307 readonly property int backgroundTopMargin: -panel.panelHeight
314308
315− hides: [launcher, panel.indicators, hud]
309+ hides: [launcher, panel.indicators]
316310 shown: false
317311 enabled: true
318312 showAnimation: StandardAnimation { property: "opacity"; to: 1 }
@@ -362,59 +356,73 @@ FocusScope {
362356 }
363357 }
364358
365− Greeter {
366− id: greeter
367− objectName: "greeter"
368−
369− available: true
370− hides: [launcher, panel.indicators, hud]
371− shown: true
372−
373− defaultBackground: shell.background
359+ Rectangle {
360+ anchors.fill: parent
361+ color: "black"
362+ opacity: greeterWrapper.showProgress * 0.8
363+ }
374364
365+ Item {
366+ // Just a tiny wrapper to adjust greeter's x without messing with its own dragging
367+ id: greeterWrapper
368+ x: launcher.progress
375369 y: panel.panelHeight
376370 width: parent.width
377371 height: parent.height - panel.panelHeight
378372
379− dragHandleWidth: shell.edgeSize
373+ Behavior on x {SmoothedAnimation{velocity: 600}}
380374
381− onShownChanged: {
382− if (shown) {
383− lockscreen.reset();
384− // If there is only one user, we start authenticating with that one here.
385− // If there are more users, the Greeter will handle that
386− if (LightDM.Users.count == 1) {
387− LightDM.Greeter.authenticate(LightDM.Users.data(0, LightDM.UserRoles.NameRole));
375+ readonly property real showProgress: MathUtils.clamp((1 - x/width) + greeter.showProgress - 1, 0, 1)
376+
377+ Greeter {
378+ id: greeter
379+ objectName: "greeter"
380+
381+ available: true
382+ hides: [launcher, panel.indicators]
383+ shown: true
384+
385+ defaultBackground: shell.background
386+
387+ width: parent.width
388+ height: parent.height
389+
390+ dragHandleWidth: shell.edgeSize
391+
392+ onShownChanged: {
393+ if (shown) {
394+ lockscreen.reset();
395+ // If there is only one user, we start authenticating with that one here.
396+ // If there are more users, the Greeter will handle that
397+ if (LightDM.Users.count == 1) {
398+ LightDM.Greeter.authenticate(LightDM.Users.data(0, LightDM.UserRoles.NameRole));
399+ }
400+ greeter.forceActiveFocus();
388401 }
389− greeter.forceActiveFocus();
390402 }
391− }
392403
393− onUnlocked: greeter.hide()
394− onSelected: {
395− // Update launcher items for new user
396− var user = LightDM.Users.data(uid, LightDM.UserRoles.NameRole);
397− AccountsService.user = user;
398− LauncherModel.setUser(user);
399− }
400−
401− onLeftTeaserPressedChanged: {
402− if (leftTeaserPressed) {
403− launcher.tease();
404+ onUnlocked: greeter.hide()
405+ onSelected: {
406+ // Update launcher items for new user
407+ var user = LightDM.Users.data(uid, LightDM.UserRoles.NameRole);
408+ AccountsService.user = user;
409+ LauncherModel.setUser(user);
404410 }
405− }
406411
407− Binding {
408− target: ApplicationManager
409− property: "suspended"
410− value: greeter.shown && greeter.showProgress == 1
412+ onTease: launcher.tease()
413+
414+ Binding {
415+ target: ApplicationManager
416+ property: "suspended"
417+ value: greeter.shown && greeterWrapper.showProgress == 1
418+ }
411419 }
412420 }
413421
414422 InputFilterArea {
415423 anchors.fill: parent
416424 blockInput: ApplicationManager.focusedApplicationId.length === 0 || greeter.shown || lockscreen.shown || launcher.shown
417− || panel.indicators.shown || hud.shown
425+ || panel.indicators.shown
418426 }
419427
420428 Connections {
@@ -478,47 +486,6 @@ FocusScope {
478486 }
479487 }
480488
481− Hud {
482− id: hud
483−
484− width: parent.width > units.gu(60) ? units.gu(40) : parent.width
485− height: parent.height
486−
487− available: !greeter.shown && !panel.indicators.shown && !lockscreen.shown && edgeDemo.dashEnabled
488− shown: false
489− showAnimation: StandardAnimation { property: "y"; duration: hud.showableAnimationDuration; to: 0; easing.type: Easing.Linear }
490− hideAnimation: StandardAnimation { property: "y"; duration: hud.showableAnimationDuration; to: hudRevealer.closedValue; easing.type: Easing.Linear }
491−
492− Connections {
493− target: ApplicationManager
494− onFocusedApplicationIdChanged: hud.hide()
495− }
496− }
497−
498− Revealer {
499− id: hudRevealer
500−
501− enabled: hud.shown
502− width: hud.width
503− anchors.left: hud.left
504− height: parent.height
505− target: hud.revealerTarget
506− closedValue: height
507− openedValue: 0
508− direction: Qt.RightToLeft
509− orientation: Qt.Vertical
510− handleSize: hud.handleHeight
511− onCloseClicked: target.hide()
512− }
513−
514− Bottombar {
515− id: bottombar
516− theHud: hud
517− anchors.fill: parent
518− enabled: hud.available
519− applicationIsOnForeground: ApplicationManager.focusedApplicationId
520− }
521−
522489 InputFilterArea {
523490 blockInput: launcher.shown
524491 anchors {
@@ -538,7 +505,7 @@ FocusScope {
538505 anchors.bottom: parent.bottom
539506 width: parent.width
540507 dragAreaWidth: shell.edgeSize
541− available: (!greeter.shown || greeter.narrowMode) && edgeDemo.launcherEnabled
508+ available: edgeDemo.launcherEnabled
542509
543510 onShowDashHome: {
544511 if (edgeDemo.running)
@@ -553,6 +520,10 @@ FocusScope {
553520 launcher.hide();
554521 }
555522 }
523+ if (greeter.shown) {
524+ greeter.hideRight();
525+ launcher.hide();
526+ }
556527 }
557528 onDashSwipeChanged: if (dashSwipe && stages.shown) dash.setCurrentScope("clickscope", false, true)
558529 onLauncherApplicationSelected: {
@@ -562,12 +533,28 @@ FocusScope {
562533 onShownChanged: {
563534 if (shown) {
564535 panel.indicators.hide()
565− hud.hide()
566− bottombar.hide()
567536 }
568537 }
569538 }
570539
540+ Rectangle {
541+ id: modalNotificationBackground
542+
543+ visible: notifications.useModal && !greeter.shown && (notifications.state == "narrow")
544+ color: "#000000"
545+ anchors.fill: parent
546+ opacity: 0.5
547+
548+ MouseArea {
549+ anchors.fill: parent
550+ }
551+
552+ InputFilterArea {
553+ anchors.fill: parent
554+ blockInput: modalNotificationBackground.visible
555+ }
556+ }
557+
571558 Notifications {
572559 id: notifications
573560
qml/graphics/dropshadow_left@20.pngnew file

Binary file not shown.

qml/Hud/graphics/dropshadow_right@20.png → qml/graphics/dropshadow_right@20.pngrenamed

Binary file not shown.

run → run.shrenamed+1−1
@@ -78,6 +78,6 @@ else
7878 echo "Unity8 is already running, please stop it first"
7979 exit 1
8080 fi
81− /sbin/initctl start unity8 BINARY="`readlink -f $QML_PHONE_SHELL_PATH` $QML_PHONE_SHELL_ARGS $@"
81+ /sbin/initctl start unity8 BINARY="`readlink -f $QML_PHONE_SHELL_PATH` $QML_PHONE_SHELL_ARGS $@" QML2_IMPORT_PATH=$QML2_IMPORT_PATH LD_LIBRARY_PATH=$LD_LIBRARY_PATH
8282 tailf -n 0 ~/.cache/upstart/unity8.log
8383fi
run_on_device → run_on_device.shrenamed+2−2
@@ -88,7 +88,7 @@ sync_code() {
8888}
8989
9090build() {
91− exec_with_ssh PATH=/usr/lib/ccache:$PATH "cd $CODE_DIR/ && PATH=/usr/lib/ccache:$PATH ./build"
91+ exec_with_ssh PATH=/usr/lib/ccache:$PATH "cd $CODE_DIR/ && PATH=/usr/lib/ccache:$PATH ./build.sh"
9292}
9393
9494run() {
@@ -105,7 +105,7 @@ run() {
105105
106106 exec_with_ssh "stop unity8"
107107 exec_with_ssh "start maliit-server"
108− exec_with_ssh "cd $CODE_DIR/ && ./run $ARGS -- $RUN_OPTIONS"
108+ exec_with_ssh "cd $CODE_DIR/ && ./run.sh $ARGS -- $RUN_OPTIONS"
109109 exec_with_ssh "stop maliit-server"
110110 exec_with_ssh "start unity8"
111111}
tests/autopilot/unity8/shell/__init__.py+50−1
@@ -21,8 +21,9 @@
2121
2222from time import sleep
2323from functools import wraps
24−import logging
24+from gi.repository import Notify
2525
26+import logging
2627
2728logger = logging.getLogger(__name__)
2829
@@ -48,6 +49,7 @@ def disable_qml_mocking(fn):
4849 return fn(*args, **kwargs)
4950 return wrapper
5051
52+
5153class DragMixin(object):
5254 def _drag(self, x1, y1, x2, y2):
5355 # XXX This ugly code is here just temporarily, waiting for drag
@@ -69,3 +71,50 @@ class DragMixin(object):
6971 self.touch._finger_move(int(x2), int(y2))
7072 except AttributeError:
7173 self.touch._device.finger_move(int(x2), int(y2))
74+
75+
76+def create_ephemeral_notification(
77+ summary='',
78+ body='',
79+ icon=None,
80+ hints=[],
81+ urgency='NORMAL'
82+):
83+ """Create an ephemeral (non-interactive) notification
84+
85+ :param summary: Summary text for the notification
86+ :param body: Body text to display in the notification
87+ :param icon: Path string to the icon to use
88+ :param hint_strings: List of tuples containing the 'name' and value
89+ for setting the hint strings for the notification
90+ :param urgency: Urgency string for the noticiation, either: 'LOW',
91+ 'NORMAL', 'CRITICAL'
92+ """
93+ Notify.init('Unity8')
94+
95+ logger.info(
96+ "Creating ephemeral: summary(%s), body(%s), urgency(%r) "
97+ "and Icon(%s)",
98+ summary,
99+ body,
100+ urgency,
101+ icon
102+ )
103+
104+ notification = Notify.Notification.new(summary, body, icon)
105+
106+ for hint in hints:
107+ key, value = hint
108+ notification.set_hint_string(key, value)
109+ logger.info("Adding hint to notification: (%s, %s)", key, value)
110+ notification.set_urgency(_get_urgency(urgency))
111+
112+ return notification
113+
114+
115+def _get_urgency(urgency):
116+ """Translates urgency string to enum."""
117+ _urgency_enums = {'LOW': Notify.Urgency.LOW,
118+ 'NORMAL': Notify.Urgency.NORMAL,
119+ 'CRITICAL': Notify.Urgency.CRITICAL}
120+ return _urgency_enums.get(urgency.upper())
tests/autopilot/unity8/shell/tests/test_emulators.py+1−1
@@ -196,7 +196,7 @@ class DashAppsEmulatorTestCase(DashBaseTestCase):
196196 category)
197197 grid = category_element.select_single('CardFilterGrid')
198198 filtergrid = grid.select_single('FilterGrid')
199− if (grid.filter):
199+ if (grid.filtered):
200200 return filtergrid.collapsedRowCount * filtergrid.columns
201201 else:
202202 return filtergrid.uncollapsedRowCount * filtergrid.columns
tests/autopilot/unity8/shell/tests/test_notifications.py+97−57
@@ -21,6 +21,7 @@
2121
2222from __future__ import absolute_import
2323
24+from unity8 import shell
2425from unity8.process_helpers import unlock_unity
2526from unity8.shell.tests import UnityTestCase, _get_device_emulation_scenarios
2627
@@ -64,7 +65,8 @@ class NotificationsBase(UnityTestCase):
6465 if os.path.abspath(__file__).startswith('/usr/'):
6566 return '/usr/share/unity8/graphics/' + icon_name
6667 else:
67− return os.path.dirname(__file__) + "/../../../../../qml/graphics/" + icon_name
68+ return os.path.dirname(__file__) + (
69+ "/../../../../../qml/graphics/" + icon_name)
6870
6971 def _get_notifications_list(self):
7072 return self.main_window.select_single(
@@ -209,6 +211,89 @@ class InteractiveNotificationBase(NotificationsBase):
209211 self.touch.tap_object(notification.select_single(objectName="button4"))
210212 self.assert_notification_action_id_was_called("action_decline_4")
211213
214+ def test_modal_sd_without_greeter (self):
215+ """A snap-decision on a phone should block input to shell beneath it when there's no greeter."""
216+ unity_proxy = self.launch_unity()
217+ unlock_unity(unity_proxy)
218+
219+ summary = "Incoming file"
220+ body = "Frank would like to send you the file: essay.pdf"
221+ icon_path = "sync-idle"
222+ hints = [
223+ ("x-canonical-snap-decisions", "true"),
224+ ("x-canonical-non-shaped-icon", "true"),
225+ ]
226+
227+ actions = [
228+ ('action_accept', 'Accept'),
229+ ('action_decline_1', 'Decline'),
230+ ]
231+
232+ self._create_interactive_notification(
233+ summary,
234+ body,
235+ icon_path,
236+ "NORMAL",
237+ actions,
238+ hints
239+ )
240+
241+ # verify that we cannot reveal the launcher (no longer interact with the shell)
242+ time.sleep(1)
243+ self.main_window.show_dash_swiping()
244+ launcher = self.main_window.get_launcher()
245+ self.assertThat(launcher.shown, Eventually(Equals(False)))
246+
247+ # verify and interact with the triggered snap-decision notification
248+ notify_list = self._get_notifications_list()
249+ get_notification = lambda: notify_list.wait_select_single(
250+ 'Notification', objectName='notification1')
251+ notification = get_notification()
252+ self._assert_notification(notification, summary, body, True, False, 1.0)
253+ self.touch.tap_object(notification.select_single(objectName="button0"))
254+ self.assert_notification_action_id_was_called("action_accept")
255+
256+ def test_modal_sd_with_greeter (self):
257+ """A snap-decision on a phone should not block input to the greeter beneath it."""
258+ unity_proxy = self.launch_unity()
259+
260+ summary = "Incoming file"
261+ body = "Frank would like to send you the file: essay.pdf"
262+ icon_path = "sync-idle"
263+ hints = [
264+ ("x-canonical-snap-decisions", "true"),
265+ ("x-canonical-non-shaped-icon", "true"),
266+ ]
267+
268+ actions = [
269+ ('action_accept', 'Accept'),
270+ ('action_decline_1', 'Decline'),
271+ ]
272+
273+ self._create_interactive_notification(
274+ summary,
275+ body,
276+ icon_path,
277+ "NORMAL",
278+ actions,
279+ hints
280+ )
281+
282+ # verify that we can swipe away the greeter (interact with the "shell")
283+ time.sleep(1)
284+ self.main_window.show_dash_swiping()
285+ greeter = self.main_window.get_greeter()
286+ self.assertThat(greeter.shown, Eventually(Equals(False)))
287+
288+ # verify and interact with the triggered snap-decision notification
289+ notify_list = self._get_notifications_list()
290+ get_notification = lambda: notify_list.wait_select_single(
291+ 'Notification', objectName='notification1')
292+ notification = get_notification()
293+ self._assert_notification(notification, summary, body, True, False, 1.0)
294+ self.touch.tap_object(notification.select_single(objectName="button0"))
295+ self.assert_notification_action_id_was_called("action_accept")
296+
212297 def _create_interactive_notification(
213298 self,
214299 summary="",
@@ -354,7 +439,7 @@ class EphemeralNotificationsTests(NotificationsBase):
354439 )
355440 ]
356441
357− notification = self._create_ephemeral_notification(
442+ notification = shell.create_ephemeral_notification(
358443 summary,
359444 body,
360445 icon_path,
@@ -391,7 +476,7 @@ class EphemeralNotificationsTests(NotificationsBase):
391476 )
392477 ]
393478
394− notification = self._create_ephemeral_notification(
479+ notification = shell.create_ephemeral_notification(
395480 summary,
396481 None,
397482 None,
@@ -433,7 +518,7 @@ class EphemeralNotificationsTests(NotificationsBase):
433518 body_critical = 'Dude, this is so urgent you have no idea :)'
434519 icon_path_critical = self._get_icon_path('avatars/anna_olsson.png')
435520
436− notification_normal = self._create_ephemeral_notification(
521+ notification_normal = shell.create_ephemeral_notification(
437522 summary_normal,
438523 body_normal,
439524 icon_path_normal,
@@ -441,7 +526,7 @@ class EphemeralNotificationsTests(NotificationsBase):
441526 )
442527 notification_normal.show()
443528
444− notification_low = self._create_ephemeral_notification(
529+ notification_low = shell.create_ephemeral_notification(
445530 summary_low,
446531 body_low,
447532 icon_path_low,
@@ -449,7 +534,7 @@ class EphemeralNotificationsTests(NotificationsBase):
449534 )
450535 notification_low.show()
451536
452− notification_critical = self._create_ephemeral_notification(
537+ notification_critical = shell.create_ephemeral_notification(
453538 summary_critical,
454539 body_critical,
455540 icon_path_critical,
@@ -510,7 +595,7 @@ class EphemeralNotificationsTests(NotificationsBase):
510595 summary = 'Summary-Body'
511596 body = 'This is a superfluous notification'
512597
513− notification = self._create_ephemeral_notification(summary, body)
598+ notification = shell.create_ephemeral_notification(summary, body)
514599 notification.show()
515600
516601 notification = notify_list.wait_select_single(
@@ -534,7 +619,7 @@ class EphemeralNotificationsTests(NotificationsBase):
534619
535620 summary = 'Summary-Only'
536621
537− notification = self._create_ephemeral_notification(summary)
622+ notification = shell.create_ephemeral_notification(summary)
538623 notification.show()
539624
540625 notification = notify_list.wait_select_single(
@@ -554,7 +639,7 @@ class EphemeralNotificationsTests(NotificationsBase):
554639 body = 'This is the original content of this notification-bubble.'
555640 icon_path = self._get_icon_path('avatars/funky.png')
556641
557− notification = self._create_ephemeral_notification(
642+ notification = shell.create_ephemeral_notification(
558643 summary,
559644 body,
560645 icon_path
@@ -594,7 +679,7 @@ class EphemeralNotificationsTests(NotificationsBase):
594679 icon_path = self._get_icon_path('avatars/anna_olsson.png')
595680 hint_icon = self._get_icon_path('applicationIcons/phone-app.png')
596681
597− notification = self._create_ephemeral_notification(
682+ notification = shell.create_ephemeral_notification(
598683 summary,
599684 body,
600685 icon_path
@@ -638,7 +723,7 @@ class EphemeralNotificationsTests(NotificationsBase):
638723 body = 'Hey Bro Coly!'
639724 icon_path = self._get_icon_path('avatars/amanda.png')
640725 body_sum = body
641− notification = self._create_ephemeral_notification(
726+ notification = shell.create_ephemeral_notification(
642727 summary,
643728 body,
644729 icon_path,
@@ -674,7 +759,7 @@ class EphemeralNotificationsTests(NotificationsBase):
674759 for new_body in bodies:
675760 body = new_body
676761 body_sum += '\n' + body
677− notification = self._create_ephemeral_notification(
762+ notification = shell.create_ephemeral_notification(
678763 summary,
679764 body,
680765 icon_path,
@@ -695,48 +780,3 @@ class EphemeralNotificationsTests(NotificationsBase):
695780 False,
696781 1.0
697782 )
698−
699− def _create_ephemeral_notification(
700− self,
701− summary="",
702− body="",
703− icon=None,
704− hints=[],
705− urgency="NORMAL"
706− ):
707− """Create an ephemeral (non-interactive) notification
708−
709− :param summary: Summary text for the notification
710− :param body: Body text to display in the notification
711− :param icon: Path string to the icon to use
712− :param hint_strings: List of tuples containing the 'name' and value
713− for setting the hint strings for the notification
714− :param urgency: Urgency string for the noticiation, either: 'LOW',
715− 'NORMAL', 'CRITICAL'
716−
717− """
718− logger.info(
719− "Creating ephemeral: summary(%s), body(%s), urgency(%r) "
720− "and Icon(%s)",
721− summary,
722− body,
723− urgency,
724− icon
725− )
726−
727− n = Notify.Notification.new(summary, body, icon)
728−
729− for hint in hints:
730− key, value = hint
731− n.set_hint_string(key, value)
732− logger.info("Adding hint to notification: (%s, %s)", key, value)
733− n.set_urgency(self._get_urgency(urgency))
734−
735− return n
736−
737− def _get_urgency(self, urgency):
738− """Translates urgency string to enum."""
739− _urgency_enums = {'LOW': Notify.Urgency.LOW,
740− 'NORMAL': Notify.Urgency.NORMAL,
741− 'CRITICAL': Notify.Urgency.CRITICAL}
742− return _urgency_enums.get(urgency.upper())
tests/autopilot/unity8/shell/tests/test_upstart.py+2−2
@@ -82,7 +82,7 @@ class UpstartIntegrationTests(UnityTestCase):
8282 ))
8383
8484 def test_no_sigstop(self):
85− self.patch_environment("UPSTART_JOB", "foo")
85+ self.patch_environment("UNITY_MIR_EMITS_SIGSTOP", "")
8686 self._launch_unity()
8787 self._set_proxy()
8888
@@ -91,7 +91,7 @@ class UpstartIntegrationTests(UnityTestCase):
9191 logger.debug("Unity loaded and ready.")
9292
9393 def test_expect_sigstop(self):
94− self.patch_environment("UPSTART_JOB", "unity8")
94+ self.patch_environment("UNITY_MIR_EMITS_SIGSTOP", "1")
9595 self._launch_unity()
9696 self.assertThat(lambda: os.WIFSTOPPED(self._get_status()), Eventually(Equals(True)), "Unity8 should raise SIGSTOP when ready")
9797
tests/plugins/DashViews/CMakeLists.txt+23−35
@@ -25,46 +25,41 @@ remove_definitions(-DQT_NO_KEYWORDS)
2525add_definitions(-DDASHVIEWSTEST_FOLDER="${CMAKE_CURRENT_SOURCE_DIR}")
2626add_definitions(-DBUILT_PLUGINS_DIR="${CMAKE_BINARY_DIR}/plugins")
2727
28−add_executable(listviewwithpageheadertestExec listviewwithpageheadertest.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../../plugins/DashViews/listviewwithpageheader.cpp)
29−qt5_use_modules(listviewwithpageheadertestExec Test Core Qml)
30−target_link_libraries(listviewwithpageheadertestExec ${Qt5Gui_LIBRARIES} ${Qt5Quick_LIBRARIES})
31−add_custom_target(testlistviewwithpageheader ${CMAKE_CURRENT_BINARY_DIR}/listviewwithpageheadertestExec -o ${CMAKE_BINARY_DIR}/testlistviewwithpageheader.xml,xunitxml -o -,txt)
28+macro(add_lvwph_test FILENAME TESTNAME)
29+ add_executable(${TESTNAME}TestExec
30+ ${FILENAME}test.cpp
31+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../plugins/DashViews/listviewwithpageheader.cpp)
32+ qt5_use_modules(${TESTNAME}TestExec Test Core Qml)
33+ target_link_libraries(${TESTNAME}TestExec ${Qt5Gui_LIBRARIES} ${Qt5Quick_LIBRARIES})
3234
33−add_executable(listviewwithpageheadertestsectionExec listviewwithpageheadertestsection.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../../plugins/DashViews/listviewwithpageheader.cpp)
34−qt5_use_modules(listviewwithpageheadertestsectionExec Test Core Qml)
35−target_link_libraries(listviewwithpageheadertestsectionExec ${Qt5Gui_LIBRARIES} ${Qt5Quick_LIBRARIES})
36−add_custom_target(testlistviewwithpageheadersection ${CMAKE_CURRENT_BINARY_DIR}/listviewwithpageheadertestsectionExec -o ${CMAKE_BINARY_DIR}/testlistviewwithpageheadersection.xml,xunitxml -o -,txt)
35+ add_binary_qml_test(${TESTNAME} "" "DashViews-qml")
36+endmacro()
3737
38−add_executable(listviewwithpageheadertestsectionexternalmodelExec listviewwithpageheadertestsectionexternalmodel.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../../plugins/DashViews/listviewwithpageheader.cpp)
39−qt5_use_modules(listviewwithpageheadertestsectionexternalmodelExec Test Core Qml)
40−target_link_libraries(listviewwithpageheadertestsectionexternalmodelExec ${Qt5Gui_LIBRARIES} ${Qt5Quick_LIBRARIES})
41−add_custom_target(testlistviewwithpageheadersectionexternalmodel ${CMAKE_CURRENT_BINARY_DIR}/listviewwithpageheadertestsectionexternalmodelExec -o ${CMAKE_BINARY_DIR}/testlistviewwithpageheadersectionexternalmodel.xml,xunitxml -o -,txt)
38+add_lvwph_test(listviewwithpageheader ListViewWithPageHeader)
39+add_lvwph_test(listviewwithpageheadersection ListViewWithPageHeaderSection)
40+add_lvwph_test(listviewwithpageheadersectionexternalmodel ListViewWithPageHeaderSectionExternalModel)
4241
4342macro(add_dashview_try_test FILENAME TESTNAME)
44− add_executable(${FILENAME}testExec
43+ add_executable(${TESTNAME}TestExec
4544 ${FILENAME}test.cpp
4645 ${CMAKE_CURRENT_SOURCE_DIR}/../../../plugins/DashViews/${FILENAME}.cpp
4746 ${CMAKE_CURRENT_SOURCE_DIR}/../../../plugins/DashViews/abstractdashview.cpp
4847 )
49− qt5_use_modules(${FILENAME}testExec Test Core Qml)
50− target_link_libraries(${FILENAME}testExec ${Qt5Gui_LIBRARIES} ${Qt5Quick_LIBRARIES})
51− add_custom_target(test${TESTNAME}
52− ${CMAKE_CURRENT_BINARY_DIR}/${FILENAME}testExec
53− -o ${CMAKE_BINARY_DIR}/test${TESTNAME}.xml,xunitxml
54− -o -,txt
55− DEPENDS ${FILENAME}testExec DashViews-qml
56− )
48+ qt5_use_modules(${TESTNAME}TestExec Test Core Qml)
49+ target_link_libraries(${TESTNAME}TestExec ${Qt5Gui_LIBRARIES} ${Qt5Quick_LIBRARIES})
5750
58− add_executable(${FILENAME}tryExec
51+ add_binary_qml_test(${TESTNAME} "" "DashViews-qml")
52+
53+ add_executable(${TESTNAME}tryExec
5954 ${FILENAME}try.cpp
6055 ${CMAKE_CURRENT_SOURCE_DIR}/../../../plugins/DashViews/${FILENAME}.cpp
6156 ${CMAKE_CURRENT_SOURCE_DIR}/../../../plugins/DashViews/abstractdashview.cpp
6257 )
63− qt5_use_modules(${FILENAME}tryExec Test Core Qml)
64− target_link_libraries(${FILENAME}tryExec ${Qt5Gui_LIBRARIES} ${Qt5Quick_LIBRARIES})
58+ qt5_use_modules(${TESTNAME}tryExec Test Core Qml)
59+ target_link_libraries(${TESTNAME}tryExec ${Qt5Gui_LIBRARIES} ${Qt5Quick_LIBRARIES})
6560 add_custom_target(try${TESTNAME}
66− ${CMAKE_CURRENT_BINARY_DIR}/${FILENAME}tryExec
67− DEPENDS ${FILENAME}tryExec DashViews-qml
61+ ${CMAKE_CURRENT_BINARY_DIR}/${TESTNAME}tryExec
62+ DEPENDS ${TESTNAME}tryExec DashViews-qml
6863 )
6964endmacro()
7065
@@ -72,13 +67,6 @@ add_dashview_try_test(verticaljournal VerticalJournal)
7267add_dashview_try_test(horizontaljournal HorizontalJournal)
7368add_dashview_try_test(organicgrid OrganicGrid)
7469
70+set(qmltest_DEFAULT_TARGETS qmluitests)
7571set(qmltest_DEFAULT_NO_ADD_TEST TRUE)
76−add_qml_test(. listviewwithpageheaderqml IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins)
77−
78−add_dependencies(qmluitests testlistviewwithpageheader)
79−add_dependencies(qmluitests testlistviewwithpageheadersection)
80−add_dependencies(qmluitests testlistviewwithpageheadersectionexternalmodel)
81−add_dependencies(qmluitests testlistviewwithpageheaderqml)
82−add_dependencies(qmluitests testVerticalJournal)
83−add_dependencies(qmluitests testHorizontalJournal)
84−add_dependencies(qmluitests testOrganicGrid)
72+add_qml_test(. ListViewWithPageHeaderQML IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins)
tests/plugins/DashViews/listviewwithpageheadertestsectionexternalmodel.cpp → tests/plugins/DashViews/listviewwithpageheadersectionexternalmodeltest.cpprenamed+1−5
@@ -24,11 +24,7 @@
2424#include <QtTestGui>
2525#pragma GCC diagnostic push
2626#pragma GCC diagnostic ignored "-pedantic"
27−#if QT_VERSION < QT_VERSION_CHECK(5, 1, 0)
28−#include <private/qquicklistmodel_p.h>
29−#else
3027#include <private/qqmllistmodel_p.h>
31−#endif
3228#include <private/qquickanimation_p.h>
3329#include <private/qquickitem_p.h>
3430#pragma GCC diagnostic pop
@@ -248,4 +244,4 @@ private:
248244
249245QTEST_MAIN(ListViewWithPageHeaderTestSection)
250246
251−#include "listviewwithpageheadertestsectionexternalmodel.moc"
247+#include "listviewwithpageheadersectionexternalmodeltest.moc"
tests/plugins/DashViews/listviewwithpageheadertestsection.cpp → tests/plugins/DashViews/listviewwithpageheadersectiontest.cpprenamed+1−13
@@ -23,11 +23,7 @@
2323#include <QtTestGui>
2424#pragma GCC diagnostic push
2525#pragma GCC diagnostic ignored "-pedantic"
26−#if QT_VERSION < QT_VERSION_CHECK(5, 1, 0)
27−#include <private/qquicklistmodel_p.h>
28−#else
2926#include <private/qqmllistmodel_p.h>
30−#endif
3127#include <private/qquickanimation_p.h>
3228#include <private/qquickitem_p.h>
3329#pragma GCC diagnostic pop
@@ -135,11 +131,7 @@ private Q_SLOTS:
135131 view->engine()->addImportPath(BUILT_PLUGINS_DIR);
136132 view->setSource(QUrl::fromLocalFile(DASHVIEWSTEST_FOLDER "/listviewwithpageheadertestsection.qml"));
137133 lvwph = dynamic_cast<ListViewWithPageHeader*>(view->rootObject()->findChild<QQuickFlickable*>());
138−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
139− model = view->rootObject()->findChild<QQuickListModel*>();
140−#else
141134 model = view->rootObject()->findChild<QQmlListModel*>();
142−#endif
143135 otherDelegate = view->rootObject()->findChild<QQmlComponent*>();
144136 QVERIFY(lvwph);
145137 QVERIFY(model);
@@ -2156,14 +2148,10 @@ private Q_SLOTS:
21562148private:
21572149 QQuickView *view;
21582150 ListViewWithPageHeader *lvwph;
2159−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
2160− QQuickListModel *model;
2161−#else
21622151 QQmlListModel *model;
2163−#endif
21642152 QQmlComponent *otherDelegate;
21652153};
21662154
21672155QTEST_MAIN(ListViewWithPageHeaderTestSection)
21682156
2169−#include "listviewwithpageheadertestsection.moc"
2157+#include "listviewwithpageheadersectiontest.moc"
tests/plugins/DashViews/listviewwithpageheadertest.cpp−15
@@ -23,11 +23,7 @@
2323#include <QtTestGui>
2424#pragma GCC diagnostic push
2525#pragma GCC diagnostic ignored "-pedantic"
26−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
27−#include <private/qquicklistmodel_p.h>
28−#else
2926#include <private/qqmllistmodel_p.h>
30−#endif
3127#include <private/qquickanimation_p.h>
3228#include <private/qquickitem_p.h>
3329#pragma GCC diagnostic pop
@@ -124,11 +120,7 @@ private Q_SLOTS:
124120 view->engine()->addImportPath(BUILT_PLUGINS_DIR);
125121 view->setSource(QUrl::fromLocalFile(DASHVIEWSTEST_FOLDER "/listviewwithpageheadertest.qml"));
126122 lvwph = dynamic_cast<ListViewWithPageHeader*>(view->rootObject()->findChild<QQuickFlickable*>());
127−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
128− model = view->rootObject()->findChild<QQuickListModel*>();
129−#else
130123 model = view->rootObject()->findChild<QQmlListModel*>();
131−#endif
132124 otherDelegate = view->rootObject()->findChild<QQmlComponent*>();
133125 QVERIFY(lvwph);
134126 QVERIFY(model);
@@ -1747,9 +1739,6 @@ private Q_SLOTS:
17471739
17481740 void testMaximizeVisibleAreaMoveUpAndShowHeader()
17491741 {
1750−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
1751− QSKIP("This test is extremely unstable in 5.0.x");
1752−#endif
17531742 model->setProperty(0, "size", 800);
17541743 verifyItem(0, 50., 800., false);
17551744
@@ -1913,11 +1902,7 @@ private Q_SLOTS:
19131902private:
19141903 QQuickView *view;
19151904 ListViewWithPageHeader *lvwph;
1916−#if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
1917− QQuickListModel *model;
1918−#else
19191905 QQmlListModel *model;
1920−#endif
19211906 QQmlComponent *otherDelegate;
19221907};
19231908
tests/plugins/DashViews/tst_listviewwithpageheaderqml.qml → tests/plugins/DashViews/tst_ListViewWithPageHeaderQML.qmlrenamed

The content is the same.

tests/plugins/Ubuntu/Gestures/CMakeLists.txt+1
@@ -20,6 +20,7 @@ macro(add_gesture_ui_test CLASSNAME)
2020 target_link_libraries(${CLASSNAME}TestExec UbuntuGestureQml)
2121
2222 add_binary_qml_test(${CLASSNAME} ${CMAKE_BINARY_DIR}/plugins/Ubuntu/Gestures UbuntuGesturesTestQmlFiles)
23+ add_manual_qml_test(. ${CLASSNAME} IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins)
2324endmacro(add_gesture_ui_test)
2425
2526macro(add_gesture_test CLASSNAME)
tests/plugins/Unity/Launcher/CMakeLists.txt+3−3
@@ -15,9 +15,9 @@ add_definitions(-DSRCDIR="${CMAKE_CURRENT_SOURCE_DIR}")
1515add_definitions(-DLAUNCHER_TESTING)
1616
1717### LauncherBackendTest
18−set(testBackendCommand ${CMAKE_CURRENT_BINARY_DIR}/launcherbackendtestExec
19− -o ${CMAKE_BINARY_DIR}/launcherbackendtest.xml,xunitxml
20− -o -,txt)
18+set(testBackendCommand dbus-test-runner --task ${CMAKE_CURRENT_BINARY_DIR}/launcherbackendtestExec
19+ --parameter -o --parameter ${CMAKE_BINARY_DIR}/launcherbackendtest.xml,xunitxml
20+ --parameter -o --parameter -,txt)
2121add_test(NAME launcherbackendtest COMMAND ${testBackendCommand})
2222add_custom_target(launcherbackendtest ${testBackendCommand})
2323add_executable(launcherbackendtestExec
tests/plugins/Unity/Launcher/launcherbackendtest.cpp+167
@@ -20,6 +20,10 @@
2020#include "launcherbackend.h"
2121
2222#include <QtTest>
23+#include <QDBusConnection>
24+#include <QDBusMessage>
25+#include <QDBusVariant>
26+
2327
2428class LauncherBackendTest : public QObject
2529{
@@ -66,6 +70,169 @@ private Q_SLOTS:
6670
6771 QCOMPARE(backend.icon(appId), expectedIcon);
6872 }
73+
74+ void testGetItem_data() {
75+ QTest::addColumn<QString>("appId");
76+ QTest::addColumn<bool>("exists");
77+
78+ QTest::newRow("Exists") << "rel-icon" << true;
79+ QTest::newRow("Doesn't Exist") << "does-not-exist" << false;
80+ }
81+
82+ void testGetItem() {
83+ QFETCH(QString, appId);
84+ QFETCH(bool, exists);
85+
86+ LauncherBackend backend;
87+ auto item = backend.getItem(appId);
88+
89+ if (exists) {
90+ QVERIFY(item != nullptr);
91+ } else {
92+ QVERIFY(item == nullptr);
93+ }
94+ }
95+
96+ void testCount_data() {
97+ QTest::addColumn<QString>("appId");
98+ QTest::addColumn<bool>("setCount");
99+ QTest::addColumn<int>("inCount");
100+ QTest::addColumn<bool>("countVisible");
101+ QTest::addColumn<int>("expectedCount");
102+
103+ /* Get baseline data on things working */
104+ QTest::newRow("Baseline") << "rel-icon" << false << 0 << false << -1;
105+
106+ /* Valid count, but not visible */
107+ QTest::newRow("Not visible") << "rel-icon" << true << 42 << false << -1;
108+
109+ /* Turn it on */
110+ QTest::newRow("Visible Count") << "rel-icon" << true << 42 << true << 42;
111+
112+ /* Invalide app to load */
113+ QTest::newRow("Invalid App ID") << "this-app-doesnt-exist" << true << 42 << true << -1;
114+ }
115+
116+ void testCount() {
117+ QFETCH(QString, appId);
118+ QFETCH(bool, setCount);
119+ QFETCH(int, inCount);
120+ QFETCH(bool, countVisible);
121+ QFETCH(int, expectedCount);
122+
123+ LauncherBackend backend;
124+
125+ if (setCount)
126+ backend.setCount(appId, inCount);
127+ backend.setCountVisible(appId, countVisible);
128+
129+ QCOMPARE(backend.count(appId), expectedCount);
130+ }
131+
132+ void testDbusName_data() {
133+ QTest::addColumn<QString>("decoded");
134+ QTest::addColumn<QString>("encoded");
135+
136+ /* Passthrough test */
137+ QTest::newRow("Passthrough") << "fine" << "fine";
138+
139+ /* Number as first characeter */
140+ QTest::newRow("Number first") << "31337" << "_331337";
141+
142+ /* Underscore test */
143+ QTest::newRow("Underscore test") << "this_is_c_style_namespacing" << "this_5Fis_5Fc_5Fstyle_5Fnamespacing";
144+
145+ /* Hyphen test */
146+ QTest::newRow("Hyphen test") << "typical-application" << "typical_2Dapplication";
147+
148+ /* Japanese test */
149+ QTest::newRow("日本語 test") << "日本語" << "_E6_97_A5_E6_9C_AC_E8_AA_9E";
150+ }
151+
152+ void testDbusName() {
153+ QFETCH(QString, decoded);
154+ QFETCH(QString, encoded);
155+
156+ QString encodeOut = LauncherBackend::encodeAppId(decoded);
157+ QCOMPARE(encoded, encodeOut);
158+
159+ QString decodeOut = LauncherBackend::decodeAppId(encoded);
160+ QCOMPARE(decoded, decodeOut);
161+ }
162+
163+ void testDbusIface_data() {
164+ QTest::addColumn<QString>("appId");
165+ QTest::addColumn<bool>("setCount");
166+ QTest::addColumn<int>("inCount");
167+ QTest::addColumn<bool>("countVisible");
168+ QTest::addColumn<int>("expectedCount");
169+
170+ /* Get baseline data on things working */
171+ QTest::newRow("Baseline") << "rel-icon" << false << 0 << false << -1;
172+
173+ /* Turn it on */
174+ QTest::newRow("Visible Count") << "rel-icon" << true << 42 << true << 42;
175+
176+ /* Invalide app to load */
177+ QTest::newRow("Invalid App ID") << "this-app-doesnt-exist" << true << 42 << true << -1;
178+ }
179+
180+ void testDbusIface() {
181+ QFETCH(QString, appId);
182+ QFETCH(bool, setCount);
183+ QFETCH(int, inCount);
184+ QFETCH(bool, countVisible);
185+ QFETCH(int, expectedCount);
186+
187+ QDBusConnection con = QDBusConnection::sessionBus();
188+ QDBusMessage message;
189+ QDBusMessage reply;
190+
191+ LauncherBackend backend;
192+
193+ if (setCount) {
194+ message = QDBusMessage::createMethodCall("com.canonical.Unity.Launcher",
195+ "/com/canonical/Unity/Launcher/" + LauncherBackend::encodeAppId(appId),
196+ "org.freedesktop.DBus.Properties",
197+ "Set");
198+ QVariantList cargs;
199+ cargs.append(QString("com.canonical.Unity.Launcher.Item"));
200+ cargs.append(QString("count"));
201+ cargs.append(QVariant::fromValue(QDBusVariant(inCount)));
202+
203+ message.setArguments(cargs);
204+ reply = con.call(message);
205+ QCOMPARE(reply.type(), QDBusMessage::ReplyMessage);
206+ }
207+
208+ /* Set countVisible */
209+ message = QDBusMessage::createMethodCall("com.canonical.Unity.Launcher",
210+ "/com/canonical/Unity/Launcher/" + LauncherBackend::encodeAppId(appId),
211+ "org.freedesktop.DBus.Properties",
212+ "Set");
213+ QVariantList cvargs;
214+ cvargs.append(QString("com.canonical.Unity.Launcher.Item"));
215+ cvargs.append(QString("countVisible"));
216+ cvargs.append(QVariant::fromValue(QDBusVariant(countVisible)));
217+
218+ message.setArguments(cvargs);
219+ reply = con.call(message);
220+ QCOMPARE(reply.type(), QDBusMessage::ReplyMessage);
221+
222+ /* Get value */
223+ message = QDBusMessage::createMethodCall("com.canonical.Unity.Launcher",
224+ "/com/canonical/Unity/Launcher/" + LauncherBackend::encodeAppId(appId),
225+ "org.freedesktop.DBus.Properties",
226+ "Get");
227+ QVariantList getargs;
228+ getargs.append(QString("com.canonical.Unity.Launcher.Item"));
229+ getargs.append(QString("count"));
230+
231+ message.setArguments(getargs);
232+ reply = con.call(message);
233+ QCOMPARE(reply.type(), QDBusMessage::ReplyMessage);
234+ QCOMPARE(reply.arguments()[0].value<QDBusVariant>().variant().toInt(), expectedCount);
235+ }
69236};
70237
71238QTEST_GUILESS_MAIN(LauncherBackendTest)
tests/plugins/Utils/CMakeLists.txt+2−1
@@ -11,7 +11,8 @@ macro(run_tests)
1111 -o ${CMAKE_BINARY_DIR}/${_test}.xml,xunitxml
1212 -o -,txt)
1313 add_test(NAME ${_test} COMMAND ${testCommand})
14− add_custom_target(${_test} ${testCommand})
14+ set_tests_properties(${_test} PROPERTIES ENVIRONMENT "LC_ALL=C")
15+ add_custom_target(${_test} env "LC_ALL=C" ${testCommand})
1516 add_executable(${_test}Exec ${_test}.cpp modeltest.cpp)
1617 qt5_use_modules(${_test}Exec Test Core Qml)
1718 target_link_libraries(${_test}Exec
tests/qmltests/CMakeLists.txt+2−1
@@ -16,7 +16,7 @@ add_qml_test(utils/Unity/Test UnityTest)
1616
1717set(qmltest_DEFAULT_TARGETS qmluitests)
1818set(qmltest_DEFAULT_NO_ADD_TEST TRUE)
19−set(qmltest_DEFAULT_PROPERTIES "")
19+set(qmltest_DEFAULT_PROPERTIES ENVIRONMENT "LC_ALL=C")
2020
2121add_qml_test(. Shell IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks
2222 ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/LightDM/single")
@@ -32,6 +32,7 @@ add_qml_test(Components Revealer)
3232add_qml_test(Components SeeMore)
3333add_qml_test(Components Showable)
3434add_qml_test(Components PageHeaderLabel)
35+add_qml_test(Components ZoomableImage)
3536add_qml_test(Dash Dash IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS})
3637add_qml_test(Dash DashContent IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS})
3738add_qml_test(Dash Card)
tests/qmltests/Components/CMakeLists.txt+1
@@ -11,6 +11,7 @@ qt5_use_modules(DragHandleTestExec Test Core Qml Gui Quick)
1111target_link_libraries(DragHandleTestExec UbuntuGestureQml)
1212
1313add_binary_qml_test(DragHandle ${CMAKE_BINARY_DIR}/plugins/Ubuntu/Gestures "")
14+add_manual_qml_test(. DragHandle IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins)
1415
1516add_definitions(-DUBUNTU_GESTURES_PLUGIN_DIR="${CMAKE_BINARY_DIR}/plugins")
1617add_definitions(-DTEST_DIR="${CMAKE_CURRENT_LIST_DIR}")
tests/qmltests/Components/tst_FilterGrid.qml+1−1
@@ -50,6 +50,7 @@ Rectangle {
5050 CheckBox {
5151 id: filterCheckBox
5252 checked: true
53+ onCheckedChanged: filterGrid.setFilter(checked, false /*animate*/)
5354 }
5455 }
5556 }
@@ -99,7 +100,6 @@ Rectangle {
99100 maximumNumberOfColumns: 3
100101 collapsedRowCount:
101102 collapsedRowCountSelector.values[collapsedRowCountSelector.selectedIndex]
102− filter: filterCheckBox.checked
103103 minimumHorizontalSpacing: units.gu(1)
104104 delegateWidth: units.gu(6)
105105 delegateHeight: units.gu(6)
tests/qmltests/Components/tst_ZoomableImage.qmlnew file+192
@@ -0,0 +1,192 @@
1+/*
2+ * Copyright 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+import QtQuick 2.0
18+import QtTest 1.0
19+import "../../../qml/Components"
20+import Unity.Test 0.1 as UT
21+
22+Rectangle {
23+ id: root
24+ width: units.gu(30)
25+ height: units.gu(60)
26+ color: "lightgrey"
27+
28+ property var widgetData0: {
29+ "source": "",
30+ "zoomable": false
31+ }
32+
33+ property var widgetData1: {
34+ "source": "../../../qml/graphics/phone_background.jpg",
35+ "zoomable": false
36+ }
37+
38+ property var widgetData2: {
39+ "source": "../../../qml/Dash/graphics/phone/screenshots/gallery@12.png",
40+ "zoomable": true
41+ }
42+
43+ ZoomableImage {
44+ id: zoomableImage
45+ width: parent.width
46+ anchors.fill: parent
47+ asynchronous: false
48+ }
49+
50+ SignalSpy {
51+ id: signalSpy
52+ }
53+
54+ UT.UnityTestCase {
55+ name: "ZoomableImageTest"
56+ when: windowShown
57+
58+ function test_loadImage() {
59+ var lazyImage = findChild(zoomableImage, "lazyImage");
60+
61+ zoomableImage.source = widgetData0["source"];
62+ zoomableImage.zoomable = widgetData0["zoomable"];
63+ waitForRendering(zoomableImage);
64+ tryCompare(zoomableImage, "imageState", "default");
65+
66+ signalSpy.signalName = "onStateChanged";
67+ signalSpy.target = lazyImage;
68+ signalSpy.clear();
69+
70+ zoomableImage.source = widgetData1["source"];
71+ zoomableImage.zoomable = widgetData1["zoomable"];
72+ waitForRendering(lazyImage);
73+ tryCompareFunction(function() { return get_filename(lazyImage.source.toString()) === get_filename(widgetData1["source"]); }, true);
74+ waitForRendering(zoomableImage);
75+ tryCompare(zoomableImage, "imageState", "ready");
76+ compare (signalSpy.count, 1);
77+ }
78+
79+ function get_filename(a) {
80+ var wordsA = a.split("/");
81+ var filenameA = wordsA[wordsA.length-1];
82+ return filenameA;
83+ }
84+
85+ function test_mousewheel() {
86+ var image = findChild(zoomableImage, "image");
87+ var lazyImage = findChild(zoomableImage, "lazyImage");
88+ var flickable = findChild(zoomableImage, "flickable");
89+
90+ zoomableImage.source = widgetData2["source"];
91+ zoomableImage.zoomable = true;
92+ waitForRendering(zoomableImage);
93+
94+ tryCompare(zoomableImage, "imageState", "ready");
95+ tryCompareFunction(function() { return get_filename(lazyImage.source.toString()) === get_filename(widgetData2["source"]); }, true);
96+ waitForRendering(image);
97+
98+ // move mouse to center
99+ mouseMove(zoomableImage, zoomableImage.width / 2, zoomableImage.height / 2);
100+
101+ // Test Zoom-in Zoom-out twice.
102+ for (var c=0; c<2; c++) {
103+ // zoom in
104+ for (var i=0; i<10; i++) {
105+ mouseWheel(zoomableImage, zoomableImage.width / 2, zoomableImage.height / 2, 0, 10);
106+ tryCompare(image, "scale", 1.0 + (i + 1) * 0.1);
107+ compare(flickable.contentWidth, lazyImage.width * image.scale);
108+ compare(flickable.contentHeight, lazyImage.height * image.scale);
109+ }
110+
111+ // zoom out
112+ for (var i=0; i<10; i++) {
113+ mouseWheel(zoomableImage, zoomableImage.width / 2, zoomableImage.height / 2, 0, -10);
114+ tryCompare(image, "scale", 2.0 - (i + 1) * 0.1);
115+ compare(flickable.contentWidth, lazyImage.width * image.scale);
116+ compare(flickable.contentHeight, lazyImage.height * image.scale);
117+ }
118+ }
119+ }
120+
121+ function test_pinch_data() {
122+ return [ { source:widgetData2["source"],
123+ zoomable:false,
124+ answer1: true,
125+ answer2: false,
126+ answer3: true,
127+ answer4: 1.0,
128+ answer5: 1.0 },
129+ { source:widgetData2["source"],
130+ zoomable:true,
131+ answer1: false,
132+ answer2: true,
133+ answer3: false,
134+ answer4: 1.7740461882048026,
135+ answer5: 1.0 }
136+ ]
137+ }
138+
139+ function test_pinch(data) {
140+ var image = findChild(zoomableImage, "image");
141+ var lazyImage = findChild(zoomableImage, "lazyImage");
142+ var flickable = findChild(zoomableImage, "flickable");
143+
144+ signalSpy.signalName = "onScaleChanged";
145+ signalSpy.target = image;
146+ signalSpy.clear();
147+
148+ zoomableImage.source = data.source;
149+ zoomableImage.zoomable = data.zoomable;
150+ waitForRendering(zoomableImage);
151+
152+ tryCompare(zoomableImage, "imageState", "ready");
153+ tryCompareFunction(function() { return get_filename(lazyImage.source.toString()) === get_filename(data.source); }, true);
154+ waitForRendering(image);
155+
156+ var x1Start = zoomableImage.width * 2 / 6;
157+ var y1Start = zoomableImage.height * 2 / 6;
158+ var x1End = zoomableImage.width * 1 / 6;
159+ var y1End = zoomableImage.height * 1 / 6;
160+ var x2Start = zoomableImage.width * 4 / 6;
161+ var y2Start = zoomableImage.height * 4 / 6;
162+ var x2End = zoomableImage.width * 5 / 6;
163+ var y2End = zoomableImage.height * 5 / 6;
164+
165+ var oldScale = image.scale;
166+
167+ // move mouse to center
168+ mouseMove(zoomableImage, zoomableImage.width / 2, zoomableImage.height / 2);
169+
170+ // Test Zoom-in Zoom-out twice.
171+ for (var c=0; c<2; c++) {
172+ wait(3000); // have to delay between two consequent pinch event.
173+ // pinch zoom-in
174+ touchPinch(zoomableImage, x1Start, y1Start, x1End, y1End, x2Start, y2Start, x2End, y2End);
175+
176+ tryCompare(image, "scale", data.answer4);
177+ var newScale = image.scale;
178+ compare(newScale == oldScale, data.answer1, "scale factor not equal: "+ oldScale + "=?" + newScale);
179+ compare(newScale > oldScale, data.answer2, "scale factor didn't changed");
180+ compare(signalSpy.count == 0, data.answer3, "scale signal count error");
181+ compare(newScale, data.answer4, "scale factor error");
182+ compare(flickable.contentWidth, lazyImage.width * image.scale);
183+ compare(flickable.contentHeight, lazyImage.height * image.scale);
184+
185+ wait(3000); // have to delay between two consequent pinch event.
186+ // pinch zoom-out
187+ touchPinch(zoomableImage, x1End, y1End, x1Start, y1Start, x2End, y2End, x2Start, y2Start);
188+ tryCompare(image, "scale", data.answer5);
189+ }
190+ }
191+ }
192+}
tests/qmltests/Dash/Previews/tst_PreviewRatingInput.qml+21−2
@@ -36,6 +36,8 @@ Rectangle {
3636 property var triggeredDataReviewOnly: { "rating": invalidInputRating, "review": validInputText, "author": null }
3737
3838 property var widgetDataBoth: { "visible": "both", "required": "both" }
39+ property var widgetDataBothRequireRating: { "visible": "both", "required": "rating" }
40+ property var widgetDataBothRequireReview: { "visible": "both", "required": "review" }
3941 property var widgetDataRating: { "visible": "rating", "required": "rating" }
4042 property var widgetDataRatingBroken: { "visible": "rating", "required": "review" }
4143 property var widgetDataReview: { "visible": "review", "required": "review" }
@@ -85,6 +87,14 @@ Rectangle {
8587 {tag: "both, rating-only review", widgetData: widgetDataBoth, inputRating: validInputRating, inputText: invalidInputText, emitted: false},
8688 {tag: "both, review-only review", widgetData: widgetDataBoth, inputRating: invalidInputRating, inputText: validInputText, emitted: false},
8789 {tag: "both, complete review", widgetData: widgetDataBoth, inputRating: validInputRating, inputText: validInputText, emitted: true},
90+ {tag: "both require rating, null review", widgetData: widgetDataBothRequireRating, inputRating: invalidInputRating, inputText: invalidInputText, emitted: false},
91+ {tag: "both require rating, rating-only review", widgetData: widgetDataBothRequireRating, inputRating: validInputRating, inputText: invalidInputText, emitted: true},
92+ {tag: "both require rating, review-only review", widgetData: widgetDataBothRequireRating, inputRating: invalidInputRating, inputText: validInputText, emitted: false},
93+ {tag: "both require rating, complete review", widgetData: widgetDataBothRequireRating, inputRating: validInputRating, inputText: validInputText, emitted: true},
94+ {tag: "both require review, null review", widgetData: widgetDataBothRequireReview, inputRating: invalidInputRating, inputText: invalidInputText, emitted: false},
95+ {tag: "both require review, rating-only review", widgetData: widgetDataBothRequireReview, inputRating: validInputRating, inputText: invalidInputText, emitted: false},
96+ {tag: "both require review, review-only review", widgetData: widgetDataBothRequireReview, inputRating: invalidInputRating, inputText: validInputText, emitted: true},
97+ {tag: "both require review, complete review", widgetData: widgetDataBothRequireReview, inputRating: validInputRating, inputText: validInputText, emitted: true},
8898 {tag: "rating, null review", widgetData: widgetDataRating, inputRating: invalidInputRating, inputText: invalidInputText, emitted: false},
8999 {tag: "rating, rating-only review", widgetData: widgetDataRating, inputRating: validInputRating, inputText: invalidInputText, emitted: true},
90100 {tag: "rating, review-only review", widgetData: widgetDataRating, inputRating: invalidInputRating, inputText: validInputText, emitted: false},
@@ -114,7 +124,9 @@ Rectangle {
114124 verify(rating.visible === true);
115125
116126 rating.value = data.inputRating;
117− if (data.widgetData["required"] !== "rating" || data.inputRating < 0) {
127+ if (data.widgetData["required"] !== "rating" ||
128+ data.widgetData["visible"] !== "rating" ||
129+ data.inputRating < 0) {
118130 compare(spy.count, 0);
119131 } else {
120132 compare(spy.count, 1);
@@ -129,7 +141,14 @@ Rectangle {
129141 reviewTextArea.text = data.inputText;
130142 mouseClick(submitButton, submitButton.width / 2, submitButton.height / 2);
131143 switch (data.widgetData["required"]) {
132− case "rating": compare(spy.count, 0); break;
144+ case "rating": {
145+ if (rating.visible === false || data.inputRating < 0) {
146+ compare(spy.count, 0);
147+ } else {
148+ compare(spy.count, 1);
149+ }
150+ break;
151+ }
133152 case "both":
134153 default: {
135154 if (data.inputRating < 0 || data.inputText === "") {
tests/qmltests/Dash/Previews/tst_PreviewZoomableImage.qml+6−3
@@ -36,7 +36,8 @@ Rectangle {
3636
3737 PreviewZoomableImage {
3838 id: zoomableImage
39− width: parent.width
39+ anchors.fill: parent
40+ widgetData: widgetData1
4041 }
4142
4243 UT.UnityTestCase {
@@ -47,10 +48,12 @@ Rectangle {
4748 var image = findChild(zoomableImage, "image");
4849
4950 zoomableImage.widgetData = widgetData0;
50− tryCompare(image, "state", "default");
51+ waitForRendering(zoomableImage);
52+ tryCompare(image, "imageState", "default");
5153
5254 zoomableImage.widgetData = widgetData1;
53− tryCompare(image, "state", "ready");
55+ waitForRendering(zoomableImage);
56+ tryCompare(image, "imageState", "ready");
5457 }
5558 }
5659}
tests/qmltests/Dash/tst_GenericScopeView.qml+3−3
@@ -140,7 +140,7 @@ Item {
140140 mouseClick(header, header.width / 2, header.height / 2);
141141 tryCompareFunction(function() { middleHeight = category.height; return category.height > initialHeight; }, true);
142142 tryCompare(category, "filtered", false);
143− verify(category.height > middleHeight);
143+ tryCompareFunction(function() { return category.height > middleHeight; }, true);
144144
145145 mouseClick(header, header.width / 2, header.height / 2);
146146 verify(category.expandable);
@@ -165,7 +165,7 @@ Item {
165165
166166 mouseClick(header2, header2.width / 2, header2.height / 2);
167167 tryCompare(category2, "filtered", false);
168− tryCompare(category2FilterGrid, "filter", false);
168+ tryCompare(category2FilterGrid, "filtered", false);
169169
170170 categoryListView.positionAtBeginning();
171171
@@ -182,7 +182,7 @@ Item {
182182 mouseClick(header0, header0.width / 2, header0.height / 2);
183183 tryCompare(category0, "filtered", false);
184184 tryCompare(category2, "filtered", true);
185− tryCompare(category2FilterGrid, "filter", true);
185+ tryCompare(category2FilterGrid, "filtered", true);
186186 mouseClick(header0, header0.width / 2, header0.height / 2);
187187 tryCompare(category0, "filtered", true);
188188 tryCompare(category2, "filtered", true);
tests/qmltests/Greeter/tst_Clock.qml+3−3
@@ -71,10 +71,10 @@ Rectangle {
7171 var dateString = Qt.formatDate(dateObj, Qt.DefaultLocaleLongDate)
7272 var timeString = Qt.formatTime(dateObj)
7373
74− clock.enabled = false
74+ clock.visible = false
7575 var timeModel = findInvisibleChild(clock, "timeModel")
7676
77− compare(timeModel.menuObjectPath, "", "Clock shouldn't be connected to Indicators when not active.")
77+ compare(timeModel.menuObjectPath, "", "Clock shouldn't be connected to Indicators when not visible.")
7878
7979 clock.currentDate = dateObj
8080
@@ -83,7 +83,7 @@ Rectangle {
8383 var timeLabel = findChild(clock, "timeLabel")
8484 compare(timeLabel.text, timeString, "Not the expected time")
8585
86− clock.enabled = true
86+ clock.visible = true
8787
8888 verify(timeModel.menuObjectPath != "", "Should be connected to Indicators.")
8989 }
tests/qmltests/Greeter/tst_Phone.qml+10−50
@@ -61,6 +61,12 @@ Item {
6161 signalName: "unlocked"
6262 }
6363
64+ SignalSpy {
65+ id: teaseSpy
66+ target: greeter
67+ signalName: "tease"
68+ }
69+
6470 UT.UnityTestCase {
6571 name: "Greeter"
6672 when: windowShown
@@ -82,56 +88,10 @@ Item {
8288 }
8389
8490 function test_teasingArea(data) {
85− tryCompare(greeter, "leftTeaserPressed", false)
86− tryCompare(greeter, "rightTeaserPressed", false)
87− mousePress(greeter, data.posX, greeter.height - units.gu(1))
88− tryCompare(greeter, "leftTeaserPressed", data.leftPressed)
89− tryCompare(greeter, "rightTeaserPressed", data.rightPressed)
90− mouseRelease(greeter, data.posX, greeter.height - units.gu(1))
91− tryCompare(greeter, "leftTeaserPressed", false)
92− tryCompare(greeter, "rightTeaserPressed", false)
93− }
94−
95− function test_teaseLockedUnlocked_data() {
96− return [
97− {tag: "unlocked", locked: false, moved: false},
98− {tag: "locked", locked: true, moved: false},
99− {tag: "moved", locked: false, moved: true}
100− ];
101− }
102−
103− function test_teaseLockedUnlocked(data) {
104− tryCompare(greeter, "rightTeaserPressed", false);
105− tryCompare(greeter, "x", 0);
106− greeter.locked = data.locked;
107−
108− // simulate greeter being in the middle of a swipe
109− if (data.moved) {
110− greeter.x = -units.gu(4);
111− tryCompare(greeter, "x", -units.gu(4));
112− }
113−
114− mouseClick(greeter, greeter.width - units.gu(5), greeter.height - units.gu(1));
115− greeter.minX = 0; // This is needed because the transition actually makes x jump once before animating
116−
117− if (!data.moved) {
118− // Check if it has been moved over by 2 GUs. Give it a 2 pixel grace area
119− // because animation duration and teaseTimer are the same duration and
120− // might cause slight offsets
121− tryCompareFunction(function() { return greeter.minX <= -units.gu(2) + 2}, true);
122− } else {
123− // waiting 100ms to make sure nothing moves
124− wait(100);
125− compare(greeter.minX, 0, "Greeter teasing not disabled even though it's locked or moving.");
126− }
127−
128− // Restore position in case we moved it for the test
129− if (data.moved) {
130− greeter.x = 0;
131− }
132−
133− // Wait until we're back to 0
134− tryCompareFunction(function() { return greeter.x;}, 0);
91+ teaseSpy.clear()
92+ mouseClick(greeter, data.posX, greeter.height - units.gu(1))
93+ teaseSpy.wait()
94+ tryCompare(teaseSpy, "count", 1)
13595 }
13696
13797 function test_statsWelcomeScreen() {
tests/qmltests/Greeter/tst_Tablet.qml+36−8
@@ -54,6 +54,12 @@ Item {
5454 signalName: "selected"
5555 }
5656
57+ SignalSpy {
58+ id: teaseSpy
59+ target: greeter
60+ signalName: "tease"
61+ }
62+
5763 UT.UnityTestCase {
5864 name: "Greeter"
5965 when: windowShown
@@ -325,14 +331,36 @@ Item {
325331 }
326332
327333 function test_teasingArea(data) {
328− tryCompare(greeter, "leftTeaserPressed", false)
329− tryCompare(greeter, "rightTeaserPressed", false)
330− mousePress(greeter, data.posX, greeter.height - units.gu(1))
331− tryCompare(greeter, "leftTeaserPressed", data.leftPressed)
332− tryCompare(greeter, "rightTeaserPressed", data.rightPressed)
333− mouseRelease(greeter, data.posX, greeter.height - units.gu(1))
334− tryCompare(greeter, "leftTeaserPressed", false)
335− tryCompare(greeter, "rightTeaserPressed", false)
334+ teaseSpy.clear()
335+ mouseClick(greeter, data.posX, greeter.height - units.gu(1))
336+ teaseSpy.wait()
337+ tryCompare(teaseSpy, "count", 1)
338+ }
339+
340+ function test_teaseLockedUnlocked_data() {
341+ return [
342+ {tag: "unlocked", locked: false, narrow: false},
343+ {tag: "locked", locked: true, narrow: false},
344+ ];
345+ }
346+
347+ function test_teaseLockedUnlocked(data) {
348+ teaseSpy.clear()
349+ greeter.locked = data.locked;
350+
351+ mouseClick(greeter, greeter.width - units.gu(5), greeter.height - units.gu(1));
352+
353+ if (!data.locked || data.narrow) {
354+ teaseSpy.wait()
355+ tryCompare(teaseSpy, "count", 1);
356+ } else {
357+ // waiting 100ms to make sure nothing happens
358+ wait(100);
359+ compare(teaseSpy.count, 0, "Greeter teasing not disabled even though it's locked.");
360+ }
361+
362+ // Reset value
363+ greeter.locked = false;
336364 }
337365
338366 function test_dbus_set_active_entry() {
tests/qmltests/Panel/Indicators/tst_MenuItemFactory.qml+29−4
@@ -19,6 +19,7 @@ import QtTest 1.0
1919import Unity.Test 0.1 as UT
2020import QMenuModel 0.1
2121import Unity.Indicators 0.1 as Indicators
22+import Utils 0.1 as Utils
2223
2324Item {
2425 id: testView
@@ -42,6 +43,10 @@ Item {
4243 }
4344 }
4445
46+ Utils.GDateTimeFormatter {
47+ id: timeFormatter
48+ }
49+
4550 UT.UnityTestCase {
4651 name: "MenuItemFactory"
4752 when: windowShown
@@ -358,8 +363,10 @@ Item {
358363
359364 function test_create_alarmMenu_data() {
360365 return [
361− {label: "testLabel1", enabled: true, icon: "file:///testIcon1" },
362− {label: "testLabel2", enabled: false, icon: "file:///testIcon2" },
366+ {label: "testLabel1", enabled: true, icon: "file:///testIcon1", color: Qt.rgba(0, 0, 0, 0),
367+ time: new Date(2014, 04, 14).getTime()*1000, timeFormat: "%a %d %b %l:%M %p"},
368+ {label: "testLabel2", enabled: false, icon: "file:///testIcon2", color: Qt.rgba(1, 0, 0, 0),
369+ time: new Date(2015, 12, 31).getTime()*1000, timeFormat: "%A" },
363370 ];
364371 }
365372
@@ -368,6 +375,12 @@ Item {
368375 menuData.label = data.label;
369376 menuData.sensitive = data.enabled;
370377 menuData.icon = data.icon;
378+ menuData.ext = {
379+ 'xCanonicalTime': data.time,
380+ 'xCanonicalTimeFormat': data.timeFormat
381+ };
382+ timeFormatter.format = data.timeFormat;
383+ timeFormatter.time = data.time;
371384
372385 loader.data = menuData;
373386 loader.sourceComponent = factory.load(menuData);
@@ -376,13 +389,16 @@ Item {
376389
377390 compare(loader.item.text, data.label, "Label does not match data");
378391 compare(loader.item.iconSource, data.icon, "Icon does not match data");
392+ compare(loader.item.time, timeFormatter.timeString, "Time does not match data");
379393 compare(loader.item.enabled, data.enabled, "Enabled does not match data");
380394 }
381395
382396 function test_create_appointmentMenu_data() {
383397 return [
384− {label: "testLabel1", enabled: true, icon: "file:///testIcon1" },
385− {label: "testLabel2", enabled: false, icon: "file:///testIcon2" },
398+ {label: "testLabel1", enabled: true, icon: "file:///testIcon1", color: Qt.rgba(0, 0, 0, 0),
399+ time: new Date(2014, 04, 14).getTime()*1000, timeFormat: "%a %d %b %l:%M %p"},
400+ {label: "testLabel2", enabled: false, icon: "file:///testIcon2", color: Qt.rgba(1, 0, 0, 0),
401+ time: new Date(2015, 12, 31).getTime()*1000, timeFormat: "%A" },
386402 ];
387403 }
388404
@@ -391,6 +407,13 @@ Item {
391407 menuData.label = data.label;
392408 menuData.sensitive = data.enabled;
393409 menuData.icon = data.icon;
410+ menuData.ext = {
411+ 'xCanonicalColor': data.colour,
412+ 'xCanonicalTime': data.time,
413+ 'xCanonicalTimeFormat': data.timeFormat
414+ };
415+ timeFormatter.format = data.timeFormat;
416+ timeFormatter.time = data.time;
394417
395418 loader.data = menuData;
396419 loader.sourceComponent = factory.load(menuData);
@@ -399,6 +422,8 @@ Item {
399422
400423 compare(loader.item.text, data.label, "Label does not match data");
401424 compare(loader.item.iconSource, data.icon, "Icon does not match data");
425+ compare(loader.item.time, timeFormatter.timeString, "Time does not match data");
426+ compare(loader.item.eventColor, data.color, "Colour does not match data");
402427 compare(loader.item.enabled, data.enabled, "Enabled does not match data");
403428 }
404429
tests/utils/modules/Unity/Test/UnityTestCase.qml+26
@@ -260,6 +260,32 @@ TestCase {
260260 }
261261 }
262262
263+ function touchPinch(item, x1Start, y1Start, x1End, y1End, x2Start, y2Start, x2End, y2End) {
264+ // Make sure the item is rendered
265+ waitForRendering(item);
266+
267+ var event1 = touchEvent();
268+ // first finger
269+ event1.press(0, x1Start, y1Start);
270+ event1.commit();
271+ // second finger
272+ event1.stationary(0);
273+ event1.press(1, x2Start, y2Start);
274+ event1.commit();
275+
276+ // pinch
277+ for (var i = 0.0; i < 1.0; i += 0.02) {
278+ event1.move(0, x1Start + (x1End - x1Start) * i, y1Start + (y1End - y1Start) * i);
279+ event1.move(1, x2Start + (x2End - x2Start) * i, y2Start + (y2End - y2Start) * i);
280+ event1.commit();
281+ }
282+
283+ // release
284+ event1.release(0, x1End, y1End);
285+ event1.release(1, x2End, y2End);
286+ event1.commit();
287+ }
288+
263289 function fetchRootItem(item) {
264290 if (item.parent)
265291 return fetchRootItem(item.parent)