on xenial help sign in
Merge trunk
04276acLars Uebernickel
CMakeLists.txt+7−2
@@ -58,19 +58,20 @@ find_package(Qt5DBus 5.2 REQUIRED)
58include(GNUInstallDirs)
58include(GNUInstallDirs)
59
59
60set(SHELL_APP_DIR ${CMAKE_INSTALL_DATADIR}/unity8)
60set(SHELL_APP_DIR ${CMAKE_INSTALL_DATADIR}/unity8)
61+set(SHELL_PRIVATE_LIBDIR ${CMAKE_INSTALL_LIBDIR}/unity8)
61
62
62execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=plugindir_suffix unity-shell-api OUTPUT_VARIABLE SHELL_INSTALL_QML OUTPUT_STRIP_TRAILING_WHITESPACE)
63execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=plugindir_suffix unity-shell-api OUTPUT_VARIABLE SHELL_INSTALL_QML OUTPUT_STRIP_TRAILING_WHITESPACE)
63if(SHELL_INSTALL_QML STREQUAL "")
64if(SHELL_INSTALL_QML STREQUAL "")
64 message(FATAL_ERROR "Could not determine plugin installation dir.")
65 message(FATAL_ERROR "Could not determine plugin installation dir.")
65endif()
66endif()
66
67
68+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")
69+
67execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=plugindir unity-shell-api OUTPUT_VARIABLE SHELL_PLUGINDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
70execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=plugindir unity-shell-api OUTPUT_VARIABLE SHELL_PLUGINDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
68if(SHELL_PLUGINDIR STREQUAL "")
71if(SHELL_PLUGINDIR STREQUAL "")
69 message(FATAL_ERROR "Could not determine plugin import dir.")
72 message(FATAL_ERROR "Could not determine plugin import dir.")
70endif()
73endif()
71
74
72−set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")
73−
74set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fno-permissive -pedantic -Wall -Wextra")
75set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fno-permissive -pedantic -Wall -Wextra")
75
76
76if ("${CMAKE_BUILD_TYPE}" STREQUAL "release" OR "${CMAKE_BUILD_TYPE}" STREQUAL "relwithdebinfo")
77if ("${CMAKE_BUILD_TYPE}" STREQUAL "release" OR "${CMAKE_BUILD_TYPE}" STREQUAL "relwithdebinfo")
@@ -87,6 +88,9 @@ endif()
87# "signals" and "slots"
88# "signals" and "slots"
88add_definitions(-DQT_NO_KEYWORDS)
89add_definitions(-DQT_NO_KEYWORDS)
89
90
91+# Save a few container detach and conversions
92+add_definitions(-DQT_STRICT_ITERATORS)
93+
90# Tests
94# Tests
91include(CTest)
95include(CTest)
92enable_testing()
96enable_testing()
@@ -106,6 +110,7 @@ include_directories(
106
110
107# add subdirectories to build
111# add subdirectories to build
108add_subdirectory(include)
112add_subdirectory(include)
113+add_subdirectory(libs)
109add_subdirectory(src)
114add_subdirectory(src)
110add_subdirectory(tools)
115add_subdirectory(tools)
111add_subdirectory(qml)
116add_subdirectory(qml)
CODING+4
@@ -154,6 +154,10 @@ So, for the DragHandle component that would be:
154
154
155$ make testDragHandle
155$ make testDragHandle
156
156
157+To run the tests for a single component/class under gdb (so you can catch SEGFAULTS)
158+
159+$ make gdbtestComponentName
160+
157To run a test application that allow you to manually test or to simply try out
161To run a test application that allow you to manually test or to simply try out
158a given component:
162a given component:
159
163
build.sh+1
@@ -51,6 +51,7 @@ install_dependencies() {
51 qtdeclarative5-ubuntu-settings-components \
51 qtdeclarative5-ubuntu-settings-components \
52 qtdeclarative5-ubuntu-telephony0.1 \
52 qtdeclarative5-ubuntu-telephony0.1 \
53 qtdeclarative5-ubuntu-thumbnailer0.1 \
53 qtdeclarative5-ubuntu-thumbnailer0.1 \
54+ qml-module-ubuntu-connectivity \
54 unity-notifications-impl \
55 unity-notifications-impl \
55 ubuntu-mobile-icons \
56 ubuntu-mobile-icons \
56 unity-scope-home \
57 unity-scope-home \
cmake/modules/QmlTest.cmake+25−4
@@ -12,6 +12,7 @@
12# Two targets will be created:
12# Two targets will be created:
13# - testComponentName - Runs the test with qmltestrunner
13# - testComponentName - Runs the test with qmltestrunner
14# - tryComponentName - Runs the test with uqmlscene, for manual interaction
14# - tryComponentName - Runs the test with uqmlscene, for manual interaction
15+# - gdbtestComponentName - Runs the test with qmltestrunner under gdb
15#
16#
16# To change/set a default value for the whole test suite, prior to calling add_qml_test, set:
17# To change/set a default value for the whole test suite, prior to calling add_qml_test, set:
17# qmltest_DEFAULT_NO_ADD_TEST (default: FALSE)
18# qmltest_DEFAULT_NO_ADD_TEST (default: FALSE)
@@ -27,11 +28,14 @@ endif()
27
28
28set(qmlscene_exe ${CMAKE_BINARY_DIR}/tests/uqmlscene/uqmlscene)
29set(qmlscene_exe ${CMAKE_BINARY_DIR}/tests/uqmlscene/uqmlscene)
29
30
31+set(test_env UNITY_TESTING=1)
32+
30macro(add_manual_qml_test SUBPATH COMPONENT_NAME)
33macro(add_manual_qml_test SUBPATH COMPONENT_NAME)
31 set(options NO_ADD_TEST NO_TARGETS)
34 set(options NO_ADD_TEST NO_TARGETS)
32 set(multi_value_keywords IMPORT_PATHS TARGETS PROPERTIES ENVIRONMENT)
35 set(multi_value_keywords IMPORT_PATHS TARGETS PROPERTIES ENVIRONMENT)
33
36
34 cmake_parse_arguments(qmltest "${options}" "" "${multi_value_keywords}" ${ARGN})
37 cmake_parse_arguments(qmltest "${options}" "" "${multi_value_keywords}" ${ARGN})
38+ cmake_parse_arguments(qmltest_default "${options}" "" "${multi_value_keywords}" ${qmltest_DEFAULT_PROPERTIES})
35
39
36 set(qmlscene_TARGET try${COMPONENT_NAME})
40 set(qmlscene_TARGET try${COMPONENT_NAME})
37 set(qmltest_FILE ${SUBPATH}/tst_${COMPONENT_NAME})
41 set(qmltest_FILE ${SUBPATH}/tst_${COMPONENT_NAME})
@@ -49,8 +53,12 @@ macro(add_manual_qml_test SUBPATH COMPONENT_NAME)
49 endforeach(IMPORT_PATH)
53 endforeach(IMPORT_PATH)
50 endif()
54 endif()
51
55
56+ if("${qmltest_ENVIRONMENT}" STREQUAL "")
57+ set(qmltest_ENVIRONMENT "${qmltest_default_ENVIRONMENT}")
58+ endif()
59+
52 set(qmlscene_command
60 set(qmlscene_command
53− env ${qmltest_ENVIRONMENT}
61+ env ${test_env} ${qmltest_ENVIRONMENT}
54 ${qmlscene_exe} -qmljsdebugger=port:3768 ${CMAKE_CURRENT_SOURCE_DIR}/${qmltest_FILE}.qml
62 ${qmlscene_exe} -qmljsdebugger=port:3768 ${CMAKE_CURRENT_SOURCE_DIR}/${qmltest_FILE}.qml
55 ${qmlscene_imports}
63 ${qmlscene_imports}
56 )
64 )
@@ -71,8 +79,10 @@ macro(add_qml_test_internal SUBPATH COMPONENT_NAME ITERATIONS)
71 set(multi_value_keywords IMPORT_PATHS TARGETS PROPERTIES ENVIRONMENT)
79 set(multi_value_keywords IMPORT_PATHS TARGETS PROPERTIES ENVIRONMENT)
72
80
73 cmake_parse_arguments(qmltest "${options}" "" "${multi_value_keywords}" ${ARGN})
81 cmake_parse_arguments(qmltest "${options}" "" "${multi_value_keywords}" ${ARGN})
82+ cmake_parse_arguments(qmltest_default "${options}" "" "${multi_value_keywords}" ${qmltest_DEFAULT_PROPERTIES})
74
83
75 set(qmltest_TARGET test${COMPONENT_NAME})
84 set(qmltest_TARGET test${COMPONENT_NAME})
85+ set(qmltest_gdb_TARGET gdbtest${COMPONENT_NAME})
76 set(qmltest_xvfb_TARGET xvfbtest${COMPONENT_NAME})
86 set(qmltest_xvfb_TARGET xvfbtest${COMPONENT_NAME})
77 set(qmltest_FILE ${SUBPATH}/tst_${COMPONENT_NAME})
87 set(qmltest_FILE ${SUBPATH}/tst_${COMPONENT_NAME})
78
88
@@ -102,8 +112,12 @@ macro(add_qml_test_internal SUBPATH COMPONENT_NAME ITERATIONS)
102 set(ITERATIONS_STRING "")
112 set(ITERATIONS_STRING "")
103 endif()
113 endif()
104
114
115+ if("${qmltest_ENVIRONMENT}" STREQUAL "")
116+ set(qmltest_ENVIRONMENT "${qmltest_default_ENVIRONMENT}")
117+ endif()
118+
105 set(qmltest_command
119 set(qmltest_command
106− env ${qmltest_ENVIRONMENT} UNITY_TESTING=1
120+ env ${test_env} ${qmltest_ENVIRONMENT}
107 ${qmltestrunner_exe} -input ${CMAKE_CURRENT_SOURCE_DIR}/${qmltest_FILE}.qml
121 ${qmltestrunner_exe} -input ${CMAKE_CURRENT_SOURCE_DIR}/${qmltest_FILE}.qml
108 ${qmltestrunner_imports}
122 ${qmltestrunner_imports}
109 ${ITERATIONS_STRING}
123 ${ITERATIONS_STRING}
@@ -117,7 +131,7 @@ macro(add_qml_test_internal SUBPATH COMPONENT_NAME ITERATIONS)
117 set(LD_PRELOAD_PATH "LD_PRELOAD=/usr/lib/${ARCH_TRIPLET}/mesa/libGL.so.1")
131 set(LD_PRELOAD_PATH "LD_PRELOAD=/usr/lib/${ARCH_TRIPLET}/mesa/libGL.so.1")
118 endif()
132 endif()
119 set(qmltest_xvfb_command
133 set(qmltest_xvfb_command
120− env ${qmltest_ENVIRONMENT} ${LD_PRELOAD_PATH} UNITY_TESTING=1
134+ env ${test_env} ${qmltest_ENVIRONMENT} ${LD_PRELOAD_PATH}
121 xvfb-run --server-args "-screen 0 1024x768x24" --auto-servernum
135 xvfb-run --server-args "-screen 0 1024x768x24" --auto-servernum
122 ${qmltestrunner_exe} -input ${CMAKE_CURRENT_SOURCE_DIR}/${qmltest_FILE}.qml
136 ${qmltestrunner_exe} -input ${CMAKE_CURRENT_SOURCE_DIR}/${qmltest_FILE}.qml
123 ${qmltestrunner_imports}
137 ${qmltestrunner_imports}
@@ -126,12 +140,18 @@ macro(add_qml_test_internal SUBPATH COMPONENT_NAME ITERATIONS)
126 ${function_ARGS}
140 ${function_ARGS}
127 )
141 )
128
142
143+ set(qmltest_gdb_command
144+ env ${test_env} ${qmltest_ENVIRONMENT} ${LD_PRELOAD_PATH}
145+ gdb -e ${qmltestrunner_exe} -ex \"run -input ${CMAKE_CURRENT_SOURCE_DIR}/${qmltest_FILE}.qml ${qmltestrunner_imports} ${ITERATIONS_STRING}\"
146+ )
147+
129 add_qmltest_target(${qmltest_TARGET} "${qmltest_command}" TRUE ${qmltest_NO_ADD_TEST})
148 add_qmltest_target(${qmltest_TARGET} "${qmltest_command}" TRUE ${qmltest_NO_ADD_TEST})
130 add_qmltest_target(${qmltest_xvfb_TARGET} "${qmltest_xvfb_command}" ${qmltest_NO_TARGETS} TRUE)
149 add_qmltest_target(${qmltest_xvfb_TARGET} "${qmltest_xvfb_command}" ${qmltest_NO_TARGETS} TRUE)
150+ add_qmltest_target(${qmltest_gdb_TARGET} "${qmltest_gdb_command}" TRUE TRUE)
131 add_manual_qml_test(${SUBPATH} ${COMPONENT_NAME} ${ARGN})
151 add_manual_qml_test(${SUBPATH} ${COMPONENT_NAME} ${ARGN})
132endmacro(add_qml_test_internal)
152endmacro(add_qml_test_internal)
133
153
134−macro(add_binary_qml_test CLASS_NAME LD_PATH DEPS)
154+macro(add_binary_qml_test CLASS_NAME LD_PATH DEPS ENVVAR)
135 set(testCommand
155 set(testCommand
136 LD_LIBRARY_PATH=${LD_PATH}
156 LD_LIBRARY_PATH=${LD_PATH}
137 ${CMAKE_CURRENT_BINARY_DIR}/${CLASS_NAME}TestExec
157 ${CMAKE_CURRENT_BINARY_DIR}/${CLASS_NAME}TestExec
@@ -148,6 +168,7 @@ macro(add_binary_qml_test CLASS_NAME LD_PATH DEPS)
148 endif()
168 endif()
149 set(xvfbtestCommand
169 set(xvfbtestCommand
150 ${LD_PRELOAD_PATH}
170 ${LD_PRELOAD_PATH}
171+ ${ENVVAR}
151 LD_LIBRARY_PATH=${LD_PATH}
172 LD_LIBRARY_PATH=${LD_PATH}
152 xvfb-run --server-args "-screen 0 1024x768x24" --auto-servernum
173 xvfb-run --server-args "-screen 0 1024x768x24" --auto-servernum
153 ${CMAKE_CURRENT_BINARY_DIR}/${CLASS_NAME}TestExec
174 ${CMAKE_CURRENT_BINARY_DIR}/${CLASS_NAME}TestExec
data/unity8-dash.desktop.in+3−3
@@ -1,9 +1,9 @@
1[Desktop Entry]
1[Desktop Entry]
2Type=Application
2Type=Application
3−Name=Unity 8 Dash
3+Name=Scopes
4−Comment=The converged Unity shell dash
4+Comment=An interface for using the Scopes system
5Exec=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_BINDIR@/unity8-dash
5Exec=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_BINDIR@/unity8-dash
6Terminal=false
6Terminal=false
7−Icon=unity8
7+Icon=
8NoDisplay=true
8NoDisplay=true
9X-Ubuntu-Touch=true
9X-Ubuntu-Touch=true
data/unity8-filewatcher.confnew file+8
@@ -0,0 +1,8 @@
1+description "File system watcher for unity8"
2+author "Michael Zanetti <michael.zanetti@canonical.com>"
3+
4+# Workaround for bug 1360208. ~ and * in one expression doesn't work currently
5+start on (file FILE=/home/phablet/.local/share/applications/*.desktop) or (file FILE=/usr/share/applications/*.desktop)
6+
7+exec dbus-send --type=method_call --dest=com.canonical.Unity.Launcher /com/canonical/Unity/Launcher com.canonical.Unity.Launcher.Refresh
8+
data/unity8.conf+5−1
@@ -34,11 +34,15 @@ pre-start script
34 gdbus call --session --dest org.freedesktop.DBus --object-path /org/freedesktop/DBus --method org.freedesktop.DBus.UpdateActivationEnvironment "@a{ss} {'MIR_SOCKET': '$MIR_SERVER_FILE'}"
34 gdbus call --session --dest org.freedesktop.DBus --object-path /org/freedesktop/DBus --method org.freedesktop.DBus.UpdateActivationEnvironment "@a{ss} {'MIR_SOCKET': '$MIR_SERVER_FILE'}"
35 fi
35 fi
36
36
37− # Remove the socket if still there
37+ # Remove the normal and trusted sockets if still there
38 if [ -S "$MIR_SERVER_FILE" ]; then
38 if [ -S "$MIR_SERVER_FILE" ]; then
39 rm "$MIR_SERVER_FILE"
39 rm "$MIR_SERVER_FILE"
40 fi
40 fi
41
41
42+ if [ -S "${MIR_SERVER_FILE}_trusted" ]; then
43+ rm "${MIR_SERVER_FILE}_trusted"
44+ fi
45+
42 initctl set-env --global MIR_SERVER_PROMPT_FILE=1
46 initctl set-env --global MIR_SERVER_PROMPT_FILE=1
43
47
44 initctl emit --no-wait indicator-services-start
48 initctl emit --no-wait indicator-services-start
data/unity8.desktop.in+1−1
@@ -4,6 +4,6 @@ Name=Unity 8
4Comment=The converged Unity shell
4Comment=The converged Unity shell
5Exec=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_BINDIR@/unity8
5Exec=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_BINDIR@/unity8
6Terminal=false
6Terminal=false
7−Icon=unity8
7+Icon=
8NoDisplay=true
8NoDisplay=true
9X-Ubuntu-Touch=true
9X-Ubuntu-Touch=true
debian/changelog+347
@@ -1,3 +1,350 @@
1+unity8 (8.00+14.10.20141013.2-0ubuntu1) utopic; urgency=low
2+
3+ [ Michael Terry ]
4+ * Don't show initial lockscreen during the edge demo. The user just
5+ set up their phone with a password, it's pointless to ask them
6+ again. (LP: #1358283)
7+ * Distinguish between incoming calls and other dialer-app opens. (LP:
8+ #1378218) (LP: #1378218)
9+
10+ [ Andrea Cimitan ]
11+ * Fix flickable speed to be resolution independent, by subclassing
12+ components (LP: #1348557)
13+
14+ [ Michał Sawicz ]
15+ * Fix the ShellWithPin test and some functionality.
16+
17+ [ Albert Astals ]
18+ * Move Base.qml to DashCategoryBase
19+ * Fix first item positioning when m_clipItem->y() is not 0 (LP:
20+ #1251597)
21+ * Fix some small qml warnings
22+
23+ [ Daniel d'Andrada ]
24+ * Add touch ownership logic on top of qt input handling
25+
26+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Mon, 13 Oct 2014 15:43:03 +0000
27+
28+unity8 (8.00+14.10.20141009.4-0ubuntu1) utopic; urgency=low
29+
30+ [ Michał Sawicz ]
31+ * Rename datetime indicator in test
32+
33+ [ Albert Astals ]
34+ * Close overview temp scope on show dash (LP: #1373819)
35+ * Enable QT_STRICT_ITERATORS
36+ * Make Base not clickable, since we don't use it in anywhere clickable
37+ (we only use it for Category delegates in the LVWPH) (LP: #1300709)
38+ * Hide preview if it was visible when going to a scope (LP: #1374548)
39+ * Remove contentScale variable
40+
41+ [ Andrea Cimitan ]
42+ * Fix card implicitHeight when summary is declared, but its text is
43+ empty. Also fixes vertical journal height and clipping (LP:
44+ #1362160)
45+ * Redesign for pinned apps. Remove thindivider on top of ubuntu dash
46+ button (not needed anymore) (LP: #1377100)
47+
48+ [ Ying-Chun Liu ]
49+ * Fix run_on_device.sh to let it run again.
50+
51+ [ Nick Dedekind ]
52+ * Fixed indicator menu bindings to server toggle value broken by user
53+ interaction. (LP: #1336715)
54+ * Force rendering so we don't get stuck in "waitForRendering" loop in
55+ tests.
56+
57+ [ Daniel d'Andrada ]
58+ * PhoneStage: focus the new topmost app after the current one closes
59+ itself (LP: #1375267)
60+
61+ [ Michael Terry ]
62+ * Fix some security issues with the tablet greeter, which allowed the
63+ lockscreen to be bypassed. (LP: #1367715) (LP: #1367715)
64+
65+ [ Michael Zanetti ]
66+ * scale down errorText label if necessary (LP: #1378848)
67+
68+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Thu, 09 Oct 2014 14:05:54 +0000
69+
70+unity8 (8.00+14.10.20141008-0ubuntu1) utopic; urgency=low
71+
72+ [ Michael Zanetti ]
73+ * Dual SIM pin unlocking. Hook up the UI to the backend. (LP:
74+ #1267135)
75+
76+ [ Antti Kaijanmäki ]
77+ * Dual SIM pin unlocking. Hook up the UI to the backend. (LP:
78+ #1267135)
79+
80+ [ Ubuntu daily release ]
81+ * New rebuild forced
82+
83+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Wed, 08 Oct 2014 09:41:32 +0000
84+
85+unity8 (8.00+14.10.20141006-0ubuntu1) utopic; urgency=low
86+
87+ [ Andrea Cimitan ]
88+ * Tweak card header to match the spec
89+ * Add preview image slideshow (LP: #1351537)
90+
91+ [ Michał Sawicz ]
92+ * Cache more things in memory, so flicking scopes should be faster
93+ (LP: #1336724)
94+ * Tweak card header to match the spec
95+ * Save texture memory by limiting sourceSize (LP: #1338430)
96+
97+ [ Ying-Chun Liu ]
98+ * Add attributes to Preview. (LP: #1282460)
99+
100+ [ Albert Astals ]
101+ * Update pot
102+ * Cache more things in memory, so flicking scopes should be faster
103+ (LP: #1336724)
104+ * Save texture memory by limiting sourceSize (LP: #1338430)
105+ * Clip the settings list
106+ * Fix unlocking from the left again
107+ * Add wait_ makes tests more reliable
108+
109+ [ Michael Zanetti ]
110+ * fix fading out the launcher instead of sliding it out on left-edge
111+ minimizing an app.
112+ * Make the DashCommunicator async and more flexible to handle a
113+ lifecycle-suspended dash (LP: #1339883)
114+
115+ [ Michael Terry ]
116+ * Retry unlock-device script if it fails, as there is always a risk of
117+ a small race with boot-up. (LP: #1370644)
118+ * Add pull-to-refresh functionality to scopes. (LP: #1368336)
119+
120+ [ CI bot ]
121+ * Resync trunk
122+
123+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Mon, 06 Oct 2014 08:03:23 +0000
124+
125+unity8 (8.00+14.10.20140930.2-0ubuntu1) utopic; urgency=low
126+
127+ [ Alexandros Frantzis ]
128+ * Remove stale trusted socket before starting unity8 from upstart (LP:
129+ #1371597) (LP: #1371597)
130+
131+ [ CI bot ]
132+ * Resync trunk
133+
134+ [ Andrea Cimitan ]
135+ * Move activity indicator on top of keyboard (LP: #1354519)
136+
137+ [ Gerry Boland ]
138+ * Cleanup: Remove unused member and fix small syntax error in
139+ OrientationLock
140+
141+ [ josharenson ]
142+ * Fix lp:1367894 by correcting how the minute value is calculated in
143+ the panel. (LP: #1367894)
144+
145+ [ Nick Dedekind ]
146+ * Fixed DefaultIndicatorPage test. Fixed warnings from test.
147+
148+ [ Ying-Chun Liu ]
149+ * Remove maxLineCount in preview. (LP: 1328513) (LP: #1328513)
150+
151+ [ Michael Terry ]
152+ * Fix some code that accidentally landed in trunk before it got
153+ cleaned up. The current code just has some duplication to it that
154+ should be unified.
155+ * Implement latest visual designs for passphrase lockscreen.
156+ * Make it easier to use the Lockscreen component from the welcome
157+ wizard.
158+ * Limit how much memory we reserve for the greeter background image,
159+ allowing giant images to appear correctly.
160+
161+ [ Daniel d'Andrada ]
162+ * Add gdbTestComponentName build targets
163+
164+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Tue, 30 Sep 2014 16:57:28 +0000
165+
166+unity8 (8.00+14.10.20140926-0ubuntu1) utopic; urgency=low
167+
168+ [ CI bot ]
169+ * Resync trunk
170+
171+ [ Nick Dedekind ]
172+ * Visual changes for indicator RTM polishing (LP: #1329289)
173+
174+ [ Ubuntu daily release ]
175+ * New rebuild forced
176+
177+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Fri, 26 Sep 2014 19:12:39 +0000
178+
179+unity8 (8.00+14.10.20140923-0ubuntu1) utopic; urgency=low
180+
181+ [ Michael Zanetti ]
182+ * fix swiping away the launcher from the left edge
183+ * fix indicators AP test
184+
185+ [ Florian Boucault ]
186+ * New Splash screen implementation that fakes real app
187+
188+ [ Albert Astals ]
189+ * We need this in build-depends so that qmluitests pass in CI
190+
191+ [ Daniel d'Andrada ]
192+ * New Splash screen implementation that fakes real app
193+
194+ [ Michael Terry ]
195+ * Fix LC_ALL and test harder by making both manual runs of
196+ timeformattertest and the whole test suite use the same locale
197+ settings.
198+
199+ [ CI bot ]
200+ * Resync trunk
201+
202+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Tue, 23 Sep 2014 09:26:18 +0000
203+
204+unity8 (8.00+14.10.20140918.3-0ubuntu1) utopic; urgency=low
205+
206+ [ Michał Sawicz ]
207+ * Add -windowgeometry option to the Dash and drop any user-visible
208+ mentions of Dash
209+ * Dash: Fix issue when expanding a category and collapsing another one
210+ at the same time.
211+
212+ [ Albert Astals ]
213+ * Dash: Fix issue when expanding a category and collapsing another one
214+ at the same time.
215+ * Make the categoryView invisible when we are in the preview mode (LP:
216+ #1341205)
217+ * Pixel pushing in the dash header (LP: #1365929)
218+
219+ [ Ying-Chun Liu ]
220+ * Re-add restart button for power menu. (LP: 1358197) (LP: #1358197)
221+
222+ [ Marcus Tomlinson ]
223+ * Don't show a preview if a null response is returned from
224+ scope.preview(result)
225+
226+ [ Mirco Müller ]
227+ * Don't limit the number of text-lines for body-text. (LP: #1369438)
228+
229+ [ Michael Zanetti ]
230+ * Don't hide launcher when nothing happens on long left edge swipes
231+ (LP: #1357333)
232+ * Rework LauncherBackend
233+
234+ [ Michael Terry ]
235+ * When running qmluitests, make sure that they use LANGUAGE=C, fixing
236+ a test failure when running locally in the US.
237+
238+ [ Daniel d'Andrada ]
239+ * Some ApplicationWindow test improvements
240+
241+ [ Rodney Dawes ]
242+ * Check purchase state to determine if purchase was cancelled and hide
243+ progress. (LP: #1362622)
244+
245+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Thu, 18 Sep 2014 21:26:42 +0000
246+
247+unity8 (8.00+14.10.20140918-0ubuntu1) utopic; urgency=low
248+
249+ [ Michael Zanetti ]
250+ * Focus first app if there are already some running when we're
251+ starting up (LP: #1339883)
252+
253+ [ Michał Sawicz ]
254+ * Don't play empty urls in Notification.qml
255+
256+ [ Daniel d'Andrada ]
257+ * Improve tst_Shell
258+ * Build without any warnings
259+ * Make tst_Card work from outside the source tree (LP:1359201) (LP:
260+ #1359201)
261+
262+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Thu, 18 Sep 2014 09:44:06 +0000
263+
264+unity8 (8.00+14.10.20140910.1-0ubuntu1) utopic; urgency=low
265+
266+ [ Pete Woods ]
267+ * Disable OEM and Click scopes when system scopes are disabled
268+
269+ [ CI bot ]
270+ * Resync trunk
271+
272+ [ Pawel Stolowski ]
273+ * Set UNITY_SCOPES_NO_FAVORITES environment variable to make scopes
274+ plugin ignore favorite scopes and fix basic functionality of unity-
275+ scope-tool.
276+
277+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Wed, 10 Sep 2014 08:53:57 +0000
278+
279+unity8 (8.00+14.10.20140908.1-0ubuntu1) utopic; urgency=low
280+
281+ [ Michał Sawicz ]
282+ * Use a single white pixel instead of the heavier checkers image.
283+ * Add support to unlock-device for the new adbd coming down the
284+ pipeline. Also fix autopilot tests and run scripts for that.
285+ * Make LVWPH non interactive while on header animation
286+ * Improve references to scope/scopeStyle in PreviewListView and
287+ PageHeader, add tests.
288+
289+ [ Nick Dedekind ]
290+ * Support for nested prompt session. (LP: #1358388)
291+
292+ [ Albert Astals ]
293+ * Remove unused hasAttributes variable
294+ * Disable dash overview if in temp scope preview
295+ * Block mouse events under scope overview bottombar (LP: #1362206)
296+ * Fix regression in focus handling due to SDK change
297+ * Fix warning 'Background.qml:81:21: Unable to assign bool to QUrl'
298+ * Fix launcher internationalization
299+ * Make swipe and home button press in the launcher dismiss the
300+ overview
301+ * GSV: Use proper variable since altnav renames
302+ * Fix some "Cannot read property 'luminance' of null" warnings
303+ * Make LVWPH non interactive while on header animation
304+
305+ [ Mirco Müller ]
306+ * Implemented the needed visual updates on notifications requested by
307+ Design for RTM. (LP: #1348092)
308+
309+ [ Michael Terry ]
310+ * Don't show greeter when screen turns off during a call, even if
311+ proximity sensor isn't active. (LP: #1347001)
312+ * Add support to unlock-device for the new adbd coming down the
313+ pipeline. Also fix autopilot tests and run scripts for that.
314+
315+ [ Michael Zanetti ]
316+ * open the application when clicking on the title entry in the
317+ quicklist (LP: #1336380)
318+ * Don't animate x while dragging apps from the left edge (LP:
319+ #1360105)
320+
321+ [ Diego Sarmentero ]
322+ * Reset button state on cancel (LP: #1362622)
323+
324+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Mon, 08 Sep 2014 14:16:42 +0000
325+
326+unity8 (8.00+14.10.20140903.1-0ubuntu1) utopic; urgency=low
327+
328+ [ Nick Dedekind ]
329+ * Support for nested prompt session. (LP: #1358388)
330+
331+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Wed, 03 Sep 2014 07:58:49 +0000
332+
333+unity8 (8.00+14.10.20140828.1-0ubuntu1) utopic; urgency=low
334+
335+ [ Michael Terry ]
336+ * Reverse default for the user option "allow launcher/panel in greeter
337+ when locked." And allow that property to be controlled by an
338+ AccountsService property. (LP: #1358340) (LP: #1358340)
339+ * With recent password support, we want to be able to unlock the
340+ device even with a password set. And we need to be able to do this
341+ once the new adbd lands. So I've added a DBus command to hide the
342+ greeter. This should be secure because all apps are constrained and
343+ if you're on the local session bus unconstrained, you already have
344+ access to anything you want.
345+
346+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Thu, 28 Aug 2014 20:06:41 +0000
347+
1unity8 (8.00+14.10.20140827.2-0ubuntu1) utopic; urgency=low
348unity8 (8.00+14.10.20140827.2-0ubuntu1) utopic; urgency=low
2
349
3 [ Michał Sawicz ]
350 [ Michał Sawicz ]
debian/control+12−10
@@ -7,6 +7,7 @@ Build-Depends: cmake,
7 debhelper (>= 9),
7 debhelper (>= 9),
8 doxyqml,
8 doxyqml,
9 graphviz,
9 graphviz,
10+ gsettings-ubuntu-schemas (>= 0.0.2+14.10.20140815),
10# We rely on C++11 features, and to prevent from ABI breaks
11# We rely on C++11 features, and to prevent from ABI breaks
11# in libstdc++ causing us issues, we explicitly select a G++
12# in libstdc++ causing us issues, we explicitly select a G++
12# version.
13# version.
@@ -24,7 +25,7 @@ Build-Depends: cmake,
24 libpulse-dev,
25 libpulse-dev,
25 libqmenumodel-dev (>= 0.2.8),
26 libqmenumodel-dev (>= 0.2.8),
26 libqt5xmlpatterns5-dev,
27 libqt5xmlpatterns5-dev,
27− libunity-api-dev (>= 7.89),
28+ libunity-api-dev (>= 7.92),
28 libusermetricsoutput1-dev,
29 libusermetricsoutput1-dev,
29 libxcb1-dev,
30 libxcb1-dev,
30 pkg-config,
31 pkg-config,
@@ -44,7 +45,7 @@ Build-Depends: cmake,
44 qtdeclarative5-dev-tools,
45 qtdeclarative5-dev-tools,
45 qtdeclarative5-private-dev (>= 5.2.1),
46 qtdeclarative5-private-dev (>= 5.2.1),
46 qtdeclarative5-qtmultimedia-plugin,
47 qtdeclarative5-qtmultimedia-plugin,
47− qtdeclarative5-ubuntu-settings-components (>= 0.3),
48+ qtdeclarative5-ubuntu-settings-components (>= 0.4),
48 qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.1.1239) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.1.1239),
49 qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.1.1239) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.1.1239),
49 ttf-ubuntu-font-family,
50 ttf-ubuntu-font-family,
50Standards-Version: 3.9.4
51Standards-Version: 3.9.4
@@ -85,9 +86,9 @@ Depends: gsettings-desktop-schemas,
85 qmenumodel-qml (>= 0.2.8),
86 qmenumodel-qml (>= 0.2.8),
86 qml-module-qtquick-xmllistmodel,
87 qml-module-qtquick-xmllistmodel,
87 qtdeclarative5-gsettings1.0,
88 qtdeclarative5-gsettings1.0,
88− qtdeclarative5-qtmir-plugin (>= 0.4.1),
89+ qtdeclarative5-qtmir-plugin (>= 0.4.4),
89 qtdeclarative5-ubuntu-telephony0.1,
90 qtdeclarative5-ubuntu-telephony0.1,
90− unity-launcher-impl-3,
91+ unity-launcher-impl-4,
91 unity8-common (= ${source:Version}),
92 unity8-common (= ${source:Version}),
92 unity8-private (= ${binary:Version}),
93 unity8-private (= ${binary:Version}),
93 unity8-private | unity-launcher-impl,
94 unity8-private | unity-launcher-impl,
@@ -107,12 +108,12 @@ Description: Unity 8 shell
107Package: unity8-common
108Package: unity8-common
108Architecture: all
109Architecture: all
109Depends: qml-module-qtquick-layouts,
110Depends: qml-module-qtquick-layouts,
110− qtdeclarative5-ubuntu-settings-components (>= 0.3),
111+ qtdeclarative5-ubuntu-settings-components (>= 0.4),
111 qtdeclarative5-ubuntu-thumbnailer0.1 | ubuntu-thumbnailer-impl,
112 qtdeclarative5-ubuntu-thumbnailer0.1 | ubuntu-thumbnailer-impl,
112 qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.1.1239) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.1.1239),
113 qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.1.1239) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.1.1239),
113 qtdeclarative5-unity-notifications-plugin (>= 0.1.2) | unity-notifications-impl,
114 qtdeclarative5-unity-notifications-plugin (>= 0.1.2) | unity-notifications-impl,
114 ubuntu-thumbnailer-impl-0,
115 ubuntu-thumbnailer-impl-0,
115− unity-application-impl-3,
116+ unity-application-impl-4,
116 unity-notifications-impl-3,
117 unity-notifications-impl-3,
117 unity-plugin-scopes | unity-scopes-impl,
118 unity-plugin-scopes | unity-scopes-impl,
118 unity-scopes-impl-4,
119 unity-scopes-impl-4,
@@ -159,7 +160,7 @@ Pre-Depends: ${misc:Pre-Depends},
159Depends: ${misc:Depends},
160Depends: ${misc:Depends},
160 ${shlibs:Depends},
161 ${shlibs:Depends},
161Provides: unity-application-impl,
162Provides: unity-application-impl,
162− unity-application-impl-3,
163+ unity-application-impl-4,
163Description: Fake environment for running Unity 8 shell
164Description: Fake environment for running Unity 8 shell
164 Provides fake implementations of some QML modules used by Unity 8 shell
165 Provides fake implementations of some QML modules used by Unity 8 shell
165 (e.g Ubuntu.Application) so that you can run it in a sandboxed environment.
166 (e.g Ubuntu.Application) so that you can run it in a sandboxed environment.
@@ -168,15 +169,16 @@ Package: unity8-private
168Architecture: any
169Architecture: any
169Multi-Arch: same
170Multi-Arch: same
170Pre-Depends: ${misc:Pre-Depends},
171Pre-Depends: ${misc:Pre-Depends},
171−Depends: accountsservice-ubuntu-schemas,
172+Depends: accountsservice-ubuntu-schemas (>= 0.0.3),
172 gsettings-ubuntu-schemas (>= 0.0.2+14.10.20140815),
173 gsettings-ubuntu-schemas (>= 0.0.2+14.10.20140815),
173 libhardware2,
174 libhardware2,
174− libunity-core-6.0-9,
175+ unity-schemas (>= 7.3.1+14.10.20140915),
175 pay-service,
176 pay-service,
177+ qml-module-ubuntu-connectivity,
176 ${misc:Depends},
178 ${misc:Depends},
177 ${shlibs:Depends},
179 ${shlibs:Depends},
178Provides: unity-launcher-impl,
180Provides: unity-launcher-impl,
179− unity-launcher-impl-3,
181+ unity-launcher-impl-4,
180Description: Unity 8 private libs
182Description: Unity 8 private libs
181 The Unity 8 shell is the primary user interface for Ubuntu devices.
183 The Unity 8 shell is the primary user interface for Ubuntu devices.
182 .
184 .
debian/unity8-private.install+2
@@ -1,3 +1,4 @@
1+usr/lib/*/libunity8-private.*
1usr/lib/*/unity8/qml/AccountsService
2usr/lib/*/unity8/qml/AccountsService
2usr/lib/*/unity8/qml/Dash
3usr/lib/*/unity8/qml/Dash
3usr/lib/*/unity8/qml/HudClient
4usr/lib/*/unity8/qml/HudClient
@@ -8,5 +9,6 @@ usr/lib/*/unity8/qml/SessionBroadcast
8usr/lib/*/unity8/qml/Ubuntu
9usr/lib/*/unity8/qml/Ubuntu
9usr/lib/*/unity8/qml/Unity
10usr/lib/*/unity8/qml/Unity
10usr/lib/*/unity8/qml/Utils
11usr/lib/*/unity8/qml/Utils
12+usr/lib/*/unity8/libUbuntuGestures*
11usr/share/accountsservice/interfaces
13usr/share/accountsservice/interfaces
12usr/share/dbus-1/interfaces
14usr/share/dbus-1/interfaces
debian/unity8.install+1
@@ -1,5 +1,6 @@
1data/unity8.conf usr/share/upstart/sessions/
1data/unity8.conf usr/share/upstart/sessions/
2data/unity8-dash.conf usr/share/upstart/sessions/
2data/unity8-dash.conf usr/share/upstart/sessions/
3+data/unity8-filewatcher.conf usr/share/upstart/sessions/
3usr/bin/unity8
4usr/bin/unity8
4usr/bin/unity8-dash
5usr/bin/unity8-dash
5usr/share/applications/unity8.desktop
6usr/share/applications/unity8.desktop
libs/CMakeLists.txtnew file+1
@@ -0,0 +1 @@
1+add_subdirectory(UbuntuGestures)
libs/UbuntuGestures/CMakeLists.txtnew file+40
@@ -0,0 +1,40 @@
1+# in order to include Qt's private headers
2+remove_definitions(-DQT_NO_KEYWORDS)
3+
4+set(UbuntuGestures_SOURCES
5+ CandidateInactivityTimer.cpp
6+ DebugHelpers.cpp
7+ Timer.cpp
8+ TouchOwnershipEvent.cpp
9+ TouchRegistry.cpp
10+ UnownedTouchEvent.cpp
11+)
12+
13+add_definitions(-DUBUNTUGESTURES_LIBRARY)
14+
15+add_library(UbuntuGestures SHARED ${UbuntuGestures_SOURCES})
16+
17+qt5_use_modules(UbuntuGestures Core Quick)
18+
19+# So that Foo.cpp can #include "Foo.moc"
20+include_directories(${CMAKE_CURRENT_BINARY_DIR})
21+
22+install(TARGETS UbuntuGestures
23+ DESTINATION ${SHELL_PRIVATE_LIBDIR})
24+
25+
26+# There's no cmake var for v8 include path :-/ so create one
27+LIST(GET Qt5Core_INCLUDE_DIRS 0 QtCoreDir0)
28+if(${Qt5Core_VERSION_STRING} VERSION_LESS "5.1.0")
29+ SET(Qt5V8_PRIVATE_INCLUDE_DIR ${QtCoreDir0}/../QtV8/${Qt5Core_VERSION_STRING}/QtV8)
30+else()
31+ SET(Qt5V8_PRIVATE_INCLUDE_DIR ${QtCoreDir0}/QtV8/${Qt5Core_VERSION_STRING}/QtV8)
32+endif()
33+
34+# DANGER! DANGER! Using Qt's private API!
35+include_directories(
36+ ${Qt5Qml_PRIVATE_INCLUDE_DIRS}
37+ ${Qt5Quick_INCLUDE_DIRS}
38+ ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
39+ ${Qt5V8_PRIVATE_INCLUDE_DIR}
40+)
libs/UbuntuGestures/CandidateInactivityTimer.cppnew file+41
@@ -0,0 +1,41 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#include "CandidateInactivityTimer.h"
18+
19+namespace UbuntuGestures {
20+
21+CandidateInactivityTimer::CandidateInactivityTimer(int touchId, QQuickItem *candidate,
22+ AbstractTimerFactory &timerFactory, QObject *parent)
23+ : QObject(parent)
24+ , m_touchId(touchId)
25+ , m_candidate(candidate)
26+{
27+ m_timer = timerFactory.createTimer(this);
28+ connect(m_timer, &AbstractTimer::timeout,
29+ this, &CandidateInactivityTimer::onTimeout);
30+ m_timer->setInterval(durationMs);
31+ m_timer->setSingleShot(true);
32+ m_timer->start();
33+}
34+
35+void CandidateInactivityTimer::onTimeout()
36+{
37+ qWarning("[TouchRegistry] Candidate for touch %d defaulted!", m_touchId);
38+ Q_EMIT candidateDefaulted(m_touchId, m_candidate);
39+}
40+
41+} // namespace UbuntuGestures
libs/UbuntuGestures/CandidateInactivityTimer.hnew file+49
@@ -0,0 +1,49 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#ifndef UBUNTUGESTURES_CANDIDATE_INACTIVITY_TIMER_H
18+#define UBUNTUGESTURES_CANDIDATE_INACTIVITY_TIMER_H
19+
20+#include <QObject>
21+
22+class QQuickItem;
23+
24+#include "Timer.h"
25+
26+namespace UbuntuGestures {
27+
28+class UBUNTUGESTURES_EXPORT CandidateInactivityTimer : public QObject {
29+ Q_OBJECT
30+public:
31+ CandidateInactivityTimer(int touchId, QQuickItem *candidate,
32+ AbstractTimerFactory &timerFactory,
33+ QObject *parent = nullptr);
34+
35+ const int durationMs = 350;
36+
37+Q_SIGNALS:
38+ void candidateDefaulted(int touchId, QQuickItem *candidate);
39+private Q_SLOTS:
40+ void onTimeout();
41+private:
42+ AbstractTimer *m_timer;
43+ int m_touchId;
44+ QQuickItem *m_candidate;
45+};
46+
47+} // namespace UbuntuGestures
48+
49+#endif // UBUNTUGESTURES_CANDIDATE_INACTIVITY_TIMER_H
libs/UbuntuGestures/DebugHelpers.cppnew file+68
@@ -0,0 +1,68 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#include "DebugHelpers.h"
18+#include <QTouchEvent>
19+
20+QString touchPointStateToString(Qt::TouchPointState state)
21+{
22+ switch (state) {
23+ case Qt::TouchPointPressed:
24+ return QString("pressed");
25+ case Qt::TouchPointMoved:
26+ return QString("moved");
27+ case Qt::TouchPointStationary:
28+ return QString("stationary");
29+ case Qt::TouchPointReleased:
30+ return QString("released");
31+ default:
32+ return QString("INVALID_STATE");
33+ }
34+}
35+
36+QString touchEventToString(const QTouchEvent *ev)
37+{
38+ QString message;
39+
40+ switch (ev->type()) {
41+ case QEvent::TouchBegin:
42+ message.append("TouchBegin ");
43+ break;
44+ case QEvent::TouchUpdate:
45+ message.append("TouchUpdate ");
46+ break;
47+ case QEvent::TouchEnd:
48+ message.append("TouchEnd ");
49+ break;
50+ case QEvent::TouchCancel:
51+ message.append("TouchCancel ");
52+ break;
53+ default:
54+ message.append("INVALID_TOUCH_EVENT_TYPE ");
55+ }
56+
57+ foreach(const QTouchEvent::TouchPoint& touchPoint, ev->touchPoints()) {
58+ message.append(
59+ QString("(id:%1, state:%2, scenePos:(%3,%4)) ")
60+ .arg(touchPoint.id())
61+ .arg(touchPointStateToString(touchPoint.state()))
62+ .arg(touchPoint.scenePos().x())
63+ .arg(touchPoint.scenePos().y())
64+ );
65+ }
66+
67+ return message;
68+}
libs/UbuntuGestures/DebugHelpers.hnew file+29
@@ -0,0 +1,29 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#ifndef UBUNTUGESTURES_DEBUG_HELPER_H
18+#define UBUNTUGESTURES_DEBUG_HELPER_H
19+
20+#include <QString>
21+
22+#include "UbuntuGesturesGlobal.h"
23+
24+class QTouchEvent;
25+
26+UBUNTUGESTURES_EXPORT QString touchPointStateToString(Qt::TouchPointState state);
27+UBUNTUGESTURES_EXPORT QString touchEventToString(const QTouchEvent *ev);
28+
29+#endif // UBUNTUGESTURES_DEBUG_HELPER_H
libs/UbuntuGestures/Pool.hnew file+134
@@ -0,0 +1,134 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#ifndef UBUNTUGESTURES_POOL_H
18+#define UBUNTUGESTURES_POOL_H
19+
20+#include <QVector>
21+
22+#include "UbuntuGesturesGlobal.h"
23+
24+/*
25+ An object pool.
26+ Avoids unnecessary creations/initializations and deletions/destructions of items. Useful
27+ in a scenario where items are created and destroyed very frequently but the total number
28+ of items at any given time remains small. They're stored in a unordered fashion.
29+
30+ To be used in Pool, ItemType needs to have the following methods:
31+
32+ - ItemType();
33+
34+ A constructor that takes no parameters. An object contructed with it must return false if
35+ isValid() is called.
36+
37+ - bool isValid() const;
38+
39+ Returns wheter the object holds a valid , "filled" state or is empty.
40+ Used by Pool to check if the slot occupied by this object is actually available.
41+
42+ - void reset();
43+
44+ Resets the object to its initial, empty, state. After calling this method, isValid() must
45+ return false.
46+ */
47+template <class ItemType> class Pool
48+{
49+public:
50+ Pool() : m_lastUsedIndex(-1) {
51+ }
52+
53+ class Iterator {
54+ public:
55+ Iterator() : index(-1), item(nullptr) {}
56+ Iterator(int index, ItemType *item)
57+ : index(index), item(item) {}
58+
59+ ItemType *operator->() const { return item; }
60+ ItemType &operator*() const { return *item; }
61+ ItemType &value() const { return *item; }
62+
63+ Iterator &operator= (const Iterator& other) {
64+ index = other.index;
65+ item = other.item;
66+
67+ // by convention, always return *this
68+ return *this;
69+ }
70+
71+ operator bool() const { return item != nullptr; }
72+
73+ int index;
74+ ItemType *item;
75+ };
76+
77+ Iterator &end() const { return Iterator(); }
78+
79+ ItemType &getEmptySlot() {
80+ Q_ASSERT(m_lastUsedIndex < m_slots.size());
81+
82+ // Look for an in-between vacancy first
83+ for (int i = 0; i < m_lastUsedIndex; ++i) {
84+ ItemType &item = m_slots[i];
85+ if (!item.isValid()) {
86+ return item;
87+ }
88+ }
89+
90+ ++m_lastUsedIndex;
91+ if (m_lastUsedIndex >= m_slots.size()) {
92+ m_slots.resize(m_lastUsedIndex + 1);
93+ }
94+
95+ return m_slots[m_lastUsedIndex];
96+ }
97+
98+ void freeSlot(Iterator &iterator) {
99+ m_slots[iterator.index].reset();
100+ if (iterator.index == m_lastUsedIndex) {
101+ do {
102+ --m_lastUsedIndex;
103+ } while (m_lastUsedIndex >= 0 && !m_slots.at(m_lastUsedIndex).isValid());
104+ }
105+ }
106+
107+ // Iterates through all valid items (i.e. the occupied slots)
108+ // calling the given function, with the option of ending the loop early.
109+ //
110+ // bool Func(Iterator& item)
111+ //
112+ // Returning true means it wants to continue the "for" loop, false
113+ // terminates the loop.
114+ template<typename Func> void forEach(Func func) {
115+ Iterator it;
116+ for (it.index = 0; it.index <= m_lastUsedIndex; ++it.index) {
117+ it.item = &m_slots[it.index];
118+ if (!it.item->isValid())
119+ continue;
120+
121+ if (!func(it))
122+ break;
123+ }
124+ }
125+
126+ bool isEmpty() const { return m_lastUsedIndex == -1; }
127+
128+
129+private:
130+ QVector<ItemType> m_slots;
131+ int m_lastUsedIndex;
132+};
133+
134+#endif // UBUNTUGESTURES_POOL_H
libs/UbuntuGestures/Timer.cppnew file+109
@@ -0,0 +1,109 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#include "Timer.h"
18+
19+namespace UbuntuGestures {
20+
21+Timer::Timer(QObject *parent) : AbstractTimer(parent)
22+{
23+ m_timer.setSingleShot(false);
24+ connect(&m_timer, &QTimer::timeout, this, &AbstractTimer::timeout);
25+}
26+
27+int Timer::interval() const
28+{
29+ return m_timer.interval();
30+}
31+
32+void Timer::setInterval(int msecs)
33+{
34+ m_timer.setInterval(msecs);
35+}
36+
37+void Timer::start()
38+{
39+ m_timer.start();
40+ AbstractTimer::start();
41+}
42+
43+void Timer::stop()
44+{
45+ m_timer.stop();
46+ AbstractTimer::stop();
47+}
48+
49+bool Timer::isSingleShot() const
50+{
51+ return m_timer.isSingleShot();
52+}
53+
54+void Timer::setSingleShot(bool value)
55+{
56+ m_timer.setSingleShot(value);
57+}
58+
59+/////////////////////////////////// FakeTimer //////////////////////////////////
60+
61+FakeTimer::FakeTimer(QObject *parent)
62+ : UbuntuGestures::AbstractTimer(parent)
63+ , m_interval(0)
64+ , m_singleShot(false)
65+{
66+}
67+
68+int FakeTimer::interval() const
69+{
70+ return m_interval;
71+}
72+
73+void FakeTimer::setInterval(int msecs)
74+{
75+ m_interval = msecs;
76+}
77+
78+bool FakeTimer::isSingleShot() const
79+{
80+ return m_singleShot;
81+}
82+
83+void FakeTimer::setSingleShot(bool value)
84+{
85+ m_singleShot = value;
86+}
87+
88+/////////////////////////////////// FakeTimerFactory //////////////////////////////////
89+
90+AbstractTimer *FakeTimerFactory::createTimer(QObject *parent)
91+{
92+ FakeTimer *fakeTimer = new FakeTimer(parent);
93+
94+ timers.append(fakeTimer);
95+
96+ return fakeTimer;
97+}
98+
99+void FakeTimerFactory::makeRunningTimersTimeout()
100+{
101+ for (int i = 0; i < timers.count(); ++i) {
102+ FakeTimer *timer = timers[i].data();
103+ if (timer && timer->isRunning()) {
104+ timer->emitTimeout();
105+ }
106+ }
107+}
108+
109+} // namespace UbuntuGestures
libs/UbuntuGestures/Timer.hnew file+105
@@ -0,0 +1,105 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#ifndef UBUNTUGESTURES_TIMER_H
18+#define UBUNTUGESTURES_TIMER_H
19+
20+#include "UbuntuGesturesGlobal.h"
21+
22+#include <QObject>
23+#include <QPointer>
24+#include <QTimer>
25+
26+namespace UbuntuGestures {
27+
28+/* Defines an interface for a Timer. Useful for tests. */
29+class UBUNTUGESTURES_EXPORT AbstractTimer : public QObject
30+{
31+ Q_OBJECT
32+public:
33+ AbstractTimer(QObject *parent) : QObject(parent), m_isRunning(false) {}
34+ virtual int interval() const = 0;
35+ virtual void setInterval(int msecs) = 0;
36+ virtual void start() { m_isRunning = true; }
37+ virtual void stop() { m_isRunning = false; }
38+ bool isRunning() const { return m_isRunning; }
39+ virtual bool isSingleShot() const = 0;
40+ virtual void setSingleShot(bool value) = 0;
41+Q_SIGNALS:
42+ void timeout();
43+private:
44+ bool m_isRunning;
45+};
46+
47+/* Essentially a QTimer wrapper */
48+class UBUNTUGESTURES_EXPORT Timer : public AbstractTimer
49+{
50+ Q_OBJECT
51+public:
52+ Timer(QObject *parent = nullptr);
53+
54+ int interval() const override;
55+ void setInterval(int msecs) override;
56+ void start() override;
57+ void stop() override;
58+ bool isSingleShot() const override;
59+ void setSingleShot(bool value) override;
60+private:
61+ QTimer m_timer;
62+};
63+
64+/* For tests */
65+class UBUNTUGESTURES_EXPORT FakeTimer : public AbstractTimer
66+{
67+ Q_OBJECT
68+public:
69+ FakeTimer(QObject *parent = nullptr);
70+
71+ virtual void emitTimeout() { Q_EMIT timeout(); }
72+
73+ int interval() const override;
74+ void setInterval(int msecs) override;
75+ bool isSingleShot() const override;
76+ void setSingleShot(bool value) override;
77+private:
78+ int m_interval;
79+ bool m_singleShot;
80+};
81+
82+class UBUNTUGESTURES_EXPORT AbstractTimerFactory
83+{
84+public:
85+ virtual ~AbstractTimerFactory() {}
86+ virtual AbstractTimer *createTimer(QObject *parent = nullptr) = 0;
87+};
88+
89+class UBUNTUGESTURES_EXPORT TimerFactory : public AbstractTimerFactory
90+{
91+public:
92+ AbstractTimer *createTimer(QObject *parent = nullptr) override { return new Timer(parent); }
93+};
94+
95+class UBUNTUGESTURES_EXPORT FakeTimerFactory : public AbstractTimerFactory
96+{
97+public:
98+ AbstractTimer *createTimer(QObject *parent = nullptr) override;
99+ void makeRunningTimersTimeout();
100+ QList<QPointer<FakeTimer>> timers;
101+};
102+
103+} // namespace UbuntuGestures
104+
105+#endif // UBUNTUGESTURES_TIMER_H
libs/UbuntuGestures/TouchOwnershipEvent.cppnew file+35
@@ -0,0 +1,35 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#include "TouchOwnershipEvent.h"
18+
19+QEvent::Type TouchOwnershipEvent::m_touchOwnershipType = (QEvent::Type)-1;
20+
21+TouchOwnershipEvent::TouchOwnershipEvent(int touchId, bool gained)
22+ : QEvent(touchOwnershipEventType())
23+ , m_touchId(touchId)
24+ , m_gained(gained)
25+{
26+}
27+
28+QEvent::Type TouchOwnershipEvent::touchOwnershipEventType()
29+{
30+ if (m_touchOwnershipType == (QEvent::Type)-1) {
31+ m_touchOwnershipType = (QEvent::Type)registerEventType();
32+ }
33+
34+ return m_touchOwnershipType;
35+}
libs/UbuntuGestures/TouchOwnershipEvent.hnew file+50
@@ -0,0 +1,50 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#ifndef UBUNTU_TOUCHOWNERSHIPEVENT_H
18+#define UBUNTU_TOUCHOWNERSHIPEVENT_H
19+
20+#include <QEvent>
21+#include "UbuntuGesturesGlobal.h"
22+
23+/*
24+ When an item get an ownership event for a touch it can grab/steal that touch
25+ with a clean conscience.
26+ */
27+class UBUNTUGESTURES_EXPORT TouchOwnershipEvent : public QEvent
28+{
29+public:
30+ TouchOwnershipEvent(int touchId, bool gained);
31+
32+ static Type touchOwnershipEventType();
33+
34+ /*
35+ Whether ownership was gained (true) or lost (false)
36+ */
37+ bool gained() const { return m_gained; }
38+
39+ /*
40+ Id of the touch whose ownership was granted.
41+ */
42+ int touchId() const { return m_touchId; }
43+
44+private:
45+ static Type m_touchOwnershipType;
46+ int m_touchId;
47+ bool m_gained;
48+};
49+
50+#endif // UBUNTU_TOUCHOWNERSHIPEVENT_H
libs/UbuntuGestures/TouchRegistry.cppnew file+500
@@ -0,0 +1,500 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#include "TouchRegistry.h"
18+
19+#include <QCoreApplication>
20+#include <QDebug>
21+
22+#pragma GCC diagnostic push
23+#pragma GCC diagnostic ignored "-pedantic"
24+#include <private/qquickitem_p.h>
25+#pragma GCC diagnostic pop
26+
27+#include "CandidateInactivityTimer.h"
28+#include "Timer.h"
29+#include "TouchOwnershipEvent.h"
30+#include "UnownedTouchEvent.h"
31+
32+#define TOUCHREGISTRY_DEBUG 0
33+
34+#if TOUCHREGISTRY_DEBUG
35+ #include "DebugHelpers.h"
36+ #define UG_DEBUG qDebug() << "[TouchRegistry]"
37+#endif // TOUCHREGISTRY_DEBUG
38+
39+using namespace UbuntuGestures;
40+
41+TouchRegistry *TouchRegistry::m_instance = nullptr;
42+
43+TouchRegistry::TouchRegistry(QObject *parent)
44+ : TouchRegistry(parent, new TimerFactory)
45+{
46+}
47+
48+TouchRegistry::TouchRegistry(QObject *parent, AbstractTimerFactory *timerFactory)
49+ : QObject(parent)
50+ , m_inDispatchLoop(false)
51+ , m_timerFactory(timerFactory)
52+{
53+ if (m_instance == nullptr) {
54+ m_instance = this;
55+ } else {
56+ qFatal("Cannot have more than one instance of TouchRegistry. It must be a singleton.");
57+ }
58+}
59+
60+TouchRegistry::~TouchRegistry()
61+{
62+ Q_ASSERT(m_instance != nullptr);
63+ m_instance = nullptr;
64+ delete m_timerFactory;
65+}
66+
67+void TouchRegistry::update(const QTouchEvent *event)
68+{
69+ #if TOUCHREGISTRY_DEBUG
70+ UG_DEBUG << "got" << qPrintable(touchEventToString(event));
71+ #endif
72+
73+ const QList<QTouchEvent::TouchPoint> &touchPoints = event->touchPoints();
74+ for (int i = 0; i < touchPoints.count(); ++i) {
75+ const QTouchEvent::TouchPoint &touchPoint = touchPoints.at(i);
76+ if (touchPoint.state() == Qt::TouchPointPressed) {
77+ TouchInfo &touchInfo = m_touchInfoPool.getEmptySlot();
78+ touchInfo.init(touchPoint.id());
79+ } else if (touchPoint.state() == Qt::TouchPointReleased) {
80+ Pool<TouchInfo>::Iterator touchInfo = findTouchInfo(touchPoint.id());
81+
82+ touchInfo->physicallyEnded = true;
83+ }
84+ }
85+
86+ deliverTouchUpdatesToUndecidedCandidatesAndWatchers(event);
87+
88+ freeEndedTouchInfos();
89+}
90+
91+void TouchRegistry::deliverTouchUpdatesToUndecidedCandidatesAndWatchers(const QTouchEvent *event)
92+{
93+ // TODO: Look into how we could optimize this whole thing.
94+ // Although it's not really a problem as we should have at most two candidates
95+ // for each point and there should not be many active points at any given moment.
96+ // But having three nested for-loops does scare.
97+
98+ // TODO: Don't send it to the object that is already receiving the regular event
99+ // because QQuickWindow is sending it to him (i.e., he's the touch owner from Qt's point of view)
100+ // Problem is, we cannnot easily get this information.
101+
102+ const QList<QTouchEvent::TouchPoint> &updatedTouchPoints = event->touchPoints();
103+
104+ // Maps an item to the touches in this event he should be informed about.
105+ // E.g.: a QTouchEvent might have three touches but a given item might be interested in only
106+ // one of them. So he will get a UnownedTouchEvent from this QTouchEvent containing only that
107+ // touch point.
108+ QMap<QQuickItem*, QList<int>> touchIdsForItems;
109+
110+ // Build touchIdsForItems
111+ m_touchInfoPool.forEach([&](Pool<TouchInfo>::Iterator &touchInfo) {
112+ if (touchInfo->isOwned() && touchInfo->watchers.isEmpty())
113+ return true;
114+
115+ for (int j = 0; j < updatedTouchPoints.count(); ++j) {
116+ if (updatedTouchPoints[j].id() == touchInfo->id) {
117+ if (!touchInfo->isOwned()) {
118+ for (int i = 0; i < touchInfo->candidates.count(); ++i) {
119+ CandidateInfo &candidate = touchInfo->candidates[i];
120+ Q_ASSERT(!candidate.item.isNull());
121+ touchIdsForItems[candidate.item.data()].append(touchInfo->id);
122+ }
123+ }
124+
125+ const QList<QPointer<QQuickItem>> &watchers = touchInfo->watchers;
126+ for (int i = 0; i < watchers.count(); ++i) {
127+ if (!watchers[i].isNull()) {
128+ touchIdsForItems[watchers[i].data()].append(touchInfo->id);
129+ }
130+ }
131+
132+ return true;
133+ }
134+ }
135+
136+ return true;
137+ });
138+
139+ // TODO: Consider what happens if an item calls any of TouchRegistry's public methods
140+ // from the event handler callback.
141+ m_inDispatchLoop = true;
142+ auto it = touchIdsForItems.constBegin();
143+ while (it != touchIdsForItems.constEnd()) {
144+ QQuickItem *item = it.key();
145+ const QList<int> &touchIds = it.value();
146+ dispatchPointsToItem(event, touchIds, item);
147+ ++it;
148+ };
149+ m_inDispatchLoop = false;
150+}
151+
152+void TouchRegistry::freeEndedTouchInfos()
153+{
154+ m_touchInfoPool.forEach([&](Pool<TouchInfo>::Iterator &touchInfo) {
155+ if (touchInfo->ended()) {
156+ m_touchInfoPool.freeSlot(touchInfo);
157+ }
158+ return true;
159+ });
160+}
161+
162+/*
163+ Extracts the touches with the given touchIds from event and send them in a
164+ UnownedTouchEvent to the given item
165+ */
166+void TouchRegistry::dispatchPointsToItem(const QTouchEvent *event, const QList<int> &touchIds,
167+ QQuickItem *item)
168+{
169+ Qt::TouchPointStates touchPointStates = 0;
170+ QList<QTouchEvent::TouchPoint> touchPoints;
171+
172+ const QList<QTouchEvent::TouchPoint> &allTouchPoints = event->touchPoints();
173+
174+ QTransform windowToCandidateTransform = QQuickItemPrivate::get(item)->windowToItemTransform();
175+ QMatrix4x4 windowToCandidateMatrix(windowToCandidateTransform);
176+
177+ for (int i = 0; i < allTouchPoints.count(); ++i) {
178+ const QTouchEvent::TouchPoint &originalTouchPoint = allTouchPoints[i];
179+ if (touchIds.contains(originalTouchPoint.id())) {
180+ QTouchEvent::TouchPoint touchPoint = originalTouchPoint;
181+
182+ translateTouchPointFromScreenToWindowCoords(touchPoint);
183+
184+ // Set the point's local coordinates to that of the item
185+ touchPoint.setRect(windowToCandidateTransform.mapRect(touchPoint.sceneRect()));
186+ touchPoint.setStartPos(windowToCandidateTransform.map(touchPoint.startScenePos()));
187+ touchPoint.setLastPos(windowToCandidateTransform.map(touchPoint.lastScenePos()));
188+ touchPoint.setVelocity(windowToCandidateMatrix.mapVector(touchPoint.velocity()).toVector2D());
189+
190+ touchPoints.append(touchPoint);
191+ touchPointStates |= touchPoint.state();
192+ }
193+ }
194+
195+ QTouchEvent *eventForItem = new QTouchEvent(event->type(),
196+ event->device(),
197+ event->modifiers(),
198+ touchPointStates,
199+ touchPoints);
200+ eventForItem->setWindow(event->window());
201+ eventForItem->setTimestamp(event->timestamp());
202+ eventForItem->setTarget(event->target());
203+
204+ UnownedTouchEvent unownedTouchEvent(eventForItem);
205+
206+ #if TOUCHREGISTRY_DEBUG
207+ UG_DEBUG << "Sending unowned" << qPrintable(touchEventToString(eventForItem))
208+ << "to" << item;
209+ #endif
210+
211+ QCoreApplication::sendEvent(item, &unownedTouchEvent);
212+}
213+
214+void TouchRegistry::translateTouchPointFromScreenToWindowCoords(QTouchEvent::TouchPoint &touchPoint)
215+{
216+ touchPoint.setScreenRect(touchPoint.sceneRect());
217+ touchPoint.setStartScreenPos(touchPoint.startScenePos());
218+ touchPoint.setLastScreenPos(touchPoint.lastScenePos());
219+
220+ touchPoint.setSceneRect(touchPoint.rect());
221+ touchPoint.setStartScenePos(touchPoint.startPos());
222+ touchPoint.setLastScenePos(touchPoint.lastPos());
223+}
224+
225+bool TouchRegistry::eventFilter(QObject *watched, QEvent *event)
226+{
227+ Q_UNUSED(watched);
228+
229+ switch (event->type()) {
230+ case QEvent::TouchBegin:
231+ case QEvent::TouchUpdate:
232+ case QEvent::TouchEnd:
233+ case QEvent::TouchCancel:
234+ update(static_cast<QTouchEvent*>(event));
235+ break;
236+ default:
237+ // do nothing
238+ break;
239+ }
240+
241+ // Do not filter out the event. i.e., let it be handled further as
242+ // we're just monitoring events
243+ return false;
244+}
245+
246+void TouchRegistry::addCandidateOwnerForTouch(int id, QQuickItem *candidate)
247+{
248+ #if TOUCHREGISTRY_DEBUG
249+ UG_DEBUG << "addCandidateOwnerForTouch id" << id << "candidate" << candidate;
250+ #endif
251+
252+ Pool<TouchInfo>::Iterator touchInfo = findTouchInfo(id);
253+ if (!touchInfo) { qFatal("TouchRegistry: Failed to find TouchInfo"); }
254+
255+ if (touchInfo->isOwned()) {
256+ qWarning("TouchRegistry: trying to add candidate owner for a touch that's already owned");
257+ return;
258+ }
259+
260+ // TODO: Check if candidate already exists
261+
262+ CandidateInfo candidateInfo;
263+ candidateInfo.undecided = true;
264+ candidateInfo.item = candidate;
265+ candidateInfo.inactivityTimer = new CandidateInactivityTimer(id, candidate,
266+ *m_timerFactory,
267+ this);
268+ connect(candidateInfo.inactivityTimer, &CandidateInactivityTimer::candidateDefaulted,
269+ this, &TouchRegistry::rejectCandidateOwnerForTouch);
270+
271+ touchInfo->candidates.append(candidateInfo);
272+}
273+
274+void TouchRegistry::addTouchWatcher(int touchId, QQuickItem *watcher)
275+{
276+ #if TOUCHREGISTRY_DEBUG
277+ UG_DEBUG << "addTouchWatcher id" << touchId << "watcher" << watcher;
278+ #endif
279+
280+ Pool<TouchInfo>::Iterator touchInfo = findTouchInfo(touchId);
281+ if (!touchInfo) { qFatal("TouchRegistry: Failed to find TouchInfo"); }
282+
283+ // TODO: Check if watcher already exists
284+
285+ touchInfo->watchers.append(watcher);
286+}
287+
288+void TouchRegistry::removeCandidateOwnerForTouch(int id, QQuickItem *candidate)
289+{
290+ #if TOUCHREGISTRY_DEBUG
291+ UG_DEBUG << "removeCandidateOwnerForTouch id" << id << "candidate" << candidate;
292+ #endif
293+
294+ Pool<TouchInfo>::Iterator touchInfo = findTouchInfo(id);
295+ if (!touchInfo) { qFatal("TouchRegistry: Failed to find TouchInfo"); }
296+
297+ int indexRemoved = -1;
298+
299+ // TODO: check if the candidate is in fact the owner of the touch
300+
301+ for (int i = 0; i < touchInfo->candidates.count() && indexRemoved == -1; ++i) {
302+ CandidateInfo &candidateInfo = touchInfo->candidates[i];
303+ if (candidateInfo.item == candidate) {
304+ Q_ASSERT(i > 0 || candidateInfo.undecided);
305+ if (i == 0 && !candidateInfo.undecided) {
306+ qCritical("TouchRegistry: touch owner is being removed.");
307+ }
308+ delete candidateInfo.inactivityTimer;
309+ candidateInfo.inactivityTimer = nullptr;
310+ touchInfo->candidates.removeAt(i);
311+ indexRemoved = i;
312+ }
313+ }
314+
315+ if (indexRemoved == 0) {
316+ // the top candidate has been removed. if the new top candidate
317+ // wants the touch let him know he's now the owner.
318+ if (touchInfo->isOwned()) {
319+ touchInfo->notifyCandidatesOfOwnershipResolution();
320+ }
321+ }
322+
323+ if (!m_inDispatchLoop && touchInfo->ended()) {
324+ m_touchInfoPool.freeSlot(touchInfo);
325+ }
326+}
327+
328+void TouchRegistry::requestTouchOwnership(int id, QQuickItem *candidate)
329+{
330+ #if TOUCHREGISTRY_DEBUG
331+ UG_DEBUG << "requestTouchOwnership id " << id << "candidate" << candidate;
332+ #endif
333+
334+ Pool<TouchInfo>::Iterator touchInfo = findTouchInfo(id);
335+ if (!touchInfo) { qFatal("TouchRegistry: Failed to find TouchInfo"); }
336+
337+ Q_ASSERT(!touchInfo->isOwned());
338+
339+ int candidateIndex = -1;
340+ for (int i = 0; i < touchInfo->candidates.count(); ++i) {
341+ CandidateInfo &candidateInfo = touchInfo->candidates[i];
342+ if (candidateInfo.item == candidate) {
343+ candidateInfo.undecided = false;
344+ delete candidateInfo.inactivityTimer;
345+ candidateInfo.inactivityTimer = nullptr;
346+ candidateIndex = i;
347+ break;
348+ }
349+ }
350+
351+ // add it as a candidate if not present yet
352+ if (candidateIndex < 0) {
353+ CandidateInfo candidateInfo;
354+ candidateInfo.undecided = false;
355+ candidateInfo.item = candidate;
356+ candidateInfo.inactivityTimer = nullptr;
357+ touchInfo->candidates.append(candidateInfo);
358+ // it's the last one
359+ candidateIndex = touchInfo->candidates.count() - 1;
360+ }
361+
362+ // If it's the top candidate it means it's now the owner. Let
363+ // it know about it.
364+ if (candidateIndex == 0) {
365+ touchInfo->notifyCandidatesOfOwnershipResolution();
366+ }
367+}
368+
369+Pool<TouchRegistry::TouchInfo>::Iterator TouchRegistry::findTouchInfo(int id)
370+{
371+ Pool<TouchInfo>::Iterator touchInfo;
372+
373+ m_touchInfoPool.forEach([&](Pool<TouchInfo>::Iterator &someTouchInfo) -> bool {
374+ if (someTouchInfo->id == id) {
375+ touchInfo = someTouchInfo;
376+ return false;
377+ } else {
378+ return true;
379+ }
380+ });
381+
382+ return touchInfo;
383+}
384+
385+
386+void TouchRegistry::rejectCandidateOwnerForTouch(int id, QQuickItem *candidate)
387+{
388+ // NB: It's technically possible that candidate is a dangling pointer at this point.
389+ // Although that would most likely be due to a bug in our code.
390+ // In any case, only dereference it after it's confirmed that it indeed exists.
391+
392+ #if TOUCHREGISTRY_DEBUG
393+ UG_DEBUG << "rejectCandidateOwnerForTouch id" << id << "candidate" << (void*)candidate;
394+ #endif
395+
396+ Pool<TouchInfo>::Iterator touchInfo = findTouchInfo(id);
397+ if (!touchInfo) {
398+ #if TOUCHREGISTRY_DEBUG
399+ UG_DEBUG << "Failed to find TouchInfo for id" << id;
400+ #endif
401+ return;
402+ }
403+
404+ int rejectedCandidateIndex = -1;
405+
406+ // Check if the given candidate is valid and still undecided
407+ for (int i = 0; i < touchInfo->candidates.count() && rejectedCandidateIndex == -1; ++i) {
408+ CandidateInfo &candidateInfo = touchInfo->candidates[i];
409+ if (candidateInfo.item == candidate) {
410+ Q_ASSERT(i > 0 || candidateInfo.undecided);
411+ if (i == 0 && !candidateInfo.undecided) {
412+ qCritical() << "TouchRegistry: Can't reject item (" << (void*)candidate
413+ << ") as it already owns touch" << id;
414+ return;
415+ } else {
416+ // we found the guy and it's all fine.
417+ rejectedCandidateIndex = i;
418+ }
419+ }
420+ }
421+
422+ // If we reached this point it's because the given candidate exists and is indeed undecided.
423+
424+ Q_ASSERT(rejectedCandidateIndex >= 0 && rejectedCandidateIndex < touchInfo->candidates.size());
425+
426+ {
427+ TouchOwnershipEvent lostOwnershipEvent(id, false /*gained*/);
428+ QCoreApplication::sendEvent(candidate, &lostOwnershipEvent);
429+ }
430+
431+ touchInfo->candidates.removeAt(rejectedCandidateIndex);
432+
433+ if (rejectedCandidateIndex == 0) {
434+ // the top candidate has been removed. if the new top candidate
435+ // wants the touch let him know he's now the owner.
436+ if (touchInfo->isOwned()) {
437+ touchInfo->notifyCandidatesOfOwnershipResolution();
438+ }
439+ }
440+}
441+
442+////////////////////////////////////// TouchRegistry::TouchInfo ////////////////////////////////////
443+
444+TouchRegistry::TouchInfo::TouchInfo(int id)
445+{
446+ init(id);
447+}
448+
449+void TouchRegistry::TouchInfo::reset()
450+{
451+ id = -1;
452+
453+ for (int i = 0; i < candidates.count(); ++i) {
454+ CandidateInfo &candidate = candidates[i];
455+ delete candidate.inactivityTimer;
456+ candidate.inactivityTimer.clear(); // shoundn't be needed but anyway...
457+ }
458+}
459+
460+void TouchRegistry::TouchInfo::init(int id)
461+{
462+ this->id = id;
463+ physicallyEnded = false;
464+ candidates.clear();
465+ watchers.clear();
466+}
467+
468+bool TouchRegistry::TouchInfo::isOwned() const
469+{
470+ return !candidates.isEmpty() && !candidates.first().undecided;
471+}
472+
473+bool TouchRegistry::TouchInfo::ended() const
474+{
475+ Q_ASSERT(isValid());
476+ return physicallyEnded && (isOwned() || candidates.isEmpty());
477+}
478+
479+void TouchRegistry::TouchInfo::notifyCandidatesOfOwnershipResolution()
480+{
481+ Q_ASSERT(isOwned());
482+
483+ #if TOUCHREGISTRY_DEBUG
484+ UG_DEBUG << "sending TouchOwnershipEvent(id =" << id
485+ << " gained) to candidate" << candidates[0].item;
486+ #endif
487+
488+ TouchOwnershipEvent gainedOwnershipEvent(id, true /*gained*/);
489+ QCoreApplication::sendEvent(candidates[0].item, &gainedOwnershipEvent);
490+
491+
492+ TouchOwnershipEvent lostOwnershipEvent(id, false /*gained*/);
493+ for (int i = 1; i < candidates.count(); ++i) {
494+ #if TOUCHREGISTRY_DEBUG
495+ UG_DEBUG << "sending TouchWonershipEvent(id =" << id << " lost) to candidate"
496+ << candidates[i].item;
497+ #endif
498+ QCoreApplication::sendEvent(candidates[i].item, &lostOwnershipEvent);
499+ }
500+}
libs/UbuntuGestures/TouchRegistry.hnew file+182
@@ -0,0 +1,182 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#ifndef UNITY_TOUCHREGISTRY_H
18+#define UNITY_TOUCHREGISTRY_H
19+
20+#include <QQuickItem>
21+#include <QObject>
22+#include <QPointer>
23+#include <QTouchEvent>
24+#include <QVector>
25+
26+#include "UbuntuGesturesGlobal.h"
27+#include "CandidateInactivityTimer.h"
28+#include "Pool.h"
29+
30+namespace UbuntuGestures {
31+ class AbstractTimerFactory;
32+}
33+
34+/*
35+ Where the ownership of touches is registered.
36+
37+ Singleton used for adding a touch point ownership model analogous to the one
38+ described in the XInput 2.2 protocol[1] on top of the existing input dispatch logic in QQuickWindow.
39+
40+ It provides a much more flexible and powerful way of dealing with pointer ownership than the existing
41+ mechanisms in Qt. Namely QQuickItem::grabTouchPoints, QuickItem::keepTouchGrab,
42+ QQuickItem::setFiltersChildMouseEvents, QQuickItem::ungrabTouchPoints and QQuickItem::touchUngrabEvent.
43+
44+ Usage:
45+
46+ 1- An item receives a a new touch point. If he's not sure whether he wants it yet, he calls:
47+ TouchRegistry::instance()->addCandidateOwnerForTouch(touchId, this);
48+ touchEvent->ignore();
49+ Ignoring the event is crucial so that it can be seen by other interested parties, which will
50+ behave similarly.
51+
52+ 2- That item will then start receiving UnownedTouchEvents for that touch from step 1. Once he's
53+ made a decision he calls either:
54+ TouchRegistry::instance()->requestTouchOwnership(touchId, this);
55+ If he wants the touch point or:
56+ TouchRegistry::instance()->removeCandidateOwnerForTouch(touchId, this);
57+  if he does not want it.
58+
59+ Candidates are put in a priority queue. The first one to call addCandidateOwnerForTouch() will
60+ take precedence over the others for receiving ownership over the touch point (from now on called
61+ simply top-candidate).
62+
63+ If the top-candidate calls requestTouchOwnership() he will immediately receive a
64+ TouchOwnershipEvent(gained=true) for that touch point. He can then safely call
65+ QQuickItem::grabTouchPoints to actually get the owned touch points. The other candidates
66+ will receive TouchOwnershipEvent(gained=false) and will no longer receive UnownedTouchEvents
67+ for that touch point. They will have to undo whatever action they were performing with that
68+ touch point.
69+
70+ But if the top-candidate calls removeCandidateOwnerForTouch() instead, he's popped from the
71+ candidacy queue and ownership is given to the new top-most candidate if he has already
72+ made his decision, that is.
73+
74+ The TouchRegistry cannot enforce the results of this pointer ownership negotiation (i.e.,
75+ who gets to grab the touch points) as that would clash with QQuickWindow's input event
76+ dispatching logic. The candidates have to respect the decision and grab the touch points
77+ themselves.
78+
79+ If an item wants ownership over touches as soon as he receives the TouchBegin for them, his step 1
80+ would be instead:
81+ TouchRegistry::instance()->requestTouchOwnership(touchId, this);
82+ return true;
83+ He would then be notified once ownership has been granted to him, from which point onwards he could
84+ safely assume other TouchRegistry users wouldn't snatch this touch away from him.
85+
86+ Items oblivious to TouchRegistry will lose their touch points without warning, just like in plain Qt.
87+
88+ [1] - http://www.x.org/releases/X11R7.7/doc/inputproto/XI2proto.txt (see multitouch-ownership)
89+ */
90+class UBUNTUGESTURES_EXPORT TouchRegistry : public QObject
91+{
92+ Q_OBJECT
93+public:
94+ TouchRegistry(QObject *parent = nullptr);
95+ // Useful for tests, where you should feed a fake timer
96+ TouchRegistry(QObject *parent, UbuntuGestures::AbstractTimerFactory *timerFactory);
97+
98+ virtual ~TouchRegistry();
99+
100+ // Returns a pointer to the application's TouchRegistry instance.
101+ // If no instance has been allocated, null is returned.
102+ static TouchRegistry *instance() { return m_instance; }
103+
104+ void update(const QTouchEvent *event);
105+
106+ // Calls update() if the given event is a QTouchEvent
107+ bool eventFilter(QObject *watched, QEvent *event) override;
108+
109+ // An item that might later request ownership over the given touch point.
110+ // He will be kept informed about that touch point through UnownedTouchEvents
111+ // All candidates must eventually decide whether they want to own the touch point
112+ // or not. That decision is informed through requestTouchOwnership() or
113+ // removeCandidateOwnerForTouch()
114+ void addCandidateOwnerForTouch(int id, QQuickItem *candidate);
115+
116+ // The same as rejecting ownership of a touch
117+ void removeCandidateOwnerForTouch(int id, QQuickItem *candidate);
118+
119+ // The candidate object wants to be the owner of the touch with the given id.
120+ // If he's currently the oldest/top-most candidate, he will get an ownership
121+ // event immediately. If not, he will get ownership if (or once) he becomes the
122+ // top-most candidate.
123+ void requestTouchOwnership(int id, QQuickItem *candidate);
124+
125+ // An item that has no interest (effective or potential) in owning a touch point
126+ // but would nonetheless like to be kept up-to-date on its state.
127+ void addTouchWatcher(int touchId, QQuickItem *watcherItem);
128+
129+private Q_SLOTS:
130+ void rejectCandidateOwnerForTouch(int id, QQuickItem *candidate);
131+
132+private:
133+ class CandidateInfo {
134+ public:
135+ bool undecided;
136+ // TODO: Prune candidates that become null and resolve ownership accordingly.
137+ QPointer<QQuickItem> item;
138+ QPointer<UbuntuGestures::CandidateInactivityTimer> inactivityTimer;
139+ };
140+
141+ class TouchInfo {
142+ public:
143+ TouchInfo() : id(-1) {}
144+ TouchInfo(int id);
145+ bool isValid() const { return id >= 0; }
146+ void reset();
147+ void init(int id);
148+ int id;
149+ bool physicallyEnded;
150+ bool isOwned() const;
151+ bool ended() const;
152+ void notifyCandidatesOfOwnershipResolution();
153+
154+ // TODO optimize storage (s/QList/Pool)
155+ QList<CandidateInfo> candidates;
156+ QList<QPointer<QQuickItem>> watchers;
157+ };
158+
159+ Pool<TouchInfo>::Iterator findTouchInfo(int id);
160+
161+ void deliverTouchUpdatesToUndecidedCandidatesAndWatchers(const QTouchEvent *event);
162+
163+ static void translateTouchPointFromScreenToWindowCoords(QTouchEvent::TouchPoint &touchPoint);
164+
165+ static void dispatchPointsToItem(const QTouchEvent *event, const QList<int> &touchIds,
166+ QQuickItem *item);
167+ void freeEndedTouchInfos();
168+
169+ Pool<TouchInfo> m_touchInfoPool;
170+
171+ // the singleton instance
172+ static TouchRegistry *m_instance;
173+
174+ bool m_inDispatchLoop;
175+
176+ UbuntuGestures::AbstractTimerFactory *m_timerFactory;
177+
178+ friend class tst_TouchRegistry;
179+ friend class tst_DirectionalDragArea;
180+};
181+
182+#endif // UNITY_TOUCHREGISTRY_H
plugins/Ubuntu/Gestures/UbuntuGesturesGlobal.h → libs/UbuntuGestures/UbuntuGesturesGlobal.hrenamed+1−1
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2014 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
libs/UbuntuGestures/UnownedTouchEvent.cppnew file+39
@@ -0,0 +1,39 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#include "UnownedTouchEvent.h"
18+
19+QEvent::Type UnownedTouchEvent::m_unownedTouchEventType = (QEvent::Type)-1;
20+
21+UnownedTouchEvent::UnownedTouchEvent(QTouchEvent *touchEvent)
22+ : QEvent(unownedTouchEventType())
23+ , m_touchEvent(touchEvent)
24+{
25+}
26+
27+QEvent::Type UnownedTouchEvent::unownedTouchEventType()
28+{
29+ if (m_unownedTouchEventType == (QEvent::Type)-1) {
30+ m_unownedTouchEventType = (QEvent::Type)registerEventType();
31+ }
32+
33+ return m_unownedTouchEventType;
34+}
35+
36+QTouchEvent *UnownedTouchEvent::touchEvent()
37+{
38+ return m_touchEvent.data();
39+}
libs/UbuntuGestures/UnownedTouchEvent.hnew file+45
@@ -0,0 +1,45 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#ifndef UBUNTU_UNOWNEDTOUCHEVENT_H
18+#define UBUNTU_UNOWNEDTOUCHEVENT_H
19+
20+#include <QTouchEvent>
21+#include <QScopedPointer>
22+#include "UbuntuGesturesGlobal.h"
23+
24+/*
25+ A touch event with touch points that do not belong the item receiving it.
26+
27+ See TouchRegistry::addCandidateOwnerForTouch and TouchRegistry::addTouchWatcher
28+ */
29+class UBUNTUGESTURES_EXPORT UnownedTouchEvent : public QEvent
30+{
31+public:
32+ UnownedTouchEvent(QTouchEvent *touchEvent);
33+ static Type unownedTouchEventType();
34+
35+ // TODO: It might be cleaner to store the information directly in UnownedTouchEvent
36+ // instead of carrying around a synthesized QTouchEvent. But the latter option
37+ // is very convenient.
38+ QTouchEvent *touchEvent();
39+
40+private:
41+ static Type m_unownedTouchEventType;
42+ QScopedPointer<QTouchEvent> m_touchEvent;
43+};
44+
45+#endif // UBUNTU_UNOWNEDTOUCHEVENT_H
plugins/AccountsService/AccountsService.cpp+38
@@ -26,6 +26,8 @@ AccountsService::AccountsService(QObject* parent)
26 m_service(new AccountsServiceDBusAdaptor(this)),
26 m_service(new AccountsServiceDBusAdaptor(this)),
27 m_user(qgetenv("USER")),
27 m_user(qgetenv("USER")),
28 m_demoEdges(false),
28 m_demoEdges(false),
29+ m_enableLauncherWhileLocked(false),
30+ m_enableIndicatorsWhileLocked(false),
29 m_statsWelcomeScreen(false),
31 m_statsWelcomeScreen(false),
30 m_passwordDisplayHint(Keyboard),
32 m_passwordDisplayHint(Keyboard),
31 m_failedLogins(0)
33 m_failedLogins(0)
@@ -47,6 +49,8 @@ void AccountsService::setUser(const QString &user)
47 Q_EMIT userChanged();
49 Q_EMIT userChanged();
48
50
49 updateDemoEdges();
51 updateDemoEdges();
52+ updateEnableLauncherWhileLocked();
53+ updateEnableIndicatorsWhileLocked();
50 updateBackgroundFile();
54 updateBackgroundFile();
51 updateStatsWelcomeScreen();
55 updateStatsWelcomeScreen();
52 updatePasswordDisplayHint();
56 updatePasswordDisplayHint();
@@ -64,6 +68,16 @@ void AccountsService::setDemoEdges(bool demoEdges)
64 m_service->setUserProperty(m_user, "com.canonical.unity.AccountsService", "demo-edges", demoEdges);
68 m_service->setUserProperty(m_user, "com.canonical.unity.AccountsService", "demo-edges", demoEdges);
65}
69}
66
70
71+bool AccountsService::enableLauncherWhileLocked() const
72+{
73+ return m_enableLauncherWhileLocked;
74+}
75+
76+bool AccountsService::enableIndicatorsWhileLocked() const
77+{
78+ return m_enableIndicatorsWhileLocked;
79+}
80+
67QString AccountsService::backgroundFile() const
81QString AccountsService::backgroundFile() const
68{
82{
69 return m_backgroundFile;
83 return m_backgroundFile;
@@ -88,6 +102,24 @@ void AccountsService::updateDemoEdges()
88 }
102 }
89}
103}
90
104
105+void AccountsService::updateEnableLauncherWhileLocked()
106+{
107+ auto enableLauncherWhileLocked = m_service->getUserProperty(m_user, "com.ubuntu.AccountsService.SecurityPrivacy", "EnableLauncherWhileLocked").toBool();
108+ if (m_enableLauncherWhileLocked != enableLauncherWhileLocked) {
109+ m_enableLauncherWhileLocked = enableLauncherWhileLocked;
110+ Q_EMIT enableLauncherWhileLockedChanged();
111+ }
112+}
113+
114+void AccountsService::updateEnableIndicatorsWhileLocked()
115+{
116+ auto enableIndicatorsWhileLocked = m_service->getUserProperty(m_user, "com.ubuntu.AccountsService.SecurityPrivacy", "EnableIndicatorsWhileLocked").toBool();
117+ if (m_enableIndicatorsWhileLocked != enableIndicatorsWhileLocked) {
118+ m_enableIndicatorsWhileLocked = enableIndicatorsWhileLocked;
119+ Q_EMIT enableIndicatorsWhileLockedChanged();
120+ }
121+}
122+
91void AccountsService::updateBackgroundFile()
123void AccountsService::updateBackgroundFile()
92{
124{
93 auto backgroundFile = m_service->getUserProperty(m_user, "org.freedesktop.Accounts.User", "BackgroundFile").toString();
125 auto backgroundFile = m_service->getUserProperty(m_user, "org.freedesktop.Accounts.User", "BackgroundFile").toString();
@@ -157,6 +189,12 @@ void AccountsService::propertiesChanged(const QString &user, const QString &inte
157 if (changed.contains("PasswordDisplayHint")) {
189 if (changed.contains("PasswordDisplayHint")) {
158 updatePasswordDisplayHint();
190 updatePasswordDisplayHint();
159 }
191 }
192+ if (changed.contains("EnableLauncherWhileLocked")) {
193+ updateEnableLauncherWhileLocked();
194+ }
195+ if (changed.contains("EnableIndicatorsWhileLocked")) {
196+ updateEnableIndicatorsWhileLocked();
197+ }
160 }
198 }
161}
199}
162
200
plugins/AccountsService/AccountsService.h+14
@@ -36,6 +36,12 @@ class AccountsService: public QObject
36 READ demoEdges
36 READ demoEdges
37 WRITE setDemoEdges
37 WRITE setDemoEdges
38 NOTIFY demoEdgesChanged)
38 NOTIFY demoEdgesChanged)
39+ Q_PROPERTY (bool enableLauncherWhileLocked
40+ READ enableLauncherWhileLocked
41+ NOTIFY enableLauncherWhileLockedChanged)
42+ Q_PROPERTY (bool enableIndicatorsWhileLocked
43+ READ enableIndicatorsWhileLocked
44+ NOTIFY enableIndicatorsWhileLockedChanged)
39 Q_PROPERTY (QString backgroundFile
45 Q_PROPERTY (QString backgroundFile
40 READ backgroundFile
46 READ backgroundFile
41 NOTIFY backgroundFileChanged)
47 NOTIFY backgroundFileChanged)
@@ -62,6 +68,8 @@ public:
62 void setUser(const QString &user);
68 void setUser(const QString &user);
63 bool demoEdges() const;
69 bool demoEdges() const;
64 void setDemoEdges(bool demoEdges);
70 void setDemoEdges(bool demoEdges);
71+ bool enableLauncherWhileLocked() const;
72+ bool enableIndicatorsWhileLocked() const;
65 QString backgroundFile() const;
73 QString backgroundFile() const;
66 bool statsWelcomeScreen() const;
74 bool statsWelcomeScreen() const;
67 PasswordDisplayHint passwordDisplayHint() const;
75 PasswordDisplayHint passwordDisplayHint() const;
@@ -71,6 +79,8 @@ public:
71Q_SIGNALS:
79Q_SIGNALS:
72 void userChanged();
80 void userChanged();
73 void demoEdgesChanged();
81 void demoEdgesChanged();
82+ void enableLauncherWhileLockedChanged();
83+ void enableIndicatorsWhileLockedChanged();
74 void backgroundFileChanged();
84 void backgroundFileChanged();
75 void statsWelcomeScreenChanged();
85 void statsWelcomeScreenChanged();
76 void passwordDisplayHintChanged();
86 void passwordDisplayHintChanged();
@@ -82,6 +92,8 @@ private Q_SLOTS:
82
92
83private:
93private:
84 void updateDemoEdges();
94 void updateDemoEdges();
95+ void updateEnableLauncherWhileLocked();
96+ void updateEnableIndicatorsWhileLocked();
85 void updateBackgroundFile();
97 void updateBackgroundFile();
86 void updateStatsWelcomeScreen();
98 void updateStatsWelcomeScreen();
87 void updatePasswordDisplayHint();
99 void updatePasswordDisplayHint();
@@ -90,6 +102,8 @@ private:
90 AccountsServiceDBusAdaptor *m_service;
102 AccountsServiceDBusAdaptor *m_service;
91 QString m_user;
103 QString m_user;
92 bool m_demoEdges;
104 bool m_demoEdges;
105+ bool m_enableLauncherWhileLocked;
106+ bool m_enableIndicatorsWhileLocked;
93 QString m_backgroundFile;
107 QString m_backgroundFile;
94 bool m_statsWelcomeScreen;
108 bool m_statsWelcomeScreen;
95 PasswordDisplayHint m_passwordDisplayHint;
109 PasswordDisplayHint m_passwordDisplayHint;
plugins/AccountsService/AccountsService.qmltypes+1
@@ -26,5 +26,6 @@ Module {
26 Property { name: "backgroundFile"; type: "string"; isReadonly: true }
26 Property { name: "backgroundFile"; type: "string"; isReadonly: true }
27 Property { name: "statsWelcomeScreen"; type: "bool"; isReadonly: true }
27 Property { name: "statsWelcomeScreen"; type: "bool"; isReadonly: true }
28 Property { name: "passwordDisplayHint"; type: "PasswordDisplayHint"; isReadonly: true }
28 Property { name: "passwordDisplayHint"; type: "PasswordDisplayHint"; isReadonly: true }
29+ Property { name: "failedLogins"; type: "uint" }
29 }
30 }
30}
31}
plugins/Dash/CardAttributes.qml+1−1
@@ -57,7 +57,7 @@ GridLayout {
57 text: "value" in modelData && modelData["value"] || "";
57 text: "value" in modelData && modelData["value"] || "";
58 elide: Text.ElideRight
58 elide: Text.ElideRight
59 maximumLineCount: 1
59 maximumLineCount: 1
60− font.weight: "style" in modelData && modelData["style"] == "highlighted" ? Font.DemiBold : Font.Light
60+ font.weight: "style" in modelData && modelData["style"] === "highlighted" ? Font.Bold : Font.Light
61 fontSize: "small"
61 fontSize: "small"
62 font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale)
62 font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale)
63 color: grid.color
63 color: grid.color
plugins/Dash/CardCreator.js+20−21
@@ -78,16 +78,17 @@ var kArtShapeHolderCode = 'Item { \n\
78 width = root.fixedArtShapeSize.width; \n\
78 width = root.fixedArtShapeSize.width; \n\
79 height = root.fixedArtShapeSize.height; \n\
79 height = root.fixedArtShapeSize.height; \n\
80 } else { \n\
80 } else { \n\
81− width = Qt.binding(function() { return !visible ? 0 : image.width }); \n\
81+ width = Qt.binding(function() { return image.status !== Image.Ready ? 0 : image.width }); \n\
82− height = Qt.binding(function() { return !visible ? 0 : image.height }); \n\
82+ height = Qt.binding(function() { return image.status !== Image.Ready ? 0 : image.height }); \n\
83 } \n\
83 } \n\
84 } \n\
84 } \n\
85− image: Image { \n\
85+ image: CroppedImageMinimumSourceSize { \n\
86 objectName: "artImage"; \n\
86 objectName: "artImage"; \n\
87+ property bool doLoadSource: !NetworkingStatus.limitedBandwith; \n\
87− source: cardData && cardData["art"] || ""; \n\
88+ source: { if (root.visible) doLoadSource = true; return doLoadSource && cardData && cardData["art"] || ""; } \n\
88 cache: true; \n\
89 cache: true; \n\
89 asynchronous: root.asynchronous; \n\
90 asynchronous: root.asynchronous; \n\
90− fillMode: Image.PreserveAspectCrop; \n\
91+ visible: false; \n\
91 width: %2; \n\
92 width: %2; \n\
92 height: %3; \n\
93 height: %3; \n\
93 } \n\
94 } \n\
@@ -190,16 +191,14 @@ var kMascotShapeLoaderCode = 'Loader { \n\
190
191
191// %1 is used as anchors of mascotImage
192// %1 is used as anchors of mascotImage
192// %2 is used as visible of mascotImage
193// %2 is used as visible of mascotImage
193−var kMascotImageCode = 'Image { \n\
194+var kMascotImageCode = 'CroppedImageMinimumSourceSize { \n\
194 id: mascotImage; \n\
195 id: mascotImage; \n\
195 objectName: "mascotImage"; \n\
196 objectName: "mascotImage"; \n\
196 anchors { %1 } \n\
197 anchors { %1 } \n\
197− readonly property int maxSize: Math.max(width, height) * 4; \n\
198+ property bool doLoadSource: !NetworkingStatus.limitedBandwith; \n\
198− source: cardData && cardData["mascot"] || ""; \n\
199+ source: { if (root.visible) doLoadSource = true; return doLoadSource && cardData && cardData["mascot"] || ""; } \n\
199 width: units.gu(6); \n\
200 width: units.gu(6); \n\
200 height: units.gu(5.625); \n\
201 height: units.gu(5.625); \n\
201− sourceSize { width: maxSize; height: maxSize } \n\
202− fillMode: Image.PreserveAspectCrop; \n\
203 horizontalAlignment: Image.AlignHCenter; \n\
202 horizontalAlignment: Image.AlignHCenter; \n\
204 verticalAlignment: Image.AlignVCenter; \n\
203 verticalAlignment: Image.AlignVCenter; \n\
205 visible: %2; \n\
204 visible: %2; \n\
@@ -220,13 +219,13 @@ var kTitleLabelCode = 'Label { \n\
220 color: %2; \n\
219 color: %2; \n\
221 visible: showHeader %3; \n\
220 visible: showHeader %3; \n\
222 text: root.title; \n\
221 text: root.title; \n\
223− font.weight: components && components["subtitle"] ? Font.DemiBold : Font.Normal; \n\
222+ font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal; \n\
224− horizontalAlignment: root.headerAlignment; \n\
223+ horizontalAlignment: root.titleAlignment; \n\
225 }\n';
224 }\n';
226
225
227// %1 is used as extra anchors of emblemIcon
226// %1 is used as extra anchors of emblemIcon
228// %2 is used as color of emblemIcon
227// %2 is used as color of emblemIcon
229−var kEmblemIconCode = 'Icon { \n\
228+var kEmblemIconCode = 'StatusIcon { \n\
230 id: emblemIcon; \n\
229 id: emblemIcon; \n\
231 objectName: "emblemIcon"; \n\
230 objectName: "emblemIcon"; \n\
232 anchors { \n\
231 anchors { \n\
@@ -236,7 +235,6 @@ var kEmblemIconCode = 'Icon { \n\
236 } \n\
235 } \n\
237 source: cardData && cardData["emblem"] || ""; \n\
236 source: cardData && cardData["emblem"] || ""; \n\
238 color: %2; \n\
237 color: %2; \n\
239− width: height; \n\
240 height: source != "" ? titleLabel.font.pixelSize : 0; \n\
238 height: source != "" ? titleLabel.font.pixelSize : 0; \n\
241 }\n';
239 }\n';
242
240
@@ -258,13 +256,12 @@ var kSubtitleLabelCode = 'Label { \n\
258 anchors { %1 } \n\
256 anchors { %1 } \n\
259 anchors.topMargin: units.dp(2); \n\
257 anchors.topMargin: units.dp(2); \n\
260 elide: Text.ElideRight; \n\
258 elide: Text.ElideRight; \n\
261− fontSize: "small"; \n\
259+ fontSize: "x-small"; \n\
262 font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale); \n\
260 font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale); \n\
263 color: %2; \n\
261 color: %2; \n\
264 visible: titleLabel.visible && titleLabel.text; \n\
262 visible: titleLabel.visible && titleLabel.text; \n\
265 text: cardData && cardData["subtitle"] || ""; \n\
263 text: cardData && cardData["subtitle"] || ""; \n\
266 font.weight: Font.Light; \n\
264 font.weight: Font.Light; \n\
267− horizontalAlignment: root.headerAlignment; \n\
268 }\n';
265 }\n';
269
266
270// %1 is used as anchors of attributesRow
267// %1 is used as anchors of attributesRow
@@ -310,7 +307,7 @@ function cardString(template, components) {
310 property var artShapeBorderSource: undefined; \n\
307 property var artShapeBorderSource: undefined; \n\
311 property real fontScale: 1.0; \n\
308 property real fontScale: 1.0; \n\
312 property var scopeStyle: null; \n\
309 property var scopeStyle: null; \n\
313− property int headerAlignment: Text.AlignLeft; \n\
310+ property int titleAlignment: Text.AlignLeft; \n\
314 property int fixedHeaderHeight: -1; \n\
311 property int fixedHeaderHeight: -1; \n\
315 property size fixedArtShapeSize: Qt.size(-1, -1); \n\
312 property size fixedArtShapeSize: Qt.size(-1, -1); \n\
316 readonly property string title: cardData && cardData["title"] || ""; \n\
313 readonly property string title: cardData && cardData["title"] || ""; \n\
@@ -436,18 +433,18 @@ function cardString(template, components) {
436 mascotShapeCode = kMascotShapeLoaderCode.arg(mascotAnchors);
433 mascotShapeCode = kMascotShapeLoaderCode.arg(mascotAnchors);
437 }
434 }
438
435
439− var mascotImageVisible = useMascotShape ? 'false' : 'showHeader';
436+ var mascotImageVisible = useMascotShape ? 'false' : 'showHeader && resized';
440 mascotCode = kMascotImageCode.arg(mascotAnchors).arg(mascotImageVisible);
437 mascotCode = kMascotImageCode.arg(mascotAnchors).arg(mascotImageVisible);
441 }
438 }
442
439
443− var summaryColorWithBackground = 'backgroundLoader.active && backgroundLoader.item && root.scopeStyle ? root.scopeStyle.getTextColor(backgroundLoader.item.luminance) : (backgroundLoader.item.luminance > 0.7 ? Theme.palette.normal.baseText : "white")';
440+ var summaryColorWithBackground = 'backgroundLoader.active && backgroundLoader.item && root.scopeStyle ? root.scopeStyle.getTextColor(backgroundLoader.item.luminance) : (backgroundLoader.item && backgroundLoader.item.luminance > 0.7 ? Theme.palette.normal.baseText : "white")';
444
441
445 var hasTitleContainer = hasTitle && (hasEmblem || (hasMascot && (hasSubtitle || hasAttributes)));
442 var hasTitleContainer = hasTitle && (hasEmblem || (hasMascot && (hasSubtitle || hasAttributes)));
446 var titleSubtitleCode = '';
443 var titleSubtitleCode = '';
447 if (hasTitle) {
444 if (hasTitle) {
448 var titleColor;
445 var titleColor;
449 if (headerAsOverlay) {
446 if (headerAsOverlay) {
450− titleColor = 'root.scopeStyle ? root.scopeStyle.getTextColor(overlayLoader.item.luminance) : (overlayLoader.item.luminance > 0.7 ? Theme.palette.normal.baseText : "white")';
447+ titleColor = 'root.scopeStyle && overlayLoader.item ? root.scopeStyle.getTextColor(overlayLoader.item.luminance) : (overlayLoader.item && overlayLoader.item.luminance > 0.7 ? Theme.palette.normal.baseText : "white")';
451 } else if (hasSummary) {
448 } else if (hasSummary) {
452 titleColor = 'summary.color';
449 titleColor = 'summary.color';
453 } else if (hasBackground) {
450 } else if (hasBackground) {
@@ -627,7 +624,7 @@ function cardString(template, components) {
627
624
628 var implicitHeight = 'implicitHeight: ';
625 var implicitHeight = 'implicitHeight: ';
629 if (hasSummary) {
626 if (hasSummary) {
630− implicitHeight += 'summary.y + summary.height + (summary.text ? units.gu(1) : 0);\n';
627+ implicitHeight += 'summary.y + summary.height + units.gu(1);\n';
631 } else if (hasHeaderRow) {
628 } else if (hasHeaderRow) {
632 implicitHeight += 'row.y + row.height + units.gu(1);\n';
629 implicitHeight += 'row.y + row.height + units.gu(1);\n';
633 } else if (hasMascot) {
630 } else if (hasMascot) {
@@ -655,6 +652,8 @@ function cardString(template, components) {
655function createCardComponent(parent, template, components) {
652function createCardComponent(parent, template, components) {
656 var imports = 'import QtQuick 2.2; \n\
653 var imports = 'import QtQuick 2.2; \n\
657 import Ubuntu.Components 1.1; \n\
654 import Ubuntu.Components 1.1; \n\
655+ import Ubuntu.Settings.Components 0.1; \n\
656+ import Ubuntu.Connectivity 1.0; \n\
658 import Dash 0.1;\n\
657 import Dash 0.1;\n\
659 import Utils 0.1;\n';
658 import Utils 0.1;\n';
660 var card = cardString(template, components);
659 var card = cardString(template, components);
plugins/Dash/CroppedImageMinimumSourceSize.qmlnew file+38
@@ -0,0 +1,38 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.3
18+
19+Image {
20+ property bool resized: false
21+ property bool resizing: false
22+ fillMode: Image.PreserveAspectCrop
23+ visible: resized
24+ onSourceSizeChanged: {
25+ if (!resized && !resizing) {
26+ resizing = true;
27+ var ar = width / height;
28+ var ssar = sourceSize.width / sourceSize.height;
29+ if (ar > ssar) {
30+ sourceSize = Qt.size(width, 0);
31+ } else {
32+ sourceSize = Qt.size(0, height);
33+ }
34+ resizing = false;
35+ resized = true;
36+ }
37+ }
38+}
plugins/Dash/listviewwithpageheader.cpp+37−13
@@ -104,8 +104,6 @@
104#pragma GCC diagnostic pop
104#pragma GCC diagnostic pop
105// #include <private/qquickrectangle_p.h>
105// #include <private/qquickrectangle_p.h>
106
106
107−static const qreal bufferRatio = 0.5;
108−
109qreal ListViewWithPageHeader::ListItem::height() const
107qreal ListViewWithPageHeader::ListItem::height() const
110{
108{
111 return m_item->height() + (m_sectionItem ? m_sectionItem->height() : 0);
109 return m_item->height() + (m_sectionItem ? m_sectionItem->height() : 0);
@@ -158,6 +156,7 @@ ListViewWithPageHeader::ListViewWithPageHeader()
158 , m_forceNoClip(false)
156 , m_forceNoClip(false)
159 , m_inLayout(false)
157 , m_inLayout(false)
160 , m_inContentHeightKeepHeaderShown(false)
158 , m_inContentHeightKeepHeaderShown(false)
159+ , m_cacheBuffer(0)
161{
160{
162 m_clipItem = new QQuickItem(contentItem());
161 m_clipItem = new QQuickItem(contentItem());
163// m_clipItem = new QQuickRectangle(contentItem());
162// m_clipItem = new QQuickRectangle(contentItem());
@@ -172,7 +171,7 @@ ListViewWithPageHeader::ListViewWithPageHeader()
172 connect(this, SIGNAL(contentWidthChanged()), this, SLOT(onContentWidthChanged()));
171 connect(this, SIGNAL(contentWidthChanged()), this, SLOT(onContentWidthChanged()));
173 connect(this, SIGNAL(contentHeightChanged()), this, SLOT(onContentHeightChanged()));
172 connect(this, SIGNAL(contentHeightChanged()), this, SLOT(onContentHeightChanged()));
174 connect(this, SIGNAL(heightChanged()), this, SLOT(onHeightChanged()));
173 connect(this, SIGNAL(heightChanged()), this, SLOT(onHeightChanged()));
175− connect(m_contentYAnimation, SIGNAL(stopped()), this, SLOT(onShowHeaderAnimationFinished()));
174+ connect(m_contentYAnimation, SIGNAL(runningChanged(bool)), this, SLOT(contentYAnimationRunningChanged(bool)));
176
175
177 setFlickableDirection(VerticalFlick);
176 setFlickableDirection(VerticalFlick);
178}
177}
@@ -335,6 +334,20 @@ qreal ListViewWithPageHeader::headerItemShownHeight() const
335 return m_headerItemShownHeight;
334 return m_headerItemShownHeight;
336}
335}
337
336
337+qreal ListViewWithPageHeader::cacheBuffer() const
338+{
339+ return m_cacheBuffer;
340+}
341+
342+void ListViewWithPageHeader::setCacheBuffer(qreal cacheBuffer)
343+{
344+ if (cacheBuffer != m_cacheBuffer) {
345+ m_cacheBuffer = cacheBuffer;
346+ Q_EMIT cacheBufferChanged();
347+ polish();
348+ }
349+}
350+
338void ListViewWithPageHeader::positionAtBeginning()
351void ListViewWithPageHeader::positionAtBeginning()
339{
352{
340 if (m_delegateModel->count() <= 0)
353 if (m_delegateModel->count() <= 0)
@@ -356,8 +369,7 @@ void ListViewWithPageHeader::positionAtBeginning()
356 // Create the subsequent items
369 // Create the subsequent items
357 int modelIndex = 1;
370 int modelIndex = 1;
358 qreal pos = item->y() + item->height();
371 qreal pos = item->y() + item->height();
359− const qreal buffer = height() * bufferRatio;
360− const qreal bufferTo = height() + buffer;
372+ const qreal bufferTo = height() + m_cacheBuffer;
361 while (modelIndex < m_delegateModel->count() && pos <= bufferTo) {
373 while (modelIndex < m_delegateModel->count() && pos <= bufferTo) {
362 if (!(item = createItem(modelIndex, false)))
374 if (!(item = createItem(modelIndex, false)))
363 break;
375 break;
@@ -409,6 +421,16 @@ void ListViewWithPageHeader::showHeader()
409 }
421 }
410}
422}
411
423
424+int ListViewWithPageHeader::firstCreatedIndex() const
425+{
426+ return m_firstVisibleIndex;
427+}
428+
429+int ListViewWithPageHeader::createdItemCount() const
430+{
431+ return m_visibleItems.count();
432+}
433+
412QQuickItem *ListViewWithPageHeader::item(int modelIndex) const
434QQuickItem *ListViewWithPageHeader::item(int modelIndex) const
413{
435{
414 ListItem *item = itemAtIndex(modelIndex);
436 ListItem *item = itemAtIndex(modelIndex);
@@ -520,7 +542,7 @@ void ListViewWithPageHeader::adjustHeader(qreal diff)
520 // (but the header was not shown by it's own position)
542 // (but the header was not shown by it's own position)
521 // or the header is partially shown and we are not doing a maximizeVisibleArea either
543 // or the header is partially shown and we are not doing a maximizeVisibleArea either
522 const bool scrolledUp = m_previousContentY > contentY();
544 const bool scrolledUp = m_previousContentY > contentY();
523− const bool notRebounding = contentY() + height() < contentHeight();
545+ const bool notRebounding = qRound(contentY() + height()) < qRound(contentHeight());
524 const bool notShownByItsOwn = contentY() + diff >= m_headerItem->y() + m_headerItem->height();
546 const bool notShownByItsOwn = contentY() + diff >= m_headerItem->y() + m_headerItem->height();
525 const bool maximizeVisibleAreaRunning = m_contentYAnimation->isRunning() && contentYAnimationType == ContentYAnimationMaximizeVisibleArea;
547 const bool maximizeVisibleAreaRunning = m_contentYAnimation->isRunning() && contentYAnimationType == ContentYAnimationMaximizeVisibleArea;
526
548
@@ -593,11 +615,10 @@ void ListViewWithPageHeader::refill()
593 return;
615 return;
594 }
616 }
595
617
596− const qreal buffer = height() * bufferRatio;
597 const qreal from = contentY();
618 const qreal from = contentY();
598 const qreal to = from + height();
619 const qreal to = from + height();
599− const qreal bufferFrom = from - buffer;
620+ const qreal bufferFrom = from - m_cacheBuffer;
600− const qreal bufferTo = to + buffer;
621+ const qreal bufferTo = to + m_cacheBuffer;
601
622
602 bool added = addVisibleItems(from, to, false);
623 bool added = addVisibleItems(from, to, false);
603 bool removed = removeNonVisibleItems(bufferFrom, bufferTo);
624 bool removed = removeNonVisibleItems(bufferFrom, bufferTo);
@@ -830,7 +851,7 @@ ListViewWithPageHeader::ListItem *ListViewWithPageHeader::createItem(int modelIn
830 if (nextItem) {
851 if (nextItem) {
831 listItem->setY(nextItem->y() - listItem->height());
852 listItem->setY(nextItem->y() - listItem->height());
832 } else if (modelIndex == 0) {
853 } else if (modelIndex == 0) {
833− listItem->setY(m_headerItem ? m_headerItem->height() : 0);
854+ listItem->setY(-m_clipItem->y() + (m_headerItem ? m_headerItem->height() : 0));
834 } else if (!m_visibleItems.isEmpty()) {
855 } else if (!m_visibleItems.isEmpty()) {
835 lostItem = true;
856 lostItem = true;
836 }
857 }
@@ -1056,10 +1077,13 @@ void ListViewWithPageHeader::onModelUpdated(const QQmlChangeSet &changeSet, bool
1056 m_contentHeightDirty = true;
1077 m_contentHeightDirty = true;
1057}
1078}
1058
1079
1059−void ListViewWithPageHeader::onShowHeaderAnimationFinished()
1080+void ListViewWithPageHeader::contentYAnimationRunningChanged(bool running)
1060{
1081{
1082+ setInteractive(!running);
1083+ if (!running) {
1061− m_contentHeightDirty = true;
1084+ m_contentHeightDirty = true;
1062− polish();
1085+ polish();
1086+ }
1063}
1087}
1064
1088
1065void ListViewWithPageHeader::itemGeometryChanged(QQuickItem * /*item*/, const QRectF &newGeometry, const QRectF &oldGeometry)
1089void ListViewWithPageHeader::itemGeometryChanged(QQuickItem * /*item*/, const QRectF &newGeometry, const QRectF &oldGeometry)
plugins/Dash/listviewwithpageheader.h+9−1
@@ -54,6 +54,7 @@ class ListViewWithPageHeader : public QQuickFlickable, public QQuickItemChangeLi
54 Q_PROPERTY(bool forceNoClip READ forceNoClip WRITE setForceNoClip NOTIFY forceNoClipChanged)
54 Q_PROPERTY(bool forceNoClip READ forceNoClip WRITE setForceNoClip NOTIFY forceNoClipChanged)
55 Q_PROPERTY(int stickyHeaderHeight READ stickyHeaderHeight NOTIFY stickyHeaderHeightChanged)
55 Q_PROPERTY(int stickyHeaderHeight READ stickyHeaderHeight NOTIFY stickyHeaderHeightChanged)
56 Q_PROPERTY(qreal headerItemShownHeight READ headerItemShownHeight NOTIFY headerItemShownHeightChanged)
56 Q_PROPERTY(qreal headerItemShownHeight READ headerItemShownHeight NOTIFY headerItemShownHeightChanged)
57+ Q_PROPERTY(qreal cacheBuffer READ cacheBuffer WRITE setCacheBuffer NOTIFY cacheBufferChanged)
57
58
58 friend class ListViewWithPageHeaderTest;
59 friend class ListViewWithPageHeaderTest;
59 friend class ListViewWithPageHeaderTestSection;
60 friend class ListViewWithPageHeaderTestSection;
@@ -84,8 +85,13 @@ public:
84 int stickyHeaderHeight() const;
85 int stickyHeaderHeight() const;
85 qreal headerItemShownHeight() const;
86 qreal headerItemShownHeight() const;
86
87
88+ qreal cacheBuffer() const;
89+ void setCacheBuffer(qreal cacheBuffer);
90+
87 Q_INVOKABLE void positionAtBeginning();
91 Q_INVOKABLE void positionAtBeginning();
88 Q_INVOKABLE void showHeader();
92 Q_INVOKABLE void showHeader();
93+ Q_INVOKABLE int firstCreatedIndex() const;
94+ Q_INVOKABLE int createdItemCount() const;
89 Q_INVOKABLE QQuickItem *item(int modelIndex) const;
95 Q_INVOKABLE QQuickItem *item(int modelIndex) const;
90
96
91 // The index has to be created for this to try to do something
97 // The index has to be created for this to try to do something
@@ -103,6 +109,7 @@ Q_SIGNALS:
103 void forceNoClipChanged();
109 void forceNoClipChanged();
104 void stickyHeaderHeightChanged();
110 void stickyHeaderHeightChanged();
105 void headerItemShownHeightChanged();
111 void headerItemShownHeightChanged();
112+ void cacheBufferChanged();
106
113
107protected:
114protected:
108 void componentComplete() override;
115 void componentComplete() override;
@@ -118,7 +125,7 @@ private Q_SLOTS:
118 void onContentWidthChanged();
125 void onContentWidthChanged();
119 void onHeightChanged();
126 void onHeightChanged();
120 void onModelUpdated(const QQmlChangeSet &changeSet, bool reset);
127 void onModelUpdated(const QQmlChangeSet &changeSet, bool reset);
121− void onShowHeaderAnimationFinished();
128+ void contentYAnimationRunningChanged(bool running);
122
129
123private:
130private:
124 class ListItem
131 class ListItem
@@ -197,6 +204,7 @@ private:
197 bool m_forceNoClip;
204 bool m_forceNoClip;
198 bool m_inLayout;
205 bool m_inLayout;
199 bool m_inContentHeightKeepHeaderShown;
206 bool m_inContentHeightKeepHeaderShown;
207+ qreal m_cacheBuffer;
200
208
201 // Qt 5.0 doesn't like releasing the items just after itemCreated
209 // Qt 5.0 doesn't like releasing the items just after itemCreated
202 // so we delay the releasing until the next updatePolish
210 // so we delay the releasing until the next updatePolish
plugins/Dash/qmldir+2−1
@@ -3,4 +3,5 @@ plugin Dash-qml
3typeinfo Dash.qmltypes
3typeinfo Dash.qmltypes
4singleton CardCreatorCache 0.1 CardCreatorCache.qml
4singleton CardCreatorCache 0.1 CardCreatorCache.qml
5ScopeStyle 0.1 ScopeStyle.qml
5ScopeStyle 0.1 ScopeStyle.qml
6−CardAttributes 0.1 CardAttributes.qml
6+CardAttributes 0.1 CardAttributes.qml
7+CroppedImageMinimumSourceSize 0.1 CroppedImageMinimumSourceSize.qml
plugins/LightDM/DBusGreeter.cpp+5
@@ -39,6 +39,11 @@ void DBusGreeter::ShowGreeter()
39 return Q_EMIT m_greeter->showGreeter();
39 return Q_EMIT m_greeter->showGreeter();
40}
40}
41
41
42+void DBusGreeter::HideGreeter()
43+{
44+ return Q_EMIT m_greeter->hideGreeter();
45+}
46+
42void DBusGreeter::isActiveChangedHandler()
47void DBusGreeter::isActiveChangedHandler()
43{
48{
44 notifyPropertyChanged("IsActive", isActive());
49 notifyPropertyChanged("IsActive", isActive());
plugins/LightDM/DBusGreeter.h+1−1
@@ -21,7 +21,6 @@
21#include <QObject>
21#include <QObject>
22
22
23class Greeter;
23class Greeter;
24−class QDBusInterface;
25
24
26/** This is an internal class used to talk with the indicators.
25/** This is an internal class used to talk with the indicators.
27 */
26 */
@@ -38,6 +37,7 @@ public:
38
37
39 bool isActive() const;
38 bool isActive() const;
40 Q_SCRIPTABLE void ShowGreeter(); // temporary, until we split the greeter again
39 Q_SCRIPTABLE void ShowGreeter(); // temporary, until we split the greeter again
40+ Q_SCRIPTABLE void HideGreeter(); // temporary, until we split the greeter again
41
41
42Q_SIGNALS:
42Q_SIGNALS:
43 void isActiveChanged();
43 void isActiveChanged();
plugins/LightDM/DBusGreeterList.h−1
@@ -21,7 +21,6 @@
21#include <QObject>
21#include <QObject>
22
22
23class Greeter;
23class Greeter;
24−class QDBusInterface;
25
24
26/** This is an internal class used to talk with the indicators.
25/** This is an internal class used to talk with the indicators.
27 */
26 */
plugins/LightDM/Greeter.h+1
@@ -62,6 +62,7 @@ Q_SIGNALS:
62 void isAuthenticatedChanged();
62 void isAuthenticatedChanged();
63 void promptlessChanged();
63 void promptlessChanged();
64 void showGreeter();
64 void showGreeter();
65+ void hideGreeter();
65
66
66 // This signal is emitted by external agents like indicators, and the UI
67 // This signal is emitted by external agents like indicators, and the UI
67 // should switch to this user if possible.
68 // should switch to this user if possible.
plugins/LightDM/LightDM.qmltypes+2
@@ -27,6 +27,7 @@ Module {
27 name: "showPrompt"
27 name: "showPrompt"
28 Parameter { name: "text"; type: "string" }
28 Parameter { name: "text"; type: "string" }
29 Parameter { name: "isSecret"; type: "bool" }
29 Parameter { name: "isSecret"; type: "bool" }
30+ Parameter { name: "isDefaultPrompt"; type: "bool" }
30 }
31 }
31 Signal { name: "authenticationComplete" }
32 Signal { name: "authenticationComplete" }
32 Signal {
33 Signal {
@@ -34,6 +35,7 @@ Module {
34 Parameter { name: "user"; type: "string" }
35 Parameter { name: "user"; type: "string" }
35 }
36 }
36 Signal { name: "isActiveChanged" }
37 Signal { name: "isActiveChanged" }
38+ Signal { name: "isAuthenticatedChanged" }
37 Signal { name: "showGreeter" }
39 Signal { name: "showGreeter" }
38 Signal {
40 Signal {
39 name: "requestAuthenticationUser"
41 name: "requestAuthenticationUser"
plugins/Lights/Lights.cpp+1−2
@@ -20,8 +20,7 @@
20#include <QtCore/QDebug>
20#include <QtCore/QDebug>
21
21
22extern "C" {
22extern "C" {
23−#include <hardware/hardware.h>
24−#include <hardware/lights.h>
23+#include "android-hardware.h"
25#include <string.h>
24#include <string.h>
26}
25}
27
26
plugins/Lights/android-hardware.hnew file+23
@@ -0,0 +1,23 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ *
16+ */
17+
18+// The purpose of this header wrapper is just to avoid having warnings being reported on
19+// code from external header files, as we can't do anything about them.
20+#pragma GCC system_header
21+
22+#include <hardware/hardware.h>
23+#include <hardware/lights.h>
plugins/Powerd/Powerd.cpp+16−2
@@ -39,7 +39,8 @@ void dimTimeoutChanged(GSettings *settings, const gchar *key, QDBusInterface *un
39
39
40Powerd::Powerd(QObject* parent)
40Powerd::Powerd(QObject* parent)
41 : QObject(parent),
41 : QObject(parent),
42− unityScreen(nullptr)
42+ unityScreen(nullptr),
43+ cachedStatus(Status::On)
43{
44{
44 unityScreen = new QDBusInterface("com.canonical.Unity.Screen",
45 unityScreen = new QDBusInterface("com.canonical.Unity.Screen",
45 "/com/canonical/Unity/Screen",
46 "/com/canonical/Unity/Screen",
@@ -51,7 +52,7 @@ Powerd::Powerd(QObject* parent)
51 "com.canonical.Unity.Screen",
52 "com.canonical.Unity.Screen",
52 "DisplayPowerStateChange",
53 "DisplayPowerStateChange",
53 this,
54 this,
54− SIGNAL(displayPowerStateChange(int, int)));
55+ SLOT(handleDisplayPowerStateChange(int, int)));
55
56
56 systemSettings = g_settings_new("com.ubuntu.touch.system");
57 systemSettings = g_settings_new("com.ubuntu.touch.system");
57 g_signal_connect(systemSettings, "changed::auto-brightness", G_CALLBACK(autoBrightnessChanged), unityScreen);
58 g_signal_connect(systemSettings, "changed::auto-brightness", G_CALLBACK(autoBrightnessChanged), unityScreen);
@@ -67,3 +68,16 @@ Powerd::~Powerd()
67 g_signal_handlers_disconnect_by_data(systemSettings, unityScreen);
68 g_signal_handlers_disconnect_by_data(systemSettings, unityScreen);
68 g_object_unref(systemSettings);
69 g_object_unref(systemSettings);
69}
70}
71+
72+Powerd::Status Powerd::status() const
73+{
74+ return cachedStatus;
75+}
76+
77+void Powerd::handleDisplayPowerStateChange(int status, int reason)
78+{
79+ if (cachedStatus != (Status)status) {
80+ cachedStatus = (Status)status;
81+ Q_EMIT statusChanged((DisplayStateChangeReason)reason);
82+ }
83+}
plugins/Powerd/Powerd.h+8−1
@@ -29,6 +29,7 @@ class Powerd: public QObject
29 Q_OBJECT
29 Q_OBJECT
30 Q_ENUMS(Status)
30 Q_ENUMS(Status)
31 Q_ENUMS(DisplayStateChangeReason)
31 Q_ENUMS(DisplayStateChangeReason)
32+ Q_PROPERTY(Status status READ status NOTIFY statusChanged)
32
33
33public:
34public:
34 enum DisplayStateChangeReason {
35 enum DisplayStateChangeReason {
@@ -46,12 +47,18 @@ public:
46 explicit Powerd(QObject *parent = 0);
47 explicit Powerd(QObject *parent = 0);
47 ~Powerd();
48 ~Powerd();
48
49
50+ Status status() const;
51+
49Q_SIGNALS:
52Q_SIGNALS:
50− void displayPowerStateChange(int status, int reason);
53+ void statusChanged(DisplayStateChangeReason reason);
54+
55+private Q_SLOTS:
56+ void handleDisplayPowerStateChange(int status, int reason);
51
57
52private:
58private:
53 QDBusInterface *unityScreen;
59 QDBusInterface *unityScreen;
54 GSettings *systemSettings;
60 GSettings *systemSettings;
61+ Status cachedStatus;
55};
62};
56
63
57#endif
64#endif
plugins/Powerd/Powerd.qmltypes+3−3
@@ -30,10 +30,10 @@ Module {
30 "On": 1
30 "On": 1
31 }
31 }
32 }
32 }
33+ Property { name: "status"; type: "Status"; isReadonly: true }
33 Signal {
34 Signal {
34− name: "displayPowerStateChange"
35+ name: "statusChanged"
35− Parameter { name: "status"; type: "int" }
36− Parameter { name: "reason"; type: "int" }
36+ Parameter { name: "reason"; type: "DisplayStateChangeReason" }
37 }
37 }
38 }
38 }
39}
39}
plugins/Ubuntu/Gestures/AxisVelocityCalculator.h+2−2
@@ -21,7 +21,7 @@
21#ifndef VELOCITY_CALCULATOR_H
21#ifndef VELOCITY_CALCULATOR_H
22#define VELOCITY_CALCULATOR_H
22#define VELOCITY_CALCULATOR_H
23
23
24−#include "UbuntuGesturesGlobal.h"
24+#include "UbuntuGesturesQmlGlobal.h"
25#include <stdint.h>
25#include <stdint.h>
26#include <QtCore/QObject>
26#include <QtCore/QObject>
27#include "TimeSource.h"
27#include "TimeSource.h"
@@ -49,7 +49,7 @@
49 }
49 }
50 }
50 }
51 */
51 */
52−class UBUNTUGESTURES_EXPORT AxisVelocityCalculator : public QObject
52+class UBUNTUGESTURESQML_EXPORT AxisVelocityCalculator : public QObject
53{
53{
54 Q_OBJECT
54 Q_OBJECT
55
55
plugins/Ubuntu/Gestures/CMakeLists.txt+24−5
@@ -1,19 +1,38 @@
1−set(UbuntuGestureQml_SOURCES
1+# in order to include Qt's private headers
2+remove_definitions(-DQT_NO_KEYWORDS)
3+
4+set(UbuntuGesturesQml_SOURCES
2 plugin.cpp
5 plugin.cpp
3 AxisVelocityCalculator.cpp
6 AxisVelocityCalculator.cpp
4 Direction.cpp
7 Direction.cpp
5 DirectionalDragArea.cpp
8 DirectionalDragArea.cpp
6 PressedOutsideNotifier.cpp
9 PressedOutsideNotifier.cpp
7 TimeSource.cpp
10 TimeSource.cpp
11+ TouchGate.cpp
8)
12)
9
13
10−add_definitions(-DUBUNTUGESTURES_LIBRARY)
14+add_definitions(-DUBUNTUGESTURESQML_LIBRARY)
11
15
12−add_library(UbuntuGestureQml MODULE ${UbuntuGestureQml_SOURCES})
16+add_library(UbuntuGesturesQml MODULE ${UbuntuGesturesQml_SOURCES})
17+target_link_libraries(UbuntuGesturesQml UbuntuGestures)
13
18
14−qt5_use_modules(UbuntuGestureQml Core Quick)
19+qt5_use_modules(UbuntuGesturesQml Core Quick)
15
20
16# So that Foo.cpp can #include "Foo.moc"
21# So that Foo.cpp can #include "Foo.moc"
17include_directories(${CMAKE_CURRENT_BINARY_DIR})
22include_directories(${CMAKE_CURRENT_BINARY_DIR})
18
23
24+include_directories(${CMAKE_SOURCE_DIR}/libs/UbuntuGestures)
25+
26+# There's no cmake var for v8 include path :-/ so create one
27+LIST(GET Qt5Core_INCLUDE_DIRS 0 QtCoreDir0)
28+SET(Qt5V8_PRIVATE_INCLUDE_DIR ${QtCoreDir0}/QtV8/${Qt5Core_VERSION_STRING}/QtV8)
29+
30+# DANGER! DANGER! Using Qt's private API!
31+include_directories(
32+ ${Qt5Qml_PRIVATE_INCLUDE_DIRS}
33+ ${Qt5Quick_INCLUDE_DIRS}
34+ ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
35+ ${Qt5V8_PRIVATE_INCLUDE_DIR}
36+)
37+
19−add_unity8_plugin(Ubuntu.Gestures 0.1 Ubuntu/Gestures TARGETS UbuntuGestureQml)
38+add_unity8_plugin(Ubuntu.Gestures 0.1 Ubuntu/Gestures TARGETS UbuntuGesturesQml)
plugins/Ubuntu/Gestures/Direction.h+2−2
@@ -17,14 +17,14 @@
17#ifndef DIRECTION_H
17#ifndef DIRECTION_H
18#define DIRECTION_H
18#define DIRECTION_H
19
19
20−#include "UbuntuGesturesGlobal.h"
20+#include "UbuntuGesturesQmlGlobal.h"
21#include <QObject>
21#include <QObject>
22
22
23/*
23/*
24 A Direction enum wrapper so that we can do things like "direction: Direction.Righwards"
24 A Direction enum wrapper so that we can do things like "direction: Direction.Righwards"
25 from QML.
25 from QML.
26 */
26 */
27−class UBUNTUGESTURES_EXPORT Direction : public QObject {
27+class UBUNTUGESTURESQML_EXPORT Direction : public QObject {
28 Q_OBJECT
28 Q_OBJECT
29 Q_ENUMS(Type)
29 Q_ENUMS(Type)
30
30
plugins/Ubuntu/Gestures/DirectionalDragArea.cpp+317−191
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013-2014 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
@@ -14,64 +14,32 @@
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
15 */
16
16
17+#define ACTIVETOUCHESINFO_DEBUG 0
18+#define DIRECTIONALDRAGAREA_DEBUG 0
19+
17#include "DirectionalDragArea.h"
20#include "DirectionalDragArea.h"
18
21
22+#include <QQuickWindow>
19#include <QtCore/qmath.h>
23#include <QtCore/qmath.h>
20−#include <QtCore/QTimer>
21#include <QDebug>
24#include <QDebug>
22
25
23−using namespace UbuntuGestures;
26+#pragma GCC diagnostic push
27+#pragma GCC diagnostic ignored "-pedantic"
28+#include <private/qquickwindow_p.h>
29+#pragma GCC diagnostic pop
24
30
25−#define DIRECTIONALDRAGAREA_DEBUG 0
31+// local
32+#include "TouchOwnershipEvent.h"
33+#include "TouchRegistry.h"
34+#include "UnownedTouchEvent.h"
35+
36+using namespace UbuntuGestures;
26
37
27#if DIRECTIONALDRAGAREA_DEBUG
38#if DIRECTIONALDRAGAREA_DEBUG
28#define DDA_DEBUG(msg) qDebug("[DDA] " msg)
39#define DDA_DEBUG(msg) qDebug("[DDA] " msg)
29−namespace {
40+#include "DebugHelpers.h"
30−QString touchPointStateToString(Qt::TouchPointState state) {
31− switch (state) {
32− case Qt::TouchPointPressed:
33− return QString("pressed");
34− case Qt::TouchPointMoved:
35− return QString("moved");
36− case Qt::TouchPointStationary:
37− return QString("stationary");
38− default: // Qt::TouchPointReleased:
39− return QString("released");
40− }
41−}
42−QString touchEventToString(QTouchEvent *ev)
43−{
44− QString message;
45−
46− switch (ev->type()) {
47− case QEvent::TouchBegin:
48− message.append("TouchBegin ");
49− break;
50− case QEvent::TouchUpdate:
51− message.append("TouchUpdate ");
52− break;
53− case QEvent::TouchEnd:
54− message.append("TouchEnd ");
55− break;
56− default: //QEvent::TouchCancel
57− message.append("TouchCancel ");
58− }
59−
60− for (int i=0; i < ev->touchPoints().size(); ++i) {
61−
62− const QTouchEvent::TouchPoint& touchPoint = ev->touchPoints().at(i);
63− message.append(
64− QString("(id:%1, state:%2, scenePos:(%3,%4)) ")
65− .arg(touchPoint.id())
66− .arg(touchPointStateToString(touchPoint.state()))
67− .arg(touchPoint.scenePos().x())
68− .arg(touchPoint.scenePos().y())
69− );
70− }
71−
72− return message;
73−}
74
41
42+namespace {
75const char *statusToString(DirectionalDragArea::Status status)
43const char *statusToString(DirectionalDragArea::Status status)
76{
44{
77 if (status == DirectionalDragArea::WaitingForTouch) {
45 if (status == DirectionalDragArea::WaitingForTouch) {
@@ -88,23 +56,6 @@ const char *statusToString(DirectionalDragArea::Status status)
88#define DDA_DEBUG(msg) do{}while(0)
56#define DDA_DEBUG(msg) do{}while(0)
89#endif // DIRECTIONALDRAGAREA_DEBUG
57#endif // DIRECTIONALDRAGAREA_DEBUG
90
58
91−// Essentially a QTimer wrapper
92−class RecognitionTimer : public UbuntuGestures::AbstractTimer
93−{
94− Q_OBJECT
95−public:
96− RecognitionTimer(QObject *parent) : UbuntuGestures::AbstractTimer(parent) {
97− m_timer.setSingleShot(false);
98− connect(&m_timer, &QTimer::timeout,
99− this, &UbuntuGestures::AbstractTimer::timeout);
100− }
101− virtual int interval() const { return m_timer.interval(); }
102− virtual void setInterval(int msecs) { m_timer.setInterval(msecs); }
103− virtual void start() { m_timer.start(); UbuntuGestures::AbstractTimer::start(); }
104− virtual void stop() { m_timer.stop(); UbuntuGestures::AbstractTimer::stop(); }
105−private:
106− QTimer m_timer;
107−};
108
59
109DirectionalDragArea::DirectionalDragArea(QQuickItem *parent)
60DirectionalDragArea::DirectionalDragArea(QQuickItem *parent)
110 : QQuickItem(parent)
61 : QQuickItem(parent)
@@ -126,12 +77,14 @@ DirectionalDragArea::DirectionalDragArea(QQuickItem *parent)
126 , m_timeSource(new RealTimeSource)
77 , m_timeSource(new RealTimeSource)
127 , m_activeTouches(m_timeSource)
78 , m_activeTouches(m_timeSource)
128{
79{
129− setRecognitionTimer(new RecognitionTimer(this));
80+ setRecognitionTimer(new Timer(this));
130 m_recognitionTimer->setInterval(60);
81 m_recognitionTimer->setInterval(60);
82+ m_recognitionTimer->setSingleShot(false);
131
83
132 m_velocityCalculator = new AxisVelocityCalculator(this);
84 m_velocityCalculator = new AxisVelocityCalculator(this);
133
85
134− connect(this, &QQuickItem::enabledChanged, this, &DirectionalDragArea::onEnabledChanged);
86+ connect(this, &QQuickItem::enabledChanged, this, &DirectionalDragArea::giveUpIfDisabledOrInvisible);
87+ connect(this, &QQuickItem::visibleChanged, this, &DirectionalDragArea::giveUpIfDisabledOrInvisible);
135}
88}
136
89
137Direction::Type DirectionalDragArea::direction() const
90Direction::Type DirectionalDragArea::direction() const
@@ -214,6 +167,7 @@ void DirectionalDragArea::setRecognitionTimer(UbuntuGestures::AbstractTimer *tim
214{
167{
215 int interval = 0;
168 int interval = 0;
216 bool timerWasRunning = false;
169 bool timerWasRunning = false;
170+ bool wasSingleShot = false;
217
171
218 // can be null when called from the constructor
172 // can be null when called from the constructor
219 if (m_recognitionTimer) {
173 if (m_recognitionTimer) {
@@ -226,6 +180,7 @@ void DirectionalDragArea::setRecognitionTimer(UbuntuGestures::AbstractTimer *tim
226
180
227 m_recognitionTimer = timer;
181 m_recognitionTimer = timer;
228 timer->setInterval(interval);
182 timer->setInterval(interval);
183+ timer->setSingleShot(wasSingleShot);
229 connect(timer, &UbuntuGestures::AbstractTimer::timeout,
184 connect(timer, &UbuntuGestures::AbstractTimer::timeout,
230 this, &DirectionalDragArea::checkSpeed);
185 this, &DirectionalDragArea::checkSpeed);
231 if (timerWasRunning) {
186 if (timerWasRunning) {
@@ -280,8 +235,144 @@ qreal DirectionalDragArea::touchSceneY() const
280 return m_previousScenePos.y();
235 return m_previousScenePos.y();
281}
236}
282
237
238+bool DirectionalDragArea::event(QEvent *event)
239+{
240+ if (event->type() == TouchOwnershipEvent::touchOwnershipEventType()) {
241+ touchOwnershipEvent(static_cast<TouchOwnershipEvent *>(event));
242+ return true;
243+ } else if (event->type() == UnownedTouchEvent::unownedTouchEventType()) {
244+ unownedTouchEvent(static_cast<UnownedTouchEvent *>(event));
245+ return true;
246+ } else {
247+ return QQuickItem::event(event);
248+ }
249+}
250+
251+void DirectionalDragArea::touchOwnershipEvent(TouchOwnershipEvent *event)
252+{
253+ if (event->gained()) {
254+ QVector<int> ids;
255+ ids.append(event->touchId());
256+ DDA_DEBUG("grabbing touch");
257+ grabTouchPoints(ids);
258+
259+ // Work around for Qt bug. If we grab a touch that is being used for mouse pointer
260+ // emulation it will cause the emulation logic to go nuts.
261+ // Thus we have to also grab the mouse in this case.
262+ // TODO: Report bug to Qt
263+ if (window()) {
264+ QQuickWindowPrivate *windowPrivate = QQuickWindowPrivate::get(window());
265+ if (windowPrivate->touchMouseId == event->touchId() && window()->mouseGrabberItem()) {
266+ DDA_DEBUG("removing mouse grabber");
267+ window()->mouseGrabberItem()->ungrabMouse();
268+ }
269+ }
270+ } else {
271+ // We still wanna know when it ends for keeping the composition time window up-to-date
272+ TouchRegistry::instance()->addTouchWatcher(m_touchId, this);
273+
274+ setStatus(WaitingForTouch);
275+ }
276+}
277+
278+void DirectionalDragArea::unownedTouchEvent(UnownedTouchEvent *unownedTouchEvent)
279+{
280+ QTouchEvent *event = unownedTouchEvent->touchEvent();
281+
282+ Q_ASSERT(!event->touchPointStates().testFlag(Qt::TouchPointPressed));
283+
284+ #if DIRECTIONALDRAGAREA_DEBUG
285+ // TODO Consider using qCDebug() when available (Qt 5.2)
286+ qDebug() << "[DDA] Unowned" << m_timeSource->msecsSinceReference()
287+ << qPrintable(touchEventToString(event));
288+ #endif
289+
290+ switch (m_status) {
291+ case WaitingForTouch:
292+ // do nothing
293+ break;
294+ case Undecided:
295+ Q_ASSERT(isEnabled() && isVisible());
296+ unownedTouchEvent_undecided(unownedTouchEvent);
297+ break;
298+ default: // Recognized:
299+ // do nothing
300+ break;
301+ }
302+
303+ m_activeTouches.update(event);
304+}
305+
306+void DirectionalDragArea::unownedTouchEvent_undecided(UnownedTouchEvent *unownedTouchEvent)
307+{
308+ const QTouchEvent::TouchPoint *touchPoint = fetchTargetTouchPoint(unownedTouchEvent->touchEvent());
309+ if (!touchPoint) {
310+ qCritical() << "DirectionalDragArea[status=Undecided]: touch " << m_touchId
311+ << "missing from UnownedTouchEvent without first reaching state Qt::TouchPointReleased. "
312+ "Considering it as released.";
313+
314+ TouchRegistry::instance()->removeCandidateOwnerForTouch(m_touchId, this);
315+ setStatus(WaitingForTouch);
316+ return;
317+ }
318+
319+ const QPointF &touchScenePos = touchPoint->scenePos();
320+
321+ if (touchPoint->state() == Qt::TouchPointReleased) {
322+ // touch has ended before recognition concluded
323+ DDA_DEBUG("Touch has ended before recognition concluded");
324+ TouchRegistry::instance()->removeCandidateOwnerForTouch(m_touchId, this);
325+ emitSignalIfTapped();
326+ setStatus(WaitingForTouch);
327+ return;
328+ }
329+
330+ m_previousDampedScenePos.setX(m_dampedScenePos.x());
331+ m_previousDampedScenePos.setY(m_dampedScenePos.y());
332+ m_dampedScenePos.update(touchScenePos);
333+ updateVelocityCalculator(touchScenePos);
334+
335+ if (!pointInsideAllowedArea()) {
336+ DDA_DEBUG("Rejecting gesture because touch point is outside allowed area.");
337+ TouchRegistry::instance()->removeCandidateOwnerForTouch(m_touchId, this);
338+ // We still wanna know when it ends for keeping the composition time window up-to-date
339+ TouchRegistry::instance()->addTouchWatcher(m_touchId, this);
340+ setStatus(WaitingForTouch);
341+ return;
342+ }
343+
344+ if (!movingInRightDirection()) {
345+ DDA_DEBUG("Rejecting gesture because touch point is moving in the wrong direction.");
346+ TouchRegistry::instance()->removeCandidateOwnerForTouch(m_touchId, this);
347+ // We still wanna know when it ends for keeping the composition time window up-to-date
348+ TouchRegistry::instance()->addTouchWatcher(m_touchId, this);
349+ setStatus(WaitingForTouch);
350+ return;
351+ }
352+
353+ setPreviousPos(touchPoint->pos());
354+ setPreviousScenePos(touchScenePos);
355+
356+ if (isWithinTouchCompositionWindow()) {
357+ // There's still time for some new touch to appear and ruin our party as it would be combined
358+ // with our m_touchId one and therefore deny the possibility of a single-finger gesture.
359+ DDA_DEBUG("Sill within composition window. Let's wait more.");
360+ return;
361+ }
362+
363+ if (movedFarEnough(touchScenePos)) {
364+ TouchRegistry::instance()->requestTouchOwnership(m_touchId, this);
365+ setStatus(Recognized);
366+ } else {
367+ DDA_DEBUG("Didn't move far enough yet. Let's wait more.");
368+ }
369+}
370+
283void DirectionalDragArea::touchEvent(QTouchEvent *event)
371void DirectionalDragArea::touchEvent(QTouchEvent *event)
284{
372{
373+ // TODO: Consider when more than one touch starts in the same event (although it's not possible
374+ // with Mir's android-input). Have to track them all. Consider it a plus/bonus.
375+
285 #if DIRECTIONALDRAGAREA_DEBUG
376 #if DIRECTIONALDRAGAREA_DEBUG
286 // TODO Consider using qCDebug() when available (Qt 5.2)
377 // TODO Consider using qCDebug() when available (Qt 5.2)
287 qDebug() << "[DDA]" << m_timeSource->msecsSinceReference()
378 qDebug() << "[DDA]" << m_timeSource->msecsSinceReference()
@@ -310,29 +401,34 @@ void DirectionalDragArea::touchEvent(QTouchEvent *event)
310
401
311void DirectionalDragArea::touchEvent_absent(QTouchEvent *event)
402void DirectionalDragArea::touchEvent_absent(QTouchEvent *event)
312{
403{
404+ // TODO: accept/reject is for the whole event, not per touch id. See how that affects us.
405+
313 if (!event->touchPointStates().testFlag(Qt::TouchPointPressed)) {
406 if (!event->touchPointStates().testFlag(Qt::TouchPointPressed)) {
314 // Nothing to see here. No touch starting in this event.
407 // Nothing to see here. No touch starting in this event.
315 return;
408 return;
316 }
409 }
317
410
411+ // to be proven wrong, if that's the case
412+ bool allGood = true;
413+
318 if (isWithinTouchCompositionWindow()) {
414 if (isWithinTouchCompositionWindow()) {
319 // too close to the last touch start. So we consider them as starting roughly at the same time.
415 // too close to the last touch start. So we consider them as starting roughly at the same time.
320 // Can't be a single-touch gesture.
416 // Can't be a single-touch gesture.
321 #if DIRECTIONALDRAGAREA_DEBUG
417 #if DIRECTIONALDRAGAREA_DEBUG
322 qDebug("[DDA] A new touch point came in but we're still within time composition window. Ignoring it.");
418 qDebug("[DDA] A new touch point came in but we're still within time composition window. Ignoring it.");
323 #endif
419 #endif
324− return;
420+ allGood = false;
325 }
421 }
326
422
327 const QList<QTouchEvent::TouchPoint> &touchPoints = event->touchPoints();
423 const QList<QTouchEvent::TouchPoint> &touchPoints = event->touchPoints();
328
424
329 const QTouchEvent::TouchPoint *newTouchPoint = nullptr;
425 const QTouchEvent::TouchPoint *newTouchPoint = nullptr;
330− for (int i = 0; i < touchPoints.count(); ++i) {
426+ for (int i = 0; i < touchPoints.count() && allGood; ++i) {
331 const QTouchEvent::TouchPoint &touchPoint = touchPoints.at(i);
427 const QTouchEvent::TouchPoint &touchPoint = touchPoints.at(i);
332 if (touchPoint.state() == Qt::TouchPointPressed) {
428 if (touchPoint.state() == Qt::TouchPointPressed) {
333 if (newTouchPoint) {
429 if (newTouchPoint) {
334 // more than one touch starting in this QTouchEvent. Can't be a single-touch gesture
430 // more than one touch starting in this QTouchEvent. Can't be a single-touch gesture
335− return;
431+ allGood = false;
336 } else {
432 } else {
337 // that's our candidate
433 // that's our candidate
338 m_touchId = touchPoint.id();
434 m_touchId = touchPoint.id();
@@ -341,85 +437,61 @@ void DirectionalDragArea::touchEvent_absent(QTouchEvent *event)
341 }
437 }
342 }
438 }
343
439
440+ if (allGood) {
344− Q_ASSERT(newTouchPoint);
441+ Q_ASSERT(newTouchPoint);
345
442
346− // If we have made this far, we are good to go to the next status.
347−
348− m_startPos = newTouchPoint->pos();
443+ m_startPos = newTouchPoint->pos();
349− m_startScenePos = newTouchPoint->scenePos();
444+ m_startScenePos = newTouchPoint->scenePos();
350− m_touchId = newTouchPoint->id();
445+ m_touchId = newTouchPoint->id();
351− m_dampedScenePos.reset(m_startScenePos);
446+ m_dampedScenePos.reset(m_startScenePos);
352− m_velocityCalculator->setTrackedPosition(0.);
447+ m_velocityCalculator->setTrackedPosition(0.);
353− m_velocityCalculator->reset();
448+ m_velocityCalculator->reset();
354− m_numSamplesOnLastSpeedCheck = 0;
449+ m_numSamplesOnLastSpeedCheck = 0;
355− m_silenceTime = 0;
450+ m_silenceTime = 0;
356− setPreviousPos(m_startPos);
451+ setPreviousPos(m_startPos);
357− setPreviousScenePos(m_startScenePos);
452+ setPreviousScenePos(m_startScenePos);
358− updateSceneDirectionVector();
453+ updateSceneDirectionVector();
359−
454+
455+ if (recognitionIsDisabled()) {
456+ // Behave like a dumb TouchArea
457+ TouchRegistry::instance()->requestTouchOwnership(m_touchId, this);
458+ setStatus(Recognized);
459+ event->accept();
460+ } else {
461+ // just monitor the touch points for now.
462+ TouchRegistry::instance()->addCandidateOwnerForTouch(m_touchId, this);
463+
360− setStatus(Undecided);
464+ setStatus(Undecided);
465+ // Let the item below have it. We will monitor it and grab it later if a gesture
466+ // gets recognized.
467+ event->ignore();
468+ }
469+ } else {
470+ watchPressedTouchPoints(touchPoints);
471+ event->ignore();
472+ }
361}
473}
362
474
363void DirectionalDragArea::touchEvent_undecided(QTouchEvent *event)
475void DirectionalDragArea::touchEvent_undecided(QTouchEvent *event)
364{
476{
477+ Q_ASSERT(event->type() == QEvent::TouchBegin);
365− const QTouchEvent::TouchPoint *touchPoint = fetchTargetTouchPoint(event);
478+ Q_ASSERT(fetchTargetTouchPoint(event) == nullptr);
366
479
367− if (!touchPoint) {
480+ // We're not interested in new touch points. We already have our candidate (m_touchId).
368− qCritical() << "DirectionalDragArea[status=Undecided]: touch " << m_touchId
481+ // But we do want to know when those new touches end for keeping the composition time
369− << "missing from QTouchEvent without first reaching state Qt::TouchPointReleased. "
482+ // window up-to-date
370− "Considering it as released.";
483+ event->ignore();
371− setStatus(WaitingForTouch);
484+ watchPressedTouchPoints(event->touchPoints());
372− return;
373− }
374−
375− const QPointF &touchScenePos = touchPoint->scenePos();
376−
377− if (touchPoint->state() == Qt::TouchPointReleased) {
378− // touch has ended before recognition concluded
379− DDA_DEBUG("Touch has ended before recognition concluded");
380− setStatus(WaitingForTouch);
381− Q_EMIT tapped();
382− return;
383− }
384
485
385 if (event->touchPointStates().testFlag(Qt::TouchPointPressed) && isWithinTouchCompositionWindow()) {
486 if (event->touchPointStates().testFlag(Qt::TouchPointPressed) && isWithinTouchCompositionWindow()) {
386 // multi-finger drags are not accepted
487 // multi-finger drags are not accepted
387 DDA_DEBUG("Multi-finger drags are not accepted");
488 DDA_DEBUG("Multi-finger drags are not accepted");
388− setStatus(WaitingForTouch);
389− return;
390− }
391
489
392− m_previousDampedScenePos.setX(m_dampedScenePos.x());
490+ TouchRegistry::instance()->removeCandidateOwnerForTouch(m_touchId, this);
393− m_previousDampedScenePos.setY(m_dampedScenePos.y());
491+ // We still wanna know when it ends for keeping the composition time window up-to-date
394− m_dampedScenePos.update(touchScenePos);
492+ TouchRegistry::instance()->addTouchWatcher(m_touchId, this);
395− updateVelocityCalculator(touchScenePos);
396−
397− if (!pointInsideAllowedArea()) {
398− DDA_DEBUG("Rejecting gesture because touch point is outside allowed area.");
399− setStatus(WaitingForTouch);
400− return;
401− }
402
493
403− if (!movingInRightDirection()) {
404− DDA_DEBUG("Rejecting gesture becauuse touch point is moving in the wrong direction.");
405 setStatus(WaitingForTouch);
494 setStatus(WaitingForTouch);
406− return;
407− }
408−
409− setPreviousPos(touchPoint->pos());
410− setPreviousScenePos(touchScenePos);
411−
412− if (isWithinTouchCompositionWindow()) {
413− // There's still time for some new touch to appear and ruin our party as it would be combined
414− // with our m_touchId one and therefore deny the possibility of a single-finger gesture.
415− DDA_DEBUG("Sill within composition window. Let's wait more.");
416− return;
417− }
418−
419− if (movedFarEnough(touchScenePos)) {
420− setStatus(Recognized);
421− } else {
422− DDA_DEBUG("Didn't move far enough yet. Let's wait more.");
423 }
495 }
424}
496}
425
497
@@ -437,11 +509,35 @@ void DirectionalDragArea::touchEvent_recognized(QTouchEvent *event)
437 setPreviousScenePos(touchPoint->scenePos());
509 setPreviousScenePos(touchPoint->scenePos());
438
510
439 if (touchPoint->state() == Qt::TouchPointReleased) {
511 if (touchPoint->state() == Qt::TouchPointReleased) {
512+ emitSignalIfTapped();
440 setStatus(WaitingForTouch);
513 setStatus(WaitingForTouch);
441 }
514 }
442 }
515 }
443}
516}
444
517
518+void DirectionalDragArea::watchPressedTouchPoints(const QList<QTouchEvent::TouchPoint> &touchPoints)
519+{
520+ for (int i = 0; i < touchPoints.count(); ++i) {
521+ const QTouchEvent::TouchPoint &touchPoint = touchPoints.at(i);
522+ if (touchPoint.state() == Qt::TouchPointPressed) {
523+ TouchRegistry::instance()->addTouchWatcher(touchPoint.id(), this);
524+ }
525+ }
526+}
527+
528+bool DirectionalDragArea::recognitionIsDisabled() const
529+{
530+ return distanceThreshold() <= 0 && compositionTime() <= 0;
531+}
532+
533+void DirectionalDragArea::emitSignalIfTapped()
534+{
535+ qint64 touchDuration = m_timeSource->msecsSinceReference() - m_activeTouches.touchStartTime(m_touchId);
536+ if (touchDuration <= maxTapDuration()) {
537+ Q_EMIT tapped();
538+ }
539+}
540+
445const QTouchEvent::TouchPoint *DirectionalDragArea::fetchTargetTouchPoint(QTouchEvent *event)
541const QTouchEvent::TouchPoint *DirectionalDragArea::fetchTargetTouchPoint(QTouchEvent *event)
446{
542{
447 const QList<QTouchEvent::TouchPoint> &touchPoints = event->touchPoints();
543 const QList<QTouchEvent::TouchPoint> &touchPoints = event->touchPoints();
@@ -509,12 +605,16 @@ bool DirectionalDragArea::movedFarEnough(const QPointF &point) const
509
605
510void DirectionalDragArea::checkSpeed()
606void DirectionalDragArea::checkSpeed()
511{
607{
608+ Q_ASSERT(m_status == Undecided);
609+
512 if (m_velocityCalculator->numSamples() >= AxisVelocityCalculator::MIN_SAMPLES_NEEDED) {
610 if (m_velocityCalculator->numSamples() >= AxisVelocityCalculator::MIN_SAMPLES_NEEDED) {
513 qreal speed = qFabs(m_velocityCalculator->calculate());
611 qreal speed = qFabs(m_velocityCalculator->calculate());
514 qreal minSpeedMsecs = m_minSpeed / 1000.0;
612 qreal minSpeedMsecs = m_minSpeed / 1000.0;
515
613
516 if (speed < minSpeedMsecs) {
614 if (speed < minSpeedMsecs) {
517 DDA_DEBUG("Rejecting gesture because it's below minimum speed.");
615 DDA_DEBUG("Rejecting gesture because it's below minimum speed.");
616+ TouchRegistry::instance()->removeCandidateOwnerForTouch(m_touchId, this);
617+ TouchRegistry::instance()->addTouchWatcher(m_touchId, this);
518 setStatus(WaitingForTouch);
618 setStatus(WaitingForTouch);
519 }
619 }
520 }
620 }
@@ -523,7 +623,9 @@ void DirectionalDragArea::checkSpeed()
523 m_silenceTime += m_recognitionTimer->interval();
623 m_silenceTime += m_recognitionTimer->interval();
524
624
525 if (m_silenceTime > m_maxSilenceTime) {
625 if (m_silenceTime > m_maxSilenceTime) {
526− DDA_DEBUG("Rejecting gesture because it's silence time has been exceeded.");
626+ DDA_DEBUG("Rejecting gesture because its silence time has been exceeded.");
627+ TouchRegistry::instance()->removeCandidateOwnerForTouch(m_touchId, this);
628+ TouchRegistry::instance()->addTouchWatcher(m_touchId, this);
527 setStatus(WaitingForTouch);
629 setStatus(WaitingForTouch);
528 }
630 }
529 } else {
631 } else {
@@ -532,10 +634,19 @@ void DirectionalDragArea::checkSpeed()
532 m_numSamplesOnLastSpeedCheck = m_velocityCalculator->numSamples();
634 m_numSamplesOnLastSpeedCheck = m_velocityCalculator->numSamples();
533}
635}
534
636
535−void DirectionalDragArea::onEnabledChanged()
637+void DirectionalDragArea::giveUpIfDisabledOrInvisible()
536{
638{
639+ if (!isEnabled() || !isVisible()) {
640+ if (m_status == Undecided) {
641+ TouchRegistry::instance()->removeCandidateOwnerForTouch(m_touchId, this);
642+ // We still wanna know when it ends for keeping the composition time window up-to-date
643+ TouchRegistry::instance()->addTouchWatcher(m_touchId, this);
644+ }
645+
537− if (!isEnabled() && m_status != WaitingForTouch) {
646+ if (m_status != WaitingForTouch) {
647+ DDA_DEBUG("Resetting status because got disabled or made invisible");
538− setStatus(WaitingForTouch);
648+ setStatus(WaitingForTouch);
649+ }
539 }
650 }
540}
651}
541
652
@@ -631,7 +742,9 @@ void DirectionalDragArea::updateVelocityCalculator(const QPointF &scenePos)
631
742
632bool DirectionalDragArea::isWithinTouchCompositionWindow()
743bool DirectionalDragArea::isWithinTouchCompositionWindow()
633{
744{
745+ return
746+ compositionTime() > 0 &&
634− return !m_activeTouches.isEmpty() &&
747+ !m_activeTouches.isEmpty() &&
635 m_timeSource->msecsSinceReference() <=
748 m_timeSource->msecsSinceReference() <=
636 m_activeTouches.mostRecentStartTime() + (qint64)compositionTime();
749 m_activeTouches.mostRecentStartTime() + (qint64)compositionTime();
637}
750}
@@ -639,18 +752,17 @@ bool DirectionalDragArea::isWithinTouchCompositionWindow()
639//************************** ActiveTouchesInfo **************************
752//************************** ActiveTouchesInfo **************************
640
753
641DirectionalDragArea::ActiveTouchesInfo::ActiveTouchesInfo(const SharedTimeSource &timeSource)
754DirectionalDragArea::ActiveTouchesInfo::ActiveTouchesInfo(const SharedTimeSource &timeSource)
642− : m_timeSource(timeSource), m_lastUsedIndex(-1)
755+ : m_timeSource(timeSource)
643{
756{
644− // Estimate of the maximum number of active touches we might reach.
645− // Not a problem if it ends up being an underestimate as this is just
646− // an optimization.
647− m_vector.resize(3);
648}
757}
649
758
650void DirectionalDragArea::ActiveTouchesInfo::update(QTouchEvent *event)
759void DirectionalDragArea::ActiveTouchesInfo::update(QTouchEvent *event)
651{
760{
652 if (!(event->touchPointStates() & (Qt::TouchPointPressed | Qt::TouchPointReleased))) {
761 if (!(event->touchPointStates() & (Qt::TouchPointPressed | Qt::TouchPointReleased))) {
653 // nothing to update
762 // nothing to update
763+ #if ACTIVETOUCHESINFO_DEBUG
764+ qDebug("[DDA::ActiveTouchesInfo] Nothing to Update");
765+ #endif
654 return;
766 return;
655 }
767 }
656
768
@@ -658,74 +770,88 @@ void DirectionalDragArea::ActiveTouchesInfo::update(QTouchEvent *event)
658 for (int i = 0; i < touchPoints.count(); ++i) {
770 for (int i = 0; i < touchPoints.count(); ++i) {
659 const QTouchEvent::TouchPoint &touchPoint = touchPoints.at(i);
771 const QTouchEvent::TouchPoint &touchPoint = touchPoints.at(i);
660 if (touchPoint.state() == Qt::TouchPointPressed) {
772 if (touchPoint.state() == Qt::TouchPointPressed) {
661− addTouchPoint(touchPoint);
773+ addTouchPoint(touchPoint.id());
662 } else if (touchPoint.state() == Qt::TouchPointReleased) {
774 } else if (touchPoint.state() == Qt::TouchPointReleased) {
663− removeTouchPoint(touchPoint);
775+ removeTouchPoint(touchPoint.id());
664 }
776 }
665 }
777 }
666}
778}
667
779
780+#if ACTIVETOUCHESINFO_DEBUG
668−void DirectionalDragArea::ActiveTouchesInfo::addTouchPoint(const QTouchEvent::TouchPoint &touchPoint)
781+QString DirectionalDragArea::ActiveTouchesInfo::toString()
669{
782{
670− ActiveTouchInfo &activeTouchInfo = getEmptySlot();
783+ QString string = "(";
671− activeTouchInfo.id = touchPoint.id();
784+
672− activeTouchInfo.startTime = m_timeSource->msecsSinceReference();
785+ {
786+ QTextStream stream(&string);
787+ m_touchInfoPool.forEach([&](Pool<ActiveTouchInfo>::Iterator &touchInfo) {
788+ stream << "(id=" << touchInfo->id << ",startTime=" << touchInfo->startTime << ")";
789+ return true;
790+ });
791+ }
792+
793+ string.append(")");
794+
795+ return string;
673}
796}
797+#endif // ACTIVETOUCHESINFO_DEBUG
674
798
675−void DirectionalDragArea::ActiveTouchesInfo::removeTouchPoint(const QTouchEvent::TouchPoint &touchPoint)
799+void DirectionalDragArea::ActiveTouchesInfo::addTouchPoint(int touchId)
676{
800{
677− for (int i = 0; i <= m_lastUsedIndex; ++i) {
801+ ActiveTouchInfo &activeTouchInfo = m_touchInfoPool.getEmptySlot();
678− if (touchPoint.id() == m_vector.at(i).id) {
802+ activeTouchInfo.id = touchId;
679− freeSlot(i);
803+ activeTouchInfo.startTime = m_timeSource->msecsSinceReference();
680− return;
804+
681− }
805+ #if ACTIVETOUCHESINFO_DEBUG
682− }
806+ qDebug() << "[DDA::ActiveTouchesInfo]" << qPrintable(toString());
683− Q_ASSERT(false); // shouldn't reach this point
807+ #endif
684}
808}
685
809
686−DirectionalDragArea::ActiveTouchInfo &DirectionalDragArea::ActiveTouchesInfo::getEmptySlot()
810+qint64 DirectionalDragArea::ActiveTouchesInfo::touchStartTime(int touchId)
687{
811{
688− Q_ASSERT(m_lastUsedIndex < m_vector.size());
812+ qint64 result = -1;
689
813
690− // Look for an in-between vacancy first
814+ m_touchInfoPool.forEach([&](Pool<ActiveTouchInfo>::Iterator &touchInfo) {
691− for (int i = 0; i < m_lastUsedIndex; ++i) {
815+ if (touchId == touchInfo->id) {
692− ActiveTouchInfo &activeTouchInfo = m_vector[i];
816+ result = touchInfo->startTime;
693− if (!activeTouchInfo.isValid()) {
817+ return false;
694− return activeTouchInfo;
818+ } else {
819+ return true;
695 }
820 }
696− }
821+ });
697−
698− ++m_lastUsedIndex;
699− if (m_lastUsedIndex >= m_vector.size()) {
700− m_vector.resize(m_lastUsedIndex + 1);
701− }
702
822
703− return m_vector[m_lastUsedIndex];
823+ Q_ASSERT(result != -1);
824+ return result;
704}
825}
705
826
706−void DirectionalDragArea::ActiveTouchesInfo::freeSlot(int index)
827+void DirectionalDragArea::ActiveTouchesInfo::removeTouchPoint(int touchId)
707{
828{
708− m_vector[index].reset();
829+ m_touchInfoPool.forEach([&](Pool<ActiveTouchInfo>::Iterator &touchInfo) {
709− if (index == m_lastUsedIndex) {
830+ if (touchId == touchInfo->id) {
710− do {
831+ m_touchInfoPool.freeSlot(touchInfo);
711− --m_lastUsedIndex;
832+ return false;
712− } while (m_lastUsedIndex >= 0 && !m_vector.at(m_lastUsedIndex).isValid());
833+ } else {
713− }
834+ return true;
835+ }
836+ });
837+
838+ #if ACTIVETOUCHESINFO_DEBUG
839+ qDebug() << "[DDA::ActiveTouchesInfo]" << qPrintable(toString());
840+ #endif
714}
841}
715
842
716qint64 DirectionalDragArea::ActiveTouchesInfo::mostRecentStartTime()
843qint64 DirectionalDragArea::ActiveTouchesInfo::mostRecentStartTime()
717{
844{
718− Q_ASSERT(m_lastUsedIndex >= 0);
845+ Q_ASSERT(!m_touchInfoPool.isEmpty());
846+
847+ qint64 highestStartTime = -1;
719
848
720− qint64 highestStartTime = m_vector.at(0).startTime;
721− int i = 1;
722− do {
723− const ActiveTouchInfo &activeTouchInfo = m_vector.at(i);
849+ m_touchInfoPool.forEach([&](Pool<ActiveTouchInfo>::Iterator &activeTouchInfo) {
724− if (activeTouchInfo.isValid() && activeTouchInfo.startTime > highestStartTime) {
850+ if (activeTouchInfo->startTime > highestStartTime) {
725− highestStartTime = activeTouchInfo.startTime;
851+ highestStartTime = activeTouchInfo->startTime;
726 }
852 }
727− ++i;
853+ return true;
728− } while (i < m_lastUsedIndex);
854+ });
729
855
730 return highestStartTime;
856 return highestStartTime;
731}
857}
plugins/Ubuntu/Gestures/DirectionalDragArea.h+37−29
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013,2014 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
@@ -19,27 +19,16 @@
19
19
20#include <QtQuick/QQuickItem>
20#include <QtQuick/QQuickItem>
21#include "AxisVelocityCalculator.h"
21#include "AxisVelocityCalculator.h"
22−#include "UbuntuGesturesGlobal.h"
22+#include "UbuntuGesturesQmlGlobal.h"
23#include "Damper.h"
23#include "Damper.h"
24#include "Direction.h"
24#include "Direction.h"
25
25
26−namespace UbuntuGestures {
26+// lib UbuntuGestures
27−/* Defines an interface for a Timer. */
27+#include <Pool.h>
28−class UBUNTUGESTURES_EXPORT AbstractTimer : public QObject {
28+#include <Timer.h>
29− Q_OBJECT
29+
30−public:
30+class TouchOwnershipEvent;
31− AbstractTimer(QObject *parent) : QObject(parent), m_isRunning(false) {}
31+class UnownedTouchEvent;
32− virtual int interval() const = 0;
33− virtual void setInterval(int msecs) = 0;
34− virtual void start() { m_isRunning = true; };
35− virtual void stop() { m_isRunning = false; }
36− bool isRunning() const { return m_isRunning; }
37−Q_SIGNALS:
38− void timeout();
39−private:
40− bool m_isRunning;
41−};
42−}
43
32
44/*
33/*
45 An area that detects axis-aligned single-finger drag gestures
34 An area that detects axis-aligned single-finger drag gestures
@@ -50,7 +39,7 @@ private:
50
39
51 See doc/DirectionalDragArea.svg
40 See doc/DirectionalDragArea.svg
52 */
41 */
53−class UBUNTUGESTURES_EXPORT DirectionalDragArea : public QQuickItem {
42+class UBUNTUGESTURESQML_EXPORT DirectionalDragArea : public QQuickItem {
54 Q_OBJECT
43 Q_OBJECT
55
44
56 // The direction in which the gesture should move in order to be recognized.
45 // The direction in which the gesture should move in order to be recognized.
@@ -196,6 +185,12 @@ public:
196 // Useful for testing, where a fake time source can be supplied
185 // Useful for testing, where a fake time source can be supplied
197 void setTimeSource(const UbuntuGestures::SharedTimeSource &timeSource);
186 void setTimeSource(const UbuntuGestures::SharedTimeSource &timeSource);
198
187
188+ bool event(QEvent *e) override;
189+
190+ // Maximum time, in milliseconds, between a press and a release, for a touch
191+ // sequence to be considered a tap.
192+ int maxTapDuration() const { return 300; }
193+
199Q_SIGNALS:
194Q_SIGNALS:
200 void directionChanged(Direction::Type direction);
195 void directionChanged(Direction::Type direction);
201 void statusChanged(Status value);
196 void statusChanged(Status value);
@@ -212,6 +207,10 @@ Q_SIGNALS:
212 void touchYChanged(qreal value);
207 void touchYChanged(qreal value);
213 void touchSceneXChanged(qreal value);
208 void touchSceneXChanged(qreal value);
214 void touchSceneYChanged(qreal value);
209 void touchSceneYChanged(qreal value);
210+
211+ // TODO: I would rather not have such signal as it has nothing to do with drag gestures.
212+ // Remove when no longer used or move its implementation to the QML code that uses it
213+ // See maxTapDuration()
215 void tapped();
214 void tapped();
216
215
217protected:
216protected:
@@ -219,7 +218,7 @@ protected:
219
218
220private Q_SLOTS:
219private Q_SLOTS:
221 void checkSpeed();
220 void checkSpeed();
222− void onEnabledChanged();
221+ void giveUpIfDisabledOrInvisible();
223
222
224private:
223private:
225 void touchEvent_absent(QTouchEvent *event);
224 void touchEvent_absent(QTouchEvent *event);
@@ -238,6 +237,12 @@ private:
238 // returns the scalar projection between the given vector (in scene coordinates)
237 // returns the scalar projection between the given vector (in scene coordinates)
239 // and m_sceneDirectionVector
238 // and m_sceneDirectionVector
240 qreal projectOntoDirectionVector(const QPointF &sceneVector) const;
239 qreal projectOntoDirectionVector(const QPointF &sceneVector) const;
240+ void touchOwnershipEvent(TouchOwnershipEvent *event);
241+ void unownedTouchEvent(UnownedTouchEvent *event);
242+ void unownedTouchEvent_undecided(UnownedTouchEvent *unownedTouchEvent);
243+ void watchPressedTouchPoints(const QList<QTouchEvent::TouchPoint> &touchPoints);
244+ bool recognitionIsDisabled() const;
245+ void emitSignalIfTapped();
241
246
242 Status m_status;
247 Status m_status;
243
248
@@ -283,18 +288,21 @@ private:
283 public:
288 public:
284 ActiveTouchesInfo(const UbuntuGestures::SharedTimeSource &timeSource);
289 ActiveTouchesInfo(const UbuntuGestures::SharedTimeSource &timeSource);
285 void update(QTouchEvent *event);
290 void update(QTouchEvent *event);
286− ActiveTouchInfo &touchInfo(int id);
291+ qint64 touchStartTime(int id);
292+ bool isEmpty() const { return m_touchInfoPool.isEmpty(); }
287 qint64 mostRecentStartTime();
293 qint64 mostRecentStartTime();
288 UbuntuGestures::SharedTimeSource m_timeSource;
294 UbuntuGestures::SharedTimeSource m_timeSource;
289− bool isEmpty() const { return m_lastUsedIndex == -1; }
290 private:
295 private:
291− void addTouchPoint(const QTouchEvent::TouchPoint &touchPoint);
296+ void addTouchPoint(int touchId);
292− ActiveTouchInfo &getEmptySlot();
293− void freeSlot(int index);
294− void removeTouchPoint(const QTouchEvent::TouchPoint &touchPoint);
297+ void removeTouchPoint(int touchId);
298+ #if ACTIVETOUCHESINFO_DEBUG
299+ QString toString();
300+ #endif
301+
295− QVector<struct ActiveTouchInfo> m_vector;
302+ Pool<ActiveTouchInfo> m_touchInfoPool;
296− int m_lastUsedIndex;
297 } m_activeTouches;
303 } m_activeTouches;
304+
305+ friend class tst_DirectionalDragArea;
298};
306};
299
307
300#endif // DIRECTIONAL_DRAG_AREA_H
308#endif // DIRECTIONAL_DRAG_AREA_H
plugins/Ubuntu/Gestures/TimeSource.h+2−2
@@ -21,14 +21,14 @@
21#ifndef UBUNTUGESTURES_TIMESOURCE_H
21#ifndef UBUNTUGESTURES_TIMESOURCE_H
22#define UBUNTUGESTURES_TIMESOURCE_H
22#define UBUNTUGESTURES_TIMESOURCE_H
23
23
24−#include "UbuntuGesturesGlobal.h"
24+#include "UbuntuGesturesQmlGlobal.h"
25#include <QSharedPointer>
25#include <QSharedPointer>
26
26
27namespace UbuntuGestures {
27namespace UbuntuGestures {
28/*
28/*
29 Interface for a time source.
29 Interface for a time source.
30 */
30 */
31−class UBUNTUGESTURES_EXPORT TimeSource {
31+class UBUNTUGESTURESQML_EXPORT TimeSource {
32public:
32public:
33 virtual ~TimeSource() {}
33 virtual ~TimeSource() {}
34 /* Returns the current time in milliseconds since some reference time in the past. */
34 /* Returns the current time in milliseconds since some reference time in the past. */
plugins/Ubuntu/Gestures/TouchGate.cppnew file+347
@@ -0,0 +1,347 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#include "TouchGate.h"
18+
19+#include <QCoreApplication>
20+#include <QDebug>
21+
22+#include <TouchOwnershipEvent.h>
23+#include <TouchRegistry.h>
24+
25+#pragma GCC diagnostic push
26+#pragma GCC diagnostic ignored "-pedantic"
27+#include <private/qquickitem_p.h>
28+#pragma GCC diagnostic pop
29+
30+#if TOUCHGATE_DEBUG
31+#include <DebugHelpers.h>
32+#endif
33+
34+
35+bool TouchGate::event(QEvent *e)
36+{
37+ if (e->type() == TouchOwnershipEvent::touchOwnershipEventType()) {
38+ touchOwnershipEvent(static_cast<TouchOwnershipEvent *>(e));
39+ return true;
40+ } else {
41+ return QQuickItem::event(e);
42+ }
43+}
44+
45+void TouchGate::touchEvent(QTouchEvent *event)
46+{
47+ #if TOUCHGATE_DEBUG
48+ qDebug() << "[TouchGate] got touch event" << qPrintable(touchEventToString(event));
49+ #endif
50+ event->accept();
51+
52+ const QList<QTouchEvent::TouchPoint> &touchPoints = event->touchPoints();
53+ bool goodToGo = true;
54+ for (int i = 0; i < touchPoints.count(); ++i) {
55+ const QTouchEvent::TouchPoint &touchPoint = touchPoints[i];
56+
57+ if (touchPoint.state() == Qt::TouchPointPressed) {
58+ Q_ASSERT(!m_touchInfoMap.contains(touchPoint.id()));
59+ m_touchInfoMap[touchPoint.id()].ownership = OwnershipRequested;
60+ m_touchInfoMap[touchPoint.id()].ended = false;
61+ TouchRegistry::instance()->requestTouchOwnership(touchPoint.id(), this);
62+ }
63+
64+ goodToGo &= m_touchInfoMap.contains(touchPoint.id())
65+ && m_touchInfoMap[touchPoint.id()].ownership == OwnershipGranted;
66+
67+ if (touchPoint.state() == Qt::TouchPointReleased && m_touchInfoMap.contains(touchPoint.id())) {
68+ m_touchInfoMap[touchPoint.id()].ended = true;
69+ }
70+
71+ }
72+
73+ if (goodToGo) {
74+ if (m_storedEvents.isEmpty()) {
75+ // let it pass through
76+ dispatchTouchEventToTarget(event);
77+ } else {
78+ // Retain the event to ensure TouchGate dispatches them in order.
79+ // Otherwise the current event would come before the stored ones, which are older.
80+ #if TOUCHGATE_DEBUG
81+ qDebug("[TouchGate] Storing event because thouches %s are still pending ownership.",
82+ qPrintable(oldestPendingTouchIdsString()));
83+ #endif
84+ storeTouchEvent(event);
85+ }
86+ } else {
87+ // Retain events that have unowned touches
88+ storeTouchEvent(event);
89+ }
90+}
91+
92+void TouchGate::touchOwnershipEvent(TouchOwnershipEvent *event)
93+{
94+ // TODO: Optimization: batch those actions as TouchOwnershipEvents
95+ // might come one right after the other.
96+
97+ Q_ASSERT(m_touchInfoMap.contains(event->touchId()));
98+
99+ TouchInfo &touchInfo = m_touchInfoMap[event->touchId()];
100+
101+ if (event->gained()) {
102+ #if TOUCHGATE_DEBUG
103+ qDebug() << "[TouchGate] Got ownership of touch " << event->touchId();
104+ #endif
105+ touchInfo.ownership = OwnershipGranted;
106+ } else {
107+ #if TOUCHGATE_DEBUG
108+ qDebug() << "[TouchGate] Lost ownership of touch " << event->touchId();
109+ #endif
110+ m_touchInfoMap.remove(event->touchId());
111+ removeTouchFromStoredEvents(event->touchId());
112+ }
113+
114+ dispatchFullyOwnedEvents();
115+}
116+
117+bool TouchGate::isTouchPointOwned(int touchId) const
118+{
119+ return m_touchInfoMap[touchId].ownership == OwnershipGranted;
120+}
121+
122+void TouchGate::storeTouchEvent(const QTouchEvent *event)
123+{
124+ #if TOUCHGATE_DEBUG
125+ qDebug() << "[TouchGate] Storing" << qPrintable(touchEventToString(event));
126+ #endif
127+
128+ TouchEvent clonedEvent(event);
129+ m_storedEvents.append(std::move(clonedEvent));
130+}
131+
132+void TouchGate::removeTouchFromStoredEvents(int touchId)
133+{
134+ int i = 0;
135+ while (i < m_storedEvents.count()) {
136+ TouchEvent &event = m_storedEvents[i];
137+ bool removed = event.removeTouch(touchId);
138+
139+ if (removed && event.touchPoints.isEmpty()) {
140+ m_storedEvents.removeAt(i);
141+ } else {
142+ ++i;
143+ }
144+ }
145+}
146+
147+void TouchGate::dispatchFullyOwnedEvents()
148+{
149+ while (!m_storedEvents.isEmpty() && eventIsFullyOwned(m_storedEvents.first())) {
150+ TouchEvent event = m_storedEvents.takeFirst();
151+ dispatchTouchEventToTarget(event);
152+ }
153+}
154+
155+#if TOUCHGATE_DEBUG
156+QString TouchGate::oldestPendingTouchIdsString()
157+{
158+ Q_ASSERT(!m_storedEvents.isEmpty());
159+
160+ QString str;
161+
162+ const auto &touchPoints = m_storedEvents.first().touchPoints;
163+ for (int i = 0; i < touchPoints.count(); ++i) {
164+ if (!isTouchPointOwned(touchPoints[i].id())) {
165+ if (!str.isEmpty()) {
166+ str.append(", ");
167+ }
168+ str.append(QString::number(touchPoints[i].id()));
169+ }
170+ }
171+
172+ return str;
173+}
174+#endif
175+
176+bool TouchGate::eventIsFullyOwned(const TouchGate::TouchEvent &event) const
177+{
178+ for (int i = 0; i < event.touchPoints.count(); ++i) {
179+ if (!isTouchPointOwned(event.touchPoints[i].id())) {
180+ return false;
181+ }
182+ }
183+
184+ return true;
185+}
186+
187+void TouchGate::setTargetItem(QQuickItem *item)
188+{
189+ // TODO: changing the target item while dispatch of touch events is taking place will
190+ // create a mess
191+
192+ if (item == m_targetItem.data())
193+ return;
194+
195+ m_targetItem = item;
196+ Q_EMIT targetItemChanged(item);
197+}
198+
199+void TouchGate::dispatchTouchEventToTarget(const TouchEvent &event)
200+{
201+ dispatchTouchEventToTarget(event.eventType,
202+ event.device,
203+ event.modifiers,
204+ event.touchPoints,
205+ event.target,
206+ event.window,
207+ event.timestamp);
208+}
209+
210+void TouchGate::dispatchTouchEventToTarget(QTouchEvent* event)
211+{
212+ dispatchTouchEventToTarget(event->type(),
213+ event->device(),
214+ event->modifiers(),
215+ event->touchPoints(),
216+ event->target(),
217+ event->window(),
218+ event->timestamp());
219+}
220+
221+void TouchGate::dispatchTouchEventToTarget(QEvent::Type eventType,
222+ QTouchDevice *device,
223+ Qt::KeyboardModifiers modifiers,
224+ const QList<QTouchEvent::TouchPoint> &touchPoints,
225+ QObject *target,
226+ QWindow *window,
227+ ulong timestamp)
228+{
229+ removeTouchInfoForEndedTouches(touchPoints);
230+
231+ if (m_targetItem.isNull()) {
232+ qWarning("[TouchGate] Cannot dispatch touch event because target item is null");
233+ return;
234+ }
235+
236+ QQuickItem *targetItem = m_targetItem.data();
237+
238+ if (!targetItem->isEnabled() || !targetItem->isVisible()) {
239+ #if TOUCHGATE_DEBUG
240+ qDebug() << "[TouchGate] Cannot dispatch touch event to" << targetItem
241+ << "because it's disabled or invisible.";
242+ #endif
243+ return;
244+ }
245+
246+ // Map touch points to targetItem coordinates
247+ QList<QTouchEvent::TouchPoint> targetTouchPoints = touchPoints;
248+ transformTouchPoints(targetTouchPoints, QQuickItemPrivate::get(targetItem)->windowToItemTransform());
249+ QTouchEvent *eventForTargetItem = createQTouchEvent(eventType, device, modifiers, targetTouchPoints,
250+ target, window, timestamp);
251+
252+ #if TOUCHGATE_DEBUG
253+ qDebug() << "[TouchGate] dispatching" << qPrintable(touchEventToString(eventForTargetItem))
254+ << "to" << targetItem;
255+ #endif
256+
257+ QCoreApplication::sendEvent(targetItem, eventForTargetItem);
258+
259+ delete eventForTargetItem;
260+}
261+
262+// NB: From QQuickWindow
263+void TouchGate::transformTouchPoints(QList<QTouchEvent::TouchPoint> &touchPoints, const QTransform &transform)
264+{
265+ QMatrix4x4 transformMatrix(transform);
266+ for (int i=0; i<touchPoints.count(); i++) {
267+ QTouchEvent::TouchPoint &touchPoint = touchPoints[i];
268+ touchPoint.setRect(transform.mapRect(touchPoint.sceneRect()));
269+ touchPoint.setStartPos(transform.map(touchPoint.startScenePos()));
270+ touchPoint.setLastPos(transform.map(touchPoint.lastScenePos()));
271+ touchPoint.setVelocity(transformMatrix.mapVector(touchPoint.velocity()).toVector2D());
272+ }
273+}
274+
275+QTouchEvent *TouchGate::createQTouchEvent(QEvent::Type eventType,
276+ QTouchDevice *device,
277+ Qt::KeyboardModifiers modifiers,
278+ const QList<QTouchEvent::TouchPoint> &touchPoints,
279+ QObject *target,
280+ QWindow *window,
281+ ulong timestamp)
282+{
283+ Qt::TouchPointStates eventStates = 0;
284+ for (int i = 0; i < touchPoints.count(); i++)
285+ eventStates |= touchPoints[i].state();
286+ // if all points have the same state, set the event type accordingly
287+ switch (eventStates) {
288+ case Qt::TouchPointPressed:
289+ eventType = QEvent::TouchBegin;
290+ break;
291+ case Qt::TouchPointReleased:
292+ eventType = QEvent::TouchEnd;
293+ break;
294+ default:
295+ eventType = QEvent::TouchUpdate;
296+ break;
297+ }
298+
299+ QTouchEvent *touchEvent = new QTouchEvent(eventType);
300+ touchEvent->setWindow(window);
301+ touchEvent->setTarget(target);
302+ touchEvent->setDevice(device);
303+ touchEvent->setModifiers(modifiers);
304+ touchEvent->setTouchPoints(touchPoints);
305+ touchEvent->setTouchPointStates(eventStates);
306+ touchEvent->setTimestamp(timestamp);
307+ touchEvent->accept();
308+ return touchEvent;
309+}
310+
311+void TouchGate::removeTouchInfoForEndedTouches(const QList<QTouchEvent::TouchPoint> &touchPoints)
312+{
313+ for (int i = 0; i < touchPoints.size(); ++i) {\
314+ const QTouchEvent::TouchPoint &touchPoint = touchPoints.at(i);
315+
316+ if (touchPoint.state() == Qt::TouchPointReleased) {
317+ Q_ASSERT(m_touchInfoMap.contains(touchPoint.id()));
318+ Q_ASSERT(m_touchInfoMap[touchPoint.id()].ended);
319+ Q_ASSERT(m_touchInfoMap[touchPoint.id()].ownership == OwnershipGranted);
320+ m_touchInfoMap.remove(touchPoint.id());
321+ }
322+ }
323+}
324+
325+TouchGate::TouchEvent::TouchEvent(const QTouchEvent *event)
326+ : eventType(event->type())
327+ , device(event->device())
328+ , modifiers(event->modifiers())
329+ , touchPoints(event->touchPoints())
330+ , target(event->target())
331+ , window(event->window())
332+ , timestamp(event->timestamp())
333+{
334+}
335+
336+bool TouchGate::TouchEvent::removeTouch(int touchId)
337+{
338+ bool removed = false;
339+ for (int i = 0; i < touchPoints.count() && !removed; ++i) {
340+ if (touchPoints[i].id() == touchId) {
341+ touchPoints.removeAt(i);
342+ removed = true;
343+ }
344+ }
345+
346+ return removed;
347+}
plugins/Ubuntu/Gestures/TouchGate.hnew file+126
@@ -0,0 +1,126 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#ifndef UBUNTU_TOUCH_GATE_H
18+#define UBUNTU_TOUCH_GATE_H
19+
20+#include "UbuntuGesturesQmlGlobal.h"
21+
22+#include <QQuickItem>
23+#include <QList>
24+#include <QPointer>
25+#include <QMap>
26+
27+#define TOUCHGATE_DEBUG 0
28+
29+class TouchOwnershipEvent;
30+
31+/*
32+ Blocks the passage of events until ownership over the related touch points is granted.
33+
34+ Blocked touch events won't be discarded. Instead they will be buffered until ownership
35+ is granted. If ownership is given to another item, the event buffer is cleared.
36+
37+ A TouchGate is useful as a mediator for items that do not understand, or gracefully handle,
38+ touch canceling. By having a TouchGate in front of them you guarantee that only owned touches (i.e.,
39+ touches that won't be canceled later) reaches them.
40+ */
41+class UBUNTUGESTURESQML_EXPORT TouchGate : public QQuickItem {
42+ Q_OBJECT
43+
44+ // Item that's going to receive the touch events that make it through the gate.
45+ Q_PROPERTY(QQuickItem* targetItem READ targetItem WRITE setTargetItem NOTIFY targetItemChanged)
46+
47+public:
48+ bool event(QEvent *e) override;
49+
50+ QQuickItem *targetItem() { return m_targetItem; }
51+ void setTargetItem(QQuickItem *item);
52+
53+Q_SIGNALS:
54+ void targetItemChanged(QQuickItem *item);
55+
56+protected:
57+ void touchEvent(QTouchEvent *event) override;
58+private:
59+ class TouchEvent {
60+ public:
61+ TouchEvent(const QTouchEvent *event);
62+
63+ bool removeTouch(int touchId);
64+
65+ QEvent::Type eventType;
66+ QTouchDevice *device;
67+ Qt::KeyboardModifiers modifiers;
68+ QList<QTouchEvent::TouchPoint> touchPoints;
69+ QObject *target;
70+ QWindow *window;
71+ ulong timestamp;
72+ };
73+
74+ void touchOwnershipEvent(TouchOwnershipEvent *event);
75+ bool isTouchPointOwned(int touchId) const;
76+ void storeTouchEvent(const QTouchEvent *event);
77+ void removeTouchFromStoredEvents(int touchId);
78+ void dispatchFullyOwnedEvents();
79+ bool eventIsFullyOwned(const TouchEvent &event) const;
80+
81+ void dispatchTouchEventToTarget(const TouchEvent &event);
82+ void dispatchTouchEventToTarget(QTouchEvent* event);
83+ void dispatchTouchEventToTarget(
84+ QEvent::Type eventType,
85+ QTouchDevice *device,
86+ Qt::KeyboardModifiers modifiers,
87+ const QList<QTouchEvent::TouchPoint> &touchPoints,
88+ QObject *target,
89+ QWindow *window,
90+ ulong timestamp);
91+
92+ void transformTouchPoints(QList<QTouchEvent::TouchPoint> &touchPoints, const QTransform &transform);
93+ static QTouchEvent *createQTouchEvent(QEvent::Type eventType,
94+ QTouchDevice *device,
95+ Qt::KeyboardModifiers modifiers,
96+ const QList<QTouchEvent::TouchPoint> &touchPoints,
97+ QObject *target,
98+ QWindow *window,
99+ ulong timestamp);
100+ void removeTouchInfoForEndedTouches(const QList<QTouchEvent::TouchPoint> &touchPoints);
101+
102+ #if TOUCHGATE_DEBUG
103+ QString oldestPendingTouchIdsString();
104+ #endif
105+
106+ QList<TouchEvent> m_storedEvents;
107+
108+ enum {
109+ OwnershipUndefined,
110+ OwnershipRequested,
111+ OwnershipGranted,
112+ };
113+ class TouchInfo {
114+ public:
115+ TouchInfo() {ownership = OwnershipUndefined; ended = false;}
116+ int ownership;
117+ bool ended;
118+ };
119+ QMap<int, TouchInfo> m_touchInfoMap;
120+
121+ QPointer<QQuickItem> m_targetItem;
122+
123+ friend class tst_TouchGate;
124+};
125+
126+#endif // UBUNTU_TOUCH_GATE_H
plugins/Ubuntu/Gestures/UbuntuGesturesQmlGlobal.hnew file+23
@@ -0,0 +1,23 @@
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+#include <QtCore/QtGlobal>
18+
19+#if defined(UBUNTUGESTURESQML_LIBRARY)
20+# define UBUNTUGESTURESQML_EXPORT Q_DECL_EXPORT
21+#else
22+# define UBUNTUGESTURESQML_EXPORT Q_DECL_IMPORT
23+#endif
plugins/Ubuntu/Gestures/plugin.cpp+3−1
@@ -19,6 +19,7 @@
19#include "Direction.h"
19#include "Direction.h"
20#include "DirectionalDragArea.h"
20#include "DirectionalDragArea.h"
21#include "PressedOutsideNotifier.h"
21#include "PressedOutsideNotifier.h"
22+#include "TouchGate.h"
22
23
23#include <qqml.h>
24#include <qqml.h>
24
25
@@ -28,10 +29,11 @@ static QObject* directionSingleton(QQmlEngine* engine, QJSEngine* scriptEngine)
28 return new Direction;
29 return new Direction;
29}
30}
30
31
31−void UbuntuGestureQmlPlugin::registerTypes(const char *uri)
32+void UbuntuGesturesQmlPlugin::registerTypes(const char *uri)
32{
33{
33 qmlRegisterSingletonType<Direction>(uri, 0, 1, "Direction", directionSingleton);
34 qmlRegisterSingletonType<Direction>(uri, 0, 1, "Direction", directionSingleton);
34 qmlRegisterType<DirectionalDragArea>(uri, 0, 1, "DirectionalDragArea");
35 qmlRegisterType<DirectionalDragArea>(uri, 0, 1, "DirectionalDragArea");
35 qmlRegisterType<AxisVelocityCalculator>(uri, 0, 1, "AxisVelocityCalculator");
36 qmlRegisterType<AxisVelocityCalculator>(uri, 0, 1, "AxisVelocityCalculator");
36 qmlRegisterType<PressedOutsideNotifier>(uri, 0, 1, "PressedOutsideNotifier");
37 qmlRegisterType<PressedOutsideNotifier>(uri, 0, 1, "PressedOutsideNotifier");
38+ qmlRegisterType<TouchGate>(uri, 0, 1, "TouchGate");
37}
39}
plugins/Ubuntu/Gestures/plugin.h+1−1
@@ -19,7 +19,7 @@
19
19
20#include <QtQml/QQmlExtensionPlugin>
20#include <QtQml/QQmlExtensionPlugin>
21
21
22−class UbuntuGestureQmlPlugin : public QQmlExtensionPlugin
22+class UbuntuGesturesQmlPlugin : public QQmlExtensionPlugin
23{
23{
24 Q_OBJECT
24 Q_OBJECT
25 Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
25 Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
plugins/Ubuntu/Gestures/qmldir+1−1
@@ -1,3 +1,3 @@
1module Ubuntu.Gestures
1module Ubuntu.Gestures
2−plugin UbuntuGestureQml
2+plugin UbuntuGesturesQml
3typeinfo Gestures.qmltypes
3typeinfo Gestures.qmltypes
plugins/Ubuntu/Payments/Payments.cpp+21−1
@@ -41,13 +41,23 @@ static void observer(PayPackage* /* package */, const char* itemid, PayPackageIt
41 case PAY_PACKAGE_ITEM_STATUS_PURCHASED:
41 case PAY_PACKAGE_ITEM_STATUS_PURCHASED:
42 Q_EMIT self->purchaseCompleted();
42 Q_EMIT self->purchaseCompleted();
43 break;
43 break;
44+ case PAY_PACKAGE_ITEM_STATUS_PURCHASING:
45+ self->setPurchasing(true);
46+ break;
47+ case PAY_PACKAGE_ITEM_STATUS_NOT_PURCHASED:
48+ if (self->purchasing()) {
49+ self->setPurchasing(false);
50+ Q_EMIT self->purchaseCancelled();
51+ }
52+ break;
44 default:
53 default:
45 break;
54 break;
46 }
55 }
47}
56}
48
57
49Payments::Payments(QObject *parent)
58Payments::Payments(QObject *parent)
50− : QObject(parent)
59+ : QObject(parent),
60+ m_purchasing(false)
51{
61{
52 m_package = pay_package_new("click-scope");
62 m_package = pay_package_new("click-scope");
53 pay_package_item_observer_install(m_package, observer, this);
63 pay_package_item_observer_install(m_package, observer, this);
@@ -80,6 +90,11 @@ QString Payments::formattedPrice() const
80 return locale.toCurrencyString(m_price, m_currency);
90 return locale.toCurrencyString(m_price, m_currency);
81}
91}
82
92
93+bool Payments::purchasing() const
94+{
95+ return m_purchasing;
96+}
97+
83void Payments::setCurrency(const QString &currency)
98void Payments::setCurrency(const QString &currency)
84{
99{
85 if(m_currency != currency) {
100 if(m_currency != currency) {
@@ -112,6 +127,11 @@ void Payments::setStoreItemId(const QString &store_item_id)
112 pay_package_item_start_verification(m_package, m_store_item_id.toLocal8Bit().data());
127 pay_package_item_start_verification(m_package, m_store_item_id.toLocal8Bit().data());
113}
128}
114
129
130+void Payments::setPurchasing(bool is_purchasing)
131+{
132+ m_purchasing = is_purchasing;
133+}
134+
115void Payments::start()
135void Payments::start()
116{
136{
117 pay_package_item_start_purchase(m_package, m_store_item_id.toLocal8Bit().data());
137 pay_package_item_start_purchase(m_package, m_store_item_id.toLocal8Bit().data());
plugins/Ubuntu/Payments/Payments.h+4
@@ -39,10 +39,12 @@ public:
39 double price() const;
39 double price() const;
40 QString storeItemId() const;
40 QString storeItemId() const;
41 QString formattedPrice() const;
41 QString formattedPrice() const;
42+ bool purchasing() const;
42
43
43 void setCurrency(const QString& currency);
44 void setCurrency(const QString& currency);
44 void setPrice(const double price);
45 void setPrice(const double price);
45 void setStoreItemId(const QString& store_item_id);
46 void setStoreItemId(const QString& store_item_id);
47+ void setPurchasing(bool is_purchasing);
46 Q_INVOKABLE void start();
48 Q_INVOKABLE void start();
47
49
48Q_SIGNALS:
50Q_SIGNALS:
@@ -53,11 +55,13 @@ Q_SIGNALS:
53
55
54 void purchaseError(const QString &error);
56 void purchaseError(const QString &error);
55 void purchaseCompleted();
57 void purchaseCompleted();
58+ void purchaseCancelled();
56
59
57private:
60private:
58 QString m_currency;
61 QString m_currency;
59 double m_price;
62 double m_price;
60 QString m_store_item_id;
63 QString m_store_item_id;
64+ bool m_purchasing;
61
65
62 PayPackage *m_package;
66 PayPackage *m_package;
63};
67};
plugins/Ubuntu/SystemImage/SystemImage.qmltypes+2
@@ -11,6 +11,8 @@ Module {
11 name: "SystemImage"
11 name: "SystemImage"
12 prototype: "QObject"
12 prototype: "QObject"
13 exports: ["Ubuntu.SystemImage/SystemImage 0.1"]
13 exports: ["Ubuntu.SystemImage/SystemImage 0.1"]
14+ isCreatable: false
15+ isSingleton: true
14 exportMetaObjectRevisions: [0]
16 exportMetaObjectRevisions: [0]
15 Method { name: "factoryReset" }
17 Method { name: "factoryReset" }
16 }
18 }
plugins/Unity/DashCommunicator/CMakeLists.txt+8−2
@@ -1,5 +1,6 @@
1include_directories(
1include_directories(
2 ${CMAKE_CURRENT_SOURCE_DIR}
2 ${CMAKE_CURRENT_SOURCE_DIR}
3+ ${libunity8-private_SOURCE_DIR}
3)
4)
4
5
5set(QMLDASHCOMMUNICATORPLUGIN_SRC
6set(QMLDASHCOMMUNICATORPLUGIN_SRC
@@ -7,13 +8,18 @@ set(QMLDASHCOMMUNICATORPLUGIN_SRC
7 dbusdashcommunicatorservice.cpp
8 dbusdashcommunicatorservice.cpp
8 dashcommunicatorservice.cpp
9 dashcommunicatorservice.cpp
9 dashcommunicator.cpp
10 dashcommunicator.cpp
11+ dashconnection.cpp
10− )
12+)
11
13
12add_library(DashCommunicator-qml MODULE
14add_library(DashCommunicator-qml MODULE
13 ${QMLDASHCOMMUNICATORPLUGIN_SRC}
15 ${QMLDASHCOMMUNICATORPLUGIN_SRC}
14− )
16+)
15
17
16qt5_use_modules(DashCommunicator-qml DBus Qml)
18qt5_use_modules(DashCommunicator-qml DBus Qml)
17
19
20+target_link_libraries(DashCommunicator-qml
21+ unity8-private
22+)
23+
18# export the qmldir and qmltypes files
24# export the qmldir and qmltypes files
19add_unity8_plugin(Unity.DashCommunicator 0.1 Unity/DashCommunicator TARGETS DashCommunicator-qml)
25add_unity8_plugin(Unity.DashCommunicator 0.1 Unity/DashCommunicator TARGETS DashCommunicator-qml)
plugins/Unity/DashCommunicator/dashcommunicator.cpp+22−13
@@ -15,29 +15,38 @@
15 */
15 */
16
16
17#include "dashcommunicator.h"
17#include "dashcommunicator.h"
18+#include "dashconnection.h"
18
19
19#include <QObject>
20#include <QObject>
20−#include <QDBusConnection>
21−#include <QDBusInterface>
22−#include <QDebug>
23
21
24DashCommunicator::DashCommunicator(QObject *parent):
22DashCommunicator::DashCommunicator(QObject *parent):
25− QObject(parent)
23+ QThread(parent),
24+ m_dashConnection(nullptr),
25+ m_created(false)
26{
26{
27+ start();
27}
28}
28
29
29−DashCommunicator::~DashCommunicator()
30+void DashCommunicator::setCurrentScope(const QString &scopeId, bool animate, bool isSwipe)
30{
31{
32+ m_mutex.lock();
33+ if (m_created) {
34+ QMetaObject::invokeMethod(m_dashConnection, "setCurrentScope",
35+ Q_ARG(QString, scopeId),
36+ Q_ARG(bool, animate),
37+ Q_ARG(bool, isSwipe));
38+ }
39+ m_mutex.unlock();
31}
40}
32
41
33−
34−void DashCommunicator::setCurrentScope(const QString &scopeId, bool animate, bool reset)
42+void DashCommunicator::run()
35{
43{
36− QDBusConnection connection = QDBusConnection::sessionBus();
37− QDBusInterface dashIface ("com.canonical.UnityDash",
44+ m_dashConnection = new DashConnection("com.canonical.UnityDash",
38− "/com/canonical/UnityDash",
45+ "/com/canonical/UnityDash",
39− "",
46+ "", this);
40− connection);
47+ m_mutex.lock();
48+ m_created = true;
49+ m_mutex.unlock();
41
50
42− dashIface.call("SetCurrentScope", scopeId, animate, reset);
51+ exec();
43}
52}
plugins/Unity/DashCommunicator/dashcommunicator.h+17−7
@@ -17,19 +17,29 @@
17#ifndef DASHCOMMUNICATOR_H
17#ifndef DASHCOMMUNICATOR_H
18#define DASHCOMMUNICATOR_H
18#define DASHCOMMUNICATOR_H
19
19
20+// Qt
20−#include <QObject>
21+#include <QThread>
22+#include <QMutex>
21
23
24+class DashConnection;
25+
22−class DashCommunicator: public QObject
26+class DashCommunicator: public QThread
23{
27{
24 Q_OBJECT
28 Q_OBJECT
25− Q_CLASSINFO("D-Bus Interface", "com.canonical.Unity.DashCommunicator")
26−
27public:
29public:
28− DashCommunicator(QObject *parent = 0);
30+ explicit DashCommunicator(QObject *parent = 0);
29− ~DashCommunicator();
31+ ~DashCommunicator() = default;
30
32
31public Q_SLOTS:
33public Q_SLOTS:
32− void setCurrentScope(const QString &scopeId, bool animate, bool reset);
34+ void setCurrentScope(const QString &scopeId, bool animate, bool isSwipe);
35+
36+protected:
37+ void run() override;
38+
39+private:
40+ DashConnection *m_dashConnection;
41+ bool m_created;
42+ QMutex m_mutex;
33};
43};
34
44
35#endif
45#endif
plugins/Unity/DashCommunicator/dashcommunicatorservice.h+1−1
@@ -29,7 +29,7 @@ public:
29 ~DashCommunicatorService();
29 ~DashCommunicatorService();
30
30
31Q_SIGNALS:
31Q_SIGNALS:
32− void setCurrentScopeRequested(const QString &scopeId, bool animate, bool reset);
32+ void setCurrentScopeRequested(const QString &scopeId, bool animate, bool isSwipe);
33
33
34private:
34private:
35 DBusDashCommunicatorService *m_dbusService;
35 DBusDashCommunicatorService *m_dbusService;
plugins/Unity/DashCommunicator/dashconnection.cppnew file+33
@@ -0,0 +1,33 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software: you can redistribute it and/or modify it under
5+ * the terms of the GNU Lesser General Public License version 3, as published by
6+ * the Free Software Foundation.
7+ *
8+ * This program is distributed in the hope that it will be useful, but WITHOUT
9+ * ANY WARRANTY; without even the implied warranties of MERCHANTABILITY,
10+ * SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11+ * Lesser General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU Lesser General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#include "dashconnection.h"
18+
19+#include <QDBusInterface>
20+#include <QDBusPendingCall>
21+
22+DashConnection::DashConnection(const QString &service, const QString &path, const QString &interface, QObject *parent):
23+ AbstractDBusServiceMonitor(service, path, interface, SessionBus, parent)
24+{
25+
26+}
27+
28+void DashConnection::setCurrentScope(const QString &scopeId, bool animate, bool isSwipe)
29+{
30+ if (dbusInterface()) {
31+ dbusInterface()->asyncCall("SetCurrentScope", scopeId, animate, isSwipe);
32+ }
33+}
plugins/Unity/DashCommunicator/dashconnection.hnew file+34
@@ -0,0 +1,34 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software: you can redistribute it and/or modify it under
5+ * the terms of the GNU Lesser General Public License version 3, as published by
6+ * the Free Software Foundation.
7+ *
8+ * This program is distributed in the hope that it will be useful, but WITHOUT
9+ * ANY WARRANTY; without even the implied warranties of MERCHANTABILITY,
10+ * SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11+ * Lesser General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU Lesser General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#ifndef THREADEDDASHCONNECTION_H
18+#define THREADEDDASHCONNECTION_H
19+
20+// local
21+#include "abstractdbusservicemonitor.h"
22+
23+
24+class DashConnection: public AbstractDBusServiceMonitor
25+{
26+ Q_OBJECT
27+public:
28+ DashConnection(const QString &service, const QString &path, const QString &interface, QObject *parent = 0);
29+
30+public Q_SLOTS:
31+ void setCurrentScope(const QString &scopeId, bool animate, bool isSwipe);
32+};
33+
34+#endif
plugins/Unity/DashCommunicator/dbusdashcommunicatorservice.cpp+2−2
@@ -33,7 +33,7 @@ DBusDashCommunicatorService::~DBusDashCommunicatorService()
33{
33{
34}
34}
35
35
36−void DBusDashCommunicatorService::SetCurrentScope(const QString &scopeId, bool animate, bool reset)
36+void DBusDashCommunicatorService::SetCurrentScope(const QString &scopeId, bool animate, bool isSwipe)
37{
37{
38− Q_EMIT setCurrentScopeRequested(scopeId, animate, reset);
38+ Q_EMIT setCurrentScopeRequested(scopeId, animate, isSwipe);
39}
39}
plugins/Unity/DashCommunicator/dbusdashcommunicatorservice.h+2−2
@@ -29,10 +29,10 @@ public:
29 ~DBusDashCommunicatorService();
29 ~DBusDashCommunicatorService();
30
30
31Q_SIGNALS:
31Q_SIGNALS:
32− void setCurrentScopeRequested(const QString &scopeId, bool animate, bool reset);
32+ void setCurrentScopeRequested(const QString &scopeId, bool animate, bool isSwipe);
33
33
34public Q_SLOTS:
34public Q_SLOTS:
35− Q_SCRIPTABLE void SetCurrentScope(const QString &scopeId, bool animate, bool reset);
35+ Q_SCRIPTABLE void SetCurrentScope(const QString &scopeId, bool animate, bool isSwipe);
36
36
37};
37};
38
38
plugins/Unity/Indicators/CMakeLists.txt−9
@@ -30,16 +30,7 @@ set(IndicatorsQML_SOURCES
30)
30)
31add_definitions(-DUNITYINDICATORS_LIBRARY)
31add_definitions(-DUNITYINDICATORS_LIBRARY)
32
32
33−set(IndicatorsQML_RESOURCES
34− resources/indicators.qrc
35−)
36−
37−qt5_add_resources(IndicatorsQML_RESOURCES_RCC
38− ${IndicatorsQML_RESOURCES}
39−)
40−
41add_library(IndicatorsQml SHARED
33add_library(IndicatorsQml SHARED
42− ${IndicatorsQML_RESOURCES_RCC}
43 ${IndicatorsQML_SOURCES}
34 ${IndicatorsQML_SOURCES}
44)
35)
45
36
plugins/Unity/Indicators/Indicators.qmltypes+6−4
@@ -219,12 +219,14 @@ Module {
219 Method {
219 Method {
220 name: "model"
220 name: "model"
221 type: "UnityMenuModel*"
221 type: "UnityMenuModel*"
222− Parameter { name: "path"; type: "string" }
222+ Parameter { name: "bus"; type: "QByteArray" }
223+ Parameter { name: "path"; type: "QByteArray" }
224+ Parameter { name: "actions"; type: "QVariantMap" }
223 }
225 }
224 Method {
226 Method {
225− name: "registerModel"
227+ name: "contains"
228+ type: "bool"
226− Parameter { name: "path"; type: "string" }
229+ Parameter { name: "path"; type: "QByteArray" }
227− Parameter { name: "menuModel"; type: "UnityMenuModel"; isPointer: true }
228 }
230 }
229 }
231 }
230 Component {
232 Component {
plugins/Unity/Indicators/plugin.cpp−2
@@ -42,8 +42,6 @@ static QObject* menuModelCacheSingleton(QQmlEngine* engine, QJSEngine* scriptEng
42
42
43void Indicators2Plugin::registerTypes(const char *uri)
43void Indicators2Plugin::registerTypes(const char *uri)
44{
44{
45− Q_INIT_RESOURCE(indicators);
46−
47 qmlRegisterType<IndicatorsManager>(uri, 0, 1, "IndicatorsManager");
45 qmlRegisterType<IndicatorsManager>(uri, 0, 1, "IndicatorsManager");
48 qmlRegisterType<IndicatorsModel>(uri, 0, 1, "IndicatorsModel");
46 qmlRegisterType<IndicatorsModel>(uri, 0, 1, "IndicatorsModel");
49 qmlRegisterType<MenuContentActivator>(uri, 0, 1, "MenuContentActivator");
47 qmlRegisterType<MenuContentActivator>(uri, 0, 1, "MenuContentActivator");
plugins/Unity/Indicators/resources/artwork/messaging/default_app.svgdeleted−42
@@ -1,42 +0,0 @@
1−<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2−<!-- Created with Inkscape (http://www.inkscape.org/) -->
3−<svg id="svg15137" xmlns="http://www.w3.org/2000/svg" height="48" width="48" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink">
4− <defs id="defs15139">
5− <radialGradient id="radialGradient2612" gradientUnits="userSpaceOnUse" cy="4.625" cx="62.625" gradientTransform="matrix(1 0 0 .34118 0 3.0471)" r="10.625">
6− <stop id="stop8840" offset="0"/>
7− <stop id="stop8842" style="stop-opacity:0" offset="1"/>
8− </radialGradient>
9− <linearGradient id="linearGradient15133" y2=".24326" gradientUnits="userSpaceOnUse" x2="62.2" gradientTransform="matrix(2.1499 0 0 2.1499 -110.12 31.935)" y1="-12.489" x1="62.2">
10− <stop id="stop4875" style="stop-color:#fff" offset="0"/>
11− <stop id="stop4877" style="stop-color:#fff;stop-opacity:0" offset="1"/>
12− </linearGradient>
13− <radialGradient id="radialGradient15127" gradientUnits="userSpaceOnUse" cy="-8.7256" cx="62.2" gradientTransform="matrix(2.4129 0 0 2.413 -126.48 34.231)" r="9.7553">
14− <stop id="stop8649" style="stop-color:#8fb1dc" offset="0"/>
15− <stop id="stop8651" style="stop-color:#3465a4" offset="1"/>
16− </radialGradient>
17− <radialGradient id="radialGradient2418" gradientUnits="userSpaceOnUse" cy="24.149" cx="17.814" gradientTransform="matrix(-2.644 0 2.9365e-8 2.5344 78.725 -37.986)" r="9.125">
18− <stop id="stop4847" style="stop-color:#fff" offset="0"/>
19− <stop id="stop4849" style="stop-color:#b6b6b6" offset="1"/>
20− </radialGradient>
21− <radialGradient id="radialGradient5145" gradientUnits="userSpaceOnUse" cy="13.067" cx="23.86" gradientTransform="matrix(-1.5425 0 0 -.84553 60.718 23.829)" r="18.098">
22− <stop id="stop14112" style="stop-color:#557695" offset="0"/>
23− <stop id="stop14114" style="stop-color:#15395c" offset="1"/>
24− </radialGradient>
25− <radialGradient id="radialGradient5147" gradientUnits="userSpaceOnUse" cy="-3.442" cx="62.225" gradientTransform="matrix(1.1035 0 0 1.0265 -4.1555 -1.8158)" r="10.081">
26− <stop id="stop14118" style="stop-color:#9e9e9e" offset="0"/>
27− <stop id="stop14120" style="stop-color:#9e9e9e;stop-opacity:0" offset="1"/>
28− </radialGradient>
29− </defs>
30− <g id="layer1">
31− <path id="path8836" style="opacity:.4;fill-rule:evenodd;fill:url(#radialGradient2612)" d="m73.25 4.625a10.625 3.625 0 1 1 -21.25 0 10.625 3.625 0 1 1 21.25 0z" transform="matrix(2.1647 0 0 2.5637 -111.56 26.85)"/>
32− <g id="g15122" transform="translate(.79042 -.78563)">
33− <path id="path6495" style="stroke:#204a87;fill:url(#radialGradient15127)" d="m43.505 24.387c0 10.99-8.9091 19.899-19.897 19.899-10.989 0-19.898-8.9091-19.898-19.899 0-10.989 8.9086-19.897 19.898-19.897 10.988 0 19.897 8.9081 19.897 19.897z"/>
34− <path id="path6534" style="stroke:url(#radialGradient5147);stroke-width:1.1035;fill:url(#radialGradient5145)" d="m23.726 5.3141c-1.5283 0.12067-3.0328 0.36544-4.4919 0.84567-1.23 0.48843 0.88689-0.42988-0.37486-0.60468-0.75942-0.12994-1.0776 0.65251-1.7561 0.67046-0.7741 0.023841-1.3048 0.71572-2.0319 0.79898-0.26187 1.4432-0.59924-0.56894-0.83949 0.13173 0.19047 0.7212-0.07796 1.1928-0.63582 1.6119-0.60156 0.68249-0.03584 1.2934 0.54212 0.69395 0.2775-0.83446 1.1825-1.7618 2.0655-1.2049 0.8837 0.48448 1.7582 1.6525 2.4938 0.40935-0.75488-0.090735-1.0462-0.73637-1.4079-1.2096-0.40023 0.031761-2.0794-0.32019-1.0059-0.24024 0.5284-0.17249 1.549-0.68558 1.9239-0.66537-0.94013 0.49026 0.35015 0.81268 0.73202 1.2035 0.68671 0.20357 0.99776 1.0757 0.37414 1.527-0.80181 0.4162 0.05573 1.1017 0.221 1.6748 0.12828 0.99827 0.99623 0.43282 1.2716-0.18046 0.39803-1.1153 1.6733-1.0767 2.5958-1.5522 1.008-0.51754 1.0248-0.53575 1.5034 0.20195 0.36764 0.21151 1.5947-0.55825 0.78901-0.929-0.68957 0.03713-1.142 0.46029-0.56364-0.60801 0.13915-0.57404 0.6791-1.3235 0.58092-1.7937-0.662-0.2603-1.324-0.5207-1.986-0.7811zm-9.3732 3.6945c0.35612 0.3643 1.5564 1.0234 1.4368 0.11255-0.14419-0.61744-1.0418-0.62308-1.4368-0.11255zm18.165-0.44471c-0.82412 0.16922-1.6412 0.35467-2.292 0.92363 0.19457 0.7853-0.8341 0.89786-1.2851 1.3281-0.12036 0.25242-0.02467 1.8403 0.51105 1.1573 0.58162-0.77246 0.83368 0.40868 1.4478 0.52687 0.4451-0.14324 0.5002-1.1438 0.33275-1.6043 0.28525-0.46984 0.75058-1.1195 1.3539-1.0659-0.37419 0.57099-0.80163 2.0315 0.3911 1.4345 0.34518-0.006-0.93958 0.75452-1.0166 1.273-0.48258 0.51284-0.9934 0.90587-1.6905 0.50847-0.33355-0.28162-0.50305-1.0992-0.71414-0.17566 0.43341 0.73252-1.089 0.04718-1.0514 1.0356-0.31972 0.61514-0.89623 0.8671-1.563 0.91149 0.24198 0.19141 1.1924 1.3314 0.24953 1.1701-0.60352 0.06628-1.4857 0.40701-1.2414 1.1653-0.27486 0.9444 0.4249 0.70654 0.85522 1.2977 0.70116-0.19916 1.1488-0.62908 1.2634-1.3621 0.65618-0.19273 0.73557-0.93195 1.456-0.91702 0.7182-0.40381 0.88559 0.73738 1.5587 0.82181 0.07058 0.4087-0.33464 1.281 0.45659 0.4693 0.76441-0.55387-0.79512-1.2716-0.30963-1.4066 0.69099 0.22071 0.94006 0.87671 1.051 1.519 0.56306 0.9634 0.70185 0.44404 0.74672-0.40362 0.87723-0.39439 1.1473 1.641 2.3881 1.1397 0.92678 0.19174 0.59949 0.8304-0.01904 1.2203-0.50066 0.47112-1.3382 0.17338-1.9265-0.01558-0.56472-0.27756-1.3196-0.24813-1.6214 0.38347-0.46529-0.21764-0.94642-0.91135-1.4178-1.3118-1.1647-0.5139-2.4314-0.07571-3.5919 0.23946-0.99563 1.1632-2.1949 2.219-2.6236 3.7359-0.62778 0.63853 0.54336 1.0082-0.24392 1.556-0.6428 0.51279 0.10805 1.1629 0.2458 1.7527 0.60445 0.74395 1.6306 3.0723 2.5708 2.1452 0.52705-0.80245 0.81963 0.61582 1.4399-0.30194 0.4952-0.39949 0.9695 0.45802 1.6897 0.14331 0.69372 0.4284 0.56095 1.0433 0.27484 1.6928 0.15583 0.54087 0.93098 0.9344 0.62978 1.6677-0.27366 0.68309 0.58312 1.201 0.41038 1.7987-0.5748 1.1512-0.43928 2.5747 0.09386 3.7157 0.42668 1.0325 0.67699 2.1484 0.64366 3.2692 0.74277 0.2222 1.1367-0.72912 1.8776-0.51313 0.72333 0.09324 0.99191-0.82974 1.5008-1.2158 0.56704-0.46747-0.07223-1.1873 0.82794-1.5185 0.87331-0.42523-1.106-1.0213 0.0152-1.4024 0.46515-0.51761 1.4132-0.69776 1.6008-1.3735-0.33834-1.0398-0.21797-2.1801-0.16738-3.2436 0.32552-0.84167 0.72975-1.6312 1.4262-2.2272 0.28082-0.92669 0.94924-1.7777 0.88942-2.7709-1.6476 0.50399-1.1482-0.21491-0.22962-0.87318 0.63508-0.42199 1.4051-0.84564 1.7006-1.5617 0.14435-0.81048-0.45227-2.1297-1.0079-0.90496-0.24511-0.4707-1.1542-0.71744-1.113-1.3307-0.17659-1.2625 0.34462-0.14427 0.86051 0.10789 1.1146-0.60521 1.6818 1.7766 2.3893 0.35503-0.618-4.471-3.052-8.528-6.34-11.567-0.571-1.0949-0.921 0.75-1.501 0.68-0.464-0.485-1.33-1.1394-0.122-0.914 1.034-0.3028 0.333-0.7027-0.425-0.6842-0.574-0.0697-1.101-0.2706-1.635-0.4789zm-20.56 0.4447c-0.275 1.3534-2.0109 1.1954-2.6162 2.5304-2.9783 3.153-4.8166 7.302-5.32 11.598 0.26584 1.0071 1.1105 1.4908 1.9601 1.9373 0.72184 0.41932 1.7801 0.2342 2.1848 1.1124 0.45187 0.36983 0.93948 1.0997 1.5856 0.87722 0.93664-0.09099 0.36019 0.85823 0.19973 1.3392-0.059277 0.607-0.80778 0.99372-0.52016 1.5778-0.24136 0.66166-0.43304 1.3177 0.10262 1.8906 0.45551 0.83988 0.82632 1.7478 1.6708 2.2751 0.59217 0.49728 1.2625 1.1553 1.0304 1.9974-0.12338 0.68167 0.04306 1.3099 0.3725 1.908-0.11816 0.67146-0.36073 1.3584-0.4105 2.0183 0.87949 0.62206 2.6705 2.0606 2.8031 0.49489 0.50176-0.45161 0.5321-1.1784 1.3743-1.1804 0.3909-0.47777 0.52549-1.2283 0.81706-1.8117-0.42572-0.5384 0.16631-1.3697 0.8046-1.3477 0.81594 0.06128 0.78593-0.89448 1.1111-1.4232-0.0073-0.77224-0.38892-1.6471 0.30542-2.227 0.52242-0.47344 0.46827-1.1675 0.5498-1.8097-1.171-0.7244-2.712-1.0911-3.6386-2.0687-0.18364-0.76504-0.7598-1.0229-1.4925-1.0784-0.30936-0.43256-0.25697-1.4628-0.79753-1.5131-0.69628 0.13369-1.3857 0.24089-1.8917-0.3644-0.573-0.776-1.069 0.2-1.593 0.546-0.492 0.856-1.8683-0.043-1.7038-1.007 0.4839-1.334-1.6425 0.148-0.7699-1.425 0.4151-1.715-0.7067-0.396-1.2952-0.011-0.71822 0.0081-0.98953-0.70747-0.86146-1.3625-0.091117-0.78733 0.48283-1.1877 1.0669-1.5822 0.78161 0.12038 0.97989-0.56085 1.5654-0.4722 0.73603-0.03767 1.0049 0.66782 1.4232 1.1357 0.17514-0.66797-0.18345-1.6152 0.55606-1.9879 0.56414-0.42781 1.137-0.84927 1.2721-1.5904 0.13304-0.77598 1.2893-0.46761 1.4837-1.2526 0.26877-0.8206 1.5114-0.15823 1.7899-0.96804 0.8733-0.82086-0.27242-0.57178-0.89854-0.59806-1.2353 0.12695 0.1228-0.32763 0.58598-0.58155 0.68608 0.09073 1.3195-0.13384 1.9499-0.37629 0.08445 0.85843 0.24597 1.3112 0.68417 0.30788-0.85421-0.20211-0.11618-1.0402-0.95973-1.2614-0.66764 0.04697 0.0066-1.4189-0.81571-1.2577-1.0697 0.70782-0.11401-0.50251-0.9854-0.66347-0.68736-0.74222-0.85436 0.47657-1.2276 0.9183 0.24207 0.84702-0.79095 0.66525-0.97976 1.3606-0.41814 1.2534-0.24143-0.08931-0.74055-0.41035-0.61653-0.24732-1.3592-0.3784-1.3637-1.1899 0.82658-0.60512 2.0667-0.96189 2.5994-1.9148 0.3095-0.74008-0.26215-1.1445-0.96618-1.0889l-0.000005-2e-7zm14.675 1.642c-0.12491 0.65746 0.5475 1.009 0.30788 1.7104-0.21487 0.76842-0.27728 1.3789 0.68289 0.93046 0.99668-0.51183 0.36052-0.90148-0.03867-1.5728-0.27187-0.44613-0.24574-1.275-0.9521-1.0681zm-0.75259 1.0947c-0.79414-0.24012-0.61745 1.4493-0.12164 1.0118 0.7276-0.17916 0.23703-0.5252 0.12164-1.0118zm10.023 8.9969c0.95184 0.84444 1.277 2.0946 1.8858 3.1596 0.90428 0.39972 0.0415 1.0795 0.44521 1.5712 0.84897 0.92228-1.1752 0.24516-0.90606-0.67899-0.1971-1.2139-1.0559-2.044-1.4678-3.1045-0.04294-0.3526-0.38552-0.71788 0.04284-0.94732z"/>
35− <path id="path8655" style="opacity:.4;stroke:url(#linearGradient15133);fill:none" d="m42.409 24.387c0 10.384-8.4184 18.803-18.801 18.803-10.384 0-18.802-8.4184-18.802-18.803 0-10.384 8.418-18.801 18.802-18.801 10.383 0 18.801 8.4175 18.801 18.801z"/>
36− </g>
37− <g id="g2414" transform="matrix(.99991 -.013701 .013701 .99991 -.28870 .53585)">
38− <path id="path3970" style="stroke-linejoin:round;fill-rule:evenodd;stroke:#666;fill:url(#radialGradient2418)" d="m30.5 20.937 17 16.5-7.75 0.25s3.25 6.75 3.25 6.75c1 3-3.5 4.125-4.25 1.875l-3-6.75-5.5 5.875 0.25-24.5z"/>
39− <path id="path4853" style="opacity:.4;stroke:#fff;fill:none" d="m31.657 23.379 13.476 13.186-6.9219 0.27746l3.8721 7.7566c0.40273 1.6501-2.0283 2.4126-2.5071 1.1529l-3.6831-7.845-4.4247 4.7083 0.18907-19.236z"/>
40− </g>
41− </g>
42−</svg>
plugins/Unity/Indicators/resources/artwork/messaging/default_contact.pngdeleted

Binary file not shown.

plugins/Unity/Indicators/resources/indicators.qrcdeleted−6
@@ -1,6 +0,0 @@
1−<RCC>
2− <qresource prefix="/indicators">
3− <file>artwork/messaging/default_contact.png</file>
4− <file>artwork/messaging/default_app.svg</file>
5− </qresource>
6−</RCC>
plugins/Unity/Launcher/CMakeLists.txt+7−5
@@ -1,6 +1,6 @@
1include(FindPkgConfig)
1include(FindPkgConfig)
2−pkg_check_modules(LAUNCHER_API REQUIRED unity-shell-launcher=3)
2+pkg_check_modules(LAUNCHER_API REQUIRED unity-shell-launcher=4)
3−pkg_check_modules(APPLICATION_API REQUIRED unity-shell-application=3)
3+pkg_check_modules(APPLICATION_API REQUIRED unity-shell-application=5)
4pkg_check_modules(GSETTINGS_QT REQUIRED gsettings-qt)
4pkg_check_modules(GSETTINGS_QT REQUIRED gsettings-qt)
5
5
6add_definitions(-DSM_BUSNAME=systemBus)
6add_definitions(-DSM_BUSNAME=systemBus)
@@ -16,8 +16,10 @@ set(QMLLAUNCHERPLUGIN_SRC
16 launchermodel.cpp
16 launchermodel.cpp
17 launcheritem.cpp
17 launcheritem.cpp
18 quicklistmodel.cpp
18 quicklistmodel.cpp
19− common/quicklistentry.cpp
19+ quicklistentry.cpp
20− backend/launcherbackend.cpp
20+ dbusinterface.cpp
21+ gsettings.cpp
22+ desktopfilehandler.cpp
21 ${CMAKE_SOURCE_DIR}/plugins/AccountsService/AccountsServiceDBusAdaptor.cpp
23 ${CMAKE_SOURCE_DIR}/plugins/AccountsService/AccountsServiceDBusAdaptor.cpp
22 ${LAUNCHER_API_INCLUDEDIR}/unity/shell/launcher/LauncherItemInterface.h
24 ${LAUNCHER_API_INCLUDEDIR}/unity/shell/launcher/LauncherItemInterface.h
23 ${LAUNCHER_API_INCLUDEDIR}/unity/shell/launcher/LauncherModelInterface.h
25 ${LAUNCHER_API_INCLUDEDIR}/unity/shell/launcher/LauncherModelInterface.h
@@ -30,6 +32,6 @@ add_library(UnityLauncher-qml MODULE
30
32
31target_link_libraries(UnityLauncher-qml ${GSETTINGS_QT_LDFLAGS})
33target_link_libraries(UnityLauncher-qml ${GSETTINGS_QT_LDFLAGS})
32
34
33−qt5_use_modules(UnityLauncher-qml DBus Qml)
35+qt5_use_modules(UnityLauncher-qml DBus Qml Gui)
34
36
35add_unity8_plugin(Unity.Launcher 0.1 Unity/Launcher TARGETS UnityLauncher-qml)
37add_unity8_plugin(Unity.Launcher 0.1 Unity/Launcher TARGETS UnityLauncher-qml)
plugins/Unity/Launcher/backend/launcherbackend.cppdeleted−584
@@ -1,584 +0,0 @@
1−/*
2− * Copyright (C) 2013 Canonical, Ltd.
3− *
4− * Authors:
5− * Michael Terry <michael.terry@canonical.com>
6− * Michael Zanetti <michael.zanetti@canonical.com>
7− *
8− * This program is free software; you can redistribute it and/or modify
9− * it under the terms of the GNU General Public License as published by
10− * the Free Software Foundation; version 3.
11− *
12− * This program is distributed in the hope that it will be useful,
13− * but WITHOUT ANY WARRANTY; without even the implied warranty of
14− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15− * GNU General Public License for more details.
16− *
17− * You should have received a copy of the GNU General Public License
18− * along with this program. If not, see <http://www.gnu.org/licenses/>.
19− */
20−
21−#include "AccountsServiceDBusAdaptor.h"
22−#include "launcherbackend.h"
23−
24−#include <QDir>
25−#include <QDBusArgument>
26−#include <QFileInfo>
27−#include <QGSettings>
28−#include <QDebug>
29−#include <QStandardPaths>
30−
31−class LauncherBackendItem
32−{
33−public:
34− QString displayName;
35− QString icon;
36− int count;
37− bool countVisible;
38−};
39−
40−LauncherBackend::LauncherBackend(QObject *parent):
41− QDBusVirtualObject(parent),
42− m_accounts(nullptr)
43−{
44−#ifndef LAUNCHER_TESTING
45− m_accounts = new AccountsServiceDBusAdaptor(this);
46−#endif
47− m_user = qgetenv("USER");
48− syncFromAccounts();
49−
50− /* Set up ourselves on DBus */
51− QDBusConnection con = QDBusConnection::sessionBus();
52− if (!con.registerService("com.canonical.Unity.Launcher")) {
53− qDebug() << "Unable to register launcher name";
54− }
55− if (!con.registerVirtualObject("/com/canonical/Unity/Launcher", this, QDBusConnection::VirtualObjectRegisterOption::SubPath)) {
56− qDebug() << "Unable to register launcher object";
57− }
58−}
59−
60−LauncherBackend::~LauncherBackend()
61−{
62− /* Remove oursevles from DBus */
63− QDBusConnection con = QDBusConnection::sessionBus();
64− con.unregisterService("com.canonical.Unity.Launcher");
65− con.unregisterObject("/com/canonical/Unity/Launcher");
66−
67− /* Clear data */
68− m_storedApps.clear();
69−
70− Q_FOREACH(LauncherBackendItem *item, m_itemCache) {
71− delete item;
72− }
73− m_itemCache.clear();
74−}
75−
76−QStringList LauncherBackend::storedApplications() const
77−{
78− return m_storedApps;
79−}
80−
81−void LauncherBackend::setStoredApplications(const QStringList &appIds)
82−{
83− if (appIds.count() < m_storedApps.count()) {
84− Q_FOREACH(const QString &appId, m_storedApps) {
85− if (!appIds.contains(appId)) {
86− delete m_itemCache.take(appId);
87− }
88− }
89− }
90− m_storedApps = appIds;
91− Q_FOREACH(const QString &appId, appIds) {
92− if (!m_itemCache.contains(appId)) {
93− QString df = findDesktopFile(appId);
94− if (!df.isEmpty()) {
95− LauncherBackendItem *item = parseDesktopFile(df);
96− m_itemCache.insert(appId, item);
97− } else {
98− // Cannot find any data for that app... ignoring it.
99− qWarning() << "cannot find desktop file for" << appId << ". discarding app.";
100− m_storedApps.removeAll(appId);
101− }
102− }
103− }
104− syncToAccounts();
105−}
106−
107−QString LauncherBackend::desktopFile(const QString &appId) const
108−{
109− return findDesktopFile(appId);
110−}
111−
112−QString LauncherBackend::displayName(const QString &appId) const
113−{
114− LauncherBackendItem *item = m_itemCache.value(appId, nullptr);
115− if (item) {
116− return item->displayName;
117− }
118−
119− QString df = findDesktopFile(appId);
120− if (!df.isEmpty()) {
121− LauncherBackendItem *item = parseDesktopFile(df);
122− m_itemCache.insert(appId, item);
123− return item->displayName;
124− }
125−
126− return QString();
127−}
128−
129−QString LauncherBackend::icon(const QString &appId) const
130−{
131− QString iconName;
132− LauncherBackendItem *item = getItem(appId);
133− if (item) {
134− iconName = item->icon;
135− }
136−
137− return iconName;
138−}
139−
140−QList<QuickListEntry> LauncherBackend::quickList(const QString &appId) const
141−{
142− // TODO: Get static (from .desktop file) and dynamic (from the app itself)
143− // entries and return them here. Frontend related entries (like "Pin to launcher")
144− // don't matter here. This is just the backend part.
145− // TODO: emit quickListChanged() when the dynamic part changes
146− Q_UNUSED(appId)
147− return QList<QuickListEntry>();
148−}
149−
150−int LauncherBackend::progress(const QString &appId) const
151−{
152− // TODO: Return value for progress emblem.
153− // TODO: emit progressChanged() when this value changes.
154− Q_UNUSED(appId)
155− return -1;
156−}
157−
158−int LauncherBackend::count(const QString &appId) const
159−{
160− int count = -1;
161− LauncherBackendItem *item = getItem(appId);
162−
163− if (item) {
164− if (item->countVisible) {
165− count = item->count;
166− }
167− }
168−
169− return count;
170−}
171−
172−void LauncherBackend::setCount(const QString &appId, int count) const
173−{
174− LauncherBackendItem *item = getItem(appId);
175−
176− bool emitchange = false;
177− if (item) {
178− emitchange = (item->count != count);
179− item->count = count;
180− }
181−
182− if (emitchange) {
183− /* TODO: This needs to use the accessor to handle the visibility
184− correctly, but when we have the two properties we can just use
185− the local value */
186− Q_EMIT countChanged(appId, this->count(appId));
187− QVariant vcount(item->count);
188− emitPropChangedDbus(appId, "count", vcount);
189− }
190−}
191−
192−bool LauncherBackend::countVisible(const QString &appId) const
193−{
194− bool visible = false;
195− LauncherBackendItem *item = getItem(appId);
196−
197− if (item) {
198− visible = item->countVisible;
199− }
200−
201− return visible;
202−}
203−
204−void LauncherBackend::setCountVisible(const QString &appId, bool visible) const
205−{
206− LauncherBackendItem *item = getItem(appId);
207−
208− bool emitchange = false;
209− if (item) {
210− emitchange = (item->countVisible != visible);
211− item->countVisible = visible;
212− } else {
213− qDebug() << "Unable to find:" << appId;
214− }
215−
216− if (emitchange) {
217− /* TODO: Because we're using visible in determining the
218− count we need to emit a count changed as well */
219− Q_EMIT countChanged(appId, this->count(appId));
220− Q_EMIT countVisibleChanged(appId, item->countVisible);
221− QVariant vCountVisible(item->countVisible);
222− emitPropChangedDbus(appId, "countVisible", vCountVisible);
223− }
224−}
225−
226−void LauncherBackend::setUser(const QString &username)
227−{
228− if (qgetenv("USER") == "lightdm" && m_user != username) {
229− m_user = username;
230− syncFromAccounts();
231− }
232−}
233−
234−void LauncherBackend::triggerQuickListAction(const QString &appId, const QString &quickListId)
235−{
236− // TODO: execute the given quicklist action
237− Q_UNUSED(appId)
238− Q_UNUSED(quickListId)
239−}
240−
241−void LauncherBackend::syncFromAccounts()
242−{
243− QList<QVariantMap> apps;
244− bool defaults = true;
245−
246− m_storedApps.clear();
247−
248− if (m_accounts && !m_user.isEmpty()) {
249− QVariant variant = m_accounts->getUserProperty(m_user, "com.canonical.unity.AccountsService", "launcher-items");
250− if (variant.isValid() && variant.canConvert<QDBusArgument>()) {
251− apps = qdbus_cast<QList<QVariantMap>>(variant.value<QDBusArgument>());
252− defaults = isDefaultsItem(apps);
253− }
254− }
255−
256− if (m_accounts && defaults) { // Checking accounts as it'll be null when !useStorage
257− QGSettings gSettings("com.canonical.Unity.Launcher", "/com/canonical/unity/launcher/");
258− Q_FOREACH(const QString &entry, gSettings.get("favorites").toStringList()) {
259− if (entry.startsWith("application://")) {
260− QString appId = entry;
261− // Transform "application://foobar.desktop" to "application://foobar"
262− appId.remove("application://");
263− if (appId.endsWith(".desktop")) {
264− appId.chop(8);
265− }
266− QString df = findDesktopFile(appId);
267−
268− if (!df.isEmpty()) {
269− m_storedApps << appId;
270−
271− if (!m_itemCache.contains(appId)) {
272− m_itemCache.insert(appId, parseDesktopFile(df));
273− }
274− }
275− }
276− if (entry.startsWith("appid://")) {
277− QString appId = entry;
278− appId.remove("appid://");
279− // Strip hook name and current-user-version in case its there
280−
281− if (appId.split('/').count() != 3) {
282− qWarning() << "ignoring entry " + appId + ". Not a valid appId.";
283− continue;
284− }
285− appId = appId.split('/').first() + "_" + appId.split('/').at(1);
286− QString df = findDesktopFile(appId);
287−
288− if (!df.isEmpty()) {
289− m_storedApps << appId;
290−
291− if (!m_itemCache.contains(appId)) {
292− m_itemCache.insert(appId, parseDesktopFile(df));
293− }
294− }
295− }
296− }
297− } else {
298− for (const QVariant &app: apps) {
299− loadFromVariant(app.toMap());
300− }
301− }
302−}
303−
304−void LauncherBackend::syncToAccounts()
305−{
306− if (m_accounts && !m_user.isEmpty()) {
307− QList<QVariantMap> items;
308−
309− Q_FOREACH(const QString &appId, m_storedApps) {
310− items << itemToVariant(appId);
311− }
312−
313− m_accounts->setUserProperty(m_user, "com.canonical.unity.AccountsService", "launcher-items", QVariant::fromValue(items));
314− }
315−}
316−
317−QString LauncherBackend::findDesktopFile(const QString &appId) const
318−{
319− int dashPos = -1;
320− QString helper = appId;
321−
322− QStringList searchDirs = QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation);
323−#ifdef LAUNCHER_TESTING
324− searchDirs << "";
325−#endif
326−
327− do {
328− if (dashPos != -1) {
329− helper = helper.replace(dashPos, 1, '/');
330− }
331−
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− }
339− }
340− }
341−
342− dashPos = helper.indexOf("-");
343− } while (dashPos != -1);
344−
345− return QString();
346−}
347−
348−LauncherBackendItem* LauncherBackend::parseDesktopFile(const QString &desktopFile) const
349−{
350− QSettings settings(desktopFile, QSettings::IniFormat);
351−
352− LauncherBackendItem* item = new LauncherBackendItem();
353− item->displayName = settings.value("Desktop Entry/Name").toString();
354−
355− QString iconString = settings.value("Desktop Entry/Icon").toString();
356− QString pathString = settings.value("Desktop Entry/Path").toString();
357− if (QFileInfo(iconString).exists()) {
358− item->icon = QFileInfo(iconString).absoluteFilePath();
359− } else if (QFileInfo(pathString + '/' + iconString).exists()) {
360− item->icon = pathString + '/' + iconString;
361− } else {
362− item->icon = "image://theme/" + iconString;
363− }
364−
365− /* TODO: These should be looked up in a cache somewhere */
366− item->count = 0;
367− item->countVisible = false;
368−
369− return item;
370−}
371−
372−/* Gets an item, and tries to create a new one if we need it to */
373−LauncherBackendItem* LauncherBackend::getItem(const QString &appId) const
374−{
375− LauncherBackendItem *item = m_itemCache.value(appId, nullptr);
376− if (!item) {
377− QString df = findDesktopFile(appId);
378− if (!df.isEmpty()) {
379− item = parseDesktopFile(df);
380− if (item) {
381− m_itemCache[appId] = item;
382− } else {
383− qWarning() << "Unable to parse desktop file for" << appId << "path" << df;
384− }
385− } else {
386− qWarning() << "Unable to find desktop file for:" << appId;
387− }
388− }
389−
390− if (!item)
391− qWarning() << "Unable to find item for: " << appId;
392−
393− return item;
394−}
395−
396−void LauncherBackend::loadFromVariant(const QVariantMap &details)
397−{
398− if (!details.contains("id")) {
399− return;
400− }
401− QString appId = details.value("id").toString();
402−
403− LauncherBackendItem *item = m_itemCache.value(appId, nullptr);
404− if (item) {
405− delete item;
406− }
407−
408− item = new LauncherBackendItem();
409−
410− item->displayName = details.value("name").toString();
411− item->icon = details.value("icon").toString();
412− item->count = details.value("count").toInt();
413− item->countVisible = details.value("countVisible").toBool();
414−
415− m_itemCache.insert(appId, item);
416− m_storedApps.append(appId);
417−}
418−
419−QVariantMap LauncherBackend::itemToVariant(const QString &appId) const
420−{
421− LauncherBackendItem *item = m_itemCache.value(appId);
422− QVariantMap details;
423− details.insert("id", appId);
424− details.insert("name", item->displayName);
425− details.insert("icon", item->icon);
426− details.insert("count", item->count);
427− details.insert("countVisible", item->countVisible);
428− return details;
429−}
430−
431−bool LauncherBackend::isDefaultsItem(const QList<QVariantMap> &apps) const
432−{
433− // To differentiate between an empty list and a list that hasn't been set
434− // yet (and should thus be populated with the defaults), we use a special
435− // list of one item with the 'defaults' field set to true.
436− return (apps.size() == 1 && apps[0].value("defaults").toBool());
437−}
438−
439−bool LauncherBackend::handleMessage(const QDBusMessage& message, const QDBusConnection& connection)
440−{
441− /* Check to make sure we're getting properties on our interface */
442− if (message.type() != QDBusMessage::MessageType::MethodCallMessage) {
443− return false;
444− }
445− if (message.interface() != "org.freedesktop.DBus.Properties") {
446− return false;
447− }
448− if (message.arguments()[0].toString() != "com.canonical.Unity.Launcher.Item") {
449− return false;
450− }
451−
452− /* Break down the path to just the app id */
453− QString pathtemp = message.path();
454− if (!pathtemp.startsWith("/com/canonical/Unity/Launcher/")) {
455− return false;
456− }
457− pathtemp.remove("/com/canonical/Unity/Launcher/");
458− if (pathtemp.indexOf('/') >= 0) {
459− return false;
460− }
461−
462− /* Find ourselves an appid */
463− QString appid = decodeAppId(pathtemp);
464− QVariantList retval;
465−
466− if (message.member() == "Get") {
467− if (message.arguments()[1].toString() == "count") {
468− retval.append(QVariant::fromValue(QDBusVariant(this->count(appid))));
469− } else if (message.arguments()[1].toString() == "countVisible") {
470− retval.append(QVariant::fromValue(QDBusVariant(this->countVisible(appid))));
471− }
472− } else if (message.member() == "Set") {
473− if (message.arguments()[1].toString() == "count") {
474− this->setCount(appid, message.arguments()[2].value<QDBusVariant>().variant().toInt());
475− } else if (message.arguments()[1].toString() == "countVisible") {
476− this->setCountVisible(appid, message.arguments()[2].value<QDBusVariant>().variant().toBool());
477− }
478− } else if (message.member() == "GetAll") {
479− retval.append(this->itemToVariant(appid));
480− } else {
481− return false;
482− }
483−
484− QDBusMessage reply = message.createReply(retval);
485− return connection.send(reply);
486−}
487−
488−QString LauncherBackend::introspect(const QString &path) const
489−{
490− /* This case we should just list the nodes */
491− if (path == "/com/canonical/Unity/Launcher/" || path == "/com/canonical/Unity/Launcher") {
492− QString nodes;
493−
494− Q_FOREACH(const QString &appId, m_itemCache.keys()) {
495− nodes.append("<node name=\"");
496− nodes.append(encodeAppId(appId));
497− nodes.append("\"/>\n");
498− }
499−
500− return nodes;
501− }
502−
503− /* Should not happen, but let's handle it */
504− if (!path.startsWith("/com/canonical/Unity/Launcher")) {
505− return "";
506− }
507−
508− /* Now we should be looking at a node */
509− QString nodeiface =
510− "<interface name=\"com.canonical.Unity.Launcher.Item\">"
511− "<property name=\"count\" type=\"i\" access=\"readwrite\" />"
512− "<property name=\"countVisible\" type=\"b\" access=\"readwrite\" />"
513− "</interface>";
514− return nodeiface;
515−}
516−
517−QString LauncherBackend::decodeAppId(const QString& path)
518−{
519− QByteArray bytes = path.toUtf8();
520− QByteArray decoded;
521−
522− for (int i = 0; i < bytes.size(); ++i) {
523− char chr = bytes.at(i);
524−
525− if (chr == '_') {
526− QString number;
527− number.append(bytes.at(i+1));
528− number.append(bytes.at(i+2));
529−
530− bool okay;
531− char newchar = number.toUInt(&okay, 16);
532− if (okay)
533− decoded.append(newchar);
534−
535− i += 2;
536− } else {
537− decoded.append(chr);
538− }
539− }
540−
541− return QString::fromUtf8(decoded);
542−}
543−
544−QString LauncherBackend::encodeAppId(const QString& appId)
545−{
546− QByteArray bytes = appId.toUtf8();
547− QString encoded;
548−
549− for (int i = 0; i < bytes.size(); ++i) {
550− uchar chr = bytes.at(i);
551−
552− if ((chr >= 'a' && chr <= 'z') ||
553− (chr >= 'A' && chr <= 'Z') ||
554− (chr >= '0' && chr <= '9'&& i != 0)) {
555− encoded.append(chr);
556− } else {
557− QString hexval = QString("_%1").arg(chr, 2, 16, QChar('0'));
558− encoded.append(hexval.toUpper());
559− }
560− }
561−
562− return encoded;
563−}
564−
565−void LauncherBackend::emitPropChangedDbus(const QString& appId, const QString& property, QVariant &value) const
566−{
567− QString path("/com/canonical/Unity/Launcher/");
568− path.append(encodeAppId(appId));
569−
570− QDBusMessage message = QDBusMessage::createSignal(path, "org.freedesktop.DBus.Properties", "PropertiesChanged");
571−
572− QList<QVariant> arguments;
573− QVariantHash changedprops;
574− changedprops[property] = QVariant::fromValue(QDBusVariant(value));
575− QVariantList deletedprops;
576−
577− arguments.append(changedprops);
578− arguments.append(deletedprops);
579−
580− message.setArguments(arguments);
581−
582− QDBusConnection con = QDBusConnection::sessionBus();
583− con.send(message);
584−}
plugins/Unity/Launcher/backend/launcherbackend.hdeleted−196
@@ -1,196 +0,0 @@
1−/* Copyright (C) 2013 Canonical, Ltd.
2− *
3− * Authors:
4− * Michael Zanetti <michael.zanetti@canonical.com>
5− *
6− * This program is free software; you can redistribute it and/or modify
7− * it under the terms of the GNU General Public License as published by
8− * the Free Software Foundation; version 3.
9− *
10− * This program is distributed in the hope that it will be useful,
11− * but WITHOUT ANY WARRANTY; without even the implied warranty of
12− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13− * GNU General Public License for more details.
14− *
15− * You should have received a copy of the GNU General Public License
16− * along with this program. If not, see <http://www.gnu.org/licenses/>.
17− */
18−
19−#ifndef LAUNCHERBACKEND_H
20−#define LAUNCHERBACKEND_H
21−
22−#include "common/quicklistentry.h"
23−
24−#include <QObject>
25−#include <QSettings>
26−#include <QStringList>
27−#include <QDBusVirtualObject>
28−
29−class AccountsServiceDBusAdaptor;
30−
31−/**
32− * @brief An interface that provides all the data needed by the launcher.
33− */
34−
35−class LauncherBackendItem;
36−class LauncherBackendTest;
37−
38−class LauncherBackend : public QDBusVirtualObject
39−{
40− Q_OBJECT
41−
42− friend LauncherBackendTest;
43−
44−public:
45− LauncherBackend(QObject *parent = 0);
46− virtual ~LauncherBackend();
47−
48− /**
49− * @brief Returns a list of stored applications.
50− * @returns A list of application IDs.
51− */
52− QStringList storedApplications() const;
53−
54− /**
55− * @brief Set the list of stored applications.
56− *
57− * Any previously stored information for apps not contained
58− * in the list any more, e.g. the pinned state, will be
59− * discarded.
60− *
61− * @param appIds The new list of stored applications.
62− */
63− void setStoredApplications(const QStringList &appIds);
64−
65− /**
66− * @brief Get the full path to the .desktop file.
67− *
68− * The application does not need to be in the list of stored applications.
69− *
70− * @returns The full path to the .dekstop file.
71− */
72− QString desktopFile(const QString &appId) const;
73−
74− /**
75− * @brief Get the user friendly name of an application.
76− *
77− * The application does not need to be in the list of stored applications.
78− *
79− * @param appId The ID of the application.
80− * @returns The user friendly name of the application.
81− */
82− QString displayName(const QString &appId) const;
83−
84− /**
85− * @brief Get the icon of an application.
86− *
87− * The application does not need to be in the list of stored applications.
88− *
89− * @param appId The ID of the application.
90− * @returns The full path to the icon for the application.
91− */
92− QString icon(const QString &appId) const;
93−
94− /**
95− * @brief Get the QuickList for an application.
96− * @param appId The ID of the application.
97− * @returns A QuickListModelInterface containing the QuickList.
98− */
99− QList<QuickListEntry> quickList(const QString &appId) const;
100−
101− /**
102− * @brief Execute an action from the quickList
103− * @param appId The app ID for which the action was triggered
104− * @param the quicklist ID of the action that was triggered
105− */
106− void triggerQuickListAction(const QString &appId, const QString &entryId);
107−
108− /**
109− * @brief Get the progress for the progress overlay of an application.
110− * @param appId The ID of the application.
111− * @returns The percentage of the overlay progress bar. -1 if no progress bar available.
112− */
113− int progress(const QString &appId) const;
114−
115− /**
116− * @brief Get the count of the count overlay of an application.
117− * @param appId The ID of the application.
118− * @returns The number to be displayed in the overlay. -1 if no count overlay is available.
119− */
120− int count(const QString &appId) const;
121−
122− /**
123− * @brief Set the count on an item
124− * @param appId The ID of the application
125− * @param count Count to show on the application
126− */
127− void setCount(const QString &appId, int count) const;
128−
129− /**
130− * @brief Get whether the count should be visible
131− * @param appId The ID of the application.
132− * @returns Whether to show a count on the launcher
133− */
134− bool countVisible(const QString &appId) const;
135−
136− /**
137− * @brief Set the visibility of the count item
138− * @param appId The ID of the application
139− * @param visible Whether the count should be visible
140− */
141− void setCountVisible(const QString &appId, bool visible) const;
142−
143− /**
144− * @brief Sets the username for which to look up launcher items.
145− * @param username The username to use.
146− */
147− void setUser(const QString &username);
148−
149− /**
150− * @brief Handle a message to an application node
151− * @param message DBus message to handle
152− * @param connection DBus connection that we're using
153− * @returns whether the message was handled
154− */
155− virtual bool handleMessage(const QDBusMessage& message, const QDBusConnection& connection);
156−
157− /**
158− * @brief Get introspection information on the objects we're exporting
159− * @param path the dbus path containing the appid
160− * @returns Introspection information for that node in the tree
161− */
162− virtual QString introspect (const QString &path) const;
163−
164−Q_SIGNALS:
165− void quickListChanged(const QString &appId, const QList<QuickListEntry> &quickList) const;
166− void progressChanged(const QString &appId, int progress) const;
167− void countChanged(const QString &appId, int count) const;
168− void countVisibleChanged(const QString &appId, bool visible) const;
169−
170−private:
171− QString findDesktopFile(const QString &appId) const;
172− LauncherBackendItem* parseDesktopFile(const QString &desktopFile) const;
173−
174− QVariantMap itemToVariant(const QString &appId) const;
175− void loadFromVariant(const QVariantMap &details);
176−
177− bool isDefaultsItem(const QList<QVariantMap> &apps) const;
178− void syncFromAccounts();
179− void syncToAccounts();
180−
181− QList<QString> m_storedApps;
182− mutable QHash<QString, LauncherBackendItem*> m_itemCache;
183−
184− AccountsServiceDBusAdaptor *m_accounts;
185− QString m_user;
186−
187− void emitPropChangedDbus(const QString& appId, const QString& property, QVariant &value) const;
188−
189−protected: /* Protected to allow testing */
190− LauncherBackendItem* getItem(const QString& appId) const;
191−
192− static QString decodeAppId(const QString& path);
193− static QString encodeAppId(const QString& appId);
194−};
195−
196−#endif // LAUNCHERBACKEND_H
plugins/Unity/Launcher/dbusinterface.cppnew file+232
@@ -0,0 +1,232 @@
1+/*
2+ * Copyright 2014 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU Lesser General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU Lesser General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU Lesser General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ *
16+ * Authors:
17+ * Michael Zanetti <michael.zanetti@canonical.com>
18+ */
19+
20+#include "dbusinterface.h"
21+#include "launchermodel.h"
22+#include "launcheritem.h"
23+
24+#include <QDBusArgument>
25+#include <QDBusConnection>
26+#include <QDBusMessage>
27+#include <QDebug>
28+
29+DBusInterface::DBusInterface(LauncherModel *parent):
30+ QDBusVirtualObject(parent),
31+ m_launcherModel(parent)
32+{
33+ /* Set up ourselves on DBus */
34+ QDBusConnection con = QDBusConnection::sessionBus();
35+ if (!con.registerService("com.canonical.Unity.Launcher")) {
36+ qWarning() << "Unable to register launcher name";
37+ }
38+ if (!con.registerVirtualObject("/com/canonical/Unity/Launcher", this, QDBusConnection::VirtualObjectRegisterOption::SubPath)) {
39+ qWarning() << "Unable to register launcher object";
40+ }
41+}
42+
43+DBusInterface::~DBusInterface()
44+{
45+ /* Remove oursevles from DBus */
46+ QDBusConnection con = QDBusConnection::sessionBus();
47+ con.unregisterService("com.canonical.Unity.Launcher");
48+ con.unregisterObject("/com/canonical/Unity/Launcher");
49+}
50+
51+QString DBusInterface::introspect(const QString &path) const
52+{
53+ /* This case we should just list the nodes */
54+ if (path == "/com/canonical/Unity/Launcher/" || path == "/com/canonical/Unity/Launcher") {
55+ QString nodes;
56+
57+ // Add Refresh to introspect
58+ nodes = "<interface name=\"com.canonical.Unity.Launcher\">"
59+ "<method name=\"Refresh\"/>"
60+ "</interface>";
61+
62+ // Add dynamic properties for launcher emblems
63+ for (int i = 0; i < m_launcherModel->rowCount(); i++) {
64+ nodes.append("<node name=\"");
65+ nodes.append(encodeAppId(m_launcherModel->get(i)->appId()));
66+ nodes.append("\"/>\n");
67+ }
68+ return nodes;
69+ }
70+
71+ /* Should not happen, but let's handle it */
72+ if (!path.startsWith("/com/canonical/Unity/Launcher")) {
73+ return "";
74+ }
75+
76+ /* Now we should be looking at a node */
77+ QString nodeiface =
78+ "<interface name=\"com.canonical.Unity.Launcher.Item\">"
79+ "<property name=\"count\" type=\"i\" access=\"readwrite\" />"
80+ "<property name=\"countVisible\" type=\"b\" access=\"readwrite\" />"
81+ "</interface>";
82+ return nodeiface;
83+}
84+
85+
86+QString DBusInterface::decodeAppId(const QString& path)
87+{
88+ QByteArray bytes = path.toUtf8();
89+ QByteArray decoded;
90+
91+ for (int i = 0; i < bytes.size(); ++i) {
92+ char chr = bytes.at(i);
93+
94+ if (chr == '_') {
95+ QString number;
96+ number.append(bytes.at(i+1));
97+ number.append(bytes.at(i+2));
98+
99+ bool okay;
100+ char newchar = number.toUInt(&okay, 16);
101+ if (okay)
102+ decoded.append(newchar);
103+
104+ i += 2;
105+ } else {
106+ decoded.append(chr);
107+ }
108+ }
109+
110+ return QString::fromUtf8(decoded);
111+}
112+
113+QString DBusInterface::encodeAppId(const QString& appId)
114+{
115+ QByteArray bytes = appId.toUtf8();
116+ QString encoded;
117+
118+ for (int i = 0; i < bytes.size(); ++i) {
119+ uchar chr = bytes.at(i);
120+
121+ if ((chr >= 'a' && chr <= 'z') ||
122+ (chr >= 'A' && chr <= 'Z') ||
123+ (chr >= '0' && chr <= '9'&& i != 0)) {
124+ encoded.append(chr);
125+ } else {
126+ QString hexval = QString("_%1").arg(chr, 2, 16, QChar('0'));
127+ encoded.append(hexval.toUpper());
128+ }
129+ }
130+
131+ return encoded;
132+}
133+
134+bool DBusInterface::handleMessage(const QDBusMessage& message, const QDBusConnection& connection)
135+{
136+ /* Check to make sure we're getting properties on our interface */
137+ if (message.type() != QDBusMessage::MessageType::MethodCallMessage) {
138+ return false;
139+ }
140+
141+ // First handle methods of the Launcher interface
142+ if (message.interface() == "com.canonical.Unity.Launcher") {
143+ if (message.member() == "Refresh") {
144+ QDBusMessage reply = message.createReply();
145+ Q_EMIT refreshCalled();
146+ return connection.send(reply);
147+ }
148+ }
149+
150+ // Now handle dynamic properties (for launcher emblems)
151+ if (message.interface() != "org.freedesktop.DBus.Properties") {
152+ return false;
153+ }
154+
155+ if (message.member() != "GetAll" && message.arguments()[0].toString() != "com.canonical.Unity.Launcher.Item") {
156+ return false;
157+ }
158+
159+ /* Break down the path to just the app id */
160+ QString pathtemp = message.path();
161+ if (!pathtemp.startsWith("/com/canonical/Unity/Launcher/")) {
162+ return false;
163+ }
164+ pathtemp.remove("/com/canonical/Unity/Launcher/");
165+ if (pathtemp.indexOf('/') >= 0) {
166+ return false;
167+ }
168+
169+ /* Find ourselves an appid */
170+ QString appid = decodeAppId(pathtemp);
171+ int index = m_launcherModel->findApplication(appid);
172+ LauncherItem *item = static_cast<LauncherItem*>(m_launcherModel->get(index));
173+
174+ QVariantList retval;
175+ if (message.member() == "Get") {
176+ if (!item) {
177+ return false;
178+ }
179+ if (message.arguments()[1].toString() == "count") {
180+ retval.append(QVariant::fromValue(QDBusVariant(item->count())));
181+ } else if (message.arguments()[1].toString() == "countVisible") {
182+ retval.append(QVariant::fromValue(QDBusVariant(item->countVisible())));
183+ }
184+ } else if (message.member() == "Set") {
185+ if (message.arguments()[1].toString() == "count") {
186+ int newCount = message.arguments()[2].toInt();
187+ if (!item || newCount != item->count()) {
188+ Q_EMIT countChanged(appid, newCount);
189+ emitPropChangedDbus(appid, "count", QVariant(newCount));
190+ }
191+ } else if (message.arguments()[1].toString() == "countVisible") {
192+ bool newVisible = message.arguments()[2].toBool();
193+ if (!item || newVisible != item->countVisible()) {
194+ Q_EMIT countVisibleChanged(appid, newVisible);
195+ emitPropChangedDbus(appid, "countVisible", newVisible);
196+ }
197+ }
198+ } else if (message.member() == "GetAll") {
199+ if (item) {
200+ QVariantMap all;
201+ all.insert("count", item->count());
202+ all.insert("countVisible", item->countVisible());
203+ retval.append(all);
204+ }
205+ } else {
206+ return false;
207+ }
208+
209+ QDBusMessage reply = message.createReply(retval);
210+ return connection.send(reply);
211+}
212+
213+void DBusInterface::emitPropChangedDbus(const QString& appId, const QString& property, const QVariant &value)
214+{
215+ QString path("/com/canonical/Unity/Launcher/");
216+ path.append(encodeAppId(appId));
217+
218+ QDBusMessage message = QDBusMessage::createSignal(path, "org.freedesktop.DBus.Properties", "PropertiesChanged");
219+
220+ QList<QVariant> arguments;
221+ QVariantHash changedprops;
222+ changedprops[property] = QVariant::fromValue(QDBusVariant(value));
223+ QVariantList deletedprops;
224+
225+ arguments.append(changedprops);
226+ arguments.append(deletedprops);
227+
228+ message.setArguments(arguments);
229+
230+ QDBusConnection con = QDBusConnection::sessionBus();
231+ con.send(message);
232+}
plugins/Unity/Launcher/dbusinterface.hnew file+50
@@ -0,0 +1,50 @@
1+/*
2+ * Copyright 2014 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU Lesser General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU Lesser General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU Lesser General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ *
16+ * Authors:
17+ * Michael Zanetti <michael.zanetti@canonical.com>
18+ */
19+
20+#include "launcheritem.h"
21+
22+#include <QDBusVirtualObject>
23+
24+class LauncherModel;
25+
26+class DBusInterface: public QDBusVirtualObject
27+{
28+ Q_OBJECT
29+public:
30+ DBusInterface(LauncherModel *parent);
31+ ~DBusInterface();
32+
33+ // QDBusVirtualObject implementaition
34+ QString introspect (const QString &path) const override;
35+ bool handleMessage(const QDBusMessage& message, const QDBusConnection& connection) override;
36+
37+Q_SIGNALS:
38+ void countChanged(const QString &appId, int count);
39+ void countVisibleChanged(const QString &appId, bool countVisible);
40+ void refreshCalled();
41+
42+private:
43+ static QString decodeAppId(const QString& path);
44+ static QString encodeAppId(const QString& appId);
45+
46+ void emitPropChangedDbus(const QString& appId, const QString& property, const QVariant &value);
47+
48+ LauncherModel *m_launcherModel;
49+
50+};
plugins/Unity/Launcher/desktopfilehandler.cppnew file+151
@@ -0,0 +1,151 @@
1+/*
2+ * Copyright 2014 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU Lesser General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU Lesser General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU Lesser General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ *
16+ * Authors:
17+ * Michael Zanetti <michael.zanetti@canonical.com>
18+ */
19+
20+#include "desktopfilehandler.h"
21+
22+#include <QStringList>
23+#include <QStandardPaths>
24+#include <QDir>
25+#include <QSettings>
26+#include <QLocale>
27+
28+#include <libintl.h>
29+
30+DesktopFileHandler::DesktopFileHandler(const QString &appId, QObject *parent):
31+ QObject(parent),
32+ m_appId(appId)
33+{
34+ load();
35+}
36+
37+QString DesktopFileHandler::appId() const
38+{
39+ return m_appId;
40+}
41+
42+void DesktopFileHandler::setAppId(const QString &appId)
43+{
44+ if (m_appId != appId) {
45+ m_appId = appId;
46+ load();
47+ }
48+}
49+
50+QString DesktopFileHandler::filename() const
51+{
52+ return m_filename;
53+}
54+
55+bool DesktopFileHandler::isValid() const
56+{
57+ return !m_filename.isEmpty();
58+}
59+
60+void DesktopFileHandler::load()
61+{
62+ m_filename.clear();
63+
64+ if (m_appId.isEmpty()) {
65+ return;
66+ }
67+
68+ int dashPos = -1;
69+ QString helper = m_appId;
70+
71+ QStringList searchDirs = QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation);
72+#ifdef LAUNCHER_TESTING
73+ searchDirs << "";
74+#endif
75+
76+ QString path;
77+ do {
78+ if (dashPos != -1) {
79+ helper.replace(dashPos, 1, '/');
80+ }
81+
82+ if (helper.contains("/")) {
83+ path += helper.split('/').first() + '/';
84+ helper.remove(QRegExp("^" + path));
85+ }
86+
87+ Q_FOREACH(const QString &searchDirName, searchDirs) {
88+ QDir searchDir(searchDirName + "/" + path);
89+ Q_FOREACH(const QString &desktopFile, searchDir.entryList(QStringList() << "*.desktop")) {
90+ if (desktopFile.startsWith(helper)) {
91+ QFileInfo fileInfo(searchDir, desktopFile);
92+ m_filename = fileInfo.absoluteFilePath();
93+ return;
94+ }
95+ }
96+ }
97+
98+ dashPos = helper.indexOf("-");
99+ } while (dashPos != -1);
100+}
101+
102+QString DesktopFileHandler::displayName() const
103+{
104+ if (!isValid()) {
105+ return QString();
106+ }
107+
108+ QSettings settings(m_filename, QSettings::IniFormat);
109+ settings.beginGroup("Desktop Entry");
110+
111+ // First try to find Name[xx_YY] and Name[xx] in .desktop file
112+ QString locale = QLocale::system().name();
113+ QString shortLocale = locale.split('_').first();
114+
115+ if (locale != shortLocale && settings.contains(QString("Name[%1]").arg(locale))) {
116+ return settings.value(QString("Name[%1]").arg(locale)).toString();
117+ }
118+
119+ if (settings.contains(QString("Name[%1]").arg(shortLocale))) {
120+ return settings.value(QString("Name[%1]").arg(shortLocale)).toString();
121+ }
122+
123+ // No translation found in desktop file. Get the untranslated one and have a go with gettext.
124+ QString displayName = settings.value("Name").toString();
125+
126+ if (settings.contains("X-Ubuntu-Gettext-Domain")) {
127+ const QString domain = settings.value("X-Ubuntu-Gettext-Domain").toString();
128+ return dgettext(domain.toUtf8().constData(), displayName.toUtf8().constData());
129+ }
130+
131+ return displayName;
132+}
133+
134+QString DesktopFileHandler::icon() const
135+{
136+ if (!isValid()) {
137+ return QString();
138+ }
139+
140+ QSettings settings(m_filename, QSettings::IniFormat);
141+ settings.beginGroup("Desktop Entry");
142+ QString iconString = settings.value("Icon").toString();
143+ QString pathString = settings.value("Path").toString();
144+
145+ if (QFileInfo(iconString).exists()) {
146+ return QFileInfo(iconString).absoluteFilePath();
147+ } else if (QFileInfo(pathString + '/' + iconString).exists()) {
148+ return pathString + '/' + iconString;
149+ }
150+ return "image://theme/" + iconString;
151+}
plugins/Unity/Launcher/desktopfilehandler.hnew file+56
@@ -0,0 +1,56 @@
1+/*
2+ * Copyright 2014 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU Lesser General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU Lesser General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU Lesser General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ *
16+ * Authors:
17+ * Michael Zanetti <michael.zanetti@canonical.com>
18+ */
19+
20+#ifndef DESKTOPFILEHANDLER_H
21+#define DESKTOPFILEHANDLER_H
22+
23+#include <QObject>
24+
25+/**
26+ * When an object of this class is created or whenever setAppId(appId) is called,
27+ * this will search for a .desktop file matching the give appId. If a file is
28+ * found, isValid() will return true and the other methods return the contents
29+ * of the .desktop file.
30+ *
31+ * Note that this class will consider the user's locale and do a best effort
32+ * to return localized values.
33+ */
34+
35+class DesktopFileHandler: public QObject
36+{
37+ Q_OBJECT
38+public:
39+ DesktopFileHandler(const QString &appId = QString(), QObject *parent = nullptr);
40+
41+ QString appId() const;
42+ void setAppId(const QString &appId);
43+
44+ bool isValid() const;
45+ QString filename() const;
46+ QString displayName() const;
47+ QString icon() const;
48+
49+private:
50+ void load();
51+
52+ QString m_appId;
53+ QString m_filename;
54+};
55+
56+#endif
plugins/Unity/Launcher/gsettings.cppnew file+66
@@ -0,0 +1,66 @@
1+/*
2+ * Copyright 2014 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU Lesser General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU Lesser General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU Lesser General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ *
16+ * Authors:
17+ * Michael Zanetti <michael.zanetti@canonical.com>
18+ */
19+
20+#include "gsettings.h"
21+
22+#include <QGSettings>
23+#include <QVariant>
24+
25+GSettings::GSettings(QObject *parent):
26+ QObject(parent)
27+{
28+
29+}
30+
31+QStringList GSettings::storedApplications() const
32+{
33+ QStringList storedApps;
34+
35+ QGSettings gSettings("com.canonical.Unity.Launcher", "/com/canonical/unity/launcher/");
36+
37+ Q_FOREACH(const QString &entry, gSettings.get("items").toStringList()) {
38+ if (entry.startsWith("application:///")) {
39+ // convert legacy entries to new world appids
40+ QString appId = entry;
41+ // Transform "application://foobar.desktop" to "foobar"
42+ appId.remove(QRegExp("^application:///"));
43+ appId.remove(QRegExp(".desktop$"));
44+ storedApps << appId;
45+ } else if (entry.startsWith("appid://")) {
46+ QString appId = entry;
47+ appId.remove("appid://");
48+ if (appId.split('/').count() == 3) {
49+ // Strip current-user-version in case its there
50+ appId = appId.split('/').first() + "_" + appId.split('/').at(1);
51+ }
52+ storedApps << appId;
53+ }
54+ }
55+ return storedApps;
56+}
57+
58+void GSettings::setStoredApplications(const QStringList &storedApplications)
59+{
60+ QGSettings gSettings("com.canonical.Unity.Launcher", "/com/canonical/unity/launcher/");
61+ QStringList gSettingsList;
62+ Q_FOREACH(const QString &entry, storedApplications) {
63+ gSettingsList << QString("appid://%1").arg(entry);
64+ }
65+ gSettings.set("items", gSettingsList);
66+}
plugins/Unity/Launcher/gsettings.hnew file+37
@@ -0,0 +1,37 @@
1+/*
2+ * Copyright 2014 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU Lesser General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU Lesser General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU Lesser General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ *
16+ * Authors:
17+ * Michael Zanetti <michael.zanetti@canonical.com>
18+ */
19+
20+#ifndef GSETTINGS_H
21+#define GSETTINGS_H
22+
23+#include <QObject>
24+#include <QStringList>
25+
26+
27+class GSettings: public QObject
28+{
29+ Q_OBJECT
30+public:
31+ GSettings(QObject *parent = nullptr);
32+
33+ QStringList storedApplications() const;
34+ void setStoredApplications(const QStringList &storedApplications);
35+};
36+
37+#endif
plugins/Unity/Launcher/launcheritem.cpp+31
@@ -32,10 +32,12 @@ LauncherItem::LauncherItem(const QString &appId, const QString &name, const QStr
32 m_recent(false),
32 m_recent(false),
33 m_progress(-1),
33 m_progress(-1),
34 m_count(0),
34 m_count(0),
35+ m_countVisible(false),
35 m_focused(false),
36 m_focused(false),
36 m_quickList(new QuickListModel(this))
37 m_quickList(new QuickListModel(this))
37{
38{
38 QuickListEntry nameAction;
39 QuickListEntry nameAction;
40+ nameAction.setActionId("launch_item");
39 nameAction.setText(m_name);
41 nameAction.setText(m_name);
40 m_quickList->appendAction(nameAction);
42 m_quickList->appendAction(nameAction);
41 QuickListEntry pinningAction;
43 QuickListEntry pinningAction;
@@ -54,11 +56,27 @@ QString LauncherItem::name() const
54 return m_name;
56 return m_name;
55}
57}
56
58
59+void LauncherItem::setName(const QString &name)
60+{
61+ if (m_name != name) {
62+ m_name = name;
63+ Q_EMIT nameChanged(name);
64+ }
65+}
66+
57QString LauncherItem::icon() const
67QString LauncherItem::icon() const
58{
68{
59 return m_icon;
69 return m_icon;
60}
70}
61
71
72+void LauncherItem::setIcon(const QString &icon)
73+{
74+ if (m_icon != icon) {
75+ m_icon = icon;
76+ Q_EMIT iconChanged(icon);
77+ }
78+}
79+
62bool LauncherItem::pinned() const
80bool LauncherItem::pinned() const
63{
81{
64 return m_pinned;
82 return m_pinned;
@@ -128,6 +146,19 @@ void LauncherItem::setCount(int count)
128 }
146 }
129}
147}
130
148
149+bool LauncherItem::countVisible() const
150+{
151+ return m_countVisible;
152+}
153+
154+void LauncherItem::setCountVisible(bool countVisible)
155+{
156+ if (m_countVisible != countVisible) {
157+ m_countVisible = countVisible;
158+ Q_EMIT countVisibleChanged(countVisible);
159+ }
160+}
161+
131bool LauncherItem::focused() const
162bool LauncherItem::focused() const
132{
163{
133 return m_focused;
164 return m_focused;
plugins/Unity/Launcher/launcheritem.h+19−20
@@ -34,34 +34,30 @@ class LauncherItem: public LauncherItemInterface
34public:
34public:
35 LauncherItem(const QString &appId, const QString &name, const QString &icon, QObject *parent = 0);
35 LauncherItem(const QString &appId, const QString &name, const QString &icon, QObject *parent = 0);
36
36
37− QString appId() const;
37+ QString appId() const override;
38− QString name() const;
38+ QString name() const override;
39− QString icon() const;
39+ QString icon() const override;
40+ bool pinned() const override;
41+ bool running() const override;
42+ bool recent() const override;
43+ int progress() const override;
44+ int count() const override;
45+ bool countVisible() const override;
46+ bool focused() const override;
47+
48+ unity::shell::launcher::QuickListModelInterface *quickList() const override;
40
49
41− bool pinned() const;
50+private:
51+ void setName(const QString &name);
52+ void setIcon(const QString &icon);
42 void setPinned(bool pinned);
53 void setPinned(bool pinned);
43−
44− bool running() const;
45 void setRunning(bool running);
54 void setRunning(bool running);
46−
47− bool recent() const;
48 void setRecent(bool recent);
55 void setRecent(bool recent);
49−
50− int progress() const;
51 void setProgress(int progress);
56 void setProgress(int progress);
52−
53− int count() const;
54 void setCount(int count);
57 void setCount(int count);
55−
58+ void setCountVisible(bool countVisible);
56− bool focused() const;
57 void setFocused(bool focused);
59 void setFocused(bool focused);
58
60
59− unity::shell::launcher::QuickListModelInterface *quickList() const;
60−
61−Q_SIGNALS:
62− void favoriteChanged(bool favorite);
63− void runningChanged(bool running);
64−
65private:
61private:
66 QString m_appId;
62 QString m_appId;
67 QString m_name;
63 QString m_name;
@@ -71,8 +67,11 @@ private:
71 bool m_recent;
67 bool m_recent;
72 int m_progress;
68 int m_progress;
73 int m_count;
69 int m_count;
70+ bool m_countVisible;
74 bool m_focused;
71 bool m_focused;
75 QuickListModel *m_quickList;
72 QuickListModel *m_quickList;
73+
74+ friend class LauncherModel;
76};
75};
77
76
78#endif // LAUNCHERITEM_H
77#endif // LAUNCHERITEM_H
plugins/Unity/Launcher/launchermodel.cpp+88−15
@@ -19,26 +19,37 @@
19
19
20#include "launchermodel.h"
20#include "launchermodel.h"
21#include "launcheritem.h"
21#include "launcheritem.h"
22−#include "backend/launcherbackend.h"
22+#include "gsettings.h"
23+#include "desktopfilehandler.h"
24+#include "dbusinterface.h"
23
25
24#include <unity/shell/application/ApplicationInfoInterface.h>
26#include <unity/shell/application/ApplicationInfoInterface.h>
25
27
28+#include <QDesktopServices>
26#include <QDebug>
29#include <QDebug>
27
30
28using namespace unity::shell::application;
31using namespace unity::shell::application;
29
32
30LauncherModel::LauncherModel(QObject *parent):
33LauncherModel::LauncherModel(QObject *parent):
31 LauncherModelInterface(parent),
34 LauncherModelInterface(parent),
32− m_backend(new LauncherBackend(this)),
35+ m_settings(new GSettings(this)),
36+ m_dbusIface(new DBusInterface(this)),
33 m_appManager(0)
37 m_appManager(0)
34{
38{
35− connect(m_backend, SIGNAL(countChanged(QString,int)), SLOT(countChanged(QString,int)));
39+ connect(m_dbusIface, &DBusInterface::countChanged, this, &LauncherModel::countChanged);
36− connect(m_backend, SIGNAL(progressChanged(QString,int)), SLOT(progressChanged(QString,int)));
40+ connect(m_dbusIface, &DBusInterface::countVisibleChanged, this, &LauncherModel::countVisibleChanged);
41+ connect(m_dbusIface, &DBusInterface::refreshCalled, this, &LauncherModel::refresh);
42+
43+ Q_FOREACH (const QString &entry, m_settings->storedApplications()) {
44+ DesktopFileHandler desktopFile(entry);
45+ if (!desktopFile.isValid()) {
46+ qWarning() << "Couldn't find a .desktop file for" << entry << ". Skipping...";
47+ continue;
48+ }
37
49
38− Q_FOREACH (const QString &entry, m_backend->storedApplications()) {
39 LauncherItem *item = new LauncherItem(entry,
50 LauncherItem *item = new LauncherItem(entry,
40− m_backend->displayName(entry),
51+ desktopFile.displayName(),
41− m_backend->icon(entry),
52+ desktopFile.icon(),
42 this);
53 this);
43 item->setPinned(true);
54 item->setPinned(true);
44 m_list.append(item);
55 m_list.append(item);
@@ -72,6 +83,8 @@ QVariant LauncherModel::data(const QModelIndex &index, int role) const
72 return item->pinned();
83 return item->pinned();
73 case RoleCount:
84 case RoleCount:
74 return item->count();
85 return item->count();
86+ case RoleCountVisible:
87+ return item->countVisible();
75 case RoleProgress:
88 case RoleProgress:
76 return item->progress();
89 return item->progress();
77 case RoleFocused:
90 case RoleFocused:
@@ -138,10 +151,17 @@ void LauncherModel::pin(const QString &appId, int index)
138 if (index == -1) {
151 if (index == -1) {
139 index = m_list.count();
152 index = m_list.count();
140 }
153 }
154+
155+ DesktopFileHandler desktopFile(appId);
156+ if (!desktopFile.isValid()) {
157+ qWarning() << "Can't pin this application, there is no .destkop file available.";
158+ return;
159+ }
160+
141 beginInsertRows(QModelIndex(), index, index);
161 beginInsertRows(QModelIndex(), index, index);
142 LauncherItem *item = new LauncherItem(appId,
162 LauncherItem *item = new LauncherItem(appId,
143− m_backend->displayName(appId),
163+ desktopFile.displayName(),
144− m_backend->icon(appId),
164+ desktopFile.icon(),
145 this);
165 this);
146 item->setPinned(true);
166 item->setPinned(true);
147 m_list.insert(index, item);
167 m_list.insert(index, item);
@@ -191,28 +211,32 @@ void LauncherModel::quickListActionInvoked(const QString &appId, int actionIndex
191 } else {
211 } else {
192 pin(appId);
212 pin(appId);
193 }
213 }
214+ } else if (actionId == "launch_item") {
215+ QDesktopServices::openUrl(getUrlForAppId(appId));
194
216
195 // Nope, we don't know this action, let the backend forward it to the application
217 // Nope, we don't know this action, let the backend forward it to the application
196 } else {
218 } else {
197− m_backend->triggerQuickListAction(appId, actionId);
219+ // TODO: forward quicklist action to app, possibly via m_dbusIface
198 }
220 }
199 }
221 }
200}
222}
201
223
202void LauncherModel::setUser(const QString &username)
224void LauncherModel::setUser(const QString &username)
203{
225{
204− m_backend->setUser(username);
226+ Q_UNUSED(username)
227+ qWarning() << "This backend doesn't support multiple users";
205}
228}
206
229
207QString LauncherModel::getUrlForAppId(const QString &appId) const
230QString LauncherModel::getUrlForAppId(const QString &appId) const
208{
231{
209 // appId is either an appId or a legacy app name. Let's find out which
232 // appId is either an appId or a legacy app name. Let's find out which
210− if (appId.isEmpty())
233+ if (appId.isEmpty()) {
211 return QString();
234 return QString();
235+ }
212
236
213− QString df = m_backend->desktopFile(appId + ".desktop");
237+ if (!appId.contains("_")) {
214− if (!df.isEmpty())
215 return "application:///" + appId + ".desktop";
238 return "application:///" + appId + ".desktop";
239+ }
216
240
217 QStringList parts = appId.split('_');
241 QStringList parts = appId.split('_');
218 QString package = parts.value(0);
242 QString package = parts.value(0);
@@ -272,7 +296,7 @@ void LauncherModel::storeAppList()
272 appIds << item->appId();
296 appIds << item->appId();
273 }
297 }
274 }
298 }
275− m_backend->setStoredApplications(appIds);
299+ m_settings->setStoredApplications(appIds);
276}
300}
277
301
278int LauncherModel::findApplication(const QString &appId)
302int LauncherModel::findApplication(const QString &appId)
@@ -307,6 +331,55 @@ void LauncherModel::countChanged(const QString &appId, int count)
307 }
331 }
308}
332}
309
333
334+void LauncherModel::countVisibleChanged(const QString &appId, int countVisible)
335+{
336+ int idx = findApplication(appId);
337+ if (idx >= 0) {
338+ LauncherItem *item = m_list.at(idx);
339+ item->setCountVisible(countVisible);
340+ Q_EMIT dataChanged(index(idx), index(idx), QVector<int>() << RoleCountVisible);
341+
342+ // If countVisible goes to false, and the item is neither pinned nor recent we can drop it
343+ if (!countVisible && !item->pinned() && !item->recent()) {
344+ beginRemoveRows(QModelIndex(), idx, idx);
345+ m_list.takeAt(idx)->deleteLater();
346+ endRemoveRows();
347+ }
348+ } else {
349+ // Need to create a new LauncherItem and show the highlight
350+ DesktopFileHandler desktopFile(appId);
351+ if (countVisible && desktopFile.isValid()) {
352+ LauncherItem *item = new LauncherItem(appId,
353+ desktopFile.displayName(),
354+ desktopFile.icon());
355+ item->setCountVisible(true);
356+ beginInsertRows(QModelIndex(), m_list.count(), m_list.count());
357+ m_list.append(item);
358+ endInsertRows();
359+ }
360+ }
361+}
362+
363+void LauncherModel::refresh()
364+{
365+ QList<LauncherItem*> toBeRemoved;
366+ Q_FOREACH (LauncherItem* item, m_list) {
367+ DesktopFileHandler desktopFile(item->appId());
368+ if (!desktopFile.isValid()) {
369+ toBeRemoved << item;
370+ } else {
371+ int idx = m_list.indexOf(item);
372+ item->setName(desktopFile.displayName());
373+ item->setIcon(desktopFile.icon());
374+ Q_EMIT dataChanged(index(idx), index(idx), QVector<int>() << RoleName << RoleIcon);
375+ }
376+ }
377+
378+ Q_FOREACH (LauncherItem* item, toBeRemoved) {
379+ requestRemove(item->appId());
380+ }
381+}
382+
310void LauncherModel::applicationAdded(const QModelIndex &parent, int row)
383void LauncherModel::applicationAdded(const QModelIndex &parent, int row)
311{
384{
312 Q_UNUSED(parent);
385 Q_UNUSED(parent);
plugins/Unity/Launcher/launchermodel.h+15−8
@@ -20,15 +20,14 @@
20#ifndef LAUNCHERMODEL_H
20#ifndef LAUNCHERMODEL_H
21#define LAUNCHERMODEL_H
21#define LAUNCHERMODEL_H
22
22
23−// unity-api
24#include <unity/shell/launcher/LauncherModelInterface.h>
23#include <unity/shell/launcher/LauncherModelInterface.h>
25#include <unity/shell/application/ApplicationManagerInterface.h>
24#include <unity/shell/application/ApplicationManagerInterface.h>
26
25
27−// Qt
28#include <QAbstractListModel>
26#include <QAbstractListModel>
29
27
30class LauncherItem;
28class LauncherItem;
31−class LauncherBackend;
29+class GSettings;
30+class DBusInterface;
32
31
33using namespace unity::shell::launcher;
32using namespace unity::shell::launcher;
34using namespace unity::shell::application;
33using namespace unity::shell::application;
@@ -41,14 +40,13 @@ public:
41 LauncherModel(QObject *parent = 0);
40 LauncherModel(QObject *parent = 0);
42 ~LauncherModel();
41 ~LauncherModel();
43
42
44− int rowCount(const QModelIndex &parent) const;
43+ int rowCount(const QModelIndex &parent = QModelIndex()) const;
45
44
46 QVariant data(const QModelIndex &index, int role) const;
45 QVariant data(const QModelIndex &index, int role) const;
47
46
48 Q_INVOKABLE unity::shell::launcher::LauncherItemInterface* get(int index) const;
47 Q_INVOKABLE unity::shell::launcher::LauncherItemInterface* get(int index) const;
49 Q_INVOKABLE void move(int oldIndex, int newIndex);
48 Q_INVOKABLE void move(int oldIndex, int newIndex);
50 Q_INVOKABLE void pin(const QString &appId, int index = -1);
49 Q_INVOKABLE void pin(const QString &appId, int index = -1);
51− Q_INVOKABLE void requestRemove(const QString &appId);
52 Q_INVOKABLE void quickListActionInvoked(const QString &appId, int actionIndex);
50 Q_INVOKABLE void quickListActionInvoked(const QString &appId, int actionIndex);
53 Q_INVOKABLE void setUser(const QString &username);
51 Q_INVOKABLE void setUser(const QString &username);
54 Q_INVOKABLE QString getUrlForAppId(const QString &appId) const;
52 Q_INVOKABLE QString getUrlForAppId(const QString &appId) const;
@@ -56,13 +54,19 @@ public:
56 unity::shell::application::ApplicationManagerInterface* applicationManager() const;
54 unity::shell::application::ApplicationManagerInterface* applicationManager() const;
57 void setApplicationManager(unity::shell::application::ApplicationManagerInterface *appManager);
55 void setApplicationManager(unity::shell::application::ApplicationManagerInterface *appManager);
58
56
57+ int findApplication(const QString &appId);
58+
59+public Q_SLOTS:
60+ void requestRemove(const QString &appId);
61+
59private:
62private:
60 void storeAppList();
63 void storeAppList();
61− int findApplication(const QString &appId);
62
64
63private Q_SLOTS:
65private Q_SLOTS:
64− void progressChanged(const QString &appId, int progress);
65 void countChanged(const QString &appId, int count);
66 void countChanged(const QString &appId, int count);
67+ void countVisibleChanged(const QString &appId, int count);
68+ void progressChanged(const QString &appId, int progress);
69+ void refresh();
66
70
67 void applicationAdded(const QModelIndex &parent, int row);
71 void applicationAdded(const QModelIndex &parent, int row);
68 void applicationRemoved(const QModelIndex &parent, int row);
72 void applicationRemoved(const QModelIndex &parent, int row);
@@ -70,7 +74,10 @@ private Q_SLOTS:
70
74
71private:
75private:
72 QList<LauncherItem*> m_list;
76 QList<LauncherItem*> m_list;
73− LauncherBackend *m_backend;
77+
78+ GSettings *m_settings;
79+ DBusInterface *m_dbusIface;
80+
74 ApplicationManagerInterface *m_appManager;
81 ApplicationManagerInterface *m_appManager;
75};
82};
76
83
plugins/Unity/Launcher/common/quicklistentry.cpp → plugins/Unity/Launcher/quicklistentry.cpprenamed

The content is the same.

plugins/Unity/Launcher/common/quicklistentry.h → plugins/Unity/Launcher/quicklistentry.hrenamed

The content is the same.

plugins/Unity/Launcher/quicklistmodel.h+1−1
@@ -20,7 +20,7 @@
20#ifndef QUICKLISTMODEL_H
20#ifndef QUICKLISTMODEL_H
21#define QUICKLISTMODEL_H
21#define QUICKLISTMODEL_H
22
22
23−#include "common/quicklistentry.h"
23+#include "quicklistentry.h"
24
24
25#include <unity/shell/launcher/QuickListModelInterface.h>
25#include <unity/shell/launcher/QuickListModelInterface.h>
26
26
plugins/Unity/Session/CMakeLists.txt+7
@@ -1,10 +1,16 @@
1+include(FindPkgConfig)
2+
3+pkg_search_module(GIO REQUIRED gio-2.0)
4+
1include_directories(
5include_directories(
2 ${CMAKE_CURRENT_SOURCE_DIR}
6 ${CMAKE_CURRENT_SOURCE_DIR}
7+ ${GIO_INCLUDE_DIRS}
3)
8)
4
9
5set(QMLSESSIONPLUGIN_SRC
10set(QMLSESSIONPLUGIN_SRC
6 plugin.cpp
11 plugin.cpp
7 dbusunitysessionservice.cpp
12 dbusunitysessionservice.cpp
13+ orientationlock.cpp
8 )
14 )
9
15
10add_library(UnitySession-qml MODULE
16add_library(UnitySession-qml MODULE
@@ -12,6 +18,7 @@ add_library(UnitySession-qml MODULE
12 )
18 )
13
19
14qt5_use_modules(UnitySession-qml DBus Qml)
20qt5_use_modules(UnitySession-qml DBus Qml)
21+target_link_libraries(UnitySession-qml ${GIO_LDFLAGS})
15
22
16# export the qmldir and qmltypes files
23# export the qmldir and qmltypes files
17add_unity8_plugin(Unity.Session 0.1 Unity/Session TARGETS UnitySession-qml)
24add_unity8_plugin(Unity.Session 0.1 Unity/Session TARGETS UnitySession-qml)
plugins/Unity/Session/orientationlock.cppnew file+74
@@ -0,0 +1,74 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software: you can redistribute it and/or modify it under
5+ * the terms of the GNU Lesser General Public License version 3, as published by
6+ * the Free Software Foundation.
7+ *
8+ * This program is distributed in the hope that it will be useful, but WITHOUT
9+ * ANY WARRANTY; without even the implied warranties of MERCHANTABILITY,
10+ * SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11+ * Lesser General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU Lesser General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#include "orientationlock.h"
18+
19+#include <QDBusConnection>
20+#include <QDBusInterface>
21+
22+OrientationLock::OrientationLock(QObject *parent)
23+ : QObject(parent)
24+ , m_enabled(false)
25+ , m_savedOrientation(Qt::PortraitOrientation)
26+{
27+ m_systemSettings = g_settings_new("com.ubuntu.touch.system");
28+ g_signal_connect(m_systemSettings, "changed::rotation-lock",
29+ G_CALLBACK(OrientationLock::onEnabledChangedProxy), this);
30+ m_enabled = g_settings_get_boolean(m_systemSettings, "rotation-lock");
31+}
32+
33+OrientationLock::~OrientationLock()
34+{
35+ g_signal_handlers_disconnect_by_data(m_systemSettings, this);
36+ g_object_unref(m_systemSettings);
37+}
38+
39+bool OrientationLock::enabled() const
40+{
41+ return m_enabled;
42+}
43+
44+Qt::ScreenOrientation OrientationLock::savedOrientation() const
45+{
46+ return m_savedOrientation;
47+}
48+
49+void OrientationLock::onEnabledChangedProxy(GSettings */*settings*/, const gchar */*key*/, gpointer data)
50+{
51+ OrientationLock* _this = static_cast<OrientationLock*>(data);
52+ _this->onEnabledChanged();
53+}
54+
55+void OrientationLock::onEnabledChanged()
56+{
57+ const bool enabled = g_settings_get_boolean(m_systemSettings, "rotation-lock");
58+ if (m_enabled != enabled) {
59+ m_enabled = enabled;
60+ Q_EMIT enabledChanged();
61+ }
62+}
63+
64+void OrientationLock::setSavedOrientation(const Qt::ScreenOrientation orientation)
65+{
66+ if (orientation == m_savedOrientation) {
67+ return;
68+ }
69+
70+ m_savedOrientation = orientation;
71+
72+ //TODO - save value with dbus to persist over sessions
73+ Q_EMIT savedOrientationChanged();
74+}
plugins/Unity/Session/orientationlock.hnew file+60
@@ -0,0 +1,60 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software: you can redistribute it and/or modify it under
5+ * the terms of the GNU Lesser General Public License version 3, as published by
6+ * the Free Software Foundation.
7+ *
8+ * This program is distributed in the hope that it will be useful, but WITHOUT
9+ * ANY WARRANTY; without even the implied warranties of MERCHANTABILITY,
10+ * SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11+ * Lesser General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU Lesser General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#ifndef ORIENTATIONLOCK_H
18+#define ORIENTATIONLOCK_H
19+
20+#include <gio/gio.h>
21+#include <QtCore/QObject>
22+
23+/**
24+ * @brief The OrientationLock class exports orientation lock related properties to QML
25+ * It has two properties:
26+ * - readonly boolean with the Orientation lock property state
27+ * - Qt::ScreenOrientation to save the locked orientation state across Sessions (only relevant if lock is true)
28+ */
29+class OrientationLock : public QObject
30+{
31+ Q_OBJECT
32+
33+ Q_PROPERTY(bool enabled READ enabled NOTIFY enabledChanged)
34+ Q_PROPERTY(Qt::ScreenOrientation savedOrientation READ savedOrientation WRITE setSavedOrientation
35+ NOTIFY savedOrientationChanged)
36+
37+public:
38+ explicit OrientationLock(QObject *parent = 0);
39+ ~OrientationLock();
40+
41+ bool enabled() const;
42+ Qt::ScreenOrientation savedOrientation() const;
43+ void setSavedOrientation(const Qt::ScreenOrientation orientation);
44+
45+Q_SIGNALS:
46+ void enabledChanged();
47+ void savedOrientationChanged();
48+
49+private Q_SLOTS:
50+ static void onEnabledChangedProxy(GSettings *settings, const gchar *key, gpointer data);
51+ void onEnabledChanged();
52+
53+private:
54+ GSettings *m_systemSettings;
55+
56+ bool m_enabled;
57+ Qt::ScreenOrientation m_savedOrientation;
58+};
59+
60+#endif // ORIENTATIONLOCK_H
plugins/Unity/Session/plugin.cpp+8−4
@@ -18,23 +18,27 @@
18
18
19#include "plugin.h"
19#include "plugin.h"
20#include "dbusunitysessionservice.h"
20#include "dbusunitysessionservice.h"
21+#include "orientationlock.h"
21
22
22#include <QAbstractItemModel>
23#include <QAbstractItemModel>
23#include <QDBusConnection>
24#include <QDBusConnection>
24#include <QtQml/qqml.h>
25#include <QtQml/qqml.h>
25
26
26−static QObject *dbusunitysessionservice_provider(QQmlEngine *engine, QJSEngine *scriptEngine)
27+static QObject *dbusunitysessionservice_provider(QQmlEngine */*engine*/, QJSEngine */*jsEngine*/)
27{
28{
28− Q_UNUSED(engine)
29− Q_UNUSED(scriptEngine)
30−
31 return new DBusUnitySessionService();
29 return new DBusUnitySessionService();
32}
30}
33
31
32+static QObject *orientationlock_provider(QQmlEngine */*engine*/, QJSEngine */*jsEngine*/)
33+{
34+ return new OrientationLock();
35+}
36+
34void SessionPlugin::registerTypes(const char *uri)
37void SessionPlugin::registerTypes(const char *uri)
35{
38{
36 qmlRegisterType<QAbstractItemModel>();
39 qmlRegisterType<QAbstractItemModel>();
37
40
38 Q_ASSERT(uri == QLatin1String("Unity.Session"));
41 Q_ASSERT(uri == QLatin1String("Unity.Session"));
39 qmlRegisterSingletonType<DBusUnitySessionService>(uri, 0, 1, "DBusUnitySessionService", dbusunitysessionservice_provider);
42 qmlRegisterSingletonType<DBusUnitySessionService>(uri, 0, 1, "DBusUnitySessionService", dbusunitysessionservice_provider);
43+ qmlRegisterSingletonType<OrientationLock>(uri, 0, 1, "OrientationLock", orientationlock_provider);
40}
44}
plugins/Utils/CMakeLists.txt+1
@@ -13,6 +13,7 @@ include_directories(
13set(QMLPLUGIN_SRC
13set(QMLPLUGIN_SRC
14 qlimitproxymodelqml.cpp
14 qlimitproxymodelqml.cpp
15 qsortfilterproxymodelqml.cpp
15 qsortfilterproxymodelqml.cpp
16+ relativetimeformatter.cpp
16 timeformatter.cpp
17 timeformatter.cpp
17 unitymenumodelpaths.cpp
18 unitymenumodelpaths.cpp
18 windowkeysfilter.cpp
19 windowkeysfilter.cpp
plugins/Utils/plugin.cpp+2
@@ -28,6 +28,7 @@
28// local
28// local
29#include "qlimitproxymodelqml.h"
29#include "qlimitproxymodelqml.h"
30#include "qsortfilterproxymodelqml.h"
30#include "qsortfilterproxymodelqml.h"
31+#include "relativetimeformatter.h"
31#include "timeformatter.h"
32#include "timeformatter.h"
32#include "unitymenumodelpaths.h"
33#include "unitymenumodelpaths.h"
33#include "windowkeysfilter.h"
34#include "windowkeysfilter.h"
@@ -44,6 +45,7 @@ void UtilsPlugin::registerTypes(const char *uri)
44 qmlRegisterType<WindowKeysFilter>(uri, 0, 1, "WindowKeysFilter");
45 qmlRegisterType<WindowKeysFilter>(uri, 0, 1, "WindowKeysFilter");
45 qmlRegisterType<GDateTimeFormatter>(uri, 0, 1, "GDateTimeFormatter");
46 qmlRegisterType<GDateTimeFormatter>(uri, 0, 1, "GDateTimeFormatter");
46 qmlRegisterType<EasingCurve>(uri, 0, 1, "EasingCurve");
47 qmlRegisterType<EasingCurve>(uri, 0, 1, "EasingCurve");
48+ qmlRegisterType<RelativeTimeFormatter>(uri, 0, 1, "RelativeTimeFormatter");
47}
49}
48
50
49void UtilsPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
51void UtilsPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
plugins/Utils/relativetimeformatter.cppnew file+268
@@ -0,0 +1,268 @@
1+/*
2+ * Copyright 2014 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ *
16+ */
17+
18+// Local
19+#include "relativetimeformatter.h"
20+
21+// Qt
22+#include <QDateTime>
23+
24+// Other
25+#include <glib.h>
26+#include <glib/gi18n.h>
27+#include <locale.h>
28+#include <langinfo.h>
29+#include <string.h>
30+
31+RelativeTimeFormatter::RelativeTimeFormatter(QObject *parent)
32+ : GDateTimeFormatter(parent)
33+{
34+}
35+
36+ /* Check the system locale setting to see if the format is 24-hour
37+ time or 12-hour time */
38+gboolean
39+is_locale_12h(void)
40+{
41+ int i;
42+ static const char *formats_24h[] = {"%H", "%R", "%T", "%OH", "%k", nullptr};
43+ const char* t_fmt = nl_langinfo(T_FMT);
44+
45+ for (i=0; formats_24h[i]!=nullptr; i++)
46+ if (strstr(t_fmt, formats_24h[i]) != nullptr)
47+ return FALSE;
48+
49+ return TRUE;
50+}
51+
52+typedef enum
53+{
54+ DATE_PROXIMITY_YESTERDAY,
55+ DATE_PROXIMITY_TODAY,
56+ DATE_PROXIMITY_TOMORROW,
57+ DATE_PROXIMITY_LAST_WEEK,
58+ DATE_PROXIMITY_NEXT_WEEK,
59+ DATE_PROXIMITY_FAR
60+} date_proximity_t;
61+
62+static date_proximity_t
63+getDateProximity(GDateTime* now, GDateTime* time)
64+{
65+ date_proximity_t prox = DATE_PROXIMITY_FAR;
66+ gint now_year, now_month, now_day;
67+ gint time_year, time_month, time_day;
68+
69+ // does it happen today?
70+ g_date_time_get_ymd(now, &now_year, &now_month, &now_day);
71+ g_date_time_get_ymd(time, &time_year, &time_month, &time_day);
72+ if ((now_year == time_year) && (now_month == time_month) && (now_day == time_day)) {
73+ return DATE_PROXIMITY_TODAY;
74+ }
75+
76+ // did it happen yesterday?
77+ GDateTime* tomorrow = g_date_time_add_days(now, -1);
78+ gint tom_year, tom_month, tom_day;
79+ g_date_time_get_ymd(tomorrow, &tom_year, &tom_month, &tom_day);
80+ g_date_time_unref(tomorrow);
81+ if ((tom_year == time_year) && (tom_month == time_month) && (tom_day == time_day)) {
82+ return DATE_PROXIMITY_YESTERDAY;
83+ }
84+
85+ // does it happen tomorrow?
86+ if (prox == DATE_PROXIMITY_FAR)
87+ {
88+ GDateTime* tomorrow = g_date_time_add_days(now, 1);
89+
90+ gint tom_year, tom_month, tom_day;
91+ g_date_time_get_ymd(tomorrow, &tom_year, &tom_month, &tom_day);
92+ g_date_time_unref(tomorrow);
93+ if ((tom_year == time_year) && (tom_month == time_month) && (tom_day == time_day)) {
94+ return DATE_PROXIMITY_TOMORROW;
95+ }
96+ }
97+
98+ // does it happen this week?
99+ if (prox == DATE_PROXIMITY_FAR) {
100+ if (g_date_time_compare(time, now) < 0) {
101+ GDateTime* last_week = g_date_time_add_days(now, -6);
102+ GDateTime* last_week_bound = g_date_time_new_local(g_date_time_get_year(last_week),
103+ g_date_time_get_month(last_week),
104+ g_date_time_get_day_of_month(last_week),
105+ 0, 0, 0);
106+ if (g_date_time_compare(time, last_week_bound) >= 0)
107+ prox = DATE_PROXIMITY_LAST_WEEK;
108+
109+ g_date_time_unref(last_week);
110+ g_date_time_unref(last_week_bound);
111+ } else {
112+ GDateTime* next_week = g_date_time_add_days(now, 6);
113+ GDateTime* next_week_bound = g_date_time_new_local(g_date_time_get_year(next_week),
114+ g_date_time_get_month(next_week),
115+ g_date_time_get_day_of_month(next_week),
116+ 23, 59, 59.9);
117+ if (g_date_time_compare(time, next_week_bound) <= 0)
118+ prox = DATE_PROXIMITY_NEXT_WEEK;
119+
120+ g_date_time_unref(next_week);
121+ g_date_time_unref(next_week_bound);
122+ }
123+
124+ }
125+
126+ return prox;
127+}
128+
129+const char*
130+dgettext_datetime(const char *text)
131+{
132+ return dgettext("indicator-datetime", text);
133+}
134+
135+/**
136+ * _ a time yesterday should be shown as (e.g. “Yesterday 3:55 PM”)
137+ * _ a time today should be shown as just the time (e.g. “3:55 PM”)
138+ * _ a time tomorrow should be shown as(e.g. “Tomorrow 3:55 PM”)
139+ * _ a time any other day this week should be shown as the short version of the
140+ * day and time (e.g. “Wed 3:55 PM”)
141+ * weekday (e.g. “Friday”)
142+ * _ a time after this week should be shown as the short version of the day,
143+ * date, and time (e.g. “Wed 21 Apr 3:55 PM”)
144+ * _ in addition, when presenting the times of upcoming events, the time should
145+ * be followed by the timezone if it is different from the one the computer
146+ * is currently set to. For example, “Wed 3:55 PM UTC−5”.
147+ *
148+ * TODO - keep inline with indicator-datetime
149+ */
150+char* generate_full_format_string_at_time (GDateTime* now,
151+ GDateTime* then)
152+{
153+ GString* ret = g_string_new (nullptr);
154+
155+ if (then != nullptr) {
156+ const date_proximity_t prox = getDateProximity(now, then);
157+
158+ if (is_locale_12h()) {
159+ switch (prox) {
160+ case DATE_PROXIMITY_YESTERDAY:
161+ /* Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
162+ This format string is used for showing, on a 12-hour clock, times that happen yesterday.
163+ (\u2003 is a unicode em space which is slightly wider than a normal space.)
164+ en_US example: "Yesterday\u2003%l:%M %p" --> "Yesterday 1:00 PM" */
165+ g_string_assign (ret, dgettext_datetime("Yesterday\u2003%l:%M %p"));
166+ break;
167+
168+ case DATE_PROXIMITY_TODAY:
169+ /* Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
170+ This format string is used for showing, on a 12-hour clock, times that happened today.
171+ en_US example: "%l:%M %p" --> "1:00 PM" */
172+ g_string_assign (ret, dgettext_datetime("%l:%M %p"));
173+ break;
174+
175+ case DATE_PROXIMITY_TOMORROW:
176+ /* Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
177+ This format string is used for showing, on a 12-hour clock, events/appointments that happen tomorrow.
178+ (\u2003 is a unicode em space which is slightly wider than a normal space.)
179+ en_US example: "Tomorrow\u2003%l:%M %p" --> "Tomorrow 1:00 PM" */
180+ g_string_assign (ret, dgettext_datetime("Tomorrow\u2003%l:%M %p"));
181+ break;
182+
183+ case DATE_PROXIMITY_LAST_WEEK:
184+ case DATE_PROXIMITY_NEXT_WEEK:
185+ /* Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
186+ This format string is used for showing, on a 12-hour clock, times that happened in the last week.
187+ (\u2003 is a unicode em space which is slightly wider than a normal space.)
188+ en_US example: "%a\u2003%l:%M %p" --> "Fri 1:00 PM" */
189+ g_string_assign (ret, dgettext_datetime("%a\u2003%l:%M %p"));
190+ break;
191+
192+ case DATE_PROXIMITY_FAR:
193+ /* Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
194+ This format string is used for showing, on a 12-hour clock, times that happened before a week from now.
195+ (\u2003 is a unicode em space which is slightly wider than a normal space.)
196+ en_US example: "%a %d %b\u2003%l:%M %p" --> "Fri Oct 31 1:00 PM"
197+ en_GB example: "%a %b %d\u2003%l:%M %p" --> "Fri 31 Oct 1:00 PM" */
198+ g_string_assign (ret, dgettext_datetime("%a %d %b\u2003%l:%M %p"));
199+ break;
200+ }
201+ } else {
202+ switch (prox) {
203+
204+ case DATE_PROXIMITY_YESTERDAY:
205+ /* Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
206+ This format string is used for showing, on a 24-hour clock, times that happen yesterday.
207+ (\u2003 is a unicode em space which is slightly wider than a normal space.)
208+ en_US example: "Yesterday\u2003%l:%M %p" --> "Yesterday 13:00" */
209+ g_string_assign (ret, dgettext_datetime("Yesterday\u2003%H:%M"));
210+ break;
211+
212+ case DATE_PROXIMITY_TODAY:
213+ /* Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
214+ This format string is used for showing, on a 24-hour clock, times that happened today.
215+ en_US example: "%H:%M" --> "13:00" */
216+ g_string_assign (ret, dgettext_datetime("%H:%M"));
217+ break;
218+
219+ case DATE_PROXIMITY_TOMORROW:
220+ /* Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
221+ This format string is used for showing, on a 24-hour clock, events/appointments that happen tomorrow.
222+ (\u2003 is a unicode em space which is slightly wider than a normal space.)
223+ en_US example: "Tomorrow\u2003%l:%M %p" --> "Tomorrow 13:00" */
224+ g_string_assign (ret, dgettext_datetime("Tomorrow\u2003%H:%M"));
225+ break;
226+
227+ case DATE_PROXIMITY_LAST_WEEK:
228+ case DATE_PROXIMITY_NEXT_WEEK:
229+ /* Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
230+ This format string is used for showing, on a 24-hour clock, times that happened in the last week.
231+ (\u2003 is a unicode em space which is slightly wider than a normal space.)
232+ en_US example: "%a\u2003%H:%M" --> "Fri 13:00" */
233+ g_string_assign (ret, dgettext_datetime("%a\u2003%H:%M"));
234+ break;
235+
236+ case DATE_PROXIMITY_FAR:
237+ /* Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
238+ This format string is used for showing, on a 24-hour clock, times that happened before a week from now.
239+ (\u2003 is a unicode em space which is slightly wider than a normal space.)
240+ en_US example: "%a %d %b\u2003%H:%M" --> "Fri Oct 31 13:00"
241+ en_GB example: "%a %b %d\u2003%H:%M" --> "Fri 31 Oct 13:00" */
242+ g_string_assign (ret, dgettext_datetime("%a %d %b\u2003%H:%M"));
243+ break;
244+ }
245+ }
246+ }
247+
248+ return g_string_free (ret, FALSE);
249+}
250+
251+QString RelativeTimeFormatter::format() const
252+{
253+ GDateTime* now = g_date_time_new_from_unix_utc(QDateTime::currentMSecsSinceEpoch() / 1000);
254+ if (!now) { return QString(); }
255+
256+ GDateTime* then = g_date_time_new_from_unix_local(time());
257+ if (!then) { return QString(); }
258+
259+ char* time_format = generate_full_format_string_at_time(now, then);
260+
261+ QString str(QString::fromUtf8(time_format));
262+ g_free(time_format);
263+
264+ g_date_time_unref(now);
265+ g_date_time_unref(then);
266+
267+ return str;
268+}
plugins/Utils/relativetimeformatter.hnew file+34
@@ -0,0 +1,34 @@
1+/*
2+ * Copyright 2014 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ *
16+ */
17+
18+#ifndef RELATIVETIMEFORMATTER_H
19+#define RELATIVETIMEFORMATTER_H
20+
21+#include "timeformatter.h"
22+
23+// TODO - move this to the sdk
24+// https://blueprints.launchpad.net/ubuntu-ui-toolkit/+spec/time-formatter
25+class RelativeTimeFormatter : public GDateTimeFormatter
26+{
27+ Q_OBJECT
28+public:
29+ RelativeTimeFormatter(QObject *parent = 0);
30+
31+ QString format() const override;
32+};
33+
34+#endif // RELATIVETIMEFORMATTER_H
plugins/Utils/timeformatter.cpp+6−1
@@ -121,6 +121,11 @@ TimeFormatter::TimeFormatter(QObject *parent): QObject(parent)
121 g_bus_get (G_BUS_TYPE_SYSTEM, priv->cancellable, got_bus, priv);
121 g_bus_get (G_BUS_TYPE_SYSTEM, priv->cancellable, got_bus, priv);
122}
122}
123
123
124+TimeFormatter::TimeFormatter(const QString &initialFormat, QObject *parent): TimeFormatter(parent)
125+{
126+ priv->format = initialFormat;
127+}
128+
124TimeFormatter::~TimeFormatter()
129TimeFormatter::~TimeFormatter()
125{
130{
126 if (priv->system_bus) {
131 if (priv->system_bus) {
@@ -177,7 +182,7 @@ QString TimeFormatter::formatTime() const
177}
182}
178
183
179GDateTimeFormatter::GDateTimeFormatter(QObject* parent)
184GDateTimeFormatter::GDateTimeFormatter(QObject* parent)
180−: TimeFormatter(parent)
185+: TimeFormatter("%d-%m-%Y %I:%M%p", parent)
181{
186{
182}
187}
183
188
plugins/Utils/timeformatter.h+3−1
@@ -33,7 +33,7 @@ public:
33 TimeFormatter(QObject *parent = 0);
33 TimeFormatter(QObject *parent = 0);
34 virtual ~TimeFormatter();
34 virtual ~TimeFormatter();
35
35
36− QString format() const;
36+ virtual QString format() const;
37 QString timeString() const;
37 QString timeString() const;
38 qint64 time() const;
38 qint64 time() const;
39
39
@@ -48,6 +48,8 @@ Q_SIGNALS:
48 void timeChanged(qint64 time);
48 void timeChanged(qint64 time);
49
49
50protected:
50protected:
51+ TimeFormatter(const QString &initialFormat, QObject *parent = 0);
52+
51 virtual QString formatTime() const;
53 virtual QString formatTime() const;
52
54
53private:
55private:
plugins/Utils/windowkeysfilter.cpp+1
@@ -31,6 +31,7 @@ bool WindowKeysFilter::eventFilter(QObject *watched, QEvent *event)
31{
31{
32 Q_ASSERT(!m_filteredWindow.isNull());
32 Q_ASSERT(!m_filteredWindow.isNull());
33 Q_ASSERT(watched == static_cast<QObject*>(m_filteredWindow.data()));
33 Q_ASSERT(watched == static_cast<QObject*>(m_filteredWindow.data()));
34+ Q_UNUSED(watched);
34
35
35 if (event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease) {
36 if (event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease) {
36 // Let QML see this event and decide if it does not want it
37 // Let QML see this event and decide if it does not want it
po/am.po+122−99
@@ -7,78 +7,104 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11−"PO-Revision-Date: 2014-08-23 17:14+0000\n"
11+"PO-Revision-Date: 2014-10-08 00:48+0000\n"
12"Last-Translator: samson <Unknown>\n"
12"Last-Translator: samson <Unknown>\n"
13"Language-Team: Amharic <am@li.org>\n"
13"Language-Team: Amharic <am@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=2; plural=n > 1;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:29+0000\n"
18+"X-Launchpad-Export-Date: 2014-10-09 06:36+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
19+"X-Generator: Launchpad (build 17196)\n"
19
20
20−#: plugins/LightDM/Greeter.cpp:129
21+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
22msgid "Password: "
22msgstr "የ መግቢያ ቃል: "
23msgstr "የ መግቢያ ቃል: "
23
24
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
27msgid "Pin shortcut"
27msgstr "አቋራጭ ማጣበቂያ"
28msgstr "አቋራጭ ማጣበቂያ"
28
29
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
31msgid "Unpin shortcut"
31msgstr "አቋራጭ መለያያ"
32msgstr "አቋራጭ መለያያ"
32
33
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr "አካሉ ተቆልፏል"
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr "ብዙ ጊዜ የተሳሳተ የ ማለፊያ ሀረግ ለማስገባት በ መሞከር ምክንያት ስልኩ ተቆልፏል"
41+
42+#: qml/Components/DelayedLockscreen.qml:63
43+msgid "You have been locked out due to too many failed passcode attempts."
44+msgstr "ብዙ ጊዜ የተሳሳተ የ ማለፊያ ኮድ ለማስገባት በ መሞከር ምክንያት ስልኩ ተቆልፏል"
45+
46+#: qml/Components/DelayedLockscreen.qml:72
47+#, qt-format
48+msgid "Please wait %1 minute and then try again…"
49+msgid_plural "Please wait %1 minutes and then try again…"
50+msgstr[0] "እባክዎን ይቆዩ %1 ደቂቃ እና ከዛ እንደ ገና ይምክሩ…"
51+msgstr[1] "እባክዎን ይቆዩ %1 ደቂቃዎች እና ከዛ እንደ ገና ይምክሩ…"
52+
33#: qml/Components/Dialogs.qml:70
53#: qml/Components/Dialogs.qml:70
34msgid "Log out"
54msgid "Log out"
35−msgstr ""
55+msgstr "መውጫ"
36
56
37#: qml/Components/Dialogs.qml:71
57#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
58msgid "Are you sure you want to log out?"
39−msgstr ""
59+msgstr "በእርግጥ መውጣት ይፈልጋሉ?"
40
60
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
61#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
62#: qml/Components/Dialogs.qml:122
43msgid "No"
63msgid "No"
44−msgstr ""
64+msgstr "አይ"
45
65
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
66#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
67#: qml/Components/Dialogs.qml:129
48msgid "Yes"
68msgid "Yes"
49−msgstr ""
69+msgstr "አዎ"
50
70
51#: qml/Components/Dialogs.qml:94
71#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
72msgid "Shut down"
53−msgstr ""
73+msgstr "ማጥፊያ"
54
74
55#: qml/Components/Dialogs.qml:95
75#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
76msgid "Are you sure you want to shut down?"
57−msgstr ""
77+msgstr "በእርግጥ ማጥፋት ይፈልጋሉ?"
58
78
59#: qml/Components/Dialogs.qml:119
79#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
80msgid "Reboot"
61−msgstr ""
81+msgstr "እንደገና ማስነሻ"
62
82
63#: qml/Components/Dialogs.qml:120
83#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
84msgid "Are you sure you want to reboot?"
65−msgstr ""
85+msgstr "በእርግጥ እንደገና ማስነሳት ይፈልጋሉ?"
66
86
67#: qml/Components/Dialogs.qml:144
87#: qml/Components/Dialogs.qml:144
68msgid "Power"
88msgid "Power"
69−msgstr ""
89+msgstr "ሐይል"
70
90
71#: qml/Components/Dialogs.qml:145
91#: qml/Components/Dialogs.qml:145
72msgid ""
92msgid ""
73"Are you sure you would like\n"
93"Are you sure you would like\n"
74"to power off?"
94"to power off?"
75msgstr ""
95msgstr ""
96+"በእርግጥ ሐይሉን ማጥፋት\n"
97+"ይፈልጋሉ?"
76
98
77−#: qml/Components/Dialogs.qml:144
99+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
100msgid "Power off"
79msgstr "ማጥፊያ"
101msgstr "ማጥፊያ"
80
102
81−#: qml/Components/Dialogs.qml:162
103+#: qml/Components/Dialogs.qml:157
104+msgid "Restart"
105+msgstr "እንደገና ማስጀመሪያ"
106+
107+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
108msgid "Cancel"
83msgstr "መሰረዣ"
109msgstr "መሰረዣ"
84
110
@@ -127,61 +153,46 @@ msgid ""
127"You have now mastered the edge gestures and can start using the "
153"You have now mastered the edge gestures and can start using the "
128"phone<br><br>Tap on the screen to start"
154"phone<br><br>Tap on the screen to start"
129msgstr ""
155msgstr ""
156+"አሁን የ ጠርዝ እንቅስቃሴን አውቀዋል እና መጀመር ይችላሉ ስልኩን መጠቀም <br><br>መመልከቻውን መታ ያድርጉ ለመጀመር"
130
157
131−#: qml/Components/Lockscreen.qml:167
158+#: qml/Components/Lockscreen.qml:220
132−msgid "Please wait"
133−msgstr "እባክዎን ይቆዩ"
134−
135−#: qml/Components/Lockscreen.qml:172
136−msgid "Too many incorrect attempts"
137−msgstr "በርካታ የተሳሳቱ ሙከራዎች"
138−
139−#: qml/Components/Lockscreen.qml:206
140msgid "Emergency Call"
159msgid "Emergency Call"
141msgstr "የ ድንገተኛ ጥሪ"
160msgstr "የ ድንገተኛ ጥሪ"
142
161
143−#: qml/Components/Lockscreen.qml:226
162+#: qml/Components/Lockscreen.qml:252
144msgid "OK"
163msgid "OK"
145msgstr "እሺ"
164msgstr "እሺ"
146
165
147−#: qml/Components/PassphraseLockscreen.qml:61
148−#, qt-format
149−msgid "Hello %1"
150−msgstr "ሰላም %1"
151−
152−#: qml/Components/PassphraseLockscreen.qml:61
153−msgid "Hello"
154−msgstr "ሰላም"
155−
156−#: qml/Dash/GenericScopeView.qml:361
166+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
157msgid "See less"
167msgid "See less"
158msgstr "አነስተኛ መመልከቻ"
168msgstr "አነስተኛ መመልከቻ"
159
169
160−#: qml/Dash/GenericScopeView.qml:361
170+#: qml/Dash/GenericScopeView.qml:434
161msgid "See all"
171msgid "See all"
162msgstr "ሁሉንም መመልከቻ"
172msgstr "ሁሉንም መመልከቻ"
163
173
174+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
164−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
175+#: qml/Panel/SearchIndicator.qml:27
165msgid "Search"
176msgid "Search"
166msgstr "መፈለጊያ"
177msgstr "መፈለጊያ"
167
178
168−#: qml/Dash/PageHeader.qml:270
179+#: qml/Dash/PageHeader.qml:268
169msgid "Settings"
180msgid "Settings"
170−msgstr ""
181+msgstr "ማሰናጃ"
171
182
172−#: qml/Dash/PageHeader.qml:279
183+#: qml/Dash/PageHeader.qml:275
173msgid "Remove from Favorites"
184msgid "Remove from Favorites"
174−msgstr ""
185+msgstr "ከምወዳቸው ማስወገጃ"
175
186
176−#: qml/Dash/PageHeader.qml:279
187+#: qml/Dash/PageHeader.qml:275
177msgid "Add to Favorites"
188msgid "Add to Favorites"
178−msgstr ""
189+msgstr "ወደምወዳቸው መጨመሪያ"
179
190
180−#: qml/Dash/Previews/PreviewActionCombo.qml:34
191+#: qml/Dash/Previews/PreviewActionCombo.qml:35
181msgid "More..."
192msgid "More..."
182msgstr "ተጨማሪ..."
193msgstr "ተጨማሪ..."
183
194
184−#: qml/Dash/Previews/PreviewActionCombo.qml:34
195+#: qml/Dash/Previews/PreviewActionCombo.qml:35
185msgid "Less..."
196msgid "Less..."
186msgstr "አነስተኛ..."
197msgstr "አነስተኛ..."
187
198
@@ -197,15 +208,23 @@ msgstr "ግምገማ መጨመሪያ"
197msgid "Send"
208msgid "Send"
198msgstr "መላኪያ"
209msgstr "መላኪያ"
199
210
200−#: qml/Dash/ScopesOverview.qml:201
211+#: qml/Dash/PullToRefreshScopeStyle.qml:55
201−msgid "Manage Dash"
212+msgid "Pull to refresh…"
202−msgstr ""
213+msgstr "ይሳቡ ለማነቃቃት…"
214+
215+#: qml/Dash/PullToRefreshScopeStyle.qml:60
216+msgid "Release to refresh…"
217+msgstr "ይልቀቁ ለማነቃቃት…"
203
218
204−#: qml/Dash/ScopesOverview.qml:408
219+#: qml/Dash/ScopesOverview.qml:206
220+msgid "Manage Scopes"
221+msgstr "የ ክልል አስተዳዳሪ"
222+
223+#: qml/Dash/ScopesOverview.qml:428
205msgid "Done"
224msgid "Done"
206msgstr "ጨርሷል"
225msgstr "ጨርሷል"
207
226
208−#: qml/Dash/ScopesOverview.qml:434
227+#: qml/Dash/ScopesOverview.qml:454
209msgid "Store"
228msgid "Store"
210msgstr "ማስቀመጫ"
229msgstr "ማስቀመጫ"
211
230
@@ -218,10 +237,10 @@ msgid "All"
218msgstr "ሁሉንም"
237msgstr "ሁሉንም"
219
238
220#: qml/Greeter/Greeter.qml:157
239#: qml/Greeter/Greeter.qml:157
221−msgid "Swipe to unlock"
240+msgid "Unlock"
222−msgstr "ለመክፈት ይጥረጉ"
241+msgstr "መክፈቻ"
223
242
224−#: qml/Hud/HudParametrizedActionsPage.qml:132
243+#: qml/Hud/HudParametrizedActionsPage.qml:139
225msgid "Confirm"
244msgid "Confirm"
226msgstr "ማረጋገጫ"
245msgstr "ማረጋገጫ"
227
246
@@ -241,18 +260,10 @@ msgstr "አሁን ይናገሩ..."
241msgid "Speaking..."
260msgid "Speaking..."
242msgstr "በመናገር ላይ..."
261msgstr "በመናገር ላይ..."
243
262
244−#: qml/Notifications/NotificationMenuItemFactory.qml:105
263+#: qml/Notifications/NotificationMenuItemFactory.qml:116
245msgid "Show password"
264msgid "Show password"
246msgstr "የመግቢያ ቃል ማሳያ"
265msgstr "የመግቢያ ቃል ማሳያ"
247
266
248−#: qml/Notifications/NotificationMenuItemFactory.qml:120
249−msgid "Enter SIM PIN"
250−msgstr ""
251−
252−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
253−msgid "Sorry, incorrect PIN"
254−msgstr ""
255−
256#: qml/Panel/ActiveCallHint.qml:77
267#: qml/Panel/ActiveCallHint.qml:77
257msgid "Tap to return to call..."
268msgid "Tap to return to call..."
258msgstr "ወደ ጥሪው ለመመለስ መታ ያድርጉ..."
269msgstr "ወደ ጥሪው ለመመለስ መታ ያድርጉ..."
@@ -261,90 +272,102 @@ msgstr "ወደ ጥሪው ለመመለስ መታ ያድርጉ..."
261msgid "Conference"
272msgid "Conference"
262msgstr "ስብሰባ"
273msgstr "ስብሰባ"
263
274
264−#: qml/Panel/Indicators/MenuItemFactory.qml:651
275+#: qml/Panel/Indicators/MenuItemFactory.qml:600
276+msgid "Nothing is playing"
277+msgstr "ምንም አይጫወትም"
278+
279+#: qml/Panel/Indicators/MenuItemFactory.qml:748
265msgid "In queue…"
280msgid "In queue…"
266msgstr "ወረፋ በመጠበቅ ላይ…"
281msgstr "ወረፋ በመጠበቅ ላይ…"
267
282
268−#: qml/Panel/Indicators/MenuItemFactory.qml:655
283+#: qml/Panel/Indicators/MenuItemFactory.qml:752
269msgid "Downloading"
284msgid "Downloading"
270msgstr "በማውረድ ላይ"
285msgstr "በማውረድ ላይ"
271
286
272−#: qml/Panel/Indicators/MenuItemFactory.qml:657
287+#: qml/Panel/Indicators/MenuItemFactory.qml:754
273msgid "Paused, tap to resume"
288msgid "Paused, tap to resume"
274msgstr "ማስቆሚያ: ለመቀጠል መታ ያድርጉ"
289msgstr "ማስቆሚያ: ለመቀጠል መታ ያድርጉ"
275
290
276−#: qml/Panel/Indicators/MenuItemFactory.qml:659
291+#: qml/Panel/Indicators/MenuItemFactory.qml:756
277msgid "Canceled"
292msgid "Canceled"
278msgstr "ተሰርዟል"
293msgstr "ተሰርዟል"
279
294
280−#: qml/Panel/Indicators/MenuItemFactory.qml:661
295+#: qml/Panel/Indicators/MenuItemFactory.qml:758
281msgid "Finished"
296msgid "Finished"
282msgstr "ጨርሷል"
297msgstr "ጨርሷል"
283
298
284−#: qml/Panel/Indicators/MenuItemFactory.qml:663
299+#: qml/Panel/Indicators/MenuItemFactory.qml:760
285msgid "Failed, tap to retry"
300msgid "Failed, tap to retry"
286msgstr "አልተቻለም: እንደገና ለመሞከር መታ ያድርጉ"
301msgstr "አልተቻለም: እንደገና ለመሞከር መታ ያድርጉ"
287
302
288#: qml/Panel/Indicators/ModemInfoItem.qml:105
303#: qml/Panel/Indicators/ModemInfoItem.qml:105
289msgid "Unlock SIM"
304msgid "Unlock SIM"
290−msgstr ""
305+msgstr "ሲም መክፈቻ"
291
306
292#: qml/Panel/Indicators/RoamingIndication.qml:27
307#: qml/Panel/Indicators/RoamingIndication.qml:27
293msgid "Roaming"
308msgid "Roaming"
294−msgstr ""
309+msgstr "ማዘዋወሪያ"
295
310
296−#: qml/Shell.qml:266
311+#: qml/Shell.qml:346
297−msgid "Enter your passphrase"
312+msgid "Enter passphrase"
298−msgstr ""
313+msgstr "የ ማለፊያ ሀረግ ያስገቡ"
299
314
300−#: qml/Shell.qml:267
315+#: qml/Shell.qml:347
301msgid "Sorry, incorrect passphrase"
316msgid "Sorry, incorrect passphrase"
302−msgstr ""
317+msgstr "አዝናለሁ የተሳሳተ የማለፊያ ሐረግ"
303
318
304−#: qml/Shell.qml:282
319+#: qml/Shell.qml:348
320+msgid "Please re-enter"
321+msgstr "እባክዎን እንደገና-ያስገቡ"
322+
323+#: qml/Shell.qml:350
305−msgid "Enter your passcode"
324+msgid "Enter passcode"
306−msgstr ""
325+msgstr "የ ማለፊያ ኮድ ያስገቡ"
307
326
308−#: qml/Shell.qml:283
327+#: qml/Shell.qml:351
309msgid "Sorry, incorrect passcode"
328msgid "Sorry, incorrect passcode"
310−msgstr ""
329+msgstr "አዝናለሁ የተሳሳተ የማለፊያ ኮድ"
311
330
312−#: qml/Shell.qml:273
331+#: qml/Shell.qml:354
313#, qt-format
332#, qt-format
314−msgid "Enter your %1"
333+msgid "Enter %1"
315−msgstr "ያስገቡ የ እርስዎን %1"
334+msgstr "ማስገቢያ %1"
316
335
317−#: qml/Shell.qml:274
336+#: qml/Shell.qml:355
318#, qt-format
337#, qt-format
319msgid "Sorry, incorrect %1"
338msgid "Sorry, incorrect %1"
320msgstr "አዝናለሁ: የተሳሳተ%1"
339msgstr "አዝናለሁ: የተሳሳተ%1"
321
340
322−#: qml/Shell.qml:310
341+#: qml/Shell.qml:390
323msgid "Sorry, incorrect passphrase."
342msgid "Sorry, incorrect passphrase."
324−msgstr ""
343+msgstr "አዝናለሁ የተሳሳተ የማለፊያ ሐረግ"
325
344
326−#: qml/Shell.qml:311
345+#: qml/Shell.qml:391
327msgid "Sorry, incorrect passcode."
346msgid "Sorry, incorrect passcode."
328−msgstr ""
347+msgstr "አዝናለሁ የተሳሳተ የማለፊያ ኮድ"
329
348
330−#: qml/Shell.qml:312
349+#: qml/Shell.qml:392
331msgid "This will be your last attempt."
350msgid "This will be your last attempt."
332msgstr "ይህ የመጨረሻ ሙከራዎ ነው"
351msgstr "ይህ የመጨረሻ ሙከራዎ ነው"
333
352
334−#: qml/Shell.qml:314
353+#: qml/Shell.qml:394
335msgid ""
354msgid ""
336"If passphrase is entered incorrectly, your phone will conduct a factory "
355"If passphrase is entered incorrectly, your phone will conduct a factory "
337"reset and all personal data will be deleted."
356"reset and all personal data will be deleted."
338msgstr ""
357msgstr ""
358+"የተሳሳተ የማለፊያ ሐረግ ካስገቡ የ እርስዎ ስልክ ወደ ነበረበት ወደ ፋክቶሪው ዘዴ ይመለሳል: እና የ ግል ዳታ በሙሉ "
359+"ይጠፋል"
339
360
340−#: qml/Shell.qml:315
361+#: qml/Shell.qml:395
341msgid ""
362msgid ""
342"If passcode is entered incorrectly, your phone will conduct a factory reset "
363"If passcode is entered incorrectly, your phone will conduct a factory reset "
343"and all personal data will be deleted."
364"and all personal data will be deleted."
344msgstr ""
365msgstr ""
366+"የተሳሳተ የማለፊያ ኮድ ካስገቡ የ እርስዎ ስልክ ወደ ነበረበት ወደ ፋክቶሪው ዘዴ ይመለሳል: እና የ ግል ዳታ በሙሉ "
367+"ይጠፋል"
345
368
346−#~ msgid "Restart"
369+#~ msgid "Sorry, incorrect PIN"
347−#~ msgstr "እንደገና ማስጀመሪያ"
370+#~ msgstr "አዝናለሁ የተሳሳተ ፒን"
348
371
349−#~ msgid "Are you sure you would like to turn power off?"
372+#~ msgid "Enter SIM PIN"
350−#~ msgstr "በእርግጥ ሐይሉን ማጥፋት ይፈልጋሉ"
373+#~ msgstr "ሲም ፒን ያስገቡ"
po/ar.po+89−72
@@ -7,29 +7,50 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11"PO-Revision-Date: 2014-05-22 08:22+0000\n"
11"PO-Revision-Date: 2014-05-22 08:22+0000\n"
12"Last-Translator: Ibrahim Saed <ibraheem5000@gmail.com>\n"
12"Last-Translator: Ibrahim Saed <ibraheem5000@gmail.com>\n"
13"Language-Team: Arabic <ar@li.org>\n"
13"Language-Team: Arabic <ar@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n % 100 >= "
18+"3 && n % 100 <= 10 ? 3 : n % 100 >= 11 && n % 100 <= 99 ? 4 : 5;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:29+0000\n"
19+"X-Launchpad-Export-Date: 2014-10-09 06:36+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
20+"X-Generator: Launchpad (build 17196)\n"
19
21
20−#: plugins/LightDM/Greeter.cpp:129
22+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
23msgid "Password: "
22msgstr ""
24msgstr ""
23
25
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
26+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
27+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
28msgid "Pin shortcut"
27msgstr ""
29msgstr ""
28
30
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
31+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
32msgid "Unpin shortcut"
31msgstr ""
33msgstr ""
32
34
35+#: qml/Components/DelayedLockscreen.qml:47
36+msgid "Device Locked"
37+msgstr ""
38+
39+#: qml/Components/DelayedLockscreen.qml:62
40+msgid "You have been locked out due to too many failed passphrase attempts."
41+msgstr ""
42+
43+#: qml/Components/DelayedLockscreen.qml:63
44+msgid "You have been locked out due to too many failed passcode attempts."
45+msgstr ""
46+
47+#: qml/Components/DelayedLockscreen.qml:72
48+#, qt-format
49+msgid "Please wait %1 minute and then try again…"
50+msgid_plural "Please wait %1 minutes and then try again…"
51+msgstr[0] ""
52+msgstr[1] ""
53+
33#: qml/Components/Dialogs.qml:70
54#: qml/Components/Dialogs.qml:70
34msgid "Log out"
55msgid "Log out"
35msgstr ""
56msgstr ""
@@ -74,11 +95,15 @@ msgid ""
74"to power off?"
95"to power off?"
75msgstr ""
96msgstr ""
76
97
77−#: qml/Components/Dialogs.qml:144
98+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
99msgid "Power off"
79msgstr ""
100msgstr ""
80
101
81−#: qml/Components/Dialogs.qml:162
102+#: qml/Components/Dialogs.qml:157
103+msgid "Restart"
104+msgstr ""
105+
106+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
107msgid "Cancel"
83msgstr ""
108msgstr ""
84
109
@@ -131,60 +156,44 @@ msgstr ""
131"أنت الآن بارع في إيماءات الحواف ويمكنك البدء باستخدام هاتفك<br><br>انقر على "
156"أنت الآن بارع في إيماءات الحواف ويمكنك البدء باستخدام هاتفك<br><br>انقر على "
132"الشاشة للبدء"
157"الشاشة للبدء"
133
158
134−#: qml/Components/Lockscreen.qml:167
159+#: qml/Components/Lockscreen.qml:220
135−msgid "Please wait"
136−msgstr ""
137−
138−#: qml/Components/Lockscreen.qml:172
139−msgid "Too many incorrect attempts"
140−msgstr ""
141−
142−#: qml/Components/Lockscreen.qml:206
143msgid "Emergency Call"
160msgid "Emergency Call"
144msgstr "مكالمة طوارئ"
161msgstr "مكالمة طوارئ"
145
162
146−#: qml/Components/Lockscreen.qml:226
163+#: qml/Components/Lockscreen.qml:252
147msgid "OK"
164msgid "OK"
148msgstr ""
165msgstr ""
149
166
150−#: qml/Components/PassphraseLockscreen.qml:61
151−#, qt-format
152−msgid "Hello %1"
153−msgstr "مرحبا %1"
154−
155−#: qml/Components/PassphraseLockscreen.qml:61
156−msgid "Hello"
157−msgstr "مرحبًا"
158−
159−#: qml/Dash/GenericScopeView.qml:361
167+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
160msgid "See less"
168msgid "See less"
161msgstr "شاهد أقل"
169msgstr "شاهد أقل"
162
170
163−#: qml/Dash/GenericScopeView.qml:361
171+#: qml/Dash/GenericScopeView.qml:434
164msgid "See all"
172msgid "See all"
165msgstr ""
173msgstr ""
166
174
175+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
167−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
176+#: qml/Panel/SearchIndicator.qml:27
168msgid "Search"
177msgid "Search"
169msgstr "ابحث"
178msgstr "ابحث"
170
179
171−#: qml/Dash/PageHeader.qml:270
180+#: qml/Dash/PageHeader.qml:268
172msgid "Settings"
181msgid "Settings"
173msgstr ""
182msgstr ""
174
183
175−#: qml/Dash/PageHeader.qml:279
184+#: qml/Dash/PageHeader.qml:275
176msgid "Remove from Favorites"
185msgid "Remove from Favorites"
177msgstr ""
186msgstr ""
178
187
179−#: qml/Dash/PageHeader.qml:279
188+#: qml/Dash/PageHeader.qml:275
180msgid "Add to Favorites"
189msgid "Add to Favorites"
181msgstr ""
190msgstr ""
182
191
183−#: qml/Dash/Previews/PreviewActionCombo.qml:34
192+#: qml/Dash/Previews/PreviewActionCombo.qml:35
184msgid "More..."
193msgid "More..."
185msgstr "المزيد..."
194msgstr "المزيد..."
186
195
187−#: qml/Dash/Previews/PreviewActionCombo.qml:34
196+#: qml/Dash/Previews/PreviewActionCombo.qml:35
188msgid "Less..."
197msgid "Less..."
189msgstr "أقل..."
198msgstr "أقل..."
190
199
@@ -200,15 +209,23 @@ msgstr "أضف تعليق"
200msgid "Send"
209msgid "Send"
201msgstr "أرسل"
210msgstr "أرسل"
202
211
203−#: qml/Dash/ScopesOverview.qml:201
212+#: qml/Dash/PullToRefreshScopeStyle.qml:55
204−msgid "Manage Dash"
213+msgid "Pull to refresh…"
214+msgstr ""
215+
216+#: qml/Dash/PullToRefreshScopeStyle.qml:60
217+msgid "Release to refresh…"
205msgstr ""
218msgstr ""
206
219
207−#: qml/Dash/ScopesOverview.qml:408
220+#: qml/Dash/ScopesOverview.qml:206
221+msgid "Manage Scopes"
222+msgstr ""
223+
224+#: qml/Dash/ScopesOverview.qml:428
208msgid "Done"
225msgid "Done"
209msgstr ""
226msgstr ""
210
227
211−#: qml/Dash/ScopesOverview.qml:434
228+#: qml/Dash/ScopesOverview.qml:454
212msgid "Store"
229msgid "Store"
213msgstr ""
230msgstr ""
214
231
@@ -221,10 +238,10 @@ msgid "All"
221msgstr ""
238msgstr ""
222
239
223#: qml/Greeter/Greeter.qml:157
240#: qml/Greeter/Greeter.qml:157
224−msgid "Swipe to unlock"
241+msgid "Unlock"
225−msgstr "اسحب لفتح القفل"
242+msgstr ""
226
243
227−#: qml/Hud/HudParametrizedActionsPage.qml:132
244+#: qml/Hud/HudParametrizedActionsPage.qml:139
228msgid "Confirm"
245msgid "Confirm"
229msgstr "التأكيد"
246msgstr "التأكيد"
230
247
@@ -244,18 +261,10 @@ msgstr "تكلم الآن..."
244msgid "Speaking..."
261msgid "Speaking..."
245msgstr "تتكلم الآن..."
262msgstr "تتكلم الآن..."
246
263
247−#: qml/Notifications/NotificationMenuItemFactory.qml:105
264+#: qml/Notifications/NotificationMenuItemFactory.qml:116
248msgid "Show password"
265msgid "Show password"
249msgstr "عرض كلمة السر"
266msgstr "عرض كلمة السر"
250
267
251−#: qml/Notifications/NotificationMenuItemFactory.qml:120
252−msgid "Enter SIM PIN"
253−msgstr ""
254−
255−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
256−msgid "Sorry, incorrect PIN"
257−msgstr ""
258−
259#: qml/Panel/ActiveCallHint.qml:77
268#: qml/Panel/ActiveCallHint.qml:77
260msgid "Tap to return to call..."
269msgid "Tap to return to call..."
261msgstr ""
270msgstr ""
@@ -264,27 +273,31 @@ msgstr ""
264msgid "Conference"
273msgid "Conference"
265msgstr ""
274msgstr ""
266
275
267−#: qml/Panel/Indicators/MenuItemFactory.qml:651
276+#: qml/Panel/Indicators/MenuItemFactory.qml:600
277+msgid "Nothing is playing"
278+msgstr ""
279+
280+#: qml/Panel/Indicators/MenuItemFactory.qml:748
268msgid "In queue…"
281msgid "In queue…"
269msgstr ""
282msgstr ""
270
283
271−#: qml/Panel/Indicators/MenuItemFactory.qml:655
284+#: qml/Panel/Indicators/MenuItemFactory.qml:752
272msgid "Downloading"
285msgid "Downloading"
273msgstr ""
286msgstr ""
274
287
275−#: qml/Panel/Indicators/MenuItemFactory.qml:657
288+#: qml/Panel/Indicators/MenuItemFactory.qml:754
276msgid "Paused, tap to resume"
289msgid "Paused, tap to resume"
277msgstr ""
290msgstr ""
278
291
279−#: qml/Panel/Indicators/MenuItemFactory.qml:659
292+#: qml/Panel/Indicators/MenuItemFactory.qml:756
280msgid "Canceled"
293msgid "Canceled"
281msgstr ""
294msgstr ""
282
295
283−#: qml/Panel/Indicators/MenuItemFactory.qml:661
296+#: qml/Panel/Indicators/MenuItemFactory.qml:758
284msgid "Finished"
297msgid "Finished"
285msgstr ""
298msgstr ""
286
299
287−#: qml/Panel/Indicators/MenuItemFactory.qml:663
300+#: qml/Panel/Indicators/MenuItemFactory.qml:760
288msgid "Failed, tap to retry"
301msgid "Failed, tap to retry"
289msgstr ""
302msgstr ""
290
303
@@ -296,51 +309,55 @@ msgstr ""
296msgid "Roaming"
309msgid "Roaming"
297msgstr ""
310msgstr ""
298
311
299−#: qml/Shell.qml:266
312+#: qml/Shell.qml:346
300−msgid "Enter your passphrase"
313+msgid "Enter passphrase"
301msgstr ""
314msgstr ""
302
315
303−#: qml/Shell.qml:267
316+#: qml/Shell.qml:347
304msgid "Sorry, incorrect passphrase"
317msgid "Sorry, incorrect passphrase"
305msgstr ""
318msgstr ""
306
319
307−#: qml/Shell.qml:282
320+#: qml/Shell.qml:348
321+msgid "Please re-enter"
322+msgstr ""
323+
324+#: qml/Shell.qml:350
308−msgid "Enter your passcode"
325+msgid "Enter passcode"
309msgstr ""
326msgstr ""
310
327
311−#: qml/Shell.qml:283
328+#: qml/Shell.qml:351
312msgid "Sorry, incorrect passcode"
329msgid "Sorry, incorrect passcode"
313msgstr ""
330msgstr ""
314
331
315−#: qml/Shell.qml:273
332+#: qml/Shell.qml:354
316#, qt-format
333#, qt-format
317−msgid "Enter your %1"
334+msgid "Enter %1"
318msgstr ""
335msgstr ""
319
336
320−#: qml/Shell.qml:274
337+#: qml/Shell.qml:355
321#, qt-format
338#, qt-format
322msgid "Sorry, incorrect %1"
339msgid "Sorry, incorrect %1"
323msgstr ""
340msgstr ""
324
341
325−#: qml/Shell.qml:310
342+#: qml/Shell.qml:390
326msgid "Sorry, incorrect passphrase."
343msgid "Sorry, incorrect passphrase."
327msgstr ""
344msgstr ""
328
345
329−#: qml/Shell.qml:311
346+#: qml/Shell.qml:391
330msgid "Sorry, incorrect passcode."
347msgid "Sorry, incorrect passcode."
331msgstr ""
348msgstr ""
332
349
333−#: qml/Shell.qml:312
350+#: qml/Shell.qml:392
334msgid "This will be your last attempt."
351msgid "This will be your last attempt."
335msgstr ""
352msgstr ""
336
353
337−#: qml/Shell.qml:314
354+#: qml/Shell.qml:394
338msgid ""
355msgid ""
339"If passphrase is entered incorrectly, your phone will conduct a factory "
356"If passphrase is entered incorrectly, your phone will conduct a factory "
340"reset and all personal data will be deleted."
357"reset and all personal data will be deleted."
341msgstr ""
358msgstr ""
342
359
343−#: qml/Shell.qml:315
360+#: qml/Shell.qml:395
344msgid ""
361msgid ""
345"If passcode is entered incorrectly, your phone will conduct a factory reset "
362"If passcode is entered incorrectly, your phone will conduct a factory reset "
346"and all personal data will be deleted."
363"and all personal data will be deleted."
po/ast.po+133−104
@@ -7,80 +7,107 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11−"PO-Revision-Date: 2014-07-25 16:51+0000\n"
11+"PO-Revision-Date: 2014-10-09 09:49+0000\n"
12"Last-Translator: ivarela <ivarela@ubuntu.com>\n"
12"Last-Translator: ivarela <ivarela@ubuntu.com>\n"
13"Language-Team: Asturian <ast@li.org>\n"
13"Language-Team: Asturian <ast@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:29+0000\n"
18+"X-Launchpad-Export-Date: 2014-10-10 05:23+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
19+"X-Generator: Launchpad (build 17196)\n"
19
20
20−#: plugins/LightDM/Greeter.cpp:129
21+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
22msgid "Password: "
22−msgstr ""
23+msgstr "Contraseña: "
23
24
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
27msgid "Pin shortcut"
27msgstr "Anclar"
28msgstr "Anclar"
28
29
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
31msgid "Unpin shortcut"
31msgstr "Desanclar"
32msgstr "Desanclar"
32
33
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr "Preséu bloquiáu"
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr "Quedasti bloquiáu polos escesivos intentos fallíos de frase de pasu."
41+
42+#: qml/Components/DelayedLockscreen.qml:63
43+msgid "You have been locked out due to too many failed passcode attempts."
44+msgstr ""
45+"Quedasti bloquiáu polos escesivos intentos fallíos de códigu de pasu."
46+
47+#: qml/Components/DelayedLockscreen.qml:72
48+#, qt-format
49+msgid "Please wait %1 minute and then try again…"
50+msgid_plural "Please wait %1 minutes and then try again…"
51+msgstr[0] "Espera %1 minutu y vuelvi a intentalo…"
52+msgstr[1] "Espera %1 minutos y vuelvi a intentalo…"
53+
33#: qml/Components/Dialogs.qml:70
54#: qml/Components/Dialogs.qml:70
34msgid "Log out"
55msgid "Log out"
35−msgstr ""
56+msgstr "Zarrar sesión"
36
57
37#: qml/Components/Dialogs.qml:71
58#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
59msgid "Are you sure you want to log out?"
39−msgstr ""
60+msgstr "De xuru que quies zarrar la sesión?"
40
61
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
62#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
63#: qml/Components/Dialogs.qml:122
43msgid "No"
64msgid "No"
44−msgstr ""
65+msgstr "Non"
45
66
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
67#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
68#: qml/Components/Dialogs.qml:129
48msgid "Yes"
69msgid "Yes"
49−msgstr ""
70+msgstr "Sí"
50
71
51#: qml/Components/Dialogs.qml:94
72#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
73msgid "Shut down"
53−msgstr ""
74+msgstr "Apagar"
54
75
55#: qml/Components/Dialogs.qml:95
76#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
77msgid "Are you sure you want to shut down?"
57−msgstr ""
78+msgstr "De xuru que quies apagar?"
58
79
59#: qml/Components/Dialogs.qml:119
80#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
81msgid "Reboot"
61−msgstr ""
82+msgstr "Reaniciar"
62
83
63#: qml/Components/Dialogs.qml:120
84#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
85msgid "Are you sure you want to reboot?"
65−msgstr ""
86+msgstr "De xuru que quies reaniciar?"
66
87
67#: qml/Components/Dialogs.qml:144
88#: qml/Components/Dialogs.qml:144
68msgid "Power"
89msgid "Power"
69−msgstr ""
90+msgstr "Enerxía"
70
91
71#: qml/Components/Dialogs.qml:145
92#: qml/Components/Dialogs.qml:145
72msgid ""
93msgid ""
73"Are you sure you would like\n"
94"Are you sure you would like\n"
74"to power off?"
95"to power off?"
75msgstr ""
96msgstr ""
97+"De xuru que quies\n"
98+"apagar?"
76
99
77−#: qml/Components/Dialogs.qml:144
100+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
101msgid "Power off"
79−msgstr ""
102+msgstr "Apagar"
80
103
81−#: qml/Components/Dialogs.qml:162
104+#: qml/Components/Dialogs.qml:157
105+msgid "Restart"
106+msgstr "Reaniciar"
107+
108+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
109msgid "Cancel"
83−msgstr ""
110+msgstr "Encaboxar"
84
111
85#: qml/Components/EdgeDemoOverlay.qml:151
112#: qml/Components/EdgeDemoOverlay.qml:151
86msgid "Skip intro"
113msgid "Skip intro"
@@ -132,60 +159,44 @@ msgstr ""
132"Agora yá domines los xestos de los berbesos y pues entamar a usar el "
159"Agora yá domines los xestos de los berbesos y pues entamar a usar el "
133"teléfonu<br><br>Toca la pantalla pa comenzar"
160"teléfonu<br><br>Toca la pantalla pa comenzar"
134
161
135−#: qml/Components/Lockscreen.qml:167
162+#: qml/Components/Lockscreen.qml:220
136−msgid "Please wait"
137−msgstr ""
138−
139−#: qml/Components/Lockscreen.qml:172
140−msgid "Too many incorrect attempts"
141−msgstr ""
142−
143−#: qml/Components/Lockscreen.qml:206
144msgid "Emergency Call"
163msgid "Emergency Call"
145msgstr "Llamada d'emerxencia"
164msgstr "Llamada d'emerxencia"
146
165
147−#: qml/Components/Lockscreen.qml:226
166+#: qml/Components/Lockscreen.qml:252
148msgid "OK"
167msgid "OK"
149msgstr "Aceutar"
168msgstr "Aceutar"
150
169
151−#: qml/Components/PassphraseLockscreen.qml:61
152−#, qt-format
153−msgid "Hello %1"
154−msgstr "Hola %1"
155−
156−#: qml/Components/PassphraseLockscreen.qml:61
157−msgid "Hello"
158−msgstr "Hola"
159−
160−#: qml/Dash/GenericScopeView.qml:361
170+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
161msgid "See less"
171msgid "See less"
162msgstr "Ver menos"
172msgstr "Ver menos"
163
173
164−#: qml/Dash/GenericScopeView.qml:361
174+#: qml/Dash/GenericScopeView.qml:434
165msgid "See all"
175msgid "See all"
166msgstr "Ver too"
176msgstr "Ver too"
167
177
178+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
168−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
179+#: qml/Panel/SearchIndicator.qml:27
169msgid "Search"
180msgid "Search"
170msgstr "Guetar"
181msgstr "Guetar"
171
182
172−#: qml/Dash/PageHeader.qml:270
183+#: qml/Dash/PageHeader.qml:268
173msgid "Settings"
184msgid "Settings"
174−msgstr ""
185+msgstr "Axustes"
175
186
176−#: qml/Dash/PageHeader.qml:279
187+#: qml/Dash/PageHeader.qml:275
177msgid "Remove from Favorites"
188msgid "Remove from Favorites"
178−msgstr ""
189+msgstr "Desaniciar de favoritos"
179
190
180−#: qml/Dash/PageHeader.qml:279
191+#: qml/Dash/PageHeader.qml:275
181msgid "Add to Favorites"
192msgid "Add to Favorites"
182−msgstr ""
193+msgstr "Amestar a favoritos"
183
194
184−#: qml/Dash/Previews/PreviewActionCombo.qml:34
195+#: qml/Dash/Previews/PreviewActionCombo.qml:35
185msgid "More..."
196msgid "More..."
186msgstr "Más…"
197msgstr "Más…"
187
198
188−#: qml/Dash/Previews/PreviewActionCombo.qml:34
199+#: qml/Dash/Previews/PreviewActionCombo.qml:35
189msgid "Less..."
200msgid "Less..."
190msgstr "Menos…"
201msgstr "Menos…"
191
202
@@ -201,31 +212,39 @@ msgstr "Amestar una reseña"
201msgid "Send"
212msgid "Send"
202msgstr "Unviar"
213msgstr "Unviar"
203
214
204−#: qml/Dash/ScopesOverview.qml:201
215+#: qml/Dash/PullToRefreshScopeStyle.qml:55
205−msgid "Manage Dash"
216+msgid "Pull to refresh…"
217+msgstr "Tirar p'anovar..."
218+
219+#: qml/Dash/PullToRefreshScopeStyle.qml:60
220+msgid "Release to refresh…"
206−msgstr ""
221+msgstr "Soltar p'anovar..."
207
222
208−#: qml/Dash/ScopesOverview.qml:408
223+#: qml/Dash/ScopesOverview.qml:206
224+msgid "Manage Scopes"
225+msgstr "Xestionar ámbitos"
226+
227+#: qml/Dash/ScopesOverview.qml:428
209msgid "Done"
228msgid "Done"
210−msgstr ""
229+msgstr "Fecho"
211
230
212−#: qml/Dash/ScopesOverview.qml:434
231+#: qml/Dash/ScopesOverview.qml:454
213msgid "Store"
232msgid "Store"
214−msgstr ""
233+msgstr "Tienda"
215
234
216#: qml/Dash/ScopesOverviewTab.qml:36
235#: qml/Dash/ScopesOverviewTab.qml:36
217msgid "Favorites"
236msgid "Favorites"
218−msgstr ""
237+msgstr "Favoritos"
219
238
220#: qml/Dash/ScopesOverviewTab.qml:54
239#: qml/Dash/ScopesOverviewTab.qml:54
221msgid "All"
240msgid "All"
222−msgstr ""
241+msgstr "Too"
223
242
224#: qml/Greeter/Greeter.qml:157
243#: qml/Greeter/Greeter.qml:157
225−msgid "Swipe to unlock"
244+msgid "Unlock"
226−msgstr "Esliza pa desbloquiar"
245+msgstr "Desbloquiar"
227
246
228−#: qml/Hud/HudParametrizedActionsPage.qml:132
247+#: qml/Hud/HudParametrizedActionsPage.qml:139
229msgid "Confirm"
248msgid "Confirm"
230msgstr "Confirmar"
249msgstr "Confirmar"
231
250
@@ -245,18 +264,10 @@ msgstr "Fala agora…"
245msgid "Speaking..."
264msgid "Speaking..."
246msgstr "Falando…"
265msgstr "Falando…"
247
266
248−#: qml/Notifications/NotificationMenuItemFactory.qml:105
267+#: qml/Notifications/NotificationMenuItemFactory.qml:116
249msgid "Show password"
268msgid "Show password"
250msgstr "Amosar contraseña"
269msgstr "Amosar contraseña"
251
270
252−#: qml/Notifications/NotificationMenuItemFactory.qml:120
253−msgid "Enter SIM PIN"
254−msgstr ""
255−
256−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
257−msgid "Sorry, incorrect PIN"
258−msgstr ""
259−
260#: qml/Panel/ActiveCallHint.qml:77
271#: qml/Panel/ActiveCallHint.qml:77
261msgid "Tap to return to call..."
272msgid "Tap to return to call..."
262msgstr "Tocar pa tornar a la llamada..."
273msgstr "Tocar pa tornar a la llamada..."
@@ -265,84 +276,102 @@ msgstr "Tocar pa tornar a la llamada..."
265msgid "Conference"
276msgid "Conference"
266msgstr "Conferencia"
277msgstr "Conferencia"
267
278
268−#: qml/Panel/Indicators/MenuItemFactory.qml:651
279+#: qml/Panel/Indicators/MenuItemFactory.qml:600
280+msgid "Nothing is playing"
281+msgstr "Nun hai nada en reproducción"
282+
283+#: qml/Panel/Indicators/MenuItemFactory.qml:748
269msgid "In queue…"
284msgid "In queue…"
270msgstr "N'espera…"
285msgstr "N'espera…"
271
286
272−#: qml/Panel/Indicators/MenuItemFactory.qml:655
287+#: qml/Panel/Indicators/MenuItemFactory.qml:752
273msgid "Downloading"
288msgid "Downloading"
274msgstr "Baxando"
289msgstr "Baxando"
275
290
276−#: qml/Panel/Indicators/MenuItemFactory.qml:657
291+#: qml/Panel/Indicators/MenuItemFactory.qml:754
277msgid "Paused, tap to resume"
292msgid "Paused, tap to resume"
278msgstr "Posáu, toca pa reanudar"
293msgstr "Posáu, toca pa reanudar"
279
294
280−#: qml/Panel/Indicators/MenuItemFactory.qml:659
295+#: qml/Panel/Indicators/MenuItemFactory.qml:756
281msgid "Canceled"
296msgid "Canceled"
282msgstr "Encaboxáu"
297msgstr "Encaboxáu"
283
298
284−#: qml/Panel/Indicators/MenuItemFactory.qml:661
299+#: qml/Panel/Indicators/MenuItemFactory.qml:758
285msgid "Finished"
300msgid "Finished"
286msgstr "Finó"
301msgstr "Finó"
287
302
288−#: qml/Panel/Indicators/MenuItemFactory.qml:663
303+#: qml/Panel/Indicators/MenuItemFactory.qml:760
289msgid "Failed, tap to retry"
304msgid "Failed, tap to retry"
290msgstr "Falló, toca pa reintentar"
305msgstr "Falló, toca pa reintentar"
291
306
292#: qml/Panel/Indicators/ModemInfoItem.qml:105
307#: qml/Panel/Indicators/ModemInfoItem.qml:105
293msgid "Unlock SIM"
308msgid "Unlock SIM"
294−msgstr ""
309+msgstr "Desbloquiar SIM"
295
310
296#: qml/Panel/Indicators/RoamingIndication.qml:27
311#: qml/Panel/Indicators/RoamingIndication.qml:27
297msgid "Roaming"
312msgid "Roaming"
298−msgstr ""
313+msgstr "Roaming"
299
314
300−#: qml/Shell.qml:266
315+#: qml/Shell.qml:346
301−msgid "Enter your passphrase"
316+msgid "Enter passphrase"
302−msgstr ""
317+msgstr "Escribi la frase contraseña"
303
318
304−#: qml/Shell.qml:267
319+#: qml/Shell.qml:347
305msgid "Sorry, incorrect passphrase"
320msgid "Sorry, incorrect passphrase"
306−msgstr ""
321+msgstr "Sentímoslo, contraseña incorreuta"
307
322
308−#: qml/Shell.qml:282
323+#: qml/Shell.qml:348
324+msgid "Please re-enter"
325+msgstr "Vuelvi a escribila"
326+
327+#: qml/Shell.qml:350
309−msgid "Enter your passcode"
328+msgid "Enter passcode"
310−msgstr ""
329+msgstr "Escribi'l códigu de pasu"
311
330
312−#: qml/Shell.qml:283
331+#: qml/Shell.qml:351
313msgid "Sorry, incorrect passcode"
332msgid "Sorry, incorrect passcode"
314−msgstr ""
333+msgstr "Sentímoslo, códigu de pasu incorreutu"
315
334
316−#: qml/Shell.qml:273
335+#: qml/Shell.qml:354
317#, qt-format
336#, qt-format
318−msgid "Enter your %1"
337+msgid "Enter %1"
319−msgstr ""
338+msgstr "Escribi %1"
320
339
321−#: qml/Shell.qml:274
340+#: qml/Shell.qml:355
322#, qt-format
341#, qt-format
323msgid "Sorry, incorrect %1"
342msgid "Sorry, incorrect %1"
324−msgstr ""
343+msgstr "Sentímoslo, %1 incorreutu"
325
344
326−#: qml/Shell.qml:310
345+#: qml/Shell.qml:390
327msgid "Sorry, incorrect passphrase."
346msgid "Sorry, incorrect passphrase."
328−msgstr ""
347+msgstr "Fras de pasu incorreuta"
329
348
330−#: qml/Shell.qml:311
349+#: qml/Shell.qml:391
331msgid "Sorry, incorrect passcode."
350msgid "Sorry, incorrect passcode."
332−msgstr ""
351+msgstr "Códigu de pasu incorreutu"
333
352
334−#: qml/Shell.qml:312
353+#: qml/Shell.qml:392
335msgid "This will be your last attempt."
354msgid "This will be your last attempt."
336−msgstr ""
355+msgstr "Esti ye'l caberu intentu."
337
356
338−#: qml/Shell.qml:314
357+#: qml/Shell.qml:394
339msgid ""
358msgid ""
340"If passphrase is entered incorrectly, your phone will conduct a factory "
359"If passphrase is entered incorrectly, your phone will conduct a factory "
341"reset and all personal data will be deleted."
360"reset and all personal data will be deleted."
342msgstr ""
361msgstr ""
362+"Si s'inxerta la fras incorreutamente, el teléfonu va volver a la "
363+"configuración de fábrica y van perdese tolos datos personales."
343
364
344−#: qml/Shell.qml:315
365+#: qml/Shell.qml:395
345msgid ""
366msgid ""
346"If passcode is entered incorrectly, your phone will conduct a factory reset "
367"If passcode is entered incorrectly, your phone will conduct a factory reset "
347"and all personal data will be deleted."
368"and all personal data will be deleted."
348msgstr ""
369msgstr ""
370+"Si s'inxerta'l códigu incorreutamente, el teléfonu va volver a la "
371+"configuración de fábrica y van perdese tolos datos personales."
372+
373+#~ msgid "Sorry, incorrect PIN"
374+#~ msgstr "PIN incorreutu"
375+
376+#~ msgid "Enter SIM PIN"
377+#~ msgstr "Escribi'l PIN de la SIM"
po/az.po+125−112
@@ -7,62 +7,82 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11−"PO-Revision-Date: 2014-08-26 22:12+0000\n"
11+"PO-Revision-Date: 2014-09-03 16:39+0000\n"
12−"Last-Translator: Turan Mahmudov <turan.mahmudov@gmail.com>\n"
12+"Last-Translator: Nicat Məmmədov <n1c4t97@gmail.com>\n"
13"Language-Team: Azerbaijani <az@li.org>\n"
13"Language-Team: Azerbaijani <az@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:29+0000\n"
18+"X-Launchpad-Export-Date: 2014-10-09 06:36+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
19+"X-Generator: Launchpad (build 17196)\n"
19
20
20−#: plugins/LightDM/Greeter.cpp:129
21+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
22msgid "Password: "
22−msgstr "Parol: "
23+msgstr "Şifrә: "
23
24
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
27msgid "Pin shortcut"
27msgstr "Pin qısayolu"
28msgstr "Pin qısayolu"
28
29
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
31msgid "Unpin shortcut"
31msgstr "Açma qısayolu"
32msgstr "Açma qısayolu"
32
33
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr ""
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr ""
41+
42+#: qml/Components/DelayedLockscreen.qml:63
43+msgid "You have been locked out due to too many failed passcode attempts."
44+msgstr ""
45+
46+#: qml/Components/DelayedLockscreen.qml:72
47+#, qt-format
48+msgid "Please wait %1 minute and then try again…"
49+msgid_plural "Please wait %1 minutes and then try again…"
50+msgstr[0] ""
51+msgstr[1] ""
52+
33#: qml/Components/Dialogs.qml:70
53#: qml/Components/Dialogs.qml:70
34msgid "Log out"
54msgid "Log out"
35−msgstr ""
55+msgstr "Çıxış"
36
56
37#: qml/Components/Dialogs.qml:71
57#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
58msgid "Are you sure you want to log out?"
39−msgstr ""
59+msgstr "Çıxmaq istәdiyinizdәn әminsiniz?"
40
60
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
61#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
62#: qml/Components/Dialogs.qml:122
43msgid "No"
63msgid "No"
44−msgstr ""
64+msgstr "Yox"
45
65
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
66#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
67#: qml/Components/Dialogs.qml:129
48msgid "Yes"
68msgid "Yes"
49−msgstr ""
69+msgstr "Hə"
50
70
51#: qml/Components/Dialogs.qml:94
71#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
72msgid "Shut down"
53−msgstr ""
73+msgstr "Sistemi Söndür"
54
74
55#: qml/Components/Dialogs.qml:95
75#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
76msgid "Are you sure you want to shut down?"
57−msgstr ""
77+msgstr "Sistemi söndürmәk istәdiyinizә әminsiniz?"
58
78
59#: qml/Components/Dialogs.qml:119
79#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
80msgid "Reboot"
61−msgstr ""
81+msgstr "Yenidən yüklə"
62
82
63#: qml/Components/Dialogs.qml:120
83#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
84msgid "Are you sure you want to reboot?"
65−msgstr ""
85+msgstr "Yenidәn başlatmaq istәdiyinizә әminsiniz?"
66
86
67#: qml/Components/Dialogs.qml:144
87#: qml/Components/Dialogs.qml:144
68msgid "Power"
88msgid "Power"
@@ -74,17 +94,21 @@ msgid ""
74"to power off?"
94"to power off?"
75msgstr ""
95msgstr ""
76
96
77−#: qml/Components/Dialogs.qml:144
97+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
98msgid "Power off"
79msgstr "Söndür"
99msgstr "Söndür"
80
100
81−#: qml/Components/Dialogs.qml:162
101+#: qml/Components/Dialogs.qml:157
102+msgid "Restart"
103+msgstr ""
104+
105+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
106msgid "Cancel"
83msgstr "İmtina"
107msgstr "İmtina"
84
108
85#: qml/Components/EdgeDemoOverlay.qml:151
109#: qml/Components/EdgeDemoOverlay.qml:151
86msgid "Skip intro"
110msgid "Skip intro"
87−msgstr "Intro -nu keç"
111+msgstr "Tәqdimatı keç"
88
112
89#: qml/Components/EdgeDemo.qml:112
113#: qml/Components/EdgeDemo.qml:112
90msgid "Right edge"
114msgid "Right edge"
@@ -92,7 +116,7 @@ msgstr "Sağ Künc"
92
116
93#: qml/Components/EdgeDemo.qml:113
117#: qml/Components/EdgeDemo.qml:113
94msgid "Try swiping from the right edge to unlock the phone"
118msgid "Try swiping from the right edge to unlock the phone"
95−msgstr "Kilidi açmaq üçün sağ küncdən çəkin"
119+msgstr "Kilidi açmaq üçün sağ küncdən sürüşdürün"
96
120
97#: qml/Components/EdgeDemo.qml:144
121#: qml/Components/EdgeDemo.qml:144
98msgid "Top edge"
122msgid "Top edge"
@@ -100,7 +124,7 @@ msgstr "Yuxarı künc"
100
124
101#: qml/Components/EdgeDemo.qml:145
125#: qml/Components/EdgeDemo.qml:145
102msgid "Try swiping from the top edge to access the indicators"
126msgid "Try swiping from the top edge to access the indicators"
103−msgstr "Göstəricilərə keçid üçün yuxarı küncdən çəkin"
127+msgstr "Göstəriciləri görmәk üçün yuxarı küncdən sürüşdürün"
104
128
105#: qml/Components/EdgeDemo.qml:170
129#: qml/Components/EdgeDemo.qml:170
106msgid "Close"
130msgid "Close"
@@ -108,7 +132,7 @@ msgstr "Bağla"
108
132
109#: qml/Components/EdgeDemo.qml:171
133#: qml/Components/EdgeDemo.qml:171
110msgid "Swipe up again to close the settings screen"
134msgid "Swipe up again to close the settings screen"
111−msgstr "Nizamlamalar ekranını bağlamaq üçün yenidən yuxarı çəkin"
135+msgstr "Nizamlamalar ekranını bağlamaq üçün yenidən yuxarı sürüşdürün"
112
136
113#: qml/Components/EdgeDemo.qml:198
137#: qml/Components/EdgeDemo.qml:198
114msgid "Left edge"
138msgid "Left edge"
@@ -128,69 +152,53 @@ msgid ""
128"You have now mastered the edge gestures and can start using the "
152"You have now mastered the edge gestures and can start using the "
129"phone<br><br>Tap on the screen to start"
153"phone<br><br>Tap on the screen to start"
130msgstr ""
154msgstr ""
131−"Siz künc jestlərini mənimsəmisiniz və telefonu istifadə etməyə başlaya "
155+"Siz künc hәrәkәtlәrini öyrәndiniz və telefonu istifadə etməyə başlaya "
132"bilərsiniz.<br><br>Başlamaq üçün ekrana toxunun"
156"bilərsiniz.<br><br>Başlamaq üçün ekrana toxunun"
133
157
134−#: qml/Components/Lockscreen.qml:167
158+#: qml/Components/Lockscreen.qml:220
135−msgid "Please wait"
136−msgstr "Lütfən gözləyin"
137−
138−#: qml/Components/Lockscreen.qml:172
139−msgid "Too many incorrect attempts"
140−msgstr "Çoxlu yanlış cəhd"
141−
142−#: qml/Components/Lockscreen.qml:206
143msgid "Emergency Call"
159msgid "Emergency Call"
144msgstr "Zərurət zəngi"
160msgstr "Zərurət zəngi"
145
161
146−#: qml/Components/Lockscreen.qml:226
162+#: qml/Components/Lockscreen.qml:252
147msgid "OK"
163msgid "OK"
148−msgstr "ОК"
164+msgstr "Oldu"
149
165
150−#: qml/Components/PassphraseLockscreen.qml:61
151−#, qt-format
152−msgid "Hello %1"
153−msgstr "Xoş gördük %1"
154−
155−#: qml/Components/PassphraseLockscreen.qml:61
156−msgid "Hello"
157−msgstr "Xoş gördük"
158−
159−#: qml/Dash/GenericScopeView.qml:361
166+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
160msgid "See less"
167msgid "See less"
161−msgstr "Daha az gör"
168+msgstr "Daha azını gör"
162
169
163−#: qml/Dash/GenericScopeView.qml:361
170+#: qml/Dash/GenericScopeView.qml:434
164msgid "See all"
171msgid "See all"
165msgstr "Hamısını gör"
172msgstr "Hamısını gör"
166
173
174+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
167−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
175+#: qml/Panel/SearchIndicator.qml:27
168msgid "Search"
176msgid "Search"
169msgstr "Axtar"
177msgstr "Axtar"
170
178
171−#: qml/Dash/PageHeader.qml:270
179+#: qml/Dash/PageHeader.qml:268
172msgid "Settings"
180msgid "Settings"
173−msgstr ""
181+msgstr "Tənzimləmələr"
174
182
175−#: qml/Dash/PageHeader.qml:279
183+#: qml/Dash/PageHeader.qml:275
176msgid "Remove from Favorites"
184msgid "Remove from Favorites"
177−msgstr ""
185+msgstr "Seçilmişlәrdәn çıxart"
178
186
179−#: qml/Dash/PageHeader.qml:279
187+#: qml/Dash/PageHeader.qml:275
180msgid "Add to Favorites"
188msgid "Add to Favorites"
181−msgstr ""
189+msgstr "Seçilmişlәrә әlavә et"
182
190
183−#: qml/Dash/Previews/PreviewActionCombo.qml:34
191+#: qml/Dash/Previews/PreviewActionCombo.qml:35
184msgid "More..."
192msgid "More..."
185−msgstr "Ətraflı..."
193+msgstr "Daha çox..."
186
194
187−#: qml/Dash/Previews/PreviewActionCombo.qml:34
195+#: qml/Dash/Previews/PreviewActionCombo.qml:35
188msgid "Less..."
196msgid "Less..."
189msgstr "Az..."
197msgstr "Az..."
190
198
191#: qml/Dash/Previews/PreviewRatingInput.qml:81
199#: qml/Dash/Previews/PreviewRatingInput.qml:81
192msgid "Rate this"
200msgid "Rate this"
193−msgstr "Qiymət ver"
201+msgstr "Qiymәtlәndir"
194
202
195#: qml/Dash/Previews/PreviewRatingInput.qml:126
203#: qml/Dash/Previews/PreviewRatingInput.qml:126
196msgid "Add a review"
204msgid "Add a review"
@@ -200,17 +208,25 @@ msgstr "Rəy yaz"
200msgid "Send"
208msgid "Send"
201msgstr "Göndər"
209msgstr "Göndər"
202
210
203−#: qml/Dash/ScopesOverview.qml:201
211+#: qml/Dash/PullToRefreshScopeStyle.qml:55
204−msgid "Manage Dash"
212+msgid "Pull to refresh…"
205msgstr ""
213msgstr ""
206
214
215+#: qml/Dash/PullToRefreshScopeStyle.qml:60
216+msgid "Release to refresh…"
217+msgstr ""
218+
207−#: qml/Dash/ScopesOverview.qml:408
219+#: qml/Dash/ScopesOverview.qml:206
220+msgid "Manage Scopes"
221+msgstr ""
222+
223+#: qml/Dash/ScopesOverview.qml:428
208msgid "Done"
224msgid "Done"
209msgstr "Başa çatdı"
225msgstr "Başa çatdı"
210
226
211−#: qml/Dash/ScopesOverview.qml:434
227+#: qml/Dash/ScopesOverview.qml:454
212msgid "Store"
228msgid "Store"
213−msgstr "Saxla"
229+msgstr ""
214
230
215#: qml/Dash/ScopesOverviewTab.qml:36
231#: qml/Dash/ScopesOverviewTab.qml:36
216msgid "Favorites"
232msgid "Favorites"
@@ -221,16 +237,16 @@ msgid "All"
221msgstr "Hamısı"
237msgstr "Hamısı"
222
238
223#: qml/Greeter/Greeter.qml:157
239#: qml/Greeter/Greeter.qml:157
224−msgid "Swipe to unlock"
240+msgid "Unlock"
225−msgstr "Kilidi açmaq üçün sürüşdürün"
241+msgstr ""
226
242
227−#: qml/Hud/HudParametrizedActionsPage.qml:132
243+#: qml/Hud/HudParametrizedActionsPage.qml:139
228msgid "Confirm"
244msgid "Confirm"
229msgstr "Təsdiqlə"
245msgstr "Təsdiqlə"
230
246
231#: qml/Hud/Hud.qml:61 qml/Hud/Hud.qml:99 qml/Hud/Hud.qml:372
247#: qml/Hud/Hud.qml:61 qml/Hud/Hud.qml:99 qml/Hud/Hud.qml:372
232msgid "Type or say a command"
248msgid "Type or say a command"
233−msgstr "Əmri söyləyin və ya yazın"
249+msgstr "Bir әmr söyləyin və ya yazın"
234
250
235#: qml/Hud/Hud.qml:84
251#: qml/Hud/Hud.qml:84
236msgid "Loading. Please Wait..."
252msgid "Loading. Please Wait..."
@@ -244,17 +260,9 @@ msgstr "Danışın..."
244msgid "Speaking..."
260msgid "Speaking..."
245msgstr "Danışır..."
261msgstr "Danışır..."
246
262
247−#: qml/Notifications/NotificationMenuItemFactory.qml:105
263+#: qml/Notifications/NotificationMenuItemFactory.qml:116
248msgid "Show password"
264msgid "Show password"
249−msgstr "Parolu göstər"
265+msgstr "Şifrәni göstәr"
250−
251−#: qml/Notifications/NotificationMenuItemFactory.qml:120
252−msgid "Enter SIM PIN"
253−msgstr "SIM PIN kodunuzu daxil edin"
254−
255−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
256−msgid "Sorry, incorrect PIN"
257−msgstr "Təəssüf ki, PIN yanlışdır"
258
266
259#: qml/Panel/ActiveCallHint.qml:77
267#: qml/Panel/ActiveCallHint.qml:77
260msgid "Tap to return to call..."
268msgid "Tap to return to call..."
@@ -264,29 +272,33 @@ msgstr "Zəngə qayıtmaq üçün toxunun..."
264msgid "Conference"
272msgid "Conference"
265msgstr "Konfrans"
273msgstr "Konfrans"
266
274
267−#: qml/Panel/Indicators/MenuItemFactory.qml:651
275+#: qml/Panel/Indicators/MenuItemFactory.qml:600
276+msgid "Nothing is playing"
277+msgstr ""
278+
279+#: qml/Panel/Indicators/MenuItemFactory.qml:748
268msgid "In queue…"
280msgid "In queue…"
269msgstr "Növbədədir..."
281msgstr "Növbədədir..."
270
282
271−#: qml/Panel/Indicators/MenuItemFactory.qml:655
283+#: qml/Panel/Indicators/MenuItemFactory.qml:752
272msgid "Downloading"
284msgid "Downloading"
273msgstr "Endirilir"
285msgstr "Endirilir"
274
286
275−#: qml/Panel/Indicators/MenuItemFactory.qml:657
287+#: qml/Panel/Indicators/MenuItemFactory.qml:754
276msgid "Paused, tap to resume"
288msgid "Paused, tap to resume"
277−msgstr "Saxlanıldı, davam etmək üçün toxunun"
289+msgstr "Dayandırıldı. Davam etmək üçün toxunun"
278
290
279−#: qml/Panel/Indicators/MenuItemFactory.qml:659
291+#: qml/Panel/Indicators/MenuItemFactory.qml:756
280msgid "Canceled"
292msgid "Canceled"
281msgstr "İmtina edildi"
293msgstr "İmtina edildi"
282
294
283−#: qml/Panel/Indicators/MenuItemFactory.qml:661
295+#: qml/Panel/Indicators/MenuItemFactory.qml:758
284msgid "Finished"
296msgid "Finished"
285msgstr "Bitdi"
297msgstr "Bitdi"
286
298
287−#: qml/Panel/Indicators/MenuItemFactory.qml:663
299+#: qml/Panel/Indicators/MenuItemFactory.qml:760
288msgid "Failed, tap to retry"
300msgid "Failed, tap to retry"
289−msgstr "Alınmadı, davam etmək üçün toxunun"
301+msgstr "Alınmadı. Yenidәn cәhd etmək üçün toxunun"
290
302
291#: qml/Panel/Indicators/ModemInfoItem.qml:105
303#: qml/Panel/Indicators/ModemInfoItem.qml:105
292msgid "Unlock SIM"
304msgid "Unlock SIM"
@@ -296,45 +308,49 @@ msgstr "SIM kilidini aç"
296msgid "Roaming"
308msgid "Roaming"
297msgstr "Rominq"
309msgstr "Rominq"
298
310
299−#: qml/Shell.qml:266
311+#: qml/Shell.qml:346
300−msgid "Enter your passphrase"
312+msgid "Enter passphrase"
301−msgstr "Açar sözünüzü daxil edin"
313+msgstr ""
302
314
303−#: qml/Shell.qml:267
315+#: qml/Shell.qml:347
304msgid "Sorry, incorrect passphrase"
316msgid "Sorry, incorrect passphrase"
305−msgstr "Təəssüf ki, açar söz yanlışdır"
317+msgstr "Bağışlayın, açar söz yanlışdır"
318+
319+#: qml/Shell.qml:348
320+msgid "Please re-enter"
321+msgstr ""
306
322
307−#: qml/Shell.qml:282
323+#: qml/Shell.qml:350
308−msgid "Enter your passcode"
324+msgid "Enter passcode"
309msgstr ""
325msgstr ""
310
326
311−#: qml/Shell.qml:283
327+#: qml/Shell.qml:351
312msgid "Sorry, incorrect passcode"
328msgid "Sorry, incorrect passcode"
313msgstr ""
329msgstr ""
314
330
315−#: qml/Shell.qml:273
331+#: qml/Shell.qml:354
316#, qt-format
332#, qt-format
317−msgid "Enter your %1"
333+msgid "Enter %1"
318−msgstr "%1 daxil edin"
334+msgstr ""
319
335
320−#: qml/Shell.qml:274
336+#: qml/Shell.qml:355
321#, qt-format
337#, qt-format
322msgid "Sorry, incorrect %1"
338msgid "Sorry, incorrect %1"
323−msgstr "Təəssüf ki, %1 yanlışdır"
339+msgstr "Bağışlayın, %1 yanlışdır"
324
340
325−#: qml/Shell.qml:310
341+#: qml/Shell.qml:390
326msgid "Sorry, incorrect passphrase."
342msgid "Sorry, incorrect passphrase."
327−msgstr "Təəssüf ki, açar söz yanlışdır."
343+msgstr "Bağışlayın, açar söz yanlışdır."
328
344
329−#: qml/Shell.qml:311
345+#: qml/Shell.qml:391
330msgid "Sorry, incorrect passcode."
346msgid "Sorry, incorrect passcode."
331msgstr "Təəssüf ki, açar kod yanlışdır."
347msgstr "Təəssüf ki, açar kod yanlışdır."
332
348
333−#: qml/Shell.qml:312
349+#: qml/Shell.qml:392
334msgid "This will be your last attempt."
350msgid "This will be your last attempt."
335msgstr "Bu sizin son cəhdiniz olacaq."
351msgstr "Bu sizin son cəhdiniz olacaq."
336
352
337−#: qml/Shell.qml:314
353+#: qml/Shell.qml:394
338msgid ""
354msgid ""
339"If passphrase is entered incorrectly, your phone will conduct a factory "
355"If passphrase is entered incorrectly, your phone will conduct a factory "
340"reset and all personal data will be deleted."
356"reset and all personal data will be deleted."
@@ -342,7 +358,7 @@ msgstr ""
342"Əgər açar söz yanlış daxil edilibsə, onda telefonunuz fabrika parametrlərinə "
358"Əgər açar söz yanlış daxil edilibsə, onda telefonunuz fabrika parametrlərinə "
343"geri qayıdacaq və bütün şəxsi məlumatlarınız silinəcək."
359"geri qayıdacaq və bütün şəxsi məlumatlarınız silinəcək."
344
360
345−#: qml/Shell.qml:315
361+#: qml/Shell.qml:395
346msgid ""
362msgid ""
347"If passcode is entered incorrectly, your phone will conduct a factory reset "
363"If passcode is entered incorrectly, your phone will conduct a factory reset "
348"and all personal data will be deleted."
364"and all personal data will be deleted."
@@ -350,11 +366,8 @@ msgstr ""
350"Əgər açar kod yanlış daxil edilibsə, onda telefonunuz fabrika parametrlərinə "
366"Əgər açar kod yanlış daxil edilibsə, onda telefonunuz fabrika parametrlərinə "
351"geri qayıdacaq və bütün şəxsi məlumatlarınız silinəcək."
367"geri qayıdacaq və bütün şəxsi məlumatlarınız silinəcək."
352
368
353−#~ msgid "Are you sure you would like to turn power off?"
369+#~ msgid "Enter SIM PIN"
354−#~ msgstr "Söndürmək istədiyinizə əminsiniz?"
370+#~ msgstr "SIM PIN kodunuzu daxil edin"
355−
356−#~ msgid "Restart"
357−#~ msgstr "Yenidən Başlat"
358
371
359−#~ msgid "Enter your PIN"
372+#~ msgid "Sorry, incorrect PIN"
360−#~ msgstr "PIN kodunuzu daxil edin"
373+#~ msgstr "Bağışlayın, PIN yanlışdır"
po/be.ponew file+361
@@ -0,0 +1,361 @@
1+# Belarusian translation for unity8
2+# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
3+# This file is distributed under the same license as the unity8 package.
4+# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
5+#
6+msgid ""
7+msgstr ""
8+"Project-Id-Version: unity8\n"
9+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11+"PO-Revision-Date: 2014-09-24 17:12+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13+"Language-Team: Belarusian <be@li.org>\n"
14+"MIME-Version: 1.0\n"
15+"Content-Type: text/plain; charset=UTF-8\n"
16+"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
19+"X-Launchpad-Export-Date: 2014-10-09 06:36+0000\n"
20+"X-Generator: Launchpad (build 17196)\n"
21+
22+#: plugins/LightDM/Greeter.cpp:130
23+msgid "Password: "
24+msgstr ""
25+
26+#: plugins/Unity/Launcher/launcheritem.cpp:45
27+#: plugins/Unity/Launcher/launcheritem.cpp:91
28+msgid "Pin shortcut"
29+msgstr ""
30+
31+#: plugins/Unity/Launcher/launcheritem.cpp:91
32+msgid "Unpin shortcut"
33+msgstr ""
34+
35+#: qml/Components/DelayedLockscreen.qml:47
36+msgid "Device Locked"
37+msgstr ""
38+
39+#: qml/Components/DelayedLockscreen.qml:62
40+msgid "You have been locked out due to too many failed passphrase attempts."
41+msgstr ""
42+
43+#: qml/Components/DelayedLockscreen.qml:63
44+msgid "You have been locked out due to too many failed passcode attempts."
45+msgstr ""
46+
47+#: qml/Components/DelayedLockscreen.qml:72
48+#, qt-format
49+msgid "Please wait %1 minute and then try again…"
50+msgid_plural "Please wait %1 minutes and then try again…"
51+msgstr[0] ""
52+msgstr[1] ""
53+
54+#: qml/Components/Dialogs.qml:70
55+msgid "Log out"
56+msgstr ""
57+
58+#: qml/Components/Dialogs.qml:71
59+msgid "Are you sure you want to log out?"
60+msgstr ""
61+
62+#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
63+#: qml/Components/Dialogs.qml:122
64+msgid "No"
65+msgstr ""
66+
67+#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
68+#: qml/Components/Dialogs.qml:129
69+msgid "Yes"
70+msgstr ""
71+
72+#: qml/Components/Dialogs.qml:94
73+msgid "Shut down"
74+msgstr ""
75+
76+#: qml/Components/Dialogs.qml:95
77+msgid "Are you sure you want to shut down?"
78+msgstr ""
79+
80+#: qml/Components/Dialogs.qml:119
81+msgid "Reboot"
82+msgstr ""
83+
84+#: qml/Components/Dialogs.qml:120
85+msgid "Are you sure you want to reboot?"
86+msgstr ""
87+
88+#: qml/Components/Dialogs.qml:144
89+msgid "Power"
90+msgstr ""
91+
92+#: qml/Components/Dialogs.qml:145
93+msgid ""
94+"Are you sure you would like\n"
95+"to power off?"
96+msgstr ""
97+
98+#: qml/Components/Dialogs.qml:147
99+msgid "Power off"
100+msgstr ""
101+
102+#: qml/Components/Dialogs.qml:157
103+msgid "Restart"
104+msgstr ""
105+
106+#: qml/Components/Dialogs.qml:167
107+msgid "Cancel"
108+msgstr ""
109+
110+#: qml/Components/EdgeDemoOverlay.qml:151
111+msgid "Skip intro"
112+msgstr ""
113+
114+#: qml/Components/EdgeDemo.qml:112
115+msgid "Right edge"
116+msgstr ""
117+
118+#: qml/Components/EdgeDemo.qml:113
119+msgid "Try swiping from the right edge to unlock the phone"
120+msgstr ""
121+
122+#: qml/Components/EdgeDemo.qml:144
123+msgid "Top edge"
124+msgstr ""
125+
126+#: qml/Components/EdgeDemo.qml:145
127+msgid "Try swiping from the top edge to access the indicators"
128+msgstr ""
129+
130+#: qml/Components/EdgeDemo.qml:170
131+msgid "Close"
132+msgstr ""
133+
134+#: qml/Components/EdgeDemo.qml:171
135+msgid "Swipe up again to close the settings screen"
136+msgstr ""
137+
138+#: qml/Components/EdgeDemo.qml:198
139+msgid "Left edge"
140+msgstr ""
141+
142+#: qml/Components/EdgeDemo.qml:199
143+msgid "Swipe from the left to reveal the launcher for quick access to apps"
144+msgstr ""
145+
146+#: qml/Components/EdgeDemo.qml:226
147+msgid "Well done"
148+msgstr ""
149+
150+#: qml/Components/EdgeDemo.qml:227
151+msgid ""
152+"You have now mastered the edge gestures and can start using the "
153+"phone<br><br>Tap on the screen to start"
154+msgstr ""
155+
156+#: qml/Components/Lockscreen.qml:220
157+msgid "Emergency Call"
158+msgstr ""
159+
160+#: qml/Components/Lockscreen.qml:252
161+msgid "OK"
162+msgstr ""
163+
164+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
165+msgid "See less"
166+msgstr ""
167+
168+#: qml/Dash/GenericScopeView.qml:434
169+msgid "See all"
170+msgstr ""
171+
172+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
173+#: qml/Panel/SearchIndicator.qml:27
174+msgid "Search"
175+msgstr ""
176+
177+#: qml/Dash/PageHeader.qml:268
178+msgid "Settings"
179+msgstr ""
180+
181+#: qml/Dash/PageHeader.qml:275
182+msgid "Remove from Favorites"
183+msgstr ""
184+
185+#: qml/Dash/PageHeader.qml:275
186+msgid "Add to Favorites"
187+msgstr ""
188+
189+#: qml/Dash/Previews/PreviewActionCombo.qml:35
190+msgid "More..."
191+msgstr ""
192+
193+#: qml/Dash/Previews/PreviewActionCombo.qml:35
194+msgid "Less..."
195+msgstr ""
196+
197+#: qml/Dash/Previews/PreviewRatingInput.qml:81
198+msgid "Rate this"
199+msgstr ""
200+
201+#: qml/Dash/Previews/PreviewRatingInput.qml:126
202+msgid "Add a review"
203+msgstr ""
204+
205+#: qml/Dash/Previews/PreviewRatingInput.qml:166
206+msgid "Send"
207+msgstr ""
208+
209+#: qml/Dash/PullToRefreshScopeStyle.qml:55
210+msgid "Pull to refresh…"
211+msgstr ""
212+
213+#: qml/Dash/PullToRefreshScopeStyle.qml:60
214+msgid "Release to refresh…"
215+msgstr ""
216+
217+#: qml/Dash/ScopesOverview.qml:206
218+msgid "Manage Scopes"
219+msgstr ""
220+
221+#: qml/Dash/ScopesOverview.qml:428
222+msgid "Done"
223+msgstr ""
224+
225+#: qml/Dash/ScopesOverview.qml:454
226+msgid "Store"
227+msgstr ""
228+
229+#: qml/Dash/ScopesOverviewTab.qml:36
230+msgid "Favorites"
231+msgstr ""
232+
233+#: qml/Dash/ScopesOverviewTab.qml:54
234+msgid "All"
235+msgstr ""
236+
237+#: qml/Greeter/Greeter.qml:157
238+msgid "Unlock"
239+msgstr ""
240+
241+#: qml/Hud/HudParametrizedActionsPage.qml:139
242+msgid "Confirm"
243+msgstr ""
244+
245+#: qml/Hud/Hud.qml:61 qml/Hud/Hud.qml:99 qml/Hud/Hud.qml:372
246+msgid "Type or say a command"
247+msgstr ""
248+
249+#: qml/Hud/Hud.qml:84
250+msgid "Loading. Please Wait..."
251+msgstr ""
252+
253+#: qml/Hud/Hud.qml:89
254+msgid "Speak Now..."
255+msgstr ""
256+
257+#: qml/Hud/Hud.qml:94
258+msgid "Speaking..."
259+msgstr ""
260+
261+#: qml/Notifications/NotificationMenuItemFactory.qml:116
262+msgid "Show password"
263+msgstr ""
264+
265+#: qml/Panel/ActiveCallHint.qml:77
266+msgid "Tap to return to call..."
267+msgstr ""
268+
269+#: qml/Panel/ActiveCallHint.qml:90
270+msgid "Conference"
271+msgstr ""
272+
273+#: qml/Panel/Indicators/MenuItemFactory.qml:600
274+msgid "Nothing is playing"
275+msgstr ""
276+
277+#: qml/Panel/Indicators/MenuItemFactory.qml:748
278+msgid "In queue…"
279+msgstr ""
280+
281+#: qml/Panel/Indicators/MenuItemFactory.qml:752
282+msgid "Downloading"
283+msgstr ""
284+
285+#: qml/Panel/Indicators/MenuItemFactory.qml:754
286+msgid "Paused, tap to resume"
287+msgstr ""
288+
289+#: qml/Panel/Indicators/MenuItemFactory.qml:756
290+msgid "Canceled"
291+msgstr ""
292+
293+#: qml/Panel/Indicators/MenuItemFactory.qml:758
294+msgid "Finished"
295+msgstr ""
296+
297+#: qml/Panel/Indicators/MenuItemFactory.qml:760
298+msgid "Failed, tap to retry"
299+msgstr ""
300+
301+#: qml/Panel/Indicators/ModemInfoItem.qml:105
302+msgid "Unlock SIM"
303+msgstr ""
304+
305+#: qml/Panel/Indicators/RoamingIndication.qml:27
306+msgid "Roaming"
307+msgstr ""
308+
309+#: qml/Shell.qml:346
310+msgid "Enter passphrase"
311+msgstr ""
312+
313+#: qml/Shell.qml:347
314+msgid "Sorry, incorrect passphrase"
315+msgstr ""
316+
317+#: qml/Shell.qml:348
318+msgid "Please re-enter"
319+msgstr ""
320+
321+#: qml/Shell.qml:350
322+msgid "Enter passcode"
323+msgstr ""
324+
325+#: qml/Shell.qml:351
326+msgid "Sorry, incorrect passcode"
327+msgstr ""
328+
329+#: qml/Shell.qml:354
330+#, qt-format
331+msgid "Enter %1"
332+msgstr ""
333+
334+#: qml/Shell.qml:355
335+#, qt-format
336+msgid "Sorry, incorrect %1"
337+msgstr ""
338+
339+#: qml/Shell.qml:390
340+msgid "Sorry, incorrect passphrase."
341+msgstr ""
342+
343+#: qml/Shell.qml:391
344+msgid "Sorry, incorrect passcode."
345+msgstr ""
346+
347+#: qml/Shell.qml:392
348+msgid "This will be your last attempt."
349+msgstr ""
350+
351+#: qml/Shell.qml:394
352+msgid ""
353+"If passphrase is entered incorrectly, your phone will conduct a factory "
354+"reset and all personal data will be deleted."
355+msgstr ""
356+
357+#: qml/Shell.qml:395
358+msgid ""
359+"If passcode is entered incorrectly, your phone will conduct a factory reset "
360+"and all personal data will be deleted."
361+msgstr ""
po/bg.po+87−71
@@ -7,29 +7,49 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11"PO-Revision-Date: 2014-04-01 14:08+0000\n"
11"PO-Revision-Date: 2014-04-01 14:08+0000\n"
12"Last-Translator: Atanas Kovachki <Unknown>\n"
12"Last-Translator: Atanas Kovachki <Unknown>\n"
13"Language-Team: Bulgarian <bg@li.org>\n"
13"Language-Team: Bulgarian <bg@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:29+0000\n"
18+"X-Launchpad-Export-Date: 2014-10-09 06:36+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
19+"X-Generator: Launchpad (build 17196)\n"
19
20
20−#: plugins/LightDM/Greeter.cpp:129
21+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
22msgid "Password: "
22msgstr ""
23msgstr ""
23
24
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
27msgid "Pin shortcut"
27msgstr ""
28msgstr ""
28
29
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
31msgid "Unpin shortcut"
31msgstr ""
32msgstr ""
32
33
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr ""
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr ""
41+
42+#: qml/Components/DelayedLockscreen.qml:63
43+msgid "You have been locked out due to too many failed passcode attempts."
44+msgstr ""
45+
46+#: qml/Components/DelayedLockscreen.qml:72
47+#, qt-format
48+msgid "Please wait %1 minute and then try again…"
49+msgid_plural "Please wait %1 minutes and then try again…"
50+msgstr[0] ""
51+msgstr[1] ""
52+
33#: qml/Components/Dialogs.qml:70
53#: qml/Components/Dialogs.qml:70
34msgid "Log out"
54msgid "Log out"
35msgstr ""
55msgstr ""
@@ -74,11 +94,15 @@ msgid ""
74"to power off?"
94"to power off?"
75msgstr ""
95msgstr ""
76
96
77−#: qml/Components/Dialogs.qml:144
97+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
98msgid "Power off"
79msgstr ""
99msgstr ""
80
100
81−#: qml/Components/Dialogs.qml:162
101+#: qml/Components/Dialogs.qml:157
102+msgid "Restart"
103+msgstr ""
104+
105+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
106msgid "Cancel"
83msgstr ""
107msgstr ""
84
108
@@ -135,60 +159,44 @@ msgid ""
135"phone<br><br>Tap on the screen to start"
159"phone<br><br>Tap on the screen to start"
136msgstr ""
160msgstr ""
137
161
138−#: qml/Components/Lockscreen.qml:167
162+#: qml/Components/Lockscreen.qml:220
139−msgid "Please wait"
140−msgstr ""
141−
142−#: qml/Components/Lockscreen.qml:172
143−msgid "Too many incorrect attempts"
144−msgstr ""
145−
146−#: qml/Components/Lockscreen.qml:206
147msgid "Emergency Call"
163msgid "Emergency Call"
148msgstr "Спешно повикване"
164msgstr "Спешно повикване"
149
165
150−#: qml/Components/Lockscreen.qml:226
166+#: qml/Components/Lockscreen.qml:252
151msgid "OK"
167msgid "OK"
152msgstr ""
168msgstr ""
153
169
154−#: qml/Components/PassphraseLockscreen.qml:61
155−#, qt-format
156−msgid "Hello %1"
157−msgstr "Здравей, %1"
158−
159−#: qml/Components/PassphraseLockscreen.qml:61
160−msgid "Hello"
161−msgstr "Здравей"
162−
163−#: qml/Dash/GenericScopeView.qml:361
170+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
164msgid "See less"
171msgid "See less"
165msgstr ""
172msgstr ""
166
173
167−#: qml/Dash/GenericScopeView.qml:361
174+#: qml/Dash/GenericScopeView.qml:434
168msgid "See all"
175msgid "See all"
169msgstr ""
176msgstr ""
170
177
178+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
171−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
179+#: qml/Panel/SearchIndicator.qml:27
172msgid "Search"
180msgid "Search"
173msgstr "Търсене"
181msgstr "Търсене"
174
182
175−#: qml/Dash/PageHeader.qml:270
183+#: qml/Dash/PageHeader.qml:268
176msgid "Settings"
184msgid "Settings"
177msgstr ""
185msgstr ""
178
186
179−#: qml/Dash/PageHeader.qml:279
187+#: qml/Dash/PageHeader.qml:275
180msgid "Remove from Favorites"
188msgid "Remove from Favorites"
181msgstr ""
189msgstr ""
182
190
183−#: qml/Dash/PageHeader.qml:279
191+#: qml/Dash/PageHeader.qml:275
184msgid "Add to Favorites"
192msgid "Add to Favorites"
185msgstr ""
193msgstr ""
186
194
187−#: qml/Dash/Previews/PreviewActionCombo.qml:34
195+#: qml/Dash/Previews/PreviewActionCombo.qml:35
188msgid "More..."
196msgid "More..."
189msgstr ""
197msgstr ""
190
198
191−#: qml/Dash/Previews/PreviewActionCombo.qml:34
199+#: qml/Dash/Previews/PreviewActionCombo.qml:35
192msgid "Less..."
200msgid "Less..."
193msgstr "По-малко..."
201msgstr "По-малко..."
194
202
@@ -204,15 +212,23 @@ msgstr "Добави отзив"
204msgid "Send"
212msgid "Send"
205msgstr "Изпрати"
213msgstr "Изпрати"
206
214
215+#: qml/Dash/PullToRefreshScopeStyle.qml:55
216+msgid "Pull to refresh…"
217+msgstr ""
218+
219+#: qml/Dash/PullToRefreshScopeStyle.qml:60
220+msgid "Release to refresh…"
221+msgstr ""
222+
207−#: qml/Dash/ScopesOverview.qml:201
223+#: qml/Dash/ScopesOverview.qml:206
208−msgid "Manage Dash"
224+msgid "Manage Scopes"
209msgstr ""
225msgstr ""
210
226
211−#: qml/Dash/ScopesOverview.qml:408
227+#: qml/Dash/ScopesOverview.qml:428
212msgid "Done"
228msgid "Done"
213msgstr ""
229msgstr ""
214
230
215−#: qml/Dash/ScopesOverview.qml:434
231+#: qml/Dash/ScopesOverview.qml:454
216msgid "Store"
232msgid "Store"
217msgstr ""
233msgstr ""
218
234
@@ -225,10 +241,10 @@ msgid "All"
225msgstr ""
241msgstr ""
226
242
227#: qml/Greeter/Greeter.qml:157
243#: qml/Greeter/Greeter.qml:157
228−msgid "Swipe to unlock"
244+msgid "Unlock"
229msgstr ""
245msgstr ""
230
246
231−#: qml/Hud/HudParametrizedActionsPage.qml:132
247+#: qml/Hud/HudParametrizedActionsPage.qml:139
232msgid "Confirm"
248msgid "Confirm"
233msgstr "Потвърди"
249msgstr "Потвърди"
234
250
@@ -248,18 +264,10 @@ msgstr "Говорете сега..."
248msgid "Speaking..."
264msgid "Speaking..."
249msgstr "Говорете..."
265msgstr "Говорете..."
250
266
251−#: qml/Notifications/NotificationMenuItemFactory.qml:105
267+#: qml/Notifications/NotificationMenuItemFactory.qml:116
252msgid "Show password"
268msgid "Show password"
253msgstr "Покажи паролата"
269msgstr "Покажи паролата"
254
270
255−#: qml/Notifications/NotificationMenuItemFactory.qml:120
256−msgid "Enter SIM PIN"
257−msgstr ""
258−
259−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
260−msgid "Sorry, incorrect PIN"
261−msgstr ""
262−
263#: qml/Panel/ActiveCallHint.qml:77
271#: qml/Panel/ActiveCallHint.qml:77
264msgid "Tap to return to call..."
272msgid "Tap to return to call..."
265msgstr ""
273msgstr ""
@@ -268,27 +276,31 @@ msgstr ""
268msgid "Conference"
276msgid "Conference"
269msgstr ""
277msgstr ""
270
278
271−#: qml/Panel/Indicators/MenuItemFactory.qml:651
279+#: qml/Panel/Indicators/MenuItemFactory.qml:600
280+msgid "Nothing is playing"
281+msgstr ""
282+
283+#: qml/Panel/Indicators/MenuItemFactory.qml:748
272msgid "In queue…"
284msgid "In queue…"
273msgstr ""
285msgstr ""
274
286
275−#: qml/Panel/Indicators/MenuItemFactory.qml:655
287+#: qml/Panel/Indicators/MenuItemFactory.qml:752
276msgid "Downloading"
288msgid "Downloading"
277msgstr ""
289msgstr ""
278
290
279−#: qml/Panel/Indicators/MenuItemFactory.qml:657
291+#: qml/Panel/Indicators/MenuItemFactory.qml:754
280msgid "Paused, tap to resume"
292msgid "Paused, tap to resume"
281msgstr ""
293msgstr ""
282
294
283−#: qml/Panel/Indicators/MenuItemFactory.qml:659
295+#: qml/Panel/Indicators/MenuItemFactory.qml:756
284msgid "Canceled"
296msgid "Canceled"
285msgstr ""
297msgstr ""
286
298
287−#: qml/Panel/Indicators/MenuItemFactory.qml:661
299+#: qml/Panel/Indicators/MenuItemFactory.qml:758
288msgid "Finished"
300msgid "Finished"
289msgstr ""
301msgstr ""
290
302
291−#: qml/Panel/Indicators/MenuItemFactory.qml:663
303+#: qml/Panel/Indicators/MenuItemFactory.qml:760
292msgid "Failed, tap to retry"
304msgid "Failed, tap to retry"
293msgstr ""
305msgstr ""
294
306
@@ -300,51 +312,55 @@ msgstr ""
300msgid "Roaming"
312msgid "Roaming"
301msgstr ""
313msgstr ""
302
314
303−#: qml/Shell.qml:266
315+#: qml/Shell.qml:346
304−msgid "Enter your passphrase"
316+msgid "Enter passphrase"
305msgstr ""
317msgstr ""
306
318
307−#: qml/Shell.qml:267
319+#: qml/Shell.qml:347
308msgid "Sorry, incorrect passphrase"
320msgid "Sorry, incorrect passphrase"
309msgstr ""
321msgstr ""
310
322
311−#: qml/Shell.qml:282
323+#: qml/Shell.qml:348
324+msgid "Please re-enter"
325+msgstr ""
326+
327+#: qml/Shell.qml:350
312−msgid "Enter your passcode"
328+msgid "Enter passcode"
313msgstr ""
329msgstr ""
314
330
315−#: qml/Shell.qml:283
331+#: qml/Shell.qml:351
316msgid "Sorry, incorrect passcode"
332msgid "Sorry, incorrect passcode"
317msgstr ""
333msgstr ""
318
334
319−#: qml/Shell.qml:273
335+#: qml/Shell.qml:354
320#, qt-format
336#, qt-format
321−msgid "Enter your %1"
337+msgid "Enter %1"
322msgstr ""
338msgstr ""
323
339
324−#: qml/Shell.qml:274
340+#: qml/Shell.qml:355
325#, qt-format
341#, qt-format
326msgid "Sorry, incorrect %1"
342msgid "Sorry, incorrect %1"
327msgstr ""
343msgstr ""
328
344
329−#: qml/Shell.qml:310
345+#: qml/Shell.qml:390
330msgid "Sorry, incorrect passphrase."
346msgid "Sorry, incorrect passphrase."
331msgstr ""
347msgstr ""
332
348
333−#: qml/Shell.qml:311
349+#: qml/Shell.qml:391
334msgid "Sorry, incorrect passcode."
350msgid "Sorry, incorrect passcode."
335msgstr ""
351msgstr ""
336
352
337−#: qml/Shell.qml:312
353+#: qml/Shell.qml:392
338msgid "This will be your last attempt."
354msgid "This will be your last attempt."
339msgstr ""
355msgstr ""
340
356
341−#: qml/Shell.qml:314
357+#: qml/Shell.qml:394
342msgid ""
358msgid ""
343"If passphrase is entered incorrectly, your phone will conduct a factory "
359"If passphrase is entered incorrectly, your phone will conduct a factory "
344"reset and all personal data will be deleted."
360"reset and all personal data will be deleted."
345msgstr ""
361msgstr ""
346
362
347−#: qml/Shell.qml:315
363+#: qml/Shell.qml:395
348msgid ""
364msgid ""
349"If passcode is entered incorrectly, your phone will conduct a factory reset "
365"If passcode is entered incorrectly, your phone will conduct a factory reset "
350"and all personal data will be deleted."
366"and all personal data will be deleted."
po/br.po+116−97
@@ -7,78 +7,108 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11−"PO-Revision-Date: 2014-08-26 08:28+0000\n"
11+"PO-Revision-Date: 2014-10-07 07:03+0000\n"
12"Last-Translator: Fohanno Thierry <thierry.fohanno@ofis-bzh.org>\n"
12"Last-Translator: Fohanno Thierry <thierry.fohanno@ofis-bzh.org>\n"
13"Language-Team: Breton <br@li.org>\n"
13"Language-Team: Breton <br@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=2; plural=n > 1;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:29+0000\n"
18+"X-Launchpad-Export-Date: 2014-10-09 06:36+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
19+"X-Generator: Launchpad (build 17196)\n"
19
20
20−#: plugins/LightDM/Greeter.cpp:129
21+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
22msgid "Password: "
22msgstr "Ger-tremen : "
23msgstr "Ger-tremen : "
23
24
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
27msgid "Pin shortcut"
27msgstr "Spilhennañ ar verradenn"
28msgstr "Spilhennañ ar verradenn"
28
29
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
31msgid "Unpin shortcut"
31msgstr "Dispilhennañ ar verradenn"
32msgstr "Dispilhennañ ar verradenn"
32
33
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr "Benveg prennet"
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr ""
41+"Prennet eo bet ho penveg abalamour da re a daolioù-esae c'hwitet evit merkañ "
42+"ho frazenn-dremen."
43+
44+#: qml/Components/DelayedLockscreen.qml:63
45+msgid "You have been locked out due to too many failed passcode attempts."
46+msgstr ""
47+"Prennet eo bet ho penveg abalamour da re a daolioù-esae evit merkañ ho kod-"
48+"tremen."
49+
50+#: qml/Components/DelayedLockscreen.qml:72
51+#, qt-format
52+msgid "Please wait %1 minute and then try again…"
53+msgid_plural "Please wait %1 minutes and then try again…"
54+msgstr[0] "Gortozit %1 vunutenn, mar plij, hag esaeit en-dro..."
55+msgstr[1] "Gortozit %1 a vunutoù, mar plij, hag esaeit en-dro..."
56+
33#: qml/Components/Dialogs.qml:70
57#: qml/Components/Dialogs.qml:70
34msgid "Log out"
58msgid "Log out"
35−msgstr ""
59+msgstr "Digevreañ"
36
60
37#: qml/Components/Dialogs.qml:71
61#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
62msgid "Are you sure you want to log out?"
39−msgstr ""
63+msgstr "Ha sur oc'h e fell deoc'h digevreañ ?"
40
64
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
65#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
66#: qml/Components/Dialogs.qml:122
43msgid "No"
67msgid "No"
44−msgstr ""
68+msgstr "N'on ket"
45
69
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
70#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
71#: qml/Components/Dialogs.qml:129
48msgid "Yes"
72msgid "Yes"
49−msgstr ""
73+msgstr "Ya"
50
74
51#: qml/Components/Dialogs.qml:94
75#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
76msgid "Shut down"
53−msgstr ""
77+msgstr "Lazhañ ar benveg"
54
78
55#: qml/Components/Dialogs.qml:95
79#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
80msgid "Are you sure you want to shut down?"
57−msgstr ""
81+msgstr "Ha sur oc'h e fell deoc'h lazhañ ar benveg ?"
58
82
59#: qml/Components/Dialogs.qml:119
83#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
84msgid "Reboot"
61−msgstr ""
85+msgstr "Adloc'hañ"
62
86
63#: qml/Components/Dialogs.qml:120
87#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
88msgid "Are you sure you want to reboot?"
65−msgstr ""
89+msgstr "Ha sur oc'h e fell deoc'h adloc'hañ ?"
66
90
67#: qml/Components/Dialogs.qml:144
91#: qml/Components/Dialogs.qml:144
68msgid "Power"
92msgid "Power"
69−msgstr ""
93+msgstr "Tredan"
70
94
71#: qml/Components/Dialogs.qml:145
95#: qml/Components/Dialogs.qml:145
72msgid ""
96msgid ""
73"Are you sure you would like\n"
97"Are you sure you would like\n"
74"to power off?"
98"to power off?"
75msgstr ""
99msgstr ""
100+"Ha sur oc'h e fell deoc'h\n"
101+"troc'hañ an tredan ?"
76
102
77−#: qml/Components/Dialogs.qml:144
103+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
104msgid "Power off"
79msgstr "Lazhañ"
105msgstr "Lazhañ"
80
106
81−#: qml/Components/Dialogs.qml:162
107+#: qml/Components/Dialogs.qml:157
108+msgid "Restart"
109+msgstr "Adloc'hañ"
110+
111+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
112msgid "Cancel"
83msgstr "Nullañ"
113msgstr "Nullañ"
84
114
@@ -135,60 +165,44 @@ msgstr ""
135"Mestroniañ a rit ar jestroù ha gallout a rit kregiñ da implijout ar "
165"Mestroniañ a rit ar jestroù ha gallout a rit kregiñ da implijout ar "
136"pellgomzer<br><br>Touchit d'ar skramm evit kregiñ ganti"
166"pellgomzer<br><br>Touchit d'ar skramm evit kregiñ ganti"
137
167
138−#: qml/Components/Lockscreen.qml:167
168+#: qml/Components/Lockscreen.qml:220
139−msgid "Please wait"
140−msgstr "Gortozit, mar plij"
141−
142−#: qml/Components/Lockscreen.qml:172
143−msgid "Too many incorrect attempts"
144−msgstr "Re a daolioù-esae direizh"
145−
146−#: qml/Components/Lockscreen.qml:206
147msgid "Emergency Call"
169msgid "Emergency Call"
148msgstr "Pellgomzadenn vallus"
170msgstr "Pellgomzadenn vallus"
149
171
150−#: qml/Components/Lockscreen.qml:226
172+#: qml/Components/Lockscreen.qml:252
151msgid "OK"
173msgid "OK"
152msgstr "Mat eo"
174msgstr "Mat eo"
153
175
154−#: qml/Components/PassphraseLockscreen.qml:61
155−#, qt-format
156−msgid "Hello %1"
157−msgstr "Demat %1"
158−
159−#: qml/Components/PassphraseLockscreen.qml:61
160−msgid "Hello"
161−msgstr "Demat"
162−
163−#: qml/Dash/GenericScopeView.qml:361
176+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
164msgid "See less"
177msgid "See less"
165msgstr "Gwelet nebeutoc'h"
178msgstr "Gwelet nebeutoc'h"
166
179
167−#: qml/Dash/GenericScopeView.qml:361
180+#: qml/Dash/GenericScopeView.qml:434
168msgid "See all"
181msgid "See all"
169msgstr "Gwelet pep tra"
182msgstr "Gwelet pep tra"
170
183
184+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
171−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
185+#: qml/Panel/SearchIndicator.qml:27
172msgid "Search"
186msgid "Search"
173msgstr "Klask"
187msgstr "Klask"
174
188
175−#: qml/Dash/PageHeader.qml:270
189+#: qml/Dash/PageHeader.qml:268
176msgid "Settings"
190msgid "Settings"
177−msgstr ""
191+msgstr "Arventennoù"
178
192
179−#: qml/Dash/PageHeader.qml:279
193+#: qml/Dash/PageHeader.qml:275
180msgid "Remove from Favorites"
194msgid "Remove from Favorites"
181−msgstr ""
195+msgstr "Lemel eus ar sinedoù"
182
196
183−#: qml/Dash/PageHeader.qml:279
197+#: qml/Dash/PageHeader.qml:275
184msgid "Add to Favorites"
198msgid "Add to Favorites"
185−msgstr ""
199+msgstr "Ouzhpennañ d'ar sinedoù"
186
200
187−#: qml/Dash/Previews/PreviewActionCombo.qml:34
201+#: qml/Dash/Previews/PreviewActionCombo.qml:35
188msgid "More..."
202msgid "More..."
189msgstr "Muioc'h..."
203msgstr "Muioc'h..."
190
204
191−#: qml/Dash/Previews/PreviewActionCombo.qml:34
205+#: qml/Dash/Previews/PreviewActionCombo.qml:35
192msgid "Less..."
206msgid "Less..."
193msgstr "Nebeutoc'h..."
207msgstr "Nebeutoc'h..."
194
208
@@ -204,15 +218,23 @@ msgstr "Ouzhpennañ un ali"
204msgid "Send"
218msgid "Send"
205msgstr "Kas"
219msgstr "Kas"
206
220
207−#: qml/Dash/ScopesOverview.qml:201
221+#: qml/Dash/PullToRefreshScopeStyle.qml:55
208−msgid "Manage Dash"
222+msgid "Pull to refresh…"
209−msgstr "Merañ an daolenn-vourzh"
223+msgstr "Tennañ evit freskaat..."
224+
225+#: qml/Dash/PullToRefreshScopeStyle.qml:60
226+msgid "Release to refresh…"
227+msgstr "Lezel da vont evit freskaat..."
210
228
211−#: qml/Dash/ScopesOverview.qml:408
229+#: qml/Dash/ScopesOverview.qml:206
230+msgid "Manage Scopes"
231+msgstr "Merañ ar c'hefluskerioù enklask"
232+
233+#: qml/Dash/ScopesOverview.qml:428
212msgid "Done"
234msgid "Done"
213msgstr "Graet eo"
235msgstr "Graet eo"
214
236
215−#: qml/Dash/ScopesOverview.qml:434
237+#: qml/Dash/ScopesOverview.qml:454
216msgid "Store"
238msgid "Store"
217msgstr "Enrollañ"
239msgstr "Enrollañ"
218
240
@@ -225,10 +247,10 @@ msgid "All"
225msgstr "An holl anezho"
247msgstr "An holl anezho"
226
248
227#: qml/Greeter/Greeter.qml:157
249#: qml/Greeter/Greeter.qml:157
228−msgid "Swipe to unlock"
250+msgid "Unlock"
229−msgstr "Riklañ evit dibrennañ"
251+msgstr "Dibrennañ"
230
252
231−#: qml/Hud/HudParametrizedActionsPage.qml:132
253+#: qml/Hud/HudParametrizedActionsPage.qml:139
232msgid "Confirm"
254msgid "Confirm"
233msgstr "Kadarnaat"
255msgstr "Kadarnaat"
234
256
@@ -248,18 +270,10 @@ msgstr "Komzit bremañ..."
248msgid "Speaking..."
270msgid "Speaking..."
249msgstr "O komz..."
271msgstr "O komz..."
250
272
251−#: qml/Notifications/NotificationMenuItemFactory.qml:105
273+#: qml/Notifications/NotificationMenuItemFactory.qml:116
252msgid "Show password"
274msgid "Show password"
253msgstr "Diskouez ar ger-tremen"
275msgstr "Diskouez ar ger-tremen"
254
276
255−#: qml/Notifications/NotificationMenuItemFactory.qml:120
256−msgid "Enter SIM PIN"
257−msgstr "Ebarzhit kod PIN ar gartenn SIM"
258−
259−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
260−msgid "Sorry, incorrect PIN"
261−msgstr "Siwazh, kod PIN direizh"
262−
263#: qml/Panel/ActiveCallHint.qml:77
277#: qml/Panel/ActiveCallHint.qml:77
264msgid "Tap to return to call..."
278msgid "Tap to return to call..."
265msgstr "Touchit evit distreiñ d'ar bellgomzadenn..."
279msgstr "Touchit evit distreiñ d'ar bellgomzadenn..."
@@ -268,27 +282,31 @@ msgstr "Touchit evit distreiñ d'ar bellgomzadenn..."
268msgid "Conference"
282msgid "Conference"
269msgstr "Kendiviz"
283msgstr "Kendiviz"
270
284
271−#: qml/Panel/Indicators/MenuItemFactory.qml:651
285+#: qml/Panel/Indicators/MenuItemFactory.qml:600
286+msgid "Nothing is playing"
287+msgstr "Ne lenner netra bremañ"
288+
289+#: qml/Panel/Indicators/MenuItemFactory.qml:748
272msgid "In queue…"
290msgid "In queue…"
273msgstr "El lostennad..."
291msgstr "El lostennad..."
274
292
275−#: qml/Panel/Indicators/MenuItemFactory.qml:655
293+#: qml/Panel/Indicators/MenuItemFactory.qml:752
276msgid "Downloading"
294msgid "Downloading"
277msgstr "O pellgargañ"
295msgstr "O pellgargañ"
278
296
279−#: qml/Panel/Indicators/MenuItemFactory.qml:657
297+#: qml/Panel/Indicators/MenuItemFactory.qml:754
280msgid "Paused, tap to resume"
298msgid "Paused, tap to resume"
281msgstr "Ehanet, touchit evit adkregiñ"
299msgstr "Ehanet, touchit evit adkregiñ"
282
300
283−#: qml/Panel/Indicators/MenuItemFactory.qml:659
301+#: qml/Panel/Indicators/MenuItemFactory.qml:756
284msgid "Canceled"
302msgid "Canceled"
285msgstr "Nullet"
303msgstr "Nullet"
286
304
287−#: qml/Panel/Indicators/MenuItemFactory.qml:661
305+#: qml/Panel/Indicators/MenuItemFactory.qml:758
288msgid "Finished"
306msgid "Finished"
289msgstr "Echu"
307msgstr "Echu"
290
308
291−#: qml/Panel/Indicators/MenuItemFactory.qml:663
309+#: qml/Panel/Indicators/MenuItemFactory.qml:760
292msgid "Failed, tap to retry"
310msgid "Failed, tap to retry"
293msgstr "C'hwitet, touchit evit adkregiñ"
311msgstr "C'hwitet, touchit evit adkregiñ"
294
312
@@ -300,45 +318,49 @@ msgstr "Dibrennañ ar gartenn SIM"
300msgid "Roaming"
318msgid "Roaming"
301msgstr "O kantren"
319msgstr "O kantren"
302
320
303−#: qml/Shell.qml:266
321+#: qml/Shell.qml:346
304−msgid "Enter your passphrase"
322+msgid "Enter passphrase"
305−msgstr "Ebarzhit ho frazenn-dremen"
323+msgstr "Merkañ ar frazenn-dremen"
306
324
307−#: qml/Shell.qml:267
325+#: qml/Shell.qml:347
308msgid "Sorry, incorrect passphrase"
326msgid "Sorry, incorrect passphrase"
309msgstr "Siwazh, frazenn-dremen direizh"
327msgstr "Siwazh, frazenn-dremen direizh"
310
328
311−#: qml/Shell.qml:282
329+#: qml/Shell.qml:348
330+msgid "Please re-enter"
331+msgstr "Adverkañ, mar plij"
332+
333+#: qml/Shell.qml:350
312−msgid "Enter your passcode"
334+msgid "Enter passcode"
313−msgstr ""
335+msgstr "Merkañ ar c'hod-tremen"
314
336
315−#: qml/Shell.qml:283
337+#: qml/Shell.qml:351
316msgid "Sorry, incorrect passcode"
338msgid "Sorry, incorrect passcode"
317−msgstr ""
339+msgstr "Digarezit, kod-tremen direizh"
318
340
319−#: qml/Shell.qml:273
341+#: qml/Shell.qml:354
320#, qt-format
342#, qt-format
321−msgid "Enter your %1"
343+msgid "Enter %1"
322−msgstr "Ebarzhit ho %1"
344+msgstr "Merkañ %1"
323
345
324−#: qml/Shell.qml:274
346+#: qml/Shell.qml:355
325#, qt-format
347#, qt-format
326msgid "Sorry, incorrect %1"
348msgid "Sorry, incorrect %1"
327msgstr "Siwazh, %1 direizh"
349msgstr "Siwazh, %1 direizh"
328
350
329−#: qml/Shell.qml:310
351+#: qml/Shell.qml:390
330msgid "Sorry, incorrect passphrase."
352msgid "Sorry, incorrect passphrase."
331msgstr "Siwazh, frazenn-dremen direizh"
353msgstr "Siwazh, frazenn-dremen direizh"
332
354
333−#: qml/Shell.qml:311
355+#: qml/Shell.qml:391
334msgid "Sorry, incorrect passcode."
356msgid "Sorry, incorrect passcode."
335msgstr "Siwazh, kod-tremen direizh"
357msgstr "Siwazh, kod-tremen direizh"
336
358
337−#: qml/Shell.qml:312
359+#: qml/Shell.qml:392
338msgid "This will be your last attempt."
360msgid "This will be your last attempt."
339msgstr "Ho taol-esae diwezhañ e vo."
361msgstr "Ho taol-esae diwezhañ e vo."
340
362
341−#: qml/Shell.qml:314
363+#: qml/Shell.qml:394
342msgid ""
364msgid ""
343"If passphrase is entered incorrectly, your phone will conduct a factory "
365"If passphrase is entered incorrectly, your phone will conduct a factory "
344"reset and all personal data will be deleted."
366"reset and all personal data will be deleted."
@@ -346,7 +368,7 @@ msgstr ""
346"Ma vez ebarzhet ur frazenn-dremen direizh, e vo adderaouekaet ho pellgomzer "
368"Ma vez ebarzhet ur frazenn-dremen direizh, e vo adderaouekaet ho pellgomzer "
347"gant arventennoù al labouradeg hag e vo diverket an holl roadennoù personel"
369"gant arventennoù al labouradeg hag e vo diverket an holl roadennoù personel"
348
370
349−#: qml/Shell.qml:315
371+#: qml/Shell.qml:395
350msgid ""
372msgid ""
351"If passcode is entered incorrectly, your phone will conduct a factory reset "
373"If passcode is entered incorrectly, your phone will conduct a factory reset "
352"and all personal data will be deleted."
374"and all personal data will be deleted."
@@ -354,11 +376,8 @@ msgstr ""
354"Ma vez ebarzhet ur c'hod-tremen direizh, e vo adderaouekaet ho pellgomzer "
376"Ma vez ebarzhet ur c'hod-tremen direizh, e vo adderaouekaet ho pellgomzer "
355"gant arventennoù al labouradeg hag e vo diverket an holl roadennoù personel."
377"gant arventennoù al labouradeg hag e vo diverket an holl roadennoù personel."
356
378
357−#~ msgid "Are you sure you would like to turn power off?"
379+#~ msgid "Sorry, incorrect PIN"
358−#~ msgstr "Ha sur oc'h e fell deoc'h lazhañ ar benveg ?"
380+#~ msgstr "Siwazh, kod PIN direizh"
359−
360−#~ msgid "Restart"
361−#~ msgstr "Adloc'hañ"
362
381
363−#~ msgid "Enter your PIN"
382+#~ msgid "Enter SIM PIN"
364−#~ msgstr "Ebarzhit ho kod PIN"
383+#~ msgstr "Ebarzhit kod PIN ar gartenn SIM"
po/bs.po+88−71
@@ -7,29 +7,50 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11"PO-Revision-Date: 2014-01-16 22:33+0000\n"
11"PO-Revision-Date: 2014-01-16 22:33+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Bosnian <bs@li.org>\n"
13"Language-Team: Bosnian <bs@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:29+0000\n"
19+"X-Launchpad-Export-Date: 2014-10-09 06:36+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
20+"X-Generator: Launchpad (build 17196)\n"
19
21
20−#: plugins/LightDM/Greeter.cpp:129
22+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
23msgid "Password: "
22msgstr ""
24msgstr ""
23
25
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
26+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
27+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
28msgid "Pin shortcut"
27msgstr ""
29msgstr ""
28
30
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
31+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
32msgid "Unpin shortcut"
31msgstr ""
33msgstr ""
32
34
35+#: qml/Components/DelayedLockscreen.qml:47
36+msgid "Device Locked"
37+msgstr ""
38+
39+#: qml/Components/DelayedLockscreen.qml:62
40+msgid "You have been locked out due to too many failed passphrase attempts."
41+msgstr ""
42+
43+#: qml/Components/DelayedLockscreen.qml:63
44+msgid "You have been locked out due to too many failed passcode attempts."
45+msgstr ""
46+
47+#: qml/Components/DelayedLockscreen.qml:72
48+#, qt-format
49+msgid "Please wait %1 minute and then try again…"
50+msgid_plural "Please wait %1 minutes and then try again…"
51+msgstr[0] ""
52+msgstr[1] ""
53+
33#: qml/Components/Dialogs.qml:70
54#: qml/Components/Dialogs.qml:70
34msgid "Log out"
55msgid "Log out"
35msgstr ""
56msgstr ""
@@ -74,11 +95,15 @@ msgid ""
74"to power off?"
95"to power off?"
75msgstr ""
96msgstr ""
76
97
77−#: qml/Components/Dialogs.qml:144
98+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
99msgid "Power off"
79msgstr ""
100msgstr ""
80
101
81−#: qml/Components/Dialogs.qml:162
102+#: qml/Components/Dialogs.qml:157
103+msgid "Restart"
104+msgstr ""
105+
106+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
107msgid "Cancel"
83msgstr ""
108msgstr ""
84
109
@@ -128,60 +153,44 @@ msgid ""
128"phone<br><br>Tap on the screen to start"
153"phone<br><br>Tap on the screen to start"
129msgstr ""
154msgstr ""
130
155
131−#: qml/Components/Lockscreen.qml:167
156+#: qml/Components/Lockscreen.qml:220
132−msgid "Please wait"
133−msgstr ""
134−
135−#: qml/Components/Lockscreen.qml:172
136−msgid "Too many incorrect attempts"
137−msgstr ""
138−
139−#: qml/Components/Lockscreen.qml:206
140msgid "Emergency Call"
157msgid "Emergency Call"
141msgstr ""
158msgstr ""
142
159
143−#: qml/Components/Lockscreen.qml:226
160+#: qml/Components/Lockscreen.qml:252
144msgid "OK"
161msgid "OK"
145msgstr ""
162msgstr ""
146
163
147−#: qml/Components/PassphraseLockscreen.qml:61
148−#, qt-format
149−msgid "Hello %1"
150−msgstr ""
151−
152−#: qml/Components/PassphraseLockscreen.qml:61
153−msgid "Hello"
154−msgstr ""
155−
156−#: qml/Dash/GenericScopeView.qml:361
164+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
157msgid "See less"
165msgid "See less"
158msgstr ""
166msgstr ""
159
167
160−#: qml/Dash/GenericScopeView.qml:361
168+#: qml/Dash/GenericScopeView.qml:434
161msgid "See all"
169msgid "See all"
162msgstr ""
170msgstr ""
163
171
172+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
164−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
173+#: qml/Panel/SearchIndicator.qml:27
165msgid "Search"
174msgid "Search"
166msgstr ""
175msgstr ""
167
176
168−#: qml/Dash/PageHeader.qml:270
177+#: qml/Dash/PageHeader.qml:268
169msgid "Settings"
178msgid "Settings"
170msgstr ""
179msgstr ""
171
180
172−#: qml/Dash/PageHeader.qml:279
181+#: qml/Dash/PageHeader.qml:275
173msgid "Remove from Favorites"
182msgid "Remove from Favorites"
174msgstr ""
183msgstr ""
175
184
176−#: qml/Dash/PageHeader.qml:279
185+#: qml/Dash/PageHeader.qml:275
177msgid "Add to Favorites"
186msgid "Add to Favorites"
178msgstr ""
187msgstr ""
179
188
180−#: qml/Dash/Previews/PreviewActionCombo.qml:34
189+#: qml/Dash/Previews/PreviewActionCombo.qml:35
181msgid "More..."
190msgid "More..."
182msgstr ""
191msgstr ""
183
192
184−#: qml/Dash/Previews/PreviewActionCombo.qml:34
193+#: qml/Dash/Previews/PreviewActionCombo.qml:35
185msgid "Less..."
194msgid "Less..."
186msgstr ""
195msgstr ""
187
196
@@ -197,15 +206,23 @@ msgstr ""
197msgid "Send"
206msgid "Send"
198msgstr ""
207msgstr ""
199
208
209+#: qml/Dash/PullToRefreshScopeStyle.qml:55
210+msgid "Pull to refresh…"
211+msgstr ""
212+
213+#: qml/Dash/PullToRefreshScopeStyle.qml:60
214+msgid "Release to refresh…"
215+msgstr ""
216+
200−#: qml/Dash/ScopesOverview.qml:201
217+#: qml/Dash/ScopesOverview.qml:206
201−msgid "Manage Dash"
218+msgid "Manage Scopes"
202msgstr ""
219msgstr ""
203
220
204−#: qml/Dash/ScopesOverview.qml:408
221+#: qml/Dash/ScopesOverview.qml:428
205msgid "Done"
222msgid "Done"
206msgstr ""
223msgstr ""
207
224
208−#: qml/Dash/ScopesOverview.qml:434
225+#: qml/Dash/ScopesOverview.qml:454
209msgid "Store"
226msgid "Store"
210msgstr ""
227msgstr ""
211
228
@@ -218,10 +235,10 @@ msgid "All"
218msgstr ""
235msgstr ""
219
236
220#: qml/Greeter/Greeter.qml:157
237#: qml/Greeter/Greeter.qml:157
221−msgid "Swipe to unlock"
238+msgid "Unlock"
222msgstr ""
239msgstr ""
223
240
224−#: qml/Hud/HudParametrizedActionsPage.qml:132
241+#: qml/Hud/HudParametrizedActionsPage.qml:139
225msgid "Confirm"
242msgid "Confirm"
226msgstr ""
243msgstr ""
227
244
@@ -241,18 +258,10 @@ msgstr ""
241msgid "Speaking..."
258msgid "Speaking..."
242msgstr ""
259msgstr ""
243
260
244−#: qml/Notifications/NotificationMenuItemFactory.qml:105
261+#: qml/Notifications/NotificationMenuItemFactory.qml:116
245msgid "Show password"
262msgid "Show password"
246msgstr ""
263msgstr ""
247
264
248−#: qml/Notifications/NotificationMenuItemFactory.qml:120
249−msgid "Enter SIM PIN"
250−msgstr ""
251−
252−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
253−msgid "Sorry, incorrect PIN"
254−msgstr ""
255−
256#: qml/Panel/ActiveCallHint.qml:77
265#: qml/Panel/ActiveCallHint.qml:77
257msgid "Tap to return to call..."
266msgid "Tap to return to call..."
258msgstr ""
267msgstr ""
@@ -261,27 +270,31 @@ msgstr ""
261msgid "Conference"
270msgid "Conference"
262msgstr ""
271msgstr ""
263
272
264−#: qml/Panel/Indicators/MenuItemFactory.qml:651
273+#: qml/Panel/Indicators/MenuItemFactory.qml:600
274+msgid "Nothing is playing"
275+msgstr ""
276+
277+#: qml/Panel/Indicators/MenuItemFactory.qml:748
265msgid "In queue…"
278msgid "In queue…"
266msgstr ""
279msgstr ""
267
280
268−#: qml/Panel/Indicators/MenuItemFactory.qml:655
281+#: qml/Panel/Indicators/MenuItemFactory.qml:752
269msgid "Downloading"
282msgid "Downloading"
270msgstr ""
283msgstr ""
271
284
272−#: qml/Panel/Indicators/MenuItemFactory.qml:657
285+#: qml/Panel/Indicators/MenuItemFactory.qml:754
273msgid "Paused, tap to resume"
286msgid "Paused, tap to resume"
274msgstr ""
287msgstr ""
275
288
276−#: qml/Panel/Indicators/MenuItemFactory.qml:659
289+#: qml/Panel/Indicators/MenuItemFactory.qml:756
277msgid "Canceled"
290msgid "Canceled"
278msgstr ""
291msgstr ""
279
292
280−#: qml/Panel/Indicators/MenuItemFactory.qml:661
293+#: qml/Panel/Indicators/MenuItemFactory.qml:758
281msgid "Finished"
294msgid "Finished"
282msgstr ""
295msgstr ""
283
296
284−#: qml/Panel/Indicators/MenuItemFactory.qml:663
297+#: qml/Panel/Indicators/MenuItemFactory.qml:760
285msgid "Failed, tap to retry"
298msgid "Failed, tap to retry"
286msgstr ""
299msgstr ""
287
300
@@ -293,51 +306,55 @@ msgstr ""
293msgid "Roaming"
306msgid "Roaming"
294msgstr ""
307msgstr ""
295
308
296−#: qml/Shell.qml:266
309+#: qml/Shell.qml:346
297−msgid "Enter your passphrase"
310+msgid "Enter passphrase"
298msgstr ""
311msgstr ""
299
312
300−#: qml/Shell.qml:267
313+#: qml/Shell.qml:347
301msgid "Sorry, incorrect passphrase"
314msgid "Sorry, incorrect passphrase"
302msgstr ""
315msgstr ""
303
316
304−#: qml/Shell.qml:282
317+#: qml/Shell.qml:348
318+msgid "Please re-enter"
319+msgstr ""
320+
321+#: qml/Shell.qml:350
305−msgid "Enter your passcode"
322+msgid "Enter passcode"
306msgstr ""
323msgstr ""
307
324
308−#: qml/Shell.qml:283
325+#: qml/Shell.qml:351
309msgid "Sorry, incorrect passcode"
326msgid "Sorry, incorrect passcode"
310msgstr ""
327msgstr ""
311
328
312−#: qml/Shell.qml:273
329+#: qml/Shell.qml:354
313#, qt-format
330#, qt-format
314−msgid "Enter your %1"
331+msgid "Enter %1"
315msgstr ""
332msgstr ""
316
333
317−#: qml/Shell.qml:274
334+#: qml/Shell.qml:355
318#, qt-format
335#, qt-format
319msgid "Sorry, incorrect %1"
336msgid "Sorry, incorrect %1"
320msgstr ""
337msgstr ""
321
338
322−#: qml/Shell.qml:310
339+#: qml/Shell.qml:390
323msgid "Sorry, incorrect passphrase."
340msgid "Sorry, incorrect passphrase."
324msgstr ""
341msgstr ""
325
342
326−#: qml/Shell.qml:311
343+#: qml/Shell.qml:391
327msgid "Sorry, incorrect passcode."
344msgid "Sorry, incorrect passcode."
328msgstr ""
345msgstr ""
329
346
330−#: qml/Shell.qml:312
347+#: qml/Shell.qml:392
331msgid "This will be your last attempt."
348msgid "This will be your last attempt."
332msgstr ""
349msgstr ""
333
350
334−#: qml/Shell.qml:314
351+#: qml/Shell.qml:394
335msgid ""
352msgid ""
336"If passphrase is entered incorrectly, your phone will conduct a factory "
353"If passphrase is entered incorrectly, your phone will conduct a factory "
337"reset and all personal data will be deleted."
354"reset and all personal data will be deleted."
338msgstr ""
355msgstr ""
339
356
340−#: qml/Shell.qml:315
357+#: qml/Shell.qml:395
341msgid ""
358msgid ""
342"If passcode is entered incorrectly, your phone will conduct a factory reset "
359"If passcode is entered incorrectly, your phone will conduct a factory reset "
343"and all personal data will be deleted."
360"and all personal data will be deleted."
po/ca.po+121−101
@@ -7,78 +7,108 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11−"PO-Revision-Date: 2014-08-27 14:23+0000\n"
11+"PO-Revision-Date: 2014-10-07 10:51+0000\n"
12"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
12"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
13"Language-Team: Catalan <ca@li.org>\n"
13"Language-Team: Catalan <ca@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18+"X-Launchpad-Export-Date: 2014-10-09 06:36+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
19+"X-Generator: Launchpad (build 17196)\n"
19
20
20−#: plugins/LightDM/Greeter.cpp:129
21+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
22msgid "Password: "
22msgstr "Contrasenya: "
23msgstr "Contrasenya: "
23
24
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
27msgid "Pin shortcut"
27msgstr "Enganxa la drecera"
28msgstr "Enganxa la drecera"
28
29
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
31msgid "Unpin shortcut"
31msgstr "Desenganxa la drecera"
32msgstr "Desenganxa la drecera"
32
33
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr "Dispositiu bloquejat"
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr ""
41+"Se us ha bloquejat l'accés al dispositiu. Heu sobrepassat el nombre "
42+"d'intents d'introducció de la contrasenya."
43+
44+#: qml/Components/DelayedLockscreen.qml:63
45+msgid "You have been locked out due to too many failed passcode attempts."
46+msgstr ""
47+"Se us ha bloquejat l'accés al dispositiu. Heu sobrepassat el nombre "
48+"d'intents d'introducció del codi d'accés."
49+
50+#: qml/Components/DelayedLockscreen.qml:72
51+#, qt-format
52+msgid "Please wait %1 minute and then try again…"
53+msgid_plural "Please wait %1 minutes and then try again…"
54+msgstr[0] "Espereu %1 minut i torneu-ho a intentar..."
55+msgstr[1] "Espereu %1 minuts i torneu-ho a intentar..."
56+
33#: qml/Components/Dialogs.qml:70
57#: qml/Components/Dialogs.qml:70
34msgid "Log out"
58msgid "Log out"
35−msgstr ""
59+msgstr "Surt"
36
60
37#: qml/Components/Dialogs.qml:71
61#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
62msgid "Are you sure you want to log out?"
39−msgstr ""
63+msgstr "Segur que voleu sortir?"
40
64
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
65#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
66#: qml/Components/Dialogs.qml:122
43msgid "No"
67msgid "No"
44−msgstr ""
68+msgstr "No"
45
69
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
70#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
71#: qml/Components/Dialogs.qml:129
48msgid "Yes"
72msgid "Yes"
49−msgstr ""
73+msgstr "Sí"
50
74
51#: qml/Components/Dialogs.qml:94
75#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
76msgid "Shut down"
53−msgstr ""
77+msgstr "Apaga"
54
78
55#: qml/Components/Dialogs.qml:95
79#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
80msgid "Are you sure you want to shut down?"
57−msgstr ""
81+msgstr "Segur que voleu apagar?"
58
82
59#: qml/Components/Dialogs.qml:119
83#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
84msgid "Reboot"
61−msgstr ""
85+msgstr "Reinicia"
62
86
63#: qml/Components/Dialogs.qml:120
87#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
88msgid "Are you sure you want to reboot?"
65−msgstr ""
89+msgstr "Segur que voleu reiniciar?"
66
90
67#: qml/Components/Dialogs.qml:144
91#: qml/Components/Dialogs.qml:144
68msgid "Power"
92msgid "Power"
69−msgstr ""
93+msgstr "Energia"
70
94
71#: qml/Components/Dialogs.qml:145
95#: qml/Components/Dialogs.qml:145
72msgid ""
96msgid ""
73"Are you sure you would like\n"
97"Are you sure you would like\n"
74"to power off?"
98"to power off?"
75msgstr ""
99msgstr ""
100+"Segur que voleu\n"
101+"apagar?"
76
102
77−#: qml/Components/Dialogs.qml:144
103+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
104msgid "Power off"
79−msgstr "Apaga'l"
105+msgstr "Apaga"
80
106
81−#: qml/Components/Dialogs.qml:162
107+#: qml/Components/Dialogs.qml:157
108+msgid "Restart"
109+msgstr "Reinicia"
110+
111+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
112msgid "Cancel"
83msgstr "Cancel·la"
113msgstr "Cancel·la"
84
114
@@ -136,60 +166,44 @@ msgstr ""
136"Ja heu après com utilitzar els gestos de les vores per fer servir el "
166"Ja heu après com utilitzar els gestos de les vores per fer servir el "
137"telèfon<br><br>Feu un toc a la pantalla per començar"
167"telèfon<br><br>Feu un toc a la pantalla per començar"
138
168
139−#: qml/Components/Lockscreen.qml:167
169+#: qml/Components/Lockscreen.qml:220
140−msgid "Please wait"
141−msgstr "Espereu"
142−
143−#: qml/Components/Lockscreen.qml:172
144−msgid "Too many incorrect attempts"
145−msgstr "Massa intents incorrectes"
146−
147−#: qml/Components/Lockscreen.qml:206
148msgid "Emergency Call"
170msgid "Emergency Call"
149msgstr "Trucada d'emergència"
171msgstr "Trucada d'emergència"
150
172
151−#: qml/Components/Lockscreen.qml:226
173+#: qml/Components/Lockscreen.qml:252
152msgid "OK"
174msgid "OK"
153msgstr "D'acord"
175msgstr "D'acord"
154
176
155−#: qml/Components/PassphraseLockscreen.qml:61
156−#, qt-format
157−msgid "Hello %1"
158−msgstr "Hola %1"
159−
160−#: qml/Components/PassphraseLockscreen.qml:61
161−msgid "Hello"
162−msgstr "Hola"
163−
164−#: qml/Dash/GenericScopeView.qml:361
177+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
165msgid "See less"
178msgid "See less"
166msgstr "Mostra'n menys"
179msgstr "Mostra'n menys"
167
180
168−#: qml/Dash/GenericScopeView.qml:361
181+#: qml/Dash/GenericScopeView.qml:434
169msgid "See all"
182msgid "See all"
170msgstr "Mostra-ho tot"
183msgstr "Mostra-ho tot"
171
184
185+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
172−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
186+#: qml/Panel/SearchIndicator.qml:27
173msgid "Search"
187msgid "Search"
174msgstr "Cerca"
188msgstr "Cerca"
175
189
176−#: qml/Dash/PageHeader.qml:270
190+#: qml/Dash/PageHeader.qml:268
177msgid "Settings"
191msgid "Settings"
178−msgstr ""
192+msgstr "Paràmetres"
179
193
180−#: qml/Dash/PageHeader.qml:279
194+#: qml/Dash/PageHeader.qml:275
181msgid "Remove from Favorites"
195msgid "Remove from Favorites"
182−msgstr ""
196+msgstr "Suprimeix dels preferits"
183
197
184−#: qml/Dash/PageHeader.qml:279
198+#: qml/Dash/PageHeader.qml:275
185msgid "Add to Favorites"
199msgid "Add to Favorites"
186−msgstr ""
200+msgstr "Afegeix als preferits"
187
201
188−#: qml/Dash/Previews/PreviewActionCombo.qml:34
202+#: qml/Dash/Previews/PreviewActionCombo.qml:35
189msgid "More..."
203msgid "More..."
190msgstr "Més..."
204msgstr "Més..."
191
205
192−#: qml/Dash/Previews/PreviewActionCombo.qml:34
206+#: qml/Dash/Previews/PreviewActionCombo.qml:35
193msgid "Less..."
207msgid "Less..."
194msgstr "Menys..."
208msgstr "Menys..."
195
209
@@ -205,15 +219,23 @@ msgstr "Afegiu una ressenya"
205msgid "Send"
219msgid "Send"
206msgstr "Envia"
220msgstr "Envia"
207
221
222+#: qml/Dash/PullToRefreshScopeStyle.qml:55
223+msgid "Pull to refresh…"
224+msgstr "Estireu per actualitzar..."
225+
226+#: qml/Dash/PullToRefreshScopeStyle.qml:60
227+msgid "Release to refresh…"
228+msgstr "Deixeu anar per actualitzar..."
229+
208−#: qml/Dash/ScopesOverview.qml:201
230+#: qml/Dash/ScopesOverview.qml:206
209−msgid "Manage Dash"
231+msgid "Manage Scopes"
210−msgstr "Gestiona el tauler"
232+msgstr "Gestioneu les lents"
211
233
212−#: qml/Dash/ScopesOverview.qml:408
234+#: qml/Dash/ScopesOverview.qml:428
213msgid "Done"
235msgid "Done"
214msgstr "Fet"
236msgstr "Fet"
215
237
216−#: qml/Dash/ScopesOverview.qml:434
238+#: qml/Dash/ScopesOverview.qml:454
217msgid "Store"
239msgid "Store"
218msgstr "Botiga"
240msgstr "Botiga"
219
241
@@ -226,10 +248,10 @@ msgid "All"
226msgstr "Totes"
248msgstr "Totes"
227
249
228#: qml/Greeter/Greeter.qml:157
250#: qml/Greeter/Greeter.qml:157
229−msgid "Swipe to unlock"
251+msgid "Unlock"
230−msgstr "Feu lliscar el dit per desbloquejar"
252+msgstr "Desbloca"
231
253
232−#: qml/Hud/HudParametrizedActionsPage.qml:132
254+#: qml/Hud/HudParametrizedActionsPage.qml:139
233msgid "Confirm"
255msgid "Confirm"
234msgstr "Confirma"
256msgstr "Confirma"
235
257
@@ -249,18 +271,10 @@ msgstr "Parleu..."
249msgid "Speaking..."
271msgid "Speaking..."
250msgstr "S'està parlant..."
272msgstr "S'està parlant..."
251
273
252−#: qml/Notifications/NotificationMenuItemFactory.qml:105
274+#: qml/Notifications/NotificationMenuItemFactory.qml:116
253msgid "Show password"
275msgid "Show password"
254msgstr "Mostra la contrasenya"
276msgstr "Mostra la contrasenya"
255
277
256−#: qml/Notifications/NotificationMenuItemFactory.qml:120
257−msgid "Enter SIM PIN"
258−msgstr "Introduïu el PIN de la tarjeta SIM"
259−
260−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
261−msgid "Sorry, incorrect PIN"
262−msgstr "El PIN no és correcte"
263−
264#: qml/Panel/ActiveCallHint.qml:77
278#: qml/Panel/ActiveCallHint.qml:77
265msgid "Tap to return to call..."
279msgid "Tap to return to call..."
266msgstr "Feu un toc per tornar a la trucada..."
280msgstr "Feu un toc per tornar a la trucada..."
@@ -269,27 +283,31 @@ msgstr "Feu un toc per tornar a la trucada..."
269msgid "Conference"
283msgid "Conference"
270msgstr "Conferència"
284msgstr "Conferència"
271
285
272−#: qml/Panel/Indicators/MenuItemFactory.qml:651
286+#: qml/Panel/Indicators/MenuItemFactory.qml:600
287+msgid "Nothing is playing"
288+msgstr "No s'està reproduint res"
289+
290+#: qml/Panel/Indicators/MenuItemFactory.qml:748
273msgid "In queue…"
291msgid "In queue…"
274msgstr "A la cua..."
292msgstr "A la cua..."
275
293
276−#: qml/Panel/Indicators/MenuItemFactory.qml:655
294+#: qml/Panel/Indicators/MenuItemFactory.qml:752
277msgid "Downloading"
295msgid "Downloading"
278msgstr "S'està baixant"
296msgstr "S'està baixant"
279
297
280−#: qml/Panel/Indicators/MenuItemFactory.qml:657
298+#: qml/Panel/Indicators/MenuItemFactory.qml:754
281msgid "Paused, tap to resume"
299msgid "Paused, tap to resume"
282msgstr "En pausa, feu un toc per continuar"
300msgstr "En pausa, feu un toc per continuar"
283
301
284−#: qml/Panel/Indicators/MenuItemFactory.qml:659
302+#: qml/Panel/Indicators/MenuItemFactory.qml:756
285msgid "Canceled"
303msgid "Canceled"
286msgstr "S'ha cancel·lat"
304msgstr "S'ha cancel·lat"
287
305
288−#: qml/Panel/Indicators/MenuItemFactory.qml:661
306+#: qml/Panel/Indicators/MenuItemFactory.qml:758
289msgid "Finished"
307msgid "Finished"
290msgstr "S'ha finalitzat"
308msgstr "S'ha finalitzat"
291
309
292−#: qml/Panel/Indicators/MenuItemFactory.qml:663
310+#: qml/Panel/Indicators/MenuItemFactory.qml:760
293msgid "Failed, tap to retry"
311msgid "Failed, tap to retry"
294msgstr "Ha fallat, feu un toc per tornar-ho a intentar"
312msgstr "Ha fallat, feu un toc per tornar-ho a intentar"
295
313
@@ -301,45 +319,49 @@ msgstr "Desbloca la SIM"
301msgid "Roaming"
319msgid "Roaming"
302msgstr "Itinerància"
320msgstr "Itinerància"
303
321
304−#: qml/Shell.qml:266
322+#: qml/Shell.qml:346
305−msgid "Enter your passphrase"
323+msgid "Enter passphrase"
306−msgstr "Escriviu la contrasenya"
324+msgstr "Introduïu la contrasenya"
307
325
308−#: qml/Shell.qml:267
326+#: qml/Shell.qml:347
309msgid "Sorry, incorrect passphrase"
327msgid "Sorry, incorrect passphrase"
310msgstr "La contrasenya no és correcta"
328msgstr "La contrasenya no és correcta"
311
329
312−#: qml/Shell.qml:282
330+#: qml/Shell.qml:348
331+msgid "Please re-enter"
332+msgstr "Torneu-ho a introduir"
333+
334+#: qml/Shell.qml:350
313−msgid "Enter your passcode"
335+msgid "Enter passcode"
314−msgstr ""
336+msgstr "Introduïu el codi d'accés"
315
337
316−#: qml/Shell.qml:283
338+#: qml/Shell.qml:351
317msgid "Sorry, incorrect passcode"
339msgid "Sorry, incorrect passcode"
318−msgstr ""
340+msgstr "El codi d'accés no és correcte"
319
341
320−#: qml/Shell.qml:273
342+#: qml/Shell.qml:354
321#, qt-format
343#, qt-format
322−msgid "Enter your %1"
344+msgid "Enter %1"
323−msgstr "Introduïu la %1"
345+msgstr "Introduïu: %1"
324
346
325−#: qml/Shell.qml:274
347+#: qml/Shell.qml:355
326#, qt-format
348#, qt-format
327msgid "Sorry, incorrect %1"
349msgid "Sorry, incorrect %1"
328msgstr "Incorrecte (%1)"
350msgstr "Incorrecte (%1)"
329
351
330−#: qml/Shell.qml:310
352+#: qml/Shell.qml:390
331msgid "Sorry, incorrect passphrase."
353msgid "Sorry, incorrect passphrase."
332msgstr "La contrasenya és incorrecta"
354msgstr "La contrasenya és incorrecta"
333
355
334−#: qml/Shell.qml:311
356+#: qml/Shell.qml:391
335msgid "Sorry, incorrect passcode."
357msgid "Sorry, incorrect passcode."
336−msgstr "La clau és incorrecta"
358+msgstr "El codi d'accés no és correcte"
337
359
338−#: qml/Shell.qml:312
360+#: qml/Shell.qml:392
339msgid "This will be your last attempt."
361msgid "This will be your last attempt."
340msgstr "Aquest serà el darrer intent."
362msgstr "Aquest serà el darrer intent."
341
363
342−#: qml/Shell.qml:314
364+#: qml/Shell.qml:394
343msgid ""
365msgid ""
344"If passphrase is entered incorrectly, your phone will conduct a factory "
366"If passphrase is entered incorrectly, your phone will conduct a factory "
345"reset and all personal data will be deleted."
367"reset and all personal data will be deleted."
@@ -348,19 +370,17 @@ msgstr ""
348"reinicialitzarà a l'estat de fàbrica i se suprimiran totes les dades "
370"reinicialitzarà a l'estat de fàbrica i se suprimiran totes les dades "
349"personals."
371"personals."
350
372
351−#: qml/Shell.qml:315
373+#: qml/Shell.qml:395
352msgid ""
374msgid ""
353"If passcode is entered incorrectly, your phone will conduct a factory reset "
375"If passcode is entered incorrectly, your phone will conduct a factory reset "
354"and all personal data will be deleted."
376"and all personal data will be deleted."
355msgstr ""
377msgstr ""
356−"Si la clau s'introdueix de manera incorrecta, el telèfon es reinicialitzarà "
378+"Si el codi d'accés s'introdueix de manera incorrecta, el telèfon es "
357−"a l'estat de fàbrica i se suprimiran totes les dades personals."
379+"reinicialitzarà a l'estat de fàbrica i se suprimiran totes les dades "
358−
380+"personals."
359−#~ msgid "Are you sure you would like to turn power off?"
360−#~ msgstr "Segur que voleu apagar el dispositiu?"
361
381
362−#~ msgid "Restart"
382+#~ msgid "Sorry, incorrect PIN"
363−#~ msgstr "Reinicia'l"
383+#~ msgstr "El PIN no és correcte"
364
384
365−#~ msgid "Enter your PIN"
385+#~ msgid "Enter SIM PIN"
366−#~ msgstr "Escriviu el PIN"
386+#~ msgstr "Introduïu el PIN de la targeta SIM"
po/ca@valencia.ponew file+380
@@ -0,0 +1,380 @@
1+# Catalan translation for unity8
2+# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
3+# This file is distributed under the same license as the unity8 package.
4+# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
5+#
6+msgid ""
7+msgstr ""
8+"Project-Id-Version: unity8\n"
9+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11+"PO-Revision-Date: 2014-10-15 14:39+0000\n"
12+"Last-Translator: Pau Iranzo <Unknown>\n"
13+"Language-Team: Catalan <ca@li.org>\n"
14+"MIME-Version: 1.0\n"
15+"Content-Type: text/plain; charset=UTF-8\n"
16+"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
18+"X-Launchpad-Export-Date: 2014-10-16 05:44+0000\n"
19+"X-Generator: Launchpad (build 17196)\n"
20+
21+#: plugins/LightDM/Greeter.cpp:130
22+msgid "Password: "
23+msgstr "Contrasenya: "
24+
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
27+msgid "Pin shortcut"
28+msgstr "Apega la drecera"
29+
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
31+msgid "Unpin shortcut"
32+msgstr "Desenganxa la drecera"
33+
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr "Dispositiu bloquejat"
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr ""
41+"Se vos ha bloquejat l'accés al dispositiu. Heu sobrepassat el nombre "
42+"d'intents d'introducció de la contrasenya."
43+
44+#: qml/Components/DelayedLockscreen.qml:63
45+msgid "You have been locked out due to too many failed passcode attempts."
46+msgstr ""
47+"Se vos ha bloquejat l'accés al dispositiu. Heu sobrepassat el nombre "
48+"d'intents d'introducció del codi d'accés."
49+
50+#: qml/Components/DelayedLockscreen.qml:72
51+#, qt-format
52+msgid "Please wait %1 minute and then try again…"
53+msgid_plural "Please wait %1 minutes and then try again…"
54+msgstr[0] "Espereu %1 minut i torneu-ho a intentar..."
55+msgstr[1] "Espereu %1 minuts i torneu-ho a intentar..."
56+
57+#: qml/Components/Dialogs.qml:70
58+msgid "Log out"
59+msgstr "Ix"
60+
61+#: qml/Components/Dialogs.qml:71
62+msgid "Are you sure you want to log out?"
63+msgstr "Segur que voleu eixir?"
64+
65+#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
66+#: qml/Components/Dialogs.qml:122
67+msgid "No"
68+msgstr "No"
69+
70+#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
71+#: qml/Components/Dialogs.qml:129
72+msgid "Yes"
73+msgstr "Sí"
74+
75+#: qml/Components/Dialogs.qml:94
76+msgid "Shut down"
77+msgstr "Apaga"
78+
79+#: qml/Components/Dialogs.qml:95
80+msgid "Are you sure you want to shut down?"
81+msgstr "Segur que voleu apagar?"
82+
83+#: qml/Components/Dialogs.qml:119
84+msgid "Reboot"
85+msgstr "Reinicia"
86+
87+#: qml/Components/Dialogs.qml:120
88+msgid "Are you sure you want to reboot?"
89+msgstr "Segur que voleu reiniciar?"
90+
91+#: qml/Components/Dialogs.qml:144
92+msgid "Power"
93+msgstr "Energia"
94+
95+#: qml/Components/Dialogs.qml:145
96+msgid ""
97+"Are you sure you would like\n"
98+"to power off?"
99+msgstr ""
100+"Segur que voleu\n"
101+"apagar?"
102+
103+#: qml/Components/Dialogs.qml:147
104+msgid "Power off"
105+msgstr "Apaga"
106+
107+#: qml/Components/Dialogs.qml:157
108+msgid "Restart"
109+msgstr "Reinicia"
110+
111+#: qml/Components/Dialogs.qml:167
112+msgid "Cancel"
113+msgstr "Cancel·la"
114+
115+#: qml/Components/EdgeDemoOverlay.qml:151
116+msgid "Skip intro"
117+msgstr "Omet la introducció"
118+
119+#: qml/Components/EdgeDemo.qml:112
120+msgid "Right edge"
121+msgstr "Vora dreta"
122+
123+#: qml/Components/EdgeDemo.qml:113
124+msgid "Try swiping from the right edge to unlock the phone"
125+msgstr ""
126+"Proveu de lliscar el dit des de la vora dreta per desblocar el telèfon"
127+
128+#: qml/Components/EdgeDemo.qml:144
129+msgid "Top edge"
130+msgstr "Vora superior"
131+
132+#: qml/Components/EdgeDemo.qml:145
133+msgid "Try swiping from the top edge to access the indicators"
134+msgstr ""
135+"Proveu de lliscar el dit des de la vora superior per accedir als indicadors"
136+
137+#: qml/Components/EdgeDemo.qml:170
138+msgid "Close"
139+msgstr "Tanca"
140+
141+#: qml/Components/EdgeDemo.qml:171
142+msgid "Swipe up again to close the settings screen"
143+msgstr ""
144+"Llisqueu el dit cap amunt una altra vegada per tancar la pantalla de "
145+"configuració"
146+
147+#: qml/Components/EdgeDemo.qml:198
148+msgid "Left edge"
149+msgstr "Vora esquerra"
150+
151+#: qml/Components/EdgeDemo.qml:199
152+msgid "Swipe from the left to reveal the launcher for quick access to apps"
153+msgstr ""
154+"Llisqueu el dit des de la vora esquerra per mostrar el llançador i accedir "
155+"ràpidament a les aplicacions"
156+
157+#: qml/Components/EdgeDemo.qml:226
158+msgid "Well done"
159+msgstr "Enhorabona!"
160+
161+#: qml/Components/EdgeDemo.qml:227
162+msgid ""
163+"You have now mastered the edge gestures and can start using the "
164+"phone<br><br>Tap on the screen to start"
165+msgstr ""
166+"Ja heu aprés com utilitzar els gestos de les vores per fer servir el "
167+"telèfon<br><br>Feu un toc a la pantalla per començar"
168+
169+#: qml/Components/Lockscreen.qml:220
170+msgid "Emergency Call"
171+msgstr "Cridada d'emergència"
172+
173+#: qml/Components/Lockscreen.qml:252
174+msgid "OK"
175+msgstr "D'acord"
176+
177+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
178+msgid "See less"
179+msgstr "Mostra'n menys"
180+
181+#: qml/Dash/GenericScopeView.qml:434
182+msgid "See all"
183+msgstr "Mostra-ho tot"
184+
185+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
186+#: qml/Panel/SearchIndicator.qml:27
187+msgid "Search"
188+msgstr "Cerca"
189+
190+#: qml/Dash/PageHeader.qml:268
191+msgid "Settings"
192+msgstr "Paràmetres"
193+
194+#: qml/Dash/PageHeader.qml:275
195+msgid "Remove from Favorites"
196+msgstr "Suprimeix dels preferits"
197+
198+#: qml/Dash/PageHeader.qml:275
199+msgid "Add to Favorites"
200+msgstr "Afig als preferits"
201+
202+#: qml/Dash/Previews/PreviewActionCombo.qml:35
203+msgid "More..."
204+msgstr "Més..."
205+
206+#: qml/Dash/Previews/PreviewActionCombo.qml:35
207+msgid "Less..."
208+msgstr "Menys..."
209+
210+#: qml/Dash/Previews/PreviewRatingInput.qml:81
211+msgid "Rate this"
212+msgstr "Puntueu-ho"
213+
214+#: qml/Dash/Previews/PreviewRatingInput.qml:126
215+msgid "Add a review"
216+msgstr "Afegiu una ressenya"
217+
218+#: qml/Dash/Previews/PreviewRatingInput.qml:166
219+msgid "Send"
220+msgstr "Envia"
221+
222+#: qml/Dash/PullToRefreshScopeStyle.qml:55
223+msgid "Pull to refresh…"
224+msgstr "Estireu per actualitzar..."
225+
226+#: qml/Dash/PullToRefreshScopeStyle.qml:60
227+msgid "Release to refresh…"
228+msgstr "Deixeu anar per actualitzar..."
229+
230+#: qml/Dash/ScopesOverview.qml:206
231+msgid "Manage Scopes"
232+msgstr "Gestioneu les lents"
233+
234+#: qml/Dash/ScopesOverview.qml:428
235+msgid "Done"
236+msgstr "Fet"
237+
238+#: qml/Dash/ScopesOverview.qml:454
239+msgid "Store"
240+msgstr "Botiga"
241+
242+#: qml/Dash/ScopesOverviewTab.qml:36
243+msgid "Favorites"
244+msgstr "Preferides"
245+
246+#: qml/Dash/ScopesOverviewTab.qml:54
247+msgid "All"
248+msgstr "Totes"
249+
250+#: qml/Greeter/Greeter.qml:157
251+msgid "Unlock"
252+msgstr "Desbloca"
253+
254+#: qml/Hud/HudParametrizedActionsPage.qml:139
255+msgid "Confirm"
256+msgstr "Confirma"
257+
258+#: qml/Hud/Hud.qml:61 qml/Hud/Hud.qml:99 qml/Hud/Hud.qml:372
259+msgid "Type or say a command"
260+msgstr "Escriviu o pronuncieu una orde"
261+
262+#: qml/Hud/Hud.qml:84
263+msgid "Loading. Please Wait..."
264+msgstr "S'està carregant. Espereu-vos un moment..."
265+
266+#: qml/Hud/Hud.qml:89
267+msgid "Speak Now..."
268+msgstr "Parleu..."
269+
270+#: qml/Hud/Hud.qml:94
271+msgid "Speaking..."
272+msgstr "S'està parlant..."
273+
274+#: qml/Notifications/NotificationMenuItemFactory.qml:116
275+msgid "Show password"
276+msgstr "Mostra la contrasenya"
277+
278+#: qml/Panel/ActiveCallHint.qml:77
279+msgid "Tap to return to call..."
280+msgstr "Feu un toc per tornar a la cridada..."
281+
282+#: qml/Panel/ActiveCallHint.qml:90
283+msgid "Conference"
284+msgstr "Conferència"
285+
286+#: qml/Panel/Indicators/MenuItemFactory.qml:600
287+msgid "Nothing is playing"
288+msgstr "No s'està reproduint res"
289+
290+#: qml/Panel/Indicators/MenuItemFactory.qml:748
291+msgid "In queue…"
292+msgstr "A la cua..."
293+
294+#: qml/Panel/Indicators/MenuItemFactory.qml:752
295+msgid "Downloading"
296+msgstr "S'està baixant"
297+
298+#: qml/Panel/Indicators/MenuItemFactory.qml:754
299+msgid "Paused, tap to resume"
300+msgstr "En pausa, feu un toc per continuar"
301+
302+#: qml/Panel/Indicators/MenuItemFactory.qml:756
303+msgid "Canceled"
304+msgstr "S'ha cancel·lat"
305+
306+#: qml/Panel/Indicators/MenuItemFactory.qml:758
307+msgid "Finished"
308+msgstr "S'ha finalitzat"
309+
310+#: qml/Panel/Indicators/MenuItemFactory.qml:760
311+msgid "Failed, tap to retry"
312+msgstr "Ha fallat, feu un toc per tornar-ho a intentar"
313+
314+#: qml/Panel/Indicators/ModemInfoItem.qml:105
315+msgid "Unlock SIM"
316+msgstr "Desbloca la SIM"
317+
318+#: qml/Panel/Indicators/RoamingIndication.qml:27
319+msgid "Roaming"
320+msgstr "Itinerància"
321+
322+#: qml/Shell.qml:346
323+msgid "Enter passphrase"
324+msgstr "Introduïu la contrasenya"
325+
326+#: qml/Shell.qml:347
327+msgid "Sorry, incorrect passphrase"
328+msgstr "La contrasenya no és correcta"
329+
330+#: qml/Shell.qml:348
331+msgid "Please re-enter"
332+msgstr "Torneu-ho a introduir"
333+
334+#: qml/Shell.qml:350
335+msgid "Enter passcode"
336+msgstr "Introduïu el codi d'accés"
337+
338+#: qml/Shell.qml:351
339+msgid "Sorry, incorrect passcode"
340+msgstr "El codi d'accés no és correcte"
341+
342+#: qml/Shell.qml:354
343+#, qt-format
344+msgid "Enter %1"
345+msgstr "Introduïu: %1"
346+
347+#: qml/Shell.qml:355
348+#, qt-format
349+msgid "Sorry, incorrect %1"
350+msgstr "Incorrecte (%1)"
351+
352+#: qml/Shell.qml:390
353+msgid "Sorry, incorrect passphrase."
354+msgstr "La contrasenya és incorrecta"
355+
356+#: qml/Shell.qml:391
357+msgid "Sorry, incorrect passcode."
358+msgstr "El codi d'accés no és correcte"
359+
360+#: qml/Shell.qml:392
361+msgid "This will be your last attempt."
362+msgstr "Este serà el darrer intent."
363+
364+#: qml/Shell.qml:394
365+msgid ""
366+"If passphrase is entered incorrectly, your phone will conduct a factory "
367+"reset and all personal data will be deleted."
368+msgstr ""
369+"Si la contrasenya s'introdueix de manera incorrecta, el telèfon es "
370+"reinicialitzarà a l'estat de fàbrica i se suprimiran totes les dades "
371+"personals."
372+
373+#: qml/Shell.qml:395
374+msgid ""
375+"If passcode is entered incorrectly, your phone will conduct a factory reset "
376+"and all personal data will be deleted."
377+msgstr ""
378+"Si el codi d'accés s'introdueix de manera incorrecta, el telèfon es "
379+"reinicialitzarà a l'estat de fàbrica i se suprimiran totes les dades "
380+"personals."
po/ckb.po+87−71
@@ -7,29 +7,49 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11"PO-Revision-Date: 2014-01-21 11:05+0000\n"
11"PO-Revision-Date: 2014-01-21 11:05+0000\n"
12"Last-Translator: Aras <aras.noori@gmail.com>\n"
12"Last-Translator: Aras <aras.noori@gmail.com>\n"
13"Language-Team: Kurdish (Sorani) <ckb@li.org>\n"
13"Language-Team: Kurdish (Sorani) <ckb@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18+"X-Launchpad-Export-Date: 2014-10-09 06:37+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
19+"X-Generator: Launchpad (build 17196)\n"
19
20
20−#: plugins/LightDM/Greeter.cpp:129
21+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
22msgid "Password: "
22msgstr ""
23msgstr ""
23
24
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
27msgid "Pin shortcut"
27msgstr ""
28msgstr ""
28
29
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
31msgid "Unpin shortcut"
31msgstr ""
32msgstr ""
32
33
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr ""
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr ""
41+
42+#: qml/Components/DelayedLockscreen.qml:63
43+msgid "You have been locked out due to too many failed passcode attempts."
44+msgstr ""
45+
46+#: qml/Components/DelayedLockscreen.qml:72
47+#, qt-format
48+msgid "Please wait %1 minute and then try again…"
49+msgid_plural "Please wait %1 minutes and then try again…"
50+msgstr[0] ""
51+msgstr[1] ""
52+
33#: qml/Components/Dialogs.qml:70
53#: qml/Components/Dialogs.qml:70
34msgid "Log out"
54msgid "Log out"
35msgstr ""
55msgstr ""
@@ -74,11 +94,15 @@ msgid ""
74"to power off?"
94"to power off?"
75msgstr ""
95msgstr ""
76
96
77−#: qml/Components/Dialogs.qml:144
97+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
98msgid "Power off"
79msgstr ""
99msgstr ""
80
100
81−#: qml/Components/Dialogs.qml:162
101+#: qml/Components/Dialogs.qml:157
102+msgid "Restart"
103+msgstr ""
104+
105+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
106msgid "Cancel"
83msgstr ""
107msgstr ""
84
108
@@ -128,60 +152,44 @@ msgid ""
128"phone<br><br>Tap on the screen to start"
152"phone<br><br>Tap on the screen to start"
129msgstr ""
153msgstr ""
130
154
131−#: qml/Components/Lockscreen.qml:167
155+#: qml/Components/Lockscreen.qml:220
132−msgid "Please wait"
133−msgstr ""
134−
135−#: qml/Components/Lockscreen.qml:172
136−msgid "Too many incorrect attempts"
137−msgstr ""
138−
139−#: qml/Components/Lockscreen.qml:206
140msgid "Emergency Call"
156msgid "Emergency Call"
141msgstr "هێڵی فریاگوزاری"
157msgstr "هێڵی فریاگوزاری"
142
158
143−#: qml/Components/Lockscreen.qml:226
159+#: qml/Components/Lockscreen.qml:252
144msgid "OK"
160msgid "OK"
145msgstr ""
161msgstr ""
146
162
147−#: qml/Components/PassphraseLockscreen.qml:61
148−#, qt-format
149−msgid "Hello %1"
150−msgstr "سڵاو %1"
151−
152−#: qml/Components/PassphraseLockscreen.qml:61
153−msgid "Hello"
154−msgstr "سڵاو"
155−
156−#: qml/Dash/GenericScopeView.qml:361
163+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
157msgid "See less"
164msgid "See less"
158msgstr ""
165msgstr ""
159
166
160−#: qml/Dash/GenericScopeView.qml:361
167+#: qml/Dash/GenericScopeView.qml:434
161msgid "See all"
168msgid "See all"
162msgstr ""
169msgstr ""
163
170
171+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
164−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
172+#: qml/Panel/SearchIndicator.qml:27
165msgid "Search"
173msgid "Search"
166msgstr "گەڕان"
174msgstr "گەڕان"
167
175
168−#: qml/Dash/PageHeader.qml:270
176+#: qml/Dash/PageHeader.qml:268
169msgid "Settings"
177msgid "Settings"
170msgstr ""
178msgstr ""
171
179
172−#: qml/Dash/PageHeader.qml:279
180+#: qml/Dash/PageHeader.qml:275
173msgid "Remove from Favorites"
181msgid "Remove from Favorites"
174msgstr ""
182msgstr ""
175
183
176−#: qml/Dash/PageHeader.qml:279
184+#: qml/Dash/PageHeader.qml:275
177msgid "Add to Favorites"
185msgid "Add to Favorites"
178msgstr ""
186msgstr ""
179
187
180−#: qml/Dash/Previews/PreviewActionCombo.qml:34
188+#: qml/Dash/Previews/PreviewActionCombo.qml:35
181msgid "More..."
189msgid "More..."
182msgstr ""
190msgstr ""
183
191
184−#: qml/Dash/Previews/PreviewActionCombo.qml:34
192+#: qml/Dash/Previews/PreviewActionCombo.qml:35
185msgid "Less..."
193msgid "Less..."
186msgstr ""
194msgstr ""
187
195
@@ -197,15 +205,23 @@ msgstr "پێداچوونەوە زۆر بکە"
197msgid "Send"
205msgid "Send"
198msgstr "ناردن"
206msgstr "ناردن"
199
207
208+#: qml/Dash/PullToRefreshScopeStyle.qml:55
209+msgid "Pull to refresh…"
210+msgstr ""
211+
212+#: qml/Dash/PullToRefreshScopeStyle.qml:60
213+msgid "Release to refresh…"
214+msgstr ""
215+
200−#: qml/Dash/ScopesOverview.qml:201
216+#: qml/Dash/ScopesOverview.qml:206
201−msgid "Manage Dash"
217+msgid "Manage Scopes"
202msgstr ""
218msgstr ""
203
219
204−#: qml/Dash/ScopesOverview.qml:408
220+#: qml/Dash/ScopesOverview.qml:428
205msgid "Done"
221msgid "Done"
206msgstr ""
222msgstr ""
207
223
208−#: qml/Dash/ScopesOverview.qml:434
224+#: qml/Dash/ScopesOverview.qml:454
209msgid "Store"
225msgid "Store"
210msgstr ""
226msgstr ""
211
227
@@ -218,10 +234,10 @@ msgid "All"
218msgstr ""
234msgstr ""
219
235
220#: qml/Greeter/Greeter.qml:157
236#: qml/Greeter/Greeter.qml:157
221−msgid "Swipe to unlock"
237+msgid "Unlock"
222msgstr ""
238msgstr ""
223
239
224−#: qml/Hud/HudParametrizedActionsPage.qml:132
240+#: qml/Hud/HudParametrizedActionsPage.qml:139
225msgid "Confirm"
241msgid "Confirm"
226msgstr "پشتڕاستکردنەوە"
242msgstr "پشتڕاستکردنەوە"
227
243
@@ -241,18 +257,10 @@ msgstr "ئێستا قسە بکە"
241msgid "Speaking..."
257msgid "Speaking..."
242msgstr "قسە دەکات..."
258msgstr "قسە دەکات..."
243
259
244−#: qml/Notifications/NotificationMenuItemFactory.qml:105
260+#: qml/Notifications/NotificationMenuItemFactory.qml:116
245msgid "Show password"
261msgid "Show password"
246msgstr "تێپەڕەوشە پیشان بدە"
262msgstr "تێپەڕەوشە پیشان بدە"
247
263
248−#: qml/Notifications/NotificationMenuItemFactory.qml:120
249−msgid "Enter SIM PIN"
250−msgstr ""
251−
252−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
253−msgid "Sorry, incorrect PIN"
254−msgstr ""
255−
256#: qml/Panel/ActiveCallHint.qml:77
264#: qml/Panel/ActiveCallHint.qml:77
257msgid "Tap to return to call..."
265msgid "Tap to return to call..."
258msgstr ""
266msgstr ""
@@ -261,27 +269,31 @@ msgstr ""
261msgid "Conference"
269msgid "Conference"
262msgstr ""
270msgstr ""
263
271
264−#: qml/Panel/Indicators/MenuItemFactory.qml:651
272+#: qml/Panel/Indicators/MenuItemFactory.qml:600
273+msgid "Nothing is playing"
274+msgstr ""
275+
276+#: qml/Panel/Indicators/MenuItemFactory.qml:748
265msgid "In queue…"
277msgid "In queue…"
266msgstr ""
278msgstr ""
267
279
268−#: qml/Panel/Indicators/MenuItemFactory.qml:655
280+#: qml/Panel/Indicators/MenuItemFactory.qml:752
269msgid "Downloading"
281msgid "Downloading"
270msgstr ""
282msgstr ""
271
283
272−#: qml/Panel/Indicators/MenuItemFactory.qml:657
284+#: qml/Panel/Indicators/MenuItemFactory.qml:754
273msgid "Paused, tap to resume"
285msgid "Paused, tap to resume"
274msgstr ""
286msgstr ""
275
287
276−#: qml/Panel/Indicators/MenuItemFactory.qml:659
288+#: qml/Panel/Indicators/MenuItemFactory.qml:756
277msgid "Canceled"
289msgid "Canceled"
278msgstr ""
290msgstr ""
279
291
280−#: qml/Panel/Indicators/MenuItemFactory.qml:661
292+#: qml/Panel/Indicators/MenuItemFactory.qml:758
281msgid "Finished"
293msgid "Finished"
282msgstr ""
294msgstr ""
283
295
284−#: qml/Panel/Indicators/MenuItemFactory.qml:663
296+#: qml/Panel/Indicators/MenuItemFactory.qml:760
285msgid "Failed, tap to retry"
297msgid "Failed, tap to retry"
286msgstr ""
298msgstr ""
287
299
@@ -293,51 +305,55 @@ msgstr ""
293msgid "Roaming"
305msgid "Roaming"
294msgstr ""
306msgstr ""
295
307
296−#: qml/Shell.qml:266
308+#: qml/Shell.qml:346
297−msgid "Enter your passphrase"
309+msgid "Enter passphrase"
298msgstr ""
310msgstr ""
299
311
300−#: qml/Shell.qml:267
312+#: qml/Shell.qml:347
301msgid "Sorry, incorrect passphrase"
313msgid "Sorry, incorrect passphrase"
302msgstr ""
314msgstr ""
303
315
304−#: qml/Shell.qml:282
316+#: qml/Shell.qml:348
317+msgid "Please re-enter"
318+msgstr ""
319+
320+#: qml/Shell.qml:350
305−msgid "Enter your passcode"
321+msgid "Enter passcode"
306msgstr ""
322msgstr ""
307
323
308−#: qml/Shell.qml:283
324+#: qml/Shell.qml:351
309msgid "Sorry, incorrect passcode"
325msgid "Sorry, incorrect passcode"
310msgstr ""
326msgstr ""
311
327
312−#: qml/Shell.qml:273
328+#: qml/Shell.qml:354
313#, qt-format
329#, qt-format
314−msgid "Enter your %1"
330+msgid "Enter %1"
315msgstr ""
331msgstr ""
316
332
317−#: qml/Shell.qml:274
333+#: qml/Shell.qml:355
318#, qt-format
334#, qt-format
319msgid "Sorry, incorrect %1"
335msgid "Sorry, incorrect %1"
320msgstr ""
336msgstr ""
321
337
322−#: qml/Shell.qml:310
338+#: qml/Shell.qml:390
323msgid "Sorry, incorrect passphrase."
339msgid "Sorry, incorrect passphrase."
324msgstr ""
340msgstr ""
325
341
326−#: qml/Shell.qml:311
342+#: qml/Shell.qml:391
327msgid "Sorry, incorrect passcode."
343msgid "Sorry, incorrect passcode."
328msgstr ""
344msgstr ""
329
345
330−#: qml/Shell.qml:312
346+#: qml/Shell.qml:392
331msgid "This will be your last attempt."
347msgid "This will be your last attempt."
332msgstr ""
348msgstr ""
333
349
334−#: qml/Shell.qml:314
350+#: qml/Shell.qml:394
335msgid ""
351msgid ""
336"If passphrase is entered incorrectly, your phone will conduct a factory "
352"If passphrase is entered incorrectly, your phone will conduct a factory "
337"reset and all personal data will be deleted."
353"reset and all personal data will be deleted."
338msgstr ""
354msgstr ""
339
355
340−#: qml/Shell.qml:315
356+#: qml/Shell.qml:395
341msgid ""
357msgid ""
342"If passcode is entered incorrectly, your phone will conduct a factory reset "
358"If passcode is entered incorrectly, your phone will conduct a factory reset "
343"and all personal data will be deleted."
359"and all personal data will be deleted."
po/cs.po+87−71
@@ -7,29 +7,49 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11"PO-Revision-Date: 2014-01-08 10:11+0000\n"
11"PO-Revision-Date: 2014-01-08 10:11+0000\n"
12"Last-Translator: Tadeáš Pařík <tadeas.parik@gmail.com>\n"
12"Last-Translator: Tadeáš Pařík <tadeas.parik@gmail.com>\n"
13"Language-Team: Czech <cs@li.org>\n"
13"Language-Team: Czech <cs@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18+"X-Launchpad-Export-Date: 2014-10-09 06:36+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
19+"X-Generator: Launchpad (build 17196)\n"
19
20
20−#: plugins/LightDM/Greeter.cpp:129
21+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
22msgid "Password: "
22msgstr ""
23msgstr ""
23
24
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
27msgid "Pin shortcut"
27msgstr ""
28msgstr ""
28
29
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
31msgid "Unpin shortcut"
31msgstr ""
32msgstr ""
32
33
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr ""
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr ""
41+
42+#: qml/Components/DelayedLockscreen.qml:63
43+msgid "You have been locked out due to too many failed passcode attempts."
44+msgstr ""
45+
46+#: qml/Components/DelayedLockscreen.qml:72
47+#, qt-format
48+msgid "Please wait %1 minute and then try again…"
49+msgid_plural "Please wait %1 minutes and then try again…"
50+msgstr[0] ""
51+msgstr[1] ""
52+
33#: qml/Components/Dialogs.qml:70
53#: qml/Components/Dialogs.qml:70
34msgid "Log out"
54msgid "Log out"
35msgstr ""
55msgstr ""
@@ -74,11 +94,15 @@ msgid ""
74"to power off?"
94"to power off?"
75msgstr ""
95msgstr ""
76
96
77−#: qml/Components/Dialogs.qml:144
97+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
98msgid "Power off"
79msgstr ""
99msgstr ""
80
100
81−#: qml/Components/Dialogs.qml:162
101+#: qml/Components/Dialogs.qml:157
102+msgid "Restart"
103+msgstr ""
104+
105+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
106msgid "Cancel"
83msgstr ""
107msgstr ""
84
108
@@ -128,60 +152,44 @@ msgid ""
128"phone<br><br>Tap on the screen to start"
152"phone<br><br>Tap on the screen to start"
129msgstr ""
153msgstr ""
130
154
131−#: qml/Components/Lockscreen.qml:167
155+#: qml/Components/Lockscreen.qml:220
132−msgid "Please wait"
133−msgstr ""
134−
135−#: qml/Components/Lockscreen.qml:172
136−msgid "Too many incorrect attempts"
137−msgstr ""
138−
139−#: qml/Components/Lockscreen.qml:206
140msgid "Emergency Call"
156msgid "Emergency Call"
141msgstr "Tísňové volání"
157msgstr "Tísňové volání"
142
158
143−#: qml/Components/Lockscreen.qml:226
159+#: qml/Components/Lockscreen.qml:252
144msgid "OK"
160msgid "OK"
145msgstr ""
161msgstr ""
146
162
147−#: qml/Components/PassphraseLockscreen.qml:61
148−#, qt-format
149−msgid "Hello %1"
150−msgstr "Ahoj %1"
151−
152−#: qml/Components/PassphraseLockscreen.qml:61
153−msgid "Hello"
154−msgstr "Ahoj"
155−
156−#: qml/Dash/GenericScopeView.qml:361
163+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
157msgid "See less"
164msgid "See less"
158msgstr ""
165msgstr ""
159
166
160−#: qml/Dash/GenericScopeView.qml:361
167+#: qml/Dash/GenericScopeView.qml:434
161msgid "See all"
168msgid "See all"
162msgstr ""
169msgstr ""
163
170
171+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
164−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
172+#: qml/Panel/SearchIndicator.qml:27
165msgid "Search"
173msgid "Search"
166msgstr "Hledat"
174msgstr "Hledat"
167
175
168−#: qml/Dash/PageHeader.qml:270
176+#: qml/Dash/PageHeader.qml:268
169msgid "Settings"
177msgid "Settings"
170msgstr ""
178msgstr ""
171
179
172−#: qml/Dash/PageHeader.qml:279
180+#: qml/Dash/PageHeader.qml:275
173msgid "Remove from Favorites"
181msgid "Remove from Favorites"
174msgstr ""
182msgstr ""
175
183
176−#: qml/Dash/PageHeader.qml:279
184+#: qml/Dash/PageHeader.qml:275
177msgid "Add to Favorites"
185msgid "Add to Favorites"
178msgstr ""
186msgstr ""
179
187
180−#: qml/Dash/Previews/PreviewActionCombo.qml:34
188+#: qml/Dash/Previews/PreviewActionCombo.qml:35
181msgid "More..."
189msgid "More..."
182msgstr ""
190msgstr ""
183
191
184−#: qml/Dash/Previews/PreviewActionCombo.qml:34
192+#: qml/Dash/Previews/PreviewActionCombo.qml:35
185msgid "Less..."
193msgid "Less..."
186msgstr ""
194msgstr ""
187
195
@@ -197,15 +205,23 @@ msgstr "Přidat recenzi"
197msgid "Send"
205msgid "Send"
198msgstr "Odeslat"
206msgstr "Odeslat"
199
207
208+#: qml/Dash/PullToRefreshScopeStyle.qml:55
209+msgid "Pull to refresh…"
210+msgstr ""
211+
212+#: qml/Dash/PullToRefreshScopeStyle.qml:60
213+msgid "Release to refresh…"
214+msgstr ""
215+
200−#: qml/Dash/ScopesOverview.qml:201
216+#: qml/Dash/ScopesOverview.qml:206
201−msgid "Manage Dash"
217+msgid "Manage Scopes"
202msgstr ""
218msgstr ""
203
219
204−#: qml/Dash/ScopesOverview.qml:408
220+#: qml/Dash/ScopesOverview.qml:428
205msgid "Done"
221msgid "Done"
206msgstr ""
222msgstr ""
207
223
208−#: qml/Dash/ScopesOverview.qml:434
224+#: qml/Dash/ScopesOverview.qml:454
209msgid "Store"
225msgid "Store"
210msgstr ""
226msgstr ""
211
227
@@ -218,10 +234,10 @@ msgid "All"
218msgstr ""
234msgstr ""
219
235
220#: qml/Greeter/Greeter.qml:157
236#: qml/Greeter/Greeter.qml:157
221−msgid "Swipe to unlock"
237+msgid "Unlock"
222msgstr ""
238msgstr ""
223
239
224−#: qml/Hud/HudParametrizedActionsPage.qml:132
240+#: qml/Hud/HudParametrizedActionsPage.qml:139
225msgid "Confirm"
241msgid "Confirm"
226msgstr "Potvrdit"
242msgstr "Potvrdit"
227
243
@@ -241,18 +257,10 @@ msgstr "Mluvte..."
241msgid "Speaking..."
257msgid "Speaking..."
242msgstr "Mluvte..."
258msgstr "Mluvte..."
243
259
244−#: qml/Notifications/NotificationMenuItemFactory.qml:105
260+#: qml/Notifications/NotificationMenuItemFactory.qml:116
245msgid "Show password"
261msgid "Show password"
246msgstr "Zobrazit heslo"
262msgstr "Zobrazit heslo"
247
263
248−#: qml/Notifications/NotificationMenuItemFactory.qml:120
249−msgid "Enter SIM PIN"
250−msgstr ""
251−
252−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
253−msgid "Sorry, incorrect PIN"
254−msgstr ""
255−
256#: qml/Panel/ActiveCallHint.qml:77
264#: qml/Panel/ActiveCallHint.qml:77
257msgid "Tap to return to call..."
265msgid "Tap to return to call..."
258msgstr ""
266msgstr ""
@@ -261,27 +269,31 @@ msgstr ""
261msgid "Conference"
269msgid "Conference"
262msgstr ""
270msgstr ""
263
271
264−#: qml/Panel/Indicators/MenuItemFactory.qml:651
272+#: qml/Panel/Indicators/MenuItemFactory.qml:600
273+msgid "Nothing is playing"
274+msgstr ""
275+
276+#: qml/Panel/Indicators/MenuItemFactory.qml:748
265msgid "In queue…"
277msgid "In queue…"
266msgstr ""
278msgstr ""
267
279
268−#: qml/Panel/Indicators/MenuItemFactory.qml:655
280+#: qml/Panel/Indicators/MenuItemFactory.qml:752
269msgid "Downloading"
281msgid "Downloading"
270msgstr ""
282msgstr ""
271
283
272−#: qml/Panel/Indicators/MenuItemFactory.qml:657
284+#: qml/Panel/Indicators/MenuItemFactory.qml:754
273msgid "Paused, tap to resume"
285msgid "Paused, tap to resume"
274msgstr ""
286msgstr ""
275
287
276−#: qml/Panel/Indicators/MenuItemFactory.qml:659
288+#: qml/Panel/Indicators/MenuItemFactory.qml:756
277msgid "Canceled"
289msgid "Canceled"
278msgstr ""
290msgstr ""
279
291
280−#: qml/Panel/Indicators/MenuItemFactory.qml:661
292+#: qml/Panel/Indicators/MenuItemFactory.qml:758
281msgid "Finished"
293msgid "Finished"
282msgstr ""
294msgstr ""
283
295
284−#: qml/Panel/Indicators/MenuItemFactory.qml:663
296+#: qml/Panel/Indicators/MenuItemFactory.qml:760
285msgid "Failed, tap to retry"
297msgid "Failed, tap to retry"
286msgstr ""
298msgstr ""
287
299
@@ -293,51 +305,55 @@ msgstr ""
293msgid "Roaming"
305msgid "Roaming"
294msgstr ""
306msgstr ""
295
307
296−#: qml/Shell.qml:266
308+#: qml/Shell.qml:346
297−msgid "Enter your passphrase"
309+msgid "Enter passphrase"
298msgstr ""
310msgstr ""
299
311
300−#: qml/Shell.qml:267
312+#: qml/Shell.qml:347
301msgid "Sorry, incorrect passphrase"
313msgid "Sorry, incorrect passphrase"
302msgstr ""
314msgstr ""
303
315
304−#: qml/Shell.qml:282
316+#: qml/Shell.qml:348
317+msgid "Please re-enter"
318+msgstr ""
319+
320+#: qml/Shell.qml:350
305−msgid "Enter your passcode"
321+msgid "Enter passcode"
306msgstr ""
322msgstr ""
307
323
308−#: qml/Shell.qml:283
324+#: qml/Shell.qml:351
309msgid "Sorry, incorrect passcode"
325msgid "Sorry, incorrect passcode"
310msgstr ""
326msgstr ""
311
327
312−#: qml/Shell.qml:273
328+#: qml/Shell.qml:354
313#, qt-format
329#, qt-format
314−msgid "Enter your %1"
330+msgid "Enter %1"
315msgstr ""
331msgstr ""
316
332
317−#: qml/Shell.qml:274
333+#: qml/Shell.qml:355
318#, qt-format
334#, qt-format
319msgid "Sorry, incorrect %1"
335msgid "Sorry, incorrect %1"
320msgstr ""
336msgstr ""
321
337
322−#: qml/Shell.qml:310
338+#: qml/Shell.qml:390
323msgid "Sorry, incorrect passphrase."
339msgid "Sorry, incorrect passphrase."
324msgstr ""
340msgstr ""
325
341
326−#: qml/Shell.qml:311
342+#: qml/Shell.qml:391
327msgid "Sorry, incorrect passcode."
343msgid "Sorry, incorrect passcode."
328msgstr ""
344msgstr ""
329
345
330−#: qml/Shell.qml:312
346+#: qml/Shell.qml:392
331msgid "This will be your last attempt."
347msgid "This will be your last attempt."
332msgstr ""
348msgstr ""
333
349
334−#: qml/Shell.qml:314
350+#: qml/Shell.qml:394
335msgid ""
351msgid ""
336"If passphrase is entered incorrectly, your phone will conduct a factory "
352"If passphrase is entered incorrectly, your phone will conduct a factory "
337"reset and all personal data will be deleted."
353"reset and all personal data will be deleted."
338msgstr ""
354msgstr ""
339
355
340−#: qml/Shell.qml:315
356+#: qml/Shell.qml:395
341msgid ""
357msgid ""
342"If passcode is entered incorrectly, your phone will conduct a factory reset "
358"If passcode is entered incorrectly, your phone will conduct a factory reset "
343"and all personal data will be deleted."
359"and all personal data will be deleted."
po/da.po+88−72
@@ -8,29 +8,49 @@ msgid ""
8msgstr ""
8msgstr ""
9"Project-Id-Version: unity8\n"
9"Project-Id-Version: unity8\n"
10"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
11+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
12"PO-Revision-Date: 2014-07-30 12:37+0000\n"
12"PO-Revision-Date: 2014-07-30 12:37+0000\n"
13"Last-Translator: Ask Hjorth Larsen <asklarsen@gmail.com>\n"
13"Last-Translator: Ask Hjorth Larsen <asklarsen@gmail.com>\n"
14"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
14"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
15"MIME-Version: 1.0\n"
15"MIME-Version: 1.0\n"
16"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Type: text/plain; charset=UTF-8\n"
17"Content-Transfer-Encoding: 8bit\n"
17"Content-Transfer-Encoding: 8bit\n"
18+"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
19+"X-Launchpad-Export-Date: 2014-10-09 06:36+0000\n"
19−"X-Generator: Launchpad (build 17174)\n"
20+"X-Generator: Launchpad (build 17196)\n"
20
21
21−#: plugins/LightDM/Greeter.cpp:129
22+#: plugins/LightDM/Greeter.cpp:130
22msgid "Password: "
23msgid "Password: "
23msgstr ""
24msgstr ""
24
25
25−#: plugins/Unity/Launcher/launcheritem.cpp:43
26+#: plugins/Unity/Launcher/launcheritem.cpp:45
26−#: plugins/Unity/Launcher/launcheritem.cpp:73
27+#: plugins/Unity/Launcher/launcheritem.cpp:91
27msgid "Pin shortcut"
28msgid "Pin shortcut"
28msgstr "Fastgør genvej"
29msgstr "Fastgør genvej"
29
30
30−#: plugins/Unity/Launcher/launcheritem.cpp:73
31+#: plugins/Unity/Launcher/launcheritem.cpp:91
31msgid "Unpin shortcut"
32msgid "Unpin shortcut"
32msgstr "Gør genvej flytbar"
33msgstr "Gør genvej flytbar"
33
34
35+#: qml/Components/DelayedLockscreen.qml:47
36+msgid "Device Locked"
37+msgstr ""
38+
39+#: qml/Components/DelayedLockscreen.qml:62
40+msgid "You have been locked out due to too many failed passphrase attempts."
41+msgstr ""
42+
43+#: qml/Components/DelayedLockscreen.qml:63
44+msgid "You have been locked out due to too many failed passcode attempts."
45+msgstr ""
46+
47+#: qml/Components/DelayedLockscreen.qml:72
48+#, qt-format
49+msgid "Please wait %1 minute and then try again…"
50+msgid_plural "Please wait %1 minutes and then try again…"
51+msgstr[0] ""
52+msgstr[1] ""
53+
34#: qml/Components/Dialogs.qml:70
54#: qml/Components/Dialogs.qml:70
35msgid "Log out"
55msgid "Log out"
36msgstr ""
56msgstr ""
@@ -75,11 +95,15 @@ msgid ""
75"to power off?"
95"to power off?"
76msgstr ""
96msgstr ""
77
97
78−#: qml/Components/Dialogs.qml:144
98+#: qml/Components/Dialogs.qml:147
79msgid "Power off"
99msgid "Power off"
80msgstr ""
100msgstr ""
81
101
82−#: qml/Components/Dialogs.qml:162
102+#: qml/Components/Dialogs.qml:157
103+msgid "Restart"
104+msgstr ""
105+
106+#: qml/Components/Dialogs.qml:167
83msgid "Cancel"
107msgid "Cancel"
84msgstr ""
108msgstr ""
85
109
@@ -131,60 +155,44 @@ msgstr ""
131"Du mestrer nu kantbevægelserne og kan begynde at bruge telefonen<br><br>Tryk "
155"Du mestrer nu kantbevægelserne og kan begynde at bruge telefonen<br><br>Tryk "
132"på skærmen for at starte"
156"på skærmen for at starte"
133
157
134−#: qml/Components/Lockscreen.qml:167
158+#: qml/Components/Lockscreen.qml:220
135−msgid "Please wait"
136−msgstr ""
137−
138−#: qml/Components/Lockscreen.qml:172
139−msgid "Too many incorrect attempts"
140−msgstr ""
141−
142−#: qml/Components/Lockscreen.qml:206
143msgid "Emergency Call"
159msgid "Emergency Call"
144msgstr "Nødopkald"
160msgstr "Nødopkald"
145
161
146−#: qml/Components/Lockscreen.qml:226
162+#: qml/Components/Lockscreen.qml:252
147msgid "OK"
163msgid "OK"
148msgstr "O.k."
164msgstr "O.k."
149
165
150−#: qml/Components/PassphraseLockscreen.qml:61
151−#, qt-format
152−msgid "Hello %1"
153−msgstr "Hej %1"
154−
155−#: qml/Components/PassphraseLockscreen.qml:61
156−msgid "Hello"
157−msgstr "Hej"
158−
159−#: qml/Dash/GenericScopeView.qml:361
166+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
160msgid "See less"
167msgid "See less"
161msgstr "Vis mindre"
168msgstr "Vis mindre"
162
169
163−#: qml/Dash/GenericScopeView.qml:361
170+#: qml/Dash/GenericScopeView.qml:434
164msgid "See all"
171msgid "See all"
165msgstr "Se alle"
172msgstr "Se alle"
166
173
174+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
167−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
175+#: qml/Panel/SearchIndicator.qml:27
168msgid "Search"
176msgid "Search"
169msgstr "Søg"
177msgstr "Søg"
170
178
171−#: qml/Dash/PageHeader.qml:270
179+#: qml/Dash/PageHeader.qml:268
172msgid "Settings"
180msgid "Settings"
173msgstr ""
181msgstr ""
174
182
175−#: qml/Dash/PageHeader.qml:279
183+#: qml/Dash/PageHeader.qml:275
176msgid "Remove from Favorites"
184msgid "Remove from Favorites"
177msgstr ""
185msgstr ""
178
186
179−#: qml/Dash/PageHeader.qml:279
187+#: qml/Dash/PageHeader.qml:275
180msgid "Add to Favorites"
188msgid "Add to Favorites"
181msgstr ""
189msgstr ""
182
190
183−#: qml/Dash/Previews/PreviewActionCombo.qml:34
191+#: qml/Dash/Previews/PreviewActionCombo.qml:35
184msgid "More..."
192msgid "More..."
185msgstr "Mere..."
193msgstr "Mere..."
186
194
187−#: qml/Dash/Previews/PreviewActionCombo.qml:34
195+#: qml/Dash/Previews/PreviewActionCombo.qml:35
188msgid "Less..."
196msgid "Less..."
189msgstr "Mindre..."
197msgstr "Mindre..."
190
198
@@ -200,15 +208,23 @@ msgstr "Tilføj en forhåndsvisning"
200msgid "Send"
208msgid "Send"
201msgstr "Send"
209msgstr "Send"
202
210
203−#: qml/Dash/ScopesOverview.qml:201
211+#: qml/Dash/PullToRefreshScopeStyle.qml:55
204−msgid "Manage Dash"
212+msgid "Pull to refresh…"
213+msgstr ""
214+
215+#: qml/Dash/PullToRefreshScopeStyle.qml:60
216+msgid "Release to refresh…"
205msgstr ""
217msgstr ""
206
218
207−#: qml/Dash/ScopesOverview.qml:408
219+#: qml/Dash/ScopesOverview.qml:206
220+msgid "Manage Scopes"
221+msgstr ""
222+
223+#: qml/Dash/ScopesOverview.qml:428
208msgid "Done"
224msgid "Done"
209msgstr ""
225msgstr ""
210
226
211−#: qml/Dash/ScopesOverview.qml:434
227+#: qml/Dash/ScopesOverview.qml:454
212msgid "Store"
228msgid "Store"
213msgstr ""
229msgstr ""
214
230
@@ -221,10 +237,10 @@ msgid "All"
221msgstr ""
237msgstr ""
222
238
223#: qml/Greeter/Greeter.qml:157
239#: qml/Greeter/Greeter.qml:157
224−msgid "Swipe to unlock"
240+msgid "Unlock"
225−msgstr "Stryg for at låse op"
241+msgstr ""
226
242
227−#: qml/Hud/HudParametrizedActionsPage.qml:132
243+#: qml/Hud/HudParametrizedActionsPage.qml:139
228msgid "Confirm"
244msgid "Confirm"
229msgstr "Bekræft"
245msgstr "Bekræft"
230
246
@@ -244,18 +260,10 @@ msgstr "Tal nu..."
244msgid "Speaking..."
260msgid "Speaking..."
245msgstr "Taler..."
261msgstr "Taler..."
246
262
247−#: qml/Notifications/NotificationMenuItemFactory.qml:105
263+#: qml/Notifications/NotificationMenuItemFactory.qml:116
248msgid "Show password"
264msgid "Show password"
249msgstr "Vis adgangskode"
265msgstr "Vis adgangskode"
250
266
251−#: qml/Notifications/NotificationMenuItemFactory.qml:120
252−msgid "Enter SIM PIN"
253−msgstr ""
254−
255−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
256−msgid "Sorry, incorrect PIN"
257−msgstr ""
258−
259#: qml/Panel/ActiveCallHint.qml:77
267#: qml/Panel/ActiveCallHint.qml:77
260msgid "Tap to return to call..."
268msgid "Tap to return to call..."
261msgstr "Tryk for at besvare opkaldet..."
269msgstr "Tryk for at besvare opkaldet..."
@@ -264,27 +272,31 @@ msgstr "Tryk for at besvare opkaldet..."
264msgid "Conference"
272msgid "Conference"
265msgstr "Konference"
273msgstr "Konference"
266
274
267−#: qml/Panel/Indicators/MenuItemFactory.qml:651
275+#: qml/Panel/Indicators/MenuItemFactory.qml:600
276+msgid "Nothing is playing"
277+msgstr ""
278+
279+#: qml/Panel/Indicators/MenuItemFactory.qml:748
268msgid "In queue…"
280msgid "In queue…"
269msgstr "I kø…"
281msgstr "I kø…"
270
282
271−#: qml/Panel/Indicators/MenuItemFactory.qml:655
283+#: qml/Panel/Indicators/MenuItemFactory.qml:752
272msgid "Downloading"
284msgid "Downloading"
273msgstr "Henter"
285msgstr "Henter"
274
286
275−#: qml/Panel/Indicators/MenuItemFactory.qml:657
287+#: qml/Panel/Indicators/MenuItemFactory.qml:754
276msgid "Paused, tap to resume"
288msgid "Paused, tap to resume"
277msgstr "På pause; tryk for at fortsætte"
289msgstr "På pause; tryk for at fortsætte"
278
290
279−#: qml/Panel/Indicators/MenuItemFactory.qml:659
291+#: qml/Panel/Indicators/MenuItemFactory.qml:756
280msgid "Canceled"
292msgid "Canceled"
281msgstr "Annulleret"
293msgstr "Annulleret"
282
294
283−#: qml/Panel/Indicators/MenuItemFactory.qml:661
295+#: qml/Panel/Indicators/MenuItemFactory.qml:758
284msgid "Finished"
296msgid "Finished"
285msgstr "Færdig"
297msgstr "Færdig"
286
298
287−#: qml/Panel/Indicators/MenuItemFactory.qml:663
299+#: qml/Panel/Indicators/MenuItemFactory.qml:760
288msgid "Failed, tap to retry"
300msgid "Failed, tap to retry"
289msgstr "Mislykkedes; tryk for at prøve igen"
301msgstr "Mislykkedes; tryk for at prøve igen"
290
302
@@ -296,51 +308,55 @@ msgstr ""
296msgid "Roaming"
308msgid "Roaming"
297msgstr ""
309msgstr ""
298
310
299−#: qml/Shell.qml:266
311+#: qml/Shell.qml:346
300−msgid "Enter your passphrase"
312+msgid "Enter passphrase"
301msgstr ""
313msgstr ""
302
314
303−#: qml/Shell.qml:267
315+#: qml/Shell.qml:347
304msgid "Sorry, incorrect passphrase"
316msgid "Sorry, incorrect passphrase"
305msgstr ""
317msgstr ""
306
318
307−#: qml/Shell.qml:282
319+#: qml/Shell.qml:348
320+msgid "Please re-enter"
321+msgstr ""
322+
323+#: qml/Shell.qml:350
308−msgid "Enter your passcode"
324+msgid "Enter passcode"
309msgstr ""
325msgstr ""
310
326
311−#: qml/Shell.qml:283
327+#: qml/Shell.qml:351
312msgid "Sorry, incorrect passcode"
328msgid "Sorry, incorrect passcode"
313msgstr ""
329msgstr ""
314
330
315−#: qml/Shell.qml:273
331+#: qml/Shell.qml:354
316#, qt-format
332#, qt-format
317−msgid "Enter your %1"
333+msgid "Enter %1"
318msgstr ""
334msgstr ""
319
335
320−#: qml/Shell.qml:274
336+#: qml/Shell.qml:355
321#, qt-format
337#, qt-format
322msgid "Sorry, incorrect %1"
338msgid "Sorry, incorrect %1"
323msgstr ""
339msgstr ""
324
340
325−#: qml/Shell.qml:310
341+#: qml/Shell.qml:390
326msgid "Sorry, incorrect passphrase."
342msgid "Sorry, incorrect passphrase."
327msgstr ""
343msgstr ""
328
344
329−#: qml/Shell.qml:311
345+#: qml/Shell.qml:391
330msgid "Sorry, incorrect passcode."
346msgid "Sorry, incorrect passcode."
331msgstr ""
347msgstr ""
332
348
333−#: qml/Shell.qml:312
349+#: qml/Shell.qml:392
334msgid "This will be your last attempt."
350msgid "This will be your last attempt."
335msgstr ""
351msgstr ""
336
352
337−#: qml/Shell.qml:314
353+#: qml/Shell.qml:394
338msgid ""
354msgid ""
339"If passphrase is entered incorrectly, your phone will conduct a factory "
355"If passphrase is entered incorrectly, your phone will conduct a factory "
340"reset and all personal data will be deleted."
356"reset and all personal data will be deleted."
341msgstr ""
357msgstr ""
342
358
343−#: qml/Shell.qml:315
359+#: qml/Shell.qml:395
344msgid ""
360msgid ""
345"If passcode is entered incorrectly, your phone will conduct a factory reset "
361"If passcode is entered incorrectly, your phone will conduct a factory reset "
346"and all personal data will be deleted."
362"and all personal data will be deleted."
po/de.po+113−98
@@ -7,78 +7,104 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11−"PO-Revision-Date: 2014-08-26 10:17+0000\n"
11+"PO-Revision-Date: 2014-09-29 06:33+0000\n"
12−"Last-Translator: Martin Pitt <martin.pitt@ubuntu.com>\n"
12+"Last-Translator: Niklas Wenzel <nikwen.developer@gmail.com>\n"
13"Language-Team: German <de@li.org>\n"
13"Language-Team: German <de@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18+"X-Launchpad-Export-Date: 2014-10-09 06:36+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
19+"X-Generator: Launchpad (build 17196)\n"
19
20
20−#: plugins/LightDM/Greeter.cpp:129
21+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
22msgid "Password: "
22msgstr "Passwort: "
23msgstr "Passwort: "
23
24
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
27msgid "Pin shortcut"
27msgstr "Verknüpfung anheften"
28msgstr "Verknüpfung anheften"
28
29
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
31msgid "Unpin shortcut"
31msgstr "Verknüpfung entfernen"
32msgstr "Verknüpfung entfernen"
32
33
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr ""
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr ""
41+
42+#: qml/Components/DelayedLockscreen.qml:63
43+msgid "You have been locked out due to too many failed passcode attempts."
44+msgstr ""
45+
46+#: qml/Components/DelayedLockscreen.qml:72
47+#, qt-format
48+msgid "Please wait %1 minute and then try again…"
49+msgid_plural "Please wait %1 minutes and then try again…"
50+msgstr[0] ""
51+msgstr[1] ""
52+
33#: qml/Components/Dialogs.qml:70
53#: qml/Components/Dialogs.qml:70
34msgid "Log out"
54msgid "Log out"
35−msgstr ""
55+msgstr "Abmelden"
36
56
37#: qml/Components/Dialogs.qml:71
57#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
58msgid "Are you sure you want to log out?"
39−msgstr ""
59+msgstr "Sind Sie sicher, dass Sie sich abmelden wollen?"
40
60
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
61#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
62#: qml/Components/Dialogs.qml:122
43msgid "No"
63msgid "No"
44−msgstr ""
64+msgstr "Nein"
45
65
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
66#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
67#: qml/Components/Dialogs.qml:129
48msgid "Yes"
68msgid "Yes"
49−msgstr ""
69+msgstr "Ja"
50
70
51#: qml/Components/Dialogs.qml:94
71#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
72msgid "Shut down"
53−msgstr ""
73+msgstr "Herunterfahren"
54
74
55#: qml/Components/Dialogs.qml:95
75#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
76msgid "Are you sure you want to shut down?"
57−msgstr ""
77+msgstr "Sind Sie sicher, dass Sie herunterfahren wollen?"
58
78
59#: qml/Components/Dialogs.qml:119
79#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
80msgid "Reboot"
61−msgstr ""
81+msgstr "Neustart"
62
82
63#: qml/Components/Dialogs.qml:120
83#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
84msgid "Are you sure you want to reboot?"
65−msgstr ""
85+msgstr "Sind Sie sicher, dass Sie neu starten wollen?"
66
86
67#: qml/Components/Dialogs.qml:144
87#: qml/Components/Dialogs.qml:144
68msgid "Power"
88msgid "Power"
69−msgstr ""
89+msgstr "Energie"
70
90
71#: qml/Components/Dialogs.qml:145
91#: qml/Components/Dialogs.qml:145
72msgid ""
92msgid ""
73"Are you sure you would like\n"
93"Are you sure you would like\n"
74"to power off?"
94"to power off?"
75msgstr ""
95msgstr ""
96+"Sind Sie sicher, dass Sie das\n"
97+"Gerät ausschalten wollen?"
76
98
77−#: qml/Components/Dialogs.qml:144
99+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
100msgid "Power off"
79msgstr "Ausschalten"
101msgstr "Ausschalten"
80
102
81−#: qml/Components/Dialogs.qml:162
103+#: qml/Components/Dialogs.qml:157
104+msgid "Restart"
105+msgstr "Neustarten"
106+
107+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
108msgid "Cancel"
83msgstr "Abbrechen"
109msgstr "Abbrechen"
84
110
@@ -133,60 +159,44 @@ msgstr ""
133"Sie haben nun die Kantengesten erfolgreich erlernt und können das Telefon "
159"Sie haben nun die Kantengesten erfolgreich erlernt und können das Telefon "
134"nun nutzen<br><br>Zum Starten auf den Bildschirm tippen"
160"nun nutzen<br><br>Zum Starten auf den Bildschirm tippen"
135
161
136−#: qml/Components/Lockscreen.qml:167
162+#: qml/Components/Lockscreen.qml:220
137−msgid "Please wait"
138−msgstr "Bitte warten"
139−
140−#: qml/Components/Lockscreen.qml:172
141−msgid "Too many incorrect attempts"
142−msgstr "Zu viele falsche Versuche"
143−
144−#: qml/Components/Lockscreen.qml:206
145msgid "Emergency Call"
163msgid "Emergency Call"
146msgstr "Notruf"
164msgstr "Notruf"
147
165
148−#: qml/Components/Lockscreen.qml:226
166+#: qml/Components/Lockscreen.qml:252
149msgid "OK"
167msgid "OK"
150msgstr "OK"
168msgstr "OK"
151
169
152−#: qml/Components/PassphraseLockscreen.qml:61
153−#, qt-format
154−msgid "Hello %1"
155−msgstr "Hallo %1"
156−
157−#: qml/Components/PassphraseLockscreen.qml:61
158−msgid "Hello"
159−msgstr "Hallo"
160−
161−#: qml/Dash/GenericScopeView.qml:361
170+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
162msgid "See less"
171msgid "See less"
163msgstr "Weniger ansehen"
172msgstr "Weniger ansehen"
164
173
165−#: qml/Dash/GenericScopeView.qml:361
174+#: qml/Dash/GenericScopeView.qml:434
166msgid "See all"
175msgid "See all"
167msgstr "Alle anzeigen"
176msgstr "Alle anzeigen"
168
177
178+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
169−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
179+#: qml/Panel/SearchIndicator.qml:27
170msgid "Search"
180msgid "Search"
171msgstr "Suchen"
181msgstr "Suchen"
172
182
173−#: qml/Dash/PageHeader.qml:270
183+#: qml/Dash/PageHeader.qml:268
174msgid "Settings"
184msgid "Settings"
175−msgstr ""
185+msgstr "Einstellungen"
176
186
177−#: qml/Dash/PageHeader.qml:279
187+#: qml/Dash/PageHeader.qml:275
178msgid "Remove from Favorites"
188msgid "Remove from Favorites"
179−msgstr ""
189+msgstr "Aus den Favoriten entfernen"
180
190
181−#: qml/Dash/PageHeader.qml:279
191+#: qml/Dash/PageHeader.qml:275
182msgid "Add to Favorites"
192msgid "Add to Favorites"
183−msgstr ""
193+msgstr "Zu Favoriten hinzufügen"
184
194
185−#: qml/Dash/Previews/PreviewActionCombo.qml:34
195+#: qml/Dash/Previews/PreviewActionCombo.qml:35
186msgid "More..."
196msgid "More..."
187msgstr "Mehr …"
197msgstr "Mehr …"
188
198
189−#: qml/Dash/Previews/PreviewActionCombo.qml:34
199+#: qml/Dash/Previews/PreviewActionCombo.qml:35
190msgid "Less..."
200msgid "Less..."
191msgstr "Weniger …"
201msgstr "Weniger …"
192
202
@@ -202,15 +212,23 @@ msgstr "Bewertung hinzufügen"
202msgid "Send"
212msgid "Send"
203msgstr "Senden"
213msgstr "Senden"
204
214
215+#: qml/Dash/PullToRefreshScopeStyle.qml:55
216+msgid "Pull to refresh…"
217+msgstr ""
218+
219+#: qml/Dash/PullToRefreshScopeStyle.qml:60
220+msgid "Release to refresh…"
221+msgstr ""
222+
205−#: qml/Dash/ScopesOverview.qml:201
223+#: qml/Dash/ScopesOverview.qml:206
206−msgid "Manage Dash"
224+msgid "Manage Scopes"
207−msgstr "Dash verwalten"
225+msgstr "Filter verwalten"
208
226
209−#: qml/Dash/ScopesOverview.qml:408
227+#: qml/Dash/ScopesOverview.qml:428
210msgid "Done"
228msgid "Done"
211msgstr "Erledigt"
229msgstr "Erledigt"
212
230
213−#: qml/Dash/ScopesOverview.qml:434
231+#: qml/Dash/ScopesOverview.qml:454
214msgid "Store"
232msgid "Store"
215msgstr "Store"
233msgstr "Store"
216
234
@@ -223,10 +241,10 @@ msgid "All"
223msgstr "Alle"
241msgstr "Alle"
224
242
225#: qml/Greeter/Greeter.qml:157
243#: qml/Greeter/Greeter.qml:157
226−msgid "Swipe to unlock"
244+msgid "Unlock"
227−msgstr "Wischen zum Entsperren"
245+msgstr ""
228
246
229−#: qml/Hud/HudParametrizedActionsPage.qml:132
247+#: qml/Hud/HudParametrizedActionsPage.qml:139
230msgid "Confirm"
248msgid "Confirm"
231msgstr "Bestätigen"
249msgstr "Bestätigen"
232
250
@@ -246,18 +264,10 @@ msgstr "Sprechen Sie jetzt …"
246msgid "Speaking..."
264msgid "Speaking..."
247msgstr "Sprechen Sie …"
265msgstr "Sprechen Sie …"
248
266
249−#: qml/Notifications/NotificationMenuItemFactory.qml:105
267+#: qml/Notifications/NotificationMenuItemFactory.qml:116
250msgid "Show password"
268msgid "Show password"
251msgstr "Passwort anzeigen"
269msgstr "Passwort anzeigen"
252
270
253−#: qml/Notifications/NotificationMenuItemFactory.qml:120
254−msgid "Enter SIM PIN"
255−msgstr "Geben Sie die SIM-PIN ein"
256−
257−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
258−msgid "Sorry, incorrect PIN"
259−msgstr "Die PIN ist nicht korrekt"
260−
261#: qml/Panel/ActiveCallHint.qml:77
271#: qml/Panel/ActiveCallHint.qml:77
262msgid "Tap to return to call..."
272msgid "Tap to return to call..."
263msgstr "Tippen um zum Anruf zurückzugehen"
273msgstr "Tippen um zum Anruf zurückzugehen"
@@ -266,77 +276,85 @@ msgstr "Tippen um zum Anruf zurückzugehen"
266msgid "Conference"
276msgid "Conference"
267msgstr "Konferenz"
277msgstr "Konferenz"
268
278
269−#: qml/Panel/Indicators/MenuItemFactory.qml:651
279+#: qml/Panel/Indicators/MenuItemFactory.qml:600
280+msgid "Nothing is playing"
281+msgstr "Nichts wird abgespielt"
282+
283+#: qml/Panel/Indicators/MenuItemFactory.qml:748
270msgid "In queue…"
284msgid "In queue…"
271msgstr "In Warteschlange …"
285msgstr "In Warteschlange …"
272
286
273−#: qml/Panel/Indicators/MenuItemFactory.qml:655
287+#: qml/Panel/Indicators/MenuItemFactory.qml:752
274msgid "Downloading"
288msgid "Downloading"
275msgstr "Wird heruntergeladen"
289msgstr "Wird heruntergeladen"
276
290
277−#: qml/Panel/Indicators/MenuItemFactory.qml:657
291+#: qml/Panel/Indicators/MenuItemFactory.qml:754
278msgid "Paused, tap to resume"
292msgid "Paused, tap to resume"
279msgstr "Pausiert, tippen Sie zum fortsetzen"
293msgstr "Pausiert, tippen Sie zum fortsetzen"
280
294
281−#: qml/Panel/Indicators/MenuItemFactory.qml:659
295+#: qml/Panel/Indicators/MenuItemFactory.qml:756
282msgid "Canceled"
296msgid "Canceled"
283msgstr "Abgebrochen"
297msgstr "Abgebrochen"
284
298
285−#: qml/Panel/Indicators/MenuItemFactory.qml:661
299+#: qml/Panel/Indicators/MenuItemFactory.qml:758
286msgid "Finished"
300msgid "Finished"
287msgstr "Erledigt"
301msgstr "Erledigt"
288
302
289−#: qml/Panel/Indicators/MenuItemFactory.qml:663
303+#: qml/Panel/Indicators/MenuItemFactory.qml:760
290msgid "Failed, tap to retry"
304msgid "Failed, tap to retry"
291msgstr "Fehlgeschlagen, tippen Sie zum Wiederholen"
305msgstr "Fehlgeschlagen, tippen Sie zum Wiederholen"
292
306
293#: qml/Panel/Indicators/ModemInfoItem.qml:105
307#: qml/Panel/Indicators/ModemInfoItem.qml:105
294msgid "Unlock SIM"
308msgid "Unlock SIM"
295−msgstr "SIM-Karte entsprerren"
309+msgstr "SIM-Karte entsperren"
296
310
297#: qml/Panel/Indicators/RoamingIndication.qml:27
311#: qml/Panel/Indicators/RoamingIndication.qml:27
298msgid "Roaming"
312msgid "Roaming"
299msgstr "Roaming"
313msgstr "Roaming"
300
314
301−#: qml/Shell.qml:266
315+#: qml/Shell.qml:346
302−msgid "Enter your passphrase"
316+msgid "Enter passphrase"
303−msgstr "Geben Sie Ihr Passwort ein"
317+msgstr ""
304
318
305−#: qml/Shell.qml:267
319+#: qml/Shell.qml:347
306msgid "Sorry, incorrect passphrase"
320msgid "Sorry, incorrect passphrase"
307msgstr "Das Passwort ist nicht korrekt"
321msgstr "Das Passwort ist nicht korrekt"
308
322
309−#: qml/Shell.qml:282
323+#: qml/Shell.qml:348
310−msgid "Enter your passcode"
324+msgid "Please re-enter"
311msgstr ""
325msgstr ""
312
326
313−#: qml/Shell.qml:283
327+#: qml/Shell.qml:350
314−msgid "Sorry, incorrect passcode"
328+msgid "Enter passcode"
315msgstr ""
329msgstr ""
316
330
317−#: qml/Shell.qml:273
331+#: qml/Shell.qml:351
332+msgid "Sorry, incorrect passcode"
333+msgstr "Falsches Passwort"
334+
335+#: qml/Shell.qml:354
318#, qt-format
336#, qt-format
319−msgid "Enter your %1"
337+msgid "Enter %1"
320−msgstr "%1 eingeben"
338+msgstr ""
321
339
322−#: qml/Shell.qml:274
340+#: qml/Shell.qml:355
323#, qt-format
341#, qt-format
324msgid "Sorry, incorrect %1"
342msgid "Sorry, incorrect %1"
325msgstr "%1 falsch"
343msgstr "%1 falsch"
326
344
327−#: qml/Shell.qml:310
345+#: qml/Shell.qml:390
328msgid "Sorry, incorrect passphrase."
346msgid "Sorry, incorrect passphrase."
329msgstr "Falsches Passwort."
347msgstr "Falsches Passwort."
330
348
331−#: qml/Shell.qml:311
349+#: qml/Shell.qml:391
332msgid "Sorry, incorrect passcode."
350msgid "Sorry, incorrect passcode."
333msgstr "Falsche PIN"
351msgstr "Falsche PIN"
334
352
335−#: qml/Shell.qml:312
353+#: qml/Shell.qml:392
336msgid "This will be your last attempt."
354msgid "This will be your last attempt."
337msgstr "Dies ist Ihr letzter Versuch."
355msgstr "Dies ist Ihr letzter Versuch."
338
356
339−#: qml/Shell.qml:314
357+#: qml/Shell.qml:394
340msgid ""
358msgid ""
341"If passphrase is entered incorrectly, your phone will conduct a factory "
359"If passphrase is entered incorrectly, your phone will conduct a factory "
342"reset and all personal data will be deleted."
360"reset and all personal data will be deleted."
@@ -344,7 +362,7 @@ msgstr ""
344"Wird das Passwort falsch eingegeben, wird das Telefon auf den Werkszustand "
362"Wird das Passwort falsch eingegeben, wird das Telefon auf den Werkszustand "
345"zurückgesetzt und alle Daten werden gelöscht."
363"zurückgesetzt und alle Daten werden gelöscht."
346
364
347−#: qml/Shell.qml:315
365+#: qml/Shell.qml:395
348msgid ""
366msgid ""
349"If passcode is entered incorrectly, your phone will conduct a factory reset "
367"If passcode is entered incorrectly, your phone will conduct a factory reset "
350"and all personal data will be deleted."
368"and all personal data will be deleted."
@@ -352,11 +370,8 @@ msgstr ""
352"Wird die PIN falsch eingegeben, wird das Telefon auf den Werkszustand "
370"Wird die PIN falsch eingegeben, wird das Telefon auf den Werkszustand "
353"zurückgesetzt und alle Daten werden gelöscht."
371"zurückgesetzt und alle Daten werden gelöscht."
354
372
355−#~ msgid "Restart"
373+#~ msgid "Sorry, incorrect PIN"
356−#~ msgstr "Neustart"
374+#~ msgstr "Die PIN ist nicht korrekt"
357−
358−#~ msgid "Are you sure you would like to turn power off?"
359−#~ msgstr "Sind Sie sicher dass das Telefon ausgeschaltet werden soll?"
360
375
361−#~ msgid "Enter your PIN"
376+#~ msgid "Enter SIM PIN"
362−#~ msgstr "Geben Sie Ihre PIN ein"
377+#~ msgstr "Geben Sie die SIM-PIN ein"
po/el.po+89−76
@@ -7,29 +7,49 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11"PO-Revision-Date: 2014-08-21 12:06+0000\n"
11"PO-Revision-Date: 2014-08-21 12:06+0000\n"
12"Last-Translator: Chris Taklis (aka Kailor) <ctaklis@gmail.com>\n"
12"Last-Translator: Chris Taklis (aka Kailor) <ctaklis@gmail.com>\n"
13"Language-Team: Greek <el@li.org>\n"
13"Language-Team: Greek <el@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18+"X-Launchpad-Export-Date: 2014-10-09 06:36+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
19+"X-Generator: Launchpad (build 17196)\n"
19
20
20−#: plugins/LightDM/Greeter.cpp:129
21+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
22msgid "Password: "
22msgstr "Κωδικός πρόσβασης: "
23msgstr "Κωδικός πρόσβασης: "
23
24
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
27msgid "Pin shortcut"
27msgstr "Καρφίτσωμα συντόμευσης"
28msgstr "Καρφίτσωμα συντόμευσης"
28
29
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
31msgid "Unpin shortcut"
31msgstr "Ξεκαρφίτσωμα συντόμευσης"
32msgstr "Ξεκαρφίτσωμα συντόμευσης"
32
33
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr ""
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr ""
41+
42+#: qml/Components/DelayedLockscreen.qml:63
43+msgid "You have been locked out due to too many failed passcode attempts."
44+msgstr ""
45+
46+#: qml/Components/DelayedLockscreen.qml:72
47+#, qt-format
48+msgid "Please wait %1 minute and then try again…"
49+msgid_plural "Please wait %1 minutes and then try again…"
50+msgstr[0] ""
51+msgstr[1] ""
52+
33#: qml/Components/Dialogs.qml:70
53#: qml/Components/Dialogs.qml:70
34msgid "Log out"
54msgid "Log out"
35msgstr ""
55msgstr ""
@@ -74,11 +94,15 @@ msgid ""
74"to power off?"
94"to power off?"
75msgstr ""
95msgstr ""
76
96
77−#: qml/Components/Dialogs.qml:144
97+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
98msgid "Power off"
79msgstr "Τερματισμός"
99msgstr "Τερματισμός"
80
100
81−#: qml/Components/Dialogs.qml:162
101+#: qml/Components/Dialogs.qml:157
102+msgid "Restart"
103+msgstr ""
104+
105+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
106msgid "Cancel"
83msgstr "Ακύρωση"
107msgstr "Ακύρωση"
84
108
@@ -132,60 +156,44 @@ msgstr ""
132"Πλέον γνωρίζετε τις χειρονομίες από τα άκρα και μπορείτε να ξεκινήσετε να "
156"Πλέον γνωρίζετε τις χειρονομίες από τα άκρα και μπορείτε να ξεκινήσετε να "
133"χρησιμοποιείτε το τηλέφωνο<br><br>Αγγίξτε την οθόνη για να ξεκινήσετε"
157"χρησιμοποιείτε το τηλέφωνο<br><br>Αγγίξτε την οθόνη για να ξεκινήσετε"
134
158
135−#: qml/Components/Lockscreen.qml:167
159+#: qml/Components/Lockscreen.qml:220
136−msgid "Please wait"
137−msgstr "Παρακαλώ περιμένετε"
138−
139−#: qml/Components/Lockscreen.qml:172
140−msgid "Too many incorrect attempts"
141−msgstr "Πολλές άκυρες προσπάθειες"
142−
143−#: qml/Components/Lockscreen.qml:206
144msgid "Emergency Call"
160msgid "Emergency Call"
145msgstr "Κλήση έκτακτης ανάγκης"
161msgstr "Κλήση έκτακτης ανάγκης"
146
162
147−#: qml/Components/Lockscreen.qml:226
163+#: qml/Components/Lockscreen.qml:252
148msgid "OK"
164msgid "OK"
149msgstr "OK"
165msgstr "OK"
150
166
151−#: qml/Components/PassphraseLockscreen.qml:61
152−#, qt-format
153−msgid "Hello %1"
154−msgstr "Γεια σας %1"
155−
156−#: qml/Components/PassphraseLockscreen.qml:61
157−msgid "Hello"
158−msgstr "Γεια σας"
159−
160−#: qml/Dash/GenericScopeView.qml:361
167+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
161msgid "See less"
168msgid "See less"
162msgstr "Λιγότερα"
169msgstr "Λιγότερα"
163
170
164−#: qml/Dash/GenericScopeView.qml:361
171+#: qml/Dash/GenericScopeView.qml:434
165msgid "See all"
172msgid "See all"
166msgstr "Εμφάνιση όλων"
173msgstr "Εμφάνιση όλων"
167
174
175+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
168−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
176+#: qml/Panel/SearchIndicator.qml:27
169msgid "Search"
177msgid "Search"
170msgstr "Αναζήτηση"
178msgstr "Αναζήτηση"
171
179
172−#: qml/Dash/PageHeader.qml:270
180+#: qml/Dash/PageHeader.qml:268
173msgid "Settings"
181msgid "Settings"
174msgstr ""
182msgstr ""
175
183
176−#: qml/Dash/PageHeader.qml:279
184+#: qml/Dash/PageHeader.qml:275
177msgid "Remove from Favorites"
185msgid "Remove from Favorites"
178msgstr ""
186msgstr ""
179
187
180−#: qml/Dash/PageHeader.qml:279
188+#: qml/Dash/PageHeader.qml:275
181msgid "Add to Favorites"
189msgid "Add to Favorites"
182msgstr ""
190msgstr ""
183
191
184−#: qml/Dash/Previews/PreviewActionCombo.qml:34
192+#: qml/Dash/Previews/PreviewActionCombo.qml:35
185msgid "More..."
193msgid "More..."
186msgstr "Περισσότερα..."
194msgstr "Περισσότερα..."
187
195
188−#: qml/Dash/Previews/PreviewActionCombo.qml:34
196+#: qml/Dash/Previews/PreviewActionCombo.qml:35
189msgid "Less..."
197msgid "Less..."
190msgstr "Λιγότερα..."
198msgstr "Λιγότερα..."
191
199
@@ -201,15 +209,23 @@ msgstr "Προσθέστε την αξιολόγησή σας"
201msgid "Send"
209msgid "Send"
202msgstr "Αποστολή"
210msgstr "Αποστολή"
203
211
204−#: qml/Dash/ScopesOverview.qml:201
212+#: qml/Dash/PullToRefreshScopeStyle.qml:55
205−msgid "Manage Dash"
213+msgid "Pull to refresh…"
206msgstr ""
214msgstr ""
207
215
216+#: qml/Dash/PullToRefreshScopeStyle.qml:60
217+msgid "Release to refresh…"
218+msgstr ""
219+
208−#: qml/Dash/ScopesOverview.qml:408
220+#: qml/Dash/ScopesOverview.qml:206
221+msgid "Manage Scopes"
222+msgstr ""
223+
224+#: qml/Dash/ScopesOverview.qml:428
209msgid "Done"
225msgid "Done"
210msgstr "Ολοκληρώθηκε"
226msgstr "Ολοκληρώθηκε"
211
227
212−#: qml/Dash/ScopesOverview.qml:434
228+#: qml/Dash/ScopesOverview.qml:454
213msgid "Store"
229msgid "Store"
214msgstr "Κατάστημα"
230msgstr "Κατάστημα"
215
231
@@ -222,10 +238,10 @@ msgid "All"
222msgstr "Όλα"
238msgstr "Όλα"
223
239
224#: qml/Greeter/Greeter.qml:157
240#: qml/Greeter/Greeter.qml:157
225−msgid "Swipe to unlock"
241+msgid "Unlock"
226−msgstr "Σύρετε για να ξεκλειδώσετε"
242+msgstr ""
227
243
228−#: qml/Hud/HudParametrizedActionsPage.qml:132
244+#: qml/Hud/HudParametrizedActionsPage.qml:139
229msgid "Confirm"
245msgid "Confirm"
230msgstr "Επιβεβαίωση"
246msgstr "Επιβεβαίωση"
231
247
@@ -245,18 +261,10 @@ msgstr "Μιλήστε τώρα..."
245msgid "Speaking..."
261msgid "Speaking..."
246msgstr "Ομιλία..."
262msgstr "Ομιλία..."
247
263
248−#: qml/Notifications/NotificationMenuItemFactory.qml:105
264+#: qml/Notifications/NotificationMenuItemFactory.qml:116
249msgid "Show password"
265msgid "Show password"
250msgstr "Εμφάνιση κωδικού"
266msgstr "Εμφάνιση κωδικού"
251
267
252−#: qml/Notifications/NotificationMenuItemFactory.qml:120
253−msgid "Enter SIM PIN"
254−msgstr ""
255−
256−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
257−msgid "Sorry, incorrect PIN"
258−msgstr ""
259−
260#: qml/Panel/ActiveCallHint.qml:77
268#: qml/Panel/ActiveCallHint.qml:77
261msgid "Tap to return to call..."
269msgid "Tap to return to call..."
262msgstr "Πατήστε για να γυρίσετε στην κλήση..."
270msgstr "Πατήστε για να γυρίσετε στην κλήση..."
@@ -265,27 +273,31 @@ msgstr "Πατήστε για να γυρίσετε στην κλήση..."
265msgid "Conference"
273msgid "Conference"
266msgstr "Συνδιάσκεψη"
274msgstr "Συνδιάσκεψη"
267
275
268−#: qml/Panel/Indicators/MenuItemFactory.qml:651
276+#: qml/Panel/Indicators/MenuItemFactory.qml:600
277+msgid "Nothing is playing"
278+msgstr ""
279+
280+#: qml/Panel/Indicators/MenuItemFactory.qml:748
269msgid "In queue…"
281msgid "In queue…"
270msgstr "Στην ουρά..."
282msgstr "Στην ουρά..."
271
283
272−#: qml/Panel/Indicators/MenuItemFactory.qml:655
284+#: qml/Panel/Indicators/MenuItemFactory.qml:752
273msgid "Downloading"
285msgid "Downloading"
274msgstr "Λήψη σε εξέλιξη"
286msgstr "Λήψη σε εξέλιξη"
275
287
276−#: qml/Panel/Indicators/MenuItemFactory.qml:657
288+#: qml/Panel/Indicators/MenuItemFactory.qml:754
277msgid "Paused, tap to resume"
289msgid "Paused, tap to resume"
278msgstr "Σταματημένο, αγγίξτε για συνέχιση"
290msgstr "Σταματημένο, αγγίξτε για συνέχιση"
279
291
280−#: qml/Panel/Indicators/MenuItemFactory.qml:659
292+#: qml/Panel/Indicators/MenuItemFactory.qml:756
281msgid "Canceled"
293msgid "Canceled"
282msgstr "Ακυρώθηκε"
294msgstr "Ακυρώθηκε"
283
295
284−#: qml/Panel/Indicators/MenuItemFactory.qml:661
296+#: qml/Panel/Indicators/MenuItemFactory.qml:758
285msgid "Finished"
297msgid "Finished"
286msgstr "Ολοκληρώθηκε"
298msgstr "Ολοκληρώθηκε"
287
299
288−#: qml/Panel/Indicators/MenuItemFactory.qml:663
300+#: qml/Panel/Indicators/MenuItemFactory.qml:760
289msgid "Failed, tap to retry"
301msgid "Failed, tap to retry"
290msgstr "Αποτυχία, πατήστε για να ξαναπροσπαθήσετε"
302msgstr "Αποτυχία, πατήστε για να ξαναπροσπαθήσετε"
291
303
@@ -297,55 +309,56 @@ msgstr "Ξεκλείδωμα SIM"
297msgid "Roaming"
309msgid "Roaming"
298msgstr "Περιαγωγή"
310msgstr "Περιαγωγή"
299
311
300−#: qml/Shell.qml:266
312+#: qml/Shell.qml:346
301−msgid "Enter your passphrase"
313+msgid "Enter passphrase"
302msgstr ""
314msgstr ""
303
315
304−#: qml/Shell.qml:267
316+#: qml/Shell.qml:347
305msgid "Sorry, incorrect passphrase"
317msgid "Sorry, incorrect passphrase"
306msgstr ""
318msgstr ""
307
319
308−#: qml/Shell.qml:282
320+#: qml/Shell.qml:348
309−msgid "Enter your passcode"
321+msgid "Please re-enter"
310msgstr ""
322msgstr ""
311
323
312−#: qml/Shell.qml:283
324+#: qml/Shell.qml:350
325+msgid "Enter passcode"
326+msgstr ""
327+
328+#: qml/Shell.qml:351
313msgid "Sorry, incorrect passcode"
329msgid "Sorry, incorrect passcode"
314msgstr ""
330msgstr ""
315
331
316−#: qml/Shell.qml:273
332+#: qml/Shell.qml:354
317#, qt-format
333#, qt-format
318−msgid "Enter your %1"
334+msgid "Enter %1"
319−msgstr "Εισάγετε το %1"
335+msgstr ""
320
336
321−#: qml/Shell.qml:274
337+#: qml/Shell.qml:355
322#, qt-format
338#, qt-format
323msgid "Sorry, incorrect %1"
339msgid "Sorry, incorrect %1"
324msgstr ""
340msgstr ""
325
341
326−#: qml/Shell.qml:310
342+#: qml/Shell.qml:390
327msgid "Sorry, incorrect passphrase."
343msgid "Sorry, incorrect passphrase."
328msgstr ""
344msgstr ""
329
345
330−#: qml/Shell.qml:311
346+#: qml/Shell.qml:391
331msgid "Sorry, incorrect passcode."
347msgid "Sorry, incorrect passcode."
332msgstr ""
348msgstr ""
333
349
334−#: qml/Shell.qml:312
350+#: qml/Shell.qml:392
335msgid "This will be your last attempt."
351msgid "This will be your last attempt."
336msgstr ""
352msgstr ""
337
353
338−#: qml/Shell.qml:314
354+#: qml/Shell.qml:394
339msgid ""
355msgid ""
340"If passphrase is entered incorrectly, your phone will conduct a factory "
356"If passphrase is entered incorrectly, your phone will conduct a factory "
341"reset and all personal data will be deleted."
357"reset and all personal data will be deleted."
342msgstr ""
358msgstr ""
343
359
344−#: qml/Shell.qml:315
360+#: qml/Shell.qml:395
345msgid ""
361msgid ""
346"If passcode is entered incorrectly, your phone will conduct a factory reset "
362"If passcode is entered incorrectly, your phone will conduct a factory reset "
347"and all personal data will be deleted."
363"and all personal data will be deleted."
348msgstr ""
364msgstr ""
349−
350−#~ msgid "Restart"
351−#~ msgstr "Επανεκκίνηση"
po/en_AU.po+108−99
@@ -7,78 +7,104 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11−"PO-Revision-Date: 2014-08-27 09:59+0000\n"
11+"PO-Revision-Date: 2014-10-12 09:41+0000\n"
12"Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
12"Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
13"Language-Team: English (Australia) <en_AU@li.org>\n"
13"Language-Team: English (Australia) <en_AU@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18+"X-Launchpad-Export-Date: 2014-10-13 06:15+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
19+"X-Generator: Launchpad (build 17196)\n"
19
20
20−#: plugins/LightDM/Greeter.cpp:129
21+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
22msgid "Password: "
22msgstr "Password: "
23msgstr "Password: "
23
24
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
27msgid "Pin shortcut"
27msgstr "Pin shortcut"
28msgstr "Pin shortcut"
28
29
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
31msgid "Unpin shortcut"
31msgstr "Unpin shortcut"
32msgstr "Unpin shortcut"
32
33
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr "Device Locked"
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr "You have been locked out due to too many failed passphrase attempts."
41+
42+#: qml/Components/DelayedLockscreen.qml:63
43+msgid "You have been locked out due to too many failed passcode attempts."
44+msgstr "You have been locked out due to too many failed passcode attempts."
45+
46+#: qml/Components/DelayedLockscreen.qml:72
47+#, qt-format
48+msgid "Please wait %1 minute and then try again…"
49+msgid_plural "Please wait %1 minutes and then try again…"
50+msgstr[0] "Please wait %1 minute and then try again…"
51+msgstr[1] "Please wait %1 minutes and then try again…"
52+
33#: qml/Components/Dialogs.qml:70
53#: qml/Components/Dialogs.qml:70
34msgid "Log out"
54msgid "Log out"
35−msgstr ""
55+msgstr "Log out"
36
56
37#: qml/Components/Dialogs.qml:71
57#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
58msgid "Are you sure you want to log out?"
39−msgstr ""
59+msgstr "Are you sure you want to log out?"
40
60
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
61#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
62#: qml/Components/Dialogs.qml:122
43msgid "No"
63msgid "No"
44−msgstr ""
64+msgstr "No"
45
65
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
66#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
67#: qml/Components/Dialogs.qml:129
48msgid "Yes"
68msgid "Yes"
49−msgstr ""
69+msgstr "Yes"
50
70
51#: qml/Components/Dialogs.qml:94
71#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
72msgid "Shut down"
53−msgstr ""
73+msgstr "Shut down"
54
74
55#: qml/Components/Dialogs.qml:95
75#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
76msgid "Are you sure you want to shut down?"
57−msgstr ""
77+msgstr "Are you sure you want to shut down?"
58
78
59#: qml/Components/Dialogs.qml:119
79#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
80msgid "Reboot"
61−msgstr ""
81+msgstr "Reboot"
62
82
63#: qml/Components/Dialogs.qml:120
83#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
84msgid "Are you sure you want to reboot?"
65−msgstr ""
85+msgstr "Are you sure you want to reboot?"
66
86
67#: qml/Components/Dialogs.qml:144
87#: qml/Components/Dialogs.qml:144
68msgid "Power"
88msgid "Power"
69−msgstr ""
89+msgstr "Power"
70
90
71#: qml/Components/Dialogs.qml:145
91#: qml/Components/Dialogs.qml:145
72msgid ""
92msgid ""
73"Are you sure you would like\n"
93"Are you sure you would like\n"
74"to power off?"
94"to power off?"
75msgstr ""
95msgstr ""
96+"Are you sure you would like\n"
97+"to power off?"
76
98
77−#: qml/Components/Dialogs.qml:144
99+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
100msgid "Power off"
79msgstr "Power off"
101msgstr "Power off"
80
102
81−#: qml/Components/Dialogs.qml:162
103+#: qml/Components/Dialogs.qml:157
104+msgid "Restart"
105+msgstr "Restart"
106+
107+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
108msgid "Cancel"
83msgstr "Cancel"
109msgstr "Cancel"
84
110
@@ -130,60 +156,44 @@ msgstr ""
130"You have now mastered the edge gestures and can start using the "
156"You have now mastered the edge gestures and can start using the "
131"phone<br><br>Tap on the screen to start"
157"phone<br><br>Tap on the screen to start"
132
158
133−#: qml/Components/Lockscreen.qml:167
159+#: qml/Components/Lockscreen.qml:220
134−msgid "Please wait"
135−msgstr "Please wait"
136−
137−#: qml/Components/Lockscreen.qml:172
138−msgid "Too many incorrect attempts"
139−msgstr "Too many incorrect attempts"
140−
141−#: qml/Components/Lockscreen.qml:206
142msgid "Emergency Call"
160msgid "Emergency Call"
143msgstr "Emergency Call"
161msgstr "Emergency Call"
144
162
145−#: qml/Components/Lockscreen.qml:226
163+#: qml/Components/Lockscreen.qml:252
146msgid "OK"
164msgid "OK"
147msgstr "OK"
165msgstr "OK"
148
166
149−#: qml/Components/PassphraseLockscreen.qml:61
150−#, qt-format
151−msgid "Hello %1"
152−msgstr "Hello %1"
153−
154−#: qml/Components/PassphraseLockscreen.qml:61
155−msgid "Hello"
156−msgstr "Hello"
157−
158−#: qml/Dash/GenericScopeView.qml:361
167+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
159msgid "See less"
168msgid "See less"
160msgstr "See less"
169msgstr "See less"
161
170
162−#: qml/Dash/GenericScopeView.qml:361
171+#: qml/Dash/GenericScopeView.qml:434
163msgid "See all"
172msgid "See all"
164msgstr "See all"
173msgstr "See all"
165
174
175+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
166−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
176+#: qml/Panel/SearchIndicator.qml:27
167msgid "Search"
177msgid "Search"
168msgstr "Search"
178msgstr "Search"
169
179
170−#: qml/Dash/PageHeader.qml:270
180+#: qml/Dash/PageHeader.qml:268
171msgid "Settings"
181msgid "Settings"
172−msgstr ""
182+msgstr "Settings"
173
183
174−#: qml/Dash/PageHeader.qml:279
184+#: qml/Dash/PageHeader.qml:275
175msgid "Remove from Favorites"
185msgid "Remove from Favorites"
176−msgstr ""
186+msgstr "Remove from Favourites"
177
187
178−#: qml/Dash/PageHeader.qml:279
188+#: qml/Dash/PageHeader.qml:275
179msgid "Add to Favorites"
189msgid "Add to Favorites"
180−msgstr ""
190+msgstr "Add to Favourites"
181
191
182−#: qml/Dash/Previews/PreviewActionCombo.qml:34
192+#: qml/Dash/Previews/PreviewActionCombo.qml:35
183msgid "More..."
193msgid "More..."
184msgstr "More..."
194msgstr "More..."
185
195
186−#: qml/Dash/Previews/PreviewActionCombo.qml:34
196+#: qml/Dash/Previews/PreviewActionCombo.qml:35
187msgid "Less..."
197msgid "Less..."
188msgstr "Less..."
198msgstr "Less..."
189
199
@@ -199,15 +209,23 @@ msgstr "Add a review"
199msgid "Send"
209msgid "Send"
200msgstr "Send"
210msgstr "Send"
201
211
212+#: qml/Dash/PullToRefreshScopeStyle.qml:55
213+msgid "Pull to refresh…"
214+msgstr "Pull to refresh…"
215+
216+#: qml/Dash/PullToRefreshScopeStyle.qml:60
217+msgid "Release to refresh…"
218+msgstr "Release to refresh…"
219+
202−#: qml/Dash/ScopesOverview.qml:201
220+#: qml/Dash/ScopesOverview.qml:206
203−msgid "Manage Dash"
221+msgid "Manage Scopes"
204−msgstr "Manage Dash"
222+msgstr "Manage Scopes"
205
223
206−#: qml/Dash/ScopesOverview.qml:408
224+#: qml/Dash/ScopesOverview.qml:428
207msgid "Done"
225msgid "Done"
208msgstr "Done"
226msgstr "Done"
209
227
210−#: qml/Dash/ScopesOverview.qml:434
228+#: qml/Dash/ScopesOverview.qml:454
211msgid "Store"
229msgid "Store"
212msgstr "Store"
230msgstr "Store"
213
231
@@ -220,10 +238,10 @@ msgid "All"
220msgstr "All"
238msgstr "All"
221
239
222#: qml/Greeter/Greeter.qml:157
240#: qml/Greeter/Greeter.qml:157
223−msgid "Swipe to unlock"
241+msgid "Unlock"
224−msgstr "Swipe to unlock"
242+msgstr "Unlock"
225
243
226−#: qml/Hud/HudParametrizedActionsPage.qml:132
244+#: qml/Hud/HudParametrizedActionsPage.qml:139
227msgid "Confirm"
245msgid "Confirm"
228msgstr "Confirm"
246msgstr "Confirm"
229
247
@@ -243,18 +261,10 @@ msgstr "Speak Now..."
243msgid "Speaking..."
261msgid "Speaking..."
244msgstr "Speaking..."
262msgstr "Speaking..."
245
263
246−#: qml/Notifications/NotificationMenuItemFactory.qml:105
264+#: qml/Notifications/NotificationMenuItemFactory.qml:116
247msgid "Show password"
265msgid "Show password"
248msgstr "Show password"
266msgstr "Show password"
249
267
250−#: qml/Notifications/NotificationMenuItemFactory.qml:120
251−msgid "Enter SIM PIN"
252−msgstr "Enter SIM PIN"
253−
254−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
255−msgid "Sorry, incorrect PIN"
256−msgstr "Sorry, incorrect PIN"
257−
258#: qml/Panel/ActiveCallHint.qml:77
268#: qml/Panel/ActiveCallHint.qml:77
259msgid "Tap to return to call..."
269msgid "Tap to return to call..."
260msgstr "Tap to return to call..."
270msgstr "Tap to return to call..."
@@ -263,27 +273,31 @@ msgstr "Tap to return to call..."
263msgid "Conference"
273msgid "Conference"
264msgstr "Conference"
274msgstr "Conference"
265
275
266−#: qml/Panel/Indicators/MenuItemFactory.qml:651
276+#: qml/Panel/Indicators/MenuItemFactory.qml:600
277+msgid "Nothing is playing"
278+msgstr "Nothing is playing"
279+
280+#: qml/Panel/Indicators/MenuItemFactory.qml:748
267msgid "In queue…"
281msgid "In queue…"
268msgstr "In queue…"
282msgstr "In queue…"
269
283
270−#: qml/Panel/Indicators/MenuItemFactory.qml:655
284+#: qml/Panel/Indicators/MenuItemFactory.qml:752
271msgid "Downloading"
285msgid "Downloading"
272msgstr "Downloading"
286msgstr "Downloading"
273
287
274−#: qml/Panel/Indicators/MenuItemFactory.qml:657
288+#: qml/Panel/Indicators/MenuItemFactory.qml:754
275msgid "Paused, tap to resume"
289msgid "Paused, tap to resume"
276msgstr "Paused, tap to resume"
290msgstr "Paused, tap to resume"
277
291
278−#: qml/Panel/Indicators/MenuItemFactory.qml:659
292+#: qml/Panel/Indicators/MenuItemFactory.qml:756
279msgid "Canceled"
293msgid "Canceled"
280msgstr "Cancelled"
294msgstr "Cancelled"
281
295
282−#: qml/Panel/Indicators/MenuItemFactory.qml:661
296+#: qml/Panel/Indicators/MenuItemFactory.qml:758
283msgid "Finished"
297msgid "Finished"
284msgstr "Finished"
298msgstr "Finished"
285
299
286−#: qml/Panel/Indicators/MenuItemFactory.qml:663
300+#: qml/Panel/Indicators/MenuItemFactory.qml:760
287msgid "Failed, tap to retry"
301msgid "Failed, tap to retry"
288msgstr "Failed, tap to retry"
302msgstr "Failed, tap to retry"
289
303
@@ -295,45 +309,49 @@ msgstr "Unlock SIM"
295msgid "Roaming"
309msgid "Roaming"
296msgstr "Roaming"
310msgstr "Roaming"
297
311
298−#: qml/Shell.qml:266
312+#: qml/Shell.qml:346
299−msgid "Enter your passphrase"
313+msgid "Enter passphrase"
300−msgstr "Enter your passphrase"
314+msgstr "Enter passphrase"
301
315
302−#: qml/Shell.qml:267
316+#: qml/Shell.qml:347
303msgid "Sorry, incorrect passphrase"
317msgid "Sorry, incorrect passphrase"
304msgstr "Sorry, incorrect passphrase"
318msgstr "Sorry, incorrect passphrase"
305
319
306−#: qml/Shell.qml:282
320+#: qml/Shell.qml:348
321+msgid "Please re-enter"
322+msgstr "Please re-enter"
323+
324+#: qml/Shell.qml:350
307−msgid "Enter your passcode"
325+msgid "Enter passcode"
308−msgstr ""
326+msgstr "Enter passcode"
309
327
310−#: qml/Shell.qml:283
328+#: qml/Shell.qml:351
311msgid "Sorry, incorrect passcode"
329msgid "Sorry, incorrect passcode"
312−msgstr ""
330+msgstr "Sorry, incorrect passcode"
313
331
314−#: qml/Shell.qml:273
332+#: qml/Shell.qml:354
315#, qt-format
333#, qt-format
316−msgid "Enter your %1"
334+msgid "Enter %1"
317−msgstr "Enter your %1"
335+msgstr "Enter %1"
318
336
319−#: qml/Shell.qml:274
337+#: qml/Shell.qml:355
320#, qt-format
338#, qt-format
321msgid "Sorry, incorrect %1"
339msgid "Sorry, incorrect %1"
322msgstr "Sorry, incorrect %1"
340msgstr "Sorry, incorrect %1"
323
341
324−#: qml/Shell.qml:310
342+#: qml/Shell.qml:390
325msgid "Sorry, incorrect passphrase."
343msgid "Sorry, incorrect passphrase."
326msgstr "Sorry, incorrect passphrase."
344msgstr "Sorry, incorrect passphrase."
327
345
328−#: qml/Shell.qml:311
346+#: qml/Shell.qml:391
329msgid "Sorry, incorrect passcode."
347msgid "Sorry, incorrect passcode."
330msgstr "Sorry, incorrect passcode."
348msgstr "Sorry, incorrect passcode."
331
349
332−#: qml/Shell.qml:312
350+#: qml/Shell.qml:392
333msgid "This will be your last attempt."
351msgid "This will be your last attempt."
334msgstr "This will be your last attempt."
352msgstr "This will be your last attempt."
335
353
336−#: qml/Shell.qml:314
354+#: qml/Shell.qml:394
337msgid ""
355msgid ""
338"If passphrase is entered incorrectly, your phone will conduct a factory "
356"If passphrase is entered incorrectly, your phone will conduct a factory "
339"reset and all personal data will be deleted."
357"reset and all personal data will be deleted."
@@ -341,19 +359,10 @@ msgstr ""
341"If passphrase is entered incorrectly, your phone will conduct a factory "
359"If passphrase is entered incorrectly, your phone will conduct a factory "
342"reset and all personal data will be deleted."
360"reset and all personal data will be deleted."
343
361
344−#: qml/Shell.qml:315
362+#: qml/Shell.qml:395
345msgid ""
363msgid ""
346"If passcode is entered incorrectly, your phone will conduct a factory reset "
364"If passcode is entered incorrectly, your phone will conduct a factory reset "
347"and all personal data will be deleted."
365"and all personal data will be deleted."
348msgstr ""
366msgstr ""
349"If passcode is entered incorrectly, your phone will conduct a factory reset "
367"If passcode is entered incorrectly, your phone will conduct a factory reset "
350"and all personal data will be deleted."
368"and all personal data will be deleted."
351−
352−#~ msgid "Are you sure you would like to turn power off?"
353−#~ msgstr "Are you sure you would like to turn power off?"
354−
355−#~ msgid "Restart"
356−#~ msgstr "Restart"
357−
358−#~ msgid "Enter your PIN"
359−#~ msgstr "Enter your PIN"
po/en_GB.po+113−98
@@ -7,78 +7,104 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11−"PO-Revision-Date: 2014-08-23 13:48+0000\n"
11+"PO-Revision-Date: 2014-10-03 12:46+0000\n"
12−"Last-Translator: Alan Pope ㋛ <alan@ubuntu.com>\n"
12+"Last-Translator: Andi Chandler <Unknown>\n"
13"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
13"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18+"X-Launchpad-Export-Date: 2014-10-09 06:37+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
19+"X-Generator: Launchpad (build 17196)\n"
19
20
20−#: plugins/LightDM/Greeter.cpp:129
21+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
22msgid "Password: "
22msgstr "Password: "
23msgstr "Password: "
23
24
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
27msgid "Pin shortcut"
27msgstr "Pin shortcut"
28msgstr "Pin shortcut"
28
29
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
31msgid "Unpin shortcut"
31msgstr "Unpin shortcut"
32msgstr "Unpin shortcut"
32
33
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr "Device Locked"
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr "You have been locked out due to too many failed passphrase attempts."
41+
42+#: qml/Components/DelayedLockscreen.qml:63
43+msgid "You have been locked out due to too many failed passcode attempts."
44+msgstr "You have been locked out due to too many failed passcode attempts."
45+
46+#: qml/Components/DelayedLockscreen.qml:72
47+#, qt-format
48+msgid "Please wait %1 minute and then try again…"
49+msgid_plural "Please wait %1 minutes and then try again…"
50+msgstr[0] "Please wait %1 minute and then try again…"
51+msgstr[1] "Please wait %1 minutes and then try again…"
52+
33#: qml/Components/Dialogs.qml:70
53#: qml/Components/Dialogs.qml:70
34msgid "Log out"
54msgid "Log out"
35−msgstr ""
55+msgstr "Log out"
36
56
37#: qml/Components/Dialogs.qml:71
57#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
58msgid "Are you sure you want to log out?"
39−msgstr ""
59+msgstr "Are you sure you want to log out?"
40
60
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
61#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
62#: qml/Components/Dialogs.qml:122
43msgid "No"
63msgid "No"
44−msgstr ""
64+msgstr "No"
45
65
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
66#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
67#: qml/Components/Dialogs.qml:129
48msgid "Yes"
68msgid "Yes"
49−msgstr ""
69+msgstr "Yes"
50
70
51#: qml/Components/Dialogs.qml:94
71#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
72msgid "Shut down"
53−msgstr ""
73+msgstr "Shut down"
54
74
55#: qml/Components/Dialogs.qml:95
75#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
76msgid "Are you sure you want to shut down?"
57−msgstr ""
77+msgstr "Are you sure you want to shut down?"
58
78
59#: qml/Components/Dialogs.qml:119
79#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
80msgid "Reboot"
61−msgstr ""
81+msgstr "Reboot"
62
82
63#: qml/Components/Dialogs.qml:120
83#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
84msgid "Are you sure you want to reboot?"
65−msgstr ""
85+msgstr "Are you sure you want to reboot?"
66
86
67#: qml/Components/Dialogs.qml:144
87#: qml/Components/Dialogs.qml:144
68msgid "Power"
88msgid "Power"
69−msgstr ""
89+msgstr "Power"
70
90
71#: qml/Components/Dialogs.qml:145
91#: qml/Components/Dialogs.qml:145
72msgid ""
92msgid ""
73"Are you sure you would like\n"
93"Are you sure you would like\n"
74"to power off?"
94"to power off?"
75msgstr ""
95msgstr ""
96+"Are you sure you would like\n"
97+"to power off?"
76
98
77−#: qml/Components/Dialogs.qml:144
99+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
100msgid "Power off"
79msgstr "Power off"
101msgstr "Power off"
80
102
81−#: qml/Components/Dialogs.qml:162
103+#: qml/Components/Dialogs.qml:157
104+msgid "Restart"
105+msgstr "Restart"
106+
107+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
108msgid "Cancel"
83msgstr "Cancel"
109msgstr "Cancel"
84
110
@@ -130,60 +156,44 @@ msgstr ""
130"You have now mastered the edge gestures and can start using the "
156"You have now mastered the edge gestures and can start using the "
131"phone<br><br>Tap on the screen to start"
157"phone<br><br>Tap on the screen to start"
132
158
133−#: qml/Components/Lockscreen.qml:167
159+#: qml/Components/Lockscreen.qml:220
134−msgid "Please wait"
135−msgstr "Please wait"
136−
137−#: qml/Components/Lockscreen.qml:172
138−msgid "Too many incorrect attempts"
139−msgstr "Too many incorrect attempts"
140−
141−#: qml/Components/Lockscreen.qml:206
142msgid "Emergency Call"
160msgid "Emergency Call"
143msgstr "Emergency Call"
161msgstr "Emergency Call"
144
162
145−#: qml/Components/Lockscreen.qml:226
163+#: qml/Components/Lockscreen.qml:252
146msgid "OK"
164msgid "OK"
147msgstr "OK"
165msgstr "OK"
148
166
149−#: qml/Components/PassphraseLockscreen.qml:61
150−#, qt-format
151−msgid "Hello %1"
152−msgstr "Hello %1"
153−
154−#: qml/Components/PassphraseLockscreen.qml:61
155−msgid "Hello"
156−msgstr "Hello"
157−
158−#: qml/Dash/GenericScopeView.qml:361
167+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
159msgid "See less"
168msgid "See less"
160msgstr "See less"
169msgstr "See less"
161
170
162−#: qml/Dash/GenericScopeView.qml:361
171+#: qml/Dash/GenericScopeView.qml:434
163msgid "See all"
172msgid "See all"
164msgstr "See all"
173msgstr "See all"
165
174
175+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
166−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
176+#: qml/Panel/SearchIndicator.qml:27
167msgid "Search"
177msgid "Search"
168msgstr "Search"
178msgstr "Search"
169
179
170−#: qml/Dash/PageHeader.qml:270
180+#: qml/Dash/PageHeader.qml:268
171msgid "Settings"
181msgid "Settings"
172−msgstr ""
182+msgstr "Settings"
173
183
174−#: qml/Dash/PageHeader.qml:279
184+#: qml/Dash/PageHeader.qml:275
175msgid "Remove from Favorites"
185msgid "Remove from Favorites"
176−msgstr ""
186+msgstr "Remove from Favourites"
177
187
178−#: qml/Dash/PageHeader.qml:279
188+#: qml/Dash/PageHeader.qml:275
179msgid "Add to Favorites"
189msgid "Add to Favorites"
180−msgstr ""
190+msgstr "Add to Favourites"
181
191
182−#: qml/Dash/Previews/PreviewActionCombo.qml:34
192+#: qml/Dash/Previews/PreviewActionCombo.qml:35
183msgid "More..."
193msgid "More..."
184msgstr "More..."
194msgstr "More..."
185
195
186−#: qml/Dash/Previews/PreviewActionCombo.qml:34
196+#: qml/Dash/Previews/PreviewActionCombo.qml:35
187msgid "Less..."
197msgid "Less..."
188msgstr "Less..."
198msgstr "Less..."
189
199
@@ -199,15 +209,23 @@ msgstr "Add a review"
199msgid "Send"
209msgid "Send"
200msgstr "Send"
210msgstr "Send"
201
211
202−#: qml/Dash/ScopesOverview.qml:201
212+#: qml/Dash/PullToRefreshScopeStyle.qml:55
203−msgid "Manage Dash"
213+msgid "Pull to refresh…"
204−msgstr "Manage Dash"
214+msgstr "Pull to refresh…"
215+
216+#: qml/Dash/PullToRefreshScopeStyle.qml:60
217+msgid "Release to refresh…"
218+msgstr "Release to refresh…"
205
219
206−#: qml/Dash/ScopesOverview.qml:408
220+#: qml/Dash/ScopesOverview.qml:206
221+msgid "Manage Scopes"
222+msgstr "Manage Scopes"
223+
224+#: qml/Dash/ScopesOverview.qml:428
207msgid "Done"
225msgid "Done"
208msgstr "Done"
226msgstr "Done"
209
227
210−#: qml/Dash/ScopesOverview.qml:434
228+#: qml/Dash/ScopesOverview.qml:454
211msgid "Store"
229msgid "Store"
212msgstr "Store"
230msgstr "Store"
213
231
@@ -220,10 +238,10 @@ msgid "All"
220msgstr "All"
238msgstr "All"
221
239
222#: qml/Greeter/Greeter.qml:157
240#: qml/Greeter/Greeter.qml:157
223−msgid "Swipe to unlock"
241+msgid "Unlock"
224−msgstr "Swipe to unlock"
242+msgstr "Unlock"
225
243
226−#: qml/Hud/HudParametrizedActionsPage.qml:132
244+#: qml/Hud/HudParametrizedActionsPage.qml:139
227msgid "Confirm"
245msgid "Confirm"
228msgstr "Confirm"
246msgstr "Confirm"
229
247
@@ -243,18 +261,10 @@ msgstr "Speak Now..."
243msgid "Speaking..."
261msgid "Speaking..."
244msgstr "Speaking..."
262msgstr "Speaking..."
245
263
246−#: qml/Notifications/NotificationMenuItemFactory.qml:105
264+#: qml/Notifications/NotificationMenuItemFactory.qml:116
247msgid "Show password"
265msgid "Show password"
248msgstr "Show password"
266msgstr "Show password"
249
267
250−#: qml/Notifications/NotificationMenuItemFactory.qml:120
251−msgid "Enter SIM PIN"
252−msgstr "Enter SIM PIN"
253−
254−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
255−msgid "Sorry, incorrect PIN"
256−msgstr "Sorry, incorrect PIN"
257−
258#: qml/Panel/ActiveCallHint.qml:77
268#: qml/Panel/ActiveCallHint.qml:77
259msgid "Tap to return to call..."
269msgid "Tap to return to call..."
260msgstr "Tap to return to call..."
270msgstr "Tap to return to call..."
@@ -263,27 +273,31 @@ msgstr "Tap to return to call..."
263msgid "Conference"
273msgid "Conference"
264msgstr "Conference"
274msgstr "Conference"
265
275
266−#: qml/Panel/Indicators/MenuItemFactory.qml:651
276+#: qml/Panel/Indicators/MenuItemFactory.qml:600
277+msgid "Nothing is playing"
278+msgstr "Nothing is playing"
279+
280+#: qml/Panel/Indicators/MenuItemFactory.qml:748
267msgid "In queue…"
281msgid "In queue…"
268msgstr "In queue…"
282msgstr "In queue…"
269
283
270−#: qml/Panel/Indicators/MenuItemFactory.qml:655
284+#: qml/Panel/Indicators/MenuItemFactory.qml:752
271msgid "Downloading"
285msgid "Downloading"
272msgstr "Downloading"
286msgstr "Downloading"
273
287
274−#: qml/Panel/Indicators/MenuItemFactory.qml:657
288+#: qml/Panel/Indicators/MenuItemFactory.qml:754
275msgid "Paused, tap to resume"
289msgid "Paused, tap to resume"
276msgstr "Paused, tap to resume"
290msgstr "Paused, tap to resume"
277
291
278−#: qml/Panel/Indicators/MenuItemFactory.qml:659
292+#: qml/Panel/Indicators/MenuItemFactory.qml:756
279msgid "Canceled"
293msgid "Canceled"
280msgstr "Cancelled"
294msgstr "Cancelled"
281
295
282−#: qml/Panel/Indicators/MenuItemFactory.qml:661
296+#: qml/Panel/Indicators/MenuItemFactory.qml:758
283msgid "Finished"
297msgid "Finished"
284msgstr "Finished"
298msgstr "Finished"
285
299
286−#: qml/Panel/Indicators/MenuItemFactory.qml:663
300+#: qml/Panel/Indicators/MenuItemFactory.qml:760
287msgid "Failed, tap to retry"
301msgid "Failed, tap to retry"
288msgstr "Failed, tap to retry"
302msgstr "Failed, tap to retry"
289
303
@@ -295,45 +309,49 @@ msgstr "Unlock SIM"
295msgid "Roaming"
309msgid "Roaming"
296msgstr "Roaming"
310msgstr "Roaming"
297
311
298−#: qml/Shell.qml:266
312+#: qml/Shell.qml:346
299−msgid "Enter your passphrase"
313+msgid "Enter passphrase"
300−msgstr "Enter your passphrase"
314+msgstr "Enter passphrase"
301
315
302−#: qml/Shell.qml:267
316+#: qml/Shell.qml:347
303msgid "Sorry, incorrect passphrase"
317msgid "Sorry, incorrect passphrase"
304msgstr "Sorry, incorrect passphrase"
318msgstr "Sorry, incorrect passphrase"
305
319
306−#: qml/Shell.qml:282
320+#: qml/Shell.qml:348
321+msgid "Please re-enter"
322+msgstr "Please re-enter"
323+
324+#: qml/Shell.qml:350
307−msgid "Enter your passcode"
325+msgid "Enter passcode"
308−msgstr ""
326+msgstr "Enter passcode"
309
327
310−#: qml/Shell.qml:283
328+#: qml/Shell.qml:351
311msgid "Sorry, incorrect passcode"
329msgid "Sorry, incorrect passcode"
312−msgstr ""
330+msgstr "Sorry, incorrect passcode"
313
331
314−#: qml/Shell.qml:273
332+#: qml/Shell.qml:354
315#, qt-format
333#, qt-format
316−msgid "Enter your %1"
334+msgid "Enter %1"
317−msgstr "Enter your %1"
335+msgstr "Enter %1"
318
336
319−#: qml/Shell.qml:274
337+#: qml/Shell.qml:355
320#, qt-format
338#, qt-format
321msgid "Sorry, incorrect %1"
339msgid "Sorry, incorrect %1"
322msgstr "Sorry, incorrect %1"
340msgstr "Sorry, incorrect %1"
323
341
324−#: qml/Shell.qml:310
342+#: qml/Shell.qml:390
325msgid "Sorry, incorrect passphrase."
343msgid "Sorry, incorrect passphrase."
326msgstr "Sorry, incorrect passphrase."
344msgstr "Sorry, incorrect passphrase."
327
345
328−#: qml/Shell.qml:311
346+#: qml/Shell.qml:391
329msgid "Sorry, incorrect passcode."
347msgid "Sorry, incorrect passcode."
330msgstr "Sorry, incorrect passcode."
348msgstr "Sorry, incorrect passcode."
331
349
332−#: qml/Shell.qml:312
350+#: qml/Shell.qml:392
333msgid "This will be your last attempt."
351msgid "This will be your last attempt."
334msgstr "This will be your last attempt."
352msgstr "This will be your last attempt."
335
353
336−#: qml/Shell.qml:314
354+#: qml/Shell.qml:394
337msgid ""
355msgid ""
338"If passphrase is entered incorrectly, your phone will conduct a factory "
356"If passphrase is entered incorrectly, your phone will conduct a factory "
339"reset and all personal data will be deleted."
357"reset and all personal data will be deleted."
@@ -341,7 +359,7 @@ msgstr ""
341"If passphrase is entered incorrectly, your phone will conduct a factory "
359"If passphrase is entered incorrectly, your phone will conduct a factory "
342"reset and all personal data will be deleted."
360"reset and all personal data will be deleted."
343
361
344−#: qml/Shell.qml:315
362+#: qml/Shell.qml:395
345msgid ""
363msgid ""
346"If passcode is entered incorrectly, your phone will conduct a factory reset "
364"If passcode is entered incorrectly, your phone will conduct a factory reset "
347"and all personal data will be deleted."
365"and all personal data will be deleted."
@@ -349,11 +367,8 @@ msgstr ""
349"If passcode is entered incorrectly, your phone will conduct a factory reset "
367"If passcode is entered incorrectly, your phone will conduct a factory reset "
350"and all personal data will be deleted."
368"and all personal data will be deleted."
351
369
352−#~ msgid "Are you sure you would like to turn power off?"
370+#~ msgid "Sorry, incorrect PIN"
353−#~ msgstr "Are you sure you would like to turn power off?"
371+#~ msgstr "Sorry, incorrect PIN"
354−
355−#~ msgid "Restart"
356−#~ msgstr "Restart"
357
372
358−#~ msgid "Enter your PIN"
373+#~ msgid "Enter SIM PIN"
359−#~ msgstr "Enter your PIN"
374+#~ msgstr "Enter SIM PIN"
po/eo.po+87−71
@@ -7,29 +7,49 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11"PO-Revision-Date: 2013-06-26 22:35+0000\n"
11"PO-Revision-Date: 2013-06-26 22:35+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Esperanto <eo@li.org>\n"
13"Language-Team: Esperanto <eo@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18+"X-Launchpad-Export-Date: 2014-10-09 06:36+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
19+"X-Generator: Launchpad (build 17196)\n"
19
20
20−#: plugins/LightDM/Greeter.cpp:129
21+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
22msgid "Password: "
22msgstr ""
23msgstr ""
23
24
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
27msgid "Pin shortcut"
27msgstr ""
28msgstr ""
28
29
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
31msgid "Unpin shortcut"
31msgstr ""
32msgstr ""
32
33
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr ""
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr ""
41+
42+#: qml/Components/DelayedLockscreen.qml:63
43+msgid "You have been locked out due to too many failed passcode attempts."
44+msgstr ""
45+
46+#: qml/Components/DelayedLockscreen.qml:72
47+#, qt-format
48+msgid "Please wait %1 minute and then try again…"
49+msgid_plural "Please wait %1 minutes and then try again…"
50+msgstr[0] ""
51+msgstr[1] ""
52+
33#: qml/Components/Dialogs.qml:70
53#: qml/Components/Dialogs.qml:70
34msgid "Log out"
54msgid "Log out"
35msgstr ""
55msgstr ""
@@ -74,11 +94,15 @@ msgid ""
74"to power off?"
94"to power off?"
75msgstr ""
95msgstr ""
76
96
77−#: qml/Components/Dialogs.qml:144
97+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
98msgid "Power off"
79msgstr ""
99msgstr ""
80
100
81−#: qml/Components/Dialogs.qml:162
101+#: qml/Components/Dialogs.qml:157
102+msgid "Restart"
103+msgstr ""
104+
105+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
106msgid "Cancel"
83msgstr ""
107msgstr ""
84
108
@@ -128,60 +152,44 @@ msgid ""
128"phone<br><br>Tap on the screen to start"
152"phone<br><br>Tap on the screen to start"
129msgstr ""
153msgstr ""
130
154
131−#: qml/Components/Lockscreen.qml:167
155+#: qml/Components/Lockscreen.qml:220
132−msgid "Please wait"
133−msgstr ""
134−
135−#: qml/Components/Lockscreen.qml:172
136−msgid "Too many incorrect attempts"
137−msgstr ""
138−
139−#: qml/Components/Lockscreen.qml:206
140msgid "Emergency Call"
156msgid "Emergency Call"
141msgstr ""
157msgstr ""
142
158
143−#: qml/Components/Lockscreen.qml:226
159+#: qml/Components/Lockscreen.qml:252
144msgid "OK"
160msgid "OK"
145msgstr ""
161msgstr ""
146
162
147−#: qml/Components/PassphraseLockscreen.qml:61
148−#, qt-format
149−msgid "Hello %1"
150−msgstr ""
151−
152−#: qml/Components/PassphraseLockscreen.qml:61
153−msgid "Hello"
154−msgstr ""
155−
156−#: qml/Dash/GenericScopeView.qml:361
163+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
157msgid "See less"
164msgid "See less"
158msgstr ""
165msgstr ""
159
166
160−#: qml/Dash/GenericScopeView.qml:361
167+#: qml/Dash/GenericScopeView.qml:434
161msgid "See all"
168msgid "See all"
162msgstr ""
169msgstr ""
163
170
171+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
164−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
172+#: qml/Panel/SearchIndicator.qml:27
165msgid "Search"
173msgid "Search"
166msgstr ""
174msgstr ""
167
175
168−#: qml/Dash/PageHeader.qml:270
176+#: qml/Dash/PageHeader.qml:268
169msgid "Settings"
177msgid "Settings"
170msgstr ""
178msgstr ""
171
179
172−#: qml/Dash/PageHeader.qml:279
180+#: qml/Dash/PageHeader.qml:275
173msgid "Remove from Favorites"
181msgid "Remove from Favorites"
174msgstr ""
182msgstr ""
175
183
176−#: qml/Dash/PageHeader.qml:279
184+#: qml/Dash/PageHeader.qml:275
177msgid "Add to Favorites"
185msgid "Add to Favorites"
178msgstr ""
186msgstr ""
179
187
180−#: qml/Dash/Previews/PreviewActionCombo.qml:34
188+#: qml/Dash/Previews/PreviewActionCombo.qml:35
181msgid "More..."
189msgid "More..."
182msgstr ""
190msgstr ""
183
191
184−#: qml/Dash/Previews/PreviewActionCombo.qml:34
192+#: qml/Dash/Previews/PreviewActionCombo.qml:35
185msgid "Less..."
193msgid "Less..."
186msgstr ""
194msgstr ""
187
195
@@ -197,15 +205,23 @@ msgstr ""
197msgid "Send"
205msgid "Send"
198msgstr ""
206msgstr ""
199
207
208+#: qml/Dash/PullToRefreshScopeStyle.qml:55
209+msgid "Pull to refresh…"
210+msgstr ""
211+
212+#: qml/Dash/PullToRefreshScopeStyle.qml:60
213+msgid "Release to refresh…"
214+msgstr ""
215+
200−#: qml/Dash/ScopesOverview.qml:201
216+#: qml/Dash/ScopesOverview.qml:206
201−msgid "Manage Dash"
217+msgid "Manage Scopes"
202msgstr ""
218msgstr ""
203
219
204−#: qml/Dash/ScopesOverview.qml:408
220+#: qml/Dash/ScopesOverview.qml:428
205msgid "Done"
221msgid "Done"
206msgstr ""
222msgstr ""
207
223
208−#: qml/Dash/ScopesOverview.qml:434
224+#: qml/Dash/ScopesOverview.qml:454
209msgid "Store"
225msgid "Store"
210msgstr ""
226msgstr ""
211
227
@@ -218,10 +234,10 @@ msgid "All"
218msgstr ""
234msgstr ""
219
235
220#: qml/Greeter/Greeter.qml:157
236#: qml/Greeter/Greeter.qml:157
221−msgid "Swipe to unlock"
237+msgid "Unlock"
222msgstr ""
238msgstr ""
223
239
224−#: qml/Hud/HudParametrizedActionsPage.qml:132
240+#: qml/Hud/HudParametrizedActionsPage.qml:139
225msgid "Confirm"
241msgid "Confirm"
226msgstr ""
242msgstr ""
227
243
@@ -241,18 +257,10 @@ msgstr ""
241msgid "Speaking..."
257msgid "Speaking..."
242msgstr ""
258msgstr ""
243
259
244−#: qml/Notifications/NotificationMenuItemFactory.qml:105
260+#: qml/Notifications/NotificationMenuItemFactory.qml:116
245msgid "Show password"
261msgid "Show password"
246msgstr ""
262msgstr ""
247
263
248−#: qml/Notifications/NotificationMenuItemFactory.qml:120
249−msgid "Enter SIM PIN"
250−msgstr ""
251−
252−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
253−msgid "Sorry, incorrect PIN"
254−msgstr ""
255−
256#: qml/Panel/ActiveCallHint.qml:77
264#: qml/Panel/ActiveCallHint.qml:77
257msgid "Tap to return to call..."
265msgid "Tap to return to call..."
258msgstr ""
266msgstr ""
@@ -261,27 +269,31 @@ msgstr ""
261msgid "Conference"
269msgid "Conference"
262msgstr ""
270msgstr ""
263
271
264−#: qml/Panel/Indicators/MenuItemFactory.qml:651
272+#: qml/Panel/Indicators/MenuItemFactory.qml:600
273+msgid "Nothing is playing"
274+msgstr ""
275+
276+#: qml/Panel/Indicators/MenuItemFactory.qml:748
265msgid "In queue…"
277msgid "In queue…"
266msgstr ""
278msgstr ""
267
279
268−#: qml/Panel/Indicators/MenuItemFactory.qml:655
280+#: qml/Panel/Indicators/MenuItemFactory.qml:752
269msgid "Downloading"
281msgid "Downloading"
270msgstr ""
282msgstr ""
271
283
272−#: qml/Panel/Indicators/MenuItemFactory.qml:657
284+#: qml/Panel/Indicators/MenuItemFactory.qml:754
273msgid "Paused, tap to resume"
285msgid "Paused, tap to resume"
274msgstr ""
286msgstr ""
275
287
276−#: qml/Panel/Indicators/MenuItemFactory.qml:659
288+#: qml/Panel/Indicators/MenuItemFactory.qml:756
277msgid "Canceled"
289msgid "Canceled"
278msgstr ""
290msgstr ""
279
291
280−#: qml/Panel/Indicators/MenuItemFactory.qml:661
292+#: qml/Panel/Indicators/MenuItemFactory.qml:758
281msgid "Finished"
293msgid "Finished"
282msgstr ""
294msgstr ""
283
295
284−#: qml/Panel/Indicators/MenuItemFactory.qml:663
296+#: qml/Panel/Indicators/MenuItemFactory.qml:760
285msgid "Failed, tap to retry"
297msgid "Failed, tap to retry"
286msgstr ""
298msgstr ""
287
299
@@ -293,51 +305,55 @@ msgstr ""
293msgid "Roaming"
305msgid "Roaming"
294msgstr ""
306msgstr ""
295
307
296−#: qml/Shell.qml:266
308+#: qml/Shell.qml:346
297−msgid "Enter your passphrase"
309+msgid "Enter passphrase"
298msgstr ""
310msgstr ""
299
311
300−#: qml/Shell.qml:267
312+#: qml/Shell.qml:347
301msgid "Sorry, incorrect passphrase"
313msgid "Sorry, incorrect passphrase"
302msgstr ""
314msgstr ""
303
315
304−#: qml/Shell.qml:282
316+#: qml/Shell.qml:348
317+msgid "Please re-enter"
318+msgstr ""
319+
320+#: qml/Shell.qml:350
305−msgid "Enter your passcode"
321+msgid "Enter passcode"
306msgstr ""
322msgstr ""
307
323
308−#: qml/Shell.qml:283
324+#: qml/Shell.qml:351
309msgid "Sorry, incorrect passcode"
325msgid "Sorry, incorrect passcode"
310msgstr ""
326msgstr ""
311
327
312−#: qml/Shell.qml:273
328+#: qml/Shell.qml:354
313#, qt-format
329#, qt-format
314−msgid "Enter your %1"
330+msgid "Enter %1"
315msgstr ""
331msgstr ""
316
332
317−#: qml/Shell.qml:274
333+#: qml/Shell.qml:355
318#, qt-format
334#, qt-format
319msgid "Sorry, incorrect %1"
335msgid "Sorry, incorrect %1"
320msgstr ""
336msgstr ""
321
337
322−#: qml/Shell.qml:310
338+#: qml/Shell.qml:390
323msgid "Sorry, incorrect passphrase."
339msgid "Sorry, incorrect passphrase."
324msgstr ""
340msgstr ""
325
341
326−#: qml/Shell.qml:311
342+#: qml/Shell.qml:391
327msgid "Sorry, incorrect passcode."
343msgid "Sorry, incorrect passcode."
328msgstr ""
344msgstr ""
329
345
330−#: qml/Shell.qml:312
346+#: qml/Shell.qml:392
331msgid "This will be your last attempt."
347msgid "This will be your last attempt."
332msgstr ""
348msgstr ""
333
349
334−#: qml/Shell.qml:314
350+#: qml/Shell.qml:394
335msgid ""
351msgid ""
336"If passphrase is entered incorrectly, your phone will conduct a factory "
352"If passphrase is entered incorrectly, your phone will conduct a factory "
337"reset and all personal data will be deleted."
353"reset and all personal data will be deleted."
338msgstr ""
354msgstr ""
339
355
340−#: qml/Shell.qml:315
356+#: qml/Shell.qml:395
341msgid ""
357msgid ""
342"If passcode is entered incorrectly, your phone will conduct a factory reset "
358"If passcode is entered incorrectly, your phone will conduct a factory reset "
343"and all personal data will be deleted."
359"and all personal data will be deleted."
po/es.po+121−102
@@ -7,78 +7,108 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11−"PO-Revision-Date: 2014-08-27 15:20+0000\n"
11+"PO-Revision-Date: 2014-10-09 07:43+0000\n"
12−"Last-Translator: Leo Arias <leo.arias@canonical.com>\n"
12+"Last-Translator: Adolfo Jayme <fitoschido@gmail.com>\n"
13"Language-Team: Spanish <es@li.org>\n"
13"Language-Team: Spanish <es@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18+"X-Launchpad-Export-Date: 2014-10-10 05:23+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
19+"X-Generator: Launchpad (build 17196)\n"
19
20
20−#: plugins/LightDM/Greeter.cpp:129
21+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
22msgid "Password: "
22msgstr "Contraseña: "
23msgstr "Contraseña: "
23
24
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
27msgid "Pin shortcut"
27msgstr "Anclar"
28msgstr "Anclar"
28
29
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
31msgid "Unpin shortcut"
31msgstr "Desanclar"
32msgstr "Desanclar"
32
33
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr "Dispositivo bloqueado"
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr ""
41+"Se ha proporcionado una contraseña errónea demasiadas veces. Se ha bloqueado "
42+"el dispositivo."
43+
44+#: qml/Components/DelayedLockscreen.qml:63
45+msgid "You have been locked out due to too many failed passcode attempts."
46+msgstr ""
47+"Se ha bloqueado el dispositivo debido al gran número de intentos fallidos de "
48+"desbloqueo."
49+
50+#: qml/Components/DelayedLockscreen.qml:72
51+#, qt-format
52+msgid "Please wait %1 minute and then try again…"
53+msgid_plural "Please wait %1 minutes and then try again…"
54+msgstr[0] "Espere %1 minuto e inténtelo de nuevo..."
55+msgstr[1] "Espere %1 minutos e inténtelo de nuevo..."
56+
33#: qml/Components/Dialogs.qml:70
57#: qml/Components/Dialogs.qml:70
34msgid "Log out"
58msgid "Log out"
35−msgstr ""
59+msgstr "Cerrar la sesión"
36
60
37#: qml/Components/Dialogs.qml:71
61#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
62msgid "Are you sure you want to log out?"
39−msgstr ""
63+msgstr "̉¿Está seguro de que quiere cerrar la sesión?"
40
64
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
65#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
66#: qml/Components/Dialogs.qml:122
43msgid "No"
67msgid "No"
44−msgstr ""
68+msgstr "No"
45
69
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
70#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
71#: qml/Components/Dialogs.qml:129
48msgid "Yes"
72msgid "Yes"
49−msgstr ""
73+msgstr "Sí"
50
74
51#: qml/Components/Dialogs.qml:94
75#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
76msgid "Shut down"
53−msgstr ""
77+msgstr "Apagar"
54
78
55#: qml/Components/Dialogs.qml:95
79#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
80msgid "Are you sure you want to shut down?"
57−msgstr ""
81+msgstr "¿Está seguro de que quiere apagar?"
58
82
59#: qml/Components/Dialogs.qml:119
83#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
84msgid "Reboot"
61−msgstr ""
85+msgstr "Reiniciar"
62
86
63#: qml/Components/Dialogs.qml:120
87#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
88msgid "Are you sure you want to reboot?"
65−msgstr ""
89+msgstr "¿Esta seguro de que quiere reiniciar?"
66
90
67#: qml/Components/Dialogs.qml:144
91#: qml/Components/Dialogs.qml:144
68msgid "Power"
92msgid "Power"
69−msgstr ""
93+msgstr "Apagar"
70
94
71#: qml/Components/Dialogs.qml:145
95#: qml/Components/Dialogs.qml:145
72msgid ""
96msgid ""
73"Are you sure you would like\n"
97"Are you sure you would like\n"
74"to power off?"
98"to power off?"
75msgstr ""
99msgstr ""
100+"¿Está seguro de que quiere\n"
101+"apagar?"
76
102
77−#: qml/Components/Dialogs.qml:144
103+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
104msgid "Power off"
79msgstr "Apagar"
105msgstr "Apagar"
80
106
81−#: qml/Components/Dialogs.qml:162
107+#: qml/Components/Dialogs.qml:157
108+msgid "Restart"
109+msgstr "Reiniciar"
110+
111+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
112msgid "Cancel"
83msgstr "Cancelar"
113msgstr "Cancelar"
84
114
@@ -133,60 +163,44 @@ msgstr ""
133"Ahora domina los gestos de los bordes y puede usar el teléfono<br><br>Toque "
163"Ahora domina los gestos de los bordes y puede usar el teléfono<br><br>Toque "
134"la pantalla para comenzar"
164"la pantalla para comenzar"
135
165
136−#: qml/Components/Lockscreen.qml:167
166+#: qml/Components/Lockscreen.qml:220
137−msgid "Please wait"
138−msgstr "Espere un momento"
139−
140−#: qml/Components/Lockscreen.qml:172
141−msgid "Too many incorrect attempts"
142−msgstr "Demasiados intentos incorrectos"
143−
144−#: qml/Components/Lockscreen.qml:206
145msgid "Emergency Call"
167msgid "Emergency Call"
146msgstr "Llamada de emergencia"
168msgstr "Llamada de emergencia"
147
169
148−#: qml/Components/Lockscreen.qml:226
170+#: qml/Components/Lockscreen.qml:252
149msgid "OK"
171msgid "OK"
150msgstr "Aceptar"
172msgstr "Aceptar"
151
173
152−#: qml/Components/PassphraseLockscreen.qml:61
153−#, qt-format
154−msgid "Hello %1"
155−msgstr "Hola, %1"
156−
157−#: qml/Components/PassphraseLockscreen.qml:61
158−msgid "Hello"
159−msgstr "Hola"
160−
161−#: qml/Dash/GenericScopeView.qml:361
174+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
162msgid "See less"
175msgid "See less"
163msgstr "Ver menos"
176msgstr "Ver menos"
164
177
165−#: qml/Dash/GenericScopeView.qml:361
178+#: qml/Dash/GenericScopeView.qml:434
166msgid "See all"
179msgid "See all"
167msgstr "Ver todo"
180msgstr "Ver todo"
168
181
182+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
169−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
183+#: qml/Panel/SearchIndicator.qml:27
170msgid "Search"
184msgid "Search"
171msgstr "Buscar"
185msgstr "Buscar"
172
186
173−#: qml/Dash/PageHeader.qml:270
187+#: qml/Dash/PageHeader.qml:268
174msgid "Settings"
188msgid "Settings"
175−msgstr ""
189+msgstr "Configuración"
176
190
177−#: qml/Dash/PageHeader.qml:279
191+#: qml/Dash/PageHeader.qml:275
178msgid "Remove from Favorites"
192msgid "Remove from Favorites"
179−msgstr ""
193+msgstr "Quitar de favoritos"
180
194
181−#: qml/Dash/PageHeader.qml:279
195+#: qml/Dash/PageHeader.qml:275
182msgid "Add to Favorites"
196msgid "Add to Favorites"
183−msgstr ""
197+msgstr "Añadir a favoritos"
184
198
185−#: qml/Dash/Previews/PreviewActionCombo.qml:34
199+#: qml/Dash/Previews/PreviewActionCombo.qml:35
186msgid "More..."
200msgid "More..."
187msgstr "Más…"
201msgstr "Más…"
188
202
189−#: qml/Dash/Previews/PreviewActionCombo.qml:34
203+#: qml/Dash/Previews/PreviewActionCombo.qml:35
190msgid "Less..."
204msgid "Less..."
191msgstr "Menos…"
205msgstr "Menos…"
192
206
@@ -202,15 +216,23 @@ msgstr "Añadir una reseña"
202msgid "Send"
216msgid "Send"
203msgstr "Enviar"
217msgstr "Enviar"
204
218
205−#: qml/Dash/ScopesOverview.qml:201
219+#: qml/Dash/PullToRefreshScopeStyle.qml:55
206−msgid "Manage Dash"
220+msgid "Pull to refresh…"
207−msgstr "Gestionar tablero"
221+msgstr "Deslice para actualizar…"
208
222
223+#: qml/Dash/PullToRefreshScopeStyle.qml:60
224+msgid "Release to refresh…"
225+msgstr "Suelte para actualizar…"
226+
227+#: qml/Dash/ScopesOverview.qml:206
228+msgid "Manage Scopes"
229+msgstr "Administrar ámbitos"
230+
209−#: qml/Dash/ScopesOverview.qml:408
231+#: qml/Dash/ScopesOverview.qml:428
210msgid "Done"
232msgid "Done"
211msgstr "Hecho"
233msgstr "Hecho"
212
234
213−#: qml/Dash/ScopesOverview.qml:434
235+#: qml/Dash/ScopesOverview.qml:454
214msgid "Store"
236msgid "Store"
215msgstr "Tienda"
237msgstr "Tienda"
216
238
@@ -223,10 +245,10 @@ msgid "All"
223msgstr "Todo"
245msgstr "Todo"
224
246
225#: qml/Greeter/Greeter.qml:157
247#: qml/Greeter/Greeter.qml:157
226−msgid "Swipe to unlock"
248+msgid "Unlock"
227−msgstr "Deslice para desbloquear"
249+msgstr "Desbloquear"
228
250
229−#: qml/Hud/HudParametrizedActionsPage.qml:132
251+#: qml/Hud/HudParametrizedActionsPage.qml:139
230msgid "Confirm"
252msgid "Confirm"
231msgstr "Confirmar"
253msgstr "Confirmar"
232
254
@@ -246,18 +268,10 @@ msgstr "Hable ahora…"
246msgid "Speaking..."
268msgid "Speaking..."
247msgstr "Hablando…"
269msgstr "Hablando…"
248
270
249−#: qml/Notifications/NotificationMenuItemFactory.qml:105
271+#: qml/Notifications/NotificationMenuItemFactory.qml:116
250msgid "Show password"
272msgid "Show password"
251msgstr "Mostrar contraseña"
273msgstr "Mostrar contraseña"
252
274
253−#: qml/Notifications/NotificationMenuItemFactory.qml:120
254−msgid "Enter SIM PIN"
255−msgstr "Escriba el PIN de la SIM"
256−
257−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
258−msgid "Sorry, incorrect PIN"
259−msgstr "El PIN es incorrecto"
260−
261#: qml/Panel/ActiveCallHint.qml:77
275#: qml/Panel/ActiveCallHint.qml:77
262msgid "Tap to return to call..."
276msgid "Tap to return to call..."
263msgstr "Toque para volver a llamar..."
277msgstr "Toque para volver a llamar..."
@@ -266,27 +280,31 @@ msgstr "Toque para volver a llamar..."
266msgid "Conference"
280msgid "Conference"
267msgstr "Conferencia"
281msgstr "Conferencia"
268
282
269−#: qml/Panel/Indicators/MenuItemFactory.qml:651
283+#: qml/Panel/Indicators/MenuItemFactory.qml:600
284+msgid "Nothing is playing"
285+msgstr "Ningún contenido en reproducción"
286+
287+#: qml/Panel/Indicators/MenuItemFactory.qml:748
270msgid "In queue…"
288msgid "In queue…"
271msgstr "En espera…"
289msgstr "En espera…"
272
290
273−#: qml/Panel/Indicators/MenuItemFactory.qml:655
291+#: qml/Panel/Indicators/MenuItemFactory.qml:752
274msgid "Downloading"
292msgid "Downloading"
275msgstr "Descargando"
293msgstr "Descargando"
276
294
277−#: qml/Panel/Indicators/MenuItemFactory.qml:657
295+#: qml/Panel/Indicators/MenuItemFactory.qml:754
278msgid "Paused, tap to resume"
296msgid "Paused, tap to resume"
279msgstr "Pausado, toque para reanudar"
297msgstr "Pausado, toque para reanudar"
280
298
281−#: qml/Panel/Indicators/MenuItemFactory.qml:659
299+#: qml/Panel/Indicators/MenuItemFactory.qml:756
282msgid "Canceled"
300msgid "Canceled"
283msgstr "Cancelado"
301msgstr "Cancelado"
284
302
285−#: qml/Panel/Indicators/MenuItemFactory.qml:661
303+#: qml/Panel/Indicators/MenuItemFactory.qml:758
286msgid "Finished"
304msgid "Finished"
287msgstr "Finalizado"
305msgstr "Finalizado"
288
306
289−#: qml/Panel/Indicators/MenuItemFactory.qml:663
307+#: qml/Panel/Indicators/MenuItemFactory.qml:760
290msgid "Failed, tap to retry"
308msgid "Failed, tap to retry"
291msgstr "Falló, toque para reintentar"
309msgstr "Falló, toque para reintentar"
292
310
@@ -298,45 +316,49 @@ msgstr "Desbloquear SIM"
298msgid "Roaming"
316msgid "Roaming"
299msgstr "Itinerancia"
317msgstr "Itinerancia"
300
318
301−#: qml/Shell.qml:266
319+#: qml/Shell.qml:346
302−msgid "Enter your passphrase"
320+msgid "Enter passphrase"
303−msgstr "Introudzca su contraseña"
321+msgstr "Introduzca la contraseña"
304
322
305−#: qml/Shell.qml:267
323+#: qml/Shell.qml:347
306msgid "Sorry, incorrect passphrase"
324msgid "Sorry, incorrect passphrase"
307−msgstr "Lo sentimos, contraseña incorrecta"
325+msgstr "La contraseña es incorrecta"
308
326
309−#: qml/Shell.qml:282
327+#: qml/Shell.qml:348
328+msgid "Please re-enter"
329+msgstr "Reintroduzca"
330+
331+#: qml/Shell.qml:350
310−msgid "Enter your passcode"
332+msgid "Enter passcode"
311−msgstr ""
333+msgstr "Introduzca el código"
312
334
313−#: qml/Shell.qml:283
335+#: qml/Shell.qml:351
314msgid "Sorry, incorrect passcode"
336msgid "Sorry, incorrect passcode"
315−msgstr ""
337+msgstr "El código es incorrecto"
316
338
317−#: qml/Shell.qml:273
339+#: qml/Shell.qml:354
318#, qt-format
340#, qt-format
319−msgid "Enter your %1"
341+msgid "Enter %1"
320−msgstr "Introduzca su %1"
342+msgstr "Introduzca %1"
321
343
322−#: qml/Shell.qml:274
344+#: qml/Shell.qml:355
323#, qt-format
345#, qt-format
324msgid "Sorry, incorrect %1"
346msgid "Sorry, incorrect %1"
325−msgstr "Lo sentimos, %1 incorrecto"
347+msgstr "Incorrecto (%1)"
326
348
327−#: qml/Shell.qml:310
349+#: qml/Shell.qml:390
328msgid "Sorry, incorrect passphrase."
350msgid "Sorry, incorrect passphrase."
329−msgstr "Frase de paso incorrecta"
351+msgstr "La contraseña es incorrecta."
330
352
331−#: qml/Shell.qml:311
353+#: qml/Shell.qml:391
332msgid "Sorry, incorrect passcode."
354msgid "Sorry, incorrect passcode."
333−msgstr "Código de paso incorrecto"
355+msgstr "Código de acceso incorrecto."
334
356
335−#: qml/Shell.qml:312
357+#: qml/Shell.qml:392
336msgid "This will be your last attempt."
358msgid "This will be your last attempt."
337msgstr "Este será su último intento."
359msgstr "Este será su último intento."
338
360
339−#: qml/Shell.qml:314
361+#: qml/Shell.qml:394
340msgid ""
362msgid ""
341"If passphrase is entered incorrectly, your phone will conduct a factory "
363"If passphrase is entered incorrectly, your phone will conduct a factory "
342"reset and all personal data will be deleted."
364"reset and all personal data will be deleted."
@@ -344,7 +366,7 @@ msgstr ""
344"Si se introduce la frase incorrectamente, el teléfono volverá a la "
366"Si se introduce la frase incorrectamente, el teléfono volverá a la "
345"configuración de fábrica y se perderán todos los datos personales."
367"configuración de fábrica y se perderán todos los datos personales."
346
368
347−#: qml/Shell.qml:315
369+#: qml/Shell.qml:395
348msgid ""
370msgid ""
349"If passcode is entered incorrectly, your phone will conduct a factory reset "
371"If passcode is entered incorrectly, your phone will conduct a factory reset "
350"and all personal data will be deleted."
372"and all personal data will be deleted."
@@ -352,11 +374,8 @@ msgstr ""
352"Si se introduce el código incorrectamente, el teléfono volverá a la "
374"Si se introduce el código incorrectamente, el teléfono volverá a la "
353"configuración de fábrica y se perderán todos los datos personales."
375"configuración de fábrica y se perderán todos los datos personales."
354
376
355−#~ msgid "Restart"
377+#~ msgid "Enter SIM PIN"
356−#~ msgstr "Reiniciar"
378+#~ msgstr "Escriba el PIN de la SIM"
357−
358−#~ msgid "Are you sure you would like to turn power off?"
359−#~ msgstr "¿Está seguro de que quiere apagarlo?"
360
379
361−#~ msgid "Enter your PIN"
380+#~ msgid "Sorry, incorrect PIN"
362−#~ msgstr "Escriba el PIN"
381+#~ msgstr "El PIN es incorrecto"
po/eu.po+137−108
@@ -7,80 +7,107 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11−"PO-Revision-Date: 2014-08-06 22:51+0000\n"
11+"PO-Revision-Date: 2014-10-07 19:21+0000\n"
12"Last-Translator: Ibai Oihanguren Sala <Unknown>\n"
12"Last-Translator: Ibai Oihanguren Sala <Unknown>\n"
13"Language-Team: Basque <eu@li.org>\n"
13"Language-Team: Basque <eu@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:29+0000\n"
18+"X-Launchpad-Export-Date: 2014-10-09 06:36+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
19+"X-Generator: Launchpad (build 17196)\n"
19
20
20−#: plugins/LightDM/Greeter.cpp:129
21+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
22msgid "Password: "
22−msgstr ""
23+msgstr "Pasahitza: "
23
24
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
27msgid "Pin shortcut"
27msgstr "Ainguratu lasterbidea"
28msgstr "Ainguratu lasterbidea"
28
29
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
31msgid "Unpin shortcut"
31msgstr "Askatu lasterbidea"
32msgstr "Askatu lasterbidea"
32
33
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr "Gailua blokeatuta"
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr ""
41+"Gailua blokeatu da, pasaesaldia sartzeko saiakera gehiegi hutsegin "
42+"dituzulako."
43+
44+#: qml/Components/DelayedLockscreen.qml:63
45+msgid "You have been locked out due to too many failed passcode attempts."
46+msgstr ""
47+"Gailua blokeatu da, pasakodea sartzeko saiakera gehiegi hutsegin dituzulako."
48+
49+#: qml/Components/DelayedLockscreen.qml:72
50+#, qt-format
51+msgid "Please wait %1 minute and then try again…"
52+msgid_plural "Please wait %1 minutes and then try again…"
53+msgstr[0] "Itxaron minutu %1ez eta saiatu berriro…"
54+msgstr[1] "Itxaron %1 minutuz eta saiatu berriro…"
55+
33#: qml/Components/Dialogs.qml:70
56#: qml/Components/Dialogs.qml:70
34msgid "Log out"
57msgid "Log out"
35−msgstr ""
58+msgstr "Amaitu saioa"
36
59
37#: qml/Components/Dialogs.qml:71
60#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
61msgid "Are you sure you want to log out?"
39−msgstr ""
62+msgstr "Ziur saioa amaitu nahi duzula?"
40
63
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
64#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
65#: qml/Components/Dialogs.qml:122
43msgid "No"
66msgid "No"
44−msgstr ""
67+msgstr "Ez"
45
68
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
69#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
70#: qml/Components/Dialogs.qml:129
48msgid "Yes"
71msgid "Yes"
49−msgstr ""
72+msgstr "Bai"
50
73
51#: qml/Components/Dialogs.qml:94
74#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
75msgid "Shut down"
53−msgstr ""
76+msgstr "Itzali"
54
77
55#: qml/Components/Dialogs.qml:95
78#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
79msgid "Are you sure you want to shut down?"
57−msgstr ""
80+msgstr "Ziur itzali nahi duzula?"
58
81
59#: qml/Components/Dialogs.qml:119
82#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
83msgid "Reboot"
61−msgstr ""
84+msgstr "Berrabiarazi"
62
85
63#: qml/Components/Dialogs.qml:120
86#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
87msgid "Are you sure you want to reboot?"
65−msgstr ""
88+msgstr "Ziur berrabiarazi nahi duzula?"
66
89
67#: qml/Components/Dialogs.qml:144
90#: qml/Components/Dialogs.qml:144
68msgid "Power"
91msgid "Power"
69−msgstr ""
92+msgstr "Piztu/itzali"
70
93
71#: qml/Components/Dialogs.qml:145
94#: qml/Components/Dialogs.qml:145
72msgid ""
95msgid ""
73"Are you sure you would like\n"
96"Are you sure you would like\n"
74"to power off?"
97"to power off?"
75−msgstr ""
98+msgstr "Ziur itzali nahi duzula?"
76
99
77−#: qml/Components/Dialogs.qml:144
100+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
101msgid "Power off"
79−msgstr ""
102+msgstr "Itzali"
103+
104+#: qml/Components/Dialogs.qml:157
105+msgid "Restart"
106+msgstr "Berrabiarazi"
80
107
81−#: qml/Components/Dialogs.qml:162
108+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
109msgid "Cancel"
83−msgstr ""
110+msgstr "Utzi"
84
111
85#: qml/Components/EdgeDemoOverlay.qml:151
112#: qml/Components/EdgeDemoOverlay.qml:151
86msgid "Skip intro"
113msgid "Skip intro"
@@ -118,7 +145,7 @@ msgstr "Ezkerreko ertza"
118#: qml/Components/EdgeDemo.qml:199
145#: qml/Components/EdgeDemo.qml:199
119msgid "Swipe from the left to reveal the launcher for quick access to apps"
146msgid "Swipe from the left to reveal the launcher for quick access to apps"
120msgstr ""
147msgstr ""
121−"Pasatu hatza ezkerretik abiarazlea erakutsi eta aplikazioak eskura berehala "
148+"Pasatu hatza ezkerretik abiarazlea erakutsi eta aplikazioak berehala eskura "
122"izateko"
149"izateko"
123
150
124#: qml/Components/EdgeDemo.qml:226
151#: qml/Components/EdgeDemo.qml:226
@@ -133,60 +160,44 @@ msgstr ""
133"Jadanik ezagutzen dituzu ertzetako keinuak, eta mugikorra erabiltzen has "
160"Jadanik ezagutzen dituzu ertzetako keinuak, eta mugikorra erabiltzen has "
134"zaitezke<br><br>Sakatu pantailan hasteko"
161"zaitezke<br><br>Sakatu pantailan hasteko"
135
162
136−#: qml/Components/Lockscreen.qml:167
163+#: qml/Components/Lockscreen.qml:220
137−msgid "Please wait"
138−msgstr ""
139−
140−#: qml/Components/Lockscreen.qml:172
141−msgid "Too many incorrect attempts"
142−msgstr ""
143−
144−#: qml/Components/Lockscreen.qml:206
145msgid "Emergency Call"
164msgid "Emergency Call"
146msgstr "Larrialdi-deia"
165msgstr "Larrialdi-deia"
147
166
148−#: qml/Components/Lockscreen.qml:226
167+#: qml/Components/Lockscreen.qml:252
149msgid "OK"
168msgid "OK"
150msgstr "Ados"
169msgstr "Ados"
151
170
152−#: qml/Components/PassphraseLockscreen.qml:61
153−#, qt-format
154−msgid "Hello %1"
155−msgstr "Kaixo %1"
156−
157−#: qml/Components/PassphraseLockscreen.qml:61
158−msgid "Hello"
159−msgstr "Kaixo"
160−
161−#: qml/Dash/GenericScopeView.qml:361
171+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
162msgid "See less"
172msgid "See less"
163msgstr "Ikusi gutxiago"
173msgstr "Ikusi gutxiago"
164
174
165−#: qml/Dash/GenericScopeView.qml:361
175+#: qml/Dash/GenericScopeView.qml:434
166msgid "See all"
176msgid "See all"
167msgstr "Ikusi guztiak"
177msgstr "Ikusi guztiak"
168
178
179+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
169−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
180+#: qml/Panel/SearchIndicator.qml:27
170msgid "Search"
181msgid "Search"
171msgstr "Bilatu"
182msgstr "Bilatu"
172
183
173−#: qml/Dash/PageHeader.qml:270
184+#: qml/Dash/PageHeader.qml:268
174msgid "Settings"
185msgid "Settings"
175−msgstr ""
186+msgstr "Ezarpenak"
176
187
177−#: qml/Dash/PageHeader.qml:279
188+#: qml/Dash/PageHeader.qml:275
178msgid "Remove from Favorites"
189msgid "Remove from Favorites"
179−msgstr ""
190+msgstr "Kendu gogokoetatik"
180
191
181−#: qml/Dash/PageHeader.qml:279
192+#: qml/Dash/PageHeader.qml:275
182msgid "Add to Favorites"
193msgid "Add to Favorites"
183−msgstr ""
194+msgstr "Gehitu gogokoetara"
184
195
185−#: qml/Dash/Previews/PreviewActionCombo.qml:34
196+#: qml/Dash/Previews/PreviewActionCombo.qml:35
186msgid "More..."
197msgid "More..."
187msgstr "Gehiago..."
198msgstr "Gehiago..."
188
199
189−#: qml/Dash/Previews/PreviewActionCombo.qml:34
200+#: qml/Dash/Previews/PreviewActionCombo.qml:35
190msgid "Less..."
201msgid "Less..."
191msgstr "Gutxiago..."
202msgstr "Gutxiago..."
192
203
@@ -202,33 +213,41 @@ msgstr "Gehitu kritika"
202msgid "Send"
213msgid "Send"
203msgstr "Bidali"
214msgstr "Bidali"
204
215
205−#: qml/Dash/ScopesOverview.qml:201
216+#: qml/Dash/PullToRefreshScopeStyle.qml:55
206−msgid "Manage Dash"
217+msgid "Pull to refresh…"
207−msgstr ""
218+msgstr "Tiratu freskatzeko…"
208
219
220+#: qml/Dash/PullToRefreshScopeStyle.qml:60
221+msgid "Release to refresh…"
222+msgstr "Askatu freskatzeko…"
223+
209−#: qml/Dash/ScopesOverview.qml:408
224+#: qml/Dash/ScopesOverview.qml:206
225+msgid "Manage Scopes"
226+msgstr "Kudeatu eremuak"
227+
228+#: qml/Dash/ScopesOverview.qml:428
210msgid "Done"
229msgid "Done"
211−msgstr ""
230+msgstr "Eginda"
212
231
213−#: qml/Dash/ScopesOverview.qml:434
232+#: qml/Dash/ScopesOverview.qml:454
214msgid "Store"
233msgid "Store"
215−msgstr ""
234+msgstr "Denda"
216
235
217#: qml/Dash/ScopesOverviewTab.qml:36
236#: qml/Dash/ScopesOverviewTab.qml:36
218msgid "Favorites"
237msgid "Favorites"
219−msgstr ""
238+msgstr "Gogokoak"
220
239
221#: qml/Dash/ScopesOverviewTab.qml:54
240#: qml/Dash/ScopesOverviewTab.qml:54
222msgid "All"
241msgid "All"
223−msgstr ""
242+msgstr "Guztiak"
224
243
225#: qml/Greeter/Greeter.qml:157
244#: qml/Greeter/Greeter.qml:157
226−msgid "Swipe to unlock"
245+msgid "Unlock"
227−msgstr "Pasatu hatza desblokeatzeko"
246+msgstr "Desblokeatu"
228
247
229−#: qml/Hud/HudParametrizedActionsPage.qml:132
248+#: qml/Hud/HudParametrizedActionsPage.qml:139
230msgid "Confirm"
249msgid "Confirm"
231−msgstr "Baieztatu"
250+msgstr "Berretsi"
232
251
233#: qml/Hud/Hud.qml:61 qml/Hud/Hud.qml:99 qml/Hud/Hud.qml:372
252#: qml/Hud/Hud.qml:61 qml/Hud/Hud.qml:99 qml/Hud/Hud.qml:372
234msgid "Type or say a command"
253msgid "Type or say a command"
@@ -246,104 +265,114 @@ msgstr "Hitz egin orain..."
246msgid "Speaking..."
265msgid "Speaking..."
247msgstr "Hitz egiten..."
266msgstr "Hitz egiten..."
248
267
249−#: qml/Notifications/NotificationMenuItemFactory.qml:105
268+#: qml/Notifications/NotificationMenuItemFactory.qml:116
250msgid "Show password"
269msgid "Show password"
251msgstr "Erakutsi pasahitza"
270msgstr "Erakutsi pasahitza"
252
271
253−#: qml/Notifications/NotificationMenuItemFactory.qml:120
254−msgid "Enter SIM PIN"
255−msgstr ""
256−
257−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
258−msgid "Sorry, incorrect PIN"
259−msgstr ""
260−
261#: qml/Panel/ActiveCallHint.qml:77
272#: qml/Panel/ActiveCallHint.qml:77
262msgid "Tap to return to call..."
273msgid "Tap to return to call..."
263−msgstr "Sakatu deia itzultzeko..."
274+msgstr "Sakatu deira itzultzeko..."
264
275
265#: qml/Panel/ActiveCallHint.qml:90
276#: qml/Panel/ActiveCallHint.qml:90
266msgid "Conference"
277msgid "Conference"
267msgstr "Konferentzia"
278msgstr "Konferentzia"
268
279
269−#: qml/Panel/Indicators/MenuItemFactory.qml:651
280+#: qml/Panel/Indicators/MenuItemFactory.qml:600
281+msgid "Nothing is playing"
282+msgstr "Ez dago ezer erreproduzitzen"
283+
284+#: qml/Panel/Indicators/MenuItemFactory.qml:748
270msgid "In queue…"
285msgid "In queue…"
271msgstr "Ilaran..."
286msgstr "Ilaran..."
272
287
273−#: qml/Panel/Indicators/MenuItemFactory.qml:655
288+#: qml/Panel/Indicators/MenuItemFactory.qml:752
274msgid "Downloading"
289msgid "Downloading"
275msgstr "Deskargatzen"
290msgstr "Deskargatzen"
276
291
277−#: qml/Panel/Indicators/MenuItemFactory.qml:657
292+#: qml/Panel/Indicators/MenuItemFactory.qml:754
278msgid "Paused, tap to resume"
293msgid "Paused, tap to resume"
279msgstr "Pausatuta, sakatu jarraitzeko"
294msgstr "Pausatuta, sakatu jarraitzeko"
280
295
281−#: qml/Panel/Indicators/MenuItemFactory.qml:659
296+#: qml/Panel/Indicators/MenuItemFactory.qml:756
282msgid "Canceled"
297msgid "Canceled"
283msgstr "Utzita"
298msgstr "Utzita"
284
299
285−#: qml/Panel/Indicators/MenuItemFactory.qml:661
300+#: qml/Panel/Indicators/MenuItemFactory.qml:758
286msgid "Finished"
301msgid "Finished"
287msgstr "Amaituta"
302msgstr "Amaituta"
288
303
289−#: qml/Panel/Indicators/MenuItemFactory.qml:663
304+#: qml/Panel/Indicators/MenuItemFactory.qml:760
290msgid "Failed, tap to retry"
305msgid "Failed, tap to retry"
291msgstr "Huts egin du, sakatu berriro saiatzeko"
306msgstr "Huts egin du, sakatu berriro saiatzeko"
292
307
293#: qml/Panel/Indicators/ModemInfoItem.qml:105
308#: qml/Panel/Indicators/ModemInfoItem.qml:105
294msgid "Unlock SIM"
309msgid "Unlock SIM"
295−msgstr ""
310+msgstr "Desblokeatu SIMa"
296
311
297#: qml/Panel/Indicators/RoamingIndication.qml:27
312#: qml/Panel/Indicators/RoamingIndication.qml:27
298msgid "Roaming"
313msgid "Roaming"
299−msgstr ""
314+msgstr "Ibiltaritza"
300
315
301−#: qml/Shell.qml:266
316+#: qml/Shell.qml:346
302−msgid "Enter your passphrase"
317+msgid "Enter passphrase"
303−msgstr ""
318+msgstr "Sartu pasaesaldia"
304
319
305−#: qml/Shell.qml:267
320+#: qml/Shell.qml:347
306msgid "Sorry, incorrect passphrase"
321msgid "Sorry, incorrect passphrase"
307−msgstr ""
322+msgstr "Sentitzen dugu, pasaesaldia okerrekoa da"
308
323
309−#: qml/Shell.qml:282
324+#: qml/Shell.qml:348
325+msgid "Please re-enter"
326+msgstr "Errepikatu"
327+
328+#: qml/Shell.qml:350
310−msgid "Enter your passcode"
329+msgid "Enter passcode"
311−msgstr ""
330+msgstr "Sartu pasakodea"
312
331
313−#: qml/Shell.qml:283
332+#: qml/Shell.qml:351
314msgid "Sorry, incorrect passcode"
333msgid "Sorry, incorrect passcode"
315−msgstr ""
334+msgstr "Sentitzen dugu, pasakodea okerrekoa da"
316
335
317−#: qml/Shell.qml:273
336+#: qml/Shell.qml:354
318#, qt-format
337#, qt-format
319−msgid "Enter your %1"
338+msgid "Enter %1"
320−msgstr ""
339+msgstr "Sartu %1"
321
340
322−#: qml/Shell.qml:274
341+#: qml/Shell.qml:355
323#, qt-format
342#, qt-format
324msgid "Sorry, incorrect %1"
343msgid "Sorry, incorrect %1"
325−msgstr ""
344+msgstr "Sentitzen dugu, %1 okerrekoa da"
326
345
327−#: qml/Shell.qml:310
346+#: qml/Shell.qml:390
328msgid "Sorry, incorrect passphrase."
347msgid "Sorry, incorrect passphrase."
329−msgstr ""
348+msgstr "Sentitzen dugu, pasaesaldia okerrekoa da."
330
349
331−#: qml/Shell.qml:311
350+#: qml/Shell.qml:391
332msgid "Sorry, incorrect passcode."
351msgid "Sorry, incorrect passcode."
333−msgstr ""
352+msgstr "Sentitzen dugu, pasakodea okerrekoa da."
334
353
335−#: qml/Shell.qml:312
354+#: qml/Shell.qml:392
336msgid "This will be your last attempt."
355msgid "This will be your last attempt."
337−msgstr ""
356+msgstr "Hau duzu azken saiakera."
338
357
339−#: qml/Shell.qml:314
358+#: qml/Shell.qml:394
340msgid ""
359msgid ""
341"If passphrase is entered incorrectly, your phone will conduct a factory "
360"If passphrase is entered incorrectly, your phone will conduct a factory "
342"reset and all personal data will be deleted."
361"reset and all personal data will be deleted."
343msgstr ""
362msgstr ""
363+"Okerreko pasaesaldia sartzen baduzu, telefonoaren jatorrizko ezarpenak "
364+"berrezarri eta datu pertsonal guztiak ezabatuko dira."
344
365
345−#: qml/Shell.qml:315
366+#: qml/Shell.qml:395
346msgid ""
367msgid ""
347"If passcode is entered incorrectly, your phone will conduct a factory reset "
368"If passcode is entered incorrectly, your phone will conduct a factory reset "
348"and all personal data will be deleted."
369"and all personal data will be deleted."
349msgstr ""
370msgstr ""
371+"Okerreko pasakodea sartzen baduzu, telefonoaren jatorrizko ezarpenak "
372+"berrezarri eta datu pertsonal guztiak ezabatuko dira."
373+
374+#~ msgid "Sorry, incorrect PIN"
375+#~ msgstr "Sentitzen dugu, PINa okerrekoa da"
376+
377+#~ msgid "Enter SIM PIN"
378+#~ msgstr "Sartu SIMaren PINa"
po/fa.po+93−83
@@ -7,29 +7,49 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11−"PO-Revision-Date: 2014-08-27 20:08+0000\n"
11+"PO-Revision-Date: 2014-10-11 23:41+0000\n"
12"Last-Translator: Danial Behzadi <dani.behzi@gmail.com>\n"
12"Last-Translator: Danial Behzadi <dani.behzi@gmail.com>\n"
13"Language-Team: Persian <fa@li.org>\n"
13"Language-Team: Persian <fa@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=1; plural=0;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18+"X-Launchpad-Export-Date: 2014-10-12 06:55+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
19+"X-Generator: Launchpad (build 17196)\n"
19
20
20−#: plugins/LightDM/Greeter.cpp:129
21+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
22msgid "Password: "
22msgstr "گذرواژه: "
23msgstr "گذرواژه: "
23
24
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
27msgid "Pin shortcut"
27msgstr "سنجاق کردن میانبر"
28msgstr "سنجاق کردن میانبر"
28
29
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
31msgid "Unpin shortcut"
31msgstr "برداشتن سنجاق میانبر"
32msgstr "برداشتن سنجاق میانبر"
32
33
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr "دستگاه قفل شد"
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr ""
41+"شما به دلیل تلاش‌های بسیار زیاد شکست خورده برای عبارت‌عبور قفل شده‌اید."
42+
43+#: qml/Components/DelayedLockscreen.qml:63
44+msgid "You have been locked out due to too many failed passcode attempts."
45+msgstr "شما به دلیل تلاش‌های بسیار زیاد شکست خورده برای رمزعبور قفل شده‌اید."
46+
47+#: qml/Components/DelayedLockscreen.qml:72
48+#, qt-format
49+msgid "Please wait %1 minute and then try again…"
50+msgid_plural "Please wait %1 minutes and then try again…"
51+msgstr[0] "لطفاُ %1 دقیقه صبر نموده و سپس مجدّداً تلاش نمایید…"
52+
33#: qml/Components/Dialogs.qml:70
53#: qml/Components/Dialogs.qml:70
34msgid "Log out"
54msgid "Log out"
35msgstr "خروج از حساب"
55msgstr "خروج از حساب"
@@ -76,11 +96,15 @@ msgstr ""
76"آیا مطمئن هستید که\n"
96"آیا مطمئن هستید که\n"
77"می‌خواهید خاموش کنید؟"
97"می‌خواهید خاموش کنید؟"
78
98
79−#: qml/Components/Dialogs.qml:144
99+#: qml/Components/Dialogs.qml:147
80msgid "Power off"
100msgid "Power off"
81msgstr "خاموش کردن"
101msgstr "خاموش کردن"
82
102
83−#: qml/Components/Dialogs.qml:162
103+#: qml/Components/Dialogs.qml:157
104+msgid "Restart"
105+msgstr "شروع مجدّد"
106+
107+#: qml/Components/Dialogs.qml:167
84msgid "Cancel"
108msgid "Cancel"
85msgstr "لغو"
109msgstr "لغو"
86
110
@@ -132,60 +156,44 @@ msgstr ""
132"هم اکنون در استفاده از ژست های حرکتی مهارت لازم را دارید و می‌توانید استفاده "
156"هم اکنون در استفاده از ژست های حرکتی مهارت لازم را دارید و می‌توانید استفاده "
133"از تلفن را آغاز کنید<br><br>برای شروع صفحه را لمس کنید"
157"از تلفن را آغاز کنید<br><br>برای شروع صفحه را لمس کنید"
134
158
135−#: qml/Components/Lockscreen.qml:167
159+#: qml/Components/Lockscreen.qml:220
136−msgid "Please wait"
137−msgstr "لطفاً صبر کنید"
138−
139−#: qml/Components/Lockscreen.qml:172
140−msgid "Too many incorrect attempts"
141−msgstr "تلاش‌های ناموفّق زیاد"
142−
143−#: qml/Components/Lockscreen.qml:206
144msgid "Emergency Call"
160msgid "Emergency Call"
145msgstr "تماس اضطراری"
161msgstr "تماس اضطراری"
146
162
147−#: qml/Components/Lockscreen.qml:226
163+#: qml/Components/Lockscreen.qml:252
148msgid "OK"
164msgid "OK"
149msgstr "قبول"
165msgstr "قبول"
150
166
151−#: qml/Components/PassphraseLockscreen.qml:61
152−#, qt-format
153−msgid "Hello %1"
154−msgstr "سلام %1"
155−
156−#: qml/Components/PassphraseLockscreen.qml:61
157−msgid "Hello"
158−msgstr "سلام"
159−
160−#: qml/Dash/GenericScopeView.qml:361
167+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
161msgid "See less"
168msgid "See less"
162msgstr "کم‌تر ببینید"
169msgstr "کم‌تر ببینید"
163
170
164−#: qml/Dash/GenericScopeView.qml:361
171+#: qml/Dash/GenericScopeView.qml:434
165msgid "See all"
172msgid "See all"
166msgstr "دیدن همه"
173msgstr "دیدن همه"
167
174
175+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
168−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
176+#: qml/Panel/SearchIndicator.qml:27
169msgid "Search"
177msgid "Search"
170msgstr "جست‌وجو"
178msgstr "جست‌وجو"
171
179
172−#: qml/Dash/PageHeader.qml:270
180+#: qml/Dash/PageHeader.qml:268
173msgid "Settings"
181msgid "Settings"
174msgstr "تنظیمات"
182msgstr "تنظیمات"
175
183
176−#: qml/Dash/PageHeader.qml:279
184+#: qml/Dash/PageHeader.qml:275
177msgid "Remove from Favorites"
185msgid "Remove from Favorites"
178msgstr "برداشتن از برگزیده‌ها"
186msgstr "برداشتن از برگزیده‌ها"
179
187
180−#: qml/Dash/PageHeader.qml:279
188+#: qml/Dash/PageHeader.qml:275
181msgid "Add to Favorites"
189msgid "Add to Favorites"
182msgstr "افزودن به برگزیده‌ها"
190msgstr "افزودن به برگزیده‌ها"
183
191
184−#: qml/Dash/Previews/PreviewActionCombo.qml:34
192+#: qml/Dash/Previews/PreviewActionCombo.qml:35
185msgid "More..."
193msgid "More..."
186msgstr "بیش‌تر…"
194msgstr "بیش‌تر…"
187
195
188−#: qml/Dash/Previews/PreviewActionCombo.qml:34
196+#: qml/Dash/Previews/PreviewActionCombo.qml:35
189msgid "Less..."
197msgid "Less..."
190msgstr "کم‌تر…"
198msgstr "کم‌تر…"
191
199
@@ -201,15 +209,23 @@ msgstr "افزودن یک بازبینی"
201msgid "Send"
209msgid "Send"
202msgstr "ارسال"
210msgstr "ارسال"
203
211
204−#: qml/Dash/ScopesOverview.qml:201
212+#: qml/Dash/PullToRefreshScopeStyle.qml:55
205−msgid "Manage Dash"
213+msgid "Pull to refresh…"
206−msgstr "مدیریت دش"
214+msgstr "برای تازه‌سازی بکشید…"
215+
216+#: qml/Dash/PullToRefreshScopeStyle.qml:60
217+msgid "Release to refresh…"
218+msgstr "برای تازه‌سازی رها کنید…"
207
219
208−#: qml/Dash/ScopesOverview.qml:408
220+#: qml/Dash/ScopesOverview.qml:206
221+msgid "Manage Scopes"
222+msgstr "مدیریت حوزه‌ها"
223+
224+#: qml/Dash/ScopesOverview.qml:428
209msgid "Done"
225msgid "Done"
210msgstr "انجام شد"
226msgstr "انجام شد"
211
227
212−#: qml/Dash/ScopesOverview.qml:434
228+#: qml/Dash/ScopesOverview.qml:454
213msgid "Store"
229msgid "Store"
214msgstr "فروشگاه"
230msgstr "فروشگاه"
215
231
@@ -222,10 +238,10 @@ msgid "All"
222msgstr "همه"
238msgstr "همه"
223
239
224#: qml/Greeter/Greeter.qml:157
240#: qml/Greeter/Greeter.qml:157
225−msgid "Swipe to unlock"
241+msgid "Unlock"
226−msgstr "برای باز کردن قفل بکشد"
242+msgstr "بازکردن قفل"
227
243
228−#: qml/Hud/HudParametrizedActionsPage.qml:132
244+#: qml/Hud/HudParametrizedActionsPage.qml:139
229msgid "Confirm"
245msgid "Confirm"
230msgstr "تأیید"
246msgstr "تأیید"
231
247
@@ -245,18 +261,10 @@ msgstr "اکنون صحبت کنید…"
245msgid "Speaking..."
261msgid "Speaking..."
246msgstr "در حال صحبت کردن…"
262msgstr "در حال صحبت کردن…"
247
263
248−#: qml/Notifications/NotificationMenuItemFactory.qml:105
264+#: qml/Notifications/NotificationMenuItemFactory.qml:116
249msgid "Show password"
265msgid "Show password"
250msgstr "نمایش گذرواژه"
266msgstr "نمایش گذرواژه"
251
267
252−#: qml/Notifications/NotificationMenuItemFactory.qml:120
253−msgid "Enter SIM PIN"
254−msgstr "PIN سیم‌کارت را وارد کنید"
255−
256−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
257−msgid "Sorry, incorrect PIN"
258−msgstr "متأسّفیم، PIN نادرست بود"
259−
260#: qml/Panel/ActiveCallHint.qml:77
268#: qml/Panel/ActiveCallHint.qml:77
261msgid "Tap to return to call..."
269msgid "Tap to return to call..."
262msgstr "برای بازگشت به تماس ضربه بزنید…"
270msgstr "برای بازگشت به تماس ضربه بزنید…"
@@ -265,27 +273,31 @@ msgstr "برای بازگشت به تماس ضربه بزنید…"
265msgid "Conference"
273msgid "Conference"
266msgstr "کنفرانس"
274msgstr "کنفرانس"
267
275
268−#: qml/Panel/Indicators/MenuItemFactory.qml:651
276+#: qml/Panel/Indicators/MenuItemFactory.qml:600
277+msgid "Nothing is playing"
278+msgstr "هیچ چیزی در حال پخش نیست"
279+
280+#: qml/Panel/Indicators/MenuItemFactory.qml:748
269msgid "In queue…"
281msgid "In queue…"
270msgstr "در صف…"
282msgstr "در صف…"
271
283
272−#: qml/Panel/Indicators/MenuItemFactory.qml:655
284+#: qml/Panel/Indicators/MenuItemFactory.qml:752
273msgid "Downloading"
285msgid "Downloading"
274msgstr "در حال بارگیری"
286msgstr "در حال بارگیری"
275
287
276−#: qml/Panel/Indicators/MenuItemFactory.qml:657
288+#: qml/Panel/Indicators/MenuItemFactory.qml:754
277msgid "Paused, tap to resume"
289msgid "Paused, tap to resume"
278msgstr "مکث شد، برای از سر گیری ضربه بزنید"
290msgstr "مکث شد، برای از سر گیری ضربه بزنید"
279
291
280−#: qml/Panel/Indicators/MenuItemFactory.qml:659
292+#: qml/Panel/Indicators/MenuItemFactory.qml:756
281msgid "Canceled"
293msgid "Canceled"
282msgstr "لغو شد"
294msgstr "لغو شد"
283
295
284−#: qml/Panel/Indicators/MenuItemFactory.qml:661
296+#: qml/Panel/Indicators/MenuItemFactory.qml:758
285msgid "Finished"
297msgid "Finished"
286msgstr "پایان یافت"
298msgstr "پایان یافت"
287
299
288−#: qml/Panel/Indicators/MenuItemFactory.qml:663
300+#: qml/Panel/Indicators/MenuItemFactory.qml:760
289msgid "Failed, tap to retry"
301msgid "Failed, tap to retry"
290msgstr "شکست خورد، برای تلاش دوباره ضربه بزنید"
302msgstr "شکست خورد، برای تلاش دوباره ضربه بزنید"
291
303
@@ -297,45 +309,49 @@ msgstr "باز کردن قفل سیم‌کارت"
297msgid "Roaming"
309msgid "Roaming"
298msgstr "رومینگ"
310msgstr "رومینگ"
299
311
300−#: qml/Shell.qml:266
312+#: qml/Shell.qml:346
301−msgid "Enter your passphrase"
313+msgid "Enter passphrase"
302−msgstr "عبارت‌عبورتان را وارد کنید"
314+msgstr "عبارت‌عبور را وارد کنید"
303
315
304−#: qml/Shell.qml:267
316+#: qml/Shell.qml:347
305msgid "Sorry, incorrect passphrase"
317msgid "Sorry, incorrect passphrase"
306msgstr "متأسّفیم، عبارت‌عبور نادرست بود"
318msgstr "متأسّفیم، عبارت‌عبور نادرست بود"
307
319
308−#: qml/Shell.qml:282
320+#: qml/Shell.qml:348
321+msgid "Please re-enter"
322+msgstr "لطفاً دوباره وارد کنید"
323+
324+#: qml/Shell.qml:350
309−msgid "Enter your passcode"
325+msgid "Enter passcode"
310−msgstr "رمزعبورتان را وارد کنید"
326+msgstr "رمزعبور را وارد کنید"
311
327
312−#: qml/Shell.qml:283
328+#: qml/Shell.qml:351
313msgid "Sorry, incorrect passcode"
329msgid "Sorry, incorrect passcode"
314msgstr "متأسّفیم، رمزعبور نادرست بود"
330msgstr "متأسّفیم، رمزعبور نادرست بود"
315
331
316−#: qml/Shell.qml:273
332+#: qml/Shell.qml:354
317#, qt-format
333#, qt-format
318−msgid "Enter your %1"
334+msgid "Enter %1"
319−msgstr "%1 خود را وارد کنید"
335+msgstr "%1 را وارد کنید"
320
336
321−#: qml/Shell.qml:274
337+#: qml/Shell.qml:355
322#, qt-format
338#, qt-format
323msgid "Sorry, incorrect %1"
339msgid "Sorry, incorrect %1"
324msgstr "متأسّفیم، %1 نادرست بود"
340msgstr "متأسّفیم، %1 نادرست بود"
325
341
326−#: qml/Shell.qml:310
342+#: qml/Shell.qml:390
327msgid "Sorry, incorrect passphrase."
343msgid "Sorry, incorrect passphrase."
328msgstr "متأسّفیم، عبارت‌عبور نادرست است."
344msgstr "متأسّفیم، عبارت‌عبور نادرست است."
329
345
330−#: qml/Shell.qml:311
346+#: qml/Shell.qml:391
331msgid "Sorry, incorrect passcode."
347msgid "Sorry, incorrect passcode."
332msgstr "متأسّفیم، رمزعبور نادرست است."
348msgstr "متأسّفیم، رمزعبور نادرست است."
333
349
334−#: qml/Shell.qml:312
350+#: qml/Shell.qml:392
335msgid "This will be your last attempt."
351msgid "This will be your last attempt."
336msgstr "این آخرین تلاش شما خواهد بود."
352msgstr "این آخرین تلاش شما خواهد بود."
337
353
338−#: qml/Shell.qml:314
354+#: qml/Shell.qml:394
339msgid ""
355msgid ""
340"If passphrase is entered incorrectly, your phone will conduct a factory "
356"If passphrase is entered incorrectly, your phone will conduct a factory "
341"reset and all personal data will be deleted."
357"reset and all personal data will be deleted."
@@ -343,16 +359,10 @@ msgstr ""
343"اگر عبارت‌عبور نادرست وارد شود، تلفن شما بازنشانی کارخانه خواهد شد و تمامی "
359"اگر عبارت‌عبور نادرست وارد شود، تلفن شما بازنشانی کارخانه خواهد شد و تمامی "
344"اطّلاعات شخصی حذف خواهند شد."
360"اطّلاعات شخصی حذف خواهند شد."
345
361
346−#: qml/Shell.qml:315
362+#: qml/Shell.qml:395
347msgid ""
363msgid ""
348"If passcode is entered incorrectly, your phone will conduct a factory reset "
364"If passcode is entered incorrectly, your phone will conduct a factory reset "
349"and all personal data will be deleted."
365"and all personal data will be deleted."
350msgstr ""
366msgstr ""
351"اگر رمزعبور نادرست وارد شود، تلفن شما بازنشانی کارخانه خواهد شد و تمامی "
367"اگر رمزعبور نادرست وارد شود، تلفن شما بازنشانی کارخانه خواهد شد و تمامی "
352"اطّلاعات شخصی حذف خواهند شد."
368"اطّلاعات شخصی حذف خواهند شد."
353−
354−#~ msgid "Are you sure you would like to turn power off?"
355−#~ msgstr "مطمئنید که می‌خواهید خاموش کنید؟"
356−
357−#~ msgid "Restart"
358−#~ msgstr "شروع مجدّد"
po/fi.po+114−97
@@ -7,78 +7,106 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11−"PO-Revision-Date: 2014-08-26 18:32+0000\n"
11+"PO-Revision-Date: 2014-10-07 13:10+0000\n"
12"Last-Translator: Jiri Grönroos <Unknown>\n"
12"Last-Translator: Jiri Grönroos <Unknown>\n"
13"Language-Team: Finnish <fi@li.org>\n"
13"Language-Team: Finnish <fi@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18+"X-Launchpad-Export-Date: 2014-10-09 06:36+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
19+"X-Generator: Launchpad (build 17196)\n"
19
20
20−#: plugins/LightDM/Greeter.cpp:129
21+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
22msgid "Password: "
22msgstr "Salasana: "
23msgstr "Salasana: "
23
24
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
27msgid "Pin shortcut"
27msgstr "Kiinnitä pikakuvake"
28msgstr "Kiinnitä pikakuvake"
28
29
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
31msgid "Unpin shortcut"
31msgstr "Poista pikakuvakkeen kiinnitys"
32msgstr "Poista pikakuvakkeen kiinnitys"
32
33
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr "Laite on lukittu"
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr ""
41+"Laite on lukittu liian monen virheellisen tunnuslauseyrityksen jälkeen."
42+
43+#: qml/Components/DelayedLockscreen.qml:63
44+msgid "You have been locked out due to too many failed passcode attempts."
45+msgstr ""
46+"Laite on lukittu liian monen virheellisen suojakoodiyrityksen jälkeen."
47+
48+#: qml/Components/DelayedLockscreen.qml:72
49+#, qt-format
50+msgid "Please wait %1 minute and then try again…"
51+msgid_plural "Please wait %1 minutes and then try again…"
52+msgstr[0] "Odota %1 minuutti ja yritä sitten uudelleen…"
53+msgstr[1] "Odota %1 minuuttia ja yritä sitten uudelleen…"
54+
33#: qml/Components/Dialogs.qml:70
55#: qml/Components/Dialogs.qml:70
34msgid "Log out"
56msgid "Log out"
35−msgstr ""
57+msgstr "Kirjaudu ulos"
36
58
37#: qml/Components/Dialogs.qml:71
59#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
60msgid "Are you sure you want to log out?"
39−msgstr ""
61+msgstr "Haluatko varmasti kirjautua ulos?"
40
62
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
63#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
64#: qml/Components/Dialogs.qml:122
43msgid "No"
65msgid "No"
44−msgstr ""
66+msgstr "Ei"
45
67
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
68#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
69#: qml/Components/Dialogs.qml:129
48msgid "Yes"
70msgid "Yes"
49−msgstr ""
71+msgstr "Kyllä"
50
72
51#: qml/Components/Dialogs.qml:94
73#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
74msgid "Shut down"
53−msgstr ""
75+msgstr "Sammuta"
54
76
55#: qml/Components/Dialogs.qml:95
77#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
78msgid "Are you sure you want to shut down?"
57−msgstr ""
79+msgstr "Haluatko varmasti sammuttaa laitteen?"
58
80
59#: qml/Components/Dialogs.qml:119
81#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
82msgid "Reboot"
61−msgstr ""
83+msgstr "Käynnistä uudelleen"
62
84
63#: qml/Components/Dialogs.qml:120
85#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
86msgid "Are you sure you want to reboot?"
65−msgstr ""
87+msgstr "Haluatko varmasti käynnistää laitteen uudelleen?"
66
88
67#: qml/Components/Dialogs.qml:144
89#: qml/Components/Dialogs.qml:144
68msgid "Power"
90msgid "Power"
69−msgstr ""
91+msgstr "Virran katkaisu"
70
92
71#: qml/Components/Dialogs.qml:145
93#: qml/Components/Dialogs.qml:145
72msgid ""
94msgid ""
73"Are you sure you would like\n"
95"Are you sure you would like\n"
74"to power off?"
96"to power off?"
75msgstr ""
97msgstr ""
98+"Haluatko varmasti\n"
99+"sammuttaa laitteen?"
76
100
77−#: qml/Components/Dialogs.qml:144
101+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
102msgid "Power off"
79msgstr "Sammuta"
103msgstr "Sammuta"
80
104
81−#: qml/Components/Dialogs.qml:162
105+#: qml/Components/Dialogs.qml:157
106+msgid "Restart"
107+msgstr "Käynnistä uudelleen"
108+
109+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
110msgid "Cancel"
83msgstr "Peru"
111msgstr "Peru"
84
112
@@ -130,60 +158,44 @@ msgstr ""
130"Hallitset nyt reunaeleet, joten voit aloittaa puhelimen "
158"Hallitset nyt reunaeleet, joten voit aloittaa puhelimen "
131"käytön<br><br>Napauta näyttöä aloittaaksesi"
159"käytön<br><br>Napauta näyttöä aloittaaksesi"
132
160
133−#: qml/Components/Lockscreen.qml:167
161+#: qml/Components/Lockscreen.qml:220
134−msgid "Please wait"
135−msgstr "Odota hetki"
136−
137−#: qml/Components/Lockscreen.qml:172
138−msgid "Too many incorrect attempts"
139−msgstr "Liian monta virheellistä yritystä"
140−
141−#: qml/Components/Lockscreen.qml:206
142msgid "Emergency Call"
162msgid "Emergency Call"
143msgstr "Hätäpuhelu"
163msgstr "Hätäpuhelu"
144
164
145−#: qml/Components/Lockscreen.qml:226
165+#: qml/Components/Lockscreen.qml:252
146msgid "OK"
166msgid "OK"
147msgstr "OK"
167msgstr "OK"
148
168
149−#: qml/Components/PassphraseLockscreen.qml:61
150−#, qt-format
151−msgid "Hello %1"
152−msgstr "Hei %1!"
153−
154−#: qml/Components/PassphraseLockscreen.qml:61
155−msgid "Hello"
156−msgstr "Hei"
157−
158−#: qml/Dash/GenericScopeView.qml:361
169+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
159msgid "See less"
170msgid "See less"
160msgstr "Näytä vähemmän"
171msgstr "Näytä vähemmän"
161
172
162−#: qml/Dash/GenericScopeView.qml:361
173+#: qml/Dash/GenericScopeView.qml:434
163msgid "See all"
174msgid "See all"
164msgstr "Näytä kaikki"
175msgstr "Näytä kaikki"
165
176
177+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
166−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
178+#: qml/Panel/SearchIndicator.qml:27
167msgid "Search"
179msgid "Search"
168msgstr "Hae"
180msgstr "Hae"
169
181
170−#: qml/Dash/PageHeader.qml:270
182+#: qml/Dash/PageHeader.qml:268
171msgid "Settings"
183msgid "Settings"
172−msgstr ""
184+msgstr "Asetukset"
173
185
174−#: qml/Dash/PageHeader.qml:279
186+#: qml/Dash/PageHeader.qml:275
175msgid "Remove from Favorites"
187msgid "Remove from Favorites"
176−msgstr ""
188+msgstr "Poista suosikeista"
177
189
178−#: qml/Dash/PageHeader.qml:279
190+#: qml/Dash/PageHeader.qml:275
179msgid "Add to Favorites"
191msgid "Add to Favorites"
180−msgstr ""
192+msgstr "Lisää suosikkeihin"
181
193
182−#: qml/Dash/Previews/PreviewActionCombo.qml:34
194+#: qml/Dash/Previews/PreviewActionCombo.qml:35
183msgid "More..."
195msgid "More..."
184msgstr "Lisää..."
196msgstr "Lisää..."
185
197
186−#: qml/Dash/Previews/PreviewActionCombo.qml:34
198+#: qml/Dash/Previews/PreviewActionCombo.qml:35
187msgid "Less..."
199msgid "Less..."
188msgstr "Vähemmän..."
200msgstr "Vähemmän..."
189
201
@@ -199,15 +211,23 @@ msgstr "Lisää arvostelu"
199msgid "Send"
211msgid "Send"
200msgstr "Lähetä"
212msgstr "Lähetä"
201
213
202−#: qml/Dash/ScopesOverview.qml:201
214+#: qml/Dash/PullToRefreshScopeStyle.qml:55
203−msgid "Manage Dash"
215+msgid "Pull to refresh…"
204−msgstr "Unityn hallinta"
216+msgstr "Vedä päivittääksesi…"
205
217
218+#: qml/Dash/PullToRefreshScopeStyle.qml:60
219+msgid "Release to refresh…"
220+msgstr "Vapauta päivittääksesi…"
221+
206−#: qml/Dash/ScopesOverview.qml:408
222+#: qml/Dash/ScopesOverview.qml:206
223+msgid "Manage Scopes"
224+msgstr "Näkymien hallinta"
225+
226+#: qml/Dash/ScopesOverview.qml:428
207msgid "Done"
227msgid "Done"
208msgstr "Valmis"
228msgstr "Valmis"
209
229
210−#: qml/Dash/ScopesOverview.qml:434
230+#: qml/Dash/ScopesOverview.qml:454
211msgid "Store"
231msgid "Store"
212msgstr "Kauppa"
232msgstr "Kauppa"
213
233
@@ -220,10 +240,10 @@ msgid "All"
220msgstr "Kaikki"
240msgstr "Kaikki"
221
241
222#: qml/Greeter/Greeter.qml:157
242#: qml/Greeter/Greeter.qml:157
223−msgid "Swipe to unlock"
243+msgid "Unlock"
224−msgstr "Avaa pyyhkäisemällä"
244+msgstr "Avaa lukitus"
225
245
226−#: qml/Hud/HudParametrizedActionsPage.qml:132
246+#: qml/Hud/HudParametrizedActionsPage.qml:139
227msgid "Confirm"
247msgid "Confirm"
228msgstr "Hyväksy"
248msgstr "Hyväksy"
229
249
@@ -243,18 +263,10 @@ msgstr "Puhu nyt..."
243msgid "Speaking..."
263msgid "Speaking..."
244msgstr "Puhutaan..."
264msgstr "Puhutaan..."
245
265
246−#: qml/Notifications/NotificationMenuItemFactory.qml:105
266+#: qml/Notifications/NotificationMenuItemFactory.qml:116
247msgid "Show password"
267msgid "Show password"
248msgstr "Näytä salasana"
268msgstr "Näytä salasana"
249
269
250−#: qml/Notifications/NotificationMenuItemFactory.qml:120
251−msgid "Enter SIM PIN"
252−msgstr "Anna SIM-kortin PIN-koodi"
253−
254−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
255−msgid "Sorry, incorrect PIN"
256−msgstr "Väärä PIN-koodi"
257−
258#: qml/Panel/ActiveCallHint.qml:77
270#: qml/Panel/ActiveCallHint.qml:77
259msgid "Tap to return to call..."
271msgid "Tap to return to call..."
260msgstr "Napauta palataksesi puheluun..."
272msgstr "Napauta palataksesi puheluun..."
@@ -263,27 +275,31 @@ msgstr "Napauta palataksesi puheluun..."
263msgid "Conference"
275msgid "Conference"
264msgstr "Ryhmäpuhelu"
276msgstr "Ryhmäpuhelu"
265
277
266−#: qml/Panel/Indicators/MenuItemFactory.qml:651
278+#: qml/Panel/Indicators/MenuItemFactory.qml:600
279+msgid "Nothing is playing"
280+msgstr "Mitään ei toisteta juuri nyt"
281+
282+#: qml/Panel/Indicators/MenuItemFactory.qml:748
267msgid "In queue…"
283msgid "In queue…"
268msgstr "Jonossa…"
284msgstr "Jonossa…"
269
285
270−#: qml/Panel/Indicators/MenuItemFactory.qml:655
286+#: qml/Panel/Indicators/MenuItemFactory.qml:752
271msgid "Downloading"
287msgid "Downloading"
272msgstr "Ladataan"
288msgstr "Ladataan"
273
289
274−#: qml/Panel/Indicators/MenuItemFactory.qml:657
290+#: qml/Panel/Indicators/MenuItemFactory.qml:754
275msgid "Paused, tap to resume"
291msgid "Paused, tap to resume"
276msgstr "Keskeytetty, napauta palauttaaksesi"
292msgstr "Keskeytetty, napauta palauttaaksesi"
277
293
278−#: qml/Panel/Indicators/MenuItemFactory.qml:659
294+#: qml/Panel/Indicators/MenuItemFactory.qml:756
279msgid "Canceled"
295msgid "Canceled"
280msgstr "Peruttu"
296msgstr "Peruttu"
281
297
282−#: qml/Panel/Indicators/MenuItemFactory.qml:661
298+#: qml/Panel/Indicators/MenuItemFactory.qml:758
283msgid "Finished"
299msgid "Finished"
284msgstr "Valmistunut"
300msgstr "Valmistunut"
285
301
286−#: qml/Panel/Indicators/MenuItemFactory.qml:663
302+#: qml/Panel/Indicators/MenuItemFactory.qml:760
287msgid "Failed, tap to retry"
303msgid "Failed, tap to retry"
288msgstr "Epäonnistunut, napauta yrittääksesi uudelleen"
304msgstr "Epäonnistunut, napauta yrittääksesi uudelleen"
289
305
@@ -295,45 +311,49 @@ msgstr "Avaa SIM-kortin lukitus"
295msgid "Roaming"
311msgid "Roaming"
296msgstr "Verkkovierailu"
312msgstr "Verkkovierailu"
297
313
298−#: qml/Shell.qml:266
314+#: qml/Shell.qml:346
299−msgid "Enter your passphrase"
315+msgid "Enter passphrase"
300msgstr "Anna tunnuslause"
316msgstr "Anna tunnuslause"
301
317
302−#: qml/Shell.qml:267
318+#: qml/Shell.qml:347
303msgid "Sorry, incorrect passphrase"
319msgid "Sorry, incorrect passphrase"
304msgstr "Virheellinen tunnuslause"
320msgstr "Virheellinen tunnuslause"
305
321
306−#: qml/Shell.qml:282
322+#: qml/Shell.qml:348
323+msgid "Please re-enter"
324+msgstr "Anna uudelleen"
325+
326+#: qml/Shell.qml:350
307−msgid "Enter your passcode"
327+msgid "Enter passcode"
308−msgstr ""
328+msgstr "Anna suojakoodi"
309
329
310−#: qml/Shell.qml:283
330+#: qml/Shell.qml:351
311msgid "Sorry, incorrect passcode"
331msgid "Sorry, incorrect passcode"
312−msgstr ""
332+msgstr "Väärä suojakoodi"
313
333
314−#: qml/Shell.qml:273
334+#: qml/Shell.qml:354
315#, qt-format
335#, qt-format
316−msgid "Enter your %1"
336+msgid "Enter %1"
317msgstr "Anna %1"
337msgstr "Anna %1"
318
338
319−#: qml/Shell.qml:274
339+#: qml/Shell.qml:355
320#, qt-format
340#, qt-format
321msgid "Sorry, incorrect %1"
341msgid "Sorry, incorrect %1"
322msgstr "Väärä %1"
342msgstr "Väärä %1"
323
343
324−#: qml/Shell.qml:310
344+#: qml/Shell.qml:390
325msgid "Sorry, incorrect passphrase."
345msgid "Sorry, incorrect passphrase."
326msgstr "Virheellinen tunnuslause."
346msgstr "Virheellinen tunnuslause."
327
347
328−#: qml/Shell.qml:311
348+#: qml/Shell.qml:391
329msgid "Sorry, incorrect passcode."
349msgid "Sorry, incorrect passcode."
330−msgstr "Virheellinen tunnuskoodi."
350+msgstr "Virheellinen suojakoodi."
331
351
332−#: qml/Shell.qml:312
352+#: qml/Shell.qml:392
333msgid "This will be your last attempt."
353msgid "This will be your last attempt."
334msgstr "Tämä on viimeinen yritys."
354msgstr "Tämä on viimeinen yritys."
335
355
336−#: qml/Shell.qml:314
356+#: qml/Shell.qml:394
337msgid ""
357msgid ""
338"If passphrase is entered incorrectly, your phone will conduct a factory "
358"If passphrase is entered incorrectly, your phone will conduct a factory "
339"reset and all personal data will be deleted."
359"reset and all personal data will be deleted."
@@ -341,19 +361,16 @@ msgstr ""
341"Jos kirjoitat tunnuslauseen virheellisesti, puhelimesi palautetaan "
361"Jos kirjoitat tunnuslauseen virheellisesti, puhelimesi palautetaan "
342"tehdastilaan ja kaikki henkilökohtaiset tietosi poistetaan."
362"tehdastilaan ja kaikki henkilökohtaiset tietosi poistetaan."
343
363
344−#: qml/Shell.qml:315
364+#: qml/Shell.qml:395
345msgid ""
365msgid ""
346"If passcode is entered incorrectly, your phone will conduct a factory reset "
366"If passcode is entered incorrectly, your phone will conduct a factory reset "
347"and all personal data will be deleted."
367"and all personal data will be deleted."
348msgstr ""
368msgstr ""
349−"Jos kirjoitat tunnuskoodin virheellisesti, puhelimesi palautetaan "
369+"Jos kirjoitat suojakoodin virheellisesti, puhelimesi palautetaan "
350"tehdastilaan ja kaikki henkilökohtaiset tietosi poistetaan."
370"tehdastilaan ja kaikki henkilökohtaiset tietosi poistetaan."
351
371
352−#~ msgid "Are you sure you would like to turn power off?"
372+#~ msgid "Sorry, incorrect PIN"
353−#~ msgstr "Haluatko varmasti sammuttaa laitteen?"
373+#~ msgstr "Väärä PIN-koodi"
354−
355−#~ msgid "Restart"
356−#~ msgstr "Käynnistä uudelleen"
357
374
358−#~ msgid "Enter your PIN"
375+#~ msgid "Enter SIM PIN"
359−#~ msgstr "Anna PIN-koodi"
376+#~ msgstr "Anna SIM-kortin PIN-koodi"
po/fo.po+87−71
@@ -7,29 +7,49 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11"PO-Revision-Date: 2014-01-14 20:08+0000\n"
11"PO-Revision-Date: 2014-01-14 20:08+0000\n"
12"Last-Translator: Jógvan Olsen <jeggy@jebster.net>\n"
12"Last-Translator: Jógvan Olsen <jeggy@jebster.net>\n"
13"Language-Team: Faroese <fo@li.org>\n"
13"Language-Team: Faroese <fo@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18+"X-Launchpad-Export-Date: 2014-10-09 06:36+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
19+"X-Generator: Launchpad (build 17196)\n"
19
20
20−#: plugins/LightDM/Greeter.cpp:129
21+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
22msgid "Password: "
22msgstr ""
23msgstr ""
23
24
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
27msgid "Pin shortcut"
27msgstr ""
28msgstr ""
28
29
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
31msgid "Unpin shortcut"
31msgstr ""
32msgstr ""
32
33
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr ""
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr ""
41+
42+#: qml/Components/DelayedLockscreen.qml:63
43+msgid "You have been locked out due to too many failed passcode attempts."
44+msgstr ""
45+
46+#: qml/Components/DelayedLockscreen.qml:72
47+#, qt-format
48+msgid "Please wait %1 minute and then try again…"
49+msgid_plural "Please wait %1 minutes and then try again…"
50+msgstr[0] ""
51+msgstr[1] ""
52+
33#: qml/Components/Dialogs.qml:70
53#: qml/Components/Dialogs.qml:70
34msgid "Log out"
54msgid "Log out"
35msgstr ""
55msgstr ""
@@ -74,11 +94,15 @@ msgid ""
74"to power off?"
94"to power off?"
75msgstr ""
95msgstr ""
76
96
77−#: qml/Components/Dialogs.qml:144
97+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
98msgid "Power off"
79msgstr ""
99msgstr ""
80
100
81−#: qml/Components/Dialogs.qml:162
101+#: qml/Components/Dialogs.qml:157
102+msgid "Restart"
103+msgstr ""
104+
105+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
106msgid "Cancel"
83msgstr ""
107msgstr ""
84
108
@@ -128,60 +152,44 @@ msgid ""
128"phone<br><br>Tap on the screen to start"
152"phone<br><br>Tap on the screen to start"
129msgstr ""
153msgstr ""
130
154
131−#: qml/Components/Lockscreen.qml:167
155+#: qml/Components/Lockscreen.qml:220
132−msgid "Please wait"
133−msgstr ""
134−
135−#: qml/Components/Lockscreen.qml:172
136−msgid "Too many incorrect attempts"
137−msgstr ""
138−
139−#: qml/Components/Lockscreen.qml:206
140msgid "Emergency Call"
156msgid "Emergency Call"
141msgstr ""
157msgstr ""
142
158
143−#: qml/Components/Lockscreen.qml:226
159+#: qml/Components/Lockscreen.qml:252
144msgid "OK"
160msgid "OK"
145msgstr ""
161msgstr ""
146
162
147−#: qml/Components/PassphraseLockscreen.qml:61
148−#, qt-format
149−msgid "Hello %1"
150−msgstr ""
151−
152−#: qml/Components/PassphraseLockscreen.qml:61
153−msgid "Hello"
154−msgstr ""
155−
156−#: qml/Dash/GenericScopeView.qml:361
163+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
157msgid "See less"
164msgid "See less"
158msgstr ""
165msgstr ""
159
166
160−#: qml/Dash/GenericScopeView.qml:361
167+#: qml/Dash/GenericScopeView.qml:434
161msgid "See all"
168msgid "See all"
162msgstr ""
169msgstr ""
163
170
171+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
164−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
172+#: qml/Panel/SearchIndicator.qml:27
165msgid "Search"
173msgid "Search"
166msgstr "Leita"
174msgstr "Leita"
167
175
168−#: qml/Dash/PageHeader.qml:270
176+#: qml/Dash/PageHeader.qml:268
169msgid "Settings"
177msgid "Settings"
170msgstr ""
178msgstr ""
171
179
172−#: qml/Dash/PageHeader.qml:279
180+#: qml/Dash/PageHeader.qml:275
173msgid "Remove from Favorites"
181msgid "Remove from Favorites"
174msgstr ""
182msgstr ""
175
183
176−#: qml/Dash/PageHeader.qml:279
184+#: qml/Dash/PageHeader.qml:275
177msgid "Add to Favorites"
185msgid "Add to Favorites"
178msgstr ""
186msgstr ""
179
187
180−#: qml/Dash/Previews/PreviewActionCombo.qml:34
188+#: qml/Dash/Previews/PreviewActionCombo.qml:35
181msgid "More..."
189msgid "More..."
182msgstr ""
190msgstr ""
183
191
184−#: qml/Dash/Previews/PreviewActionCombo.qml:34
192+#: qml/Dash/Previews/PreviewActionCombo.qml:35
185msgid "Less..."
193msgid "Less..."
186msgstr ""
194msgstr ""
187
195
@@ -197,15 +205,23 @@ msgstr ""
197msgid "Send"
205msgid "Send"
198msgstr ""
206msgstr ""
199
207
208+#: qml/Dash/PullToRefreshScopeStyle.qml:55
209+msgid "Pull to refresh…"
210+msgstr ""
211+
212+#: qml/Dash/PullToRefreshScopeStyle.qml:60
213+msgid "Release to refresh…"
214+msgstr ""
215+
200−#: qml/Dash/ScopesOverview.qml:201
216+#: qml/Dash/ScopesOverview.qml:206
201−msgid "Manage Dash"
217+msgid "Manage Scopes"
202msgstr ""
218msgstr ""
203
219
204−#: qml/Dash/ScopesOverview.qml:408
220+#: qml/Dash/ScopesOverview.qml:428
205msgid "Done"
221msgid "Done"
206msgstr ""
222msgstr ""
207
223
208−#: qml/Dash/ScopesOverview.qml:434
224+#: qml/Dash/ScopesOverview.qml:454
209msgid "Store"
225msgid "Store"
210msgstr ""
226msgstr ""
211
227
@@ -218,10 +234,10 @@ msgid "All"
218msgstr ""
234msgstr ""
219
235
220#: qml/Greeter/Greeter.qml:157
236#: qml/Greeter/Greeter.qml:157
221−msgid "Swipe to unlock"
237+msgid "Unlock"
222msgstr ""
238msgstr ""
223
239
224−#: qml/Hud/HudParametrizedActionsPage.qml:132
240+#: qml/Hud/HudParametrizedActionsPage.qml:139
225msgid "Confirm"
241msgid "Confirm"
226msgstr "Vátta"
242msgstr "Vátta"
227
243
@@ -241,18 +257,10 @@ msgstr "Snakka nú..."
241msgid "Speaking..."
257msgid "Speaking..."
242msgstr "Snakkar..."
258msgstr "Snakkar..."
243
259
244−#: qml/Notifications/NotificationMenuItemFactory.qml:105
260+#: qml/Notifications/NotificationMenuItemFactory.qml:116
245msgid "Show password"
261msgid "Show password"
246msgstr ""
262msgstr ""
247
263
248−#: qml/Notifications/NotificationMenuItemFactory.qml:120
249−msgid "Enter SIM PIN"
250−msgstr ""
251−
252−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
253−msgid "Sorry, incorrect PIN"
254−msgstr ""
255−
256#: qml/Panel/ActiveCallHint.qml:77
264#: qml/Panel/ActiveCallHint.qml:77
257msgid "Tap to return to call..."
265msgid "Tap to return to call..."
258msgstr ""
266msgstr ""
@@ -261,27 +269,31 @@ msgstr ""
261msgid "Conference"
269msgid "Conference"
262msgstr ""
270msgstr ""
263
271
264−#: qml/Panel/Indicators/MenuItemFactory.qml:651
272+#: qml/Panel/Indicators/MenuItemFactory.qml:600
273+msgid "Nothing is playing"
274+msgstr ""
275+
276+#: qml/Panel/Indicators/MenuItemFactory.qml:748
265msgid "In queue…"
277msgid "In queue…"
266msgstr ""
278msgstr ""
267
279
268−#: qml/Panel/Indicators/MenuItemFactory.qml:655
280+#: qml/Panel/Indicators/MenuItemFactory.qml:752
269msgid "Downloading"
281msgid "Downloading"
270msgstr ""
282msgstr ""
271
283
272−#: qml/Panel/Indicators/MenuItemFactory.qml:657
284+#: qml/Panel/Indicators/MenuItemFactory.qml:754
273msgid "Paused, tap to resume"
285msgid "Paused, tap to resume"
274msgstr ""
286msgstr ""
275
287
276−#: qml/Panel/Indicators/MenuItemFactory.qml:659
288+#: qml/Panel/Indicators/MenuItemFactory.qml:756
277msgid "Canceled"
289msgid "Canceled"
278msgstr ""
290msgstr ""
279
291
280−#: qml/Panel/Indicators/MenuItemFactory.qml:661
292+#: qml/Panel/Indicators/MenuItemFactory.qml:758
281msgid "Finished"
293msgid "Finished"
282msgstr ""
294msgstr ""
283
295
284−#: qml/Panel/Indicators/MenuItemFactory.qml:663
296+#: qml/Panel/Indicators/MenuItemFactory.qml:760
285msgid "Failed, tap to retry"
297msgid "Failed, tap to retry"
286msgstr ""
298msgstr ""
287
299
@@ -293,51 +305,55 @@ msgstr ""
293msgid "Roaming"
305msgid "Roaming"
294msgstr ""
306msgstr ""
295
307
296−#: qml/Shell.qml:266
308+#: qml/Shell.qml:346
297−msgid "Enter your passphrase"
309+msgid "Enter passphrase"
298msgstr ""
310msgstr ""
299
311
300−#: qml/Shell.qml:267
312+#: qml/Shell.qml:347
301msgid "Sorry, incorrect passphrase"
313msgid "Sorry, incorrect passphrase"
302msgstr ""
314msgstr ""
303
315
304−#: qml/Shell.qml:282
316+#: qml/Shell.qml:348
317+msgid "Please re-enter"
318+msgstr ""
319+
320+#: qml/Shell.qml:350
305−msgid "Enter your passcode"
321+msgid "Enter passcode"
306msgstr ""
322msgstr ""
307
323
308−#: qml/Shell.qml:283
324+#: qml/Shell.qml:351
309msgid "Sorry, incorrect passcode"
325msgid "Sorry, incorrect passcode"
310msgstr ""
326msgstr ""
311
327
312−#: qml/Shell.qml:273
328+#: qml/Shell.qml:354
313#, qt-format
329#, qt-format
314−msgid "Enter your %1"
330+msgid "Enter %1"
315msgstr ""
331msgstr ""
316
332
317−#: qml/Shell.qml:274
333+#: qml/Shell.qml:355
318#, qt-format
334#, qt-format
319msgid "Sorry, incorrect %1"
335msgid "Sorry, incorrect %1"
320msgstr ""
336msgstr ""
321
337
322−#: qml/Shell.qml:310
338+#: qml/Shell.qml:390
323msgid "Sorry, incorrect passphrase."
339msgid "Sorry, incorrect passphrase."
324msgstr ""
340msgstr ""
325
341
326−#: qml/Shell.qml:311
342+#: qml/Shell.qml:391
327msgid "Sorry, incorrect passcode."
343msgid "Sorry, incorrect passcode."
328msgstr ""
344msgstr ""
329
345
330−#: qml/Shell.qml:312
346+#: qml/Shell.qml:392
331msgid "This will be your last attempt."
347msgid "This will be your last attempt."
332msgstr ""
348msgstr ""
333
349
334−#: qml/Shell.qml:314
350+#: qml/Shell.qml:394
335msgid ""
351msgid ""
336"If passphrase is entered incorrectly, your phone will conduct a factory "
352"If passphrase is entered incorrectly, your phone will conduct a factory "
337"reset and all personal data will be deleted."
353"reset and all personal data will be deleted."
338msgstr ""
354msgstr ""
339
355
340−#: qml/Shell.qml:315
356+#: qml/Shell.qml:395
341msgid ""
357msgid ""
342"If passcode is entered incorrectly, your phone will conduct a factory reset "
358"If passcode is entered incorrectly, your phone will conduct a factory reset "
343"and all personal data will be deleted."
359"and all personal data will be deleted."
po/fr.po+119−100
@@ -7,78 +7,108 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11−"PO-Revision-Date: 2014-08-27 17:24+0000\n"
11+"PO-Revision-Date: 2014-10-09 19:00+0000\n"
12−"Last-Translator: Jean Marc <Unknown>\n"
12+"Last-Translator: Anne <anneonyme017@gmail.com>\n"
13"Language-Team: French <fr@li.org>\n"
13"Language-Team: French <fr@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=2; plural=n > 1;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18+"X-Launchpad-Export-Date: 2014-10-10 05:23+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
19+"X-Generator: Launchpad (build 17196)\n"
19
20
20−#: plugins/LightDM/Greeter.cpp:129
21+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
22msgid "Password: "
22msgstr "Mot de passe : "
23msgstr "Mot de passe : "
23
24
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
27msgid "Pin shortcut"
27msgstr "Épingler le raccourci"
28msgstr "Épingler le raccourci"
28
29
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
31msgid "Unpin shortcut"
31msgstr "Détacher le raccourci"
32msgstr "Détacher le raccourci"
32
33
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr "Périphérique verrouillé"
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr ""
41+"Vous avez été bloqué suite à un trop grand nombre de tentatives de saisie "
42+"d'une phrase de passe erronée."
43+
44+#: qml/Components/DelayedLockscreen.qml:63
45+msgid "You have been locked out due to too many failed passcode attempts."
46+msgstr ""
47+"Vous avez été bloqué suite à un trop grand nombre de tentatives de saisie "
48+"d'un mot de passe erroné."
49+
50+#: qml/Components/DelayedLockscreen.qml:72
51+#, qt-format
52+msgid "Please wait %1 minute and then try again…"
53+msgid_plural "Please wait %1 minutes and then try again…"
54+msgstr[0] "Veuillez patienter %1 minute et réessayer..."
55+msgstr[1] "Veuillez patienter %1 minutes et réessayer..."
56+
33#: qml/Components/Dialogs.qml:70
57#: qml/Components/Dialogs.qml:70
34msgid "Log out"
58msgid "Log out"
35−msgstr ""
59+msgstr "Se déconnecter"
36
60
37#: qml/Components/Dialogs.qml:71
61#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
62msgid "Are you sure you want to log out?"
39−msgstr ""
63+msgstr "Êtes-vous sûr de vouloir vous déconnecter ?"
40
64
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
65#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
66#: qml/Components/Dialogs.qml:122
43msgid "No"
67msgid "No"
44−msgstr ""
68+msgstr "Non"
45
69
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
70#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
71#: qml/Components/Dialogs.qml:129
48msgid "Yes"
72msgid "Yes"
49−msgstr ""
73+msgstr "Oui"
50
74
51#: qml/Components/Dialogs.qml:94
75#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
76msgid "Shut down"
53−msgstr ""
77+msgstr "Éteindre"
54
78
55#: qml/Components/Dialogs.qml:95
79#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
80msgid "Are you sure you want to shut down?"
57−msgstr ""
81+msgstr "Êtes-vous sûr de vouloir éteindre ?"
58
82
59#: qml/Components/Dialogs.qml:119
83#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
84msgid "Reboot"
61−msgstr ""
85+msgstr "Redémarrer"
62
86
63#: qml/Components/Dialogs.qml:120
87#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
88msgid "Are you sure you want to reboot?"
65−msgstr ""
89+msgstr "Êtes-vous sûr de vouloir redémarrer ?"
66
90
67#: qml/Components/Dialogs.qml:144
91#: qml/Components/Dialogs.qml:144
68msgid "Power"
92msgid "Power"
69−msgstr ""
93+msgstr "Alimentation"
70
94
71#: qml/Components/Dialogs.qml:145
95#: qml/Components/Dialogs.qml:145
72msgid ""
96msgid ""
73"Are you sure you would like\n"
97"Are you sure you would like\n"
74"to power off?"
98"to power off?"
75msgstr ""
99msgstr ""
100+"Êtes-vous sûr de vouloir\n"
101+"couper l'alimentation ?"
76
102
77−#: qml/Components/Dialogs.qml:144
103+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
104msgid "Power off"
79msgstr "Éteindre"
105msgstr "Éteindre"
80
106
81−#: qml/Components/Dialogs.qml:162
107+#: qml/Components/Dialogs.qml:157
108+msgid "Restart"
109+msgstr "Redémarrer"
110+
111+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
112msgid "Cancel"
83msgstr "Annuler"
113msgstr "Annuler"
84
114
@@ -137,60 +167,44 @@ msgstr ""
137"Vous maîtrisez maintenant les différents gestes et pouvez commencer à "
167"Vous maîtrisez maintenant les différents gestes et pouvez commencer à "
138"utiliser le téléphone<br><br>Appuyez sur l'écran pour commencer"
168"utiliser le téléphone<br><br>Appuyez sur l'écran pour commencer"
139
169
140−#: qml/Components/Lockscreen.qml:167
170+#: qml/Components/Lockscreen.qml:220
141−msgid "Please wait"
142−msgstr "Veuillez patienter"
143−
144−#: qml/Components/Lockscreen.qml:172
145−msgid "Too many incorrect attempts"
146−msgstr "Trop de tentatives incorrectes"
147−
148−#: qml/Components/Lockscreen.qml:206
149msgid "Emergency Call"
171msgid "Emergency Call"
150msgstr "Appel d'urgence"
172msgstr "Appel d'urgence"
151
173
152−#: qml/Components/Lockscreen.qml:226
174+#: qml/Components/Lockscreen.qml:252
153msgid "OK"
175msgid "OK"
154msgstr "OK"
176msgstr "OK"
155
177
156−#: qml/Components/PassphraseLockscreen.qml:61
157−#, qt-format
158−msgid "Hello %1"
159−msgstr "Bonjour %1"
160−
161−#: qml/Components/PassphraseLockscreen.qml:61
162−msgid "Hello"
163−msgstr "Bonjour"
164−
165−#: qml/Dash/GenericScopeView.qml:361
178+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
166msgid "See less"
179msgid "See less"
167msgstr "Voir moins"
180msgstr "Voir moins"
168
181
169−#: qml/Dash/GenericScopeView.qml:361
182+#: qml/Dash/GenericScopeView.qml:434
170msgid "See all"
183msgid "See all"
171msgstr "Tout voir"
184msgstr "Tout voir"
172
185
186+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
173−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
187+#: qml/Panel/SearchIndicator.qml:27
174msgid "Search"
188msgid "Search"
175msgstr "Rechercher"
189msgstr "Rechercher"
176
190
177−#: qml/Dash/PageHeader.qml:270
191+#: qml/Dash/PageHeader.qml:268
178msgid "Settings"
192msgid "Settings"
179−msgstr ""
193+msgstr "Paramètres"
180
194
181−#: qml/Dash/PageHeader.qml:279
195+#: qml/Dash/PageHeader.qml:275
182msgid "Remove from Favorites"
196msgid "Remove from Favorites"
183−msgstr ""
197+msgstr "Retirer des favoris"
184
198
185−#: qml/Dash/PageHeader.qml:279
199+#: qml/Dash/PageHeader.qml:275
186msgid "Add to Favorites"
200msgid "Add to Favorites"
187−msgstr ""
201+msgstr "Ajouter aux favoris"
188
202
189−#: qml/Dash/Previews/PreviewActionCombo.qml:34
203+#: qml/Dash/Previews/PreviewActionCombo.qml:35
190msgid "More..."
204msgid "More..."
191msgstr "Plus..."
205msgstr "Plus..."
192
206
193−#: qml/Dash/Previews/PreviewActionCombo.qml:34
207+#: qml/Dash/Previews/PreviewActionCombo.qml:35
194msgid "Less..."
208msgid "Less..."
195msgstr "Moins..."
209msgstr "Moins..."
196
210
@@ -206,17 +220,25 @@ msgstr "Ajouter un avis"
206msgid "Send"
220msgid "Send"
207msgstr "Envoyer"
221msgstr "Envoyer"
208
222
209−#: qml/Dash/ScopesOverview.qml:201
223+#: qml/Dash/PullToRefreshScopeStyle.qml:55
210−msgid "Manage Dash"
224+msgid "Pull to refresh…"
211−msgstr "Gérer le tableau de bord"
225+msgstr "Tirer pour actualiser..."
226+
227+#: qml/Dash/PullToRefreshScopeStyle.qml:60
228+msgid "Release to refresh…"
229+msgstr "Relâcher pour actualiser..."
212
230
213−#: qml/Dash/ScopesOverview.qml:408
231+#: qml/Dash/ScopesOverview.qml:206
232+msgid "Manage Scopes"
233+msgstr "Gérer les moteurs de recherche"
234+
235+#: qml/Dash/ScopesOverview.qml:428
214msgid "Done"
236msgid "Done"
215msgstr "Terminé"
237msgstr "Terminé"
216
238
217−#: qml/Dash/ScopesOverview.qml:434
239+#: qml/Dash/ScopesOverview.qml:454
218msgid "Store"
240msgid "Store"
219−msgstr ""
241+msgstr "Logithèque"
220
242
221#: qml/Dash/ScopesOverviewTab.qml:36
243#: qml/Dash/ScopesOverviewTab.qml:36
222msgid "Favorites"
244msgid "Favorites"
@@ -227,10 +249,10 @@ msgid "All"
227msgstr "Toutes"
249msgstr "Toutes"
228
250
229#: qml/Greeter/Greeter.qml:157
251#: qml/Greeter/Greeter.qml:157
230−msgid "Swipe to unlock"
252+msgid "Unlock"
231−msgstr "Faites glisser pour déverrouiller"
253+msgstr "Déverrouiller"
232
254
233−#: qml/Hud/HudParametrizedActionsPage.qml:132
255+#: qml/Hud/HudParametrizedActionsPage.qml:139
234msgid "Confirm"
256msgid "Confirm"
235msgstr "Confirmez"
257msgstr "Confirmez"
236
258
@@ -250,18 +272,10 @@ msgstr "Parlez maintenant…"
250msgid "Speaking..."
272msgid "Speaking..."
251msgstr "En cours d'écoute..."
273msgstr "En cours d'écoute..."
252
274
253−#: qml/Notifications/NotificationMenuItemFactory.qml:105
275+#: qml/Notifications/NotificationMenuItemFactory.qml:116
254msgid "Show password"
276msgid "Show password"
255msgstr "Afficher le mot de passe"
277msgstr "Afficher le mot de passe"
256
278
257−#: qml/Notifications/NotificationMenuItemFactory.qml:120
258−msgid "Enter SIM PIN"
259−msgstr "Entrez le code PIN de la SIM"
260−
261−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
262−msgid "Sorry, incorrect PIN"
263−msgstr "Désolé, code PIN incorrect"
264−
265#: qml/Panel/ActiveCallHint.qml:77
279#: qml/Panel/ActiveCallHint.qml:77
266msgid "Tap to return to call..."
280msgid "Tap to return to call..."
267msgstr "Appuyez pour revenir à l'appel…"
281msgstr "Appuyez pour revenir à l'appel…"
@@ -270,27 +284,31 @@ msgstr "Appuyez pour revenir à l'appel…"
270msgid "Conference"
284msgid "Conference"
271msgstr "Conférence"
285msgstr "Conférence"
272
286
273−#: qml/Panel/Indicators/MenuItemFactory.qml:651
287+#: qml/Panel/Indicators/MenuItemFactory.qml:600
288+msgid "Nothing is playing"
289+msgstr "Rien n'est en cours de lecture"
290+
291+#: qml/Panel/Indicators/MenuItemFactory.qml:748
274msgid "In queue…"
292msgid "In queue…"
275msgstr "Dans la file d'attente..."
293msgstr "Dans la file d'attente..."
276
294
277−#: qml/Panel/Indicators/MenuItemFactory.qml:655
295+#: qml/Panel/Indicators/MenuItemFactory.qml:752
278msgid "Downloading"
296msgid "Downloading"
279msgstr "Téléchargement en cours"
297msgstr "Téléchargement en cours"
280
298
281−#: qml/Panel/Indicators/MenuItemFactory.qml:657
299+#: qml/Panel/Indicators/MenuItemFactory.qml:754
282msgid "Paused, tap to resume"
300msgid "Paused, tap to resume"
283msgstr "En pause, appuyez pour reprendre"
301msgstr "En pause, appuyez pour reprendre"
284
302
285−#: qml/Panel/Indicators/MenuItemFactory.qml:659
303+#: qml/Panel/Indicators/MenuItemFactory.qml:756
286msgid "Canceled"
304msgid "Canceled"
287msgstr "Annulé"
305msgstr "Annulé"
288
306
289−#: qml/Panel/Indicators/MenuItemFactory.qml:661
307+#: qml/Panel/Indicators/MenuItemFactory.qml:758
290msgid "Finished"
308msgid "Finished"
291msgstr "Terminé"
309msgstr "Terminé"
292
310
293−#: qml/Panel/Indicators/MenuItemFactory.qml:663
311+#: qml/Panel/Indicators/MenuItemFactory.qml:760
294msgid "Failed, tap to retry"
312msgid "Failed, tap to retry"
295msgstr "Échec, appuyez pour réessayer"
313msgstr "Échec, appuyez pour réessayer"
296
314
@@ -302,45 +320,49 @@ msgstr "Déverrouiller la carte SIM"
302msgid "Roaming"
320msgid "Roaming"
303msgstr "Roaming"
321msgstr "Roaming"
304
322
305−#: qml/Shell.qml:266
323+#: qml/Shell.qml:346
306−msgid "Enter your passphrase"
324+msgid "Enter passphrase"
307−msgstr ""
325+msgstr "Saisissez la phrase de passe"
308
326
309−#: qml/Shell.qml:267
327+#: qml/Shell.qml:347
310msgid "Sorry, incorrect passphrase"
328msgid "Sorry, incorrect passphrase"
311−msgstr ""
329+msgstr "Désolé, phrase secrète incorrecte"
312
330
313−#: qml/Shell.qml:282
331+#: qml/Shell.qml:348
332+msgid "Please re-enter"
333+msgstr "Veuillez ressaisir"
334+
335+#: qml/Shell.qml:350
314−msgid "Enter your passcode"
336+msgid "Enter passcode"
315−msgstr ""
337+msgstr "Saisissez le mot de passe"
316
338
317−#: qml/Shell.qml:283
339+#: qml/Shell.qml:351
318msgid "Sorry, incorrect passcode"
340msgid "Sorry, incorrect passcode"
319−msgstr ""
341+msgstr "Désolé, code incorrect"
320
342
321−#: qml/Shell.qml:273
343+#: qml/Shell.qml:354
322#, qt-format
344#, qt-format
323−msgid "Enter your %1"
345+msgid "Enter %1"
324−msgstr "Saisissez votre %1"
346+msgstr "Saisissez %1"
325
347
326−#: qml/Shell.qml:274
348+#: qml/Shell.qml:355
327#, qt-format
349#, qt-format
328msgid "Sorry, incorrect %1"
350msgid "Sorry, incorrect %1"
329msgstr "Désolé, %1 incorrect"
351msgstr "Désolé, %1 incorrect"
330
352
331−#: qml/Shell.qml:310
353+#: qml/Shell.qml:390
332msgid "Sorry, incorrect passphrase."
354msgid "Sorry, incorrect passphrase."
333msgstr "Désolé, phrase secrète incorrecte."
355msgstr "Désolé, phrase secrète incorrecte."
334
356
335−#: qml/Shell.qml:311
357+#: qml/Shell.qml:391
336msgid "Sorry, incorrect passcode."
358msgid "Sorry, incorrect passcode."
337msgstr "Désolé, code incorrect."
359msgstr "Désolé, code incorrect."
338
360
339−#: qml/Shell.qml:312
361+#: qml/Shell.qml:392
340msgid "This will be your last attempt."
362msgid "This will be your last attempt."
341msgstr "Ceci sera votre dernière tentative."
363msgstr "Ceci sera votre dernière tentative."
342
364
343−#: qml/Shell.qml:314
365+#: qml/Shell.qml:394
344msgid ""
366msgid ""
345"If passphrase is entered incorrectly, your phone will conduct a factory "
367"If passphrase is entered incorrectly, your phone will conduct a factory "
346"reset and all personal data will be deleted."
368"reset and all personal data will be deleted."
@@ -349,7 +371,7 @@ msgstr ""
349"effectuera une réinitialisation aux paramètres d'usine et toutes les données "
371"effectuera une réinitialisation aux paramètres d'usine et toutes les données "
350"personnelles seront supprimées."
372"personnelles seront supprimées."
351
373
352−#: qml/Shell.qml:315
374+#: qml/Shell.qml:395
353msgid ""
375msgid ""
354"If passcode is entered incorrectly, your phone will conduct a factory reset "
376"If passcode is entered incorrectly, your phone will conduct a factory reset "
355"and all personal data will be deleted."
377"and all personal data will be deleted."
@@ -358,11 +380,8 @@ msgstr ""
358"réinitialisation aux paramètres d'usine et toutes les données personnelles "
380"réinitialisation aux paramètres d'usine et toutes les données personnelles "
359"seront supprimées."
381"seront supprimées."
360
382
361−#~ msgid "Restart"
383+#~ msgid "Sorry, incorrect PIN"
362−#~ msgstr "Redémarrer"
384+#~ msgstr "Désolé, code PIN incorrect"
363−
364−#~ msgid "Are you sure you would like to turn power off?"
365−#~ msgstr "Êtes-vous sûr de vouloir éteindre ?"
366
385
367−#~ msgid "Enter your PIN"
386+#~ msgid "Enter SIM PIN"
368−#~ msgstr "Entrez votre code PIN"
387+#~ msgstr "Entrez le code PIN de la SIM"
po/gd.po+133−102
@@ -7,79 +7,112 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11−"PO-Revision-Date: 2014-08-13 00:21+0000\n"
11+"PO-Revision-Date: 2014-10-09 18:09+0000\n"
12−"Last-Translator: Akerbeltz <fios@akerbeltz.org>\n"
12+"Last-Translator: GunChleoc <Unknown>\n"
13−"Language-Team: Fòram na Gàidhlig http://www.foramnagaidhlig.net\n"
13+"Language-Team: Fòram na Gàidhlig\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : "
18+"(n > 2 && n < 20) ? 2 : 3;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
19+"X-Launchpad-Export-Date: 2014-10-10 05:23+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
20+"X-Generator: Launchpad (build 17196)\n"
19"Language: gd\n"
21"Language: gd\n"
20
22
21−#: plugins/LightDM/Greeter.cpp:129
23+#: plugins/LightDM/Greeter.cpp:130
22msgid "Password: "
24msgid "Password: "
23−msgstr ""
25+msgstr "Facal-faire: "
24
26
25−#: plugins/Unity/Launcher/launcheritem.cpp:43
27+#: plugins/Unity/Launcher/launcheritem.cpp:45
26−#: plugins/Unity/Launcher/launcheritem.cpp:73
28+#: plugins/Unity/Launcher/launcheritem.cpp:91
27msgid "Pin shortcut"
29msgid "Pin shortcut"
28msgstr "Prìnich ath-ghoirid"
30msgstr "Prìnich ath-ghoirid"
29
31
30−#: plugins/Unity/Launcher/launcheritem.cpp:73
32+#: plugins/Unity/Launcher/launcheritem.cpp:91
31msgid "Unpin shortcut"
33msgid "Unpin shortcut"
32msgstr "Neo-phrìnich an ath-ghoirid"
34msgstr "Neo-phrìnich an ath-ghoirid"
33
35
36+#: qml/Components/DelayedLockscreen.qml:47
37+msgid "Device Locked"
38+msgstr "Tha glas air an uidheam"
39+
40+#: qml/Components/DelayedLockscreen.qml:62
41+msgid "You have been locked out due to too many failed passphrase attempts."
42+msgstr ""
43+"Chaidh do glasadh a-mach às an uidheam on a chuir thu abairt-fhaire chearr a-"
44+"steach cus tursan."
45+
46+#: qml/Components/DelayedLockscreen.qml:63
47+msgid "You have been locked out due to too many failed passcode attempts."
48+msgstr ""
49+"Chaidh do glasadh a-mach às an uidheam on a chuir thu còd-faire cearr a-"
50+"steach cus tursan."
51+
52+#: qml/Components/DelayedLockscreen.qml:72
53+#, qt-format
54+msgid "Please wait %1 minute and then try again…"
55+msgid_plural "Please wait %1 minutes and then try again…"
56+msgstr[0] "Fuirich ort %1 diog 's feuch ris a-rithist an uairsin…"
57+msgstr[1] "Fuirich ort %1 dhiog 's feuch ris a-rithist an uairsin…"
58+msgstr[2] "Fuirich ort %1 diogan 's feuch ris a-rithist an uairsin…"
59+msgstr[3] "Fuirich ort %1 diog 's feuch ris a-rithist an uairsin…"
60+
34#: qml/Components/Dialogs.qml:70
61#: qml/Components/Dialogs.qml:70
35msgid "Log out"
62msgid "Log out"
36−msgstr ""
63+msgstr "Clàraich a-mach"
37
64
38#: qml/Components/Dialogs.qml:71
65#: qml/Components/Dialogs.qml:71
39msgid "Are you sure you want to log out?"
66msgid "Are you sure you want to log out?"
40−msgstr ""
67+msgstr "A bheil thu cinnteach gu bheil thu airson clàradh a-mach?"
41
68
42#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
69#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
43#: qml/Components/Dialogs.qml:122
70#: qml/Components/Dialogs.qml:122
44msgid "No"
71msgid "No"
45−msgstr ""
72+msgstr "Chan eil"
46
73
47#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
74#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
48#: qml/Components/Dialogs.qml:129
75#: qml/Components/Dialogs.qml:129
49msgid "Yes"
76msgid "Yes"
50−msgstr ""
77+msgstr "Tha"
51
78
52#: qml/Components/Dialogs.qml:94
79#: qml/Components/Dialogs.qml:94
53msgid "Shut down"
80msgid "Shut down"
54−msgstr ""
81+msgstr "Dùin sìos"
55
82
56#: qml/Components/Dialogs.qml:95
83#: qml/Components/Dialogs.qml:95
57msgid "Are you sure you want to shut down?"
84msgid "Are you sure you want to shut down?"
58−msgstr ""
85+msgstr "A bheil thu cinnteach gu bheil thu airson a dhùnadh sìos?"
59
86
60#: qml/Components/Dialogs.qml:119
87#: qml/Components/Dialogs.qml:119
61msgid "Reboot"
88msgid "Reboot"
62−msgstr ""
89+msgstr "Ath-thòisich an siostam"
63
90
64#: qml/Components/Dialogs.qml:120
91#: qml/Components/Dialogs.qml:120
65msgid "Are you sure you want to reboot?"
92msgid "Are you sure you want to reboot?"
66−msgstr ""
93+msgstr "A bheil thu cinnteach gu bheil thu airson tòiseachadh às ùr?"
67
94
68#: qml/Components/Dialogs.qml:144
95#: qml/Components/Dialogs.qml:144
69msgid "Power"
96msgid "Power"
70−msgstr ""
97+msgstr "Cumhachd"
71
98
72#: qml/Components/Dialogs.qml:145
99#: qml/Components/Dialogs.qml:145
73msgid ""
100msgid ""
74"Are you sure you would like\n"
101"Are you sure you would like\n"
75"to power off?"
102"to power off?"
76msgstr ""
103msgstr ""
104+"A bheil thu cinnteach gu bheil thu\n"
105+"airson a' chumhachd a chur dheth?"
77
106
78−#: qml/Components/Dialogs.qml:144
107+#: qml/Components/Dialogs.qml:147
79msgid "Power off"
108msgid "Power off"
80msgstr "Cuir a' chumhachd dheth"
109msgstr "Cuir a' chumhachd dheth"
81
110
82−#: qml/Components/Dialogs.qml:162
111+#: qml/Components/Dialogs.qml:157
112+msgid "Restart"
113+msgstr "Ath-thòisich"
114+
115+#: qml/Components/Dialogs.qml:167
83msgid "Cancel"
116msgid "Cancel"
84msgstr "Sguir dheth"
117msgstr "Sguir dheth"
85
118
@@ -137,60 +170,44 @@ msgstr ""
137"Fhuair thu air na gluasadan oire ceart a dhèanamh a-nis agus is urrainn dhut "
170"Fhuair thu air na gluasadan oire ceart a dhèanamh a-nis agus is urrainn dhut "
138"am fòn a chleachdadh<br><br>Thoir gnogag air an sgrìn airson tòiseachadh"
171"am fòn a chleachdadh<br><br>Thoir gnogag air an sgrìn airson tòiseachadh"
139
172
140−#: qml/Components/Lockscreen.qml:167
173+#: qml/Components/Lockscreen.qml:220
141−msgid "Please wait"
142−msgstr ""
143−
144−#: qml/Components/Lockscreen.qml:172
145−msgid "Too many incorrect attempts"
146−msgstr ""
147−
148−#: qml/Components/Lockscreen.qml:206
149msgid "Emergency Call"
174msgid "Emergency Call"
150msgstr "Gairm èiginn"
175msgstr "Gairm èiginn"
151
176
152−#: qml/Components/Lockscreen.qml:226
177+#: qml/Components/Lockscreen.qml:252
153msgid "OK"
178msgid "OK"
154msgstr "Ceart ma-thà"
179msgstr "Ceart ma-thà"
155
180
156−#: qml/Components/PassphraseLockscreen.qml:61
157−#, qt-format
158−msgid "Hello %1"
159−msgstr "Shin thu, %1"
160−
161−#: qml/Components/PassphraseLockscreen.qml:61
162−msgid "Hello"
163−msgstr "Shin thu"
164−
165−#: qml/Dash/GenericScopeView.qml:361
181+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
166msgid "See less"
182msgid "See less"
167msgstr "Seall nas lugha"
183msgstr "Seall nas lugha"
168
184
169−#: qml/Dash/GenericScopeView.qml:361
185+#: qml/Dash/GenericScopeView.qml:434
170msgid "See all"
186msgid "See all"
171msgstr "Seall na h-uile"
187msgstr "Seall na h-uile"
172
188
189+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
173−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
190+#: qml/Panel/SearchIndicator.qml:27
174msgid "Search"
191msgid "Search"
175msgstr "Lorg"
192msgstr "Lorg"
176
193
177−#: qml/Dash/PageHeader.qml:270
194+#: qml/Dash/PageHeader.qml:268
178msgid "Settings"
195msgid "Settings"
179−msgstr ""
196+msgstr "Roghainnean"
180
197
181−#: qml/Dash/PageHeader.qml:279
198+#: qml/Dash/PageHeader.qml:275
182msgid "Remove from Favorites"
199msgid "Remove from Favorites"
183−msgstr ""
200+msgstr "Thoir air falbh o na h-annsachdan"
184
201
185−#: qml/Dash/PageHeader.qml:279
202+#: qml/Dash/PageHeader.qml:275
186msgid "Add to Favorites"
203msgid "Add to Favorites"
187−msgstr ""
204+msgstr "Cuir ris na h-annsachdan"
188
205
189−#: qml/Dash/Previews/PreviewActionCombo.qml:34
206+#: qml/Dash/Previews/PreviewActionCombo.qml:35
190msgid "More..."
207msgid "More..."
191msgstr "Barrachd..."
208msgstr "Barrachd..."
192
209
193−#: qml/Dash/Previews/PreviewActionCombo.qml:34
210+#: qml/Dash/Previews/PreviewActionCombo.qml:35
194msgid "Less..."
211msgid "Less..."
195msgstr "Nas lugha..."
212msgstr "Nas lugha..."
196
213
@@ -206,15 +223,23 @@ msgstr "Cuir lèirmheas ris"
206msgid "Send"
223msgid "Send"
207msgstr "Cuir"
224msgstr "Cuir"
208
225
209−#: qml/Dash/ScopesOverview.qml:201
226+#: qml/Dash/PullToRefreshScopeStyle.qml:55
210−msgid "Manage Dash"
227+msgid "Pull to refresh…"
211−msgstr "Stiùirich an deas-bhòrd"
228+msgstr "Tarraing airson ath-nuadhachadh…"
212
229
230+#: qml/Dash/PullToRefreshScopeStyle.qml:60
231+msgid "Release to refresh…"
232+msgstr "Leig às airson ath-nuadhachadh…"
233+
213−#: qml/Dash/ScopesOverview.qml:408
234+#: qml/Dash/ScopesOverview.qml:206
235+msgid "Manage Scopes"
236+msgstr "Stiùirich na sgòpaichean"
237+
238+#: qml/Dash/ScopesOverview.qml:428
214msgid "Done"
239msgid "Done"
215msgstr "Deiseil"
240msgstr "Deiseil"
216
241
217−#: qml/Dash/ScopesOverview.qml:434
242+#: qml/Dash/ScopesOverview.qml:454
218msgid "Store"
243msgid "Store"
219msgstr "Am bùth"
244msgstr "Am bùth"
220
245
@@ -227,10 +252,10 @@ msgid "All"
227msgstr "Na h-uile"
252msgstr "Na h-uile"
228
253
229#: qml/Greeter/Greeter.qml:157
254#: qml/Greeter/Greeter.qml:157
230−msgid "Swipe to unlock"
255+msgid "Unlock"
231−msgstr "Dèan grad-shlaighdeadh gus a' ghlas a thoirt dheth"
256+msgstr "Thoir a' ghlas dheth"
232
257
233−#: qml/Hud/HudParametrizedActionsPage.qml:132
258+#: qml/Hud/HudParametrizedActionsPage.qml:139
234msgid "Confirm"
259msgid "Confirm"
235msgstr "Dearbhaich"
260msgstr "Dearbhaich"
236
261
@@ -250,18 +275,10 @@ msgstr "Can rud a-nis..."
250msgid "Speaking..."
275msgid "Speaking..."
251msgstr "A' bruidhinn..."
276msgstr "A' bruidhinn..."
252
277
253−#: qml/Notifications/NotificationMenuItemFactory.qml:105
278+#: qml/Notifications/NotificationMenuItemFactory.qml:116
254msgid "Show password"
279msgid "Show password"
255msgstr "Seall am facal-faire"
280msgstr "Seall am facal-faire"
256
281
257−#: qml/Notifications/NotificationMenuItemFactory.qml:120
258−msgid "Enter SIM PIN"
259−msgstr ""
260−
261−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
262−msgid "Sorry, incorrect PIN"
263−msgstr ""
264−
265#: qml/Panel/ActiveCallHint.qml:77
282#: qml/Panel/ActiveCallHint.qml:77
266msgid "Tap to return to call..."
283msgid "Tap to return to call..."
267msgstr "Gnog gus tilleadh dhan ghairm..."
284msgstr "Gnog gus tilleadh dhan ghairm..."
@@ -270,27 +287,31 @@ msgstr "Gnog gus tilleadh dhan ghairm..."
270msgid "Conference"
287msgid "Conference"
271msgstr "Gairm co-labhairt"
288msgstr "Gairm co-labhairt"
272
289
273−#: qml/Panel/Indicators/MenuItemFactory.qml:651
290+#: qml/Panel/Indicators/MenuItemFactory.qml:600
291+msgid "Nothing is playing"
292+msgstr "Chan eil dad 'ga chluich"
293+
294+#: qml/Panel/Indicators/MenuItemFactory.qml:748
274msgid "In queue…"
295msgid "In queue…"
275msgstr "Air a' chiudha…"
296msgstr "Air a' chiudha…"
276
297
277−#: qml/Panel/Indicators/MenuItemFactory.qml:655
298+#: qml/Panel/Indicators/MenuItemFactory.qml:752
278msgid "Downloading"
299msgid "Downloading"
279msgstr "'Ga luchdadh a-nuas"
300msgstr "'Ga luchdadh a-nuas"
280
301
281−#: qml/Panel/Indicators/MenuItemFactory.qml:657
302+#: qml/Panel/Indicators/MenuItemFactory.qml:754
282msgid "Paused, tap to resume"
303msgid "Paused, tap to resume"
283msgstr "'Na stad, thoir gnogag gus leantainn air"
304msgstr "'Na stad, thoir gnogag gus leantainn air"
284
305
285−#: qml/Panel/Indicators/MenuItemFactory.qml:659
306+#: qml/Panel/Indicators/MenuItemFactory.qml:756
286msgid "Canceled"
307msgid "Canceled"
287msgstr "Air a sgur dheth"
308msgstr "Air a sgur dheth"
288
309
289−#: qml/Panel/Indicators/MenuItemFactory.qml:661
310+#: qml/Panel/Indicators/MenuItemFactory.qml:758
290msgid "Finished"
311msgid "Finished"
291msgstr "Coileanta"
312msgstr "Coileanta"
292
313
293−#: qml/Panel/Indicators/MenuItemFactory.qml:663
314+#: qml/Panel/Indicators/MenuItemFactory.qml:760
294msgid "Failed, tap to retry"
315msgid "Failed, tap to retry"
295msgstr "Dh'fhàillig leis, thoir gnogag gus feuchainn a-rithist"
316msgstr "Dh'fhàillig leis, thoir gnogag gus feuchainn a-rithist"
296
317
@@ -302,58 +323,68 @@ msgstr "Thoir a' ghlas far an SIM"
302msgid "Roaming"
323msgid "Roaming"
303msgstr "Air fàrsan"
324msgstr "Air fàrsan"
304
325
305−#: qml/Shell.qml:266
326+#: qml/Shell.qml:346
306−msgid "Enter your passphrase"
327+msgid "Enter passphrase"
307−msgstr ""
328+msgstr "Cuir abairt-fhaire a-steach"
308
329
309−#: qml/Shell.qml:267
330+#: qml/Shell.qml:347
310msgid "Sorry, incorrect passphrase"
331msgid "Sorry, incorrect passphrase"
311−msgstr ""
332+msgstr "Duilich ach tha an abairt-fhaire cearr"
312
333
313−#: qml/Shell.qml:282
334+#: qml/Shell.qml:348
335+msgid "Please re-enter"
336+msgstr "Cuir a-steach e a-rithist"
337+
338+#: qml/Shell.qml:350
314−msgid "Enter your passcode"
339+msgid "Enter passcode"
315−msgstr ""
340+msgstr "Cuir còd-faire a-steach"
316
341
317−#: qml/Shell.qml:283
342+#: qml/Shell.qml:351
318msgid "Sorry, incorrect passcode"
343msgid "Sorry, incorrect passcode"
319−msgstr ""
344+msgstr "Duilich ach tha an còd-faire cearr"
320
345
321−#: qml/Shell.qml:273
346+#: qml/Shell.qml:354
322#, qt-format
347#, qt-format
323−msgid "Enter your %1"
348+msgid "Enter %1"
324−msgstr ""
349+msgstr "Cuir a-steach %1"
325
350
326−#: qml/Shell.qml:274
351+#: qml/Shell.qml:355
327#, qt-format
352#, qt-format
328msgid "Sorry, incorrect %1"
353msgid "Sorry, incorrect %1"
329−msgstr ""
354+msgstr "Duilich ach tha a' %1 cearr"
330
355
331−#: qml/Shell.qml:310
356+#: qml/Shell.qml:390
332msgid "Sorry, incorrect passphrase."
357msgid "Sorry, incorrect passphrase."
333−msgstr ""
358+msgstr "Duilich ach tha an abairt-fhaire cearr."
334
359
335−#: qml/Shell.qml:311
360+#: qml/Shell.qml:391
336msgid "Sorry, incorrect passcode."
361msgid "Sorry, incorrect passcode."
337−msgstr ""
362+msgstr "Duilich ach tha an còd-faire cearr."
338
363
339−#: qml/Shell.qml:312
364+#: qml/Shell.qml:392
340msgid "This will be your last attempt."
365msgid "This will be your last attempt."
341−msgstr ""
366+msgstr "Seo an oidhirp mu dheireadh agad."
342
367
343−#: qml/Shell.qml:314
368+#: qml/Shell.qml:394
344msgid ""
369msgid ""
345"If passphrase is entered incorrectly, your phone will conduct a factory "
370"If passphrase is entered incorrectly, your phone will conduct a factory "
346"reset and all personal data will be deleted."
371"reset and all personal data will be deleted."
347msgstr ""
372msgstr ""
373+"Ma thèid an abairt-fhaire a chur a-steach mar bu chòir, thèid an fhòn agad a "
374+"ath-shuidheachadh air roghainnean an fhactaraidh agus thèid gach dàta "
375+"pearsanta a sguabadh às."
348
376
349−#: qml/Shell.qml:315
377+#: qml/Shell.qml:395
350msgid ""
378msgid ""
351"If passcode is entered incorrectly, your phone will conduct a factory reset "
379"If passcode is entered incorrectly, your phone will conduct a factory reset "
352"and all personal data will be deleted."
380"and all personal data will be deleted."
353msgstr ""
381msgstr ""
382+"Ma thèid an còd-faire a chur a-steach mar bu chòir, thèid an fhòn agad a ath-"
383+"shuidheachadh air roghainnean an fhactaraidh agus thèid gach dàta pearsanta "
384+"a sguabadh às."
354
385
355−#~ msgid "Are you sure you would like to turn power off?"
386+#~ msgid "Enter SIM PIN"
356−#~ msgstr "A bheil thu cinnteach gu bheil thu airson a chur dheth?"
387+#~ msgstr "Cuir a-steach PIN an t-SIM"
357
388
358−#~ msgid "Restart"
389+#~ msgid "Sorry, incorrect PIN"
359−#~ msgstr "Ath-thòisich"
390+#~ msgstr "Duilich ach tha a' PIN cearr"
po/gl.po+112−99
@@ -7,78 +7,102 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11−"PO-Revision-Date: 2014-08-22 15:16+0000\n"
11+"PO-Revision-Date: 2014-10-07 10:01+0000\n"
12"Last-Translator: Marcos Lans <Unknown>\n"
12"Last-Translator: Marcos Lans <Unknown>\n"
13"Language-Team: Galician <gl@li.org>\n"
13"Language-Team: Galician <gl@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18+"X-Launchpad-Export-Date: 2014-10-09 06:36+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
19+"X-Generator: Launchpad (build 17196)\n"
19
20
20−#: plugins/LightDM/Greeter.cpp:129
21+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
22msgid "Password: "
22msgstr "Contrasinal : "
23msgstr "Contrasinal : "
23
24
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
27msgid "Pin shortcut"
27msgstr "Fixar o atallo"
28msgstr "Fixar o atallo"
28
29
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
31msgid "Unpin shortcut"
31msgstr "Eliminar o atallo"
32msgstr "Eliminar o atallo"
32
33
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr "Dispositivo bloqueado"
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr "Bloqueouse o dispositivo polos intentos fallidos da frase secreta."
41+
42+#: qml/Components/DelayedLockscreen.qml:63
43+msgid "You have been locked out due to too many failed passcode attempts."
44+msgstr "Bloqueouse o dispositivo polos intentos fallidos da clave."
45+
46+#: qml/Components/DelayedLockscreen.qml:72
47+#, qt-format
48+msgid "Please wait %1 minute and then try again…"
49+msgid_plural "Please wait %1 minutes and then try again…"
50+msgstr[0] "Agarde %1 minuto e ténteo de novo…"
51+msgstr[1] "Agarde %1 minutos e ténteo de novo…"
52+
33#: qml/Components/Dialogs.qml:70
53#: qml/Components/Dialogs.qml:70
34msgid "Log out"
54msgid "Log out"
35−msgstr ""
55+msgstr "Saír da sesión"
36
56
37#: qml/Components/Dialogs.qml:71
57#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
58msgid "Are you sure you want to log out?"
39−msgstr ""
59+msgstr "Está seguro de querer pechar a sesión?"
40
60
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
61#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
62#: qml/Components/Dialogs.qml:122
43msgid "No"
63msgid "No"
44−msgstr ""
64+msgstr "Non"
45
65
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
66#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
67#: qml/Components/Dialogs.qml:129
48msgid "Yes"
68msgid "Yes"
49−msgstr ""
69+msgstr "Si"
50
70
51#: qml/Components/Dialogs.qml:94
71#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
72msgid "Shut down"
53−msgstr ""
73+msgstr "Apagar"
54
74
55#: qml/Components/Dialogs.qml:95
75#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
76msgid "Are you sure you want to shut down?"
57−msgstr ""
77+msgstr "Está seguro de querer apagar?"
58
78
59#: qml/Components/Dialogs.qml:119
79#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
80msgid "Reboot"
61−msgstr ""
81+msgstr "Reiniciar"
62
82
63#: qml/Components/Dialogs.qml:120
83#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
84msgid "Are you sure you want to reboot?"
65−msgstr ""
85+msgstr "Está seguro de querer reiniciar?"
66
86
67#: qml/Components/Dialogs.qml:144
87#: qml/Components/Dialogs.qml:144
68msgid "Power"
88msgid "Power"
69−msgstr ""
89+msgstr "Enerxía"
70
90
71#: qml/Components/Dialogs.qml:145
91#: qml/Components/Dialogs.qml:145
72msgid ""
92msgid ""
73"Are you sure you would like\n"
93"Are you sure you would like\n"
74"to power off?"
94"to power off?"
75−msgstr ""
95+msgstr "Está seguro de querer apagar?"
76
96
77−#: qml/Components/Dialogs.qml:144
97+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
98msgid "Power off"
79msgstr "Apagar"
99msgstr "Apagar"
80
100
81−#: qml/Components/Dialogs.qml:162
101+#: qml/Components/Dialogs.qml:157
102+msgid "Restart"
103+msgstr "Reiniciar"
104+
105+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
106msgid "Cancel"
83msgstr "Cancelar"
107msgstr "Cancelar"
84
108
@@ -132,60 +156,44 @@ msgstr ""
132"Agora xa domina os xestos dos bordos e pode comezar a usar o "
156"Agora xa domina os xestos dos bordos e pode comezar a usar o "
133"teléfono<br><br>Toque na pantalla para comezar"
157"teléfono<br><br>Toque na pantalla para comezar"
134
158
135−#: qml/Components/Lockscreen.qml:167
159+#: qml/Components/Lockscreen.qml:220
136−msgid "Please wait"
137−msgstr "Agarde"
138−
139−#: qml/Components/Lockscreen.qml:172
140−msgid "Too many incorrect attempts"
141−msgstr "Demasiados erros"
142−
143−#: qml/Components/Lockscreen.qml:206
144msgid "Emergency Call"
160msgid "Emergency Call"
145msgstr "Chamada de emerxencia"
161msgstr "Chamada de emerxencia"
146
162
147−#: qml/Components/Lockscreen.qml:226
163+#: qml/Components/Lockscreen.qml:252
148msgid "OK"
164msgid "OK"
149msgstr "Aceptar"
165msgstr "Aceptar"
150
166
151−#: qml/Components/PassphraseLockscreen.qml:61
152−#, qt-format
153−msgid "Hello %1"
154−msgstr "Ola %1"
155−
156−#: qml/Components/PassphraseLockscreen.qml:61
157−msgid "Hello"
158−msgstr "Ola"
159−
160−#: qml/Dash/GenericScopeView.qml:361
167+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
161msgid "See less"
168msgid "See less"
162msgstr "Ver menos"
169msgstr "Ver menos"
163
170
164−#: qml/Dash/GenericScopeView.qml:361
171+#: qml/Dash/GenericScopeView.qml:434
165msgid "See all"
172msgid "See all"
166msgstr "Ver todo"
173msgstr "Ver todo"
167
174
175+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
168−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
176+#: qml/Panel/SearchIndicator.qml:27
169msgid "Search"
177msgid "Search"
170msgstr "Buscar"
178msgstr "Buscar"
171
179
172−#: qml/Dash/PageHeader.qml:270
180+#: qml/Dash/PageHeader.qml:268
173msgid "Settings"
181msgid "Settings"
174−msgstr ""
182+msgstr "Axustes"
175
183
176−#: qml/Dash/PageHeader.qml:279
184+#: qml/Dash/PageHeader.qml:275
177msgid "Remove from Favorites"
185msgid "Remove from Favorites"
178−msgstr ""
186+msgstr "Eliminar dos favoritos"
179
187
180−#: qml/Dash/PageHeader.qml:279
188+#: qml/Dash/PageHeader.qml:275
181msgid "Add to Favorites"
189msgid "Add to Favorites"
182−msgstr ""
190+msgstr "Engadir aos favoritos"
183
191
184−#: qml/Dash/Previews/PreviewActionCombo.qml:34
192+#: qml/Dash/Previews/PreviewActionCombo.qml:35
185msgid "More..."
193msgid "More..."
186msgstr "Máis…"
194msgstr "Máis…"
187
195
188−#: qml/Dash/Previews/PreviewActionCombo.qml:34
196+#: qml/Dash/Previews/PreviewActionCombo.qml:35
189msgid "Less..."
197msgid "Less..."
190msgstr "Menos..."
198msgstr "Menos..."
191
199
@@ -201,15 +209,23 @@ msgstr "Engadir unha opinión"
201msgid "Send"
209msgid "Send"
202msgstr "Enviar"
210msgstr "Enviar"
203
211
204−#: qml/Dash/ScopesOverview.qml:201
212+#: qml/Dash/PullToRefreshScopeStyle.qml:55
205−msgid "Manage Dash"
213+msgid "Pull to refresh…"
206−msgstr "Xestión do Panel"
214+msgstr "Tirar para actualizar..."
215+
216+#: qml/Dash/PullToRefreshScopeStyle.qml:60
217+msgid "Release to refresh…"
218+msgstr "Soltar para actualizar"
207
219
208−#: qml/Dash/ScopesOverview.qml:408
220+#: qml/Dash/ScopesOverview.qml:206
221+msgid "Manage Scopes"
222+msgstr "Xestionar os Ámbitos"
223+
224+#: qml/Dash/ScopesOverview.qml:428
209msgid "Done"
225msgid "Done"
210msgstr "Feito"
226msgstr "Feito"
211
227
212−#: qml/Dash/ScopesOverview.qml:434
228+#: qml/Dash/ScopesOverview.qml:454
213msgid "Store"
229msgid "Store"
214msgstr "Tenda"
230msgstr "Tenda"
215
231
@@ -222,10 +238,10 @@ msgid "All"
222msgstr "Todos"
238msgstr "Todos"
223
239
224#: qml/Greeter/Greeter.qml:157
240#: qml/Greeter/Greeter.qml:157
225−msgid "Swipe to unlock"
241+msgid "Unlock"
226−msgstr "Esvare o dedo para desbloquear"
242+msgstr "Desbloquear"
227
243
228−#: qml/Hud/HudParametrizedActionsPage.qml:132
244+#: qml/Hud/HudParametrizedActionsPage.qml:139
229msgid "Confirm"
245msgid "Confirm"
230msgstr "Confirmar"
246msgstr "Confirmar"
231
247
@@ -245,18 +261,10 @@ msgstr "Fale agora…"
245msgid "Speaking..."
261msgid "Speaking..."
246msgstr "Falando…"
262msgstr "Falando…"
247
263
248−#: qml/Notifications/NotificationMenuItemFactory.qml:105
264+#: qml/Notifications/NotificationMenuItemFactory.qml:116
249msgid "Show password"
265msgid "Show password"
250msgstr "Mostrar contrasinal"
266msgstr "Mostrar contrasinal"
251
267
252−#: qml/Notifications/NotificationMenuItemFactory.qml:120
253−msgid "Enter SIM PIN"
254−msgstr "Introduza o PIN da SIM"
255−
256−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
257−msgid "Sorry, incorrect PIN"
258−msgstr "Sentímolo, o PIN é incorrecto"
259−
260#: qml/Panel/ActiveCallHint.qml:77
268#: qml/Panel/ActiveCallHint.qml:77
261msgid "Tap to return to call..."
269msgid "Tap to return to call..."
262msgstr "Toque para volver a chamar..."
270msgstr "Toque para volver a chamar..."
@@ -265,27 +273,31 @@ msgstr "Toque para volver a chamar..."
265msgid "Conference"
273msgid "Conference"
266msgstr "Conferencia"
274msgstr "Conferencia"
267
275
268−#: qml/Panel/Indicators/MenuItemFactory.qml:651
276+#: qml/Panel/Indicators/MenuItemFactory.qml:600
277+msgid "Nothing is playing"
278+msgstr "Non hai nada en reprodución"
279+
280+#: qml/Panel/Indicators/MenuItemFactory.qml:748
269msgid "In queue…"
281msgid "In queue…"
270msgstr "Na cola..."
282msgstr "Na cola..."
271
283
272−#: qml/Panel/Indicators/MenuItemFactory.qml:655
284+#: qml/Panel/Indicators/MenuItemFactory.qml:752
273msgid "Downloading"
285msgid "Downloading"
274msgstr "Descargando"
286msgstr "Descargando"
275
287
276−#: qml/Panel/Indicators/MenuItemFactory.qml:657
288+#: qml/Panel/Indicators/MenuItemFactory.qml:754
277msgid "Paused, tap to resume"
289msgid "Paused, tap to resume"
278msgstr "Detido, toque para continuar"
290msgstr "Detido, toque para continuar"
279
291
280−#: qml/Panel/Indicators/MenuItemFactory.qml:659
292+#: qml/Panel/Indicators/MenuItemFactory.qml:756
281msgid "Canceled"
293msgid "Canceled"
282msgstr "Cancelado"
294msgstr "Cancelado"
283
295
284−#: qml/Panel/Indicators/MenuItemFactory.qml:661
296+#: qml/Panel/Indicators/MenuItemFactory.qml:758
285msgid "Finished"
297msgid "Finished"
286msgstr "Rematado"
298msgstr "Rematado"
287
299
288−#: qml/Panel/Indicators/MenuItemFactory.qml:663
300+#: qml/Panel/Indicators/MenuItemFactory.qml:760
289msgid "Failed, tap to retry"
301msgid "Failed, tap to retry"
290msgstr "Fallou, toque para reintentar"
302msgstr "Fallou, toque para reintentar"
291
303
@@ -297,45 +309,49 @@ msgstr "Desbloquear a SIM"
297msgid "Roaming"
309msgid "Roaming"
298msgstr "Itinerancia"
310msgstr "Itinerancia"
299
311
300−#: qml/Shell.qml:266
312+#: qml/Shell.qml:346
301−msgid "Enter your passphrase"
313+msgid "Enter passphrase"
302−msgstr "Introduza a frase de paso"
314+msgstr "Introduza a frase secreta"
303
315
304−#: qml/Shell.qml:267
316+#: qml/Shell.qml:347
305msgid "Sorry, incorrect passphrase"
317msgid "Sorry, incorrect passphrase"
306msgstr "Sentímolo a frase é incorrecta"
318msgstr "Sentímolo a frase é incorrecta"
307
319
308−#: qml/Shell.qml:282
320+#: qml/Shell.qml:348
321+msgid "Please re-enter"
322+msgstr "Introducir de novo"
323+
324+#: qml/Shell.qml:350
309−msgid "Enter your passcode"
325+msgid "Enter passcode"
310−msgstr ""
326+msgstr "Introduza a clave"
311
327
312−#: qml/Shell.qml:283
328+#: qml/Shell.qml:351
313msgid "Sorry, incorrect passcode"
329msgid "Sorry, incorrect passcode"
314−msgstr ""
330+msgstr "Sentímolo, a clave é incorrecta"
315
331
316−#: qml/Shell.qml:273
332+#: qml/Shell.qml:354
317#, qt-format
333#, qt-format
318−msgid "Enter your %1"
334+msgid "Enter %1"
319msgstr "Introducir %1"
335msgstr "Introducir %1"
320
336
321−#: qml/Shell.qml:274
337+#: qml/Shell.qml:355
322#, qt-format
338#, qt-format
323msgid "Sorry, incorrect %1"
339msgid "Sorry, incorrect %1"
324−msgstr "Sentímolo, %1 incorrecto"
340+msgstr "Sentímolo, %1 non coincide"
325
341
326−#: qml/Shell.qml:310
342+#: qml/Shell.qml:390
327msgid "Sorry, incorrect passphrase."
343msgid "Sorry, incorrect passphrase."
328−msgstr "Sentímolo é incorrecta."
344+msgstr "Sentímolo a frase é incorrecta."
329
345
330−#: qml/Shell.qml:311
346+#: qml/Shell.qml:391
331msgid "Sorry, incorrect passcode."
347msgid "Sorry, incorrect passcode."
332msgstr "Sentímolo, a clave é incorrecta."
348msgstr "Sentímolo, a clave é incorrecta."
333
349
334−#: qml/Shell.qml:312
350+#: qml/Shell.qml:392
335msgid "This will be your last attempt."
351msgid "This will be your last attempt."
336msgstr "Este será o seu último intento."
352msgstr "Este será o seu último intento."
337
353
338−#: qml/Shell.qml:314
354+#: qml/Shell.qml:394
339msgid ""
355msgid ""
340"If passphrase is entered incorrectly, your phone will conduct a factory "
356"If passphrase is entered incorrectly, your phone will conduct a factory "
341"reset and all personal data will be deleted."
357"reset and all personal data will be deleted."
@@ -343,7 +359,7 @@ msgstr ""
343"Se a frase de paso introducida é incorrecta, o teléfono restabelecerá os "
359"Se a frase de paso introducida é incorrecta, o teléfono restabelecerá os "
344"valores de fábrica e perderá todos os datos persoais."
360"valores de fábrica e perderá todos os datos persoais."
345
361
346−#: qml/Shell.qml:315
362+#: qml/Shell.qml:395
347msgid ""
363msgid ""
348"If passcode is entered incorrectly, your phone will conduct a factory reset "
364"If passcode is entered incorrectly, your phone will conduct a factory reset "
349"and all personal data will be deleted."
365"and all personal data will be deleted."
@@ -351,11 +367,8 @@ msgstr ""
351"Se a clave introducida é incorrecta, o teléfono restabelecerá os valores de "
367"Se a clave introducida é incorrecta, o teléfono restabelecerá os valores de "
352"fábrica e perderá todos os datos persoais."
368"fábrica e perderá todos os datos persoais."
353
369
354−#~ msgid "Are you sure you would like to turn power off?"
370+#~ msgid "Sorry, incorrect PIN"
355−#~ msgstr "Está certo de apagar o aparato?"
371+#~ msgstr "Sentímolo, o PIN é incorrecto"
356−
357−#~ msgid "Restart"
358−#~ msgstr "Reiniciar"
359
372
360−#~ msgid "Enter your PIN"
373+#~ msgid "Enter SIM PIN"
361−#~ msgstr "Introduza o PIN"
374+#~ msgstr "Introduza o PIN da SIM"
po/he.po+89−79
@@ -7,29 +7,49 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11"PO-Revision-Date: 2014-08-23 14:19+0000\n"
11"PO-Revision-Date: 2014-08-23 14:19+0000\n"
12"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
12"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
13"Language-Team: Hebrew <he@li.org>\n"
13"Language-Team: Hebrew <he@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18+"X-Launchpad-Export-Date: 2014-10-09 06:36+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
19+"X-Generator: Launchpad (build 17196)\n"
19
20
20−#: plugins/LightDM/Greeter.cpp:129
21+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
22msgid "Password: "
22msgstr "ססמה: "
23msgstr "ססמה: "
23
24
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
27msgid "Pin shortcut"
27msgstr "הצמדת קיצור דרך"
28msgstr "הצמדת קיצור דרך"
28
29
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
31msgid "Unpin shortcut"
31msgstr "הפרדת קיצור הדרך"
32msgstr "הפרדת קיצור הדרך"
32
33
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr ""
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr ""
41+
42+#: qml/Components/DelayedLockscreen.qml:63
43+msgid "You have been locked out due to too many failed passcode attempts."
44+msgstr ""
45+
46+#: qml/Components/DelayedLockscreen.qml:72
47+#, qt-format
48+msgid "Please wait %1 minute and then try again…"
49+msgid_plural "Please wait %1 minutes and then try again…"
50+msgstr[0] ""
51+msgstr[1] ""
52+
33#: qml/Components/Dialogs.qml:70
53#: qml/Components/Dialogs.qml:70
34msgid "Log out"
54msgid "Log out"
35msgstr ""
55msgstr ""
@@ -74,11 +94,15 @@ msgid ""
74"to power off?"
94"to power off?"
75msgstr ""
95msgstr ""
76
96
77−#: qml/Components/Dialogs.qml:144
97+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
98msgid "Power off"
79msgstr "כיבוי"
99msgstr "כיבוי"
80
100
81−#: qml/Components/Dialogs.qml:162
101+#: qml/Components/Dialogs.qml:157
102+msgid "Restart"
103+msgstr ""
104+
105+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
106msgid "Cancel"
83msgstr "ביטול"
107msgstr "ביטול"
84
108
@@ -130,60 +154,44 @@ msgstr ""
130"ברגעים אלו סיימת את התמחותך בשימוש במחוות קצה והטלפון פתוח לשימושך<br><br>נא "
154"ברגעים אלו סיימת את התמחותך בשימוש במחוות קצה והטלפון פתוח לשימושך<br><br>נא "
131"לגעת במסך כדי להתחיל"
155"לגעת במסך כדי להתחיל"
132
156
133−#: qml/Components/Lockscreen.qml:167
157+#: qml/Components/Lockscreen.qml:220
134−msgid "Please wait"
135−msgstr "נא להמתין"
136−
137−#: qml/Components/Lockscreen.qml:172
138−msgid "Too many incorrect attempts"
139−msgstr "יותר מדי ניסיונות שגויים"
140−
141−#: qml/Components/Lockscreen.qml:206
142msgid "Emergency Call"
158msgid "Emergency Call"
143msgstr "שיחת חירום"
159msgstr "שיחת חירום"
144
160
145−#: qml/Components/Lockscreen.qml:226
161+#: qml/Components/Lockscreen.qml:252
146msgid "OK"
162msgid "OK"
147msgstr "אישור"
163msgstr "אישור"
148
164
149−#: qml/Components/PassphraseLockscreen.qml:61
150−#, qt-format
151−msgid "Hello %1"
152−msgstr "שלום %1"
153−
154−#: qml/Components/PassphraseLockscreen.qml:61
155−msgid "Hello"
156−msgstr "שלום"
157−
158−#: qml/Dash/GenericScopeView.qml:361
165+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
159msgid "See less"
166msgid "See less"
160msgstr "לראות פחות"
167msgstr "לראות פחות"
161
168
162−#: qml/Dash/GenericScopeView.qml:361
169+#: qml/Dash/GenericScopeView.qml:434
163msgid "See all"
170msgid "See all"
164msgstr "להציג הכול"
171msgstr "להציג הכול"
165
172
173+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
166−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
174+#: qml/Panel/SearchIndicator.qml:27
167msgid "Search"
175msgid "Search"
168msgstr "חיפוש"
176msgstr "חיפוש"
169
177
170−#: qml/Dash/PageHeader.qml:270
178+#: qml/Dash/PageHeader.qml:268
171msgid "Settings"
179msgid "Settings"
172msgstr ""
180msgstr ""
173
181
174−#: qml/Dash/PageHeader.qml:279
182+#: qml/Dash/PageHeader.qml:275
175msgid "Remove from Favorites"
183msgid "Remove from Favorites"
176msgstr ""
184msgstr ""
177
185
178−#: qml/Dash/PageHeader.qml:279
186+#: qml/Dash/PageHeader.qml:275
179msgid "Add to Favorites"
187msgid "Add to Favorites"
180msgstr ""
188msgstr ""
181
189
182−#: qml/Dash/Previews/PreviewActionCombo.qml:34
190+#: qml/Dash/Previews/PreviewActionCombo.qml:35
183msgid "More..."
191msgid "More..."
184msgstr "עוד…"
192msgstr "עוד…"
185
193
186−#: qml/Dash/Previews/PreviewActionCombo.qml:34
194+#: qml/Dash/Previews/PreviewActionCombo.qml:35
187msgid "Less..."
195msgid "Less..."
188msgstr "פחות…"
196msgstr "פחות…"
189
197
@@ -199,15 +207,23 @@ msgstr "הוספת סקירה"
199msgid "Send"
207msgid "Send"
200msgstr "שליחה"
208msgstr "שליחה"
201
209
202−#: qml/Dash/ScopesOverview.qml:201
210+#: qml/Dash/PullToRefreshScopeStyle.qml:55
203−msgid "Manage Dash"
211+msgid "Pull to refresh…"
204msgstr ""
212msgstr ""
205
213
214+#: qml/Dash/PullToRefreshScopeStyle.qml:60
215+msgid "Release to refresh…"
216+msgstr ""
217+
206−#: qml/Dash/ScopesOverview.qml:408
218+#: qml/Dash/ScopesOverview.qml:206
219+msgid "Manage Scopes"
220+msgstr ""
221+
222+#: qml/Dash/ScopesOverview.qml:428
207msgid "Done"
223msgid "Done"
208msgstr "סיימתי"
224msgstr "סיימתי"
209
225
210−#: qml/Dash/ScopesOverview.qml:434
226+#: qml/Dash/ScopesOverview.qml:454
211msgid "Store"
227msgid "Store"
212msgstr "אחסון"
228msgstr "אחסון"
213
229
@@ -220,10 +236,10 @@ msgid "All"
220msgstr "הכול"
236msgstr "הכול"
221
237
222#: qml/Greeter/Greeter.qml:157
238#: qml/Greeter/Greeter.qml:157
223−msgid "Swipe to unlock"
239+msgid "Unlock"
224−msgstr "יש להחליק לפתיחה"
240+msgstr ""
225
241
226−#: qml/Hud/HudParametrizedActionsPage.qml:132
242+#: qml/Hud/HudParametrizedActionsPage.qml:139
227msgid "Confirm"
243msgid "Confirm"
228msgstr "אישור"
244msgstr "אישור"
229
245
@@ -243,18 +259,10 @@ msgstr "יש לדבר כעת..."
243msgid "Speaking..."
259msgid "Speaking..."
244msgstr "הדיבור מושמע…"
260msgstr "הדיבור מושמע…"
245
261
246−#: qml/Notifications/NotificationMenuItemFactory.qml:105
262+#: qml/Notifications/NotificationMenuItemFactory.qml:116
247msgid "Show password"
263msgid "Show password"
248msgstr "הצגת הססמה"
264msgstr "הצגת הססמה"
249
265
250−#: qml/Notifications/NotificationMenuItemFactory.qml:120
251−msgid "Enter SIM PIN"
252−msgstr ""
253−
254−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
255−msgid "Sorry, incorrect PIN"
256−msgstr ""
257−
258#: qml/Panel/ActiveCallHint.qml:77
266#: qml/Panel/ActiveCallHint.qml:77
259msgid "Tap to return to call..."
267msgid "Tap to return to call..."
260msgstr "יש לגעת כדי להחזיר שיחה…"
268msgstr "יש לגעת כדי להחזיר שיחה…"
@@ -263,27 +271,31 @@ msgstr "יש לגעת כדי להחזיר שיחה…"
263msgid "Conference"
271msgid "Conference"
264msgstr "ועידה"
272msgstr "ועידה"
265
273
266−#: qml/Panel/Indicators/MenuItemFactory.qml:651
274+#: qml/Panel/Indicators/MenuItemFactory.qml:600
275+msgid "Nothing is playing"
276+msgstr ""
277+
278+#: qml/Panel/Indicators/MenuItemFactory.qml:748
267msgid "In queue…"
279msgid "In queue…"
268msgstr "בתור…"
280msgstr "בתור…"
269
281
270−#: qml/Panel/Indicators/MenuItemFactory.qml:655
282+#: qml/Panel/Indicators/MenuItemFactory.qml:752
271msgid "Downloading"
283msgid "Downloading"
272msgstr "בהורדה"
284msgstr "בהורדה"
273
285
274−#: qml/Panel/Indicators/MenuItemFactory.qml:657
286+#: qml/Panel/Indicators/MenuItemFactory.qml:754
275msgid "Paused, tap to resume"
287msgid "Paused, tap to resume"
276msgstr "מושהה, יש לגעת כדי להמשיך"
288msgstr "מושהה, יש לגעת כדי להמשיך"
277
289
278−#: qml/Panel/Indicators/MenuItemFactory.qml:659
290+#: qml/Panel/Indicators/MenuItemFactory.qml:756
279msgid "Canceled"
291msgid "Canceled"
280msgstr "בוטל"
292msgstr "בוטל"
281
293
282−#: qml/Panel/Indicators/MenuItemFactory.qml:661
294+#: qml/Panel/Indicators/MenuItemFactory.qml:758
283msgid "Finished"
295msgid "Finished"
284msgstr "הושלם"
296msgstr "הושלם"
285
297
286−#: qml/Panel/Indicators/MenuItemFactory.qml:663
298+#: qml/Panel/Indicators/MenuItemFactory.qml:760
287msgid "Failed, tap to retry"
299msgid "Failed, tap to retry"
288msgstr "נכשל, יש לגעת כדי לנסות שוב"
300msgstr "נכשל, יש לגעת כדי לנסות שוב"
289
301
@@ -295,58 +307,56 @@ msgstr ""
295msgid "Roaming"
307msgid "Roaming"
296msgstr "נדידה"
308msgstr "נדידה"
297
309
298−#: qml/Shell.qml:266
310+#: qml/Shell.qml:346
299−msgid "Enter your passphrase"
311+msgid "Enter passphrase"
300−msgstr "נא להזין את מילת הצופן שלך"
312+msgstr ""
301
313
302−#: qml/Shell.qml:267
314+#: qml/Shell.qml:347
303msgid "Sorry, incorrect passphrase"
315msgid "Sorry, incorrect passphrase"
304msgstr "מילת הצופן שגויה, עמך הסליחה."
316msgstr "מילת הצופן שגויה, עמך הסליחה."
305
317
306−#: qml/Shell.qml:282
318+#: qml/Shell.qml:348
307−msgid "Enter your passcode"
319+msgid "Please re-enter"
308msgstr ""
320msgstr ""
309
321
310−#: qml/Shell.qml:283
322+#: qml/Shell.qml:350
323+msgid "Enter passcode"
324+msgstr ""
325+
326+#: qml/Shell.qml:351
311msgid "Sorry, incorrect passcode"
327msgid "Sorry, incorrect passcode"
312msgstr ""
328msgstr ""
313
329
314−#: qml/Shell.qml:273
330+#: qml/Shell.qml:354
315#, qt-format
331#, qt-format
316−msgid "Enter your %1"
332+msgid "Enter %1"
317msgstr ""
333msgstr ""
318
334
319−#: qml/Shell.qml:274
335+#: qml/Shell.qml:355
320#, qt-format
336#, qt-format
321msgid "Sorry, incorrect %1"
337msgid "Sorry, incorrect %1"
322msgstr ""
338msgstr ""
323
339
324−#: qml/Shell.qml:310
340+#: qml/Shell.qml:390
325msgid "Sorry, incorrect passphrase."
341msgid "Sorry, incorrect passphrase."
326msgstr "מילת הצופן שגויה, עמך הסליחה."
342msgstr "מילת הצופן שגויה, עמך הסליחה."
327
343
328−#: qml/Shell.qml:311
344+#: qml/Shell.qml:391
329msgid "Sorry, incorrect passcode."
345msgid "Sorry, incorrect passcode."
330msgstr "הצופן שגוי, עם הסליחה."
346msgstr "הצופן שגוי, עם הסליחה."
331
347
332−#: qml/Shell.qml:312
348+#: qml/Shell.qml:392
333msgid "This will be your last attempt."
349msgid "This will be your last attempt."
334msgstr "זה יהיה הניסיון האחרון שלך."
350msgstr "זה יהיה הניסיון האחרון שלך."
335
351
336−#: qml/Shell.qml:314
352+#: qml/Shell.qml:394
337msgid ""
353msgid ""
338"If passphrase is entered incorrectly, your phone will conduct a factory "
354"If passphrase is entered incorrectly, your phone will conduct a factory "
339"reset and all personal data will be deleted."
355"reset and all personal data will be deleted."
340msgstr ""
356msgstr ""
341
357
342−#: qml/Shell.qml:315
358+#: qml/Shell.qml:395
343msgid ""
359msgid ""
344"If passcode is entered incorrectly, your phone will conduct a factory reset "
360"If passcode is entered incorrectly, your phone will conduct a factory reset "
345"and all personal data will be deleted."
361"and all personal data will be deleted."
346msgstr ""
362msgstr ""
347−
348−#~ msgid "Restart"
349−#~ msgstr "הפעלה מחדש"
350−
351−#~ msgid "Are you sure you would like to turn power off?"
352−#~ msgstr "האם ברצונך לכבות את המכשיר?"
po/hi.po+87−71
@@ -7,29 +7,49 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11"PO-Revision-Date: 2014-01-15 01:49+0000\n"
11"PO-Revision-Date: 2014-01-15 01:49+0000\n"
12"Last-Translator: Siddhanathan S. <Unknown>\n"
12"Last-Translator: Siddhanathan S. <Unknown>\n"
13"Language-Team: Hindi <hi@li.org>\n"
13"Language-Team: Hindi <hi@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18+"X-Launchpad-Export-Date: 2014-10-09 06:36+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
19+"X-Generator: Launchpad (build 17196)\n"
19
20
20−#: plugins/LightDM/Greeter.cpp:129
21+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
22msgid "Password: "
22msgstr ""
23msgstr ""
23
24
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
27msgid "Pin shortcut"
27msgstr ""
28msgstr ""
28
29
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
31msgid "Unpin shortcut"
31msgstr ""
32msgstr ""
32
33
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr ""
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr ""
41+
42+#: qml/Components/DelayedLockscreen.qml:63
43+msgid "You have been locked out due to too many failed passcode attempts."
44+msgstr ""
45+
46+#: qml/Components/DelayedLockscreen.qml:72
47+#, qt-format
48+msgid "Please wait %1 minute and then try again…"
49+msgid_plural "Please wait %1 minutes and then try again…"
50+msgstr[0] ""
51+msgstr[1] ""
52+
33#: qml/Components/Dialogs.qml:70
53#: qml/Components/Dialogs.qml:70
34msgid "Log out"
54msgid "Log out"
35msgstr ""
55msgstr ""
@@ -74,11 +94,15 @@ msgid ""
74"to power off?"
94"to power off?"
75msgstr ""
95msgstr ""
76
96
77−#: qml/Components/Dialogs.qml:144
97+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
98msgid "Power off"
79msgstr ""
99msgstr ""
80
100
81−#: qml/Components/Dialogs.qml:162
101+#: qml/Components/Dialogs.qml:157
102+msgid "Restart"
103+msgstr ""
104+
105+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
106msgid "Cancel"
83msgstr ""
107msgstr ""
84
108
@@ -128,60 +152,44 @@ msgid ""
128"phone<br><br>Tap on the screen to start"
152"phone<br><br>Tap on the screen to start"
129msgstr ""
153msgstr ""
130
154
131−#: qml/Components/Lockscreen.qml:167
155+#: qml/Components/Lockscreen.qml:220
132−msgid "Please wait"
133−msgstr ""
134−
135−#: qml/Components/Lockscreen.qml:172
136−msgid "Too many incorrect attempts"
137−msgstr ""
138−
139−#: qml/Components/Lockscreen.qml:206
140msgid "Emergency Call"
156msgid "Emergency Call"
141msgstr "आपातकालीन कॉल"
157msgstr "आपातकालीन कॉल"
142
158
143−#: qml/Components/Lockscreen.qml:226
159+#: qml/Components/Lockscreen.qml:252
144msgid "OK"
160msgid "OK"
145msgstr ""
161msgstr ""
146
162
147−#: qml/Components/PassphraseLockscreen.qml:61
148−#, qt-format
149−msgid "Hello %1"
150−msgstr ""
151−
152−#: qml/Components/PassphraseLockscreen.qml:61
153−msgid "Hello"
154−msgstr "नमस्ते"
155−
156−#: qml/Dash/GenericScopeView.qml:361
163+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
157msgid "See less"
164msgid "See less"
158msgstr ""
165msgstr ""
159
166
160−#: qml/Dash/GenericScopeView.qml:361
167+#: qml/Dash/GenericScopeView.qml:434
161msgid "See all"
168msgid "See all"
162msgstr ""
169msgstr ""
163
170
171+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
164−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
172+#: qml/Panel/SearchIndicator.qml:27
165msgid "Search"
173msgid "Search"
166msgstr "खोजें"
174msgstr "खोजें"
167
175
168−#: qml/Dash/PageHeader.qml:270
176+#: qml/Dash/PageHeader.qml:268
169msgid "Settings"
177msgid "Settings"
170msgstr ""
178msgstr ""
171
179
172−#: qml/Dash/PageHeader.qml:279
180+#: qml/Dash/PageHeader.qml:275
173msgid "Remove from Favorites"
181msgid "Remove from Favorites"
174msgstr ""
182msgstr ""
175
183
176−#: qml/Dash/PageHeader.qml:279
184+#: qml/Dash/PageHeader.qml:275
177msgid "Add to Favorites"
185msgid "Add to Favorites"
178msgstr ""
186msgstr ""
179
187
180−#: qml/Dash/Previews/PreviewActionCombo.qml:34
188+#: qml/Dash/Previews/PreviewActionCombo.qml:35
181msgid "More..."
189msgid "More..."
182msgstr ""
190msgstr ""
183
191
184−#: qml/Dash/Previews/PreviewActionCombo.qml:34
192+#: qml/Dash/Previews/PreviewActionCombo.qml:35
185msgid "Less..."
193msgid "Less..."
186msgstr ""
194msgstr ""
187
195
@@ -197,15 +205,23 @@ msgstr "समीक्षा दे"
197msgid "Send"
205msgid "Send"
198msgstr "भेजें"
206msgstr "भेजें"
199
207
208+#: qml/Dash/PullToRefreshScopeStyle.qml:55
209+msgid "Pull to refresh…"
210+msgstr ""
211+
212+#: qml/Dash/PullToRefreshScopeStyle.qml:60
213+msgid "Release to refresh…"
214+msgstr ""
215+
200−#: qml/Dash/ScopesOverview.qml:201
216+#: qml/Dash/ScopesOverview.qml:206
201−msgid "Manage Dash"
217+msgid "Manage Scopes"
202msgstr ""
218msgstr ""
203
219
204−#: qml/Dash/ScopesOverview.qml:408
220+#: qml/Dash/ScopesOverview.qml:428
205msgid "Done"
221msgid "Done"
206msgstr ""
222msgstr ""
207
223
208−#: qml/Dash/ScopesOverview.qml:434
224+#: qml/Dash/ScopesOverview.qml:454
209msgid "Store"
225msgid "Store"
210msgstr ""
226msgstr ""
211
227
@@ -218,10 +234,10 @@ msgid "All"
218msgstr ""
234msgstr ""
219
235
220#: qml/Greeter/Greeter.qml:157
236#: qml/Greeter/Greeter.qml:157
221−msgid "Swipe to unlock"
237+msgid "Unlock"
222msgstr ""
238msgstr ""
223
239
224−#: qml/Hud/HudParametrizedActionsPage.qml:132
240+#: qml/Hud/HudParametrizedActionsPage.qml:139
225msgid "Confirm"
241msgid "Confirm"
226msgstr ""
242msgstr ""
227
243
@@ -241,18 +257,10 @@ msgstr "अब बात करें"
241msgid "Speaking..."
257msgid "Speaking..."
242msgstr "अब बोल रहे हैं"
258msgstr "अब बोल रहे हैं"
243
259
244−#: qml/Notifications/NotificationMenuItemFactory.qml:105
260+#: qml/Notifications/NotificationMenuItemFactory.qml:116
245msgid "Show password"
261msgid "Show password"
246msgstr ""
262msgstr ""
247
263
248−#: qml/Notifications/NotificationMenuItemFactory.qml:120
249−msgid "Enter SIM PIN"
250−msgstr ""
251−
252−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
253−msgid "Sorry, incorrect PIN"
254−msgstr ""
255−
256#: qml/Panel/ActiveCallHint.qml:77
264#: qml/Panel/ActiveCallHint.qml:77
257msgid "Tap to return to call..."
265msgid "Tap to return to call..."
258msgstr ""
266msgstr ""
@@ -261,27 +269,31 @@ msgstr ""
261msgid "Conference"
269msgid "Conference"
262msgstr ""
270msgstr ""
263
271
264−#: qml/Panel/Indicators/MenuItemFactory.qml:651
272+#: qml/Panel/Indicators/MenuItemFactory.qml:600
273+msgid "Nothing is playing"
274+msgstr ""
275+
276+#: qml/Panel/Indicators/MenuItemFactory.qml:748
265msgid "In queue…"
277msgid "In queue…"
266msgstr ""
278msgstr ""
267
279
268−#: qml/Panel/Indicators/MenuItemFactory.qml:655
280+#: qml/Panel/Indicators/MenuItemFactory.qml:752
269msgid "Downloading"
281msgid "Downloading"
270msgstr ""
282msgstr ""
271
283
272−#: qml/Panel/Indicators/MenuItemFactory.qml:657
284+#: qml/Panel/Indicators/MenuItemFactory.qml:754
273msgid "Paused, tap to resume"
285msgid "Paused, tap to resume"
274msgstr ""
286msgstr ""
275
287
276−#: qml/Panel/Indicators/MenuItemFactory.qml:659
288+#: qml/Panel/Indicators/MenuItemFactory.qml:756
277msgid "Canceled"
289msgid "Canceled"
278msgstr ""
290msgstr ""
279
291
280−#: qml/Panel/Indicators/MenuItemFactory.qml:661
292+#: qml/Panel/Indicators/MenuItemFactory.qml:758
281msgid "Finished"
293msgid "Finished"
282msgstr ""
294msgstr ""
283
295
284−#: qml/Panel/Indicators/MenuItemFactory.qml:663
296+#: qml/Panel/Indicators/MenuItemFactory.qml:760
285msgid "Failed, tap to retry"
297msgid "Failed, tap to retry"
286msgstr ""
298msgstr ""
287
299
@@ -293,51 +305,55 @@ msgstr ""
293msgid "Roaming"
305msgid "Roaming"
294msgstr ""
306msgstr ""
295
307
296−#: qml/Shell.qml:266
308+#: qml/Shell.qml:346
297−msgid "Enter your passphrase"
309+msgid "Enter passphrase"
298msgstr ""
310msgstr ""
299
311
300−#: qml/Shell.qml:267
312+#: qml/Shell.qml:347
301msgid "Sorry, incorrect passphrase"
313msgid "Sorry, incorrect passphrase"
302msgstr ""
314msgstr ""
303
315
304−#: qml/Shell.qml:282
316+#: qml/Shell.qml:348
317+msgid "Please re-enter"
318+msgstr ""
319+
320+#: qml/Shell.qml:350
305−msgid "Enter your passcode"
321+msgid "Enter passcode"
306msgstr ""
322msgstr ""
307
323
308−#: qml/Shell.qml:283
324+#: qml/Shell.qml:351
309msgid "Sorry, incorrect passcode"
325msgid "Sorry, incorrect passcode"
310msgstr ""
326msgstr ""
311
327
312−#: qml/Shell.qml:273
328+#: qml/Shell.qml:354
313#, qt-format
329#, qt-format
314−msgid "Enter your %1"
330+msgid "Enter %1"
315msgstr ""
331msgstr ""
316
332
317−#: qml/Shell.qml:274
333+#: qml/Shell.qml:355
318#, qt-format
334#, qt-format
319msgid "Sorry, incorrect %1"
335msgid "Sorry, incorrect %1"
320msgstr ""
336msgstr ""
321
337
322−#: qml/Shell.qml:310
338+#: qml/Shell.qml:390
323msgid "Sorry, incorrect passphrase."
339msgid "Sorry, incorrect passphrase."
324msgstr ""
340msgstr ""
325
341
326−#: qml/Shell.qml:311
342+#: qml/Shell.qml:391
327msgid "Sorry, incorrect passcode."
343msgid "Sorry, incorrect passcode."
328msgstr ""
344msgstr ""
329
345
330−#: qml/Shell.qml:312
346+#: qml/Shell.qml:392
331msgid "This will be your last attempt."
347msgid "This will be your last attempt."
332msgstr ""
348msgstr ""
333
349
334−#: qml/Shell.qml:314
350+#: qml/Shell.qml:394
335msgid ""
351msgid ""
336"If passphrase is entered incorrectly, your phone will conduct a factory "
352"If passphrase is entered incorrectly, your phone will conduct a factory "
337"reset and all personal data will be deleted."
353"reset and all personal data will be deleted."
338msgstr ""
354msgstr ""
339
355
340−#: qml/Shell.qml:315
356+#: qml/Shell.qml:395
341msgid ""
357msgid ""
342"If passcode is entered incorrectly, your phone will conduct a factory reset "
358"If passcode is entered incorrectly, your phone will conduct a factory reset "
343"and all personal data will be deleted."
359"and all personal data will be deleted."
po/hr.po+88−71
@@ -7,29 +7,50 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11"PO-Revision-Date: 2013-06-27 04:14+0000\n"
11"PO-Revision-Date: 2013-06-27 04:14+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Croatian <hr@li.org>\n"
13"Language-Team: Croatian <hr@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
19+"X-Launchpad-Export-Date: 2014-10-09 06:36+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
20+"X-Generator: Launchpad (build 17196)\n"
19
21
20−#: plugins/LightDM/Greeter.cpp:129
22+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
23msgid "Password: "
22msgstr ""
24msgstr ""
23
25
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
26+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
27+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
28msgid "Pin shortcut"
27msgstr ""
29msgstr ""
28
30
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
31+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
32msgid "Unpin shortcut"
31msgstr ""
33msgstr ""
32
34
35+#: qml/Components/DelayedLockscreen.qml:47
36+msgid "Device Locked"
37+msgstr ""
38+
39+#: qml/Components/DelayedLockscreen.qml:62
40+msgid "You have been locked out due to too many failed passphrase attempts."
41+msgstr ""
42+
43+#: qml/Components/DelayedLockscreen.qml:63
44+msgid "You have been locked out due to too many failed passcode attempts."
45+msgstr ""
46+
47+#: qml/Components/DelayedLockscreen.qml:72
48+#, qt-format
49+msgid "Please wait %1 minute and then try again…"
50+msgid_plural "Please wait %1 minutes and then try again…"
51+msgstr[0] ""
52+msgstr[1] ""
53+
33#: qml/Components/Dialogs.qml:70
54#: qml/Components/Dialogs.qml:70
34msgid "Log out"
55msgid "Log out"
35msgstr ""
56msgstr ""
@@ -74,11 +95,15 @@ msgid ""
74"to power off?"
95"to power off?"
75msgstr ""
96msgstr ""
76
97
77−#: qml/Components/Dialogs.qml:144
98+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
99msgid "Power off"
79msgstr ""
100msgstr ""
80
101
81−#: qml/Components/Dialogs.qml:162
102+#: qml/Components/Dialogs.qml:157
103+msgid "Restart"
104+msgstr ""
105+
106+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
107msgid "Cancel"
83msgstr ""
108msgstr ""
84
109
@@ -128,60 +153,44 @@ msgid ""
128"phone<br><br>Tap on the screen to start"
153"phone<br><br>Tap on the screen to start"
129msgstr ""
154msgstr ""
130
155
131−#: qml/Components/Lockscreen.qml:167
156+#: qml/Components/Lockscreen.qml:220
132−msgid "Please wait"
133−msgstr ""
134−
135−#: qml/Components/Lockscreen.qml:172
136−msgid "Too many incorrect attempts"
137−msgstr ""
138−
139−#: qml/Components/Lockscreen.qml:206
140msgid "Emergency Call"
157msgid "Emergency Call"
141msgstr ""
158msgstr ""
142
159
143−#: qml/Components/Lockscreen.qml:226
160+#: qml/Components/Lockscreen.qml:252
144msgid "OK"
161msgid "OK"
145msgstr ""
162msgstr ""
146
163
147−#: qml/Components/PassphraseLockscreen.qml:61
148−#, qt-format
149−msgid "Hello %1"
150−msgstr ""
151−
152−#: qml/Components/PassphraseLockscreen.qml:61
153−msgid "Hello"
154−msgstr ""
155−
156−#: qml/Dash/GenericScopeView.qml:361
164+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
157msgid "See less"
165msgid "See less"
158msgstr ""
166msgstr ""
159
167
160−#: qml/Dash/GenericScopeView.qml:361
168+#: qml/Dash/GenericScopeView.qml:434
161msgid "See all"
169msgid "See all"
162msgstr ""
170msgstr ""
163
171
172+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
164−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
173+#: qml/Panel/SearchIndicator.qml:27
165msgid "Search"
174msgid "Search"
166msgstr "Pretraživanje"
175msgstr "Pretraživanje"
167
176
168−#: qml/Dash/PageHeader.qml:270
177+#: qml/Dash/PageHeader.qml:268
169msgid "Settings"
178msgid "Settings"
170msgstr ""
179msgstr ""
171
180
172−#: qml/Dash/PageHeader.qml:279
181+#: qml/Dash/PageHeader.qml:275
173msgid "Remove from Favorites"
182msgid "Remove from Favorites"
174msgstr ""
183msgstr ""
175
184
176−#: qml/Dash/PageHeader.qml:279
185+#: qml/Dash/PageHeader.qml:275
177msgid "Add to Favorites"
186msgid "Add to Favorites"
178msgstr ""
187msgstr ""
179
188
180−#: qml/Dash/Previews/PreviewActionCombo.qml:34
189+#: qml/Dash/Previews/PreviewActionCombo.qml:35
181msgid "More..."
190msgid "More..."
182msgstr ""
191msgstr ""
183
192
184−#: qml/Dash/Previews/PreviewActionCombo.qml:34
193+#: qml/Dash/Previews/PreviewActionCombo.qml:35
185msgid "Less..."
194msgid "Less..."
186msgstr ""
195msgstr ""
187
196
@@ -197,15 +206,23 @@ msgstr ""
197msgid "Send"
206msgid "Send"
198msgstr ""
207msgstr ""
199
208
209+#: qml/Dash/PullToRefreshScopeStyle.qml:55
210+msgid "Pull to refresh…"
211+msgstr ""
212+
213+#: qml/Dash/PullToRefreshScopeStyle.qml:60
214+msgid "Release to refresh…"
215+msgstr ""
216+
200−#: qml/Dash/ScopesOverview.qml:201
217+#: qml/Dash/ScopesOverview.qml:206
201−msgid "Manage Dash"
218+msgid "Manage Scopes"
202msgstr ""
219msgstr ""
203
220
204−#: qml/Dash/ScopesOverview.qml:408
221+#: qml/Dash/ScopesOverview.qml:428
205msgid "Done"
222msgid "Done"
206msgstr ""
223msgstr ""
207
224
208−#: qml/Dash/ScopesOverview.qml:434
225+#: qml/Dash/ScopesOverview.qml:454
209msgid "Store"
226msgid "Store"
210msgstr ""
227msgstr ""
211
228
@@ -218,10 +235,10 @@ msgid "All"
218msgstr ""
235msgstr ""
219
236
220#: qml/Greeter/Greeter.qml:157
237#: qml/Greeter/Greeter.qml:157
221−msgid "Swipe to unlock"
238+msgid "Unlock"
222msgstr ""
239msgstr ""
223
240
224−#: qml/Hud/HudParametrizedActionsPage.qml:132
241+#: qml/Hud/HudParametrizedActionsPage.qml:139
225msgid "Confirm"
242msgid "Confirm"
226msgstr "Potvrdi"
243msgstr "Potvrdi"
227
244
@@ -241,18 +258,10 @@ msgstr "Recite..."
241msgid "Speaking..."
258msgid "Speaking..."
242msgstr "Govor..."
259msgstr "Govor..."
243
260
244−#: qml/Notifications/NotificationMenuItemFactory.qml:105
261+#: qml/Notifications/NotificationMenuItemFactory.qml:116
245msgid "Show password"
262msgid "Show password"
246msgstr ""
263msgstr ""
247
264
248−#: qml/Notifications/NotificationMenuItemFactory.qml:120
249−msgid "Enter SIM PIN"
250−msgstr ""
251−
252−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
253−msgid "Sorry, incorrect PIN"
254−msgstr ""
255−
256#: qml/Panel/ActiveCallHint.qml:77
265#: qml/Panel/ActiveCallHint.qml:77
257msgid "Tap to return to call..."
266msgid "Tap to return to call..."
258msgstr ""
267msgstr ""
@@ -261,27 +270,31 @@ msgstr ""
261msgid "Conference"
270msgid "Conference"
262msgstr ""
271msgstr ""
263
272
264−#: qml/Panel/Indicators/MenuItemFactory.qml:651
273+#: qml/Panel/Indicators/MenuItemFactory.qml:600
274+msgid "Nothing is playing"
275+msgstr ""
276+
277+#: qml/Panel/Indicators/MenuItemFactory.qml:748
265msgid "In queue…"
278msgid "In queue…"
266msgstr ""
279msgstr ""
267
280
268−#: qml/Panel/Indicators/MenuItemFactory.qml:655
281+#: qml/Panel/Indicators/MenuItemFactory.qml:752
269msgid "Downloading"
282msgid "Downloading"
270msgstr ""
283msgstr ""
271
284
272−#: qml/Panel/Indicators/MenuItemFactory.qml:657
285+#: qml/Panel/Indicators/MenuItemFactory.qml:754
273msgid "Paused, tap to resume"
286msgid "Paused, tap to resume"
274msgstr ""
287msgstr ""
275
288
276−#: qml/Panel/Indicators/MenuItemFactory.qml:659
289+#: qml/Panel/Indicators/MenuItemFactory.qml:756
277msgid "Canceled"
290msgid "Canceled"
278msgstr ""
291msgstr ""
279
292
280−#: qml/Panel/Indicators/MenuItemFactory.qml:661
293+#: qml/Panel/Indicators/MenuItemFactory.qml:758
281msgid "Finished"
294msgid "Finished"
282msgstr ""
295msgstr ""
283
296
284−#: qml/Panel/Indicators/MenuItemFactory.qml:663
297+#: qml/Panel/Indicators/MenuItemFactory.qml:760
285msgid "Failed, tap to retry"
298msgid "Failed, tap to retry"
286msgstr ""
299msgstr ""
287
300
@@ -293,51 +306,55 @@ msgstr ""
293msgid "Roaming"
306msgid "Roaming"
294msgstr ""
307msgstr ""
295
308
296−#: qml/Shell.qml:266
309+#: qml/Shell.qml:346
297−msgid "Enter your passphrase"
310+msgid "Enter passphrase"
298msgstr ""
311msgstr ""
299
312
300−#: qml/Shell.qml:267
313+#: qml/Shell.qml:347
301msgid "Sorry, incorrect passphrase"
314msgid "Sorry, incorrect passphrase"
302msgstr ""
315msgstr ""
303
316
304−#: qml/Shell.qml:282
317+#: qml/Shell.qml:348
318+msgid "Please re-enter"
319+msgstr ""
320+
321+#: qml/Shell.qml:350
305−msgid "Enter your passcode"
322+msgid "Enter passcode"
306msgstr ""
323msgstr ""
307
324
308−#: qml/Shell.qml:283
325+#: qml/Shell.qml:351
309msgid "Sorry, incorrect passcode"
326msgid "Sorry, incorrect passcode"
310msgstr ""
327msgstr ""
311
328
312−#: qml/Shell.qml:273
329+#: qml/Shell.qml:354
313#, qt-format
330#, qt-format
314−msgid "Enter your %1"
331+msgid "Enter %1"
315msgstr ""
332msgstr ""
316
333
317−#: qml/Shell.qml:274
334+#: qml/Shell.qml:355
318#, qt-format
335#, qt-format
319msgid "Sorry, incorrect %1"
336msgid "Sorry, incorrect %1"
320msgstr ""
337msgstr ""
321
338
322−#: qml/Shell.qml:310
339+#: qml/Shell.qml:390
323msgid "Sorry, incorrect passphrase."
340msgid "Sorry, incorrect passphrase."
324msgstr ""
341msgstr ""
325
342
326−#: qml/Shell.qml:311
343+#: qml/Shell.qml:391
327msgid "Sorry, incorrect passcode."
344msgid "Sorry, incorrect passcode."
328msgstr ""
345msgstr ""
329
346
330−#: qml/Shell.qml:312
347+#: qml/Shell.qml:392
331msgid "This will be your last attempt."
348msgid "This will be your last attempt."
332msgstr ""
349msgstr ""
333
350
334−#: qml/Shell.qml:314
351+#: qml/Shell.qml:394
335msgid ""
352msgid ""
336"If passphrase is entered incorrectly, your phone will conduct a factory "
353"If passphrase is entered incorrectly, your phone will conduct a factory "
337"reset and all personal data will be deleted."
354"reset and all personal data will be deleted."
338msgstr ""
355msgstr ""
339
356
340−#: qml/Shell.qml:315
357+#: qml/Shell.qml:395
341msgid ""
358msgid ""
342"If passcode is entered incorrectly, your phone will conduct a factory reset "
359"If passcode is entered incorrectly, your phone will conduct a factory reset "
343"and all personal data will be deleted."
360"and all personal data will be deleted."
po/hu.po+108−99
@@ -7,78 +7,104 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11−"PO-Revision-Date: 2014-08-27 15:34+0000\n"
11+"PO-Revision-Date: 2014-10-11 10:50+0000\n"
12"Last-Translator: Richard Somlói <ricsipontaz@gmail.com>\n"
12"Last-Translator: Richard Somlói <ricsipontaz@gmail.com>\n"
13"Language-Team: Hungarian <hu@li.org>\n"
13"Language-Team: Hungarian <hu@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18+"X-Launchpad-Export-Date: 2014-10-12 06:55+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
19+"X-Generator: Launchpad (build 17196)\n"
19
20
20−#: plugins/LightDM/Greeter.cpp:129
21+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
22msgid "Password: "
22msgstr "Jelszó: "
23msgstr "Jelszó: "
23
24
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
27msgid "Pin shortcut"
27msgstr "Indító rögzítése"
28msgstr "Indító rögzítése"
28
29
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
31msgid "Unpin shortcut"
31msgstr "Indító feloldása"
32msgstr "Indító feloldása"
32
33
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr "Eszköz lezárva"
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr "A túl sok hibás jelmondat próbálkozás miatt le lett zárva az eszköz."
41+
42+#: qml/Components/DelayedLockscreen.qml:63
43+msgid "You have been locked out due to too many failed passcode attempts."
44+msgstr "A túl sok hibás jelkód próbálkozás miatt le lett zárva az eszköz."
45+
46+#: qml/Components/DelayedLockscreen.qml:72
47+#, qt-format
48+msgid "Please wait %1 minute and then try again…"
49+msgid_plural "Please wait %1 minutes and then try again…"
50+msgstr[0] "Kérjük várjon %1 percet és próbálja újra…"
51+msgstr[1] "Kérjük várjon %1 percet és próbálja újra…"
52+
33#: qml/Components/Dialogs.qml:70
53#: qml/Components/Dialogs.qml:70
34msgid "Log out"
54msgid "Log out"
35−msgstr ""
55+msgstr "Kijelentkezés"
36
56
37#: qml/Components/Dialogs.qml:71
57#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
58msgid "Are you sure you want to log out?"
39−msgstr ""
59+msgstr "Biztos benne, hogy kijelentkezik?"
40
60
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
61#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
62#: qml/Components/Dialogs.qml:122
43msgid "No"
63msgid "No"
44−msgstr ""
64+msgstr "Nem"
45
65
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
66#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
67#: qml/Components/Dialogs.qml:129
48msgid "Yes"
68msgid "Yes"
49−msgstr ""
69+msgstr "Igen"
50
70
51#: qml/Components/Dialogs.qml:94
71#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
72msgid "Shut down"
53−msgstr ""
73+msgstr "Leállítás"
54
74
55#: qml/Components/Dialogs.qml:95
75#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
76msgid "Are you sure you want to shut down?"
57−msgstr ""
77+msgstr "Biztosan le szeretné állítani?"
58
78
59#: qml/Components/Dialogs.qml:119
79#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
80msgid "Reboot"
61−msgstr ""
81+msgstr "Újraindítás"
62
82
63#: qml/Components/Dialogs.qml:120
83#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
84msgid "Are you sure you want to reboot?"
65−msgstr ""
85+msgstr "Biztosan újra szeretné indítani?"
66
86
67#: qml/Components/Dialogs.qml:144
87#: qml/Components/Dialogs.qml:144
68msgid "Power"
88msgid "Power"
69−msgstr ""
89+msgstr "Kikapcsolás"
70
90
71#: qml/Components/Dialogs.qml:145
91#: qml/Components/Dialogs.qml:145
72msgid ""
92msgid ""
73"Are you sure you would like\n"
93"Are you sure you would like\n"
74"to power off?"
94"to power off?"
75msgstr ""
95msgstr ""
96+"Biztos benne, hogy ki\n"
97+"szeretné kapcsolni?"
76
98
77−#: qml/Components/Dialogs.qml:144
99+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
100msgid "Power off"
79msgstr "Kikapcsolás"
101msgstr "Kikapcsolás"
80
102
81−#: qml/Components/Dialogs.qml:162
103+#: qml/Components/Dialogs.qml:157
104+msgid "Restart"
105+msgstr "Újraindítás"
106+
107+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
108msgid "Cancel"
83msgstr "Mégse"
109msgstr "Mégse"
84
110
@@ -132,60 +158,44 @@ msgstr ""
132"Elsajátította a gesztusokat, és megkezdheti a telefon "
158"Elsajátította a gesztusokat, és megkezdheti a telefon "
133"használatát.<br><br>Koppintson a képernyőre a kezdéshez."
159"használatát.<br><br>Koppintson a képernyőre a kezdéshez."
134
160
135−#: qml/Components/Lockscreen.qml:167
161+#: qml/Components/Lockscreen.qml:220
136−msgid "Please wait"
137−msgstr "Kérem várjon"
138−
139−#: qml/Components/Lockscreen.qml:172
140−msgid "Too many incorrect attempts"
141−msgstr "Túl sok sikertelen kísérlet"
142−
143−#: qml/Components/Lockscreen.qml:206
144msgid "Emergency Call"
162msgid "Emergency Call"
145msgstr "Vészhívás"
163msgstr "Vészhívás"
146
164
147−#: qml/Components/Lockscreen.qml:226
165+#: qml/Components/Lockscreen.qml:252
148msgid "OK"
166msgid "OK"
149msgstr "Ok"
167msgstr "Ok"
150
168
151−#: qml/Components/PassphraseLockscreen.qml:61
152−#, qt-format
153−msgid "Hello %1"
154−msgstr "Üdv %1"
155−
156−#: qml/Components/PassphraseLockscreen.qml:61
157−msgid "Hello"
158−msgstr "Üdvözöljük"
159−
160−#: qml/Dash/GenericScopeView.qml:361
169+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
161msgid "See less"
170msgid "See less"
162msgstr "Kevesebb"
171msgstr "Kevesebb"
163
172
164−#: qml/Dash/GenericScopeView.qml:361
173+#: qml/Dash/GenericScopeView.qml:434
165msgid "See all"
174msgid "See all"
166msgstr "Összes megtekintése"
175msgstr "Összes megtekintése"
167
176
177+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
168−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
178+#: qml/Panel/SearchIndicator.qml:27
169msgid "Search"
179msgid "Search"
170msgstr "Keresés"
180msgstr "Keresés"
171
181
172−#: qml/Dash/PageHeader.qml:270
182+#: qml/Dash/PageHeader.qml:268
173msgid "Settings"
183msgid "Settings"
174−msgstr ""
184+msgstr "Beállítások"
175
185
176−#: qml/Dash/PageHeader.qml:279
186+#: qml/Dash/PageHeader.qml:275
177msgid "Remove from Favorites"
187msgid "Remove from Favorites"
178−msgstr ""
188+msgstr "Eltávolítás a kedvencek közül"
179
189
180−#: qml/Dash/PageHeader.qml:279
190+#: qml/Dash/PageHeader.qml:275
181msgid "Add to Favorites"
191msgid "Add to Favorites"
182−msgstr ""
192+msgstr "Hozzáadás a kedvencekhez"
183
193
184−#: qml/Dash/Previews/PreviewActionCombo.qml:34
194+#: qml/Dash/Previews/PreviewActionCombo.qml:35
185msgid "More..."
195msgid "More..."
186msgstr "Több…"
196msgstr "Több…"
187
197
188−#: qml/Dash/Previews/PreviewActionCombo.qml:34
198+#: qml/Dash/Previews/PreviewActionCombo.qml:35
189msgid "Less..."
199msgid "Less..."
190msgstr "Kevesebb…"
200msgstr "Kevesebb…"
191
201
@@ -201,15 +211,23 @@ msgstr "Értékelés hozzáadása"
201msgid "Send"
211msgid "Send"
202msgstr "Küldés"
212msgstr "Küldés"
203
213
214+#: qml/Dash/PullToRefreshScopeStyle.qml:55
215+msgid "Pull to refresh…"
216+msgstr "Húzza a frissítéshez…"
217+
218+#: qml/Dash/PullToRefreshScopeStyle.qml:60
219+msgid "Release to refresh…"
220+msgstr "Engedje el a frissítéshez…"
221+
204−#: qml/Dash/ScopesOverview.qml:201
222+#: qml/Dash/ScopesOverview.qml:206
205−msgid "Manage Dash"
223+msgid "Manage Scopes"
206−msgstr "Dash kezelése"
224+msgstr "Lencsék kezelése"
207
225
208−#: qml/Dash/ScopesOverview.qml:408
226+#: qml/Dash/ScopesOverview.qml:428
209msgid "Done"
227msgid "Done"
210msgstr "Kész"
228msgstr "Kész"
211
229
212−#: qml/Dash/ScopesOverview.qml:434
230+#: qml/Dash/ScopesOverview.qml:454
213msgid "Store"
231msgid "Store"
214msgstr "Áruház"
232msgstr "Áruház"
215
233
@@ -222,10 +240,10 @@ msgid "All"
222msgstr "Összes"
240msgstr "Összes"
223
241
224#: qml/Greeter/Greeter.qml:157
242#: qml/Greeter/Greeter.qml:157
225−msgid "Swipe to unlock"
243+msgid "Unlock"
226−msgstr "Csúsztasson a feloldáshoz"
244+msgstr "Feloldás"
227
245
228−#: qml/Hud/HudParametrizedActionsPage.qml:132
246+#: qml/Hud/HudParametrizedActionsPage.qml:139
229msgid "Confirm"
247msgid "Confirm"
230msgstr "Megerősítés"
248msgstr "Megerősítés"
231
249
@@ -245,18 +263,10 @@ msgstr "Most beszéljen…"
245msgid "Speaking..."
263msgid "Speaking..."
246msgstr "Beszéd…"
264msgstr "Beszéd…"
247
265
248−#: qml/Notifications/NotificationMenuItemFactory.qml:105
266+#: qml/Notifications/NotificationMenuItemFactory.qml:116
249msgid "Show password"
267msgid "Show password"
250msgstr "Jelszó megjelenítése"
268msgstr "Jelszó megjelenítése"
251
269
252−#: qml/Notifications/NotificationMenuItemFactory.qml:120
253−msgid "Enter SIM PIN"
254−msgstr "Adja meg a SIM PIN kódját"
255−
256−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
257−msgid "Sorry, incorrect PIN"
258−msgstr "Sajnáljuk, helytelen PIN"
259−
260#: qml/Panel/ActiveCallHint.qml:77
270#: qml/Panel/ActiveCallHint.qml:77
261msgid "Tap to return to call..."
271msgid "Tap to return to call..."
262msgstr "Érintse meg, hogy visszatérjen a híváshoz..."
272msgstr "Érintse meg, hogy visszatérjen a híváshoz..."
@@ -265,27 +275,31 @@ msgstr "Érintse meg, hogy visszatérjen a híváshoz..."
265msgid "Conference"
275msgid "Conference"
266msgstr "Konferencia"
276msgstr "Konferencia"
267
277
268−#: qml/Panel/Indicators/MenuItemFactory.qml:651
278+#: qml/Panel/Indicators/MenuItemFactory.qml:600
279+msgid "Nothing is playing"
280+msgstr "Nincs lejátszás"
281+
282+#: qml/Panel/Indicators/MenuItemFactory.qml:748
269msgid "In queue…"
283msgid "In queue…"
270msgstr "Sorban…"
284msgstr "Sorban…"
271
285
272−#: qml/Panel/Indicators/MenuItemFactory.qml:655
286+#: qml/Panel/Indicators/MenuItemFactory.qml:752
273msgid "Downloading"
287msgid "Downloading"
274msgstr "Letöltés"
288msgstr "Letöltés"
275
289
276−#: qml/Panel/Indicators/MenuItemFactory.qml:657
290+#: qml/Panel/Indicators/MenuItemFactory.qml:754
277msgid "Paused, tap to resume"
291msgid "Paused, tap to resume"
278msgstr "Szüneteltetve, koppintson a folytatáshoz"
292msgstr "Szüneteltetve, koppintson a folytatáshoz"
279
293
280−#: qml/Panel/Indicators/MenuItemFactory.qml:659
294+#: qml/Panel/Indicators/MenuItemFactory.qml:756
281msgid "Canceled"
295msgid "Canceled"
282msgstr "Megszakítva"
296msgstr "Megszakítva"
283
297
284−#: qml/Panel/Indicators/MenuItemFactory.qml:661
298+#: qml/Panel/Indicators/MenuItemFactory.qml:758
285msgid "Finished"
299msgid "Finished"
286msgstr "Befejeződött"
300msgstr "Befejeződött"
287
301
288−#: qml/Panel/Indicators/MenuItemFactory.qml:663
302+#: qml/Panel/Indicators/MenuItemFactory.qml:760
289msgid "Failed, tap to retry"
303msgid "Failed, tap to retry"
290msgstr "Sikertelen, koppintson az újrapróbáláshoz"
304msgstr "Sikertelen, koppintson az újrapróbáláshoz"
291
305
@@ -297,45 +311,49 @@ msgstr "SIM feloldása"
297msgid "Roaming"
311msgid "Roaming"
298msgstr "Barangolás"
312msgstr "Barangolás"
299
313
300−#: qml/Shell.qml:266
314+#: qml/Shell.qml:346
301−msgid "Enter your passphrase"
315+msgid "Enter passphrase"
302−msgstr "Adja meg a jelmondatot"
316+msgstr "Jelmondat megadása"
303
317
304−#: qml/Shell.qml:267
318+#: qml/Shell.qml:347
305msgid "Sorry, incorrect passphrase"
319msgid "Sorry, incorrect passphrase"
306msgstr "Sajnáljuk, helytelen jelmondat"
320msgstr "Sajnáljuk, helytelen jelmondat"
307
321
308−#: qml/Shell.qml:282
322+#: qml/Shell.qml:348
323+msgid "Please re-enter"
324+msgstr "Kérjük próbálja újra"
325+
326+#: qml/Shell.qml:350
309−msgid "Enter your passcode"
327+msgid "Enter passcode"
310−msgstr ""
328+msgstr "Jelkód megadása"
311
329
312−#: qml/Shell.qml:283
330+#: qml/Shell.qml:351
313msgid "Sorry, incorrect passcode"
331msgid "Sorry, incorrect passcode"
314−msgstr ""
332+msgstr "Sajnáljuk, helytelen jelkód"
315
333
316−#: qml/Shell.qml:273
334+#: qml/Shell.qml:354
317#, qt-format
335#, qt-format
318−msgid "Enter your %1"
336+msgid "Enter %1"
319−msgstr "Kérjük adja meg: %1"
337+msgstr "Adja meg: %1"
320
338
321−#: qml/Shell.qml:274
339+#: qml/Shell.qml:355
322#, qt-format
340#, qt-format
323msgid "Sorry, incorrect %1"
341msgid "Sorry, incorrect %1"
324msgstr "Sajnáljuk, helytelen %1"
342msgstr "Sajnáljuk, helytelen %1"
325
343
326−#: qml/Shell.qml:310
344+#: qml/Shell.qml:390
327msgid "Sorry, incorrect passphrase."
345msgid "Sorry, incorrect passphrase."
328msgstr "Sajnáljuk, helytelen jelmondat."
346msgstr "Sajnáljuk, helytelen jelmondat."
329
347
330−#: qml/Shell.qml:311
348+#: qml/Shell.qml:391
331msgid "Sorry, incorrect passcode."
349msgid "Sorry, incorrect passcode."
332msgstr "Sajnáljuk, helytelen jelkód."
350msgstr "Sajnáljuk, helytelen jelkód."
333
351
334−#: qml/Shell.qml:312
352+#: qml/Shell.qml:392
335msgid "This will be your last attempt."
353msgid "This will be your last attempt."
336msgstr "Ez az utolsó próbálkozási lehetősége."
354msgstr "Ez az utolsó próbálkozási lehetősége."
337
355
338−#: qml/Shell.qml:314
356+#: qml/Shell.qml:394
339msgid ""
357msgid ""
340"If passphrase is entered incorrectly, your phone will conduct a factory "
358"If passphrase is entered incorrectly, your phone will conduct a factory "
341"reset and all personal data will be deleted."
359"reset and all personal data will be deleted."
@@ -343,19 +361,10 @@ msgstr ""
343"Ha helytelen jelmondatot ad meg, a telefonja visszaállítja a gyári "
361"Ha helytelen jelmondatot ad meg, a telefonja visszaállítja a gyári "
344"beállításokat és törli minden személyes adatát."
362"beállításokat és törli minden személyes adatát."
345
363
346−#: qml/Shell.qml:315
364+#: qml/Shell.qml:395
347msgid ""
365msgid ""
348"If passcode is entered incorrectly, your phone will conduct a factory reset "
366"If passcode is entered incorrectly, your phone will conduct a factory reset "
349"and all personal data will be deleted."
367"and all personal data will be deleted."
350msgstr ""
368msgstr ""
351"Ha helytelen jelkódot ad meg, a telefonja visszaállítja a gyári "
369"Ha helytelen jelkódot ad meg, a telefonja visszaállítja a gyári "
352"beállításokat és törli minden személyes adatát."
370"beállításokat és törli minden személyes adatát."
353−
354−#~ msgid "Restart"
355−#~ msgstr "Újraindítás"
356−
357−#~ msgid "Are you sure you would like to turn power off?"
358−#~ msgstr "Biztos benne, hogy ki szeretné kapcsolni?"
359−
360−#~ msgid "Enter your PIN"
361−#~ msgstr "Adja meg a PIN kódot"
po/hy.po+87−71
@@ -7,29 +7,49 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11"PO-Revision-Date: 2013-06-27 04:43+0000\n"
11"PO-Revision-Date: 2013-06-27 04:43+0000\n"
12"Last-Translator: iAbaS <sosabazyan@yandex.ru>\n"
12"Last-Translator: iAbaS <sosabazyan@yandex.ru>\n"
13"Language-Team: Armenian <hy@li.org>\n"
13"Language-Team: Armenian <hy@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=1; plural=0;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:29+0000\n"
18+"X-Launchpad-Export-Date: 2014-10-09 06:36+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
19+"X-Generator: Launchpad (build 17196)\n"
19
20
20−#: plugins/LightDM/Greeter.cpp:129
21+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
22msgid "Password: "
22msgstr ""
23msgstr ""
23
24
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
27msgid "Pin shortcut"
27msgstr ""
28msgstr ""
28
29
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
31msgid "Unpin shortcut"
31msgstr ""
32msgstr ""
32
33
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr ""
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr ""
41+
42+#: qml/Components/DelayedLockscreen.qml:63
43+msgid "You have been locked out due to too many failed passcode attempts."
44+msgstr ""
45+
46+#: qml/Components/DelayedLockscreen.qml:72
47+#, qt-format
48+msgid "Please wait %1 minute and then try again…"
49+msgid_plural "Please wait %1 minutes and then try again…"
50+msgstr[0] ""
51+msgstr[1] ""
52+
33#: qml/Components/Dialogs.qml:70
53#: qml/Components/Dialogs.qml:70
34msgid "Log out"
54msgid "Log out"
35msgstr ""
55msgstr ""
@@ -74,11 +94,15 @@ msgid ""
74"to power off?"
94"to power off?"
75msgstr ""
95msgstr ""
76
96
77−#: qml/Components/Dialogs.qml:144
97+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
98msgid "Power off"
79msgstr ""
99msgstr ""
80
100
81−#: qml/Components/Dialogs.qml:162
101+#: qml/Components/Dialogs.qml:157
102+msgid "Restart"
103+msgstr ""
104+
105+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
106msgid "Cancel"
83msgstr ""
107msgstr ""
84
108
@@ -128,60 +152,44 @@ msgid ""
128"phone<br><br>Tap on the screen to start"
152"phone<br><br>Tap on the screen to start"
129msgstr ""
153msgstr ""
130
154
131−#: qml/Components/Lockscreen.qml:167
155+#: qml/Components/Lockscreen.qml:220
132−msgid "Please wait"
133−msgstr ""
134−
135−#: qml/Components/Lockscreen.qml:172
136−msgid "Too many incorrect attempts"
137−msgstr ""
138−
139−#: qml/Components/Lockscreen.qml:206
140msgid "Emergency Call"
156msgid "Emergency Call"
141msgstr ""
157msgstr ""
142
158
143−#: qml/Components/Lockscreen.qml:226
159+#: qml/Components/Lockscreen.qml:252
144msgid "OK"
160msgid "OK"
145msgstr ""
161msgstr ""
146
162
147−#: qml/Components/PassphraseLockscreen.qml:61
148−#, qt-format
149−msgid "Hello %1"
150−msgstr ""
151−
152−#: qml/Components/PassphraseLockscreen.qml:61
153−msgid "Hello"
154−msgstr ""
155−
156−#: qml/Dash/GenericScopeView.qml:361
163+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
157msgid "See less"
164msgid "See less"
158msgstr ""
165msgstr ""
159
166
160−#: qml/Dash/GenericScopeView.qml:361
167+#: qml/Dash/GenericScopeView.qml:434
161msgid "See all"
168msgid "See all"
162msgstr ""
169msgstr ""
163
170
171+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
164−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
172+#: qml/Panel/SearchIndicator.qml:27
165msgid "Search"
173msgid "Search"
166msgstr "Որոնում"
174msgstr "Որոնում"
167
175
168−#: qml/Dash/PageHeader.qml:270
176+#: qml/Dash/PageHeader.qml:268
169msgid "Settings"
177msgid "Settings"
170msgstr ""
178msgstr ""
171
179
172−#: qml/Dash/PageHeader.qml:279
180+#: qml/Dash/PageHeader.qml:275
173msgid "Remove from Favorites"
181msgid "Remove from Favorites"
174msgstr ""
182msgstr ""
175
183
176−#: qml/Dash/PageHeader.qml:279
184+#: qml/Dash/PageHeader.qml:275
177msgid "Add to Favorites"
185msgid "Add to Favorites"
178msgstr ""
186msgstr ""
179
187
180−#: qml/Dash/Previews/PreviewActionCombo.qml:34
188+#: qml/Dash/Previews/PreviewActionCombo.qml:35
181msgid "More..."
189msgid "More..."
182msgstr ""
190msgstr ""
183
191
184−#: qml/Dash/Previews/PreviewActionCombo.qml:34
192+#: qml/Dash/Previews/PreviewActionCombo.qml:35
185msgid "Less..."
193msgid "Less..."
186msgstr ""
194msgstr ""
187
195
@@ -197,15 +205,23 @@ msgstr ""
197msgid "Send"
205msgid "Send"
198msgstr ""
206msgstr ""
199
207
208+#: qml/Dash/PullToRefreshScopeStyle.qml:55
209+msgid "Pull to refresh…"
210+msgstr ""
211+
212+#: qml/Dash/PullToRefreshScopeStyle.qml:60
213+msgid "Release to refresh…"
214+msgstr ""
215+
200−#: qml/Dash/ScopesOverview.qml:201
216+#: qml/Dash/ScopesOverview.qml:206
201−msgid "Manage Dash"
217+msgid "Manage Scopes"
202msgstr ""
218msgstr ""
203
219
204−#: qml/Dash/ScopesOverview.qml:408
220+#: qml/Dash/ScopesOverview.qml:428
205msgid "Done"
221msgid "Done"
206msgstr ""
222msgstr ""
207
223
208−#: qml/Dash/ScopesOverview.qml:434
224+#: qml/Dash/ScopesOverview.qml:454
209msgid "Store"
225msgid "Store"
210msgstr ""
226msgstr ""
211
227
@@ -218,10 +234,10 @@ msgid "All"
218msgstr ""
234msgstr ""
219
235
220#: qml/Greeter/Greeter.qml:157
236#: qml/Greeter/Greeter.qml:157
221−msgid "Swipe to unlock"
237+msgid "Unlock"
222msgstr ""
238msgstr ""
223
239
224−#: qml/Hud/HudParametrizedActionsPage.qml:132
240+#: qml/Hud/HudParametrizedActionsPage.qml:139
225msgid "Confirm"
241msgid "Confirm"
226msgstr "Հաստատել"
242msgstr "Հաստատել"
227
243
@@ -241,18 +257,10 @@ msgstr "Խոսի՛ր"
241msgid "Speaking..."
257msgid "Speaking..."
242msgstr "Խոսում եմ..."
258msgstr "Խոսում եմ..."
243
259
244−#: qml/Notifications/NotificationMenuItemFactory.qml:105
260+#: qml/Notifications/NotificationMenuItemFactory.qml:116
245msgid "Show password"
261msgid "Show password"
246msgstr ""
262msgstr ""
247
263
248−#: qml/Notifications/NotificationMenuItemFactory.qml:120
249−msgid "Enter SIM PIN"
250−msgstr ""
251−
252−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
253−msgid "Sorry, incorrect PIN"
254−msgstr ""
255−
256#: qml/Panel/ActiveCallHint.qml:77
264#: qml/Panel/ActiveCallHint.qml:77
257msgid "Tap to return to call..."
265msgid "Tap to return to call..."
258msgstr ""
266msgstr ""
@@ -261,27 +269,31 @@ msgstr ""
261msgid "Conference"
269msgid "Conference"
262msgstr ""
270msgstr ""
263
271
264−#: qml/Panel/Indicators/MenuItemFactory.qml:651
272+#: qml/Panel/Indicators/MenuItemFactory.qml:600
273+msgid "Nothing is playing"
274+msgstr ""
275+
276+#: qml/Panel/Indicators/MenuItemFactory.qml:748
265msgid "In queue…"
277msgid "In queue…"
266msgstr ""
278msgstr ""
267
279
268−#: qml/Panel/Indicators/MenuItemFactory.qml:655
280+#: qml/Panel/Indicators/MenuItemFactory.qml:752
269msgid "Downloading"
281msgid "Downloading"
270msgstr ""
282msgstr ""
271
283
272−#: qml/Panel/Indicators/MenuItemFactory.qml:657
284+#: qml/Panel/Indicators/MenuItemFactory.qml:754
273msgid "Paused, tap to resume"
285msgid "Paused, tap to resume"
274msgstr ""
286msgstr ""
275
287
276−#: qml/Panel/Indicators/MenuItemFactory.qml:659
288+#: qml/Panel/Indicators/MenuItemFactory.qml:756
277msgid "Canceled"
289msgid "Canceled"
278msgstr ""
290msgstr ""
279
291
280−#: qml/Panel/Indicators/MenuItemFactory.qml:661
292+#: qml/Panel/Indicators/MenuItemFactory.qml:758
281msgid "Finished"
293msgid "Finished"
282msgstr ""
294msgstr ""
283
295
284−#: qml/Panel/Indicators/MenuItemFactory.qml:663
296+#: qml/Panel/Indicators/MenuItemFactory.qml:760
285msgid "Failed, tap to retry"
297msgid "Failed, tap to retry"
286msgstr ""
298msgstr ""
287
299
@@ -293,51 +305,55 @@ msgstr ""
293msgid "Roaming"
305msgid "Roaming"
294msgstr ""
306msgstr ""
295
307
296−#: qml/Shell.qml:266
308+#: qml/Shell.qml:346
297−msgid "Enter your passphrase"
309+msgid "Enter passphrase"
298msgstr ""
310msgstr ""
299
311
300−#: qml/Shell.qml:267
312+#: qml/Shell.qml:347
301msgid "Sorry, incorrect passphrase"
313msgid "Sorry, incorrect passphrase"
302msgstr ""
314msgstr ""
303
315
304−#: qml/Shell.qml:282
316+#: qml/Shell.qml:348
317+msgid "Please re-enter"
318+msgstr ""
319+
320+#: qml/Shell.qml:350
305−msgid "Enter your passcode"
321+msgid "Enter passcode"
306msgstr ""
322msgstr ""
307
323
308−#: qml/Shell.qml:283
324+#: qml/Shell.qml:351
309msgid "Sorry, incorrect passcode"
325msgid "Sorry, incorrect passcode"
310msgstr ""
326msgstr ""
311
327
312−#: qml/Shell.qml:273
328+#: qml/Shell.qml:354
313#, qt-format
329#, qt-format
314−msgid "Enter your %1"
330+msgid "Enter %1"
315msgstr ""
331msgstr ""
316
332
317−#: qml/Shell.qml:274
333+#: qml/Shell.qml:355
318#, qt-format
334#, qt-format
319msgid "Sorry, incorrect %1"
335msgid "Sorry, incorrect %1"
320msgstr ""
336msgstr ""
321
337
322−#: qml/Shell.qml:310
338+#: qml/Shell.qml:390
323msgid "Sorry, incorrect passphrase."
339msgid "Sorry, incorrect passphrase."
324msgstr ""
340msgstr ""
325
341
326−#: qml/Shell.qml:311
342+#: qml/Shell.qml:391
327msgid "Sorry, incorrect passcode."
343msgid "Sorry, incorrect passcode."
328msgstr ""
344msgstr ""
329
345
330−#: qml/Shell.qml:312
346+#: qml/Shell.qml:392
331msgid "This will be your last attempt."
347msgid "This will be your last attempt."
332msgstr ""
348msgstr ""
333
349
334−#: qml/Shell.qml:314
350+#: qml/Shell.qml:394
335msgid ""
351msgid ""
336"If passphrase is entered incorrectly, your phone will conduct a factory "
352"If passphrase is entered incorrectly, your phone will conduct a factory "
337"reset and all personal data will be deleted."
353"reset and all personal data will be deleted."
338msgstr ""
354msgstr ""
339
355
340−#: qml/Shell.qml:315
356+#: qml/Shell.qml:395
341msgid ""
357msgid ""
342"If passcode is entered incorrectly, your phone will conduct a factory reset "
358"If passcode is entered incorrectly, your phone will conduct a factory reset "
343"and all personal data will be deleted."
359"and all personal data will be deleted."
po/id.po+87−71
@@ -7,29 +7,49 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11"PO-Revision-Date: 2013-06-26 22:35+0000\n"
11"PO-Revision-Date: 2013-06-26 22:35+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Indonesian <id@li.org>\n"
13"Language-Team: Indonesian <id@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=1; plural=0;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18+"X-Launchpad-Export-Date: 2014-10-09 06:36+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
19+"X-Generator: Launchpad (build 17196)\n"
19
20
20−#: plugins/LightDM/Greeter.cpp:129
21+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
22msgid "Password: "
22msgstr ""
23msgstr ""
23
24
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
27msgid "Pin shortcut"
27msgstr ""
28msgstr ""
28
29
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
31msgid "Unpin shortcut"
31msgstr ""
32msgstr ""
32
33
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr ""
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr ""
41+
42+#: qml/Components/DelayedLockscreen.qml:63
43+msgid "You have been locked out due to too many failed passcode attempts."
44+msgstr ""
45+
46+#: qml/Components/DelayedLockscreen.qml:72
47+#, qt-format
48+msgid "Please wait %1 minute and then try again…"
49+msgid_plural "Please wait %1 minutes and then try again…"
50+msgstr[0] ""
51+msgstr[1] ""
52+
33#: qml/Components/Dialogs.qml:70
53#: qml/Components/Dialogs.qml:70
34msgid "Log out"
54msgid "Log out"
35msgstr ""
55msgstr ""
@@ -74,11 +94,15 @@ msgid ""
74"to power off?"
94"to power off?"
75msgstr ""
95msgstr ""
76
96
77−#: qml/Components/Dialogs.qml:144
97+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
98msgid "Power off"
79msgstr ""
99msgstr ""
80
100
81−#: qml/Components/Dialogs.qml:162
101+#: qml/Components/Dialogs.qml:157
102+msgid "Restart"
103+msgstr ""
104+
105+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
106msgid "Cancel"
83msgstr ""
107msgstr ""
84
108
@@ -128,60 +152,44 @@ msgid ""
128"phone<br><br>Tap on the screen to start"
152"phone<br><br>Tap on the screen to start"
129msgstr ""
153msgstr ""
130
154
131−#: qml/Components/Lockscreen.qml:167
155+#: qml/Components/Lockscreen.qml:220
132−msgid "Please wait"
133−msgstr ""
134−
135−#: qml/Components/Lockscreen.qml:172
136−msgid "Too many incorrect attempts"
137−msgstr ""
138−
139−#: qml/Components/Lockscreen.qml:206
140msgid "Emergency Call"
156msgid "Emergency Call"
141msgstr ""
157msgstr ""
142
158
143−#: qml/Components/Lockscreen.qml:226
159+#: qml/Components/Lockscreen.qml:252
144msgid "OK"
160msgid "OK"
145msgstr ""
161msgstr ""
146
162
147−#: qml/Components/PassphraseLockscreen.qml:61
148−#, qt-format
149−msgid "Hello %1"
150−msgstr ""
151−
152−#: qml/Components/PassphraseLockscreen.qml:61
153−msgid "Hello"
154−msgstr ""
155−
156−#: qml/Dash/GenericScopeView.qml:361
163+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
157msgid "See less"
164msgid "See less"
158msgstr ""
165msgstr ""
159
166
160−#: qml/Dash/GenericScopeView.qml:361
167+#: qml/Dash/GenericScopeView.qml:434
161msgid "See all"
168msgid "See all"
162msgstr ""
169msgstr ""
163
170
171+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
164−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
172+#: qml/Panel/SearchIndicator.qml:27
165msgid "Search"
173msgid "Search"
166msgstr ""
174msgstr ""
167
175
168−#: qml/Dash/PageHeader.qml:270
176+#: qml/Dash/PageHeader.qml:268
169msgid "Settings"
177msgid "Settings"
170msgstr ""
178msgstr ""
171
179
172−#: qml/Dash/PageHeader.qml:279
180+#: qml/Dash/PageHeader.qml:275
173msgid "Remove from Favorites"
181msgid "Remove from Favorites"
174msgstr ""
182msgstr ""
175
183
176−#: qml/Dash/PageHeader.qml:279
184+#: qml/Dash/PageHeader.qml:275
177msgid "Add to Favorites"
185msgid "Add to Favorites"
178msgstr ""
186msgstr ""
179
187
180−#: qml/Dash/Previews/PreviewActionCombo.qml:34
188+#: qml/Dash/Previews/PreviewActionCombo.qml:35
181msgid "More..."
189msgid "More..."
182msgstr ""
190msgstr ""
183
191
184−#: qml/Dash/Previews/PreviewActionCombo.qml:34
192+#: qml/Dash/Previews/PreviewActionCombo.qml:35
185msgid "Less..."
193msgid "Less..."
186msgstr ""
194msgstr ""
187
195
@@ -197,15 +205,23 @@ msgstr ""
197msgid "Send"
205msgid "Send"
198msgstr ""
206msgstr ""
199
207
208+#: qml/Dash/PullToRefreshScopeStyle.qml:55
209+msgid "Pull to refresh…"
210+msgstr ""
211+
212+#: qml/Dash/PullToRefreshScopeStyle.qml:60
213+msgid "Release to refresh…"
214+msgstr ""
215+
200−#: qml/Dash/ScopesOverview.qml:201
216+#: qml/Dash/ScopesOverview.qml:206
201−msgid "Manage Dash"
217+msgid "Manage Scopes"
202msgstr ""
218msgstr ""
203
219
204−#: qml/Dash/ScopesOverview.qml:408
220+#: qml/Dash/ScopesOverview.qml:428
205msgid "Done"
221msgid "Done"
206msgstr ""
222msgstr ""
207
223
208−#: qml/Dash/ScopesOverview.qml:434
224+#: qml/Dash/ScopesOverview.qml:454
209msgid "Store"
225msgid "Store"
210msgstr ""
226msgstr ""
211
227
@@ -218,10 +234,10 @@ msgid "All"
218msgstr ""
234msgstr ""
219
235
220#: qml/Greeter/Greeter.qml:157
236#: qml/Greeter/Greeter.qml:157
221−msgid "Swipe to unlock"
237+msgid "Unlock"
222msgstr ""
238msgstr ""
223
239
224−#: qml/Hud/HudParametrizedActionsPage.qml:132
240+#: qml/Hud/HudParametrizedActionsPage.qml:139
225msgid "Confirm"
241msgid "Confirm"
226msgstr ""
242msgstr ""
227
243
@@ -241,18 +257,10 @@ msgstr ""
241msgid "Speaking..."
257msgid "Speaking..."
242msgstr ""
258msgstr ""
243
259
244−#: qml/Notifications/NotificationMenuItemFactory.qml:105
260+#: qml/Notifications/NotificationMenuItemFactory.qml:116
245msgid "Show password"
261msgid "Show password"
246msgstr ""
262msgstr ""
247
263
248−#: qml/Notifications/NotificationMenuItemFactory.qml:120
249−msgid "Enter SIM PIN"
250−msgstr ""
251−
252−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
253−msgid "Sorry, incorrect PIN"
254−msgstr ""
255−
256#: qml/Panel/ActiveCallHint.qml:77
264#: qml/Panel/ActiveCallHint.qml:77
257msgid "Tap to return to call..."
265msgid "Tap to return to call..."
258msgstr ""
266msgstr ""
@@ -261,27 +269,31 @@ msgstr ""
261msgid "Conference"
269msgid "Conference"
262msgstr ""
270msgstr ""
263
271
264−#: qml/Panel/Indicators/MenuItemFactory.qml:651
272+#: qml/Panel/Indicators/MenuItemFactory.qml:600
273+msgid "Nothing is playing"
274+msgstr ""
275+
276+#: qml/Panel/Indicators/MenuItemFactory.qml:748
265msgid "In queue…"
277msgid "In queue…"
266msgstr ""
278msgstr ""
267
279
268−#: qml/Panel/Indicators/MenuItemFactory.qml:655
280+#: qml/Panel/Indicators/MenuItemFactory.qml:752
269msgid "Downloading"
281msgid "Downloading"
270msgstr ""
282msgstr ""
271
283
272−#: qml/Panel/Indicators/MenuItemFactory.qml:657
284+#: qml/Panel/Indicators/MenuItemFactory.qml:754
273msgid "Paused, tap to resume"
285msgid "Paused, tap to resume"
274msgstr ""
286msgstr ""
275
287
276−#: qml/Panel/Indicators/MenuItemFactory.qml:659
288+#: qml/Panel/Indicators/MenuItemFactory.qml:756
277msgid "Canceled"
289msgid "Canceled"
278msgstr ""
290msgstr ""
279
291
280−#: qml/Panel/Indicators/MenuItemFactory.qml:661
292+#: qml/Panel/Indicators/MenuItemFactory.qml:758
281msgid "Finished"
293msgid "Finished"
282msgstr ""
294msgstr ""
283
295
284−#: qml/Panel/Indicators/MenuItemFactory.qml:663
296+#: qml/Panel/Indicators/MenuItemFactory.qml:760
285msgid "Failed, tap to retry"
297msgid "Failed, tap to retry"
286msgstr ""
298msgstr ""
287
299
@@ -293,51 +305,55 @@ msgstr ""
293msgid "Roaming"
305msgid "Roaming"
294msgstr ""
306msgstr ""
295
307
296−#: qml/Shell.qml:266
308+#: qml/Shell.qml:346
297−msgid "Enter your passphrase"
309+msgid "Enter passphrase"
298msgstr ""
310msgstr ""
299
311
300−#: qml/Shell.qml:267
312+#: qml/Shell.qml:347
301msgid "Sorry, incorrect passphrase"
313msgid "Sorry, incorrect passphrase"
302msgstr ""
314msgstr ""
303
315
304−#: qml/Shell.qml:282
316+#: qml/Shell.qml:348
317+msgid "Please re-enter"
318+msgstr ""
319+
320+#: qml/Shell.qml:350
305−msgid "Enter your passcode"
321+msgid "Enter passcode"
306msgstr ""
322msgstr ""
307
323
308−#: qml/Shell.qml:283
324+#: qml/Shell.qml:351
309msgid "Sorry, incorrect passcode"
325msgid "Sorry, incorrect passcode"
310msgstr ""
326msgstr ""
311
327
312−#: qml/Shell.qml:273
328+#: qml/Shell.qml:354
313#, qt-format
329#, qt-format
314−msgid "Enter your %1"
330+msgid "Enter %1"
315msgstr ""
331msgstr ""
316
332
317−#: qml/Shell.qml:274
333+#: qml/Shell.qml:355
318#, qt-format
334#, qt-format
319msgid "Sorry, incorrect %1"
335msgid "Sorry, incorrect %1"
320msgstr ""
336msgstr ""
321
337
322−#: qml/Shell.qml:310
338+#: qml/Shell.qml:390
323msgid "Sorry, incorrect passphrase."
339msgid "Sorry, incorrect passphrase."
324msgstr ""
340msgstr ""
325
341
326−#: qml/Shell.qml:311
342+#: qml/Shell.qml:391
327msgid "Sorry, incorrect passcode."
343msgid "Sorry, incorrect passcode."
328msgstr ""
344msgstr ""
329
345
330−#: qml/Shell.qml:312
346+#: qml/Shell.qml:392
331msgid "This will be your last attempt."
347msgid "This will be your last attempt."
332msgstr ""
348msgstr ""
333
349
334−#: qml/Shell.qml:314
350+#: qml/Shell.qml:394
335msgid ""
351msgid ""
336"If passphrase is entered incorrectly, your phone will conduct a factory "
352"If passphrase is entered incorrectly, your phone will conduct a factory "
337"reset and all personal data will be deleted."
353"reset and all personal data will be deleted."
338msgstr ""
354msgstr ""
339
355
340−#: qml/Shell.qml:315
356+#: qml/Shell.qml:395
341msgid ""
357msgid ""
342"If passcode is entered incorrectly, your phone will conduct a factory reset "
358"If passcode is entered incorrectly, your phone will conduct a factory reset "
343"and all personal data will be deleted."
359"and all personal data will be deleted."
po/is.po+129−101
@@ -9,81 +9,107 @@ msgid ""
9msgstr ""
9msgstr ""
10"Project-Id-Version: po_unity8-is\n"
10"Project-Id-Version: po_unity8-is\n"
11"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
12−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
12+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
13−"PO-Revision-Date: 2014-07-31 16:10+0000\n"
13+"PO-Revision-Date: 2014-10-09 10:49+0000\n"
14"Last-Translator: Sveinn í Felli <sv1@fellsnet.is>\n"
14"Last-Translator: Sveinn í Felli <sv1@fellsnet.is>\n"
15"Language-Team: Icelandic <translation-team-is@lists.sourceforge.net>\n"
15"Language-Team: Icelandic <translation-team-is@lists.sourceforge.net>\n"
16"MIME-Version: 1.0\n"
16"MIME-Version: 1.0\n"
17"Content-Type: text/plain; charset=UTF-8\n"
17"Content-Type: text/plain; charset=UTF-8\n"
18"Content-Transfer-Encoding: 8bit\n"
18"Content-Transfer-Encoding: 8bit\n"
19+"Plural-Forms: nplurals=2; plural=n != 1;\n"
19−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
20+"X-Launchpad-Export-Date: 2014-10-10 05:23+0000\n"
20−"X-Generator: Launchpad (build 17174)\n"
21+"X-Generator: Launchpad (build 17196)\n"
21"Language: is\n"
22"Language: is\n"
22
23
23−#: plugins/LightDM/Greeter.cpp:129
24+#: plugins/LightDM/Greeter.cpp:130
24msgid "Password: "
25msgid "Password: "
25−msgstr ""
26+msgstr "Lykilorð: "
26
27
27−#: plugins/Unity/Launcher/launcheritem.cpp:43
28+#: plugins/Unity/Launcher/launcheritem.cpp:45
28−#: plugins/Unity/Launcher/launcheritem.cpp:73
29+#: plugins/Unity/Launcher/launcheritem.cpp:91
29msgid "Pin shortcut"
30msgid "Pin shortcut"
30msgstr "Pinna flýtilykil"
31msgstr "Pinna flýtilykil"
31
32
32−#: plugins/Unity/Launcher/launcheritem.cpp:73
33+#: plugins/Unity/Launcher/launcheritem.cpp:91
33msgid "Unpin shortcut"
34msgid "Unpin shortcut"
34msgstr "Losa flýtilykil"
35msgstr "Losa flýtilykil"
35
36
37+#: qml/Components/DelayedLockscreen.qml:47
38+msgid "Device Locked"
39+msgstr "Tæki læst"
40+
41+#: qml/Components/DelayedLockscreen.qml:62
42+msgid "You have been locked out due to too many failed passphrase attempts."
43+msgstr ""
44+
45+#: qml/Components/DelayedLockscreen.qml:63
46+msgid "You have been locked out due to too many failed passcode attempts."
47+msgstr ""
48+
49+#: qml/Components/DelayedLockscreen.qml:72
50+#, qt-format
51+msgid "Please wait %1 minute and then try again…"
52+msgid_plural "Please wait %1 minutes and then try again…"
53+msgstr[0] "Bíddu í %1 mínútu og reyndu svo aftur"
54+msgstr[1] "Bíddu í %1 mínútur og reyndu svo aftur"
55+
36#: qml/Components/Dialogs.qml:70
56#: qml/Components/Dialogs.qml:70
37msgid "Log out"
57msgid "Log out"
38−msgstr ""
58+msgstr "Útskráning"
39
59
40#: qml/Components/Dialogs.qml:71
60#: qml/Components/Dialogs.qml:71
41msgid "Are you sure you want to log out?"
61msgid "Are you sure you want to log out?"
42−msgstr ""
62+msgstr "Ertu viss um að þú viljir skrá þig út?"
43
63
44#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
64#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
45#: qml/Components/Dialogs.qml:122
65#: qml/Components/Dialogs.qml:122
46msgid "No"
66msgid "No"
47−msgstr ""
67+msgstr "Nei"
48
68
49#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
69#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
50#: qml/Components/Dialogs.qml:129
70#: qml/Components/Dialogs.qml:129
51msgid "Yes"
71msgid "Yes"
52−msgstr ""
72+msgstr "Já"
53
73
54#: qml/Components/Dialogs.qml:94
74#: qml/Components/Dialogs.qml:94
55msgid "Shut down"
75msgid "Shut down"
56−msgstr ""
76+msgstr "Slökkva á tölvunni"
57
77
58#: qml/Components/Dialogs.qml:95
78#: qml/Components/Dialogs.qml:95
59msgid "Are you sure you want to shut down?"
79msgid "Are you sure you want to shut down?"
60−msgstr ""
80+msgstr "Ertu viss um að þú viljir slökkva á símanum?"
61
81
62#: qml/Components/Dialogs.qml:119
82#: qml/Components/Dialogs.qml:119
63msgid "Reboot"
83msgid "Reboot"
64−msgstr ""
84+msgstr "Endurræsa"
65
85
66#: qml/Components/Dialogs.qml:120
86#: qml/Components/Dialogs.qml:120
67msgid "Are you sure you want to reboot?"
87msgid "Are you sure you want to reboot?"
68−msgstr ""
88+msgstr "Ertu viss að þú viljir enduræsa?"
69
89
70#: qml/Components/Dialogs.qml:144
90#: qml/Components/Dialogs.qml:144
71msgid "Power"
91msgid "Power"
72−msgstr ""
92+msgstr "Aflstjórnun"
73
93
74#: qml/Components/Dialogs.qml:145
94#: qml/Components/Dialogs.qml:145
75msgid ""
95msgid ""
76"Are you sure you would like\n"
96"Are you sure you would like\n"
77"to power off?"
97"to power off?"
78msgstr ""
98msgstr ""
99+"Ertu viss um að þú viljir\n"
100+"slökkva á símanum?"
79
101
80−#: qml/Components/Dialogs.qml:144
102+#: qml/Components/Dialogs.qml:147
81msgid "Power off"
103msgid "Power off"
82−msgstr ""
104+msgstr "Slökkva"
83
105
84−#: qml/Components/Dialogs.qml:162
106+#: qml/Components/Dialogs.qml:157
107+msgid "Restart"
108+msgstr "Endurræsa"
109+
110+#: qml/Components/Dialogs.qml:167
85msgid "Cancel"
111msgid "Cancel"
86−msgstr ""
112+msgstr "Hætta við"
87
113
88#: qml/Components/EdgeDemoOverlay.qml:151
114#: qml/Components/EdgeDemoOverlay.qml:151
89msgid "Skip intro"
115msgid "Skip intro"
@@ -134,60 +160,44 @@ msgstr ""
134"Þú ert núna með æfingu í að nota skjáhreyfingar og getur því farið að nota "
160"Þú ert núna með æfingu í að nota skjáhreyfingar og getur því farið að nota "
135"símann<br><br>Sláðu létt á skjáinn til að byrja"
161"símann<br><br>Sláðu létt á skjáinn til að byrja"
136
162
137−#: qml/Components/Lockscreen.qml:167
163+#: qml/Components/Lockscreen.qml:220
138−msgid "Please wait"
139−msgstr ""
140−
141−#: qml/Components/Lockscreen.qml:172
142−msgid "Too many incorrect attempts"
143−msgstr ""
144−
145−#: qml/Components/Lockscreen.qml:206
146msgid "Emergency Call"
164msgid "Emergency Call"
147msgstr "Neyðarsímtal"
165msgstr "Neyðarsímtal"
148
166
149−#: qml/Components/Lockscreen.qml:226
167+#: qml/Components/Lockscreen.qml:252
150msgid "OK"
168msgid "OK"
151msgstr "Í lagi"
169msgstr "Í lagi"
152
170
153−#: qml/Components/PassphraseLockscreen.qml:61
154−#, qt-format
155−msgid "Hello %1"
156−msgstr "Hæ %1"
157−
158−#: qml/Components/PassphraseLockscreen.qml:61
159−msgid "Hello"
160−msgstr "Hæ"
161−
162−#: qml/Dash/GenericScopeView.qml:361
171+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
163msgid "See less"
172msgid "See less"
164msgstr "Sjá minna"
173msgstr "Sjá minna"
165
174
166−#: qml/Dash/GenericScopeView.qml:361
175+#: qml/Dash/GenericScopeView.qml:434
167msgid "See all"
176msgid "See all"
168msgstr "Sjá allt"
177msgstr "Sjá allt"
169
178
179+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
170−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
180+#: qml/Panel/SearchIndicator.qml:27
171msgid "Search"
181msgid "Search"
172msgstr "Leita"
182msgstr "Leita"
173
183
174−#: qml/Dash/PageHeader.qml:270
184+#: qml/Dash/PageHeader.qml:268
175msgid "Settings"
185msgid "Settings"
176−msgstr ""
186+msgstr "Stillingar"
177
187
178−#: qml/Dash/PageHeader.qml:279
188+#: qml/Dash/PageHeader.qml:275
179msgid "Remove from Favorites"
189msgid "Remove from Favorites"
180−msgstr ""
190+msgstr "Fjarlægja úr Eftirlæti"
181
191
182−#: qml/Dash/PageHeader.qml:279
192+#: qml/Dash/PageHeader.qml:275
183msgid "Add to Favorites"
193msgid "Add to Favorites"
184−msgstr ""
194+msgstr "Bæta við Eftirlæti"
185
195
186−#: qml/Dash/Previews/PreviewActionCombo.qml:34
196+#: qml/Dash/Previews/PreviewActionCombo.qml:35
187msgid "More..."
197msgid "More..."
188msgstr "Meira..."
198msgstr "Meira..."
189
199
190−#: qml/Dash/Previews/PreviewActionCombo.qml:34
200+#: qml/Dash/Previews/PreviewActionCombo.qml:35
191msgid "Less..."
201msgid "Less..."
192msgstr "Minna..."
202msgstr "Minna..."
193
203
@@ -203,31 +213,39 @@ msgstr "Gefa umsögn"
203msgid "Send"
213msgid "Send"
204msgstr "Senda"
214msgstr "Senda"
205
215
206−#: qml/Dash/ScopesOverview.qml:201
216+#: qml/Dash/PullToRefreshScopeStyle.qml:55
207−msgid "Manage Dash"
217+msgid "Pull to refresh…"
208msgstr ""
218msgstr ""
209
219
220+#: qml/Dash/PullToRefreshScopeStyle.qml:60
221+msgid "Release to refresh…"
222+msgstr "Slepptu til að endurlesa..."
223+
210−#: qml/Dash/ScopesOverview.qml:408
224+#: qml/Dash/ScopesOverview.qml:206
211−msgid "Done"
225+msgid "Manage Scopes"
212msgstr ""
226msgstr ""
213
227
214−#: qml/Dash/ScopesOverview.qml:434
228+#: qml/Dash/ScopesOverview.qml:428
229+msgid "Done"
230+msgstr "Lokið"
231+
232+#: qml/Dash/ScopesOverview.qml:454
215msgid "Store"
233msgid "Store"
216−msgstr ""
234+msgstr "Geyma"
217
235
218#: qml/Dash/ScopesOverviewTab.qml:36
236#: qml/Dash/ScopesOverviewTab.qml:36
219msgid "Favorites"
237msgid "Favorites"
220−msgstr ""
238+msgstr "Eftirlæti"
221
239
222#: qml/Dash/ScopesOverviewTab.qml:54
240#: qml/Dash/ScopesOverviewTab.qml:54
223msgid "All"
241msgid "All"
224−msgstr ""
242+msgstr "Allt"
225
243
226#: qml/Greeter/Greeter.qml:157
244#: qml/Greeter/Greeter.qml:157
227−msgid "Swipe to unlock"
245+msgid "Unlock"
228−msgstr "Strjúka til að aflæsa"
246+msgstr "Aflæsa"
229
247
230−#: qml/Hud/HudParametrizedActionsPage.qml:132
248+#: qml/Hud/HudParametrizedActionsPage.qml:139
231msgid "Confirm"
249msgid "Confirm"
232msgstr "Staðfesta"
250msgstr "Staðfesta"
233
251
@@ -247,18 +265,10 @@ msgstr "Tala núna..."
247msgid "Speaking..."
265msgid "Speaking..."
248msgstr "Tala..."
266msgstr "Tala..."
249
267
250−#: qml/Notifications/NotificationMenuItemFactory.qml:105
268+#: qml/Notifications/NotificationMenuItemFactory.qml:116
251msgid "Show password"
269msgid "Show password"
252msgstr "Birta lykilorð"
270msgstr "Birta lykilorð"
253
271
254−#: qml/Notifications/NotificationMenuItemFactory.qml:120
255−msgid "Enter SIM PIN"
256−msgstr ""
257−
258−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
259−msgid "Sorry, incorrect PIN"
260−msgstr ""
261−
262#: qml/Panel/ActiveCallHint.qml:77
272#: qml/Panel/ActiveCallHint.qml:77
263msgid "Tap to return to call..."
273msgid "Tap to return to call..."
264msgstr "Slá til að svara símtali..."
274msgstr "Slá til að svara símtali..."
@@ -267,84 +277,102 @@ msgstr "Slá til að svara símtali..."
267msgid "Conference"
277msgid "Conference"
268msgstr "Ráðstefna"
278msgstr "Ráðstefna"
269
279
270−#: qml/Panel/Indicators/MenuItemFactory.qml:651
280+#: qml/Panel/Indicators/MenuItemFactory.qml:600
281+msgid "Nothing is playing"
282+msgstr ""
283+
284+#: qml/Panel/Indicators/MenuItemFactory.qml:748
271msgid "In queue…"
285msgid "In queue…"
272msgstr "Í biðröð..."
286msgstr "Í biðröð..."
273
287
274−#: qml/Panel/Indicators/MenuItemFactory.qml:655
288+#: qml/Panel/Indicators/MenuItemFactory.qml:752
275msgid "Downloading"
289msgid "Downloading"
276msgstr "Sæki"
290msgstr "Sæki"
277
291
278−#: qml/Panel/Indicators/MenuItemFactory.qml:657
292+#: qml/Panel/Indicators/MenuItemFactory.qml:754
279msgid "Paused, tap to resume"
293msgid "Paused, tap to resume"
280msgstr "Í bið, sláðu létt til að halda áfram"
294msgstr "Í bið, sláðu létt til að halda áfram"
281
295
282−#: qml/Panel/Indicators/MenuItemFactory.qml:659
296+#: qml/Panel/Indicators/MenuItemFactory.qml:756
283msgid "Canceled"
297msgid "Canceled"
284msgstr "Hætt við"
298msgstr "Hætt við"
285
299
286−#: qml/Panel/Indicators/MenuItemFactory.qml:661
300+#: qml/Panel/Indicators/MenuItemFactory.qml:758
287msgid "Finished"
301msgid "Finished"
288msgstr "Lokið"
302msgstr "Lokið"
289
303
290−#: qml/Panel/Indicators/MenuItemFactory.qml:663
304+#: qml/Panel/Indicators/MenuItemFactory.qml:760
291msgid "Failed, tap to retry"
305msgid "Failed, tap to retry"
292msgstr "Mistókst, sláðu létt til að reyna aftur"
306msgstr "Mistókst, sláðu létt til að reyna aftur"
293
307
294#: qml/Panel/Indicators/ModemInfoItem.qml:105
308#: qml/Panel/Indicators/ModemInfoItem.qml:105
295msgid "Unlock SIM"
309msgid "Unlock SIM"
296−msgstr ""
310+msgstr "Aflæsa SIM-korti"
297
311
298#: qml/Panel/Indicators/RoamingIndication.qml:27
312#: qml/Panel/Indicators/RoamingIndication.qml:27
299msgid "Roaming"
313msgid "Roaming"
300−msgstr ""
314+msgstr "Ráphamur"
301
315
302−#: qml/Shell.qml:266
316+#: qml/Shell.qml:346
303−msgid "Enter your passphrase"
317+msgid "Enter passphrase"
304msgstr ""
318msgstr ""
305
319
306−#: qml/Shell.qml:267
320+#: qml/Shell.qml:347
307msgid "Sorry, incorrect passphrase"
321msgid "Sorry, incorrect passphrase"
308−msgstr ""
322+msgstr "Því miður, rangt lykilorð"
323+
324+#: qml/Shell.qml:348
325+msgid "Please re-enter"
326+msgstr "Settu aftur inn"
309
327
310−#: qml/Shell.qml:282
328+#: qml/Shell.qml:350
311−msgid "Enter your passcode"
329+msgid "Enter passcode"
312msgstr ""
330msgstr ""
313
331
314−#: qml/Shell.qml:283
332+#: qml/Shell.qml:351
315msgid "Sorry, incorrect passcode"
333msgid "Sorry, incorrect passcode"
316−msgstr ""
334+msgstr "Því miður, rangur aðgangskóði"
317
335
318−#: qml/Shell.qml:273
336+#: qml/Shell.qml:354
319#, qt-format
337#, qt-format
320−msgid "Enter your %1"
338+msgid "Enter %1"
321−msgstr ""
339+msgstr "Settu inn %1"
322
340
323−#: qml/Shell.qml:274
341+#: qml/Shell.qml:355
324#, qt-format
342#, qt-format
325msgid "Sorry, incorrect %1"
343msgid "Sorry, incorrect %1"
326−msgstr ""
344+msgstr "Því miður, rangt %1"
327
345
328−#: qml/Shell.qml:310
346+#: qml/Shell.qml:390
329msgid "Sorry, incorrect passphrase."
347msgid "Sorry, incorrect passphrase."
330−msgstr ""
348+msgstr "Því miður, rangt lykilorð."
331
349
332−#: qml/Shell.qml:311
350+#: qml/Shell.qml:391
333msgid "Sorry, incorrect passcode."
351msgid "Sorry, incorrect passcode."
334−msgstr ""
352+msgstr "Því miður, rangur aðgangskóði."
335
353
336−#: qml/Shell.qml:312
354+#: qml/Shell.qml:392
337msgid "This will be your last attempt."
355msgid "This will be your last attempt."
338−msgstr ""
356+msgstr "Þetta mun verða síðasta tilraunin þín."
339
357
340−#: qml/Shell.qml:314
358+#: qml/Shell.qml:394
341msgid ""
359msgid ""
342"If passphrase is entered incorrectly, your phone will conduct a factory "
360"If passphrase is entered incorrectly, your phone will conduct a factory "
343"reset and all personal data will be deleted."
361"reset and all personal data will be deleted."
344msgstr ""
362msgstr ""
363+"Ef lykilorð er rangt, mun síminn frumstilla allt á verksmiðjustillingar og "
364+"öllum einkagögnum verður eytt."
345
365
346−#: qml/Shell.qml:315
366+#: qml/Shell.qml:395
347msgid ""
367msgid ""
348"If passcode is entered incorrectly, your phone will conduct a factory reset "
368"If passcode is entered incorrectly, your phone will conduct a factory reset "
349"and all personal data will be deleted."
369"and all personal data will be deleted."
350msgstr ""
370msgstr ""
371+"Ef aðgangskóði er rangur, mun síminn frumstilla allt á verksmiðjustillingar "
372+"og öllum einkagögnum verður eytt."
373+
374+#~ msgid "Sorry, incorrect PIN"
375+#~ msgstr "Því miður, rangt PIN-númer"
376+
377+#~ msgid "Enter SIM PIN"
378+#~ msgstr "Settu inn PIN-númer SIM-kortsins"
po/it.po+111−96
@@ -7,78 +7,104 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11−"PO-Revision-Date: 2014-08-23 07:47+0000\n"
11+"PO-Revision-Date: 2014-09-30 10:56+0000\n"
12"Last-Translator: Claudio Arseni <claudio.arseni@gmail.com>\n"
12"Last-Translator: Claudio Arseni <claudio.arseni@gmail.com>\n"
13"Language-Team: Italian <it@li.org>\n"
13"Language-Team: Italian <it@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18+"X-Launchpad-Export-Date: 2014-10-09 06:36+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
19+"X-Generator: Launchpad (build 17196)\n"
19
20
20−#: plugins/LightDM/Greeter.cpp:129
21+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
22msgid "Password: "
22msgstr "Password: "
23msgstr "Password: "
23
24
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
27msgid "Pin shortcut"
27msgstr "Blocca scorciatoia"
28msgstr "Blocca scorciatoia"
28
29
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
31msgid "Unpin shortcut"
31msgstr "Sblocca scorciatoia"
32msgstr "Sblocca scorciatoia"
32
33
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr ""
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr ""
41+
42+#: qml/Components/DelayedLockscreen.qml:63
43+msgid "You have been locked out due to too many failed passcode attempts."
44+msgstr ""
45+
46+#: qml/Components/DelayedLockscreen.qml:72
47+#, qt-format
48+msgid "Please wait %1 minute and then try again…"
49+msgid_plural "Please wait %1 minutes and then try again…"
50+msgstr[0] ""
51+msgstr[1] ""
52+
33#: qml/Components/Dialogs.qml:70
53#: qml/Components/Dialogs.qml:70
34msgid "Log out"
54msgid "Log out"
35−msgstr ""
55+msgstr "Termina sessione"
36
56
37#: qml/Components/Dialogs.qml:71
57#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
58msgid "Are you sure you want to log out?"
39−msgstr ""
59+msgstr "Terminare veramente la sessione?"
40
60
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
61#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
62#: qml/Components/Dialogs.qml:122
43msgid "No"
63msgid "No"
44−msgstr ""
64+msgstr "No"
45
65
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
66#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
67#: qml/Components/Dialogs.qml:129
48msgid "Yes"
68msgid "Yes"
49−msgstr ""
69+msgstr "Sì"
50
70
51#: qml/Components/Dialogs.qml:94
71#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
72msgid "Shut down"
53−msgstr ""
73+msgstr "Spegni"
54
74
55#: qml/Components/Dialogs.qml:95
75#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
76msgid "Are you sure you want to shut down?"
57−msgstr ""
77+msgstr "Spegnere veramente il dispositivo?"
58
78
59#: qml/Components/Dialogs.qml:119
79#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
80msgid "Reboot"
61−msgstr ""
81+msgstr "Riavvia"
62
82
63#: qml/Components/Dialogs.qml:120
83#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
84msgid "Are you sure you want to reboot?"
65−msgstr ""
85+msgstr "Riavviare veramente il dispositivo?"
66
86
67#: qml/Components/Dialogs.qml:144
87#: qml/Components/Dialogs.qml:144
68msgid "Power"
88msgid "Power"
69−msgstr ""
89+msgstr "Alimentazione"
70
90
71#: qml/Components/Dialogs.qml:145
91#: qml/Components/Dialogs.qml:145
72msgid ""
92msgid ""
73"Are you sure you would like\n"
93"Are you sure you would like\n"
74"to power off?"
94"to power off?"
75msgstr ""
95msgstr ""
96+"Spegnere veramente\n"
97+"il dispositivo?"
76
98
77−#: qml/Components/Dialogs.qml:144
99+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
100msgid "Power off"
79msgstr "Spegni"
101msgstr "Spegni"
80
102
81−#: qml/Components/Dialogs.qml:162
103+#: qml/Components/Dialogs.qml:157
104+msgid "Restart"
105+msgstr "Riavvia"
106+
107+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
108msgid "Cancel"
83msgstr "Annulla"
109msgstr "Annulla"
84
110
@@ -135,60 +161,44 @@ msgstr ""
135"L'apprendimento dei gesti è stato completato. È ora possibile iniziare a "
161"L'apprendimento dei gesti è stato completato. È ora possibile iniziare a "
136"usare il telefono.<br><br>Toccare lo schermo per iniziare"
162"usare il telefono.<br><br>Toccare lo schermo per iniziare"
137
163
138−#: qml/Components/Lockscreen.qml:167
164+#: qml/Components/Lockscreen.qml:220
139−msgid "Please wait"
140−msgstr "Attendere"
141−
142−#: qml/Components/Lockscreen.qml:172
143−msgid "Too many incorrect attempts"
144−msgstr "Troppi tentativi errati"
145−
146−#: qml/Components/Lockscreen.qml:206
147msgid "Emergency Call"
165msgid "Emergency Call"
148msgstr "Chiamata di emergenza"
166msgstr "Chiamata di emergenza"
149
167
150−#: qml/Components/Lockscreen.qml:226
168+#: qml/Components/Lockscreen.qml:252
151msgid "OK"
169msgid "OK"
152msgstr "OK"
170msgstr "OK"
153
171
154−#: qml/Components/PassphraseLockscreen.qml:61
155−#, qt-format
156−msgid "Hello %1"
157−msgstr "Ciao %1"
158−
159−#: qml/Components/PassphraseLockscreen.qml:61
160−msgid "Hello"
161−msgstr "Ciao"
162−
163−#: qml/Dash/GenericScopeView.qml:361
172+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
164msgid "See less"
173msgid "See less"
165msgstr "Mostra meno"
174msgstr "Mostra meno"
166
175
167−#: qml/Dash/GenericScopeView.qml:361
176+#: qml/Dash/GenericScopeView.qml:434
168msgid "See all"
177msgid "See all"
169msgstr "Mostra tutto"
178msgstr "Mostra tutto"
170
179
180+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
171−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
181+#: qml/Panel/SearchIndicator.qml:27
172msgid "Search"
182msgid "Search"
173msgstr "Cerca"
183msgstr "Cerca"
174
184
175−#: qml/Dash/PageHeader.qml:270
185+#: qml/Dash/PageHeader.qml:268
176msgid "Settings"
186msgid "Settings"
177−msgstr ""
187+msgstr "Impostazioni"
178
188
179−#: qml/Dash/PageHeader.qml:279
189+#: qml/Dash/PageHeader.qml:275
180msgid "Remove from Favorites"
190msgid "Remove from Favorites"
181−msgstr ""
191+msgstr "Rimuovi dai preferiti"
182
192
183−#: qml/Dash/PageHeader.qml:279
193+#: qml/Dash/PageHeader.qml:275
184msgid "Add to Favorites"
194msgid "Add to Favorites"
185−msgstr ""
195+msgstr "Aggiungi ai preferiti"
186
196
187−#: qml/Dash/Previews/PreviewActionCombo.qml:34
197+#: qml/Dash/Previews/PreviewActionCombo.qml:35
188msgid "More..."
198msgid "More..."
189msgstr "Altro..."
199msgstr "Altro..."
190
200
191−#: qml/Dash/Previews/PreviewActionCombo.qml:34
201+#: qml/Dash/Previews/PreviewActionCombo.qml:35
192msgid "Less..."
202msgid "Less..."
193msgstr "Meno..."
203msgstr "Meno..."
194
204
@@ -204,15 +214,23 @@ msgstr "Aggiungi una recensione"
204msgid "Send"
214msgid "Send"
205msgstr "Invia"
215msgstr "Invia"
206
216
207−#: qml/Dash/ScopesOverview.qml:201
217+#: qml/Dash/PullToRefreshScopeStyle.qml:55
208−msgid "Manage Dash"
218+msgid "Pull to refresh…"
209−msgstr "Gestione della Dash"
219+msgstr ""
220+
221+#: qml/Dash/PullToRefreshScopeStyle.qml:60
222+msgid "Release to refresh…"
223+msgstr ""
210
224
211−#: qml/Dash/ScopesOverview.qml:408
225+#: qml/Dash/ScopesOverview.qml:206
226+msgid "Manage Scopes"
227+msgstr "Gestisci Scope"
228+
229+#: qml/Dash/ScopesOverview.qml:428
212msgid "Done"
230msgid "Done"
213msgstr "Fatto"
231msgstr "Fatto"
214
232
215−#: qml/Dash/ScopesOverview.qml:434
233+#: qml/Dash/ScopesOverview.qml:454
216msgid "Store"
234msgid "Store"
217msgstr "Store"
235msgstr "Store"
218
236
@@ -225,10 +243,10 @@ msgid "All"
225msgstr "Tutto"
243msgstr "Tutto"
226
244
227#: qml/Greeter/Greeter.qml:157
245#: qml/Greeter/Greeter.qml:157
228−msgid "Swipe to unlock"
246+msgid "Unlock"
229−msgstr "Scorrere per sbloccare"
247+msgstr ""
230
248
231−#: qml/Hud/HudParametrizedActionsPage.qml:132
249+#: qml/Hud/HudParametrizedActionsPage.qml:139
232msgid "Confirm"
250msgid "Confirm"
233msgstr "Conferma"
251msgstr "Conferma"
234
252
@@ -248,18 +266,10 @@ msgstr "Parla ora..."
248msgid "Speaking..."
266msgid "Speaking..."
249msgstr "Sto parlando..."
267msgstr "Sto parlando..."
250
268
251−#: qml/Notifications/NotificationMenuItemFactory.qml:105
269+#: qml/Notifications/NotificationMenuItemFactory.qml:116
252msgid "Show password"
270msgid "Show password"
253msgstr "Mostra password"
271msgstr "Mostra password"
254
272
255−#: qml/Notifications/NotificationMenuItemFactory.qml:120
256−msgid "Enter SIM PIN"
257−msgstr "Inserire il PIN della SIM"
258−
259−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
260−msgid "Sorry, incorrect PIN"
261−msgstr "PIN errato"
262−
263#: qml/Panel/ActiveCallHint.qml:77
273#: qml/Panel/ActiveCallHint.qml:77
264msgid "Tap to return to call..."
274msgid "Tap to return to call..."
265msgstr "Tocca per tornare alla chiamata..."
275msgstr "Tocca per tornare alla chiamata..."
@@ -268,27 +278,31 @@ msgstr "Tocca per tornare alla chiamata..."
268msgid "Conference"
278msgid "Conference"
269msgstr "Conferenza"
279msgstr "Conferenza"
270
280
271−#: qml/Panel/Indicators/MenuItemFactory.qml:651
281+#: qml/Panel/Indicators/MenuItemFactory.qml:600
282+msgid "Nothing is playing"
283+msgstr "Niente in riproduzione"
284+
285+#: qml/Panel/Indicators/MenuItemFactory.qml:748
272msgid "In queue…"
286msgid "In queue…"
273msgstr "In coda..."
287msgstr "In coda..."
274
288
275−#: qml/Panel/Indicators/MenuItemFactory.qml:655
289+#: qml/Panel/Indicators/MenuItemFactory.qml:752
276msgid "Downloading"
290msgid "Downloading"
277msgstr "Scaricamento in corso"
291msgstr "Scaricamento in corso"
278
292
279−#: qml/Panel/Indicators/MenuItemFactory.qml:657
293+#: qml/Panel/Indicators/MenuItemFactory.qml:754
280msgid "Paused, tap to resume"
294msgid "Paused, tap to resume"
281msgstr "In pausa. Tocca per riprendere"
295msgstr "In pausa. Tocca per riprendere"
282
296
283−#: qml/Panel/Indicators/MenuItemFactory.qml:659
297+#: qml/Panel/Indicators/MenuItemFactory.qml:756
284msgid "Canceled"
298msgid "Canceled"
285msgstr "Annullato"
299msgstr "Annullato"
286
300
287−#: qml/Panel/Indicators/MenuItemFactory.qml:661
301+#: qml/Panel/Indicators/MenuItemFactory.qml:758
288msgid "Finished"
302msgid "Finished"
289msgstr "Completato"
303msgstr "Completato"
290
304
291−#: qml/Panel/Indicators/MenuItemFactory.qml:663
305+#: qml/Panel/Indicators/MenuItemFactory.qml:760
292msgid "Failed, tap to retry"
306msgid "Failed, tap to retry"
293msgstr "Non riuscito. Tocca per riprovare"
307msgstr "Non riuscito. Tocca per riprovare"
294
308
@@ -300,45 +314,49 @@ msgstr "Sblocca SIM"
300msgid "Roaming"
314msgid "Roaming"
301msgstr "Roaming"
315msgstr "Roaming"
302
316
303−#: qml/Shell.qml:266
317+#: qml/Shell.qml:346
304−msgid "Enter your passphrase"
318+msgid "Enter passphrase"
305−msgstr "Digitare la passphrase"
319+msgstr ""
306
320
307−#: qml/Shell.qml:267
321+#: qml/Shell.qml:347
308msgid "Sorry, incorrect passphrase"
322msgid "Sorry, incorrect passphrase"
309msgstr "Passphrase errata"
323msgstr "Passphrase errata"
310
324
311−#: qml/Shell.qml:282
325+#: qml/Shell.qml:348
312−msgid "Enter your passcode"
326+msgid "Please re-enter"
313msgstr ""
327msgstr ""
314
328
315−#: qml/Shell.qml:283
329+#: qml/Shell.qml:350
316−msgid "Sorry, incorrect passcode"
330+msgid "Enter passcode"
317msgstr ""
331msgstr ""
318
332
319−#: qml/Shell.qml:273
333+#: qml/Shell.qml:351
334+msgid "Sorry, incorrect passcode"
335+msgstr "Passcode non corretto"
336+
337+#: qml/Shell.qml:354
320#, qt-format
338#, qt-format
321−msgid "Enter your %1"
339+msgid "Enter %1"
322−msgstr "Inserire %1"
340+msgstr ""
323
341
324−#: qml/Shell.qml:274
342+#: qml/Shell.qml:355
325#, qt-format
343#, qt-format
326msgid "Sorry, incorrect %1"
344msgid "Sorry, incorrect %1"
327msgstr "%1 non corretto"
345msgstr "%1 non corretto"
328
346
329−#: qml/Shell.qml:310
347+#: qml/Shell.qml:390
330msgid "Sorry, incorrect passphrase."
348msgid "Sorry, incorrect passphrase."
331msgstr "Passphrase non corretta"
349msgstr "Passphrase non corretta"
332
350
333−#: qml/Shell.qml:311
351+#: qml/Shell.qml:391
334msgid "Sorry, incorrect passcode."
352msgid "Sorry, incorrect passcode."
335msgstr "Passcode non corretto"
353msgstr "Passcode non corretto"
336
354
337−#: qml/Shell.qml:312
355+#: qml/Shell.qml:392
338msgid "This will be your last attempt."
356msgid "This will be your last attempt."
339msgstr "Questo sarà l'ultimo tentativo."
357msgstr "Questo sarà l'ultimo tentativo."
340
358
341−#: qml/Shell.qml:314
359+#: qml/Shell.qml:394
342msgid ""
360msgid ""
343"If passphrase is entered incorrectly, your phone will conduct a factory "
361"If passphrase is entered incorrectly, your phone will conduct a factory "
344"reset and all personal data will be deleted."
362"reset and all personal data will be deleted."
@@ -346,7 +364,7 @@ msgstr ""
346"Se verrà inserita una passphrase errata, il telefono eseguirà un ripristino "
364"Se verrà inserita una passphrase errata, il telefono eseguirà un ripristino "
347"delle impostazioni di fabbrica e tutti i dati personali verranno eliminati."
365"delle impostazioni di fabbrica e tutti i dati personali verranno eliminati."
348
366
349−#: qml/Shell.qml:315
367+#: qml/Shell.qml:395
350msgid ""
368msgid ""
351"If passcode is entered incorrectly, your phone will conduct a factory reset "
369"If passcode is entered incorrectly, your phone will conduct a factory reset "
352"and all personal data will be deleted."
370"and all personal data will be deleted."
@@ -354,11 +372,8 @@ msgstr ""
354"Se verrà inserito una passcode errato, il telefono eseguirà un ripristino "
372"Se verrà inserito una passcode errato, il telefono eseguirà un ripristino "
355"delle impostazioni di fabbrica e tutti i dati personali verranno eliminati."
373"delle impostazioni di fabbrica e tutti i dati personali verranno eliminati."
356
374
357−#~ msgid "Are you sure you would like to turn power off?"
375+#~ msgid "Sorry, incorrect PIN"
358−#~ msgstr "Spegnere veramente il dispositivo?"
376+#~ msgstr "PIN errato"
359−
360−#~ msgid "Restart"
361−#~ msgstr "Riavvia"
362
377
363−#~ msgid "Enter your PIN"
378+#~ msgid "Enter SIM PIN"
364−#~ msgstr "Inserire il PIN"
379+#~ msgstr "Inserire il PIN della SIM"
po/ja.po+116−100
@@ -7,78 +7,102 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11−"PO-Revision-Date: 2014-08-18 15:03+0000\n"
11+"PO-Revision-Date: 2014-09-18 09:47+0000\n"
12"Last-Translator: Mitsuya Shibata <mty.shibata@gmail.com>\n"
12"Last-Translator: Mitsuya Shibata <mty.shibata@gmail.com>\n"
13"Language-Team: Japanese <ja@li.org>\n"
13"Language-Team: Japanese <ja@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=1; plural=0;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18+"X-Launchpad-Export-Date: 2014-10-09 06:36+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
19+"X-Generator: Launchpad (build 17196)\n"
19
20
20−#: plugins/LightDM/Greeter.cpp:129
21+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
22msgid "Password: "
22msgstr "パスワード: "
23msgstr "パスワード: "
23
24
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
27msgid "Pin shortcut"
27msgstr "ショートカットを追加する"
28msgstr "ショートカットを追加する"
28
29
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
31msgid "Unpin shortcut"
31msgstr "ショートカットを削除する"
32msgstr "ショートカットを削除する"
32
33
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr ""
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr ""
41+
42+#: qml/Components/DelayedLockscreen.qml:63
43+msgid "You have been locked out due to too many failed passcode attempts."
44+msgstr ""
45+
46+#: qml/Components/DelayedLockscreen.qml:72
47+#, qt-format
48+msgid "Please wait %1 minute and then try again…"
49+msgid_plural "Please wait %1 minutes and then try again…"
50+msgstr[0] ""
51+msgstr[1] ""
52+
33#: qml/Components/Dialogs.qml:70
53#: qml/Components/Dialogs.qml:70
34msgid "Log out"
54msgid "Log out"
35−msgstr ""
55+msgstr "ログアウト"
36
56
37#: qml/Components/Dialogs.qml:71
57#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
58msgid "Are you sure you want to log out?"
39−msgstr ""
59+msgstr "本当にログアウトしますか?"
40
60
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
61#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
62#: qml/Components/Dialogs.qml:122
43msgid "No"
63msgid "No"
44−msgstr ""
64+msgstr "いいえ"
45
65
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
66#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
67#: qml/Components/Dialogs.qml:129
48msgid "Yes"
68msgid "Yes"
49−msgstr ""
69+msgstr "はい"
50
70
51#: qml/Components/Dialogs.qml:94
71#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
72msgid "Shut down"
53−msgstr ""
73+msgstr "シャットダウン"
54
74
55#: qml/Components/Dialogs.qml:95
75#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
76msgid "Are you sure you want to shut down?"
57−msgstr ""
77+msgstr "本当にシャットダウンしますか?"
58
78
59#: qml/Components/Dialogs.qml:119
79#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
80msgid "Reboot"
61−msgstr ""
81+msgstr "再起動"
62
82
63#: qml/Components/Dialogs.qml:120
83#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
84msgid "Are you sure you want to reboot?"
65−msgstr ""
85+msgstr "本当に再起動しますか?"
66
86
67#: qml/Components/Dialogs.qml:144
87#: qml/Components/Dialogs.qml:144
68msgid "Power"
88msgid "Power"
69−msgstr ""
89+msgstr "電源"
70
90
71#: qml/Components/Dialogs.qml:145
91#: qml/Components/Dialogs.qml:145
72msgid ""
92msgid ""
73"Are you sure you would like\n"
93"Are you sure you would like\n"
74"to power off?"
94"to power off?"
75−msgstr ""
95+msgstr "本当に電源を切りますか?"
76
96
77−#: qml/Components/Dialogs.qml:144
97+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
98msgid "Power off"
79msgstr "電源を切る"
99msgstr "電源を切る"
80
100
81−#: qml/Components/Dialogs.qml:162
101+#: qml/Components/Dialogs.qml:157
102+msgid "Restart"
103+msgstr "再起動"
104+
105+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
106msgid "Cancel"
83msgstr "キャンセル"
107msgstr "キャンセル"
84
108
@@ -129,60 +153,44 @@ msgid ""
129msgstr ""
153msgstr ""
130"これでスマートフォンの操作に必要な、画面端を用いたジェスチャーを習得できました。<br><br>利用を開始するなら画面をタップしてください"
154"これでスマートフォンの操作に必要な、画面端を用いたジェスチャーを習得できました。<br><br>利用を開始するなら画面をタップしてください"
131
155
132−#: qml/Components/Lockscreen.qml:167
156+#: qml/Components/Lockscreen.qml:220
133−msgid "Please wait"
134−msgstr "お待ちください"
135−
136−#: qml/Components/Lockscreen.qml:172
137−msgid "Too many incorrect attempts"
138−msgstr "失敗回数が上限に達しました"
139−
140−#: qml/Components/Lockscreen.qml:206
141msgid "Emergency Call"
157msgid "Emergency Call"
142msgstr "緊急通報"
158msgstr "緊急通報"
143
159
144−#: qml/Components/Lockscreen.qml:226
160+#: qml/Components/Lockscreen.qml:252
145msgid "OK"
161msgid "OK"
146msgstr "OK"
162msgstr "OK"
147
163
148−#: qml/Components/PassphraseLockscreen.qml:61
149−#, qt-format
150−msgid "Hello %1"
151−msgstr "こんにちは %1 さん"
152−
153−#: qml/Components/PassphraseLockscreen.qml:61
154−msgid "Hello"
155−msgstr "こんにちは"
156−
157−#: qml/Dash/GenericScopeView.qml:361
164+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
158msgid "See less"
165msgid "See less"
159−msgstr ""
166+msgstr "隠す"
160
167
161−#: qml/Dash/GenericScopeView.qml:361
168+#: qml/Dash/GenericScopeView.qml:434
162msgid "See all"
169msgid "See all"
163msgstr "すべて表示する"
170msgstr "すべて表示する"
164
171
172+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
165−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
173+#: qml/Panel/SearchIndicator.qml:27
166msgid "Search"
174msgid "Search"
167msgstr "検索"
175msgstr "検索"
168
176
169−#: qml/Dash/PageHeader.qml:270
177+#: qml/Dash/PageHeader.qml:268
170msgid "Settings"
178msgid "Settings"
171−msgstr ""
179+msgstr "設定"
172
180
173−#: qml/Dash/PageHeader.qml:279
181+#: qml/Dash/PageHeader.qml:275
174msgid "Remove from Favorites"
182msgid "Remove from Favorites"
175−msgstr ""
183+msgstr "お気に入りから削除する"
176
184
177−#: qml/Dash/PageHeader.qml:279
185+#: qml/Dash/PageHeader.qml:275
178msgid "Add to Favorites"
186msgid "Add to Favorites"
179−msgstr ""
187+msgstr "お気に入りに追加する"
180
188
181−#: qml/Dash/Previews/PreviewActionCombo.qml:34
189+#: qml/Dash/Previews/PreviewActionCombo.qml:35
182msgid "More..."
190msgid "More..."
183msgstr "さらに ..."
191msgstr "さらに ..."
184
192
185−#: qml/Dash/Previews/PreviewActionCombo.qml:34
193+#: qml/Dash/Previews/PreviewActionCombo.qml:35
186msgid "Less..."
194msgid "Less..."
187msgstr "隠す..."
195msgstr "隠す..."
188
196
@@ -198,15 +206,23 @@ msgstr "レビューを追加"
198msgid "Send"
206msgid "Send"
199msgstr "送信"
207msgstr "送信"
200
208
209+#: qml/Dash/PullToRefreshScopeStyle.qml:55
210+msgid "Pull to refresh…"
211+msgstr ""
212+
213+#: qml/Dash/PullToRefreshScopeStyle.qml:60
214+msgid "Release to refresh…"
215+msgstr ""
216+
201−#: qml/Dash/ScopesOverview.qml:201
217+#: qml/Dash/ScopesOverview.qml:206
202−msgid "Manage Dash"
218+msgid "Manage Scopes"
203−msgstr "Dashの管理"
219+msgstr ""
204
220
205−#: qml/Dash/ScopesOverview.qml:408
221+#: qml/Dash/ScopesOverview.qml:428
206msgid "Done"
222msgid "Done"
207msgstr "完了"
223msgstr "完了"
208
224
209−#: qml/Dash/ScopesOverview.qml:434
225+#: qml/Dash/ScopesOverview.qml:454
210msgid "Store"
226msgid "Store"
211msgstr "保存"
227msgstr "保存"
212
228
@@ -219,10 +235,10 @@ msgid "All"
219msgstr "すべて"
235msgstr "すべて"
220
236
221#: qml/Greeter/Greeter.qml:157
237#: qml/Greeter/Greeter.qml:157
222−msgid "Swipe to unlock"
238+msgid "Unlock"
223−msgstr "スワイプしてロック解除"
239+msgstr ""
224
240
225−#: qml/Hud/HudParametrizedActionsPage.qml:132
241+#: qml/Hud/HudParametrizedActionsPage.qml:139
226msgid "Confirm"
242msgid "Confirm"
227msgstr "確認"
243msgstr "確認"
228
244
@@ -242,47 +258,43 @@ msgstr "音声入力を開始..."
242msgid "Speaking..."
258msgid "Speaking..."
243msgstr "入力中..."
259msgstr "入力中..."
244
260
245−#: qml/Notifications/NotificationMenuItemFactory.qml:105
261+#: qml/Notifications/NotificationMenuItemFactory.qml:116
246msgid "Show password"
262msgid "Show password"
247msgstr "パスワードを表示"
263msgstr "パスワードを表示"
248
264
249−#: qml/Notifications/NotificationMenuItemFactory.qml:120
250−msgid "Enter SIM PIN"
251−msgstr ""
252−
253−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
254−msgid "Sorry, incorrect PIN"
255−msgstr ""
256−
257#: qml/Panel/ActiveCallHint.qml:77
265#: qml/Panel/ActiveCallHint.qml:77
258msgid "Tap to return to call..."
266msgid "Tap to return to call..."
259msgstr "タップすると通話に戻ります..."
267msgstr "タップすると通話に戻ります..."
260
268
261#: qml/Panel/ActiveCallHint.qml:90
269#: qml/Panel/ActiveCallHint.qml:90
262msgid "Conference"
270msgid "Conference"
271+msgstr "グループ通話"
272+
273+#: qml/Panel/Indicators/MenuItemFactory.qml:600
274+msgid "Nothing is playing"
263msgstr ""
275msgstr ""
264
276
265−#: qml/Panel/Indicators/MenuItemFactory.qml:651
277+#: qml/Panel/Indicators/MenuItemFactory.qml:748
266msgid "In queue…"
278msgid "In queue…"
267−msgstr ""
279+msgstr "開始待ち..."
268
280
269−#: qml/Panel/Indicators/MenuItemFactory.qml:655
281+#: qml/Panel/Indicators/MenuItemFactory.qml:752
270msgid "Downloading"
282msgid "Downloading"
271msgstr "ダウンロード中"
283msgstr "ダウンロード中"
272
284
273−#: qml/Panel/Indicators/MenuItemFactory.qml:657
285+#: qml/Panel/Indicators/MenuItemFactory.qml:754
274msgid "Paused, tap to resume"
286msgid "Paused, tap to resume"
275msgstr "停止中、再開するにはタップしてください"
287msgstr "停止中、再開するにはタップしてください"
276
288
277−#: qml/Panel/Indicators/MenuItemFactory.qml:659
289+#: qml/Panel/Indicators/MenuItemFactory.qml:756
278msgid "Canceled"
290msgid "Canceled"
279−msgstr ""
291+msgstr "中止しました"
280
292
281−#: qml/Panel/Indicators/MenuItemFactory.qml:661
293+#: qml/Panel/Indicators/MenuItemFactory.qml:758
282msgid "Finished"
294msgid "Finished"
283−msgstr ""
295+msgstr "完了しました"
284
296
285−#: qml/Panel/Indicators/MenuItemFactory.qml:663
297+#: qml/Panel/Indicators/MenuItemFactory.qml:760
286msgid "Failed, tap to retry"
298msgid "Failed, tap to retry"
287msgstr "失敗しました、再試行するにはタップしてください"
299msgstr "失敗しました、再試行するにはタップしてください"
288
300
@@ -294,58 +306,62 @@ msgstr "SIMのアンロック"
294msgid "Roaming"
306msgid "Roaming"
295msgstr "ローミング"
307msgstr "ローミング"
296
308
297−#: qml/Shell.qml:266
309+#: qml/Shell.qml:346
298−msgid "Enter your passphrase"
310+msgid "Enter passphrase"
299msgstr ""
311msgstr ""
300
312
301−#: qml/Shell.qml:267
313+#: qml/Shell.qml:347
302msgid "Sorry, incorrect passphrase"
314msgid "Sorry, incorrect passphrase"
315+msgstr "パスフレーズが違います"
316+
317+#: qml/Shell.qml:348
318+msgid "Please re-enter"
303msgstr ""
319msgstr ""
304
320
305−#: qml/Shell.qml:282
321+#: qml/Shell.qml:350
306−msgid "Enter your passcode"
322+msgid "Enter passcode"
307msgstr ""
323msgstr ""
308
324
309−#: qml/Shell.qml:283
325+#: qml/Shell.qml:351
310msgid "Sorry, incorrect passcode"
326msgid "Sorry, incorrect passcode"
311−msgstr ""
327+msgstr "パスコードが違います"
312
328
313−#: qml/Shell.qml:273
329+#: qml/Shell.qml:354
314#, qt-format
330#, qt-format
315−msgid "Enter your %1"
331+msgid "Enter %1"
316−msgstr "%1を入力してください"
332+msgstr ""
317
333
318−#: qml/Shell.qml:274
334+#: qml/Shell.qml:355
319#, qt-format
335#, qt-format
320msgid "Sorry, incorrect %1"
336msgid "Sorry, incorrect %1"
321−msgstr ""
337+msgstr "%1が違います"
322
338
323−#: qml/Shell.qml:310
339+#: qml/Shell.qml:390
324msgid "Sorry, incorrect passphrase."
340msgid "Sorry, incorrect passphrase."
325msgstr "パスフレーズが間違っています。"
341msgstr "パスフレーズが間違っています。"
326
342
327−#: qml/Shell.qml:311
343+#: qml/Shell.qml:391
328msgid "Sorry, incorrect passcode."
344msgid "Sorry, incorrect passcode."
329msgstr "パスコードが間違っています。"
345msgstr "パスコードが間違っています。"
330
346
331−#: qml/Shell.qml:312
347+#: qml/Shell.qml:392
332msgid "This will be your last attempt."
348msgid "This will be your last attempt."
333msgstr "これが最後のチャンスです。"
349msgstr "これが最後のチャンスです。"
334
350
335−#: qml/Shell.qml:314
351+#: qml/Shell.qml:394
336msgid ""
352msgid ""
337"If passphrase is entered incorrectly, your phone will conduct a factory "
353"If passphrase is entered incorrectly, your phone will conduct a factory "
338"reset and all personal data will be deleted."
354"reset and all personal data will be deleted."
339−msgstr ""
355+msgstr "パスフレーズが間違っている場合、ファクトリーリセットを実施し、すべての個人データは削除されます。"
340
356
341−#: qml/Shell.qml:315
357+#: qml/Shell.qml:395
342msgid ""
358msgid ""
343"If passcode is entered incorrectly, your phone will conduct a factory reset "
359"If passcode is entered incorrectly, your phone will conduct a factory reset "
344"and all personal data will be deleted."
360"and all personal data will be deleted."
345−msgstr ""
361+msgstr "パスコードが間違っている場合、ファクトリーリセットを実施し、すべての個人データは削除されます。"
346
362
347−#~ msgid "Are you sure you would like to turn power off?"
363+#~ msgid "Sorry, incorrect PIN"
348−#~ msgstr "本当に電源を切りますか?"
364+#~ msgstr "PINが違います"
349
365
350−#~ msgid "Restart"
366+#~ msgid "Enter SIM PIN"
351−#~ msgstr "再起動"
367+#~ msgstr "SIM PINの入力"
po/km.po+111−93
@@ -7,78 +7,104 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11"PO-Revision-Date: 2014-08-20 02:48+0000\n"
11"PO-Revision-Date: 2014-08-20 02:48+0000\n"
12−"Last-Translator: Sok Sophea <sksophea@gmail.com>\n"
12+"Last-Translator: Sophea Sok <sksophea@gmail.com>\n"
13"Language-Team: Khmer <km@li.org>\n"
13"Language-Team: Khmer <km@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=1; plural=0;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18+"X-Launchpad-Export-Date: 2014-10-09 06:36+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
19+"X-Generator: Launchpad (build 17196)\n"
19
20
20−#: plugins/LightDM/Greeter.cpp:129
21+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
22msgid "Password: "
22msgstr "ពាក្យសម្ងាត់៖ "
23msgstr "ពាក្យសម្ងាត់៖ "
23
24
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
27msgid "Pin shortcut"
27msgstr "ភ្ជាប់​ផ្លូវកាត់"
28msgstr "ភ្ជាប់​ផ្លូវកាត់"
28
29
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
31msgid "Unpin shortcut"
31msgstr "មិន​ភ្ជាប់ផ្លូវកាត់"
32msgstr "មិន​ភ្ជាប់ផ្លូវកាត់"
32
33
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr ""
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr ""
41+
42+#: qml/Components/DelayedLockscreen.qml:63
43+msgid "You have been locked out due to too many failed passcode attempts."
44+msgstr ""
45+
46+#: qml/Components/DelayedLockscreen.qml:72
47+#, qt-format
48+msgid "Please wait %1 minute and then try again…"
49+msgid_plural "Please wait %1 minutes and then try again…"
50+msgstr[0] ""
51+msgstr[1] ""
52+
33#: qml/Components/Dialogs.qml:70
53#: qml/Components/Dialogs.qml:70
34msgid "Log out"
54msgid "Log out"
35−msgstr ""
55+msgstr "ចេញ"
36
56
37#: qml/Components/Dialogs.qml:71
57#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
58msgid "Are you sure you want to log out?"
39−msgstr ""
59+msgstr "តើ​អ្នក​ពិតជា​ចង់​ចេញ​មែន​ឬ?"
40
60
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
61#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
62#: qml/Components/Dialogs.qml:122
43msgid "No"
63msgid "No"
44−msgstr ""
64+msgstr "ទេ"
45
65
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
66#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
67#: qml/Components/Dialogs.qml:129
48msgid "Yes"
68msgid "Yes"
49−msgstr ""
69+msgstr "បាទ/ចាស"
50
70
51#: qml/Components/Dialogs.qml:94
71#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
72msgid "Shut down"
53−msgstr ""
73+msgstr "បិទ"
54
74
55#: qml/Components/Dialogs.qml:95
75#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
76msgid "Are you sure you want to shut down?"
57−msgstr ""
77+msgstr "តើ​អ្នក​ពិតជា​ចង់​បិទ​មែន​ឬ?"
58
78
59#: qml/Components/Dialogs.qml:119
79#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
80msgid "Reboot"
61−msgstr ""
81+msgstr "ចាប់ផ្ដើម​ឡើងវិញ"
62
82
63#: qml/Components/Dialogs.qml:120
83#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
84msgid "Are you sure you want to reboot?"
65−msgstr ""
85+msgstr "តើ​អ្នក​ពិតជា​ចង់​ចាប់ផ្ដើម​ឡើងវិញ​មែន​ឬ?"
66
86
67#: qml/Components/Dialogs.qml:144
87#: qml/Components/Dialogs.qml:144
68msgid "Power"
88msgid "Power"
69−msgstr ""
89+msgstr "បីទ/បើក"
70
90
71#: qml/Components/Dialogs.qml:145
91#: qml/Components/Dialogs.qml:145
72msgid ""
92msgid ""
73"Are you sure you would like\n"
93"Are you sure you would like\n"
74"to power off?"
94"to power off?"
75msgstr ""
95msgstr ""
96+"តើ​អ្នក​ពិតជា​ចង់\n"
97+"បិទ​មែន​ឬ?"
76
98
77−#: qml/Components/Dialogs.qml:144
99+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
100msgid "Power off"
79msgstr "បិទ"
101msgstr "បិទ"
80
102
81−#: qml/Components/Dialogs.qml:162
103+#: qml/Components/Dialogs.qml:157
104+msgid "Restart"
105+msgstr "ចាប់​ផ្ដើម​ឡើង​វិញ"
106+
107+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
108msgid "Cancel"
83msgstr "បោះបង់"
109msgstr "បោះបង់"
84
110
@@ -132,60 +158,44 @@ msgstr ""
132"ឥឡូវ​អ្នក​បាន​ពិនិត្យ​កាយវិការ​គែម​ "
158"ឥឡូវ​អ្នក​បាន​ពិនិត្យ​កាយវិការ​គែម​ "
133"និង​អាច​ចាប់ផ្ដើម​ប្រើ​ទូរស័ព្ទ<br><br>ប៉ះ លើ​អេក្រង់​ដើម្បី​ចាប់ផ្ដើម"
159"និង​អាច​ចាប់ផ្ដើម​ប្រើ​ទូរស័ព្ទ<br><br>ប៉ះ លើ​អេក្រង់​ដើម្បី​ចាប់ផ្ដើម"
134
160
135−#: qml/Components/Lockscreen.qml:167
161+#: qml/Components/Lockscreen.qml:220
136−msgid "Please wait"
137−msgstr "សូមរង់ចាំ"
138−
139−#: qml/Components/Lockscreen.qml:172
140−msgid "Too many incorrect attempts"
141−msgstr "បាន​ព្យាយាម​ខុស​ច្រើន​ដង​ពេក"
142−
143−#: qml/Components/Lockscreen.qml:206
144msgid "Emergency Call"
162msgid "Emergency Call"
145msgstr "ការ​ហៅ​ពេល​អាសន្ន"
163msgstr "ការ​ហៅ​ពេល​អាសន្ន"
146
164
147−#: qml/Components/Lockscreen.qml:226
165+#: qml/Components/Lockscreen.qml:252
148msgid "OK"
166msgid "OK"
149msgstr "យល់ព្រម"
167msgstr "យល់ព្រម"
150
168
151−#: qml/Components/PassphraseLockscreen.qml:61
152−#, qt-format
153−msgid "Hello %1"
154−msgstr "សួស្ដី %1"
155−
156−#: qml/Components/PassphraseLockscreen.qml:61
157−msgid "Hello"
158−msgstr "សួស្តី"
159−
160−#: qml/Dash/GenericScopeView.qml:361
169+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
161msgid "See less"
170msgid "See less"
162msgstr "មើល​តិច​ជាង"
171msgstr "មើល​តិច​ជាង"
163
172
164−#: qml/Dash/GenericScopeView.qml:361
173+#: qml/Dash/GenericScopeView.qml:434
165msgid "See all"
174msgid "See all"
166msgstr "មើល​ទាំងអស់"
175msgstr "មើល​ទាំងអស់"
167
176
177+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
168−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
178+#: qml/Panel/SearchIndicator.qml:27
169msgid "Search"
179msgid "Search"
170msgstr "ស្វែង​រក"
180msgstr "ស្វែង​រក"
171
181
172−#: qml/Dash/PageHeader.qml:270
182+#: qml/Dash/PageHeader.qml:268
173msgid "Settings"
183msgid "Settings"
174−msgstr ""
184+msgstr "ការកំណត់"
175
185
176−#: qml/Dash/PageHeader.qml:279
186+#: qml/Dash/PageHeader.qml:275
177msgid "Remove from Favorites"
187msgid "Remove from Favorites"
178−msgstr ""
188+msgstr "យក​ចេញពី​សំណព្វ"
179
189
180−#: qml/Dash/PageHeader.qml:279
190+#: qml/Dash/PageHeader.qml:275
181msgid "Add to Favorites"
191msgid "Add to Favorites"
182−msgstr ""
192+msgstr "បន្ថែម​ទៅ​សណព្វ"
183
193
184−#: qml/Dash/Previews/PreviewActionCombo.qml:34
194+#: qml/Dash/Previews/PreviewActionCombo.qml:35
185msgid "More..."
195msgid "More..."
186msgstr "ច្រើនជាង​..."
196msgstr "ច្រើនជាង​..."
187
197
188−#: qml/Dash/Previews/PreviewActionCombo.qml:34
198+#: qml/Dash/Previews/PreviewActionCombo.qml:35
189msgid "Less..."
199msgid "Less..."
190msgstr "តិច​ជាង..."
200msgstr "តិច​ជាង..."
191
201
@@ -201,15 +211,23 @@ msgstr "បន្ថែម​ការ​ពិនិត្យ"
201msgid "Send"
211msgid "Send"
202msgstr "ផ្ញើ"
212msgstr "ផ្ញើ"
203
213
214+#: qml/Dash/PullToRefreshScopeStyle.qml:55
215+msgid "Pull to refresh…"
216+msgstr ""
217+
218+#: qml/Dash/PullToRefreshScopeStyle.qml:60
219+msgid "Release to refresh…"
220+msgstr ""
221+
204−#: qml/Dash/ScopesOverview.qml:201
222+#: qml/Dash/ScopesOverview.qml:206
205−msgid "Manage Dash"
223+msgid "Manage Scopes"
206−msgstr "គ្រប់គ្រង​ផ្ទាំង"
224+msgstr ""
207
225
208−#: qml/Dash/ScopesOverview.qml:408
226+#: qml/Dash/ScopesOverview.qml:428
209msgid "Done"
227msgid "Done"
210msgstr "ធ្វើរួច"
228msgstr "ធ្វើរួច"
211
229
212−#: qml/Dash/ScopesOverview.qml:434
230+#: qml/Dash/ScopesOverview.qml:454
213msgid "Store"
231msgid "Store"
214msgstr "រក្សាទុក"
232msgstr "រក្សាទុក"
215
233
@@ -222,10 +240,10 @@ msgid "All"
222msgstr "ទាំងអស់"
240msgstr "ទាំងអស់"
223
241
224#: qml/Greeter/Greeter.qml:157
242#: qml/Greeter/Greeter.qml:157
225−msgid "Swipe to unlock"
243+msgid "Unlock"
226−msgstr "អូស​ដើម្បី​ដោះសោ"
244+msgstr ""
227
245
228−#: qml/Hud/HudParametrizedActionsPage.qml:132
246+#: qml/Hud/HudParametrizedActionsPage.qml:139
229msgid "Confirm"
247msgid "Confirm"
230msgstr "បញ្ជាក់"
248msgstr "បញ្ជាក់"
231
249
@@ -245,18 +263,10 @@ msgstr "និយាយ​ឥឡូវ..."
245msgid "Speaking..."
263msgid "Speaking..."
246msgstr "កំពុង​និយាយ..."
264msgstr "កំពុង​និយាយ..."
247
265
248−#: qml/Notifications/NotificationMenuItemFactory.qml:105
266+#: qml/Notifications/NotificationMenuItemFactory.qml:116
249msgid "Show password"
267msgid "Show password"
250msgstr "បង្ហាញ​ពាក្យ​សម្ងាត់"
268msgstr "បង្ហាញ​ពាក្យ​សម្ងាត់"
251
269
252−#: qml/Notifications/NotificationMenuItemFactory.qml:120
253−msgid "Enter SIM PIN"
254−msgstr ""
255−
256−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
257−msgid "Sorry, incorrect PIN"
258−msgstr ""
259−
260#: qml/Panel/ActiveCallHint.qml:77
270#: qml/Panel/ActiveCallHint.qml:77
261msgid "Tap to return to call..."
271msgid "Tap to return to call..."
262msgstr "ប៉ះ​ដើម្បី​ត្រឡប់​ទៅ​ការ​ហៅ..."
272msgstr "ប៉ះ​ដើម្បី​ត្រឡប់​ទៅ​ការ​ហៅ..."
@@ -265,27 +275,31 @@ msgstr "ប៉ះ​ដើម្បី​ត្រឡប់​ទៅ​ការ
265msgid "Conference"
275msgid "Conference"
266msgstr "សន្និសីទ"
276msgstr "សន្និសីទ"
267
277
268−#: qml/Panel/Indicators/MenuItemFactory.qml:651
278+#: qml/Panel/Indicators/MenuItemFactory.qml:600
279+msgid "Nothing is playing"
280+msgstr ""
281+
282+#: qml/Panel/Indicators/MenuItemFactory.qml:748
269msgid "In queue…"
283msgid "In queue…"
270msgstr "ក្នុងជួរ…"
284msgstr "ក្នុងជួរ…"
271
285
272−#: qml/Panel/Indicators/MenuItemFactory.qml:655
286+#: qml/Panel/Indicators/MenuItemFactory.qml:752
273msgid "Downloading"
287msgid "Downloading"
274msgstr "ទាញយក"
288msgstr "ទាញយក"
275
289
276−#: qml/Panel/Indicators/MenuItemFactory.qml:657
290+#: qml/Panel/Indicators/MenuItemFactory.qml:754
277msgid "Paused, tap to resume"
291msgid "Paused, tap to resume"
278msgstr "បាន​ផ្អាក, ប៉ះ ដើម្បីបន្ត"
292msgstr "បាន​ផ្អាក, ប៉ះ ដើម្បីបន្ត"
279
293
280−#: qml/Panel/Indicators/MenuItemFactory.qml:659
294+#: qml/Panel/Indicators/MenuItemFactory.qml:756
281msgid "Canceled"
295msgid "Canceled"
282msgstr "បាន​បោះបង់"
296msgstr "បាន​បោះបង់"
283
297
284−#: qml/Panel/Indicators/MenuItemFactory.qml:661
298+#: qml/Panel/Indicators/MenuItemFactory.qml:758
285msgid "Finished"
299msgid "Finished"
286msgstr "បាន​បញ្ចប់"
300msgstr "បាន​បញ្ចប់"
287
301
288−#: qml/Panel/Indicators/MenuItemFactory.qml:663
302+#: qml/Panel/Indicators/MenuItemFactory.qml:760
289msgid "Failed, tap to retry"
303msgid "Failed, tap to retry"
290msgstr "បាន​បរាជ័យ ប៉ះ​ ដើម្បី​ព្យាយាម​ម្ដង​ទៀត"
304msgstr "បាន​បរាជ័យ ប៉ះ​ ដើម្បី​ព្យាយាម​ម្ដង​ទៀត"
291
305
@@ -297,45 +311,49 @@ msgstr "ដោះ​សោ​ស៊ីម"
297msgid "Roaming"
311msgid "Roaming"
298msgstr "រ៉ូមីង"
312msgstr "រ៉ូមីង"
299
313
300−#: qml/Shell.qml:266
314+#: qml/Shell.qml:346
301−msgid "Enter your passphrase"
315+msgid "Enter passphrase"
302msgstr ""
316msgstr ""
303
317
304−#: qml/Shell.qml:267
318+#: qml/Shell.qml:347
305msgid "Sorry, incorrect passphrase"
319msgid "Sorry, incorrect passphrase"
320+msgstr "សូមទោស! ឃ្លា​សម្ងាត់​មិន​ត្រឹមត្រូវ"
321+
322+#: qml/Shell.qml:348
323+msgid "Please re-enter"
306msgstr ""
324msgstr ""
307
325
308−#: qml/Shell.qml:282
326+#: qml/Shell.qml:350
309−msgid "Enter your passcode"
327+msgid "Enter passcode"
310msgstr ""
328msgstr ""
311
329
312−#: qml/Shell.qml:283
330+#: qml/Shell.qml:351
313msgid "Sorry, incorrect passcode"
331msgid "Sorry, incorrect passcode"
314−msgstr ""
332+msgstr "សូមទោស! កូដ​សម្ងាត់​មិន​ត្រឹមត្រូវ"
315
333
316−#: qml/Shell.qml:273
334+#: qml/Shell.qml:354
317#, qt-format
335#, qt-format
318−msgid "Enter your %1"
336+msgid "Enter %1"
319−msgstr "បញ្ចូល %1 របស់​អ្នក"
337+msgstr ""
320
338
321−#: qml/Shell.qml:274
339+#: qml/Shell.qml:355
322#, qt-format
340#, qt-format
323msgid "Sorry, incorrect %1"
341msgid "Sorry, incorrect %1"
324−msgstr ""
342+msgstr "សូមទោស! %1 មិន​ត្រឹមត្រូវ"
325
343
326−#: qml/Shell.qml:310
344+#: qml/Shell.qml:390
327msgid "Sorry, incorrect passphrase."
345msgid "Sorry, incorrect passphrase."
328msgstr "សូមទោស! ឃ្លា​សម្ងាត់​មិន​ត្រឹមត្រូវ។"
346msgstr "សូមទោស! ឃ្លា​សម្ងាត់​មិន​ត្រឹមត្រូវ។"
329
347
330−#: qml/Shell.qml:311
348+#: qml/Shell.qml:391
331msgid "Sorry, incorrect passcode."
349msgid "Sorry, incorrect passcode."
332msgstr "សូមទោស! កូដ​សម្ងាត់​មិន​ត្រឹមត្រូវ។"
350msgstr "សូមទោស! កូដ​សម្ងាត់​មិន​ត្រឹមត្រូវ។"
333
351
334−#: qml/Shell.qml:312
352+#: qml/Shell.qml:392
335msgid "This will be your last attempt."
353msgid "This will be your last attempt."
336msgstr "នេះ​គឺ​ការ​ព្យាយាម​លើក​ចុងក្រោយ។"
354msgstr "នេះ​គឺ​ការ​ព្យាយាម​លើក​ចុងក្រោយ។"
337
355
338−#: qml/Shell.qml:314
356+#: qml/Shell.qml:394
339msgid ""
357msgid ""
340"If passphrase is entered incorrectly, your phone will conduct a factory "
358"If passphrase is entered incorrectly, your phone will conduct a factory "
341"reset and all personal data will be deleted."
359"reset and all personal data will be deleted."
@@ -344,7 +362,7 @@ msgstr ""
344"ទូរស័ព្ទ​របស់​អ្នក​នឹង​កំណត់​ទៅ​ទិន្នន័យ​ពី​រោងចក្រ​វិញ "
362"ទូរស័ព្ទ​របស់​អ្នក​នឹង​កំណត់​ទៅ​ទិន្នន័យ​ពី​រោងចក្រ​វិញ "
345"ហើយ​ទិន្នន័យ​ផ្ទាល់ខ្លួន​ទាំងអស់​របស់​អ្នក​នឹង​ត្រូវ​បាន​លុប។"
363"ហើយ​ទិន្នន័យ​ផ្ទាល់ខ្លួន​ទាំងអស់​របស់​អ្នក​នឹង​ត្រូវ​បាន​លុប។"
346
364
347−#: qml/Shell.qml:315
365+#: qml/Shell.qml:395
348msgid ""
366msgid ""
349"If passcode is entered incorrectly, your phone will conduct a factory reset "
367"If passcode is entered incorrectly, your phone will conduct a factory reset "
350"and all personal data will be deleted."
368"and all personal data will be deleted."
@@ -353,8 +371,8 @@ msgstr ""
353"ទូរស័ព្ទ​របស់​អ្នក​នឹង​កំណត់​ទៅ​ទិន្នន័យ​ពី​រោងចក្រ​វិញ "
371"ទូរស័ព្ទ​របស់​អ្នក​នឹង​កំណត់​ទៅ​ទិន្នន័យ​ពី​រោងចក្រ​វិញ "
354"ហើយ​ទិន្នន័យ​ផ្ទាល់ខ្លួន​ទាំងអស់​របស់​អ្នក​នឹង​ត្រូវ​បាន​លុប។"
372"ហើយ​ទិន្នន័យ​ផ្ទាល់ខ្លួន​ទាំងអស់​របស់​អ្នក​នឹង​ត្រូវ​បាន​លុប។"
355
373
356−#~ msgid "Are you sure you would like to turn power off?"
374+#~ msgid "Sorry, incorrect PIN"
357−#~ msgstr "តើ​អ្នក​ពិតជា​ចង់​បិទ​មែន​ឬ?"
375+#~ msgstr "សូមទោស! លេខ​កូដ PIN មិន​ត្រឹមត្រូវ"
358
376
359−#~ msgid "Restart"
377+#~ msgid "Enter SIM PIN"
360−#~ msgstr "ចាប់ផ្ដើម​ឡើងវិញ"
378+#~ msgstr "បញ្ចូល​លេខ​កូដ PIN ស៊ីម"
po/kn.po+87−71
@@ -7,29 +7,49 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10+"POT-Creation-Date: 2014-10-07 11:37+0300\n"
11"PO-Revision-Date: 2013-06-27 05:43+0000\n"
11"PO-Revision-Date: 2013-06-27 05:43+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Kannada <kn@li.org>\n"
13"Language-Team: Kannada <kn@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18+"X-Launchpad-Export-Date: 2014-10-09 06:36+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
19+"X-Generator: Launchpad (build 17196)\n"
19
20
20−#: plugins/LightDM/Greeter.cpp:129
21+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
22msgid "Password: "
22msgstr ""
23msgstr ""
23
24
24−#: plugins/Unity/Launcher/launcheritem.cpp:43
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
25−#: plugins/Unity/Launcher/launcheritem.cpp:73
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
26msgid "Pin shortcut"
27msgid "Pin shortcut"
27msgstr ""
28msgstr ""
28
29
29−#: plugins/Unity/Launcher/launcheritem.cpp:73
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
30msgid "Unpin shortcut"
31msgid "Unpin shortcut"
31msgstr ""
32msgstr ""
32
33
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr ""
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr ""
41+
42+#: qml/Components/DelayedLockscreen.qml:63
43+msgid "You have been locked out due to too many failed passcode attempts."
44+msgstr ""
45+
46+#: qml/Components/DelayedLockscreen.qml:72
47+#, qt-format
48+msgid "Please wait %1 minute and then try again…"
49+msgid_plural "Please wait %1 minutes and then try again…"
50+msgstr[0] ""
51+msgstr[1] ""
52+
33#: qml/Components/Dialogs.qml:70
53#: qml/Components/Dialogs.qml:70
34msgid "Log out"
54msgid "Log out"
35msgstr ""
55msgstr ""
@@ -74,11 +94,15 @@ msgid ""
74"to power off?"
94"to power off?"
75msgstr ""
95msgstr ""
76
96
77−#: qml/Components/Dialogs.qml:144
97+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
98msgid "Power off"
79msgstr ""
99msgstr ""
80
100
81−#: qml/Components/Dialogs.qml:162
101+#: qml/Components/Dialogs.qml:157
102+msgid "Restart"
103+msgstr ""
104+
105+#: qml/Components/Dialogs.qml:167
82msgid "Cancel"
106msgid "Cancel"
83msgstr ""
107msgstr ""
84
108
@@ -128,60 +152,44 @@ msgid ""
128"phone<br><br>Tap on the screen to start"
152"phone<br><br>Tap on the screen to start"
129msgstr ""
153msgstr ""
130
154
131−#: qml/Components/Lockscreen.qml:167
155+#: qml/Components/Lockscreen.qml:220
132−msgid "Please wait"
133−msgstr ""
134−
135−#: qml/Components/Lockscreen.qml:172
136−msgid "Too many incorrect attempts"
137−msgstr ""
138−
139−#: qml/Components/Lockscreen.qml:206
140msgid "Emergency Call"
156msgid "Emergency Call"
141msgstr ""
157msgstr ""
142
158
143−#: qml/Components/Lockscreen.qml:226
159+#: qml/Components/Lockscreen.qml:252
144msgid "OK"
160msgid "OK"
145msgstr ""
161msgstr ""
146
162
147−#: qml/Components/PassphraseLockscreen.qml:61
148−#, qt-format
149−msgid "Hello %1"
150−msgstr ""
151−
152−#: qml/Components/PassphraseLockscreen.qml:61
153−msgid "Hello"
154−msgstr ""
155−
156−#: qml/Dash/GenericScopeView.qml:361
163+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
157msgid "See less"
164msgid "See less"
158msgstr ""
165msgstr ""
159
166
160−#: qml/Dash/GenericScopeView.qml:361
167+#: qml/Dash/GenericScopeView.qml:434
161msgid "See all"
168msgid "See all"
162msgstr ""
169msgstr ""
163
170
171+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
164−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
172+#: qml/Panel/SearchIndicator.qml:27
165msgid "Search"
173msgid "Search"
166msgstr "ಹುಡುಕು"
174msgstr "ಹುಡುಕು"
167
175
168−#: qml/Dash/PageHeader.qml:270
176+#: qml/Dash/PageHeader.qml:268
169msgid "Settings"
177msgid "Settings"
170msgstr ""
178msgstr ""
171
179
172−#: qml/Dash/PageHeader.qml:279
180+#: qml/Dash/PageHeader.qml:275
173msgid "Remove from Favorites"
181msgid "Remove from Favorites"
174msgstr ""
182msgstr ""
175
183
176−#: qml/Dash/PageHeader.qml:279
184+#: qml/Dash/PageHeader.qml:275
177msgid "Add to Favorites"
185msgid "Add to Favorites"
178msgstr ""
186msgstr ""
179
187
180−#: qml/Dash/Previews/PreviewActionCombo.qml:34
188+#: qml/Dash/Previews/PreviewActionCombo.qml:35
181msgid "More..."
189msgid "More..."
182msgstr ""
190msgstr ""
183
191
184−#: qml/Dash/Previews/PreviewActionCombo.qml:34
192+#: qml/Dash/Previews/PreviewActionCombo.qml:35
185msgid "Less..."
193msgid "Less..."
186msgstr ""
194msgstr ""
187
195
@@ -197,15 +205,23 @@ msgstr ""
197msgid "Send"
205msgid "Send"
198msgstr ""
206msgstr ""
199
207
208+#: qml/Dash/PullToRefreshScopeStyle.qml:55
209+msgid "Pull to refresh…"
210+msgstr ""
211+
212+#: qml/Dash/PullToRefreshScopeStyle.qml:60
213+msgid "Release to refresh…"
214+msgstr ""
215+
200−#: qml/Dash/ScopesOverview.qml:201
216+#: qml/Dash/ScopesOverview.qml:206
201−msgid "Manage Dash"
217+msgid "Manage Scopes"
202msgstr ""
218msgstr ""
203
219
204−#: qml/Dash/ScopesOverview.qml:408
220+#: qml/Dash/ScopesOverview.qml:428
205msgid "Done"
221msgid "Done"
206msgstr ""
222msgstr ""
207
223
208−#: qml/Dash/ScopesOverview.qml:434
224+#: qml/Dash/ScopesOverview.qml:454
209msgid "Store"
225msgid "Store"
210msgstr ""
226msgstr ""
211
227
@@ -218,10 +234,10 @@ msgid "All"
218msgstr ""
234msgstr ""
219
235
220#: qml/Greeter/Greeter.qml:157
236#: qml/Greeter/Greeter.qml:157
221−msgid "Swipe to unlock"
237+msgid "Unlock"
222msgstr ""
238msgstr ""
223
239
224−#: qml/Hud/HudParametrizedActionsPage.qml:132
240+#: qml/Hud/HudParametrizedActionsPage.qml:139
225msgid "Confirm"
241msgid "Confirm"
226msgstr "ಖಚಿತಪಡಿಸು"
242msgstr "ಖಚಿತಪಡಿಸು"
227
243
@@ -241,18 +257,10 @@ msgstr "ಈಗ ಮಾತನಾಡಿ ..."
241msgid "Speaking..."
257msgid "Speaking..."
242msgstr "ಮಾತನಾಡುತಿದ್ದೀರಿ"
258msgstr "ಮಾತನಾಡುತಿದ್ದೀರಿ"
243
259
244−#: qml/Notifications/NotificationMenuItemFactory.qml:105
260+#: qml/Notifications/NotificationMenuItemFactory.qml:116
245msgid "Show password"
261msgid "Show password"
246msgstr ""
262msgstr ""
247
263
248−#: qml/Notifications/NotificationMenuItemFactory.qml:120
249−msgid "Enter SIM PIN"
250−msgstr ""
251−
252−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
253−msgid "Sorry, incorrect PIN"
254−msgstr ""
255−
256#: qml/Panel/ActiveCallHint.qml:77
264#: qml/Panel/ActiveCallHint.qml:77
257msgid "Tap to return to call..."
265msgid "Tap to return to call..."
258msgstr ""
266msgstr ""
@@ -261,27 +269,31 @@ msgstr ""
261msgid "Conference"
269msgid "Conference"
262msgstr ""
270msgstr ""
263
271
264−#: qml/Panel/Indicators/MenuItemFactory.qml:651
272+#: qml/Panel/Indicators/MenuItemFactory.qml:600
273+msgid "Nothing is playing"
274+msgstr ""
275+
276+#: qml/Panel/Indicators/MenuItemFactory.qml:748
265msgid "In queue…"
277msgid "In queue…"
266msgstr ""
278msgstr ""
267
279
268−#: qml/Panel/Indicators/MenuItemFactory.qml:655
280+#: qml/Panel/Indicators/MenuItemFactory.qml:752
269msgid "Downloading"
281msgid "Downloading"
270msgstr ""
282msgstr ""
271
283
272−#: qml/Panel/Indicators/MenuItemFactory.qml:657
284+#: qml/Panel/Indicators/MenuItemFactory.qml:754
273msgid "Paused, tap to resume"
285msgid "Paused, tap to resume"
274msgstr ""
286msgstr ""
275
287
276−#: qml/Panel/Indicators/MenuItemFactory.qml:659
288+#: qml/Panel/Indicators/MenuItemFactory.qml:756
277msgid "Canceled"
289msgid "Canceled"
278msgstr ""
290msgstr ""
279
291
280−#: qml/Panel/Indicators/MenuItemFactory.qml:661
292+#: qml/Panel/Indicators/MenuItemFactory.qml:758
281msgid "Finished"
293msgid "Finished"
282msgstr ""
294msgstr ""
283
295
284−#: qml/Panel/Indicators/MenuItemFactory.qml:663
296+#: qml/Panel/Indicators/MenuItemFactory.qml:760
285msgid "Failed, tap to retry"
297msgid "Failed, tap to retry"
286msgstr ""
298msgstr ""
287
299
@@ -293,51 +305,55 @@ msgstr ""
293msgid "Roaming"
305msgid "Roaming"
294msgstr ""
306msgstr ""
295
307
296−#: qml/Shell.qml:266
308+#: qml/Shell.qml:346
297−msgid "Enter your passphrase"
309+msgid "Enter passphrase"
298msgstr ""
310msgstr ""
299
311
300−#: qml/Shell.qml:267
312+#: qml/Shell.qml:347
301msgid "Sorry, incorrect passphrase"
313msgid "Sorry, incorrect passphrase"
302msgstr ""
314msgstr ""
303
315
304−#: qml/Shell.qml:282
316+#: qml/Shell.qml:348
317+msgid "Please re-enter"
318+msgstr ""
319+
320+#: qml/Shell.qml:350
305−msgid "Enter your passcode"
321+msgid "Enter passcode"
306msgstr ""
322msgstr ""
307
323
308−#: qml/Shell.qml:283
324+#: qml/Shell.qml:351
309msgid "Sorry, incorrect passcode"
325msgid "Sorry, incorrect passcode"
310msgstr ""
326msgstr ""
311
327
312−#: qml/Shell.qml:273
328+#: qml/Shell.qml:354
313#, qt-format
329#, qt-format
314−msgid "Enter your %1"
330+msgid "Enter %1"
315msgstr ""
331msgstr ""
316
332
317−#: qml/Shell.qml:274
333+#: qml/Shell.qml:355
318#, qt-format
334#, qt-format
319msgid "Sorry, incorrect %1"
335msgid "Sorry, incorrect %1"
320msgstr ""
336msgstr ""
321
337
322−#: qml/Shell.qml:310
338+#: qml/Shell.qml:390
323msgid "Sorry, incorrect passphrase."
339msgid "Sorry, incorrect passphrase."
324msgstr ""
340msgstr ""
325
341
326−#: qml/Shell.qml:311
342+#: qml/Shell.qml:391
327msgid "Sorry, incorrect passcode."
343msgid "Sorry, incorrect passcode."
328msgstr ""
344msgstr ""
329
345
330−#: qml/Shell.qml:312
346+#: qml/Shell.qml:392
331msgid "This will be your last attempt."
347msgid "This will be your last attempt."
332msgstr ""
348msgstr ""
333
349
334−#: qml/Shell.qml:314
350+#: qml/Shell.qml:394
335msgid ""
351msgid ""
336"If passphrase is entered incorrectly, your phone will conduct a factory "
352"If passphrase is entered incorrectly, your phone will conduct a factory "
337"reset and all personal data will be deleted."
353"reset and all personal data will be deleted."
338msgstr ""
354msgstr ""
339
355
340−#: qml/Shell.qml:315
356+#: qml/Shell.qml:395
341msgid ""
357msgid ""
342"If passcode is entered incorrectly, your phone will conduct a factory reset "
358"If passcode is entered incorrectly, your phone will conduct a factory reset "
343"and all personal data will be deleted."
359"and all personal data will be deleted."
po/ko.po+136−124

This diff is too big to show here.

po/ku.ponew file+373

This diff is too big to show here.

po/ky.po+87−71

This diff is too big to show here.

po/lo.po+87−71

This diff is too big to show here.

po/lt.po+89−72

This diff is too big to show here.

po/lv.po+99−86

This diff is too big to show here.

po/ml.po+87−71

This diff is too big to show here.

po/mr.po+87−71

This diff is too big to show here.

po/ms.po+87−71

This diff is too big to show here.

po/my.po+87−71

This diff is too big to show here.

po/nb.po+115−98

This diff is too big to show here.

po/nl.po+117−98

This diff is too big to show here.

po/pa.ponew file+362

This diff is too big to show here.

po/pl.po+89−72

This diff is too big to show here.

po/pt.po+112−97

This diff is too big to show here.

po/pt_BR.po+97−84

This diff is too big to show here.

po/ro.po+120−97

This diff is too big to show here.

po/ru.po+110−96

This diff is too big to show here.

po/shn.po+87−71

This diff is too big to show here.

po/si.po+87−71

This diff is too big to show here.

po/sl.po+115−97

This diff is too big to show here.

po/sq.po+87−71

This diff is too big to show here.

po/sr.po+157−126

This diff is too big to show here.

po/sv.po+127−102

This diff is too big to show here.

po/sw.po+87−71

This diff is too big to show here.

po/ta.po+87−71

This diff is too big to show here.

po/te.po+88−72

This diff is too big to show here.

po/th.po+245−105

This diff is too big to show here.

po/tr.po+112−89

This diff is too big to show here.

po/ug.po+132−105

This diff is too big to show here.

po/uk.po+118−97

This diff is too big to show here.

po/unity8.pot+80−65

This diff is too big to show here.

po/vi.po+87−71

This diff is too big to show here.

po/xh.po+87−71

This diff is too big to show here.

po/zh_CN.po+89−79

This diff is too big to show here.

po/zh_HK.po+88−72

This diff is too big to show here.

po/zh_TW.po+120−105

This diff is too big to show here.

qml/Components/Background.qml+1−1

This diff is too big to show here.

qml/Components/Carousel.qml+2−3

This diff is too big to show here.

qml/Components/DelayedLockscreen.qmlnew file+92

This diff is too big to show here.

qml/Components/Dialogs.qml+10

This diff is too big to show here.

qml/Components/DragHandle.qml+2−2

This diff is too big to show here.

qml/Components/EdgeDragArea.qml+2

This diff is too big to show here.

qml/Components/Flickables/Flickable.qmlnew file+23

This diff is too big to show here.

qml/Components/Flickables/GridView.qmlnew file+25

This diff is too big to show here.

qml/Components/Flickables/ListView.qmlnew file+25

This diff is too big to show here.

qml/Components/Flickables/ListViewWithPageHeader.qmlnew file+23

This diff is too big to show here.

qml/Components/Header.qmlnew file+27

This diff is too big to show here.

qml/Components/InputMethod.qml+13

This diff is too big to show here.

qml/Components/LazyImage.qml+1

This diff is too big to show here.

qml/Components/ListItems/Base.qmldeleted−125

This diff is too big to show here.

qml/Components/ListItems/Highlight.qmldeleted−46

This diff is too big to show here.

qml/Components/Lockscreen.qml+129−103

This diff is too big to show here.

qml/Components/PassphraseLockscreen.qml+96−43

This diff is too big to show here.

qml/Components/PinLockscreen.qml+11−5

This diff is too big to show here.

qml/Components/ResponsiveGridView.qml+7−2

This diff is too big to show here.

qml/Components/ResponsiveVerticalJournal.qml+3−2

This diff is too big to show here.

qml/Components/ZoomableImage.qml+2−2

This diff is too big to show here.

qml/Dash/CardCarousel.qml+1−1

This diff is too big to show here.

qml/Dash/CardGrid.qml+3−2

This diff is too big to show here.

qml/Dash/CardHorizontalList.qml+4−3

This diff is too big to show here.

qml/Dash/CardTool.qml+20−15

This diff is too big to show here.

qml/Dash/CardVerticalJournal.qml+3−2

This diff is too big to show here.

qml/Dash/Dash.qml+44−11

This diff is too big to show here.

qml/Dash/DashApplication.qml+2−8

This diff is too big to show here.

qml/Dash/DashCategoryBase.qmlnew file+62

This diff is too big to show here.

qml/Dash/DashContent.qml+9−4

This diff is too big to show here.

qml/Dash/DashNavigation.qml+3−3

This diff is too big to show here.

qml/Dash/DashNavigationButton.qml+2−1

This diff is too big to show here.

qml/Dash/DashNavigationList.qml+2−1

This diff is too big to show here.

qml/Dash/DashRenderer.qml+9−4

This diff is too big to show here.

qml/Dash/GenericScopeView.qml+161−54

This diff is too big to show here.

qml/Dash/PageHeader.qml+25−18

This diff is too big to show here.

qml/Dash/PreviewListView.qml+4−5

This diff is too big to show here.

qml/Dash/Previews/Preview.qml+2−1

This diff is too big to show here.

qml/Dash/Previews/PreviewHeader.qml+13−1

This diff is too big to show here.

qml/Dash/Previews/PreviewImageGallery.qml+123−19

This diff is too big to show here.

qml/Dash/Previews/PreviewPayments.qml+8

This diff is too big to show here.

qml/Dash/Previews/PreviewTextSummary.qml+1−1

This diff is too big to show here.

qml/Dash/PullToRefreshScopeStyle.qmlnew file+82

This diff is too big to show here.

qml/Dash/ScopeListView.qml+4−6

This diff is too big to show here.

qml/Dash/ScopeSettingsPage.qml+3−1

This diff is too big to show here.

qml/Dash/ScopesOverview.qml+16−2

This diff is too big to show here.

qml/Dash/ScopesOverviewAll.qml+4−1

This diff is too big to show here.

qml/Dash/ScopesOverviewFavorites.qml+5−3

This diff is too big to show here.

qml/Dash/graphics/checkers.pngdeleted

Binary file not shown.

qml/Dash/graphics/pixel.pngnew file

Binary file not shown.

qml/Greeter/Greeter.qml+14−2

This diff is too big to show here.

qml/Greeter/GreeterContent.qml+15

This diff is too big to show here.

qml/Greeter/LoginList.qml+21−8

This diff is too big to show here.

qml/Hud/Hud.qml+2−1

This diff is too big to show here.

qml/Hud/HudParametrizedActionsPage.qml+2−1

This diff is too big to show here.

qml/Launcher/Launcher.qml+5−3

This diff is too big to show here.

qml/Launcher/LauncherDelegate.qml+24−35

This diff is too big to show here.

qml/Launcher/LauncherPanel.qml+9−15

This diff is too big to show here.

qml/Notifications/Notification.qml+135−48

This diff is too big to show here.

qml/Notifications/NotificationMenuItemFactory.qml+81−5

This diff is too big to show here.

qml/Notifications/Notifications.qml+3−2

This diff is too big to show here.

qml/Panel/ActiveCallHint.qml+1−1

This diff is too big to show here.

qml/Panel/IndicatorItem.qml+6

This diff is too big to show here.

qml/Panel/IndicatorRow.qml+2−1

This diff is too big to show here.

qml/Panel/Indicators.qml+2−13

This diff is too big to show here.

qml/Panel/Indicators/DefaultIndicatorPage.qml+10−50

This diff is too big to show here.

qml/Panel/Indicators/IndicatorBase.qml+1

This diff is too big to show here.

qml/Panel/Indicators/IndicatorDelegate.qml+2−10

This diff is too big to show here.

qml/Panel/Indicators/IndicatorsLight.qml+4−7

This diff is too big to show here.

qml/Panel/Indicators/MenuItemFactory.qml+176−50

This diff is too big to show here.

qml/Panel/Indicators/MessageMenuItemFactory.qml+156−171

This diff is too big to show here.

qml/Panel/Indicators/RemoveBackground.qmldeleted−55

This diff is too big to show here.

qml/Panel/Indicators/VisibleIndicators.qml+1

This diff is too big to show here.

qml/Panel/Indicators/client/IndicatorsClient.qml+4

This diff is too big to show here.

qml/Panel/Indicators/client/IndicatorsList.qml+2−1

This diff is too big to show here.

qml/Panel/Indicators/client/IndicatorsTree.qml+2−1

This diff is too big to show here.

qml/Panel/MenuContent.qml+95−112

This diff is too big to show here.

qml/Shell.qml+211−78

This diff is too big to show here.

qml/Stages/Animations/BaseSurfaceAnimation.qml → qml/Stages/Animations/BaseSessionAnimation.qmlrenamed+23−20

This diff is too big to show here.

qml/Stages/Animations/DarkenAndFadeInAnimation.qmldeleted−48

This diff is too big to show here.

qml/Stages/Animations/SwipeFromBottomAnimation.qml+24−19

This diff is too big to show here.

qml/Stages/Animations/SwipeUpAnimation.qmldeleted−49

This diff is too big to show here.

qml/Stages/ApplicationWindow.qml+58−79

This diff is too big to show here.

qml/Stages/MainViewStyle.qmlnew file+79

This diff is too big to show here.

qml/Stages/PageHeadStyle.qmlnew file+76

This diff is too big to show here.

qml/Stages/PhoneStage.qml+41−9

This diff is too big to show here.

qml/Stages/SessionContainer.qmlnew file+138

This diff is too big to show here.

qml/Stages/Splash.qml+107−13

This diff is too big to show here.

qml/Stages/SpreadDelegate.qml+3

This diff is too big to show here.

qml/Stages/SurfaceContainer.qml+55−64

This diff is too big to show here.

qml/Stages/TabletStage.qml+22−1

This diff is too big to show here.

qml/Stages/TransformedTabletSpreadDelegate.qml+2−1

This diff is too big to show here.

qml/Stages/WaitingDots.qmldeleted−76

This diff is too big to show here.

qml/Stages/graphics/PageHeaderBaseDividerBottom@18.pngnew file

Binary file not shown.

qml/Stages/graphics/PageHeaderBaseDividerLight@18.pngnew file

Binary file not shown.

qml/Stages/graphics/PageHeaderBaseDividerLight@18.scinew file+5

This diff is too big to show here.

qml/Stages/graphics/background_paper@27.pngnew file

Binary file not shown.

run_on_device.sh+42−41

This diff is too big to show here.

src/CMakeLists.txt+7

This diff is too big to show here.

src/Dash/CMakeLists.txt+8

This diff is too big to show here.

src/Dash/main.cpp+23−2

This diff is too big to show here.

src/Panel/CMakeLists.txt+2

This diff is too big to show here.

src/libunity8-private/CMakeLists.txtnew file+25

This diff is too big to show here.

src/libunity8-private/abstractdbusservicemonitor.cppnew file+87

This diff is too big to show here.

src/libunity8-private/abstractdbusservicemonitor.hnew file+66

This diff is too big to show here.

src/main.cpp+6

This diff is too big to show here.

tests/CMakeLists.txt+1

This diff is too big to show here.

tests/autopilot/unity8/application_lifecycle/tests/test_application_lifecycle.py+4−2

This diff is too big to show here.

tests/autopilot/unity8/indicators/tests/test_indicators.py+2−2

This diff is too big to show here.

tests/autopilot/unity8/process_helpers.py+12−17

This diff is too big to show here.

tests/autopilot/unity8/shell/emulators/dash.py+5−5

This diff is too big to show here.

tests/autopilot/unity8/shell/emulators/greeter.py+4−1

This diff is too big to show here.

tests/autopilot/unity8/shell/tests/__init__.py+4−21

This diff is too big to show here.

tests/autopilot/unity8/shell/tests/test_lock_screen.py+11−10

This diff is too big to show here.

tests/autopilot/unity8/shell/tests/test_notifications.py+61−97

This diff is too big to show here.

tests/libs/CMakeLists.txtnew file+1

This diff is too big to show here.

tests/libs/UbuntuGestures/CMakeLists.txtnew file+20

This diff is too big to show here.

tests/libs/UbuntuGestures/tst_TouchRegistry.cppnew file+803

This diff is too big to show here.

tests/mocks/AccountsService/AccountsService.cpp+29−3

This diff is too big to show here.

tests/mocks/AccountsService/AccountsService.h+17

This diff is too big to show here.

tests/mocks/AccountsService/AccountsService.qmltypes+1

This diff is too big to show here.

tests/mocks/HudClient/fake_libhud_client.cpp+8−1

This diff is too big to show here.

tests/mocks/LightDM/LightDM.qmltypes+2

This diff is too big to show here.

tests/mocks/Powerd/Powerd.cpp+15−1

This diff is too big to show here.

tests/mocks/Powerd/Powerd.h+8−1

This diff is too big to show here.

tests/mocks/Powerd/Powerd.qmltypes+3−3

This diff is too big to show here.

tests/mocks/QtMultimedia/audio.cpp+1−1

This diff is too big to show here.

tests/mocks/Ubuntu/CMakeLists.txt+1

This diff is too big to show here.

tests/mocks/Ubuntu/Connectivity/CMakeLists.txtnew file+10

This diff is too big to show here.

tests/mocks/Ubuntu/Connectivity/networking-status.cppnew file+64

This diff is too big to show here.

tests/mocks/Ubuntu/Connectivity/networking-status.hnew file+73

This diff is too big to show here.

tests/mocks/Ubuntu/Connectivity/plugin.cppnew file+46

This diff is too big to show here.

tests/mocks/Ubuntu/Connectivity/plugin.hnew file+35

This diff is too big to show here.

tests/mocks/Ubuntu/Connectivity/qmldirnew file+2

This diff is too big to show here.

tests/mocks/Ubuntu/Payments/MockPayments.cpp+12−7

This diff is too big to show here.

tests/mocks/Ubuntu/Payments/MockPayments.h+2

This diff is too big to show here.

tests/mocks/Ubuntu/SystemImage/SystemImage.qmltypes+3−1

This diff is too big to show here.

tests/mocks/Ubuntu/Telephony/MockCallEntry.cpp+26−1

This diff is too big to show here.

tests/mocks/Ubuntu/Telephony/MockCallEntry.h+9−1

This diff is too big to show here.

tests/mocks/Unity/Application/Application.qmltypes+115−70

This diff is too big to show here.

tests/mocks/Unity/Application/ApplicationDBusAdaptor.cppdeleted−81

This diff is too big to show here.

tests/mocks/Unity/Application/ApplicationInfo.cpp+36−85

This diff is too big to show here.

tests/mocks/Unity/Application/ApplicationInfo.h+18−23

This diff is too big to show here.

tests/mocks/Unity/Application/ApplicationManager.cpp+35−16

This diff is too big to show here.

tests/mocks/Unity/Application/ApplicationManager.h+7−4

This diff is too big to show here.

tests/mocks/Unity/Application/ApplicationTestInterface.cppnew file+117

This diff is too big to show here.

tests/mocks/Unity/Application/ApplicationDBusAdaptor.h → tests/mocks/Unity/Application/ApplicationTestInterface.hrenamed+13−11

This diff is too big to show here.

tests/mocks/Unity/Application/CMakeLists.txt+8−2

This diff is too big to show here.

tests/mocks/Unity/Application/MirSurfaceItem.cpp+44−94

This diff is too big to show here.

tests/mocks/Unity/Application/MirSurfaceItem.h+49−32

This diff is too big to show here.

tests/mocks/Unity/Application/MirSurfaceItem.qml+12−14

This diff is too big to show here.

tests/mocks/Unity/Application/MirSurfaceItemModel.hnew file+35

This diff is too big to show here.

tests/mocks/Unity/Application/ObjectListModel.hnew file+106

This diff is too big to show here.

tests/mocks/Unity/Application/Session.cppnew file+174

This diff is too big to show here.

tests/mocks/Unity/Application/Session.hnew file+90

This diff is too big to show here.

tests/mocks/Unity/Application/SessionManager.cppnew file+55

This diff is too big to show here.

tests/mocks/Unity/Application/SessionManager.hnew file+44

This diff is too big to show here.

tests/mocks/Unity/Application/SessionModel.hnew file+35

This diff is too big to show here.

tests/mocks/Unity/Application/SurfaceManager.cpp+20−7

This diff is too big to show here.

tests/mocks/Unity/Application/SurfaceManager.h+6−2

This diff is too big to show here.

tests/mocks/Unity/Application/UbuntuKeyboardInfo.cppnew file+28

This diff is too big to show here.

tests/mocks/Unity/Application/UbuntuKeyboardInfo.hnew file+60

This diff is too big to show here.

tests/mocks/Unity/Application/plugin.cpp+44−4

This diff is too big to show here.

tests/mocks/Unity/DashCommunicator/dashcommunicatorservice.cpp+2−2

This diff is too big to show here.

tests/mocks/Unity/DashCommunicator/dashcommunicatorservice.h+2−2

This diff is too big to show here.

tests/mocks/Unity/Indicators/FakeMenuPage.qml−10

This diff is too big to show here.

tests/mocks/Unity/Indicators/Indicators.qmltypes+20

This diff is too big to show here.

tests/mocks/Unity/Launcher/CMakeLists.txt+1−1

This diff is too big to show here.

tests/mocks/Unity/Launcher/MockLauncherItem.cpp+14

This diff is too big to show here.

tests/mocks/Unity/Launcher/MockLauncherItem.h+18−17

This diff is too big to show here.

tests/mocks/Unity/Launcher/MockLauncherModel.cpp+11

This diff is too big to show here.

tests/mocks/Unity/Unity.qmltypes+30−2

This diff is too big to show here.

tests/mocks/Unity/fake_categories.cpp+95−136

This diff is too big to show here.

tests/mocks/Unity/fake_categories.h+7−12

This diff is too big to show here.

tests/mocks/Unity/fake_resultsmodel.cpp+9

This diff is too big to show here.

tests/mocks/Unity/fake_resultsmodel.h+3

This diff is too big to show here.

tests/mocks/Unity/fake_scope.cpp+28−6

This diff is too big to show here.

tests/mocks/Unity/fake_scope.h+8−1

This diff is too big to show here.

tests/mocks/Unity/fake_scopes.cpp+1

This diff is too big to show here.

tests/mocks/libusermetrics/UserMetrics.cpp+2−2

This diff is too big to show here.

tests/plugins/Dash/CMakeLists.txt+3−3

This diff is too big to show here.

tests/plugins/Dash/cardcreator/1.res+9−8

This diff is too big to show here.

tests/plugins/Dash/cardcreator/2.res+10−13

This diff is too big to show here.

tests/plugins/Dash/cardcreator/3.res+12−12

This diff is too big to show here.

tests/plugins/Dash/cardcreator/4.res+8−11

This diff is too big to show here.

tests/plugins/Dash/cardcreator/5.res+14−14

This diff is too big to show here.

tests/plugins/Dash/cardcreator/6.res+8−10

This diff is too big to show here.

tests/plugins/Dash/cardcreator/7.res+12−15

This diff is too big to show here.

tests/plugins/Dash/listviewwithpageheadertest.cpp+39

This diff is too big to show here.

tests/plugins/Dash/listviewwithpageheadertest.qml+1

This diff is too big to show here.

tests/plugins/Dash/listviewwithpageheadertestsection.qml+1

This diff is too big to show here.

tests/plugins/Dash/listviewwithpageheadertestsectionexternalmodel.qml+1

This diff is too big to show here.

tests/plugins/Ubuntu/Gestures/CMakeLists.txt+10−3

This diff is too big to show here.

tests/plugins/Ubuntu/Gestures/RightwardsLauncher.qml+3

This diff is too big to show here.

qml/Stages/Dot.qml → tests/plugins/Ubuntu/Gestures/touchGateExample.qmlrenamed+7−5

This diff is too big to show here.

tests/plugins/Ubuntu/Gestures/tst_DirectionalDragArea.cpp+491−14

This diff is too big to show here.

tests/plugins/Ubuntu/Gestures/tst_DirectionalDragArea.qml+1

This diff is too big to show here.

tests/plugins/Ubuntu/Gestures/tst_TouchGate.cppnew file+345

This diff is too big to show here.

tests/plugins/Unity/Launcher/CMakeLists.txt+10−25

This diff is too big to show here.

tests/plugins/Unity/Launcher/gsettings.cppnew file+40

This diff is too big to show here.

tests/plugins/Unity/Launcher/gsettings.hnew file+38

This diff is too big to show here.

tests/plugins/Unity/Launcher/launcherbackendtest.cppdeleted−239

This diff is too big to show here.

tests/plugins/Unity/Launcher/launchermodeltest.cpp+89−2

This diff is too big to show here.

tests/plugins/Utils/CMakeLists.txt+2−3

This diff is too big to show here.

tests/plugins/Utils/timeformattertest.cpp+104−7

This diff is too big to show here.

tests/qmltests/CMakeLists.txt+4−1

This diff is too big to show here.

tests/qmltests/Components/CMakeLists.txt+3−2

This diff is too big to show here.

tests/qmltests/Components/tst_DragHandle.cpp+12−15

This diff is too big to show here.

tests/qmltests/Components/tst_DragHandle/HorizontalShowable.qml+1−1

This diff is too big to show here.

tests/qmltests/Components/tst_DragHandle/VerticalShowable.qml+1−1

This diff is too big to show here.

tests/qmltests/Greeter/tst_Lockscreen.qml → tests/qmltests/Components/tst_Lockscreen.qmlrenamed+31−51

This diff is too big to show here.

tests/qmltests/Dash/CardHelpers.js+1−12

This diff is too big to show here.

tests/qmltests/Dash/Previews/tst_PreviewHeader.qml+4−2

This diff is too big to show here.

tests/qmltests/Dash/Previews/tst_PreviewImageGallery.qml+51−1

This diff is too big to show here.

tests/qmltests/Dash/Previews/tst_PreviewPayments.qml+88−9

This diff is too big to show here.

tests/qmltests/Dash/tst_Card.qml+29−3

This diff is too big to show here.

tests/qmltests/Dash/tst_CardTool.qml+28−20

This diff is too big to show here.

tests/qmltests/Dash/tst_Dash.qml+25−41

This diff is too big to show here.

tests/qmltests/Dash/tst_DashContent.qml+14−1

This diff is too big to show here.

tests/qmltests/Dash/tst_GenericScopeView.qml+157−7

This diff is too big to show here.

tests/qmltests/Dash/tst_PreviewListView.qml+29−1

This diff is too big to show here.

tests/qmltests/Greeter/tst_MultiGreeter.qml+2−2

This diff is too big to show here.

tests/qmltests/Greeter/tst_SingleGreeter.qml+1−1

This diff is too big to show here.

tests/qmltests/Launcher/tst_Launcher.qml+120−102

This diff is too big to show here.

tests/qmltests/Notifications/tst_Notifications.qml+60−18

This diff is too big to show here.

tests/qmltests/Panel/Indicators/tst_DefaultIndicatorPage.qml+3−23

This diff is too big to show here.

tests/qmltests/Panel/Indicators/tst_MenuItemFactory.qml+56−16

This diff is too big to show here.

tests/qmltests/Panel/Indicators/tst_MessageMenuItemFactory.qml+43−53

This diff is too big to show here.

tests/qmltests/Panel/tst_ActiveCallHint.qml+20−7

This diff is too big to show here.

tests/qmltests/Panel/tst_Indicators.qml+10−10

This diff is too big to show here.

tests/qmltests/Panel/tst_MenuContent.qml+14−56

This diff is too big to show here.

tests/qmltests/Stages/RecursingChildSessionControl.qmlnew file+142

This diff is too big to show here.

tests/qmltests/Stages/tst_ApplicationWindow.qml+114−44

This diff is too big to show here.

tests/qmltests/Stages/tst_PhoneStage.qml+78−2

This diff is too big to show here.

tests/qmltests/Stages/tst_SessionContainer.qmlnew file+330

This diff is too big to show here.

tests/qmltests/Stages/tst_Splash.qmlnew file+117

This diff is too big to show here.

tests/qmltests/Stages/tst_SurfaceContainer.qml+53−43

This diff is too big to show here.

tests/qmltests/Components/tst_DragHandle/UnityLogo.png → tests/qmltests/UnityLogo.pngrenamed

Binary file not shown.

tests/qmltests/tst_Shell.qml+270−48

This diff is too big to show here.

tests/qmltests/tst_ShellWithPin.qml+171−36

This diff is too big to show here.

tests/qmltests/tst_TabletShell.qmlnew file+297

This diff is too big to show here.

tests/uqmlscene/CMakeLists.txt+2

This diff is too big to show here.

tests/uqmlscene/README+3−1

This diff is too big to show here.

tests/uqmlscene/main.cpp+9

This diff is too big to show here.

tests/utils/modules/Unity/Test/CMakeLists.txt+2

This diff is too big to show here.

tests/utils/modules/Unity/Test/UnityTestCase.qml+23−2

This diff is too big to show here.

tests/utils/modules/Unity/Test/testutil.cpp+41−2

This diff is too big to show here.

tests/utils/modules/Unity/Test/testutil.h+3−1

This diff is too big to show here.

tools/registry-tracker.cpp+6

This diff is too big to show here.

tools/scopetool.cpp+3

This diff is too big to show here.

tools/unlock-device+14−19

This diff is too big to show here.