on xenial help sign in
merged with trunk
4e86d64Nick Dedekind
cmake/modules/Plugins.cmakedeleted−68
@@ -1,68 +0,0 @@
1−find_program(qmlplugindump_exe qmlplugindump)
2−
3−if(NOT qmlplugindump_exe)
4− msg(FATAL_ERROR "Could not locate qmlplugindump.")
5−endif()
6−
7−# Creates target for copying and installing qmlfiles
8−#
9−# export_qmlfiles(plugin sub_path)
10−#
11−#
12−# Target to be created:
13−# - plugin-qmlfiles - Copies the qml files (*.qml, *.js, qmldir) into the shadow build folder.
14−
15−macro(export_qmlfiles PLUGIN PLUGIN_SUBPATH)
16−
17− file(GLOB QMLFILES
18− *.qml
19− *.js
20− qmldir
21− )
22−
23− # copy the qmldir file
24− add_custom_target(${PLUGIN}-qmlfiles ALL
25− COMMAND cp ${QMLFILES} ${CMAKE_BINARY_DIR}/plugins/${PLUGIN_SUBPATH}
26− DEPENDS ${QMLFILES}
27− SOURCES ${QMLFILES}
28− )
29−
30− # install the qmlfiles file.
31− install(FILES ${QMLFILES}
32− DESTINATION ${SHELL_INSTALL_QML}/${PLUGIN_SUBPATH}
33− )
34−endmacro(export_qmlfiles)
35−
36−
37−# Creates target for generating the qmltypes file for a plugin and installs plugin files
38−#
39−# export_qmlplugin(plugin version sub_path [TARGETS target1 [target2 ...]])
40−#
41−# TARGETS additional install targets (eg the plugin shared object)
42−#
43−# Target to be created:
44−# - plugin-qmltypes - Generates the qmltypes file in the shadow build folder.
45−
46−macro(export_qmlplugin PLUGIN VERSION PLUGIN_SUBPATH)
47− set(multi_value_keywords TARGETS)
48− cmake_parse_arguments(qmlplugin "" "" "${multi_value_keywords}" ${ARGN})
49−
50− # Only try to generate .qmltypes if not cross compiling
51− if(NOT CMAKE_CROSSCOMPILING)
52− # create the plugin.qmltypes file
53− add_custom_target(${PLUGIN}-qmltypes ALL
54− COMMAND ${qmlplugindump_exe} -notrelocatable ${PLUGIN} ${VERSION} ${CMAKE_BINARY_DIR}/plugins > ${CMAKE_BINARY_DIR}/plugins/${PLUGIN_SUBPATH}/plugin.qmltypes
55− )
56− add_dependencies(${PLUGIN}-qmltypes ${PLUGIN}-qmlfiles ${qmlplugin_TARGETS})
57−
58− # install the qmltypes file.
59− install(FILES ${CMAKE_BINARY_DIR}/plugins/${PLUGIN_SUBPATH}/plugin.qmltypes
60− DESTINATION ${SHELL_INSTALL_QML}/${PLUGIN_SUBPATH}
61− )
62− endif()
63−
64− # install the additional targets
65− install(TARGETS ${qmlplugin_TARGETS}
66− DESTINATION ${SHELL_INSTALL_QML}/${PLUGIN_SUBPATH}
67− )
68−endmacro(export_qmlplugin)
cmake/modules/QmlPlugins.cmakenew file+143
@@ -0,0 +1,143 @@
1+# If you need to override the qmlplugindump binary, create the qmlplugin executable
2+# target before loading this plugin.
3+
4+if(NOT TARGET qmlplugindump)
5+ find_program(qmlplugindump_exe qmlplugindump)
6+
7+ if(NOT qmlplugindump_exe)
8+ msg(FATAL_ERROR "Could not locate qmlplugindump.")
9+ endif()
10+
11+ add_executable(qmlplugindump IMPORTED)
12+ set_target_properties(qmlplugindump PROPERTIES IMPORTED_LOCATION ${qmlplugindump_exe})
13+endif()
14+
15+
16+# Creates a target for copying resource files into build dir and optionally installing them.
17+#
18+# Files will be copied into ${BINARY_DIR}/${path} or ${CMAKE_CURRENT_BINARY_DIR} and installed
19+# into ${DESTINATION}/${path}.
20+#
21+# Resource file names are matched against {*.{qml,js,jpg,png,sci,svg},qmldir}.
22+#
23+# export_qmlfiles(plugin path
24+# [SEARCH_PATH path] # Path to search for resources in (defaults to ${CMAKE_CURRENT_SOURCE_DIR})
25+# [BINARY_DIR path]
26+# [DESTINATION path]
27+# [TARGET_PREFIX string] # Will be prefixed to the target name
28+# )
29+#
30+# Created target:
31+# - ${TARGET_PREFIX}${plugin}-qmlfiles - Copies resources into the binary dir.
32+
33+macro(export_qmlfiles PLUGIN PATH)
34+ set(single SEARCH_PATH BINARY_DIR DESTINATION TARGET_PREFIX)
35+ cmake_parse_arguments(QMLFILES "" "${single}" "" ${ARGN})
36+
37+ if(NOT QMLFILES_SEARCH_PATH)
38+ set(QMLFILES_SEARCH_PATH ${CMAKE_CURRENT_SOURCE_DIR})
39+ endif()
40+
41+ if(QMLFILES_BINARY_DIR)
42+ set(qmlfiles_dir ${QMLFILES_BINARY_DIR}/${PATH})
43+ else()
44+ set(qmlfiles_dir ${CMAKE_CURRENT_BINARY_DIR})
45+ endif()
46+
47+ file(GLOB QMLFILES
48+ ${QMLFILES_SEARCH_PATH}/*.qml
49+ ${QMLFILES_SEARCH_PATH}/*.js
50+ ${QMLFILES_SEARCH_PATH}/*.jpg
51+ ${QMLFILES_SEARCH_PATH}/*.png
52+ ${QMLFILES_SEARCH_PATH}/*.sci
53+ ${QMLFILES_SEARCH_PATH}/*.svg
54+ ${QMLFILES_SEARCH_PATH}/qmldir
55+ )
56+
57+ execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${qmlfiles_dir})
58+
59+ # copy the files
60+ add_custom_target(${QMLFILES_TARGET_PREFIX}${PLUGIN}-qmlfiles ALL
61+ COMMAND cp ${QMLFILES} ${qmlfiles_dir}
62+ DEPENDS ${QMLFILES}
63+ SOURCES ${QMLFILES}
64+ )
65+
66+ if(QMLFILES_DESTINATION)
67+ # install the qmlfiles file.
68+ install(FILES ${QMLFILES}
69+ DESTINATION ${QMLFILES_DESTINATION}/${PATH}
70+ )
71+ endif()
72+endmacro(export_qmlfiles)
73+
74+
75+# Creates a target for generating the typeinfo file for a QML plugin and optionally installs it
76+# and additional targets.
77+#
78+# Files will be copied into ${BINARY_DIR}/${path} or ${CMAKE_CURRENT_BINARY_DIR} and installed
79+# into ${DESTINATION}/${path}. If you don't pass BINARY_DIR, it's assumed that current source
80+# path ends with ${path}.
81+#
82+# The generated file will be named after the last segment of the plugin name, e.g. Foo.qmltypes.
83+#
84+# export_qmlplugin(plugin version path
85+# [BINARY_DIR path]
86+# [DESTINATION path]
87+# [TARGET_PREFIX string] # Will be prefixed to the target name
88+# [ENVIRONMENT string] # Will be added to qmlplugindump's env
89+# [TARGETS target1 [target2 ...]] # Targets to depend on and install (e.g. the plugin shared object)
90+# )
91+#
92+# Created target:
93+# - ${TARGET_PREFIX}${plugin}-qmltypes - Generates the qmltypes file in the binary dir.
94+
95+macro(export_qmlplugin PLUGIN VERSION PATH)
96+ set(single BINARY_DIR DESTINATION TARGET_PREFIX ENVIRONMENT)
97+ set(multi TARGETS)
98+ cmake_parse_arguments(QMLPLUGIN "" "${single}" "${multi}" ${ARGN})
99+
100+ get_target_property(qmlplugindump_executable qmlplugindump LOCATION)
101+
102+ if(QMLPLUGIN_BINARY_DIR)
103+ set(qmlplugin_dir ${QMLPLUGIN_BINARY_DIR}/${PATH})
104+ else()
105+ # Find import path to point qmlplugindump at
106+ string(REGEX REPLACE "${PATH}$" "" QMLPLUGIN_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
107+ set(qmlplugin_dir ${CMAKE_CURRENT_BINARY_DIR})
108+ endif()
109+
110+ # Find the last segment of the plugin name to use as qmltypes basename
111+ string(REGEX MATCH "[^.]+$" plugin_suffix ${PLUGIN})
112+ set(target_prefix ${QMLPLUGIN_TARGET_PREFIX}${PLUGIN})
113+ set(qmltypes_path ${qmlplugin_dir}/${plugin_suffix}.qmltypes)
114+
115+ # Only generate typeinfo if not cross compiling
116+ if(NOT CMAKE_CROSSCOMPILING)
117+ add_custom_target(${target_prefix}-qmltypes ALL
118+ COMMAND env ${QMLPLUGIN_ENVIRONMENT} ${qmlplugindump_executable} -notrelocatable
119+ ${PLUGIN} ${VERSION} ${QMLPLUGIN_BINARY_DIR} > ${qmltypes_path}
120+ )
121+ add_dependencies(${target_prefix}-qmltypes ${target_prefix}-qmlfiles ${QMLPLUGIN_TARGETS})
122+
123+ if (QMLPLUGIN_DESTINATION)
124+ # Install the typeinfo file
125+ install(FILES ${qmltypes_path}
126+ DESTINATION ${QMLPLUGIN_DESTINATION}/${PATH}
127+ )
128+ endif()
129+ endif()
130+
131+ set_target_properties(${QMLPLUGIN_TARGETS} PROPERTIES
132+ ARCHIVE_OUTPUT_DIRECTORY ${qmlplugin_dir}
133+ LIBRARY_OUTPUT_DIRECTORY ${qmlplugin_dir}
134+ RUNTIME_OUTPUT_DIRECTORY ${qmlplugin_dir}
135+ )
136+
137+ if (QMLPLUGIN_DESTINATION)
138+ # Install additional targets
139+ install(TARGETS ${QMLPLUGIN_TARGETS}
140+ DESTINATION ${QMLPLUGIN_DESTINATION}/${PATH}
141+ )
142+ endif()
143+endmacro()
cmake/modules/QmlTest.cmake+4−4
@@ -51,7 +51,7 @@ macro(add_manual_qml_test SUBPATH COMPONENT_NAME)
51
51
52 set(qmlscene_command
52 set(qmlscene_command
53 env ${qmltest_ENVIRONMENT}
53 env ${qmltest_ENVIRONMENT}
54− ${qmlscene_exe} ${CMAKE_CURRENT_SOURCE_DIR}/${qmltest_FILE}.qml
54+ ${qmlscene_exe} -qmljsdebugger=port:3768 ${CMAKE_CURRENT_SOURCE_DIR}/${qmltest_FILE}.qml
55 ${qmlscene_imports}
55 ${qmlscene_imports}
56 )
56 )
57 add_custom_target(${qmlscene_TARGET} ${qmlscene_command})
57 add_custom_target(${qmlscene_TARGET} ${qmlscene_command})
@@ -111,9 +111,9 @@ macro(add_qml_test_internal SUBPATH COMPONENT_NAME ITERATIONS)
111 -o -,txt
111 -o -,txt
112 ${function_ARGS}
112 ${function_ARGS}
113 )
113 )
114− find_program( HAVE_GCC gcc )
114+ find_program(DPKG dpkg-architecture)
115− if (NOT ${HAVE_GCC} STREQUAL "")
115+ if(DPKG)
116− exec_program( gcc ARGS "-dumpmachine" OUTPUT_VARIABLE ARCH_TRIPLET )
116+ exec_program(${DPKG} ARGS "-qDEB_BUILD_MULTIARCH" OUTPUT_VARIABLE ARCH_TRIPLET )
117 set(LD_PRELOAD_PATH "LD_PRELOAD=/usr/lib/${ARCH_TRIPLET}/mesa/libGL.so.1")
117 set(LD_PRELOAD_PATH "LD_PRELOAD=/usr/lib/${ARCH_TRIPLET}/mesa/libGL.so.1")
118 endif()
118 endif()
119 set(qmltest_xvfb_command
119 set(qmltest_xvfb_command
data/unity8-greeter-logrotate.confnew file+14
@@ -0,0 +1,14 @@
1+description "Unity 8 Greeter logrotate support"
2+author "Michael Terry <mterry@ubuntu.com>"
3+
4+start on unity8-greeter-started
5+task
6+
7+script
8+ # logrotate normally starts on startup and then sleeps for 60 seconds.
9+ # Otherwise, it skips that sleep. Since we can't emit the startup signal
10+ # for a unity8-greeter session, we have to trigger logrotate manually.
11+ # So we do the sleep ourselves in its stead.
12+ sleep 60
13+ initctl emit :sys:rotate-logs
14+end script
debian/changelog+246
@@ -1,3 +1,249 @@
1+unity8 (7.89+14.10.20140616.1-0ubuntu1) utopic; urgency=low
2+
3+ [ Pawel Stolowski ]
4+ * Extend the hack for click scope categories with the upcoming 'store'
5+ category: single-tap on results from the 'store' category should
6+ activate them, instead of requesting a preview. (LP: #1326292)
7+
8+ [ Albert Astals ]
9+ * Drop the " Preview" suffix from Preview title As requested in
10+ https://bugs.launchpad.net/unity8/+bug/1316671 (LP: #1316671)
11+
12+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Mon, 16 Jun 2014 14:43:01 +0000
13+
14+unity8 (7.89+14.10.20140613-0ubuntu1) utopic; urgency=medium
15+
16+ [ Michael Terry ]
17+ * Revert split greeter for now. We will bring it back as an option
18+ for Desktop, but use a big hammer revert right now to get Touch back
19+ in shape.
20+
21+ [ CI bot ]
22+ * Fix build problems. Reviewed by: Michael Terry (LP: #1328850)
23+
24+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Fri, 13 Jun 2014 08:30:48 +0000
25+
26+unity8 (7.88+14.10.20140606-0ubuntu1) utopic; urgency=low
27+
28+ [ Michał Sawicz ]
29+ * Make lockscreen buttons translatable.
30+
31+ [ Albert Astals ]
32+ * Correctly mark these functions as overrides
33+ * Remove connections to non existant signal
34+ * Better test name
35+ * Improvements for headerless categories LVPWH: No section name -> no
36+ header LVPWH: New hasSectionHeader context property for delegates
37+ GSV: Add topMargin if no hasSectionHeader (LP: #1326415)
38+ * Make tryVerticalJournal, tryHorizontalJournal and tryOrganicGrid
39+ work again
40+
41+ [ Michael Zanetti ]
42+ * Don't crash when we get an invalid app from ApplicationManager (LP:
43+ #1309162)
44+
45+ [ Andrea Cimitan ]
46+ * Workaround for lp1324159 (LP: #1322233, #1324159)
47+
48+ [ CI bot ]
49+ * Resync trunk
50+
51+ [ Florian Boucault ]
52+ * Application startup: changed splash rectangle to be black instead of
53+ white and added a neat little animation. (LP: #1124265)
54+
55+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Fri, 06 Jun 2014 11:38:53 +0000
56+
57+unity8 (7.88+14.10.20140603.1-0ubuntu1) utopic; urgency=medium
58+
59+ [ Michael Terry ]
60+ * Bump version so ubuntu-touch-session can reference this one
61+
62+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Tue, 03 Jun 2014 20:31:00 +0000
63+
64+unity8 (7.87+14.10.20140603.1-0ubuntu1) utopic; urgency=low
65+
66+ [ CI bot ]
67+ * Resync trunk
68+
69+ [ Michał Sawicz ]
70+ * Move env setup past session init in greeter wrapper. (LP: #1325882)
71+
72+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Tue, 03 Jun 2014 10:33:11 +0000
73+
74+unity8 (7.87+14.10.20140530.1-0ubuntu3) utopic; urgency=medium
75+
76+ * no change rebuild
77+
78+ -- Oliver Grawert <ogra@ubuntu.com> Mon, 02 Jun 2014 16:19:10 +0200
79+
80+unity8 (7.87+14.10.20140530.1-0ubuntu2) utopic; urgency=medium
81+
82+ * drop dbus-x11 dependency of unity8-greeter, it makes us end up with
83+ multiple session dbus daemons which breaks many AP tests in the lab
84+
85+ -- Oliver Grawert <ogra@ubuntu.com> Mon, 02 Jun 2014 14:50:59 +0200
86+
87+unity8 (7.87+14.10.20140530.1-0ubuntu1) utopic; urgency=medium
88+
89+ [ Michael Terry ]
90+ * Bump version for Breaks due to unity8-greeter
91+ * In split mode, determine whether the application identifiers in
92+ AccountsService are click packages or not, so we know the correct
93+ url prefix to use.
94+ * Start logrotate in the greeter's session.
95+
96+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Fri, 30 May 2014 09:29:15 +0000
97+
98+unity8 (7.86+14.10.20140527-0ubuntu1) utopic; urgency=low
99+
100+ [ Andrea Cimitan ]
101+ * Passes to make tryCommand -qmljsdebugger=port:3768 to enable
102+ debug/profiling test apps
103+ * Fixes carousel shadow
104+
105+ [ Michał Sawicz ]
106+ * Use dpkg-architecture, not gcc, to determine the machine triplet.
107+
108+ [ Ying-Chun Liu ]
109+ * Fix ZoomableImage test failure. (LP: #1317254)
110+
111+ [ Albert Astals ]
112+ * We don't need iconutils in this mock
113+ * Don't reserve space for mascot if no mascot is specified (LP:
114+ #1319343)
115+ * CardHeader is no more, remove stale line in CMakeLists.txt
116+ * GenericScopeViewTest: Wait a bit more Otherwise sometimes we end
117+ getting up the wrong delegate (maybe one that will be garbage
118+ collected?) (LP: #1322279)
119+ * Fix crash in organicgridtest
120+
121+ [ Daniel d'Andrada ]
122+ * Remove Shell's underlay background image as it cannot be seen
123+ anymore Now that the Dash has its own, opaque, background, the
124+ underlay's background image can no longer be seen. So it's just a
125+ waste of resources to have it.
126+
127+ [ Michael Terry ]
128+ * Use the same animation when dismissing a greeter slide from the
129+ launcher as from a normal greeter drag. (LP: #1316513)
130+
131+ [ Michael Zanetti ]
132+ * enhance lockscreen add a retry indication label (e.g. 3 attempts
133+ left). add an additional label (e.g. phone number for multi sim).
134+ add a infoPopup (e.g. to display a warning for last retry). add min
135+ and max limit values. add tests for the above (LP: #1302050)
136+
137+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Tue, 27 May 2014 07:47:11 +0000
138+
139+unity8 (7.86+14.10.20140522-0ubuntu1) utopic; urgency=low
140+
141+ [ Albert Astals ]
142+ * Use Interface classes from unity-api
143+
144+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Thu, 22 May 2014 17:59:23 +0000
145+
146+unity8 (7.86+14.10.20140519-0ubuntu1) utopic; urgency=low
147+
148+ [ Ubuntu daily release ]
149+ * New rebuild forced
150+
151+ [ Albert Astals ]
152+ * Use the new displayMargin feature Also port our DashViews to use
153+ same naming and behaviour + update tests
154+
155+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Mon, 19 May 2014 07:35:51 +0000
156+
157+unity8 (7.86+14.10.20140516.5-0ubuntu1) utopic; urgency=low
158+
159+ [ Michal Hruby ]
160+ * Updated scope tool to create proper config files after recent
161+ libunity-scopes-api changes.
162+
163+ [ Michał Sawicz ]
164+ * Refactor export_qmlfiles and export_qmlplugins to be more generic
165+ and clean up installed mocks.
166+
167+ [ Albert Astals ]
168+ * Remove empty dirs
169+ * Set the tabbarmodel index as we do on real code It works better :D
170+ (LP: #1317255)
171+
172+ [ Thomi Richards ]
173+ * Use new import location for ProcessSearchError in process_helpers
174+ script.
175+
176+ [ Andrea Cimitan ]
177+ * Adds shadow for the carousel
178+
179+ [ Daniel d'Andrada ]
180+ * Remove Revealer component It's not used anywhere anymore. It's been
181+ replaced by DragHandle.
182+
183+ [ Andy Doan ]
184+ * unlock_device: support more complex reboot/wait cycles Currently
185+ this script only allows you to override how to "wait" on the device.
186+ This changes the logic to also support how you go about rebooting
187+ the device. This is handy for the ubuntu-emulator because adb-reboot
188+ is not currently supported. However, we also have a more
189+ sophisticated, fool-proof way we reboot/wait in the CI lab that
190+ would be nice to take advantage of:
191+ http://bazaar.launchpad.net/~ubuntu-test-case-dev/ubuntu-test-
192+ cases/touch/view/head:/scripts/reboot-and-wait
193+
194+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Fri, 16 May 2014 18:46:32 +0000
195+
196+unity8 (7.86+14.10.20140516.2-0ubuntu1) utopic; urgency=low
197+
198+ [ CI bot ]
199+ * Resync trunk
200+
201+ [ Michael Zanetti ]
202+ * support appid:// entries in gsettings schema and make
203+ findDesktopFile work with short-appid (LP: #1239750)
204+
205+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Fri, 16 May 2014 12:32:40 +0000
206+
207+unity8 (7.86+14.10.20140514.1-0ubuntu1) utopic; urgency=low
208+
209+ [ Antti Kaijanmäki ]
210+ * Indicators/RootActionState: use g_variant_iter_loop to extract
211+ icons.
212+
213+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Wed, 14 May 2014 11:43:55 +0000
214+
215+unity8 (7.86+14.10.20140513-0ubuntu1) utopic; urgency=low
216+
217+ [ Andrea Cimitan ]
218+ * Improve padding in Text preview widget. (LP: #1316683)
219+
220+ [ CI bot ]
221+ * Resync trunk
222+
223+ [ Nick Dedekind ]
224+ * Removed binding loop from Unity.Indicators.MenuContentActivator
225+ Change handler for QMLListProperty used by MenuContent.qml:
226+ menuActivator.content[index].active If we're already asking for the
227+ index, we know it exists already. No need to send a
228+ changeNotification on an implied creation.
229+
230+ [ Josh Arenson ]
231+ * Implements usage-style documentation for unity8 executable. Fixes
232+ lp:1269282 (LP: #1269282)
233+
234+ [ Albert Astals ]
235+ * Create specialized Card code in Javascript instead of having various
236+ copied&pasted files (LP: #1297197)
237+
238+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Tue, 13 May 2014 08:34:02 +0000
239+
240+unity8 (7.86+14.10.20140507.3-0ubuntu1) utopic; urgency=low
241+
242+ [ Michał Sawicz ]
243+ * Remove HUD from the bottom edge. Again.
244+
245+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Wed, 07 May 2014 11:14:30 +0000
246+
1unity8 (7.86+14.10.20140505-0ubuntu1) utopic; urgency=low
247unity8 (7.86+14.10.20140505-0ubuntu1) utopic; urgency=low
2
248
3 [ Ted Gould ]
249 [ Ted Gould ]
debian/control+2
@@ -92,7 +92,9 @@ Recommends: unity-scope-click,
92 unity-scope-scopes,
92 unity-scope-scopes,
93Breaks: indicator-network (<< 0.5.1),
93Breaks: indicator-network (<< 0.5.1),
94 ubuntu-touch-session (<< 0.107),
94 ubuntu-touch-session (<< 0.107),
95+ unity8-greeter (<< 7.89),
95Replaces: ubuntu-touch-session (<< 0.82~),
96Replaces: ubuntu-touch-session (<< 0.82~),
97+ unity8-greeter (<< 7.89),
96Description: Unity 8 shell
98Description: Unity 8 shell
97 The Unity 8 shell is the primary user interface for Ubuntu devices.
99 The Unity 8 shell is the primary user interface for Ubuntu devices.
98
100
debian/unity8-private.install+1−1
@@ -1,5 +1,5 @@
1usr/lib/*/unity8/qml/AccountsService
1usr/lib/*/unity8/qml/AccountsService
2−usr/lib/*/unity8/qml/DashViews
2+usr/lib/*/unity8/qml/Dash
3usr/lib/*/unity8/qml/HudClient
3usr/lib/*/unity8/qml/HudClient
4usr/lib/*/unity8/qml/LightDM
4usr/lib/*/unity8/qml/LightDM
5usr/lib/*/unity8/qml/Powerd
5usr/lib/*/unity8/qml/Powerd
debian/unity8.install−1
@@ -1,7 +1,6 @@
1data/unity8.conf usr/share/upstart/sessions/
1data/unity8.conf usr/share/upstart/sessions/
2usr/bin/unity8
2usr/bin/unity8
3usr/share/applications/unity8.desktop
3usr/share/applications/unity8.desktop
4−usr/share/unity8/Bottombar
5usr/share/unity8/Greeter
4usr/share/unity8/Greeter
6usr/share/unity8/Hud
5usr/share/unity8/Hud
7usr/share/unity8/Launcher
6usr/share/unity8/Launcher
plugins/AccountsService/CMakeLists.txt+1−4
@@ -1,5 +1,3 @@
1−include(Plugins)
2−
3add_definitions(-DSM_BUSNAME=systemBus)
1add_definitions(-DSM_BUSNAME=systemBus)
4
2
5add_library(AccountsService-qml MODULE
3add_library(AccountsService-qml MODULE
@@ -10,8 +8,7 @@ add_library(AccountsService-qml MODULE
10
8
11qt5_use_modules(AccountsService-qml DBus Qml)
9qt5_use_modules(AccountsService-qml DBus Qml)
12
10
13−export_qmlfiles(AccountsService AccountsService)
14−export_qmlplugin(AccountsService 0.1 AccountsService TARGETS AccountsService-qml)
11+add_unity8_plugin(AccountsService 0.1 AccountsService TARGETS AccountsService-qml)
15
12
16set(POLKIT_LIB_DIR "${CMAKE_INSTALL_LOCALSTATEDIR}/lib/polkit-1")
13set(POLKIT_LIB_DIR "${CMAKE_INSTALL_LOCALSTATEDIR}/lib/polkit-1")
17set(POLKIT_DATA_DIR "${CMAKE_INSTALL_PREFIX}/share/polkit-1")
14set(POLKIT_DATA_DIR "${CMAKE_INSTALL_PREFIX}/share/polkit-1")
plugins/AccountsService/qmldir+1−1
@@ -1,3 +1,3 @@
1module AccountsService
1module AccountsService
2plugin AccountsService-qml
2plugin AccountsService-qml
3−typeinfo plugin.qmltypes
3+typeinfo AccountsService.qmltypes
plugins/CMakeLists.txt+14−1
@@ -1,7 +1,20 @@
1+include(QmlPlugins)
2+
3+# Set up and install a plugin for unity8.
4+#
5+# add_unity8_plugin(plugin version path
6+# [...] # See export_qmlfiles and export_qmlplugin documentation for more options
7+# )
8+
9+macro(add_unity8_plugin PLUGIN VERSION PATH)
10+ export_qmlfiles(${PLUGIN} ${PATH} DESTINATION ${SHELL_INSTALL_QML} ${ARGN})
11+ export_qmlplugin(${PLUGIN} ${VERSION} ${PATH} DESTINATION ${SHELL_INSTALL_QML} ${ARGN})
12+endmacro()
13+
1add_subdirectory(AccountsService)
14add_subdirectory(AccountsService)
2add_subdirectory(HudClient)
15add_subdirectory(HudClient)
3add_subdirectory(LightDM)
16add_subdirectory(LightDM)
4−add_subdirectory(DashViews)
17+add_subdirectory(Dash)
5add_subdirectory(Powerd)
18add_subdirectory(Powerd)
6add_subdirectory(SessionBroadcast)
19add_subdirectory(SessionBroadcast)
7add_subdirectory(Ubuntu)
20add_subdirectory(Ubuntu)
plugins/DashViews/CMakeLists.txt → plugins/Dash/CMakeLists.txtrenamed+4−9
@@ -1,6 +1,3 @@
1−# export_qmlplugin macro
2−include(Plugins)
3−
4# There's no cmake var for v8 include path :-/
1# There's no cmake var for v8 include path :-/
5# so create one
2# so create one
6LIST(GET Qt5Core_INCLUDE_DIRS 0 QtCoreDir0)
3LIST(GET Qt5Core_INCLUDE_DIRS 0 QtCoreDir0)
@@ -30,17 +27,15 @@ set(QMLPLUGIN_SRC
30 organicgrid.cpp
27 organicgrid.cpp
31 )
28 )
32
29
33−add_library(DashViews-qml MODULE
30+add_library(Dash-qml MODULE
34 ${QMLPLUGIN_SRC}
31 ${QMLPLUGIN_SRC}
35 )
32 )
36
33
37−target_link_libraries(DashViews-qml
34+target_link_libraries(Dash-qml
38 ${Qt5Gui_LIBRARIES}
35 ${Qt5Gui_LIBRARIES}
39 ${Qt5Quick_LIBRARIES}
36 ${Qt5Quick_LIBRARIES}
40 )
37 )
41
38
42−qt5_use_modules(DashViews-qml Qml Quick)
39+qt5_use_modules(Dash-qml Qml Quick)
43
40
44−# export the qmldir qmltypes and plugin files
41+add_unity8_plugin(Dash 0.1 Dash TARGETS Dash-qml)
45−export_qmlfiles(DashViews DashViews)
46−export_qmlplugin(DashViews 0.1 DashViews TARGETS DashViews-qml)
plugins/Dash/CardCreator.jsnew file+520
@@ -0,0 +1,520 @@
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+.pragma library
18+
19+var kBackgroundLoaderCode = 'Loader {\n\
20+ id: backgroundLoader; \n\
21+ objectName: "backgroundLoader"; \n\
22+ anchors.fill: parent; \n\
23+ asynchronous: root.asynchronous; \n\
24+ visible: status == Loader.Ready; \n\
25+ sourceComponent: UbuntuShape { \n\
26+ objectName: "background"; \n\
27+ radius: "medium"; \n\
28+ color: getColor(0) || "white"; \n\
29+ gradientColor: getColor(1) || color; \n\
30+ anchors.fill: parent; \n\
31+ image: backgroundImage.source ? backgroundImage : null; \n\
32+ property real luminance: 0.2126 * color.r + 0.7152 * color.g + 0.0722 * color.b; \n\
33+ property Image backgroundImage: Image { \n\
34+ objectName: "backgroundImage"; \n\
35+ source: { \n\
36+ if (cardData && typeof cardData["background"] === "string") return cardData["background"]; \n\
37+ else if (template && typeof template["card-background"] === "string") return template["card-background"]; \n\
38+ else return ""; \n\
39+ } \n\
40+ } \n\
41+ function getColor(index) { \n\
42+ if (cardData && typeof cardData["background"] === "object" \n\
43+ && (cardData["background"]["type"] === "color" || cardData["background"]["type"] === "gradient")) { \n\
44+ return cardData["background"]["elements"][index]; \n\
45+ } else if (template && typeof template["card-background"] === "object" \n\
46+ && (template["card-background"]["type"] === "color" || template["card-background"]["type"] === "gradient")) { \n\
47+ return template["card-background"]["elements"][index]; \n\
48+ } else return undefined; \n\
49+ } \n\
50+ } \n\
51+ }\n';
52+
53+// %1 is used as anchors of artShapeHolder
54+// %2 is used as image width
55+// %3 is used as image height
56+var kArtShapeHolderCode = 'Item { \n\
57+ id: artShapeHolder; \n\
58+ height: root.fixedArtShapeSize.height != -1 ? root.fixedArtShapeSize.height : artShapeLoader.height; \n\
59+ width: root.fixedArtShapeSize.width != -1 ? root.fixedArtShapeSize.width : artShapeLoader.width; \n\
60+ anchors { %1 } \n\
61+ Loader { \n\
62+ id: artShapeLoader; \n\
63+ objectName: "artShapeLoader"; \n\
64+ active: cardData && cardData["art"] || false; \n\
65+ asynchronous: root.asynchronous; \n\
66+ visible: status == Loader.Ready; \n\
67+ sourceComponent: UbuntuShape { \n\
68+ id: artShape; \n\
69+ objectName: "artShape"; \n\
70+ radius: "medium"; \n\
71+ readonly property real aspect: components !== undefined ? components["art"]["aspect-ratio"] : 1; \n\
72+ readonly property bool aspectSmallerThanImageAspect: aspect < image.aspect; \n\
73+ Component.onCompleted: { updateWidthHeightBindings(); if (artShapeBorderSource !== undefined) borderSource = artShapeBorderSource; } \n\
74+ onAspectSmallerThanImageAspectChanged: updateWidthHeightBindings(); \n\
75+ visible: image.status == Image.Ready; \n\
76+ function updateWidthHeightBindings() { \n\
77+ if (aspectSmallerThanImageAspect) { \n\
78+ width = Qt.binding(function() { return !visible ? 0 : image.width }); \n\
79+ height = Qt.binding(function() { return !visible ? 0 : image.fillMode === Image.PreserveAspectCrop ? image.height : width / image.aspect }); \n\
80+ } else { \n\
81+ width = Qt.binding(function() { return !visible ? 0 : image.fillMode === Image.PreserveAspectCrop ? image.width : height * image.aspect }); \n\
82+ height = Qt.binding(function() { return !visible ? 0 : image.height }); \n\
83+ } \n\
84+ } \n\
85+ image: Image { \n\
86+ objectName: "artImage"; \n\
87+ source: cardData && cardData["art"] || ""; \n\
88+ cache: true; \n\
89+ asynchronous: root.asynchronous; \n\
90+ fillMode: components && components["art"]["fill-mode"] === "fit" ? Image.PreserveAspectFit: Image.PreserveAspectCrop; \n\
91+ readonly property real aspect: implicitWidth / implicitHeight; \n\
92+ width: %2; \n\
93+ height: %3; \n\
94+ } \n\
95+ } \n\
96+ } \n\
97+ }\n';
98+
99+var kOverlayLoaderCode = 'Loader { \n\
100+ id: overlayLoader; \n\
101+ anchors { \n\
102+ left: artShapeHolder.left; \n\
103+ right: artShapeHolder.right; \n\
104+ bottom: artShapeHolder.bottom; \n\
105+ } \n\
106+ active: artShapeLoader.active && artShapeLoader.item && artShapeLoader.item.image.status === Image.Ready || false; \n\
107+ asynchronous: root.asynchronous; \n\
108+ visible: showHeader && status == Loader.Ready; \n\
109+ sourceComponent: ShaderEffect { \n\
110+ id: overlay; \n\
111+ height: fixedHeaderHeight != -1 ? fixedHeaderHeight : headerHeight; \n\
112+ opacity: 0.6; \n\
113+ property var source: ShaderEffectSource { \n\
114+ id: shaderSource; \n\
115+ sourceItem: artShapeLoader.item; \n\
116+ onVisibleChanged: if (visible) scheduleUpdate(); \n\
117+ live: false; \n\
118+ sourceRect: Qt.rect(0, artShapeLoader.height - overlay.height, artShapeLoader.width, overlay.height); \n\
119+ } \n\
120+ vertexShader: " \n\
121+ uniform highp mat4 qt_Matrix; \n\
122+ attribute highp vec4 qt_Vertex; \n\
123+ attribute highp vec2 qt_MultiTexCoord0; \n\
124+ varying highp vec2 coord; \n\
125+ void main() { \n\
126+ coord = qt_MultiTexCoord0; \n\
127+ gl_Position = qt_Matrix * qt_Vertex; \n\
128+ }"; \n\
129+ fragmentShader: " \n\
130+ varying highp vec2 coord; \n\
131+ uniform sampler2D source; \n\
132+ uniform lowp float qt_Opacity; \n\
133+ void main() { \n\
134+ lowp vec4 tex = texture2D(source, coord); \n\
135+ gl_FragColor = vec4(0, 0, 0, tex.a) * qt_Opacity; \n\
136+ }"; \n\
137+ } \n\
138+ }\n';
139+
140+// %1 is used as anchors of row
141+// %2 is used as first child of the row
142+// %3 is used as second child of the row
143+var kHeaderRow2Code = 'Row { \n\
144+ id: row; \n\
145+ objectName: "outerRow"; \n\
146+ property real margins: units.gu(1); \n\
147+ spacing: margins; \n\
148+ anchors { %1 } \n\
149+ anchors.right: parent.right; \n\
150+ anchors.margins: margins;\n\
151+ data: [ %2\n\
152+ ,\n\
153+ %3 \n\
154+ ] \n\
155+ }\n';
156+
157+// %1 is used as anchors of row
158+// %2 is used as first child of the row
159+// %3 is used as second child of the row
160+// %4 is used as third child of the row
161+var kHeaderRow3Code = 'Row { \n\
162+ id: row; \n\
163+ objectName: "outerRow"; \n\
164+ property real margins: units.gu(1); \n\
165+ spacing: margins; \n\
166+ anchors { %1 } \n\
167+ anchors.right: parent.right; \n\
168+ anchors.margins: margins;\n\
169+ data: [ %2\n\
170+ ,\n\
171+ %3 \n\
172+ ,\n\
173+ %4 \n\
174+ ] \n\
175+ }\n';
176+
177+// %1 is used as first child of the column
178+// %2 is used as second child of the column
179+var kHeaderColumnCode = 'Column { \n\
180+ anchors.verticalCenter: parent.verticalCenter; \n\
181+ spacing: units.dp(2); \n\
182+ width: parent.width - x;\n\
183+ data: [ %1\n\
184+ ,\n\
185+ %2 \n\
186+ ] \n\
187+ }\n';
188+
189+// %1 is used as anchors of mascotShapeLoader
190+var kMascotShapeLoaderCode = 'Loader { \n\
191+ id: mascotShapeLoader; \n\
192+ objectName: "mascotShapeLoader"; \n\
193+ asynchronous: root.asynchronous; \n\
194+ active: mascotImage.status === Image.Ready; \n\
195+ visible: showHeader && active && status == Loader.Ready; \n\
196+ width: units.gu(6); \n\
197+ height: units.gu(5.625); \n\
198+ sourceComponent: UbuntuShape { image: mascotImage } \n\
199+ anchors { %1 } \n\
200+ }\n';
201+
202+// %1 is used as anchors of mascotImage
203+// %2 is used as visible of mascotImage
204+var kMascotImageCode = 'Image { \n\
205+ id: mascotImage; \n\
206+ objectName: "mascotImage"; \n\
207+ anchors { %1 } \n\
208+ readonly property int maxSize: Math.max(width, height) * 4; \n\
209+ source: cardData && cardData["mascot"]; \n\
210+ width: units.gu(6); \n\
211+ height: units.gu(5.625); \n\
212+ sourceSize { width: maxSize; height: maxSize } \n\
213+ fillMode: Image.PreserveAspectCrop; \n\
214+ horizontalAlignment: Image.AlignHCenter; \n\
215+ verticalAlignment: Image.AlignVCenter; \n\
216+ visible: %2; \n\
217+ }\n';
218+
219+// %1 is used as anchors of titleLabel
220+// %1 is used as color of titleLabel
221+// %3 is used as extra condition for visible of titleLabel
222+var kTitleLabelCode = 'Label { \n\
223+ id: titleLabel; \n\
224+ objectName: "titleLabel"; \n\
225+ anchors { %1 } \n\
226+ elide: Text.ElideRight; \n\
227+ fontSize: "small"; \n\
228+ wrapMode: Text.Wrap; \n\
229+ maximumLineCount: 2; \n\
230+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale); \n\
231+ color: %2; \n\
232+ visible: showHeader %3; \n\
233+ text: root.title; \n\
234+ font.weight: components && components["subtitle"] ? Font.DemiBold : Font.Normal; \n\
235+ horizontalAlignment: root.headerAlignment; \n\
236+ }\n';
237+
238+// %1 is used as anchors of subtitleLabel
239+// %2 is used as color of subtitleLabel
240+var kSubtitleLabelCode = 'Label { \n\
241+ id: subtitleLabel; \n\
242+ objectName: "subtitleLabel"; \n\
243+ anchors { %1 } \n\
244+ elide: Text.ElideRight; \n\
245+ fontSize: "small"; \n\
246+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale); \n\
247+ color: %2; \n\
248+ visible: titleLabel.visible && titleLabel.text; \n\
249+ text: cardData && cardData["subtitle"] || ""; \n\
250+ font.weight: Font.Light; \n\
251+ horizontalAlignment: root.headerAlignment; \n\
252+ }\n';
253+
254+// %1 is used as top anchor of summary
255+// %2 is used as topMargin anchor of summary
256+// %3 is used as color of summary
257+var kSummaryLabelCode = 'Label { \n\
258+ id: summary; \n\
259+ objectName: "summaryLabel"; \n\
260+ anchors { \n\
261+ top: %1; \n\
262+ left: parent.left; \n\
263+ right: parent.right; \n\
264+ margins: units.gu(1); \n\
265+ topMargin: %2; \n\
266+ } \n\
267+ wrapMode: Text.Wrap; \n\
268+ maximumLineCount: 5; \n\
269+ elide: Text.ElideRight; \n\
270+ text: cardData && cardData["summary"] || ""; \n\
271+ height: text ? implicitHeight : 0; \n\
272+ fontSize: "small"; \n\
273+ color: %3; \n\
274+ }\n';
275+
276+function cardString(template, components) {
277+ var code;
278+ code = 'AbstractButton { \n\
279+ id: root; \n\
280+ property var template; \n\
281+ property var components; \n\
282+ property var cardData; \n\
283+ property var artShapeBorderSource: undefined; \n\
284+ property real fontScale: 1.0; \n\
285+ property int headerAlignment: Text.AlignLeft; \n\
286+ property int fixedHeaderHeight: -1; \n\
287+ property size fixedArtShapeSize: Qt.size(-1, -1); \n\
288+ readonly property string title: cardData && cardData["title"] || ""; \n\
289+ property bool asynchronous: true; \n\
290+ property bool showHeader: true; \n\
291+ implicitWidth: childrenRect.width; \n';
292+
293+ var hasArt = components["art"] && components["art"]["field"] || false;
294+ var hasSummary = components["summary"] || false;
295+ var artAndSummary = hasArt && hasSummary;
296+ var isHorizontal = template["card-layout"] === "horizontal";
297+ var hasBackground = !isHorizontal && (template["card-background"] || components["background"] || artAndSummary);
298+ var hasTitle = components["title"] || false;
299+ var hasMascot = components["mascot"] || false;
300+ var headerAsOverlay = hasArt && template && template["overlay"] === true && (hasTitle || hasMascot);
301+ var hasSubtitle = components["subtitle"] || false;
302+ var hasHeaderRow = hasMascot && hasTitle;
303+
304+ if (hasBackground) {
305+ code += kBackgroundLoaderCode;
306+ }
307+
308+ if (hasArt) {
309+ code += 'onArtShapeBorderSourceChanged: { if (artShapeBorderSource !== undefined && artShapeLoader.item) artShapeLoader.item.borderSource = artShapeBorderSource; } \n';
310+ code += 'readonly property size artShapeSize: artShapeLoader.item ? Qt.size(artShapeLoader.item.width, artShapeLoader.item.height) : Qt.size(-1, -1);\n';
311+
312+ var widthCode, heightCode;
313+ var anchors;
314+ if (isHorizontal) {
315+ anchors = 'left: parent.left';
316+ if (hasMascot || hasTitle) {
317+ widthCode = 'height * artShape.aspect'
318+ heightCode = 'headerHeight';
319+ } else {
320+ // This side of the else is a bit silly, who wants an horizontal layout without mascot and title?
321+ // So we define a "random" height of the image height + 2 gu for the margins
322+ widthCode = 'height * artShape.aspect'
323+ heightCode = 'units.gu(7.625)';
324+ }
325+ } else {
326+ anchors = 'horizontalCenter: parent.horizontalCenter;';
327+ widthCode = 'root.width'
328+ heightCode = 'width / artShape.aspect';
329+ }
330+
331+ code += kArtShapeHolderCode.arg(anchors).arg(widthCode).arg(heightCode);
332+ } else {
333+ code += 'readonly property size artShapeSize: Qt.size(-1, -1);\n'
334+ }
335+
336+ if (headerAsOverlay) {
337+ code += kOverlayLoaderCode;
338+ }
339+
340+ var headerVerticalAnchors;
341+ if (headerAsOverlay) {
342+ headerVerticalAnchors = 'bottom: artShapeHolder.bottom; \n\
343+ bottomMargin: units.gu(1);\n';
344+ } else {
345+ if (hasArt) {
346+ if (isHorizontal) {
347+ headerVerticalAnchors = 'top: artShapeHolder.top; \n\
348+ topMargin: units.gu(1);\n';
349+ } else {
350+ headerVerticalAnchors = 'top: artShapeHolder.bottom; \n\
351+ topMargin: units.gu(1);\n';
352+ }
353+ } else {
354+ headerVerticalAnchors = 'top: parent.top; \n\
355+ topMargin: units.gu(1);\n';
356+ }
357+ }
358+ var headerLeftAnchor;
359+ var headerLeftAnchorHasMagin = false;
360+ if (isHorizontal && hasArt) {
361+ headerLeftAnchor = 'left: artShapeHolder.right; \n\
362+ leftMargin: units.gu(1);\n';
363+ headerLeftAnchorHasMagin = true;
364+ } else {
365+ headerLeftAnchor = 'left: parent.left;\n';
366+ }
367+
368+ if (hasHeaderRow) {
369+ code += 'readonly property int headerHeight: row.height + row.margins * 2;\n'
370+ } else if (hasMascot) {
371+ code += 'readonly property int headerHeight: mascotImage.height + units.gu(1) * 2;\n'
372+ } else if (hasSubtitle) {
373+ code += 'readonly property int headerHeight: titleLabel.height + titleLabel.anchors.topMargin * 2 + subtitleLabel.height + subtitleLabel.anchors.topMargin;\n'
374+ } else if (hasTitle) {
375+ code += 'readonly property int headerHeight: titleLabel.height + titleLabel.anchors.topMargin * 2;\n'
376+ } else {
377+ code += 'readonly property int headerHeight: 0;\n'
378+ }
379+
380+ var mascotShapeCode = "";
381+ var mascotCode = "";
382+ if (hasMascot) {
383+ var useMascotShape = !hasBackground && !headerAsOverlay;
384+ var anchors = "";
385+ if (!hasHeaderRow) {
386+ anchors += headerLeftAnchor;
387+ anchors += headerVerticalAnchors;
388+ if (!headerLeftAnchorHasMagin) {
389+ anchors += 'leftMargin: units.gu(1);\n'
390+ }
391+ } else {
392+ anchors = "verticalCenter: parent.verticalCenter;"
393+ }
394+
395+ if (useMascotShape) {
396+ mascotShapeCode = kMascotShapeLoaderCode.arg(anchors);
397+ }
398+
399+ var mascotImageVisible = useMascotShape ? 'false' : 'showHeader';
400+ mascotCode = kMascotImageCode.arg(anchors).arg(mascotImageVisible);
401+ }
402+
403+ var summaryColorWithBackground = 'backgroundLoader.active && backgroundLoader.item && backgroundLoader.item.luminance < 0.7 ? "white" : "grey"';
404+
405+ var titleSubtitleCode = "";
406+ if (hasTitle) {
407+ var color;
408+ if (headerAsOverlay) {
409+ color = '"white"';
410+ } else if (hasSummary) {
411+ color = 'summary.color';
412+ } else if (hasBackground) {
413+ color = summaryColorWithBackground;
414+ } else {
415+ color = '"grey"';
416+ }
417+
418+ var titleAnchors;
419+ var subtitleAnchors;
420+ if (hasMascot && hasSubtitle) {
421+ // Using row + column
422+ titleAnchors = 'left: parent.left; right: parent.right';
423+ subtitleAnchors = titleAnchors;
424+ } else if (hasMascot) {
425+ // Using row + label
426+ titleAnchors = 'verticalCenter: parent.verticalCenter;\n'
427+ } else {
428+ if (headerAsOverlay) {
429+ // Using anchors to the overlay
430+ titleAnchors = 'left: parent.left; \n\
431+ leftMargin: units.gu(1); \n\
432+ right: parent.right; \n\
433+ top: overlayLoader.top; \n\
434+ topMargin: units.gu(1);\n';
435+ } else {
436+ // Using anchors to the mascot/parent
437+ titleAnchors = "right: parent.right;";
438+ titleAnchors += headerLeftAnchor;
439+ titleAnchors += headerVerticalAnchors;
440+ }
441+ subtitleAnchors = 'left: titleLabel.left; \n\
442+ leftMargin: titleLabel.leftMargin; \n\
443+ right: titleLabel.right; \n\
444+ top: titleLabel.bottom; \n\
445+ topMargin: units.dp(2);\n';
446+ }
447+
448+ var titleLabelVisibleExtra = (headerAsOverlay ? '&& overlayLoader.active': '');
449+ var titleCode = kTitleLabelCode.arg(titleAnchors).arg(color).arg(titleLabelVisibleExtra);
450+ var subtitleCode = "";
451+ if (hasSubtitle) {
452+ subtitleCode += kSubtitleLabelCode.arg(subtitleAnchors).arg(color);
453+ }
454+
455+ if (hasMascot && hasSubtitle) {
456+ // If using row + column wrap the code in the column
457+ titleSubtitleCode = kHeaderColumnCode.arg(titleCode).arg(subtitleCode);
458+ } else {
459+ titleSubtitleCode = titleCode + subtitleCode;
460+ }
461+ }
462+
463+ if (hasHeaderRow) {
464+ if (mascotShapeCode != "") {
465+ code += kHeaderRow3Code.arg(headerVerticalAnchors + headerLeftAnchor).arg(mascotShapeCode).arg(mascotCode).arg(titleSubtitleCode);
466+ } else {
467+ code += kHeaderRow2Code.arg(headerVerticalAnchors + headerLeftAnchor).arg(mascotCode).arg(titleSubtitleCode);
468+ }
469+ } else {
470+ code += mascotShapeCode + mascotCode + titleSubtitleCode;
471+ }
472+
473+ if (hasSummary) {
474+ var summaryTopAnchor;
475+ if (isHorizontal && hasArt) summaryTopAnchor = "artShapeHolder.bottom";
476+ else if (headerAsOverlay && hasArt) summaryTopAnchor = "artShapeHolder.bottom";
477+ else if (hasHeaderRow) summaryTopAnchor = "row.bottom";
478+ else if (hasMascot) summaryTopAnchor = "mascotImage.bottom";
479+ else if (hasSubtitle) summaryTopAnchor = "subtitleLabel.bottom";
480+ else if (hasTitle) summaryTopAnchor = "titleLabel.bottom";
481+ else if (hasArt) summaryTopAnchor = "artShapeHolder.bottom";
482+ else summaryTopAnchor = "parent.top";
483+
484+ var color;
485+ if (hasBackground) {
486+ color = summaryColorWithBackground;
487+ } else {
488+ color = '"grey"';
489+ }
490+
491+ var summaryTopMargin = (hasMascot || hasSubtitle ? 'anchors.margins' : '0');
492+
493+ code += kSummaryLabelCode.arg(summaryTopAnchor).arg(summaryTopMargin).arg(color);
494+ }
495+
496+ if (hasSummary) {
497+ code += 'implicitHeight: summary.y + summary.height + (summary.text ? units.gu(1) : 0);\n';
498+ } else if (hasHeaderRow) {
499+ code += 'implicitHeight: row.y + row.height + units.gu(1);\n';
500+ } else if (hasMascot) {
501+ code += 'implicitHeight: mascotImage.y + mascotImage.height;\n';
502+ } else if (hasSubtitle) {
503+ code += 'implicitHeight: subtitleLabel.y + subtitleLabel.height + units.gu(1);\n';
504+ } else if (hasTitle) {
505+ code += 'implicitHeight: titleLabel.y + titleLabel.height + units.gu(1);\n';
506+ }
507+ // Close the AbstractButton
508+ code += '}\n';
509+
510+ return code;
511+}
512+
513+function createCardComponent(parent, template, components) {
514+ var imports = 'import QtQuick 2.2; \n\
515+ import Ubuntu.Components 0.1; \n\
516+ import Ubuntu.Thumbnailer 0.1;\n';
517+ var card = cardString(template, components);
518+ var code = imports + 'Component {\n' + card + '}\n';
519+ return Qt.createQmlObject(code, parent, "createCardComponent");
520+}
plugins/Dash/CardCreatorCache.qmlnew file+40
@@ -0,0 +1,40 @@
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+pragma Singleton
18+import QtQuick 2.2
19+import "CardCreator.js" as CardCreator
20+
21+QtObject {
22+ id: root
23+
24+ property var cache: new Object();
25+
26+ function getCardComponent(template, components) {
27+ if (template === undefined || components === undefined)
28+ return undefined;
29+
30+ var tString = JSON.stringify(template);
31+ var cString = JSON.stringify(components);
32+ var allString = tString + cString;
33+ var component = cache[allString];
34+ if (component === undefined) {
35+ component = CardCreator.createCardComponent(root, template, components);
36+ cache[allString] = component;
37+ }
38+ return component;
39+ }
40+}
plugins/DashViews/abstractdashview.cpp → plugins/Dash/abstractdashview.cpprenamed+21−48
@@ -23,10 +23,8 @@ AbstractDashView::AbstractDashView()
23 , m_asyncRequestedIndex(-1)
23 , m_asyncRequestedIndex(-1)
24 , m_columnSpacing(0)
24 , m_columnSpacing(0)
25 , m_rowSpacing(0)
25 , m_rowSpacing(0)
26− , m_delegateCreationBegin(0)
26+ , m_displayMarginBeginning(0)
27− , m_delegateCreationEnd(0)
27+ , m_displayMarginEnd(0)
28− , m_delegateCreationBeginValid(false)
29− , m_delegateCreationEndValid(false)
30 , m_needsRelayout(false)
28 , m_needsRelayout(false)
31 , m_delegateValidated(false)
29 , m_delegateValidated(false)
32 , m_implicitHeightDirty(false)
30 , m_implicitHeightDirty(false)
@@ -114,62 +112,36 @@ void AbstractDashView::setRowSpacing(qreal rowSpacing)
114 }
112 }
115}
113}
116
114
117−qreal AbstractDashView::delegateCreationBegin() const
115+qreal AbstractDashView::displayMarginBeginning() const
118{
116{
119− return m_delegateCreationBegin;
117+ return m_displayMarginBeginning;
120}
118}
121
119
122−void AbstractDashView::setDelegateCreationBegin(qreal begin)
120+void AbstractDashView::setDisplayMarginBeginning(qreal begin)
123{
121{
124− m_delegateCreationBeginValid = true;
122+ if (m_displayMarginBeginning == begin)
125− if (m_delegateCreationBegin == begin)
126 return;
123 return;
127− m_delegateCreationBegin = begin;
124+ m_displayMarginBeginning = begin;
128 if (isComponentComplete()) {
125 if (isComponentComplete()) {
129 polish();
126 polish();
130 }
127 }
131− emit delegateCreationBeginChanged();
128+ emit displayMarginBeginningChanged();
132}
129}
133
130
134−void AbstractDashView::resetDelegateCreationBegin()
131+qreal AbstractDashView::displayMarginEnd() const
135{
132{
136− m_delegateCreationBeginValid = false;
133+ return m_displayMarginEnd;
137− if (m_delegateCreationBegin == 0)
138− return;
139− m_delegateCreationBegin = 0;
140− if (isComponentComplete()) {
141− polish();
142− }
143− emit delegateCreationBeginChanged();
144−}
145−
146−qreal AbstractDashView::delegateCreationEnd() const
147−{
148− return m_delegateCreationEnd;
149−}
150−
151−void AbstractDashView::setDelegateCreationEnd(qreal end)
152−{
153− m_delegateCreationEndValid = true;
154− if (m_delegateCreationEnd == end)
155− return;
156− m_delegateCreationEnd = end;
157− if (isComponentComplete()) {
158− polish();
159− }
160− emit delegateCreationEndChanged();
161}
134}
162
135
163−void AbstractDashView::resetDelegateCreationEnd()
136+void AbstractDashView::setDisplayMarginEnd(qreal end)
164{
137{
165− m_delegateCreationEndValid = false;
138+ if (m_displayMarginEnd == end)
166− if (m_delegateCreationEnd == 0)
167 return;
139 return;
168− m_delegateCreationEnd = 0;
140+ m_displayMarginEnd = end;
169 if (isComponentComplete()) {
141 if (isComponentComplete()) {
170 polish();
142 polish();
171 }
143 }
172− emit delegateCreationEndChanged();
144+ emit displayMarginEndChanged();
173}
145}
174
146
175void AbstractDashView::createDelegateModel()
147void AbstractDashView::createDelegateModel()
@@ -186,9 +158,8 @@ void AbstractDashView::refill()
186 return;
158 return;
187 }
159 }
188
160
189− const bool delegateRangesValid = m_delegateCreationBeginValid && m_delegateCreationEndValid;
161+ const qreal from = -m_displayMarginBeginning;
190− const qreal from = delegateRangesValid ? m_delegateCreationBegin : 0;
162+ const qreal to = height() + m_displayMarginEnd;
191− const qreal to = delegateRangesValid ? m_delegateCreationEnd : from + height();
192 const qreal buffer = (to - from) * bufferRatio;
163 const qreal buffer = (to - from) * bufferRatio;
193 const qreal bufferFrom = from - buffer;
164 const qreal bufferFrom = from - buffer;
194 const qreal bufferTo = to + buffer;
165 const qreal bufferTo = to + buffer;
@@ -205,6 +176,9 @@ void AbstractDashView::refill()
205
176
206bool AbstractDashView::addVisibleItems(qreal fillFromY, qreal fillToY, bool asynchronous)
177bool AbstractDashView::addVisibleItems(qreal fillFromY, qreal fillToY, bool asynchronous)
207{
178{
179+ if (fillToY <= fillFromY)
180+ return false;
181+
208 if (!delegate())
182 if (!delegate())
209 return false;
183 return false;
210
184
@@ -330,9 +304,8 @@ void AbstractDashView::updatePolish()
330
304
331 refill();
305 refill();
332
306
333− const bool delegateRangesValid = m_delegateCreationBeginValid && m_delegateCreationEndValid;
307+ const qreal from = -m_displayMarginBeginning;
334− const qreal from = delegateRangesValid ? m_delegateCreationBegin : 0;
308+ const qreal to = height() + m_displayMarginEnd;
335− const qreal to = delegateRangesValid ? m_delegateCreationEnd : from + height();
336 updateItemCulling(from, to);
309 updateItemCulling(from, to);
337
310
338 if (m_implicitHeightDirty) {
311 if (m_implicitHeightDirty) {
plugins/DashViews/abstractdashview.h → plugins/Dash/abstractdashview.hrenamed+14−20
@@ -35,14 +35,12 @@ class AbstractDashView : public QQuickItem
35 Q_PROPERTY(QQmlComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged)
35 Q_PROPERTY(QQmlComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged)
36 Q_PROPERTY(qreal columnSpacing READ columnSpacing WRITE setColumnSpacing NOTIFY columnSpacingChanged)
36 Q_PROPERTY(qreal columnSpacing READ columnSpacing WRITE setColumnSpacing NOTIFY columnSpacingChanged)
37 Q_PROPERTY(qreal rowSpacing READ rowSpacing WRITE setRowSpacing NOTIFY rowSpacingChanged)
37 Q_PROPERTY(qreal rowSpacing READ rowSpacing WRITE setRowSpacing NOTIFY rowSpacingChanged)
38− Q_PROPERTY(qreal delegateCreationBegin READ delegateCreationBegin
38+ Q_PROPERTY(qreal displayMarginBeginning READ displayMarginBeginning
39− WRITE setDelegateCreationBegin
39+ WRITE setDisplayMarginBeginning
40− NOTIFY delegateCreationBeginChanged
40+ NOTIFY displayMarginBeginningChanged)
41− RESET resetDelegateCreationBegin)
41+ Q_PROPERTY(qreal displayMarginEnd READ displayMarginEnd
42− Q_PROPERTY(qreal delegateCreationEnd READ delegateCreationEnd
42+ WRITE setDisplayMarginEnd
43− WRITE setDelegateCreationEnd
43+ NOTIFY displayMarginEndChanged)
44− NOTIFY delegateCreationEndChanged
45− RESET resetDelegateCreationEnd)
46
44
47friend class VerticalJournalTest;
45friend class VerticalJournalTest;
48friend class HorizontalJournalTest;
46friend class HorizontalJournalTest;
@@ -63,21 +61,19 @@ public:
63 qreal rowSpacing() const;
61 qreal rowSpacing() const;
64 void setRowSpacing(qreal rowSpacing);
62 void setRowSpacing(qreal rowSpacing);
65
63
66− qreal delegateCreationBegin() const;
64+ qreal displayMarginBeginning() const;
67− void setDelegateCreationBegin(qreal);
65+ void setDisplayMarginBeginning(qreal);
68− void resetDelegateCreationBegin();
69
66
70− qreal delegateCreationEnd() const;
67+ qreal displayMarginEnd() const;
71− void setDelegateCreationEnd(qreal);
68+ void setDisplayMarginEnd(qreal);
72− void resetDelegateCreationEnd();
73
69
74Q_SIGNALS:
70Q_SIGNALS:
75 void modelChanged();
71 void modelChanged();
76 void delegateChanged();
72 void delegateChanged();
77 void columnSpacingChanged();
73 void columnSpacingChanged();
78 void rowSpacingChanged();
74 void rowSpacingChanged();
79− void delegateCreationBeginChanged();
75+ void displayMarginBeginningChanged();
80− void delegateCreationEndChanged();
76+ void displayMarginEndChanged();
81
77
82protected Q_SLOTS:
78protected Q_SLOTS:
83 void relayout();
79 void relayout();
@@ -117,10 +113,8 @@ private:
117
113
118 int m_columnSpacing;
114 int m_columnSpacing;
119 int m_rowSpacing;
115 int m_rowSpacing;
120− qreal m_delegateCreationBegin;
116+ qreal m_displayMarginBeginning;
121− qreal m_delegateCreationEnd;
117+ qreal m_displayMarginEnd;
122− bool m_delegateCreationBeginValid;
123− bool m_delegateCreationEndValid;
124 bool m_needsRelayout;
118 bool m_needsRelayout;
125 bool m_delegateValidated;
119 bool m_delegateValidated;
126 bool m_implicitHeightDirty;
120 bool m_implicitHeightDirty;
plugins/DashViews/horizontaljournal.cpp → plugins/Dash/horizontaljournal.cpprenamed

The content is the same.

plugins/DashViews/horizontaljournal.h → plugins/Dash/horizontaljournal.hrenamed

The content is the same.

plugins/DashViews/listviewwithpageheader.cpp → plugins/Dash/listviewwithpageheader.cpprenamed+39−28
@@ -138,6 +138,13 @@ void ListViewWithPageHeader::ListItem::setCulled(bool culled)
138 QQuickItemPrivate::get(m_sectionItem)->setCulled(culled);
138 QQuickItemPrivate::get(m_sectionItem)->setCulled(culled);
139}
139}
140
140
141+void ListViewWithPageHeader::ListItem::setSectionItem(QQuickItem *sectionItem)
142+{
143+ m_sectionItem = sectionItem;
144+ QQmlContext *context = QQmlEngine::contextForObject(m_item)->parentContext();
145+ context->setContextProperty(QLatin1String("hasSectionHeader"), QVariant::fromValue<bool>(sectionItem != nullptr));
146+}
147+
141ListViewWithPageHeader::ListViewWithPageHeader()
148ListViewWithPageHeader::ListViewWithPageHeader()
142 : m_delegateModel(nullptr)
149 : m_delegateModel(nullptr)
143 , m_asyncRequestedIndex(-1)
150 , m_asyncRequestedIndex(-1)
@@ -422,7 +429,7 @@ bool ListViewWithPageHeader::maximizeVisibleArea(int modelIndex, int itemHeight)
422
429
423 ListItem *listItem = itemAtIndex(modelIndex);
430 ListItem *listItem = itemAtIndex(modelIndex);
424 if (listItem) {
431 if (listItem) {
425− return maximizeVisibleArea(listItem, itemHeight + (listItem->m_sectionItem ? listItem->m_sectionItem->height() : 0));
432+ return maximizeVisibleArea(listItem, itemHeight + (listItem->sectionItem() ? listItem->sectionItem()->height() : 0));
426 }
433 }
427
434
428 return false;
435 return false;
@@ -440,7 +447,7 @@ bool ListViewWithPageHeader::maximizeVisibleArea(ListItem *listItem, int listIte
440 contentYAnimationType = ContentYAnimationMaximizeVisibleArea;
447 contentYAnimationType = ContentYAnimationMaximizeVisibleArea;
441 m_contentYAnimation->start();
448 m_contentYAnimation->start();
442 } else if ((listItemY < contentY() && listItemY + listItemHeight < contentY() + height()) ||
449 } else if ((listItemY < contentY() && listItemY + listItemHeight < contentY() + height()) ||
443− (m_topSectionItem && !listItem->m_sectionItem && listItemY - m_topSectionItem->height() < contentY() && listItemY + listItemHeight < contentY() + height()))
450+ (m_topSectionItem && !listItem->sectionItem() && listItemY - m_topSectionItem->height() < contentY() && listItemY + listItemHeight < contentY() + height()))
444 {
451 {
445 // we can scroll the list down to show more stuff
452 // we can scroll the list down to show more stuff
446 auto realVisibleListItemY = listItemY;
453 auto realVisibleListItemY = listItemY;
@@ -449,7 +456,7 @@ bool ListViewWithPageHeader::maximizeVisibleArea(ListItem *listItem, int listIte
449 // item we have to make sure to scroll it a bit more so that it is not underlapping
456 // item we have to make sure to scroll it a bit more so that it is not underlapping
450 // the top section sticky item
457 // the top section sticky item
451 bool topSectionShown = !QQuickItemPrivate::get(m_topSectionItem)->culled;
458 bool topSectionShown = !QQuickItemPrivate::get(m_topSectionItem)->culled;
452− if (topSectionShown && !listItem->m_sectionItem) {
459+ if (topSectionShown && !listItem->sectionItem()) {
453 realVisibleListItemY -= m_topSectionItem->height();
460 realVisibleListItemY -= m_topSectionItem->height();
454 }
461 }
455 }
462 }
@@ -645,7 +652,7 @@ void ListViewWithPageHeader::reallyReleaseItem(ListItem *listItem)
645 if (flags & QQmlDelegateModel::Destroyed) {
652 if (flags & QQmlDelegateModel::Destroyed) {
646 item->setParentItem(nullptr);
653 item->setParentItem(nullptr);
647 }
654 }
648− delete listItem->m_sectionItem;
655+ delete listItem->sectionItem();
649 delete listItem;
656 delete listItem;
650}
657}
651
658
@@ -672,6 +679,9 @@ QQuickItem *ListViewWithPageHeader::getSectionItem(int modelIndex, bool alreadyI
672 return nullptr;
679 return nullptr;
673
680
674 const QString section = m_delegateModel->stringValue(modelIndex, m_sectionProperty);
681 const QString section = m_delegateModel->stringValue(modelIndex, m_sectionProperty);
682+ if (section.isEmpty())
683+ return nullptr;
684+
675 if (modelIndex > 0) {
685 if (modelIndex > 0) {
676 const QString prevSection = m_delegateModel->stringValue(modelIndex - 1, m_sectionProperty);
686 const QString prevSection = m_delegateModel->stringValue(modelIndex - 1, m_sectionProperty);
677 if (section == prevSection)
687 if (section == prevSection)
@@ -684,8 +694,8 @@ QQuickItem *ListViewWithPageHeader::getSectionItem(int modelIndex, bool alreadyI
684 // Steal the section header
694 // Steal the section header
685 ListItem *nextItem = itemAtIndex(modelIndex); // Not +1 since not yet inserted into m_visibleItems
695 ListItem *nextItem = itemAtIndex(modelIndex); // Not +1 since not yet inserted into m_visibleItems
686 if (nextItem) {
696 if (nextItem) {
687− QQuickItem *sectionItem = nextItem->m_sectionItem;
697+ QQuickItem *sectionItem = nextItem->sectionItem();
688− nextItem->m_sectionItem = nullptr;
698+ nextItem->setSectionItem(nullptr);
689 return sectionItem;
699 return sectionItem;
690 }
700 }
691 }
701 }
@@ -793,7 +803,7 @@ ListViewWithPageHeader::ListItem *ListViewWithPageHeader::createItem(int modelIn
793// qDebug() << "ListViewWithPageHeader::createItem::We have the item" << modelIndex << item;
803// qDebug() << "ListViewWithPageHeader::createItem::We have the item" << modelIndex << item;
794 ListItem *listItem = new ListItem;
804 ListItem *listItem = new ListItem;
795 listItem->m_item = item;
805 listItem->m_item = item;
796− listItem->m_sectionItem = getSectionItem(modelIndex, false /*Not yet inserted into m_visibleItems*/);
806+ listItem->setSectionItem(getSectionItem(modelIndex, false /*Not yet inserted into m_visibleItems*/));
797 QQuickItemPrivate::get(item)->addItemChangeListener(this, QQuickItemPrivate::Geometry);
807 QQuickItemPrivate::get(item)->addItemChangeListener(this, QQuickItemPrivate::Geometry);
798 ListItem *prevItem = itemAtIndex(modelIndex - 1);
808 ListItem *prevItem = itemAtIndex(modelIndex - 1);
799 bool lostItem = false; // Is an item that we requested async but because of model changes
809 bool lostItem = false; // Is an item that we requested async but because of model changes
@@ -832,8 +842,8 @@ ListViewWithPageHeader::ListItem *ListViewWithPageHeader::createItem(int modelIn
832 m_firstVisibleIndex = modelIndex;
842 m_firstVisibleIndex = modelIndex;
833 polish();
843 polish();
834 }
844 }
835− if (listItem->m_sectionItem) {
845+ if (listItem->sectionItem()) {
836− QQmlContext *context = QQmlEngine::contextForObject(listItem->m_sectionItem)->parentContext();
846+ QQmlContext *context = QQmlEngine::contextForObject(listItem->sectionItem())->parentContext();
837 context->setContextProperty(QLatin1String("delegateIndex"), modelIndex);
847 context->setContextProperty(QLatin1String("delegateIndex"), modelIndex);
838 }
848 }
839 adjustMinYExtent();
849 adjustMinYExtent();
@@ -861,6 +871,7 @@ void ListViewWithPageHeader::itemCreated(int modelIndex, QObject *object)
861 QQmlContext *context = QQmlEngine::contextForObject(item)->parentContext();
871 QQmlContext *context = QQmlEngine::contextForObject(item)->parentContext();
862 context->setContextProperty(QLatin1String("ListViewWithPageHeader"), this);
872 context->setContextProperty(QLatin1String("ListViewWithPageHeader"), this);
863 context->setContextProperty(QLatin1String("heightToClip"), QVariant::fromValue<int>(0));
873 context->setContextProperty(QLatin1String("heightToClip"), QVariant::fromValue<int>(0));
874+ context->setContextProperty(QLatin1String("hasSectionHeader"), QVariant::fromValue<bool>(false));
864 if (modelIndex == m_asyncRequestedIndex) {
875 if (modelIndex == m_asyncRequestedIndex) {
865 createItem(modelIndex, false);
876 createItem(modelIndex, false);
866 refill();
877 refill();
@@ -915,11 +926,11 @@ void ListViewWithPageHeader::onModelUpdated(const QQmlChangeSet &changeSet, bool
915 if (visibleIndex >= 0 && visibleIndex < m_visibleItems.count()) {
926 if (visibleIndex >= 0 && visibleIndex < m_visibleItems.count()) {
916 ListItem *item = m_visibleItems[visibleIndex];
927 ListItem *item = m_visibleItems[visibleIndex];
917 // Pass the section item down if needed
928 // Pass the section item down if needed
918− if (item->m_sectionItem && visibleIndex + 1 < m_visibleItems.count()) {
929+ if (item->sectionItem() && visibleIndex + 1 < m_visibleItems.count()) {
919 ListItem *nextItem = m_visibleItems[visibleIndex + 1];
930 ListItem *nextItem = m_visibleItems[visibleIndex + 1];
920− if (!nextItem->m_sectionItem) {
931+ if (!nextItem->sectionItem()) {
921− nextItem->m_sectionItem = item->m_sectionItem;
932+ nextItem->setSectionItem(item->sectionItem());
922− item->m_sectionItem = nullptr;
933+ item->setSectionItem(nullptr);
923 }
934 }
924 }
935 }
925 releaseItem(item);
936 releaseItem(item);
@@ -982,11 +993,11 @@ void ListViewWithPageHeader::onModelUpdated(const QQmlChangeSet &changeSet, bool
982 // if we need adding a new section item
993 // if we need adding a new section item
983 if (m_sectionDelegate) {
994 if (m_sectionDelegate) {
984 ListItem *nextItem = itemAtIndex(modelIndex + 1);
995 ListItem *nextItem = itemAtIndex(modelIndex + 1);
985− if (nextItem && !nextItem->m_sectionItem) {
996+ if (nextItem && !nextItem->sectionItem()) {
986− nextItem->m_sectionItem = getSectionItem(modelIndex + 1, true /* alredy inserted into m_visibleItems*/);
997+ nextItem->setSectionItem(getSectionItem(modelIndex + 1, true /* alredy inserted into m_visibleItems*/));
987− if (growUp && nextItem->m_sectionItem) {
998+ if (growUp && nextItem->sectionItem()) {
988 ListItem *firstItem = m_visibleItems.first();
999 ListItem *firstItem = m_visibleItems.first();
989− firstItem->setY(firstItem->y() - nextItem->m_sectionItem->height());
1000+ firstItem->setY(firstItem->y() - nextItem->sectionItem()->height());
990 }
1001 }
991 }
1002 }
992 }
1003 }
@@ -1012,8 +1023,8 @@ void ListViewWithPageHeader::onModelUpdated(const QQmlChangeSet &changeSet, bool
1012// qDebug() << "ListViewWithPageHeader::onModelUpdated Change" << change.index << change.count;
1023// qDebug() << "ListViewWithPageHeader::onModelUpdated Change" << change.index << change.count;
1013 for (int i = change.index; i < change.count; ++i) {
1024 for (int i = change.index; i < change.count; ++i) {
1014 ListItem *item = itemAtIndex(i);
1025 ListItem *item = itemAtIndex(i);
1015− if (item && item->m_sectionItem) {
1026+ if (item && item->sectionItem()) {
1016− QQmlContext *context = QQmlEngine::contextForObject(item->m_sectionItem)->parentContext();
1027+ QQmlContext *context = QQmlEngine::contextForObject(item->sectionItem())->parentContext();
1017 const QString sectionText = m_delegateModel->stringValue(i, m_sectionProperty);
1028 const QString sectionText = m_delegateModel->stringValue(i, m_sectionProperty);
1018 context->setContextProperty(QLatin1String("section"), sectionText);
1029 context->setContextProperty(QLatin1String("section"), sectionText);
1019 }
1030 }
@@ -1026,8 +1037,8 @@ void ListViewWithPageHeader::onModelUpdated(const QQmlChangeSet &changeSet, bool
1026
1037
1027 for (int i = 0; i < m_visibleItems.count(); ++i) {
1038 for (int i = 0; i < m_visibleItems.count(); ++i) {
1028 ListItem *item = m_visibleItems[i];
1039 ListItem *item = m_visibleItems[i];
1029− if (item->m_sectionItem) {
1040+ if (item->sectionItem()) {
1030− QQmlContext *context = QQmlEngine::contextForObject(item->m_sectionItem)->parentContext();
1041+ QQmlContext *context = QQmlEngine::contextForObject(item->sectionItem())->parentContext();
1031 context->setContextProperty(QLatin1String("delegateIndex"), m_firstVisibleIndex + i);
1042 context->setContextProperty(QLatin1String("delegateIndex"), m_firstVisibleIndex + i);
1032 }
1043 }
1033 }
1044 }
@@ -1156,18 +1167,18 @@ void ListViewWithPageHeader::layout()
1156 if (topSectionStickPos > pos) {
1167 if (topSectionStickPos > pos) {
1157 showStickySectionItem = true;
1168 showStickySectionItem = true;
1158 } else if (topSectionStickPos == pos) {
1169 } else if (topSectionStickPos == pos) {
1159− showStickySectionItem = !item->m_sectionItem;
1170+ showStickySectionItem = !item->sectionItem();
1160 } else {
1171 } else {
1161 showStickySectionItem = false;
1172 showStickySectionItem = false;
1162 }
1173 }
1163 if (!showStickySectionItem) {
1174 if (!showStickySectionItem) {
1164 QQuickItemPrivate::get(m_topSectionItem)->setCulled(true);
1175 QQuickItemPrivate::get(m_topSectionItem)->setCulled(true);
1165− if (item->m_sectionItem) {
1176+ if (item->sectionItem()) {
1166 // This seems it should happen since why would we cull the top section
1177 // This seems it should happen since why would we cull the top section
1167 // if the first visible item has no section header? This only happens briefly
1178 // if the first visible item has no section header? This only happens briefly
1168 // when increasing the height of a list that is at the bottom, the m_topSectionItem
1179 // when increasing the height of a list that is at the bottom, the m_topSectionItem
1169 // gets shown shortly in the next polish call
1180 // gets shown shortly in the next polish call
1170− QQuickItemPrivate::get(item->m_sectionItem)->setCulled(false);
1181+ QQuickItemPrivate::get(item->sectionItem())->setCulled(false);
1171 }
1182 }
1172 } else {
1183 } else {
1173 // Update the top sticky section header
1184 // Update the top sticky section header
@@ -1186,14 +1197,14 @@ void ListViewWithPageHeader::layout()
1186 delegateIndex--;
1197 delegateIndex--;
1187 }
1198 }
1188 context->setContextProperty(QLatin1String("delegateIndex"), delegateIndex);
1199 context->setContextProperty(QLatin1String("delegateIndex"), delegateIndex);
1189− if (item->m_sectionItem) {
1200+ if (item->sectionItem()) {
1190− QQuickItemPrivate::get(item->m_sectionItem)->setCulled(true);
1201+ QQuickItemPrivate::get(item->sectionItem())->setCulled(true);
1191 }
1202 }
1192 }
1203 }
1193 }
1204 }
1194 }
1205 }
1195 QQmlContext *context = QQmlEngine::contextForObject(item->m_item)->parentContext();
1206 QQmlContext *context = QQmlEngine::contextForObject(item->m_item)->parentContext();
1196− const qreal clipFrom = visibleFrom + (!item->m_sectionItem && m_topSectionItem && !QQuickItemPrivate::get(m_topSectionItem)->culled ? m_topSectionItem->height() : 0);
1207+ const qreal clipFrom = visibleFrom + (!item->sectionItem() && m_topSectionItem && !QQuickItemPrivate::get(m_topSectionItem)->culled ? m_topSectionItem->height() : 0);
1197 if (!cull && pos < clipFrom) {
1208 if (!cull && pos < clipFrom) {
1198 context->setContextProperty(QLatin1String("heightToClip"), clipFrom - pos);
1209 context->setContextProperty(QLatin1String("heightToClip"), clipFrom - pos);
1199 } else {
1210 } else {
@@ -1210,7 +1221,7 @@ void ListViewWithPageHeader::layout()
1210 if (firstReallyVisibleItem >= 0) {
1221 if (firstReallyVisibleItem >= 0) {
1211 for (int i = firstReallyVisibleItem - m_firstVisibleIndex + 1; i < m_visibleItems.count(); ++i) {
1222 for (int i = firstReallyVisibleItem - m_firstVisibleIndex + 1; i < m_visibleItems.count(); ++i) {
1212 ListItem *item = m_visibleItems[i];
1223 ListItem *item = m_visibleItems[i];
1213− if (item->m_sectionItem) {
1224+ if (item->sectionItem()) {
1214 if (m_topSectionItem->y() + m_topSectionItem->height() > item->y()) {
1225 if (m_topSectionItem->y() + m_topSectionItem->height() > item->y()) {
1215 m_topSectionItem->setY(item->y() - m_topSectionItem->height());
1226 m_topSectionItem->setY(item->y() - m_topSectionItem->height());
1216 }
1227 }
plugins/DashViews/listviewwithpageheader.h → plugins/Dash/listviewwithpageheader.hrenamed+9−5
@@ -102,11 +102,11 @@ Q_SIGNALS:
102 void stickyHeaderHeightChanged();
102 void stickyHeaderHeightChanged();
103
103
104protected:
104protected:
105− void componentComplete();
105+ void componentComplete() override;
106− void viewportMoved(Qt::Orientations orient);
106+ void viewportMoved(Qt::Orientations orient) override;
107− qreal minYExtent() const;
107+ qreal minYExtent() const override;
108− void itemGeometryChanged(QQuickItem *item, const QRectF &newGeometry, const QRectF &oldGeometry);
108+ void itemGeometryChanged(QQuickItem *item, const QRectF &newGeometry, const QRectF &oldGeometry) override;
109− void updatePolish();
109+ void updatePolish() override;
110
110
111private Q_SLOTS:
111private Q_SLOTS:
112 void itemCreated(int modelIndex, QObject *object);
112 void itemCreated(int modelIndex, QObject *object);
@@ -128,7 +128,11 @@ private:
128 bool culled() const;
128 bool culled() const;
129 void setCulled(bool culled);
129 void setCulled(bool culled);
130
130
131+ QQuickItem *sectionItem() const { return m_sectionItem; }
132+ void setSectionItem(QQuickItem *sectionItem);
133+
131 QQuickItem *m_item;
134 QQuickItem *m_item;
135+ private:
132 QQuickItem *m_sectionItem;
136 QQuickItem *m_sectionItem;
133 };
137 };
134
138
plugins/DashViews/organicgrid.cpp → plugins/Dash/organicgrid.cpprenamed

The content is the same.

plugins/DashViews/organicgrid.h → plugins/Dash/organicgrid.hrenamed

The content is the same.

plugins/DashViews/plugin.cpp → plugins/Dash/plugin.cpprenamed+2−2
@@ -24,9 +24,9 @@
24
24
25#include <QAbstractItemModel>
25#include <QAbstractItemModel>
26
26
27−void DashViewsPlugin::registerTypes(const char *uri)
27+void DashPlugin::registerTypes(const char *uri)
28{
28{
29− Q_ASSERT(uri == QLatin1String("DashViews"));
29+ Q_ASSERT(uri == QLatin1String("Dash"));
30 qmlRegisterType<QAbstractItemModel>();
30 qmlRegisterType<QAbstractItemModel>();
31 qmlRegisterType<HorizontalJournal>(uri, 0, 1, "HorizontalJournal");
31 qmlRegisterType<HorizontalJournal>(uri, 0, 1, "HorizontalJournal");
32 qmlRegisterType<ListViewWithPageHeader>(uri, 0, 1, "ListViewWithPageHeader");
32 qmlRegisterType<ListViewWithPageHeader>(uri, 0, 1, "ListViewWithPageHeader");
plugins/DashViews/plugin.h → plugins/Dash/plugin.hrenamed+3−3
@@ -15,13 +15,13 @@
15 *
15 *
16 */
16 */
17
17
18−#ifndef DASHVIEWS_PLUGIN_H
18+#ifndef DASH_PLUGIN_H
19−#define DASHVIEWS_PLUGIN_H
19+#define DASH_PLUGIN_H
20
20
21#include <QtQml/QQmlEngine>
21#include <QtQml/QQmlEngine>
22#include <QtQml/QQmlExtensionPlugin>
22#include <QtQml/QQmlExtensionPlugin>
23
23
24−class DashViewsPlugin : public QQmlExtensionPlugin
24+class DashPlugin : public QQmlExtensionPlugin
25{
25{
26 Q_OBJECT
26 Q_OBJECT
27 Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
27 Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
plugins/Dash/qmldirnew file+4
@@ -0,0 +1,4 @@
1+module Dash
2+plugin Dash-qml
3+typeinfo Dash.qmltypes
4+singleton CardCreatorCache 0.1 CardCreatorCache.qml
plugins/DashViews/verticaljournal.cpp → plugins/Dash/verticaljournal.cpprenamed

The content is the same.

plugins/DashViews/verticaljournal.h → plugins/Dash/verticaljournal.hrenamed

The content is the same.

plugins/DashViews/qmldirdeleted−3
@@ -1,3 +0,0 @@
1−module DashViews
2−plugin DashViews-qml
3−typeinfo plugin.qmltypes
plugins/HudClient/CMakeLists.txt+1−6
@@ -1,6 +1,3 @@
1−# export_qmlplugin macro
2−include(Plugins)
3−
4find_package(Qt5Core REQUIRED)
1find_package(Qt5Core REQUIRED)
5find_package(Qt5Quick REQUIRED)
2find_package(Qt5Quick REQUIRED)
6pkg_search_module(DEE dee-1.0 REQUIRED)
3pkg_search_module(DEE dee-1.0 REQUIRED)
@@ -38,6 +35,4 @@ target_link_libraries(HudClientQml
38
35
39qt5_use_modules(HudClientQml Qml)
36qt5_use_modules(HudClientQml Qml)
40
37
41−# export the qmldir qmltypes and plugin files
42−export_qmlfiles(HudClient HudClient)
43−export_qmlplugin(HudClient 0.1 HudClient TARGETS HudClientQml)
38+add_unity8_plugin(HudClient 0.1 HudClient TARGETS HudClientQml)
plugins/HudClient/qmldir+1−1
@@ -1,3 +1,3 @@
1module HudClient
1module HudClient
2plugin HudClientQml
2plugin HudClientQml
3−typeinfo plugin.qmltypes
3+typeinfo HudClient.qmltypes
plugins/LightDM/CMakeLists.txt+1−6
@@ -1,6 +1,3 @@
1−# export_qmlplugin macro
2−include(Plugins)
3−
4# Dependencies
1# Dependencies
5include(FindPkgConfig)
2include(FindPkgConfig)
6pkg_check_modules(LIBUSERMETRICSOUTPUT REQUIRED libusermetricsoutput-1)
3pkg_check_modules(LIBUSERMETRICSOUTPUT REQUIRED libusermetricsoutput-1)
@@ -37,6 +34,4 @@ target_link_libraries(LightDM-qml
37
34
38qt5_use_modules(LightDM-qml DBus Gui Qml)
35qt5_use_modules(LightDM-qml DBus Gui Qml)
39
36
40−# export the qmldir qmltypes and plugin files
41−export_qmlfiles(LightDM LightDM)
42−export_qmlplugin(LightDM 0.1 LightDM TARGETS LightDM-qml)
37+add_unity8_plugin(LightDM 0.1 LightDM TARGETS LightDM-qml)
plugins/LightDM/qmldir+1−1
@@ -1,3 +1,3 @@
1module LightDM
1module LightDM
2plugin LightDM-qml
2plugin LightDM-qml
3−typeinfo plugin.qmltypes
3+typeinfo LightDM.qmltypes
plugins/Powerd/CMakeLists.txt+1−3
@@ -1,4 +1,3 @@
1−include(Plugins)
2include(FindPkgConfig)
1include(FindPkgConfig)
3
2
4pkg_search_module(GIO REQUIRED gio-2.0)
3pkg_search_module(GIO REQUIRED gio-2.0)
@@ -17,5 +16,4 @@ add_library(Powerd-qml MODULE
17qt5_use_modules(Powerd-qml DBus Qml)
16qt5_use_modules(Powerd-qml DBus Qml)
18target_link_libraries(Powerd-qml ${GIO_LDFLAGS})
17target_link_libraries(Powerd-qml ${GIO_LDFLAGS})
19
18
20−export_qmlfiles(Powerd Powerd)
21−export_qmlplugin(Powerd 0.1 Powerd TARGETS Powerd-qml)
19+add_unity8_plugin(Powerd 0.1 Powerd TARGETS Powerd-qml)
plugins/Powerd/qmldir+1−1
@@ -1,3 +1,3 @@
1module Powerd
1module Powerd
2plugin Powerd-qml
2plugin Powerd-qml
3−typeinfo plugin.qmltypes
3+typeinfo Powerd.qmltypes
plugins/SessionBroadcast/CMakeLists.txt+1−4
@@ -1,5 +1,3 @@
1−include(Plugins)
2−
3add_definitions(-DSM_BUSNAME=systemBus)
1add_definitions(-DSM_BUSNAME=systemBus)
4
2
5add_library(SessionBroadcast-qml MODULE
3add_library(SessionBroadcast-qml MODULE
@@ -9,5 +7,4 @@ add_library(SessionBroadcast-qml MODULE
9
7
10qt5_use_modules(SessionBroadcast-qml DBus Qml)
8qt5_use_modules(SessionBroadcast-qml DBus Qml)
11
9
12−export_qmlfiles(SessionBroadcast SessionBroadcast)
13−export_qmlplugin(SessionBroadcast 0.1 SessionBroadcast TARGETS SessionBroadcast-qml)
10+add_unity8_plugin(SessionBroadcast 0.1 SessionBroadcast TARGETS SessionBroadcast-qml)
plugins/SessionBroadcast/qmldir+1−1
@@ -1,3 +1,3 @@
1module SessionBroadcast
1module SessionBroadcast
2plugin SessionBroadcast-qml
2plugin SessionBroadcast-qml
3−typeinfo plugin.qmltypes
3+typeinfo SessionBroadcast.qmltypes
plugins/Ubuntu/DownloadDaemonListener/CMakeLists.txt+1−6
@@ -1,6 +1,3 @@
1−# export_qmlplugin macro
2−include(Plugins)
3−
4include_directories(
1include_directories(
5 ${CMAKE_CURRENT_SOURCE_DIR}
2 ${CMAKE_CURRENT_SOURCE_DIR}
6 ${CMAKE_CURRENT_BINARY_DIR}
3 ${CMAKE_CURRENT_BINARY_DIR}
@@ -17,6 +14,4 @@ add_library(DownloadDaemonListener MODULE ${DOWNLOADDAEMONLISTENER_SOURCES})
17
14
18qt5_use_modules(DownloadDaemonListener Qml Quick DBus Core)
15qt5_use_modules(DownloadDaemonListener Qml Quick DBus Core)
19
16
20−# export the qmldir qmltypes and plugin files
21−export_qmlfiles(Ubuntu.DownloadDaemonListener Ubuntu/DownloadDaemonListener)
22−export_qmlplugin(Ubuntu.DownloadDaemonListener 0.1 Ubuntu/DownloadDaemonListener TARGETS DownloadDaemonListener)
17+add_unity8_plugin(Ubuntu.DownloadDaemonListener 0.1 Ubuntu/DownloadDaemonListener TARGETS DownloadDaemonListener)
plugins/Ubuntu/DownloadDaemonListener/qmldir+1−1
@@ -1,3 +1,3 @@
1module Ubuntu.DownloadDaemonListener
1module Ubuntu.DownloadDaemonListener
2plugin DownloadDaemonListener
2plugin DownloadDaemonListener
3−typeinfo plugins.qmltypes
3+typeinfo DownloadDaemonListener.qmltypes
plugins/Ubuntu/Gestures/CMakeLists.txt+1−6
@@ -1,6 +1,3 @@
1−# export_qmlplugin macro
2−include(Plugins)
3−
4set(UbuntuGestureQml_SOURCES
1set(UbuntuGestureQml_SOURCES
5 plugin.cpp
2 plugin.cpp
6 AxisVelocityCalculator.cpp
3 AxisVelocityCalculator.cpp
@@ -19,6 +16,4 @@ qt5_use_modules(UbuntuGestureQml Core Quick)
19# So that Foo.cpp can #include "Foo.moc"
16# So that Foo.cpp can #include "Foo.moc"
20include_directories(${CMAKE_CURRENT_BINARY_DIR})
17include_directories(${CMAKE_CURRENT_BINARY_DIR})
21
18
22−# export the qmldir qmltypes and plugin files
23−export_qmlfiles(Ubuntu.Gestures Ubuntu/Gestures)
24−export_qmlplugin(Ubuntu.Gestures 0.1 Ubuntu/Gestures TARGETS UbuntuGestureQml)
19+add_unity8_plugin(Ubuntu.Gestures 0.1 Ubuntu/Gestures TARGETS UbuntuGestureQml)
plugins/Ubuntu/Gestures/qmldir+1−1
@@ -1,3 +1,3 @@
1module Ubuntu.Gestures
1module Ubuntu.Gestures
2plugin UbuntuGestureQml
2plugin UbuntuGestureQml
3−typeinfo plugin.qmltypes
3+typeinfo Gestures.qmltypes
plugins/Unity/Indicators/CMakeLists.txt+4−7
@@ -1,6 +1,3 @@
1−# export_qmlplugin macro
2−include(Plugins)
3−
4project(IndicatorsQml)
1project(IndicatorsQml)
5
2
6pkg_check_modules(GLIB REQUIRED glib-2.0>=2.32)
3pkg_check_modules(GLIB REQUIRED glib-2.0>=2.32)
@@ -10,8 +7,6 @@ pkg_check_modules(QMENUMODEL REQUIRED qmenumodel)
10find_package(Qt5Core REQUIRED)
7find_package(Qt5Core REQUIRED)
11find_package(Qt5Quick REQUIRED)
8find_package(Qt5Quick REQUIRED)
12
9
13−add_subdirectory(qml)
14−
15include_directories(
10include_directories(
16 ${CMAKE_CURRENT_SOURCE_DIR}
11 ${CMAKE_CURRENT_SOURCE_DIR}
17 ${CMAKE_CURRENT_BINARY_DIR}
12 ${CMAKE_CURRENT_BINARY_DIR}
@@ -56,5 +51,7 @@ target_link_libraries(IndicatorsQml
56
51
57qt5_use_modules(IndicatorsQml Core Qml Quick)
52qt5_use_modules(IndicatorsQml Core Qml Quick)
58
53
59−# export the qmltypes and plugin files
60−export_qmlplugin(Unity.Indicators 0.1 Unity/Indicators TARGETS IndicatorsQml)
54+add_unity8_plugin(Unity.Indicators 0.1 Unity/Indicators
55+ SEARCH_PATH qml
56+ TARGETS IndicatorsQml
57+)
plugins/Unity/Indicators/menucontentactivator.cpp−1
@@ -316,7 +316,6 @@ MenuContentState* MenuContentActivatorPrivate::content_at(QQmlListProperty<MenuC
316 if (!d->m_content.contains(index)) {
316 if (!d->m_content.contains(index)) {
317 MenuContentState* content = new MenuContentState(false);
317 MenuContentState* content = new MenuContentState(false);
318 d->m_content[index] = content;
318 d->m_content[index] = content;
319− Q_EMIT p->contentChanged();
320 return content;
319 return content;
321 }
320 }
322
321
plugins/Unity/Indicators/qml/CMakeLists.txtdeleted−5
@@ -1,5 +0,0 @@
1−# export_qmlplugin macro
2−include(Plugins)
3−
4−# export the qmldir, *.qml files.
5−export_qmlfiles(Unity.Indicators Unity/Indicators)
plugins/Unity/Indicators/qml/qmldir+1−1
@@ -1,6 +1,6 @@
1module Unity.Indicators
1module Unity.Indicators
2plugin IndicatorsQml
2plugin IndicatorsQml
3−typeinfo plugin.qmltypes
3+typeinfo Indicators.qmltypes
4
4
5CachedUnityMenuModel 0.1 CachedUnityMenuModel.qml
5CachedUnityMenuModel 0.1 CachedUnityMenuModel.qml
6IndicatorBase 0.1 IndicatorBase.qml
6IndicatorBase 0.1 IndicatorBase.qml
plugins/Unity/Indicators/rootactionstate.cpp+7−8
@@ -240,19 +240,18 @@ QVariant RootActionState::toQVariant(GVariant* state) const
240
240
241 QStringList icons;
241 QStringList icons;
242
242
243− if (g_variant_type_is_array(g_variant_get_type(vvalue))) {
243+ if (g_variant_is_of_type(vvalue, G_VARIANT_TYPE("av"))) {
244−
244+ GVariantIter iter;
245−
245+ GVariant *val = 0;
246− for (int i = 0, iMax = g_variant_n_children(vvalue); i < iMax; i++) {
246+ g_variant_iter_init (&iter, vvalue);
247− GVariant *child = g_variant_get_child_value(vvalue, i);
247+ while (g_variant_iter_loop (&iter, "v", &val))
248−
248+ {
249 // FIXME - should be sending a url.
249 // FIXME - should be sending a url.
250− GIcon *gicon = g_icon_deserialize (child);
250+ GIcon *gicon = g_icon_deserialize (val);
251 if (gicon) {
251 if (gicon) {
252 icons << iconUri(gicon);
252 icons << iconUri(gicon);
253 g_object_unref (gicon);
253 g_object_unref (gicon);
254 }
254 }
255− g_variant_unref(child);
256 }
255 }
257 }
256 }
258 // will overwrite icon.
257 // will overwrite icon.
plugins/Unity/Launcher/CMakeLists.txt+1−3
@@ -32,6 +32,4 @@ target_link_libraries(UnityLauncher-qml ${GSETTINGS_QT_LDFLAGS})
32
32
33qt5_use_modules(UnityLauncher-qml DBus Qml)
33qt5_use_modules(UnityLauncher-qml DBus Qml)
34
34
35−# export the qmldir and qmltypes files
36−export_qmlfiles(Unity.Launcher Unity/Launcher)
37−export_qmlplugin(Unity.Launcher 0.1 Unity/Launcher TARGETS UnityLauncher-qml)
35+add_unity8_plugin(Unity.Launcher 0.1 Unity/Launcher TARGETS UnityLauncher-qml)
plugins/Unity/Launcher/backend/launcherbackend.cpp+29−15
@@ -31,7 +31,6 @@
31class LauncherBackendItem
31class LauncherBackendItem
32{
32{
33public:
33public:
34− QString desktopFile;
35 QString displayName;
34 QString displayName;
36 QString icon;
35 QString icon;
37 int count;
36 int count;
@@ -107,11 +106,6 @@ void LauncherBackend::setStoredApplications(const QStringList &appIds)
107
106
108QString LauncherBackend::desktopFile(const QString &appId) const
107QString LauncherBackend::desktopFile(const QString &appId) const
109{
108{
110− LauncherBackendItem *item = m_itemCache.value(appId, nullptr);
111− if (item) {
112− return item->desktopFile;
113− }
114−
115 return findDesktopFile(appId);
109 return findDesktopFile(appId);
116}
110}
117
111
@@ -264,13 +258,33 @@ void LauncherBackend::syncFromAccounts()
264 Q_FOREACH(const QString &entry, gSettings.get("favorites").toStringList()) {
258 Q_FOREACH(const QString &entry, gSettings.get("favorites").toStringList()) {
265 if (entry.startsWith("application://")) {
259 if (entry.startsWith("application://")) {
266 QString appId = entry;
260 QString appId = entry;
267− // Transform "application://foobar.desktop" to "foobar"
261+ // Transform "application://foobar.desktop" to "application://foobar"
268 appId.remove("application://");
262 appId.remove("application://");
269 if (appId.endsWith(".desktop")) {
263 if (appId.endsWith(".desktop")) {
270 appId.chop(8);
264 appId.chop(8);
271 }
265 }
272 QString df = findDesktopFile(appId);
266 QString df = findDesktopFile(appId);
273
267
268+ if (!df.isEmpty()) {
269+ m_storedApps << appId;
270+
271+ if (!m_itemCache.contains(appId)) {
272+ m_itemCache.insert(appId, parseDesktopFile(df));
273+ }
274+ }
275+ }
276+ if (entry.startsWith("appid://")) {
277+ QString appId = entry;
278+ appId.remove("appid://");
279+ // Strip hook name and current-user-version in case its there
280+
281+ if (appId.split('/').count() != 3) {
282+ qWarning() << "ignoring entry " + appId + ". Not a valid appId.";
283+ continue;
284+ }
285+ appId = appId.split('/').first() + "_" + appId.split('/').at(1);
286+ QString df = findDesktopFile(appId);
287+
274 if (!df.isEmpty()) {
288 if (!df.isEmpty()) {
275 m_storedApps << appId;
289 m_storedApps << appId;
276
290
@@ -315,10 +329,13 @@ QString LauncherBackend::findDesktopFile(const QString &appId) const
315 helper = helper.replace(dashPos, 1, '/');
329 helper = helper.replace(dashPos, 1, '/');
316 }
330 }
317
331
318− Q_FOREACH(const QString &searchDir, searchDirs) {
332+ Q_FOREACH(const QString &searchDirName, searchDirs) {
319− QFileInfo fileInfo(QDir(searchDir), helper + ".desktop");
333+ QDir searchDir(searchDirName);
320− if (fileInfo.exists()) {
334+ Q_FOREACH(const QString &desktopFile, searchDir.entryList(QStringList() << "*.desktop")) {
335+ if (desktopFile.startsWith(helper)) {
336+ QFileInfo fileInfo(searchDir, desktopFile);
321− return fileInfo.absoluteFilePath();
337+ return fileInfo.absoluteFilePath();
338+ }
322 }
339 }
323 }
340 }
324
341
@@ -333,7 +350,6 @@ LauncherBackendItem* LauncherBackend::parseDesktopFile(const QString &desktopFil
333 QSettings settings(desktopFile, QSettings::IniFormat);
350 QSettings settings(desktopFile, QSettings::IniFormat);
334
351
335 LauncherBackendItem* item = new LauncherBackendItem();
352 LauncherBackendItem* item = new LauncherBackendItem();
336− item->desktopFile = desktopFile;
337 item->displayName = settings.value("Desktop Entry/Name").toString();
353 item->displayName = settings.value("Desktop Entry/Name").toString();
338
354
339 QString iconString = settings.value("Desktop Entry/Icon").toString();
355 QString iconString = settings.value("Desktop Entry/Icon").toString();
@@ -367,7 +383,7 @@ LauncherBackendItem* LauncherBackend::getItem(const QString &appId) const
367 qWarning() << "Unable to parse desktop file for" << appId << "path" << df;
383 qWarning() << "Unable to parse desktop file for" << appId << "path" << df;
368 }
384 }
369 } else {
385 } else {
370− qDebug() << "Unable to find desktop file for:" << appId;
386+ qWarning() << "Unable to find desktop file for:" << appId;
371 }
387 }
372 }
388 }
373
389
@@ -391,7 +407,6 @@ void LauncherBackend::loadFromVariant(const QVariantMap &details)
391
407
392 item = new LauncherBackendItem();
408 item = new LauncherBackendItem();
393
409
394− item->desktopFile = details.value("desktopFile").toString();
395 item->displayName = details.value("name").toString();
410 item->displayName = details.value("name").toString();
396 item->icon = details.value("icon").toString();
411 item->icon = details.value("icon").toString();
397 item->count = details.value("count").toInt();
412 item->count = details.value("count").toInt();
@@ -408,7 +423,6 @@ QVariantMap LauncherBackend::itemToVariant(const QString &appId) const
408 details.insert("id", appId);
423 details.insert("id", appId);
409 details.insert("name", item->displayName);
424 details.insert("name", item->displayName);
410 details.insert("icon", item->icon);
425 details.insert("icon", item->icon);
411− details.insert("desktopFile", item->desktopFile);
412 details.insert("count", item->count);
426 details.insert("count", item->count);
413 details.insert("countVisible", item->countVisible);
427 details.insert("countVisible", item->countVisible);
414 return details;
428 return details;
plugins/Unity/Launcher/launchermodel.cpp+22
@@ -23,6 +23,8 @@
23
23
24#include <unity/shell/application/ApplicationInfoInterface.h>
24#include <unity/shell/application/ApplicationInfoInterface.h>
25
25
26+#include <QDebug>
27+
26using namespace unity::shell::application;
28using namespace unity::shell::application;
27
29
28LauncherModel::LauncherModel(QObject *parent):
30LauncherModel::LauncherModel(QObject *parent):
@@ -199,6 +201,22 @@ void LauncherModel::setUser(const QString &username)
199 m_backend->setUser(username);
201 m_backend->setUser(username);
200}
202}
201
203
204+QString LauncherModel::getUrlForAppId(const QString &appId) const
205+{
206+ // appId is either an appId or a legacy app name. Let's find out which
207+ if (appId.isEmpty())
208+ return QString();
209+
210+ QString df = m_backend->desktopFile(appId + ".desktop");
211+ if (!df.isEmpty())
212+ return "application:///" + appId + ".desktop";
213+
214+ QStringList parts = appId.split('_');
215+ QString package = parts.value(0);
216+ QString app = parts.value(1, "first-listed-app");
217+ return "appid://" + package + "/" + app + "/current-user-version";
218+}
219+
202ApplicationManagerInterface *LauncherModel::applicationManager() const
220ApplicationManagerInterface *LauncherModel::applicationManager() const
203{
221{
204 return m_appManager;
222 return m_appManager;
@@ -291,6 +309,10 @@ void LauncherModel::applicationAdded(const QModelIndex &parent, int row)
291 Q_UNUSED(parent);
309 Q_UNUSED(parent);
292
310
293 ApplicationInfoInterface *app = m_appManager->get(row);
311 ApplicationInfoInterface *app = m_appManager->get(row);
312+ if (!app) {
313+ qWarning() << "LauncherModel received an applicationAdded signal, but there's no such application!";
314+ return;
315+ }
294
316
295 bool found = false;
317 bool found = false;
296 Q_FOREACH(LauncherItem *item, m_list) {
318 Q_FOREACH(LauncherItem *item, m_list) {
plugins/Unity/Launcher/launchermodel.h+1
@@ -51,6 +51,7 @@ public:
51 Q_INVOKABLE void requestRemove(const QString &appId);
51 Q_INVOKABLE void requestRemove(const QString &appId);
52 Q_INVOKABLE void quickListActionInvoked(const QString &appId, int actionIndex);
52 Q_INVOKABLE void quickListActionInvoked(const QString &appId, int actionIndex);
53 Q_INVOKABLE void setUser(const QString &username);
53 Q_INVOKABLE void setUser(const QString &username);
54+ Q_INVOKABLE QString getUrlForAppId(const QString &appId) const;
54
55
55 unity::shell::application::ApplicationManagerInterface* applicationManager() const;
56 unity::shell::application::ApplicationManagerInterface* applicationManager() const;
56 void setApplicationManager(unity::shell::application::ApplicationManagerInterface *appManager);
57 void setApplicationManager(unity::shell::application::ApplicationManagerInterface *appManager);
plugins/Unity/Launcher/qmldir+1−1
@@ -1,3 +1,3 @@
1module Unity.Launcher
1module Unity.Launcher
2plugin UnityLauncher-qml
2plugin UnityLauncher-qml
3−typeinfo plugin.qmltypes
3+typeinfo Launcher.qmltypes
plugins/Utils/CMakeLists.txt+1−4
@@ -11,7 +11,6 @@ include_directories(
11)
11)
12
12
13set(QMLPLUGIN_SRC
13set(QMLPLUGIN_SRC
14− bottombarvisibilitycommunicatorshell.cpp
15 qlimitproxymodelqml.cpp
14 qlimitproxymodelqml.cpp
16 qsortfilterproxymodelqml.cpp
15 qsortfilterproxymodelqml.cpp
17 timeformatter.cpp
16 timeformatter.cpp
@@ -34,6 +33,4 @@ set_target_properties(Utils-qml PROPERTIES COMPILE_FLAGS -fvisibility=default)
34
33
35qt5_use_modules(Utils-qml Qml Quick DBus Network XmlPatterns Gui Concurrent)
34qt5_use_modules(Utils-qml Qml Quick DBus Network XmlPatterns Gui Concurrent)
36
35
37−# export the qmldir qmltypes and plugin files
38−export_qmlfiles(Utils Utils)
39−export_qmlplugin(Utils 0.1 Utils TARGETS Utils-qml)
36+add_unity8_plugin(Utils 0.1 Utils TARGETS Utils-qml)
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 @@
26#include "plugin.h"
26#include "plugin.h"
27
27
28// local
28// local
29−#include "bottombarvisibilitycommunicatorshell.h"
30#include "qlimitproxymodelqml.h"
29#include "qlimitproxymodelqml.h"
31#include "qsortfilterproxymodelqml.h"
30#include "qsortfilterproxymodelqml.h"
32#include "timeformatter.h"
31#include "timeformatter.h"
33#include "unitymenumodelpaths.h"
32#include "unitymenumodelpaths.h"
34#include "easingcurve.h"
33#include "easingcurve.h"
35
34
36−static const char* BOTTOM_BAR_VISIBILITY_COMMUNICATOR_DBUS_PATH = "/BottomBarVisibilityCommunicator";
37−static const char* DBUS_SERVICE = "com.canonical.Shell.BottomBarVisibilityCommunicator";
38−
39void UtilsPlugin::registerTypes(const char *uri)
35void UtilsPlugin::registerTypes(const char *uri)
40{
36{
41 Q_ASSERT(uri == QLatin1String("Utils"));
37 Q_ASSERT(uri == QLatin1String("Utils"));
@@ -45,16 +41,10 @@ void UtilsPlugin::registerTypes(const char *uri)
45 qmlRegisterType<UnityMenuModelPaths>(uri, 0, 1, "UnityMenuModelPaths");
41 qmlRegisterType<UnityMenuModelPaths>(uri, 0, 1, "UnityMenuModelPaths");
46 qmlRegisterType<TimeFormatter>(uri, 0, 1, "TimeFormatter");
42 qmlRegisterType<TimeFormatter>(uri, 0, 1, "TimeFormatter");
47 qmlRegisterType<GDateTimeFormatter>(uri, 0, 1, "GDateTimeFormatter");
43 qmlRegisterType<GDateTimeFormatter>(uri, 0, 1, "GDateTimeFormatter");
48− qmlRegisterUncreatableType<BottomBarVisibilityCommunicatorShell>(uri, 0, 1, "BottomBarVisibilityCommunicatorShell", "Can't create BottomBarVisibilityCommunicatorShell");
49 qmlRegisterType<EasingCurve>(uri, 0, 1, "EasingCurve");
44 qmlRegisterType<EasingCurve>(uri, 0, 1, "EasingCurve");
50}
45}
51
46
52void UtilsPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
47void UtilsPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
53{
48{
54 QQmlExtensionPlugin::initializeEngine(engine, uri);
49 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);
60}
50}
plugins/Utils/qmldir+1−1
@@ -1,3 +1,3 @@
1module Utils
1module Utils
2plugin Utils-qml
2plugin Utils-qml
3−typeinfo plugin.qmltypes
3+typeinfo Utils.qmltypes
po/am.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2014-01-18 19:28+0000\n"
11"PO-Revision-Date: 2014-01-18 19:28+0000\n"
12"Last-Translator: samson <Unknown>\n"
12"Last-Translator: samson <Unknown>\n"
13"Language-Team: Amharic <am@li.org>\n"
13"Language-Team: Amharic <am@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr ""
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr ""
85msgstr ""
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr "ሰላም %1"
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr "ሰላም"
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr ""
126msgstr ""
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr ""
130msgstr ""
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr "መላኪያ"
134msgstr "መላኪያ"
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr "ሰላም %1"
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr "ሰላም"
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr "ማረጋገጫ"
142msgstr "ማረጋገጫ"
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr "መፈለጊያ"
170msgstr "መፈለጊያ"
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr "እባክዎን ያስገቡ %1"
175msgstr "እባክዎን ያስገቡ %1"
po/ar.po+36−29
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11−"PO-Revision-Date: 2014-02-21 11:19+0000\n"
11+"PO-Revision-Date: 2014-05-22 08:22+0000\n"
12"Last-Translator: Ibrahim Saed <ibraheem5000@gmail.com>\n"
12"Last-Translator: Ibrahim Saed <ibraheem5000@gmail.com>\n"
13"Language-Team: Arabic <ar@li.org>\n"
13"Language-Team: Arabic <ar@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -75,10 +75,35 @@ msgstr ""
75"أنت الآن بارع في إيماءات الحواف ويمكنك البدء باستخدام هاتفك<br><br>انقر على "
75"أنت الآن بارع في إيماءات الحواف ويمكنك البدء باستخدام هاتفك<br><br>انقر على "
76"الشاشة للبدء"
76"الشاشة للبدء"
77
77
78+#: qml/Components/Lockscreen.qml:214
79+msgid "Emergency Call"
80+msgstr "مكالمة طوارئ"
81+
82+#: qml/Components/Lockscreen.qml:231
83+msgid "OK"
84+msgstr ""
85+
78#: qml/Components/PageHeader.qml:365
86#: qml/Components/PageHeader.qml:365
79msgid "Recent searches"
87msgid "Recent searches"
80msgstr "عمليات البحث الأخيرة"
88msgstr "عمليات البحث الأخيرة"
81
89
90+#: qml/Components/PassphraseLockscreen.qml:60
91+#, qt-format
92+msgid "Hello %1"
93+msgstr "مرحبا %1"
94+
95+#: qml/Components/PassphraseLockscreen.qml:60
96+msgid "Hello"
97+msgstr "مرحبًا"
98+
99+#: qml/Components/PinLockscreen.qml:198
100+msgid "CANCEL"
101+msgstr ""
102+
103+#: qml/Components/PinLockscreen.qml:216
104+msgid "DONE"
105+msgstr ""
106+
82#: qml/Components/SeeMore.qml:35
107#: qml/Components/SeeMore.qml:35
83msgid "See more"
108msgid "See more"
84msgstr "شاهد المزيد"
109msgstr "شاهد المزيد"
@@ -89,12 +114,7 @@ msgstr "شاهد أقل"
89
114
90#: qml/Dash/DashApps.qml:37
115#: qml/Dash/DashApps.qml:37
91msgid "Recent"
116msgid "Recent"
92−msgstr ""
117+msgstr "استُخدمت مؤخرًا"
93−
94−#: qml/Dash/PreviewListView.qml:52
95−#, qt-format
96−msgid "%1 Preview"
97−msgstr ""
98
118
99#: qml/Dash/Previews/PreviewActionCombo.qml:34
119#: qml/Dash/Previews/PreviewActionCombo.qml:34
100msgid "More..."
120msgid "More..."
@@ -104,34 +124,21 @@ msgstr "المزيد..."
104msgid "Less..."
124msgid "Less..."
105msgstr "أقل..."
125msgstr "أقل..."
106
126
107−#: qml/Dash/Previews/PreviewRatingInput.qml:81
127+#: qml/Dash/Previews/PreviewRatingInput.qml:82
108msgid "Rate this"
128msgid "Rate this"
109msgstr "قيّم ذلك"
129msgstr "قيّم ذلك"
110
130
111−#: qml/Dash/Previews/PreviewRatingInput.qml:126
131+#: qml/Dash/Previews/PreviewRatingInput.qml:128
112msgid "Add a review"
132msgid "Add a review"
113msgstr "أضف تعليق"
133msgstr "أضف تعليق"
114
134
115−#: qml/Dash/Previews/PreviewRatingInput.qml:166
135+#: qml/Dash/Previews/PreviewRatingInput.qml:168
116msgid "Send"
136msgid "Send"
117msgstr "أرسل"
137msgstr "أرسل"
118
138
119−#: qml/Greeter/Greeter.qml:151
139+#: qml/Greeter/Greeter.qml:157
120msgid "Swipe to unlock"
140msgid "Swipe to unlock"
121−msgstr ""
141+msgstr "اسحب لفتح القفل"
122−
123−#: qml/Greeter/Lockscreen.qml:149
124−msgid "Emergency Call"
125−msgstr "مكالمة طوارئ"
126−
127−#: qml/Greeter/PassphraseLockscreen.qml:59
128−#, qt-format
129−msgid "Hello %1"
130−msgstr "مرحبا %1"
131−
132−#: qml/Greeter/PassphraseLockscreen.qml:59
133−msgid "Hello"
134−msgstr "مرحبًا"
135
142
136#: qml/Hud/HudParametrizedActionsPage.qml:132
143#: qml/Hud/HudParametrizedActionsPage.qml:132
137msgid "Confirm"
144msgid "Confirm"
@@ -165,7 +172,7 @@ msgstr "من فضلك أدخِل رقم التعريف الشخصي لبطاقة
165msgid "Search"
172msgid "Search"
166msgstr "ابحث"
173msgstr "ابحث"
167
174
168−#: qml/Shell.qml:348
175+#: qml/Shell.qml:334
169#, qt-format
176#, qt-format
170msgid "Please enter %1"
177msgid "Please enter %1"
171msgstr "من فضلك أدخِل %1"
178msgstr "من فضلك أدخِل %1"
po/ast.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2014-04-04 02:16+0000\n"
11"PO-Revision-Date: 2014-04-04 02:16+0000\n"
12"Last-Translator: Xuacu Saturio <xuacusk8@gmail.com>\n"
12"Last-Translator: Xuacu Saturio <xuacusk8@gmail.com>\n"
13"Language-Team: Asturian <ast@li.org>\n"
13"Language-Team: Asturian <ast@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -76,10 +76,35 @@ msgstr ""
76"Agora domina los xestos de los bordes y pue principiar a usar el "
76"Agora domina los xestos de los bordes y pue principiar a usar el "
77"teléfonu<br><br>Toque la pantalla pa comenzar"
77"teléfonu<br><br>Toque la pantalla pa comenzar"
78
78
79+#: qml/Components/Lockscreen.qml:214
80+msgid "Emergency Call"
81+msgstr "Llamada d'emerxencia"
82+
83+#: qml/Components/Lockscreen.qml:231
84+msgid "OK"
85+msgstr ""
86+
79#: qml/Components/PageHeader.qml:365
87#: qml/Components/PageHeader.qml:365
80msgid "Recent searches"
88msgid "Recent searches"
81msgstr "Busques recientes"
89msgstr "Busques recientes"
82
90
91+#: qml/Components/PassphraseLockscreen.qml:60
92+#, qt-format
93+msgid "Hello %1"
94+msgstr "Hola %1"
95+
96+#: qml/Components/PassphraseLockscreen.qml:60
97+msgid "Hello"
98+msgstr "Hola"
99+
100+#: qml/Components/PinLockscreen.qml:198
101+msgid "CANCEL"
102+msgstr ""
103+
104+#: qml/Components/PinLockscreen.qml:216
105+msgid "DONE"
106+msgstr ""
107+
83#: qml/Components/SeeMore.qml:35
108#: qml/Components/SeeMore.qml:35
84msgid "See more"
109msgid "See more"
85msgstr "Ver más"
110msgstr "Ver más"
@@ -92,11 +117,6 @@ msgstr "Ver menos"
92msgid "Recent"
117msgid "Recent"
93msgstr "Reciente"
118msgstr "Reciente"
94
119
95−#: qml/Dash/PreviewListView.qml:52
96−#, qt-format
97−msgid "%1 Preview"
98−msgstr "Vista previa de %1"
99−
100#: qml/Dash/Previews/PreviewActionCombo.qml:34
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
101msgid "More..."
121msgid "More..."
102msgstr "Más…"
122msgstr "Más…"
@@ -105,35 +125,22 @@ msgstr "Más…"
105msgid "Less..."
125msgid "Less..."
106msgstr "Menos…"
126msgstr "Menos…"
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:81
128+#: qml/Dash/Previews/PreviewRatingInput.qml:82
109msgid "Rate this"
129msgid "Rate this"
110msgstr "Valorar esto"
130msgstr "Valorar esto"
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:126
132+#: qml/Dash/Previews/PreviewRatingInput.qml:128
113msgid "Add a review"
133msgid "Add a review"
114msgstr "Amestar una reseña"
134msgstr "Amestar una reseña"
115
135
116−#: qml/Dash/Previews/PreviewRatingInput.qml:166
136+#: qml/Dash/Previews/PreviewRatingInput.qml:168
117msgid "Send"
137msgid "Send"
118msgstr "Unviar"
138msgstr "Unviar"
119
139
120−#: qml/Greeter/Greeter.qml:151
140+#: qml/Greeter/Greeter.qml:157
121msgid "Swipe to unlock"
141msgid "Swipe to unlock"
122msgstr ""
142msgstr ""
123
143
124−#: qml/Greeter/Lockscreen.qml:149
125−msgid "Emergency Call"
126−msgstr "Llamada d'emerxencia"
127−
128−#: qml/Greeter/PassphraseLockscreen.qml:59
129−#, qt-format
130−msgid "Hello %1"
131−msgstr "Hola %1"
132−
133−#: qml/Greeter/PassphraseLockscreen.qml:59
134−msgid "Hello"
135−msgstr "Hola"
136−
137#: qml/Hud/HudParametrizedActionsPage.qml:132
144#: qml/Hud/HudParametrizedActionsPage.qml:132
138msgid "Confirm"
145msgid "Confirm"
139msgstr "Confirmar"
146msgstr "Confirmar"
@@ -166,7 +173,7 @@ msgstr "Escriba'l PIN de la SIM"
166msgid "Search"
173msgid "Search"
167msgstr "Guetar"
174msgstr "Guetar"
168
175
169−#: qml/Shell.qml:348
176+#: qml/Shell.qml:334
170#, qt-format
177#, qt-format
171msgid "Please enter %1"
178msgid "Please enter %1"
172msgstr "Introduz %1"
179msgstr "Introduz %1"
po/az.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2014-01-15 09:50+0000\n"
11"PO-Revision-Date: 2014-01-15 09:50+0000\n"
12"Last-Translator: Turan Mahmudov <turan.mahmudov@gmail.com>\n"
12"Last-Translator: Turan Mahmudov <turan.mahmudov@gmail.com>\n"
13"Language-Team: Azerbaijani <az@li.org>\n"
13"Language-Team: Azerbaijani <az@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -73,10 +73,35 @@ msgid ""
73"phone<br><br>Tap on the screen to start"
73"phone<br><br>Tap on the screen to start"
74msgstr ""
74msgstr ""
75
75
76+#: qml/Components/Lockscreen.qml:214
77+msgid "Emergency Call"
78+msgstr "Zərurət zəngi"
79+
80+#: qml/Components/Lockscreen.qml:231
81+msgid "OK"
82+msgstr ""
83+
76#: qml/Components/PageHeader.qml:365
84#: qml/Components/PageHeader.qml:365
77msgid "Recent searches"
85msgid "Recent searches"
78msgstr "Son axtarışlar"
86msgstr "Son axtarışlar"
79
87
88+#: qml/Components/PassphraseLockscreen.qml:60
89+#, qt-format
90+msgid "Hello %1"
91+msgstr "Xoş gördük %1"
92+
93+#: qml/Components/PassphraseLockscreen.qml:60
94+msgid "Hello"
95+msgstr "Xoş gördük"
96+
97+#: qml/Components/PinLockscreen.qml:198
98+msgid "CANCEL"
99+msgstr ""
100+
101+#: qml/Components/PinLockscreen.qml:216
102+msgid "DONE"
103+msgstr ""
104+
80#: qml/Components/SeeMore.qml:35
105#: qml/Components/SeeMore.qml:35
81msgid "See more"
106msgid "See more"
82msgstr ""
107msgstr ""
@@ -89,11 +114,6 @@ msgstr ""
89msgid "Recent"
114msgid "Recent"
90msgstr ""
115msgstr ""
91
116
92−#: qml/Dash/PreviewListView.qml:52
93−#, qt-format
94−msgid "%1 Preview"
95−msgstr ""
96−
97#: qml/Dash/Previews/PreviewActionCombo.qml:34
117#: qml/Dash/Previews/PreviewActionCombo.qml:34
98msgid "More..."
118msgid "More..."
99msgstr ""
119msgstr ""
@@ -102,35 +122,22 @@ msgstr ""
102msgid "Less..."
122msgid "Less..."
103msgstr ""
123msgstr ""
104
124
105−#: qml/Dash/Previews/PreviewRatingInput.qml:81
125+#: qml/Dash/Previews/PreviewRatingInput.qml:82
106msgid "Rate this"
126msgid "Rate this"
107msgstr "Qiymət ver"
127msgstr "Qiymət ver"
108
128
109−#: qml/Dash/Previews/PreviewRatingInput.qml:126
129+#: qml/Dash/Previews/PreviewRatingInput.qml:128
110msgid "Add a review"
130msgid "Add a review"
111msgstr "Rəy yaz"
131msgstr "Rəy yaz"
112
132
113−#: qml/Dash/Previews/PreviewRatingInput.qml:166
133+#: qml/Dash/Previews/PreviewRatingInput.qml:168
114msgid "Send"
134msgid "Send"
115msgstr "Göndər"
135msgstr "Göndər"
116
136
117−#: qml/Greeter/Greeter.qml:151
137+#: qml/Greeter/Greeter.qml:157
118msgid "Swipe to unlock"
138msgid "Swipe to unlock"
119msgstr ""
139msgstr ""
120
140
121−#: qml/Greeter/Lockscreen.qml:149
122−msgid "Emergency Call"
123−msgstr "Zərurət zəngi"
124−
125−#: qml/Greeter/PassphraseLockscreen.qml:59
126−#, qt-format
127−msgid "Hello %1"
128−msgstr "Xoş gördük %1"
129−
130−#: qml/Greeter/PassphraseLockscreen.qml:59
131−msgid "Hello"
132−msgstr "Xoş gördük"
133−
134#: qml/Hud/HudParametrizedActionsPage.qml:132
141#: qml/Hud/HudParametrizedActionsPage.qml:132
135msgid "Confirm"
142msgid "Confirm"
136msgstr "Təsdiqlə"
143msgstr "Təsdiqlə"
@@ -163,7 +170,7 @@ msgstr ""
163msgid "Search"
170msgid "Search"
164msgstr "Axtar"
171msgstr "Axtar"
165
172
166−#: qml/Shell.qml:348
173+#: qml/Shell.qml:334
167#, qt-format
174#, qt-format
168msgid "Please enter %1"
175msgid "Please enter %1"
169msgstr "Xahiş edirik daxil edin: %1"
176msgstr "Xahiş edirik daxil edin: %1"
po/bg.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2014-04-01 14:08+0000\n"
11"PO-Revision-Date: 2014-04-01 14:08+0000\n"
12"Last-Translator: Atanas Kovachki <Unknown>\n"
12"Last-Translator: Atanas Kovachki <Unknown>\n"
13"Language-Team: Bulgarian <bg@li.org>\n"
13"Language-Team: Bulgarian <bg@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -79,10 +79,35 @@ msgid ""
79"phone<br><br>Tap on the screen to start"
79"phone<br><br>Tap on the screen to start"
80msgstr ""
80msgstr ""
81
81
82+#: qml/Components/Lockscreen.qml:214
83+msgid "Emergency Call"
84+msgstr "Спешно повикване"
85+
86+#: qml/Components/Lockscreen.qml:231
87+msgid "OK"
88+msgstr ""
89+
82#: qml/Components/PageHeader.qml:365
90#: qml/Components/PageHeader.qml:365
83msgid "Recent searches"
91msgid "Recent searches"
84msgstr "Последни търсения"
92msgstr "Последни търсения"
85
93
94+#: qml/Components/PassphraseLockscreen.qml:60
95+#, qt-format
96+msgid "Hello %1"
97+msgstr "Здравей, %1"
98+
99+#: qml/Components/PassphraseLockscreen.qml:60
100+msgid "Hello"
101+msgstr "Здравей"
102+
103+#: qml/Components/PinLockscreen.qml:198
104+msgid "CANCEL"
105+msgstr ""
106+
107+#: qml/Components/PinLockscreen.qml:216
108+msgid "DONE"
109+msgstr ""
110+
86#: qml/Components/SeeMore.qml:35
111#: qml/Components/SeeMore.qml:35
87msgid "See more"
112msgid "See more"
88msgstr ""
113msgstr ""
@@ -95,11 +120,6 @@ msgstr ""
95msgid "Recent"
120msgid "Recent"
96msgstr "Последни"
121msgstr "Последни"
97
122
98−#: qml/Dash/PreviewListView.qml:52
99−#, qt-format
100−msgid "%1 Preview"
101−msgstr ""
102−
103#: qml/Dash/Previews/PreviewActionCombo.qml:34
123#: qml/Dash/Previews/PreviewActionCombo.qml:34
104msgid "More..."
124msgid "More..."
105msgstr ""
125msgstr ""
@@ -108,35 +128,22 @@ msgstr ""
108msgid "Less..."
128msgid "Less..."
109msgstr "По-малко..."
129msgstr "По-малко..."
110
130
111−#: qml/Dash/Previews/PreviewRatingInput.qml:81
131+#: qml/Dash/Previews/PreviewRatingInput.qml:82
112msgid "Rate this"
132msgid "Rate this"
113msgstr "Оценете това"
133msgstr "Оценете това"
114
134
115−#: qml/Dash/Previews/PreviewRatingInput.qml:126
135+#: qml/Dash/Previews/PreviewRatingInput.qml:128
116msgid "Add a review"
136msgid "Add a review"
117msgstr "Добави отзив"
137msgstr "Добави отзив"
118
138
119−#: qml/Dash/Previews/PreviewRatingInput.qml:166
139+#: qml/Dash/Previews/PreviewRatingInput.qml:168
120msgid "Send"
140msgid "Send"
121msgstr "Изпрати"
141msgstr "Изпрати"
122
142
123−#: qml/Greeter/Greeter.qml:151
143+#: qml/Greeter/Greeter.qml:157
124msgid "Swipe to unlock"
144msgid "Swipe to unlock"
125msgstr ""
145msgstr ""
126
146
127−#: qml/Greeter/Lockscreen.qml:149
128−msgid "Emergency Call"
129−msgstr "Спешно повикване"
130−
131−#: qml/Greeter/PassphraseLockscreen.qml:59
132−#, qt-format
133−msgid "Hello %1"
134−msgstr "Здравей, %1"
135−
136−#: qml/Greeter/PassphraseLockscreen.qml:59
137−msgid "Hello"
138−msgstr "Здравей"
139−
140#: qml/Hud/HudParametrizedActionsPage.qml:132
147#: qml/Hud/HudParametrizedActionsPage.qml:132
141msgid "Confirm"
148msgid "Confirm"
142msgstr "Потвърди"
149msgstr "Потвърди"
@@ -169,7 +176,7 @@ msgstr ""
169msgid "Search"
176msgid "Search"
170msgstr "Търсене"
177msgstr "Търсене"
171
178
172−#: qml/Shell.qml:348
179+#: qml/Shell.qml:334
173#, qt-format
180#, qt-format
174msgid "Please enter %1"
181msgid "Please enter %1"
175msgstr "Моля, въведете %1"
182msgstr "Моля, въведете %1"
po/br.po+68−54
@@ -7,44 +7,46 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11−"PO-Revision-Date: 2014-04-15 18:15+0000\n"
11+"PO-Revision-Date: 2014-06-16 11:41+0000\n"
12−"Last-Translator: Rouxel <vincent.rouxel@mailoo.org>\n"
12+"Last-Translator: Fohanno Thierry <thierry.fohanno@ofis-bzh.org>\n"
13"Language-Team: Breton <br@li.org>\n"
13"Language-Team: Breton <br@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
22msgid "Lock to Launcher"
22msgid "Lock to Launcher"
23−msgstr ""
23+msgstr "Stagañ ouzh al lañser"
24
24
25#: plugins/Unity/Launcher/launcheritem.cpp:73
25#: plugins/Unity/Launcher/launcheritem.cpp:73
26msgid "Unlock from Launcher"
26msgid "Unlock from Launcher"
27−msgstr ""
27+msgstr "Distagañ diouzh al lañser"
28
28
29#: qml/Components/EdgeDemoOverlay.qml:151
29#: qml/Components/EdgeDemoOverlay.qml:151
30msgid "Skip intro"
30msgid "Skip intro"
31−msgstr ""
31+msgstr "Tremen hep sellet ouzh an digoradur"
32
32
33#: qml/Components/EdgeDemo.qml:113
33#: qml/Components/EdgeDemo.qml:113
34msgid "Right edge"
34msgid "Right edge"
35−msgstr ""
35+msgstr "Bord dehoù"
36
36
37#: qml/Components/EdgeDemo.qml:114
37#: qml/Components/EdgeDemo.qml:114
38msgid "Try swiping from the right edge to unlock the phone"
38msgid "Try swiping from the right edge to unlock the phone"
39msgstr ""
39msgstr ""
40+"Lakait ho piz da riklañ adalek ar bord dehoù da zibrennañ ar pellgomzer."
40
41
41#: qml/Components/EdgeDemo.qml:145
42#: qml/Components/EdgeDemo.qml:145
42msgid "Top edge"
43msgid "Top edge"
43−msgstr ""
44+msgstr "Bord uhelañ"
44
45
45#: qml/Components/EdgeDemo.qml:146
46#: qml/Components/EdgeDemo.qml:146
46msgid "Try swiping from the top edge to access the indicators"
47msgid "Try swiping from the top edge to access the indicators"
47msgstr ""
48msgstr ""
49+"Lakait ho piz da riklañ adalek ar bord uhelañ da lakaat ar merkerioù war wel."
48
50
49#: qml/Components/EdgeDemo.qml:171
51#: qml/Components/EdgeDemo.qml:171
50msgid "Close"
52msgid "Close"
@@ -53,116 +55,128 @@ msgstr "Serriñ"
53#: qml/Components/EdgeDemo.qml:172
55#: qml/Components/EdgeDemo.qml:172
54msgid "Swipe up again to close the settings screen"
56msgid "Swipe up again to close the settings screen"
55msgstr ""
57msgstr ""
58+"Lakait ho piz da riklañ war-du ar bord uhelañ da serriñ skramm an arventennoù"
56
59
57#: qml/Components/EdgeDemo.qml:199
60#: qml/Components/EdgeDemo.qml:199
58msgid "Left edge"
61msgid "Left edge"
59−msgstr ""
62+msgstr "Bord kleiz"
60
63
61#: qml/Components/EdgeDemo.qml:200
64#: qml/Components/EdgeDemo.qml:200
62msgid "Swipe from the left to reveal the launcher for quick access to apps"
65msgid "Swipe from the left to reveal the launcher for quick access to apps"
63msgstr ""
66msgstr ""
67+"Lakait ho piz da riklañ adalek ar bord kleiz da ziskouez al lañser arloadoù "
68+"prim."
64
69
65#: qml/Components/EdgeDemo.qml:227
70#: qml/Components/EdgeDemo.qml:227
66msgid "Well done"
71msgid "Well done"
67−msgstr ""
72+msgstr "Gourc'hemennoù !"
68
73
69#: qml/Components/EdgeDemo.qml:228
74#: qml/Components/EdgeDemo.qml:228
70msgid ""
75msgid ""
71"You have now mastered the edge gestures and can start using the "
76"You have now mastered the edge gestures and can start using the "
72"phone<br><br>Tap on the screen to start"
77"phone<br><br>Tap on the screen to start"
73msgstr ""
78msgstr ""
79+"Mestroniañ a rit ar jestroù ha gallout a rit kregiñ da implijout ar "
80+"pellgomzer<br><br>Touchit d'ar skramm evit kregiñ ganti"
81+
82+#: qml/Components/Lockscreen.qml:214
83+msgid "Emergency Call"
84+msgstr "Pellgomzadenn vallus"
85+
86+#: qml/Components/Lockscreen.qml:231
87+msgid "OK"
88+msgstr "Mat eo"
74
89
75#: qml/Components/PageHeader.qml:365
90#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
91msgid "Recent searches"
77−msgstr ""
92+msgstr "Enklaskoù graet nevez zo"
93+
94+#: qml/Components/PassphraseLockscreen.qml:60
95+#, qt-format
96+msgid "Hello %1"
97+msgstr "Demat %1"
98+
99+#: qml/Components/PassphraseLockscreen.qml:60
100+msgid "Hello"
101+msgstr "Demat"
102+
103+#: qml/Components/PinLockscreen.qml:198
104+msgid "CANCEL"
105+msgstr "NULLAÑ"
106+
107+#: qml/Components/PinLockscreen.qml:216
108+msgid "DONE"
109+msgstr "ECHU"
78
110
79#: qml/Components/SeeMore.qml:35
111#: qml/Components/SeeMore.qml:35
80msgid "See more"
112msgid "See more"
81−msgstr ""
113+msgstr "Gwelet muioc'h"
82
114
83#: qml/Components/SeeMore.qml:58
115#: qml/Components/SeeMore.qml:58
84msgid "See less"
116msgid "See less"
85−msgstr ""
117+msgstr "Gwelet nebeutoc'h"
86
118
87#: qml/Dash/DashApps.qml:37
119#: qml/Dash/DashApps.qml:37
88msgid "Recent"
120msgid "Recent"
89−msgstr ""
121+msgstr "Nevez zo"
90−
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95
122
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
123#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
124msgid "More..."
98−msgstr ""
125+msgstr "Muioc'h..."
99
126
100#: qml/Dash/Previews/PreviewActionCombo.qml:34
127#: qml/Dash/Previews/PreviewActionCombo.qml:34
101msgid "Less..."
128msgid "Less..."
102−msgstr ""
129+msgstr "Nebeutoc'h..."
103
130
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
131+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
132msgid "Rate this"
106−msgstr ""
133+msgstr "Priziit an dra-mañ"
107
134
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
135+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
136msgid "Add a review"
110−msgstr ""
137+msgstr "Ouzhpennañ un ali"
111
138
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
139+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
140msgid "Send"
114−msgstr ""
141+msgstr "Kas"
115
142
116−#: qml/Greeter/Greeter.qml:151
143+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
144msgid "Swipe to unlock"
118−msgstr ""
145+msgstr "Riklañ evit dibrennañ"
119−
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr ""
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr ""
132
146
133#: qml/Hud/HudParametrizedActionsPage.qml:132
147#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
148msgid "Confirm"
135−msgstr ""
149+msgstr "Kadarnaat"
136
150
137#: qml/Hud/Hud.qml:61 qml/Hud/Hud.qml:99 qml/Hud/Hud.qml:372
151#: qml/Hud/Hud.qml:61 qml/Hud/Hud.qml:99 qml/Hud/Hud.qml:372
138msgid "Type or say a command"
152msgid "Type or say a command"
139−msgstr ""
153+msgstr "Skrivit pe lavarit un urzhiad"
140
154
141#: qml/Hud/Hud.qml:84
155#: qml/Hud/Hud.qml:84
142msgid "Loading. Please Wait..."
156msgid "Loading. Please Wait..."
143−msgstr ""
157+msgstr "O kargañ. Gortozit, mar plij..."
144
158
145#: qml/Hud/Hud.qml:89
159#: qml/Hud/Hud.qml:89
146msgid "Speak Now..."
160msgid "Speak Now..."
147−msgstr ""
161+msgstr "Komzit bremañ..."
148
162
149#: qml/Hud/Hud.qml:94
163#: qml/Hud/Hud.qml:94
150msgid "Speaking..."
164msgid "Speaking..."
151−msgstr ""
165+msgstr "O komz..."
152
166
153#: qml/Notifications/NotificationMenuItemFactory.qml:91
167#: qml/Notifications/NotificationMenuItemFactory.qml:91
154msgid "Show password"
168msgid "Show password"
155−msgstr ""
169+msgstr "Diskouez ar ger-tremen"
156
170
157#: qml/Notifications/NotificationMenuItemFactory.qml:103
171#: qml/Notifications/NotificationMenuItemFactory.qml:103
158msgid "Please enter SIM PIN"
172msgid "Please enter SIM PIN"
159−msgstr ""
173+msgstr "Ebarzhit kod PIN ho kartenn SIM, mar plij"
160
174
161#: qml/Panel/SearchIndicator.qml:27
175#: qml/Panel/SearchIndicator.qml:27
162msgid "Search"
176msgid "Search"
163−msgstr ""
177+msgstr "Klask"
164
178
165−#: qml/Shell.qml:348
179+#: qml/Shell.qml:334
166#, qt-format
180#, qt-format
167msgid "Please enter %1"
181msgid "Please enter %1"
168−msgstr ""
182+msgstr "Ebarzhit %1, mar plij"
po/bs.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2014-01-16 22:33+0000\n"
11"PO-Revision-Date: 2014-01-16 22:33+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Bosnian <bs@li.org>\n"
13"Language-Team: Bosnian <bs@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr ""
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr ""
85msgstr ""
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr ""
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr ""
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr ""
126msgstr ""
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr ""
130msgstr ""
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr ""
134msgstr ""
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr ""
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr ""
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr ""
142msgstr ""
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr ""
170msgstr ""
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr ""
175msgstr ""
po/ca.po+45−36
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11−"PO-Revision-Date: 2014-01-10 07:45+0000\n"
11+"PO-Revision-Date: 2014-06-13 07:47+0000\n"
12−"Last-Translator: Adolfo Jayme <fitoschido@gmail.com>\n"
12+"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
13"Language-Team: Catalan <ca@li.org>\n"
13"Language-Team: Catalan <ca@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -77,64 +77,73 @@ msgid ""
77"You have now mastered the edge gestures and can start using the "
77"You have now mastered the edge gestures and can start using the "
78"phone<br><br>Tap on the screen to start"
78"phone<br><br>Tap on the screen to start"
79msgstr ""
79msgstr ""
80+"Ja heu après com utilitzar els gestos de les vores per fer servir el "
81+"telèfon<br><br>Feu un toc a la pantalla per començar"
82+
83+#: qml/Components/Lockscreen.qml:214
84+msgid "Emergency Call"
85+msgstr "Trucada d'emergència"
86+
87+#: qml/Components/Lockscreen.qml:231
88+msgid "OK"
89+msgstr "D'acord"
80
90
81#: qml/Components/PageHeader.qml:365
91#: qml/Components/PageHeader.qml:365
82msgid "Recent searches"
92msgid "Recent searches"
83msgstr "Cerques recents"
93msgstr "Cerques recents"
84
94
95+#: qml/Components/PassphraseLockscreen.qml:60
96+#, qt-format
97+msgid "Hello %1"
98+msgstr "Hola %1"
99+
100+#: qml/Components/PassphraseLockscreen.qml:60
101+msgid "Hello"
102+msgstr "Hola"
103+
104+#: qml/Components/PinLockscreen.qml:198
105+msgid "CANCEL"
106+msgstr "Cancel·la"
107+
108+#: qml/Components/PinLockscreen.qml:216
109+msgid "DONE"
110+msgstr "Fet"
111+
85#: qml/Components/SeeMore.qml:35
112#: qml/Components/SeeMore.qml:35
86msgid "See more"
113msgid "See more"
87−msgstr ""
114+msgstr "Mostra'n més"
88
115
89#: qml/Components/SeeMore.qml:58
116#: qml/Components/SeeMore.qml:58
90msgid "See less"
117msgid "See less"
91−msgstr ""
118+msgstr "Mostra'n menys"
92
119
93#: qml/Dash/DashApps.qml:37
120#: qml/Dash/DashApps.qml:37
94msgid "Recent"
121msgid "Recent"
95−msgstr ""
122+msgstr "Recents"
96−
97−#: qml/Dash/PreviewListView.qml:52
98−#, qt-format
99−msgid "%1 Preview"
100−msgstr ""
101
123
102#: qml/Dash/Previews/PreviewActionCombo.qml:34
124#: qml/Dash/Previews/PreviewActionCombo.qml:34
103msgid "More..."
125msgid "More..."
104−msgstr ""
126+msgstr "Més..."
105
127
106#: qml/Dash/Previews/PreviewActionCombo.qml:34
128#: qml/Dash/Previews/PreviewActionCombo.qml:34
107msgid "Less..."
129msgid "Less..."
108−msgstr ""
130+msgstr "Menys..."
109
131
110−#: qml/Dash/Previews/PreviewRatingInput.qml:81
132+#: qml/Dash/Previews/PreviewRatingInput.qml:82
111msgid "Rate this"
133msgid "Rate this"
112−msgstr ""
134+msgstr "Puntueu-ho"
113
135
114−#: qml/Dash/Previews/PreviewRatingInput.qml:126
136+#: qml/Dash/Previews/PreviewRatingInput.qml:128
115msgid "Add a review"
137msgid "Add a review"
116msgstr "Afegiu una ressenya"
138msgstr "Afegiu una ressenya"
117
139
118−#: qml/Dash/Previews/PreviewRatingInput.qml:166
140+#: qml/Dash/Previews/PreviewRatingInput.qml:168
119msgid "Send"
141msgid "Send"
120msgstr "Envia"
142msgstr "Envia"
121
143
122−#: qml/Greeter/Greeter.qml:151
144+#: qml/Greeter/Greeter.qml:157
123msgid "Swipe to unlock"
145msgid "Swipe to unlock"
124−msgstr ""
146+msgstr "Feu lliscar el dit per desbloquejar"
125−
126−#: qml/Greeter/Lockscreen.qml:149
127−msgid "Emergency Call"
128−msgstr "Trucada d'emergència"
129−
130−#: qml/Greeter/PassphraseLockscreen.qml:59
131−#, qt-format
132−msgid "Hello %1"
133−msgstr "Hola %1"
134−
135−#: qml/Greeter/PassphraseLockscreen.qml:59
136−msgid "Hello"
137−msgstr "Hola"
138
147
139#: qml/Hud/HudParametrizedActionsPage.qml:132
148#: qml/Hud/HudParametrizedActionsPage.qml:132
140msgid "Confirm"
149msgid "Confirm"
@@ -162,13 +171,13 @@ msgstr "Mostra la contrasenya"
162
171
163#: qml/Notifications/NotificationMenuItemFactory.qml:103
172#: qml/Notifications/NotificationMenuItemFactory.qml:103
164msgid "Please enter SIM PIN"
173msgid "Please enter SIM PIN"
165−msgstr ""
174+msgstr "Introduïu el PIN de la targeta SIM"
166
175
167#: qml/Panel/SearchIndicator.qml:27
176#: qml/Panel/SearchIndicator.qml:27
168msgid "Search"
177msgid "Search"
169msgstr "Cerca"
178msgstr "Cerca"
170
179
171−#: qml/Shell.qml:348
180+#: qml/Shell.qml:334
172#, qt-format
181#, qt-format
173msgid "Please enter %1"
182msgid "Please enter %1"
174msgstr "Introduïu %1"
183msgstr "Introduïu %1"
po/ckb.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2014-01-21 11:05+0000\n"
11"PO-Revision-Date: 2014-01-21 11:05+0000\n"
12"Last-Translator: Aras <aras.noori@gmail.com>\n"
12"Last-Translator: Aras <aras.noori@gmail.com>\n"
13"Language-Team: Kurdish (Sorani) <ckb@li.org>\n"
13"Language-Team: Kurdish (Sorani) <ckb@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr "هێڵی فریاگوزاری"
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr "دوایین گەڕانەکان"
85msgstr "دوایین گەڕانەکان"
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr "سڵاو %1"
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr "سڵاو"
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr "پلە دابنی بۆی"
126msgstr "پلە دابنی بۆی"
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr "پێداچوونەوە زۆر بکە"
130msgstr "پێداچوونەوە زۆر بکە"
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr "ناردن"
134msgstr "ناردن"
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr "هێڵی فریاگوزاری"
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr "سڵاو %1"
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr "سڵاو"
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr "پشتڕاستکردنەوە"
142msgstr "پشتڕاستکردنەوە"
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr "گەڕان"
170msgstr "گەڕان"
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr "تکایە %1 بنووسە"
175msgstr "تکایە %1 بنووسە"
po/cs.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2014-01-08 10:11+0000\n"
11"PO-Revision-Date: 2014-01-08 10:11+0000\n"
12"Last-Translator: Tadeáš Pařík <tadeas.parik@gmail.com>\n"
12"Last-Translator: Tadeáš Pařík <tadeas.parik@gmail.com>\n"
13"Language-Team: Czech <cs@li.org>\n"
13"Language-Team: Czech <cs@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr "Tísňové volání"
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr "Poslední vyhledávání"
85msgstr "Poslední vyhledávání"
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr "Ahoj %1"
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr "Ahoj"
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr "Ohodnoťte to"
126msgstr "Ohodnoťte to"
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr "Přidat recenzi"
130msgstr "Přidat recenzi"
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr "Odeslat"
134msgstr "Odeslat"
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr "Tísňové volání"
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr "Ahoj %1"
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr "Ahoj"
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr "Potvrdit"
142msgstr "Potvrdit"
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr "Hledat"
170msgstr "Hledat"
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr "Zadejte prosím %1"
175msgstr "Zadejte prosím %1"
po/da.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2014-01-14 20:16+0000\n"
11"PO-Revision-Date: 2014-01-14 20:16+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Danish <da@li.org>\n"
13"Language-Team: Danish <da@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr ""
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr ""
85msgstr ""
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr ""
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr ""
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr ""
126msgstr ""
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr ""
130msgstr ""
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr ""
134msgstr ""
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr ""
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr ""
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr ""
142msgstr ""
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr ""
170msgstr ""
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr ""
175msgstr ""
po/de.po+55−45
@@ -7,24 +7,24 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11−"PO-Revision-Date: 2014-01-15 11:01+0000\n"
11+"PO-Revision-Date: 2014-06-06 19:34+0000\n"
12−"Last-Translator: Dennis Baudys <Unknown>\n"
12+"Last-Translator: Phillip Sz <Unknown>\n"
13"Language-Team: German <de@li.org>\n"
13"Language-Team: German <de@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
22msgid "Lock to Launcher"
22msgid "Lock to Launcher"
23−msgstr ""
23+msgstr "Im Starter sperren"
24
24
25#: plugins/Unity/Launcher/launcheritem.cpp:73
25#: plugins/Unity/Launcher/launcheritem.cpp:73
26msgid "Unlock from Launcher"
26msgid "Unlock from Launcher"
27−msgstr ""
27+msgstr "Aus dem Starter entsperren"
28
28
29#: qml/Components/EdgeDemoOverlay.qml:151
29#: qml/Components/EdgeDemoOverlay.qml:151
30msgid "Skip intro"
30msgid "Skip intro"
@@ -32,19 +32,20 @@ msgstr "Einführung überspringen"
32
32
33#: qml/Components/EdgeDemo.qml:113
33#: qml/Components/EdgeDemo.qml:113
34msgid "Right edge"
34msgid "Right edge"
35−msgstr "Rechter Rand"
35+msgstr "Rechter Bildschirmrand"
36
36
37#: qml/Components/EdgeDemo.qml:114
37#: qml/Components/EdgeDemo.qml:114
38msgid "Try swiping from the right edge to unlock the phone"
38msgid "Try swiping from the right edge to unlock the phone"
39−msgstr "Vom rechten Rand her wischen, um das Gerät zu entsperren"
39+msgstr "Vom rechten Bildschirmrand her wischen, um das Gerät zu entsperren"
40
40
41#: qml/Components/EdgeDemo.qml:145
41#: qml/Components/EdgeDemo.qml:145
42msgid "Top edge"
42msgid "Top edge"
43−msgstr "Oberer Rand"
43+msgstr "Oberer Bildschirmrand"
44
44
45#: qml/Components/EdgeDemo.qml:146
45#: qml/Components/EdgeDemo.qml:146
46msgid "Try swiping from the top edge to access the indicators"
46msgid "Try swiping from the top edge to access the indicators"
47+msgstr ""
47−msgstr "Vom oberen Rand her wischen, um die Statusmeldungen anzuzeigen"
48+"Vom oberen Bildschirmrand her wischen, um die Statusmeldungen anzuzeigen"
48
49
49#: qml/Components/EdgeDemo.qml:171
50#: qml/Components/EdgeDemo.qml:171
50msgid "Close"
51msgid "Close"
@@ -52,7 +53,7 @@ msgstr "Schließen"
52
53
53#: qml/Components/EdgeDemo.qml:172
54#: qml/Components/EdgeDemo.qml:172
54msgid "Swipe up again to close the settings screen"
55msgid "Swipe up again to close the settings screen"
55−msgstr "Nochmals nach oben wischen, um das Einstellungsmenü zu schließen"
56+msgstr "Wischen Sie erneut nach oben, um das Einstellungsmenü zu schließen"
56
57
57#: qml/Components/EdgeDemo.qml:199
58#: qml/Components/EdgeDemo.qml:199
58msgid "Left edge"
59msgid "Left edge"
@@ -61,8 +62,8 @@ msgstr "Linker Rand"
61#: qml/Components/EdgeDemo.qml:200
62#: qml/Components/EdgeDemo.qml:200
62msgid "Swipe from the left to reveal the launcher for quick access to apps"
63msgid "Swipe from the left to reveal the launcher for quick access to apps"
63msgstr ""
64msgstr ""
64−"Von links wischen, um die Seitenleiste für den Anwendungs-Schnellzugriff "
65+"Wischen Sie von links nach rechts, um die Seitenleiste für den Anwendungs-"
65−"aufzurufen"
66+"Schnellzugriff aufzurufen"
66
67
67#: qml/Components/EdgeDemo.qml:227
68#: qml/Components/EdgeDemo.qml:227
68msgid "Well done"
69msgid "Well done"
@@ -73,64 +74,73 @@ msgid ""
73"You have now mastered the edge gestures and can start using the "
74"You have now mastered the edge gestures and can start using the "
74"phone<br><br>Tap on the screen to start"
75"phone<br><br>Tap on the screen to start"
75msgstr ""
76msgstr ""
77+"Sie haben nun die Kantengesten erfolgreich erlernt und können das Telefon "
78+"nun nutzen<br><br>Zum Starten auf den Bildschirm tippen"
79+
80+#: qml/Components/Lockscreen.qml:214
81+msgid "Emergency Call"
82+msgstr "Notruf"
83+
84+#: qml/Components/Lockscreen.qml:231
85+msgid "OK"
86+msgstr ""
76
87
77#: qml/Components/PageHeader.qml:365
88#: qml/Components/PageHeader.qml:365
78msgid "Recent searches"
89msgid "Recent searches"
79−msgstr "Letzte Suchbegriffe"
90+msgstr "Zuletzt verwendete Suchbegriffe"
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+#, qt-format
94+msgid "Hello %1"
95+msgstr "Hallo %1"
96+
97+#: qml/Components/PassphraseLockscreen.qml:60
98+msgid "Hello"
99+msgstr "Hallo"
100+
101+#: qml/Components/PinLockscreen.qml:198
102+msgid "CANCEL"
103+msgstr ""
104+
105+#: qml/Components/PinLockscreen.qml:216
106+msgid "DONE"
107+msgstr ""
80
108
81#: qml/Components/SeeMore.qml:35
109#: qml/Components/SeeMore.qml:35
82msgid "See more"
110msgid "See more"
83−msgstr ""
111+msgstr "Mehr ansehen"
84
112
85#: qml/Components/SeeMore.qml:58
113#: qml/Components/SeeMore.qml:58
86msgid "See less"
114msgid "See less"
87−msgstr ""
115+msgstr "Weniger ansehen"
88
116
89#: qml/Dash/DashApps.qml:37
117#: qml/Dash/DashApps.qml:37
90msgid "Recent"
118msgid "Recent"
91−msgstr ""
119+msgstr "Kürzlich"
92−
93−#: qml/Dash/PreviewListView.qml:52
94−#, qt-format
95−msgid "%1 Preview"
96−msgstr ""
97
120
98#: qml/Dash/Previews/PreviewActionCombo.qml:34
121#: qml/Dash/Previews/PreviewActionCombo.qml:34
99msgid "More..."
122msgid "More..."
100−msgstr ""
123+msgstr "Mehr …"
101
124
102#: qml/Dash/Previews/PreviewActionCombo.qml:34
125#: qml/Dash/Previews/PreviewActionCombo.qml:34
103msgid "Less..."
126msgid "Less..."
104−msgstr ""
127+msgstr "Weniger …"
105
128
106−#: qml/Dash/Previews/PreviewRatingInput.qml:81
129+#: qml/Dash/Previews/PreviewRatingInput.qml:82
107msgid "Rate this"
130msgid "Rate this"
108msgstr "Bewerten"
131msgstr "Bewerten"
109
132
110−#: qml/Dash/Previews/PreviewRatingInput.qml:126
133+#: qml/Dash/Previews/PreviewRatingInput.qml:128
111msgid "Add a review"
134msgid "Add a review"
112msgstr "Bewertung hinzufügen"
135msgstr "Bewertung hinzufügen"
113
136
114−#: qml/Dash/Previews/PreviewRatingInput.qml:166
137+#: qml/Dash/Previews/PreviewRatingInput.qml:168
115msgid "Send"
138msgid "Send"
116msgstr "Senden"
139msgstr "Senden"
117
140
118−#: qml/Greeter/Greeter.qml:151
141+#: qml/Greeter/Greeter.qml:157
119msgid "Swipe to unlock"
142msgid "Swipe to unlock"
120−msgstr ""
143+msgstr "Wischen zum Entsperren"
121−
122−#: qml/Greeter/Lockscreen.qml:149
123−msgid "Emergency Call"
124−msgstr "Notruf"
125−
126−#: qml/Greeter/PassphraseLockscreen.qml:59
127−#, qt-format
128−msgid "Hello %1"
129−msgstr "Hallo %1"
130−
131−#: qml/Greeter/PassphraseLockscreen.qml:59
132−msgid "Hello"
133−msgstr "Hallo"
134
144
135#: qml/Hud/HudParametrizedActionsPage.qml:132
145#: qml/Hud/HudParametrizedActionsPage.qml:132
136msgid "Confirm"
146msgid "Confirm"
@@ -158,13 +168,13 @@ msgstr "Passwort anzeigen"
158
168
159#: qml/Notifications/NotificationMenuItemFactory.qml:103
169#: qml/Notifications/NotificationMenuItemFactory.qml:103
160msgid "Please enter SIM PIN"
170msgid "Please enter SIM PIN"
161−msgstr ""
171+msgstr "Bitte die PIN der SIM eingeben"
162
172
163#: qml/Panel/SearchIndicator.qml:27
173#: qml/Panel/SearchIndicator.qml:27
164msgid "Search"
174msgid "Search"
165msgstr "Suchen"
175msgstr "Suchen"
166
176
167−#: qml/Shell.qml:348
177+#: qml/Shell.qml:334
168#, qt-format
178#, qt-format
169msgid "Please enter %1"
179msgid "Please enter %1"
170msgstr "Bitte geben Sie %1 ein"
180msgstr "Bitte geben Sie %1 ein"
po/el.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2014-02-26 09:58+0000\n"
11"PO-Revision-Date: 2014-02-26 09:58+0000\n"
12"Last-Translator: j3lc <x_nikos@yahoo.gr>\n"
12"Last-Translator: j3lc <x_nikos@yahoo.gr>\n"
13"Language-Team: Greek <el@li.org>\n"
13"Language-Team: Greek <el@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -76,10 +76,35 @@ msgstr ""
76"Πλέον γνωρίζετε τις χειρονομίες από τα άκρα και μπορείτε να ξεκινήσετε να "
76"Πλέον γνωρίζετε τις χειρονομίες από τα άκρα και μπορείτε να ξεκινήσετε να "
77"χρησιμοποιείτε το τηλέφωνο<br><br>Αγγίξτε την οθόνη για να ξεκινήσετε"
77"χρησιμοποιείτε το τηλέφωνο<br><br>Αγγίξτε την οθόνη για να ξεκινήσετε"
78
78
79+#: qml/Components/Lockscreen.qml:214
80+msgid "Emergency Call"
81+msgstr "Κλήση έκτακτης ανάγκης"
82+
83+#: qml/Components/Lockscreen.qml:231
84+msgid "OK"
85+msgstr ""
86+
79#: qml/Components/PageHeader.qml:365
87#: qml/Components/PageHeader.qml:365
80msgid "Recent searches"
88msgid "Recent searches"
81msgstr "Πρόσφατες αναζητήσεις"
89msgstr "Πρόσφατες αναζητήσεις"
82
90
91+#: qml/Components/PassphraseLockscreen.qml:60
92+#, qt-format
93+msgid "Hello %1"
94+msgstr "Γεια σας %1"
95+
96+#: qml/Components/PassphraseLockscreen.qml:60
97+msgid "Hello"
98+msgstr "Γεια σας"
99+
100+#: qml/Components/PinLockscreen.qml:198
101+msgid "CANCEL"
102+msgstr ""
103+
104+#: qml/Components/PinLockscreen.qml:216
105+msgid "DONE"
106+msgstr ""
107+
83#: qml/Components/SeeMore.qml:35
108#: qml/Components/SeeMore.qml:35
84msgid "See more"
109msgid "See more"
85msgstr "Περρισότερα"
110msgstr "Περρισότερα"
@@ -92,11 +117,6 @@ msgstr "Λιγότερα"
92msgid "Recent"
117msgid "Recent"
93msgstr ""
118msgstr ""
94
119
95−#: qml/Dash/PreviewListView.qml:52
96−#, qt-format
97−msgid "%1 Preview"
98−msgstr ""
99−
100#: qml/Dash/Previews/PreviewActionCombo.qml:34
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
101msgid "More..."
121msgid "More..."
102msgstr ""
122msgstr ""
@@ -105,35 +125,22 @@ msgstr ""
105msgid "Less..."
125msgid "Less..."
106msgstr ""
126msgstr ""
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:81
128+#: qml/Dash/Previews/PreviewRatingInput.qml:82
109msgid "Rate this"
129msgid "Rate this"
110msgstr "Βαθμολογήστε το"
130msgstr "Βαθμολογήστε το"
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:126
132+#: qml/Dash/Previews/PreviewRatingInput.qml:128
113msgid "Add a review"
133msgid "Add a review"
114msgstr "Προσθέστε την αξιολόγησή σας"
134msgstr "Προσθέστε την αξιολόγησή σας"
115
135
116−#: qml/Dash/Previews/PreviewRatingInput.qml:166
136+#: qml/Dash/Previews/PreviewRatingInput.qml:168
117msgid "Send"
137msgid "Send"
118msgstr "Αποστολή"
138msgstr "Αποστολή"
119
139
120−#: qml/Greeter/Greeter.qml:151
140+#: qml/Greeter/Greeter.qml:157
121msgid "Swipe to unlock"
141msgid "Swipe to unlock"
122msgstr ""
142msgstr ""
123
143
124−#: qml/Greeter/Lockscreen.qml:149
125−msgid "Emergency Call"
126−msgstr "Κλήση έκτακτης ανάγκης"
127−
128−#: qml/Greeter/PassphraseLockscreen.qml:59
129−#, qt-format
130−msgid "Hello %1"
131−msgstr "Γεια σας %1"
132−
133−#: qml/Greeter/PassphraseLockscreen.qml:59
134−msgid "Hello"
135−msgstr "Γεια σας"
136−
137#: qml/Hud/HudParametrizedActionsPage.qml:132
144#: qml/Hud/HudParametrizedActionsPage.qml:132
138msgid "Confirm"
145msgid "Confirm"
139msgstr "Επιβεβαίωση"
146msgstr "Επιβεβαίωση"
@@ -166,7 +173,7 @@ msgstr "Παρακαλώ εισάγετε το PIN της κάρτας SIM"
166msgid "Search"
173msgid "Search"
167msgstr "Αναζήτηση"
174msgstr "Αναζήτηση"
168
175
169−#: qml/Shell.qml:348
176+#: qml/Shell.qml:334
170#, qt-format
177#, qt-format
171msgid "Please enter %1"
178msgid "Please enter %1"
172msgstr "Πληκτρολογήστε %1"
179msgstr "Πληκτρολογήστε %1"
po/en_AU.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2013-09-28 07:46+0000\n"
11"PO-Revision-Date: 2013-09-28 07:46+0000\n"
12"Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
12"Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
13"Language-Team: English (Australia) <en_AU@li.org>\n"
13"Language-Team: English (Australia) <en_AU@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr "Emergency Call"
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr "Recent searches"
85msgstr "Recent searches"
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr "Hello %1"
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr "Hello"
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr "Rate this"
126msgstr "Rate this"
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr "Add a review"
130msgstr "Add a review"
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr "Send"
134msgstr "Send"
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr "Emergency Call"
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr "Hello %1"
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr "Hello"
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr "Confirm"
142msgstr "Confirm"
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr "Search"
170msgstr "Search"
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr "Please enter %1"
175msgstr "Please enter %1"
po/en_GB.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2014-03-07 13:27+0000\n"
11"PO-Revision-Date: 2014-03-07 13:27+0000\n"
12"Last-Translator: Andi Chandler <Unknown>\n"
12"Last-Translator: Andi Chandler <Unknown>\n"
13"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
13"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -74,10 +74,35 @@ msgstr ""
74"You have now mastered the edge gestures and can start using the "
74"You have now mastered the edge gestures and can start using the "
75"phone<br><br>Tap on the screen to start"
75"phone<br><br>Tap on the screen to start"
76
76
77+#: qml/Components/Lockscreen.qml:214
78+msgid "Emergency Call"
79+msgstr "Emergency Call"
80+
81+#: qml/Components/Lockscreen.qml:231
82+msgid "OK"
83+msgstr ""
84+
77#: qml/Components/PageHeader.qml:365
85#: qml/Components/PageHeader.qml:365
78msgid "Recent searches"
86msgid "Recent searches"
79msgstr "Recent searches"
87msgstr "Recent searches"
80
88
89+#: qml/Components/PassphraseLockscreen.qml:60
90+#, qt-format
91+msgid "Hello %1"
92+msgstr "Hello %1"
93+
94+#: qml/Components/PassphraseLockscreen.qml:60
95+msgid "Hello"
96+msgstr "Hello"
97+
98+#: qml/Components/PinLockscreen.qml:198
99+msgid "CANCEL"
100+msgstr ""
101+
102+#: qml/Components/PinLockscreen.qml:216
103+msgid "DONE"
104+msgstr ""
105+
81#: qml/Components/SeeMore.qml:35
106#: qml/Components/SeeMore.qml:35
82msgid "See more"
107msgid "See more"
83msgstr "See more"
108msgstr "See more"
@@ -90,11 +115,6 @@ msgstr "See less"
90msgid "Recent"
115msgid "Recent"
91msgstr ""
116msgstr ""
92
117
93−#: qml/Dash/PreviewListView.qml:52
94−#, qt-format
95−msgid "%1 Preview"
96−msgstr ""
97−
98#: qml/Dash/Previews/PreviewActionCombo.qml:34
118#: qml/Dash/Previews/PreviewActionCombo.qml:34
99msgid "More..."
119msgid "More..."
100msgstr "More..."
120msgstr "More..."
@@ -103,35 +123,22 @@ msgstr "More..."
103msgid "Less..."
123msgid "Less..."
104msgstr "Less..."
124msgstr "Less..."
105
125
106−#: qml/Dash/Previews/PreviewRatingInput.qml:81
126+#: qml/Dash/Previews/PreviewRatingInput.qml:82
107msgid "Rate this"
127msgid "Rate this"
108msgstr "Rate this"
128msgstr "Rate this"
109
129
110−#: qml/Dash/Previews/PreviewRatingInput.qml:126
130+#: qml/Dash/Previews/PreviewRatingInput.qml:128
111msgid "Add a review"
131msgid "Add a review"
112msgstr "Add a review"
132msgstr "Add a review"
113
133
114−#: qml/Dash/Previews/PreviewRatingInput.qml:166
134+#: qml/Dash/Previews/PreviewRatingInput.qml:168
115msgid "Send"
135msgid "Send"
116msgstr "Send"
136msgstr "Send"
117
137
118−#: qml/Greeter/Greeter.qml:151
138+#: qml/Greeter/Greeter.qml:157
119msgid "Swipe to unlock"
139msgid "Swipe to unlock"
120msgstr ""
140msgstr ""
121
141
122−#: qml/Greeter/Lockscreen.qml:149
123−msgid "Emergency Call"
124−msgstr "Emergency Call"
125−
126−#: qml/Greeter/PassphraseLockscreen.qml:59
127−#, qt-format
128−msgid "Hello %1"
129−msgstr "Hello %1"
130−
131−#: qml/Greeter/PassphraseLockscreen.qml:59
132−msgid "Hello"
133−msgstr "Hello"
134−
135#: qml/Hud/HudParametrizedActionsPage.qml:132
142#: qml/Hud/HudParametrizedActionsPage.qml:132
136msgid "Confirm"
143msgid "Confirm"
137msgstr "Confirm"
144msgstr "Confirm"
@@ -164,7 +171,7 @@ msgstr "Please enter SIM PIN"
164msgid "Search"
171msgid "Search"
165msgstr "Search"
172msgstr "Search"
166
173
167−#: qml/Shell.qml:348
174+#: qml/Shell.qml:334
168#, qt-format
175#, qt-format
169msgid "Please enter %1"
176msgid "Please enter %1"
170msgstr "Please enter %1"
177msgstr "Please enter %1"
po/eo.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2013-06-26 22:35+0000\n"
11"PO-Revision-Date: 2013-06-26 22:35+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Esperanto <eo@li.org>\n"
13"Language-Team: Esperanto <eo@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr ""
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr ""
85msgstr ""
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr ""
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr ""
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr ""
126msgstr ""
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr ""
130msgstr ""
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr ""
134msgstr ""
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr ""
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr ""
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr ""
142msgstr ""
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr ""
170msgstr ""
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr ""
175msgstr ""
po/es.po+38−31
@@ -7,24 +7,24 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11−"PO-Revision-Date: 2014-03-28 22:37+0000\n"
11+"PO-Revision-Date: 2014-06-02 06:28+0000\n"
12−"Last-Translator: Adolfo Jayme <fitoschido@gmail.com>\n"
12+"Last-Translator: benjisp94 <benjisp94@gmail.com>\n"
13"Language-Team: Spanish <es@li.org>\n"
13"Language-Team: Spanish <es@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
22msgid "Lock to Launcher"
22msgid "Lock to Launcher"
23−msgstr "Mantener en el lanzador"
23+msgstr "Fijar al lanzador"
24
24
25#: plugins/Unity/Launcher/launcheritem.cpp:73
25#: plugins/Unity/Launcher/launcheritem.cpp:73
26msgid "Unlock from Launcher"
26msgid "Unlock from Launcher"
27−msgstr "No mantener en el lanzador"
27+msgstr "Quitar del lanzador"
28
28
29#: qml/Components/EdgeDemoOverlay.qml:151
29#: qml/Components/EdgeDemoOverlay.qml:151
30msgid "Skip intro"
30msgid "Skip intro"
@@ -77,10 +77,35 @@ msgstr ""
77"Ahora domina los gestos de los bordes y puede usar el teléfono<br><br>Toque "
77"Ahora domina los gestos de los bordes y puede usar el teléfono<br><br>Toque "
78"la pantalla para comenzar"
78"la pantalla para comenzar"
79
79
80+#: qml/Components/Lockscreen.qml:214
81+msgid "Emergency Call"
82+msgstr "Llamada de emergencia"
83+
84+#: qml/Components/Lockscreen.qml:231
85+msgid "OK"
86+msgstr ""
87+
80#: qml/Components/PageHeader.qml:365
88#: qml/Components/PageHeader.qml:365
81msgid "Recent searches"
89msgid "Recent searches"
82msgstr "Búsquedas recientes"
90msgstr "Búsquedas recientes"
83
91
92+#: qml/Components/PassphraseLockscreen.qml:60
93+#, qt-format
94+msgid "Hello %1"
95+msgstr "Hola, %1"
96+
97+#: qml/Components/PassphraseLockscreen.qml:60
98+msgid "Hello"
99+msgstr "Hola"
100+
101+#: qml/Components/PinLockscreen.qml:198
102+msgid "CANCEL"
103+msgstr ""
104+
105+#: qml/Components/PinLockscreen.qml:216
106+msgid "DONE"
107+msgstr ""
108+
84#: qml/Components/SeeMore.qml:35
109#: qml/Components/SeeMore.qml:35
85msgid "See more"
110msgid "See more"
86msgstr "Ver más"
111msgstr "Ver más"
@@ -93,11 +118,6 @@ msgstr "Ver menos"
93msgid "Recent"
118msgid "Recent"
94msgstr "Recientes"
119msgstr "Recientes"
95
120
96−#: qml/Dash/PreviewListView.qml:52
97−#, qt-format
98−msgid "%1 Preview"
99−msgstr "Previsualización de %1"
100−
101#: qml/Dash/Previews/PreviewActionCombo.qml:34
121#: qml/Dash/Previews/PreviewActionCombo.qml:34
102msgid "More..."
122msgid "More..."
103msgstr "Más…"
123msgstr "Más…"
@@ -106,34 +126,21 @@ msgstr "Más…"
106msgid "Less..."
126msgid "Less..."
107msgstr "Menos…"
127msgstr "Menos…"
108
128
109−#: qml/Dash/Previews/PreviewRatingInput.qml:81
129+#: qml/Dash/Previews/PreviewRatingInput.qml:82
110msgid "Rate this"
130msgid "Rate this"
111msgstr "Valorar esto"
131msgstr "Valorar esto"
112
132
113−#: qml/Dash/Previews/PreviewRatingInput.qml:126
133+#: qml/Dash/Previews/PreviewRatingInput.qml:128
114msgid "Add a review"
134msgid "Add a review"
115msgstr "Añadir una reseña"
135msgstr "Añadir una reseña"
116
136
117−#: qml/Dash/Previews/PreviewRatingInput.qml:166
137+#: qml/Dash/Previews/PreviewRatingInput.qml:168
118msgid "Send"
138msgid "Send"
119msgstr "Enviar"
139msgstr "Enviar"
120
140
121−#: qml/Greeter/Greeter.qml:151
141+#: qml/Greeter/Greeter.qml:157
122msgid "Swipe to unlock"
142msgid "Swipe to unlock"
123−msgstr ""
143+msgstr "Deslice para desbloquear"
124−
125−#: qml/Greeter/Lockscreen.qml:149
126−msgid "Emergency Call"
127−msgstr "Llamada de emergencia"
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−#, qt-format
131−msgid "Hello %1"
132−msgstr "Hola, %1"
133−
134−#: qml/Greeter/PassphraseLockscreen.qml:59
135−msgid "Hello"
136−msgstr "Hola"
137
144
138#: qml/Hud/HudParametrizedActionsPage.qml:132
145#: qml/Hud/HudParametrizedActionsPage.qml:132
139msgid "Confirm"
146msgid "Confirm"
@@ -167,7 +174,7 @@ msgstr "Escriba el PIN de la SIM"
167msgid "Search"
174msgid "Search"
168msgstr "Buscar"
175msgstr "Buscar"
169
176
170−#: qml/Shell.qml:348
177+#: qml/Shell.qml:334
171#, qt-format
178#, qt-format
172msgid "Please enter %1"
179msgid "Please enter %1"
173msgstr "Introduzca %1"
180msgstr "Introduzca %1"
po/eu.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2014-03-30 12:44+0000\n"
11"PO-Revision-Date: 2014-03-30 12:44+0000\n"
12"Last-Translator: Ibai Oihanguren Sala <Unknown>\n"
12"Last-Translator: Ibai Oihanguren Sala <Unknown>\n"
13"Language-Team: Basque <eu@li.org>\n"
13"Language-Team: Basque <eu@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -76,10 +76,35 @@ msgstr ""
76"Jadanik ezagutzen dituzu ertzetako keinuak, eta mugikorra erabiltzen has "
76"Jadanik ezagutzen dituzu ertzetako keinuak, eta mugikorra erabiltzen has "
77"zaitezke<br><br>Ukitu pantaila hasteko"
77"zaitezke<br><br>Ukitu pantaila hasteko"
78
78
79+#: qml/Components/Lockscreen.qml:214
80+msgid "Emergency Call"
81+msgstr "Larrialdi-deia"
82+
83+#: qml/Components/Lockscreen.qml:231
84+msgid "OK"
85+msgstr ""
86+
79#: qml/Components/PageHeader.qml:365
87#: qml/Components/PageHeader.qml:365
80msgid "Recent searches"
88msgid "Recent searches"
81msgstr "Azken bilaketak"
89msgstr "Azken bilaketak"
82
90
91+#: qml/Components/PassphraseLockscreen.qml:60
92+#, qt-format
93+msgid "Hello %1"
94+msgstr "Kaixo %1"
95+
96+#: qml/Components/PassphraseLockscreen.qml:60
97+msgid "Hello"
98+msgstr "Kaixo"
99+
100+#: qml/Components/PinLockscreen.qml:198
101+msgid "CANCEL"
102+msgstr ""
103+
104+#: qml/Components/PinLockscreen.qml:216
105+msgid "DONE"
106+msgstr ""
107+
83#: qml/Components/SeeMore.qml:35
108#: qml/Components/SeeMore.qml:35
84msgid "See more"
109msgid "See more"
85msgstr "Ikusi gehiago"
110msgstr "Ikusi gehiago"
@@ -92,11 +117,6 @@ msgstr "Ikusi gutxiago"
92msgid "Recent"
117msgid "Recent"
93msgstr "Azkenak"
118msgstr "Azkenak"
94
119
95−#: qml/Dash/PreviewListView.qml:52
96−#, qt-format
97−msgid "%1 Preview"
98−msgstr "%1 aurrebista"
99−
100#: qml/Dash/Previews/PreviewActionCombo.qml:34
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
101msgid "More..."
121msgid "More..."
102msgstr "Gehiago..."
122msgstr "Gehiago..."
@@ -105,35 +125,22 @@ msgstr "Gehiago..."
105msgid "Less..."
125msgid "Less..."
106msgstr "Gutxiago..."
126msgstr "Gutxiago..."
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:81
128+#: qml/Dash/Previews/PreviewRatingInput.qml:82
109msgid "Rate this"
129msgid "Rate this"
110msgstr "Puntuatu hau"
130msgstr "Puntuatu hau"
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:126
132+#: qml/Dash/Previews/PreviewRatingInput.qml:128
113msgid "Add a review"
133msgid "Add a review"
114msgstr "Gehitu kritika"
134msgstr "Gehitu kritika"
115
135
116−#: qml/Dash/Previews/PreviewRatingInput.qml:166
136+#: qml/Dash/Previews/PreviewRatingInput.qml:168
117msgid "Send"
137msgid "Send"
118msgstr "Bidali"
138msgstr "Bidali"
119
139
120−#: qml/Greeter/Greeter.qml:151
140+#: qml/Greeter/Greeter.qml:157
121msgid "Swipe to unlock"
141msgid "Swipe to unlock"
122msgstr ""
142msgstr ""
123
143
124−#: qml/Greeter/Lockscreen.qml:149
125−msgid "Emergency Call"
126−msgstr "Larrialdi-deia"
127−
128−#: qml/Greeter/PassphraseLockscreen.qml:59
129−#, qt-format
130−msgid "Hello %1"
131−msgstr "Kaixo %1"
132−
133−#: qml/Greeter/PassphraseLockscreen.qml:59
134−msgid "Hello"
135−msgstr "Kaixo"
136−
137#: qml/Hud/HudParametrizedActionsPage.qml:132
144#: qml/Hud/HudParametrizedActionsPage.qml:132
138msgid "Confirm"
145msgid "Confirm"
139msgstr "Baieztatu"
146msgstr "Baieztatu"
@@ -166,7 +173,7 @@ msgstr "Sartu SIMaren PINa"
166msgid "Search"
173msgid "Search"
167msgstr "Bilatu"
174msgstr "Bilatu"
168
175
169−#: qml/Shell.qml:348
176+#: qml/Shell.qml:334
170#, qt-format
177#, qt-format
171msgid "Please enter %1"
178msgid "Please enter %1"
172msgstr "Sartu %1"
179msgstr "Sartu %1"
po/fa.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2013-10-31 19:02+0000\n"
11"PO-Revision-Date: 2013-10-31 19:02+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Persian <fa@li.org>\n"
13"Language-Team: Persian <fa@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr ""
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr ""
85msgstr ""
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr ""
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr ""
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr ""
126msgstr ""
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr ""
130msgstr ""
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr ""
134msgstr ""
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr ""
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr ""
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr ""
142msgstr ""
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr ""
170msgstr ""
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr ""
175msgstr ""
po/fi.po+35−28
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11−"PO-Revision-Date: 2014-04-05 09:57+0000\n"
11+"PO-Revision-Date: 2014-06-14 10:23+0000\n"
12"Last-Translator: Jiri Grönroos <Unknown>\n"
12"Last-Translator: Jiri Grönroos <Unknown>\n"
13"Language-Team: Finnish <fi@li.org>\n"
13"Language-Team: Finnish <fi@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -74,10 +74,35 @@ msgstr ""
74"Hallitset nyt reunaeleet, joten voit aloittaa puhelimen "
74"Hallitset nyt reunaeleet, joten voit aloittaa puhelimen "
75"käytön<br><br>Napauta näyttöä aloittaaksesi"
75"käytön<br><br>Napauta näyttöä aloittaaksesi"
76
76
77+#: qml/Components/Lockscreen.qml:214
78+msgid "Emergency Call"
79+msgstr "Hätäpuhelu"
80+
81+#: qml/Components/Lockscreen.qml:231
82+msgid "OK"
83+msgstr "OK"
84+
77#: qml/Components/PageHeader.qml:365
85#: qml/Components/PageHeader.qml:365
78msgid "Recent searches"
86msgid "Recent searches"
79msgstr "Viimeisimmät haut"
87msgstr "Viimeisimmät haut"
80
88
89+#: qml/Components/PassphraseLockscreen.qml:60
90+#, qt-format
91+msgid "Hello %1"
92+msgstr "Hei %1!"
93+
94+#: qml/Components/PassphraseLockscreen.qml:60
95+msgid "Hello"
96+msgstr "Hei"
97+
98+#: qml/Components/PinLockscreen.qml:198
99+msgid "CANCEL"
100+msgstr "PERU"
101+
102+#: qml/Components/PinLockscreen.qml:216
103+msgid "DONE"
104+msgstr "VALMIS"
105+
81#: qml/Components/SeeMore.qml:35
106#: qml/Components/SeeMore.qml:35
82msgid "See more"
107msgid "See more"
83msgstr "Näytä lisää"
108msgstr "Näytä lisää"
@@ -90,11 +115,6 @@ msgstr "Näytä vähemmän"
90msgid "Recent"
115msgid "Recent"
91msgstr "Viimeisimmät"
116msgstr "Viimeisimmät"
92
117
93−#: qml/Dash/PreviewListView.qml:52
94−#, qt-format
95−msgid "%1 Preview"
96−msgstr "%1 esikatselu"
97−
98#: qml/Dash/Previews/PreviewActionCombo.qml:34
118#: qml/Dash/Previews/PreviewActionCombo.qml:34
99msgid "More..."
119msgid "More..."
100msgstr "Lisää..."
120msgstr "Lisää..."
@@ -103,34 +123,21 @@ msgstr "Lisää..."
103msgid "Less..."
123msgid "Less..."
104msgstr "Vähemmän..."
124msgstr "Vähemmän..."
105
125
106−#: qml/Dash/Previews/PreviewRatingInput.qml:81
126+#: qml/Dash/Previews/PreviewRatingInput.qml:82
107msgid "Rate this"
127msgid "Rate this"
108msgstr "Arvioi tämä"
128msgstr "Arvioi tämä"
109
129
110−#: qml/Dash/Previews/PreviewRatingInput.qml:126
130+#: qml/Dash/Previews/PreviewRatingInput.qml:128
111msgid "Add a review"
131msgid "Add a review"
112msgstr "Lisää arvostelu"
132msgstr "Lisää arvostelu"
113
133
114−#: qml/Dash/Previews/PreviewRatingInput.qml:166
134+#: qml/Dash/Previews/PreviewRatingInput.qml:168
115msgid "Send"
135msgid "Send"
116msgstr "Lähetä"
136msgstr "Lähetä"
117
137
118−#: qml/Greeter/Greeter.qml:151
138+#: qml/Greeter/Greeter.qml:157
119msgid "Swipe to unlock"
139msgid "Swipe to unlock"
120−msgstr ""
140+msgstr "Avaa pyyhkäisemällä"
121−
122−#: qml/Greeter/Lockscreen.qml:149
123−msgid "Emergency Call"
124−msgstr "Hätäpuhelu"
125−
126−#: qml/Greeter/PassphraseLockscreen.qml:59
127−#, qt-format
128−msgid "Hello %1"
129−msgstr "Hei %1!"
130−
131−#: qml/Greeter/PassphraseLockscreen.qml:59
132−msgid "Hello"
133−msgstr "Hei"
134
141
135#: qml/Hud/HudParametrizedActionsPage.qml:132
142#: qml/Hud/HudParametrizedActionsPage.qml:132
136msgid "Confirm"
143msgid "Confirm"
@@ -164,7 +171,7 @@ msgstr "Anna SIM-kortin PIN-koodi"
164msgid "Search"
171msgid "Search"
165msgstr "Hae"
172msgstr "Hae"
166
173
167−#: qml/Shell.qml:348
174+#: qml/Shell.qml:334
168#, qt-format
175#, qt-format
169msgid "Please enter %1"
176msgid "Please enter %1"
170msgstr "Kirjoita %1"
177msgstr "Kirjoita %1"
po/fo.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2014-01-14 20:08+0000\n"
11"PO-Revision-Date: 2014-01-14 20:08+0000\n"
12"Last-Translator: Jógvan Olsen <jeggy@jebster.net>\n"
12"Last-Translator: Jógvan Olsen <jeggy@jebster.net>\n"
13"Language-Team: Faroese <fo@li.org>\n"
13"Language-Team: Faroese <fo@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr ""
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr ""
85msgstr ""
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr ""
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr ""
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr ""
126msgstr ""
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr ""
130msgstr ""
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr ""
134msgstr ""
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr ""
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr ""
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr "Vátta"
142msgstr "Vátta"
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr "Leita"
170msgstr "Leita"
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr ""
175msgstr ""
po/fr.po+54−38
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11−"PO-Revision-Date: 2014-01-28 00:34+0000\n"
11+"PO-Revision-Date: 2014-06-08 20:45+0000\n"
12−"Last-Translator: Pierre <Unknown>\n"
12+"Last-Translator: Pierre Slamich <pierre.slamich@gmail.com>\n"
13"Language-Team: French <fr@li.org>\n"
13"Language-Team: French <fr@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -24,7 +24,7 @@ msgstr "Conserver dans le lanceur"
24
24
25#: plugins/Unity/Launcher/launcheritem.cpp:73
25#: plugins/Unity/Launcher/launcheritem.cpp:73
26msgid "Unlock from Launcher"
26msgid "Unlock from Launcher"
27−msgstr ""
27+msgstr "Retirer du lanceur"
28
28
29#: qml/Components/EdgeDemoOverlay.qml:151
29#: qml/Components/EdgeDemoOverlay.qml:151
30msgid "Skip intro"
30msgid "Skip intro"
@@ -37,6 +37,7 @@ msgstr "Bord droit"
37#: qml/Components/EdgeDemo.qml:114
37#: qml/Components/EdgeDemo.qml:114
38msgid "Try swiping from the right edge to unlock the phone"
38msgid "Try swiping from the right edge to unlock the phone"
39msgstr ""
39msgstr ""
40+"Faites glisser votre doigt à partir du bord droit pour déverrouiller."
40
41
41#: qml/Components/EdgeDemo.qml:145
42#: qml/Components/EdgeDemo.qml:145
42msgid "Top edge"
43msgid "Top edge"
@@ -45,6 +46,8 @@ msgstr "Bord supérieur"
45#: qml/Components/EdgeDemo.qml:146
46#: qml/Components/EdgeDemo.qml:146
46msgid "Try swiping from the top edge to access the indicators"
47msgid "Try swiping from the top edge to access the indicators"
47msgstr ""
48msgstr ""
49+"Faites glisser votre doigt à partir du bord supérieur pour accéder aux "
50+"indicateurs."
48
51
49#: qml/Components/EdgeDemo.qml:171
52#: qml/Components/EdgeDemo.qml:171
50msgid "Close"
53msgid "Close"
@@ -53,6 +56,8 @@ msgstr "Fermer"
53#: qml/Components/EdgeDemo.qml:172
56#: qml/Components/EdgeDemo.qml:172
54msgid "Swipe up again to close the settings screen"
57msgid "Swipe up again to close the settings screen"
55msgstr ""
58msgstr ""
59+"Faites glisser à nouveau votre doigt vers le bord supérieur pour fermer "
60+"l'écran des paramètres"
56
61
57#: qml/Components/EdgeDemo.qml:199
62#: qml/Components/EdgeDemo.qml:199
58msgid "Left edge"
63msgid "Left edge"
@@ -61,74 +66,85 @@ msgstr "Bord gauche"
61#: qml/Components/EdgeDemo.qml:200
66#: qml/Components/EdgeDemo.qml:200
62msgid "Swipe from the left to reveal the launcher for quick access to apps"
67msgid "Swipe from the left to reveal the launcher for quick access to apps"
63msgstr ""
68msgstr ""
69+"Faites glisser votre doigt à partir du bord gauche pour afficher le lanceur "
70+"d'applications."
64
71
65#: qml/Components/EdgeDemo.qml:227
72#: qml/Components/EdgeDemo.qml:227
66msgid "Well done"
73msgid "Well done"
67−msgstr ""
74+msgstr "Félicitations"
68
75
69#: qml/Components/EdgeDemo.qml:228
76#: qml/Components/EdgeDemo.qml:228
70msgid ""
77msgid ""
71"You have now mastered the edge gestures and can start using the "
78"You have now mastered the edge gestures and can start using the "
72"phone<br><br>Tap on the screen to start"
79"phone<br><br>Tap on the screen to start"
73msgstr ""
80msgstr ""
81+"Vous maîtrisez maintenant les différents gestes et pouvez commencer à "
82+"utiliser le téléphone<br><br>Appuyez sur l'écran pour commencer"
83+
84+#: qml/Components/Lockscreen.qml:214
85+msgid "Emergency Call"
86+msgstr "Appel d'urgence"
87+
88+#: qml/Components/Lockscreen.qml:231
89+msgid "OK"
90+msgstr "OK"
74
91
75#: qml/Components/PageHeader.qml:365
92#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
93msgid "Recent searches"
77msgstr "Recherches récentes"
94msgstr "Recherches récentes"
78
95
96+#: qml/Components/PassphraseLockscreen.qml:60
97+#, qt-format
98+msgid "Hello %1"
99+msgstr "Bonjour %1"
100+
101+#: qml/Components/PassphraseLockscreen.qml:60
102+msgid "Hello"
103+msgstr "Bonjour"
104+
105+#: qml/Components/PinLockscreen.qml:198
106+msgid "CANCEL"
107+msgstr "ANNULER"
108+
109+#: qml/Components/PinLockscreen.qml:216
110+msgid "DONE"
111+msgstr "TERMINÉ"
112+
79#: qml/Components/SeeMore.qml:35
113#: qml/Components/SeeMore.qml:35
80msgid "See more"
114msgid "See more"
81−msgstr ""
115+msgstr "Voir plus"
82
116
83#: qml/Components/SeeMore.qml:58
117#: qml/Components/SeeMore.qml:58
84msgid "See less"
118msgid "See less"
85−msgstr ""
119+msgstr "Voir moins"
86
120
87#: qml/Dash/DashApps.qml:37
121#: qml/Dash/DashApps.qml:37
88msgid "Recent"
122msgid "Recent"
89−msgstr ""
123+msgstr "Récent"
90−
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95
124
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
125#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
126msgid "More..."
98−msgstr ""
127+msgstr "Plus..."
99
128
100#: qml/Dash/Previews/PreviewActionCombo.qml:34
129#: qml/Dash/Previews/PreviewActionCombo.qml:34
101msgid "Less..."
130msgid "Less..."
102−msgstr ""
131+msgstr "Moins..."
103
132
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
133+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
134msgid "Rate this"
106msgstr "Evaluez ceci"
135msgstr "Evaluez ceci"
107
136
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
137+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
138msgid "Add a review"
110msgstr "Ajouter un avis"
139msgstr "Ajouter un avis"
111
140
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
141+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
142msgid "Send"
114msgstr "Envoyer"
143msgstr "Envoyer"
115
144
116−#: qml/Greeter/Greeter.qml:151
145+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
146msgid "Swipe to unlock"
118−msgstr ""
147+msgstr "Faites glisser pour déverrouiller"
119−
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr "Appel d'urgence"
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr "Bonjour %1"
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr "Bonjour"
132
148
133#: qml/Hud/HudParametrizedActionsPage.qml:132
149#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
150msgid "Confirm"
@@ -148,7 +164,7 @@ msgstr "Parlez maintenant…"
148
164
149#: qml/Hud/Hud.qml:94
165#: qml/Hud/Hud.qml:94
150msgid "Speaking..."
166msgid "Speaking..."
151−msgstr ""
167+msgstr "En cours d'écoute..."
152
168
153#: qml/Notifications/NotificationMenuItemFactory.qml:91
169#: qml/Notifications/NotificationMenuItemFactory.qml:91
154msgid "Show password"
170msgid "Show password"
@@ -156,13 +172,13 @@ msgstr "Afficher le mot de passe"
156
172
157#: qml/Notifications/NotificationMenuItemFactory.qml:103
173#: qml/Notifications/NotificationMenuItemFactory.qml:103
158msgid "Please enter SIM PIN"
174msgid "Please enter SIM PIN"
159−msgstr ""
175+msgstr "Veuillez entrer le code PIN de votre carte SIM"
160
176
161#: qml/Panel/SearchIndicator.qml:27
177#: qml/Panel/SearchIndicator.qml:27
162msgid "Search"
178msgid "Search"
163msgstr "Rechercher"
179msgstr "Rechercher"
164
180
165−#: qml/Shell.qml:348
181+#: qml/Shell.qml:334
166#, qt-format
182#, qt-format
167msgid "Please enter %1"
183msgid "Please enter %1"
168msgstr "Veuillez saisir %1"
184msgstr "Veuillez saisir %1"
po/gd.po+46−37
@@ -7,24 +7,24 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11−"PO-Revision-Date: 2013-09-30 10:34+0000\n"
11+"PO-Revision-Date: 2014-05-17 21:08+0000\n"
12"Last-Translator: Akerbeltz <fios@akerbeltz.org>\n"
12"Last-Translator: Akerbeltz <fios@akerbeltz.org>\n"
13"Language-Team: Gaelic; Scottish <gd@li.org>\n"
13"Language-Team: Gaelic; Scottish <gd@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
22msgid "Lock to Launcher"
22msgid "Lock to Launcher"
23−msgstr ""
23+msgstr "Glais ris an lòinsear"
24
24
25#: plugins/Unity/Launcher/launcheritem.cpp:73
25#: plugins/Unity/Launcher/launcheritem.cpp:73
26msgid "Unlock from Launcher"
26msgid "Unlock from Launcher"
27−msgstr ""
27+msgstr "Dealaich on lòinsear"
28
28
29#: qml/Components/EdgeDemoOverlay.qml:151
29#: qml/Components/EdgeDemoOverlay.qml:151
30msgid "Skip intro"
30msgid "Skip intro"
@@ -77,64 +77,73 @@ msgid ""
77"You have now mastered the edge gestures and can start using the "
77"You have now mastered the edge gestures and can start using the "
78"phone<br><br>Tap on the screen to start"
78"phone<br><br>Tap on the screen to start"
79msgstr ""
79msgstr ""
80+"Fhuair thu air na gluasadan oire ceart a dhèanamh a-nis agus is urrainn dhut "
81+"am fòn a chleachdadh<br><br>Thoir gnogag air an sgrìn airson tòiseachadh"
82+
83+#: qml/Components/Lockscreen.qml:214
84+msgid "Emergency Call"
85+msgstr "Gairm èiginn"
86+
87+#: qml/Components/Lockscreen.qml:231
88+msgid "OK"
89+msgstr ""
80
90
81#: qml/Components/PageHeader.qml:365
91#: qml/Components/PageHeader.qml:365
82msgid "Recent searches"
92msgid "Recent searches"
83msgstr "Na lorg thu o chionn goirid"
93msgstr "Na lorg thu o chionn goirid"
84
94
95+#: qml/Components/PassphraseLockscreen.qml:60
96+#, qt-format
97+msgid "Hello %1"
98+msgstr "Shin thu, %1"
99+
100+#: qml/Components/PassphraseLockscreen.qml:60
101+msgid "Hello"
102+msgstr "Shin thu"
103+
104+#: qml/Components/PinLockscreen.qml:198
105+msgid "CANCEL"
106+msgstr ""
107+
108+#: qml/Components/PinLockscreen.qml:216
109+msgid "DONE"
110+msgstr ""
111+
85#: qml/Components/SeeMore.qml:35
112#: qml/Components/SeeMore.qml:35
86msgid "See more"
113msgid "See more"
87−msgstr ""
114+msgstr "Seall barrachd"
88
115
89#: qml/Components/SeeMore.qml:58
116#: qml/Components/SeeMore.qml:58
90msgid "See less"
117msgid "See less"
91−msgstr ""
118+msgstr "Seall nas lugha"
92
119
93#: qml/Dash/DashApps.qml:37
120#: qml/Dash/DashApps.qml:37
94msgid "Recent"
121msgid "Recent"
95−msgstr ""
122+msgstr "O chionn goirid"
96−
97−#: qml/Dash/PreviewListView.qml:52
98−#, qt-format
99−msgid "%1 Preview"
100−msgstr ""
101
123
102#: qml/Dash/Previews/PreviewActionCombo.qml:34
124#: qml/Dash/Previews/PreviewActionCombo.qml:34
103msgid "More..."
125msgid "More..."
104−msgstr ""
126+msgstr "Barrachd..."
105
127
106#: qml/Dash/Previews/PreviewActionCombo.qml:34
128#: qml/Dash/Previews/PreviewActionCombo.qml:34
107msgid "Less..."
129msgid "Less..."
108−msgstr ""
130+msgstr "Nas lugha..."
109
131
110−#: qml/Dash/Previews/PreviewRatingInput.qml:81
132+#: qml/Dash/Previews/PreviewRatingInput.qml:82
111msgid "Rate this"
133msgid "Rate this"
112msgstr "Rangaich seo"
134msgstr "Rangaich seo"
113
135
114−#: qml/Dash/Previews/PreviewRatingInput.qml:126
136+#: qml/Dash/Previews/PreviewRatingInput.qml:128
115msgid "Add a review"
137msgid "Add a review"
116msgstr "Cuir lèirmheas ris"
138msgstr "Cuir lèirmheas ris"
117
139
118−#: qml/Dash/Previews/PreviewRatingInput.qml:166
140+#: qml/Dash/Previews/PreviewRatingInput.qml:168
119msgid "Send"
141msgid "Send"
120msgstr "Cuir"
142msgstr "Cuir"
121
143
122−#: qml/Greeter/Greeter.qml:151
144+#: qml/Greeter/Greeter.qml:157
123msgid "Swipe to unlock"
145msgid "Swipe to unlock"
124−msgstr ""
146+msgstr "Dèan grad-shlaighdeadh gus a' ghlas a thoirt dheth"
125−
126−#: qml/Greeter/Lockscreen.qml:149
127−msgid "Emergency Call"
128−msgstr "Gairm èiginn"
129−
130−#: qml/Greeter/PassphraseLockscreen.qml:59
131−#, qt-format
132−msgid "Hello %1"
133−msgstr "Shin thu, %1"
134−
135−#: qml/Greeter/PassphraseLockscreen.qml:59
136−msgid "Hello"
137−msgstr "Shin thu"
138
147
139#: qml/Hud/HudParametrizedActionsPage.qml:132
148#: qml/Hud/HudParametrizedActionsPage.qml:132
140msgid "Confirm"
149msgid "Confirm"
@@ -158,17 +167,17 @@ msgstr "A' bruidhinn..."
158
167
159#: qml/Notifications/NotificationMenuItemFactory.qml:91
168#: qml/Notifications/NotificationMenuItemFactory.qml:91
160msgid "Show password"
169msgid "Show password"
161−msgstr ""
170+msgstr "Seall am facal-faire"
162
171
163#: qml/Notifications/NotificationMenuItemFactory.qml:103
172#: qml/Notifications/NotificationMenuItemFactory.qml:103
164msgid "Please enter SIM PIN"
173msgid "Please enter SIM PIN"
165−msgstr ""
174+msgstr "Cuir a-steach SIM PIN"
166
175
167#: qml/Panel/SearchIndicator.qml:27
176#: qml/Panel/SearchIndicator.qml:27
168msgid "Search"
177msgid "Search"
169msgstr "Lorg"
178msgstr "Lorg"
170
179
171−#: qml/Shell.qml:348
180+#: qml/Shell.qml:334
172#, qt-format
181#, qt-format
173msgid "Please enter %1"
182msgid "Please enter %1"
174msgstr "Cuir a-steach %1"
183msgstr "Cuir a-steach %1"
po/gl.po+37−30
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11−"PO-Revision-Date: 2014-05-03 07:31+0000\n"
11+"PO-Revision-Date: 2014-06-07 13:26+0000\n"
12"Last-Translator: Marcos Lans <Unknown>\n"
12"Last-Translator: Marcos Lans <Unknown>\n"
13"Language-Team: Galician <gl@li.org>\n"
13"Language-Team: Galician <gl@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-06 07:34+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16996)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -36,7 +36,7 @@ msgstr "Bordo dereito"
36
36
37#: qml/Components/EdgeDemo.qml:114
37#: qml/Components/EdgeDemo.qml:114
38msgid "Try swiping from the right edge to unlock the phone"
38msgid "Try swiping from the right edge to unlock the phone"
39−msgstr "Probe o arrastre desde o bordo dereito para desbloquear o teléfono"
39+msgstr "Probe a esvarar desde o bordo dereito para desbloquear o teléfono"
40
40
41#: qml/Components/EdgeDemo.qml:145
41#: qml/Components/EdgeDemo.qml:145
42msgid "Top edge"
42msgid "Top edge"
@@ -71,13 +71,38 @@ msgid ""
71"You have now mastered the edge gestures and can start using the "
71"You have now mastered the edge gestures and can start using the "
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74−"Agora xa domina os xestos do bordo e pode comezar a usar o "
74+"Agora xa domina os xestos dos bordos e pode comezar a usar o "
75"teléfono<br><br>Toque na pantalla para comezar"
75"teléfono<br><br>Toque na pantalla para comezar"
76
76
77+#: qml/Components/Lockscreen.qml:214
78+msgid "Emergency Call"
79+msgstr "Chamada de emerxencia"
80+
81+#: qml/Components/Lockscreen.qml:231
82+msgid "OK"
83+msgstr "Aceptar"
84+
77#: qml/Components/PageHeader.qml:365
85#: qml/Components/PageHeader.qml:365
78msgid "Recent searches"
86msgid "Recent searches"
79msgstr "Buscas recentes"
87msgstr "Buscas recentes"
80
88
89+#: qml/Components/PassphraseLockscreen.qml:60
90+#, qt-format
91+msgid "Hello %1"
92+msgstr "Ola %1"
93+
94+#: qml/Components/PassphraseLockscreen.qml:60
95+msgid "Hello"
96+msgstr "Ola"
97+
98+#: qml/Components/PinLockscreen.qml:198
99+msgid "CANCEL"
100+msgstr "CANCELAR"
101+
102+#: qml/Components/PinLockscreen.qml:216
103+msgid "DONE"
104+msgstr "FEITO"
105+
81#: qml/Components/SeeMore.qml:35
106#: qml/Components/SeeMore.qml:35
82msgid "See more"
107msgid "See more"
83msgstr "Ver máis"
108msgstr "Ver máis"
@@ -90,11 +115,6 @@ msgstr "Ver menos"
90msgid "Recent"
115msgid "Recent"
91msgstr "Recentes"
116msgstr "Recentes"
92
117
93−#: qml/Dash/PreviewListView.qml:52
94−#, qt-format
95−msgid "%1 Preview"
96−msgstr "%1 previsualización"
97−
98#: qml/Dash/Previews/PreviewActionCombo.qml:34
118#: qml/Dash/Previews/PreviewActionCombo.qml:34
99msgid "More..."
119msgid "More..."
100msgstr "Máis…"
120msgstr "Máis…"
@@ -103,35 +123,22 @@ msgstr "Máis…"
103msgid "Less..."
123msgid "Less..."
104msgstr "Menos..."
124msgstr "Menos..."
105
125
106−#: qml/Dash/Previews/PreviewRatingInput.qml:81
126+#: qml/Dash/Previews/PreviewRatingInput.qml:82
107msgid "Rate this"
127msgid "Rate this"
108msgstr "Valore isto"
128msgstr "Valore isto"
109
129
110−#: qml/Dash/Previews/PreviewRatingInput.qml:126
130+#: qml/Dash/Previews/PreviewRatingInput.qml:128
111msgid "Add a review"
131msgid "Add a review"
112msgstr "Engadir unha opinión"
132msgstr "Engadir unha opinión"
113
133
114−#: qml/Dash/Previews/PreviewRatingInput.qml:166
134+#: qml/Dash/Previews/PreviewRatingInput.qml:168
115msgid "Send"
135msgid "Send"
116msgstr "Enviar"
136msgstr "Enviar"
117
137
118−#: qml/Greeter/Greeter.qml:151
138+#: qml/Greeter/Greeter.qml:157
119msgid "Swipe to unlock"
139msgid "Swipe to unlock"
120msgstr "Esvare para desbloquear"
140msgstr "Esvare para desbloquear"
121
141
122−#: qml/Greeter/Lockscreen.qml:149
123−msgid "Emergency Call"
124−msgstr "Chamada de emerxencia"
125−
126−#: qml/Greeter/PassphraseLockscreen.qml:59
127−#, qt-format
128−msgid "Hello %1"
129−msgstr "Ola %1"
130−
131−#: qml/Greeter/PassphraseLockscreen.qml:59
132−msgid "Hello"
133−msgstr "Ola"
134−
135#: qml/Hud/HudParametrizedActionsPage.qml:132
142#: qml/Hud/HudParametrizedActionsPage.qml:132
136msgid "Confirm"
143msgid "Confirm"
137msgstr "Confirmar"
144msgstr "Confirmar"
@@ -142,7 +149,7 @@ msgstr "Escriba ou diga unha orde"
142
149
143#: qml/Hud/Hud.qml:84
150#: qml/Hud/Hud.qml:84
144msgid "Loading. Please Wait..."
151msgid "Loading. Please Wait..."
145−msgstr "Cargando. Agarde…"
152+msgstr "Cargando, agarde…"
146
153
147#: qml/Hud/Hud.qml:89
154#: qml/Hud/Hud.qml:89
148msgid "Speak Now..."
155msgid "Speak Now..."
@@ -164,7 +171,7 @@ msgstr "Introduza o PIN da SIM"
164msgid "Search"
171msgid "Search"
165msgstr "Buscar"
172msgstr "Buscar"
166
173
167−#: qml/Shell.qml:348
174+#: qml/Shell.qml:334
168#, qt-format
175#, qt-format
169msgid "Please enter %1"
176msgid "Please enter %1"
170msgstr "Introduza %1"
177msgstr "Introduza %1"
po/he.po+43−34
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11−"PO-Revision-Date: 2013-11-20 08:30+0000\n"
11+"PO-Revision-Date: 2014-06-09 07:49+0000\n"
12"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
12"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
13"Language-Team: Hebrew <he@li.org>\n"
13"Language-Team: Hebrew <he@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -71,64 +71,73 @@ msgid ""
71"You have now mastered the edge gestures and can start using the "
71"You have now mastered the edge gestures and can start using the "
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74+"ברגעים אלו סיימת את התמחותך בשימוש במחוות קצה והטלפון פתוח לשימושך<br><br>נא "
75+"לגעת במסך כדי להתחיל"
76+
77+#: qml/Components/Lockscreen.qml:214
78+msgid "Emergency Call"
79+msgstr "שיחת חירום"
80+
81+#: qml/Components/Lockscreen.qml:231
82+msgid "OK"
83+msgstr "אישור"
74
84
75#: qml/Components/PageHeader.qml:365
85#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
86msgid "Recent searches"
77msgstr "חיפושים אחרונים"
87msgstr "חיפושים אחרונים"
78
88
89+#: qml/Components/PassphraseLockscreen.qml:60
90+#, qt-format
91+msgid "Hello %1"
92+msgstr "שלום %1"
93+
94+#: qml/Components/PassphraseLockscreen.qml:60
95+msgid "Hello"
96+msgstr "שלום"
97+
98+#: qml/Components/PinLockscreen.qml:198
99+msgid "CANCEL"
100+msgstr "ביטול"
101+
102+#: qml/Components/PinLockscreen.qml:216
103+msgid "DONE"
104+msgstr "בוצע"
105+
79#: qml/Components/SeeMore.qml:35
106#: qml/Components/SeeMore.qml:35
80msgid "See more"
107msgid "See more"
81−msgstr ""
108+msgstr "לראות עוד"
82
109
83#: qml/Components/SeeMore.qml:58
110#: qml/Components/SeeMore.qml:58
84msgid "See less"
111msgid "See less"
85−msgstr ""
112+msgstr "לראות פחות"
86
113
87#: qml/Dash/DashApps.qml:37
114#: qml/Dash/DashApps.qml:37
88msgid "Recent"
115msgid "Recent"
89−msgstr ""
116+msgstr "בשימוש לאחרונה"
90−
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95
117
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
118#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
119msgid "More..."
98−msgstr ""
120+msgstr "עוד…"
99
121
100#: qml/Dash/Previews/PreviewActionCombo.qml:34
122#: qml/Dash/Previews/PreviewActionCombo.qml:34
101msgid "Less..."
123msgid "Less..."
102−msgstr ""
124+msgstr "פחות…"
103
125
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
126+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
127msgid "Rate this"
106msgstr "דירוג היישום"
128msgstr "דירוג היישום"
107
129
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
130+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
131msgid "Add a review"
110msgstr "הוספת סקירה"
132msgstr "הוספת סקירה"
111
133
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
134+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
135msgid "Send"
114msgstr "שליחה"
136msgstr "שליחה"
115
137
116−#: qml/Greeter/Greeter.qml:151
138+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
139msgid "Swipe to unlock"
118−msgstr ""
140+msgstr "יש להחליק לפתיחה"
119−
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr "שיחת חירום"
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr "שלום %1"
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr "שלום"
132
141
133#: qml/Hud/HudParametrizedActionsPage.qml:132
142#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
143msgid "Confirm"
@@ -156,13 +165,13 @@ msgstr "הצגת הססמה"
156
165
157#: qml/Notifications/NotificationMenuItemFactory.qml:103
166#: qml/Notifications/NotificationMenuItemFactory.qml:103
158msgid "Please enter SIM PIN"
167msgid "Please enter SIM PIN"
159−msgstr ""
168+msgstr "נא להזין את קוד ה־<U+200F>SIM"
160
169
161#: qml/Panel/SearchIndicator.qml:27
170#: qml/Panel/SearchIndicator.qml:27
162msgid "Search"
171msgid "Search"
163msgstr "חיפוש"
172msgstr "חיפוש"
164
173
165−#: qml/Shell.qml:348
174+#: qml/Shell.qml:334
166#, qt-format
175#, qt-format
167msgid "Please enter %1"
176msgid "Please enter %1"
168msgstr "נא להזין %1"
177msgstr "נא להזין %1"
po/hi.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2014-01-15 01:49+0000\n"
11"PO-Revision-Date: 2014-01-15 01:49+0000\n"
12"Last-Translator: Siddhanathan S. <Unknown>\n"
12"Last-Translator: Siddhanathan S. <Unknown>\n"
13"Language-Team: Hindi <hi@li.org>\n"
13"Language-Team: Hindi <hi@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr "आपातकालीन कॉल"
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr "पिछले खोजों"
85msgstr "पिछले खोजों"
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr ""
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr "नमस्ते"
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr ""
126msgstr ""
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr "समीक्षा दे"
130msgstr "समीक्षा दे"
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr "भेजें"
134msgstr "भेजें"
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr "आपातकालीन कॉल"
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr ""
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr "नमस्ते"
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr ""
142msgstr ""
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr "खोजें"
170msgstr "खोजें"
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr ""
175msgstr ""
po/hr.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2013-06-27 04:14+0000\n"
11"PO-Revision-Date: 2013-06-27 04:14+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Croatian <hr@li.org>\n"
13"Language-Team: Croatian <hr@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr ""
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr "Nedavne pretrage"
85msgstr "Nedavne pretrage"
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr ""
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr ""
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr ""
126msgstr ""
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr ""
130msgstr ""
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr ""
134msgstr ""
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr ""
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr ""
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr "Potvrdi"
142msgstr "Potvrdi"
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr "Pretraživanje"
170msgstr "Pretraživanje"
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr ""
175msgstr ""
po/hu.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2014-01-14 23:02+0000\n"
11"PO-Revision-Date: 2014-01-14 23:02+0000\n"
12"Last-Translator: Kristóf Kiszel <Unknown>\n"
12"Last-Translator: Kristóf Kiszel <Unknown>\n"
13"Language-Team: Hungarian <hu@li.org>\n"
13"Language-Team: Hungarian <hu@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -74,10 +74,35 @@ msgid ""
74"phone<br><br>Tap on the screen to start"
74"phone<br><br>Tap on the screen to start"
75msgstr ""
75msgstr ""
76
76
77+#: qml/Components/Lockscreen.qml:214
78+msgid "Emergency Call"
79+msgstr "Vészhívás"
80+
81+#: qml/Components/Lockscreen.qml:231
82+msgid "OK"
83+msgstr ""
84+
77#: qml/Components/PageHeader.qml:365
85#: qml/Components/PageHeader.qml:365
78msgid "Recent searches"
86msgid "Recent searches"
79msgstr "Legutóbbi keresések"
87msgstr "Legutóbbi keresések"
80
88
89+#: qml/Components/PassphraseLockscreen.qml:60
90+#, qt-format
91+msgid "Hello %1"
92+msgstr "Szia %1"
93+
94+#: qml/Components/PassphraseLockscreen.qml:60
95+msgid "Hello"
96+msgstr "Szia"
97+
98+#: qml/Components/PinLockscreen.qml:198
99+msgid "CANCEL"
100+msgstr ""
101+
102+#: qml/Components/PinLockscreen.qml:216
103+msgid "DONE"
104+msgstr ""
105+
81#: qml/Components/SeeMore.qml:35
106#: qml/Components/SeeMore.qml:35
82msgid "See more"
107msgid "See more"
83msgstr ""
108msgstr ""
@@ -90,11 +115,6 @@ msgstr ""
90msgid "Recent"
115msgid "Recent"
91msgstr ""
116msgstr ""
92
117
93−#: qml/Dash/PreviewListView.qml:52
94−#, qt-format
95−msgid "%1 Preview"
96−msgstr ""
97−
98#: qml/Dash/Previews/PreviewActionCombo.qml:34
118#: qml/Dash/Previews/PreviewActionCombo.qml:34
99msgid "More..."
119msgid "More..."
100msgstr ""
120msgstr ""
@@ -103,35 +123,22 @@ msgstr ""
103msgid "Less..."
123msgid "Less..."
104msgstr ""
124msgstr ""
105
125
106−#: qml/Dash/Previews/PreviewRatingInput.qml:81
126+#: qml/Dash/Previews/PreviewRatingInput.qml:82
107msgid "Rate this"
127msgid "Rate this"
108msgstr "Osztályzás"
128msgstr "Osztályzás"
109
129
110−#: qml/Dash/Previews/PreviewRatingInput.qml:126
130+#: qml/Dash/Previews/PreviewRatingInput.qml:128
111msgid "Add a review"
131msgid "Add a review"
112msgstr "Értékelés hozzáadása"
132msgstr "Értékelés hozzáadása"
113
133
114−#: qml/Dash/Previews/PreviewRatingInput.qml:166
134+#: qml/Dash/Previews/PreviewRatingInput.qml:168
115msgid "Send"
135msgid "Send"
116msgstr "Küldés"
136msgstr "Küldés"
117
137
118−#: qml/Greeter/Greeter.qml:151
138+#: qml/Greeter/Greeter.qml:157
119msgid "Swipe to unlock"
139msgid "Swipe to unlock"
120msgstr ""
140msgstr ""
121
141
122−#: qml/Greeter/Lockscreen.qml:149
123−msgid "Emergency Call"
124−msgstr "Vészhívás"
125−
126−#: qml/Greeter/PassphraseLockscreen.qml:59
127−#, qt-format
128−msgid "Hello %1"
129−msgstr "Szia %1"
130−
131−#: qml/Greeter/PassphraseLockscreen.qml:59
132−msgid "Hello"
133−msgstr "Szia"
134−
135#: qml/Hud/HudParametrizedActionsPage.qml:132
142#: qml/Hud/HudParametrizedActionsPage.qml:132
136msgid "Confirm"
143msgid "Confirm"
137msgstr "Megerősítés"
144msgstr "Megerősítés"
@@ -164,7 +171,7 @@ msgstr ""
164msgid "Search"
171msgid "Search"
165msgstr "Keresés"
172msgstr "Keresés"
166
173
167−#: qml/Shell.qml:348
174+#: qml/Shell.qml:334
168#, qt-format
175#, qt-format
169msgid "Please enter %1"
176msgid "Please enter %1"
170msgstr "Adja meg a következőt: %1"
177msgstr "Adja meg a következőt: %1"
po/hy.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2013-06-27 04:43+0000\n"
11"PO-Revision-Date: 2013-06-27 04:43+0000\n"
12"Last-Translator: iAbaS <sosabazyan@yandex.ru>\n"
12"Last-Translator: iAbaS <sosabazyan@yandex.ru>\n"
13"Language-Team: Armenian <hy@li.org>\n"
13"Language-Team: Armenian <hy@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr ""
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr "Վերջին որոնումներ"
85msgstr "Վերջին որոնումներ"
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr ""
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr ""
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr ""
126msgstr ""
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr ""
130msgstr ""
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr ""
134msgstr ""
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr ""
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr ""
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr "Հաստատել"
142msgstr "Հաստատել"
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr "Որոնում"
170msgstr "Որոնում"
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr ""
175msgstr ""
po/id.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2013-06-26 22:35+0000\n"
11"PO-Revision-Date: 2013-06-26 22:35+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Indonesian <id@li.org>\n"
13"Language-Team: Indonesian <id@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr ""
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr ""
85msgstr ""
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr ""
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr ""
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr ""
126msgstr ""
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr ""
130msgstr ""
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr ""
134msgstr ""
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr ""
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr ""
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr ""
142msgstr ""
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr ""
170msgstr ""
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr ""
175msgstr ""
po/is.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2013-09-18 16:22+0000\n"
11"PO-Revision-Date: 2013-09-18 16:22+0000\n"
12"Last-Translator: Andri Thorlacius <Unknown>\n"
12"Last-Translator: Andri Thorlacius <Unknown>\n"
13"Language-Team: Icelandic <is@li.org>\n"
13"Language-Team: Icelandic <is@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -73,10 +73,35 @@ msgid ""
73"phone<br><br>Tap on the screen to start"
73"phone<br><br>Tap on the screen to start"
74msgstr ""
74msgstr ""
75
75
76+#: qml/Components/Lockscreen.qml:214
77+msgid "Emergency Call"
78+msgstr "Neyðarsímtal"
79+
80+#: qml/Components/Lockscreen.qml:231
81+msgid "OK"
82+msgstr ""
83+
76#: qml/Components/PageHeader.qml:365
84#: qml/Components/PageHeader.qml:365
77msgid "Recent searches"
85msgid "Recent searches"
78msgstr "Nýlegar leitir"
86msgstr "Nýlegar leitir"
79
87
88+#: qml/Components/PassphraseLockscreen.qml:60
89+#, qt-format
90+msgid "Hello %1"
91+msgstr "Hæ %1"
92+
93+#: qml/Components/PassphraseLockscreen.qml:60
94+msgid "Hello"
95+msgstr "Hæ"
96+
97+#: qml/Components/PinLockscreen.qml:198
98+msgid "CANCEL"
99+msgstr ""
100+
101+#: qml/Components/PinLockscreen.qml:216
102+msgid "DONE"
103+msgstr ""
104+
80#: qml/Components/SeeMore.qml:35
105#: qml/Components/SeeMore.qml:35
81msgid "See more"
106msgid "See more"
82msgstr ""
107msgstr ""
@@ -89,11 +114,6 @@ msgstr ""
89msgid "Recent"
114msgid "Recent"
90msgstr ""
115msgstr ""
91
116
92−#: qml/Dash/PreviewListView.qml:52
93−#, qt-format
94−msgid "%1 Preview"
95−msgstr ""
96−
97#: qml/Dash/Previews/PreviewActionCombo.qml:34
117#: qml/Dash/Previews/PreviewActionCombo.qml:34
98msgid "More..."
118msgid "More..."
99msgstr ""
119msgstr ""
@@ -102,35 +122,22 @@ msgstr ""
102msgid "Less..."
122msgid "Less..."
103msgstr ""
123msgstr ""
104
124
105−#: qml/Dash/Previews/PreviewRatingInput.qml:81
125+#: qml/Dash/Previews/PreviewRatingInput.qml:82
106msgid "Rate this"
126msgid "Rate this"
107msgstr "Gefa þessu einkunn"
127msgstr "Gefa þessu einkunn"
108
128
109−#: qml/Dash/Previews/PreviewRatingInput.qml:126
129+#: qml/Dash/Previews/PreviewRatingInput.qml:128
110msgid "Add a review"
130msgid "Add a review"
111msgstr "Gefa umsögn"
131msgstr "Gefa umsögn"
112
132
113−#: qml/Dash/Previews/PreviewRatingInput.qml:166
133+#: qml/Dash/Previews/PreviewRatingInput.qml:168
114msgid "Send"
134msgid "Send"
115msgstr "Senda"
135msgstr "Senda"
116
136
117−#: qml/Greeter/Greeter.qml:151
137+#: qml/Greeter/Greeter.qml:157
118msgid "Swipe to unlock"
138msgid "Swipe to unlock"
119msgstr ""
139msgstr ""
120
140
121−#: qml/Greeter/Lockscreen.qml:149
122−msgid "Emergency Call"
123−msgstr "Neyðarsímtal"
124−
125−#: qml/Greeter/PassphraseLockscreen.qml:59
126−#, qt-format
127−msgid "Hello %1"
128−msgstr "Hæ %1"
129−
130−#: qml/Greeter/PassphraseLockscreen.qml:59
131−msgid "Hello"
132−msgstr "Hæ"
133−
134#: qml/Hud/HudParametrizedActionsPage.qml:132
141#: qml/Hud/HudParametrizedActionsPage.qml:132
135msgid "Confirm"
142msgid "Confirm"
136msgstr "Staðfesta"
143msgstr "Staðfesta"
@@ -163,7 +170,7 @@ msgstr ""
163msgid "Search"
170msgid "Search"
164msgstr "Leita"
171msgstr "Leita"
165
172
166−#: qml/Shell.qml:348
173+#: qml/Shell.qml:334
167#, qt-format
174#, qt-format
168msgid "Please enter %1"
175msgid "Please enter %1"
169msgstr ""
176msgstr ""
po/it.po+44−35
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11−"PO-Revision-Date: 2014-01-22 09:15+0000\n"
11+"PO-Revision-Date: 2014-06-10 12:08+0000\n"
12−"Last-Translator: Domenico <domenico.verde125@live.it>\n"
12+"Last-Translator: Claudio Arseni <claudio.arseni@gmail.com>\n"
13"Language-Team: Italian <it@li.org>\n"
13"Language-Team: Italian <it@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -76,64 +76,73 @@ msgid ""
76"You have now mastered the edge gestures and can start using the "
76"You have now mastered the edge gestures and can start using the "
77"phone<br><br>Tap on the screen to start"
77"phone<br><br>Tap on the screen to start"
78msgstr ""
78msgstr ""
79+"L'apprendimento dei gesti è stato completato. È ora possibile iniziare a "
80+"usare il telefono.<br><br>Toccare lo schermo per iniziare"
81+
82+#: qml/Components/Lockscreen.qml:214
83+msgid "Emergency Call"
84+msgstr "Chiamata di emergenza"
85+
86+#: qml/Components/Lockscreen.qml:231
87+msgid "OK"
88+msgstr "OK"
79
89
80#: qml/Components/PageHeader.qml:365
90#: qml/Components/PageHeader.qml:365
81msgid "Recent searches"
91msgid "Recent searches"
82msgstr "Ricerche recenti"
92msgstr "Ricerche recenti"
83
93
94+#: qml/Components/PassphraseLockscreen.qml:60
95+#, qt-format
96+msgid "Hello %1"
97+msgstr "Ciao %1"
98+
99+#: qml/Components/PassphraseLockscreen.qml:60
100+msgid "Hello"
101+msgstr "Ciao"
102+
103+#: qml/Components/PinLockscreen.qml:198
104+msgid "CANCEL"
105+msgstr "Annulla"
106+
107+#: qml/Components/PinLockscreen.qml:216
108+msgid "DONE"
109+msgstr "Fatto"
110+
84#: qml/Components/SeeMore.qml:35
111#: qml/Components/SeeMore.qml:35
85msgid "See more"
112msgid "See more"
86−msgstr ""
113+msgstr "Mostra di più"
87
114
88#: qml/Components/SeeMore.qml:58
115#: qml/Components/SeeMore.qml:58
89msgid "See less"
116msgid "See less"
90−msgstr ""
117+msgstr "Mostra meno"
91
118
92#: qml/Dash/DashApps.qml:37
119#: qml/Dash/DashApps.qml:37
93msgid "Recent"
120msgid "Recent"
94−msgstr ""
121+msgstr "Recenti"
95−
96−#: qml/Dash/PreviewListView.qml:52
97−#, qt-format
98−msgid "%1 Preview"
99−msgstr ""
100
122
101#: qml/Dash/Previews/PreviewActionCombo.qml:34
123#: qml/Dash/Previews/PreviewActionCombo.qml:34
102msgid "More..."
124msgid "More..."
103−msgstr ""
125+msgstr "Altro..."
104
126
105#: qml/Dash/Previews/PreviewActionCombo.qml:34
127#: qml/Dash/Previews/PreviewActionCombo.qml:34
106msgid "Less..."
128msgid "Less..."
107−msgstr ""
129+msgstr "Meno..."
108
130
109−#: qml/Dash/Previews/PreviewRatingInput.qml:81
131+#: qml/Dash/Previews/PreviewRatingInput.qml:82
110msgid "Rate this"
132msgid "Rate this"
111msgstr "Valuta"
133msgstr "Valuta"
112
134
113−#: qml/Dash/Previews/PreviewRatingInput.qml:126
135+#: qml/Dash/Previews/PreviewRatingInput.qml:128
114msgid "Add a review"
136msgid "Add a review"
115msgstr "Aggiungi una recensione"
137msgstr "Aggiungi una recensione"
116
138
117−#: qml/Dash/Previews/PreviewRatingInput.qml:166
139+#: qml/Dash/Previews/PreviewRatingInput.qml:168
118msgid "Send"
140msgid "Send"
119msgstr "Invia"
141msgstr "Invia"
120
142
121−#: qml/Greeter/Greeter.qml:151
143+#: qml/Greeter/Greeter.qml:157
122msgid "Swipe to unlock"
144msgid "Swipe to unlock"
123−msgstr ""
145+msgstr "Scorrere per sbloccare"
124−
125−#: qml/Greeter/Lockscreen.qml:149
126−msgid "Emergency Call"
127−msgstr "Chiamata di emergenza"
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−#, qt-format
131−msgid "Hello %1"
132−msgstr "Ciao %1"
133−
134−#: qml/Greeter/PassphraseLockscreen.qml:59
135−msgid "Hello"
136−msgstr "Ciao"
137
146
138#: qml/Hud/HudParametrizedActionsPage.qml:132
147#: qml/Hud/HudParametrizedActionsPage.qml:132
139msgid "Confirm"
148msgid "Confirm"
@@ -161,13 +170,13 @@ msgstr "Mostra password"
161
170
162#: qml/Notifications/NotificationMenuItemFactory.qml:103
171#: qml/Notifications/NotificationMenuItemFactory.qml:103
163msgid "Please enter SIM PIN"
172msgid "Please enter SIM PIN"
164−msgstr ""
173+msgstr "Inserire il codice PIN"
165
174
166#: qml/Panel/SearchIndicator.qml:27
175#: qml/Panel/SearchIndicator.qml:27
167msgid "Search"
176msgid "Search"
168msgstr "Cerca"
177msgstr "Cerca"
169
178
170−#: qml/Shell.qml:348
179+#: qml/Shell.qml:334
171#, qt-format
180#, qt-format
172msgid "Please enter %1"
181msgid "Please enter %1"
173msgstr "Inserire %1"
182msgstr "Inserire %1"
po/ja.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2014-01-18 07:01+0000\n"
11"PO-Revision-Date: 2014-01-18 07:01+0000\n"
12"Last-Translator: Shushi Kurose <md81bird@hitaki.net>\n"
12"Last-Translator: Shushi Kurose <md81bird@hitaki.net>\n"
13"Language-Team: Japanese <ja@li.org>\n"
13"Language-Team: Japanese <ja@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr ""
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr "最近の検索"
85msgstr "最近の検索"
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr ""
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr "こんにちは"
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr ""
126msgstr ""
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr ""
130msgstr ""
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr "送信"
134msgstr "送信"
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr ""
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr "こんにちは"
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr "確認"
142msgstr "確認"
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr "検索"
170msgstr "検索"
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr ""
175msgstr ""
po/km.po+36−29
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11−"PO-Revision-Date: 2014-03-04 02:32+0000\n"
11+"PO-Revision-Date: 2014-05-19 01:42+0000\n"
12"Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>\n"
12"Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>\n"
13"Language-Team: Khmer <km@li.org>\n"
13"Language-Team: Khmer <km@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -76,10 +76,35 @@ msgstr ""
76"ឥឡូវ​អ្នក​បាន​ពិនិត្យ​កាយវិការ​គែម​ "
76"ឥឡូវ​អ្នក​បាន​ពិនិត្យ​កាយវិការ​គែម​ "
77"និង​អាច​ចាប់ផ្ដើម​ប្រើ​ទូរស័ព្ទ<br><br>ប៉ះ លើ​អេក្រង់​ដើម្បី​ចាប់ផ្ដើម"
77"និង​អាច​ចាប់ផ្ដើម​ប្រើ​ទូរស័ព្ទ<br><br>ប៉ះ លើ​អេក្រង់​ដើម្បី​ចាប់ផ្ដើម"
78
78
79+#: qml/Components/Lockscreen.qml:214
80+msgid "Emergency Call"
81+msgstr "ការ​ហៅ​ពេល​អាសន្ន"
82+
83+#: qml/Components/Lockscreen.qml:231
84+msgid "OK"
85+msgstr ""
86+
79#: qml/Components/PageHeader.qml:365
87#: qml/Components/PageHeader.qml:365
80msgid "Recent searches"
88msgid "Recent searches"
81msgstr "ការ​ស្វែងរក​ថ្មី"
89msgstr "ការ​ស្វែងរក​ថ្មី"
82
90
91+#: qml/Components/PassphraseLockscreen.qml:60
92+#, qt-format
93+msgid "Hello %1"
94+msgstr "សួស្ដី %1"
95+
96+#: qml/Components/PassphraseLockscreen.qml:60
97+msgid "Hello"
98+msgstr "សួស្តី"
99+
100+#: qml/Components/PinLockscreen.qml:198
101+msgid "CANCEL"
102+msgstr ""
103+
104+#: qml/Components/PinLockscreen.qml:216
105+msgid "DONE"
106+msgstr ""
107+
83#: qml/Components/SeeMore.qml:35
108#: qml/Components/SeeMore.qml:35
84msgid "See more"
109msgid "See more"
85msgstr "មើល​ច្រើន​ទៀត"
110msgstr "មើល​ច្រើន​ទៀត"
@@ -90,12 +115,7 @@ msgstr "មើល​តិច​ជាង"
90
115
91#: qml/Dash/DashApps.qml:37
116#: qml/Dash/DashApps.qml:37
92msgid "Recent"
117msgid "Recent"
93−msgstr ""
118+msgstr "បច្ចុប្បន្ន"
94−
95−#: qml/Dash/PreviewListView.qml:52
96−#, qt-format
97−msgid "%1 Preview"
98−msgstr ""
99
119
100#: qml/Dash/Previews/PreviewActionCombo.qml:34
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
101msgid "More..."
121msgid "More..."
@@ -105,34 +125,21 @@ msgstr "ច្រើនជាង​..."
105msgid "Less..."
125msgid "Less..."
106msgstr "តិច​ជាង..."
126msgstr "តិច​ជាង..."
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:81
128+#: qml/Dash/Previews/PreviewRatingInput.qml:82
109msgid "Rate this"
129msgid "Rate this"
110msgstr "វាយតម្លៃ​វា"
130msgstr "វាយតម្លៃ​វា"
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:126
132+#: qml/Dash/Previews/PreviewRatingInput.qml:128
113msgid "Add a review"
133msgid "Add a review"
114msgstr "បន្ថែម​ការ​ពិនិត្យ"
134msgstr "បន្ថែម​ការ​ពិនិត្យ"
115
135
116−#: qml/Dash/Previews/PreviewRatingInput.qml:166
136+#: qml/Dash/Previews/PreviewRatingInput.qml:168
117msgid "Send"
137msgid "Send"
118msgstr "ផ្ញើ"
138msgstr "ផ្ញើ"
119
139
120−#: qml/Greeter/Greeter.qml:151
140+#: qml/Greeter/Greeter.qml:157
121msgid "Swipe to unlock"
141msgid "Swipe to unlock"
122−msgstr ""
142+msgstr "អូស​ដើម្បី​ដោះសោ"
123−
124−#: qml/Greeter/Lockscreen.qml:149
125−msgid "Emergency Call"
126−msgstr "ការ​ហៅ​ពេល​អាសន្ន"
127−
128−#: qml/Greeter/PassphraseLockscreen.qml:59
129−#, qt-format
130−msgid "Hello %1"
131−msgstr "សួស្ដី %1"
132−
133−#: qml/Greeter/PassphraseLockscreen.qml:59
134−msgid "Hello"
135−msgstr "សួស្តី"
136
143
137#: qml/Hud/HudParametrizedActionsPage.qml:132
144#: qml/Hud/HudParametrizedActionsPage.qml:132
138msgid "Confirm"
145msgid "Confirm"
@@ -166,7 +173,7 @@ msgstr "បញ្ចូល​កូដ PIN របស់​ស៊ីមកាត"
166msgid "Search"
173msgid "Search"
167msgstr "ស្វែង​រក"
174msgstr "ស្វែង​រក"
168
175
169−#: qml/Shell.qml:348
176+#: qml/Shell.qml:334
170#, qt-format
177#, qt-format
171msgid "Please enter %1"
178msgid "Please enter %1"
172msgstr "សូម​បញ្ចូល %1"
179msgstr "សូម​បញ្ចូល %1"
po/kn.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2013-06-27 05:43+0000\n"
11"PO-Revision-Date: 2013-06-27 05:43+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Kannada <kn@li.org>\n"
13"Language-Team: Kannada <kn@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr ""
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr "ಇತ್ತೀಚಿನ ಹುಡುಕಾಟಗಳು"
85msgstr "ಇತ್ತೀಚಿನ ಹುಡುಕಾಟಗಳು"
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr ""
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr ""
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr ""
126msgstr ""
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr ""
130msgstr ""
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr ""
134msgstr ""
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr ""
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr ""
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr "ಖಚಿತಪಡಿಸು"
142msgstr "ಖಚಿತಪಡಿಸು"
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr "ಹುಡುಕು"
170msgstr "ಹುಡುಕು"
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr ""
175msgstr ""
po/ko.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2013-10-10 07:04+0000\n"
11"PO-Revision-Date: 2013-10-10 07:04+0000\n"
12"Last-Translator: Kim Boram <boramism@gmail.com>\n"
12"Last-Translator: Kim Boram <boramism@gmail.com>\n"
13"Language-Team: Korean <ko@li.org>\n"
13"Language-Team: Korean <ko@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr ""
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr "최근 검색"
85msgstr "최근 검색"
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr ""
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr ""
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr ""
126msgstr ""
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr ""
130msgstr ""
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr ""
134msgstr ""
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr ""
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr ""
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr ""
142msgstr ""
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr "검색"
170msgstr "검색"
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr ""
175msgstr ""
po/ky.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2013-06-27 06:17+0000\n"
11"PO-Revision-Date: 2013-06-27 06:17+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Kirghiz <ky@li.org>\n"
13"Language-Team: Kirghiz <ky@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr ""
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr "Соңку издөөлөр"
85msgstr "Соңку издөөлөр"
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr ""
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr ""
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr ""
126msgstr ""
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr ""
130msgstr ""
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr ""
134msgstr ""
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr ""
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr ""
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr "Аныктоо"
142msgstr "Аныктоо"
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr "Издөө"
170msgstr "Издөө"
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr ""
175msgstr ""
po/lo.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2013-10-02 10:00+0000\n"
11"PO-Revision-Date: 2013-10-02 10:00+0000\n"
12"Last-Translator: Anousak <anousak@gmail.com>\n"
12"Last-Translator: Anousak <anousak@gmail.com>\n"
13"Language-Team: Lao <lo@li.org>\n"
13"Language-Team: Lao <lo@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr ""
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr ""
85msgstr ""
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr "ສະບາຍດີ %1"
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr "ສະບາຍດີ"
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr ""
126msgstr ""
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr ""
130msgstr ""
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr "ສົ່ງ"
134msgstr "ສົ່ງ"
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr "ສະບາຍດີ %1"
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr "ສະບາຍດີ"
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr "ຢືນຢັນ"
142msgstr "ຢືນຢັນ"
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr "ຊອກຫາ"
170msgstr "ຊອກຫາ"
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr "ກະລູນາປ້ອນ %1"
175msgstr "ກະລູນາປ້ອນ %1"
po/lt.po+40−33
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11−"PO-Revision-Date: 2014-01-15 12:42+0000\n"
11+"PO-Revision-Date: 2014-05-19 17:15+0000\n"
12−"Last-Translator: Gediminas Paulauskas <menesis@pov.lt>\n"
12+"Last-Translator: Mantas Kriaučiūnas <mantas@akl.lt>\n"
13"Language-Team: Lithuanian <lt@li.org>\n"
13"Language-Team: Lithuanian <lt@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -75,10 +75,35 @@ msgid ""
75"phone<br><br>Tap on the screen to start"
75"phone<br><br>Tap on the screen to start"
76msgstr ""
76msgstr ""
77
77
78+#: qml/Components/Lockscreen.qml:214
79+msgid "Emergency Call"
80+msgstr "Pagalbos skambutis"
81+
82+#: qml/Components/Lockscreen.qml:231
83+msgid "OK"
84+msgstr ""
85+
78#: qml/Components/PageHeader.qml:365
86#: qml/Components/PageHeader.qml:365
79msgid "Recent searches"
87msgid "Recent searches"
80msgstr "Paskiausios paieškos"
88msgstr "Paskiausios paieškos"
81
89
90+#: qml/Components/PassphraseLockscreen.qml:60
91+#, qt-format
92+msgid "Hello %1"
93+msgstr "Laba diena, %1"
94+
95+#: qml/Components/PassphraseLockscreen.qml:60
96+msgid "Hello"
97+msgstr "Sveiki"
98+
99+#: qml/Components/PinLockscreen.qml:198
100+msgid "CANCEL"
101+msgstr ""
102+
103+#: qml/Components/PinLockscreen.qml:216
104+msgid "DONE"
105+msgstr ""
106+
82#: qml/Components/SeeMore.qml:35
107#: qml/Components/SeeMore.qml:35
83msgid "See more"
108msgid "See more"
84msgstr ""
109msgstr ""
@@ -89,49 +114,31 @@ msgstr ""
89
114
90#: qml/Dash/DashApps.qml:37
115#: qml/Dash/DashApps.qml:37
91msgid "Recent"
116msgid "Recent"
92−msgstr ""
117+msgstr "Paskiausieji"
93−
94−#: qml/Dash/PreviewListView.qml:52
95−#, qt-format
96−msgid "%1 Preview"
97−msgstr ""
98
118
99#: qml/Dash/Previews/PreviewActionCombo.qml:34
119#: qml/Dash/Previews/PreviewActionCombo.qml:34
100msgid "More..."
120msgid "More..."
101−msgstr ""
121+msgstr "Daugiau..."
102
122
103#: qml/Dash/Previews/PreviewActionCombo.qml:34
123#: qml/Dash/Previews/PreviewActionCombo.qml:34
104msgid "Less..."
124msgid "Less..."
105−msgstr ""
125+msgstr "Mažiau..."
106
126
107−#: qml/Dash/Previews/PreviewRatingInput.qml:81
127+#: qml/Dash/Previews/PreviewRatingInput.qml:82
108msgid "Rate this"
128msgid "Rate this"
109msgstr "Įvertinkite tai"
129msgstr "Įvertinkite tai"
110
130
111−#: qml/Dash/Previews/PreviewRatingInput.qml:126
131+#: qml/Dash/Previews/PreviewRatingInput.qml:128
112msgid "Add a review"
132msgid "Add a review"
113msgstr "Pridėkite apžvalgą"
133msgstr "Pridėkite apžvalgą"
114
134
115−#: qml/Dash/Previews/PreviewRatingInput.qml:166
135+#: qml/Dash/Previews/PreviewRatingInput.qml:168
116msgid "Send"
136msgid "Send"
117msgstr "Siųsti"
137msgstr "Siųsti"
118
138
119−#: qml/Greeter/Greeter.qml:151
139+#: qml/Greeter/Greeter.qml:157
120msgid "Swipe to unlock"
140msgid "Swipe to unlock"
121−msgstr ""
141+msgstr "Braukite ir atrakinsite"
122−
123−#: qml/Greeter/Lockscreen.qml:149
124−msgid "Emergency Call"
125−msgstr "Pagalbos skambutis"
126−
127−#: qml/Greeter/PassphraseLockscreen.qml:59
128−#, qt-format
129−msgid "Hello %1"
130−msgstr "Laba diena, %1"
131−
132−#: qml/Greeter/PassphraseLockscreen.qml:59
133−msgid "Hello"
134−msgstr "Sveiki"
135
142
136#: qml/Hud/HudParametrizedActionsPage.qml:132
143#: qml/Hud/HudParametrizedActionsPage.qml:132
137msgid "Confirm"
144msgid "Confirm"
@@ -159,13 +166,13 @@ msgstr "Rodyti slaptažodį"
159
166
160#: qml/Notifications/NotificationMenuItemFactory.qml:103
167#: qml/Notifications/NotificationMenuItemFactory.qml:103
161msgid "Please enter SIM PIN"
168msgid "Please enter SIM PIN"
162−msgstr ""
169+msgstr "Įveskite SIM kortelės PIN kodą"
163
170
164#: qml/Panel/SearchIndicator.qml:27
171#: qml/Panel/SearchIndicator.qml:27
165msgid "Search"
172msgid "Search"
166msgstr "Paieška"
173msgstr "Paieška"
167
174
168−#: qml/Shell.qml:348
175+#: qml/Shell.qml:334
169#, qt-format
176#, qt-format
170msgid "Please enter %1"
177msgid "Please enter %1"
171msgstr "Prašom įvesti %1"
178msgstr "Prašom įvesti %1"
po/lv.po+51−44
@@ -7,28 +7,28 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11−"PO-Revision-Date: 2014-01-11 16:48+0000\n"
11+"PO-Revision-Date: 2014-05-31 14:54+0000\n"
12"Last-Translator: Jānis-Marks Gailis <jeanmarc.gailis@gmail.com>\n"
12"Last-Translator: Jānis-Marks Gailis <jeanmarc.gailis@gmail.com>\n"
13"Language-Team: Latvian <lv@li.org>\n"
13"Language-Team: Latvian <lv@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
22msgid "Lock to Launcher"
22msgid "Lock to Launcher"
23−msgstr ""
23+msgstr "Pieslēgt palaidējam"
24
24
25#: plugins/Unity/Launcher/launcheritem.cpp:73
25#: plugins/Unity/Launcher/launcheritem.cpp:73
26msgid "Unlock from Launcher"
26msgid "Unlock from Launcher"
27−msgstr ""
27+msgstr "Atslēgt no palaidēja"
28
28
29#: qml/Components/EdgeDemoOverlay.qml:151
29#: qml/Components/EdgeDemoOverlay.qml:151
30msgid "Skip intro"
30msgid "Skip intro"
31−msgstr ""
31+msgstr "Izlaist Intro"
32
32
33#: qml/Components/EdgeDemo.qml:113
33#: qml/Components/EdgeDemo.qml:113
34msgid "Right edge"
34msgid "Right edge"
@@ -36,7 +36,7 @@ msgstr "Labā mala"
36
36
37#: qml/Components/EdgeDemo.qml:114
37#: qml/Components/EdgeDemo.qml:114
38msgid "Try swiping from the right edge to unlock the phone"
38msgid "Try swiping from the right edge to unlock the phone"
39−msgstr ""
39+msgstr "Mēģiniet iesvelt no labās malas, lai atbloķētu tālruni"
40
40
41#: qml/Components/EdgeDemo.qml:145
41#: qml/Components/EdgeDemo.qml:145
42msgid "Top edge"
42msgid "Top edge"
@@ -44,7 +44,7 @@ msgstr "Augšējā mala"
44
44
45#: qml/Components/EdgeDemo.qml:146
45#: qml/Components/EdgeDemo.qml:146
46msgid "Try swiping from the top edge to access the indicators"
46msgid "Try swiping from the top edge to access the indicators"
47−msgstr ""
47+msgstr "Mēģiniet iesvelt no augšējās malas, lai piekļūt pie indikatoriem"
48
48
49#: qml/Components/EdgeDemo.qml:171
49#: qml/Components/EdgeDemo.qml:171
50msgid "Close"
50msgid "Close"
@@ -64,7 +64,7 @@ msgstr ""
64
64
65#: qml/Components/EdgeDemo.qml:227
65#: qml/Components/EdgeDemo.qml:227
66msgid "Well done"
66msgid "Well done"
67−msgstr ""
67+msgstr "Ļoti labi!"
68
68
69#: qml/Components/EdgeDemo.qml:228
69#: qml/Components/EdgeDemo.qml:228
70msgid ""
70msgid ""
@@ -72,64 +72,71 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr "Neatliekamās Palīdzības zvans"
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr "Nesen veiktās meklēšanas"
85msgstr "Nesen veiktās meklēšanas"
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr "Sveiki, %1"
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr "Sveiki"
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81−msgstr ""
106+msgstr "Redzēt vairāk"
82
107
83#: qml/Components/SeeMore.qml:58
108#: qml/Components/SeeMore.qml:58
84msgid "See less"
109msgid "See less"
85−msgstr ""
110+msgstr "Redzēt mazāk"
86
111
87#: qml/Dash/DashApps.qml:37
112#: qml/Dash/DashApps.qml:37
88msgid "Recent"
113msgid "Recent"
89−msgstr ""
114+msgstr "Nesens"
90−
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95
115
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98−msgstr ""
118+msgstr "Vairāk..."
99
119
100#: qml/Dash/Previews/PreviewActionCombo.qml:34
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
101msgid "Less..."
121msgid "Less..."
102−msgstr ""
122+msgstr "Mazāk..."
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106−msgstr ""
126+msgstr "Novērtēt šo"
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110−msgstr ""
130+msgstr "Komentēt"
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114−msgstr ""
134+msgstr "Sūtīt"
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr ""
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr ""
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr "Apstiprināt"
142msgstr "Apstiprināt"
@@ -152,17 +159,17 @@ msgstr "Runa..."
152
159
153#: qml/Notifications/NotificationMenuItemFactory.qml:91
160#: qml/Notifications/NotificationMenuItemFactory.qml:91
154msgid "Show password"
161msgid "Show password"
155−msgstr ""
162+msgstr "Rādīt paroli"
156
163
157#: qml/Notifications/NotificationMenuItemFactory.qml:103
164#: qml/Notifications/NotificationMenuItemFactory.qml:103
158msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
159−msgstr ""
166+msgstr "Lūdzu ievadiet SIM PIN"
160
167
161#: qml/Panel/SearchIndicator.qml:27
168#: qml/Panel/SearchIndicator.qml:27
162msgid "Search"
169msgid "Search"
163msgstr "Meklēt"
170msgstr "Meklēt"
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168−msgstr ""
175+msgstr "Lūdzu ievadiet %1"
po/ml.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2013-11-23 11:44+0000\n"
11"PO-Revision-Date: 2013-11-23 11:44+0000\n"
12"Last-Translator: Stym alfaZ <Unknown>\n"
12"Last-Translator: Stym alfaZ <Unknown>\n"
13"Language-Team: Malayalam <ml@li.org>\n"
13"Language-Team: Malayalam <ml@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -74,10 +74,35 @@ msgid ""
74"phone<br><br>Tap on the screen to start"
74"phone<br><br>Tap on the screen to start"
75msgstr ""
75msgstr ""
76
76
77+#: qml/Components/Lockscreen.qml:214
78+msgid "Emergency Call"
79+msgstr "അടിയന്തിര വിളി"
80+
81+#: qml/Components/Lockscreen.qml:231
82+msgid "OK"
83+msgstr ""
84+
77#: qml/Components/PageHeader.qml:365
85#: qml/Components/PageHeader.qml:365
78msgid "Recent searches"
86msgid "Recent searches"
79msgstr "സമീപകാല തിരയലുകള്‍"
87msgstr "സമീപകാല തിരയലുകള്‍"
80
88
89+#: qml/Components/PassphraseLockscreen.qml:60
90+#, qt-format
91+msgid "Hello %1"
92+msgstr "ഹലോ %1"
93+
94+#: qml/Components/PassphraseLockscreen.qml:60
95+msgid "Hello"
96+msgstr "ഹലോ"
97+
98+#: qml/Components/PinLockscreen.qml:198
99+msgid "CANCEL"
100+msgstr ""
101+
102+#: qml/Components/PinLockscreen.qml:216
103+msgid "DONE"
104+msgstr ""
105+
81#: qml/Components/SeeMore.qml:35
106#: qml/Components/SeeMore.qml:35
82msgid "See more"
107msgid "See more"
83msgstr ""
108msgstr ""
@@ -90,11 +115,6 @@ msgstr ""
90msgid "Recent"
115msgid "Recent"
91msgstr ""
116msgstr ""
92
117
93−#: qml/Dash/PreviewListView.qml:52
94−#, qt-format
95−msgid "%1 Preview"
96−msgstr ""
97−
98#: qml/Dash/Previews/PreviewActionCombo.qml:34
118#: qml/Dash/Previews/PreviewActionCombo.qml:34
99msgid "More..."
119msgid "More..."
100msgstr ""
120msgstr ""
@@ -103,35 +123,22 @@ msgstr ""
103msgid "Less..."
123msgid "Less..."
104msgstr ""
124msgstr ""
105
125
106−#: qml/Dash/Previews/PreviewRatingInput.qml:81
126+#: qml/Dash/Previews/PreviewRatingInput.qml:82
107msgid "Rate this"
127msgid "Rate this"
108msgstr "ഇത് അവലോകനം ചെയ്യുക"
128msgstr "ഇത് അവലോകനം ചെയ്യുക"
109
129
110−#: qml/Dash/Previews/PreviewRatingInput.qml:126
130+#: qml/Dash/Previews/PreviewRatingInput.qml:128
111msgid "Add a review"
131msgid "Add a review"
112msgstr "ഒരു അവലോകനം ചേര്‍ക്കുക"
132msgstr "ഒരു അവലോകനം ചേര്‍ക്കുക"
113
133
114−#: qml/Dash/Previews/PreviewRatingInput.qml:166
134+#: qml/Dash/Previews/PreviewRatingInput.qml:168
115msgid "Send"
135msgid "Send"
116msgstr "അയയ്‌ക്കുക"
136msgstr "അയയ്‌ക്കുക"
117
137
118−#: qml/Greeter/Greeter.qml:151
138+#: qml/Greeter/Greeter.qml:157
119msgid "Swipe to unlock"
139msgid "Swipe to unlock"
120msgstr ""
140msgstr ""
121
141
122−#: qml/Greeter/Lockscreen.qml:149
123−msgid "Emergency Call"
124−msgstr "അടിയന്തിര വിളി"
125−
126−#: qml/Greeter/PassphraseLockscreen.qml:59
127−#, qt-format
128−msgid "Hello %1"
129−msgstr "ഹലോ %1"
130−
131−#: qml/Greeter/PassphraseLockscreen.qml:59
132−msgid "Hello"
133−msgstr "ഹലോ"
134−
135#: qml/Hud/HudParametrizedActionsPage.qml:132
142#: qml/Hud/HudParametrizedActionsPage.qml:132
136msgid "Confirm"
143msgid "Confirm"
137msgstr "സ്ഥിരീകരിക്കുക"
144msgstr "സ്ഥിരീകരിക്കുക"
@@ -164,7 +171,7 @@ msgstr ""
164msgid "Search"
171msgid "Search"
165msgstr "തിരയുക"
172msgstr "തിരയുക"
166
173
167−#: qml/Shell.qml:348
174+#: qml/Shell.qml:334
168#, qt-format
175#, qt-format
169msgid "Please enter %1"
176msgid "Please enter %1"
170msgstr "ദയവായി %1 നല്‍കുക"
177msgstr "ദയവായി %1 നല്‍കുക"
po/mr.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2014-01-14 19:54+0000\n"
11"PO-Revision-Date: 2014-01-14 19:54+0000\n"
12"Last-Translator: Rohan Deshmukh <Unknown>\n"
12"Last-Translator: Rohan Deshmukh <Unknown>\n"
13"Language-Team: Marathi <mr@li.org>\n"
13"Language-Team: Marathi <mr@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr ""
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr ""
85msgstr ""
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr ""
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr ""
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr ""
126msgstr ""
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr ""
130msgstr ""
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr ""
134msgstr ""
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr ""
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr ""
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr ""
142msgstr ""
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr ""
170msgstr ""
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr ""
175msgstr ""
po/ms.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2014-01-17 09:05+0000\n"
11"PO-Revision-Date: 2014-01-17 09:05+0000\n"
12"Last-Translator: abuyop <Unknown>\n"
12"Last-Translator: abuyop <Unknown>\n"
13"Language-Team: Malay <ms@li.org>\n"
13"Language-Team: Malay <ms@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr "panggilan Kecemasan"
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr "Gelintar baru-baru ini"
85msgstr "Gelintar baru-baru ini"
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr "Hai %1"
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr "Hello"
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr "Kadar ini"
126msgstr "Kadar ini"
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr "Tambah ulasan"
130msgstr "Tambah ulasan"
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr "Hantar"
134msgstr "Hantar"
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr "panggilan Kecemasan"
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr "Hai %1"
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr "Hello"
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr "Sahkan"
142msgstr "Sahkan"
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr "Gelintar"
170msgstr "Gelintar"
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr "Sila masukkan %1"
175msgstr "Sila masukkan %1"
po/my.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2013-12-12 11:12+0000\n"
11"PO-Revision-Date: 2013-12-12 11:12+0000\n"
12"Last-Translator: Pyae Sone <Unknown>\n"
12"Last-Translator: Pyae Sone <Unknown>\n"
13"Language-Team: Burmese <my@li.org>\n"
13"Language-Team: Burmese <my@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr "အရေးပေါ်ခေါ်မည်"
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr "မကြာသေးခင်က ရှာဖွေခြင်း"
85msgstr "မကြာသေးခင်က ရှာဖွေခြင်း"
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr "ဟဲလို %1"
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr "ဟဲလို"
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr "ဒီဟာကိုအမှတ်ပေးမည်"
126msgstr "ဒီဟာကိုအမှတ်ပေးမည်"
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr ""
130msgstr ""
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr "ပို့မည်"
134msgstr "ပို့မည်"
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr "အရေးပေါ်ခေါ်မည်"
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr "ဟဲလို %1"
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr "ဟဲလို"
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr "အတည်ပြုပါ"
142msgstr "အတည်ပြုပါ"
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr "ရှာဖွေ"
170msgstr "ရှာဖွေ"
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr "%1ကိုရိုက်ထည့်ပါ"
175msgstr "%1ကိုရိုက်ထည့်ပါ"
po/nb.po+62−53
@@ -7,128 +7,137 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11−"PO-Revision-Date: 2013-06-27 07:02+0000\n"
11+"PO-Revision-Date: 2014-06-11 06:36+0000\n"
12−"Last-Translator: Joakim Langvand <jlangvand@gmail.com>\n"
12+"Last-Translator: Åka Sikrom <Unknown>\n"
13"Language-Team: Norwegian Bokmal <nb@li.org>\n"
13"Language-Team: Norwegian Bokmal <nb@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
22msgid "Lock to Launcher"
22msgid "Lock to Launcher"
23−msgstr ""
23+msgstr "Lås til oppstarter"
24
24
25#: plugins/Unity/Launcher/launcheritem.cpp:73
25#: plugins/Unity/Launcher/launcheritem.cpp:73
26msgid "Unlock from Launcher"
26msgid "Unlock from Launcher"
27−msgstr ""
27+msgstr "Lås opp fra oppstarter"
28
28
29#: qml/Components/EdgeDemoOverlay.qml:151
29#: qml/Components/EdgeDemoOverlay.qml:151
30msgid "Skip intro"
30msgid "Skip intro"
31−msgstr ""
31+msgstr "Hopp over introduksjon"
32
32
33#: qml/Components/EdgeDemo.qml:113
33#: qml/Components/EdgeDemo.qml:113
34msgid "Right edge"
34msgid "Right edge"
35−msgstr ""
35+msgstr "Høyre kant"
36
36
37#: qml/Components/EdgeDemo.qml:114
37#: qml/Components/EdgeDemo.qml:114
38msgid "Try swiping from the right edge to unlock the phone"
38msgid "Try swiping from the right edge to unlock the phone"
39−msgstr ""
39+msgstr "Prøv å sveipe fra høyre side for å låse opp telefonen"
40
40
41#: qml/Components/EdgeDemo.qml:145
41#: qml/Components/EdgeDemo.qml:145
42msgid "Top edge"
42msgid "Top edge"
43−msgstr ""
43+msgstr "Øvre kant"
44
44
45#: qml/Components/EdgeDemo.qml:146
45#: qml/Components/EdgeDemo.qml:146
46msgid "Try swiping from the top edge to access the indicators"
46msgid "Try swiping from the top edge to access the indicators"
47−msgstr ""
47+msgstr "Prøv å sveipe fra toppen for å få tilgang til innstillingene"
48
48
49#: qml/Components/EdgeDemo.qml:171
49#: qml/Components/EdgeDemo.qml:171
50msgid "Close"
50msgid "Close"
51−msgstr ""
51+msgstr "Lukk"
52
52
53#: qml/Components/EdgeDemo.qml:172
53#: qml/Components/EdgeDemo.qml:172
54msgid "Swipe up again to close the settings screen"
54msgid "Swipe up again to close the settings screen"
55−msgstr ""
55+msgstr "Sveip opp igjen for å lukke innstillingsmenyen"
56
56
57#: qml/Components/EdgeDemo.qml:199
57#: qml/Components/EdgeDemo.qml:199
58msgid "Left edge"
58msgid "Left edge"
59−msgstr ""
59+msgstr "Venstre kant"
60
60
61#: qml/Components/EdgeDemo.qml:200
61#: qml/Components/EdgeDemo.qml:200
62msgid "Swipe from the left to reveal the launcher for quick access to apps"
62msgid "Swipe from the left to reveal the launcher for quick access to apps"
63−msgstr ""
63+msgstr "Sveip fra venstre for å få tilgang til programoppstarteren"
64
64
65#: qml/Components/EdgeDemo.qml:227
65#: qml/Components/EdgeDemo.qml:227
66msgid "Well done"
66msgid "Well done"
67−msgstr ""
67+msgstr "Bra jobba"
68
68
69#: qml/Components/EdgeDemo.qml:228
69#: qml/Components/EdgeDemo.qml:228
70msgid ""
70msgid ""
71"You have now mastered the edge gestures and can start using the "
71"You have now mastered the edge gestures and can start using the "
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74+"Du har nå mestret kantbevegelsene, og er klar til å bruke "
75+"telefonen<br><br>Trykk på skjermen for å begynne"
76+
77+#: qml/Components/Lockscreen.qml:214
78+msgid "Emergency Call"
79+msgstr "Nødanrop"
80+
81+#: qml/Components/Lockscreen.qml:231
82+msgid "OK"
83+msgstr "OK"
74
84
75#: qml/Components/PageHeader.qml:365
85#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
86msgid "Recent searches"
77−msgstr "Siste søk"
87+msgstr "Nylige søk"
88+
89+#: qml/Components/PassphraseLockscreen.qml:60
90+#, qt-format
91+msgid "Hello %1"
92+msgstr "Hei, %1"
93+
94+#: qml/Components/PassphraseLockscreen.qml:60
95+msgid "Hello"
96+msgstr "Hei"
97+
98+#: qml/Components/PinLockscreen.qml:198
99+msgid "CANCEL"
100+msgstr "AVBRYT"
101+
102+#: qml/Components/PinLockscreen.qml:216
103+msgid "DONE"
104+msgstr "FERDIG"
78
105
79#: qml/Components/SeeMore.qml:35
106#: qml/Components/SeeMore.qml:35
80msgid "See more"
107msgid "See more"
81−msgstr ""
108+msgstr "Vis mer"
82
109
83#: qml/Components/SeeMore.qml:58
110#: qml/Components/SeeMore.qml:58
84msgid "See less"
111msgid "See less"
85−msgstr ""
112+msgstr "Vis mindre"
86
113
87#: qml/Dash/DashApps.qml:37
114#: qml/Dash/DashApps.qml:37
88msgid "Recent"
115msgid "Recent"
89−msgstr ""
116+msgstr "Nylig"
90−
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95
117
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
118#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
119msgid "More..."
98−msgstr ""
120+msgstr "Mer …"
99
121
100#: qml/Dash/Previews/PreviewActionCombo.qml:34
122#: qml/Dash/Previews/PreviewActionCombo.qml:34
101msgid "Less..."
123msgid "Less..."
102−msgstr ""
124+msgstr "Mindre …"
103
125
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
126+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
127msgid "Rate this"
106−msgstr ""
128+msgstr "Vurder dette"
107
129
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
130+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
131msgid "Add a review"
110−msgstr ""
132+msgstr "Skriv en anmeldelse"
111
133
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
134+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
135msgid "Send"
114−msgstr ""
136+msgstr "Send"
115
137
116−#: qml/Greeter/Greeter.qml:151
138+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
139msgid "Swipe to unlock"
118−msgstr ""
140+msgstr "Sveip for å låse opp"
119−
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr ""
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr ""
132
141
133#: qml/Hud/HudParametrizedActionsPage.qml:132
142#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
143msgid "Confirm"
@@ -152,17 +161,17 @@ msgstr "Snakker …"
152
161
153#: qml/Notifications/NotificationMenuItemFactory.qml:91
162#: qml/Notifications/NotificationMenuItemFactory.qml:91
154msgid "Show password"
163msgid "Show password"
155−msgstr ""
164+msgstr "Vis passord"
156
165
157#: qml/Notifications/NotificationMenuItemFactory.qml:103
166#: qml/Notifications/NotificationMenuItemFactory.qml:103
158msgid "Please enter SIM PIN"
167msgid "Please enter SIM PIN"
159−msgstr ""
168+msgstr "Skriv inn PIN-koden til SIM-kortet"
160
169
161#: qml/Panel/SearchIndicator.qml:27
170#: qml/Panel/SearchIndicator.qml:27
162msgid "Search"
171msgid "Search"
163msgstr "Søk"
172msgstr "Søk"
164
173
165−#: qml/Shell.qml:348
174+#: qml/Shell.qml:334
166#, qt-format
175#, qt-format
167msgid "Please enter %1"
176msgid "Please enter %1"
168−msgstr ""
177+msgstr "Skriv inn %1"
po/nl.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2014-01-15 16:42+0000\n"
11"PO-Revision-Date: 2014-01-15 16:42+0000\n"
12"Last-Translator: Hannie Dumoleyn <Unknown>\n"
12"Last-Translator: Hannie Dumoleyn <Unknown>\n"
13"Language-Team: Dutch <nl@li.org>\n"
13"Language-Team: Dutch <nl@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr "Noodoproep"
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr "Recente zoekopdrachten"
85msgstr "Recente zoekopdrachten"
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr "Hallo %1"
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr "Hallo"
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr "Beoordeel dit"
126msgstr "Beoordeel dit"
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr "Voeg recensie toe"
130msgstr "Voeg recensie toe"
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr "Versturen"
134msgstr "Versturen"
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr "Noodoproep"
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr "Hallo %1"
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr "Hallo"
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr "Bevestigen"
142msgstr "Bevestigen"
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr "Zoeken"
170msgstr "Zoeken"
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr "Voer %1 in"
175msgstr "Voer %1 in"
po/pl.po+44−35
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11−"PO-Revision-Date: 2014-01-10 11:38+0000\n"
11+"PO-Revision-Date: 2014-05-27 15:20+0000\n"
12−"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12+"Last-Translator: GTriderXC <gtriderxc@yahoo.com>\n"
13"Language-Team: Polish <pl@li.org>\n"
13"Language-Team: Polish <pl@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -73,64 +73,73 @@ msgid ""
73"You have now mastered the edge gestures and can start using the "
73"You have now mastered the edge gestures and can start using the "
74"phone<br><br>Tap on the screen to start"
74"phone<br><br>Tap on the screen to start"
75msgstr ""
75msgstr ""
76+"Wydawanie poleceń krawędzi zostało opanowane. Urządzenie gotowe do "
77+"pracy.<br><br>Dotknij ekranu by rozpocząć"
78+
79+#: qml/Components/Lockscreen.qml:214
80+msgid "Emergency Call"
81+msgstr "Telefon ratunkowy"
82+
83+#: qml/Components/Lockscreen.qml:231
84+msgid "OK"
85+msgstr ""
76
86
77#: qml/Components/PageHeader.qml:365
87#: qml/Components/PageHeader.qml:365
78msgid "Recent searches"
88msgid "Recent searches"
79msgstr "Ostatnie wyszukiwania"
89msgstr "Ostatnie wyszukiwania"
80
90
91+#: qml/Components/PassphraseLockscreen.qml:60
92+#, qt-format
93+msgid "Hello %1"
94+msgstr "Witaj %1"
95+
96+#: qml/Components/PassphraseLockscreen.qml:60
97+msgid "Hello"
98+msgstr "Witaj"
99+
100+#: qml/Components/PinLockscreen.qml:198
101+msgid "CANCEL"
102+msgstr ""
103+
104+#: qml/Components/PinLockscreen.qml:216
105+msgid "DONE"
106+msgstr ""
107+
81#: qml/Components/SeeMore.qml:35
108#: qml/Components/SeeMore.qml:35
82msgid "See more"
109msgid "See more"
83−msgstr ""
110+msgstr "Zobacz więcej"
84
111
85#: qml/Components/SeeMore.qml:58
112#: qml/Components/SeeMore.qml:58
86msgid "See less"
113msgid "See less"
87−msgstr ""
114+msgstr "Zobacz mniej"
88
115
89#: qml/Dash/DashApps.qml:37
116#: qml/Dash/DashApps.qml:37
90msgid "Recent"
117msgid "Recent"
91−msgstr ""
118+msgstr "Ostatnio używane"
92−
93−#: qml/Dash/PreviewListView.qml:52
94−#, qt-format
95−msgid "%1 Preview"
96−msgstr ""
97
119
98#: qml/Dash/Previews/PreviewActionCombo.qml:34
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
99msgid "More..."
121msgid "More..."
100−msgstr ""
122+msgstr "Więcej..."
101
123
102#: qml/Dash/Previews/PreviewActionCombo.qml:34
124#: qml/Dash/Previews/PreviewActionCombo.qml:34
103msgid "Less..."
125msgid "Less..."
104−msgstr ""
126+msgstr "Mniej..."
105
127
106−#: qml/Dash/Previews/PreviewRatingInput.qml:81
128+#: qml/Dash/Previews/PreviewRatingInput.qml:82
107msgid "Rate this"
129msgid "Rate this"
108msgstr "Oceń to"
130msgstr "Oceń to"
109
131
110−#: qml/Dash/Previews/PreviewRatingInput.qml:126
132+#: qml/Dash/Previews/PreviewRatingInput.qml:128
111msgid "Add a review"
133msgid "Add a review"
112msgstr "Dodaj recenzję"
134msgstr "Dodaj recenzję"
113
135
114−#: qml/Dash/Previews/PreviewRatingInput.qml:166
136+#: qml/Dash/Previews/PreviewRatingInput.qml:168
115msgid "Send"
137msgid "Send"
116msgstr "Wyślij"
138msgstr "Wyślij"
117
139
118−#: qml/Greeter/Greeter.qml:151
140+#: qml/Greeter/Greeter.qml:157
119msgid "Swipe to unlock"
141msgid "Swipe to unlock"
120−msgstr ""
142+msgstr "Przeciągnij aby odblokować"
121−
122−#: qml/Greeter/Lockscreen.qml:149
123−msgid "Emergency Call"
124−msgstr "Telefon ratunkowy"
125−
126−#: qml/Greeter/PassphraseLockscreen.qml:59
127−#, qt-format
128−msgid "Hello %1"
129−msgstr "Witaj %1"
130−
131−#: qml/Greeter/PassphraseLockscreen.qml:59
132−msgid "Hello"
133−msgstr "Witaj"
134
143
135#: qml/Hud/HudParametrizedActionsPage.qml:132
144#: qml/Hud/HudParametrizedActionsPage.qml:132
136msgid "Confirm"
145msgid "Confirm"
@@ -158,13 +167,13 @@ msgstr "Wyświetl hasło"
158
167
159#: qml/Notifications/NotificationMenuItemFactory.qml:103
168#: qml/Notifications/NotificationMenuItemFactory.qml:103
160msgid "Please enter SIM PIN"
169msgid "Please enter SIM PIN"
161−msgstr ""
170+msgstr "Wprowadź kod PIN karty SIM"
162
171
163#: qml/Panel/SearchIndicator.qml:27
172#: qml/Panel/SearchIndicator.qml:27
164msgid "Search"
173msgid "Search"
165msgstr "Szukaj"
174msgstr "Szukaj"
166
175
167−#: qml/Shell.qml:348
176+#: qml/Shell.qml:334
168#, qt-format
177#, qt-format
169msgid "Please enter %1"
178msgid "Please enter %1"
170msgstr "Wprowadź %1"
179msgstr "Wprowadź %1"
po/pt.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2014-01-14 19:18+0000\n"
11"PO-Revision-Date: 2014-01-14 19:18+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Portuguese <pt@li.org>\n"
13"Language-Team: Portuguese <pt@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr ""
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr ""
85msgstr ""
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr ""
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr ""
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr ""
126msgstr ""
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr ""
130msgstr ""
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr ""
134msgstr ""
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr ""
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr ""
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr ""
142msgstr ""
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr ""
170msgstr ""
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr ""
175msgstr ""
po/pt_BR.po+44−35
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11−"PO-Revision-Date: 2014-01-18 23:24+0000\n"
11+"PO-Revision-Date: 2014-05-15 14:31+0000\n"
12−"Last-Translator: Fábio Nogueira <deb-user-ba@ubuntu.com>\n"
12+"Last-Translator: Rafael Neri <Unknown>\n"
13"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
13"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -73,64 +73,73 @@ msgid ""
73"You have now mastered the edge gestures and can start using the "
73"You have now mastered the edge gestures and can start using the "
74"phone<br><br>Tap on the screen to start"
74"phone<br><br>Tap on the screen to start"
75msgstr ""
75msgstr ""
76+"Agora você já domina os gestos das bordas e pode começar a usar o "
77+"telefone<br><br>Toque na tela para iniciar"
78+
79+#: qml/Components/Lockscreen.qml:214
80+msgid "Emergency Call"
81+msgstr "Chamada de emergência"
82+
83+#: qml/Components/Lockscreen.qml:231
84+msgid "OK"
85+msgstr ""
76
86
77#: qml/Components/PageHeader.qml:365
87#: qml/Components/PageHeader.qml:365
78msgid "Recent searches"
88msgid "Recent searches"
79msgstr "Pesquisas recentes"
89msgstr "Pesquisas recentes"
80
90
91+#: qml/Components/PassphraseLockscreen.qml:60
92+#, qt-format
93+msgid "Hello %1"
94+msgstr "Olá %1"
95+
96+#: qml/Components/PassphraseLockscreen.qml:60
97+msgid "Hello"
98+msgstr "Olá"
99+
100+#: qml/Components/PinLockscreen.qml:198
101+msgid "CANCEL"
102+msgstr ""
103+
104+#: qml/Components/PinLockscreen.qml:216
105+msgid "DONE"
106+msgstr ""
107+
81#: qml/Components/SeeMore.qml:35
108#: qml/Components/SeeMore.qml:35
82msgid "See more"
109msgid "See more"
83−msgstr ""
110+msgstr "Ver mais"
84
111
85#: qml/Components/SeeMore.qml:58
112#: qml/Components/SeeMore.qml:58
86msgid "See less"
113msgid "See less"
87−msgstr ""
114+msgstr "Ver menos"
88
115
89#: qml/Dash/DashApps.qml:37
116#: qml/Dash/DashApps.qml:37
90msgid "Recent"
117msgid "Recent"
91−msgstr ""
118+msgstr "Recentes"
92−
93−#: qml/Dash/PreviewListView.qml:52
94−#, qt-format
95−msgid "%1 Preview"
96−msgstr ""
97
119
98#: qml/Dash/Previews/PreviewActionCombo.qml:34
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
99msgid "More..."
121msgid "More..."
100−msgstr ""
122+msgstr "Mais..."
101
123
102#: qml/Dash/Previews/PreviewActionCombo.qml:34
124#: qml/Dash/Previews/PreviewActionCombo.qml:34
103msgid "Less..."
125msgid "Less..."
104−msgstr ""
126+msgstr "Menos..."
105
127
106−#: qml/Dash/Previews/PreviewRatingInput.qml:81
128+#: qml/Dash/Previews/PreviewRatingInput.qml:82
107msgid "Rate this"
129msgid "Rate this"
108msgstr "Avaliar isto"
130msgstr "Avaliar isto"
109
131
110−#: qml/Dash/Previews/PreviewRatingInput.qml:126
132+#: qml/Dash/Previews/PreviewRatingInput.qml:128
111msgid "Add a review"
133msgid "Add a review"
112msgstr "Adicionar uma análise"
134msgstr "Adicionar uma análise"
113
135
114−#: qml/Dash/Previews/PreviewRatingInput.qml:166
136+#: qml/Dash/Previews/PreviewRatingInput.qml:168
115msgid "Send"
137msgid "Send"
116msgstr "Enviar"
138msgstr "Enviar"
117
139
118−#: qml/Greeter/Greeter.qml:151
140+#: qml/Greeter/Greeter.qml:157
119msgid "Swipe to unlock"
141msgid "Swipe to unlock"
120−msgstr ""
142+msgstr "Deslizar para desbloquear"
121−
122−#: qml/Greeter/Lockscreen.qml:149
123−msgid "Emergency Call"
124−msgstr "Chamada de emergência"
125−
126−#: qml/Greeter/PassphraseLockscreen.qml:59
127−#, qt-format
128−msgid "Hello %1"
129−msgstr "Olá %1"
130−
131−#: qml/Greeter/PassphraseLockscreen.qml:59
132−msgid "Hello"
133−msgstr "Olá"
134
143
135#: qml/Hud/HudParametrizedActionsPage.qml:132
144#: qml/Hud/HudParametrizedActionsPage.qml:132
136msgid "Confirm"
145msgid "Confirm"
@@ -158,13 +167,13 @@ msgstr "Exibir senha"
158
167
159#: qml/Notifications/NotificationMenuItemFactory.qml:103
168#: qml/Notifications/NotificationMenuItemFactory.qml:103
160msgid "Please enter SIM PIN"
169msgid "Please enter SIM PIN"
161−msgstr ""
170+msgstr "Por favor, digite o PIN do cartão SIM"
162
171
163#: qml/Panel/SearchIndicator.qml:27
172#: qml/Panel/SearchIndicator.qml:27
164msgid "Search"
173msgid "Search"
165msgstr "Pesquisar"
174msgstr "Pesquisar"
166
175
167−#: qml/Shell.qml:348
176+#: qml/Shell.qml:334
168#, qt-format
177#, qt-format
169msgid "Please enter %1"
178msgid "Please enter %1"
170msgstr "Por favor, digite %1"
179msgstr "Por favor, digite %1"
po/ro.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2013-06-27 07:53+0000\n"
11"PO-Revision-Date: 2013-06-27 07:53+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Romanian <ro@li.org>\n"
13"Language-Team: Romanian <ro@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr ""
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr "Căutări recente"
85msgstr "Căutări recente"
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr ""
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr ""
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr ""
126msgstr ""
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr ""
130msgstr ""
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr ""
134msgstr ""
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr ""
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr ""
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr "Confirmați"
142msgstr "Confirmați"
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr "Căutare"
170msgstr "Căutare"
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr ""
175msgstr ""
po/ru.po+35−28
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11−"PO-Revision-Date: 2014-04-03 13:07+0000\n"
11+"PO-Revision-Date: 2014-05-15 12:57+0000\n"
12"Last-Translator: Zonov Roman <Unknown>\n"
12"Last-Translator: Zonov Roman <Unknown>\n"
13"Language-Team: Russian <ru@li.org>\n"
13"Language-Team: Russian <ru@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -79,10 +79,35 @@ msgstr ""
79"Вы научились пользоваться Ubuntu и можете начать использовать свой "
79"Вы научились пользоваться Ubuntu и можете начать использовать свой "
80"телефон<br><br>Нажмите на экран"
80"телефон<br><br>Нажмите на экран"
81
81
82+#: qml/Components/Lockscreen.qml:214
83+msgid "Emergency Call"
84+msgstr "Экстренный вызов"
85+
86+#: qml/Components/Lockscreen.qml:231
87+msgid "OK"
88+msgstr ""
89+
82#: qml/Components/PageHeader.qml:365
90#: qml/Components/PageHeader.qml:365
83msgid "Recent searches"
91msgid "Recent searches"
84msgstr "Последние поисковые запросы"
92msgstr "Последние поисковые запросы"
85
93
94+#: qml/Components/PassphraseLockscreen.qml:60
95+#, qt-format
96+msgid "Hello %1"
97+msgstr "Привет, %1"
98+
99+#: qml/Components/PassphraseLockscreen.qml:60
100+msgid "Hello"
101+msgstr "Привет"
102+
103+#: qml/Components/PinLockscreen.qml:198
104+msgid "CANCEL"
105+msgstr ""
106+
107+#: qml/Components/PinLockscreen.qml:216
108+msgid "DONE"
109+msgstr ""
110+
86#: qml/Components/SeeMore.qml:35
111#: qml/Components/SeeMore.qml:35
87msgid "See more"
112msgid "See more"
88msgstr "Подробнее"
113msgstr "Подробнее"
@@ -95,11 +120,6 @@ msgstr "Вкратце"
95msgid "Recent"
120msgid "Recent"
96msgstr "Недавние"
121msgstr "Недавние"
97
122
98−#: qml/Dash/PreviewListView.qml:52
99−#, qt-format
100−msgid "%1 Preview"
101−msgstr "Просмотр %1"
102−
103#: qml/Dash/Previews/PreviewActionCombo.qml:34
123#: qml/Dash/Previews/PreviewActionCombo.qml:34
104msgid "More..."
124msgid "More..."
105msgstr "Ещё..."
125msgstr "Ещё..."
@@ -108,34 +128,21 @@ msgstr "Ещё..."
108msgid "Less..."
128msgid "Less..."
109msgstr "Меньше..."
129msgstr "Меньше..."
110
130
111−#: qml/Dash/Previews/PreviewRatingInput.qml:81
131+#: qml/Dash/Previews/PreviewRatingInput.qml:82
112msgid "Rate this"
132msgid "Rate this"
113msgstr "Оцените это"
133msgstr "Оцените это"
114
134
115−#: qml/Dash/Previews/PreviewRatingInput.qml:126
135+#: qml/Dash/Previews/PreviewRatingInput.qml:128
116msgid "Add a review"
136msgid "Add a review"
117msgstr "Добавьте отзыв"
137msgstr "Добавьте отзыв"
118
138
119−#: qml/Dash/Previews/PreviewRatingInput.qml:166
139+#: qml/Dash/Previews/PreviewRatingInput.qml:168
120msgid "Send"
140msgid "Send"
121msgstr "Отправить"
141msgstr "Отправить"
122
142
123−#: qml/Greeter/Greeter.qml:151
143+#: qml/Greeter/Greeter.qml:157
124msgid "Swipe to unlock"
144msgid "Swipe to unlock"
125−msgstr ""
145+msgstr "Смахните, чтобы разблокировать"
126−
127−#: qml/Greeter/Lockscreen.qml:149
128−msgid "Emergency Call"
129−msgstr "Экстренный вызов"
130−
131−#: qml/Greeter/PassphraseLockscreen.qml:59
132−#, qt-format
133−msgid "Hello %1"
134−msgstr "Привет, %1"
135−
136−#: qml/Greeter/PassphraseLockscreen.qml:59
137−msgid "Hello"
138−msgstr "Привет"
139
146
140#: qml/Hud/HudParametrizedActionsPage.qml:132
147#: qml/Hud/HudParametrizedActionsPage.qml:132
141msgid "Confirm"
148msgid "Confirm"
@@ -169,7 +176,7 @@ msgstr "Введите PIN код"
169msgid "Search"
176msgid "Search"
170msgstr "Поиск"
177msgstr "Поиск"
171
178
172−#: qml/Shell.qml:348
179+#: qml/Shell.qml:334
173#, qt-format
180#, qt-format
174msgid "Please enter %1"
181msgid "Please enter %1"
175msgstr "Пожалуйста, введите %1"
182msgstr "Пожалуйста, введите %1"
po/shn.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2013-10-07 11:46+0000\n"
11"PO-Revision-Date: 2013-10-07 11:46+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Shan <shn@li.org>\n"
13"Language-Team: Shan <shn@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr ""
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr ""
85msgstr ""
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr ""
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr ""
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr ""
126msgstr ""
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr ""
130msgstr ""
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr ""
134msgstr ""
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr ""
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr ""
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr ""
142msgstr ""
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr ""
170msgstr ""
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr ""
175msgstr ""
po/si.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2013-06-26 22:36+0000\n"
11"PO-Revision-Date: 2013-06-26 22:36+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Sinhalese <si@li.org>\n"
13"Language-Team: Sinhalese <si@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr ""
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr ""
85msgstr ""
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr ""
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr ""
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr ""
126msgstr ""
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr ""
130msgstr ""
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr ""
134msgstr ""
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr ""
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr ""
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr ""
142msgstr ""
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr ""
170msgstr ""
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr ""
175msgstr ""
po/sl.po+36−29
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11−"PO-Revision-Date: 2014-02-21 16:38+0000\n"
11+"PO-Revision-Date: 2014-05-22 14:07+0000\n"
12"Last-Translator: Damir Jerovšek <Unknown>\n"
12"Last-Translator: Damir Jerovšek <Unknown>\n"
13"Language-Team: Slovenian <sl@li.org>\n"
13"Language-Team: Slovenian <sl@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -76,10 +76,35 @@ msgstr ""
76"Sedaj, ko ste osvojili poteze robov, lahko začnete uporabljati "
76"Sedaj, ko ste osvojili poteze robov, lahko začnete uporabljati "
77"telefon<br><br>Tapnite na zaslon za začetek"
77"telefon<br><br>Tapnite na zaslon za začetek"
78
78
79+#: qml/Components/Lockscreen.qml:214
80+msgid "Emergency Call"
81+msgstr "Klic v sili"
82+
83+#: qml/Components/Lockscreen.qml:231
84+msgid "OK"
85+msgstr ""
86+
79#: qml/Components/PageHeader.qml:365
87#: qml/Components/PageHeader.qml:365
80msgid "Recent searches"
88msgid "Recent searches"
81msgstr "Nedavna iskanja"
89msgstr "Nedavna iskanja"
82
90
91+#: qml/Components/PassphraseLockscreen.qml:60
92+#, qt-format
93+msgid "Hello %1"
94+msgstr "Pozdravljeni, %1"
95+
96+#: qml/Components/PassphraseLockscreen.qml:60
97+msgid "Hello"
98+msgstr "Pozdravljeni"
99+
100+#: qml/Components/PinLockscreen.qml:198
101+msgid "CANCEL"
102+msgstr ""
103+
104+#: qml/Components/PinLockscreen.qml:216
105+msgid "DONE"
106+msgstr ""
107+
83#: qml/Components/SeeMore.qml:35
108#: qml/Components/SeeMore.qml:35
84msgid "See more"
109msgid "See more"
85msgstr "Pokaži več"
110msgstr "Pokaži več"
@@ -90,12 +115,7 @@ msgstr "Pokaži manj"
90
115
91#: qml/Dash/DashApps.qml:37
116#: qml/Dash/DashApps.qml:37
92msgid "Recent"
117msgid "Recent"
93−msgstr ""
118+msgstr "Nedavno"
94−
95−#: qml/Dash/PreviewListView.qml:52
96−#, qt-format
97−msgid "%1 Preview"
98−msgstr ""
99
119
100#: qml/Dash/Previews/PreviewActionCombo.qml:34
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
101msgid "More..."
121msgid "More..."
@@ -105,34 +125,21 @@ msgstr "Več ..."
105msgid "Less..."
125msgid "Less..."
106msgstr "Manj ..."
126msgstr "Manj ..."
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:81
128+#: qml/Dash/Previews/PreviewRatingInput.qml:82
109msgid "Rate this"
129msgid "Rate this"
110msgstr "Ocenite"
130msgstr "Ocenite"
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:126
132+#: qml/Dash/Previews/PreviewRatingInput.qml:128
113msgid "Add a review"
133msgid "Add a review"
114msgstr "Dodaj oceno"
134msgstr "Dodaj oceno"
115
135
116−#: qml/Dash/Previews/PreviewRatingInput.qml:166
136+#: qml/Dash/Previews/PreviewRatingInput.qml:168
117msgid "Send"
137msgid "Send"
118msgstr "Pošlji"
138msgstr "Pošlji"
119
139
120−#: qml/Greeter/Greeter.qml:151
140+#: qml/Greeter/Greeter.qml:157
121msgid "Swipe to unlock"
141msgid "Swipe to unlock"
122−msgstr ""
142+msgstr "Podrsajte za odklenitev"
123−
124−#: qml/Greeter/Lockscreen.qml:149
125−msgid "Emergency Call"
126−msgstr "Klic v sili"
127−
128−#: qml/Greeter/PassphraseLockscreen.qml:59
129−#, qt-format
130−msgid "Hello %1"
131−msgstr "Pozdravljeni, %1"
132−
133−#: qml/Greeter/PassphraseLockscreen.qml:59
134−msgid "Hello"
135−msgstr "Pozdravljeni"
136
143
137#: qml/Hud/HudParametrizedActionsPage.qml:132
144#: qml/Hud/HudParametrizedActionsPage.qml:132
138msgid "Confirm"
145msgid "Confirm"
@@ -166,7 +173,7 @@ msgstr "Vnesite PIN kartice SIM"
166msgid "Search"
173msgid "Search"
167msgstr "Iskanje"
174msgstr "Iskanje"
168
175
169−#: qml/Shell.qml:348
176+#: qml/Shell.qml:334
170#, qt-format
177#, qt-format
171msgid "Please enter %1"
178msgid "Please enter %1"
172msgstr "Vnesite %1"
179msgstr "Vnesite %1"
po/sq.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2014-01-15 13:51+0000\n"
11"PO-Revision-Date: 2014-01-15 13:51+0000\n"
12"Last-Translator: Besmir Zanaj <besmirzanaj@gmail.com>\n"
12"Last-Translator: Besmir Zanaj <besmirzanaj@gmail.com>\n"
13"Language-Team: Albanian <sq@li.org>\n"
13"Language-Team: Albanian <sq@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:50+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -73,10 +73,35 @@ msgid ""
73"phone<br><br>Tap on the screen to start"
73"phone<br><br>Tap on the screen to start"
74msgstr ""
74msgstr ""
75
75
76+#: qml/Components/Lockscreen.qml:214
77+msgid "Emergency Call"
78+msgstr ""
79+
80+#: qml/Components/Lockscreen.qml:231
81+msgid "OK"
82+msgstr ""
83+
76#: qml/Components/PageHeader.qml:365
84#: qml/Components/PageHeader.qml:365
77msgid "Recent searches"
85msgid "Recent searches"
78msgstr ""
86msgstr ""
79
87
88+#: qml/Components/PassphraseLockscreen.qml:60
89+#, qt-format
90+msgid "Hello %1"
91+msgstr ""
92+
93+#: qml/Components/PassphraseLockscreen.qml:60
94+msgid "Hello"
95+msgstr ""
96+
97+#: qml/Components/PinLockscreen.qml:198
98+msgid "CANCEL"
99+msgstr ""
100+
101+#: qml/Components/PinLockscreen.qml:216
102+msgid "DONE"
103+msgstr ""
104+
80#: qml/Components/SeeMore.qml:35
105#: qml/Components/SeeMore.qml:35
81msgid "See more"
106msgid "See more"
82msgstr ""
107msgstr ""
@@ -89,11 +114,6 @@ msgstr ""
89msgid "Recent"
114msgid "Recent"
90msgstr ""
115msgstr ""
91
116
92−#: qml/Dash/PreviewListView.qml:52
93−#, qt-format
94−msgid "%1 Preview"
95−msgstr ""
96−
97#: qml/Dash/Previews/PreviewActionCombo.qml:34
117#: qml/Dash/Previews/PreviewActionCombo.qml:34
98msgid "More..."
118msgid "More..."
99msgstr ""
119msgstr ""
@@ -102,35 +122,22 @@ msgstr ""
102msgid "Less..."
122msgid "Less..."
103msgstr ""
123msgstr ""
104
124
105−#: qml/Dash/Previews/PreviewRatingInput.qml:81
125+#: qml/Dash/Previews/PreviewRatingInput.qml:82
106msgid "Rate this"
126msgid "Rate this"
107msgstr "Vlerësoje këtë"
127msgstr "Vlerësoje këtë"
108
128
109−#: qml/Dash/Previews/PreviewRatingInput.qml:126
129+#: qml/Dash/Previews/PreviewRatingInput.qml:128
110msgid "Add a review"
130msgid "Add a review"
111msgstr "Shto një rishikim"
131msgstr "Shto një rishikim"
112
132
113−#: qml/Dash/Previews/PreviewRatingInput.qml:166
133+#: qml/Dash/Previews/PreviewRatingInput.qml:168
114msgid "Send"
134msgid "Send"
115msgstr ""
135msgstr ""
116
136
117−#: qml/Greeter/Greeter.qml:151
137+#: qml/Greeter/Greeter.qml:157
118msgid "Swipe to unlock"
138msgid "Swipe to unlock"
119msgstr ""
139msgstr ""
120
140
121−#: qml/Greeter/Lockscreen.qml:149
122−msgid "Emergency Call"
123−msgstr ""
124−
125−#: qml/Greeter/PassphraseLockscreen.qml:59
126−#, qt-format
127−msgid "Hello %1"
128−msgstr ""
129−
130−#: qml/Greeter/PassphraseLockscreen.qml:59
131−msgid "Hello"
132−msgstr ""
133−
134#: qml/Hud/HudParametrizedActionsPage.qml:132
141#: qml/Hud/HudParametrizedActionsPage.qml:132
135msgid "Confirm"
142msgid "Confirm"
136msgstr ""
143msgstr ""
@@ -163,7 +170,7 @@ msgstr ""
163msgid "Search"
170msgid "Search"
164msgstr ""
171msgstr ""
165
172
166−#: qml/Shell.qml:348
173+#: qml/Shell.qml:334
167#, qt-format
174#, qt-format
168msgid "Please enter %1"
175msgid "Please enter %1"
169msgstr ""
176msgstr ""
po/sr.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2013-06-27 09:19+0000\n"
11"PO-Revision-Date: 2013-06-27 09:19+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Serbian <sr@li.org>\n"
13"Language-Team: Serbian <sr@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr ""
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr "Скорашње претраге"
85msgstr "Скорашње претраге"
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr ""
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr ""
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr ""
126msgstr ""
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr ""
130msgstr ""
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr ""
134msgstr ""
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr ""
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr ""
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr "Потврди"
142msgstr "Потврди"
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr "Претрага"
170msgstr "Претрага"
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr ""
175msgstr ""
po/sv.po+49−42
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11−"PO-Revision-Date: 2013-06-26 22:36+0000\n"
11+"PO-Revision-Date: 2014-06-07 19:14+0000\n"
12−"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12+"Last-Translator: mikasjoman <Unknown>\n"
13"Language-Team: Swedish <sv@li.org>\n"
13"Language-Team: Swedish <sv@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -32,15 +32,15 @@ msgstr ""
32
32
33#: qml/Components/EdgeDemo.qml:113
33#: qml/Components/EdgeDemo.qml:113
34msgid "Right edge"
34msgid "Right edge"
35−msgstr ""
35+msgstr "Högerkant"
36
36
37#: qml/Components/EdgeDemo.qml:114
37#: qml/Components/EdgeDemo.qml:114
38msgid "Try swiping from the right edge to unlock the phone"
38msgid "Try swiping from the right edge to unlock the phone"
39−msgstr ""
39+msgstr "Dra med fingret från höger för att låsa upp telefonen"
40
40
41#: qml/Components/EdgeDemo.qml:145
41#: qml/Components/EdgeDemo.qml:145
42msgid "Top edge"
42msgid "Top edge"
43−msgstr ""
43+msgstr "Överkant"
44
44
45#: qml/Components/EdgeDemo.qml:146
45#: qml/Components/EdgeDemo.qml:146
46msgid "Try swiping from the top edge to access the indicators"
46msgid "Try swiping from the top edge to access the indicators"
@@ -48,7 +48,7 @@ msgstr ""
48
48
49#: qml/Components/EdgeDemo.qml:171
49#: qml/Components/EdgeDemo.qml:171
50msgid "Close"
50msgid "Close"
51−msgstr ""
51+msgstr "Stäng"
52
52
53#: qml/Components/EdgeDemo.qml:172
53#: qml/Components/EdgeDemo.qml:172
54msgid "Swipe up again to close the settings screen"
54msgid "Swipe up again to close the settings screen"
@@ -56,7 +56,7 @@ msgstr ""
56
56
57#: qml/Components/EdgeDemo.qml:199
57#: qml/Components/EdgeDemo.qml:199
58msgid "Left edge"
58msgid "Left edge"
59−msgstr ""
59+msgstr "Vänsterkant"
60
60
61#: qml/Components/EdgeDemo.qml:200
61#: qml/Components/EdgeDemo.qml:200
62msgid "Swipe from the left to reveal the launcher for quick access to apps"
62msgid "Swipe from the left to reveal the launcher for quick access to apps"
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr "Nödsamtal"
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr ""
85msgstr ""
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr ""
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr ""
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,58 +121,45 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr ""
126msgstr ""
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110−msgstr ""
130+msgstr "Lägg till en recension"
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr ""
134msgstr ""
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr ""
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr ""
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135−msgstr ""
142+msgstr "Bekräfta"
136
143
137#: qml/Hud/Hud.qml:61 qml/Hud/Hud.qml:99 qml/Hud/Hud.qml:372
144#: qml/Hud/Hud.qml:61 qml/Hud/Hud.qml:99 qml/Hud/Hud.qml:372
138msgid "Type or say a command"
145msgid "Type or say a command"
139−msgstr ""
146+msgstr "Skriv eller tala in ett kommando"
140
147
141#: qml/Hud/Hud.qml:84
148#: qml/Hud/Hud.qml:84
142msgid "Loading. Please Wait..."
149msgid "Loading. Please Wait..."
143−msgstr ""
150+msgstr "Laddar. Var god vänta..."
144
151
145#: qml/Hud/Hud.qml:89
152#: qml/Hud/Hud.qml:89
146msgid "Speak Now..."
153msgid "Speak Now..."
147−msgstr ""
154+msgstr "Tala nu..."
148
155
149#: qml/Hud/Hud.qml:94
156#: qml/Hud/Hud.qml:94
150msgid "Speaking..."
157msgid "Speaking..."
151−msgstr ""
158+msgstr "Talar..."
152
159
153#: qml/Notifications/NotificationMenuItemFactory.qml:91
160#: qml/Notifications/NotificationMenuItemFactory.qml:91
154msgid "Show password"
161msgid "Show password"
155−msgstr ""
162+msgstr "Visa lösenord"
156
163
157#: qml/Notifications/NotificationMenuItemFactory.qml:103
164#: qml/Notifications/NotificationMenuItemFactory.qml:103
158msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
@@ -160,9 +167,9 @@ msgstr ""
160
167
161#: qml/Panel/SearchIndicator.qml:27
168#: qml/Panel/SearchIndicator.qml:27
162msgid "Search"
169msgid "Search"
163−msgstr ""
170+msgstr "Sök"
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168−msgstr ""
175+msgstr "Vänligen fyll i %1"
po/sw.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2014-01-14 19:28+0000\n"
11"PO-Revision-Date: 2014-01-14 19:28+0000\n"
12"Last-Translator: Damas Mlabwa <Unknown>\n"
12"Last-Translator: Damas Mlabwa <Unknown>\n"
13"Language-Team: Swahili <sw@li.org>\n"
13"Language-Team: Swahili <sw@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr ""
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr ""
85msgstr ""
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr ""
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr ""
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr ""
126msgstr ""
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr ""
130msgstr ""
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr "Tuma"
134msgstr "Tuma"
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr ""
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr ""
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr "Thibitisha"
142msgstr "Thibitisha"
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr "Tafuta"
170msgstr "Tafuta"
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr ""
175msgstr ""
po/ta.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2013-10-24 11:36+0000\n"
11"PO-Revision-Date: 2013-10-24 11:36+0000\n"
12"Last-Translator: Arun Kumar - அருண் குமார் <thangam.arunx@gmail.com>\n"
12"Last-Translator: Arun Kumar - அருண் குமார் <thangam.arunx@gmail.com>\n"
13"Language-Team: Ubuntu Tamil Team/Free Tamil Computing/Thamizha\n"
13"Language-Team: Ubuntu Tamil Team/Free Tamil Computing/Thamizha\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19"Language: ta\n"
19"Language: ta\n"
20
20
21#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:43
@@ -75,10 +75,35 @@ msgid ""
75"phone<br><br>Tap on the screen to start"
75"phone<br><br>Tap on the screen to start"
76msgstr ""
76msgstr ""
77
77
78+#: qml/Components/Lockscreen.qml:214
79+msgid "Emergency Call"
80+msgstr "அவசர அழைப்பு"
81+
82+#: qml/Components/Lockscreen.qml:231
83+msgid "OK"
84+msgstr ""
85+
78#: qml/Components/PageHeader.qml:365
86#: qml/Components/PageHeader.qml:365
79msgid "Recent searches"
87msgid "Recent searches"
80msgstr "கடையாக தேடப்பட்டவைகள்"
88msgstr "கடையாக தேடப்பட்டவைகள்"
81
89
90+#: qml/Components/PassphraseLockscreen.qml:60
91+#, qt-format
92+msgid "Hello %1"
93+msgstr "வணக்கம் %1"
94+
95+#: qml/Components/PassphraseLockscreen.qml:60
96+msgid "Hello"
97+msgstr "வணக்கம்"
98+
99+#: qml/Components/PinLockscreen.qml:198
100+msgid "CANCEL"
101+msgstr ""
102+
103+#: qml/Components/PinLockscreen.qml:216
104+msgid "DONE"
105+msgstr ""
106+
82#: qml/Components/SeeMore.qml:35
107#: qml/Components/SeeMore.qml:35
83msgid "See more"
108msgid "See more"
84msgstr ""
109msgstr ""
@@ -91,11 +116,6 @@ msgstr ""
91msgid "Recent"
116msgid "Recent"
92msgstr ""
117msgstr ""
93
118
94−#: qml/Dash/PreviewListView.qml:52
95−#, qt-format
96−msgid "%1 Preview"
97−msgstr ""
98−
99#: qml/Dash/Previews/PreviewActionCombo.qml:34
119#: qml/Dash/Previews/PreviewActionCombo.qml:34
100msgid "More..."
120msgid "More..."
101msgstr ""
121msgstr ""
@@ -104,35 +124,22 @@ msgstr ""
104msgid "Less..."
124msgid "Less..."
105msgstr ""
125msgstr ""
106
126
107−#: qml/Dash/Previews/PreviewRatingInput.qml:81
127+#: qml/Dash/Previews/PreviewRatingInput.qml:82
108msgid "Rate this"
128msgid "Rate this"
109msgstr "இதை மதிப்பிடு"
129msgstr "இதை மதிப்பிடு"
110
130
111−#: qml/Dash/Previews/PreviewRatingInput.qml:126
131+#: qml/Dash/Previews/PreviewRatingInput.qml:128
112msgid "Add a review"
132msgid "Add a review"
113msgstr "ஒரு பரிசீலனையை சேர்"
133msgstr "ஒரு பரிசீலனையை சேர்"
114
134
115−#: qml/Dash/Previews/PreviewRatingInput.qml:166
135+#: qml/Dash/Previews/PreviewRatingInput.qml:168
116msgid "Send"
136msgid "Send"
117msgstr "அனுப்பு"
137msgstr "அனுப்பு"
118
138
119−#: qml/Greeter/Greeter.qml:151
139+#: qml/Greeter/Greeter.qml:157
120msgid "Swipe to unlock"
140msgid "Swipe to unlock"
121msgstr ""
141msgstr ""
122
142
123−#: qml/Greeter/Lockscreen.qml:149
124−msgid "Emergency Call"
125−msgstr "அவசர அழைப்பு"
126−
127−#: qml/Greeter/PassphraseLockscreen.qml:59
128−#, qt-format
129−msgid "Hello %1"
130−msgstr "வணக்கம் %1"
131−
132−#: qml/Greeter/PassphraseLockscreen.qml:59
133−msgid "Hello"
134−msgstr "வணக்கம்"
135−
136#: qml/Hud/HudParametrizedActionsPage.qml:132
143#: qml/Hud/HudParametrizedActionsPage.qml:132
137msgid "Confirm"
144msgid "Confirm"
138msgstr "உறுதிப்படுத்து"
145msgstr "உறுதிப்படுத்து"
@@ -165,7 +172,7 @@ msgstr ""
165msgid "Search"
172msgid "Search"
166msgstr "தெடு"
173msgstr "தெடு"
167
174
168−#: qml/Shell.qml:348
175+#: qml/Shell.qml:334
169#, qt-format
176#, qt-format
170msgid "Please enter %1"
177msgid "Please enter %1"
171msgstr "தயவுச்செய்து %1 உள்ளிடு"
178msgstr "தயவுச்செய்து %1 உள்ளிடு"
po/te.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2013-06-27 09:57+0000\n"
11"PO-Revision-Date: 2013-06-27 09:57+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Telugu <te@li.org>\n"
13"Language-Team: Telugu <te@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr ""
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr ""
85msgstr ""
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr ""
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr ""
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr ""
126msgstr ""
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr ""
130msgstr ""
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr ""
134msgstr ""
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr ""
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr ""
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr ""
142msgstr ""
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr ""
170msgstr ""
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr ""
175msgstr ""
po/tr.po+37−30
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11−"PO-Revision-Date: 2014-03-05 08:54+0000\n"
11+"PO-Revision-Date: 2014-05-19 12:52+0000\n"
12−"Last-Translator: Muhammed Yüce <muhammedyuceee@gmail.com>\n"
12+"Last-Translator: Volkan Gezer <Unknown>\n"
13"Language-Team: Turkish <tr@li.org>\n"
13"Language-Team: Turkish <tr@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -75,10 +75,35 @@ msgstr ""
75"Kenar haraketlerini öğrendiniz ve telefonu kullanmaya "
75"Kenar haraketlerini öğrendiniz ve telefonu kullanmaya "
76"başlayabilirsiniz<br><br>Başlamak için ekrana dokunun"
76"başlayabilirsiniz<br><br>Başlamak için ekrana dokunun"
77
77
78+#: qml/Components/Lockscreen.qml:214
79+msgid "Emergency Call"
80+msgstr "Acil Arama"
81+
82+#: qml/Components/Lockscreen.qml:231
83+msgid "OK"
84+msgstr ""
85+
78#: qml/Components/PageHeader.qml:365
86#: qml/Components/PageHeader.qml:365
79msgid "Recent searches"
87msgid "Recent searches"
80msgstr "Son aramalar"
88msgstr "Son aramalar"
81
89
90+#: qml/Components/PassphraseLockscreen.qml:60
91+#, qt-format
92+msgid "Hello %1"
93+msgstr "Merhaba %1"
94+
95+#: qml/Components/PassphraseLockscreen.qml:60
96+msgid "Hello"
97+msgstr "Merhaba"
98+
99+#: qml/Components/PinLockscreen.qml:198
100+msgid "CANCEL"
101+msgstr ""
102+
103+#: qml/Components/PinLockscreen.qml:216
104+msgid "DONE"
105+msgstr ""
106+
82#: qml/Components/SeeMore.qml:35
107#: qml/Components/SeeMore.qml:35
83msgid "See more"
108msgid "See more"
84msgstr "Daha fazlası"
109msgstr "Daha fazlası"
@@ -89,12 +114,7 @@ msgstr "Daha azını gör"
89
114
90#: qml/Dash/DashApps.qml:37
115#: qml/Dash/DashApps.qml:37
91msgid "Recent"
116msgid "Recent"
92−msgstr ""
117+msgstr "En son"
93−
94−#: qml/Dash/PreviewListView.qml:52
95−#, qt-format
96−msgid "%1 Preview"
97−msgstr ""
98
118
99#: qml/Dash/Previews/PreviewActionCombo.qml:34
119#: qml/Dash/Previews/PreviewActionCombo.qml:34
100msgid "More..."
120msgid "More..."
@@ -104,34 +124,21 @@ msgstr "Daha fazlası..."
104msgid "Less..."
124msgid "Less..."
105msgstr "Daha az.."
125msgstr "Daha az.."
106
126
107−#: qml/Dash/Previews/PreviewRatingInput.qml:81
127+#: qml/Dash/Previews/PreviewRatingInput.qml:82
108msgid "Rate this"
128msgid "Rate this"
109msgstr "Oyla"
129msgstr "Oyla"
110
130
111−#: qml/Dash/Previews/PreviewRatingInput.qml:126
131+#: qml/Dash/Previews/PreviewRatingInput.qml:128
112msgid "Add a review"
132msgid "Add a review"
113msgstr "Bir inceleme ekle"
133msgstr "Bir inceleme ekle"
114
134
115−#: qml/Dash/Previews/PreviewRatingInput.qml:166
135+#: qml/Dash/Previews/PreviewRatingInput.qml:168
116msgid "Send"
136msgid "Send"
117msgstr "Gönder"
137msgstr "Gönder"
118
138
119−#: qml/Greeter/Greeter.qml:151
139+#: qml/Greeter/Greeter.qml:157
120msgid "Swipe to unlock"
140msgid "Swipe to unlock"
121−msgstr ""
141+msgstr "Açmak için kaydırın"
122−
123−#: qml/Greeter/Lockscreen.qml:149
124−msgid "Emergency Call"
125−msgstr "Acil Arama"
126−
127−#: qml/Greeter/PassphraseLockscreen.qml:59
128−#, qt-format
129−msgid "Hello %1"
130−msgstr "Merhaba %1"
131−
132−#: qml/Greeter/PassphraseLockscreen.qml:59
133−msgid "Hello"
134−msgstr "Merhaba"
135
142
136#: qml/Hud/HudParametrizedActionsPage.qml:132
143#: qml/Hud/HudParametrizedActionsPage.qml:132
137msgid "Confirm"
144msgid "Confirm"
@@ -165,7 +172,7 @@ msgstr "Lütfen SIM PIN'inizi girin"
165msgid "Search"
172msgid "Search"
166msgstr "Ara"
173msgstr "Ara"
167
174
168−#: qml/Shell.qml:348
175+#: qml/Shell.qml:334
169#, qt-format
176#, qt-format
170msgid "Please enter %1"
177msgid "Please enter %1"
171msgstr "Lütfen %1 girin"
178msgstr "Lütfen %1 girin"
po/ug.po+40−33
@@ -1,21 +1,21 @@
1# Uyghur translation for unity
1# Uyghur translation for unity
2# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
2# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
3# This file is distributed under the same license as the unity package.
3# This file is distributed under the same license as the unity package.
4−# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
4+# Gheyret Kenji <gheyret@gmail.com>, 2013.
5#
5#
6msgid ""
6msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11−"PO-Revision-Date: 2014-04-22 05:46+0000\n"
11+"PO-Revision-Date: 2014-06-13 21:07+0000\n"
12−"Last-Translator: abdurahman <Unknown>\n"
12+"Last-Translator: Gheyret T.Kenji <Unknown>\n"
13−"Language-Team: Uyghur <ug@li.org>\n"
13+"Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -71,13 +71,38 @@ msgid ""
71"You have now mastered the edge gestures and can start using the "
71"You have now mastered the edge gestures and can start using the "
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74−"ئېكراننى چېكىپ باشلاڭ<br><br>سىز ھازىر گىرۋەك بارماق ئىشارەتلىرىنى ئىگەللەپ "
74+"ئېكراننى چېكىپ باشلاڭ<br><br>سىز ھازىر گىرۋەك بارماق ئىشارەتلىرىنى ئىگىلەپ "
75"بولدىڭىز،ئەمدى تېلېفوننى ئىشلىتىشنى باشلىسىڭىز بولىدۇ"
75"بولدىڭىز،ئەمدى تېلېفوننى ئىشلىتىشنى باشلىسىڭىز بولىدۇ"
76
76
77+#: qml/Components/Lockscreen.qml:214
78+msgid "Emergency Call"
79+msgstr "جىددىي تېلېفون"
80+
81+#: qml/Components/Lockscreen.qml:231
82+msgid "OK"
83+msgstr "تامام"
84+
77#: qml/Components/PageHeader.qml:365
85#: qml/Components/PageHeader.qml:365
78msgid "Recent searches"
86msgid "Recent searches"
79msgstr "يېقىنقى ئىزدەشلەر"
87msgstr "يېقىنقى ئىزدەشلەر"
80
88
89+#: qml/Components/PassphraseLockscreen.qml:60
90+#, qt-format
91+msgid "Hello %1"
92+msgstr "سالام %1"
93+
94+#: qml/Components/PassphraseLockscreen.qml:60
95+msgid "Hello"
96+msgstr "ئەسسالامۇئەلەيكۇم"
97+
98+#: qml/Components/PinLockscreen.qml:198
99+msgid "CANCEL"
100+msgstr "ۋاز كەچ"
101+
102+#: qml/Components/PinLockscreen.qml:216
103+msgid "DONE"
104+msgstr "تامام"
105+
81#: qml/Components/SeeMore.qml:35
106#: qml/Components/SeeMore.qml:35
82msgid "See more"
107msgid "See more"
83msgstr "جىقراق كۆرۈش"
108msgstr "جىقراق كۆرۈش"
@@ -90,11 +115,6 @@ msgstr "ئازراق كۆرۈش"
90msgid "Recent"
115msgid "Recent"
91msgstr "يېقىنقى"
116msgstr "يېقىنقى"
92
117
93−#: qml/Dash/PreviewListView.qml:52
94−#, qt-format
95−msgid "%1 Preview"
96−msgstr "%1 ئالدىن كۆرۈپ بىقىش"
97−
98#: qml/Dash/Previews/PreviewActionCombo.qml:34
118#: qml/Dash/Previews/PreviewActionCombo.qml:34
99msgid "More..."
119msgid "More..."
100msgstr "تېخىمۇ كۆپ…"
120msgstr "تېخىمۇ كۆپ…"
@@ -103,34 +123,21 @@ msgstr "تېخىمۇ كۆپ…"
103msgid "Less..."
123msgid "Less..."
104msgstr "ئازراق..."
124msgstr "ئازراق..."
105
125
106−#: qml/Dash/Previews/PreviewRatingInput.qml:81
126+#: qml/Dash/Previews/PreviewRatingInput.qml:82
107msgid "Rate this"
127msgid "Rate this"
108msgstr "بۇنى باھالاڭ"
128msgstr "بۇنى باھالاڭ"
109
129
110−#: qml/Dash/Previews/PreviewRatingInput.qml:126
130+#: qml/Dash/Previews/PreviewRatingInput.qml:128
111msgid "Add a review"
131msgid "Add a review"
112msgstr "باھا قوشۇش"
132msgstr "باھا قوشۇش"
113
133
114−#: qml/Dash/Previews/PreviewRatingInput.qml:166
134+#: qml/Dash/Previews/PreviewRatingInput.qml:168
115msgid "Send"
135msgid "Send"
116msgstr "ئەۋەت"
136msgstr "ئەۋەت"
117
137
118−#: qml/Greeter/Greeter.qml:151
138+#: qml/Greeter/Greeter.qml:157
119msgid "Swipe to unlock"
139msgid "Swipe to unlock"
120−msgstr ""
140+msgstr "سىيرىسىڭىز قۇلۇپسىزلىنىدۇ"
121−
122−#: qml/Greeter/Lockscreen.qml:149
123−msgid "Emergency Call"
124−msgstr "جىددىي تېلېفون"
125−
126−#: qml/Greeter/PassphraseLockscreen.qml:59
127−#, qt-format
128−msgid "Hello %1"
129−msgstr "سالام %1"
130−
131−#: qml/Greeter/PassphraseLockscreen.qml:59
132−msgid "Hello"
133−msgstr "سالام"
134
141
135#: qml/Hud/HudParametrizedActionsPage.qml:132
142#: qml/Hud/HudParametrizedActionsPage.qml:132
136msgid "Confirm"
143msgid "Confirm"
@@ -158,13 +165,13 @@ msgstr "ئىم كۆرسەت"
158
165
159#: qml/Notifications/NotificationMenuItemFactory.qml:103
166#: qml/Notifications/NotificationMenuItemFactory.qml:103
160msgid "Please enter SIM PIN"
167msgid "Please enter SIM PIN"
161−msgstr "پارولىنى كىرگۈزۈڭPINكارتىڭىزنىڭ SIM"
168+msgstr "سىم(SIM) كارتىڭىزنىڭ PIN نومۇرىنى كىرگۈزۈڭ"
162
169
163#: qml/Panel/SearchIndicator.qml:27
170#: qml/Panel/SearchIndicator.qml:27
164msgid "Search"
171msgid "Search"
165msgstr "ئىزدە"
172msgstr "ئىزدە"
166
173
167−#: qml/Shell.qml:348
174+#: qml/Shell.qml:334
168#, qt-format
175#, qt-format
169msgid "Please enter %1"
176msgid "Please enter %1"
170msgstr "%1 نى كىرگۈزۈڭ"
177msgstr "%1 نى كىرگۈزۈڭ"
po/uk.po+44−35
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11−"PO-Revision-Date: 2013-11-23 12:37+0000\n"
11+"PO-Revision-Date: 2014-06-08 19:09+0000\n"
12−"Last-Translator: Ignat Kizenko <Unknown>\n"
12+"Last-Translator: Yuri Chornoivan <yurchor@gmail.com>\n"
13"Language-Team: Ukrainian <uk@li.org>\n"
13"Language-Team: Ukrainian <uk@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -74,64 +74,73 @@ msgid ""
74"You have now mastered the edge gestures and can start using the "
74"You have now mastered the edge gestures and can start using the "
75"phone<br><br>Tap on the screen to start"
75"phone<br><br>Tap on the screen to start"
76msgstr ""
76msgstr ""
77+"Вами налаштовано дії у відповідь на дотики на краях екрана. Тепер телефоном "
78+"можна користуватися.<br><br>Торкніться екрана, щоб розпочати."
79+
80+#: qml/Components/Lockscreen.qml:214
81+msgid "Emergency Call"
82+msgstr "Терміновий виклик"
83+
84+#: qml/Components/Lockscreen.qml:231
85+msgid "OK"
86+msgstr "Гаразд"
77
87
78#: qml/Components/PageHeader.qml:365
88#: qml/Components/PageHeader.qml:365
79msgid "Recent searches"
89msgid "Recent searches"
80msgstr "Нещодавні пошуки"
90msgstr "Нещодавні пошуки"
81
91
92+#: qml/Components/PassphraseLockscreen.qml:60
93+#, qt-format
94+msgid "Hello %1"
95+msgstr "Привіт, %1"
96+
97+#: qml/Components/PassphraseLockscreen.qml:60
98+msgid "Hello"
99+msgstr "Привіт!"
100+
101+#: qml/Components/PinLockscreen.qml:198
102+msgid "CANCEL"
103+msgstr "Скасувати"
104+
105+#: qml/Components/PinLockscreen.qml:216
106+msgid "DONE"
107+msgstr "Виконано"
108+
82#: qml/Components/SeeMore.qml:35
109#: qml/Components/SeeMore.qml:35
83msgid "See more"
110msgid "See more"
84−msgstr ""
111+msgstr "Докладніше"
85
112
86#: qml/Components/SeeMore.qml:58
113#: qml/Components/SeeMore.qml:58
87msgid "See less"
114msgid "See less"
88−msgstr ""
115+msgstr "Стисліше"
89
116
90#: qml/Dash/DashApps.qml:37
117#: qml/Dash/DashApps.qml:37
91msgid "Recent"
118msgid "Recent"
92−msgstr ""
119+msgstr "Нещодавні"
93−
94−#: qml/Dash/PreviewListView.qml:52
95−#, qt-format
96−msgid "%1 Preview"
97−msgstr ""
98
120
99#: qml/Dash/Previews/PreviewActionCombo.qml:34
121#: qml/Dash/Previews/PreviewActionCombo.qml:34
100msgid "More..."
122msgid "More..."
101−msgstr ""
123+msgstr "Більше…"
102
124
103#: qml/Dash/Previews/PreviewActionCombo.qml:34
125#: qml/Dash/Previews/PreviewActionCombo.qml:34
104msgid "Less..."
126msgid "Less..."
105−msgstr ""
127+msgstr "Менше..."
106
128
107−#: qml/Dash/Previews/PreviewRatingInput.qml:81
129+#: qml/Dash/Previews/PreviewRatingInput.qml:82
108msgid "Rate this"
130msgid "Rate this"
109msgstr "Оцінити"
131msgstr "Оцінити"
110
132
111−#: qml/Dash/Previews/PreviewRatingInput.qml:126
133+#: qml/Dash/Previews/PreviewRatingInput.qml:128
112msgid "Add a review"
134msgid "Add a review"
113msgstr "Додати рецензію"
135msgstr "Додати рецензію"
114
136
115−#: qml/Dash/Previews/PreviewRatingInput.qml:166
137+#: qml/Dash/Previews/PreviewRatingInput.qml:168
116msgid "Send"
138msgid "Send"
117msgstr "Надіслати"
139msgstr "Надіслати"
118
140
119−#: qml/Greeter/Greeter.qml:151
141+#: qml/Greeter/Greeter.qml:157
120msgid "Swipe to unlock"
142msgid "Swipe to unlock"
121−msgstr ""
143+msgstr "Проведіть пальцем, щоб розблокувати"
122−
123−#: qml/Greeter/Lockscreen.qml:149
124−msgid "Emergency Call"
125−msgstr "Терміновий виклик"
126−
127−#: qml/Greeter/PassphraseLockscreen.qml:59
128−#, qt-format
129−msgid "Hello %1"
130−msgstr "Привіт, %1"
131−
132−#: qml/Greeter/PassphraseLockscreen.qml:59
133−msgid "Hello"
134−msgstr "Привіт!"
135
144
136#: qml/Hud/HudParametrizedActionsPage.qml:132
145#: qml/Hud/HudParametrizedActionsPage.qml:132
137msgid "Confirm"
146msgid "Confirm"
@@ -159,13 +168,13 @@ msgstr "Показати пароль"
159
168
160#: qml/Notifications/NotificationMenuItemFactory.qml:103
169#: qml/Notifications/NotificationMenuItemFactory.qml:103
161msgid "Please enter SIM PIN"
170msgid "Please enter SIM PIN"
162−msgstr ""
171+msgstr "Введіть PIN-код SIM-картки"
163
172
164#: qml/Panel/SearchIndicator.qml:27
173#: qml/Panel/SearchIndicator.qml:27
165msgid "Search"
174msgid "Search"
166msgstr "Пошук"
175msgstr "Пошук"
167
176
168−#: qml/Shell.qml:348
177+#: qml/Shell.qml:334
169#, qt-format
178#, qt-format
170msgid "Please enter %1"
179msgid "Please enter %1"
171msgstr "Будь ласка, введіть %1"
180msgstr "Будь ласка, введіть %1"
po/unity8.pot+31−24
@@ -8,7 +8,7 @@ msgid ""
8msgstr ""
8msgstr ""
9"Project-Id-Version: unity8\n"
9"Project-Id-Version: unity8\n"
10"Report-Msgid-Bugs-To: \n"
10"Report-Msgid-Bugs-To: \n"
11−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
11+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14"Language-Team: LANGUAGE <LL@li.org>\n"
14"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr ""
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr ""
85msgstr ""
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr ""
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr ""
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr ""
126msgstr ""
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr ""
130msgstr ""
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr ""
134msgstr ""
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr ""
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr ""
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr ""
142msgstr ""
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr ""
170msgstr ""
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr ""
175msgstr ""
po/vi.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2014-01-15 01:19+0000\n"
11"PO-Revision-Date: 2014-01-15 01:19+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Vietnamese <vi@li.org>\n"
13"Language-Team: Vietnamese <vi@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr ""
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr ""
85msgstr ""
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr ""
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr ""
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr ""
126msgstr ""
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr ""
130msgstr ""
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr ""
134msgstr ""
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr ""
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr ""
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr ""
142msgstr ""
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr ""
170msgstr ""
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr ""
175msgstr ""
po/xh.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2013-09-28 13:20+0000\n"
11"PO-Revision-Date: 2013-09-28 13:20+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Xhosa <xh@li.org>\n"
13"Language-Team: Xhosa <xh@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr ""
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr ""
85msgstr ""
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr ""
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr ""
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr ""
126msgstr ""
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr ""
130msgstr ""
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr ""
134msgstr ""
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr ""
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr ""
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr ""
142msgstr ""
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr ""
170msgstr ""
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr ""
175msgstr ""
po/zh_CN.po+60−53
@@ -7,128 +7,135 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11−"PO-Revision-Date: 2013-10-09 13:51+0000\n"
11+"PO-Revision-Date: 2014-06-12 08:55+0000\n"
12−"Last-Translator: Aron Xu <Unknown>\n"
12+"Last-Translator: Shengjing Zhu <Unknown>\n"
13"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
13"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
22msgid "Lock to Launcher"
22msgid "Lock to Launcher"
23−msgstr ""
23+msgstr "固定到启动器"
24
24
25#: plugins/Unity/Launcher/launcheritem.cpp:73
25#: plugins/Unity/Launcher/launcheritem.cpp:73
26msgid "Unlock from Launcher"
26msgid "Unlock from Launcher"
27−msgstr ""
27+msgstr "从启动器移除"
28
28
29#: qml/Components/EdgeDemoOverlay.qml:151
29#: qml/Components/EdgeDemoOverlay.qml:151
30msgid "Skip intro"
30msgid "Skip intro"
31−msgstr ""
31+msgstr "跳过简介"
32
32
33#: qml/Components/EdgeDemo.qml:113
33#: qml/Components/EdgeDemo.qml:113
34msgid "Right edge"
34msgid "Right edge"
35−msgstr ""
35+msgstr "右边缘"
36
36
37#: qml/Components/EdgeDemo.qml:114
37#: qml/Components/EdgeDemo.qml:114
38msgid "Try swiping from the right edge to unlock the phone"
38msgid "Try swiping from the right edge to unlock the phone"
39−msgstr ""
39+msgstr "从右边滑动可以解锁"
40
40
41#: qml/Components/EdgeDemo.qml:145
41#: qml/Components/EdgeDemo.qml:145
42msgid "Top edge"
42msgid "Top edge"
43−msgstr ""
43+msgstr "上边缘"
44
44
45#: qml/Components/EdgeDemo.qml:146
45#: qml/Components/EdgeDemo.qml:146
46msgid "Try swiping from the top edge to access the indicators"
46msgid "Try swiping from the top edge to access the indicators"
47−msgstr ""
47+msgstr "从上边缘划入可以访问指示器"
48
48
49#: qml/Components/EdgeDemo.qml:171
49#: qml/Components/EdgeDemo.qml:171
50msgid "Close"
50msgid "Close"
51−msgstr ""
51+msgstr "关闭"
52
52
53#: qml/Components/EdgeDemo.qml:172
53#: qml/Components/EdgeDemo.qml:172
54msgid "Swipe up again to close the settings screen"
54msgid "Swipe up again to close the settings screen"
55−msgstr ""
55+msgstr "再次向上划动可以关闭设置界面"
56
56
57#: qml/Components/EdgeDemo.qml:199
57#: qml/Components/EdgeDemo.qml:199
58msgid "Left edge"
58msgid "Left edge"
59−msgstr ""
59+msgstr "左边缘"
60
60
61#: qml/Components/EdgeDemo.qml:200
61#: qml/Components/EdgeDemo.qml:200
62msgid "Swipe from the left to reveal the launcher for quick access to apps"
62msgid "Swipe from the left to reveal the launcher for quick access to apps"
63−msgstr ""
63+msgstr "从左边划入展开启动器可以快速打开应用"
64
64
65#: qml/Components/EdgeDemo.qml:227
65#: qml/Components/EdgeDemo.qml:227
66msgid "Well done"
66msgid "Well done"
67−msgstr ""
67+msgstr "做得好"
68
68
69#: qml/Components/EdgeDemo.qml:228
69#: qml/Components/EdgeDemo.qml:228
70msgid ""
70msgid ""
71"You have now mastered the edge gestures and can start using the "
71"You have now mastered the edge gestures and can start using the "
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73−msgstr ""
73+msgstr "您现在已经掌握了边缘滑动手势,可以开始使用手机了<br><br>请点击屏幕开始使用"
74+
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr "紧急电话"
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr "确定"
74
82
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr "近期搜索"
85msgstr "近期搜索"
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr "你好,%1"
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr "你好"
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr "取消"
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr "完成"
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81−msgstr ""
106+msgstr "了解更多"
82
107
83#: qml/Components/SeeMore.qml:58
108#: qml/Components/SeeMore.qml:58
84msgid "See less"
109msgid "See less"
85−msgstr ""
110+msgstr "显示更少"
86
111
87#: qml/Dash/DashApps.qml:37
112#: qml/Dash/DashApps.qml:37
88msgid "Recent"
113msgid "Recent"
89−msgstr ""
114+msgstr "最近使用过的"
90−
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95
115
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98−msgstr ""
118+msgstr "更多..."
99
119
100#: qml/Dash/Previews/PreviewActionCombo.qml:34
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
101msgid "Less..."
121msgid "Less..."
102−msgstr ""
122+msgstr "更少..."
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106−msgstr ""
126+msgstr "评分"
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110−msgstr ""
130+msgstr "添加评论"
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114−msgstr ""
134+msgstr "发送"
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118−msgstr ""
138+msgstr "滑动解锁"
119−
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr ""
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr "你好,%1"
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr "你好"
132
139
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
@@ -152,17 +159,17 @@ msgstr "讲话中..."
152
159
153#: qml/Notifications/NotificationMenuItemFactory.qml:91
160#: qml/Notifications/NotificationMenuItemFactory.qml:91
154msgid "Show password"
161msgid "Show password"
155−msgstr ""
162+msgstr "显示密码"
156
163
157#: qml/Notifications/NotificationMenuItemFactory.qml:103
164#: qml/Notifications/NotificationMenuItemFactory.qml:103
158msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
159−msgstr ""
166+msgstr "请输入 SIM PIN"
160
167
161#: qml/Panel/SearchIndicator.qml:27
168#: qml/Panel/SearchIndicator.qml:27
162msgid "Search"
169msgid "Search"
163msgstr "搜索"
170msgstr "搜索"
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168−msgstr ""
175+msgstr "请输入 %1"
po/zh_HK.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2014-01-25 13:32+0000\n"
11"PO-Revision-Date: 2014-01-25 13:32+0000\n"
12"Last-Translator: Daniel Cheung <daniel.2345@hotmail.com>\n"
12"Last-Translator: Daniel Cheung <daniel.2345@hotmail.com>\n"
13"Language-Team: Chinese (Hong Kong) <zh_HK@li.org>\n"
13"Language-Team: Chinese (Hong Kong) <zh_HK@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr "緊急電話"
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr "最近的搜尋"
85msgstr "最近的搜尋"
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr "您好 %1"
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr "您好"
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr "評價"
126msgstr "評價"
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr "新增評論"
130msgstr "新增評論"
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr "傳送"
134msgstr "傳送"
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr "緊急電話"
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr "您好 %1"
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr "您好"
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr "確認"
142msgstr "確認"
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr "搜尋"
170msgstr "搜尋"
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr "請輸入 %1"
175msgstr "請輸入 %1"
po/zh_TW.po+33−26
@@ -7,15 +7,15 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-04-10 11:13-0400\n"
10+"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11"PO-Revision-Date: 2014-01-16 06:04+0000\n"
11"PO-Revision-Date: 2014-01-16 06:04+0000\n"
12"Last-Translator: Henry Yang <henry9846@hotmail.com>\n"
12"Last-Translator: Henry Yang <henry9846@hotmail.com>\n"
13"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
13"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
17+"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
18+"X-Generator: Launchpad (build 17045)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,10 +72,35 @@ msgid ""
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74
74
75+#: qml/Components/Lockscreen.qml:214
76+msgid "Emergency Call"
77+msgstr "緊急連絡"
78+
79+#: qml/Components/Lockscreen.qml:231
80+msgid "OK"
81+msgstr ""
82+
75#: qml/Components/PageHeader.qml:365
83#: qml/Components/PageHeader.qml:365
76msgid "Recent searches"
84msgid "Recent searches"
77msgstr "最近搜尋"
85msgstr "最近搜尋"
78
86
87+#: qml/Components/PassphraseLockscreen.qml:60
88+#, qt-format
89+msgid "Hello %1"
90+msgstr "%1 您好"
91+
92+#: qml/Components/PassphraseLockscreen.qml:60
93+msgid "Hello"
94+msgstr "您好"
95+
96+#: qml/Components/PinLockscreen.qml:198
97+msgid "CANCEL"
98+msgstr ""
99+
100+#: qml/Components/PinLockscreen.qml:216
101+msgid "DONE"
102+msgstr ""
103+
79#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
80msgid "See more"
105msgid "See more"
81msgstr ""
106msgstr ""
@@ -88,11 +113,6 @@ msgstr ""
88msgid "Recent"
113msgid "Recent"
89msgstr ""
114msgstr ""
90
115
91−#: qml/Dash/PreviewListView.qml:52
92−#, qt-format
93−msgid "%1 Preview"
94−msgstr ""
95−
96#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
97msgid "More..."
117msgid "More..."
98msgstr ""
118msgstr ""
@@ -101,35 +121,22 @@ msgstr ""
101msgid "Less..."
121msgid "Less..."
102msgstr ""
122msgstr ""
103
123
104−#: qml/Dash/Previews/PreviewRatingInput.qml:81
124+#: qml/Dash/Previews/PreviewRatingInput.qml:82
105msgid "Rate this"
125msgid "Rate this"
106msgstr "對此評比"
126msgstr "對此評比"
107
127
108−#: qml/Dash/Previews/PreviewRatingInput.qml:126
128+#: qml/Dash/Previews/PreviewRatingInput.qml:128
109msgid "Add a review"
129msgid "Add a review"
110msgstr "新增回覆"
130msgstr "新增回覆"
111
131
112−#: qml/Dash/Previews/PreviewRatingInput.qml:166
132+#: qml/Dash/Previews/PreviewRatingInput.qml:168
113msgid "Send"
133msgid "Send"
114msgstr "發送"
134msgstr "發送"
115
135
116−#: qml/Greeter/Greeter.qml:151
136+#: qml/Greeter/Greeter.qml:157
117msgid "Swipe to unlock"
137msgid "Swipe to unlock"
118msgstr ""
138msgstr ""
119
139
120−#: qml/Greeter/Lockscreen.qml:149
121−msgid "Emergency Call"
122−msgstr "緊急連絡"
123−
124−#: qml/Greeter/PassphraseLockscreen.qml:59
125−#, qt-format
126−msgid "Hello %1"
127−msgstr "%1 您好"
128−
129−#: qml/Greeter/PassphraseLockscreen.qml:59
130−msgid "Hello"
131−msgstr "您好"
132−
133#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
134msgid "Confirm"
141msgid "Confirm"
135msgstr "確認"
142msgstr "確認"
@@ -162,7 +169,7 @@ msgstr ""
162msgid "Search"
169msgid "Search"
163msgstr "搜尋"
170msgstr "搜尋"
164
171
165−#: qml/Shell.qml:348
172+#: qml/Shell.qml:334
166#, qt-format
173#, qt-format
167msgid "Please enter %1"
174msgid "Please enter %1"
168msgstr ""
175msgstr ""
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}
5 )
5 )
6
6
7set(QML_DIRS
7set(QML_DIRS
8− Bottombar
9 Components
8 Components
10 Dash
9 Dash
11 graphics
10 graphics
qml/Components/FilterGrid.qml+2−2
@@ -52,8 +52,8 @@ Item {
52 property alias delegate: iconTileGrid.delegate
52 property alias delegate: iconTileGrid.delegate
53 property alias cellWidth: iconTileGrid.cellWidth
53 property alias cellWidth: iconTileGrid.cellWidth
54 property alias cellHeight: iconTileGrid.cellHeight
54 property alias cellHeight: iconTileGrid.cellHeight
55− property alias delegateCreationBegin: iconTileGrid.delegateCreationBegin
55+ property alias displayMarginBeginning: iconTileGrid.displayMarginBeginning
56− property alias delegateCreationEnd: iconTileGrid.delegateCreationEnd
56+ property alias displayMarginEnd: iconTileGrid.displayMarginEnd
57 readonly property alias originY: iconTileGrid.originY
57 readonly property alias originY: iconTileGrid.originY
58 readonly property alias flicking: iconTileGrid.flicking
58 readonly property alias flicking: iconTileGrid.flicking
59 readonly property alias moving: iconTileGrid.moving
59 readonly property alias moving: iconTileGrid.moving
qml/Greeter/Lockscreen.qml → qml/Components/Lockscreen.qmlrenamed+91−8
@@ -15,8 +15,8 @@
15 */
15 */
16
16
17import QtQuick 2.0
17import QtQuick 2.0
18−import Ubuntu.Components 0.1
18+import Ubuntu.Components 1.0
19−import "../Components"
19+import Ubuntu.Components.Popups 1.0
20
20
21Showable {
21Showable {
22 id: root
22 id: root
@@ -26,19 +26,34 @@ Showable {
26
26
27 // Placeholder text
27 // Placeholder text
28 property string placeholderText: ""
28 property string placeholderText: ""
29+ // Placeholder text while shaking (e.g. Incorrect passprase)
30+ property string wrongPlaceholderText: ""
31+ // Retries text (e.g. 3 retries left)
32+ property string retryText: ""
33+
34+ // Informational text. (e.g. some text to tell which domain this is pin is entered for.
35+ property string infoText: ""
29
36
30 // In case the Lockscreen can show a greeter message, this is the username
37 // In case the Lockscreen can show a greeter message, this is the username
31 property string username: ""
38 property string username: ""
32
39
33− // Set this to a value greater 0 to enable auto-confirm behavior for the lockscreen.
40+ // Set those to a value greater 0 to restrict the pin length.
41+ // If both are unset, the Lockscreen will show a confirm button and allow typing any length of pin before
42+ // confirming. If minPinLength is set to a value > 0, the confirm button will only become active when the
43+ // entered pin is at least that long. If maxPinLength is set, the lockscreen won't allow entering any
44+ // more numbers than that. If both are set to the same value, the lockscreen will enter auto confirming
45+ // behavior, hiding the confirmation button and triggering that automatically when the entered pin reached
34− // This is ignored by the alphaNumeric lockscreen as that one is confirmed with pressing enter on the OSK.
46+ // that length. This is ignored by the alphaNumeric lockscreen as that one is always confirmed by pressing
47+ // enter on the OSK.
35− property int pinLength: -1
48+ property int minPinLength: -1
49+ property int maxPinLength: -1
36
50
37 property url background: ""
51 property url background: ""
38
52
39 signal entered(string passphrase)
53 signal entered(string passphrase)
40 signal cancel()
54 signal cancel()
41 signal emergencyCall()
55 signal emergencyCall()
56+ signal infoPopupConfirmed()
42
57
43 onRequiredChanged: {
58 onRequiredChanged: {
44 if (required && pinPadLoader.item) {
59 if (required && pinPadLoader.item) {
@@ -56,6 +71,10 @@ Showable {
56 pinPadLoader.item.clear(showAnimation);
71 pinPadLoader.item.clear(showAnimation);
57 }
72 }
58
73
74+ function showInfoPopup(title, text) {
75+ PopupUtils.open(infoPopupComponent, root, {title: title, text: text})
76+ }
77+
59 Rectangle {
78 Rectangle {
60 // In case background fails to load or is undefined
79 // In case background fails to load or is undefined
61 id: backgroundBackup
80 id: backgroundBackup
@@ -68,7 +87,6 @@ Showable {
68 objectName: "lockscreenBackground"
87 objectName: "lockscreenBackground"
69 anchors {
88 anchors {
70 fill: parent
89 fill: parent
71− topMargin: backgroundTopMargin
72 }
90 }
73 source: root.required ? root.background : ""
91 source: root.required ? root.background : ""
74 fillMode: Image.PreserveAspectCrop
92 fillMode: Image.PreserveAspectCrop
@@ -78,6 +96,43 @@ Showable {
78 anchors.fill: root
96 anchors.fill: root
79 }
97 }
80
98
99+ Column {
100+ spacing: units.gu(2)
101+ anchors {
102+ left: parent.left
103+ right: parent.right
104+ bottom: pinPadLoader.top
105+ bottomMargin: units.gu(2)
106+ }
107+ Label {
108+ objectName: "retryCountLabel"
109+ anchors {
110+ left: parent.left
111+ right: parent.right
112+ }
113+ text: root.retryText
114+ horizontalAlignment: Text.AlignHCenter
115+ color: "#f3f3e7"
116+ opacity: 0.6
117+ visible: root.retryText.length > 0
118+ }
119+ Label {
120+ id: infoTextLabel
121+ objectName: "infoTextLabel"
122+ anchors {
123+ left: parent.left
124+ right: parent.right
125+ }
126+ text: root.infoText
127+ horizontalAlignment: Text.AlignHCenter
128+ color: "#f3f3e7"
129+ opacity: 0.6
130+ visible: root.infoText.length > 0
131+ }
132+ }
133+
134+
135+
81 Loader {
136 Loader {
82 id: pinPadLoader
137 id: pinPadLoader
83 objectName: "pinPadLoader"
138 objectName: "pinPadLoader"
@@ -105,14 +160,24 @@ Showable {
105
160
106 Binding {
161 Binding {
107 target: pinPadLoader.item
162 target: pinPadLoader.item
108− property: "pinLength"
163+ property: "minPinLength"
164+ value: root.minPinLength
165+ }
166+ Binding {
167+ target: pinPadLoader.item
168+ property: "maxPinLength"
109− value: root.pinLength
169+ value: root.maxPinLength
110 }
170 }
111 Binding {
171 Binding {
112 target: pinPadLoader.item
172 target: pinPadLoader.item
113 property: "placeholderText"
173 property: "placeholderText"
114 value: root.placeholderText
174 value: root.placeholderText
115 }
175 }
176+ Binding {
177+ target: pinPadLoader.item
178+ property: "wrongPlaceholderText"
179+ value: root.wrongPlaceholderText
180+ }
116 Binding {
181 Binding {
117 target: pinPadLoader.item
182 target: pinPadLoader.item
118 property: "username"
183 property: "username"
@@ -153,4 +218,22 @@ Showable {
153 anchors.horizontalCenter: parent.horizontalCenter
218 anchors.horizontalCenter: parent.horizontalCenter
154 }
219 }
155 }
220 }
221+
222+ Component {
223+ id: infoPopupComponent
224+ Dialog {
225+ id: dialog
226+ objectName: "infoPopup"
227+ modal: true
228+
229+ Button {
230+ objectName: "infoPopupOkButton"
231+ text: i18n.tr("OK")
232+ onClicked: {
233+ PopupUtils.close(dialog)
234+ root.infoPopupConfirmed();
235+ }
236+ }
237+ }
238+ }
156}
239}
qml/Components/PageHeader.qml+1−1
@@ -25,7 +25,7 @@ Item {
25 property bool searchEntryEnabled: false
25 property bool searchEntryEnabled: false
26 property alias searchQuery: searchField.text
26 property alias searchQuery: searchField.text
27 property ListModel searchHistory
27 property ListModel searchHistory
28− property Scope scope
28+ property var scope: null
29 property alias childItem: itemContainer.children
29 property alias childItem: itemContainer.children
30 property alias showBackButton: backButton.visible
30 property alias showBackButton: backButton.visible
31
31
qml/Greeter/PassphraseLockscreen.qml → qml/Components/PassphraseLockscreen.qmlrenamed+6−2
@@ -22,7 +22,8 @@ Item {
22 id: root
22 id: root
23 height: highlightItem.height
23 height: highlightItem.height
24
24
25− property alias placeholderText: pinentryField.placeholderText
25+ property string placeholderText
26+ property string wrongPlaceholderText
26 property string username: ""
27 property string username: ""
27
28
28 signal entered(string passphrase)
29 signal entered(string passphrase)
@@ -73,9 +74,12 @@ Item {
73 echoMode: TextInput.Password
74 echoMode: TextInput.Password
74 opacity: 0.9
75 opacity: 0.9
75 hasClearButton: false
76 hasClearButton: false
77+ placeholderText: wrongPasswordAnimation.running ? root.wrongPlaceholderText : root.placeholderText
76
78
77 onAccepted: {
79 onAccepted: {
80+ if (pinentryField.text) {
78− root.entered(pinentryField.text);
81+ root.entered(pinentryField.text);
82+ }
79 }
83 }
80 }
84 }
81 }
85 }
qml/Greeter/PinLockscreen.qml → qml/Components/PinLockscreen.qmlrenamed+30−12
@@ -25,9 +25,11 @@ Column {
25 spacing: units.gu(3.5)
25 spacing: units.gu(3.5)
26
26
27 property alias placeholderText: pinentryField.placeholderText
27 property alias placeholderText: pinentryField.placeholderText
28+ property alias wrongPlaceholderText: pinentryField.wrongPlaceholderText
28 property int padWidth: units.gu(34)
29 property int padWidth: units.gu(34)
29 property int padHeight: units.gu(28)
30 property int padHeight: units.gu(28)
30− property int pinLength: -1
31+ property int minPinLength: -1
32+ property int maxPinLength: -1
31
33
32 signal entered(string passphrase)
34 signal entered(string passphrase)
33 signal cancel()
35 signal cancel()
@@ -41,6 +43,10 @@ Column {
41 }
43 }
42 }
44 }
43
45
46+ QtObject {
47+ id: priv
48+ property bool autoConfirm: root.minPinLength == root.maxPinLength && root.minPinLength != -1
49+ }
44
50
45 UbuntuShape {
51 UbuntuShape {
46 id: pinentryField
52 id: pinentryField
@@ -52,12 +58,20 @@ Column {
52 radius: "medium"
58 radius: "medium"
53 property string text: ""
59 property string text: ""
54 property string placeholderText: ""
60 property string placeholderText: ""
61+ property string wrongPlaceholderText: ""
62+
63+ function appendChar(character) {
64+ if (root.maxPinLength == -1 || pinentryField.text.length < root.maxPinLength) {
65+ pinentryField.text = pinentryField.text + character;
66+ }
67+ }
68+
55 onTextChanged: {
69 onTextChanged: {
56 pinentryFieldLabel.text = "";
70 pinentryFieldLabel.text = "";
57 for (var i = 0; i < text.length; ++i) {
71 for (var i = 0; i < text.length; ++i) {
58 pinentryFieldLabel.text += "•";
72 pinentryFieldLabel.text += "•";
59 }
73 }
60− if (text.length === root.pinLength) {
74+ if (priv.autoConfirm && text.length === root.maxPinLength) {
61 root.entered(text);
75 root.entered(text);
62 }
76 }
63 }
77 }
@@ -74,9 +88,11 @@ Column {
74 }
88 }
75 Label {
89 Label {
76 id: pinentryFieldPlaceHolder
90 id: pinentryFieldPlaceHolder
91+ objectName: "pinentryFieldPlaceHolder"
77 anchors.centerIn: parent
92 anchors.centerIn: parent
78− color: "grey"
93+ color: "#f3f3e7"
94+ opacity: 0.6
79− text: parent.placeholderText
95+ text: wrongPasswordAnimation.running ? parent.wrongPlaceholderText : parent.placeholderText
80 visible: pinentryFieldLabel.text.length == 0
96 visible: pinentryFieldLabel.text.length == 0
81 }
97 }
82
98
@@ -91,9 +107,11 @@ Column {
91 bottom: parent.bottom
107 bottom: parent.bottom
92 bottomMargin: units.gu(1)
108 bottomMargin: units.gu(1)
93 }
109 }
94− visible: root.pinLength == -1
110+ visible: !priv.autoConfirm
95 width: height
111 width: height
96 name: "erase"
112 name: "erase"
113+ color: "#f3f3e7"
114+ opacity: 0.6
97 MouseArea {
115 MouseArea {
98 anchors.fill: parent
116 anchors.fill: parent
99 onClicked: pinentryField.text = pinentryField.text.substring(0, pinentryField.text.length-1);
117 onClicked: pinentryField.text = pinentryField.text.substring(0, pinentryField.text.length-1);
@@ -168,7 +186,7 @@ Column {
168 enabled: entryEnabled
186 enabled: entryEnabled
169
187
170 onClicked: {
188 onClicked: {
171− pinentryField.text = pinentryField.text + text;
189+ pinentryField.appendChar(text);
172 }
190 }
173 }
191 }
174 }
192 }
@@ -177,7 +195,7 @@ Column {
177 objectName: "pinPadButtonBack"
195 objectName: "pinPadButtonBack"
178 width: root.padWidth / 3
196 width: root.padWidth / 3
179 height: root.padHeight / 4
197 height: root.padHeight / 4
180− subText: "CANCEL"
198+ subText: i18n.tr("CANCEL")
181 onClicked: root.cancel();
199 onClicked: root.cancel();
182 }
200 }
183
201
@@ -186,7 +204,7 @@ Column {
186 width: root.padWidth / 3
204 width: root.padWidth / 3
187 height: root.padHeight / 4
205 height: root.padHeight / 4
188 text: "0"
206 text: "0"
189− onClicked: pinentryField.text = pinentryField.text + text
207+ onClicked: pinentryField.appendChar(text);
190 enabled: entryEnabled
208 enabled: entryEnabled
191 }
209 }
192
210
@@ -194,16 +212,16 @@ Column {
194 objectName: "pinPadButtonErase"
212 objectName: "pinPadButtonErase"
195 width: root.padWidth / 3
213 width: root.padWidth / 3
196 height: root.padHeight / 4
214 height: root.padHeight / 4
197− iconName: root.pinLength == -1 ? "" : "erase"
215+ iconName: priv.autoConfirm ? "erase" : ""
198− subText: root.pinLength == -1 ? "DONE" : ""
216+ subText: priv.autoConfirm ? "" : i18n.tr("DONE")
199 onClicked: {
217 onClicked: {
200− if (root.pinLength !== -1) {
218+ if (priv.autoConfirm) {
201 pinentryField.text = pinentryField.text.substring(0, pinentryField.text.length-1);
219 pinentryField.text = pinentryField.text.substring(0, pinentryField.text.length-1);
202 } else {
220 } else {
203 root.entered(pinentryField.text);
221 root.entered(pinentryField.text);
204 }
222 }
205 }
223 }
206− enabled: entryEnabled
224+ enabled: priv.autoConfirm ? entryEnabled : pinentryField.text.length >= root.minPinLength
207 }
225 }
208 }
226 }
209 }
227 }
qml/Components/PinPadButton.qml+2−1
@@ -19,6 +19,7 @@ import Ubuntu.Components 0.1
19
19
20Item {
20Item {
21 id: root
21 id: root
22+ opacity: enabled ? 1 : 0.6
22
23
23 property alias text: label.text
24 property alias text: label.text
24 property alias subText: subTextLabel.text
25 property alias subText: subTextLabel.text
@@ -62,7 +63,7 @@ Item {
62 Label {
63 Label {
63 id: subTextLabel
64 id: subTextLabel
64 fontSize: "small"
65 fontSize: "small"
65− color: "grey"
66+ color: "#f3f3e7"
66 anchors.horizontalCenter: parent.horizontalCenter
67 anchors.horizontalCenter: parent.horizontalCenter
67 visible: text.length > 0
68 visible: text.length > 0
68 }
69 }
qml/Components/ResponsiveGridView.qml+3−3
@@ -14,7 +14,7 @@
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
15 */
16
16
17−import QtQuick 2.0
17+import QtQuick 2.3
18import Ubuntu.Components 0.1
18import Ubuntu.Components 0.1
19
19
20/*
20/*
@@ -41,8 +41,8 @@ Item {
41 readonly property alias moving: gridView.moving
41 readonly property alias moving: gridView.moving
42 readonly property alias pressDelay: gridView.pressDelay
42 readonly property alias pressDelay: gridView.pressDelay
43 readonly property alias originY: gridView.originY
43 readonly property alias originY: gridView.originY
44− property alias delegateCreationBegin: gridView.delegateCreationBegin
44+ property alias displayMarginBeginning: gridView.displayMarginBeginning
45− property alias delegateCreationEnd: gridView.delegateCreationEnd
45+ property alias displayMarginEnd: gridView.displayMarginEnd
46 property alias highlightIndex: gridView.highlightIndex
46 property alias highlightIndex: gridView.highlightIndex
47 readonly property alias currentItem: gridView.currentItem
47 readonly property alias currentItem: gridView.currentItem
48
48
qml/Components/Revealer.qmldeleted−241
@@ -1,241 +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: revealer
22−
23− property Showable target
24− property var hintingAnimation: hintingAnimation
25− property string boundProperty: orientation == Qt.Vertical ? "y" : "x"
26− property int orientation: Qt.Vertical
27− property int direction: Qt.LeftToRight
28− property real openedValue: orientation == Qt.Vertical ? y : x
29− property real closedValue: orientation == Qt.Vertical ? y + (direction == Qt.LeftToRight ? -height : height) : x + (direction == Qt.LeftToRight ? -width : width)
30− property real hintDisplacement: 0
31− property real handleSize: units.gu(2)
32− property real dragVelocity: draggingArea.dragVelocity != 0 ? Math.abs(draggingArea.dragVelocity) : -1
33− property real dragVelocityThreshold: units.gu(5)
34− property bool dragging: false
35− property bool pressed: draggingArea.pressed
36− property int lateralPosition: draggingArea.lateralPosition
37− property real dragPosition
38− property bool openOnPress: true
39−
40− signal openPressed(int mouseX, int mouseY)
41− signal openReleased(int mouseX, int mouseY)
42− signal closePressed
43− signal openClicked
44− signal closeClicked
45−
46− dragPosition: {
47− var value
48− if (orientation == Qt.Vertical) {
49− value = draggingArea.dragValue + draggingArea.y
50− if (direction == Qt.RightToLeft) {
51− value += draggingArea.height - height
52− }
53− } else {
54− value = draggingArea.dragValue + draggingArea.x
55− if (direction == Qt.RightToLeft) {
56− value += draggingArea.width - width
57− }
58− }
59− if (__opened) {
60− if (direction == Qt.LeftToRight) {
61− value += handleSize
62− } else {
63− value -= handleSize
64− }
65− } else if (dragging) {
66− if (direction == Qt.LeftToRight) {
67− value += hintDisplacement
68− } else {
69− value -= hintDisplacement
70− }
71− }
72−
73− return value
74− }
75− property var draggingArea: leftDraggingArea.enabled ? leftDraggingArea : rightDraggingArea
76−
77− property real __hintValue: closedValue + (direction == Qt.LeftToRight ? hintDisplacement : -hintDisplacement)
78−
79− function dragToValue(dragPosition) {
80− return dragPosition + closedValue
81− }
82−
83− property bool __opened: target.shown
84− enabled: target.available
85−
86− // Can be replaced with a fake implementation during tests
87− // property var __getCurrentTimeMs: function () { return new Date().getTime() }
88− property var __dateTime: new function() {
89− this.getCurrentTimeMs = function() {return new Date().getTime()}
90− }
91−
92− Component.onCompleted: target[boundProperty] = __opened ? openedValue : closedValue
93− onOpenedValueChanged: if (__opened && !dragging) target[boundProperty] = openedValue
94− onClosedValueChanged: if (!__opened && !dragging) target[boundProperty] = closedValue
95−
96− function __computeValue(dragPosition) {
97− return MathUtils.clamp(dragToValue(dragPosition), __hintValue, openedValue)
98− }
99−
100− function __open() {
101− hintingAnimation.stop()
102− target.show()
103− }
104−
105− function __close() {
106− hintingAnimation.stop()
107− target.hide()
108− }
109−
110− function __hint() {
111− target.showAnimation.stop()
112− target.hideAnimation.stop()
113− hintingAnimation.restart()
114− }
115−
116− function __settle() {
117− hintingAnimation.stop()
118− if (__opened) target.show()
119− else target.hide()
120− }
121−
122− function __startDragging() {
123− hintingAnimation.stop()
124− dragging = true
125− }
126−
127− function __endDragging(dragVelocity) {
128− dragging = false
129− if (revealer.direction == Qt.RightToLeft) {
130− dragVelocity = -dragVelocity
131− }
132− if (Math.abs(dragVelocity) >= dragVelocityThreshold) {
133− if (dragVelocity > 0) __open()
134− else __close()
135− } else {
136− __settle()
137− }
138− }
139−
140− Binding {
141− id: dragBinding
142−
143− target: revealer.target
144− property: revealer.boundProperty
145− value: __computeValue(dragPosition)
146− when: dragging
147− }
148−
149− SmoothedAnimation {
150− id: hintingAnimation
151−
152− target: revealer.target
153− property: revealer.boundProperty
154− duration: 150
155− to: revealer.__hintValue
156− }
157−
158− DraggingArea {
159− id: leftDraggingArea
160−
161− property bool isOpeningArea: revealer.direction == Qt.LeftToRight
162−
163− height: orientation == Qt.Vertical ? handleSize : parent.height
164− width: orientation == Qt.Horizontal ? handleSize : parent.width
165− orientation: revealer.orientation
166− enabled: isOpeningArea ? !revealer.__opened : revealer.__opened
167−
168− __dateTime: revealer.__dateTime
169−
170− onPressed: {
171− if (isOpeningArea) {
172− if (revealer.openOnPress) {
173− revealer.openPressed(mouseX, mouseY)
174− __hint()
175− }
176− } else {
177− revealer.closePressed()
178− }
179− }
180− onReleased: {
181− if (isOpeningArea && revealer.openOnPress) {
182− revealer.openReleased(mouseX, mouseY)
183− __settle()
184− }
185− }
186− onDragStart: __startDragging()
187− onDragEnd: __endDragging(dragVelocity)
188− onClicked: {
189− if (clickValidated) {
190− if (isOpeningArea) {
191− if (revealer.openOnPress) revealer.openClicked()
192− } else {
193− revealer.closeClicked()
194− }
195− }
196− }
197− }
198−
199− DraggingArea {
200− id: rightDraggingArea
201−
202− property bool isOpeningArea: revealer.direction == Qt.RightToLeft
203−
204− x: orientation == Qt.Vertical ? 0 : parent.width - width
205− y: orientation == Qt.Vertical ? parent.height - height : 0
206− height: orientation == Qt.Vertical ? handleSize : parent.height
207− width: orientation == Qt.Horizontal ? handleSize : parent.width
208− orientation: revealer.orientation
209− enabled: isOpeningArea ? !revealer.__opened : revealer.__opened
210−
211− __dateTime: revealer.__dateTime
212−
213− onPressed: {
214− if (isOpeningArea) {
215− if (revealer.openOnPress) {
216− revealer.openPressed(mouseX, mouseY)
217− __hint()
218− }
219− } else {
220− revealer.closePressed()
221− }
222− }
223− onReleased: {
224− if (isOpeningArea && revealer.openOnPress) {
225− revealer.openReleased(mouseX, mouseY)
226− __settle()
227− }
228− }
229− onDragStart: __startDragging()
230− onDragEnd: __endDragging(dragVelocity)
231− onClicked: {
232− if (clickValidated) {
233− if (isOpeningArea) {
234− if (revealer.openOnPress) revealer.openClicked()
235− } else {
236− revealer.closeClicked()
237− }
238− }
239− }
240− }
241−}
qml/Dash/Card.qmldeleted−236
@@ -1,236 +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−// For image://albumart and image://thumbnailer image providers
20−import Ubuntu.Thumbnailer 0.1
21−
22−AbstractButton {
23− id: root
24− property var template
25− property var components
26− property var cardData
27−
28− property real fontScale: 1.0
29− property int headerAlignment: Text.AlignLeft
30− readonly property int headerHeight: headerLoader.item ? headerLoader.item.height : 0
31− property int fixedHeaderHeight: -1
32− readonly property string title: cardData && cardData["title"] || ""
33−
34− property bool showHeader: true
35−
36− implicitWidth: childrenRect.width
37− implicitHeight: summary.y + summary.height + (summary.text && backgroundLoader.active ? units.gu(1) : 0)
38−
39− Loader {
40− id: backgroundLoader
41− objectName: "backgroundLoader"
42−
43− readonly property bool artAndSummary: components["art"]["field"] && components["summary"] || false
44− active: template["card-layout"] !== "horizontal" && (template["card-background"] || components["background"] || artAndSummary)
45− anchors.fill: parent
46−
47− sourceComponent: UbuntuShape {
48− objectName: "background"
49− radius: "medium"
50− color: getColor(0) || "white"
51− gradientColor: getColor(1) || color
52− anchors.fill: parent
53− image: backgroundImage.source ? backgroundImage : null
54−
55− property real luminance: 0.2126 * color.r + 0.7152 * color.g + 0.0722 * color.b
56−
57− property Image backgroundImage: Image {
58− objectName: "backgroundImage"
59− source: {
60− if (cardData && typeof cardData["background"] === "string") return cardData["background"]
61− else if (template && typeof template["card-background"] === "string") return template["card-background"]
62− else return ""
63− }
64− }
65−
66− function getColor(index) {
67− if (cardData && typeof cardData["background"] === "object"
68− && (cardData["background"]["type"] === "color" || cardData["background"]["type"] === "gradient")) {
69− return cardData["background"]["elements"][index];
70− } else if (template && typeof template["card-background"] === "object"
71− && (template["card-background"]["type"] === "color" || template["card-background"]["type"] === "gradient")) {
72− return template["card-background"]["elements"][index];
73− } else return undefined;
74− }
75− }
76− }
77−
78− UbuntuShape {
79− id: artShape
80− radius: "medium"
81− objectName: "artShape"
82− anchors.horizontalCenter: template && template["card-layout"] === "horizontal" ? undefined : parent.horizontalCenter
83− anchors.left: template && template["card-layout"] === "horizontal" ? parent.left : undefined
84− visible: cardData && cardData["art"] || false
85−
86− readonly property real aspect: components !== undefined ? components["art"]["aspect-ratio"] : 1
87− readonly property bool aspectSmallerThanImageAspect: aspect < image.aspect
88−
89− Component.onCompleted: updateWidthHeightBindings();
90− onAspectSmallerThanImageAspectChanged: updateWidthHeightBindings();
91−
92− function updateWidthHeightBindings() {
93− if (aspectSmallerThanImageAspect) {
94− width = Qt.binding(function() { return !visible ? 0 : image.width });
95− height = Qt.binding(function() { return !visible ? 0 : image.fillMode === Image.PreserveAspectCrop ? image.height : width / image.aspect });
96− } else {
97− width = Qt.binding(function() { return !visible ? 0 : image.fillMode === Image.PreserveAspectCrop ? image.width : height * image.aspect });
98− height = Qt.binding(function() { return !visible ? 0 : image.height });
99− }
100− }
101−
102− image: Image {
103− objectName: "artImage"
104− source: cardData && cardData["art"] || ""
105− cache: true
106− // FIXME uncomment when having investigated / fixed the crash
107− //sourceSize.width: width > height ? width : 0
108− //sourceSize.height: height > width ? height : 0
109− fillMode: components && components["art"]["fill-mode"] === "fit" ? Image.PreserveAspectFit: Image.PreserveAspectCrop
110−
111− readonly property real aspect: implicitWidth / implicitHeight
112− readonly property bool isHorizontal: template && template["card-layout"] === "horizontal"
113−
114− Component.onCompleted: updateWidthHeightBindings();
115− onIsHorizontalChanged: updateWidthHeightBindings();
116−
117− function updateWidthHeightBindings() {
118− if (isHorizontal) {
119− width = Qt.binding(function() { return height * artShape.aspect });
120− height = Qt.binding(function() { return root.headerHeight });
121− } else {
122− width = Qt.binding(function() { return root.width });
123− height = Qt.binding(function() { return width / artShape.aspect });
124− }
125− }
126− }
127− }
128−
129− Loader {
130− id: overlayLoader
131− anchors {
132− left: artShape.left
133− right: artShape.right
134− bottom: artShape.bottom
135− }
136− active: template && template["overlay"] && artShape.visible && artShape.image.status === Image.Ready || false
137−
138− sourceComponent: ShaderEffect {
139− id: overlay
140−
141− height: headerLoader.item ? headerLoader.item.height : 0
142− opacity: headerLoader.item ? headerLoader.item.opacity * 0.6 : 0
143−
144− property var source: ShaderEffectSource {
145− id: shaderSource
146− sourceItem: artShape
147− onVisibleChanged: if (visible) scheduleUpdate()
148− live: false
149− sourceRect: Qt.rect(0, artShape.height - overlay.height, artShape.width, overlay.height)
150− }
151−
152− vertexShader: "
153− uniform highp mat4 qt_Matrix;
154− attribute highp vec4 qt_Vertex;
155− attribute highp vec2 qt_MultiTexCoord0;
156− varying highp vec2 coord;
157− void main() {
158− coord = qt_MultiTexCoord0;
159− gl_Position = qt_Matrix * qt_Vertex;
160− }"
161−
162− fragmentShader: "
163− varying highp vec2 coord;
164− uniform sampler2D source;
165− uniform lowp float qt_Opacity;
166− void main() {
167− lowp vec4 tex = texture2D(source, coord);
168− gl_FragColor = vec4(0, 0, 0, tex.a) * qt_Opacity;
169− }"
170− }
171− }
172−
173− Loader {
174− id: headerLoader
175− objectName: "cardHeaderLoader"
176−
177− anchors {
178− top: {
179− if (template) {
180− if (template["overlay"]) return overlayLoader.top;
181− if (template["card-layout"] === "horizontal") return artShape.top;
182− }
183− return artShape.bottom;
184− }
185− left: {
186− if (template) {
187− if (!template["overlay"] && template["card-layout"] === "horizontal") return artShape.right;
188− }
189− return parent.left;
190− }
191− right: parent.right
192− }
193− active: cardData && cardData["title"] || cardData && cardData["mascot"] || false
194−
195− sourceComponent: CardHeader {
196− id: header
197− objectName: "cardHeader"
198−
199− mascot: cardData && cardData["mascot"] || ""
200− title: root.title
201− subtitle: cardData && cardData["subtitle"] || ""
202−
203− titleWeight: components && components["subtitle"] ? Font.DemiBold : Font.Normal
204−
205− opacity: showHeader ? 1 : 0
206− inOverlay: root.template && root.template["overlay"] === true
207− fontColor: inOverlay ? "white" : summary.color
208− useMascotShape: !backgroundLoader.active && !inOverlay
209− headerAlignment: root.headerAlignment
210− height: root.fixedHeaderHeight != -1 ? root.fixedHeaderHeight : implicitHeight
211− fontScale: root.fontScale
212−
213− Behavior on opacity { NumberAnimation { duration: UbuntuAnimation.SnapDuration } }
214− }
215− }
216−
217− Label {
218− id: summary
219− objectName: "summaryLabel"
220− anchors {
221− top: headerLoader.active ? headerLoader.bottom : artShape.bottom
222− left: parent.left
223− right: parent.right
224− margins: backgroundLoader.active ? units.gu(1) : 0
225− topMargin: 0
226− }
227− wrapMode: Text.Wrap
228− maximumLineCount: 5
229− elide: Text.ElideRight
230− text: cardData && cardData["summary"] || ""
231− height: text ? implicitHeight : 0
232− fontSize: "small"
233− // TODO karni: Change "grey" to Ubuntu.Components.Palette color once updated.
234− color: backgroundLoader.active && backgroundLoader.item.luminance < 0.7 ? "white" : "grey"
235− }
236−}
qml/Dash/CardCarousel.qml+26−14
@@ -18,7 +18,6 @@ import QtQuick 2.0
18import Ubuntu.Components 0.1
18import Ubuntu.Components 0.1
19import "../Components"
19import "../Components"
20
20
21−
22DashRenderer {
21DashRenderer {
23 id: cardCarousel
22 id: cardCarousel
24
23
@@ -35,7 +34,7 @@ DashRenderer {
35 Carousel {
34 Carousel {
36 id: carousel
35 id: carousel
37 anchors.fill: parent
36 anchors.fill: parent
38− tileAspectRatio: cardCarousel.components && cardCarousel.components["art"]["aspect-ratio"] || 1.0
37+ tileAspectRatio: cardTool.components && cardTool.components["art"]["aspect-ratio"] || 1.0
39 // FIXME we need to "reverse" the carousel to make the selected item the size
38 // FIXME we need to "reverse" the carousel to make the selected item the size
40 // and push others back.
39 // and push others back.
41 minimumTileWidth: cardTool.cardWidth / selectedItemScaleFactor
40 minimumTileWidth: cardTool.cardWidth / selectedItemScaleFactor
@@ -43,27 +42,40 @@ DashRenderer {
43 cacheBuffer: 1404 // 18px * 13gu * 6
42 cacheBuffer: 1404 // 18px * 13gu * 6
44 model: cardCarousel.model
43 model: cardCarousel.model
45
44
46− onClicked: cardCarousel.clicked(index, itemY)
45+ onClicked: cardCarousel.clicked(index, null)
47− onPressAndHold: cardCarousel.pressAndHold(index, itemY)
46+ onPressAndHold: cardCarousel.pressAndHold(index)
48
47
49 property real fontScale: 1 / selectedItemScaleFactor
48 property real fontScale: 1 / selectedItemScaleFactor
50 property real headerHeight: cardTool.headerHeight / selectedItemScaleFactor
49 property real headerHeight: cardTool.headerHeight / selectedItemScaleFactor
51
50
52− itemComponent: Card {
51+ itemComponent: Loader {
53− id: card
52+ id: loader
54− objectName: "carouselDelegate" + index
55− fixedHeaderHeight: carousel.headerHeight
56− cardData: model
57− template: cardTool.template
58− components: cardTool.components
59
53
60 property bool explicitlyScaled
54 property bool explicitlyScaled
61 property var model
55 property var model
62−
63 enabled: false
56 enabled: false
64− showHeader: explicitlyScaled
65
57
66− fontScale: carousel.fontScale
58+ sourceComponent: cardTool.cardComponent
59+ onLoaded: {
60+ item.objectName = "carouselDelegate" + index;
61+ item.fixedHeaderHeight = Qt.binding(function() { return carousel.headerHeight; });
62+ item.height = Qt.binding(function() { return cardTool.cardHeight; });
63+ item.cardData = Qt.binding(function() { return model; });
64+ item.template = Qt.binding(function() { return cardTool.template; });
65+ item.components = Qt.binding(function() { return cardTool.components; });
66+ item.fontScale = Qt.binding(function() { return carousel.fontScale; });
67+ item.showHeader = Qt.binding(function() { return loader.explicitlyScaled; });
68+ item.artShapeBorderSource = "none";
69+ }
70+
71+ BorderImage {
72+ anchors {
73+ fill: parent
74+ margins: -units.gu(1)
75+ }
76+ z: -1
77+ source: "graphics/carousel_dropshadow.sci"
78+ }
67 }
79 }
68 }
80 }
69}
81}
qml/Dash/CardFilterGrid.qml+21−18
@@ -43,27 +43,30 @@ DashRenderer {
43 verticalSpacing: genericFilterGrid.verticalSpacing
43 verticalSpacing: genericFilterGrid.verticalSpacing
44 model: genericFilterGrid.model
44 model: genericFilterGrid.model
45 collapsedRowCount: Math.min(2, cardTool && cardTool.template && cardTool.template["collapsed-rows"] || 2)
45 collapsedRowCount: Math.min(2, cardTool && cardTool.template && cardTool.template["collapsed-rows"] || 2)
46− delegateCreationBegin: genericFilterGrid.delegateCreationBegin
46+ displayMarginBeginning: genericFilterGrid.displayMarginBeginning
47− delegateCreationEnd: genericFilterGrid.delegateCreationEnd
47+ displayMarginEnd: genericFilterGrid.displayMarginEnd
48− delegate: Loader {
48+ delegate: Item {
49− asynchronous: true
50 width: filterGrid.cellWidth
49 width: filterGrid.cellWidth
51 height: filterGrid.cellHeight
50 height: filterGrid.cellHeight
52− Card {
51+ Loader {
53− id: card
52+ id: loader
54− width: cardTool.cardWidth
53+ sourceComponent: cardTool.cardComponent
55− height: cardTool.cardHeight
56− fixedHeaderHeight: cardTool.headerHeight
57 anchors.horizontalCenter: parent.horizontalCenter
54 anchors.horizontalCenter: parent.horizontalCenter
55+ onLoaded: {
58− objectName: "delegate" + index
56+ item.objectName = "delegate" + index;
57+ item.width = Qt.binding(function() { return cardTool.cardWidth; });
58+ item.height = Qt.binding(function() { return cardTool.cardHeight; });
59+ item.fixedArtShapeSize = Qt.binding(function() { return cardTool.artShapeSize; });
59− cardData: model
60+ item.cardData = Qt.binding(function() { return model; });
60− template: cardTool.template
61+ item.template = Qt.binding(function() { return cardTool.template; });
61− components: cardTool.components
62+ item.components = Qt.binding(function() { return cardTool.components; });
62−
63− headerAlignment: cardTool.headerAlignment
63+ item.headerAlignment = Qt.binding(function() { return cardTool.headerAlignment; });
64−
64+ }
65+ Connections {
66+ target: loader.item
65− onClicked: genericFilterGrid.clicked(index, card.y)
67+ onClicked: genericFilterGrid.clicked(index, result)
66− onPressAndHold: genericFilterGrid.pressAndHold(index, card.y)
68+ onPressAndHold: genericFilterGrid.pressAndHold(index)
69+ }
67 }
70 }
68 }
71 }
69 }
72 }
qml/Dash/CardHeader.qmldeleted−126
@@ -1,126 +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: root
22− property url mascot: ""
23− property alias title: titleLabel.text
24− property var subtitle
25−
26− property alias titleWeight: titleLabel.font.weight
27− property alias titleSize: titleLabel.fontSize
28−
29− // FIXME: Saviq, used to scale fonts down in Carousel
30− property real fontScale: 1.0
31−
32− property alias headerAlignment: titleLabel.horizontalAlignment
33−
34− property bool inOverlay: false
35− property bool useMascotShape: true
36− property color fontColor: Theme.palette.selected.backgroundText
37−
38− visible: mascot != "" || title
39− implicitHeight: row.height > 0 ? row.height + row.margins * 2 : 0
40−
41− Row {
42− id: row
43− objectName: "outerRow"
44−
45− property real margins: units.gu(1)
46−
47− spacing: mascotShapeLoader.active || mascotImageLoader.active || inOverlay ? margins : 0
48− anchors {
49− top: parent.top; left: parent.left; right: parent.right
50− margins: margins
51− leftMargin: spacing
52− rightMargin: spacing
53− }
54−
55− Loader {
56− id: mascotShapeLoader
57− objectName: "mascotShapeLoader"
58−
59− active: useMascotShape && mascotImageLoader.item && mascotImageLoader.item.status === Image.Ready
60− visible: active
61− anchors.verticalCenter: parent.verticalCenter
62− // TODO karni: Icon aspect-ratio is 8:7.5. Revisit these values to avoid fraction of pixels.
63− width: units.gu(6)
64− height: units.gu(5.625)
65− readonly property int maxSize: Math.max(width, height) * 4
66−
67− sourceComponent: UbuntuShape {
68− image: mascotImageLoader.item
69− }
70− }
71−
72− Loader {
73− id: mascotImageLoader
74− active: root.mascot != ""
75− visible: active && !useMascotShape && item.status === Image.Ready
76− anchors.verticalCenter: parent.verticalCenter
77− sourceComponent: Image {
78− objectName: "mascotImage"
79−
80− source: root.mascot
81− width: source ? mascotShapeLoader.width : 0
82− height: mascotShapeLoader.height
83−
84− sourceSize { width: mascotShapeLoader.maxSize; height: mascotShapeLoader.maxSize }
85− fillMode: Image.PreserveAspectCrop
86− horizontalAlignment: Image.AlignHCenter
87− verticalAlignment: Image.AlignVCenter
88− }
89− }
90−
91− Column {
92− objectName: "column"
93− width: parent.width - x
94− spacing: units.dp(2)
95− anchors.verticalCenter: parent.verticalCenter
96−
97− Label {
98− id: titleLabel
99− objectName: "titleLabel"
100− anchors { left: parent.left; right: parent.right }
101− elide: Text.ElideRight
102− font.weight: Font.Normal
103− fontSize: "small"
104− wrapMode: Text.Wrap
105− maximumLineCount: 2
106− font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale)
107− color: fontColor
108− }
109−
110− Loader {
111− active: titleLabel.text && root.subtitle
112− anchors { left: parent.left; right: parent.right }
113− sourceComponent: Label {
114− id: subtitleLabel
115− objectName: "subtitleLabel"
116− elide: Text.ElideRight
117− fontSize: "small"
118− font.weight: Font.Light
119− font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale)
120− color: fontColor
121− text: root.subtitle
122− }
123− }
124− }
125− }
126−}
qml/Dash/CardTool.qml+30−22
@@ -15,6 +15,7 @@
15 */
15 */
16
16
17import QtQuick 2.0
17import QtQuick 2.0
18+import Dash 0.1
18
19
19/*!
20/*!
20 \brief Tool for introspecting Card properties.
21 \brief Tool for introspecting Card properties.
@@ -65,6 +66,8 @@ Item {
65 return layout;
66 return layout;
66 }
67 }
67
68
69+ property var cardComponent: CardCreatorCache.getCardComponent(cardTool.template, cardTool.components);
70+
68 // FIXME: Saviq
71 // FIXME: Saviq
69 // Only way for the card below to actually be laid out completely.
72 // Only way for the card below to actually be laid out completely.
70 // If invisible or in "data" array, some components are not taken into account.
73 // If invisible or in "data" array, some components are not taken into account.
@@ -108,7 +111,7 @@ Item {
108 if (template["card-size"] >= 12 && template["card-size"] <= 38) return units.gu(template["card-size"]);
111 if (template["card-size"] >= 12 && template["card-size"] <= 38) return units.gu(template["card-size"]);
109 return units.gu(18.5);
112 return units.gu(18.5);
110 case "grid":
113 case "grid":
111− return card.implicitHeight
114+ return cardLoader.item ? cardLoader.item.implicitHeight : 0
112 case "carousel":
115 case "carousel":
113 return cardWidth / (components ? components["art"]["aspect-ratio"] : 1)
116 return cardWidth / (components ? components["art"]["aspect-ratio"] : 1)
114 case undefined:
117 case undefined:
@@ -122,7 +125,8 @@ Item {
122 /*!
125 /*!
123 type:real \brief Height of the card's header.
126 type:real \brief Height of the card's header.
124 */
127 */
125− readonly property alias headerHeight: card.headerHeight
128+ readonly property int headerHeight: cardLoader.item ? cardLoader.item.headerHeight : 0
129+ readonly property size artShapeSize: cardLoader.item ? cardLoader.item.artShapeSize : 0
126
130
127 /*!
131 /*!
128 \brief Desired alignment of header components.
132 \brief Desired alignment of header components.
@@ -161,15 +165,8 @@ Item {
161 }
165 }
162 }
166 }
163
167
164− Card {
168+ Loader {
165− id: card
169+ id: cardLoader
166− objectName: "cardToolCard"
167− template: cardTool.template
168− components: cardTool.components
169−
170− width: cardTool.cardWidth || implicitWidth
171− height: cardTool.cardHeight || implicitHeight
172−
173 property var fields: ["art", "mascot", "title", "subtitle", "summary"]
170 property var fields: ["art", "mascot", "title", "subtitle", "summary"]
174 property var maxData: {
171 property var maxData: {
175 "art": Qt.resolvedUrl("graphics/checkers.png"),
172 "art": Qt.resolvedUrl("graphics/checkers.png"),
@@ -178,19 +175,30 @@ Item {
178 "subtitle": "—",
175 "subtitle": "—",
179 "summary": "—\n—\n—\n—\n—"
176 "summary": "—\n—\n—\n—\n—"
180 }
177 }
181−
178+ sourceComponent: cardTool.cardComponent
179+ onLoaded: {
180+ item.objectName = "cardToolCard";
181+ item.asynchronous = false;
182+ item.template = Qt.binding(function() { return cardTool.template; });
183+ item.components = Qt.binding(function() { return cardTool.components; });
184+ item.width = Qt.binding(function() { return cardTool.cardWidth || item.implicitWidth; });
185+ item.height = Qt.binding(function() { return cardTool.cardHeight || item.implicitHeight; });
186+ }
187+ Connections {
188+ target: cardLoader.item
182− onComponentsChanged: {
189+ onComponentsChanged: {
183− var data = {};
190+ var data = {};
184− for (var k in fields) {
191+ for (var k in cardLoader.fields) {
185− var component = components[fields[k]];
192+ var component = cardLoader.item.components[cardLoader.fields[k]];
186− var key = fields[k];
193+ var key = cardLoader.fields[k];
187− if ((typeof component === "string" && component.length > 0) ||
194+ if ((typeof component === "string" && component.length > 0) ||
188− (typeof component === "object" && component !== null
195+ (typeof component === "object" && component !== null
189− && typeof component["field"] === "string" && component["field"].length > 0)) {
196+ && typeof component["field"] === "string" && component["field"].length > 0)) {
190− data[key] = maxData[key];
197+ data[key] = cardLoader.maxData[key];
198+ }
191 }
199 }
200+ cardLoader.item.cardData = data;
192 }
201 }
193− cardData = data;
194 }
202 }
195 }
203 }
196}
204}
qml/Dash/DashContent.qml+1−1
@@ -138,7 +138,7 @@ Item {
138
138
139 readonly property bool moving: item ? item.moving : false
139 readonly property bool moving: item ? item.moving : false
140 readonly property var categoryView: item ? item.categoryView : null
140 readonly property var categoryView: item ? item.categoryView : null
141− readonly property Scope theScope: scope
141+ readonly property var theScope: scope
142
142
143 // these are needed for autopilot tests
143 // these are needed for autopilot tests
144 readonly property string scopeId: scope.id
144 readonly property string scopeId: scope.id
qml/Dash/DashRenderer.qml+5−6
@@ -29,9 +29,9 @@ Item {
29
29
30 property int uncollapsedHeight: height
30 property int uncollapsedHeight: height
31
31
32− property var delegateCreationBegin: undefined
32+ property int displayMarginBeginning: 0
33
33
34− property var delegateCreationEnd: undefined
34+ property int displayMarginEnd: 0
35
35
36 property real originY: 0
36 property real originY: 0
37
37
@@ -50,13 +50,12 @@ Item {
50
50
51 /// Emitted when the user clicked on an item
51 /// Emitted when the user clicked on an item
52 /// @param index is the index of the clicked item
52 /// @param index is the index of the clicked item
53− /// @param itemY is y of the clicked delegate
53+ /// @param result result model of the cliked item, used for activation
54− signal clicked(int index, real itemY)
54+ signal clicked(int index, var result)
55
55
56 /// Emitted when the user pressed and held on an item
56 /// Emitted when the user pressed and held on an item
57 /// @param index is the index of the held item
57 /// @param index is the index of the held item
58− /// @param itemY is y of the held delegate
59− signal pressAndHold(int index, real itemY)
58+ signal pressAndHold(int index)
60
59
61 function setFilter(filter, animate) {
60 function setFilter(filter, animate) {
62 }
61 }
qml/Dash/GenericScopeView.qml+14−12
@@ -25,7 +25,7 @@ import "../Components/ListItems" as ListItems
25FocusScope {
25FocusScope {
26 id: scopeView
26 id: scopeView
27
27
28− property Scope scope: null
28+ property var scope: null
29 property SortFilterProxyModel categories: categoryFilter
29 property SortFilterProxyModel categories: categoryFilter
30 property bool isCurrent: false
30 property bool isCurrent: false
31 property alias moving: categoryView.moving
31 property alias moving: categoryView.moving
@@ -128,7 +128,7 @@ FocusScope {
128
128
129 CardTool {
129 CardTool {
130 id: cardTool
130 id: cardTool
131−
131+ objectName: "cardTool"
132 count: results.count
132 count: results.count
133 template: model.renderer
133 template: model.renderer
134 components: model.components
134 components: model.components
@@ -141,6 +141,7 @@ FocusScope {
141 top: parent.top
141 top: parent.top
142 left: parent.left
142 left: parent.left
143 right: parent.right
143 right: parent.right
144+ topMargin: hasSectionHeader ? 0 : units.gu(2)
144 }
145 }
145
146
146 source: {
147 source: {
@@ -183,12 +184,11 @@ FocusScope {
183 Connections {
184 Connections {
184 target: rendererLoader.item
185 target: rendererLoader.item
185 onClicked: {
186 onClicked: {
186− if (scopeView.scope.id === "scopes" || (scopeView.scope.id == "clickscope" && categoryId == "local")) {
187+ if (scopeView.scope.id === "scopes" || (scopeView.scope.id == "clickscope" && (categoryId == "local" || categoryId == "store"))) {
187 // TODO Technically it is possible that calling activate() will make the scope emit
188 // TODO Technically it is possible that calling activate() will make the scope emit
188 // previewRequested so that we show a preview but there's no scope that does that yet
189 // previewRequested so that we show a preview but there's no scope that does that yet
189 // so it's not implemented
190 // so it's not implemented
190− var item = target.model.get(index);
191− scopeView.scope.activate(item.result)
191+ scopeView.scope.activate(result)
192 } else {
192 } else {
193 previewListView.model = target.model;
193 previewListView.model = target.model;
194 previewListView.currentIndex = -1
194 previewListView.currentIndex = -1
@@ -244,18 +244,20 @@ FocusScope {
244 }
244 }
245 }
245 }
246
246
247− if (item && item.hasOwnProperty("delegateCreationBegin")) {
247+ if (item && item.hasOwnProperty("displayMarginBeginning")) {
248+ // TODO do we need item.originY here, test 1300302 once we have a silo
249+ // and we can run it on the phone
248 if (baseItem.y + baseItem.height <= 0) {
250 if (baseItem.y + baseItem.height <= 0) {
249 // Not visible (item at top of the list viewport)
251 // Not visible (item at top of the list viewport)
250− item.delegateCreationBegin = item.originY + baseItem.height
252+ item.displayMarginBeginning = -baseItem.height;
251− item.delegateCreationEnd = item.originY + baseItem.height
253+ item.displayMarginEnd = 0;
252 } else if (baseItem.y >= categoryView.height) {
254 } else if (baseItem.y >= categoryView.height) {
253 // Not visible (item at bottom of the list viewport)
255 // Not visible (item at bottom of the list viewport)
254− item.delegateCreationBegin = item.originY
256+ item.displayMarginBeginning = 0;
255− item.delegateCreationEnd = item.originY
257+ item.displayMarginEnd = -baseItem.height;
256 } else {
258 } else {
257− item.delegateCreationBegin = item.originY + Math.max(-baseItem.y, 0)
259+ item.displayMarginBeginning = -Math.max(-baseItem.y, 0);
258− item.delegateCreationEnd = item.originY + Math.min(categoryView.height + item.delegateCreationBegin, baseItem.height)
260+ item.displayMarginEnd = -Math.max(baseItem.height - categoryView.height + baseItem.y, 0)
259 }
261 }
260 }
262 }
261 }
263 }
qml/Dash/PreviewListView.qml+3−3
@@ -23,7 +23,7 @@ import "Previews" as Previews
23Item {
23Item {
24 id: root
24 id: root
25
25
26− property Scope scope: null
26+ property var scope: null
27 property var pageHeader: null
27 property var pageHeader: null
28
28
29 property alias open: previewListView.open
29 property alias open: previewListView.open
@@ -49,7 +49,7 @@ Item {
49 right: parent.right
49 right: parent.right
50 verticalCenter: parent.verticalCenter
50 verticalCenter: parent.verticalCenter
51 }
51 }
52− text: scope ? i18n.tr("%1 Preview").arg(scope.name) : ""
52+ text: scope ? scope.name : ""
53 // TODO Saviq: These should come from updated Ubuntu Palette.
53 // TODO Saviq: These should come from updated Ubuntu Palette.
54 color: "#888888"
54 color: "#888888"
55 font.family: "Ubuntu"
55 font.family: "Ubuntu"
@@ -116,7 +116,7 @@ Item {
116
116
117 previewModel: {
117 previewModel: {
118 var previewStack = root.scope.preview(result);
118 var previewStack = root.scope.preview(result);
119− return previewStack.get(0);
119+ return previewStack.getPreviewModel(0);
120 }
120 }
121 }
121 }
122
122
qml/Dash/Previews/PreviewHeader.qml+89−9
@@ -15,9 +15,10 @@
15 */
15 */
16
16
17import QtQuick 2.0
17import QtQuick 2.0
18+import Ubuntu.Components 0.1
18import "../"
19import "../"
19
20
20−/*! This preview widget shows a header that is the same as the card header
21+/*! This preview widget shows a header
21 * The title comes in widgetData["title"]
22 * The title comes in widgetData["title"]
22 * The mascot comes in widgetData["mascot"]
23 * The mascot comes in widgetData["mascot"]
23 * The subtitle comes in widgetData["subtitle"]
24 * The subtitle comes in widgetData["subtitle"]
@@ -28,15 +29,94 @@ PreviewWidget {
28
29
29 height: childrenRect.height
30 height: childrenRect.height
30
31
31− CardHeader {
32+ Item {
33+ id: headerRoot
32− objectName: "cardHeader"
34+ objectName: "innerPreviewHeader"
33− mascot: root.widgetData["mascot"] || ""
35+ readonly property url mascot: root.widgetData["mascot"] || ""
34− title: root.widgetData["title"] || ""
36+ readonly property string title: root.widgetData["title"] || ""
35− subtitle: root.widgetData["subtitle"] || ""
37+ readonly property string subtitle: root.widgetData["subtitle"] || ""
38+ readonly property color fontColor: "grey"
39+
40+ implicitHeight: row.height + row.margins * 2
36 width: parent.width
41 width: parent.width
37
42
38− titleSize: "large"
43+ Row {
39− // TODO Change "grey" to Ubuntu.Components.Palette color once updated.
44+ id: row
45+ objectName: "outerRow"
46+
47+ property real margins: units.gu(1)
48+
49+ spacing: mascotShapeLoader.active ? margins : 0
50+ anchors {
51+ top: parent.top; left: parent.left; right: parent.right
52+ margins: margins
53+ leftMargin: spacing
54+ rightMargin: spacing
55+ }
56+
57+ Loader {
58+ id: mascotShapeLoader
59+ objectName: "mascotShapeLoader"
60+ active: headerRoot.mascot != ""
61+ visible: active
62+
63+ anchors.verticalCenter: parent.verticalCenter
64+ // TODO karni: Icon aspect-ratio is 8:7.5. Revisit these values to avoid fraction of pixels.
65+ width: units.gu(6)
66+ height: units.gu(5.625)
67+ readonly property int maxSize: Math.max(width, height) * 4
68+ asynchronous: true
69+
70+ sourceComponent: UbuntuShape {
71+ objectName: "mascotShape"
72+ visible: image.status === Image.Ready
73+ image: Image {
74+ source: headerRoot.mascot
75+ width: source ? mascotShapeLoader.width : 0
76+ height: mascotShapeLoader.height
77+
78+ sourceSize { width: mascotShapeLoader.maxSize; height: mascotShapeLoader.maxSize }
79+ fillMode: Image.PreserveAspectCrop
80+ horizontalAlignment: Image.AlignHCenter
81+ verticalAlignment: Image.AlignVCenter
82+ }
83+ }
84+ }
85+
86+ Column {
87+ objectName: "column"
88+ width: parent.width - x
89+ spacing: units.dp(2)
90+ anchors.verticalCenter: parent.verticalCenter
91+
92+ Label {
93+ id: titleLabel
94+ objectName: "titleLabel"
95+ anchors { left: parent.left; right: parent.right }
96+ elide: Text.ElideRight
97+ font.weight: Font.Normal
98+ fontSize: "large"
99+ wrapMode: Text.Wrap
100+ maximumLineCount: 2
40− fontColor: "grey"
101+ color: headerRoot.fontColor
102+ text: headerRoot.title
103+ }
104+
105+ Loader {
106+ active: titleLabel.text && headerRoot.subtitle
107+ anchors { left: parent.left; right: parent.right }
108+ sourceComponent: Label {
109+ id: subtitleLabel
110+ objectName: "subtitleLabel"
111+ elide: Text.ElideRight
112+ fontSize: "small"
113+ font.weight: Font.Light
114+ color: headerRoot.fontColor
115+ text: headerRoot.subtitle
116+ }
117+ }
118+ }
119+ }
41 }
120 }
121+
42}
122}
qml/Dash/Previews/PreviewTextSummary.qml+4−2
@@ -37,6 +37,7 @@ PreviewWidget {
37 left: parent.left
37 left: parent.left
38 right: parent.right
38 right: parent.right
39 }
39 }
40+ height: visible ? implicitHeight : 0
40 fontSize: "large"
41 fontSize: "large"
41 // TODO karni: Yet another fix requiring Palette update.
42 // TODO karni: Yet another fix requiring Palette update.
42 color: "grey" //Theme.palette.selected.backgroundText
43 color: "grey" //Theme.palette.selected.backgroundText
@@ -68,7 +69,7 @@ PreviewWidget {
68 wrapMode: Text.Wrap
69 wrapMode: Text.Wrap
69
70
70 Behavior on height {
71 Behavior on height {
71− UbuntuNumberAnimation {}
72+ UbuntuNumberAnimation { duration: UbuntuAnimation.SnapDuration }
72 }
73 }
73 }
74 }
74
75
@@ -79,8 +80,9 @@ PreviewWidget {
79 left: parent.left
80 left: parent.left
80 right: parent.right
81 right: parent.right
81 top: textLabel.bottom
82 top: textLabel.bottom
82− topMargin: units.gu(1)
83+ topMargin: visible ? units.gu(1) : 0
83 }
84 }
85+ height: visible ? implicitHeight : 0
84 visible: textLabel.lineCount > textLabel.maximumCollapsedLineCount
86 visible: textLabel.lineCount > textLabel.maximumCollapsedLineCount
85 }
87 }
86}
88}
qml/Dash/ScopeListView.qml+1−1
@@ -15,7 +15,7 @@
15 */
15 */
16
16
17import QtQuick 2.0
17import QtQuick 2.0
18−import DashViews 0.1
18+import Dash 0.1
19
19
20ListViewWithPageHeader {
20ListViewWithPageHeader {
21 maximumFlickVelocity: height * 10
21 maximumFlickVelocity: height * 10
qml/Dash/graphics/carousel_dropshadow@27.pngnew file

Binary file not shown.

qml/Dash/graphics/carousel_dropshadow@27.scinew file+5
@@ -0,0 +1,5 @@
1+border.left: 108
2+border.top: 108
3+border.bottom: 108
4+border.right: 108
5+source: carousel_dropshadow@27.png
qml/Greeter/LoginList.qml+1
@@ -193,6 +193,7 @@ Item {
193 }
193 }
194
194
195 onAccepted: {
195 onAccepted: {
196+ if (text == "") return; // Might be useful anyway, but mainly workaround for LP 1324159
196 if (!enabled)
197 if (!enabled)
197 return;
198 return;
198 root.focus = true; // so that it can handle Escape presses for us
199 root.focus = true; // so that it can handle Escape presses for us
qml/Notifications/NotificationMenuItemFactory.qml−1
@@ -20,7 +20,6 @@
20import QtQuick 2.0
20import QtQuick 2.0
21import Ubuntu.Components 0.1
21import Ubuntu.Components 0.1
22import "../Components"
22import "../Components"
23−import "../Greeter"
24
23
25Loader {
24Loader {
26 id: menuFactory
25 id: menuFactory
qml/ScopeTool.qml+1−1
@@ -74,7 +74,7 @@ Rectangle {
74
74
75 model: filteredScopes
75 model: filteredScopes
76 searchHistory: SearchHistoryModel { }
76 searchHistory: SearchHistoryModel { }
77− property Scope scope: scopes.get(currentIndex)
77+ property var scope: scopes.getScope(currentIndex)
78
78
79 anchors {
79 anchors {
80 top: parent.top
80 top: parent.top
qml/Shell.qml+9−59
@@ -28,9 +28,7 @@ import "Dash"
28import "Greeter"
28import "Greeter"
29import "Launcher"
29import "Launcher"
30import "Panel"
30import "Panel"
31−import "Hud"
32import "Components"
31import "Components"
33−import "Bottombar"
34import "Notifications"
32import "Notifications"
35import Unity.Notifications 1.0 as NotificationBackend
33import Unity.Notifications 1.0 as NotificationBackend
36
34
@@ -119,15 +117,6 @@ FocusScope {
119 // through the translucent parts of the shell surface.
117 // through the translucent parts of the shell surface.
120 visible: !fullyCovered && !applicationSurfaceShouldBeSeen
118 visible: !fullyCovered && !applicationSurfaceShouldBeSeen
121
119
122− CrossFadeImage {
123− id: backgroundImage
124− objectName: "backgroundImage"
125−
126− anchors.fill: parent
127− source: shell.background
128− fillMode: Image.PreserveAspectCrop
129− }
130−
131 Rectangle {
120 Rectangle {
132 anchors.fill: parent
121 anchors.fill: parent
133 color: "black"
122 color: "black"
@@ -308,7 +297,7 @@ FocusScope {
308
297
309 readonly property int backgroundTopMargin: -panel.panelHeight
298 readonly property int backgroundTopMargin: -panel.panelHeight
310
299
311− hides: [launcher, panel.indicators, hud]
300+ hides: [launcher, panel.indicators]
312 shown: false
301 shown: false
313 enabled: true
302 enabled: true
314 showAnimation: StandardAnimation { property: "opacity"; to: 1 }
303 showAnimation: StandardAnimation { property: "opacity"; to: 1 }
@@ -321,7 +310,8 @@ FocusScope {
321 topMargin: panel.panelHeight
310 topMargin: panel.panelHeight
322 }
311 }
323 background: shell.background
312 background: shell.background
324− pinLength: 4
313+ minPinLength: 4
314+ maxPinLength: 4
325
315
326 onEntered: LightDM.Greeter.respond(passphrase);
316 onEntered: LightDM.Greeter.respond(passphrase);
327 onCancel: greeter.show()
317 onCancel: greeter.show()
@@ -375,7 +365,10 @@ FocusScope {
375 width: parent.width
365 width: parent.width
376 height: parent.height - panel.panelHeight
366 height: parent.height - panel.panelHeight
377
367
378− Behavior on x {SmoothedAnimation{velocity: 600}}
368+ Behavior on x {
369+ enabled: !launcher.dashSwipe
370+ StandardAnimation {}
371+ }
379
372
380 readonly property real showProgress: MathUtils.clamp((1 - x/width) + greeter.showProgress - 1, 0, 1)
373 readonly property real showProgress: MathUtils.clamp((1 - x/width) + greeter.showProgress - 1, 0, 1)
381
374
@@ -384,7 +377,7 @@ FocusScope {
384 objectName: "greeter"
377 objectName: "greeter"
385
378
386 available: true
379 available: true
387− hides: [launcher, panel.indicators, hud]
380+ hides: [launcher, panel.indicators]
388 shown: true
381 shown: true
389
382
390 defaultBackground: shell.background
383 defaultBackground: shell.background
@@ -427,7 +420,7 @@ FocusScope {
427 InputFilterArea {
420 InputFilterArea {
428 anchors.fill: parent
421 anchors.fill: parent
429 blockInput: ApplicationManager.focusedApplicationId.length === 0 || greeter.shown || lockscreen.shown || launcher.shown
422 blockInput: ApplicationManager.focusedApplicationId.length === 0 || greeter.shown || lockscreen.shown || launcher.shown
430− || panel.indicators.shown || hud.shown
423+ || panel.indicators.shown
431 }
424 }
432
425
433 Connections {
426 Connections {
@@ -492,47 +485,6 @@ FocusScope {
492 }
485 }
493 }
486 }
494
487
495− Hud {
496− id: hud
497−
498− width: parent.width > units.gu(60) ? units.gu(40) : parent.width
499− height: parent.height
500−
501− available: !greeter.shown && !panel.indicators.shown && !lockscreen.shown && edgeDemo.dashEnabled
502− shown: false
503− showAnimation: StandardAnimation { property: "y"; duration: hud.showableAnimationDuration; to: 0; easing.type: Easing.Linear }
504− hideAnimation: StandardAnimation { property: "y"; duration: hud.showableAnimationDuration; to: hudRevealer.closedValue; easing.type: Easing.Linear }
505−
506− Connections {
507− target: ApplicationManager
508− onFocusedApplicationIdChanged: hud.hide()
509− }
510− }
511−
512− Revealer {
513− id: hudRevealer
514−
515− enabled: hud.shown
516− width: hud.width
517− anchors.left: hud.left
518− height: parent.height
519− target: hud.revealerTarget
520− closedValue: height
521− openedValue: 0
522− direction: Qt.RightToLeft
523− orientation: Qt.Vertical
524− handleSize: hud.handleHeight
525− onCloseClicked: target.hide()
526− }
527−
528− Bottombar {
529− id: bottombar
530− theHud: hud
531− anchors.fill: parent
532− enabled: hud.available
533− applicationIsOnForeground: ApplicationManager.focusedApplicationId
534− }
535−
536 InputFilterArea {
488 InputFilterArea {
537 blockInput: launcher.shown
489 blockInput: launcher.shown
538 anchors {
490 anchors {
@@ -580,8 +532,6 @@ FocusScope {
580 onShownChanged: {
532 onShownChanged: {
581 if (shown) {
533 if (shown) {
582 panel.indicators.hide()
534 panel.indicators.hide()
583− hud.hide()
584− bottombar.hide()
585 }
535 }
586 }
536 }
587 }
537 }
tests/mocks/Unity/iconutils.h → qml/Stages/Dot.qmlrenamed+9−13
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2014 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
@@ -12,18 +12,14 @@
12 *
12 *
13 * You should have received a copy of the GNU General Public License
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Michal Hruby <michal.hruby@canonical.com>
18 */
15 */
19
16
20−#ifndef ICONUTILS_H
17+import QtQuick 2.0
21−#define ICONUTILS_H
18+import Ubuntu.Components 0.1
22−
23−#include <QString>
24−#include <QVariant>
25−
26−QString gIconToDeclarativeImageProviderString(QString const &giconString);
27−QString uriToThumbnailerProviderString(QString const &uri, QString const &mimetype, QVariantHash const &metadata);
28
19
29−#endif
20+Rectangle {
21+ radius: width
22+ width: units.dp(6)
23+ height: width
24+ color: UbuntuColors.orange
25+}
qml/Stages/PhoneStage.qml+5−2
@@ -214,7 +214,7 @@ Item {
214 Rectangle {
214 Rectangle {
215 id: appSplash2
215 id: appSplash2
216 anchors.fill: parent
216 anchors.fill: parent
217− color: "white"
217+ color: "black"
218 visible: priv.secondApplicationStarting
218 visible: priv.secondApplicationStarting
219 }
219 }
220 Image {
220 Image {
@@ -228,8 +228,11 @@ Item {
228 Rectangle {
228 Rectangle {
229 id: appSplash
229 id: appSplash
230 anchors.fill: parent
230 anchors.fill: parent
231− color: "white"
231+ color: "black"
232 visible: priv.applicationStarting
232 visible: priv.applicationStarting
233+
234+ WaitingDots {
235+ }
233 }
236 }
234 Image {
237 Image {
235 id: mainScreenshotImage
238 id: mainScreenshotImage
qml/Stages/StageWithSideStage.qml+8−2
@@ -282,7 +282,10 @@ Item {
282 id: mainStageSplash
282 id: mainStageSplash
283 anchors.fill: root
283 anchors.fill: root
284 anchors.rightMargin: root.width - sideStageImage.x
284 anchors.rightMargin: root.width - sideStageImage.x
285− color: "white"
285+ color: "black"
286+
287+ WaitingDots {
288+ }
286 }
289 }
287
290
288 SidestageHandle {
291 SidestageHandle {
@@ -402,6 +405,9 @@ Item {
402 id: sideStageSplash
405 id: sideStageSplash
403 anchors.fill: parent
406 anchors.fill: parent
404 anchors.leftMargin: sideStageImage.x
407 anchors.leftMargin: sideStageImage.x
405− color: "white"
408+ color: "black"
409+
410+ WaitingDots {
411+ }
406 }
412 }
407}
413}
qml/Stages/WaitingDots.qmlnew file+76
@@ -0,0 +1,76 @@
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.2
18+import Ubuntu.Components 0.1
19+
20+Item {
21+ id: waitingDots
22+
23+ // center in parent; waitingDots has no size therefore anchors.centerIn cannot be used
24+ x: parent.width / 2
25+ y: parent.height / 2
26+
27+ property var dots: [dot1, dot2, dot3]
28+ property var vertices: [[-units.gu(1), -units.gu(1)],
29+ [units.gu(1), -units.gu(1)],
30+ [0, units.gu(1)]]
31+ property int shift: 0
32+
33+ function cycle () {
34+ var n = vertices.length;
35+ shift = (shift + 1) % n;
36+
37+ for (var i = 0; i < n; i++) {
38+ dots[i].x = vertices[(i+shift) % n][0];
39+ dots[i].y = vertices[(i+shift) % n][1];
40+ }
41+ }
42+
43+ Timer {
44+ interval: 800
45+ running: waitingDots.visible
46+ repeat: true
47+ triggeredOnStart: true
48+ onTriggered: waitingDots.cycle()
49+ }
50+
51+
52+ Dot {
53+ id: dot1
54+ x: vertices[0][0]
55+ y: vertices[0][1]
56+ Behavior on x {XAnimator {duration: UbuntuAnimation.BriskDuration; easing: UbuntuAnimation.StandardEasing}}
57+ Behavior on y {YAnimator {duration: UbuntuAnimation.BriskDuration; easing: UbuntuAnimation.StandardEasing}}
58+ }
59+
60+ Dot {
61+ id: dot2
62+ x: vertices[1][0]
63+ y: vertices[1][1]
64+ Behavior on x {XAnimator {duration: UbuntuAnimation.BriskDuration; easing: UbuntuAnimation.StandardEasing}}
65+ Behavior on y {YAnimator {duration: UbuntuAnimation.BriskDuration; easing: UbuntuAnimation.StandardEasing}}
66+
67+ }
68+
69+ Dot {
70+ id: dot3
71+ x: vertices[2][0]
72+ y: vertices[2][1]
73+ Behavior on x {XAnimator {duration: UbuntuAnimation.BriskDuration; easing: UbuntuAnimation.StandardEasing}}
74+ Behavior on y {YAnimator {duration: UbuntuAnimation.BriskDuration; easing: UbuntuAnimation.StandardEasing}}
75+ }
76+}
src/ApplicationArguments.h+4−8
@@ -28,14 +28,10 @@ class ApplicationArguments : public QObject
28{
28{
29 Q_OBJECT
29 Q_OBJECT
30public:
30public:
31− ApplicationArguments(const QStringList& args) {
31+ // Not exposed to the app as setSize isn't invokable
32− if (args.contains(QLatin1String("-windowgeometry")) && args.size() > args.indexOf(QLatin1String("-windowgeometry")) + 1) {
32+ void setSize(int width, int height) {
33− QStringList geometryArg = args.at(args.indexOf(QLatin1String("-windowgeometry")) + 1).split('x');
34− if (geometryArg.size() == 2) {
35− m_size.rwidth() = geometryArg.at(0).toInt();
33+ m_size.rwidth() = width;
36− m_size.rheight() = geometryArg.at(1).toInt();
34+ m_size.rheight() = height;
37− }
38− }
39 }
35 }
40
36
41 Q_INVOKABLE bool hasGeometry() const { return m_size.isValid(); }
37 Q_INVOKABLE bool hasGeometry() const { return m_size.isValid(); }
src/main.cpp+43−6
@@ -18,6 +18,7 @@
18 */
18 */
19
19
20// Qt
20// Qt
21+#include <QCommandLineParser>
21#include <QtQuick/QQuickView>
22#include <QtQuick/QQuickView>
22#include <QtGui/QGuiApplication>
23#include <QtGui/QGuiApplication>
23#include <QtQml/QQmlEngine>
24#include <QtQml/QQmlEngine>
@@ -43,6 +44,32 @@ int startShell(int argc, const char** argv, void* server)
43
44
44 QGuiApplication::setApplicationName("Unity 8");
45 QGuiApplication::setApplicationName("Unity 8");
45 QGuiApplication *application;
46 QGuiApplication *application;
47+
48+ QCommandLineParser parser;
49+ parser.setApplicationDescription("Description: Unity 8 Shell");
50+ parser.addHelpOption();
51+
52+ QCommandLineOption fullscreenOption("fullscreen",
53+ "Run in fullscreen");
54+ parser.addOption(fullscreenOption);
55+
56+ QCommandLineOption framelessOption("frameless",
57+ "Run without window borders");
58+ parser.addOption(framelessOption);
59+
60+ QCommandLineOption mousetouchOption("mousetouch",
61+ "Allow the mouse to provide touch input");
62+ parser.addOption(mousetouchOption);
63+
64+ QCommandLineOption windowGeometryOption(QStringList() << "windowgeometry",
65+ "Specify the window geometry as [<width>x<height>]", "windowgeometry", "1");
66+ parser.addOption(windowGeometryOption);
67+
68+ QCommandLineOption testabilityOption("testability",
69+ "DISCOURAGED: Please set QT_LOAD_TESTABILITY instead. \n \
70+Load the testability driver");
71+ parser.addOption(testabilityOption);
72+
46 if (isUbuntuMirServer) {
73 if (isUbuntuMirServer) {
47 QLibrary unityMir("unity-mir", 1);
74 QLibrary unityMir("unity-mir", 1);
48 unityMir.load();
75 unityMir.load();
@@ -59,6 +86,11 @@ int startShell(int argc, const char** argv, void* server)
59 application = new QGuiApplication(argc, (char**)argv);
86 application = new QGuiApplication(argc, (char**)argv);
60 }
87 }
61
88
89+ // Treat args with single dashes the same as arguments with two dashes
90+ // Ex: -fullscreen == --fullscreen
91+ parser.setSingleDashWordOptionMode(QCommandLineParser::ParseAsLongOptions);
92+ parser.process(*application);
93+
62 QString indicatorProfile = qgetenv("UNITY_INDICATOR_PROFILE");
94 QString indicatorProfile = qgetenv("UNITY_INDICATOR_PROFILE");
63 if (indicatorProfile.isEmpty()) {
95 if (indicatorProfile.isEmpty()) {
64 indicatorProfile = "phone";
96 indicatorProfile = "phone";
@@ -66,12 +98,17 @@ int startShell(int argc, const char** argv, void* server)
66
98
67 resolveIconTheme();
99 resolveIconTheme();
68
100
69− QStringList args = application->arguments();
101+ ApplicationArguments qmlArgs;
70− ApplicationArguments qmlArgs(args);
102+ if (parser.isSet(windowGeometryOption) &&
103+ parser.value(windowGeometryOption).split('x').size() == 2)
104+ {
105+ QStringList geom = parser.value(windowGeometryOption).split('x');
106+ qmlArgs.setSize(geom.at(0).toInt(), geom.at(1).toInt());
107+ }
71
108
72 // The testability driver is only loaded by QApplication but not by QGuiApplication.
109 // The testability driver is only loaded by QApplication but not by QGuiApplication.
73 // However, QApplication depends on QWidget which would add some unneeded overhead => Let's load the testability driver on our own.
110 // However, QApplication depends on QWidget which would add some unneeded overhead => Let's load the testability driver on our own.
74− if (args.contains(QLatin1String("-testability")) || getenv("QT_LOAD_TESTABILITY")) {
111+ if (parser.isSet(testabilityOption) || getenv("QT_LOAD_TESTABILITY")) {
75 QLibrary testLib(QLatin1String("qttestability"));
112 QLibrary testLib(QLatin1String("qttestability"));
76 if (testLib.load()) {
113 if (testLib.load()) {
77 typedef void (*TasInitialize)(void);
114 typedef void (*TasInitialize)(void);
@@ -94,14 +131,14 @@ int startShell(int argc, const char** argv, void* server)
94 view->engine()->setBaseUrl(QUrl::fromLocalFile(::qmlDirectory()));
131 view->engine()->setBaseUrl(QUrl::fromLocalFile(::qmlDirectory()));
95 view->rootContext()->setContextProperty("applicationArguments", &qmlArgs);
132 view->rootContext()->setContextProperty("applicationArguments", &qmlArgs);
96 view->rootContext()->setContextProperty("indicatorProfile", indicatorProfile);
133 view->rootContext()->setContextProperty("indicatorProfile", indicatorProfile);
97− if (args.contains(QLatin1String("-frameless"))) {
134+ if (parser.isSet(framelessOption)) {
98 view->setFlags(Qt::FramelessWindowHint);
135 view->setFlags(Qt::FramelessWindowHint);
99 }
136 }
100
137
101 // You will need this if you want to interact with touch-only components using a mouse
138 // You will need this if you want to interact with touch-only components using a mouse
102 // Needed only when manually testing on a desktop.
139 // Needed only when manually testing on a desktop.
103 MouseTouchAdaptor *mouseTouchAdaptor = 0;
140 MouseTouchAdaptor *mouseTouchAdaptor = 0;
104− if (args.contains(QLatin1String("-mousetouch"))) {
141+ if (parser.isSet(mousetouchOption)) {
105 mouseTouchAdaptor = new MouseTouchAdaptor;
142 mouseTouchAdaptor = new MouseTouchAdaptor;
106 application->installNativeEventFilter(mouseTouchAdaptor);
143 application->installNativeEventFilter(mouseTouchAdaptor);
107 }
144 }
@@ -125,7 +162,7 @@ int startShell(int argc, const char** argv, void* server)
125 view->setSource(source);
162 view->setSource(source);
126 view->setColor("transparent");
163 view->setColor("transparent");
127
164
128− if (qgetenv("QT_QPA_PLATFORM") == "ubuntu" || isUbuntuMirServer || args.contains(QLatin1String("-fullscreen"))) {
165+ if (qgetenv("QT_QPA_PLATFORM") == "ubuntu" || isUbuntuMirServer || parser.isSet(fullscreenOption)) {
129 view->showFullScreen();
166 view->showFullScreen();
130 } else {
167 } else {
131 view->show();
168 view->show();
tests/autopilot/unity8/process_helpers.py+11−4
@@ -17,12 +17,19 @@
17# along with this program. If not, see <http://www.gnu.org/licenses/>.
17# along with this program. If not, see <http://www.gnu.org/licenses/>.
18#
18#
19
19
20−from autopilot.introspection import (
21− get_proxy_object_for_existing_process,
22− ProcessSearchError,
23−)
24import logging
20import logging
25import subprocess
21import subprocess
22+import sys
23+
24+# This has to work in both python 3 (ap 1.5) and py2 (ap legacy 1.4.1) so we
25+# pick the correct location in each case. Remove the py2 branch once we no
26+# longer need to support python 2.
27+if sys.version >= '3':
28+ from autopilot.exceptions import ProcessSearchError
29+else:
30+ from autopilot.introspection import ProcessSearchError
31+from autopilot.introspection import get_proxy_object_for_existing_process
32+
26from unity8.shell import emulators
33from unity8.shell import emulators
27from unity8.shell.emulators import main_window as main_window_emulator
34from unity8.shell.emulators import main_window as main_window_emulator
28
35
tests/autopilot/unity8/shell/emulators/dash.py+3−4
@@ -161,7 +161,7 @@ class GenericScopeView(emulators.UnityEmulatorBase):
161
161
162 """
162 """
163 category_element = self._get_category_element(category)
163 category_element = self._get_category_element(category)
164− icon = category_element.select_single('Card', title=app_name)
164+ icon = category_element.select_single('AbstractButton', title=app_name)
165 # FIXME some categories need a long press in order to see the preview.
165 # FIXME some categories need a long press in order to see the preview.
166 # Some categories do not show previews, like recent apps.
166 # Some categories do not show previews, like recent apps.
167 # --elopio - 2014-1-14
167 # --elopio - 2014-1-14
@@ -191,7 +191,7 @@ class DashApps(GenericScopeView):
191
191
192 """
192 """
193 category_element = self._get_category_element(category)
193 category_element = self._get_category_element(category)
194− application_cards = category_element.select_many('Card')
194+ application_cards = category_element.select_many('AbstractButton')
195
195
196 # sort by y, x
196 # sort by y, x
197 application_cards = sorted(
197 application_cards = sorted(
@@ -201,8 +201,7 @@ class DashApps(GenericScopeView):
201 result = []
201 result = []
202 for card in application_cards:
202 for card in application_cards:
203 if card.objectName != 'cardToolCard':
203 if card.objectName != 'cardToolCard':
204− card_header = card.select_single('CardHeader')
205− result.append(card_header.title)
204+ result.append(card.title)
206 return result
205 return result
207
206
208
207
tests/autopilot/unity8/shell/emulators/main_window.py−4
@@ -114,10 +114,6 @@ class QQuickView(emulators.UnityEmulatorBase):
114 self.wait_select_single('Indicators', fullyOpened=True)
114 self.wait_select_single('Indicators', fullyOpened=True)
115 return self._get_indicator_page(indicator_name)
115 return self._get_indicator_page(indicator_name)
116
116
117− def get_shell_background(self):
118− return self.select_single(
119− "CrossFadeImage", objectName="backgroundImage")
120−
121 @autopilot_logging.log_action(logger.info)
117 @autopilot_logging.log_action(logger.info)
122 def show_dash_swiping(self):
118 def show_dash_swiping(self):
123 """Show the dash swiping from the left."""
119 """Show the dash swiping from the left."""
tests/mocks/AccountsService/CMakeLists.txt+1−12
@@ -7,15 +7,4 @@ add_library(MockAccountsService-qml MODULE
7
7
8qt5_use_modules(MockAccountsService-qml DBus Qml)
8qt5_use_modules(MockAccountsService-qml DBus Qml)
9
9
10−# copy files into build directory for shadow builds
11−file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
12− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
13− )
14−
15−install(TARGETS MockAccountsService-qml
10+add_unity8_mock(AccountsService 0.1 AccountsService TARGETS MockAccountsService-qml)
16− DESTINATION ${SHELL_INSTALL_QML}/mocks/AccountsService
17− )
18−
19−install(FILES qmldir
20− DESTINATION ${SHELL_INSTALL_QML}/mocks/AccountsService
21− )
tests/mocks/AccountsService/qmldir+1
@@ -1,2 +1,3 @@
1module AccountsService
1module AccountsService
2plugin MockAccountsService-qml
2plugin MockAccountsService-qml
3+typeinfo AccountsService.qmltypes
tests/mocks/CMakeLists.txt+30
@@ -1,3 +1,33 @@
1+include(QmlPlugins)
2+
3+# Set up and optionally install a mock plugin for unity8.
4+#
5+# add_unity8_mock(plugin version path
6+# [PREFIX string] # Install the plugin to the specified prefix under unity8 private plugin directory
7+# [...] # See export_qmlfiles and export_qmlplugin documentation for more options
8+# )
9+
10+macro(add_unity8_mock PLUGIN VERSION PATH)
11+ set(single PREFIX)
12+ cmake_parse_arguments(MOCK "" "${single}" "" ${ARGN})
13+
14+ if(MOCK_PREFIX)
15+ export_qmlfiles(${PLUGIN} ${PATH}
16+ DESTINATION ${SHELL_INSTALL_QML}/${MOCK_PREFIX}
17+ TARGET_PREFIX ${MOCK_PREFIX}-Mock
18+ ${MOCK_UNPARSED_ARGUMENTS}
19+ )
20+ export_qmlplugin(${PLUGIN} ${VERSION} ${PATH}
21+ DESTINATION ${SHELL_INSTALL_QML}/${MOCK_PREFIX}
22+ TARGET_PREFIX ${MOCK_PREFIX}-Mock
23+ ${MOCK_UNPARSED_ARGUMENTS}
24+ )
25+ else()
26+ export_qmlfiles(${PLUGIN} ${PATH} TARGET_PREFIX Mock ${MOCK_UNPARSED_ARGUMENTS})
27+ export_qmlplugin(${PLUGIN} ${VERSION} ${PATH} TARGET_PREFIX Mock ${MOCK_UNPARSED_ARGUMENTS})
28+ endif()
29+endmacro()
30+
1add_subdirectory(AccountsService)
31add_subdirectory(AccountsService)
2add_subdirectory(GSettings.1.0)
32add_subdirectory(GSettings.1.0)
3add_subdirectory(HudClient)
33add_subdirectory(HudClient)
tests/mocks/GSettings.1.0/CMakeLists.txt+1−4
@@ -17,7 +17,4 @@ target_link_libraries(FakeGSettingsQml
17
17
18qt5_use_modules(FakeGSettingsQml Qml)
18qt5_use_modules(FakeGSettingsQml Qml)
19
19
20−# copy qmldir file into build directory for shadow builds
20+add_unity8_mock(GSettings 1.0 GSettings.1.0 TARGETS FakeGSettingsQml)
21−file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
22− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
23− )
tests/mocks/GSettings.1.0/qmldir+1
@@ -1,2 +1,3 @@
1module GSettings
1module GSettings
2plugin FakeGSettingsQml
2plugin FakeGSettingsQml
3+typeinfo GSettings.qmltypes
tests/mocks/HudClient/CMakeLists.txt+1−4
@@ -35,7 +35,4 @@ target_link_libraries(FakeHudClientQml
35
35
36qt5_use_modules(FakeHudClientQml Qml)
36qt5_use_modules(FakeHudClientQml Qml)
37
37
38−# copy qmldir file into build directory for shadow builds
38+add_unity8_mock(HudClient 0.1 HudClient TARGETS FakeHudClientQml)
39−file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
40− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
41− )
tests/mocks/HudClient/qmldir+2
@@ -1 +1,3 @@
1+module HudClient
1plugin FakeHudClientQml
2plugin FakeHudClientQml
3+typeinfo HudClient.qmltypes
tests/mocks/LightDM/CMakeLists.txt+5−12
@@ -43,15 +43,8 @@ target_link_libraries(MockLightDM-qml
43
43
44qt5_use_modules(MockLightDM-qml DBus Gui Qml)
44qt5_use_modules(MockLightDM-qml DBus Gui Qml)
45
45
46−# copy qmldir file into build directory for shadow builds
46+add_unity8_mock(LightDM 0.1 LightDM
47−file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
47+ PREFIX mocks
48− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
49− )
50−
51−install(TARGETS MockLightDM-qml
48+ TARGETS MockLightDM-qml
52− DESTINATION ${SHELL_INSTALL_QML}/mocks/LightDM
49+ ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_CURRENT_BINARY_DIR}/full"
53− )
54−
55−install(FILES qmldir
56− DESTINATION ${SHELL_INSTALL_QML}/mocks/LightDM
57− )
50+)
tests/mocks/LightDM/qmldir+1
@@ -1,2 +1,3 @@
1module LightDM
1module LightDM
2plugin MockLightDM-qml
2plugin MockLightDM-qml
3+typeinfo LightDM.qmltypes
tests/mocks/Powerd/CMakeLists.txt+1−12
@@ -7,15 +7,4 @@ add_library(MockPowerd-qml MODULE
7
7
8qt5_use_modules(MockPowerd-qml Qml)
8qt5_use_modules(MockPowerd-qml Qml)
9
9
10−# copy qmldir file into build directory for shadow builds
11−file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
12− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
13− )
14−
15−install(TARGETS MockPowerd-qml
10+add_unity8_mock(Powerd 0.1 Powerd TARGETS MockPowerd-qml)
16− DESTINATION ${SHELL_INSTALL_QML}/mocks/Powerd
17− )
18−
19−install(FILES qmldir
20− DESTINATION ${SHELL_INSTALL_QML}/mocks/Powerd
21− )
tests/mocks/Powerd/qmldir+1
@@ -1,2 +1,3 @@
1module Powerd
1module Powerd
2plugin MockPowerd-qml
2plugin MockPowerd-qml
3+typeinfo Powerd.qmltypes
tests/mocks/QMenuModel/CMakeLists.txt+2−12
@@ -1,15 +1,3 @@
1−file(GLOB QMLFILES
2− *.qml
3− *.js
4− qmldir
5−)
6−
7−# copy files into build directory for shadow builds
8−add_custom_target(QMenuModelQmlFiles ALL
9− COMMAND cp ${QMLFILES} ${CMAKE_CURRENT_BINARY_DIR}
10− DEPENDS ${QMLFILES}
11−)
12−
13include_directories(
1include_directories(
14 ${Qt5Core_INCLUDE_DIRS}
2 ${Qt5Core_INCLUDE_DIRS}
15 ${Qt5Quick_INCLUDE_DIRS}
3 ${Qt5Quick_INCLUDE_DIRS}
@@ -32,3 +20,5 @@ qt5_use_modules(QMenuModelQml Core Quick)
32set_target_properties(QMenuModelQml PROPERTIES
20set_target_properties(QMenuModelQml PROPERTIES
33 OUTPUT_NAME qmenumodel
21 OUTPUT_NAME qmenumodel
34 VERSION 0)
22 VERSION 0)
23+
24+add_unity8_mock(QMenuModel 0.1 QMenuModel TARGETS QMenuModelQml)
tests/mocks/QMenuModel/qmldir+1
@@ -1,5 +1,6 @@
1module QMenuModel
1module QMenuModel
2plugin qmenumodel
2plugin qmenumodel
3+typeinfo QMenuModel.qmltypes
3
4
4QDBusActionGroup 0.1 QDBusActionGroup.qml
5QDBusActionGroup 0.1 QDBusActionGroup.qml
5UnityMenuAction 0.1 UnityMenuAction.qml
6UnityMenuAction 0.1 UnityMenuAction.qml
tests/mocks/QtMultimedia/CMakeLists.txt+1−12
@@ -5,15 +5,4 @@ add_library(QtMultimedia-qml MODULE
5
5
6qt5_use_modules(QtMultimedia-qml Qml)
6qt5_use_modules(QtMultimedia-qml Qml)
7
7
8−# copy qmldir file into build directory for shadow builds
9−file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
10− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
11− )
12−
13−install(TARGETS QtMultimedia-qml
8+add_unity8_mock(QtMultimedia 5.0 QtMultimedia TARGETS QtMultimedia-qml)
14− DESTINATION ${SHELL_INSTALL_QML}/mocks/QtMultimedia
15− )
16−
17−install(FILES qmldir
18− DESTINATION ${SHELL_INSTALL_QML}/mocks/QtMultimedia
19− )
tests/mocks/QtMultimedia/qmldir+1
@@ -1,2 +1,3 @@
1module QtMultimedia
1module QtMultimedia
2plugin QtMultimedia-qml
2plugin QtMultimedia-qml
3+typeinfo QtMultimedia.qmltypes
tests/mocks/Ubuntu/DownloadDaemonListener/CMakeLists.txt+1−9
@@ -7,12 +7,4 @@ add_library(FakeUbuntuDownloadDaemonListenerQml MODULE ${FakeUbuntuDownloadDaemo
7
7
8qt5_use_modules(FakeUbuntuDownloadDaemonListenerQml Core Quick)
8qt5_use_modules(FakeUbuntuDownloadDaemonListenerQml Core Quick)
9
9
10−# copy files into build directory for shadow builds
11−add_custom_target(UbuntuDownloadQmlDirFile ALL
12− COMMAND cp "${CMAKE_CURRENT_SOURCE_DIR}/qmldir" ${CMAKE_CURRENT_BINARY_DIR}
13− DEPENDS qmldir
14−)
15−
16−install(TARGETS FakeUbuntuDownloadDaemonListenerQml
10+add_unity8_mock(Ubuntu.DownloadDaemonListener 0.1 Ubuntu/DownloadDaemonListener TARGETS FakeUbuntuDownloadDaemonListenerQml)
17− DESTINATION ${SHELL_INSTALL_QML}/mocks/Ubuntu/DownloadDaemonListener
18− )
tests/mocks/Ubuntu/DownloadDaemonListener/qmldir+1
@@ -1,2 +1,3 @@
1module Ubuntu.DownloadDaemonListener
1module Ubuntu.DownloadDaemonListener
2plugin FakeUbuntuDownloadDaemonListenerQml
2plugin FakeUbuntuDownloadDaemonListenerQml
3+typeinfo DownloadDaemonListener.qmltypes
tests/mocks/Ubuntu/Thumbnailer/CMakeLists.txt+1−7
@@ -1,7 +1 @@
1−# copy files into build directory for shadow builds
1+add_unity8_mock(Ubuntu.Thumbnailer 0.1 Ubuntu/Thumbnailer)
2−add_custom_target(UbuntuThumbnailerQmlDirFile ALL
3− COMMAND cp "${CMAKE_CURRENT_SOURCE_DIR}/qmldir" ${CMAKE_CURRENT_BINARY_DIR}
4− DEPENDS qmldir
5−)
6−
7−install(FILES qmldir DESTINATION ${SHELL_INSTALL_QML}/mocks/Ubuntu/Thumbnailer)
tests/mocks/Ubuntu/Thumbnailer/qmldir+2
@@ -1,2 +1,4 @@
1module Ubuntu.Thumbnailer
1module Ubuntu.Thumbnailer
2+typeinfo Thumbnailer.qmltypes
3+
2Dummy 0.1 Dummy.qml
4Dummy 0.1 Dummy.qml
tests/mocks/Unity/Application/CMakeLists.txt+9−35
@@ -12,40 +12,14 @@ set(FakeUnityApplicationQml_SOURCES
12
12
13add_library(FakeUnityApplicationQml MODULE ${FakeUnityApplicationQml_SOURCES})
13add_library(FakeUnityApplicationQml MODULE ${FakeUnityApplicationQml_SOURCES})
14
14
15−qt5_use_modules(FakeUnityApplicationQml Core Quick)
15+add_library(NonMirUnityApplicationQml MODULE ${FakeUnityApplicationQml_SOURCES})
16−
16+set_target_properties(NonMirUnityApplicationQml PROPERTIES OUTPUT_NAME FakeUnityApplicationQml)
17−# copy files into build directory for shadow builds
18−add_custom_target(UnityAppQmlDirFile ALL
19− COMMAND cp "${CMAKE_CURRENT_SOURCE_DIR}/qmldir" ${CMAKE_CURRENT_BINARY_DIR}
20− DEPENDS qmldir
21−)
22−add_custom_target(InputFilterAreaQmlFile ALL
23− COMMAND cp "${CMAKE_CURRENT_SOURCE_DIR}/InputFilterArea.qml" ${CMAKE_CURRENT_BINARY_DIR}
24− DEPENDS InputFilterArea.qml
25−)
26−add_custom_target(OSKControllerQmlFile ALL
27− COMMAND cp "${CMAKE_CURRENT_SOURCE_DIR}/OSKController.qml" ${CMAKE_CURRENT_BINARY_DIR}
28− DEPENDS OSKController.qml
29−)
30
17
31−install(TARGETS FakeUnityApplicationQml
18+qt5_use_modules(FakeUnityApplicationQml Core Quick)
32− DESTINATION ${SHELL_INSTALL_QML}/mocks/Unity/Application
19+qt5_use_modules(NonMirUnityApplicationQml Core Quick)
33− )
34−
35−install(FILES qmldir InputFilterArea.qml OSKController.qml
36− DESTINATION ${SHELL_INSTALL_QML}/mocks/Unity/Application
37− )
38−
39−# Duplicate the mock to nonmirplugins
40−# In shadow builds we just link it, in real installs we also install it to the other path
41−add_custom_target(OSKControllerQmlFile2 ALL
42− COMMAND mkdir -p ${CMAKE_BINARY_DIR}/nonmirplugins/Unity && rm -f ${CMAKE_BINARY_DIR}/nonmirplugins/Unity/Application && ln -s ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_BINARY_DIR}/nonmirplugins/Unity
43− DEPENDS qmldir
44−)
45−install(TARGETS FakeUnityApplicationQml
46− DESTINATION ${SHELL_INSTALL_QML}/nonmirplugins/Unity/Application
47− )
48
20
49−install(FILES qmldir InputFilterArea.qml OSKController.qml
21+add_unity8_mock(Unity.Application 0.1 Unity/Application PREFIX mocks TARGETS FakeUnityApplicationQml)
50− DESTINATION ${SHELL_INSTALL_QML}/nonmirplugins/Unity/Application
22+add_unity8_mock(Unity.Application 0.1 Unity/Application
51− )
23+ PREFIX nonmirplugins
24+ TARGETS NonMirUnityApplicationQml
25+ BINARY_DIR ${CMAKE_BINARY_DIR}/nonmirplugins)
tests/mocks/Unity/Application/qmldir+2
@@ -1,4 +1,6 @@
1module Unity.Application
1module Unity.Application
2plugin FakeUnityApplicationQml
2plugin FakeUnityApplicationQml
3+typeinfo Application.qmltypes
4+
3InputFilterArea 0.1 InputFilterArea.qml
5InputFilterArea 0.1 InputFilterArea.qml
4OSKController 0.1 OSKController.qml
6OSKController 0.1 OSKController.qml
tests/mocks/Unity/CMakeLists.txt+9−13
@@ -6,6 +6,7 @@ add_subdirectory(Notifications)
6pkg_search_module(DEE dee-1.0 REQUIRED)
6pkg_search_module(DEE dee-1.0 REQUIRED)
7pkg_search_module(GOBJECT gobject-2.0 REQUIRED)
7pkg_search_module(GOBJECT gobject-2.0 REQUIRED)
8pkg_search_module(DEEQT libdee-qt5 REQUIRED)
8pkg_search_module(DEEQT libdee-qt5 REQUIRED)
9+pkg_check_modules(SCOPES_API REQUIRED unity-shell-scopes=1)
9
10
10include_directories(
11include_directories(
11 ${CMAKE_CURRENT_BINARY_DIR}
12 ${CMAKE_CURRENT_BINARY_DIR}
@@ -18,7 +19,6 @@ include_directories(
18add_definitions(-DQT_NO_KEYWORDS)
19add_definitions(-DQT_NO_KEYWORDS)
19
20
20set(UnityQML_SOURCES
21set(UnityQML_SOURCES
21− iconutils.cpp
22 fake_scope.cpp
22 fake_scope.cpp
23 fake_scopes.cpp
23 fake_scopes.cpp
24 fake_categories.cpp
24 fake_categories.cpp
@@ -27,6 +27,13 @@ set(UnityQML_SOURCES
27 fake_previewstack.cpp
27 fake_previewstack.cpp
28 fake_previewwidgetmodel.cpp
28 fake_previewwidgetmodel.cpp
29 fake_unity_plugin.cpp
29 fake_unity_plugin.cpp
30+ ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/CategoriesInterface.h
31+ ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/PreviewModelInterface.h
32+ ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/PreviewStackInterface.h
33+ ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/PreviewWidgetModelInterface.h
34+ ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/ResultsModelInterface.h
35+ ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/ScopeInterface.h
36+ ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/ScopesInterface.h
30)
37)
31
38
32add_library(FakeUnityQml MODULE ${UnityQML_SOURCES})
39add_library(FakeUnityQml MODULE ${UnityQML_SOURCES})
@@ -39,15 +46,4 @@ target_link_libraries(FakeUnityQml
39
46
40qt5_use_modules(FakeUnityQml Qml)
47qt5_use_modules(FakeUnityQml Qml)
41
48
42−# copy qmldir file into build directory for shadow builds
43−file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
44− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
45− )
46−
47−install(TARGETS FakeUnityQml
49+add_unity8_mock(Unity 0.2 Unity PREFIX scopefakes TARGETS FakeUnityQml)
48− DESTINATION ${SHELL_INSTALL_QML}/scopefakes/Unity
49− )
50−
51−install(FILES qmldir
52− DESTINATION ${SHELL_INSTALL_QML}/scopefakes/Unity
53− )
tests/mocks/Unity/Indicators/CMakeLists.txt+1−14
@@ -37,17 +37,4 @@ target_link_libraries(IndicatorsFakeQml)
37
37
38qt5_use_modules(IndicatorsFakeQml Core Qml Quick)
38qt5_use_modules(IndicatorsFakeQml Core Qml Quick)
39
39
40−file(GLOB IndicatorsFake_QMLFILES
40+add_unity8_mock(Unity.Indicators 0.1 Unity/Indicators TARGETS IndicatorsFakeQml)
41− *.qml
42− qml/FakeMenuPage.qml
43−)
44−
45−# copy qmldir file into build directory for shadow builds
46−file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
47− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
48−)
49−
50−# copy qmldir file into build directory for shadow builds
51−file(COPY ${IndicatorsFake_QMLFILES}
52− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
53−)
tests/mocks/Unity/Indicators/qml/FakeMenuPage.qml → tests/mocks/Unity/Indicators/FakeMenuPage.qmlrenamed

The content is the same.

tests/mocks/Unity/Indicators/qmldir+1
@@ -1,5 +1,6 @@
1module Unity.Indicators
1module Unity.Indicators
2plugin IndicatorsFakeQml
2plugin IndicatorsFakeQml
3+typeinfo Indicators.qmltypes
3
4
4CachedUnityMenuModel 0.1 CachedUnityMenuModel.qml
5CachedUnityMenuModel 0.1 CachedUnityMenuModel.qml
5IndicatorBase 0.1 IndicatorBase.qml
6IndicatorBase 0.1 IndicatorBase.qml
tests/mocks/Unity/Launcher/CMakeLists.txt+1−5
@@ -20,8 +20,4 @@ add_library(MockLauncherPlugin MODULE ${MockLauncherModel_SOURCES})
20
20
21qt5_use_modules(MockLauncherPlugin Core Quick)
21qt5_use_modules(MockLauncherPlugin Core Quick)
22
22
23−# copy files into build directory for shadow builds
23+add_unity8_mock(Unity.Launcher 0.1 Unity/Launcher TARGETS MockLauncherPlugin)
24−add_custom_target(LauncherPluginQmlDirFile ALL
25− COMMAND cp "${CMAKE_CURRENT_SOURCE_DIR}/qmldir" ${CMAKE_CURRENT_BINARY_DIR}
26− DEPENDS qmldir
27−)
tests/mocks/Unity/Launcher/MockLauncherModel.cpp+5
@@ -183,6 +183,11 @@ void MockLauncherModel::setUser(const QString &username)
183 // TODO: implement this...
183 // TODO: implement this...
184}
184}
185
185
186+QString MockLauncherModel::getUrlForAppId(const QString &appId) const
187+{
188+ return "application:///" + appId + ".desktop";
189+}
190+
186void MockLauncherModel::setApplicationManager(unity::shell::application::ApplicationManagerInterface *applicationManager)
191void MockLauncherModel::setApplicationManager(unity::shell::application::ApplicationManagerInterface *applicationManager)
187{
192{
188 Q_UNUSED(applicationManager)
193 Q_UNUSED(applicationManager)
tests/mocks/Unity/Launcher/MockLauncherModel.h+1
@@ -44,6 +44,7 @@ public:
44 Q_INVOKABLE void requestRemove(const QString &appId);
44 Q_INVOKABLE void requestRemove(const QString &appId);
45 Q_INVOKABLE void quickListActionInvoked(const QString &appId, int actionIndex);
45 Q_INVOKABLE void quickListActionInvoked(const QString &appId, int actionIndex);
46 Q_INVOKABLE void setUser(const QString &username);
46 Q_INVOKABLE void setUser(const QString &username);
47+ Q_INVOKABLE QString getUrlForAppId(const QString &appId) const;
47
48
48 unity::shell::application::ApplicationManagerInterface *applicationManager() const;
49 unity::shell::application::ApplicationManagerInterface *applicationManager() const;
49 void setApplicationManager(unity::shell::application::ApplicationManagerInterface *applicationManager);
50 void setApplicationManager(unity::shell::application::ApplicationManagerInterface *applicationManager);
tests/mocks/Unity/Launcher/qmldir+1
@@ -1,2 +1,3 @@
1module Unity.Launcher
1module Unity.Launcher
2plugin MockLauncherPlugin
2plugin MockLauncherPlugin
3+typeinfo Launcher.qmltypes
tests/mocks/Unity/Notifications/CMakeLists.txt+1−11
@@ -1,11 +1 @@
1−file(GLOB QMLFILES
1+add_unity8_mock(Unity.Notifications 1.0 Unity/Notifications)
2− *.qml
3− *.js
4− qmldir
5−)
6−
7−# copy files into build directory for shadow builds
8−add_custom_target(NotificationsQmlFiles ALL
9− COMMAND cp ${QMLFILES} ${CMAKE_CURRENT_BINARY_DIR}
10− DEPENDS ${QMLFILES}
11−)
tests/mocks/Unity/Notifications/qmldir+1
@@ -1,2 +1,3 @@
1module Unity.Notifications
1module Unity.Notifications
2Notification 1.0 notification.js
2Notification 1.0 notification.js
3+typeinfo Notifications.qmltypes
tests/mocks/Unity/fake_categories.cpp+26−25
@@ -22,24 +22,9 @@
22#include "fake_resultsmodel.h"
22#include "fake_resultsmodel.h"
23
23
24Categories::Categories(int category_count, QObject* parent)
24Categories::Categories(int category_count, QObject* parent)
25− : QAbstractListModel(parent)
25+ : unity::shell::scopes::CategoriesInterface(parent)
26 , m_category_count(category_count)
26 , m_category_count(category_count)
27{
27{
28− m_roles[Categories::RoleCategoryId] = "categoryId";
29− m_roles[Categories::RoleName] = "name";
30− m_roles[Categories::RoleIcon] = "icon";
31− m_roles[Categories::RoleRawRendererTemplate] = "rawRendererTemplate";
32− m_roles[Categories::RoleRenderer] = "renderer";
33− m_roles[Categories::RoleComponents] = "components";
34− m_roles[Categories::RoleProgressSource] = "progressSource";
35− m_roles[Categories::RoleResults] = "results";
36− m_roles[Categories::RoleCount] = "count";
37−}
38−
39−QHash<int, QByteArray>
40−Categories::roleNames() const
41−{
42− return m_roles;
43}
28}
44
29
45int Categories::rowCount(const QModelIndex& /*parent*/) const
30int Categories::rowCount(const QModelIndex& /*parent*/) const
@@ -65,6 +50,11 @@ void Categories::addSpecialCategory(QString const& categoryId, QString const& na
65 }
50 }
66}
51}
67
52
53+bool Categories::overrideCategoryJson(QString const& categoryId, QString const& json)
54+{
55+ qFatal("Using un-implemented Categories::overrideCategoryJson");
56+}
57+
68void Categories::countChanged()
58void Categories::countChanged()
69{
59{
70 QObject* countObject = sender();
60 QObject* countObject = sender();
@@ -108,7 +98,12 @@ Categories::data(const QModelIndex& index, int role) const
108 case RoleRenderer:
98 case RoleRenderer:
109 {
99 {
110 QVariantMap map;
100 QVariantMap map;
111− map["category-layout"] = index.row() % 2 == 0 ? "grid" : "carousel";
101+ if (index.row() % 2 == 0) {
102+ map["category-layout"] = "grid";
103+ } else {
104+ map["category-layout"] = "carousel";
105+ map["overlay"] = true;
106+ }
112 map["card-size"] = "small";
107 map["card-size"] = "small";
113 return map;
108 return map;
114 }
109 }
@@ -121,9 +116,6 @@ Categories::data(const QModelIndex& index, int role) const
121 map["title"] = "HOLA";
116 map["title"] = "HOLA";
122 return map;
117 return map;
123 }
118 }
124− case RoleProgressSource:
125− qFatal("Using un-implemented RoleProgressSource Categories role");
126− return QVariant();
127 case RoleResults:
119 case RoleResults:
128 return QVariant();
120 return QVariant();
129 case RoleCount:
121 case RoleCount:
@@ -146,22 +138,31 @@ Categories::data(const QModelIndex& index, int role) const
146 case RoleRenderer:
138 case RoleRenderer:
147 {
139 {
148 QVariantMap map;
140 QVariantMap map;
149− map["category-layout"] = index.row() % 2 == 0 ? "grid" : "carousel";
141+ if (index.row() % 2 == 0) {
142+ map["category-layout"] = "grid";
143+ } else {
144+ map["category-layout"] = "carousel";
145+ map["card-size"] = "medium";
146+ map["collapsed-rows"] = 2;
147+ map["overlay"] = true;
148+ }
150 map["card-size"] = "small";
149 map["card-size"] = "small";
151 return map;
150 return map;
152 }
151 }
153 case RoleComponents:
152 case RoleComponents:
154 {
153 {
155 QVariantMap map, artMap;
154 QVariantMap map, artMap;
155+ if (index.row() % 2 != 0) {
156− artMap["aspect-ratio"] = "1.0";
156+ artMap["aspect-ratio"] = QString("1.%1").arg(index.row());
157+ } else {
158+ artMap["aspect-ratio"] = "1.0";
159+ }
157 artMap["field"] = "art";
160 artMap["field"] = "art";
158 map["art"] = artMap;
161 map["art"] = artMap;
159 map["title"] = "HOLA";
162 map["title"] = "HOLA";
163+ map["subtitle"] = "HOLA";
160 return map;
164 return map;
161 }
165 }
162− case RoleProgressSource:
163− qFatal("Using un-implemented RoleProgressSource Categories role");
164− return QVariant();
165 case RoleResults:
166 case RoleResults:
166 return QVariant::fromValue(resultsModel);
167 return QVariant::fromValue(resultsModel);
167 case RoleCount:
168 case RoleCount:
tests/mocks/Unity/fake_categories.h+5−18
@@ -17,44 +17,31 @@
17#ifndef FAKE_CATEGORIES_H
17#ifndef FAKE_CATEGORIES_H
18#define FAKE_CATEGORIES_H
18#define FAKE_CATEGORIES_H
19
19
20+#include <unity/shell/scopes/CategoriesInterface.h>
21+
20// Qt
22// Qt
21−#include <QAbstractListModel>
22#include <QList>
23#include <QList>
23
24
24class ResultsModel;
25class ResultsModel;
25
26
26−class Categories : public QAbstractListModel
27+class Categories : public unity::shell::scopes::CategoriesInterface
27{
28{
28 Q_OBJECT
29 Q_OBJECT
29
30
30− Q_ENUMS(Roles)
31−
32public:
31public:
33 Categories(int category_count, QObject* parent = 0);
32 Categories(int category_count, QObject* parent = 0);
34− enum Roles {
35− RoleCategoryId,
36− RoleName,
37− RoleIcon,
38− RoleRawRendererTemplate,
39− RoleRenderer,
40− RoleComponents,
41− RoleProgressSource, // maybe
42− RoleResults,
43− RoleCount
44− };
45
33
46 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
34 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
47− QHash<int, QByteArray> roleNames() const override;
48 int rowCount(const QModelIndex& parent = QModelIndex()) const override;
35 int rowCount(const QModelIndex& parent = QModelIndex()) const override;
49
36
50− Q_INVOKABLE void addSpecialCategory(QString const& categoryId, QString const& name, QString const& icon, QString const& rawTemplate, QObject* countObject);
37+ Q_INVOKABLE void addSpecialCategory(QString const& categoryId, QString const& name, QString const& icon, QString const& rawTemplate, QObject* countObject) override;
38+ Q_INVOKABLE bool overrideCategoryJson(QString const& categoryId, QString const& json) override;
51
39
52private Q_SLOTS:
40private Q_SLOTS:
53 void countChanged();
41 void countChanged();
54
42
55private:
43private:
56 mutable QHash<int, ResultsModel*> m_resultsModels;
44 mutable QHash<int, ResultsModel*> m_resultsModels;
57− QHash<int, QByteArray> m_roles;
58 int m_category_count;
45 int m_category_count;
59
46
60 struct CategoryData {
47 struct CategoryData {
tests/mocks/Unity/fake_previewmodel.cpp+2−15
@@ -27,22 +27,14 @@
27// Qt
27// Qt
28#include <QDebug>
28#include <QDebug>
29
29
30−PreviewModel::PreviewModel(QObject* parent) : QAbstractListModel(parent)
30+PreviewModel::PreviewModel(QObject* parent)
31+ : unity::shell::scopes::PreviewModelInterface(parent)
31{
32{
32 // we have one column by default
33 // we have one column by default
33 PreviewWidgetModel* columnModel = new PreviewWidgetModel(this);
34 PreviewWidgetModel* columnModel = new PreviewWidgetModel(this);
34 m_previewWidgetModels.append(columnModel);
35 m_previewWidgetModels.append(columnModel);
35}
36}
36
37
37−QHash<int, QByteArray> PreviewModel::roleNames() const
38−{
39− QHash<int, QByteArray> roles;
40−
41− roles[Roles::RoleColumnModel] = "columnModel";
42−
43− return roles;
44−}
45−
46void PreviewModel::setWidgetColumnCount(int count)
38void PreviewModel::setWidgetColumnCount(int count)
47{
39{
48 if (count != 1) {
40 if (count != 1) {
@@ -65,11 +57,6 @@ bool PreviewModel::processingAction() const
65 return false;
57 return false;
66}
58}
67
59
68−void PreviewModel::setProcessingAction(bool /*processing*/)
69−{
70− qFatal("PreviewModel::setProcessingAction not implemented");
71−}
72−
73int PreviewModel::rowCount(const QModelIndex&) const
60int PreviewModel::rowCount(const QModelIndex&) const
74{
61{
75 return m_previewWidgetModels.size();
62 return m_previewWidgetModels.size();
tests/mocks/Unity/fake_previewmodel.h+7−25
@@ -18,47 +18,29 @@
18#ifndef FAKE_PREVIEWMODEL_H
18#ifndef FAKE_PREVIEWMODEL_H
19#define FAKE_PREVIEWMODEL_H
19#define FAKE_PREVIEWMODEL_H
20
20
21−#include <QAbstractListModel>
21+#include <unity/shell/scopes/PreviewModelInterface.h>
22+
22#include <QSharedPointer>
23#include <QSharedPointer>
23#include <QVariantMap>
24#include <QVariantMap>
24
25
25class PreviewWidgetModel;
26class PreviewWidgetModel;
26
27
27−class PreviewModel : public QAbstractListModel
28+class PreviewModel : public unity::shell::scopes::PreviewModelInterface
28{
29{
29 Q_OBJECT
30 Q_OBJECT
30
31
31− Q_ENUMS(Roles)
32−
33− Q_PROPERTY(int widgetColumnCount READ widgetColumnCount WRITE setWidgetColumnCount NOTIFY widgetColumnCountChanged)
34− Q_PROPERTY(bool loaded READ loaded NOTIFY loadedChanged)
35− Q_PROPERTY(bool processingAction READ processingAction NOTIFY processingActionChanged)
36−
37public:
32public:
38 explicit PreviewModel(QObject* parent = 0);
33 explicit PreviewModel(QObject* parent = 0);
39
34
40− enum Roles {
41− RoleColumnModel
42− };
43−
44 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
35 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
45− QHash<int, QByteArray> roleNames() const override;
46 int rowCount(const QModelIndex& parent = QModelIndex()) const override;
36 int rowCount(const QModelIndex& parent = QModelIndex()) const override;
47
37
48− void setWidgetColumnCount(int count);
38+ void setWidgetColumnCount(int count) override;
49− int widgetColumnCount() const;
39+ int widgetColumnCount() const override;
50− bool loaded() const;
40+ bool loaded() const override;
51− bool processingAction() const;
41+ bool processingAction() const override;
52− void setProcessingAction(bool processing);
53−
54−Q_SIGNALS:
55− void widgetColumnCountChanged();
56− void loadedChanged();
57− void processingActionChanged();
58− void triggered(QString const&, QString const&, QVariantMap const&);
59
42
60private:
43private:
61− QHash<int, QByteArray> m_roles;
62 QList<PreviewWidgetModel*> m_previewWidgetModels;
44 QList<PreviewWidgetModel*> m_previewWidgetModels;
63};
45};
64
46
tests/mocks/Unity/fake_previewstack.cpp+3−11
@@ -21,7 +21,8 @@
21#include "fake_previewmodel.h"
21#include "fake_previewmodel.h"
22#include "fake_scope.h"
22#include "fake_scope.h"
23
23
24−PreviewStack::PreviewStack(QObject* parent) : QAbstractListModel(parent)
24+PreviewStack::PreviewStack(QObject* parent)
25+ : unity::shell::scopes::PreviewStackInterface(parent)
25{
26{
26 m_previews << new PreviewModel(this);
27 m_previews << new PreviewModel(this);
27}
28}
@@ -30,15 +31,6 @@ PreviewStack::~PreviewStack()
30{
31{
31}
32}
32
33
33−QHash<int, QByteArray> PreviewStack::roleNames() const
34−{
35− QHash<int, QByteArray> roles;
36−
37− roles[Roles::RolePreviewModel] = "previewModel";
38−
39− return roles;
40−}
41−
42void PreviewStack::setWidgetColumnCount(int columnCount)
34void PreviewStack::setWidgetColumnCount(int columnCount)
43{
35{
44 if (columnCount != 1) {
36 if (columnCount != 1) {
@@ -56,7 +48,7 @@ int PreviewStack::rowCount(const QModelIndex&) const
56 return m_previews.size();
48 return m_previews.size();
57}
49}
58
50
59−PreviewModel* PreviewStack::get(int index) const
51+unity::shell::scopes::PreviewModelInterface* PreviewStack::getPreviewModel(int index) const
60{
52{
61 if (index >= m_previews.size()) {
53 if (index >= m_previews.size()) {
62 return nullptr;
54 return nullptr;
tests/mocks/Unity/fake_previewstack.h+6−17
@@ -18,39 +18,28 @@
18#ifndef FAKE_PREVIEWSTACK_H
18#ifndef FAKE_PREVIEWSTACK_H
19#define FAKE_PREVIEWSTACK_H
19#define FAKE_PREVIEWSTACK_H
20
20
21−#include <QAbstractListModel>
21+#include <unity/shell/scopes/PreviewStackInterface.h>
22+
22#include <QSharedPointer>
23#include <QSharedPointer>
23#include <QVariantMap>
24#include <QVariantMap>
24
25
25class PreviewModel;
26class PreviewModel;
26
27
27−class PreviewStack : public QAbstractListModel
28+class PreviewStack : public unity::shell::scopes::PreviewStackInterface
28{
29{
29 Q_OBJECT
30 Q_OBJECT
30
31
31− Q_ENUMS(Roles)
32−
33− Q_PROPERTY(int widgetColumnCount READ widgetColumnCount WRITE setWidgetColumnCount NOTIFY widgetColumnCountChanged)
34−
35public:
32public:
36 explicit PreviewStack(QObject* parent = 0);
33 explicit PreviewStack(QObject* parent = 0);
37 virtual ~PreviewStack();
34 virtual ~PreviewStack();
38
35
39− enum Roles {
40− RolePreviewModel
41− };
42−
43 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
36 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
44− QHash<int, QByteArray> roleNames() const override;
45 int rowCount(const QModelIndex& parent = QModelIndex()) const override;
37 int rowCount(const QModelIndex& parent = QModelIndex()) const override;
46
38
47− Q_INVOKABLE PreviewModel* get(int index) const;
39+ Q_INVOKABLE unity::shell::scopes::PreviewModelInterface* getPreviewModel(int index) const override;
48−
49− void setWidgetColumnCount(int columnCount);
50− int widgetColumnCount() const;
51
40
52−Q_SIGNALS:
41+ void setWidgetColumnCount(int columnCount) override;
53− void widgetColumnCountChanged();
42+ int widgetColumnCount() const override;
54
43
55private:
44private:
56 QList<PreviewModel*> m_previews;
45 QList<PreviewModel*> m_previews;
tests/mocks/Unity/fake_previewwidgetmodel.cpp+2−10
@@ -35,12 +35,9 @@ struct PreviewData
35 }
35 }
36};
36};
37
37
38−PreviewWidgetModel::PreviewWidgetModel(QObject* parent) : QAbstractListModel(parent)
38+PreviewWidgetModel::PreviewWidgetModel(QObject* parent)
39+ : unity::shell::scopes::PreviewWidgetModelInterface(parent)
39{
40{
40− m_roles[Roles::RoleWidgetId] = "widgetId";
41− m_roles[Roles::RoleType] = "type";
42− m_roles[Roles::RoleProperties] = "properties";
43−
44 populateWidgets();
41 populateWidgets();
45}
42}
46
43
@@ -60,11 +57,6 @@ void PreviewWidgetModel::populateWidgets()
60
57
61}
58}
62
59
63−QHash<int, QByteArray> PreviewWidgetModel::roleNames() const
64−{
65− return m_roles;
66−}
67−
68int PreviewWidgetModel::rowCount(const QModelIndex&) const
60int PreviewWidgetModel::rowCount(const QModelIndex&) const
69{
61{
70 return m_previewWidgets.size();
62 return m_previewWidgets.size();
tests/mocks/Unity/fake_previewwidgetmodel.h+3−12
@@ -18,33 +18,24 @@
18#ifndef FAKE_PREVIEWWIDGETMODEL_H
18#ifndef FAKE_PREVIEWWIDGETMODEL_H
19#define FAKE_PREVIEWWIDGETMODEL_H
19#define FAKE_PREVIEWWIDGETMODEL_H
20
20
21−#include <QAbstractListModel>
21+#include <unity/shell/scopes/PreviewWidgetModelInterface.h>
22+
22#include <QSharedPointer>
23#include <QSharedPointer>
23#include <QVariantMap>
24#include <QVariantMap>
24
25
25class PreviewData;
26class PreviewData;
26
27
27−class PreviewWidgetModel : public QAbstractListModel
28+class PreviewWidgetModel : public unity::shell::scopes::PreviewWidgetModelInterface
28{
29{
29 Q_OBJECT
30 Q_OBJECT
30
31
31− Q_ENUMS(Roles)
32−
33public:
32public:
34 explicit PreviewWidgetModel(QObject* parent = 0);
33 explicit PreviewWidgetModel(QObject* parent = 0);
35
34
36− enum Roles {
37− RoleWidgetId,
38− RoleType,
39− RoleProperties
40− };
41−
42 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
35 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
43− QHash<int, QByteArray> roleNames() const override;
44 int rowCount(const QModelIndex& parent = QModelIndex()) const override;
36 int rowCount(const QModelIndex& parent = QModelIndex()) const override;
45
37
46private:
38private:
47− QHash<int, QByteArray> m_roles;
48 QList<QSharedPointer<PreviewData>> m_previewWidgets;
39 QList<QSharedPointer<PreviewData>> m_previewWidgets;
49
40
50 void populateWidgets();
41 void populateWidgets();
tests/mocks/Unity/fake_resultsmodel.cpp+2−44
@@ -23,25 +23,10 @@
23#include <paths.h>
23#include <paths.h>
24
24
25ResultsModel::ResultsModel(int result_count, int categoryId, QObject* parent)
25ResultsModel::ResultsModel(int result_count, int categoryId, QObject* parent)
26− : QAbstractListModel(parent)
26+ : unity::shell::scopes::ResultsModelInterface(parent)
27 , m_result_count(result_count)
27 , m_result_count(result_count)
28 , m_categoryId(categoryId)
28 , m_categoryId(categoryId)
29{
29{
30− m_roles[ResultsModel::RoleUri] = "uri";
31− m_roles[ResultsModel::RoleCategoryId] = "categoryId";
32− m_roles[ResultsModel::RoleDndUri] = "dndUri";
33− m_roles[ResultsModel::RoleResult] = "result";
34− m_roles[ResultsModel::RoleTitle] = "title";
35− m_roles[ResultsModel::RoleArt] = "art";
36− m_roles[ResultsModel::RoleSubtitle] = "subtitle";
37− m_roles[ResultsModel::RoleMascot] = "mascot";
38− m_roles[ResultsModel::RoleEmblem] = "emblem";
39− m_roles[ResultsModel::RoleOldPrice] = "oldPrice";
40− m_roles[ResultsModel::RolePrice] = "price";
41− m_roles[ResultsModel::RoleAltPrice] = "altPrice";
42− m_roles[ResultsModel::RoleRating] = "rating";
43− m_roles[ResultsModel::RoleAltRating] = "altRating";
44− m_roles[ResultsModel::RoleSummary] = "summary";
45}
30}
46
31
47QString ResultsModel::categoryId() const
32QString ResultsModel::categoryId() const
@@ -54,12 +39,6 @@ void ResultsModel::setCategoryId(QString const& /*id*/)
54 qFatal("Calling un-implemented ResultsModel::setCategoryId");
39 qFatal("Calling un-implemented ResultsModel::setCategoryId");
55}
40}
56
41
57−QHash<int, QByteArray>
58−ResultsModel::roleNames() const
59−{
60− return m_roles;
61−}
62−
63int ResultsModel::rowCount(const QModelIndex& parent) const
42int ResultsModel::rowCount(const QModelIndex& parent) const
64{
43{
65 Q_UNUSED(parent);
44 Q_UNUSED(parent);
@@ -72,23 +51,6 @@ int ResultsModel::count() const
72 return rowCount();
51 return rowCount();
73}
52}
74
53
75−QVariant ResultsModel::get(int row) const
76−{
77− if (row >= m_result_count || row < 0) return QVariantMap();
78−
79− QVariantMap result;
80− QModelIndex modelIndex(index(row));
81− QHashIterator<int, QByteArray> it(roleNames());
82− while (it.hasNext()) {
83− it.next();
84− QVariant val(data(modelIndex, it.key()));
85− if (val.isNull()) continue;
86− result[it.value()] = val;
87− }
88−
89− return result;
90−}
91−
92QVariant
54QVariant
93ResultsModel::data(const QModelIndex& index, int role) const
55ResultsModel::data(const QModelIndex& index, int role) const
94{
56{
@@ -103,13 +65,9 @@ ResultsModel::data(const QModelIndex& index, int role) const
103 case RoleArt:
65 case RoleArt:
104 return qmlDirectory() + "graphics/applicationIcons/dash.png";
66 return qmlDirectory() + "graphics/applicationIcons/dash.png";
105 case RoleSubtitle:
67 case RoleSubtitle:
68+ return QString("Subtitle.%1.%2").arg(m_categoryId).arg(index.row());
106 case RoleMascot:
69 case RoleMascot:
107 case RoleEmblem:
70 case RoleEmblem:
108− case RoleOldPrice:
109− case RolePrice:
110− case RoleAltPrice:
111− case RoleRating:
112− case RoleAltRating:
113 case RoleSummary:
71 case RoleSummary:
114 default:
72 default:
115 return QVariant();
73 return QVariant();
tests/mocks/Unity/fake_resultsmodel.h+5−37
@@ -21,58 +21,26 @@
21#ifndef FAKE_RESULTS_MODEL_H
21#ifndef FAKE_RESULTS_MODEL_H
22#define FAKE_RESULTS_MODEL_H
22#define FAKE_RESULTS_MODEL_H
23
23
24−#include <QAbstractListModel>
24+#include <unity/shell/scopes/ResultsModelInterface.h>
25
25
26−class ResultsModel : public QAbstractListModel
26+class ResultsModel : public unity::shell::scopes::ResultsModelInterface
27{
27{
28 Q_OBJECT
28 Q_OBJECT
29
29
30− Q_ENUMS(Roles)
31−
32− Q_PROPERTY(QString categoryId READ categoryId WRITE setCategoryId NOTIFY categoryIdChanged)
33− Q_PROPERTY(int count READ count NOTIFY countChanged)
34−
35public:
30public:
36 explicit ResultsModel(int result_count, int categoryId, QObject* parent = 0);
31 explicit ResultsModel(int result_count, int categoryId, QObject* parent = 0);
37
32
38− enum Roles {
39− RoleUri,
40− RoleCategoryId,
41− RoleDndUri,
42− RoleResult,
43− // card components
44− RoleTitle,
45− RoleArt,
46− RoleSubtitle,
47− RoleMascot,
48− RoleEmblem,
49− RoleOldPrice,
50− RolePrice,
51− RoleAltPrice,
52− RoleRating,
53− RoleAltRating,
54− RoleSummary
55− };
56−
57 int rowCount(const QModelIndex& parent = QModelIndex()) const override;
33 int rowCount(const QModelIndex& parent = QModelIndex()) const override;
58− QHash<int, QByteArray> roleNames() const override;
59 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
34 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
60
35
61− Q_INVOKABLE QVariant get(int row) const;
62−
63 /* getters */
36 /* getters */
64− QString categoryId() const;
37+ QString categoryId() const override;
65− int count() const;
38+ int count() const override;
66
39
67 /* setters */
40 /* setters */
68− void setCategoryId(QString const& id);
41+ void setCategoryId(QString const& id) override;
69−
70−Q_SIGNALS:
71− void categoryIdChanged();
72− void countChanged();
73
42
74private:
43private:
75− QHash<int, QByteArray> m_roles;
76 int m_result_count;
44 int m_result_count;
77 int m_categoryId;
45 int m_categoryId;
78};
46};
tests/mocks/Unity/fake_scope.cpp+3−14
@@ -22,7 +22,7 @@ Scope::Scope(QObject* parent) : Scope(QString(), QString(), false, parent)
22}
22}
23
23
24Scope::Scope(QString const& id, QString const& name, bool visible, QObject* parent)
24Scope::Scope(QString const& id, QString const& name, bool visible, QObject* parent)
25− : QObject(parent)
25+ : unity::shell::scopes::ScopeInterface(parent)
26 , m_id(id)
26 , m_id(id)
27 , m_name(name)
27 , m_name(name)
28 , m_visible(visible)
28 , m_visible(visible)
@@ -61,15 +61,11 @@ QString Scope::shortcut() const {
61 return QString("");
61 return QString("");
62}
62}
63
63
64−bool Scope::connected() const {
65− return true;
66−}
67−
68bool Scope::searchInProgress() const {
64bool Scope::searchInProgress() const {
69 return m_searching;
65 return m_searching;
70}
66}
71
67
72−Categories* Scope::categories() const {
68+unity::shell::scopes::CategoriesInterface* Scope::categories() const {
73 return m_categories;
69 return m_categories;
74}
70}
75
71
@@ -89,13 +85,6 @@ bool Scope::isActive() const {
89 return m_isActive;
85 return m_isActive;
90}
86}
91
87
92−void Scope::setName(const QString &str) {
93− if (str != m_name) {
94− m_name = str;
95− Q_EMIT nameChanged(m_name);
96− }
97−}
98−
99void Scope::setSearchQuery(const QString &str) {
88void Scope::setSearchQuery(const QString &str) {
100 if (str != m_searchQuery) {
89 if (str != m_searchQuery) {
101 m_searchQuery = str;
90 m_searchQuery = str;
@@ -149,7 +138,7 @@ void Scope::cancelActivation()
149{
138{
150}
139}
151
140
152−void Scope::closeScope(Scope* /*scope*/)
141+void Scope::closeScope(unity::shell::scopes::ScopeInterface* /*scope*/)
153{
142{
154 qFatal("Scope::closeScope is not implemented");
143 qFatal("Scope::closeScope is not implemented");
155}
144}
tests/mocks/Unity/fake_scope.h+26−72
@@ -17,93 +17,47 @@
17#ifndef FAKE_SCOPE_H
17#ifndef FAKE_SCOPE_H
18#define FAKE_SCOPE_H
18#define FAKE_SCOPE_H
19
19
20+#include <unity/shell/scopes/ScopeInterface.h>
21+
20#include "fake_categories.h"
22#include "fake_categories.h"
21#include "fake_previewstack.h"
23#include "fake_previewstack.h"
22
24
23−#include <QObject>
24#include <QTimer>
25#include <QTimer>
25
26
26−class Preview;
27+class Scope : public unity::shell::scopes::ScopeInterface
27−
28−class Scope : public QObject
29{
28{
30 Q_OBJECT
29 Q_OBJECT
31
30
32− Q_PROPERTY(QString id READ id NOTIFY idChanged)
33− Q_PROPERTY(QString name READ name NOTIFY nameChanged)
34− Q_PROPERTY(QString iconHint READ iconHint NOTIFY iconHintChanged)
35− Q_PROPERTY(QString description READ description NOTIFY descriptionChanged)
36− Q_PROPERTY(QString searchHint READ searchHint NOTIFY searchHintChanged)
37− Q_PROPERTY(bool searchInProgress READ searchInProgress WRITE setSearchInProgress NOTIFY searchInProgressChanged)
38− Q_PROPERTY(bool visible READ visible NOTIFY visibleChanged)
39− Q_PROPERTY(QString shortcut READ shortcut NOTIFY shortcutChanged)
40− Q_PROPERTY(Categories* categories READ categories NOTIFY categoriesChanged)
41− //Q_PROPERTY(Filters* filters READ filters NOTIFY filtersChanged)
42−
43− Q_PROPERTY(QString searchQuery READ searchQuery WRITE setSearchQuery NOTIFY searchQueryChanged)
44− Q_PROPERTY(QString noResultsHint READ noResultsHint WRITE setNoResultsHint NOTIFY noResultsHintChanged)
45− Q_PROPERTY(QString formFactor READ formFactor WRITE setFormFactor NOTIFY formFactorChanged)
46− Q_PROPERTY(bool isActive READ isActive WRITE setActive NOTIFY isActiveChanged)
47−
48public:
31public:
49 Scope(QObject* parent = 0);
32 Scope(QObject* parent = 0);
50 Scope(QString const& id, QString const& name, bool visible, QObject* parent = 0);
33 Scope(QString const& id, QString const& name, bool visible, QObject* parent = 0);
51
34
52 /* getters */
35 /* getters */
53− QString id() const;
36+ QString id() const override;
54− QString name() const;
37+ QString name() const override;
55− QString iconHint() const;
38+ QString iconHint() const override;
56− QString description() const;
39+ QString description() const override;
57− QString searchHint() const;
40+ QString searchHint() const override;
58− bool visible() const;
41+ bool visible() const override;
59− QString shortcut() const;
42+ QString shortcut() const override;
60− bool connected() const;
61− bool searchInProgress() const;
43+ bool searchInProgress() const override;
62− Categories* categories() const;
44+ unity::shell::scopes::CategoriesInterface* categories() const override;
63− QString searchQuery() const;
45+ QString searchQuery() const override;
64− QString noResultsHint() const;
46+ QString noResultsHint() const override;
65− QString formFactor() const;
47+ QString formFactor() const override;
66− bool isActive() const;
48+ bool isActive() const override;
67
49
68 /* setters */
50 /* setters */
69− void setName(const QString& name);
70− void setSearchQuery(const QString& search_query);
51+ void setSearchQuery(const QString& search_query) override;
71− void setNoResultsHint(const QString& hint);
52+ void setNoResultsHint(const QString& hint) override;
72− void setFormFactor(const QString& form_factor);
53+ void setFormFactor(const QString& form_factor) override;
73− void setActive(const bool);
54+ void setActive(const bool) override;
74− void setSearchInProgress(const bool inProg);
55+ Q_INVOKABLE void setSearchInProgress(const bool inProg); // This is not invokable in the Interface, here for testing benefits
75−
56+
76− Q_INVOKABLE void activate(QVariant const& result);
57+ Q_INVOKABLE void activate(QVariant const& result) override;
77− Q_INVOKABLE PreviewStack* preview(QVariant const& result);
58+ Q_INVOKABLE PreviewStack* preview(QVariant const& result) override;
78− Q_INVOKABLE void cancelActivation();
59+ Q_INVOKABLE void cancelActivation() override;
79− Q_INVOKABLE void closeScope(Scope* scope);
60+ Q_INVOKABLE void closeScope(unity::shell::scopes::ScopeInterface* scope) override;
80−
81−Q_SIGNALS:
82− void idChanged();
83− void nameChanged(const QString&);
84− void iconHintChanged(const QString&);
85− void descriptionChanged(const QString&);
86− void searchHintChanged(const QString&);
87− void searchInProgressChanged();
88− void visibleChanged(bool);
89− void shortcutChanged(const QString&);
90− void categoriesChanged();
91− //void filtersChanged();
92− void searchQueryChanged();
93− void noResultsHintChanged();
94− void formFactorChanged();
95− void isActiveChanged(bool);
96−
97− // signals triggered by activate(..) or preview(..) requests.
98− void showDash();
99− void hideDash();
100− void gotoUri(const QString &uri);
101− void activated();
102− void previewRequested(QVariant const& result);
103− void gotoScope(QString const& scopeId);
104− void openScope(Scope* scope);
105−
106− void activateApplication(const QString &desktop);
107
61
108protected:
62protected:
109
63
tests/mocks/Unity/fake_scopes.cpp+11−26
@@ -25,19 +25,10 @@
25#include <QTimer>
25#include <QTimer>
26
26
27Scopes::Scopes(QObject *parent)
27Scopes::Scopes(QObject *parent)
28−: QAbstractListModel(parent)
28+ : unity::shell::scopes::ScopesInterface(parent)
29−, m_loaded(false)
29+ , m_loaded(false)
30−, timer(this)
30+ , timer(this)
31{
31{
32− m_roles[Scopes::RoleScope] = "scope";
33− m_roles[Scopes::RoleId] = "id";
34− m_roles[Scopes::RoleVisible] = "visible";
35− m_roles[Scopes::RoleTitle] = "title";
36−
37− QObject::connect(this, SIGNAL(rowsInserted(const QModelIndex &, int, int)), this, SIGNAL(countChanged()));
38− QObject::connect(this, SIGNAL(rowsRemoved(const QModelIndex &, int, int)), this, SIGNAL(countChanged()));
39− QObject::connect(this, SIGNAL(modelReset()), this, SIGNAL(countChanged()));
40−
41 timer.setSingleShot(true);
32 timer.setSingleShot(true);
42 timer.setInterval(100);
33 timer.setInterval(100);
43 QObject::connect(&timer, SIGNAL(timeout()), this, SLOT(updateScopes()));
34 QObject::connect(&timer, SIGNAL(timeout()), this, SLOT(updateScopes()));
@@ -83,11 +74,6 @@ void Scopes::load()
83 timer.start();
74 timer.start();
84}
75}
85
76
86−QHash<int, QByteArray> Scopes::roleNames() const
87−{
88− return m_roles;
89−}
90−
91int Scopes::rowCount(const QModelIndex&) const
77int Scopes::rowCount(const QModelIndex&) const
92{
78{
93 return m_scopes.count();
79 return m_scopes.count();
@@ -114,14 +100,18 @@ QVariant Scopes::data(const QModelIndex& index, int role) const
114 }
100 }
115}
101}
116
102
117−QVariant Scopes::get(int row) const
103+unity::shell::scopes::ScopeInterface* Scopes::getScope(int row) const
118{
104{
119− return data(QAbstractListModel::index(row), 0);
105+ if (row < 0 || row >= m_scopes.size()) {
106+ return nullptr;
107+ }
108+
109+ return m_scopes[row];
120}
110}
121
111
122−QVariant Scopes::get(QString const&) const
112+unity::shell::scopes::ScopeInterface* Scopes::getScope(QString const&) const
123{
113{
124− return QVariant();
114+ return nullptr;
125}
115}
126
116
127QModelIndex Scopes::parent(const QModelIndex&) const
117QModelIndex Scopes::parent(const QModelIndex&) const
@@ -134,11 +124,6 @@ bool Scopes::loaded() const
134 return m_loaded;
124 return m_loaded;
135}
125}
136
126
137−int Scopes::count() const
138−{
139− return rowCount();
140−}
141−
142void Scopes::addScope(Scope* scope)
127void Scopes::addScope(Scope* scope)
143{
128{
144 int index = rowCount();
129 int index = rowCount();
tests/mocks/Unity/fake_scopes.h+7−24
@@ -19,36 +19,27 @@
19#ifndef FAKE_SCOPES_H
19#ifndef FAKE_SCOPES_H
20#define FAKE_SCOPES_H
20#define FAKE_SCOPES_H
21
21
22+#include <unity/shell/scopes/ScopesInterface.h>
23+
22// Local
24// Local
23#include "fake_scope.h"
25#include "fake_scope.h"
24
26
25// Qt
27// Qt
26−#include <QAbstractListModel>
27#include <QList>
28#include <QList>
28#include <QTimer>
29#include <QTimer>
29
30
30−class Scopes : public QAbstractListModel
31+class Scopes : public unity::shell::scopes::ScopesInterface
31{
32{
32 Q_OBJECT
33 Q_OBJECT
33− Q_ENUMS(Roles)
34− Q_PROPERTY(bool loaded READ loaded NOTIFY loadedChanged)
35− Q_PROPERTY(int count READ count NOTIFY countChanged)
36
34
37public:
35public:
38 explicit Scopes(QObject *parent = 0);
36 explicit Scopes(QObject *parent = 0);
39 ~Scopes();
37 ~Scopes();
40
38
41− enum Roles {
42− RoleScope,
43− RoleId,
44− RoleVisible,
45− RoleTitle
46− };
47−
48− Q_INVOKABLE int rowCount(const QModelIndex& parent = QModelIndex()) const;
39+ Q_INVOKABLE int rowCount(const QModelIndex& parent = QModelIndex()) const override;
49
40
50− Q_INVOKABLE QVariant get(int row) const;
41+ Q_INVOKABLE unity::shell::scopes::ScopeInterface* getScope(int row) const override;
51− Q_INVOKABLE QVariant get(const QString& scope_id) const;
42+ Q_INVOKABLE unity::shell::scopes::ScopeInterface* getScope(const QString& scope_id) const override;
52
43
53 Q_INVOKABLE void addScope(Scope* scope);
44 Q_INVOKABLE void addScope(Scope* scope);
54
45
@@ -56,23 +47,15 @@ public:
56 Q_INVOKABLE void load();
47 Q_INVOKABLE void load();
57
48
58 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const;
49 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const;
59− QHash<int, QByteArray> roleNames() const;
60 QModelIndex parent ( const QModelIndex & index ) const;
50 QModelIndex parent ( const QModelIndex & index ) const;
61
51
62− bool loaded() const;
52+ bool loaded() const override;
63− int count() const;
64−
65−Q_SIGNALS:
66− void activateScopeRequested(const QString& scope_id);
67− void loadedChanged(bool);
68− void countChanged();
69
53
70private Q_SLOTS:
54private Q_SLOTS:
71 void updateScopes();
55 void updateScopes();
72
56
73private:
57private:
74 QList<Scope*> m_scopes;
58 QList<Scope*> m_scopes;
75− QHash<int, QByteArray> m_roles;
76 bool m_loaded;
59 bool m_loaded;
77 QTimer timer;
60 QTimer timer;
78};
61};
tests/mocks/Unity/fake_unity_plugin.cpp+3−2
@@ -40,8 +40,9 @@ void FakeUnityPlugin::registerTypes(const char *uri)
40 Q_ASSERT(uri == QLatin1String("Unity"));
40 Q_ASSERT(uri == QLatin1String("Unity"));
41
41
42 qmlRegisterType<Scopes>(uri, 0, 2, "Scopes");
42 qmlRegisterType<Scopes>(uri, 0, 2, "Scopes");
43− qmlRegisterType<Scope>(uri, 0, 2, "Scope");
43+ qmlRegisterType<Scope>(uri, 0, 2, "MockScope");
44+ qmlRegisterUncreatableType<unity::shell::scopes::ScopeInterface>(uri, 0, 2, "Scope", "Can't create Scope object in QML.");
44− qmlRegisterUncreatableType<Categories>(uri, 0, 2, "Categories", "Can't create Categories object in QML.");
45+ qmlRegisterUncreatableType<unity::shell::scopes::CategoriesInterface>(uri, 0, 2, "Categories", "Can't create Categories object in QML.");
45 qmlRegisterUncreatableType<ResultsModel>(uri, 0, 2, "ResultsModel", "Can't create ResultsModel object in QML.");
46 qmlRegisterUncreatableType<ResultsModel>(uri, 0, 2, "ResultsModel", "Can't create ResultsModel object in QML.");
46 qmlRegisterType<PreviewModel>(uri, 0, 2, "FakePreviewModel");
47 qmlRegisterType<PreviewModel>(uri, 0, 2, "FakePreviewModel");
47 qmlRegisterUncreatableType<PreviewWidgetModel>(uri, 0, 2, "PreviewWidgetModel", "Can't create new PreviewWidgetModel in QML. Get them from PreviewModel instance.");
48 qmlRegisterUncreatableType<PreviewWidgetModel>(uri, 0, 2, "PreviewWidgetModel", "Can't create new PreviewWidgetModel in QML. Get them from PreviewModel instance.");
tests/mocks/Unity/iconutils.cppdeleted−124
@@ -1,124 +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− * Authors:
17− * Michal Hruby <michal.hruby@canonical.com>
18− */
19−
20−#include "iconutils.h"
21−
22−#include <gio/gio.h>
23−
24−#include <QStringList>
25−#include <QUrl>
26−#include <QUrlQuery>
27−
28−#define BASE_THEME_ICON_URI "image://theme/"
29−#define BASE_THUMBNAILER_URI "image://thumbnailer/"
30−#define BASE_ALBUMART_URI "image://albumart/"
31−
32−QString gIconToDeclarativeImageProviderString(QString const &giconString)
33−{
34− if (giconString.isEmpty()) return giconString;
35−
36− if (giconString.startsWith('/') || giconString.startsWith(QLatin1String("http")) ||
37− giconString.startsWith(QLatin1String("file:")) || giconString.startsWith(QLatin1String("image:"))) {
38− return giconString;
39− }
40−
41− if (!giconString.startsWith(QLatin1String(". "))) {
42− // must be a themed icon
43− QString themedIcon(BASE_THEME_ICON_URI);
44− themedIcon.append(giconString);
45− return themedIcon;
46− }
47−
48− // special case annotated icon
49− if (giconString.startsWith(QLatin1String(". UnityProtocolAnnotatedIcon "))) {
50− QString annotatedIcon;
51− QString serializedData(QUrl::fromPercentEncoding(giconString.mid(29).toUtf8()));
52− GVariant *variant = g_variant_parse(G_VARIANT_TYPE_VARDICT, serializedData.toUtf8().constData(), NULL, NULL, NULL);
53− gchar *baseUri;
54− if (variant != NULL && g_variant_lookup(variant, "base-icon", "&s", &baseUri)) {
55− annotatedIcon = gIconToDeclarativeImageProviderString(QString(baseUri));
56− // FIXME: enclose in image://annotated/... once unity supports that
57− }
58− if (variant != NULL) g_variant_unref(variant);
59−
60− return annotatedIcon;
61− }
62−
63− // handle real gicon strings
64− QString result;
65− GError *error = NULL;
66− GIcon *icon = g_icon_new_for_string(giconString.toLocal8Bit().constData(), &error);
67− if (error != NULL || icon == NULL) {
68− qWarning("Unable to deserialize icon: %s", giconString.toLocal8Bit().constData());
69− g_clear_error(&error);
70− return result;
71− }
72−
73− if (G_IS_THEMED_ICON(icon)) {
74− QString themedIcon(BASE_THEME_ICON_URI);
75− QStringList list;
76− const char* const *iconNames = g_themed_icon_get_names(G_THEMED_ICON(icon));
77− if (iconNames != NULL) {
78− for (const char * const *iter = iconNames; *iter != NULL; ++iter) {
79− list << QLatin1String(*iter);
80− }
81− }
82− themedIcon.append(list.join(QString(",")));
83− result = themedIcon;
84− } else if (G_IS_FILE_ICON(icon)) {
85− GFile *file = g_file_icon_get_file(G_FILE_ICON(icon));
86− gchar *uri = g_file_get_uri(file);
87− QString iconUri(uri);
88− g_free(uri);
89− result = iconUri;
90− }
91−
92− g_object_unref(icon);
93−
94− return result;
95−}
96−
97−QString uriToThumbnailerProviderString(QString const &uri, QString const &mimetype, QVariantHash const &metadata)
98−{
99− if (uri.startsWith(QLatin1String("file:///"))) {
100− bool isAudio = mimetype.startsWith(QLatin1String("audio/"));
101− QString thumbnailerUri;
102− if (isAudio) {
103− thumbnailerUri = BASE_ALBUMART_URI;
104− if (metadata.contains("content")) {
105− QVariantHash contentHash = metadata["content"].toHash();
106− if (contentHash.contains("content")) { // nested content in Home?
107− contentHash = contentHash["content"].toHash();
108− }
109− if (contentHash.contains("album") && contentHash.contains("artist")) {
110− QUrlQuery query;
111− query.addQueryItem(QStringLiteral("artist"), contentHash["artist"].toString());
112− query.addQueryItem(QStringLiteral("album"), contentHash["album"].toString());
113− thumbnailerUri.append(query.toString());
114− }
115− }
116− } else {
117− thumbnailerUri = BASE_THUMBNAILER_URI;
118− thumbnailerUri.append(uri.midRef(7));
119− }
120− return thumbnailerUri;
121− }
122−
123− return QString::null;
124−}
tests/mocks/Unity/qmldir+1
@@ -1,2 +1,3 @@
1module Unity
1module Unity
2plugin FakeUnityQml
2plugin FakeUnityQml
3+typeinfo Unity.qmltypes
tests/plugins/CMakeLists.txt+1−1
@@ -1,6 +1,6 @@
1add_subdirectory(AccountsService)
1add_subdirectory(AccountsService)
2add_subdirectory(LightDM)
2add_subdirectory(LightDM)
3−add_subdirectory(DashViews)
3+add_subdirectory(Dash)
4add_subdirectory(Ubuntu)
4add_subdirectory(Ubuntu)
5add_subdirectory(Unity)
5add_subdirectory(Unity)
6add_subdirectory(Utils)
6add_subdirectory(Utils)
tests/plugins/DashViews/CMakeLists.txt → tests/plugins/Dash/CMakeLists.txtrenamed+16−9
@@ -16,7 +16,7 @@ include_directories(
16 ${Qt5Quick_INCLUDE_DIRS}
16 ${Qt5Quick_INCLUDE_DIRS}
17 ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
17 ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
18 ${Qt5V8_PRIVATE_INCLUDE_DIR}
18 ${Qt5V8_PRIVATE_INCLUDE_DIR}
19− ${CMAKE_CURRENT_SOURCE_DIR}/../../../plugins/DashViews
19+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../plugins/Dash
20 ${CMAKE_CURRENT_BINARY_DIR}
20 ${CMAKE_CURRENT_BINARY_DIR}
21 )
21 )
22
22
@@ -28,11 +28,11 @@ add_definitions(-DBUILT_PLUGINS_DIR="${CMAKE_BINARY_DIR}/plugins")
28macro(add_lvwph_test FILENAME TESTNAME)
28macro(add_lvwph_test FILENAME TESTNAME)
29 add_executable(${TESTNAME}TestExec
29 add_executable(${TESTNAME}TestExec
30 ${FILENAME}test.cpp
30 ${FILENAME}test.cpp
31− ${CMAKE_CURRENT_SOURCE_DIR}/../../../plugins/DashViews/listviewwithpageheader.cpp)
31+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../plugins/Dash/listviewwithpageheader.cpp)
32 qt5_use_modules(${TESTNAME}TestExec Test Core Qml)
32 qt5_use_modules(${TESTNAME}TestExec Test Core Qml)
33 target_link_libraries(${TESTNAME}TestExec ${Qt5Gui_LIBRARIES} ${Qt5Quick_LIBRARIES})
33 target_link_libraries(${TESTNAME}TestExec ${Qt5Gui_LIBRARIES} ${Qt5Quick_LIBRARIES})
34
34
35− add_binary_qml_test(${TESTNAME} "" "DashViews-qml")
35+ add_binary_qml_test(${TESTNAME} "" "Dash-qml")
36endmacro()
36endmacro()
37
37
38add_lvwph_test(listviewwithpageheader ListViewWithPageHeader)
38add_lvwph_test(listviewwithpageheader ListViewWithPageHeader)
@@ -42,24 +42,24 @@ add_lvwph_test(listviewwithpageheadersectionexternalmodel ListViewWithPageHeader
42macro(add_dashview_try_test FILENAME TESTNAME)
42macro(add_dashview_try_test FILENAME TESTNAME)
43 add_executable(${TESTNAME}TestExec
43 add_executable(${TESTNAME}TestExec
44 ${FILENAME}test.cpp
44 ${FILENAME}test.cpp
45− ${CMAKE_CURRENT_SOURCE_DIR}/../../../plugins/DashViews/${FILENAME}.cpp
45+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../plugins/Dash/${FILENAME}.cpp
46− ${CMAKE_CURRENT_SOURCE_DIR}/../../../plugins/DashViews/abstractdashview.cpp
46+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../plugins/Dash/abstractdashview.cpp
47 )
47 )
48 qt5_use_modules(${TESTNAME}TestExec Test Core Qml)
48 qt5_use_modules(${TESTNAME}TestExec Test Core Qml)
49 target_link_libraries(${TESTNAME}TestExec ${Qt5Gui_LIBRARIES} ${Qt5Quick_LIBRARIES})
49 target_link_libraries(${TESTNAME}TestExec ${Qt5Gui_LIBRARIES} ${Qt5Quick_LIBRARIES})
50
50
51− add_binary_qml_test(${TESTNAME} "" "DashViews-qml")
51+ add_binary_qml_test(${TESTNAME} "" "Dash-qml")
52
52
53 add_executable(${TESTNAME}tryExec
53 add_executable(${TESTNAME}tryExec
54 ${FILENAME}try.cpp
54 ${FILENAME}try.cpp
55− ${CMAKE_CURRENT_SOURCE_DIR}/../../../plugins/DashViews/${FILENAME}.cpp
55+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../plugins/Dash/${FILENAME}.cpp
56− ${CMAKE_CURRENT_SOURCE_DIR}/../../../plugins/DashViews/abstractdashview.cpp
56+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../plugins/Dash/abstractdashview.cpp
57 )
57 )
58 qt5_use_modules(${TESTNAME}tryExec Test Core Qml)
58 qt5_use_modules(${TESTNAME}tryExec Test Core Qml)
59 target_link_libraries(${TESTNAME}tryExec ${Qt5Gui_LIBRARIES} ${Qt5Quick_LIBRARIES})
59 target_link_libraries(${TESTNAME}tryExec ${Qt5Gui_LIBRARIES} ${Qt5Quick_LIBRARIES})
60 add_custom_target(try${TESTNAME}
60 add_custom_target(try${TESTNAME}
61 ${CMAKE_CURRENT_BINARY_DIR}/${TESTNAME}tryExec
61 ${CMAKE_CURRENT_BINARY_DIR}/${TESTNAME}tryExec
62− DEPENDS ${TESTNAME}tryExec DashViews-qml
62+ DEPENDS ${TESTNAME}tryExec Dash-qml
63 )
63 )
64endmacro()
64endmacro()
65
65
@@ -67,6 +67,13 @@ add_dashview_try_test(verticaljournal VerticalJournal)
67add_dashview_try_test(horizontaljournal HorizontalJournal)
67add_dashview_try_test(horizontaljournal HorizontalJournal)
68add_dashview_try_test(organicgrid OrganicGrid)
68add_dashview_try_test(organicgrid OrganicGrid)
69
69
70+# CardCreator test
71+add_executable(CardCreatorTestExec cardcreatortest.cpp)
72+qt5_use_modules(CardCreatorTestExec Test Core Qml)
73+target_link_libraries(CardCreatorTestExec ${Qt5Gui_LIBRARIES} ${Qt5Quick_LIBRARIES})
74+add_binary_qml_test(CardCreator "" "Dash-qml")
75+
76+# plain qml test
70set(qmltest_DEFAULT_TARGETS qmluitests)
77set(qmltest_DEFAULT_TARGETS qmluitests)
71set(qmltest_DEFAULT_NO_ADD_TEST TRUE)
78set(qmltest_DEFAULT_NO_ADD_TEST TRUE)
72add_qml_test(. ListViewWithPageHeaderQML IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins)
79add_qml_test(. ListViewWithPageHeaderQML IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins)
tests/plugins/Dash/cardcreator/1.resnew file+79
@@ -0,0 +1,79 @@
1+AbstractButton {
2+ id: root;
3+ property var template;
4+ property var components;
5+ property var cardData;
6+ property var artShapeBorderSource: undefined;
7+ property real fontScale: 1.0;
8+ property int headerAlignment: Text.AlignLeft;
9+ property int fixedHeaderHeight: -1;
10+ property size fixedArtShapeSize: Qt.size(-1, -1);
11+ readonly property string title: cardData && cardData["title"] || "";
12+ property bool asynchronous: true;
13+ property bool showHeader: true;
14+ implicitWidth: childrenRect.width;
15+onArtShapeBorderSourceChanged: { if (artShapeBorderSource !== undefined && artShapeLoader.item) artShapeLoader.item.borderSource = artShapeBorderSource; }
16+readonly property size artShapeSize: artShapeLoader.item ? Qt.size(artShapeLoader.item.width, artShapeLoader.item.height) : Qt.size(-1, -1);
17+Item {
18+ id: artShapeHolder;
19+ height: root.fixedArtShapeSize.height != -1 ? root.fixedArtShapeSize.height : artShapeLoader.height;
20+ width: root.fixedArtShapeSize.width != -1 ? root.fixedArtShapeSize.width : artShapeLoader.width;
21+ anchors { horizontalCenter: parent.horizontalCenter; }
22+ Loader {
23+ id: artShapeLoader;
24+ objectName: "artShapeLoader";
25+ active: cardData && cardData["art"] || false;
26+ asynchronous: root.asynchronous;
27+ visible: status == Loader.Ready;
28+ sourceComponent: UbuntuShape {
29+ id: artShape;
30+ objectName: "artShape";
31+ radius: "medium";
32+ readonly property real aspect: components !== undefined ? components["art"]["aspect-ratio"] : 1;
33+ readonly property bool aspectSmallerThanImageAspect: aspect < image.aspect;
34+ Component.onCompleted: { updateWidthHeightBindings(); if (artShapeBorderSource !== undefined) borderSource = artShapeBorderSource; }
35+ onAspectSmallerThanImageAspectChanged: updateWidthHeightBindings();
36+ visible: image.status == Image.Ready;
37+ function updateWidthHeightBindings() {
38+ if (aspectSmallerThanImageAspect) {
39+ width = Qt.binding(function() { return !visible ? 0 : image.width });
40+ height = Qt.binding(function() { return !visible ? 0 : image.fillMode === Image.PreserveAspectCrop ? image.height : width / image.aspect });
41+ } else {
42+ width = Qt.binding(function() { return !visible ? 0 : image.fillMode === Image.PreserveAspectCrop ? image.width : height * image.aspect });
43+ height = Qt.binding(function() { return !visible ? 0 : image.height });
44+ }
45+ }
46+ image: Image {
47+ objectName: "artImage";
48+ source: cardData && cardData["art"] || "";
49+ cache: true;
50+ asynchronous: root.asynchronous;
51+ fillMode: components && components["art"]["fill-mode"] === "fit" ? Image.PreserveAspectFit: Image.PreserveAspectCrop;
52+ readonly property real aspect: implicitWidth / implicitHeight;
53+ width: root.width;
54+ height: width / artShape.aspect;
55+ }
56+ }
57+ }
58+ }
59+readonly property int headerHeight: titleLabel.height + titleLabel.anchors.topMargin * 2;
60+Label {
61+ id: titleLabel;
62+ objectName: "titleLabel";
63+ anchors { right: parent.right;left: parent.left;
64+top: artShapeHolder.bottom;
65+ topMargin: units.gu(1);
66+ }
67+ elide: Text.ElideRight;
68+ fontSize: "small";
69+ wrapMode: Text.Wrap;
70+ maximumLineCount: 2;
71+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
72+ color: "grey";
73+ visible: showHeader ;
74+ text: root.title;
75+ font.weight: components && components["subtitle"] ? Font.DemiBold : Font.Normal;
76+ horizontalAlignment: root.headerAlignment;
77+ }
78+implicitHeight: titleLabel.y + titleLabel.height + units.gu(1);
79+}
tests/plugins/Dash/cardcreator/1.tstnew file+3
@@ -0,0 +1,3 @@
1+template: {"card-layout":"vertical","card-size":"small","category-layout":"grid","collapsed-rows":2}
2+components: {"art":{"aspect-ratio":1.6,"field":"art","fill-mode":"fit"},"title":{"field":"title"}}
3+result: 1.res
tests/plugins/Dash/cardcreator/2.resnew file+116
@@ -0,0 +1,116 @@
1+AbstractButton {
2+ id: root;
3+ property var template;
4+ property var components;
5+ property var cardData;
6+ property var artShapeBorderSource: undefined;
7+ property real fontScale: 1.0;
8+ property int headerAlignment: Text.AlignLeft;
9+ property int fixedHeaderHeight: -1;
10+ property size fixedArtShapeSize: Qt.size(-1, -1);
11+ readonly property string title: cardData && cardData["title"] || "";
12+ property bool asynchronous: true;
13+ property bool showHeader: true;
14+ implicitWidth: childrenRect.width;
15+Loader {
16+ id: backgroundLoader;
17+ objectName: "backgroundLoader";
18+ anchors.fill: parent;
19+ asynchronous: root.asynchronous;
20+ visible: status == Loader.Ready;
21+ sourceComponent: UbuntuShape {
22+ objectName: "background";
23+ radius: "medium";
24+ color: getColor(0) || "white";
25+ gradientColor: getColor(1) || color;
26+ anchors.fill: parent;
27+ image: backgroundImage.source ? backgroundImage : null;
28+ property real luminance: 0.2126 * color.r + 0.7152 * color.g + 0.0722 * color.b;
29+ property Image backgroundImage: Image {
30+ objectName: "backgroundImage";
31+ source: {
32+ if (cardData && typeof cardData["background"] === "string") return cardData["background"];
33+ else if (template && typeof template["card-background"] === "string") return template["card-background"];
34+ else return "";
35+ }
36+ }
37+ function getColor(index) {
38+ if (cardData && typeof cardData["background"] === "object"
39+ && (cardData["background"]["type"] === "color" || cardData["background"]["type"] === "gradient")) {
40+ return cardData["background"]["elements"][index];
41+ } else if (template && typeof template["card-background"] === "object"
42+ && (template["card-background"]["type"] === "color" || template["card-background"]["type"] === "gradient")) {
43+ return template["card-background"]["elements"][index];
44+ } else return undefined;
45+ }
46+ }
47+ }
48+readonly property size artShapeSize: Qt.size(-1, -1);
49+readonly property int headerHeight: row.height + row.margins * 2;
50+Row {
51+ id: row;
52+ objectName: "outerRow";
53+ property real margins: units.gu(1);
54+ spacing: margins;
55+ anchors { top: parent.top;
56+ topMargin: units.gu(1);
57+ left: parent.left;
58+}
59+ anchors.right: parent.right;
60+ anchors.margins: margins;
61+data: [ Image {
62+ id: mascotImage;
63+ objectName: "mascotImage";
64+ anchors { verticalCenter: parent.verticalCenter; }
65+ readonly property int maxSize: Math.max(width, height) * 4;
66+ source: cardData && cardData["mascot"];
67+ width: units.gu(6);
68+ height: units.gu(5.625);
69+ sourceSize { width: maxSize; height: maxSize }
70+ fillMode: Image.PreserveAspectCrop;
71+ horizontalAlignment: Image.AlignHCenter;
72+ verticalAlignment: Image.AlignVCenter;
73+ visible: showHeader;
74+ }
75+,
76+Column {
77+ anchors.verticalCenter: parent.verticalCenter;
78+ spacing: units.dp(2);
79+ width: parent.width - x;
80+ data: [
81+Label {
82+ id: titleLabel;
83+ objectName: "titleLabel";
84+ anchors { left: parent.left; right: parent.right }
85+ elide: Text.ElideRight;
86+ fontSize: "small";
87+ wrapMode: Text.Wrap;
88+ maximumLineCount: 2;
89+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
90+ color: backgroundLoader.active && backgroundLoader.item && backgroundLoader.item.luminance < 0.7 ? "white" : "grey";
91+ visible: showHeader ;
92+ text: root.title;
93+ font.weight: components && components["subtitle"] ? Font.DemiBold : Font.Normal;
94+ horizontalAlignment: root.headerAlignment;
95+ }
96+,
97+Label {
98+ id: subtitleLabel;
99+ objectName: "subtitleLabel";
100+ anchors { left: parent.left; right: parent.right }
101+
102+ elide: Text.ElideRight;
103+ fontSize: "small";
104+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
105+ color: backgroundLoader.active && backgroundLoader.item && backgroundLoader.item.luminance < 0.7 ? "white" : "grey";
106+ visible: titleLabel.visible && titleLabel.text;
107+ text: cardData && cardData["subtitle"] || "";
108+ font.weight: Font.Light;
109+ horizontalAlignment: root.headerAlignment;
110+ }
111+]
112+}
113+]
114+}
115+implicitHeight: row.y + row.height + units.gu(1);
116+}
tests/plugins/Dash/cardcreator/2.tstnew file+3
@@ -0,0 +1,3 @@
1+template: {"card-background":{"elements":["#E9E9E9"],"type":"color"},"card-layout":"vertical","card-size":"medium","category-layout":"grid","collapsed-rows":2}
2+components: {"art":{"aspect-ratio":1,"fill-mode":"crop"},"background":{"field":"background"},"mascot":{"field":"icon"},"subtitle":{"field":"author"},"title":{"field":"title"}}
3+result: 2.res
tests/plugins/Dash/cardcreator/3.resnew file+96
@@ -0,0 +1,96 @@
1+AbstractButton {
2+ id: root;
3+ property var template;
4+ property var components;
5+ property var cardData;
6+ property var artShapeBorderSource: undefined;
7+ property real fontScale: 1.0;
8+ property int headerAlignment: Text.AlignLeft;
9+ property int fixedHeaderHeight: -1;
10+ property size fixedArtShapeSize: Qt.size(-1, -1);
11+ readonly property string title: cardData && cardData["title"] || "";
12+ property bool asynchronous: true;
13+ property bool showHeader: true;
14+ implicitWidth: childrenRect.width;
15+onArtShapeBorderSourceChanged: { if (artShapeBorderSource !== undefined && artShapeLoader.item) artShapeLoader.item.borderSource = artShapeBorderSource; }
16+readonly property size artShapeSize: artShapeLoader.item ? Qt.size(artShapeLoader.item.width, artShapeLoader.item.height) : Qt.size(-1, -1);
17+Item {
18+ id: artShapeHolder;
19+ height: root.fixedArtShapeSize.height != -1 ? root.fixedArtShapeSize.height : artShapeLoader.height;
20+ width: root.fixedArtShapeSize.width != -1 ? root.fixedArtShapeSize.width : artShapeLoader.width;
21+ anchors { horizontalCenter: parent.horizontalCenter; }
22+ Loader {
23+ id: artShapeLoader;
24+ objectName: "artShapeLoader";
25+ active: cardData && cardData["art"] || false;
26+ asynchronous: root.asynchronous;
27+ visible: status == Loader.Ready;
28+ sourceComponent: UbuntuShape {
29+ id: artShape;
30+ objectName: "artShape";
31+ radius: "medium";
32+ readonly property real aspect: components !== undefined ? components["art"]["aspect-ratio"] : 1;
33+ readonly property bool aspectSmallerThanImageAspect: aspect < image.aspect;
34+ Component.onCompleted: { updateWidthHeightBindings(); if (artShapeBorderSource !== undefined) borderSource = artShapeBorderSource; }
35+ onAspectSmallerThanImageAspectChanged: updateWidthHeightBindings();
36+ visible: image.status == Image.Ready;
37+ function updateWidthHeightBindings() {
38+ if (aspectSmallerThanImageAspect) {
39+ width = Qt.binding(function() { return !visible ? 0 : image.width });
40+ height = Qt.binding(function() { return !visible ? 0 : image.fillMode === Image.PreserveAspectCrop ? image.height : width / image.aspect });
41+ } else {
42+ width = Qt.binding(function() { return !visible ? 0 : image.fillMode === Image.PreserveAspectCrop ? image.width : height * image.aspect });
43+ height = Qt.binding(function() { return !visible ? 0 : image.height });
44+ }
45+ }
46+ image: Image {
47+ objectName: "artImage";
48+ source: cardData && cardData["art"] || "";
49+ cache: true;
50+ asynchronous: root.asynchronous;
51+ fillMode: components && components["art"]["fill-mode"] === "fit" ? Image.PreserveAspectFit: Image.PreserveAspectCrop;
52+ readonly property real aspect: implicitWidth / implicitHeight;
53+ width: root.width;
54+ height: width / artShape.aspect;
55+ }
56+ }
57+ }
58+ }
59+readonly property int headerHeight: titleLabel.height + titleLabel.anchors.topMargin * 2 + subtitleLabel.height + subtitleLabel.anchors.topMargin;
60+Label {
61+ id: titleLabel;
62+ objectName: "titleLabel";
63+ anchors { right: parent.right;left: parent.left;
64+top: artShapeHolder.bottom;
65+ topMargin: units.gu(1);
66+}
67+ elide: Text.ElideRight;
68+ fontSize: "small";
69+ wrapMode: Text.Wrap;
70+ maximumLineCount: 2;
71+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
72+ color: "grey";
73+ visible: showHeader ;
74+ text: root.title;
75+ font.weight: components && components["subtitle"] ? Font.DemiBold : Font.Normal;
76+ horizontalAlignment: root.headerAlignment;
77+ }
78+Label {
79+ id: subtitleLabel;
80+ objectName: "subtitleLabel";
81+ anchors { left: titleLabel.left;
82+ leftMargin: titleLabel.leftMargin;
83+ right: titleLabel.right;
84+ top: titleLabel.bottom;
85+ topMargin: units.dp(2); }
86+ elide: Text.ElideRight;
87+ fontSize: "small";
88+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
89+ color: "grey";
90+ visible: titleLabel.visible && titleLabel.text;
91+ text: cardData && cardData["subtitle"] || "";
92+ font.weight: Font.Light;
93+ horizontalAlignment: root.headerAlignment;
94+ }
95+implicitHeight: subtitleLabel.y + subtitleLabel.height + units.gu(1);
96+}
tests/plugins/Dash/cardcreator/3.tstnew file+3
@@ -0,0 +1,3 @@
1+template: {"card-layout":"vertical","card-size":"small","category-layout":"grid","collapsed-rows":2}
2+components: {"art":{"aspect-ratio":0.75,"field":"art","fill-mode":"crop"},"subtitle":{"field":"price"},"title":{"field":"title"}}
3+result: 3.res
tests/plugins/Dash/cardcreator/4.resnew file+96
@@ -0,0 +1,96 @@
1+AbstractButton {
2+ id: root;
3+ property var template;
4+ property var components;
5+ property var cardData;
6+ property var artShapeBorderSource: undefined;
7+ property real fontScale: 1.0;
8+ property int headerAlignment: Text.AlignLeft;
9+ property int fixedHeaderHeight: -1;
10+ property size fixedArtShapeSize: Qt.size(-1, -1);
11+ readonly property string title: cardData && cardData["title"] || "";
12+ property bool asynchronous: true;
13+ property bool showHeader: true;
14+ implicitWidth: childrenRect.width;
15+readonly property size artShapeSize: Qt.size(-1, -1);
16+readonly property int headerHeight: row.height + row.margins * 2;
17+Row {
18+ id: row;
19+ objectName: "outerRow";
20+ property real margins: units.gu(1);
21+ spacing: margins;
22+ anchors { top: parent.top;
23+ topMargin: units.gu(1);
24+ left: parent.left;
25+}
26+ anchors.right: parent.right;
27+ anchors.margins: margins;
28+data: [ Loader {
29+ id: mascotShapeLoader;
30+ objectName: "mascotShapeLoader";
31+ asynchronous: root.asynchronous;
32+ active: mascotImage.status === Image.Ready;
33+ visible: showHeader && active && status == Loader.Ready;
34+ width: units.gu(6);
35+ height: units.gu(5.625);
36+ sourceComponent: UbuntuShape { image: mascotImage }
37+ anchors { verticalCenter: parent.verticalCenter; }
38+ }
39+
40+,
41+Image {
42+ id: mascotImage;
43+ objectName: "mascotImage";
44+ anchors { verticalCenter: parent.verticalCenter; }
45+ readonly property int maxSize: Math.max(width, height) * 4;
46+ source: cardData && cardData["mascot"];
47+ width: units.gu(6);
48+ height: units.gu(5.625);
49+ sourceSize { width: maxSize; height: maxSize }
50+ fillMode: Image.PreserveAspectCrop;
51+ horizontalAlignment: Image.AlignHCenter;
52+ verticalAlignment: Image.AlignVCenter;
53+ visible: false;
54+ }
55+
56+,
57+Column {
58+ anchors.verticalCenter: parent.verticalCenter;
59+ spacing: units.dp(2);
60+ width: parent.width - x;
61+data: [ Label {
62+ id: titleLabel;
63+ objectName: "titleLabel";
64+ anchors { left: parent.left; right: parent.right }
65+ elide: Text.ElideRight;
66+ fontSize: "small";
67+ wrapMode: Text.Wrap;
68+ maximumLineCount: 2;
69+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
70+ color: "grey";
71+ visible: showHeader ;
72+ text: root.title;
73+ font.weight: components && components["subtitle"] ? Font.DemiBold : Font.Normal;
74+ horizontalAlignment: root.headerAlignment;
75+ }
76+,
77+Label {
78+ id: subtitleLabel;
79+ objectName: "subtitleLabel";
80+ anchors { left: parent.left; right: parent.right }
81+
82+ elide: Text.ElideRight;
83+ fontSize: "small";
84+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
85+ color: "grey";
86+ visible: titleLabel.visible && titleLabel.text;
87+ text: cardData && cardData["subtitle"] || "";
88+ font.weight: Font.Light;
89+ horizontalAlignment: root.headerAlignment;
90+ }
91+]
92+}
93+]
94+}
95+implicitHeight: row.y + row.height + units.gu(1);
96+}
tests/plugins/Dash/cardcreator/4.tstnew file+3
@@ -0,0 +1,3 @@
1+template: {"card-layout":"horizontal","card-size":"large","category-layout":"grid","collapsed-rows":2}
2+components: {"art":{"aspect-ratio":1,"fill-mode":"crop"},"mascot":{"field":"mascot"},"subtitle":{"field":"domain"},"title":{"field":"title"}}
3+result: 4.res
tests/plugins/Dash/cardcreator/5.resnew file+139
@@ -0,0 +1,139 @@
1+AbstractButton {
2+ id: root;
3+ property var template;
4+ property var components;
5+ property var cardData;
6+ property var artShapeBorderSource: undefined;
7+ property real fontScale: 1.0;
8+ property int headerAlignment: Text.AlignLeft;
9+ property int fixedHeaderHeight: -1;
10+ property size fixedArtShapeSize: Qt.size(-1, -1);
11+ readonly property string title: cardData && cardData["title"] || "";
12+ property bool asynchronous: true;
13+ property bool showHeader: true;
14+ implicitWidth: childrenRect.width;
15+onArtShapeBorderSourceChanged: { if (artShapeBorderSource !== undefined && artShapeLoader.item) artShapeLoader.item.borderSource = artShapeBorderSource; }
16+readonly property size artShapeSize: artShapeLoader.item ? Qt.size(artShapeLoader.item.width, artShapeLoader.item.height) : Qt.size(-1, -1);
17+Item {
18+ id: artShapeHolder;
19+ height: root.fixedArtShapeSize.height != -1 ? root.fixedArtShapeSize.height : artShapeLoader.height;
20+ width: root.fixedArtShapeSize.width != -1 ? root.fixedArtShapeSize.width : artShapeLoader.width;
21+ anchors { horizontalCenter: parent.horizontalCenter; }
22+ Loader {
23+ id: artShapeLoader;
24+ objectName: "artShapeLoader";
25+ active: cardData && cardData["art"] || false;
26+ asynchronous: root.asynchronous;
27+ visible: status == Loader.Ready;
28+ sourceComponent: UbuntuShape {
29+ id: artShape;
30+ objectName: "artShape";
31+ radius: "medium";
32+ readonly property real aspect: components !== undefined ? components["art"]["aspect-ratio"] : 1;
33+ readonly property bool aspectSmallerThanImageAspect: aspect < image.aspect;
34+ Component.onCompleted: { updateWidthHeightBindings(); if (artShapeBorderSource !== undefined) borderSource = artShapeBorderSource; }
35+ onAspectSmallerThanImageAspectChanged: updateWidthHeightBindings();
36+ visible: image.status == Image.Ready;
37+ function updateWidthHeightBindings() {
38+ if (aspectSmallerThanImageAspect) {
39+ width = Qt.binding(function() { return !visible ? 0 : image.width });
40+ height = Qt.binding(function() { return !visible ? 0 : image.fillMode === Image.PreserveAspectCrop ? image.height : width / image.aspect });
41+ } else {
42+ width = Qt.binding(function() { return !visible ? 0 : image.fillMode === Image.PreserveAspectCrop ? image.width : height * image.aspect });
43+ height = Qt.binding(function() { return !visible ? 0 : image.height });
44+ }
45+ }
46+ image: Image {
47+ objectName: "artImage";
48+ source: cardData && cardData["art"] || "";
49+ cache: true;
50+ asynchronous: root.asynchronous;
51+ fillMode: components && components["art"]["fill-mode"] === "fit" ? Image.PreserveAspectFit: Image.PreserveAspectCrop;
52+ readonly property real aspect: implicitWidth / implicitHeight;
53+ width: root.width;
54+ height: width / artShape.aspect;
55+ }
56+ }
57+ }
58+ }
59+Loader {
60+ id: overlayLoader;
61+ anchors {
62+ left: artShapeHolder.left;
63+ right: artShapeHolder.right;
64+ bottom: artShapeHolder.bottom;
65+ }
66+ active: artShapeLoader.active && artShapeLoader.item && artShapeLoader.item.image.status === Image.Ready || false;
67+ asynchronous: root.asynchronous;
68+ visible: showHeader && status == Loader.Ready;
69+ sourceComponent: ShaderEffect {
70+ id: overlay;
71+ height: fixedHeaderHeight != -1 ? fixedHeaderHeight : headerHeight;
72+ opacity: 0.6;
73+ property var source: ShaderEffectSource {
74+ id: shaderSource;
75+ sourceItem: artShapeLoader.item;
76+ onVisibleChanged: if (visible) scheduleUpdate();
77+ live: false;
78+ sourceRect: Qt.rect(0, artShapeLoader.height - overlay.height, artShapeLoader.width, overlay.height);
79+ }
80+ vertexShader: "
81+ uniform highp mat4 qt_Matrix;
82+ attribute highp vec4 qt_Vertex;
83+ attribute highp vec2 qt_MultiTexCoord0;
84+ varying highp vec2 coord;
85+ void main() {
86+ coord = qt_MultiTexCoord0;
87+ gl_Position = qt_Matrix * qt_Vertex;
88+ }";
89+ fragmentShader: "
90+ varying highp vec2 coord;
91+ uniform sampler2D source;
92+ uniform lowp float qt_Opacity;
93+ void main() {
94+ lowp vec4 tex = texture2D(source, coord);
95+ gl_FragColor = vec4(0, 0, 0, tex.a) * qt_Opacity;
96+ }";
97+ }
98+ }
99+readonly property int headerHeight: titleLabel.height + titleLabel.anchors.topMargin * 2 + subtitleLabel.height + subtitleLabel.anchors.topMargin;
100+Label {
101+ id: titleLabel;
102+ objectName: "titleLabel";
103+ anchors { left: parent.left;
104+ leftMargin: units.gu(1);
105+ right: parent.right;
106+ top: overlayLoader.top;
107+ topMargin: units.gu(1);
108+}
109+ elide: Text.ElideRight;
110+ fontSize: "small";
111+ wrapMode: Text.Wrap;
112+ maximumLineCount: 2;
113+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
114+ color: "white";
115+ visible: showHeader && overlayLoader.active;
116+ text: root.title;
117+ font.weight: components && components["subtitle"] ? Font.DemiBold : Font.Normal;
118+ horizontalAlignment: root.headerAlignment;
119+ }
120+Label {
121+ id: subtitleLabel;
122+ objectName: "subtitleLabel";
123+ anchors { left: titleLabel.left;
124+ leftMargin: titleLabel.leftMargin;
125+ right: titleLabel.right;
126+ top: titleLabel.bottom;
127+ topMargin: units.dp(2);
128+ }
129+ elide: Text.ElideRight;
130+ fontSize: "small";
131+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
132+ color: "white";
133+ visible: titleLabel.visible && titleLabel.text;
134+ text: cardData && cardData["subtitle"] || "";
135+ font.weight: Font.Light;
136+ horizontalAlignment: root.headerAlignment;
137+ }
138+implicitHeight: subtitleLabel.y + subtitleLabel.height + units.gu(1);
139+}
tests/plugins/Dash/cardcreator/5.tstnew file+3
@@ -0,0 +1,3 @@
1+template: {"card-layout":"vertical","card-size":"medium","category-layout":"carousel","collapsed-rows":2,"overlay":true}
2+components: {"art":{"aspect-ratio":1,"field":"art","fill-mode":"crop"},"subtitle":{"field":"artist"},"title":{"field":"title"}}
3+result: 5.res
tests/plugins/Dash/cardcreatortest.cppnew file+91
@@ -0,0 +1,91 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#include <QDir>
18+#include <QQmlEngine>
19+#include <QQuickItem>
20+#include <QQuickView>
21+#include <QtTestGui>
22+
23+class CardCreatorTest : public QObject
24+{
25+ Q_OBJECT
26+
27+private Q_SLOTS:
28+
29+ void initTestCase()
30+ {
31+ }
32+
33+ void init()
34+ {
35+ view = new QQuickView();
36+ view->engine()->addImportPath(BUILT_PLUGINS_DIR);
37+ view->setSource(QUrl::fromLocalFile(DASHVIEWSTEST_FOLDER "/cardcreatortest.qml"));
38+ view->show();
39+ QTest::qWaitForWindowExposed(view);
40+ }
41+
42+ void cleanup()
43+ {
44+ delete view;
45+ }
46+
47+ void testKnownCases()
48+ {
49+ const QString templateString("template: ");
50+ const QString componentsString("components: ");
51+ const QString resultString("result: ");
52+
53+ const QString testDirPath = DASHVIEWSTEST_FOLDER "/cardcreator/";
54+ QDir d(testDirPath);
55+ const QStringList testFiles = d.entryList(QStringList() << "*.tst");
56+ foreach(const QString &testFileName, testFiles) {
57+ qDebug() << testFileName;
58+ QFile testFile(testDirPath + testFileName);
59+ QVERIFY(testFile.open(QIODevice::ReadOnly));
60+ QTextStream ts(&testFile);
61+ const QStringList lines = ts.readAll().split("\n");
62+
63+ QVERIFY(lines[0].startsWith(templateString));
64+ QVERIFY(lines[1].startsWith(componentsString));
65+ QVERIFY(lines[2].startsWith(resultString));
66+ const QString templateJSON = lines[0].mid(templateString.length());
67+ const QString componentsJSON = lines[1].mid(componentsString.length());
68+ const QString resultFileName = lines[2].mid(resultString.length());
69+
70+ QVariant cardStringResult;
71+ QMetaObject::invokeMethod(view->rootObject(), "cardString", Q_RETURN_ARG(QVariant, cardStringResult), Q_ARG(QVariant, templateJSON), Q_ARG(QVariant, componentsJSON));
72+
73+ QFile testResultFile(testDirPath + resultFileName);
74+ QVERIFY(testResultFile.open(QIODevice::ReadOnly));
75+ QTextStream ts2(&testResultFile);
76+ const QString expectedResult = ts2.readAll();
77+ QCOMPARE(cardStringResult.toString().simplified(), expectedResult.simplified());
78+
79+ QVariant createCardComponentResult;
80+ QMetaObject::invokeMethod(view->rootObject(), "createCardComponent", Q_RETURN_ARG(QVariant, createCardComponentResult), Q_ARG(QVariant, templateJSON), Q_ARG(QVariant, componentsJSON));
81+ QVERIFY(createCardComponentResult.toBool());
82+ }
83+ }
84+
85+private:
86+ QQuickView *view;
87+};
88+
89+QTEST_MAIN(CardCreatorTest)
90+
91+#include "cardcreatortest.moc"
tests/plugins/Dash/cardcreatortest.qmlnew file+29
@@ -0,0 +1,29 @@
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.2
18+import "../../../plugins/Dash/CardCreator.js" as CardCreator
19+
20+Item {
21+ id: root
22+ function cardString(template, components) {
23+ return CardCreator.cardString(JSON.parse(template), JSON.parse(components));
24+ }
25+
26+ function createCardComponent(template, components) {
27+ return CardCreator.createCardComponent(root, JSON.parse(template), JSON.parse(components)) !== null;
28+ }
29+}
tests/plugins/DashViews/horizontaljournaltest.cpp → tests/plugins/Dash/horizontaljournaltest.cpprenamed+6−6
@@ -258,8 +258,8 @@ private Q_SLOTS:
258
258
259 void testDelegateCreationRanges()
259 void testDelegateCreationRanges()
260 {
260 {
261− hj->setDelegateCreationBegin(300);
261+ hj->setDisplayMarginBeginning(-300);
262− hj->setDelegateCreationEnd(view->height());
262+ hj->setDisplayMarginEnd(-(hj->height() - view->height()));
263
263
264 QTRY_COMPARE(hj->m_firstVisibleIndex, 6);
264 QTRY_COMPARE(hj->m_firstVisibleIndex, 6);
265 QTRY_COMPARE(hj->m_visibleItems.count(), 7);
265 QTRY_COMPARE(hj->m_visibleItems.count(), 7);
@@ -274,8 +274,8 @@ private Q_SLOTS:
274 QTRY_COMPARE(hj->m_lastInRowIndexPosition[ 7], 210.);
274 QTRY_COMPARE(hj->m_lastInRowIndexPosition[ 7], 210.);
275 QTRY_COMPARE(hj->m_lastInRowIndexPosition[12], 305.);
275 QTRY_COMPARE(hj->m_lastInRowIndexPosition[12], 305.);
276
276
277− hj->resetDelegateCreationBegin();
277+ hj->setDisplayMarginBeginning(0);
278− hj->resetDelegateCreationEnd();
278+ hj->setDisplayMarginEnd(0);
279
279
280 // This is exactly the same block as the first again
280 // This is exactly the same block as the first again
281 checkInitialPositions();
281 checkInitialPositions();
@@ -469,8 +469,8 @@ private Q_SLOTS:
469
469
470 void testNegativeDelegateCreationRange()
470 void testNegativeDelegateCreationRange()
471 {
471 {
472− hj->setDelegateCreationBegin(0);
472+ hj->setDisplayMarginBeginning(0);
473− hj->setDelegateCreationEnd(-100);
473+ hj->setDisplayMarginEnd(-(hj->height() + 100));
474
474
475 QStringList widthList;
475 QStringList widthList;
476 widthList << "100" << "50" << "50" << "30";
476 widthList << "100" << "50" << "50" << "30";
tests/plugins/DashViews/horizontaljournaltest.qml → tests/plugins/Dash/horizontaljournaltest.qmlrenamed+1−1
@@ -15,7 +15,7 @@
15 */
15 */
16
16
17import QtQuick 2.1
17import QtQuick 2.1
18−import DashViews 0.1
18+import Dash 0.1
19
19
20Item {
20Item {
21
21
tests/plugins/DashViews/horizontaljournaltry.cpp → tests/plugins/Dash/horizontaljournaltry.cpprenamed

The content is the same.

tests/plugins/DashViews/horizontaljournaltry.qml → tests/plugins/Dash/horizontaljournaltry.qmlrenamed+24−3
@@ -15,7 +15,7 @@
15 */
15 */
16
16
17import QtQuick 2.1
17import QtQuick 2.1
18−import DashViews 0.1
18+import Dash 0.1
19
19
20Item {
20Item {
21 id: root
21 id: root
@@ -29,14 +29,35 @@ Item {
29 width: parent.width - controls.width
29 width: parent.width - controls.width
30
30
31 delegate: HorizontalJournal {
31 delegate: HorizontalJournal {
32+ id: hj
32 model: vjModel
33 model: vjModel
33 rowHeight: 100
34 rowHeight: 100
34 columnSpacing: 10
35 columnSpacing: 10
35 rowSpacing: 10
36 rowSpacing: 10
36 width: parent.width
37 width: parent.width
37 height: implicitHeight > 100 ? implicitHeight : 100
38 height: implicitHeight > 100 ? implicitHeight : 100
38− delegateCreationBegin: lvwph.contentY
39+ displayMarginBeginning: {
39− delegateCreationEnd: lvwph.contentY + lvwph.height
40+ if (hj.y + hj.height <= 0) {
41+ // Not visible (item at top of the list viewport)
42+ return -hj.height;
43+ } else if (hj.y >= lvwph.height) {
44+ // Not visible (item at bottom of the list viewport)
45+ return 0;
46+ } else {
47+ return -Math.max(-hj.y, 0);
48+ }
49+ }
50+ displayMarginEnd: {
51+ if (hj.y + hj.height <= 0) {
52+ // Not visible (item at top of the list viewport)
53+ return 0;
54+ } else if (hj.y >= lvwph.height) {
55+ // Not visible (item at bottom of the list viewport)
56+ return -hj.height;
57+ } else {
58+ return -Math.max(hj.height - lvwph.height + hj.y, 0)
59+ }
60+ }
40
61
41 delegate: Rectangle {
62 delegate: Rectangle {
42 height: 100
63 height: 100
tests/plugins/DashViews/listviewwithpageheadersectionexternalmodeltest.cpp → tests/plugins/Dash/listviewwithpageheadersectionexternalmodeltest.cpprenamed+3−3
@@ -82,10 +82,10 @@ private:
82 QTRY_COMPARE(lvwph->m_visibleItems[visibleIndex]->y(), pos);
82 QTRY_COMPARE(lvwph->m_visibleItems[visibleIndex]->y(), pos);
83 QTRY_COMPARE(lvwph->m_visibleItems[visibleIndex]->height(), height);
83 QTRY_COMPARE(lvwph->m_visibleItems[visibleIndex]->height(), height);
84 QCOMPARE(QQuickItemPrivate::get(lvwph->m_visibleItems[visibleIndex]->m_item)->culled, culled);
84 QCOMPARE(QQuickItemPrivate::get(lvwph->m_visibleItems[visibleIndex]->m_item)->culled, culled);
85− QCOMPARE(section(lvwph->m_visibleItems[visibleIndex]->m_sectionItem), sectionHeader);
85+ QCOMPARE(section(lvwph->m_visibleItems[visibleIndex]->sectionItem()), sectionHeader);
86 if (!sectionHeader.isNull()) {
86 if (!sectionHeader.isNull()) {
87− QCOMPARE(QQuickItemPrivate::get(lvwph->m_visibleItems[visibleIndex]->m_sectionItem)->culled, sectionHeaderCulled);
87+ QCOMPARE(QQuickItemPrivate::get(lvwph->m_visibleItems[visibleIndex]->sectionItem())->culled, sectionHeaderCulled);
88− QCOMPARE(sectionDelegateIndex(lvwph->m_visibleItems[visibleIndex]->m_sectionItem), lvwph->m_firstVisibleIndex + visibleIndex);
88+ QCOMPARE(sectionDelegateIndex(lvwph->m_visibleItems[visibleIndex]->sectionItem()), lvwph->m_firstVisibleIndex + visibleIndex);
89 }
89 }
90 }
90 }
91
91
tests/plugins/DashViews/listviewwithpageheadersectiontest.cpp → tests/plugins/Dash/listviewwithpageheadersectiontest.cpprenamed+11−5
@@ -39,10 +39,11 @@ private:
39 QTRY_COMPARE(lvwph->m_visibleItems[visibleIndex]->y(), pos);
39 QTRY_COMPARE(lvwph->m_visibleItems[visibleIndex]->y(), pos);
40 QTRY_COMPARE(lvwph->m_visibleItems[visibleIndex]->height(), height);
40 QTRY_COMPARE(lvwph->m_visibleItems[visibleIndex]->height(), height);
41 QCOMPARE(QQuickItemPrivate::get(lvwph->m_visibleItems[visibleIndex]->m_item)->culled, culled);
41 QCOMPARE(QQuickItemPrivate::get(lvwph->m_visibleItems[visibleIndex]->m_item)->culled, culled);
42− QCOMPARE(section(lvwph->m_visibleItems[visibleIndex]->m_sectionItem), sectionHeader);
42+ QCOMPARE(section(lvwph->m_visibleItems[visibleIndex]->sectionItem()), sectionHeader);
43+ QTRY_COMPARE(hasSectionHeaderProperty(lvwph->m_visibleItems[visibleIndex]->m_item), !sectionHeader.isNull());
43 if (!sectionHeader.isNull()) {
44 if (!sectionHeader.isNull()) {
44− QCOMPARE(QQuickItemPrivate::get(lvwph->m_visibleItems[visibleIndex]->m_sectionItem)->culled, sectionHeaderCulled);
45+ QCOMPARE(QQuickItemPrivate::get(lvwph->m_visibleItems[visibleIndex]->sectionItem())->culled, sectionHeaderCulled);
45− QCOMPARE(sectionDelegateIndex(lvwph->m_visibleItems[visibleIndex]->m_sectionItem), lvwph->m_firstVisibleIndex + visibleIndex);
46+ QCOMPARE(sectionDelegateIndex(lvwph->m_visibleItems[visibleIndex]->sectionItem()), lvwph->m_firstVisibleIndex + visibleIndex);
46 }
47 }
47 }
48 }
48
49
@@ -109,12 +110,17 @@ private:
109 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
110 QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
110 }
111 }
111
112
113+ bool hasSectionHeaderProperty(QQuickItem *item) const
114+ {
115+ return item ? QQmlEngine::contextForObject(item)->parentContext()->contextProperty(QLatin1String("hasSectionHeader")).toBool() : false;
116+ }
117+
112− QString section(QQuickItem *item)
118+ QString section(QQuickItem *item) const
113 {
119 {
114 return item ? QQmlEngine::contextForObject(item)->parentContext()->contextProperty(QLatin1String("section")).toString() : QString();
120 return item ? QQmlEngine::contextForObject(item)->parentContext()->contextProperty(QLatin1String("section")).toString() : QString();
115 }
121 }
116
122
117− int sectionDelegateIndex(QQuickItem *item)
123+ int sectionDelegateIndex(QQuickItem *item) const
118 {
124 {
119 return item ? QQmlEngine::contextForObject(item)->parentContext()->contextProperty(QLatin1String("delegateIndex")).toInt() : -1;
125 return item ? QQmlEngine::contextForObject(item)->parentContext()->contextProperty(QLatin1String("delegateIndex")).toInt() : -1;
120 }
126 }
tests/plugins/DashViews/listviewwithpageheadertest.cpp → tests/plugins/Dash/listviewwithpageheadertest.cpprenamed

The content is the same.

tests/plugins/DashViews/listviewwithpageheadertest.qml → tests/plugins/Dash/listviewwithpageheadertest.qmlrenamed+1−1
@@ -15,7 +15,7 @@
15 */
15 */
16
16
17import QtQuick 2.0
17import QtQuick 2.0
18−import DashViews 0.1
18+import Dash 0.1
19
19
20Rectangle {
20Rectangle {
21 width: 300
21 width: 300
tests/plugins/DashViews/listviewwithpageheadertestsection.qml → tests/plugins/Dash/listviewwithpageheadertestsection.qmlrenamed+1−1
@@ -15,7 +15,7 @@
15 */
15 */
16
16
17import QtQuick 2.0
17import QtQuick 2.0
18−import DashViews 0.1
18+import Dash 0.1
19
19
20Rectangle {
20Rectangle {
21 width: 300
21 width: 300
tests/plugins/DashViews/listviewwithpageheadertestsectionexternalmodel.qml → tests/plugins/Dash/listviewwithpageheadertestsectionexternalmodel.qmlrenamed+1−1
@@ -15,7 +15,7 @@
15 */
15 */
16
16
17import QtQuick 2.0
17import QtQuick 2.0
18−import DashViews 0.1
18+import Dash 0.1
19
19
20Rectangle {
20Rectangle {
21 width: 300
21 width: 300
tests/plugins/DashViews/organicgridtest.cpp → tests/plugins/Dash/organicgridtest.cpprenamed+7−5
@@ -499,17 +499,14 @@ private Q_SLOTS:
499 QTRY_COMPARE(grid->m_firstVisibleIndex, 0);
499 QTRY_COMPARE(grid->m_firstVisibleIndex, 0);
500 QTRY_COMPARE(grid->m_visibleItems.count(), 198);
500 QTRY_COMPARE(grid->m_visibleItems.count(), 198);
501
501
502− grid->setDelegateCreationBegin(300);
502+ grid->setDisplayMarginBeginning(-300);
503− grid->setDelegateCreationEnd(400);
503+ grid->setDisplayMarginEnd(-(grid->height() - 400));
504 checkImplicitHeight(2290);
504 checkImplicitHeight(2290);
505
505
506 QTRY_COMPARE(grid->m_firstVisibleIndex, 36);
506 QTRY_COMPARE(grid->m_firstVisibleIndex, 36);
507 QTRY_COMPARE(grid->m_visibleItems.count(), 54);
507 QTRY_COMPARE(grid->m_visibleItems.count(), 54);
508 checkImplicitHeight(2290);
508 checkImplicitHeight(2290);
509
509
510− grid->resetDelegateCreationBegin();
511− grid->resetDelegateCreationEnd();
512−
513 view->resize(470, 470);
510 view->resize(470, 470);
514
511
515 grid->setSmallDelegateSize(QSizeF(90, 90));
512 grid->setSmallDelegateSize(QSizeF(90, 90));
@@ -517,6 +514,11 @@ private Q_SLOTS:
517
514
518 model->setCount(21);
515 model->setCount(21);
519
516
517+ QTRY_COMPARE(grid->m_visibleItems.count(), 0);
518+
519+ grid->setDisplayMarginBeginning(0);
520+ grid->setDisplayMarginEnd(0);
521+
520 // This is exactly the same block as the first again
522 // This is exactly the same block as the first again
521 checkInitialPositions();
523 checkInitialPositions();
522 }
524 }
tests/plugins/DashViews/organicgridtest.qml → tests/plugins/Dash/organicgridtest.qmlrenamed+1−1
@@ -15,7 +15,7 @@
15 */
15 */
16
16
17import QtQuick 2.1
17import QtQuick 2.1
18−import DashViews 0.1
18+import Dash 0.1
19
19
20Item {
20Item {
21
21
tests/plugins/DashViews/organicgridtry.cpp → tests/plugins/Dash/organicgridtry.cpprenamed

The content is the same.

tests/plugins/DashViews/organicgridtry.qml → tests/plugins/Dash/organicgridtry.qmlrenamed+23−3
@@ -15,7 +15,7 @@
15 */
15 */
16
16
17import QtQuick 2.1
17import QtQuick 2.1
18−import DashViews 0.1
18+import Dash 0.1
19
19
20Item {
20Item {
21 id: root
21 id: root
@@ -37,8 +37,28 @@ Item {
37 rowSpacing: 10
37 rowSpacing: 10
38 width: parent.width
38 width: parent.width
39 height: implicitHeight > 100 ? implicitHeight : 100
39 height: implicitHeight > 100 ? implicitHeight : 100
40− delegateCreationBegin: lvwph.contentY
40+ displayMarginBeginning: {
41− delegateCreationEnd: lvwph.contentY + lvwph.height
41+ if (grid.y + grid.height <= 0) {
42+ // Not visible (item at top of the list viewport)
43+ return -grid.height;
44+ } else if (grid.y >= lvwph.height) {
45+ // Not visible (item at bottom of the list viewport)
46+ return 0;
47+ } else {
48+ return -Math.max(-grid.y, 0);
49+ }
50+ }
51+ displayMarginEnd: {
52+ if (grid.y + grid.height <= 0) {
53+ // Not visible (item at top of the list viewport)
54+ return 0;
55+ } else if (grid.y >= lvwph.height) {
56+ // Not visible (item at bottom of the list viewport)
57+ return -grid.height;
58+ } else {
59+ return -Math.max(grid.height - lvwph.height + grid.y, 0)
60+ }
61+ }
42
62
43 delegate: Rectangle {
63 delegate: Rectangle {
44 width: 100
64 width: 100
tests/plugins/DashViews/tst_ListViewWithPageHeaderQML.qml → tests/plugins/Dash/tst_ListViewWithPageHeaderQML.qmlrenamed+1−1
@@ -16,7 +16,7 @@
16
16
17import QtQuick 2.0
17import QtQuick 2.0
18import QtTest 1.0
18import QtTest 1.0
19−import DashViews 0.1
19+import Dash 0.1
20
20
21Rectangle {
21Rectangle {
22 width: 300
22 width: 300
tests/plugins/DashViews/verticaljournaltest.cpp → tests/plugins/Dash/verticaljournaltest.cpprenamed+6−6
@@ -263,8 +263,8 @@ private Q_SLOTS:
263
263
264 void testDelegateCreationRanges()
264 void testDelegateCreationRanges()
265 {
265 {
266− vj->setDelegateCreationBegin(200);
266+ vj->setDisplayMarginBeginning(-200);
267− vj->setDelegateCreationEnd(view->height());
267+ vj->setDisplayMarginEnd(-(vj->height() - view->height()));
268
268
269 QTRY_COMPARE(vj->m_columnVisibleItems.count(), 3);
269 QTRY_COMPARE(vj->m_columnVisibleItems.count(), 3);
270 QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 4);
270 QTRY_COMPARE(vj->m_columnVisibleItems[0].count(), 4);
@@ -286,8 +286,8 @@ private Q_SLOTS:
286 verifyItem(vj->m_columnVisibleItems[1][3], 15, 160, 430, false);
286 verifyItem(vj->m_columnVisibleItems[1][3], 15, 160, 430, false);
287 QCOMPARE(vj->implicitHeight(), 690. + 4. * 690. / 16.);
287 QCOMPARE(vj->implicitHeight(), 690. + 4. * 690. / 16.);
288
288
289− vj->resetDelegateCreationBegin();
289+ vj->setDisplayMarginBeginning(0);
290− vj->resetDelegateCreationEnd();
290+ vj->setDisplayMarginEnd(0);
291
291
292 // This is exactly the same block as the first again
292 // This is exactly the same block as the first again
293 checkInitialPositions();
293 checkInitialPositions();
@@ -478,8 +478,8 @@ private Q_SLOTS:
478
478
479 void testNegativeDelegateCreationRange()
479 void testNegativeDelegateCreationRange()
480 {
480 {
481− vj->setDelegateCreationBegin(0);
481+ vj->setDisplayMarginBeginning(0);
482− vj->setDelegateCreationEnd(-100);
482+ vj->setDisplayMarginEnd(-(vj->height() + 100));
483
483
484 QStringList heightList;
484 QStringList heightList;
485 heightList << "100" << "50" << "50" << "30";
485 heightList << "100" << "50" << "50" << "30";
tests/plugins/DashViews/verticaljournaltest.qml → tests/plugins/Dash/verticaljournaltest.qmlrenamed+1−1
@@ -15,7 +15,7 @@
15 */
15 */
16
16
17import QtQuick 2.1
17import QtQuick 2.1
18−import DashViews 0.1
18+import Dash 0.1
19
19
20Item {
20Item {
21
21
tests/plugins/DashViews/verticaljournaltry.cpp → tests/plugins/Dash/verticaljournaltry.cpprenamed

The content is the same.

tests/plugins/DashViews/verticaljournaltry.qml → tests/plugins/Dash/verticaljournaltry.qmlrenamed+24−3
@@ -15,7 +15,7 @@
15 */
15 */
16
16
17import QtQuick 2.1
17import QtQuick 2.1
18−import DashViews 0.1
18+import Dash 0.1
19
19
20Item {
20Item {
21 id: root
21 id: root
@@ -36,8 +36,29 @@ Item {
36 rowSpacing: 10
36 rowSpacing: 10
37 width: parent.width
37 width: parent.width
38 height: implicitHeight > 100 ? implicitHeight : 100
38 height: implicitHeight > 100 ? implicitHeight : 100
39− delegateCreationBegin: lvwph.contentY
39+
40− delegateCreationEnd: lvwph.contentY + lvwph.height
40+ displayMarginBeginning: {
41+ if (vj.y + vj.height <= 0) {
42+ // Not visible (item at top of the list viewport)
43+ return -vj.height;
44+ } else if (vj.y >= lvwph.height) {
45+ // Not visible (item at bottom of the list viewport)
46+ return 0;
47+ } else {
48+ return -Math.max(-vj.y, 0);
49+ }
50+ }
51+ displayMarginEnd: {
52+ if (vj.y + vj.height <= 0) {
53+ // Not visible (item at top of the list viewport)
54+ return 0;
55+ } else if (vj.y >= lvwph.height) {
56+ // Not visible (item at bottom of the list viewport)
57+ return -vj.height;
58+ } else {
59+ return -Math.max(vj.height - lvwph.height + vj.y, 0)
60+ }
61+ }
41
62
42 delegate: Rectangle {
63 delegate: Rectangle {
43 width: 100
64 width: 100
tests/plugins/Unity/Indicators/rootactionstatetest.cpp+37
@@ -21,6 +21,7 @@
21
21
22#include <unitymenumodel.h>
22#include <unitymenumodel.h>
23#include <QtTest>
23#include <QtTest>
24+#include <gio/gio.h>
24
25
25class RootActionStateTest : public QObject
26class RootActionStateTest : public QObject
26{
27{
@@ -52,6 +53,42 @@ private Q_SLOTS:
52 QVERIFY(rootState->menu() == NULL);
53 QVERIFY(rootState->menu() == NULL);
53 delete rootState;
54 delete rootState;
54 }
55 }
56+
57+ void testToQVariantIcons()
58+ {
59+ GVariantBuilder builderIcons;
60+ g_variant_builder_init(&builderIcons, G_VARIANT_TYPE("av"));
61+ for (int i = 0; i < 3; i ++) {
62+
63+ GIcon* icon = NULL;
64+ icon = g_icon_new_for_string (QString("testIcon%1").arg(i).toUtf8().constData(), NULL);
65+
66+ g_variant_builder_add(&builderIcons,
67+ "v",
68+ g_icon_serialize (icon));
69+ g_object_unref(icon);
70+ }
71+
72+ GVariantBuilder builderParams;
73+ g_variant_builder_init(&builderParams, G_VARIANT_TYPE_ARRAY);
74+ GVariant* icons = g_variant_builder_end (&builderIcons);
75+ g_variant_ref_sink (icons);
76+ g_variant_builder_add (&builderParams, "{sv}", g_strdup ("icons"), icons, NULL);
77+
78+ GVariant* params = g_variant_builder_end (&builderParams);
79+
80+ RootActionState rootState;
81+ QVariant result = rootState.toQVariant(params);
82+ g_variant_unref(params);
83+
84+ QVariantMap paramResult = result.toMap();
85+ QVERIFY(paramResult.contains("icons"));
86+
87+ QStringList serializedIcons = paramResult["icons"].toStringList();
88+ QVERIFY(serializedIcons[0] == "image://theme/testIcon0");
89+ QVERIFY(serializedIcons[1] == "image://theme/testIcon1");
90+ QVERIFY(serializedIcons[2] == "image://theme/testIcon2");
91+ }
55};
92};
56
93
57QTEST_GUILESS_MAIN(RootActionStateTest)
94QTEST_GUILESS_MAIN(RootActionStateTest)
tests/plugins/Unity/Launcher/CMakeLists.txt+1−1
@@ -49,7 +49,7 @@ add_executable(launchermodeltestExec
49 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationManagerInterface.h
49 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationManagerInterface.h
50 ${LAUNCHER_API_INCLUDEDIR}/unity/shell/application/ApplicationInfoInterface.h
50 ${LAUNCHER_API_INCLUDEDIR}/unity/shell/application/ApplicationInfoInterface.h
51 )
51 )
52−target_link_libraries(launchermodeltestExec ${GSETTINGS_QT_LDFLAGS} )
52+target_link_libraries(launchermodeltestExec ${GSETTINGS_QT_LDFLAGS})
53qt5_use_modules(launchermodeltestExec Test Core DBus)
53qt5_use_modules(launchermodeltestExec Test Core DBus)
54
54
55# copy .desktop files into build directory for shadow builds
55# copy .desktop files into build directory for shadow builds
tests/plugins/Unity/Launcher/launchermodeltest.cpp+9
@@ -274,6 +274,15 @@ private Q_SLOTS:
274 QCOMPARE(launcherModel->rowCount(QModelIndex()), 1);
274 QCOMPARE(launcherModel->rowCount(QModelIndex()), 1);
275 QCOMPARE(launcherModel->get(0)->appId(), QLatin1String("abs-icon"));
275 QCOMPARE(launcherModel->get(0)->appId(), QLatin1String("abs-icon"));
276 }
276 }
277+
278+ void testGetUrlForAppId() {
279+ QCOMPARE(launcherModel->getUrlForAppId(QString()), QString());
280+ QCOMPARE(launcherModel->getUrlForAppId(""), QString());
281+ QCOMPARE(launcherModel->getUrlForAppId("no-name"), QString("application:///no-name.desktop"));
282+ QCOMPARE(launcherModel->getUrlForAppId("com.test.good"), QString("appid://com.test.good/first-listed-app/current-user-version"));
283+ QCOMPARE(launcherModel->getUrlForAppId("com.test.good_application"), QString("appid://com.test.good/application/current-user-version"));
284+ QCOMPARE(launcherModel->getUrlForAppId("com.test.good_application_1.2.3"), QString("appid://com.test.good/application/current-user-version"));
285+ }
277};
286};
278
287
279QTEST_GUILESS_MAIN(LauncherModelTest)
288QTEST_GUILESS_MAIN(LauncherModelTest)
tests/qmltests/CMakeLists.txt+35−46
@@ -4,6 +4,7 @@ include(QmlTest)
4add_subdirectory(Components)
4add_subdirectory(Components)
5
5
6set(qmltest_DEFAULT_IMPORT_PATHS
6set(qmltest_DEFAULT_IMPORT_PATHS
7+ ${CMAKE_BINARY_DIR}/plugins
7 ${CMAKE_BINARY_DIR}/tests/utils/modules
8 ${CMAKE_BINARY_DIR}/tests/utils/modules
8 ${CMAKE_BINARY_DIR}/tests/mocks
9 ${CMAKE_BINARY_DIR}/tests/mocks
9)
10)
@@ -23,65 +24,53 @@ add_qml_test(. Shell IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_
23add_qml_test(Components Carousel)
24add_qml_test(Components Carousel)
24add_qml_test(Components DraggingArea)
25add_qml_test(Components DraggingArea)
25add_qml_test(Components EdgeDemoOverlay)
26add_qml_test(Components EdgeDemoOverlay)
26−add_qml_test(Components FilterGrid IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/plugins)
27+add_qml_test(Components FilterGrid)
27add_qml_test(Components LazyImage)
28add_qml_test(Components LazyImage)
28add_qml_test(Components Rating)
29add_qml_test(Components Rating)
29add_qml_test(Components ResponsiveFlowView)
30add_qml_test(Components ResponsiveFlowView)
30add_qml_test(Components ResponsiveGridView)
31add_qml_test(Components ResponsiveGridView)
31−add_qml_test(Components Revealer)
32add_qml_test(Components SeeMore)
32add_qml_test(Components SeeMore)
33add_qml_test(Components Showable)
33add_qml_test(Components Showable)
34add_qml_test(Components PageHeaderLabel)
34add_qml_test(Components PageHeaderLabel)
35add_qml_test(Components ZoomableImage)
35add_qml_test(Components ZoomableImage)
36−add_qml_test(Dash Dash IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS})
36+add_qml_test(Dash Dash)
37−add_qml_test(Dash DashContent IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS})
37+add_qml_test(Dash DashContent)
38add_qml_test(Dash Card)
38add_qml_test(Dash Card)
39add_qml_benchmark(Dash CardBenchmark 1000)
39add_qml_benchmark(Dash CardBenchmark 1000)
40−add_qml_test(Dash CardHeader)
41add_qml_test(Dash CardTool)
40add_qml_test(Dash CardTool)
42−add_qml_test(Dash GenericScopeView IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS})
41+add_qml_test(Dash GenericScopeView)
43−add_qml_test(Dash/Apps RunningApplicationsGrid IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS}
42+add_qml_test(Dash/Apps RunningApplicationsGrid)
44− ${CMAKE_BINARY_DIR}/tests/mocks
45− ${CMAKE_BINARY_DIR}/plugins)
46−add_qml_test(Dash/Previews Preview IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
43+add_qml_test(Dash/Previews Preview)
47−add_qml_test(Dash/Previews PreviewActions IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
44+add_qml_test(Dash/Previews PreviewActions)
48−add_qml_test(Dash/Previews PreviewAudioPlayback IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
45+add_qml_test(Dash/Previews PreviewAudioPlayback)
49−add_qml_test(Dash/Previews PreviewHeader IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
46+add_qml_test(Dash/Previews PreviewHeader)
50−add_qml_test(Dash/Previews PreviewImageGallery IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
47+add_qml_test(Dash/Previews PreviewImageGallery)
51−add_qml_test(Dash/Previews PreviewProgress IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
48+add_qml_test(Dash/Previews PreviewProgress)
52−add_qml_test(Dash/Previews PreviewRatingDisplay IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
49+add_qml_test(Dash/Previews PreviewRatingDisplay)
53−add_qml_test(Dash/Previews PreviewRatingInput IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
50+add_qml_test(Dash/Previews PreviewRatingInput)
54−add_qml_test(Dash/Previews PreviewTextSummary IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
51+add_qml_test(Dash/Previews PreviewTextSummary)
55−add_qml_test(Dash/Previews PreviewVideoPlayback IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
52+add_qml_test(Dash/Previews PreviewVideoPlayback)
56−add_qml_test(Dash/Previews PreviewWidgetFactory IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
53+add_qml_test(Dash/Previews PreviewWidgetFactory)
57−add_qml_test(Dash/Previews PreviewZoomableImage IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
54+add_qml_test(Dash/Previews PreviewZoomableImage)
58−add_qml_test(Greeter Lockscreen IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS}
59− PROPERTIES ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics:${CMAKE_BINARY_DIR}/tests/mocks/LightDM/full")
55+add_qml_test(Greeter Lockscreen ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics:${CMAKE_BINARY_DIR}/tests/mocks/LightDM/full")
60−add_qml_test(Greeter Tablet IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS}
61− ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics:${CMAKE_BINARY_DIR}/tests/mocks/LightDM/full")
56+add_qml_test(Greeter MultiGreeter ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics:${CMAKE_BINARY_DIR}/tests/mocks/LightDM/full")
62−add_qml_test(Greeter Phone IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS}
63− ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics:${CMAKE_BINARY_DIR}/tests/mocks/LightDM/single")
57+add_qml_test(Greeter SingleGreeter ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics:${CMAKE_BINARY_DIR}/tests/mocks/LightDM/single")
64−add_qml_test(Greeter Infographics IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS}
65− ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics:${CMAKE_BINARY_DIR}/tests/mocks/LightDM/full")
58+add_qml_test(Greeter Infographics ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics:${CMAKE_BINARY_DIR}/tests/mocks/LightDM/full")
66−add_qml_test(Greeter Clock IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS}
67− ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/QMenuModel")
59+add_qml_test(Greeter Clock ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/QMenuModel")
68add_qml_test(Hud Hud)
60add_qml_test(Hud Hud)
69add_qml_test(Hud Result)
61add_qml_test(Hud Result)
70−add_qml_test(Launcher Launcher IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS})
62+add_qml_test(Launcher Launcher)
71−add_qml_test(Notifications Notifications IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/plugins)
63+add_qml_test(Notifications Notifications)
72−add_qml_test(Notifications VisualSnapDecisionsQueue IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/plugins)
64+add_qml_test(Notifications VisualSnapDecisionsQueue)
73add_qml_test(Panel ActiveCallHint)
65add_qml_test(Panel ActiveCallHint)
74add_qml_test(Panel IndicatorRow)
66add_qml_test(Panel IndicatorRow)
75−add_qml_test(Panel Indicators IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS})
67+add_qml_test(Panel Indicators)
76−add_qml_test(Panel MenuContent IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS})
68+add_qml_test(Panel MenuContent)
77−add_qml_test(Panel Panel IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS})
69+add_qml_test(Panel Panel)
78add_qml_test(Panel SearchIndicator)
70add_qml_test(Panel SearchIndicator)
79−add_qml_test(Panel/Indicators DefaultIndicatorWidget IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS}
80− ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/QMenuModel")
71+add_qml_test(Panel/Indicators DefaultIndicatorWidget ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/QMenuModel")
81−add_qml_test(Panel/Indicators DefaultIndicatorPage IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS}
82− ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/QMenuModel")
72+add_qml_test(Panel/Indicators DefaultIndicatorPage ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/QMenuModel")
73+# These MenuItemFactory tests need the test/mocks/ to come before plugins/
83−add_qml_test(Panel/Indicators MenuItemFactory IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/plugins)
74+add_qml_test(Panel/Indicators MenuItemFactory IMPORT_PATHS ${CMAKE_BINARY_DIR}/tests/mocks ${qmltest_DEFAULT_IMPORT_PATHS})
84−add_qml_test(Panel/Indicators MessageMenuItemFactory IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/plugins)
75+add_qml_test(Panel/Indicators MessageMenuItemFactory IMPORT_PATHS ${CMAKE_BINARY_DIR}/tests/mocks ${qmltest_DEFAULT_IMPORT_PATHS})
85−add_qml_test(Stages PhoneStage IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS}
76+add_qml_test(Stages PhoneStage)
86− ${CMAKE_BINARY_DIR}/tests/mocks
87− ${CMAKE_BINARY_DIR}/plugins)
tests/qmltests/Components/RevealingRectangle.qmldeleted−78
@@ -1,78 +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−import "../../../qml/Components"
20−
21−Item {
22− id: revealingRectangle
23−
24− property int orientation: Qt.Vertical
25− property int direction: Qt.LeftToRight
26− property Revealer revealer: __revealer
27− property Showable showable: __showable
28−
29− Revealer {
30− id: __revealer
31−
32− target: __showable
33− width: target.width
34− height: target.height
35− x: orientation == Qt.Vertical ? 0 : direction == Qt.LeftToRight ? 0 : parent.width - width
36− y: orientation == Qt.Horizontal ? 0 : direction == Qt.LeftToRight ? 0 : parent.height - height
37− handleSize: orientation == Qt.Vertical ? handle.height : handle.width
38− hintDisplacement: handleSize
39− orientation: revealingRectangle.orientation
40− direction: revealingRectangle.direction
41− }
42−
43− Showable {
44− id: __showable
45−
46− width: orientation == Qt.Horizontal ? units.gu(24) : parent.width
47− height: orientation == Qt.Vertical ? units.gu(24) : parent.height
48−
49− shown: false
50− showAnimation: SmoothedAnimation {
51− property: orientation == Qt.Horizontal ? "x" : "y"
52− velocity: __revealer.dragVelocity
53− duration: 200
54− to: __revealer.openedValue
55− }
56− hideAnimation: SmoothedAnimation {
57− property: orientation == Qt.Horizontal ? "x" : "y"
58− velocity: __revealer.dragVelocity
59− duration: 200
60− to: __revealer.closedValue
61− }
62−
63− Rectangle {
64− anchors.fill: parent
65− color: "red"
66− }
67−
68− Rectangle {
69− id: handle
70−
71− x: orientation == Qt.Vertical ? 0 : direction == Qt.LeftToRight ? parent.width - width : 0
72− y: orientation == Qt.Horizontal ? 0 : direction == Qt.LeftToRight ? parent.height - height : 0
73− width: orientation == Qt.Horizontal ? units.gu(2) : parent.width
74− height: orientation == Qt.Vertical ? units.gu(2) : parent.height
75− color: "black"
76− }
77− }
78−}
tests/qmltests/Components/tst_LazyImage.qml+1−1
@@ -113,7 +113,7 @@ Rectangle {
113 }
113 }
114
114
115 UT.UnityTestCase {
115 UT.UnityTestCase {
116− name: "Stage"
116+ name: "LazyImage"
117 when: windowShown
117 when: windowShown
118
118
119 function cleanup() {
119 function cleanup() {
tests/qmltests/Components/tst_PageHeaderLabel.qml+4−4
@@ -26,7 +26,7 @@ Item {
26 width: units.gu(110)
26 width: units.gu(110)
27 height: units.gu(30)
27 height: units.gu(30)
28
28
29− Scope {
29+ MockScope {
30 id: scopeMock
30 id: scopeMock
31 }
31 }
32
32
@@ -148,17 +148,17 @@ Item {
148
148
149 pageHeader.triggerSearch()
149 pageHeader.triggerSearch()
150
150
151− scopeMock.searchInProgress = false
151+ scopeMock.setSearchInProgress(false);
152 compare(searchIndicator.running, false, "Search indicator is running.")
152 compare(searchIndicator.running, false, "Search indicator is running.")
153 tryCompare(primaryImage, "visible", true)
153 tryCompare(primaryImage, "visible", true)
154
154
155− scopeMock.searchInProgress = true
155+ scopeMock.setSearchInProgress(true);
156 compare(searchIndicator.running, true, "Search indicator isn't running.")
156 compare(searchIndicator.running, true, "Search indicator isn't running.")
157 tryCompare(primaryImage, "visible", false)
157 tryCompare(primaryImage, "visible", false)
158 }
158 }
159
159
160 function cleanup() {
160 function cleanup() {
161− scopeMock.searchInProgress = false;
161+ scopeMock.setSearchInProgress(false);
162 pageHeader.resetSearch();
162 pageHeader.resetSearch();
163 }
163 }
164
164
tests/qmltests/Components/tst_Revealer.qmldeleted−262
@@ -1,262 +0,0 @@
1−/*
2− * Copyright 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 QtTest 1.0
19−import Unity.Test 0.1 as UT
20−import ".."
21−
22−/*
23− There's a revealer on each window edge. If you press and hold any edge you
24− should see a black bar appearing from that edge. If you them slide the
25− pointer/finger towards the opposite edge, that black bar should follow
26− the movement up to around the center of the window. Next to the black bar,
27− which represents the "handle" area of the Revealer, You should see a red rectangle,
28− which is the main body of the Showable concrolled by the Revealer (Showable = red
29− + black rects).
30− */
31−Item {
32− width: units.gu(75)
33− height: units.gu(50)
34−
35− RevealingRectangle {
36− id: topRevealingRectangle
37− anchors.fill: parent
38− orientation: Qt.Vertical
39− direction: Qt.LeftToRight
40− }
41−
42− RevealingRectangle {
43− id: bottomRevealingRectangle
44− anchors.fill: parent
45− orientation: Qt.Vertical
46− direction: Qt.RightToLeft
47− }
48−
49− RevealingRectangle {
50− id: leftRevealingRectangle
51− anchors.fill: parent
52− orientation: Qt.Horizontal
53− direction: Qt.LeftToRight
54− }
55−
56− RevealingRectangle {
57− id: rightRevealingRectangle
58− anchors.fill: parent
59− orientation: Qt.Horizontal
60− direction: Qt.RightToLeft
61− }
62−
63− UT.UnityTestCase {
64− name: "Revealer"
65− when: windowShown
66−
67− /*
68− A bit of the showable should be displayed when you press over the
69− handle area of the Revealer.
70−
71− Once released, it should go out of sight again.
72− */
73− function test_showHintOnPress() {
74− var revealer = topRevealingRectangle.revealer
75− var showable = topRevealingRectangle.showable
76−
77− // It starts out of sight
78− compare(showable.y, -showable.height)
79−
80− // (item, x, y, button, modifiers, delay)
81− mousePress(revealer,
82− revealer.width/2,
83− revealer.handleSize/2,
84− Qt.LeftButton, Qt.NoModifier, 0);
85−
86− tryCompare(showable, "y", -showable.height + revealer.handleSize)
87−
88− // (item, x, y, button, modifiers, delay)
89− mouseRelease(revealer,
90− revealer.width/2,
91− revealer.handleSize/2,
92− Qt.LeftButton, Qt.NoModifier, 0);
93−
94− tryCompare(showable, "y", -showable.height)
95− }
96−
97− /*
98− Press over the handle area of the Revealer and drag it to pull
99− its target Showable. Release it half-way and the Showable will
100− continue moving by itself until it's completely shown.
101−
102−
103− Press over the handle area and drag it back to hide the Showable.
104− Release it half-way and it will continue moving by itself until it's
105− completely hidden again.
106− */
107− function test_dragToRevealAndDragBackToHide_top() {
108− var revealer = topRevealingRectangle.revealer
109− var showable = topRevealingRectangle.showable
110− revealer.__dateTime = fakeDateTime
111−
112− // It starts out of sight
113− compare(showable.y, -showable.height)
114−
115− mouseFlick(revealer,
116− revealer.width/2, // from_x
117− revealer.handleSize/2, // from_y
118− revealer.width/2, // to_x
119− showable.height/2); // to_y
120−
121− // Should eventually get fully extended
122− tryCompare(showable, "y", 0)
123−
124− // Now drag it back to get it hidden
125−
126− mouseFlick(revealer,
127− revealer.width/2,
128− showable.height - (revealer.handleSize/2),
129− revealer.width/2,
130− showable.height/2)
131−
132− // Should eventually be completely out of sight
133− tryCompare(showable, "y", -showable.height)
134− }
135−
136− function test_dragToRevealAndDragBackToHide_bottom() {
137− var revealer = bottomRevealingRectangle.revealer
138− var showable = bottomRevealingRectangle.showable
139− var revRect = bottomRevealingRectangle
140− revealer.__dateTime = fakeDateTime
141−
142− // It starts out of sight
143− compare(showable.y, revRect.height)
144−
145− mouseFlick(revealer,
146− revealer.width/2, // from_x
147− revealer.height - revealer.handleSize/2, // from_y
148− revealer.width/2, // to_x
149− revealer.height - showable.height/2); // to_y
150−
151− // Should eventually get fully extended
152− tryCompare(showable, "y", revRect.height - showable.height)
153−
154− // Now drag it back to get it hidden
155−
156− mouseFlick(revealer,
157− revealer.width/2,
158− revealer.handleSize/2,
159− revealer.width/2,
160− revealer.height - showable.height/2)
161−
162− // Should eventually be completely out of sight
163− tryCompare(showable, "y", revRect.height)
164− }
165−
166− function test_dragToRevealAndDragBackToHide_left() {
167− var revealer = leftRevealingRectangle.revealer
168− var showable = leftRevealingRectangle.showable
169− revealer.__dateTime = fakeDateTime
170−
171− // It starts out of sight
172− compare(showable.x, -showable.width)
173−
174− mouseFlick(revealer,
175− revealer.handleSize/2, // from_x
176− revealer.height/2, // from_y
177− showable.width/2, // to_x
178− revealer.height/2) // to_y
179−
180− // Should eventually get fully extended
181− tryCompare(showable, "x", 0)
182−
183− // Now drag it back to get it hidden
184−
185− mouseFlick(revealer,
186− showable.width - (revealer.handleSize/2),
187− revealer.height/2,
188− showable.width/2,
189− revealer.height/2)
190−
191− // Should eventually be completely out of sight
192− tryCompare(showable, "x", -showable.width)
193− }
194−
195− function test_dragToRevealAndDragBackToHide_right() {
196− var revealer = rightRevealingRectangle.revealer
197− var showable = rightRevealingRectangle.showable
198− var revRect = rightRevealingRectangle
199− revealer.__dateTime = fakeDateTime
200−
201− // It starts out of sight
202− compare(showable.x, revRect.width)
203−
204− mouseFlick(revealer,
205− revealer.width - revealer.handleSize/2, // from_x
206− revealer.height/2, // from_y
207− revealer.width - showable.width/2, // to_x
208− revealer.height/2) // to_y
209−
210− // Should eventually get fully extended
211− tryCompare(showable, "x", revRect.width - showable.width)
212−
213− // Now drag it back to get it hidden
214−
215− mouseFlick(revealer,
216− revealer.handleSize/2,
217− revealer.height/2,
218− revealer.width - showable.width/2,
219− revealer.height/2)
220−
221− // Should eventually be completely out of sight
222− tryCompare(showable, "x", revRect.width)
223− }
224−
225− /*
226− Start dragging down (pulling the showable into view) and then,
227− midway, drag a bit upwards and release it.
228− The showable should keep moving away, ending up hidden again.
229− */
230− function test_dragForthAndBackReturnsOriginalState() {
231− var revealer = topRevealingRectangle.revealer
232− var showable = topRevealingRectangle.showable
233− revealer.__dateTime = fakeDateTime
234−
235− // It starts out of sight
236− compare(showable.y, -showable.height)
237−
238− mouseFlick(revealer,
239− revealer.width/2, // from_x
240− revealer.handleSize/2, // from_y
241− revealer.width/2, // to_x
242− showable.height/2, // to_y
243− true /* do press */, false /* don't release */);
244−
245− // Should be about half-extended
246− verify(showable.y > -showable.height*3/4)
247− verify(showable.y < -showable.height*1/4)
248−
249−
250− // Now drag it back a bit
251− mouseFlick(revealer,
252− revealer.width/2, // from_x
253− showable.height/2, // from_y
254− revealer.width/2, // to_x
255− showable.height/4, // to_y
256− false /* don't press */, true /* do release */);
257−
258− // Should eventually be completely out of sight again
259− tryCompare(showable, "y", -showable.height)
260− }
261− }
262−}
tests/qmltests/Components/tst_ZoomableImage.qml+21−19
@@ -98,22 +98,23 @@ Rectangle {
98 // move mouse to center
98 // move mouse to center
99 mouseMove(zoomableImage, zoomableImage.width / 2, zoomableImage.height / 2);
99 mouseMove(zoomableImage, zoomableImage.width / 2, zoomableImage.height / 2);
100
100
101+ var oldScale = image.scale;
101 // Test Zoom-in Zoom-out twice.
102 // Test Zoom-in Zoom-out twice.
102 for (var c=0; c<2; c++) {
103 for (var c=0; c<2; c++) {
103 // zoom in
104 // zoom in
104 for (var i=0; i<10; i++) {
105 for (var i=0; i<10; i++) {
105 mouseWheel(zoomableImage, zoomableImage.width / 2, zoomableImage.height / 2, 0, 10);
106 mouseWheel(zoomableImage, zoomableImage.width / 2, zoomableImage.height / 2, 0, 10);
106− tryCompare(image, "scale", 1.0 + (i + 1) * 0.1);
107+ tryCompare(image, "scale", oldScale + (i + 1) * 0.1);
107− compare(flickable.contentWidth, lazyImage.width * image.scale);
108+ compare(flickable.contentWidth, Math.max(lazyImage.width * image.scale, flickable.width));
108− compare(flickable.contentHeight, lazyImage.height * image.scale);
109+ compare(flickable.contentHeight, Math.max(lazyImage.height * image.scale, flickable.height));
109 }
110 }
110
111
111 // zoom out
112 // zoom out
112 for (var i=0; i<10; i++) {
113 for (var i=0; i<10; i++) {
113 mouseWheel(zoomableImage, zoomableImage.width / 2, zoomableImage.height / 2, 0, -10);
114 mouseWheel(zoomableImage, zoomableImage.width / 2, zoomableImage.height / 2, 0, -10);
114− tryCompare(image, "scale", 2.0 - (i + 1) * 0.1);
115+ tryCompare(image, "scale", oldScale + 1.0 - (i + 1) * 0.1);
115− compare(flickable.contentWidth, lazyImage.width * image.scale);
116+ compare(flickable.contentWidth, Math.max(lazyImage.width * image.scale, flickable.width));
116− compare(flickable.contentHeight, lazyImage.height * image.scale);
117+ compare(flickable.contentHeight, Math.max(lazyImage.height * image.scale, flickable.height));
117 }
118 }
118 }
119 }
119 }
120 }
@@ -123,16 +124,12 @@ Rectangle {
123 zoomable:false,
124 zoomable:false,
124 answer1: true,
125 answer1: true,
125 answer2: false,
126 answer2: false,
126− answer3: true,
127+ answer3: true },
127− answer4: 1.0,
128− answer5: 1.0 },
129 { source:widgetData2["source"],
128 { source:widgetData2["source"],
130 zoomable:true,
129 zoomable:true,
131 answer1: false,
130 answer1: false,
132 answer2: true,
131 answer2: true,
133− answer3: false,
132+ answer3: false }
134− answer4: 1.7740461882048026,
135− answer5: 1.0 }
136 ]
133 ]
137 }
134 }
138
135
@@ -163,7 +160,7 @@ Rectangle {
163 var y2End = zoomableImage.height * 5 / 6;
160 var y2End = zoomableImage.height * 5 / 6;
164
161
165 var oldScale = image.scale;
162 var oldScale = image.scale;
166−
163+ var newScale = -1;
167 // move mouse to center
164 // move mouse to center
168 mouseMove(zoomableImage, zoomableImage.width / 2, zoomableImage.height / 2);
165 mouseMove(zoomableImage, zoomableImage.width / 2, zoomableImage.height / 2);
169
166
@@ -172,20 +169,25 @@ Rectangle {
172 wait(3000); // have to delay between two consequent pinch event.
169 wait(3000); // have to delay between two consequent pinch event.
173 // pinch zoom-in
170 // pinch zoom-in
174 touchPinch(zoomableImage, x1Start, y1Start, x1End, y1End, x2Start, y2Start, x2End, y2End);
171 touchPinch(zoomableImage, x1Start, y1Start, x1End, y1End, x2Start, y2Start, x2End, y2End);
172+ waitForRendering(image);
175
173
176− tryCompare(image, "scale", data.answer4);
174+ if (newScale == -1) {
177− var newScale = image.scale;
175+ newScale = image.scale;
176+ }
177+ tryCompare(image, "scale", newScale);
178 compare(newScale == oldScale, data.answer1, "scale factor not equal: "+ oldScale + "=?" + newScale);
178 compare(newScale == oldScale, data.answer1, "scale factor not equal: "+ oldScale + "=?" + newScale);
179 compare(newScale > oldScale, data.answer2, "scale factor didn't changed");
179 compare(newScale > oldScale, data.answer2, "scale factor didn't changed");
180 compare(signalSpy.count == 0, data.answer3, "scale signal count error");
180 compare(signalSpy.count == 0, data.answer3, "scale signal count error");
181− compare(newScale, data.answer4, "scale factor error");
181+ compare(image.scale, newScale, "scale factor error");
182− compare(flickable.contentWidth, lazyImage.width * image.scale);
182+ compare(flickable.contentWidth, Math.max(lazyImage.width * image.scale, flickable.width));
183− compare(flickable.contentHeight, lazyImage.height * image.scale);
183+ compare(flickable.contentHeight, Math.max(lazyImage.height * image.scale, flickable.height));
184
184
185 wait(3000); // have to delay between two consequent pinch event.
185 wait(3000); // have to delay between two consequent pinch event.
186 // pinch zoom-out
186 // pinch zoom-out
187 touchPinch(zoomableImage, x1End, y1End, x1Start, y1Start, x2End, y2End, x2Start, y2Start);
187 touchPinch(zoomableImage, x1End, y1End, x1Start, y1Start, x2End, y2End, x2Start, y2Start);
188− tryCompare(image, "scale", data.answer5);
188+ tryCompare(image, "scale", oldScale);
189+ compare(flickable.contentWidth, Math.max(lazyImage.width * image.scale, flickable.width));
190+ compare(flickable.contentHeight, Math.max(lazyImage.height * image.scale, flickable.height));
189 }
191 }
190 }
192 }
191 }
193 }
tests/qmltests/Dash/Previews/tst_Preview.qml+1−1
@@ -23,7 +23,7 @@ import Unity 0.2 as Unity
23Rectangle {
23Rectangle {
24 id: root
24 id: root
25 width: units.gu(60)
25 width: units.gu(60)
26− height: units.gu(80)
26+ height: units.gu(60)
27 color: Theme.palette.selected.background
27 color: Theme.palette.selected.background
28
28
29 Item {
29 Item {
tests/qmltests/Dash/Previews/tst_PreviewHeader.qml+71−4
@@ -24,6 +24,12 @@ Rectangle {
24 width: units.gu(60)
24 width: units.gu(60)
25 height: units.gu(80)
25 height: units.gu(80)
26
26
27+ property var origHeaderjson: {
28+ "title": "THE TITLE",
29+ "subtitle": "Something catchy",
30+ "mascot": "../graphics/play_button.png"
31+ }
32+
27 property var headerjson: {
33 property var headerjson: {
28 "title": "THE TITLE",
34 "title": "THE TITLE",
29 "subtitle": "Something catchy",
35 "subtitle": "Something catchy",
@@ -43,14 +49,75 @@ Rectangle {
43 }
49 }
44
50
45 UT.UnityTestCase {
51 UT.UnityTestCase {
52+ id: testCase
46 name: "PreviewHeaderTest"
53 name: "PreviewHeaderTest"
47 when: windowShown
54 when: windowShown
48
55
56+ property Item mascotShapeLoader: findChild(previewHeader, "mascotShapeLoader")
57+ property Item outerRow: findChild(previewHeader, "outerRow")
58+ property Item column: findChild(previewHeader, "column")
59+
60+ function initTestCase() {
61+ verify(typeof testCase.mascotShapeLoader === "object", "Couldn't find mascot loader object.");
62+ verify(typeof testCase.outerRow === "object", "Couldn't find outerRow object.");
63+ verify(typeof testCase.column === "object", "Couldn't find column object.");
64+
65+ headerjson.mascot = "";
66+ headerjson.title = "";
67+ headerjson.subtitle = "";
68+ previewHeader.widgetData = headerjson;
69+ }
70+
71+ function test_mascot_data() {
72+ return [
73+ { tag: "Empty", source: "", loaderVisible: false, visible: false },
74+ { tag: "Invalid", source: "bad_path", loaderVisible: true, visible: false },
75+ { tag: "Valid", source: "../graphics/play_button.png", loaderVisible: true, visible: true },
76+ ]
77+ }
78+
79+ function test_mascot(data) {
80+ headerjson.mascot = data.source;
81+ previewHeader.widgetData = headerjson;
82+
83+ tryCompare(testCase.mascotShapeLoader, "visible", data.loaderVisible);
84+ if (data.loaderVisible) {
85+ tryCompareFunction(function() { return findChild(previewHeader, "mascotShape") != null }, true);
86+ var mascot = findChild(previewHeader, "mascotShape")
87+ tryCompare(mascot, "visible", data.visible);
88+ }
89+ }
90+
91+ function test_dimensions_data() {
92+ return [
93+ { tag: "Column width with mascot", object: column, width: previewHeader.width - mascotShapeLoader.width - outerRow.margins * 3, mascot: "artwork/avatar.png" },
94+ { tag: "Header height", object: previewHeader, height: function() { return outerRow.height + outerRow.margins * 2 } },
95+ ]
96+ }
97+
98+ function test_dimensions(data) {
99+ if (data.hasOwnProperty("mascot")) {
100+ headerjson.mascot = data.mascot;
101+ }
102+ previewHeader.widgetData = headerjson;
103+
104+ if (data.hasOwnProperty("width")) {
105+ tryCompare(data.object, "width", data.width);
106+ }
107+
108+ if (data.hasOwnProperty("height")) {
109+ tryCompareFunction(function() { return data.object.height === data.height() }, true);
110+ }
111+ }
112+
49 function test_json() {
113 function test_json() {
114+ headerjson = origHeaderjson;
115+ previewHeader.widgetData = headerjson;
116+
50− var cardHeader = findChild(previewHeader, "cardHeader");
117+ var innerPreviewHeader = findChild(previewHeader, "innerPreviewHeader");
51− compare(cardHeader.title, "THE TITLE");
118+ compare(innerPreviewHeader.title, "THE TITLE");
52− compare(cardHeader.subtitle, "Something catchy");
119+ compare(innerPreviewHeader.subtitle, "Something catchy");
53− compare(cardHeader.mascot.toString().slice(-24), "graphics/play_button.png");
120+ compare(innerPreviewHeader.mascot.toString().slice(-24), "graphics/play_button.png");
54 }
121 }
55 }
122 }
56}
123}
tests/qmltests/Dash/Previews/tst_PreviewTextSummary.qml+5−5
@@ -42,7 +42,7 @@ Rectangle {
42
42
43 PreviewTextSummary {
43 PreviewTextSummary {
44 id: previewTextSummary
44 id: previewTextSummary
45− anchors.fill: parent
45+ anchors { left: parent.left; right: parent.right }
46 widgetData: widgetDataComplete
46 widgetData: widgetDataComplete
47 }
47 }
48
48
@@ -51,6 +51,7 @@ Rectangle {
51 when: windowShown
51 when: windowShown
52
52
53 property var textLabel: findChild(previewTextSummary, "textLabel")
53 property var textLabel: findChild(previewTextSummary, "textLabel")
54+ property var titleLabel: findChild(previewTextSummary, "titleLabel")
54
55
55 function init() {
56 function init() {
56 verify(typeof textLabel === "object", "TextLabel object could not be found.")
57 verify(typeof textLabel === "object", "TextLabel object could not be found.")
@@ -61,16 +62,14 @@ Rectangle {
61 }
62 }
62
63
63 function test_optional_title() {
64 function test_optional_title() {
64− var titleLabel = findChild(previewTextSummary, "titleLabel")
65−
66 // verify titleLabel is visible and textLabel is anchored below it
65 // verify titleLabel is visible and textLabel is anchored below it
67 compare(titleLabel.visible, true)
66 compare(titleLabel.visible, true)
68− compare(textLabel.y, titleLabel.height)
67+ tryCompare(textLabel, "y", titleLabel.height)
69
68
70 // verify titleLabel disappears and textLabel moves up
69 // verify titleLabel disappears and textLabel moves up
71 previewTextSummary.widgetData = widgetDataNoTitle
70 previewTextSummary.widgetData = widgetDataNoTitle
72 compare(titleLabel.visible, false)
71 compare(titleLabel.visible, false)
73− compare(textLabel.y, 0)
72+ tryCompare(textLabel, "y", 0)
74 }
73 }
75
74
76 function test_see_more() {
75 function test_see_more() {
@@ -96,6 +95,7 @@ Rectangle {
96 verify(textLabel.lineCount <= textLabel.maximumCollapsedLineCount)
95 verify(textLabel.lineCount <= textLabel.maximumCollapsedLineCount)
97 compare(seeMore.visible, false)
96 compare(seeMore.visible, false)
98 tryCompare(textLabel, "height", textLabel.contentHeight)
97 tryCompare(textLabel, "height", textLabel.contentHeight)
98+ tryCompare(previewTextSummary, "height", titleLabel.height + textLabel.height)
99 }
99 }
100 }
100 }
101}
101}
tests/qmltests/Dash/Previews/tst_PreviewZoomableImage.qml+7−5
@@ -26,12 +26,12 @@ Rectangle {
26 color: "lightgrey"
26 color: "lightgrey"
27
27
28 property var widgetData0: {
28 property var widgetData0: {
29− "source": ""
29+ "source": Qt.resolvedUrl("../artwork/checkers.png"),
30+ "zoomable": false
30 }
31 }
31
32
32 property var widgetData1: {
33 property var widgetData1: {
33− "source": Qt.resolvedUrl("../artwork/checkers.png"),
34+ "source": ""
34− "zoomable": false
35 }
35 }
36
36
37 PreviewZoomableImage {
37 PreviewZoomableImage {
@@ -49,11 +49,13 @@ Rectangle {
49
49
50 zoomableImage.widgetData = widgetData0;
50 zoomableImage.widgetData = widgetData0;
51 waitForRendering(zoomableImage);
51 waitForRendering(zoomableImage);
52+ waitForRendering(image);
52− tryCompare(image, "imageState", "default");
53+ tryCompare(image, "imageState", "ready");
53
54
54 zoomableImage.widgetData = widgetData1;
55 zoomableImage.widgetData = widgetData1;
55 waitForRendering(zoomableImage);
56 waitForRendering(zoomableImage);
57+ waitForRendering(image);
56− tryCompare(image, "imageState", "ready");
58+ tryCompare(image, "imageState", "default");
57 }
59 }
58 }
60 }
59}
61}
tests/qmltests/Dash/tst_Card.qml+78−92
@@ -29,8 +29,8 @@ Rectangle {
29
29
30 property string cardData: '
30 property string cardData: '
31 {
31 {
32− "art": "../../tests/qmltests/Dash/artwork/music-player-design.png",
32+ "art": "../../../tests/qmltests/Dash/artwork/music-player-design.png",
33− "mascot": "../../tests/qmltests/Dash/artwork/avatar.png",
33+ "mascot": "../../../tests/qmltests/Dash/artwork/avatar.png",
34 "title": "foo",
34 "title": "foo",
35 "subtitle": "bar",
35 "subtitle": "bar",
36 "summary": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
36 "summary": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
@@ -98,21 +98,26 @@ Rectangle {
98
98
99 CardTool {
99 CardTool {
100 id: cardTool
100 id: cardTool
101− template: card.template
101+ template: Helpers.update(JSON.parse(Helpers.defaultLayout), Helpers.tryParse(layoutArea.text, layoutError))['template'];
102− components: card.components
102+ components: Helpers.update(JSON.parse(Helpers.defaultLayout), Helpers.tryParse(layoutArea.text, layoutError))['components'];
103 viewWidth: units.gu(48)
103 viewWidth: units.gu(48)
104 }
104 }
105
105
106− Card {
106+ readonly property var card: loader.item
107− id: card
108− anchors { top: parent.top; left: parent.left; margins: units.gu(1) }
109
107
110− width: cardTool.cardWidth || implicitWidth
108+ Loader {
111− height: cardTool.cardHeight || implicitHeight
109+ id: loader
110+ anchors { top: parent.top; left: parent.left; margins: units.gu(1) }
112
111
113− template: Helpers.update(JSON.parse(Helpers.defaultLayout), Helpers.tryParse(layoutArea.text, layoutError))['template'];
112+ sourceComponent: cardTool.cardComponent
114− components: Helpers.update(JSON.parse(Helpers.defaultLayout), Helpers.tryParse(layoutArea.text, layoutError))['components'];
113+ onLoaded: {
114+ item.template = Qt.binding(function() { return cardTool.template; });
115+ item.components = Qt.binding(function() { return cardTool.components; });
115− cardData: Helpers.mapData(dataArea.text, components, dataError)
116+ item.cardData = Qt.binding(function() { return Helpers.mapData(dataArea.text, cardTool.components, dataError); });
117+ item.width = Qt.binding(function() { return cardTool.cardWidth || item.implicitWidth; });
118+ item.height = Qt.binding(function() { return cardTool.cardHeight || item.implicitHeight; });
119+ item.fixedHeaderHeight = Qt.binding(function() { return cardTool.headerHeight; });
120+ }
116 }
121 }
117
122
118 Rectangle {
123 Rectangle {
@@ -181,60 +186,45 @@ Rectangle {
181
186
182 when: windowShown
187 when: windowShown
183
188
184− property Item header: findChild(card, "cardHeader")
185− property Item headerLoader: findChild(card, "cardHeaderLoader")
186− property Item title: findChild(header, "titleLabel")
189+ property Item title: findChild(card, "titleLabel")
190+ property Item subtitle: findChild(card, "subtitleLabel")
191+ property var headerRow: findChild(card, "outerRow")
187− property Item art: findChild(card, "artShape")
192+ property var art: findChild(card, "artShape")
188 property Item artImage: findChild(card, "artImage")
193 property Item artImage: findChild(card, "artImage")
189 property Item summary: findChild(card, "summaryLabel")
194 property Item summary: findChild(card, "summaryLabel")
190 property Item background: findChild(card, "background")
195 property Item background: findChild(card, "background")
191 property Item backgroundLoader: findChild(card, "backgroundLoader")
196 property Item backgroundLoader: findChild(card, "backgroundLoader")
192 property Item backgroundImage: findChild(card, "backgroundImage")
197 property Item backgroundImage: findChild(card, "backgroundImage")
193−
198+ property Item mascotImage: findChild(card, "mascotImage");
194− function initTestCase() {
195− verify(typeof testCase.header === "object", "Couldn't find header object.");
196− verify(typeof testCase.art === "object", "Couldn't find art object.");
197− verify(typeof testCase.artImage === "object", "Couldn't find artImage object.");
198− verify(typeof testCase.summary === "object", "Couldn't find summary object.");
199− verify(typeof testCase.artImage === "object", "Couldn't find background object.");
200− verify(typeof testCase.summary === "object", "Couldn't find backgroundImage object.");
201− }
202
199
203 function cleanup() {
200 function cleanup() {
204 selector.selectedIndex = -1;
201 selector.selectedIndex = -1;
205 }
202 }
206
203
207−
208− function test_header_binding_data() {
209− return [
210− { tag: "Mascot", property: "mascot", value: Qt.resolvedUrl("artwork/avatar.png"), index: 0 },
211− { tag: "Title", property: "title", value: "foo", index: 0 },
212− { tag: "Subtitle", property: "subtitle", value: "bar", index: 0 },
213− ];
214− }
215−
216− function test_header_binding(data) {
217− selector.selectedIndex = data.index;
218− tryCompare(testCase.header, data.property, data.value);
219− }
220−
221 function test_card_binding_data() {
204 function test_card_binding_data() {
222 return [
205 return [
223− { tag: "Art", object: artImage, property: "source", value: Qt.resolvedUrl("artwork/music-player-design.png"), index: 0 },
206+ { tag: "Art", object: "artImage", property: "source", value: Qt.resolvedUrl("artwork/music-player-design.png"), index: 0 },
224− { tag: "Summary", object: summary, property: "text", field: "summary", index: 0 },
207+ { tag: "Summary", object: "summary", property: "text", field: "summary", index: 0 },
225− { tag: "Fit", object: art, fill: Image.PreserveAspectFit, index: 4 },
208+ { tag: "Fit", object: "art", fill: Image.PreserveAspectFit, index: 4 },
209+ { tag: "Mascot", object: "mascotImage", property: "source", value: Qt.resolvedUrl("artwork/avatar.png"), index: 0 },
210+ { tag: "Title", object: "title", property: "text", value: "foo", index: 0 },
211+ { tag: "Subtitle", object: "subtitle", property: "text", value: "bar", index: 0 },
226 ];
212 ];
227 }
213 }
228
214
229 function test_card_binding(data) {
215 function test_card_binding(data) {
230 selector.selectedIndex = data.index;
216 selector.selectedIndex = data.index;
217+ waitForRendering(card);
218+
219+ tryCompareFunction(function() { return testCase[data.object] !== null }, true);
220+ var object = testCase[data.object];
231
221
232 if (data.hasOwnProperty('value')) {
222 if (data.hasOwnProperty('value')) {
233− tryCompare(data.object, data.property, data.value);
223+ tryCompare(object, data.property, data.value);
234 }
224 }
235
225
236 if (data.hasOwnProperty('field')) {
226 if (data.hasOwnProperty('field')) {
237− tryCompare(data.object, data.property, card.cardData[data.field]);
227+ tryCompare(object, data.property, card.cardData[data.field]);
238 }
228 }
239 }
229 }
240
230
@@ -243,31 +233,21 @@ Rectangle {
243 { tag: "Medium", width: units.gu(18.5), index: 0 },
233 { tag: "Medium", width: units.gu(18.5), index: 0 },
244 { tag: "Small", width: units.gu(12), index: 1 },
234 { tag: "Small", width: units.gu(12), index: 1 },
245 { tag: "Large", width: units.gu(38), index: 2 },
235 { tag: "Large", width: units.gu(38), index: 2 },
246− { tag: "Wide", width: units.gu(18.5), aspect: 0.5, index: 0 },
236+ { tag: "Wide", width: units.gu(18.5), index: 0 },
247 { tag: "Horizontal", width: units.gu(38), index: 5 },
237 { tag: "Horizontal", width: units.gu(38), index: 5 },
248 // Make sure card ends with header when there's no summary
238 // Make sure card ends with header when there's no summary
249− { tag: "NoSummary", height: function() { return headerLoader.y + headerLoader.height }, index: 6 },
239+ { tag: "NoSummary", height: function() { var cardToolRow = findChild(cardTool, "outerRow");
240+ return cardToolRow.y + cardToolRow.height + units.gu(1) }, index: 6 },
250− { tag: "HorizontalNoSummary", height: function() { return headerLoader.height }, card_layout: "horizontal", index: 6 },
241+ { tag: "HorizontalNoSummary", height: function() { return headerRow.height + units.gu(2) }, card_layout: "horizontal", index: 6 },
251 ]
242 ]
252 }
243 }
253
244
254 function test_card_size(data) {
245 function test_card_size(data) {
255− waitForRendering(card);
256 selector.selectedIndex = data.index;
246 selector.selectedIndex = data.index;
257
247
258− if (data.hasOwnProperty("size")) {
259− card.template['card-size'] = data.size;
260− card.templateChanged();
261− }
262−
263 if (data.hasOwnProperty("card_layout")) {
248 if (data.hasOwnProperty("card_layout")) {
264− card.template['card-layout'] = data.card_layout;
249+ cardTool.template['card-layout'] = data.card_layout;
265− card.templateChanged();
250+ cardTool.templateChanged();
266− }
267−
268− if (data.hasOwnProperty("aspect")) {
269− card.components['art']['aspect-ratio'] = data.aspect;
270− card.componentsChanged();
271 }
251 }
272
252
273 if (data.hasOwnProperty("width")) {
253 if (data.hasOwnProperty("width")) {
@@ -288,25 +268,26 @@ Rectangle {
288 { tag: "Large", width: units.gu(38), index: 2 },
268 { tag: "Large", width: units.gu(38), index: 2 },
289 { tag: "Wide", height: units.gu(19), size: "large", index: 3 },
269 { tag: "Wide", height: units.gu(19), size: "large", index: 3 },
290 { tag: "Fit", height: units.gu(38), size: "large", width: units.gu(19), index: 4 },
270 { tag: "Fit", height: units.gu(38), size: "large", width: units.gu(19), index: 4 },
291− { tag: "VerticalWidth", width: function() { return header.width }, index: 0 },
271+ { tag: "VerticalWidth", width: function() { return headerRow.width + units.gu(1) * 2 }, index: 0 },
292− { tag: "HorizontalHeight", height: function() { return header.height }, index: 5 },
272+ { tag: "HorizontalHeight", height: function() { return headerRow.height + units.gu(1) * 2 }, index: 5 },
293− { tag: "HorizontalWidth", width: function() { return headerLoader.x }, index: 5 },
273+ { tag: "HorizontalWidth", width: function() { return headerRow.x - units.gu(1) }, index: 5 },
294 ]
274 ]
295 }
275 }
296
276
297 function test_art_size(data) {
277 function test_art_size(data) {
298 selector.selectedIndex = data.index;
278 selector.selectedIndex = data.index;
299−
300 if (data.hasOwnProperty("size")) {
279 if (data.hasOwnProperty("size")) {
301− card.template['card-size'] = data.size;
280+ cardTool.template['card-size'] = data.size;
302− card.templateChanged();
281+ cardTool.templateChanged();
303 }
282 }
304
283
305 if (data.hasOwnProperty("aspect")) {
284 if (data.hasOwnProperty("aspect")) {
306− card.components['art']['aspect-ratio'] = data.aspect;
285+ cardTool.components['art']['aspect-ratio'] = data.aspect;
307− card.componentsChanged();
286+ cardTool.componentsChanged();
308 }
287 }
309
288
289+ waitForRendering(card);
290+
310 if (data.hasOwnProperty("width")) {
291 if (data.hasOwnProperty("width")) {
311 if (typeof data.width === "function") {
292 if (typeof data.width === "function") {
312 tryCompareFunction(function() { return art.width === data.width() }, true);
293 tryCompareFunction(function() { return art.width === data.width() }, true);
@@ -326,38 +307,40 @@ Rectangle {
326
307
327 function test_art_layout_data() {
308 function test_art_layout_data() {
328 return [
309 return [
329− { tag: "Vertical", left: function() { return 0 }, index: 0},
310+ { tag: "Vertical", left: function() { return units.gu(1); }, index: 0},
330− { tag: "Horizontal", left: function() { return art.width }, index: 5 },
311+ { tag: "Horizontal", left: function() { return art.width + units.gu(1); }, index: 5 },
331 ];
312 ];
332 }
313 }
333
314
334 function test_art_layout(data) {
315 function test_art_layout(data) {
335 selector.selectedIndex = data.index;
316 selector.selectedIndex = data.index;
317+ waitForRendering(card);
336
318
337− tryCompare(testCase.headerLoader, "x", data.left());
319+ tryCompare(headerRow, "x", data.left());
338 }
320 }
339
321
340 function test_header_layout_data() {
322 function test_header_layout_data() {
341 return [
323 return [
342− { tag: "Vertical", top: function() { return art.y + art.height },
324+ { tag: "Vertical", top: function() { return art.y + art.height + units.gu(1) },
343− left: function() { return art.x }, index: 0 },
325+ left: function() { return art.x + units.gu(1) }, index: 0 },
344− { tag: "Horizontal", top: function() { return art.y },
326+ { tag: "Horizontal", top: function() { return art.y + units.gu(1) },
345− left: function() { return art.x + art.width }, index: 5 },
327+ left: function() { return art.x + art.width + units.gu(1) }, index: 5 },
346− { tag: "Overlay", top: function() { return art.y + art.height - header.height },
328+ { tag: "Overlay", top: function() { return art.y + art.height - headerRow.height - units.gu(1) },
347− left: function() { return art.x }, index: 9 },
329+ left: function() { return art.x + units.gu(1) }, index: 9 },
348 ]
330 ]
349 }
331 }
350
332
351 function test_header_layout(data) {
333 function test_header_layout(data) {
352 selector.selectedIndex = data.index;
334 selector.selectedIndex = data.index;
335+ waitForRendering(card);
353
336
354− tryCompareFunction(function() { return testCase.headerLoader.y === data.top() }, true);
337+ tryCompareFunction(function() { return testCase.headerRow.y === data.top() }, true);
355− tryCompareFunction(function() { return testCase.headerLoader.x === data.left() }, true);
338+ tryCompareFunction(function() { return testCase.headerRow.x === data.left() }, true);
356 }
339 }
357
340
358 function test_summary_layout_data() {
341 function test_summary_layout_data() {
359 return [
342 return [
360− { tag: "With header", top: function() { return headerLoader.y + headerLoader.height }, index: 0 },
343+ { tag: "With header", top: function() { return headerRow.y + headerRow.height + units.gu(1); }, index: 0 },
361 { tag: "Without header", top: function() { return art.y + art.height }, index: 7 },
344 { tag: "Without header", top: function() { return art.y + art.height }, index: 7 },
362 ]
345 ]
363 }
346 }
@@ -365,16 +348,16 @@ Rectangle {
365 function test_summary_layout(data) {
348 function test_summary_layout(data) {
366 selector.selectedIndex = data.index;
349 selector.selectedIndex = data.index;
367
350
351+ waitForRendering(card);
352+
368 tryCompareFunction(function() { return testCase.summary.y === data.top() }, true);
353 tryCompareFunction(function() { return testCase.summary.y === data.top() }, true);
369 }
354 }
370
355
371 function test_art_visibility() {
356 function test_art_visibility() {
372 selector.selectedIndex = 8;
357 selector.selectedIndex = 8;
373
358
374− tryCompare(testCase.artImage, "source", "");
359+ compare(testCase.artImage, null);
375− compare(testCase.art.visible, false);
360+ compare(testCase.art, null);
376− compare(testCase.art.height, 0);
377− compare(testCase.art.width, 0);
378 }
361 }
379
362
380 function test_background_data() {
363 function test_background_data() {
@@ -402,7 +385,11 @@ Rectangle {
402
385
403 waitForRendering(card);
386 waitForRendering(card);
404
387
405− tryCompare(backgroundLoader, "active", data.visible);
388+ if (data.visible) {
389+ tryCompare(backgroundLoader, "active", true);
390+ } else {
391+ compare(backgroundLoader, null);
392+ }
406
393
407 if (data.hasOwnProperty("color")) {
394 if (data.hasOwnProperty("color")) {
408 tryCompare(background, "color", data.color);
395 tryCompare(background, "color", data.color);
@@ -449,13 +436,15 @@ Rectangle {
449
436
450 function test_fontColor(data) {
437 function test_fontColor(data) {
451 selector.selectedIndex = 10;
438 selector.selectedIndex = 10;
439+ waitForRendering(card);
452
440
453 background.color = data.tag;
441 background.color = data.tag;
454
442
455 var fontColor = data.dark ? "grey" : "white";
443 var fontColor = data.dark ? "grey" : "white";
456
444
457 tryCompareFunction(function() { return Qt.colorEqual(summary.color, fontColor); }, true);
445 tryCompareFunction(function() { return Qt.colorEqual(summary.color, fontColor); }, true);
458− tryCompareFunction(function() { return Qt.colorEqual(header.fontColor, fontColor); }, true);
446+ tryCompareFunction(function() { return Qt.colorEqual(title.color, fontColor); }, true);
447+ tryCompareFunction(function() { return Qt.colorEqual(subtitle.color, fontColor); }, true);
459 }
448 }
460
449
461 function test_mascotShape_data() {
450 function test_mascotShape_data() {
@@ -468,15 +457,12 @@ Rectangle {
468
457
469 function test_mascotShape(data) {
458 function test_mascotShape(data) {
470 selector.selectedIndex = data.index;
459 selector.selectedIndex = data.index;
460+ waitForRendering(card);
471
461
472 var shape = findChild(card, "mascotShapeLoader");
462 var shape = findChild(card, "mascotShapeLoader");
473− var image = findChild(card, "mascotImage");
474−
475− verify(shape, "Could not find shape.");
476− verify(image, "Could not find image.");
477
463
478− tryCompare(shape, "active", data.shape);
464+ compare(shape !== null, data.shape);
479− tryCompare(image, "visible", !data.shape);
465+ tryCompare(mascotImage, "visible", !data.shape);
480 }
466 }
481 }
467 }
482}
468}
tests/qmltests/Dash/tst_CardBenchmark.qml+10−7
@@ -54,13 +54,16 @@ Rectangle {
54 Repeater {
54 Repeater {
55 id: cardRepeater
55 id: cardRepeater
56 model: 0
56 model: 0
57− Card {
57+ Loader {
58+ sourceComponent: cardTool.cardComponent
59+ onLoaded: {
60+ item.objectName = "delegate" + index;
58− width: cardTool.cardWidth || implicitWidth
61+ item.width = Qt.binding(function() { return cardTool.cardWidth || implicitWidth; });
59− height: cardTool.cardHeight || implicitHeight
62+ item.height = Qt.binding(function() { return cardTool.cardHeight || implicitHeight; });
60−
61− template: cardTool.template
62− components: cardTool.components
63− cardData: Helpers.mapData(root.cardData, components)
63+ item.cardData = Qt.binding(function() { return Helpers.mapData(root.cardData, cardTool.components); });
64+ item.template = Qt.binding(function() { return cardTool.template; });
65+ item.components = Qt.binding(function() { return cardTool.components; });
66+ }
64 }
67 }
65 }
68 }
66
69
tests/qmltests/Dash/tst_CardHeader.qmldeleted−116
@@ -1,116 +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 QtTest 1.0
19−import Ubuntu.Components 0.1
20−import Unity.Test 0.1 as UT
21−import "../../../qml/Dash"
22−
23−
24−Rectangle {
25− width: units.gu(40)
26− height: units.gu(72)
27− color: "lightgrey"
28−
29− CardHeader {
30− id: cardHeader
31− anchors { left: parent.left; right: parent.right }
32− }
33−
34− Rectangle {
35− anchors.fill: cardHeader
36− color: "lightblue"
37− opacity: 0.5
38− }
39−
40− UT.UnityTestCase {
41− id: testCase
42− name: "CardHeader"
43−
44− when: windowShown
45−
46− property Item mascot: findChild(cardHeader, "mascotShapeLoader")
47− property Item titleLabel: findChild(cardHeader, "titleLabel")
48− property Item subtitleLabel: findChild(cardHeader, "subtitleLabel")
49− property Item oldPriceLabel: findChild(cardHeader, "oldPriceLabel")
50− property Item outerRow: findChild(cardHeader, "outerRow")
51− property Item column: findChild(cardHeader, "column")
52−
53− function initTestCase() {
54− verify(typeof testCase.mascot === "object", "Couldn't find mascot object.");
55− verify(typeof testCase.titleLabel === "object", "Couldn't find titleLabel object.");
56− verify(typeof testCase.subtitleLabel === "object", "Couldn't find subtitleLabel object.");
57− verify(typeof testCase.oldPriceLabel === "object", "Couldn't find oldPriceLabel object.");
58− }
59−
60− function cleanup() {
61− cardHeader.mascot = "";
62− cardHeader.title = "";
63− cardHeader.subtitle = "";
64− }
65−
66− function test_mascot_data() {
67− return [
68− { tag: "Empty", source: "", visible: false },
69− { tag: "Invalid", source: "bad_path", visible: false },
70− { tag: "Valid", source: Qt.resolvedUrl("artwork/avatar.png"), visible: true },
71− ]
72− }
73−
74− function test_mascot(data) {
75− cardHeader.mascot = data.source;
76− tryCompare(testCase.mascot, "visible", data.visible);
77− }
78−
79− function test_labels_data() {
80− return [
81− { tag: "Empty", visible: false },
82− { tag: "Title only", title: "Foo", visible: true },
83− { tag: "Subtitle only", subtitle: "Bar", visible: false },
84− { tag: "Both", title: "Foo", subtitle: "Bar", visible: true },
85− ]
86− }
87−
88− function test_labels(data) {
89− cardHeader.title = data.title !== undefined ? data.title : "";
90− cardHeader.subtitle = data.subtitle !== undefined ? data.subtitle : "";
91− tryCompare(cardHeader, "visible", data.visible);
92− }
93−
94− function test_dimensions_data() {
95− return [
96− { tag: "Column width", object: column, width: cardHeader.width },
97− { tag: "Column width with mascot", object: column, width: cardHeader.width - mascot.width - outerRow.margins * 3, mascot: "artwork/avatar.png" },
98− { tag: "Header height", object: cardHeader, height: function() { return outerRow.height + outerRow.margins * 2 } },
99− ]
100− }
101−
102− function test_dimensions(data) {
103− if (data.hasOwnProperty("mascot")) {
104− cardHeader.mascot = data.mascot;
105− }
106−
107− if (data.hasOwnProperty("width")) {
108− tryCompare(data.object, "width", data.width);
109− }
110−
111− if (data.hasOwnProperty("height")) {
112− tryCompareFunction(function() { return data.object.height === data.height() }, true);
113− }
114− }
115− }
116−}
tests/qmltests/Dash/tst_CardTool.qml+11−31
@@ -127,26 +127,6 @@ Rectangle {
127 }
127 }
128 }
128 }
129 }
129 }
130−
131− Card {
132− id: card
133− template: cardTool.template;
134− components: cardTool.components;
135− cardData: Helpers.mapData(dataArea.text, components, dataError)
136−
137− width: cardTool.cardWidth || implicitWidth
138− height: cardTool.cardHeight || implicitHeight
139−
140− clip: true
141− headerAlignment: cardTool.headerAlignment
142−
143− Rectangle {
144− anchors.fill: parent
145− color: "transparent"
146− border.width: 1
147− border.color: "green"
148− }
149− }
150 }
130 }
151
131
152 Rectangle {
132 Rectangle {
@@ -257,7 +237,7 @@ Rectangle {
257 id: testCase
237 id: testCase
258 name: "Card"
238 name: "Card"
259
239
260− property Card internalCard: findChild(cardTool, "cardToolCard")
240+ property var internalCard: findChild(cardTool, "cardToolCard")
261
241
262 when: windowShown
242 when: windowShown
263
243
@@ -272,16 +252,16 @@ Rectangle {
272
252
273 function test_card_size_data() {
253 function test_card_size_data() {
274 return [
254 return [
275− { tag: "Medium", width: units.gu(18.5), height: function() { return card.height }, index: 0 },
255+ { tag: "Medium", width: units.gu(18.5), height: function() { return internalCard ? internalCard.height : 0 }, index: 0 },
276− { tag: "No art", width: units.gu(18.5), height: function() { return card.height }, index: 1 },
256+ { tag: "No art", width: units.gu(18.5), height: function() { return internalCard ? internalCard.height : 0 }, index: 1 },
277− { tag: "No summary", width: units.gu(18.5), height: function() { return card.height }, index: 2 },
257+ { tag: "No summary", width: units.gu(18.5), height: function() { return internalCard ? internalCard.height : 0 }, index: 2 },
278− { tag: "Just header", width: units.gu(18.5), height: function() { return card.height }, index: 3 },
258+ { tag: "Just header", width: units.gu(18.5), height: function() { return internalCard ? internalCard.height : 0 }, index: 3 },
279− { tag: "Just title", width: units.gu(18.5), height: function() { return card.height }, index: 4 },
259+ { tag: "Just title", width: units.gu(18.5), height: function() { return internalCard ? internalCard.height : 0 }, index: 4 },
280− { tag: "Title and subtitle", width: units.gu(18.5), height: function() { return card.height }, index: 5 },
260+ { tag: "Title and subtitle", width: units.gu(18.5), height: function() { return internalCard ? internalCard.height : 0 }, index: 5 },
281− { tag: "Title and mascot", width: units.gu(18.5), height: function() { return card.height }, index: 6 },
261+ { tag: "Title and mascot", width: units.gu(18.5), height: function() { return internalCard ? internalCard.height : 0 }, index: 6 },
282− { tag: "Small", width: units.gu(12), height: function() { return card.height }, index: 7 },
262+ { tag: "Small", width: units.gu(12), height: function() { return internalCard ? internalCard.height : 0 }, index: 7 },
283− { tag: "Large", width: units.gu(38), height: function() { return card.height }, index: 8 },
263+ { tag: "Large", width: units.gu(38), height: function() { return internalCard ? internalCard.height : 0 }, index: 8 },
284− { tag: "Horizontal", width: units.gu(38), height: function() { return card.height }, index: 9 },
264+ { tag: "Horizontal", width: units.gu(38), height: function() { return internalCard ? internalCard.height : 0 }, index: 9 },
285 { tag: "OrganicGrid", width: undefined, height: undefined, index: 0, layout_index: 1},
265 { tag: "OrganicGrid", width: undefined, height: undefined, index: 0, layout_index: 1},
286 { tag: "Journal", width: undefined, height: units.gu(20), size: 20, index: 0, layout_index: 2 },
266 { tag: "Journal", width: undefined, height: units.gu(20), size: 20, index: 0, layout_index: 2 },
287 { tag: "OversizedJournal", width: undefined, height: units.gu(18.5), size: 40, index: 0, layout_index: 2 },
267 { tag: "OversizedJournal", width: undefined, height: units.gu(18.5), size: 40, index: 0, layout_index: 2 },
tests/qmltests/Dash/tst_Dash.qml+1−1
@@ -127,7 +127,7 @@ Item {
127 var dashContent = findChild(dash, "dashContent");
127 var dashContent = findChild(dash, "dashContent");
128 var current_index = dashContent.currentIndex;
128 var current_index = dashContent.currentIndex;
129
129
130− tabbar.selectedIndex = data.visualIndex;
130+ tabbar.model.selectedIndex = data.visualIndex;
131 compare(dashContent.currentIndex, data.shouldBeVisible ? data.visualIndex : current_index);
131 compare(dashContent.currentIndex, data.shouldBeVisible ? data.visualIndex : current_index);
132 }
132 }
133 }
133 }
tests/qmltests/Dash/tst_DashContent.qml+34−19
@@ -67,13 +67,17 @@ Item {
67 name: "DashContent"
67 name: "DashContent"
68 when: scopesModel.loaded && windowShown
68 when: scopesModel.loaded && windowShown
69
69
70− function init() {
70+ function loadScopes() {
71− scopesModel.clear();
72 scopeLoadedSpy.clear();
71 scopeLoadedSpy.clear();
73 scopesModel.load();
72 scopesModel.load();
74 tryCompare(scopeLoadedSpy, "count", 4);
73 tryCompare(scopeLoadedSpy, "count", 4);
75 }
74 }
76
75
76+ function init() {
77+ scopesModel.clear();
78+ loadScopes();
79+ }
80+
77 function cleanup() {
81 function cleanup() {
78 movementStartedSpy.clear();
82 movementStartedSpy.clear();
79 dashContent.visible = true;
83 dashContent.visible = true;
@@ -93,9 +97,7 @@ Item {
93 compare(dashContentList.count, 0, "DashContent should have 0 items when it starts");
97 compare(dashContentList.count, 0, "DashContent should have 0 items when it starts");
94 tryCompare(dashContentList, "currentIndex", -1);
98 tryCompare(dashContentList, "currentIndex", -1);
95
99
96− scopeLoadedSpy.clear();
100+ loadScopes();
97− scopesModel.load();
98− tryCompare(scopeLoadedSpy, "count", 4);
99
101
100 verify(dashContentList.currentIndex >= 0);
102 verify(dashContentList.currentIndex >= 0);
101 }
103 }
@@ -109,9 +111,7 @@ Item {
109 // pretend we're running after a model reset
111 // pretend we're running after a model reset
110 dashContentList.currentIndex = 27;
112 dashContentList.currentIndex = 27;
111
113
112− scopeLoadedSpy.clear();
114+ loadScopes();
113− scopesModel.load();
114− tryCompare(scopeLoadedSpy, "count", 4);
115
115
116 verify(dashContentList.currentIndex >= 0 && dashContentList.currentIndex < 5);
116 verify(dashContentList.currentIndex >= 0 && dashContentList.currentIndex < 5);
117 }
117 }
@@ -166,7 +166,7 @@ Item {
166
166
167 // test greater than scope count.
167 // test greater than scope count.
168 var currentScopeIndex = dashContent.currentIndex;
168 var currentScopeIndex = dashContent.currentIndex;
169− dashContent.setCurrentScopeAtIndex(scopesModel.count, true, false);
169+ dashContent.setCurrentScopeAtIndex(8, true, false);
170 compare(dashContent.currentIndex, currentScopeIndex, "Scope should not change if changing to greater index than count");
170 compare(dashContent.currentIndex, currentScopeIndex, "Scope should not change if changing to greater index than count");
171 }
171 }
172
172
@@ -195,7 +195,7 @@ Item {
195 dashContent.setCurrentScopeAtIndex(data.index, true, false);
195 dashContent.setCurrentScopeAtIndex(data.index, true, false);
196 tryCompareFunction(get_current_item_object_name, data.objectName)
196 tryCompareFunction(get_current_item_object_name, data.objectName)
197 var pageHeader = findChild(dashContent, "pageHeader");
197 var pageHeader = findChild(dashContent, "pageHeader");
198− compare(pageHeader.scope, scopesModel.get(data.index));
198+ compare(pageHeader.scope, scopesModel.getScope(data.index));
199 }
199 }
200
200
201 function test_is_active_data() {
201 function test_is_active_data() {
@@ -212,9 +212,9 @@ Item {
212 dashContent.setCurrentScopeAtIndex(data.select, true, false);
212 dashContent.setCurrentScopeAtIndex(data.select, true, false);
213 dashContent.visible = data.visible;
213 dashContent.visible = data.visible;
214
214
215− tryCompare(scopesModel.get(0), "isActive", data.active0);
215+ tryCompare(scopesModel.getScope(0), "isActive", data.active0);
216− tryCompare(scopesModel.get(1), "isActive", data.active1);
216+ tryCompare(scopesModel.getScope(1), "isActive", data.active1);
217− tryCompare(scopesModel.get(2), "isActive", data.active2);
217+ tryCompare(scopesModel.getScope(2), "isActive", data.active2);
218 }
218 }
219
219
220 function doFindMusicButton(parent) {
220 function doFindMusicButton(parent) {
@@ -326,8 +326,6 @@ Item {
326 }
326 }
327
327
328 function test_previewOpenClose() {
328 function test_previewOpenClose() {
329− tryCompare(scopeLoadedSpy, "count", 4);
330−
331 var previewListView = findChild(dashContent, "dashContentPreviewList");
329 var previewListView = findChild(dashContent, "dashContentPreviewList");
332 tryCompare(previewListView, "open", false);
330 tryCompare(previewListView, "open", false);
333
331
@@ -352,8 +350,6 @@ Item {
352 },
350 },
353 true);
351 true);
354
352
355− tryCompare(scopeLoadedSpy, "count", 4);
356−
357 var previewListView = findChild(dashContent, "dashContentPreviewList");
353 var previewListView = findChild(dashContent, "dashContentPreviewList");
358 tryCompare(previewListView, "open", false);
354 tryCompare(previewListView, "open", false);
359
355
@@ -368,8 +364,6 @@ Item {
368 }
364 }
369
365
370 function test_previewCycle() {
366 function test_previewCycle() {
371− tryCompare(scopeLoadedSpy, "count", 4);
372−
373 var categoryListView = findChild(dashContent, "categoryListView");
367 var categoryListView = findChild(dashContent, "categoryListView");
374 categoryListView.positionAtBeginning();
368 categoryListView.positionAtBeginning();
375
369
@@ -392,5 +386,26 @@ Item {
392 }
386 }
393 closePreview();
387 closePreview();
394 }
388 }
389+
390+ function test_carouselAspectRatio() {
391+ tryCompareFunction(function() {
392+ var scope = findChild(dashContent, "MockScope1 loader");
393+ if (scope != null) {
394+ var dashCategory1 = findChild(scope, "dashCategory1");
395+ if (dashCategory1 != null) {
396+ var tile = findChild(dashCategory1, "carouselDelegate1");
397+ return tile != null;
398+ }
399+ }
400+ return false;
401+ },
402+ true);
403+
404+ var scope = findChild(dashContent, "MockScope1 loader");
405+ var dashCategory1 = findChild(scope, "dashCategory1");
406+ var cardTool = findChild(dashCategory1, "cardTool");
407+ var carouselLV = findChild(dashCategory1, "listView");
408+ verify(carouselLV.tileWidth / carouselLV.tileHeight == cardTool.components["art"]["aspect-ratio"]);
409+ }
395 }
410 }
396}
411}
tests/qmltests/Dash/tst_GenericScopeView.qml+12−11
@@ -39,7 +39,7 @@ Item {
39 id: scopes
39 id: scopes
40
40
41 onLoadedChanged: {
41 onLoadedChanged: {
42− genericScopeView.scope = scopes.get(2)
42+ genericScopeView.scope = scopes.getScope(2)
43 }
43 }
44 }
44 }
45
45
@@ -67,7 +67,7 @@ Item {
67 when: scopes.loaded && windowShown
67 when: scopes.loaded && windowShown
68
68
69 function init() {
69 function init() {
70− genericScopeView.scope = scopes.get(2)
70+ genericScopeView.scope = scopes.getScope(2)
71 shell.width = units.gu(120)
71 shell.width = units.gu(120)
72 genericScopeView.categoryView.positionAtBeginning();
72 genericScopeView.categoryView.positionAtBeginning();
73 tryCompare(genericScopeView.categoryView, "contentY", 0)
73 tryCompare(genericScopeView.categoryView, "contentY", 0)
@@ -96,36 +96,37 @@ Item {
96
96
97 function test_showDash() {
97 function test_showDash() {
98 previewListView.open = true;
98 previewListView.open = true;
99− scopes.get(2).showDash();
99+ scopes.getScope(2).showDash();
100 tryCompare(previewListView, "open", false);
100 tryCompare(previewListView, "open", false);
101 }
101 }
102
102
103 function test_hideDash() {
103 function test_hideDash() {
104 previewListView.open = true;
104 previewListView.open = true;
105− scopes.get(2).hideDash();
105+ scopes.getScope(2).hideDash();
106 tryCompare(previewListView, "open", false);
106 tryCompare(previewListView, "open", false);
107 }
107 }
108
108
109 function test_searchQuery() {
109 function test_searchQuery() {
110− genericScopeView.scope = scopes.get(0);
110+ genericScopeView.scope = scopes.getScope(0);
111 genericScopeView.scope.searchQuery = "test";
111 genericScopeView.scope.searchQuery = "test";
112− genericScopeView.scope = scopes.get(1);
112+ genericScopeView.scope = scopes.getScope(1);
113 genericScopeView.scope.searchQuery = "test2";
113 genericScopeView.scope.searchQuery = "test2";
114− genericScopeView.scope = scopes.get(0);
114+ genericScopeView.scope = scopes.getScope(0);
115 tryCompare(genericScopeView.scope, "searchQuery", "test");
115 tryCompare(genericScopeView.scope, "searchQuery", "test");
116− genericScopeView.scope = scopes.get(1);
116+ genericScopeView.scope = scopes.getScope(1);
117 tryCompare(genericScopeView.scope, "searchQuery", "test2");
117 tryCompare(genericScopeView.scope, "searchQuery", "test2");
118 }
118 }
119
119
120 function test_changeScope() {
120 function test_changeScope() {
121 genericScopeView.scope.searchQuery = "test"
121 genericScopeView.scope.searchQuery = "test"
122− genericScopeView.scope = scopes.get(1)
122+ genericScopeView.scope = scopes.getScope(1)
123− genericScopeView.scope = scopes.get(2)
123+ genericScopeView.scope = scopes.getScope(2)
124 tryCompare(genericScopeView.scope, "searchQuery", "test")
124 tryCompare(genericScopeView.scope, "searchQuery", "test")
125 }
125 }
126
126
127 function test_filter_expand_collapse() {
127 function test_filter_expand_collapse() {
128 // wait for the item to be there
128 // wait for the item to be there
129+ waitForRendering(genericScopeView);
129 tryCompareFunction(function() { return findChild(genericScopeView, "dashSectionHeader0") != null; }, true);
130 tryCompareFunction(function() { return findChild(genericScopeView, "dashSectionHeader0") != null; }, true);
130
131
131 var header = findChild(genericScopeView, "dashSectionHeader0")
132 var header = findChild(genericScopeView, "dashSectionHeader0")
@@ -199,7 +200,7 @@ Item {
199 var header0 = findChild(genericScopeView, "dashSectionHeader0")
200 var header0 = findChild(genericScopeView, "dashSectionHeader0")
200 mouseClick(header0, header0.width / 2, header0.height / 2);
201 mouseClick(header0, header0.width / 2, header0.height / 2);
201 tryCompare(category, "filtered", false);
202 tryCompare(category, "filtered", false);
202− tryCompare(category.item, "delegateCreationEnd", category.item.delegateCreationBegin + genericScopeView.height);
203+ tryCompareFunction(function() { return category.item.height == genericScopeView.height - category.item.displayMarginBeginning - category.item.displayMarginEnd; }, true);
203 mouseClick(header0, header0.width / 2, header0.height / 2);
204 mouseClick(header0, header0.width / 2, header0.height / 2);
204 tryCompare(category, "filtered", true);
205 tryCompare(category, "filtered", true);
205 }
206 }
tests/qmltests/Greeter/tst_Lockscreen.qml+209−31
@@ -17,31 +17,40 @@
17import QtQuick 2.0
17import QtQuick 2.0
18import QtTest 1.0
18import QtTest 1.0
19import ".."
19import ".."
20−import "../../../qml/Greeter"
20+import "../../../qml/Components"
21import Ubuntu.Components 0.1
21import Ubuntu.Components 0.1
22import LightDM 0.1 as LightDM
22import LightDM 0.1 as LightDM
23import Unity.Test 0.1 as UT
23import Unity.Test 0.1 as UT
24
24
25Rectangle {
25Rectangle {
26+ id: root
26− width: units.gu(60)
27+ width: units.gu(80)
27 height: units.gu(80)
28 height: units.gu(80)
28 color: "orange"
29 color: "orange"
29
30
30 Lockscreen {
31 Lockscreen {
31 id: lockscreen
32 id: lockscreen
32 anchors.fill: parent
33 anchors.fill: parent
33− anchors.rightMargin: units.gu(18)
34+ anchors.rightMargin: units.gu(30)
34 placeholderText: "Please enter your PIN"
35 placeholderText: "Please enter your PIN"
36+ wrongPlaceholderText: "Incorrect PIN"
37+ retryText: retryCountTextField.text
35 alphaNumeric: pinPadCheckBox.checked
38 alphaNumeric: pinPadCheckBox.checked
36− pinLength: pinLengthTextField.text
39+ minPinLength: minPinLengthTextField.text
40+ maxPinLength: maxPinLengthTextField.text
37 username: "Lola"
41 username: "Lola"
42+ background: "../../../qml/graphics/phone_background.jpg"
43+ infoText: infoTextTextField.text
38 }
44 }
39
45
40 Connections {
46 Connections {
41 target: lockscreen
47 target: lockscreen
42
48
43 onEmergencyCall: emergencyCheckBox.checked = true
49 onEmergencyCall: emergencyCheckBox.checked = true
50+ onEntered: {
44− onEntered: enteredLabel.text = passphrase
51+ enteredLabel.text = passphrase
52+ lockscreen.clear(true)
53+ }
45 }
54 }
46
55
47 Connections {
56 Connections {
@@ -49,9 +58,9 @@ Rectangle {
49
58
50 onShowPrompt: {
59 onShowPrompt: {
51 if (text.indexOf("PIN") >= 0) {
60 if (text.indexOf("PIN") >= 0) {
52− lockscreen.alphaNumeric = false
61+ pinPadCheckBox.checked = false
53 } else {
62 } else {
54− lockscreen.alphaNumeric = true
63+ pinPadCheckBox.checked = true
55 }
64 }
56 lockscreen.placeholderText = text;
65 lockscreen.placeholderText = text;
57 }
66 }
@@ -65,6 +74,7 @@ Rectangle {
65 Column {
74 Column {
66 anchors.fill: parent
75 anchors.fill: parent
67 anchors.margins: units.gu(1)
76 anchors.margins: units.gu(1)
77+ spacing: units.gu(1)
68
78
69 Row {
79 Row {
70 CheckBox {
80 CheckBox {
@@ -86,12 +96,32 @@ Rectangle {
86 }
96 }
87 Row {
97 Row {
88 TextField {
98 TextField {
89− id: pinLengthTextField
99+ id: minPinLengthTextField
90 width: units.gu(7)
100 width: units.gu(7)
91 text: "4"
101 text: "4"
92 }
102 }
93 Label {
103 Label {
104+ text: "Min PIN length"
105+ }
106+ }
107+ Row {
108+ TextField {
109+ id: maxPinLengthTextField
110+ width: units.gu(7)
111+ text: "4"
112+ }
113+ Label {
94− text: "PIN length"
114+ text: "Max PIN length"
115+ }
116+ }
117+ Row {
118+ TextField {
119+ id: retryCountTextField
120+ width: units.gu(7)
121+ text: "3 retries left"
122+ }
123+ Label {
124+ text: "Retries left"
95 }
125 }
96 }
126 }
97 Label {
127 Label {
@@ -108,12 +138,40 @@ Rectangle {
108 }
138 }
109 Button {
139 Button {
110 text: "start auth (1234)"
140 text: "start auth (1234)"
141+ width: parent.width
111 onClicked: LightDM.Greeter.authenticate("has-pin")
142 onClicked: LightDM.Greeter.authenticate("has-pin")
112 }
143 }
113 Button {
144 Button {
114 text: "start auth (password)"
145 text: "start auth (password)"
146+ width: parent.width
115 onClicked: LightDM.Greeter.authenticate("has-password")
147 onClicked: LightDM.Greeter.authenticate("has-password")
116 }
148 }
149+
150+ TextField {
151+ id: infoTextTextField
152+ width: parent.width
153+ placeholderText: "Infotext"
154+ text: "+49 179 3253553"
155+ }
156+
157+ TextField {
158+ id: infoPopupTitleTextField
159+ width: parent.width
160+ placeholderText: "Popup title"
161+ text: "This will be the last attempt"
162+ }
163+
164+ TextArea {
165+ id: infoPopupTextArea
166+ width: parent.width
167+ text: "If the SIM PIN is entered incorrectly, your SIM will be blocked and would require the PUK code to unlock."
168+ }
169+
170+ Button {
171+ text: "open info popup"
172+ width: parent.width
173+ onClicked: lockscreen.showInfoPopup(infoPopupTitleTextField.text, infoPopupTextArea.text)
174+ }
117 }
175 }
118 }
176 }
119
177
@@ -121,6 +179,16 @@ Rectangle {
121 name: "Lockscreen"
179 name: "Lockscreen"
122 when: windowShown
180 when: windowShown
123
181
182+ function cleanup() {
183+ lockscreen.clear(false);
184+ }
185+
186+ function waitForLockscreenReady() {
187+ var pinPadLoader = findChild(lockscreen, "pinPadLoader");
188+ tryCompare(pinPadLoader, "status", Loader.Ready)
189+ waitForRendering(lockscreen)
190+ }
191+
124 function test_loading_data() {
192 function test_loading_data() {
125 return [
193 return [
126 {tag: "numeric", alphanumeric: false, pinPadAvailable: true },
194 {tag: "numeric", alphanumeric: false, pinPadAvailable: true },
@@ -129,8 +197,8 @@ Rectangle {
129 }
197 }
130
198
131 function test_loading(data) {
199 function test_loading(data) {
132− lockscreen.alphaNumeric = data.alphanumeric
200+ pinPadCheckBox.checked = data.alphanumeric
133− waitForRendering(lockscreen)
201+ waitForLockscreenReady();
134 if (data.pinPadAvailable) {
202 if (data.pinPadAvailable) {
135 compare(findChild(lockscreen, "pinPadButton8").text, "8", "Could not find number 8 on PinPad")
203 compare(findChild(lockscreen, "pinPadButton8").text, "8", "Could not find number 8 on PinPad")
136 } else {
204 } else {
@@ -147,8 +215,8 @@ Rectangle {
147
215
148 function test_emergency_call(data) {
216 function test_emergency_call(data) {
149 emergencyCheckBox.checked = false
217 emergencyCheckBox.checked = false
150− lockscreen.alphaNumeric = data.alphanumeric
218+ pinPadCheckBox.checked = data.alphanumeric
151− waitForRendering(lockscreen)
219+ waitForLockscreenReady();
152 var emergencyButton = findChild(lockscreen, "emergencyCallIcon")
220 var emergencyButton = findChild(lockscreen, "emergencyCallIcon")
153 mouseClick(emergencyButton, units.gu(1), units.gu(1))
221 mouseClick(emergencyButton, units.gu(1), units.gu(1))
154 tryCompare(emergencyCheckBox, "checked", true)
222 tryCompare(emergencyCheckBox, "checked", true)
@@ -163,9 +231,9 @@ Rectangle {
163 }
231 }
164
232
165 function test_labels(data) {
233 function test_labels(data) {
166− lockscreen.alphaNumeric = data.alphanumeric
234+ pinPadCheckBox.checked = data.alphanumeric
167 lockscreen.placeholderText = data.placeholderText
235 lockscreen.placeholderText = data.placeholderText
168− waitForRendering(lockscreen)
236+ waitForLockscreenReady();
169 compare(findChild(lockscreen, "pinentryField").placeholderText, data.placeholderText, "Placeholdertext is not what it should be")
237 compare(findChild(lockscreen, "pinentryField").placeholderText, data.placeholderText, "Placeholdertext is not what it should be")
170 if (data.alphanumeric) {
238 if (data.alphanumeric) {
171 compare(findChild(lockscreen, "greeterLabel").text, "Hello " + data.username, "Greeter is not set correctly")
239 compare(findChild(lockscreen, "greeterLabel").text, "Hello " + data.username, "Greeter is not set correctly")
@@ -175,23 +243,25 @@ Rectangle {
175
243
176 function test_unlock_data() {
244 function test_unlock_data() {
177 return [
245 return [
178− {tag: "numeric", alphanumeric: false, username: "has-pin", password: "1234", pinLength: 4},
246+ {tag: "numeric", alphanumeric: false, username: "has-pin", password: "1234", minPinLength: 4, maxPinLength: 4},
179− {tag: "alphanumeric", alphanumeric: true, username: "has-password", password: "password", pinLength: -1},
247+ {tag: "alphanumeric", alphanumeric: true, username: "has-password", password: "password", minPinLength: -1, maxPinLength: -1},
180− {tag: "numeric (wrong)", alphanumeric: false, username: "has-pin", password: "4321", pinLength: 4},
248+ {tag: "numeric (wrong)", alphanumeric: false, username: "has-pin", password: "4321", minPinLength: 4, maxPinLength: 4},
181− {tag: "alphanumeric (wrong)", alphanumeric: true, username: "has-password", password: "drowssap", pinLength: -1},
249+ {tag: "alphanumeric (wrong)", alphanumeric: true, username: "has-password", password: "drowssap", minPinLength: -1, maxPinLength: -1},
182− {tag: "flexible length", alphanumeric: false, username: "has-pin", password: "1234", pinLength: -1},
250+ {tag: "flexible length", alphanumeric: false, username: "has-pin", password: "1234", minPinLength: -1, maxPinLength: -1},
183 ]
251 ]
184 }
252 }
185
253
186 function test_unlock(data) {
254 function test_unlock(data) {
187 enteredLabel.text = ""
255 enteredLabel.text = ""
188− pinLengthTextField.text = data.pinLength
256+ minPinLengthTextField.text = data.minPinLength
257+ maxPinLengthTextField.text = data.maxPinLength
189 LightDM.Greeter.authenticate(data.username)
258 LightDM.Greeter.authenticate(data.username)
190− waitForRendering(lockscreen)
259+ waitForLockscreenReady();
191
260
192 var inputField = findChild(lockscreen, "pinentryField")
261 var inputField = findChild(lockscreen, "pinentryField")
193 if (data.alphanumeric) {
262 if (data.alphanumeric) {
194 mouseClick(inputField, units.gu(1), units.gu(1))
263 mouseClick(inputField, units.gu(1), units.gu(1))
264+ tryCompare(inputField, "focus", true);
195 typeString(data.password)
265 typeString(data.password)
196 keyClick(Qt.Key_Enter)
266 keyClick(Qt.Key_Enter)
197 } else {
267 } else {
@@ -200,7 +270,7 @@ Rectangle {
200 var button = findChild(lockscreen, "pinPadButton" + character)
270 var button = findChild(lockscreen, "pinPadButton" + character)
201 mouseClick(button, units.gu(1), units.gu(1))
271 mouseClick(button, units.gu(1), units.gu(1))
202 }
272 }
203− if (data.pinLength == -1) {
273+ if (data.minPinLength !== data.maxPinLength || data.minPinLength == -1) {
204 var pinPadButtonErase = findChild(lockscreen, "pinPadButtonErase");
274 var pinPadButtonErase = findChild(lockscreen, "pinPadButtonErase");
205 mouseClick(pinPadButtonErase, units.gu(1), units.gu(1));
275 mouseClick(pinPadButtonErase, units.gu(1), units.gu(1));
206 }
276 }
@@ -219,11 +289,12 @@ Rectangle {
219
289
220 function test_clear(data) {
290 function test_clear(data) {
221 pinPadCheckBox.checked = data.alphanumeric
291 pinPadCheckBox.checked = data.alphanumeric
222− waitForRendering(lockscreen)
292+ waitForLockscreenReady();
223
293
224 var inputField = findChild(lockscreen, "pinentryField")
294 var inputField = findChild(lockscreen, "pinentryField")
225 if (data.alphanumeric) {
295 if (data.alphanumeric) {
226 mouseClick(inputField, units.gu(1), units.gu(1))
296 mouseClick(inputField, units.gu(1), units.gu(1))
297+ tryCompare(inputField, "activeFocus", true);
227 typeString("1")
298 typeString("1")
228 } else {
299 } else {
229 var button = findChild(lockscreen, "pinPadButton1")
300 var button = findChild(lockscreen, "pinPadButton1")
@@ -239,6 +310,16 @@ Rectangle {
239
310
240 wait(0) // Trigger event loop to make sure the animation would start running
311 wait(0) // Trigger event loop to make sure the animation would start running
241 compare(animation.running, data.animation)
312 compare(animation.running, data.animation)
313+ if (data.animation) {
314+ if (data.alphanumeric) {
315+ tryCompare(inputField, "placeholderText", lockscreen.wrongPlaceholderText)
316+ tryCompare(inputField, "placeholderText", lockscreen.placeholderText)
317+ } else {
318+ var label = findChild(lockscreen, "pinentryFieldPlaceHolder");
319+ tryCompare(label, "text", lockscreen.wrongPlaceholderText)
320+ tryCompare(label, "text", lockscreen.placeholderText)
321+ }
322+ }
242
323
243 // wait for animation to finish to not disturb other tests
324 // wait for animation to finish to not disturb other tests
244 tryCompare(animation, "running", false)
325 tryCompare(animation, "running", false)
@@ -246,33 +327,130 @@ Rectangle {
246
327
247 function test_backspace_data() {
328 function test_backspace_data() {
248 return [
329 return [
249− {tag: "fixed length", pinLength: 4},
330+ {tag: "fixed length", minPinLength: 4, maxPinLength: 4},
250− {tag: "variable length", pinLength: -1}
331+ {tag: "variable undefined length", minPinLength: -1, maxPinLength: -1},
332+ {tag: "variable restricted length", minPinLength: 4, maxPinLength: 8}
251 ];
333 ];
252 }
334 }
253
335
254 function test_backspace(data) {
336 function test_backspace(data) {
255 pinPadCheckBox.checked = false
337 pinPadCheckBox.checked = false
256− pinLengthTextField.text = data.pinLength
338+ minPinLengthTextField.text = data.minPinLength
257− waitForRendering(lockscreen);
339+ maxPinLengthTextField.text = data.maxPinLength
340+ waitForLockscreenReady();
258
341
259 var pinPadButtonErase = findChild(lockscreen, "pinPadButtonErase");
342 var pinPadButtonErase = findChild(lockscreen, "pinPadButtonErase");
260 var backspaceIcon = findChild(lockscreen, "backspaceIcon");
343 var backspaceIcon = findChild(lockscreen, "backspaceIcon");
261 var pinEntryField = findChild(lockscreen, "pinentryField");
344 var pinEntryField = findChild(lockscreen, "pinentryField");
262
345
346+ var autoConfirmEnabled = data.minPinLength === data.maxPinLength && data.minPinLength !== -1;
263− compare(pinPadButtonErase.iconName, data.pinLength == -1 ? "" : "erase");
347+ compare(pinPadButtonErase.iconName, autoConfirmEnabled ? "erase" : "");
264− compare(backspaceIcon.visible, data.pinLength == -1);
348+ compare(backspaceIcon.visible, !autoConfirmEnabled);
265
349
266 var pinPadButton5 = findChild(lockscreen, "pinPadButton5");
350 var pinPadButton5 = findChild(lockscreen, "pinPadButton5");
267 mouseClick(pinPadButton5, units.gu(1), units.gu(1));
351 mouseClick(pinPadButton5, units.gu(1), units.gu(1));
268 compare(pinEntryField.text, "5");
352 compare(pinEntryField.text, "5");
269
353
270− if (data.pinLength == -1) {
354+ if (data.minPinLength !== data.maxPinLength) {
271 mouseClick(backspaceIcon, units.gu(1), units.gu(1));
355 mouseClick(backspaceIcon, units.gu(1), units.gu(1));
272 } else {
356 } else {
273 mouseClick(pinPadButtonErase, units.gu(1), units.gu(1));
357 mouseClick(pinPadButtonErase, units.gu(1), units.gu(1));
274 }
358 }
275 compare(pinEntryField.text, "");
359 compare(pinEntryField.text, "");
276 }
360 }
361+
362+ function test_minMaxLength_data() {
363+ return [
364+ {tag: "undefined", minPinLength: -1, maxPinLength: -1},
365+ {tag: "fixed", minPinLength: 4, maxPinLength: 4},
366+ {tag: "variable, limited", minPinLength: 4, maxPinLength: 8},
367+ ];
368+ }
369+
370+ function test_minMaxLength(data) {
371+ pinPadCheckBox.checked = false
372+ minPinLengthTextField.text = data.minPinLength
373+ maxPinLengthTextField.text = data.maxPinLength
374+ waitForLockscreenReady();
375+
376+ var pinPadButton5 = findChild(lockscreen, "pinPadButton5");
377+ var pinPadButtonErase = findChild(lockscreen, "pinPadButtonErase");
378+ var inputField = findChild(lockscreen, "pinentryField")
379+
380+ for (var i = 0; i < 10; i++) {
381+ mouseClick(pinPadButton5, units.gu(1), units.gu(1));
382+
383+ if (data.minPinLength == data.maxPinLength && data.minPinLength != -1) {
384+ // auto confirm mode...
385+ compare(inputField.text.length, (i+1) % data.minPinLength);
386+ } else {
387+ // manual confirm mode
388+ tryCompare(pinPadButtonErase, "enabled", (i+1) >= data.minPinLength)
389+ if (data.maxPinLength == -1) {
390+ compare(inputField.text.length, i+1);
391+ } else {
392+ compare(inputField.text.length, Math.min(data.maxPinLength, i+1));
393+ }
394+
395+ }
396+ }
397+ }
398+
399+ function test_retryDisplay_data() {
400+ return [
401+ {tag: "empty", retryText: "", shown: false},
402+ {tag: "3 retries left", retryText: "3 retries left", shown: true},
403+ ]
404+ }
405+
406+ function test_retryDisplay(data) {
407+ pinPadCheckBox.checked = false
408+ waitForLockscreenReady();
409+
410+ retryCountTextField.text = data.retryText;
411+ var label = findChild(lockscreen, "retryCountLabel")
412+ compare(label.visible, data.shown);
413+ }
414+
415+ function test_infoPopup() {
416+ verify(findChild(root, "infoPopup") === null);
417+ lockscreen.showInfoPopup("foo", "bar");
418+ tryCompareFunction(function() { return findChild(root, "infoPopup") !== null}, true);
419+
420+ var infoPopup = findChild(root, "infoPopup");
421+ compare(infoPopup.title, "foo");
422+ compare(infoPopup.text, "bar");
423+
424+ signalSpy.signalName = "infoPopupConfirmed"
425+ signalSpy.clear();
426+
427+ var okButton = findChild(root, "infoPopupOkButton");
428+ mouseClick(okButton, okButton.width / 2, okButton.height / 2);
429+
430+ tryCompareFunction(function() { return findChild(root, "infoPopup") === null}, true);
431+
432+ tryCompare(signalSpy, "count", 1);
433+ }
434+
435+ function test_infoTextDisplay_data() {
436+ return [
437+ {tag: "empty string", text: "", shown: false},
438+ {tag: "hello world", text: "hello world", shown: true},
439+ ]
440+ }
441+
442+ function test_infoTextDisplay(data) {
443+ pinPadCheckBox.checked = false
444+ waitForLockscreenReady();
445+
446+ infoTextTextField.text = data.text;
447+ var label = findChild(lockscreen, "infoTextLabel")
448+ compare(label.visible, data.shown);
449+ }
450+ }
451+
452+ SignalSpy {
453+ id: signalSpy
454+ target: lockscreen
277 }
455 }
278}
456}
tests/qmltests/Greeter/tst_Tablet.qml → tests/qmltests/Greeter/tst_MultiGreeter.qmlrenamed+1−1
@@ -61,7 +61,7 @@ Item {
61 }
61 }
62
62
63 UT.UnityTestCase {
63 UT.UnityTestCase {
64− name: "Greeter"
64+ name: "MultiGreeter"
65 when: windowShown
65 when: windowShown
66
66
67 function select_index(i) {
67 function select_index(i) {
tests/qmltests/Greeter/tst_Phone.qml → tests/qmltests/Greeter/tst_SingleGreeter.qmlrenamed+1−19
@@ -33,8 +33,6 @@ Item {
33 height: parent.height
33 height: parent.height
34 x: 0; y: 0
34 x: 0; y: 0
35
35
36− defaultBackground: Qt.resolvedUrl("../../../qml/graphics/phone_background.jpg")
37−
38 property int minX: 0
36 property int minX: 0
39
37
40 onXChanged: {
38 onXChanged: {
@@ -68,7 +66,7 @@ Item {
68 }
66 }
69
67
70 UT.UnityTestCase {
68 UT.UnityTestCase {
71− name: "Greeter"
69+ name: "SingleGreeter"
72 when: windowShown
70 when: windowShown
73
71
74 function cleanup() {
72 function cleanup() {
@@ -104,22 +102,6 @@ Item {
104 tryCompare(LightDM.Infographic, "username", "single")
102 tryCompare(LightDM.Infographic, "username", "single")
105 }
103 }
106
104
107− function test_background_data() {
108− return [
109− {tag: "set", accounts: Qt.resolvedUrl("../../data/unity/backgrounds/blue.png"), expected: "blue.png"},
110− {tag: "unset", accounts: "", expected: "background.jpg"},
111− {tag: "invalid", accounts: "invalid", expected: "background.jpg"},
112− ]
113− }
114−
115− function test_background(data) {
116− var loader = findChild(greeter, "greeterContentLoader")
117− var background = findChild(loader.item, "greeterBackground")
118− AccountsService.backgroundFile = data.accounts
119− tryCompareFunction(function() { return background.source.toString().indexOf(data.expected) !== -1; }, true)
120− tryCompare(background, "status", Image.Ready)
121− }
122−
123 function test_initial_selected_signal() {
105 function test_initial_selected_signal() {
124 var greeterObj = greeterComponent.createObject(this)
106 var greeterObj = greeterComponent.createObject(this)
125 var spy = findChild(greeterObj, "selectedSpy")
107 var spy = findChild(greeterObj, "selectedSpy")
tests/qmltests/tst_Shell.qml−9
@@ -475,15 +475,6 @@ Item {
475 } while (!isStill);
475 } while (!isStill);
476 }
476 }
477
477
478− function test_background_data() {
479− return [
480− {tag: "red", url: Qt.resolvedUrl("../data/unity/backgrounds/red.png"), expectedUrl: "tests/data/unity/backgrounds/red.png"},
481− {tag: "blue", url: Qt.resolvedUrl("../data/unity/backgrounds/blue.png"), expectedUrl: "tests/data/unity/backgrounds/blue.png"},
482− {tag: "invalid", url: "invalid", expectedUrl: shell.defaultBackground},
483− {tag: "empty", url: "", expectedUrl: shell.defaultBackground}
484− ]
485− }
486−
487 function test_DashShown_data() {
478 function test_DashShown_data() {
488 return [
479 return [
489 {tag: "in focus", greeter: false, app: false, launcher: false, indicators: false, expectedShown: true},
480 {tag: "in focus", greeter: false, app: false, launcher: false, indicators: false, expectedShown: true},
tests/utils/modules/Unity/Test/CMakeLists.txt+4−7
@@ -1,3 +1,5 @@
1+include(QmlPlugins)
2+
1add_definitions(-DQT_NO_KEYWORDS)
3add_definitions(-DQT_NO_KEYWORDS)
2
4
3include_directories(
5include_directories(
@@ -14,10 +16,5 @@ add_library(UnityTestQml MODULE ${UnityTestQML_SOURCES})
14
16
15qt5_use_modules(UnityTestQml Core Quick Test)
17qt5_use_modules(UnityTestQml Core Quick Test)
16
18
17−# copy qml files into build directory for shadow builds
19+export_qmlfiles(Unity.Test Unity/Test)
18−file(GLOB QML_JS_FILES *.js *.qml qmldir)
20+export_qmlplugin(Unity.Test 0.1 Unity/Test TARGETS UnityTestQml)
19−
20−add_custom_target(UnityTestQmlJsFiles ALL
21− COMMAND cp ${QML_JS_FILES} ${CMAKE_CURRENT_BINARY_DIR}
22− DEPENDS ${QML_JS_FILES}
23−)
tests/utils/modules/Unity/Test/qmldir+2
@@ -1,3 +1,5 @@
1module Unity.Test
1module Unity.Test
2plugin UnityTestQml
2plugin UnityTestQml
3+typeinfo Test.qmltypes
4+
3UnityTestCase 0.1 UnityTestCase.qml
5UnityTestCase 0.1 UnityTestCase.qml
tools/registry-tracker.cpp+33−26
@@ -49,58 +49,66 @@ RegistryTracker::~RegistryTracker()
49"Registry.Identity = Registry\n" \
49"Registry.Identity = Registry\n" \
50"Registry.ConfigFile = %1\n" \
50"Registry.ConfigFile = %1\n" \
51"Default.Middleware = Zmq\n" \
51"Default.Middleware = Zmq\n" \
52−"Zmq.ConfigFile = %2\n"
52+"Zmq.ConfigFile = %2\n" \
53+"Smartscopes.Registry.Identity = %3\n"
53
54
54#define REGISTRY_CONFIG \
55#define REGISTRY_CONFIG \
55"[Registry]\n" \
56"[Registry]\n" \
56"Middleware = Zmq\n" \
57"Middleware = Zmq\n" \
57−"Zmq.Endpoint = ipc://%1/Registry\n" \
58+"Zmq.ConfigFile = %1\n" \
58−"Zmq.EndpointDir = %2\n" \
59−"Zmq.ConfigFile = %3\n" \
60−"Scope.InstallDir = %4\n" \
59+"Scope.InstallDir = %2\n" \
61−"Scoperunner.Path = %5\n" \
60+"Scoperunner.Path = %3\n"
62−"%6"
63
61
64#define MW_CONFIG \
62#define MW_CONFIG \
65"[Zmq]\n" \
63"[Zmq]\n" \
66−"EndpointDir.Public = %1\n" \
64+"EndpointDir = %1\n"
67−"EndpointDir.Private = %2\n"
68
65
69void RegistryTracker::runRegistry()
66void RegistryTracker::runRegistry()
70{
67{
71 QDir tmp(QDir::temp());
68 QDir tmp(QDir::temp());
72− m_runtime_config.setFileTemplate(tmp.filePath("Runtime.ini.XXXXXX"));
69+ m_runtime_config.setFileTemplate(tmp.filePath("Runtime.XXXXXX.ini"));
73− m_registry_config.setFileTemplate(tmp.filePath("Registry.ini.XXXXXX"));
70+ m_registry_config.setFileTemplate(tmp.filePath("Registry.XXXXXX.ini"));
74− m_mw_config.setFileTemplate(tmp.filePath("Zmq.ini.XXXXXX"));
71+ m_mw_config.setFileTemplate(tmp.filePath("Zmq.XXXXXX.ini"));
75
72
76 if (!m_runtime_config.open() || !m_registry_config.open() || !m_mw_config.open() || !m_endpoints_dir.isValid()) {
73 if (!m_runtime_config.open() || !m_registry_config.open() || !m_mw_config.open() || !m_endpoints_dir.isValid()) {
77 qWarning("Unable to open temporary files!");
74 qWarning("Unable to open temporary files!");
78 return;
75 return;
79 }
76 }
80
77
81− QString scopesLibdir;
78+ QString scopeInstallDir;
79+ QString scopeRegistryBin;
80+ QString scopeRunnerBin;
82 {
81 {
83 QProcess pkg_config;
82 QProcess pkg_config;
83+ QByteArray output;
84 QStringList arguments;
84 QStringList arguments;
85− arguments << "--variable=libdir";
85+ arguments << "--variable=scopesdir";
86 arguments << "libunity-scopes";
86 arguments << "libunity-scopes";
87 pkg_config.start("pkg-config", arguments);
87 pkg_config.start("pkg-config", arguments);
88 pkg_config.waitForFinished();
88 pkg_config.waitForFinished();
89− QByteArray libdir = pkg_config.readAllStandardOutput();
89+ output = pkg_config.readAllStandardOutput();
90− scopesLibdir = QDir(QString::fromLocal8Bit(libdir)).path().trimmed();
90+ scopeInstallDir = QDir(QString::fromLocal8Bit(output)).path().trimmed();
91+
92+ arguments[0] = "--variable=scoperegistry_bin";
93+ pkg_config.start("pkg-config", arguments);
94+ pkg_config.waitForFinished();
95+ output = pkg_config.readAllStandardOutput();
96+ scopeRegistryBin = QString::fromLocal8Bit(output).trimmed();
97+
98+ arguments[0] = "--variable=scoperunner_bin";
99+ pkg_config.start("pkg-config", arguments);
100+ pkg_config.waitForFinished();
101+ output = pkg_config.readAllStandardOutput();
102+ scopeRunnerBin = QString::fromLocal8Bit(output).trimmed();
91 }
103 }
92
104
93− if (scopesLibdir.size() == 0) {
105+ if (scopeInstallDir.isEmpty() || scopeRegistryBin.isEmpty() || scopeRunnerBin.isEmpty()) {
94 qWarning("Unable to find libunity-scopes package config file");
106 qWarning("Unable to find libunity-scopes package config file");
95 return;
107 return;
96 }
108 }
97
109
98− QString scopeRunnerPath = QDir(scopesLibdir).filePath("scoperunner/scoperunner");
99−
100− QString runtime_ini = QString(RUNTIME_CONFIG).arg(m_registry_config.fileName()).arg(m_mw_config.fileName());
101 // FIXME: keep in sync with the SSRegistry config
110 // FIXME: keep in sync with the SSRegistry config
102− QString serverRegistryConfig(m_serverScopes ? "SS.Registry.Identity = SSRegistry\nSS.Registry.Endpoint = ipc:///tmp/SSRegistry" : "");
111+ QString runtime_ini = QString(RUNTIME_CONFIG).arg(m_registry_config.fileName()).arg(m_mw_config.fileName()).arg(m_serverScopes ? "SSRegistry" : "");
103− QString scopeInstallDir(scopesLibdir + "/unity-scopes");
104 if (!m_systemScopes) {
112 if (!m_systemScopes) {
105 m_scopeInstallDir.reset(new QTemporaryDir(tmp.filePath("scopes.XXXXXX")));
113 m_scopeInstallDir.reset(new QTemporaryDir(tmp.filePath("scopes.XXXXXX")));
106 if (!m_scopeInstallDir->isValid()) {
114 if (!m_scopeInstallDir->isValid()) {
@@ -108,8 +116,8 @@ void RegistryTracker::runRegistry()
108 }
116 }
109 scopeInstallDir = m_scopeInstallDir->path();
117 scopeInstallDir = m_scopeInstallDir->path();
110 }
118 }
111− QString registry_ini = QString(REGISTRY_CONFIG).arg(m_endpoints_dir.path()).arg(m_endpoints_dir.path()).arg(m_mw_config.fileName()).arg(scopeInstallDir).arg(scopeRunnerPath).arg(serverRegistryConfig);
119+ QString registry_ini = QString(REGISTRY_CONFIG).arg(m_mw_config.fileName()).arg(scopeInstallDir).arg(scopeRunnerBin);
112− QString mw_ini = QString(MW_CONFIG).arg(m_endpoints_dir.path()).arg(m_endpoints_dir.path());
120+ QString mw_ini = QString(MW_CONFIG).arg(m_endpoints_dir.path());
113
121
114 m_runtime_config.write(runtime_ini.toUtf8());
122 m_runtime_config.write(runtime_ini.toUtf8());
115 m_registry_config.write(registry_ini.toUtf8());
123 m_registry_config.write(registry_ini.toUtf8());
@@ -121,11 +129,10 @@ void RegistryTracker::runRegistry()
121
129
122 qputenv("UNITY_SCOPES_RUNTIME_PATH", m_runtime_config.fileName().toLocal8Bit());
130 qputenv("UNITY_SCOPES_RUNTIME_PATH", m_runtime_config.fileName().toLocal8Bit());
123
131
124− QString registryBin(QDir(scopesLibdir).filePath("scoperegistry/scoperegistry"));
125 QStringList arguments;
132 QStringList arguments;
126 arguments << m_runtime_config.fileName();
133 arguments << m_runtime_config.fileName();
127 arguments << m_scopes;
134 arguments << m_scopes;
128
135
129 m_registry.setProcessChannelMode(QProcess::ForwardedChannels);
136 m_registry.setProcessChannelMode(QProcess::ForwardedChannels);
130− m_registry.start(registryBin, arguments);
137+ m_registry.start(scopeRegistryBin, arguments);
131}
138}
tools/unlock-device+2−4
@@ -4,7 +4,7 @@
4# Our goal here is to get an Ubuntu Touch device into a testable unlocked state.
4# Our goal here is to get an Ubuntu Touch device into a testable unlocked state.
5# This will include a reboot.
5# This will include a reboot.
6
6
7−WAIT_COMMAND="sleep 20"
7+WAIT_COMMAND="adb reboot; sleep 5; adb wait-for-device; sleep 20"
8
8
9while getopts s:w: opt; do
9while getopts s:w: opt; do
10 case $opt in
10 case $opt in
@@ -28,10 +28,8 @@ bus.clearSysState(cookie, dbus_interface="com.canonical.powerd");
28helpers.unlock_unity()
28helpers.unlock_unity()
29'
29'
30
30
31−adb reboot
32−sleep 5
33−adb "wait-for-device"
34eval "$WAIT_COMMAND"
31eval "$WAIT_COMMAND"
32+
35UNLOCK_OUTPUT=$(adb shell "sudo -u phablet -i python3 -c '$UNLOCK_SCRIPT'" 2>&1)
33UNLOCK_OUTPUT=$(adb shell "sudo -u phablet -i python3 -c '$UNLOCK_SCRIPT'" 2>&1)
36if echo "$UNLOCK_OUTPUT" | grep 'Greeter unlocked' >/dev/null; then
34if echo "$UNLOCK_OUTPUT" | grep 'Greeter unlocked' >/dev/null; then
37 echo "I: Unlock passed"
35 echo "I: Unlock passed"