on xenial help sign in
Merged upstream again.

[ Michal Hruby ] * Updated scope tool to create proper config files after recent libunity-scopes-api changes. [ Michał Sawicz ] * Refactor export_qmlfiles and export_qmlplugins to be more generic and clean up installed mocks. [ Albert Astals ] * Remove empty dirs * Set the tabbarmodel index as we do on real code It works better :D (LP: #1317255) [ Thomi Richards ] * Use new import location for ProcessSearchError in process_helpers script. [ Andrea Cimitan ] * Adds shadow for the carousel [ Daniel d'Andrada ] * Remove Revealer component It's not used anywhere anymore. It's been replaced by DragHandle. [ Andy Doan ] * unlock_device: support more complex reboot/wait cycles Currently this script only allows you to override how to "wait" on the device. This changes the logic to also support how you go about rebooting the device. This is handy for the ubuntu-emulator because adb-reboot is not currently supported. However, we also have a more sophisticated, fool-proof way we reboot/wait in the CI lab that would be nice to take advantage of: http://bazaar.launchpad.net/~ubuntu-test-case-dev/ubuntu-test- cases/touch/view/head:/scripts/reboot-and-wait [ CI bot ] * Resync trunk [ Michael Zanetti ] * support appid:// entries in gsettings schema and make findDesktopFile work with short-appid (LP: #1239750) [ Antti Kaijanmäki ] * Indicators/RootActionState: use g_variant_iter_loop to extract icons.

commited8f0a1474a3daec019a50071907b79d77a71735 authorYing-Chun Liu <paul.liu@canonical.com> dateMon 19 May 2014, 22:39 (12 years ago) parente35eb27bcb22f4
90 files changed+611−1084
cmake/modules/Plugins.cmake−68 cmake/modules/QmlPlugins.cmake+143 debian/changelog+58 plugins/AccountsService/CMakeLists.txt+1−4 plugins/AccountsService/qmldir+1−1 plugins/CMakeLists.txt+13 plugins/Dash/CMakeLists.txt+1−6 plugins/Dash/CardCreator.js+2 plugins/Dash/qmldir+1−1 plugins/HudClient/CMakeLists.txt+1−6 plugins/HudClient/qmldir+1−1 plugins/LightDM/CMakeLists.txt+1−6 plugins/LightDM/qmldir+1−1 plugins/Powerd/CMakeLists.txt+1−3 plugins/Powerd/qmldir+1−1 plugins/SessionBroadcast/CMakeLists.txt+1−4 plugins/SessionBroadcast/qmldir+1−1 plugins/Ubuntu/DownloadDaemonListener/CMakeLists.txt+1−6 plugins/Ubuntu/DownloadDaemonListener/qmldir+1−1 plugins/Ubuntu/Gestures/CMakeLists.txt+1−6 plugins/Ubuntu/Gestures/qmldir+1−1 plugins/Unity/Indicators/CMakeLists.txt+4−7 plugins/Unity/Indicators/qml/CMakeLists.txt−5 plugins/Unity/Indicators/qml/qmldir+1−1 plugins/Unity/Indicators/rootactionstate.cpp+7−8 plugins/Unity/Launcher/CMakeLists.txt+1−3 plugins/Unity/Launcher/backend/launcherbackend.cpp+29−15 plugins/Unity/Launcher/qmldir+1−1 plugins/Utils/CMakeLists.txt+1−3 plugins/Utils/qmldir+1−1 po/ca.po+7−7 po/es.po+4−4 po/fi.po+4−4 po/gd.po+16−14 po/he.po+13−11 po/km.po+6−6 po/nb.po+34−32 po/pt_BR.po+14−12 po/ru.po+4−4 po/uk.po+14−12 po/zh_CN.po+31−31 qml/Components/Revealer.qml−241 qml/Dash/CardCarousel.qml+10−1 qml/Dash/graphics/carousel_dropshadow@27.png qml/Dash/graphics/carousel_dropshadow@27.sci+5 tests/autopilot/unity8/process_helpers.py+11−4 tests/mocks/AccountsService/CMakeLists.txt+1−12 tests/mocks/AccountsService/qmldir+1 tests/mocks/CMakeLists.txt+30 tests/mocks/GSettings.1.0/CMakeLists.txt+1−4 tests/mocks/GSettings.1.0/qmldir+1 tests/mocks/HudClient/CMakeLists.txt+1−4 tests/mocks/HudClient/qmldir+2 tests/mocks/LightDM/CMakeLists.txt+5−12 tests/mocks/LightDM/qmldir+1 tests/mocks/Powerd/CMakeLists.txt+1−12 tests/mocks/Powerd/qmldir+1 tests/mocks/QMenuModel/CMakeLists.txt+2−12 tests/mocks/QMenuModel/qmldir+1 tests/mocks/QtMultimedia/CMakeLists.txt+1−12 tests/mocks/QtMultimedia/qmldir+1 tests/mocks/Ubuntu/DownloadDaemonListener/CMakeLists.txt+1−9 tests/mocks/Ubuntu/DownloadDaemonListener/qmldir+1 tests/mocks/Ubuntu/Thumbnailer/CMakeLists.txt+1−7 tests/mocks/Ubuntu/Thumbnailer/qmldir+2 tests/mocks/Unity/Application/CMakeLists.txt+9−35 tests/mocks/Unity/Application/qmldir+2 tests/mocks/Unity/CMakeLists.txt+1−12 tests/mocks/Unity/Indicators/CMakeLists.txt+1−14 tests/mocks/Unity/Indicators/qml/FakeMenuPage.qml → tests/mocks/Unity/Indicators/FakeMenuPage.qml tests/mocks/Unity/Indicators/qmldir+1 tests/mocks/Unity/Launcher/CMakeLists.txt+1−5 tests/mocks/Unity/Launcher/qmldir+1 tests/mocks/Unity/Notifications/CMakeLists.txt+1−11 tests/mocks/Unity/Notifications/qmldir+1 tests/mocks/Unity/qmldir+1 tests/plugins/Dash/cardcreator/1.res+2 tests/plugins/Dash/cardcreator/2.res+1 tests/plugins/Dash/cardcreator/3.res+2 tests/plugins/Dash/cardcreator/4.res+1 tests/plugins/Dash/cardcreator/5.res+2 tests/plugins/Unity/Indicators/rootactionstatetest.cpp+37 tests/qmltests/CMakeLists.txt−1 tests/qmltests/Components/RevealingRectangle.qml−78 tests/qmltests/Components/tst_Revealer.qml−262 tests/qmltests/Dash/tst_Dash.qml+1−1 tests/utils/modules/Unity/Test/CMakeLists.txt+4−7 tests/utils/modules/Unity/Test/qmldir+2 tools/registry-tracker.cpp+33−26 tools/unlock-device+2−4
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()
debian/changelog+58
@@ -1,3 +1,61 @@
1+unity8 (7.86+14.10.20140516.5-0ubuntu1) utopic; urgency=low
2+
3+ [ Michal Hruby ]
4+ * Updated scope tool to create proper config files after recent
5+ libunity-scopes-api changes.
6+
7+ [ Michał Sawicz ]
8+ * Refactor export_qmlfiles and export_qmlplugins to be more generic
9+ and clean up installed mocks.
10+
11+ [ Albert Astals ]
12+ * Remove empty dirs
13+ * Set the tabbarmodel index as we do on real code It works better :D
14+ (LP: #1317255)
15+
16+ [ Thomi Richards ]
17+ * Use new import location for ProcessSearchError in process_helpers
18+ script.
19+
20+ [ Andrea Cimitan ]
21+ * Adds shadow for the carousel
22+
23+ [ Daniel d'Andrada ]
24+ * Remove Revealer component It's not used anywhere anymore. It's been
25+ replaced by DragHandle.
26+
27+ [ Andy Doan ]
28+ * unlock_device: support more complex reboot/wait cycles Currently
29+ this script only allows you to override how to "wait" on the device.
30+ This changes the logic to also support how you go about rebooting
31+ the device. This is handy for the ubuntu-emulator because adb-reboot
32+ is not currently supported. However, we also have a more
33+ sophisticated, fool-proof way we reboot/wait in the CI lab that
34+ would be nice to take advantage of:
35+ http://bazaar.launchpad.net/~ubuntu-test-case-dev/ubuntu-test-
36+ cases/touch/view/head:/scripts/reboot-and-wait
37+
38+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Fri, 16 May 2014 18:46:32 +0000
39+
40+unity8 (7.86+14.10.20140516.2-0ubuntu1) utopic; urgency=low
41+
42+ [ CI bot ]
43+ * Resync trunk
44+
45+ [ Michael Zanetti ]
46+ * support appid:// entries in gsettings schema and make
47+ findDesktopFile work with short-appid (LP: #1239750)
48+
49+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Fri, 16 May 2014 12:32:40 +0000
50+
51+unity8 (7.86+14.10.20140514.1-0ubuntu1) utopic; urgency=low
52+
53+ [ Antti Kaijanmäki ]
54+ * Indicators/RootActionState: use g_variant_iter_loop to extract
55+ icons.
56+
57+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Wed, 14 May 2014 11:43:55 +0000
58+
159unity8 (7.86+14.10.20140513-0ubuntu1) utopic; urgency=low
260
361 [ Andrea Cimitan ]
plugins/AccountsService/CMakeLists.txt+1−4
@@ -1,5 +1,3 @@
1−include(Plugins)
2−
31add_definitions(-DSM_BUSNAME=systemBus)
42
53add_library(AccountsService-qml MODULE
@@ -10,8 +8,7 @@ add_library(AccountsService-qml MODULE
108
119qt5_use_modules(AccountsService-qml DBus Qml)
1210
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)
1512
1613set(POLKIT_LIB_DIR "${CMAKE_INSTALL_LOCALSTATEDIR}/lib/polkit-1")
1714set(POLKIT_DATA_DIR "${CMAKE_INSTALL_PREFIX}/share/polkit-1")
plugins/AccountsService/qmldir+1−1
@@ -1,3 +1,3 @@
11module AccountsService
22plugin AccountsService-qml
3−typeinfo plugin.qmltypes
3+typeinfo AccountsService.qmltypes
plugins/CMakeLists.txt+13
@@ -1,3 +1,16 @@
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+
114add_subdirectory(AccountsService)
215add_subdirectory(HudClient)
316add_subdirectory(LightDM)
plugins/Dash/CMakeLists.txt+1−6
@@ -1,6 +1,3 @@
1−# export_qmlplugin macro
2−include(Plugins)
3−
41# There's no cmake var for v8 include path :-/
52# so create one
63LIST(GET Qt5Core_INCLUDE_DIRS 0 QtCoreDir0)
@@ -41,6 +38,4 @@ target_link_libraries(Dash-qml
4138
4239qt5_use_modules(Dash-qml Qml Quick)
4340
44−# export the qmldir qmltypes and plugin files
45−export_qmlfiles(Dash Dash)
46−export_qmlplugin(Dash 0.1 Dash TARGETS Dash-qml)
41+add_unity8_plugin(Dash 0.1 Dash TARGETS Dash-qml)
plugins/Dash/CardCreator.js+2
@@ -73,6 +73,7 @@ var kArtShapeHolderCode = 'Item { \n\
7373 Component.onCompleted: updateWidthHeightBindings(); \n\
7474 onAspectSmallerThanImageAspectChanged: updateWidthHeightBindings(); \n\
7575 visible: image.status == Image.Ready; \n\
76+ borderSource: artShapeBorderSource; \n\
7677 function updateWidthHeightBindings() { \n\
7778 if (aspectSmallerThanImageAspect) { \n\
7879 width = Qt.binding(function() { return !visible ? 0 : image.width }); \n\
@@ -280,6 +281,7 @@ function cardString(template, components) {
280281 property var template; \n\
281282 property var components; \n\
282283 property var cardData; \n\
284+ property var artShapeBorderSource; \n\
283285 property real fontScale: 1.0; \n\
284286 property int headerAlignment: Text.AlignLeft; \n\
285287 property int fixedHeaderHeight: -1; \n\
plugins/Dash/qmldir+1−1
@@ -1,4 +1,4 @@
11module Dash
22plugin Dash-qml
3−typeinfo plugin.qmltypes
3+typeinfo Dash.qmltypes
44singleton CardCreatorCache 0.1 CardCreatorCache.qml
plugins/HudClient/CMakeLists.txt+1−6
@@ -1,6 +1,3 @@
1−# export_qmlplugin macro
2−include(Plugins)
3−
41find_package(Qt5Core REQUIRED)
52find_package(Qt5Quick REQUIRED)
63pkg_search_module(DEE dee-1.0 REQUIRED)
@@ -38,6 +35,4 @@ target_link_libraries(HudClientQml
3835
3936qt5_use_modules(HudClientQml Qml)
4037
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 @@
11module HudClient
22plugin 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−
41# Dependencies
52include(FindPkgConfig)
63pkg_check_modules(LIBUSERMETRICSOUTPUT REQUIRED libusermetricsoutput-1)
@@ -37,6 +34,4 @@ target_link_libraries(LightDM-qml
3734
3835qt5_use_modules(LightDM-qml DBus Gui Qml)
3936
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 @@
11module LightDM
22plugin LightDM-qml
3−typeinfo plugin.qmltypes
3+typeinfo LightDM.qmltypes
plugins/Powerd/CMakeLists.txt+1−3
@@ -1,4 +1,3 @@
1−include(Plugins)
21include(FindPkgConfig)
32
43pkg_search_module(GIO REQUIRED gio-2.0)
@@ -17,5 +16,4 @@ add_library(Powerd-qml MODULE
1716qt5_use_modules(Powerd-qml DBus Qml)
1817target_link_libraries(Powerd-qml ${GIO_LDFLAGS})
1918
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 @@
11module Powerd
22plugin Powerd-qml
3−typeinfo plugin.qmltypes
3+typeinfo Powerd.qmltypes
plugins/SessionBroadcast/CMakeLists.txt+1−4
@@ -1,5 +1,3 @@
1−include(Plugins)
2−
31add_definitions(-DSM_BUSNAME=systemBus)
42
53add_library(SessionBroadcast-qml MODULE
@@ -9,5 +7,4 @@ add_library(SessionBroadcast-qml MODULE
97
108qt5_use_modules(SessionBroadcast-qml DBus Qml)
119
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 @@
11module SessionBroadcast
22plugin 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−
41include_directories(
52 ${CMAKE_CURRENT_SOURCE_DIR}
63 ${CMAKE_CURRENT_BINARY_DIR}
@@ -17,6 +14,4 @@ add_library(DownloadDaemonListener MODULE ${DOWNLOADDAEMONLISTENER_SOURCES})
1714
1815qt5_use_modules(DownloadDaemonListener Qml Quick DBus Core)
1916
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 @@
11module Ubuntu.DownloadDaemonListener
22plugin 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−
41set(UbuntuGestureQml_SOURCES
52 plugin.cpp
63 AxisVelocityCalculator.cpp
@@ -19,6 +16,4 @@ qt5_use_modules(UbuntuGestureQml Core Quick)
1916# So that Foo.cpp can #include "Foo.moc"
2017include_directories(${CMAKE_CURRENT_BINARY_DIR})
2118
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 @@
11module Ubuntu.Gestures
22plugin 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−
41project(IndicatorsQml)
52
63pkg_check_modules(GLIB REQUIRED glib-2.0>=2.32)
@@ -10,8 +7,6 @@ pkg_check_modules(QMENUMODEL REQUIRED qmenumodel)
107find_package(Qt5Core REQUIRED)
118find_package(Qt5Quick REQUIRED)
129
13−add_subdirectory(qml)
14−
1510include_directories(
1611 ${CMAKE_CURRENT_SOURCE_DIR}
1712 ${CMAKE_CURRENT_BINARY_DIR}
@@ -56,5 +51,7 @@ target_link_libraries(IndicatorsQml
5651
5752qt5_use_modules(IndicatorsQml Core Qml Quick)
5853
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/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 @@
11module Unity.Indicators
22plugin IndicatorsQml
3−typeinfo plugin.qmltypes
3+typeinfo Indicators.qmltypes
44
55CachedUnityMenuModel 0.1 CachedUnityMenuModel.qml
66IndicatorBase 0.1 IndicatorBase.qml
plugins/Unity/Indicators/rootactionstate.cpp+7−8
@@ -240,19 +240,18 @@ QVariant RootActionState::toQVariant(GVariant* state) const
240240
241241 QStringList icons;
242242
243− if (g_variant_type_is_array(g_variant_get_type(vvalue))) {
244−
245−
246− for (int i = 0, iMax = g_variant_n_children(vvalue); i < iMax; i++) {
247− GVariant *child = g_variant_get_child_value(vvalue, i);
248−
243+ if (g_variant_is_of_type(vvalue, G_VARIANT_TYPE("av"))) {
244+ GVariantIter iter;
245+ GVariant *val = 0;
246+ g_variant_iter_init (&iter, vvalue);
247+ while (g_variant_iter_loop (&iter, "v", &val))
248+ {
249249 // FIXME - should be sending a url.
250− GIcon *gicon = g_icon_deserialize (child);
250+ GIcon *gicon = g_icon_deserialize (val);
251251 if (gicon) {
252252 icons << iconUri(gicon);
253253 g_object_unref (gicon);
254254 }
255− g_variant_unref(child);
256255 }
257256 }
258257 // will overwrite icon.
plugins/Unity/Launcher/CMakeLists.txt+1−3
@@ -32,6 +32,4 @@ target_link_libraries(UnityLauncher-qml ${GSETTINGS_QT_LDFLAGS})
3232
3333qt5_use_modules(UnityLauncher-qml DBus Qml)
3434
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 @@
3131class LauncherBackendItem
3232{
3333public:
34− QString desktopFile;
3534 QString displayName;
3635 QString icon;
3736 int count;
@@ -107,11 +106,6 @@ void LauncherBackend::setStoredApplications(const QStringList &appIds)
107106
108107QString LauncherBackend::desktopFile(const QString &appId) const
109108{
110− LauncherBackendItem *item = m_itemCache.value(appId, nullptr);
111− if (item) {
112− return item->desktopFile;
113− }
114−
115109 return findDesktopFile(appId);
116110}
117111
@@ -264,13 +258,33 @@ void LauncherBackend::syncFromAccounts()
264258 Q_FOREACH(const QString &entry, gSettings.get("favorites").toStringList()) {
265259 if (entry.startsWith("application://")) {
266260 QString appId = entry;
267− // Transform "application://foobar.desktop" to "foobar"
261+ // Transform "application://foobar.desktop" to "application://foobar"
268262 appId.remove("application://");
269263 if (appId.endsWith(".desktop")) {
270264 appId.chop(8);
271265 }
272266 QString df = findDesktopFile(appId);
273267
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+
274288 if (!df.isEmpty()) {
275289 m_storedApps << appId;
276290
@@ -315,10 +329,13 @@ QString LauncherBackend::findDesktopFile(const QString &appId) const
315329 helper = helper.replace(dashPos, 1, '/');
316330 }
317331
318− Q_FOREACH(const QString &searchDir, searchDirs) {
319− QFileInfo fileInfo(QDir(searchDir), helper + ".desktop");
320− if (fileInfo.exists()) {
321− return fileInfo.absoluteFilePath();
332+ Q_FOREACH(const QString &searchDirName, searchDirs) {
333+ QDir searchDir(searchDirName);
334+ Q_FOREACH(const QString &desktopFile, searchDir.entryList(QStringList() << "*.desktop")) {
335+ if (desktopFile.startsWith(helper)) {
336+ QFileInfo fileInfo(searchDir, desktopFile);
337+ return fileInfo.absoluteFilePath();
338+ }
322339 }
323340 }
324341
@@ -333,7 +350,6 @@ LauncherBackendItem* LauncherBackend::parseDesktopFile(const QString &desktopFil
333350 QSettings settings(desktopFile, QSettings::IniFormat);
334351
335352 LauncherBackendItem* item = new LauncherBackendItem();
336− item->desktopFile = desktopFile;
337353 item->displayName = settings.value("Desktop Entry/Name").toString();
338354
339355 QString iconString = settings.value("Desktop Entry/Icon").toString();
@@ -367,7 +383,7 @@ LauncherBackendItem* LauncherBackend::getItem(const QString &appId) const
367383 qWarning() << "Unable to parse desktop file for" << appId << "path" << df;
368384 }
369385 } else {
370− qDebug() << "Unable to find desktop file for:" << appId;
386+ qWarning() << "Unable to find desktop file for:" << appId;
371387 }
372388 }
373389
@@ -391,7 +407,6 @@ void LauncherBackend::loadFromVariant(const QVariantMap &details)
391407
392408 item = new LauncherBackendItem();
393409
394− item->desktopFile = details.value("desktopFile").toString();
395410 item->displayName = details.value("name").toString();
396411 item->icon = details.value("icon").toString();
397412 item->count = details.value("count").toInt();
@@ -408,7 +423,6 @@ QVariantMap LauncherBackend::itemToVariant(const QString &appId) const
408423 details.insert("id", appId);
409424 details.insert("name", item->displayName);
410425 details.insert("icon", item->icon);
411− details.insert("desktopFile", item->desktopFile);
412426 details.insert("count", item->count);
413427 details.insert("countVisible", item->countVisible);
414428 return details;
plugins/Unity/Launcher/qmldir+1−1
@@ -1,3 +1,3 @@
11module Unity.Launcher
22plugin UnityLauncher-qml
3−typeinfo plugin.qmltypes
3+typeinfo Launcher.qmltypes
plugins/Utils/CMakeLists.txt+1−3
@@ -33,6 +33,4 @@ set_target_properties(Utils-qml PROPERTIES COMPILE_FLAGS -fvisibility=default)
3333
3434qt5_use_modules(Utils-qml Qml Quick DBus Network XmlPatterns Gui Concurrent)
3535
36−# export the qmldir qmltypes and plugin files
37−export_qmlfiles(Utils Utils)
38−export_qmlplugin(Utils 0.1 Utils TARGETS Utils-qml)
36+add_unity8_plugin(Utils 0.1 Utils TARGETS Utils-qml)
plugins/Utils/qmldir+1−1
@@ -1,3 +1,3 @@
11module Utils
22plugin Utils-qml
3−typeinfo plugin.qmltypes
3+typeinfo Utils.qmltypes
po/ca.po+7−7
@@ -8,14 +8,14 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-04-10 11:13-0400\n"
11−"PO-Revision-Date: 2014-05-13 14:44+0000\n"
12−"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
11+"PO-Revision-Date: 2014-05-14 08:15+0000\n"
12+"Last-Translator: Adolfo Jayme <fitoschido@gmail.com>\n"
1313"Language-Team: Catalan <ca@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-14 06:28+0000\n"
18−"X-Generator: Launchpad (build 17002)\n"
17+"X-Launchpad-Export-Date: 2014-05-16 06:52+0000\n"
18+"X-Generator: Launchpad (build 17007)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -101,11 +101,11 @@ msgstr "Previsualització de %1"
101101
102102#: qml/Dash/Previews/PreviewActionCombo.qml:34
103103msgid "More..."
104−msgstr ""
104+msgstr "Més..."
105105
106106#: qml/Dash/Previews/PreviewActionCombo.qml:34
107107msgid "Less..."
108−msgstr ""
108+msgstr "Menys..."
109109
110110#: qml/Dash/Previews/PreviewRatingInput.qml:81
111111msgid "Rate this"
@@ -162,7 +162,7 @@ msgstr "Mostra la contrasenya"
162162
163163#: qml/Notifications/NotificationMenuItemFactory.qml:103
164164msgid "Please enter SIM PIN"
165−msgstr ""
165+msgstr "Introduïu el PIN de la targeta SIM"
166166
167167#: qml/Panel/SearchIndicator.qml:27
168168msgid "Search"
po/es.po+4−4
@@ -8,14 +8,14 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-04-10 11:13-0400\n"
11−"PO-Revision-Date: 2014-03-28 22:37+0000\n"
11+"PO-Revision-Date: 2014-05-15 15:38+0000\n"
1212"Last-Translator: Adolfo Jayme <fitoschido@gmail.com>\n"
1313"Language-Team: Spanish <es@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
17+"X-Launchpad-Export-Date: 2014-05-16 06:52+0000\n"
18+"X-Generator: Launchpad (build 17007)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -120,7 +120,7 @@ msgstr "Enviar"
120120
121121#: qml/Greeter/Greeter.qml:151
122122msgid "Swipe to unlock"
123−msgstr ""
123+msgstr "Deslice para desbloquear"
124124
125125#: qml/Greeter/Lockscreen.qml:149
126126msgid "Emergency Call"
po/fi.po+4−4
@@ -8,14 +8,14 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-04-10 11:13-0400\n"
11−"PO-Revision-Date: 2014-04-05 09:57+0000\n"
11+"PO-Revision-Date: 2014-05-15 13:06+0000\n"
1212"Last-Translator: Jiri Grönroos <Unknown>\n"
1313"Language-Team: Finnish <fi@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
17+"X-Launchpad-Export-Date: 2014-05-16 06:52+0000\n"
18+"X-Generator: Launchpad (build 17007)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -117,7 +117,7 @@ msgstr "Lähetä"
117117
118118#: qml/Greeter/Greeter.qml:151
119119msgid "Swipe to unlock"
120−msgstr ""
120+msgstr "Avaa pyyhkäisemällä"
121121
122122#: qml/Greeter/Lockscreen.qml:149
123123msgid "Emergency Call"
po/gd.po+16−14
@@ -8,23 +8,23 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-04-10 11:13-0400\n"
11−"PO-Revision-Date: 2013-09-30 10:34+0000\n"
11+"PO-Revision-Date: 2014-05-17 21:08+0000\n"
1212"Last-Translator: Akerbeltz <fios@akerbeltz.org>\n"
1313"Language-Team: Gaelic; Scottish <gd@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
17+"X-Launchpad-Export-Date: 2014-05-18 05:57+0000\n"
18+"X-Generator: Launchpad (build 17007)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
2222msgid "Lock to Launcher"
23−msgstr ""
23+msgstr "Glais ris an lòinsear"
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
2626msgid "Unlock from Launcher"
27−msgstr ""
27+msgstr "Dealaich on lòinsear"
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -77,6 +77,8 @@ msgid ""
7777"You have now mastered the edge gestures and can start using the "
7878"phone<br><br>Tap on the screen to start"
7979msgstr ""
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"
8082
8183#: qml/Components/PageHeader.qml:365
8284msgid "Recent searches"
@@ -84,28 +86,28 @@ msgstr "Na lorg thu o chionn goirid"
8486
8587#: qml/Components/SeeMore.qml:35
8688msgid "See more"
87−msgstr ""
89+msgstr "Seall barrachd"
8890
8991#: qml/Components/SeeMore.qml:58
9092msgid "See less"
91−msgstr ""
93+msgstr "Seall nas lugha"
9294
9395#: qml/Dash/DashApps.qml:37
9496msgid "Recent"
95−msgstr ""
97+msgstr "O chionn goirid"
9698
9799#: qml/Dash/PreviewListView.qml:52
98100#, qt-format
99101msgid "%1 Preview"
100−msgstr ""
102+msgstr "Ro-shealladh %1"
101103
102104#: qml/Dash/Previews/PreviewActionCombo.qml:34
103105msgid "More..."
104−msgstr ""
106+msgstr "Barrachd..."
105107
106108#: qml/Dash/Previews/PreviewActionCombo.qml:34
107109msgid "Less..."
108−msgstr ""
110+msgstr "Nas lugha..."
109111
110112#: qml/Dash/Previews/PreviewRatingInput.qml:81
111113msgid "Rate this"
@@ -121,7 +123,7 @@ msgstr "Cuir"
121123
122124#: qml/Greeter/Greeter.qml:151
123125msgid "Swipe to unlock"
124−msgstr ""
126+msgstr "Dèan grad-shlaighdeadh gus a' ghlas a thoirt dheth"
125127
126128#: qml/Greeter/Lockscreen.qml:149
127129msgid "Emergency Call"
@@ -158,11 +160,11 @@ msgstr "A' bruidhinn..."
158160
159161#: qml/Notifications/NotificationMenuItemFactory.qml:91
160162msgid "Show password"
161−msgstr ""
163+msgstr "Seall am facal-faire"
162164
163165#: qml/Notifications/NotificationMenuItemFactory.qml:103
164166msgid "Please enter SIM PIN"
165−msgstr ""
167+msgstr "Cuir a-steach SIM PIN"
166168
167169#: qml/Panel/SearchIndicator.qml:27
168170msgid "Search"
po/he.po+13−11
@@ -8,14 +8,14 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-04-10 11:13-0400\n"
11−"PO-Revision-Date: 2013-11-20 08:30+0000\n"
11+"PO-Revision-Date: 2014-05-15 21:19+0000\n"
1212"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
1313"Language-Team: Hebrew <he@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
17+"X-Launchpad-Export-Date: 2014-05-16 06:52+0000\n"
18+"X-Generator: Launchpad (build 17007)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -71,6 +71,8 @@ msgid ""
7171"You have now mastered the edge gestures and can start using the "
7272"phone<br><br>Tap on the screen to start"
7373msgstr ""
74+"ברגעים אלו סיימת את התמחותך בשימוש במחוות קצה והטלפון פתוח לשימושך<br><br>נא "
75+"לגעת במסך כדי להתחיל"
7476
7577#: qml/Components/PageHeader.qml:365
7678msgid "Recent searches"
@@ -78,28 +80,28 @@ msgstr "חיפושים אחרונים"
7880
7981#: qml/Components/SeeMore.qml:35
8082msgid "See more"
81−msgstr ""
83+msgstr "לראות עוד"
8284
8385#: qml/Components/SeeMore.qml:58
8486msgid "See less"
85−msgstr ""
87+msgstr "לראות פחות"
8688
8789#: qml/Dash/DashApps.qml:37
8890msgid "Recent"
89−msgstr ""
91+msgstr "בשימוש לאחרונה"
9092
9193#: qml/Dash/PreviewListView.qml:52
9294#, qt-format
9395msgid "%1 Preview"
94−msgstr ""
96+msgstr "תצוגה מקדימה של %1"
9597
9698#: qml/Dash/Previews/PreviewActionCombo.qml:34
9799msgid "More..."
98−msgstr ""
100+msgstr "עוד…"
99101
100102#: qml/Dash/Previews/PreviewActionCombo.qml:34
101103msgid "Less..."
102−msgstr ""
104+msgstr "פחות…"
103105
104106#: qml/Dash/Previews/PreviewRatingInput.qml:81
105107msgid "Rate this"
@@ -115,7 +117,7 @@ msgstr "שליחה"
115117
116118#: qml/Greeter/Greeter.qml:151
117119msgid "Swipe to unlock"
118−msgstr ""
120+msgstr "יש להחליק לפתיחה"
119121
120122#: qml/Greeter/Lockscreen.qml:149
121123msgid "Emergency Call"
@@ -156,7 +158,7 @@ msgstr "הצגת הססמה"
156158
157159#: qml/Notifications/NotificationMenuItemFactory.qml:103
158160msgid "Please enter SIM PIN"
159−msgstr ""
161+msgstr "נא להזין את קוד ה־<U+200F>SIM"
160162
161163#: qml/Panel/SearchIndicator.qml:27
162164msgid "Search"
po/km.po+6−6
@@ -8,14 +8,14 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-04-10 11:13-0400\n"
11−"PO-Revision-Date: 2014-03-04 02:32+0000\n"
11+"PO-Revision-Date: 2014-05-19 01:42+0000\n"
1212"Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>\n"
1313"Language-Team: Khmer <km@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
17+"X-Launchpad-Export-Date: 2014-05-19 06:25+0000\n"
18+"X-Generator: Launchpad (build 17007)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -90,12 +90,12 @@ msgstr "មើល​តិច​ជាង"
9090
9191#: qml/Dash/DashApps.qml:37
9292msgid "Recent"
93−msgstr ""
93+msgstr "បច្ចុប្បន្ន"
9494
9595#: qml/Dash/PreviewListView.qml:52
9696#, qt-format
9797msgid "%1 Preview"
98−msgstr ""
98+msgstr "មើល​ជា​មុន %1"
9999
100100#: qml/Dash/Previews/PreviewActionCombo.qml:34
101101msgid "More..."
@@ -119,7 +119,7 @@ msgstr "ផ្ញើ"
119119
120120#: qml/Greeter/Greeter.qml:151
121121msgid "Swipe to unlock"
122−msgstr ""
122+msgstr "អូស​ដើម្បី​ដោះសោ"
123123
124124#: qml/Greeter/Lockscreen.qml:149
125125msgid "Emergency Call"
po/nb.po+34−32
@@ -8,69 +8,71 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-04-10 11:13-0400\n"
11−"PO-Revision-Date: 2013-06-27 07:02+0000\n"
12−"Last-Translator: Joakim Langvand <jlangvand@gmail.com>\n"
11+"PO-Revision-Date: 2014-05-15 17:12+0000\n"
12+"Last-Translator: Åka Sikrom <Unknown>\n"
1313"Language-Team: Norwegian Bokmal <nb@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:43+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
17+"X-Launchpad-Export-Date: 2014-05-16 06:52+0000\n"
18+"X-Generator: Launchpad (build 17007)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
2222msgid "Lock to Launcher"
23−msgstr ""
23+msgstr "Lås til oppstarter"
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
2626msgid "Unlock from Launcher"
27−msgstr ""
27+msgstr "Lås opp fra oppstarter"
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
31−msgstr ""
31+msgstr "Hopp over introduksjon"
3232
3333#: qml/Components/EdgeDemo.qml:113
3434msgid "Right edge"
35−msgstr ""
35+msgstr "Høyre kant"
3636
3737#: qml/Components/EdgeDemo.qml:114
3838msgid "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"
4040
4141#: qml/Components/EdgeDemo.qml:145
4242msgid "Top edge"
43−msgstr ""
43+msgstr "Øvre kant"
4444
4545#: qml/Components/EdgeDemo.qml:146
4646msgid "Try swiping from the top edge to access the indicators"
47−msgstr ""
47+msgstr "Prøv å sveipe fra toppen for å få tilgang til innstillingene"
4848
4949#: qml/Components/EdgeDemo.qml:171
5050msgid "Close"
51−msgstr ""
51+msgstr "Lukk"
5252
5353#: qml/Components/EdgeDemo.qml:172
5454msgid "Swipe up again to close the settings screen"
55−msgstr ""
55+msgstr "Sveip opp igjen for å lukke innstillingsmenyen"
5656
5757#: qml/Components/EdgeDemo.qml:199
5858msgid "Left edge"
59−msgstr ""
59+msgstr "Venstre kant"
6060
6161#: qml/Components/EdgeDemo.qml:200
6262msgid "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"
6464
6565#: qml/Components/EdgeDemo.qml:227
6666msgid "Well done"
67−msgstr ""
67+msgstr "Bra jobba"
6868
6969#: qml/Components/EdgeDemo.qml:228
7070msgid ""
7171"You have now mastered the edge gestures and can start using the "
7272"phone<br><br>Tap on the screen to start"
7373msgstr ""
74+"Du har nå mestret kantbevegelsene, og er klar til å bruke "
75+"telefonen<br><br>Trykk på skjermen for å begynne"
7476
7577#: qml/Components/PageHeader.qml:365
7678msgid "Recent searches"
@@ -78,57 +80,57 @@ msgstr "Siste søk"
7880
7981#: qml/Components/SeeMore.qml:35
8082msgid "See more"
81−msgstr ""
83+msgstr "Vis mer"
8284
8385#: qml/Components/SeeMore.qml:58
8486msgid "See less"
85−msgstr ""
87+msgstr "Vis mindre"
8688
8789#: qml/Dash/DashApps.qml:37
8890msgid "Recent"
89−msgstr ""
91+msgstr "Nylig"
9092
9193#: qml/Dash/PreviewListView.qml:52
9294#, qt-format
9395msgid "%1 Preview"
94−msgstr ""
96+msgstr "%1-forhåndsvisning"
9597
9698#: qml/Dash/Previews/PreviewActionCombo.qml:34
9799msgid "More..."
98−msgstr ""
100+msgstr "Mer …"
99101
100102#: qml/Dash/Previews/PreviewActionCombo.qml:34
101103msgid "Less..."
102−msgstr ""
104+msgstr "Mindre …"
103105
104106#: qml/Dash/Previews/PreviewRatingInput.qml:81
105107msgid "Rate this"
106−msgstr ""
108+msgstr "Vurder dette"
107109
108110#: qml/Dash/Previews/PreviewRatingInput.qml:126
109111msgid "Add a review"
110−msgstr ""
112+msgstr "Skriv en anmeldelse"
111113
112114#: qml/Dash/Previews/PreviewRatingInput.qml:166
113115msgid "Send"
114−msgstr ""
116+msgstr "Send"
115117
116118#: qml/Greeter/Greeter.qml:151
117119msgid "Swipe to unlock"
118−msgstr ""
120+msgstr "Sveip for å låse opp"
119121
120122#: qml/Greeter/Lockscreen.qml:149
121123msgid "Emergency Call"
122−msgstr ""
124+msgstr "Nødanrop"
123125
124126#: qml/Greeter/PassphraseLockscreen.qml:59
125127#, qt-format
126128msgid "Hello %1"
127−msgstr ""
129+msgstr "Hei, %1"
128130
129131#: qml/Greeter/PassphraseLockscreen.qml:59
130132msgid "Hello"
131−msgstr ""
133+msgstr "Hei"
132134
133135#: qml/Hud/HudParametrizedActionsPage.qml:132
134136msgid "Confirm"
@@ -152,11 +154,11 @@ msgstr "Snakker …"
152154
153155#: qml/Notifications/NotificationMenuItemFactory.qml:91
154156msgid "Show password"
155−msgstr ""
157+msgstr "Vis passord"
156158
157159#: qml/Notifications/NotificationMenuItemFactory.qml:103
158160msgid "Please enter SIM PIN"
159−msgstr ""
161+msgstr "Skriv inn PIN-koden til SIM-kortet"
160162
161163#: qml/Panel/SearchIndicator.qml:27
162164msgid "Search"
@@ -165,4 +167,4 @@ msgstr "Søk"
165167#: qml/Shell.qml:348
166168#, qt-format
167169msgid "Please enter %1"
168−msgstr ""
170+msgstr "Skriv inn %1"
po/pt_BR.po+14−12
@@ -8,14 +8,14 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-04-10 11:13-0400\n"
11−"PO-Revision-Date: 2014-01-18 23:24+0000\n"
12−"Last-Translator: Fábio Nogueira <deb-user-ba@ubuntu.com>\n"
11+"PO-Revision-Date: 2014-05-15 14:31+0000\n"
12+"Last-Translator: Rafael Neri <Unknown>\n"
1313"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
17+"X-Launchpad-Export-Date: 2014-05-16 06:52+0000\n"
18+"X-Generator: Launchpad (build 17007)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -73,6 +73,8 @@ msgid ""
7373"You have now mastered the edge gestures and can start using the "
7474"phone<br><br>Tap on the screen to start"
7575msgstr ""
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"
7678
7779#: qml/Components/PageHeader.qml:365
7880msgid "Recent searches"
@@ -80,28 +82,28 @@ msgstr "Pesquisas recentes"
8082
8183#: qml/Components/SeeMore.qml:35
8284msgid "See more"
83−msgstr ""
85+msgstr "Ver mais"
8486
8587#: qml/Components/SeeMore.qml:58
8688msgid "See less"
87−msgstr ""
89+msgstr "Ver menos"
8890
8991#: qml/Dash/DashApps.qml:37
9092msgid "Recent"
91−msgstr ""
93+msgstr "Recentes"
9294
9395#: qml/Dash/PreviewListView.qml:52
9496#, qt-format
9597msgid "%1 Preview"
96−msgstr ""
98+msgstr "%1 visualização"
9799
98100#: qml/Dash/Previews/PreviewActionCombo.qml:34
99101msgid "More..."
100−msgstr ""
102+msgstr "Mais..."
101103
102104#: qml/Dash/Previews/PreviewActionCombo.qml:34
103105msgid "Less..."
104−msgstr ""
106+msgstr "Menos..."
105107
106108#: qml/Dash/Previews/PreviewRatingInput.qml:81
107109msgid "Rate this"
@@ -117,7 +119,7 @@ msgstr "Enviar"
117119
118120#: qml/Greeter/Greeter.qml:151
119121msgid "Swipe to unlock"
120−msgstr ""
122+msgstr "Deslizar para desbloquear"
121123
122124#: qml/Greeter/Lockscreen.qml:149
123125msgid "Emergency Call"
@@ -158,7 +160,7 @@ msgstr "Exibir senha"
158160
159161#: qml/Notifications/NotificationMenuItemFactory.qml:103
160162msgid "Please enter SIM PIN"
161−msgstr ""
163+msgstr "Por favor, digite o PIN do cartão SIM"
162164
163165#: qml/Panel/SearchIndicator.qml:27
164166msgid "Search"
po/ru.po+4−4
@@ -8,14 +8,14 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-04-10 11:13-0400\n"
11−"PO-Revision-Date: 2014-04-03 13:07+0000\n"
11+"PO-Revision-Date: 2014-05-15 12:57+0000\n"
1212"Last-Translator: Zonov Roman <Unknown>\n"
1313"Language-Team: Russian <ru@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
17+"X-Launchpad-Export-Date: 2014-05-16 06:52+0000\n"
18+"X-Generator: Launchpad (build 17007)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -122,7 +122,7 @@ msgstr "Отправить"
122122
123123#: qml/Greeter/Greeter.qml:151
124124msgid "Swipe to unlock"
125−msgstr ""
125+msgstr "Смахните, чтобы разблокировать"
126126
127127#: qml/Greeter/Lockscreen.qml:149
128128msgid "Emergency Call"
po/uk.po+14−12
@@ -8,14 +8,14 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-04-10 11:13-0400\n"
11−"PO-Revision-Date: 2013-11-23 12:37+0000\n"
12−"Last-Translator: Ignat Kizenko <Unknown>\n"
11+"PO-Revision-Date: 2014-05-15 12:00+0000\n"
12+"Last-Translator: Yuri Chornoivan <yurchor@gmail.com>\n"
1313"Language-Team: Ukrainian <uk@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
17+"X-Launchpad-Export-Date: 2014-05-16 06:52+0000\n"
18+"X-Generator: Launchpad (build 17007)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -74,6 +74,8 @@ msgid ""
7474"You have now mastered the edge gestures and can start using the "
7575"phone<br><br>Tap on the screen to start"
7676msgstr ""
77+"Вами налаштовано дії у відповідь на дотики на краях екрана. Тепер телефоном "
78+"можна користуватися.<br><br>Торкніться екрана, щоб розпочати."
7779
7880#: qml/Components/PageHeader.qml:365
7981msgid "Recent searches"
@@ -81,28 +83,28 @@ msgstr "Нещодавні пошуки"
8183
8284#: qml/Components/SeeMore.qml:35
8385msgid "See more"
84−msgstr ""
86+msgstr "Докладніше"
8587
8688#: qml/Components/SeeMore.qml:58
8789msgid "See less"
88−msgstr ""
90+msgstr "Стисліше"
8991
9092#: qml/Dash/DashApps.qml:37
9193msgid "Recent"
92−msgstr ""
94+msgstr "Нещодавні"
9395
9496#: qml/Dash/PreviewListView.qml:52
9597#, qt-format
9698msgid "%1 Preview"
97−msgstr ""
99+msgstr "Перегляд %1"
98100
99101#: qml/Dash/Previews/PreviewActionCombo.qml:34
100102msgid "More..."
101−msgstr ""
103+msgstr "Більше…"
102104
103105#: qml/Dash/Previews/PreviewActionCombo.qml:34
104106msgid "Less..."
105−msgstr ""
107+msgstr "Менше..."
106108
107109#: qml/Dash/Previews/PreviewRatingInput.qml:81
108110msgid "Rate this"
@@ -118,7 +120,7 @@ msgstr "Надіслати"
118120
119121#: qml/Greeter/Greeter.qml:151
120122msgid "Swipe to unlock"
121−msgstr ""
123+msgstr "Проведіть пальцем, щоб розблокувати"
122124
123125#: qml/Greeter/Lockscreen.qml:149
124126msgid "Emergency Call"
@@ -159,7 +161,7 @@ msgstr "Показати пароль"
159161
160162#: qml/Notifications/NotificationMenuItemFactory.qml:103
161163msgid "Please enter SIM PIN"
162−msgstr ""
164+msgstr "Введіть PIN-код SIM-картки"
163165
164166#: qml/Panel/SearchIndicator.qml:27
165167msgid "Search"
po/zh_CN.po+31−31
@@ -8,69 +8,69 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-04-10 11:13-0400\n"
11−"PO-Revision-Date: 2013-10-09 13:51+0000\n"
12−"Last-Translator: Aron Xu <Unknown>\n"
11+"PO-Revision-Date: 2014-05-19 02:24+0000\n"
12+"Last-Translator: Shuduo Sang <Unknown>\n"
1313"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-05-01 06:44+0000\n"
18−"X-Generator: Launchpad (build 16985)\n"
17+"X-Launchpad-Export-Date: 2014-05-19 06:25+0000\n"
18+"X-Generator: Launchpad (build 17007)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
2222msgid "Lock to Launcher"
23−msgstr ""
23+msgstr "固定到启动器"
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
2626msgid "Unlock from Launcher"
27−msgstr ""
27+msgstr "从启动器移除"
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
31−msgstr ""
31+msgstr "跳过简介"
3232
3333#: qml/Components/EdgeDemo.qml:113
3434msgid "Right edge"
35−msgstr ""
35+msgstr "右边缘"
3636
3737#: qml/Components/EdgeDemo.qml:114
3838msgid "Try swiping from the right edge to unlock the phone"
39−msgstr ""
39+msgstr "从右边滑动可以解锁"
4040
4141#: qml/Components/EdgeDemo.qml:145
4242msgid "Top edge"
43−msgstr ""
43+msgstr "上边缘"
4444
4545#: qml/Components/EdgeDemo.qml:146
4646msgid "Try swiping from the top edge to access the indicators"
47−msgstr ""
47+msgstr "从上边缘划入可以访问指示器"
4848
4949#: qml/Components/EdgeDemo.qml:171
5050msgid "Close"
51−msgstr ""
51+msgstr "关闭"
5252
5353#: qml/Components/EdgeDemo.qml:172
5454msgid "Swipe up again to close the settings screen"
55−msgstr ""
55+msgstr "再次向上划动可以关闭设置界面"
5656
5757#: qml/Components/EdgeDemo.qml:199
5858msgid "Left edge"
59−msgstr ""
59+msgstr "左边缘"
6060
6161#: qml/Components/EdgeDemo.qml:200
6262msgid "Swipe from the left to reveal the launcher for quick access to apps"
63−msgstr ""
63+msgstr "从左边划入展开启动器可以快速打开应用"
6464
6565#: qml/Components/EdgeDemo.qml:227
6666msgid "Well done"
67−msgstr ""
67+msgstr "做得好"
6868
6969#: qml/Components/EdgeDemo.qml:228
7070msgid ""
7171"You have now mastered the edge gestures and can start using the "
7272"phone<br><br>Tap on the screen to start"
73−msgstr ""
73+msgstr "您现在已经掌握了边缘滑动手势,可以开始使用手机了<br><br>请点击屏幕开始使用"
7474
7575#: qml/Components/PageHeader.qml:365
7676msgid "Recent searches"
@@ -78,48 +78,48 @@ msgstr "近期搜索"
7878
7979#: qml/Components/SeeMore.qml:35
8080msgid "See more"
81−msgstr ""
81+msgstr "了解更多"
8282
8383#: qml/Components/SeeMore.qml:58
8484msgid "See less"
85−msgstr ""
85+msgstr "显示更少"
8686
8787#: qml/Dash/DashApps.qml:37
8888msgid "Recent"
89−msgstr ""
89+msgstr "最近使用过的"
9090
9191#: qml/Dash/PreviewListView.qml:52
9292#, qt-format
9393msgid "%1 Preview"
94−msgstr ""
94+msgstr "%1 预览"
9595
9696#: qml/Dash/Previews/PreviewActionCombo.qml:34
9797msgid "More..."
98−msgstr ""
98+msgstr "更多..."
9999
100100#: qml/Dash/Previews/PreviewActionCombo.qml:34
101101msgid "Less..."
102−msgstr ""
102+msgstr "更少..."
103103
104104#: qml/Dash/Previews/PreviewRatingInput.qml:81
105105msgid "Rate this"
106−msgstr ""
106+msgstr "评分"
107107
108108#: qml/Dash/Previews/PreviewRatingInput.qml:126
109109msgid "Add a review"
110−msgstr ""
110+msgstr "添加评论"
111111
112112#: qml/Dash/Previews/PreviewRatingInput.qml:166
113113msgid "Send"
114−msgstr ""
114+msgstr "发送"
115115
116116#: qml/Greeter/Greeter.qml:151
117117msgid "Swipe to unlock"
118−msgstr ""
118+msgstr "滑动解锁"
119119
120120#: qml/Greeter/Lockscreen.qml:149
121121msgid "Emergency Call"
122−msgstr ""
122+msgstr "紧急电话"
123123
124124#: qml/Greeter/PassphraseLockscreen.qml:59
125125#, qt-format
@@ -152,11 +152,11 @@ msgstr "讲话中..."
152152
153153#: qml/Notifications/NotificationMenuItemFactory.qml:91
154154msgid "Show password"
155−msgstr ""
155+msgstr "显示密码"
156156
157157#: qml/Notifications/NotificationMenuItemFactory.qml:103
158158msgid "Please enter SIM PIN"
159−msgstr ""
159+msgstr "请输入 SIM PIN"
160160
161161#: qml/Panel/SearchIndicator.qml:27
162162msgid "Search"
@@ -165,4 +165,4 @@ msgstr "搜索"
165165#: qml/Shell.qml:348
166166#, qt-format
167167msgid "Please enter %1"
168−msgstr ""
168+msgstr "请输入 %1"
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/CardCarousel.qml+10−1
@@ -18,7 +18,6 @@ import QtQuick 2.0
1818import Ubuntu.Components 0.1
1919import "../Components"
2020
21−
2221DashRenderer {
2322 id: cardCarousel
2423
@@ -66,6 +65,16 @@ DashRenderer {
6665 item.components = Qt.binding(function() { return cardTool.components; });
6766 item.fontScale = Qt.binding(function() { return carousel.fontScale; });
6867 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"
6978 }
7079 }
7180 }
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
tests/autopilot/unity8/process_helpers.py+11−4
@@ -17,12 +17,19 @@
1717# along with this program. If not, see <http://www.gnu.org/licenses/>.
1818#
1919
20−from autopilot.introspection import (
21− get_proxy_object_for_existing_process,
22− ProcessSearchError,
23−)
2420import logging
2521import 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+
2633from unity8.shell import emulators
2734from unity8.shell.emulators import main_window as main_window_emulator
2835
tests/mocks/AccountsService/CMakeLists.txt+1−12
@@ -7,15 +7,4 @@ add_library(MockAccountsService-qml MODULE
77
88qt5_use_modules(MockAccountsService-qml DBus Qml)
99
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
16− DESTINATION ${SHELL_INSTALL_QML}/mocks/AccountsService
17− )
18−
19−install(FILES qmldir
20− DESTINATION ${SHELL_INSTALL_QML}/mocks/AccountsService
21− )
10+add_unity8_mock(AccountsService 0.1 AccountsService TARGETS MockAccountsService-qml)
tests/mocks/AccountsService/qmldir+1
@@ -1,2 +1,3 @@
11module AccountsService
22plugin 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+
131add_subdirectory(AccountsService)
232add_subdirectory(GSettings.1.0)
333add_subdirectory(HudClient)
tests/mocks/GSettings.1.0/CMakeLists.txt+1−4
@@ -17,7 +17,4 @@ target_link_libraries(FakeGSettingsQml
1717
1818qt5_use_modules(FakeGSettingsQml Qml)
1919
20−# copy qmldir file into build directory for shadow builds
21−file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
22− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
23− )
20+add_unity8_mock(GSettings 1.0 GSettings.1.0 TARGETS FakeGSettingsQml)
tests/mocks/GSettings.1.0/qmldir+1
@@ -1,2 +1,3 @@
11module GSettings
22plugin FakeGSettingsQml
3+typeinfo GSettings.qmltypes
tests/mocks/HudClient/CMakeLists.txt+1−4
@@ -35,7 +35,4 @@ target_link_libraries(FakeHudClientQml
3535
3636qt5_use_modules(FakeHudClientQml Qml)
3737
38−# copy qmldir file into build directory for shadow builds
39−file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
40− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
41− )
38+add_unity8_mock(HudClient 0.1 HudClient TARGETS FakeHudClientQml)
tests/mocks/HudClient/qmldir+2
@@ -1 +1,3 @@
1+module HudClient
12plugin FakeHudClientQml
3+typeinfo HudClient.qmltypes
tests/mocks/LightDM/CMakeLists.txt+5−12
@@ -43,15 +43,8 @@ target_link_libraries(MockLightDM-qml
4343
4444qt5_use_modules(MockLightDM-qml DBus Gui Qml)
4545
46−# copy qmldir file into build directory for shadow builds
47−file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
48− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
49− )
50−
51−install(TARGETS MockLightDM-qml
52− DESTINATION ${SHELL_INSTALL_QML}/mocks/LightDM
53− )
54−
55−install(FILES qmldir
56− DESTINATION ${SHELL_INSTALL_QML}/mocks/LightDM
57− )
46+add_unity8_mock(LightDM 0.1 LightDM
47+ PREFIX mocks
48+ TARGETS MockLightDM-qml
49+ ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_CURRENT_BINARY_DIR}/full"
50+)
tests/mocks/LightDM/qmldir+1
@@ -1,2 +1,3 @@
11module LightDM
22plugin MockLightDM-qml
3+typeinfo LightDM.qmltypes
tests/mocks/Powerd/CMakeLists.txt+1−12
@@ -7,15 +7,4 @@ add_library(MockPowerd-qml MODULE
77
88qt5_use_modules(MockPowerd-qml Qml)
99
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
16− DESTINATION ${SHELL_INSTALL_QML}/mocks/Powerd
17− )
18−
19−install(FILES qmldir
20− DESTINATION ${SHELL_INSTALL_QML}/mocks/Powerd
21− )
10+add_unity8_mock(Powerd 0.1 Powerd TARGETS MockPowerd-qml)
tests/mocks/Powerd/qmldir+1
@@ -1,2 +1,3 @@
11module Powerd
22plugin 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−
131include_directories(
142 ${Qt5Core_INCLUDE_DIRS}
153 ${Qt5Quick_INCLUDE_DIRS}
@@ -32,3 +20,5 @@ qt5_use_modules(QMenuModelQml Core Quick)
3220set_target_properties(QMenuModelQml PROPERTIES
3321 OUTPUT_NAME qmenumodel
3422 VERSION 0)
23+
24+add_unity8_mock(QMenuModel 0.1 QMenuModel TARGETS QMenuModelQml)
tests/mocks/QMenuModel/qmldir+1
@@ -1,5 +1,6 @@
11module QMenuModel
22plugin qmenumodel
3+typeinfo QMenuModel.qmltypes
34
45QDBusActionGroup 0.1 QDBusActionGroup.qml
56UnityMenuAction 0.1 UnityMenuAction.qml
tests/mocks/QtMultimedia/CMakeLists.txt+1−12
@@ -5,15 +5,4 @@ add_library(QtMultimedia-qml MODULE
55
66qt5_use_modules(QtMultimedia-qml Qml)
77
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
14− DESTINATION ${SHELL_INSTALL_QML}/mocks/QtMultimedia
15− )
16−
17−install(FILES qmldir
18− DESTINATION ${SHELL_INSTALL_QML}/mocks/QtMultimedia
19− )
8+add_unity8_mock(QtMultimedia 5.0 QtMultimedia TARGETS QtMultimedia-qml)
tests/mocks/QtMultimedia/qmldir+1
@@ -1,2 +1,3 @@
11module QtMultimedia
22plugin QtMultimedia-qml
3+typeinfo QtMultimedia.qmltypes
tests/mocks/Ubuntu/DownloadDaemonListener/CMakeLists.txt+1−9
@@ -7,12 +7,4 @@ add_library(FakeUbuntuDownloadDaemonListenerQml MODULE ${FakeUbuntuDownloadDaemo
77
88qt5_use_modules(FakeUbuntuDownloadDaemonListenerQml Core Quick)
99
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
17− DESTINATION ${SHELL_INSTALL_QML}/mocks/Ubuntu/DownloadDaemonListener
18− )
10+add_unity8_mock(Ubuntu.DownloadDaemonListener 0.1 Ubuntu/DownloadDaemonListener TARGETS FakeUbuntuDownloadDaemonListenerQml)
tests/mocks/Ubuntu/DownloadDaemonListener/qmldir+1
@@ -1,2 +1,3 @@
11module Ubuntu.DownloadDaemonListener
22plugin 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
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)
1+add_unity8_mock(Ubuntu.Thumbnailer 0.1 Ubuntu/Thumbnailer)
tests/mocks/Ubuntu/Thumbnailer/qmldir+2
@@ -1,2 +1,4 @@
11module Ubuntu.Thumbnailer
2+typeinfo Thumbnailer.qmltypes
3+
24Dummy 0.1 Dummy.qml
tests/mocks/Unity/Application/CMakeLists.txt+9−35
@@ -12,40 +12,14 @@ set(FakeUnityApplicationQml_SOURCES
1212
1313add_library(FakeUnityApplicationQml MODULE ${FakeUnityApplicationQml_SOURCES})
1414
15−qt5_use_modules(FakeUnityApplicationQml Core Quick)
16−
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−)
15+add_library(NonMirUnityApplicationQml MODULE ${FakeUnityApplicationQml_SOURCES})
16+set_target_properties(NonMirUnityApplicationQml PROPERTIES OUTPUT_NAME FakeUnityApplicationQml)
3017
31−install(TARGETS FakeUnityApplicationQml
32− DESTINATION ${SHELL_INSTALL_QML}/mocks/Unity/Application
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− )
18+qt5_use_modules(FakeUnityApplicationQml Core Quick)
19+qt5_use_modules(NonMirUnityApplicationQml Core Quick)
4820
49−install(FILES qmldir InputFilterArea.qml OSKController.qml
50− DESTINATION ${SHELL_INSTALL_QML}/nonmirplugins/Unity/Application
51− )
21+add_unity8_mock(Unity.Application 0.1 Unity/Application PREFIX mocks TARGETS FakeUnityApplicationQml)
22+add_unity8_mock(Unity.Application 0.1 Unity/Application
23+ PREFIX nonmirplugins
24+ TARGETS NonMirUnityApplicationQml
25+ BINARY_DIR ${CMAKE_BINARY_DIR}/nonmirplugins)
tests/mocks/Unity/Application/qmldir+2
@@ -1,4 +1,6 @@
11module Unity.Application
22plugin FakeUnityApplicationQml
3+typeinfo Application.qmltypes
4+
35InputFilterArea 0.1 InputFilterArea.qml
46OSKController 0.1 OSKController.qml
tests/mocks/Unity/CMakeLists.txt+1−12
@@ -39,15 +39,4 @@ target_link_libraries(FakeUnityQml
3939
4040qt5_use_modules(FakeUnityQml Qml)
4141
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
48− DESTINATION ${SHELL_INSTALL_QML}/scopefakes/Unity
49− )
50−
51−install(FILES qmldir
52− DESTINATION ${SHELL_INSTALL_QML}/scopefakes/Unity
53− )
42+add_unity8_mock(Unity 0.2 Unity PREFIX scopefakes TARGETS FakeUnityQml)
tests/mocks/Unity/Indicators/CMakeLists.txt+1−14
@@ -37,17 +37,4 @@ target_link_libraries(IndicatorsFakeQml)
3737
3838qt5_use_modules(IndicatorsFakeQml Core Qml Quick)
3939
40−file(GLOB IndicatorsFake_QMLFILES
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−)
40+add_unity8_mock(Unity.Indicators 0.1 Unity/Indicators TARGETS IndicatorsFakeQml)
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 @@
11module Unity.Indicators
22plugin IndicatorsFakeQml
3+typeinfo Indicators.qmltypes
34
45CachedUnityMenuModel 0.1 CachedUnityMenuModel.qml
56IndicatorBase 0.1 IndicatorBase.qml
tests/mocks/Unity/Launcher/CMakeLists.txt+1−5
@@ -20,8 +20,4 @@ add_library(MockLauncherPlugin MODULE ${MockLauncherModel_SOURCES})
2020
2121qt5_use_modules(MockLauncherPlugin Core Quick)
2222
23−# copy files into build directory for shadow builds
24−add_custom_target(LauncherPluginQmlDirFile ALL
25− COMMAND cp "${CMAKE_CURRENT_SOURCE_DIR}/qmldir" ${CMAKE_CURRENT_BINARY_DIR}
26− DEPENDS qmldir
27−)
23+add_unity8_mock(Unity.Launcher 0.1 Unity/Launcher TARGETS MockLauncherPlugin)
tests/mocks/Unity/Launcher/qmldir+1
@@ -1,2 +1,3 @@
11module Unity.Launcher
22plugin MockLauncherPlugin
3+typeinfo Launcher.qmltypes
tests/mocks/Unity/Notifications/CMakeLists.txt+1−11
@@ -1,11 +1 @@
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(NotificationsQmlFiles ALL
9− COMMAND cp ${QMLFILES} ${CMAKE_CURRENT_BINARY_DIR}
10− DEPENDS ${QMLFILES}
11−)
1+add_unity8_mock(Unity.Notifications 1.0 Unity/Notifications)
tests/mocks/Unity/Notifications/qmldir+1
@@ -1,2 +1,3 @@
11module Unity.Notifications
22Notification 1.0 notification.js
3+typeinfo Notifications.qmltypes
tests/mocks/Unity/qmldir+1
@@ -1,2 +1,3 @@
11module Unity
22plugin FakeUnityQml
3+typeinfo Unity.qmltypes
tests/plugins/Dash/cardcreator/1.res+2
@@ -3,6 +3,7 @@ AbstractButton {
33 property var template;
44 property var components;
55 property var cardData;
6+ property var artShapeBorderSource;
67 property real fontScale: 1.0;
78 property int headerAlignment: Text.AlignLeft;
89 property int fixedHeaderHeight: -1;
@@ -32,6 +33,7 @@ Item {
3233 Component.onCompleted: updateWidthHeightBindings();
3334 onAspectSmallerThanImageAspectChanged: updateWidthHeightBindings();
3435 visible: image.status == Image.Ready;
36+ borderSource: artShapeBorderSource;
3537 function updateWidthHeightBindings() {
3638 if (aspectSmallerThanImageAspect) {
3739 width = Qt.binding(function() { return !visible ? 0 : image.width });
tests/plugins/Dash/cardcreator/2.res+1
@@ -3,6 +3,7 @@ AbstractButton {
33 property var template;
44 property var components;
55 property var cardData;
6+ property var artShapeBorderSource;
67 property real fontScale: 1.0;
78 property int headerAlignment: Text.AlignLeft;
89 property int fixedHeaderHeight: -1;
tests/plugins/Dash/cardcreator/3.res+2
@@ -3,6 +3,7 @@ AbstractButton {
33 property var template;
44 property var components;
55 property var cardData;
6+ property var artShapeBorderSource;
67 property real fontScale: 1.0;
78 property int headerAlignment: Text.AlignLeft;
89 property int fixedHeaderHeight: -1;
@@ -32,6 +33,7 @@ Item {
3233 Component.onCompleted: updateWidthHeightBindings();
3334 onAspectSmallerThanImageAspectChanged: updateWidthHeightBindings();
3435 visible: image.status == Image.Ready;
36+ borderSource: artShapeBorderSource;
3537 function updateWidthHeightBindings() {
3638 if (aspectSmallerThanImageAspect) {
3739 width = Qt.binding(function() { return !visible ? 0 : image.width });
tests/plugins/Dash/cardcreator/4.res+1
@@ -3,6 +3,7 @@ AbstractButton {
33 property var template;
44 property var components;
55 property var cardData;
6+ property var artShapeBorderSource;
67 property real fontScale: 1.0;
78 property int headerAlignment: Text.AlignLeft;
89 property int fixedHeaderHeight: -1;
tests/plugins/Dash/cardcreator/5.res+2
@@ -3,6 +3,7 @@ AbstractButton {
33 property var template;
44 property var components;
55 property var cardData;
6+ property var artShapeBorderSource;
67 property real fontScale: 1.0;
78 property int headerAlignment: Text.AlignLeft;
89 property int fixedHeaderHeight: -1;
@@ -32,6 +33,7 @@ Item {
3233 Component.onCompleted: updateWidthHeightBindings();
3334 onAspectSmallerThanImageAspectChanged: updateWidthHeightBindings();
3435 visible: image.status == Image.Ready;
36+ borderSource: artShapeBorderSource;
3537 function updateWidthHeightBindings() {
3638 if (aspectSmallerThanImageAspect) {
3739 width = Qt.binding(function() { return !visible ? 0 : image.width });
tests/plugins/Unity/Indicators/rootactionstatetest.cpp+37
@@ -21,6 +21,7 @@
2121
2222#include <unitymenumodel.h>
2323#include <QtTest>
24+#include <gio/gio.h>
2425
2526class RootActionStateTest : public QObject
2627{
@@ -52,6 +53,42 @@ private Q_SLOTS:
5253 QVERIFY(rootState->menu() == NULL);
5354 delete rootState;
5455 }
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+ }
5592};
5693
5794QTEST_GUILESS_MAIN(RootActionStateTest)
tests/qmltests/CMakeLists.txt−1
@@ -28,7 +28,6 @@ add_qml_test(Components LazyImage)
2828add_qml_test(Components Rating)
2929add_qml_test(Components ResponsiveFlowView)
3030add_qml_test(Components ResponsiveGridView)
31−add_qml_test(Components Revealer)
3231add_qml_test(Components SeeMore)
3332add_qml_test(Components Showable)
3433add_qml_test(Components PageHeaderLabel)
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_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/Dash/tst_Dash.qml+1−1
@@ -127,7 +127,7 @@ Item {
127127 var dashContent = findChild(dash, "dashContent");
128128 var current_index = dashContent.currentIndex;
129129
130− tabbar.selectedIndex = data.visualIndex;
130+ tabbar.model.selectedIndex = data.visualIndex;
131131 compare(dashContent.currentIndex, data.shouldBeVisible ? data.visualIndex : current_index);
132132 }
133133 }
tests/utils/modules/Unity/Test/CMakeLists.txt+4−7
@@ -1,3 +1,5 @@
1+include(QmlPlugins)
2+
13add_definitions(-DQT_NO_KEYWORDS)
24
35include_directories(
@@ -14,10 +16,5 @@ add_library(UnityTestQml MODULE ${UnityTestQML_SOURCES})
1416
1517qt5_use_modules(UnityTestQml Core Quick Test)
1618
17−# copy qml files into build directory for shadow builds
18−file(GLOB QML_JS_FILES *.js *.qml qmldir)
19−
20−add_custom_target(UnityTestQmlJsFiles ALL
21− COMMAND cp ${QML_JS_FILES} ${CMAKE_CURRENT_BINARY_DIR}
22− DEPENDS ${QML_JS_FILES}
23−)
19+export_qmlfiles(Unity.Test Unity/Test)
20+export_qmlplugin(Unity.Test 0.1 Unity/Test TARGETS UnityTestQml)
tests/utils/modules/Unity/Test/qmldir+2
@@ -1,3 +1,5 @@
11module Unity.Test
22plugin UnityTestQml
3+typeinfo Test.qmltypes
4+
35UnityTestCase 0.1 UnityTestCase.qml
tools/registry-tracker.cpp+33−26
@@ -49,58 +49,66 @@ RegistryTracker::~RegistryTracker()
4949"Registry.Identity = Registry\n" \
5050"Registry.ConfigFile = %1\n" \
5151"Default.Middleware = Zmq\n" \
52−"Zmq.ConfigFile = %2\n"
52+"Zmq.ConfigFile = %2\n" \
53+"Smartscopes.Registry.Identity = %3\n"
5354
5455#define REGISTRY_CONFIG \
5556"[Registry]\n" \
5657"Middleware = Zmq\n" \
57−"Zmq.Endpoint = ipc://%1/Registry\n" \
58−"Zmq.EndpointDir = %2\n" \
59−"Zmq.ConfigFile = %3\n" \
60−"Scope.InstallDir = %4\n" \
61−"Scoperunner.Path = %5\n" \
62−"%6"
58+"Zmq.ConfigFile = %1\n" \
59+"Scope.InstallDir = %2\n" \
60+"Scoperunner.Path = %3\n"
6361
6462#define MW_CONFIG \
6563"[Zmq]\n" \
66−"EndpointDir.Public = %1\n" \
67−"EndpointDir.Private = %2\n"
64+"EndpointDir = %1\n"
6865
6966void RegistryTracker::runRegistry()
7067{
7168 QDir tmp(QDir::temp());
72− m_runtime_config.setFileTemplate(tmp.filePath("Runtime.ini.XXXXXX"));
73− m_registry_config.setFileTemplate(tmp.filePath("Registry.ini.XXXXXX"));
74− m_mw_config.setFileTemplate(tmp.filePath("Zmq.ini.XXXXXX"));
69+ m_runtime_config.setFileTemplate(tmp.filePath("Runtime.XXXXXX.ini"));
70+ m_registry_config.setFileTemplate(tmp.filePath("Registry.XXXXXX.ini"));
71+ m_mw_config.setFileTemplate(tmp.filePath("Zmq.XXXXXX.ini"));
7572
7673 if (!m_runtime_config.open() || !m_registry_config.open() || !m_mw_config.open() || !m_endpoints_dir.isValid()) {
7774 qWarning("Unable to open temporary files!");
7875 return;
7976 }
8077
81− QString scopesLibdir;
78+ QString scopeInstallDir;
79+ QString scopeRegistryBin;
80+ QString scopeRunnerBin;
8281 {
8382 QProcess pkg_config;
83+ QByteArray output;
8484 QStringList arguments;
85− arguments << "--variable=libdir";
85+ arguments << "--variable=scopesdir";
8686 arguments << "libunity-scopes";
8787 pkg_config.start("pkg-config", arguments);
8888 pkg_config.waitForFinished();
89− QByteArray libdir = pkg_config.readAllStandardOutput();
90− scopesLibdir = QDir(QString::fromLocal8Bit(libdir)).path().trimmed();
89+ output = pkg_config.readAllStandardOutput();
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();
91103 }
92104
93− if (scopesLibdir.size() == 0) {
105+ if (scopeInstallDir.isEmpty() || scopeRegistryBin.isEmpty() || scopeRunnerBin.isEmpty()) {
94106 qWarning("Unable to find libunity-scopes package config file");
95107 return;
96108 }
97109
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());
101110 // FIXME: keep in sync with the SSRegistry config
102− QString serverRegistryConfig(m_serverScopes ? "SS.Registry.Identity = SSRegistry\nSS.Registry.Endpoint = ipc:///tmp/SSRegistry" : "");
103− QString scopeInstallDir(scopesLibdir + "/unity-scopes");
111+ QString runtime_ini = QString(RUNTIME_CONFIG).arg(m_registry_config.fileName()).arg(m_mw_config.fileName()).arg(m_serverScopes ? "SSRegistry" : "");
104112 if (!m_systemScopes) {
105113 m_scopeInstallDir.reset(new QTemporaryDir(tmp.filePath("scopes.XXXXXX")));
106114 if (!m_scopeInstallDir->isValid()) {
@@ -108,8 +116,8 @@ void RegistryTracker::runRegistry()
108116 }
109117 scopeInstallDir = m_scopeInstallDir->path();
110118 }
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);
112− QString mw_ini = QString(MW_CONFIG).arg(m_endpoints_dir.path()).arg(m_endpoints_dir.path());
119+ QString registry_ini = QString(REGISTRY_CONFIG).arg(m_mw_config.fileName()).arg(scopeInstallDir).arg(scopeRunnerBin);
120+ QString mw_ini = QString(MW_CONFIG).arg(m_endpoints_dir.path());
113121
114122 m_runtime_config.write(runtime_ini.toUtf8());
115123 m_registry_config.write(registry_ini.toUtf8());
@@ -121,11 +129,10 @@ void RegistryTracker::runRegistry()
121129
122130 qputenv("UNITY_SCOPES_RUNTIME_PATH", m_runtime_config.fileName().toLocal8Bit());
123131
124− QString registryBin(QDir(scopesLibdir).filePath("scoperegistry/scoperegistry"));
125132 QStringList arguments;
126133 arguments << m_runtime_config.fileName();
127134 arguments << m_scopes;
128135
129136 m_registry.setProcessChannelMode(QProcess::ForwardedChannels);
130− m_registry.start(registryBin, arguments);
137+ m_registry.start(scopeRegistryBin, arguments);
131138}
tools/unlock-device+2−4
@@ -4,7 +4,7 @@
44# Our goal here is to get an Ubuntu Touch device into a testable unlocked state.
55# This will include a reboot.
66
7−WAIT_COMMAND="sleep 20"
7+WAIT_COMMAND="adb reboot; sleep 5; adb wait-for-device; sleep 20"
88
99while getopts s:w: opt; do
1010 case $opt in
@@ -28,10 +28,8 @@ bus.clearSysState(cookie, dbus_interface="com.canonical.powerd");
2828helpers.unlock_unity()
2929'
3030
31−adb reboot
32−sleep 5
33−adb "wait-for-device"
3431eval "$WAIT_COMMAND"
32+
3533UNLOCK_OUTPUT=$(adb shell "sudo -u phablet -i python3 -c '$UNLOCK_SCRIPT'" 2>&1)
3634if echo "$UNLOCK_OUTPUT" | grep 'Greeter unlocked' >/dev/null; then
3735 echo "I: Unlock passed"