on xenial help sign in
Merged with trunk and fixed conflicts.
commitd51efda80053a327c98de9a2957cd0c6f6477e87 authorMirco Müller <mirco.mueller@canonical.com> dateFri 7 Nov 2014, 16:12 (12 years ago) parentb1f9e851a13033
429 files changed+22839−10838
CMakeLists.txt+7−2 CODING+4 build.sh+2−3 cmake/modules/QmlTest.cmake+10−1 data/unity8-dash.conf+5 data/unity8.conf+5−1 debian/changelog+301 debian/control+5−3 debian/unity8-private.install+3 libs/CMakeLists.txt+1 libs/UbuntuGestures/CMakeLists.txt+40 libs/UbuntuGestures/CandidateInactivityTimer.cpp+41 libs/UbuntuGestures/CandidateInactivityTimer.h+49 libs/UbuntuGestures/DebugHelpers.cpp+95 tests/mocks/Unity/Indicators/qml/fake_menu_page3.qml → libs/UbuntuGestures/DebugHelpers.h+12−16 libs/UbuntuGestures/Pool.h+132 libs/UbuntuGestures/Timer.cpp+109 libs/UbuntuGestures/Timer.h+105 tests/mocks/Unity/Indicators/qml/fake_menu_page4.qml → libs/UbuntuGestures/TouchOwnershipEvent.cpp+15−15 libs/UbuntuGestures/TouchOwnershipEvent.h+50 libs/UbuntuGestures/TouchRegistry.cpp+500 libs/UbuntuGestures/TouchRegistry.h+182 plugins/Ubuntu/Gestures/UbuntuGesturesGlobal.h → libs/UbuntuGestures/UbuntuGesturesGlobal.h+1−1 libs/UbuntuGestures/UnownedTouchEvent.cpp+39 libs/UbuntuGestures/UnownedTouchEvent.h+45 plugins/AccountsService/AccountsService.qmltypes+2 plugins/CMakeLists.txt+1 plugins/Dash/CardAttributes.qml+3−1 plugins/Dash/CardCreator.js+19−18 tests/mocks/Unity/Indicators/FakeMenuPage.qml → plugins/Dash/CroppedImageMinimumSourceSize.qml+19−8 plugins/Dash/Dash.qmltypes+3 plugins/Dash/listviewwithpageheader.cpp+19−8 plugins/Dash/listviewwithpageheader.h+6 plugins/Dash/qmldir+2−1 plugins/LightDM/CMakeLists.txt+2 plugins/LightDM/DBusGreeter.cpp+3−24 plugins/LightDM/DBusGreeter.h+3−7 plugins/LightDM/DBusGreeterList.cpp+3−24 plugins/LightDM/DBusGreeterList.h+3−7 plugins/LightDM/LightDM.qmltypes+1 plugins/LightDM/plugin.cpp+2−9 plugins/ScreenGrabber/CMakeLists.txt+13 plugins/ScreenGrabber/ScreenGrabber.qmltypes+17 qml/Components/ListItems/VerticalThinDivider.qml → plugins/ScreenGrabber/plugin.cpp+11−9 tests/mocks/Unity/Indicators/qml/fake_menu_page1.qml → plugins/ScreenGrabber/plugin.h+14−16 plugins/ScreenGrabber/qmldir+3 plugins/ScreenGrabber/screengrabber.cpp+94 tests/mocks/Unity/Indicators/qml/fake_menu_page2.qml → plugins/ScreenGrabber/screengrabber.h+23−16 plugins/Ubuntu/Gestures/AxisVelocityCalculator.h+2−2 plugins/Ubuntu/Gestures/CMakeLists.txt+25−5 plugins/Ubuntu/Gestures/Direction.h+2−2 plugins/Ubuntu/Gestures/DirectionalDragArea.cpp+319−191 plugins/Ubuntu/Gestures/DirectionalDragArea.h+37−29 plugins/Ubuntu/Gestures/TimeSource.h+2−2 plugins/Ubuntu/Gestures/TouchDispatcher.cpp+367 plugins/Ubuntu/Gestures/TouchDispatcher.h+89 plugins/Ubuntu/Gestures/TouchGate.cpp+251 plugins/Ubuntu/Gestures/TouchGate.h+110 tests/mocks/Unity/Notifications/notification.js → plugins/Ubuntu/Gestures/UbuntuGesturesQmlGlobal.h+6−6 plugins/Ubuntu/Gestures/plugin.cpp+3−1 plugins/Ubuntu/Gestures/plugin.h+1−1 plugins/Ubuntu/Gestures/qmldir+1−1 plugins/Ubuntu/Payments/Payments.qmltypes+1 plugins/Unity/DashCommunicator/CMakeLists.txt+8−2 plugins/Unity/DashCommunicator/DashCommunicator.qmltypes+18−5 plugins/Unity/DashCommunicator/dashcommunicator.cpp+22−13 plugins/Unity/DashCommunicator/dashcommunicator.h+17−7 plugins/Unity/DashCommunicator/dashcommunicatorservice.h+1−1 plugins/Unity/DashCommunicator/dashconnection.cpp+33 plugins/Unity/DashCommunicator/dashconnection.h+34 plugins/Unity/DashCommunicator/dbusdashcommunicatorservice.cpp+3−7 plugins/Unity/DashCommunicator/dbusdashcommunicatorservice.h+4−4 plugins/Unity/Indicators/CMakeLists.txt+1 plugins/Unity/Indicators/Indicators.qmltypes+12−11 plugins/Unity/Indicators/indicators.h−2 plugins/Unity/Indicators/indicatorsmodel.cpp−6 plugins/Unity/Indicators/plugin.cpp+8−2 plugins/Unity/Indicators/plugin.h+1−1 plugins/Unity/Indicators/rootactionstate.cpp+1−1 plugins/Unity/Indicators/rootactionstate.h+4−4 plugins/Unity/Indicators/sharedunitymenumodel.cpp+92 plugins/Unity/Indicators/sharedunitymenumodel.h+66 plugins/Unity/Indicators/unitymenumodelcache.cpp+25−14 plugins/Unity/Indicators/unitymenumodelcache.h+11−7 plugins/Unity/Indicators/visibleindicatorsmodel.cpp−2 plugins/Unity/Launcher/CMakeLists.txt+7−3 plugins/Unity/Launcher/Launcher.qmltypes+17−12 plugins/Unity/Launcher/dbusinterface.cpp+5−38 plugins/Unity/Launcher/dbusinterface.h+2−5 plugins/Unity/Launcher/desktopfilehandler.cpp+3−1 plugins/Unity/Launcher/gsettings.cpp+11−7 plugins/Unity/Launcher/gsettings.h+10−1 plugins/Unity/Launcher/launchermodel.cpp+86−32 plugins/Unity/Launcher/launchermodel.h+5−1 plugins/Unity/Session/CMakeLists.txt+5−1 plugins/Unity/Session/Session.qmltypes+10 plugins/Unity/Session/dbusunitysessionservice.cpp+2−8 plugins/Unity/Session/dbusunitysessionservice.h+2−2 plugins/Unity/Session/orientationlock.cpp+6−6 plugins/Unity/Session/orientationlock.h+1−3 plugins/Utils/Utils.qmltypes+6 plugins/Utils/relativetimeformatter.cpp+31−39 po/am.po+96−88 po/ar.po+92−80 po/ast.po+97−88 po/az.po+94−83 po/be.po+91−79 po/bg.po+90−79 po/br.po+103−91 po/bs.po+95−83 po/ca.po+105−92 po/ca@valencia.po+384 po/ckb.po+90−79 po/cs.po+90−79 po/da.po+91−80 po/de.po+104−92 po/el.po+93−82 po/en_AU.po+98−90 po/en_GB.po+97−89 po/eo.po+90−79 po/es.po+104−92 po/eu.po+100−89 po/fa.po+98−90 po/fi.po+96−86 po/fo.po+90−79 po/fr.po+102−90 po/gd.po+105−90 po/gl.po+93−85 po/he.po+93−82 po/hi.po+90−79 po/hr.po+91−79 po/hu.po+96−88 po/hy.po+146−131 po/id.po+90−79 po/is.po+109−92 po/it.po+102−90 po/ja.po+95−87 po/km.po+96−88 po/kn.po+90−79 po/ko.po+92−85 po/ku.po+95−84 po/ky.po+90−79 po/lo.po+90−79 po/lt.po+92−80 po/lv.po+92−81 po/ml.po+90−79 po/mr.po+90−79 po/ms.po+147−128 po/my.po+90−79 po/nb.po+100−90 po/nl.po+101−89 po/pa.po+366 po/pl.po+92−80 po/pt.po+108−99 po/pt_BR.po+99−91 po/ro.po+100−87 po/ru.po+101−84 po/shn.po+90−79 po/si.po+90−79 po/sl.po+101−90 po/sq.po+90−79 po/sr.po+96−87 po/sv.po+96−88 po/sw.po+90−79 po/ta.po+90−79 po/te.po+91−80 po/th.po+249−105 po/tr.po+93−82 po/ug.po+97−90 po/uk.po+102−88 po/unity8.pot+88−77 po/update-unity-pot+1 po/vi.po+90−79 po/xh.po+90−79 po/zh_CN.po+91−83 po/zh_HK.po+91−80 po/zh_TW.po+100−93 qml/Components/DelayedLockscreen.qml+92 qml/Components/Dialogs.qml+21−17 qml/Components/DragHandle.qml+8−3 qml/Components/EdgeDemo.qml+13−10 qml/Components/EdgeDragArea.qml+2 qml/Components/InputMethod.qml+13 qml/Components/LazyImage.qml+1 qml/Components/ListItems/Base.qml−125 qml/Components/ListItems/Highlight.qml−46 qml/Components/ListItems/graphics/ListItemDividerVertical@18.png qml/Components/Lockscreen.qml+132−103 qml/Components/PassphraseLockscreen.qml+98−43 qml/Components/PinLockscreen.qml+13−5 qml/Components/ResponsiveGridView.qml+5−1 qml/Components/ResponsiveVerticalJournal.qml+3−2 qml/Components/ScreenGrabber.qml+72 qml/Components/ScrollCalculator.qml+81 qml/Components/VolumeKeyFilter.qml+63 qml/Components/ZoomableImage.qml+17−14 qml/Dash/CardGrid.qml+2−1 qml/Dash/CardHorizontalList.qml+1−1 qml/Dash/CardTool.qml+26−18 qml/Dash/CardVerticalJournal.qml+19−1 qml/Dash/Dash.qml+34−20 qml/Dash/DashCategoryBase.qml+62 qml/Dash/DashContent.qml+8−2 qml/Dash/DashNavigation.qml+1 qml/Dash/DashRenderer.qml+6−2 qml/Dash/GenericScopeView.qml+75−17 qml/Dash/Previews/PreviewHeader.qml+13−1 qml/Dash/Previews/PreviewImageGallery.qml+54−18 qml/Dash/Previews/PreviewOverlay.qml+115 qml/Dash/Previews/PreviewTextSummary.qml+1−1 qml/Dash/Previews/PreviewZoomableImage.qml+38−5 qml/Dash/PullToRefreshScopeStyle.qml+82 qml/Dash/ScopeListView.qml+1 qml/Dash/ScopeSettingsPage.qml+1 qml/Dash/ScopesOverview.qml+9−1 qml/Dash/ScopesOverviewAll.qml+2 qml/Dash/ScopesOverviewFavorites.qml+1−1 qml/Greeter/Clock.qml+9−9 qml/Greeter/Greeter.qml+19−2 qml/Greeter/GreeterContent.qml+15 qml/Greeter/Infographics.qml+20−15 qml/Greeter/LoginList.qml+19−7 qml/Launcher/Launcher.qml+29−4 qml/Launcher/LauncherDelegate.qml+1−31 qml/Launcher/LauncherPanel.qml+17−29 qml/Launcher/graphics/quicklist_tooltip@30.png qml/Notifications/Notification.qml+94−11 qml/Notifications/NotificationMenuItemFactory.qml+77−5 qml/Notifications/Notifications.qml+2 qml/Notifications/SwipeToAct.qml+309 qml/Panel/ActiveCallHint.qml+4−2 qml/Panel/Handle.qml+43 qml/Panel/IndicatorItem.qml+234−23 qml/Panel/IndicatorItemRow.qml+297 qml/Panel/Indicators/DefaultIndicatorPage.qml → qml/Panel/IndicatorPage.qml+22−17 qml/Panel/IndicatorRow.qml−162 qml/Panel/Indicators.qml−415 qml/Panel/Indicators/CachedUnityMenuModel.qml−39 qml/Panel/Indicators/DefaultIndicatorWidget.qml−119 qml/Panel/Indicators/IndicatorBase.qml+4−7 qml/Panel/Indicators/IndicatorDelegate.qml+2−2 qml/Panel/Indicators/MenuItemFactory.qml+47−4 qml/Panel/Indicators/VisibleIndicators.qml+5−5 qml/Panel/Indicators/client/IndicatorsPage.qml → qml/Panel/Indicators/client/IndicatorRepresentation.qml+21−10 qml/Panel/Indicators/client/IndicatorsList.qml+2−2 qml/Panel/Indicators/client/IndicatorsTree.qml+4−26 qml/Panel/IndicatorsBar.qml+269 qml/Panel/IndicatorsMenu.qml+318 qml/Panel/MenuContent.qml+25−75 qml/Panel/Panel.qml+48−41 qml/Panel/PanelVelocityCalculator.qml+54 qml/Shell.qml+219−83 qml/Stages/ApplicationWindow.qml−18 qml/Stages/PhoneStage.qml+28−6 qml/Stages/SessionContainer.qml+1−13 qml/Stages/SurfaceContainer.qml+37−6 qml/Stages/TabletStage.qml+12−1 run_on_device.sh+4−5 src/CMakeLists.txt+7 src/Dash/CMakeLists.txt+7 src/Dash/main.cpp+6 src/Panel/CMakeLists.txt+2 src/libunity8-private/CMakeLists.txt+27 src/libunity8-private/abstractdbusservicemonitor.cpp+87 src/libunity8-private/abstractdbusservicemonitor.h+66 src/libunity8-private/unitydbusobject.cpp+86 src/libunity8-private/unitydbusobject.h+46 src/libunity8-private/unitydbusvirtualobject.cpp+83 src/libunity8-private/unitydbusvirtualobject.h+47 src/main.cpp+5 tests/CMakeLists.txt+1 tests/autopilot/unity8/indicators/tests/test_indicators.py+3−3 tests/autopilot/unity8/shell/emulators/dash.py+9−5 tests/autopilot/unity8/shell/emulators/main_window.py+6−6 tests/autopilot/unity8/shell/tests/__init__.py+1−1 tests/autopilot/unity8/shell/tests/test_emulators.py+10−47 tests/autopilot/unity8/shell/tests/test_lock_screen.py+3−1 tests/autopilot/unity8/shell/tests/test_notifications.py+6−56 tests/libs/CMakeLists.txt+1 tests/libs/UbuntuGestures/CMakeLists.txt+20 tests/libs/UbuntuGestures/tst_TouchRegistry.cpp+803 tests/mocks/AccountsService/AccountsService.cpp+5−3 tests/mocks/AccountsService/AccountsService.h+1 tests/mocks/AccountsService/AccountsService.qmltypes+2 tests/mocks/LightDM/CMakeLists.txt+2 tests/mocks/LightDM/LightDM.qmltypes+1 tests/mocks/QMenuModel/QMenuModel.qmltypes+1−1 tests/mocks/QMenuModel/unitymenumodel.cpp+1−2 tests/mocks/QMenuModel/unitymenumodel.h+6−2 tests/mocks/QtMultimedia/QtMultimedia.qmltypes+10 tests/mocks/QtMultimedia/audio.cpp+10 tests/mocks/QtMultimedia/audio.h+12 tests/mocks/Ubuntu/CMakeLists.txt+1 tests/mocks/Ubuntu/Connectivity/CMakeLists.txt+10 tests/mocks/Ubuntu/Connectivity/networking-status.cpp+64 tests/mocks/Ubuntu/Connectivity/networking-status.h+73 tests/mocks/Ubuntu/Connectivity/plugin.cpp+46 tests/mocks/Ubuntu/Connectivity/plugin.h+35 tests/mocks/Ubuntu/Connectivity/qmldir+2 tests/mocks/Ubuntu/Payments/Payments.qmltypes+2 tests/mocks/Ubuntu/Telephony/MockCallEntry.cpp+26−1 tests/mocks/Ubuntu/Telephony/MockCallEntry.h+9−1 tests/mocks/Ubuntu/Telephony/Telephony.qmltypes+2−1 tests/mocks/Unity/Application/Application.qmltypes+13 tests/mocks/Unity/Application/ApplicationManager.cpp+26 tests/mocks/Unity/Application/ApplicationManager.h+6−2 tests/mocks/Unity/Application/CMakeLists.txt+2−1 tests/mocks/Unity/Application/MirSurfaceItem.cpp+18−22 tests/mocks/Unity/Application/MirSurfaceItem.h+18−1 tests/mocks/Unity/Application/MirSurfaceItem.qml−12 tests/mocks/Unity/Application/UbuntuKeyboardInfo.cpp+28 tests/mocks/Unity/Application/UbuntuKeyboardInfo.h+60 tests/mocks/Unity/Application/plugin.cpp+7 tests/mocks/Unity/DashCommunicator/DashCommunicator.qmltypes+6−6 tests/mocks/Unity/DashCommunicator/dashcommunicator.cpp+2−2 tests/mocks/Unity/DashCommunicator/dashcommunicator.h+2−2 tests/mocks/Unity/DashCommunicator/dashcommunicatorservice.cpp+2−2 tests/mocks/Unity/DashCommunicator/dashcommunicatorservice.h+2−2 tests/mocks/Unity/Indicators/CMakeLists.txt+3−10 tests/mocks/Unity/Indicators/Indicators.qmltypes+43−15 tests/mocks/Unity/Indicators/IndicatorsModel.qml+152−34 tests/mocks/Unity/Indicators/RootActionState.qml+18−10 tests/mocks/Unity/Indicators/fakeindicatorsmodel.cpp+50−21 tests/mocks/Unity/Indicators/fakeindicatorsmodel.h+8−2 tests/mocks/Unity/Indicators/fakeplugin.cpp+8−4 tests/mocks/Unity/Indicators/fakeunitymenumodelcache.cpp+59 tests/mocks/Unity/Indicators/fakeunitymenumodelcache.h+45 tests/mocks/Unity/Indicators/indicators_fake.qrc−14 tests/mocks/Unity/Indicators/qml/fake_menu_page5.qml−35 tests/mocks/Unity/Indicators/qml/fake_menu_widget3.qml−23 tests/mocks/Unity/Indicators/qml/fake_menu_widget4.qml−23 tests/mocks/Unity/Indicators/qml/fake_menu_widget5.qml−23 tests/mocks/Unity/Indicators/qmldir−1 tests/mocks/Unity/Launcher/CMakeLists.txt+1−1 tests/mocks/Unity/Launcher/Launcher.qmltypes+13 tests/mocks/Unity/Launcher/MockLauncherModel.cpp+6 tests/mocks/Unity/Launcher/MockLauncherModel.h+3 tests/mocks/Unity/Notifications/CMakeLists.txt+15−1 tests/mocks/Unity/Notifications/MockActionModel.cpp+72 tests/mocks/Unity/Notifications/MockActionModel.h+51 tests/mocks/Unity/Notifications/MockNotificationTypes.cpp+26 tests/mocks/Unity/Notifications/MockNotificationTypes.h+36 tests/mocks/Unity/Notifications/plugin.cpp+31 tests/mocks/Unity/Notifications/plugin.h+35 tests/mocks/Unity/Notifications/qmldir+2−1 tests/mocks/Unity/Unity.qmltypes+32 tests/mocks/Unity/fake_scope.cpp+1−1 tests/mocks/Unity/fake_scope.h+3 tests/mocks/libusermetrics/UserMetrics.cpp+2−2 tests/plugins/Dash/CMakeLists.txt+3−3 tests/plugins/Dash/cardcreator/1.res+9−6 tests/plugins/Dash/cardcreator/2.res+10−11 tests/plugins/Dash/cardcreator/3.res+11−9 tests/plugins/Dash/cardcreator/4.res+10−11 tests/plugins/Dash/cardcreator/5.res+12−10 tests/plugins/Dash/cardcreator/6.res+7−7 tests/plugins/Dash/cardcreator/7.res+11−12 tests/plugins/Dash/listviewwithpageheadertest.cpp+39 tests/plugins/Dash/listviewwithpageheadertest.qml+1 tests/plugins/Dash/listviewwithpageheadertestsection.qml+1 tests/plugins/Dash/listviewwithpageheadertestsectionexternalmodel.qml+1 tests/plugins/Ubuntu/Gestures/CMakeLists.txt+11−3 tests/plugins/Ubuntu/Gestures/GestureTest.cpp+76 tests/plugins/Ubuntu/Gestures/GestureTest.h+42−1 tests/plugins/Ubuntu/Gestures/RightwardsLauncher.qml+3 tests/mocks/Unity/Indicators/qml/fake_menu_widget2.qml → tests/plugins/Ubuntu/Gestures/empty.qml+4−5 tests/mocks/Unity/Indicators/qml/fake_menu_widget1.qml → tests/plugins/Ubuntu/Gestures/touchGateExample.qml+8−4 tests/plugins/Ubuntu/Gestures/tst_DirectionalDragArea.cpp+422−14 tests/plugins/Ubuntu/Gestures/tst_DirectionalDragArea.qml+1 tests/plugins/Ubuntu/Gestures/tst_TouchDispatcher.cpp+149 tests/plugins/Ubuntu/Gestures/tst_TouchGate.cpp+345 tests/plugins/Unity/Indicators/CMakeLists.txt+1 tests/plugins/Unity/Indicators/sharedunitymenumodeltest.cpp+102 tests/plugins/Unity/Launcher/CMakeLists.txt+7−3 tests/plugins/Unity/Launcher/gsettings.cpp+9−4 tests/plugins/Unity/Launcher/gsettings.h+9 tests/plugins/Unity/Launcher/launchermodeltest.cpp+103−12 tests/plugins/Unity/Session/CMakeLists.txt+4 tests/plugins/Unity/Session/sessionbackendtest.cpp+1 tests/plugins/Utils/qsortfilterproxymodeltest.cpp+1−1 tests/qmltests/CMakeLists.txt+12−11 tests/qmltests/Components/CMakeLists.txt+3−2 tests/qmltests/Components/tst_DragHandle.cpp+12−15 tests/qmltests/Greeter/tst_Lockscreen.qml → tests/qmltests/Components/tst_Lockscreen.qml+31−51 tests/qmltests/Components/tst_ZoomableImage.qml+21−21 tests/qmltests/Dash/CardHelpers.js+1−12 tests/qmltests/Dash/Previews/tst_PreviewHeader.qml+4−2 tests/qmltests/Dash/Previews/tst_PreviewImageGallery.qml+52−1 tests/qmltests/Dash/Previews/tst_PreviewZoomableImage.qml+30−8 tests/qmltests/Dash/tst_Card.qml+39 tests/qmltests/Dash/tst_CardTool.qml+28−20 tests/qmltests/Dash/tst_Dash.qml+19−62 tests/qmltests/Dash/tst_DashContent.qml+19−6 tests/qmltests/Dash/tst_GenericScopeView.qml+61−6 tests/qmltests/Greeter/tst_Clock.qml+49−34 tests/qmltests/Greeter/tst_MultiGreeter.qml+2−2 tests/qmltests/Greeter/tst_SingleGreeter.qml+70−27 tests/qmltests/Launcher/tst_Launcher.qml+143−105 tests/qmltests/Notifications/tst_Notifications.qml+566−427 tests/qmltests/Notifications/tst_SwipeToAct.qml+276 tests/qmltests/Panel/IndicatorTest.qml+80 tests/qmltests/Panel/Indicators/tst_CachedUnityMenuModel.qml−137 tests/qmltests/Panel/Indicators/tst_DefaultIndicatorWidget.qml−60 tests/qmltests/Panel/Indicators/tst_MenuItemFactory.qml+40 tests/qmltests/Panel/tst_ActiveCallHint.qml+19−7 tests/qmltests/Panel/tst_IndicatorItem.qml+173−18 tests/qmltests/Panel/tst_IndicatorItemRow.qml+290 tests/qmltests/Panel/Indicators/tst_DefaultIndicatorPage.qml → tests/qmltests/Panel/tst_IndicatorPage.qml+65−45 tests/qmltests/Panel/tst_IndicatorRow.qml−160 tests/qmltests/Panel/tst_Indicators.qml−230 tests/qmltests/Panel/tst_IndicatorsBar.qml+224 tests/qmltests/Panel/tst_IndicatorsMenu.qml+258 tests/qmltests/Panel/tst_MenuContent.qml+9−25 tests/qmltests/Panel/tst_Panel.qml+185−214 tests/qmltests/Panel/tst_SearchIndicator.qml−1 tests/qmltests/Stages/tst_ApplicationWindow.qml+2−2 tests/qmltests/Stages/tst_PhoneStage.qml+36−1 tests/qmltests/Stages/tst_SurfaceContainer.qml+26−1 tests/qmltests/tst_Shell.qml+256−47 tests/qmltests/tst_ShellWithPin.qml+226−33 tests/qmltests/tst_TabletShell.qml+302 tests/uqmlscene/CMakeLists.txt+2 tests/uqmlscene/README+3−1 tests/uqmlscene/main.cpp+9 tests/utils/modules/Unity/Test/CMakeLists.txt+2 tests/utils/modules/Unity/Test/UnityTestCase.qml+23−2 tests/utils/modules/Unity/Test/testutil.cpp+29−2 tests/utils/modules/Unity/Test/testutil.h+2−1 tools/unlock-device+14−13
CMakeLists.txt+7−2
@@ -58,19 +58,20 @@ find_package(Qt5DBus 5.2 REQUIRED)
5858include(GNUInstallDirs)
5959
6060set(SHELL_APP_DIR ${CMAKE_INSTALL_DATADIR}/unity8)
61+set(SHELL_PRIVATE_LIBDIR ${CMAKE_INSTALL_LIBDIR}/unity8)
6162
6263execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=plugindir_suffix unity-shell-api OUTPUT_VARIABLE SHELL_INSTALL_QML OUTPUT_STRIP_TRAILING_WHITESPACE)
6364if(SHELL_INSTALL_QML STREQUAL "")
6465 message(FATAL_ERROR "Could not determine plugin installation dir.")
6566endif()
6667
68+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")
69+
6770execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=plugindir unity-shell-api OUTPUT_VARIABLE SHELL_PLUGINDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
6871if(SHELL_PLUGINDIR STREQUAL "")
6972 message(FATAL_ERROR "Could not determine plugin import dir.")
7073endif()
7174
72−set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")
73−
7475set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fno-permissive -pedantic -Wall -Wextra")
7576
7677if ("${CMAKE_BUILD_TYPE}" STREQUAL "release" OR "${CMAKE_BUILD_TYPE}" STREQUAL "relwithdebinfo")
@@ -87,6 +88,9 @@ endif()
8788# "signals" and "slots"
8889add_definitions(-DQT_NO_KEYWORDS)
8990
91+# Save a few container detach and conversions
92+add_definitions(-DQT_STRICT_ITERATORS)
93+
9094# Tests
9195include(CTest)
9296enable_testing()
@@ -106,6 +110,7 @@ include_directories(
106110
107111# add subdirectories to build
108112add_subdirectory(include)
113+add_subdirectory(libs)
109114add_subdirectory(src)
110115add_subdirectory(tools)
111116add_subdirectory(qml)
CODING+4
@@ -154,6 +154,10 @@ So, for the DragHandle component that would be:
154154
155155$ make testDragHandle
156156
157+To run the tests for a single component/class under gdb (so you can catch SEGFAULTS)
158+
159+$ make gdbtestComponentName
160+
157161To run a test application that allow you to manually test or to simply try out
158162a given component:
159163
build.sh+2−3
@@ -51,10 +51,9 @@ install_dependencies() {
5151 qtdeclarative5-ubuntu-settings-components \
5252 qtdeclarative5-ubuntu-telephony0.1 \
5353 qtdeclarative5-ubuntu-thumbnailer0.1 \
54− unity-notifications-impl \
54+ qtdeclarative5-unity-notifications-plugin \
55+ qml-module-ubuntu-connectivity \
5556 ubuntu-mobile-icons \
56− unity-scope-home \
57− unity-lens-applications \
5857 unity-plugin-scopes \
5958 xvfb \
6059 || exit 5
cmake/modules/QmlTest.cmake+10−1
@@ -12,6 +12,7 @@
1212# Two targets will be created:
1313# - testComponentName - Runs the test with qmltestrunner
1414# - tryComponentName - Runs the test with uqmlscene, for manual interaction
15+# - gdbtestComponentName - Runs the test with qmltestrunner under gdb
1516#
1617# To change/set a default value for the whole test suite, prior to calling add_qml_test, set:
1718# qmltest_DEFAULT_NO_ADD_TEST (default: FALSE)
@@ -81,6 +82,7 @@ macro(add_qml_test_internal SUBPATH COMPONENT_NAME ITERATIONS)
8182 cmake_parse_arguments(qmltest_default "${options}" "" "${multi_value_keywords}" ${qmltest_DEFAULT_PROPERTIES})
8283
8384 set(qmltest_TARGET test${COMPONENT_NAME})
85+ set(qmltest_gdb_TARGET gdbtest${COMPONENT_NAME})
8486 set(qmltest_xvfb_TARGET xvfbtest${COMPONENT_NAME})
8587 set(qmltest_FILE ${SUBPATH}/tst_${COMPONENT_NAME})
8688
@@ -138,12 +140,18 @@ macro(add_qml_test_internal SUBPATH COMPONENT_NAME ITERATIONS)
138140 ${function_ARGS}
139141 )
140142
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+
141148 add_qmltest_target(${qmltest_TARGET} "${qmltest_command}" TRUE ${qmltest_NO_ADD_TEST})
142149 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)
143151 add_manual_qml_test(${SUBPATH} ${COMPONENT_NAME} ${ARGN})
144152endmacro(add_qml_test_internal)
145153
146−macro(add_binary_qml_test CLASS_NAME LD_PATH DEPS)
154+macro(add_binary_qml_test CLASS_NAME LD_PATH DEPS ENVVAR)
147155 set(testCommand
148156 LD_LIBRARY_PATH=${LD_PATH}
149157 ${CMAKE_CURRENT_BINARY_DIR}/${CLASS_NAME}TestExec
@@ -160,6 +168,7 @@ macro(add_binary_qml_test CLASS_NAME LD_PATH DEPS)
160168 endif()
161169 set(xvfbtestCommand
162170 ${LD_PRELOAD_PATH}
171+ ${ENVVAR}
163172 LD_LIBRARY_PATH=${LD_PATH}
164173 xvfb-run --server-args "-screen 0 1024x768x24" --auto-servernum
165174 ${CMAKE_CURRENT_BINARY_DIR}/${CLASS_NAME}TestExec
data/unity8-dash.conf+5
@@ -8,6 +8,11 @@ stop on stopping unity8
88
99kill timeout 120
1010
11+# Focused app is 100 so we want to be less likely to get
12+# killed than the focused app but more than Unity8
13+
14+oom score 50
15+
1116respawn
1217
1318env APP_ID=unity8-dash
data/unity8.conf+5−1
@@ -34,11 +34,15 @@ pre-start script
3434 gdbus call --session --dest org.freedesktop.DBus --object-path /org/freedesktop/DBus --method org.freedesktop.DBus.UpdateActivationEnvironment "@a{ss} {'MIR_SOCKET': '$MIR_SERVER_FILE'}"
3535 fi
3636
37− # Remove the socket if still there
37+ # Remove the normal and trusted sockets if still there
3838 if [ -S "$MIR_SERVER_FILE" ]; then
3939 rm "$MIR_SERVER_FILE"
4040 fi
4141
42+ if [ -S "${MIR_SERVER_FILE}_trusted" ]; then
43+ rm "${MIR_SERVER_FILE}_trusted"
44+ fi
45+
4246 initctl set-env --global MIR_SERVER_PROMPT_FILE=1
4347
4448 initctl emit --no-wait indicator-services-start
debian/changelog+301
@@ -1,3 +1,304 @@
1+unity8 (8.01+15.04.20141104-0ubuntu1) vivid; urgency=low
2+
3+ [ Sebastien Bacher ]
4+ * Drop workaround, it's not needed and create issues for desktop-next
5+ (LP: #1387671)
6+
7+ [ Albert Astals ]
8+ * Do not append integer to char *
9+ * Remove unused end() function
10+ * Update build.sh
11+ * Fix i18n
12+
13+ [ Michael Zanetti ]
14+ * rework launcher quicklist visuals to fit new design (LP: #1368660)
15+ * Fix DBusVariant conversion for launcher emblems (LP: #1387261)
16+ * Fix desktop file encoding in launcher (LP: #1387083)
17+ * Add a hinting animation to indicate changes in the backend (LP:
18+ #1376707)
19+
20+ [ Alberto Aguirre ]
21+ * Add audioRole to QtMultimedia mock
22+ * Add a plugin to take screenshots on vol up + vol down
23+
24+ [ CI bot ]
25+ * Fix relative time formatter when using non-UTC timezone. (LP:
26+ #1378821)
27+
28+ [ Leo Arias ]
29+ * Removed the tests for the alternate paths of the autopilot helpers.
30+
31+ [ Nick Dedekind ]
32+ * Fix relative time formatter when using non-UTC timezone. (LP:
33+ #1378821)
34+ * Reset current item selection on deleted. (LP: #1378462)
35+ * Added timer to re-assert server value after indicator menu item
36+ activation. (LP: #1336715)
37+
38+ [ Mirco Müller ]
39+ * Added dedicated swipe-to-act button for snap-decisions, which avoids
40+ accidental taps/button-presses. (LP: #1358343)
41+
42+ [ Chris Gagnon ]
43+ * add missing unity-scope-click dependancy to unity8-autopilot package
44+ (LP: #1336276)
45+
46+ [ Michael Terry ]
47+ * Don't lock phone if user tries to switch back to an active call.
48+ (LP: #1388156)
49+
50+ [ Daniel d'Andrada ]
51+ * DirectionalDragArea: Update TODO comment in light of new events
52+ * TouchDispatcher: synthesize MouseButtonDblClick events
53+
54+ [ Leonardo Arias Fonseca ]
55+ * Removed the tests for the alternate paths of the autopilot helpers.
56+
57+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Tue, 04 Nov 2014 12:56:08 +0000
58+
59+unity8 (8.01+15.04.20141030-0ubuntu1) vivid; urgency=medium
60+
61+ [ Michael Terry ]
62+ * Provide 'passphrase' as a field of Components.Lockscreen
63+ * Fix a race between Qml loading and DBus registration that caused
64+ problems when jenkins tried to unlock the phone.
65+ * Set domain explicitly for the Dialogs component because the welcome
66+ wizard wants to import it. (LP: #1381731)
67+ * When greeter or lockscreen has focus, show active call panel. (LP:
68+ #1378872)
69+
70+ [ Ted Gould ]
71+ * Set the default OOM score for the dash (LP: #1379786)
72+
73+ [ Michał Sawicz ]
74+ * Revert lp:~unity-team/unity8/flickables-speed-workaround to avoid
75+ risk in RTM.
76+ * Updated behaviour for zoomable image, workaround for sourcesize (LP:
77+ #1333187)
78+
79+ [ Michael Frey ]
80+ * Added a check for Proximity to determine if we show the lock screen.
81+ (LP: #1378012)
82+
83+ [ Ying-Chun Liu ]
84+ * Add non-interactive code into GenericScopeView. (LP: #1384441)
85+
86+ [ Mirco Müller ]
87+ * Also use modal nature of snap-decision notifications when
88+ greeter/lockscreen is shown. This fixes LP: #1378827. (LP: #1378827)
89+
90+ [ Michael Zanetti ]
91+ * Make the launcher update on dconf changes (LP: #1376707)
92+ * exit spread on background tap (LP: #1368261)
93+ * Use an index instead of a scope id in DashCommunicator (LP:
94+ #1376044)
95+
96+ [ Andrea Cimitan ]
97+ * Updated behaviour for zoomable image, workaround for sourcesize (LP:
98+ #1333187)
99+
100+ [ Daniel d'Andrada ]
101+ * Make TouchGate synthesize QMouseEvents for mouse-based target items
102+ * Don't specify a distanceThreshold as it conflicts with
103+ hintDisplacment
104+
105+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Thu, 30 Oct 2014 21:43:42 +0000
106+
107+unity8 (8.00+15.04.20141030-0ubuntu1) vivid; urgency=low
108+
109+ [ josharenson ]
110+ * Fix lp:1370240 by making stages interactive when a snap decision is
111+ dismissed. (LP: #1370240)
112+
113+ [ Nick Dedekind ]
114+ * remove qml ownership confusion for caching unitymenumodels (LP:
115+ #1368856)
116+ * Implementation of expandable panel design (LP: #1368856)
117+
118+ [ Albert Astals ]
119+ * CardAttributes: Specify column and row since the gridlayout gets
120+ confused sometimes (LP: #1381092)
121+ * Reset VerticalJournal until the cardTool settles (LP: #1381255)
122+
123+ [ Mirco Müller ]
124+ * Added synchronous/confirmation notification support to unity8. (LP:
125+ #1232633)
126+
127+ [ Michael Zanetti ]
128+ * Fix lp:1370240 by making stages interactive when a snap decision is
129+ dismissed. (LP: #1370240)
130+ * Drop all visual indication of "pinning" (LP: #1381054)
131+
132+ [ Antti Kaijanmäki ]
133+ * Unlock all modems on boot. (LP: #1333121)
134+
135+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Thu, 30 Oct 2014 10:51:17 +0000
136+
137+unity8 (8.00+14.10.20141013.2-0ubuntu1) utopic; urgency=low
138+
139+ [ Michael Terry ]
140+ * Don't show initial lockscreen during the edge demo. The user just
141+ set up their phone with a password, it's pointless to ask them
142+ again. (LP: #1358283)
143+ * Distinguish between incoming calls and other dialer-app opens. (LP:
144+ #1378218) (LP: #1378218)
145+
146+ [ Andrea Cimitan ]
147+ * Fix flickable speed to be resolution independent, by subclassing
148+ components (LP: #1348557)
149+
150+ [ Michał Sawicz ]
151+ * Fix the ShellWithPin test and some functionality.
152+
153+ [ Albert Astals ]
154+ * Move Base.qml to DashCategoryBase
155+ * Fix first item positioning when m_clipItem->y() is not 0 (LP:
156+ #1251597)
157+ * Fix some small qml warnings
158+
159+ [ Daniel d'Andrada ]
160+ * Add touch ownership logic on top of qt input handling
161+
162+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Mon, 13 Oct 2014 15:43:03 +0000
163+
164+unity8 (8.00+14.10.20141009.4-0ubuntu1) utopic; urgency=low
165+
166+ [ Michał Sawicz ]
167+ * Rename datetime indicator in test
168+
169+ [ Albert Astals ]
170+ * Close overview temp scope on show dash (LP: #1373819)
171+ * Enable QT_STRICT_ITERATORS
172+ * Make Base not clickable, since we don't use it in anywhere clickable
173+ (we only use it for Category delegates in the LVWPH) (LP: #1300709)
174+ * Hide preview if it was visible when going to a scope (LP: #1374548)
175+ * Remove contentScale variable
176+
177+ [ Andrea Cimitan ]
178+ * Fix card implicitHeight when summary is declared, but its text is
179+ empty. Also fixes vertical journal height and clipping (LP:
180+ #1362160)
181+ * Redesign for pinned apps. Remove thindivider on top of ubuntu dash
182+ button (not needed anymore) (LP: #1377100)
183+
184+ [ Ying-Chun Liu ]
185+ * Fix run_on_device.sh to let it run again.
186+
187+ [ Nick Dedekind ]
188+ * Fixed indicator menu bindings to server toggle value broken by user
189+ interaction. (LP: #1336715)
190+ * Force rendering so we don't get stuck in "waitForRendering" loop in
191+ tests.
192+
193+ [ Daniel d'Andrada ]
194+ * PhoneStage: focus the new topmost app after the current one closes
195+ itself (LP: #1375267)
196+
197+ [ Michael Terry ]
198+ * Fix some security issues with the tablet greeter, which allowed the
199+ lockscreen to be bypassed. (LP: #1367715) (LP: #1367715)
200+
201+ [ Michael Zanetti ]
202+ * scale down errorText label if necessary (LP: #1378848)
203+
204+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Thu, 09 Oct 2014 14:05:54 +0000
205+
206+unity8 (8.00+14.10.20141008-0ubuntu1) utopic; urgency=low
207+
208+ [ Michael Zanetti ]
209+ * Dual SIM pin unlocking. Hook up the UI to the backend. (LP:
210+ #1267135)
211+
212+ [ Antti Kaijanmäki ]
213+ * Dual SIM pin unlocking. Hook up the UI to the backend. (LP:
214+ #1267135)
215+
216+ [ Ubuntu daily release ]
217+ * New rebuild forced
218+
219+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Wed, 08 Oct 2014 09:41:32 +0000
220+
221+unity8 (8.00+14.10.20141006-0ubuntu1) utopic; urgency=low
222+
223+ [ Andrea Cimitan ]
224+ * Tweak card header to match the spec
225+ * Add preview image slideshow (LP: #1351537)
226+
227+ [ Michał Sawicz ]
228+ * Cache more things in memory, so flicking scopes should be faster
229+ (LP: #1336724)
230+ * Tweak card header to match the spec
231+ * Save texture memory by limiting sourceSize (LP: #1338430)
232+
233+ [ Ying-Chun Liu ]
234+ * Add attributes to Preview. (LP: #1282460)
235+
236+ [ Albert Astals ]
237+ * Update pot
238+ * Cache more things in memory, so flicking scopes should be faster
239+ (LP: #1336724)
240+ * Save texture memory by limiting sourceSize (LP: #1338430)
241+ * Clip the settings list
242+ * Fix unlocking from the left again
243+ * Add wait_ makes tests more reliable
244+
245+ [ Michael Zanetti ]
246+ * fix fading out the launcher instead of sliding it out on left-edge
247+ minimizing an app.
248+ * Make the DashCommunicator async and more flexible to handle a
249+ lifecycle-suspended dash (LP: #1339883)
250+
251+ [ Michael Terry ]
252+ * Retry unlock-device script if it fails, as there is always a risk of
253+ a small race with boot-up. (LP: #1370644)
254+ * Add pull-to-refresh functionality to scopes. (LP: #1368336)
255+
256+ [ CI bot ]
257+ * Resync trunk
258+
259+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Mon, 06 Oct 2014 08:03:23 +0000
260+
261+unity8 (8.00+14.10.20140930.2-0ubuntu1) utopic; urgency=low
262+
263+ [ Alexandros Frantzis ]
264+ * Remove stale trusted socket before starting unity8 from upstart (LP:
265+ #1371597) (LP: #1371597)
266+
267+ [ CI bot ]
268+ * Resync trunk
269+
270+ [ Andrea Cimitan ]
271+ * Move activity indicator on top of keyboard (LP: #1354519)
272+
273+ [ Gerry Boland ]
274+ * Cleanup: Remove unused member and fix small syntax error in
275+ OrientationLock
276+
277+ [ josharenson ]
278+ * Fix lp:1367894 by correcting how the minute value is calculated in
279+ the panel. (LP: #1367894)
280+
281+ [ Nick Dedekind ]
282+ * Fixed DefaultIndicatorPage test. Fixed warnings from test.
283+
284+ [ Ying-Chun Liu ]
285+ * Remove maxLineCount in preview. (LP: 1328513) (LP: #1328513)
286+
287+ [ Michael Terry ]
288+ * Fix some code that accidentally landed in trunk before it got
289+ cleaned up. The current code just has some duplication to it that
290+ should be unified.
291+ * Implement latest visual designs for passphrase lockscreen.
292+ * Make it easier to use the Lockscreen component from the welcome
293+ wizard.
294+ * Limit how much memory we reserve for the greeter background image,
295+ allowing giant images to appear correctly.
296+
297+ [ Daniel d'Andrada ]
298+ * Add gdbTestComponentName build targets
299+
300+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Tue, 30 Sep 2014 16:57:28 +0000
301+
1302unity8 (8.00+14.10.20140926-0ubuntu1) utopic; urgency=low
2303
3304 [ CI bot ]
debian/control+5−3
@@ -25,7 +25,7 @@ Build-Depends: cmake,
2525 libpulse-dev,
2626 libqmenumodel-dev (>= 0.2.8),
2727 libqt5xmlpatterns5-dev,
28− libunity-api-dev (>= 7.91),
28+ libunity-api-dev (>= 7.93),
2929 libusermetricsoutput1-dev,
3030 libxcb1-dev,
3131 pkg-config,
@@ -86,7 +86,7 @@ Depends: gsettings-desktop-schemas,
8686 qmenumodel-qml (>= 0.2.8),
8787 qml-module-qtquick-xmllistmodel,
8888 qtdeclarative5-gsettings1.0,
89− qtdeclarative5-qtmir-plugin (>= 0.4.3),
89+ qtdeclarative5-qtmir-plugin (>= 0.4.4),
9090 qtdeclarative5-ubuntu-telephony0.1,
9191 unity-launcher-impl-4,
9292 unity8-common (= ${source:Version}),
@@ -97,7 +97,7 @@ Depends: gsettings-desktop-schemas,
9797Recommends: unity-scope-click,
9898 unity-scope-mediascanner2,
9999 unity-scope-scopes,
100−Breaks: indicator-network (<< 0.5.1),
100+Breaks: indicator-network (<< 0.5.1+14.10.20141014),
101101 ubuntu-touch-session (<< 0.107),
102102 unity8-greeter (<< 7.89),
103103Replaces: ubuntu-touch-session (<< 0.82~),
@@ -143,6 +143,7 @@ Depends: gir1.2-glib-2.0,
143143 python3-fixtures,
144144 python3-gi,
145145 ubuntu-ui-toolkit-autopilot,
146+ unity-scope-click,
146147 unity8 (= ${source:Version}),
147148 unity8-fake-env (= ${source:Version}),
148149 url-dispatcher-tools,
@@ -174,6 +175,7 @@ Depends: accountsservice-ubuntu-schemas (>= 0.0.3),
174175 libhardware2,
175176 unity-schemas (>= 7.3.1+14.10.20140915),
176177 pay-service,
178+ qml-module-ubuntu-connectivity,
177179 ${misc:Depends},
178180 ${shlibs:Depends},
179181Provides: unity-launcher-impl,
debian/unity8-private.install+3
@@ -1,3 +1,4 @@
1+usr/lib/*/libunity8-private.*
12usr/lib/*/unity8/qml/AccountsService
23usr/lib/*/unity8/qml/Dash
34usr/lib/*/unity8/qml/HudClient
@@ -5,8 +6,10 @@ usr/lib/*/unity8/qml/LightDM
56usr/lib/*/unity8/qml/Lights
67usr/lib/*/unity8/qml/Powerd
78usr/lib/*/unity8/qml/SessionBroadcast
9+usr/lib/*/unity8/qml/ScreenGrabber
810usr/lib/*/unity8/qml/Ubuntu
911usr/lib/*/unity8/qml/Unity
1012usr/lib/*/unity8/qml/Utils
13+usr/lib/*/unity8/libUbuntuGestures*
1114usr/share/accountsservice/interfaces
1215usr/share/dbus-1/interfaces
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+95
@@ -0,0 +1,95 @@
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+#include <QMouseEvent>
20+
21+QString touchPointStateToString(Qt::TouchPointState state)
22+{
23+ switch (state) {
24+ case Qt::TouchPointPressed:
25+ return QString("pressed");
26+ case Qt::TouchPointMoved:
27+ return QString("moved");
28+ case Qt::TouchPointStationary:
29+ return QString("stationary");
30+ case Qt::TouchPointReleased:
31+ return QString("released");
32+ default:
33+ return QString("INVALID_STATE");
34+ }
35+}
36+
37+QString touchEventToString(const QTouchEvent *ev)
38+{
39+ QString message;
40+
41+ switch (ev->type()) {
42+ case QEvent::TouchBegin:
43+ message.append("TouchBegin ");
44+ break;
45+ case QEvent::TouchUpdate:
46+ message.append("TouchUpdate ");
47+ break;
48+ case QEvent::TouchEnd:
49+ message.append("TouchEnd ");
50+ break;
51+ case QEvent::TouchCancel:
52+ message.append("TouchCancel ");
53+ break;
54+ default:
55+ message.append("INVALID_TOUCH_EVENT_TYPE ");
56+ }
57+
58+ foreach(const QTouchEvent::TouchPoint& touchPoint, ev->touchPoints()) {
59+ message.append(
60+ QString("(id:%1, state:%2, scenePos:(%3,%4)) ")
61+ .arg(touchPoint.id())
62+ .arg(touchPointStateToString(touchPoint.state()))
63+ .arg(touchPoint.scenePos().x())
64+ .arg(touchPoint.scenePos().y())
65+ );
66+ }
67+
68+ return message;
69+}
70+
71+QString mouseEventToString(const QMouseEvent *ev)
72+{
73+ QString message;
74+
75+ switch (ev->type()) {
76+ case QEvent::MouseButtonPress:
77+ message.append("MouseButtonPress ");
78+ break;
79+ case QEvent::MouseButtonRelease:
80+ message.append("MouseButtonRelease ");
81+ break;
82+ case QEvent::MouseButtonDblClick:
83+ message.append("MouseButtonDblClick ");
84+ break;
85+ case QEvent::MouseMove:
86+ message.append("MouseMove ");
87+ break;
88+ default:
89+ message.append("INVALID_MOUSE_EVENT_TYPE ");
90+ }
91+
92+ message.append(QString("pos(%1, %2)").arg(ev->x()).arg(ev->y()));
93+
94+ return message;
95+}
tests/mocks/Unity/Indicators/qml/fake_menu_page3.qml → libs/UbuntuGestures/DebugHelpers.hrenamed+12−16
@@ -1,5 +1,5 @@
11/*
2− * Copyright 2013 Canonical Ltd.
2+ * Copyright (C) 2014 Canonical, Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
@@ -14,22 +14,18 @@
1414 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1515 */
1616
17−import QtQuick 2.0
18−import Unity.Indicators 0.1 as Indicators
17+#ifndef UBUNTUGESTURES_DEBUG_HELPER_H
18+#define UBUNTUGESTURES_DEBUG_HELPER_H
1919
20−Indicators.FakeMenuPage {
21− id: menu_plugin3
20+#include <QString>
2221
23− Rectangle {
24− id: contents
25− color: "yellow"
22+#include "UbuntuGesturesGlobal.h"
2623
27− height: 150
28− width: 150
24+class QMouseEvent;
25+class QTouchEvent;
2926
30− anchors {
31− horizontalCenter: parent.horizontalCenter
32− verticalCenter: parent.verticalCenter
33− }
34− }
35−}
27+UBUNTUGESTURES_EXPORT QString touchPointStateToString(Qt::TouchPointState state);
28+UBUNTUGESTURES_EXPORT QString touchEventToString(const QTouchEvent *ev);
29+UBUNTUGESTURES_EXPORT QString mouseEventToString(const QMouseEvent *ev);
30+
31+#endif // UBUNTUGESTURES_DEBUG_HELPER_H
libs/UbuntuGestures/Pool.hnew file+132
@@ -0,0 +1,132 @@
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+ ItemType &getEmptySlot() {
78+ Q_ASSERT(m_lastUsedIndex < m_slots.size());
79+
80+ // Look for an in-between vacancy first
81+ for (int i = 0; i < m_lastUsedIndex; ++i) {
82+ ItemType &item = m_slots[i];
83+ if (!item.isValid()) {
84+ return item;
85+ }
86+ }
87+
88+ ++m_lastUsedIndex;
89+ if (m_lastUsedIndex >= m_slots.size()) {
90+ m_slots.resize(m_lastUsedIndex + 1);
91+ }
92+
93+ return m_slots[m_lastUsedIndex];
94+ }
95+
96+ void freeSlot(Iterator &iterator) {
97+ m_slots[iterator.index].reset();
98+ if (iterator.index == m_lastUsedIndex) {
99+ do {
100+ --m_lastUsedIndex;
101+ } while (m_lastUsedIndex >= 0 && !m_slots.at(m_lastUsedIndex).isValid());
102+ }
103+ }
104+
105+ // Iterates through all valid items (i.e. the occupied slots)
106+ // calling the given function, with the option of ending the loop early.
107+ //
108+ // bool Func(Iterator& item)
109+ //
110+ // Returning true means it wants to continue the "for" loop, false
111+ // terminates the loop.
112+ template<typename Func> void forEach(Func func) {
113+ Iterator it;
114+ for (it.index = 0; it.index <= m_lastUsedIndex; ++it.index) {
115+ it.item = &m_slots[it.index];
116+ if (!it.item->isValid())
117+ continue;
118+
119+ if (!func(it))
120+ break;
121+ }
122+ }
123+
124+ bool isEmpty() const { return m_lastUsedIndex == -1; }
125+
126+
127+private:
128+ QVector<ItemType> m_slots;
129+ int m_lastUsedIndex;
130+};
131+
132+#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
tests/mocks/Unity/Indicators/qml/fake_menu_page4.qml → libs/UbuntuGestures/TouchOwnershipEvent.cpprenamed+15−15
@@ -1,5 +1,5 @@
11/*
2− * Copyright 2013 Canonical Ltd.
2+ * Copyright (C) 2014 Canonical, Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
@@ -14,22 +14,22 @@
1414 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1515 */
1616
17−import QtQuick 2.0
18−import Unity.Indicators 0.1 as Indicators
17+#include "TouchOwnershipEvent.h"
1918
20−Indicators.FakeMenuPage {
21− id: menu_plugin4
19+QEvent::Type TouchOwnershipEvent::m_touchOwnershipType = (QEvent::Type)-1;
2220
23− Rectangle {
24− id: contents
25− color: "green"
26−
27− height: 150
28− width: 150
21+TouchOwnershipEvent::TouchOwnershipEvent(int touchId, bool gained)
22+ : QEvent(touchOwnershipEventType())
23+ , m_touchId(touchId)
24+ , m_gained(gained)
25+{
26+}
2927
30− anchors {
31− horizontalCenter: parent.horizontalCenter
32− verticalCenter: parent.verticalCenter
33− }
28+QEvent::Type TouchOwnershipEvent::touchOwnershipEventType()
29+{
30+ if (m_touchOwnershipType == (QEvent::Type)-1) {
31+ m_touchOwnershipType = (QEvent::Type)registerEventType();
3432 }
33+
34+ return m_touchOwnershipType;
3535}
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 @@
11/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2014 Canonical, Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
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.qmltypes+2
@@ -23,6 +23,8 @@ Module {
2323 }
2424 Property { name: "user"; type: "string" }
2525 Property { name: "demoEdges"; type: "bool" }
26+ Property { name: "enableLauncherWhileLocked"; type: "bool"; isReadonly: true }
27+ Property { name: "enableIndicatorsWhileLocked"; type: "bool"; isReadonly: true }
2628 Property { name: "backgroundFile"; type: "string"; isReadonly: true }
2729 Property { name: "statsWelcomeScreen"; type: "bool"; isReadonly: true }
2830 Property { name: "passwordDisplayHint"; type: "PasswordDisplayHint"; isReadonly: true }
plugins/CMakeLists.txt+1
@@ -18,6 +18,7 @@ add_subdirectory(Lights)
1818add_subdirectory(Dash)
1919add_subdirectory(Powerd)
2020add_subdirectory(SessionBroadcast)
21+add_subdirectory(ScreenGrabber)
2122add_subdirectory(Ubuntu)
2223add_subdirectory(Unity)
2324add_subdirectory(Utils)
plugins/Dash/CardAttributes.qml+3−1
@@ -41,6 +41,8 @@ GridLayout {
4141 if (column == grid.columns - 1 || index == repeater.count - 1) return Qt.AlignRight;
4242 if (column == 1) return Qt.AlignHCenter;
4343 }
44+ Layout.column: index % grid.columns
45+ Layout.row: index / grid.columns
4446 Layout.columnSpan: index == repeater.count - 1 && grid.columns == 3 && column == 1 ? 2 : 1
4547 Layout.maximumWidth: Math.max(icon.width, label.x + label.implicitWidth)
4648 Layout.fillWidth: true
@@ -59,7 +61,7 @@ GridLayout {
5961 text: "value" in modelData && modelData["value"] || "";
6062 elide: Text.ElideRight
6163 maximumLineCount: 1
62− font.weight: "style" in modelData && modelData["style"] == "highlighted" ? Font.DemiBold : Font.Light
64+ font.weight: "style" in modelData && modelData["style"] === "highlighted" ? Font.Bold : Font.Light
6365 fontSize: "small"
6466 font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale)
6567 color: grid.color
plugins/Dash/CardCreator.js+19−18
@@ -82,12 +82,13 @@ var kArtShapeHolderCode = 'Item { \n\
8282 height = Qt.binding(function() { return image.status !== Image.Ready ? 0 : image.height }); \n\
8383 } \n\
8484 } \n\
85− image: Image { \n\
85+ image: CroppedImageMinimumSourceSize { \n\
8686 objectName: "artImage"; \n\
87− source: cardData && cardData["art"] || ""; \n\
87+ property bool doLoadSource: !NetworkingStatus.limitedBandwith; \n\
88+ source: { if (root.visible) doLoadSource = true; return doLoadSource && cardData && cardData["art"] || ""; } \n\
8889 cache: true; \n\
8990 asynchronous: root.asynchronous; \n\
90− fillMode: Image.PreserveAspectCrop; \n\
91+ visible: false; \n\
9192 width: %2; \n\
9293 height: %3; \n\
9394 } \n\
@@ -190,16 +191,14 @@ var kMascotShapeLoaderCode = 'Loader { \n\
190191
191192// %1 is used as anchors of mascotImage
192193// %2 is used as visible of mascotImage
193−var kMascotImageCode = 'Image { \n\
194+var kMascotImageCode = 'CroppedImageMinimumSourceSize { \n\
194195 id: mascotImage; \n\
195196 objectName: "mascotImage"; \n\
196197 anchors { %1 } \n\
197− readonly property int maxSize: Math.max(width, height) * 4; \n\
198− source: cardData && cardData["mascot"] || ""; \n\
198+ property bool doLoadSource: !NetworkingStatus.limitedBandwith; \n\
199+ source: { if (root.visible) doLoadSource = true; return doLoadSource && cardData && cardData["mascot"] || ""; } \n\
199200 width: units.gu(6); \n\
200201 height: units.gu(5.625); \n\
201− sourceSize { width: maxSize; height: maxSize } \n\
202− fillMode: Image.PreserveAspectCrop; \n\
203202 horizontalAlignment: Image.AlignHCenter; \n\
204203 verticalAlignment: Image.AlignVCenter; \n\
205204 visible: %2; \n\
@@ -220,13 +219,13 @@ var kTitleLabelCode = 'Label { \n\
220219 color: %2; \n\
221220 visible: showHeader %3; \n\
222221 text: root.title; \n\
223− font.weight: components && components["subtitle"] ? Font.DemiBold : Font.Normal; \n\
224− horizontalAlignment: root.headerAlignment; \n\
222+ font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal; \n\
223+ horizontalAlignment: root.titleAlignment; \n\
225224 }\n';
226225
227226// %1 is used as extra anchors of emblemIcon
228227// %2 is used as color of emblemIcon
229−var kEmblemIconCode = 'Icon { \n\
228+var kEmblemIconCode = 'StatusIcon { \n\
230229 id: emblemIcon; \n\
231230 objectName: "emblemIcon"; \n\
232231 anchors { \n\
@@ -236,7 +235,6 @@ var kEmblemIconCode = 'Icon { \n\
236235 } \n\
237236 source: cardData && cardData["emblem"] || ""; \n\
238237 color: %2; \n\
239− width: height; \n\
240238 height: source != "" ? titleLabel.font.pixelSize : 0; \n\
241239 }\n';
242240
@@ -258,13 +256,12 @@ var kSubtitleLabelCode = 'Label { \n\
258256 anchors { %1 } \n\
259257 anchors.topMargin: units.dp(2); \n\
260258 elide: Text.ElideRight; \n\
261− fontSize: "small"; \n\
259+ fontSize: "x-small"; \n\
262260 font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale); \n\
263261 color: %2; \n\
264262 visible: titleLabel.visible && titleLabel.text; \n\
265263 text: cardData && cardData["subtitle"] || ""; \n\
266264 font.weight: Font.Light; \n\
267− horizontalAlignment: root.headerAlignment; \n\
268265 }\n';
269266
270267// %1 is used as anchors of attributesRow
@@ -310,13 +307,15 @@ function cardString(template, components) {
310307 property var artShapeBorderSource: undefined; \n\
311308 property real fontScale: 1.0; \n\
312309 property var scopeStyle: null; \n\
313− property int headerAlignment: Text.AlignLeft; \n\
310+ property int titleAlignment: Text.AlignLeft; \n\
314311 property int fixedHeaderHeight: -1; \n\
315312 property size fixedArtShapeSize: Qt.size(-1, -1); \n\
316313 readonly property string title: cardData && cardData["title"] || ""; \n\
317314 property bool asynchronous: true; \n\
318315 property bool showHeader: true; \n\
319− implicitWidth: childrenRect.width; \n';
316+ implicitWidth: childrenRect.width; \n\
317+ enabled: root.template == null ? true : (root.template["non-interactive"] !== undefined ? !root.template["non-interactive"] : true); \n\
318+ \n';
320319
321320 var hasArt = components["art"] && components["art"]["field"] || false;
322321 var hasSummary = components["summary"] || false;
@@ -436,7 +435,7 @@ function cardString(template, components) {
436435 mascotShapeCode = kMascotShapeLoaderCode.arg(mascotAnchors);
437436 }
438437
439− var mascotImageVisible = useMascotShape ? 'false' : 'showHeader';
438+ var mascotImageVisible = useMascotShape ? 'false' : 'showHeader && resized';
440439 mascotCode = kMascotImageCode.arg(mascotAnchors).arg(mascotImageVisible);
441440 }
442441
@@ -627,7 +626,7 @@ function cardString(template, components) {
627626
628627 var implicitHeight = 'implicitHeight: ';
629628 if (hasSummary) {
630− implicitHeight += 'summary.y + summary.height + (summary.text ? units.gu(1) : 0);\n';
629+ implicitHeight += 'summary.y + summary.height + units.gu(1);\n';
631630 } else if (hasHeaderRow) {
632631 implicitHeight += 'row.y + row.height + units.gu(1);\n';
633632 } else if (hasMascot) {
@@ -655,6 +654,8 @@ function cardString(template, components) {
655654function createCardComponent(parent, template, components) {
656655 var imports = 'import QtQuick 2.2; \n\
657656 import Ubuntu.Components 1.1; \n\
657+ import Ubuntu.Settings.Components 0.1; \n\
658+ import Ubuntu.Connectivity 1.0; \n\
658659 import Dash 0.1;\n\
659660 import Utils 0.1;\n';
660661 var card = cardString(template, components);
tests/mocks/Unity/Indicators/FakeMenuPage.qml → plugins/Dash/CroppedImageMinimumSourceSize.qmlrenamed+19−8
@@ -1,5 +1,5 @@
11/*
2− * Copyright 2013 Canonical Ltd.
2+ * Copyright (C) 2014 Canonical, Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
@@ -14,14 +14,25 @@
1414 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1515 */
1616
17−import QtQuick 2.0
17+import QtQuick 2.3
1818
19−Flickable {
20− objectName: "fakeMenuPlugin"
21− // Make it compatible with the PluginItem interface
22− function reset() {
23− if (shell != undefined && shell.indicator_status != undefined) {
24− shell.indicator_status[objectName].reset++;
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;
2536 }
2637 }
2738}
plugins/Dash/Dash.qmltypes+3
@@ -40,9 +40,12 @@ Module {
4040 Property { name: "forceNoClip"; type: "bool" }
4141 Property { name: "stickyHeaderHeight"; type: "int"; isReadonly: true }
4242 Property { name: "headerItemShownHeight"; type: "double"; isReadonly: true }
43+ Property { name: "cacheBuffer"; type: "double" }
4344 Signal { name: "headerChanged" }
4445 Method { name: "positionAtBeginning" }
4546 Method { name: "showHeader" }
47+ Method { name: "firstCreatedIndex"; type: "int" }
48+ Method { name: "createdItemCount"; type: "int" }
4649 Method {
4750 name: "item"
4851 type: "QQuickItem*"
plugins/Dash/listviewwithpageheader.cpp+19−8
@@ -104,8 +104,6 @@
104104#pragma GCC diagnostic pop
105105// #include <private/qquickrectangle_p.h>
106106
107−static const qreal bufferRatio = 0.5;
108−
109107qreal ListViewWithPageHeader::ListItem::height() const
110108{
111109 return m_item->height() + (m_sectionItem ? m_sectionItem->height() : 0);
@@ -158,6 +156,7 @@ ListViewWithPageHeader::ListViewWithPageHeader()
158156 , m_forceNoClip(false)
159157 , m_inLayout(false)
160158 , m_inContentHeightKeepHeaderShown(false)
159+ , m_cacheBuffer(0)
161160{
162161 m_clipItem = new QQuickItem(contentItem());
163162// m_clipItem = new QQuickRectangle(contentItem());
@@ -335,6 +334,20 @@ qreal ListViewWithPageHeader::headerItemShownHeight() const
335334 return m_headerItemShownHeight;
336335}
337336
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+
338351void ListViewWithPageHeader::positionAtBeginning()
339352{
340353 if (m_delegateModel->count() <= 0)
@@ -356,8 +369,7 @@ void ListViewWithPageHeader::positionAtBeginning()
356369 // Create the subsequent items
357370 int modelIndex = 1;
358371 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;
361373 while (modelIndex < m_delegateModel->count() && pos <= bufferTo) {
362374 if (!(item = createItem(modelIndex, false)))
363375 break;
@@ -603,11 +615,10 @@ void ListViewWithPageHeader::refill()
603615 return;
604616 }
605617
606− const qreal buffer = height() * bufferRatio;
607618 const qreal from = contentY();
608619 const qreal to = from + height();
609− const qreal bufferFrom = from - buffer;
610− const qreal bufferTo = to + buffer;
620+ const qreal bufferFrom = from - m_cacheBuffer;
621+ const qreal bufferTo = to + m_cacheBuffer;
611622
612623 bool added = addVisibleItems(from, to, false);
613624 bool removed = removeNonVisibleItems(bufferFrom, bufferTo);
@@ -840,7 +851,7 @@ ListViewWithPageHeader::ListItem *ListViewWithPageHeader::createItem(int modelIn
840851 if (nextItem) {
841852 listItem->setY(nextItem->y() - listItem->height());
842853 } else if (modelIndex == 0) {
843− listItem->setY(m_headerItem ? m_headerItem->height() : 0);
854+ listItem->setY(-m_clipItem->y() + (m_headerItem ? m_headerItem->height() : 0));
844855 } else if (!m_visibleItems.isEmpty()) {
845856 lostItem = true;
846857 }
plugins/Dash/listviewwithpageheader.h+6
@@ -54,6 +54,7 @@ class ListViewWithPageHeader : public QQuickFlickable, public QQuickItemChangeLi
5454 Q_PROPERTY(bool forceNoClip READ forceNoClip WRITE setForceNoClip NOTIFY forceNoClipChanged)
5555 Q_PROPERTY(int stickyHeaderHeight READ stickyHeaderHeight NOTIFY stickyHeaderHeightChanged)
5656 Q_PROPERTY(qreal headerItemShownHeight READ headerItemShownHeight NOTIFY headerItemShownHeightChanged)
57+ Q_PROPERTY(qreal cacheBuffer READ cacheBuffer WRITE setCacheBuffer NOTIFY cacheBufferChanged)
5758
5859 friend class ListViewWithPageHeaderTest;
5960 friend class ListViewWithPageHeaderTestSection;
@@ -84,6 +85,9 @@ public:
8485 int stickyHeaderHeight() const;
8586 qreal headerItemShownHeight() const;
8687
88+ qreal cacheBuffer() const;
89+ void setCacheBuffer(qreal cacheBuffer);
90+
8791 Q_INVOKABLE void positionAtBeginning();
8892 Q_INVOKABLE void showHeader();
8993 Q_INVOKABLE int firstCreatedIndex() const;
@@ -105,6 +109,7 @@ Q_SIGNALS:
105109 void forceNoClipChanged();
106110 void stickyHeaderHeightChanged();
107111 void headerItemShownHeightChanged();
112+ void cacheBufferChanged();
108113
109114protected:
110115 void componentComplete() override;
@@ -199,6 +204,7 @@ private:
199204 bool m_forceNoClip;
200205 bool m_inLayout;
201206 bool m_inContentHeightKeepHeaderShown;
207+ qreal m_cacheBuffer;
202208
203209 // Qt 5.0 doesn't like releasing the items just after itemCreated
204210 // so we delay the releasing until the next updatePolish
plugins/Dash/qmldir+2−1
@@ -3,4 +3,5 @@ plugin Dash-qml
33typeinfo Dash.qmltypes
44singleton CardCreatorCache 0.1 CardCreatorCache.qml
55ScopeStyle 0.1 ScopeStyle.qml
6−CardAttributes 0.1 CardAttributes.qml
6+CardAttributes 0.1 CardAttributes.qml
7+CroppedImageMinimumSourceSize 0.1 CroppedImageMinimumSourceSize.qml
plugins/LightDM/CMakeLists.txt+2
@@ -10,6 +10,7 @@ include_directories(
1010 ${CMAKE_SOURCE_DIR}/plugins/Utils
1111 ${CMAKE_SOURCE_DIR}/tests/mocks/LightDM
1212 #${LIBLIGHTDM_INCLUDE_DIRS}
13+ ${libunity8-private_SOURCE_DIR}
1314 ${LIBUSERMETRICSOUTPUT_INCLUDE_DIRS}
1415)
1516
@@ -28,6 +29,7 @@ add_library(LightDM-qml MODULE
2829
2930target_link_libraries(LightDM-qml
3031 MockLightDM-demo
32+ unity8-private
3133# TODO: Once we split out a separate greeter process, uncomment these lines
3234# ${LIBLIGHTDM_LDFLAGS}
3335 ${LIBUSERMETRICSOUTPUT_LDFLAGS}
plugins/LightDM/DBusGreeter.cpp+3−24
@@ -20,11 +20,9 @@
2020#include <QDBusMessage>
2121#include <QStringList>
2222
23−DBusGreeter::DBusGreeter(Greeter *greeter, const QDBusConnection &connection, const QString &path)
24− : QObject(greeter),
25− m_greeter(greeter),
26− m_connection(connection),
27− m_path(path)
23+DBusGreeter::DBusGreeter(Greeter *greeter, const QString &path)
24+ : UnityDBusObject(path, "com.canonical.UnityGreeter", true, greeter),
25+ m_greeter(greeter)
2826{
2927 connect(m_greeter, SIGNAL(isActiveChanged()), this, SLOT(isActiveChangedHandler()));
3028}
@@ -49,22 +47,3 @@ void DBusGreeter::isActiveChangedHandler()
4947 notifyPropertyChanged("IsActive", isActive());
5048 Q_EMIT isActiveChanged();
5149}
52−
53−// Manually emit a PropertiesChanged signal over DBus, because QtDBus
54−// doesn't do it for us on Q_PROPERTIES, oddly enough.
55−void DBusGreeter::notifyPropertyChanged(const QString& propertyName, const QVariant &value)
56−{
57− QDBusMessage message;
58− QVariantMap changedProps;
59−
60− changedProps.insert(propertyName, value);
61−
62− message = QDBusMessage::createSignal(m_path,
63− "org.freedesktop.DBus.Properties",
64− "PropertiesChanged");
65− message << "com.canonical.UnityGreeter";
66− message << changedProps;
67− message << QStringList();
68−
69− m_connection.send(message);
70−}
plugins/LightDM/DBusGreeter.h+3−7
@@ -17,16 +17,15 @@
1717#ifndef UNITY_DBUSGREETER_H
1818#define UNITY_DBUSGREETER_H
1919
20+#include "unitydbusobject.h"
2021#include <QDBusConnection>
21−#include <QObject>
2222
2323class Greeter;
24−class QDBusInterface;
2524
2625/** This is an internal class used to talk with the indicators.
2726 */
2827
29−class DBusGreeter : public QObject
28+class DBusGreeter : public UnityDBusObject
3029{
3130 Q_OBJECT
3231 Q_CLASSINFO("D-Bus Interface", "com.canonical.UnityGreeter")
@@ -34,7 +33,7 @@ class DBusGreeter : public QObject
3433 Q_PROPERTY(bool IsActive READ isActive NOTIFY isActiveChanged) // since 14.10
3534
3635public:
37− explicit DBusGreeter(Greeter *greeter, const QDBusConnection &connection, const QString &path);
36+ explicit DBusGreeter(Greeter *greeter, const QString &path);
3837
3938 bool isActive() const;
4039 Q_SCRIPTABLE void ShowGreeter(); // temporary, until we split the greeter again
@@ -45,12 +44,9 @@ Q_SIGNALS:
4544
4645private Q_SLOTS:
4746 void isActiveChangedHandler();
48− void notifyPropertyChanged(const QString &propertyName, const QVariant &value);
4947
5048private:
5149 Greeter *m_greeter;
52− QDBusConnection m_connection;
53− QString m_path;
5450};
5551
5652#endif
plugins/LightDM/DBusGreeterList.cpp+3−24
@@ -20,11 +20,9 @@
2020#include <QDBusMessage>
2121#include <QStringList>
2222
23−DBusGreeterList::DBusGreeterList(Greeter *greeter, const QDBusConnection &connection, const QString &path)
24− : QObject(greeter),
25− m_greeter(greeter),
26− m_connection(connection),
27− m_path(path)
23+DBusGreeterList::DBusGreeterList(Greeter *greeter, const QString &path)
24+ : UnityDBusObject(path, "com.canonical.UnityGreeter", true, greeter),
25+ m_greeter(greeter)
2826{
2927 connect(m_greeter, SIGNAL(authenticationUserChanged(const QString &)), this, SLOT(authenticationUserChangedHandler(const QString &)));
3028 connect(m_greeter, SIGNAL(promptlessChanged()), this, SLOT(promptlessChangedHandler()));
@@ -56,22 +54,3 @@ void DBusGreeterList::promptlessChangedHandler()
5654 notifyPropertyChanged("EntryIsLocked", entryIsLocked());
5755 Q_EMIT entryIsLockedChanged();
5856}
59−
60−// Manually emit a PropertiesChanged signal over DBus, because QtDBus
61−// doesn't do it for us on Q_PROPERTIES, oddly enough.
62−void DBusGreeterList::notifyPropertyChanged(const QString& propertyName, const QVariant &value)
63−{
64− QDBusMessage message;
65− QVariantMap changedProps;
66−
67− changedProps.insert(propertyName, value);
68−
69− message = QDBusMessage::createSignal(m_path,
70− "org.freedesktop.DBus.Properties",
71− "PropertiesChanged");
72− message << "com.canonical.UnityGreeter.List";
73− message << changedProps;
74− message << QStringList();
75−
76− m_connection.send(message);
77−}
plugins/LightDM/DBusGreeterList.h+3−7
@@ -17,16 +17,15 @@
1717#ifndef UNITY_DBUSGREETERLIST_H
1818#define UNITY_DBUSGREETERLIST_H
1919
20+#include "unitydbusobject.h"
2021#include <QDBusConnection>
21−#include <QObject>
2222
2323class Greeter;
24−class QDBusInterface;
2524
2625/** This is an internal class used to talk with the indicators.
2726 */
2827
29−class DBusGreeterList : public QObject
28+class DBusGreeterList : public UnityDBusObject
3029{
3130 Q_OBJECT
3231 Q_CLASSINFO("D-Bus Interface", "com.canonical.UnityGreeter.List")
@@ -35,7 +34,7 @@ class DBusGreeterList : public QObject
3534 Q_PROPERTY(bool EntryIsLocked READ entryIsLocked NOTIFY entryIsLockedChanged) // since 14.04
3635
3736public:
38− explicit DBusGreeterList(Greeter *greeter, const QDBusConnection &connection, const QString &path);
37+ explicit DBusGreeterList(Greeter *greeter, const QString &path);
3938
4039 Q_SCRIPTABLE void SetActiveEntry(const QString &entry); // since 13.04
4140 Q_SCRIPTABLE QString GetActiveEntry() const; // since 13.10
@@ -50,12 +49,9 @@ Q_SIGNALS:
5049private Q_SLOTS:
5150 void authenticationUserChangedHandler(const QString &user);
5251 void promptlessChangedHandler();
53− void notifyPropertyChanged(const QString &propertyName, const QVariant &value);
5452
5553private:
5654 Greeter *m_greeter;
57− QDBusConnection m_connection;
58− QString m_path;
5955};
6056
6157#endif
plugins/LightDM/LightDM.qmltypes+1
@@ -37,6 +37,7 @@ Module {
3737 Signal { name: "isActiveChanged" }
3838 Signal { name: "isAuthenticatedChanged" }
3939 Signal { name: "showGreeter" }
40+ Signal { name: "hideGreeter" }
4041 Signal {
4142 name: "requestAuthenticationUser"
4243 Parameter { name: "user"; type: "string" }
plugins/LightDM/plugin.cpp+2−9
@@ -30,21 +30,14 @@
3030#include <QDBusConnection>
3131#include <QtQml/qqml.h>
3232
33−static const char* GREETER_LIST_DBUS_PATH = "/list";
34−static const char* GREETER_DBUS_SERVICE = "com.canonical.UnityGreeter";
35−
3633static QObject *greeter_provider(QQmlEngine *engine, QJSEngine *scriptEngine)
3734{
3835 Q_UNUSED(engine)
3936 Q_UNUSED(scriptEngine)
4037
4138 Greeter *greeter = new Greeter();
42− QDBusConnection connection = QDBusConnection::sessionBus();
43− DBusGreeter *root = new DBusGreeter(greeter, connection, "/");
44− connection.registerObject("/", root, QDBusConnection::ExportScriptableContents);
45− DBusGreeterList *list = new DBusGreeterList(greeter, connection, GREETER_LIST_DBUS_PATH);
46− connection.registerObject(GREETER_LIST_DBUS_PATH, list, QDBusConnection::ExportScriptableContents);
47− connection.registerService(GREETER_DBUS_SERVICE);
39+ new DBusGreeter(greeter, "/");
40+ new DBusGreeterList(greeter, "/list");
4841
4942 return greeter;
5043}
plugins/ScreenGrabber/CMakeLists.txtnew file+13
@@ -0,0 +1,13 @@
1+include_directories(
2+ ${CMAKE_CURRENT_BINARY_DIR}
3+)
4+
5+set(SCREENGRABBERSOURCES
6+ screengrabber.cpp
7+ plugin.cpp
8+)
9+
10+add_library(ScreenGrabber-qml MODULE ${SCREENGRABBERSOURCES})
11+qt5_use_modules(ScreenGrabber-qml Qml Gui Quick Concurrent)
12+
13+add_unity8_plugin(ScreenGrabber 0.1 ScreenGrabber TARGETS ScreenGrabber-qml)
plugins/ScreenGrabber/ScreenGrabber.qmltypesnew file+17
@@ -0,0 +1,17 @@
1+import QtQuick.tooling 1.1
2+
3+// This file describes the plugin-supplied types contained in the library.
4+// It is used for QML tooling purposes only.
5+//
6+// This file was auto-generated by:
7+// 'qmlplugindump -nonrelocatable ScreenGrabber 0.1 plugins'
8+
9+Module {
10+ Component {
11+ name: "ScreenGrabber"
12+ prototype: "QObject"
13+ exports: ["ScreenGrabber/ScreenGrabber 0.1"]
14+ exportMetaObjectRevisions: [0]
15+ Method { name: "captureAndSave" }
16+ }
17+}
qml/Components/ListItems/VerticalThinDivider.qml → plugins/ScreenGrabber/plugin.cpprenamed+11−9
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2012 Canonical, Ltd.
2+ * Copyright (C) 2014 Canonical, Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
@@ -12,15 +12,17 @@
1212 *
1313 * You should have received a copy of the GNU General Public License
1414 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ *
16+ * Authors: Alberto Aguirre <alberto.aguirre@canonical.com>
1517 */
1618
17−import QtQuick 2.0
19+#include "plugin.h"
20+#include "screengrabber.h"
21+
22+#include <QtQml/qqml.h>
1823
19−Image {
20− anchors {
21− top: (parent) ? parent.top : null
22− bottom: (parent) ? parent.bottom : null
23− }
24− width: (visible) ? units.dp(2) : 0
25− source: "graphics/ListItemDividerVertical.png"
24+void ScreenGrabberPlugin::registerTypes(const char *uri)
25+{
26+ Q_ASSERT(uri == QLatin1String("ScreenGrabber"));
27+ qmlRegisterType<ScreenGrabber>(uri, 0, 1, "ScreenGrabber");
2628}
tests/mocks/Unity/Indicators/qml/fake_menu_page1.qml → plugins/ScreenGrabber/plugin.hrenamed+14−16
@@ -1,5 +1,5 @@
11/*
2− * Copyright 2013 Canonical Ltd.
2+ * Copyright (C) 2014 Canonical, Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
@@ -12,24 +12,22 @@
1212 *
1313 * You should have received a copy of the GNU General Public License
1414 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ *
16+ * Authors: Alberto Aguirre <alberto.aguirre@canonical.com>
1517 */
1618
17−import QtQuick 2.0
18−import Unity.Indicators 0.1 as Indicators
19+#ifndef SCREENGRABBER_PLUGIN_H
20+#define SCREENGRABBER_PLUGIN_H
1921
20−Indicators.FakeMenuPage {
21− id: menu_plugin1
22+#include <QtQml/QQmlExtensionPlugin>
2223
23− Rectangle {
24− id: contents
25− color: "red"
24+class ScreenGrabberPlugin : public QQmlExtensionPlugin
25+{
26+ Q_OBJECT
27+ Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
2628
27− height: 150
28− width: 150
29+public:
30+ void registerTypes(const char *uri);
31+};
2932
30− anchors {
31− horizontalCenter: parent.horizontalCenter
32− verticalCenter: parent.verticalCenter
33− }
34− }
35−}
33+#endif // SCREENGRABBER_PLUGIN_H
plugins/ScreenGrabber/qmldirnew file+3
@@ -0,0 +1,3 @@
1+module ScreenGrabber
2+plugin ScreenGrabber-qml
3+typeinfo ScreenGrabber.qmltypes
plugins/ScreenGrabber/screengrabber.cppnew file+94
@@ -0,0 +1,94 @@
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+ * Authors: Alberto Aguirre <alberto.aguirre@canonical.com>
17+ */
18+
19+#include "screengrabber.h"
20+
21+#include <QDir>
22+#include <QDateTime>
23+#include <QStandardPaths>
24+#include <QtGui/QImage>
25+#include <QtGui/QGuiApplication>
26+#include <QtQuick/QQuickWindow>
27+#include <QtConcurrent/QtConcurrentRun>
28+
29+#include <QDebug>
30+
31+void saveScreenshot(QImage screenshot, QString filename, QString format, int quality)
32+{
33+ if (!screenshot.save(filename, format.toLatin1().data(), quality))
34+ qWarning() << "ScreenShotter: failed to save snapshot!";
35+}
36+
37+ScreenGrabber::ScreenGrabber(QObject *parent)
38+ : QObject(parent),
39+ screenshotQuality(0)
40+{
41+ QDir screenshotsDir(QStandardPaths::displayName(QStandardPaths::PicturesLocation));
42+ screenshotsDir.mkdir("Screenshots");
43+ screenshotsDir.cd("Screenshots");
44+ if (screenshotsDir.exists())
45+ {
46+ fileNamePrefix = screenshotsDir.absolutePath();
47+ fileNamePrefix.append("/screenshot");
48+ }
49+ else
50+ {
51+ qWarning() << "ScreenShotter: failed to create directory at: " << screenshotsDir.absolutePath();
52+ }
53+}
54+
55+void ScreenGrabber::captureAndSave()
56+{
57+ if (fileNamePrefix.isEmpty())
58+ {
59+ qWarning() << "ScreenShotter: no directory to save screenshot";
60+ return;
61+ }
62+
63+ const QWindowList windows = QGuiApplication::topLevelWindows();
64+ if (windows.empty())
65+ {
66+ qWarning() << "ScreenShotter: no top level windows found!";
67+ return;
68+ }
69+
70+ QQuickWindow *main_window = qobject_cast<QQuickWindow *>(windows[0]);
71+ if (!main_window)
72+ {
73+ qWarning() << "ScreenShotter: can only take screenshots of QQuickWindows";
74+ return;
75+ }
76+
77+ QImage screenshot = main_window->grabWindow();
78+ QtConcurrent::run(saveScreenshot, screenshot, makeFileName(), getFormat(), screenshotQuality);
79+}
80+
81+QString ScreenGrabber::makeFileName()
82+{
83+ QString fileName(fileNamePrefix);
84+ fileName.append(QDateTime::currentDateTime().toString("yyyymmdd_hhmmsszzz"));
85+ fileName.append(".");
86+ fileName.append(getFormat());
87+ return fileName;
88+}
89+
90+QString ScreenGrabber::getFormat()
91+{
92+ //TODO: This should be configurable (perhaps through gsettings?)
93+ return "png";
94+}
tests/mocks/Unity/Indicators/qml/fake_menu_page2.qml → plugins/ScreenGrabber/screengrabber.hrenamed+23−16
@@ -1,5 +1,5 @@
11/*
2− * Copyright 2013 Canonical Ltd.
2+ * Copyright (C) 2014 Canonical, Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
@@ -12,24 +12,31 @@
1212 *
1313 * You should have received a copy of the GNU General Public License
1414 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ *
16+ * Authors: Alberto Aguirre <alberto.aguirre@canonical.com>
1517 */
1618
17−import QtQuick 2.0
18−import Unity.Indicators 0.1 as Indicators
19+#ifndef SNAPSHOTTER_H
20+#define SNAPSHOTTER_H
21+
22+#include <QObject>
23+#include <QString>
24+
25+class ScreenGrabber: public QObject
26+{
27+ Q_OBJECT
1928
20−Indicators.FakeMenuPage {
21− id: menu_plugin2
29+public:
30+ explicit ScreenGrabber(QObject *parent = 0);
2231
23− Rectangle {
24− id: contents
25− color: "blue"
32+public Q_SLOTS:
33+ void captureAndSave();
2634
27− height: 150
28− width: 150
35+private:
36+ QString makeFileName();
37+ QString getFormat();
38+ QString fileNamePrefix;
39+ int screenshotQuality;
40+};
2941
30− anchors {
31− horizontalCenter: parent.horizontalCenter
32− verticalCenter: parent.verticalCenter
33− }
34− }
35−}
42+#endif
plugins/Ubuntu/Gestures/AxisVelocityCalculator.h+2−2
@@ -21,7 +21,7 @@
2121#ifndef VELOCITY_CALCULATOR_H
2222#define VELOCITY_CALCULATOR_H
2323
24−#include "UbuntuGesturesGlobal.h"
24+#include "UbuntuGesturesQmlGlobal.h"
2525#include <stdint.h>
2626#include <QtCore/QObject>
2727#include "TimeSource.h"
@@ -49,7 +49,7 @@
4949 }
5050 }
5151 */
52−class UBUNTUGESTURES_EXPORT AxisVelocityCalculator : public QObject
52+class UBUNTUGESTURESQML_EXPORT AxisVelocityCalculator : public QObject
5353{
5454 Q_OBJECT
5555
plugins/Ubuntu/Gestures/CMakeLists.txt+25−5
@@ -1,19 +1,39 @@
1−set(UbuntuGestureQml_SOURCES
1+# in order to include Qt's private headers
2+remove_definitions(-DQT_NO_KEYWORDS)
3+
4+set(UbuntuGesturesQml_SOURCES
25 plugin.cpp
36 AxisVelocityCalculator.cpp
47 Direction.cpp
58 DirectionalDragArea.cpp
69 PressedOutsideNotifier.cpp
710 TimeSource.cpp
11+ TouchDispatcher.cpp
12+ TouchGate.cpp
813)
914
10−add_definitions(-DUBUNTUGESTURES_LIBRARY)
15+add_definitions(-DUBUNTUGESTURESQML_LIBRARY)
1116
12−add_library(UbuntuGestureQml MODULE ${UbuntuGestureQml_SOURCES})
17+add_library(UbuntuGesturesQml MODULE ${UbuntuGesturesQml_SOURCES})
18+target_link_libraries(UbuntuGesturesQml UbuntuGestures)
1319
14−qt5_use_modules(UbuntuGestureQml Core Quick)
20+qt5_use_modules(UbuntuGesturesQml Core Quick)
1521
1622# So that Foo.cpp can #include "Foo.moc"
1723include_directories(${CMAKE_CURRENT_BINARY_DIR})
1824
19−add_unity8_plugin(Ubuntu.Gestures 0.1 Ubuntu/Gestures TARGETS UbuntuGestureQml)
25+include_directories(${CMAKE_SOURCE_DIR}/libs/UbuntuGestures)
26+
27+# There's no cmake var for v8 include path :-/ so create one
28+LIST(GET Qt5Core_INCLUDE_DIRS 0 QtCoreDir0)
29+SET(Qt5V8_PRIVATE_INCLUDE_DIR ${QtCoreDir0}/QtV8/${Qt5Core_VERSION_STRING}/QtV8)
30+
31+# DANGER! DANGER! Using Qt's private API!
32+include_directories(
33+ ${Qt5Qml_PRIVATE_INCLUDE_DIRS}
34+ ${Qt5Quick_INCLUDE_DIRS}
35+ ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
36+ ${Qt5V8_PRIVATE_INCLUDE_DIR}
37+)
38+
39+add_unity8_plugin(Ubuntu.Gestures 0.1 Ubuntu/Gestures TARGETS UbuntuGesturesQml)
plugins/Ubuntu/Gestures/Direction.h+2−2
@@ -17,14 +17,14 @@
1717#ifndef DIRECTION_H
1818#define DIRECTION_H
1919
20−#include "UbuntuGesturesGlobal.h"
20+#include "UbuntuGesturesQmlGlobal.h"
2121#include <QObject>
2222
2323/*
2424 A Direction enum wrapper so that we can do things like "direction: Direction.Righwards"
2525 from QML.
2626 */
27−class UBUNTUGESTURES_EXPORT Direction : public QObject {
27+class UBUNTUGESTURESQML_EXPORT Direction : public QObject {
2828 Q_OBJECT
2929 Q_ENUMS(Type)
3030
plugins/Ubuntu/Gestures/DirectionalDragArea.cpp+319−191
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013-2014 Canonical, Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
@@ -14,64 +14,32 @@
1414 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1515 */
1616
17+#define ACTIVETOUCHESINFO_DEBUG 0
18+#define DIRECTIONALDRAGAREA_DEBUG 0
19+
1720#include "DirectionalDragArea.h"
1821
22+#include <QQuickWindow>
1923#include <QtCore/qmath.h>
20−#include <QtCore/QTimer>
2124#include <QDebug>
2225
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
2430
25−#define DIRECTIONALDRAGAREA_DEBUG 0
31+// local
32+#include "TouchOwnershipEvent.h"
33+#include "TouchRegistry.h"
34+#include "UnownedTouchEvent.h"
35+
36+using namespace UbuntuGestures;
2637
2738#if DIRECTIONALDRAGAREA_DEBUG
2839#define DDA_DEBUG(msg) qDebug("[DDA] " msg)
29−namespace {
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−}
40+#include "DebugHelpers.h"
7441
42+namespace {
7543const char *statusToString(DirectionalDragArea::Status status)
7644{
7745 if (status == DirectionalDragArea::WaitingForTouch) {
@@ -88,23 +56,6 @@ const char *statusToString(DirectionalDragArea::Status status)
8856#define DDA_DEBUG(msg) do{}while(0)
8957#endif // DIRECTIONALDRAGAREA_DEBUG
9058
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−};
10859
10960DirectionalDragArea::DirectionalDragArea(QQuickItem *parent)
11061 : QQuickItem(parent)
@@ -126,12 +77,14 @@ DirectionalDragArea::DirectionalDragArea(QQuickItem *parent)
12677 , m_timeSource(new RealTimeSource)
12778 , m_activeTouches(m_timeSource)
12879{
129− setRecognitionTimer(new RecognitionTimer(this));
80+ setRecognitionTimer(new Timer(this));
13081 m_recognitionTimer->setInterval(60);
82+ m_recognitionTimer->setSingleShot(false);
13183
13284 m_velocityCalculator = new AxisVelocityCalculator(this);
13385
134− connect(this, &QQuickItem::enabledChanged, this, &DirectionalDragArea::onEnabledChanged);
86+ connect(this, &QQuickItem::enabledChanged, this, &DirectionalDragArea::giveUpIfDisabledOrInvisible);
87+ connect(this, &QQuickItem::visibleChanged, this, &DirectionalDragArea::giveUpIfDisabledOrInvisible);
13588}
13689
13790Direction::Type DirectionalDragArea::direction() const
@@ -214,6 +167,7 @@ void DirectionalDragArea::setRecognitionTimer(UbuntuGestures::AbstractTimer *tim
214167{
215168 int interval = 0;
216169 bool timerWasRunning = false;
170+ bool wasSingleShot = false;
217171
218172 // can be null when called from the constructor
219173 if (m_recognitionTimer) {
@@ -226,6 +180,7 @@ void DirectionalDragArea::setRecognitionTimer(UbuntuGestures::AbstractTimer *tim
226180
227181 m_recognitionTimer = timer;
228182 timer->setInterval(interval);
183+ timer->setSingleShot(wasSingleShot);
229184 connect(timer, &UbuntuGestures::AbstractTimer::timeout,
230185 this, &DirectionalDragArea::checkSpeed);
231186 if (timerWasRunning) {
@@ -280,8 +235,146 @@ qreal DirectionalDragArea::touchSceneY() const
280235 return m_previousScenePos.y();
281236}
282237
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+ //
263+ // The fix for this bug has landed in Qt 5.4 (https://codereview.qt-project.org/96887)
264+ // TODO: Remove this workaround once we start using Qt 5.4
265+ if (window()) {
266+ QQuickWindowPrivate *windowPrivate = QQuickWindowPrivate::get(window());
267+ if (windowPrivate->touchMouseId == event->touchId() && window()->mouseGrabberItem()) {
268+ DDA_DEBUG("removing mouse grabber");
269+ window()->mouseGrabberItem()->ungrabMouse();
270+ }
271+ }
272+ } else {
273+ // We still wanna know when it ends for keeping the composition time window up-to-date
274+ TouchRegistry::instance()->addTouchWatcher(m_touchId, this);
275+
276+ setStatus(WaitingForTouch);
277+ }
278+}
279+
280+void DirectionalDragArea::unownedTouchEvent(UnownedTouchEvent *unownedTouchEvent)
281+{
282+ QTouchEvent *event = unownedTouchEvent->touchEvent();
283+
284+ Q_ASSERT(!event->touchPointStates().testFlag(Qt::TouchPointPressed));
285+
286+ #if DIRECTIONALDRAGAREA_DEBUG
287+ // TODO Consider using qCDebug() when available (Qt 5.2)
288+ qDebug() << "[DDA] Unowned" << m_timeSource->msecsSinceReference()
289+ << qPrintable(touchEventToString(event));
290+ #endif
291+
292+ switch (m_status) {
293+ case WaitingForTouch:
294+ // do nothing
295+ break;
296+ case Undecided:
297+ Q_ASSERT(isEnabled() && isVisible());
298+ unownedTouchEvent_undecided(unownedTouchEvent);
299+ break;
300+ default: // Recognized:
301+ // do nothing
302+ break;
303+ }
304+
305+ m_activeTouches.update(event);
306+}
307+
308+void DirectionalDragArea::unownedTouchEvent_undecided(UnownedTouchEvent *unownedTouchEvent)
309+{
310+ const QTouchEvent::TouchPoint *touchPoint = fetchTargetTouchPoint(unownedTouchEvent->touchEvent());
311+ if (!touchPoint) {
312+ qCritical() << "DirectionalDragArea[status=Undecided]: touch " << m_touchId
313+ << "missing from UnownedTouchEvent without first reaching state Qt::TouchPointReleased. "
314+ "Considering it as released.";
315+
316+ TouchRegistry::instance()->removeCandidateOwnerForTouch(m_touchId, this);
317+ setStatus(WaitingForTouch);
318+ return;
319+ }
320+
321+ const QPointF &touchScenePos = touchPoint->scenePos();
322+
323+ if (touchPoint->state() == Qt::TouchPointReleased) {
324+ // touch has ended before recognition concluded
325+ DDA_DEBUG("Touch has ended before recognition concluded");
326+ TouchRegistry::instance()->removeCandidateOwnerForTouch(m_touchId, this);
327+ emitSignalIfTapped();
328+ setStatus(WaitingForTouch);
329+ return;
330+ }
331+
332+ m_previousDampedScenePos.setX(m_dampedScenePos.x());
333+ m_previousDampedScenePos.setY(m_dampedScenePos.y());
334+ m_dampedScenePos.update(touchScenePos);
335+ updateVelocityCalculator(touchScenePos);
336+
337+ if (!pointInsideAllowedArea()) {
338+ DDA_DEBUG("Rejecting gesture because touch point is outside allowed area.");
339+ TouchRegistry::instance()->removeCandidateOwnerForTouch(m_touchId, this);
340+ // We still wanna know when it ends for keeping the composition time window up-to-date
341+ TouchRegistry::instance()->addTouchWatcher(m_touchId, this);
342+ setStatus(WaitingForTouch);
343+ return;
344+ }
345+
346+ if (!movingInRightDirection()) {
347+ DDA_DEBUG("Rejecting gesture because touch point is moving in the wrong direction.");
348+ TouchRegistry::instance()->removeCandidateOwnerForTouch(m_touchId, this);
349+ // We still wanna know when it ends for keeping the composition time window up-to-date
350+ TouchRegistry::instance()->addTouchWatcher(m_touchId, this);
351+ setStatus(WaitingForTouch);
352+ return;
353+ }
354+
355+ setPreviousPos(touchPoint->pos());
356+ setPreviousScenePos(touchScenePos);
357+
358+ if (isWithinTouchCompositionWindow()) {
359+ // There's still time for some new touch to appear and ruin our party as it would be combined
360+ // with our m_touchId one and therefore deny the possibility of a single-finger gesture.
361+ DDA_DEBUG("Sill within composition window. Let's wait more.");
362+ return;
363+ }
364+
365+ if (movedFarEnough(touchScenePos)) {
366+ TouchRegistry::instance()->requestTouchOwnership(m_touchId, this);
367+ setStatus(Recognized);
368+ } else {
369+ DDA_DEBUG("Didn't move far enough yet. Let's wait more.");
370+ }
371+}
372+
283373void DirectionalDragArea::touchEvent(QTouchEvent *event)
284374{
375+ // TODO: Consider when more than one touch starts in the same event (although it's not possible
376+ // with Mir's android-input). Have to track them all. Consider it a plus/bonus.
377+
285378 #if DIRECTIONALDRAGAREA_DEBUG
286379 // TODO Consider using qCDebug() when available (Qt 5.2)
287380 qDebug() << "[DDA]" << m_timeSource->msecsSinceReference()
@@ -310,29 +403,34 @@ void DirectionalDragArea::touchEvent(QTouchEvent *event)
310403
311404void DirectionalDragArea::touchEvent_absent(QTouchEvent *event)
312405{
406+ // TODO: accept/reject is for the whole event, not per touch id. See how that affects us.
407+
313408 if (!event->touchPointStates().testFlag(Qt::TouchPointPressed)) {
314409 // Nothing to see here. No touch starting in this event.
315410 return;
316411 }
317412
413+ // to be proven wrong, if that's the case
414+ bool allGood = true;
415+
318416 if (isWithinTouchCompositionWindow()) {
319417 // too close to the last touch start. So we consider them as starting roughly at the same time.
320418 // Can't be a single-touch gesture.
321419 #if DIRECTIONALDRAGAREA_DEBUG
322420 qDebug("[DDA] A new touch point came in but we're still within time composition window. Ignoring it.");
323421 #endif
324− return;
422+ allGood = false;
325423 }
326424
327425 const QList<QTouchEvent::TouchPoint> &touchPoints = event->touchPoints();
328426
329427 const QTouchEvent::TouchPoint *newTouchPoint = nullptr;
330− for (int i = 0; i < touchPoints.count(); ++i) {
428+ for (int i = 0; i < touchPoints.count() && allGood; ++i) {
331429 const QTouchEvent::TouchPoint &touchPoint = touchPoints.at(i);
332430 if (touchPoint.state() == Qt::TouchPointPressed) {
333431 if (newTouchPoint) {
334432 // more than one touch starting in this QTouchEvent. Can't be a single-touch gesture
335− return;
433+ allGood = false;
336434 } else {
337435 // that's our candidate
338436 m_touchId = touchPoint.id();
@@ -341,85 +439,61 @@ void DirectionalDragArea::touchEvent_absent(QTouchEvent *event)
341439 }
342440 }
343441
344− Q_ASSERT(newTouchPoint);
442+ if (allGood) {
443+ Q_ASSERT(newTouchPoint);
345444
346− // If we have made this far, we are good to go to the next status.
347−
348− m_startPos = newTouchPoint->pos();
349− m_startScenePos = newTouchPoint->scenePos();
350− m_touchId = newTouchPoint->id();
351− m_dampedScenePos.reset(m_startScenePos);
352− m_velocityCalculator->setTrackedPosition(0.);
353− m_velocityCalculator->reset();
354− m_numSamplesOnLastSpeedCheck = 0;
355− m_silenceTime = 0;
356− setPreviousPos(m_startPos);
357− setPreviousScenePos(m_startScenePos);
358− updateSceneDirectionVector();
359−
360− setStatus(Undecided);
445+ m_startPos = newTouchPoint->pos();
446+ m_startScenePos = newTouchPoint->scenePos();
447+ m_touchId = newTouchPoint->id();
448+ m_dampedScenePos.reset(m_startScenePos);
449+ m_velocityCalculator->setTrackedPosition(0.);
450+ m_velocityCalculator->reset();
451+ m_numSamplesOnLastSpeedCheck = 0;
452+ m_silenceTime = 0;
453+ setPreviousPos(m_startPos);
454+ setPreviousScenePos(m_startScenePos);
455+ updateSceneDirectionVector();
456+
457+ if (recognitionIsDisabled()) {
458+ // Behave like a dumb TouchArea
459+ TouchRegistry::instance()->requestTouchOwnership(m_touchId, this);
460+ setStatus(Recognized);
461+ event->accept();
462+ } else {
463+ // just monitor the touch points for now.
464+ TouchRegistry::instance()->addCandidateOwnerForTouch(m_touchId, this);
465+
466+ setStatus(Undecided);
467+ // Let the item below have it. We will monitor it and grab it later if a gesture
468+ // gets recognized.
469+ event->ignore();
470+ }
471+ } else {
472+ watchPressedTouchPoints(touchPoints);
473+ event->ignore();
474+ }
361475}
362476
363477void DirectionalDragArea::touchEvent_undecided(QTouchEvent *event)
364478{
365− const QTouchEvent::TouchPoint *touchPoint = fetchTargetTouchPoint(event);
479+ Q_ASSERT(event->type() == QEvent::TouchBegin);
480+ Q_ASSERT(fetchTargetTouchPoint(event) == nullptr);
366481
367− if (!touchPoint) {
368− qCritical() << "DirectionalDragArea[status=Undecided]: touch " << m_touchId
369− << "missing from QTouchEvent without first reaching state Qt::TouchPointReleased. "
370− "Considering it as released.";
371− setStatus(WaitingForTouch);
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− }
482+ // We're not interested in new touch points. We already have our candidate (m_touchId).
483+ // But we do want to know when those new touches end for keeping the composition time
484+ // window up-to-date
485+ event->ignore();
486+ watchPressedTouchPoints(event->touchPoints());
384487
385488 if (event->touchPointStates().testFlag(Qt::TouchPointPressed) && isWithinTouchCompositionWindow()) {
386489 // multi-finger drags are not accepted
387490 DDA_DEBUG("Multi-finger drags are not accepted");
388− setStatus(WaitingForTouch);
389− return;
390− }
391491
392− m_previousDampedScenePos.setX(m_dampedScenePos.x());
393− m_previousDampedScenePos.setY(m_dampedScenePos.y());
394− m_dampedScenePos.update(touchScenePos);
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− }
492+ TouchRegistry::instance()->removeCandidateOwnerForTouch(m_touchId, this);
493+ // We still wanna know when it ends for keeping the composition time window up-to-date
494+ TouchRegistry::instance()->addTouchWatcher(m_touchId, this);
402495
403− if (!movingInRightDirection()) {
404− DDA_DEBUG("Rejecting gesture becauuse touch point is moving in the wrong direction.");
405496 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.");
423497 }
424498}
425499
@@ -437,11 +511,35 @@ void DirectionalDragArea::touchEvent_recognized(QTouchEvent *event)
437511 setPreviousScenePos(touchPoint->scenePos());
438512
439513 if (touchPoint->state() == Qt::TouchPointReleased) {
514+ emitSignalIfTapped();
440515 setStatus(WaitingForTouch);
441516 }
442517 }
443518}
444519
520+void DirectionalDragArea::watchPressedTouchPoints(const QList<QTouchEvent::TouchPoint> &touchPoints)
521+{
522+ for (int i = 0; i < touchPoints.count(); ++i) {
523+ const QTouchEvent::TouchPoint &touchPoint = touchPoints.at(i);
524+ if (touchPoint.state() == Qt::TouchPointPressed) {
525+ TouchRegistry::instance()->addTouchWatcher(touchPoint.id(), this);
526+ }
527+ }
528+}
529+
530+bool DirectionalDragArea::recognitionIsDisabled() const
531+{
532+ return distanceThreshold() <= 0 && compositionTime() <= 0;
533+}
534+
535+void DirectionalDragArea::emitSignalIfTapped()
536+{
537+ qint64 touchDuration = m_timeSource->msecsSinceReference() - m_activeTouches.touchStartTime(m_touchId);
538+ if (touchDuration <= maxTapDuration()) {
539+ Q_EMIT tapped();
540+ }
541+}
542+
445543const QTouchEvent::TouchPoint *DirectionalDragArea::fetchTargetTouchPoint(QTouchEvent *event)
446544{
447545 const QList<QTouchEvent::TouchPoint> &touchPoints = event->touchPoints();
@@ -509,12 +607,16 @@ bool DirectionalDragArea::movedFarEnough(const QPointF &point) const
509607
510608void DirectionalDragArea::checkSpeed()
511609{
610+ Q_ASSERT(m_status == Undecided);
611+
512612 if (m_velocityCalculator->numSamples() >= AxisVelocityCalculator::MIN_SAMPLES_NEEDED) {
513613 qreal speed = qFabs(m_velocityCalculator->calculate());
514614 qreal minSpeedMsecs = m_minSpeed / 1000.0;
515615
516616 if (speed < minSpeedMsecs) {
517617 DDA_DEBUG("Rejecting gesture because it's below minimum speed.");
618+ TouchRegistry::instance()->removeCandidateOwnerForTouch(m_touchId, this);
619+ TouchRegistry::instance()->addTouchWatcher(m_touchId, this);
518620 setStatus(WaitingForTouch);
519621 }
520622 }
@@ -523,7 +625,9 @@ void DirectionalDragArea::checkSpeed()
523625 m_silenceTime += m_recognitionTimer->interval();
524626
525627 if (m_silenceTime > m_maxSilenceTime) {
526− DDA_DEBUG("Rejecting gesture because it's silence time has been exceeded.");
628+ DDA_DEBUG("Rejecting gesture because its silence time has been exceeded.");
629+ TouchRegistry::instance()->removeCandidateOwnerForTouch(m_touchId, this);
630+ TouchRegistry::instance()->addTouchWatcher(m_touchId, this);
527631 setStatus(WaitingForTouch);
528632 }
529633 } else {
@@ -532,10 +636,19 @@ void DirectionalDragArea::checkSpeed()
532636 m_numSamplesOnLastSpeedCheck = m_velocityCalculator->numSamples();
533637}
534638
535−void DirectionalDragArea::onEnabledChanged()
639+void DirectionalDragArea::giveUpIfDisabledOrInvisible()
536640{
537− if (!isEnabled() && m_status != WaitingForTouch) {
538− setStatus(WaitingForTouch);
641+ if (!isEnabled() || !isVisible()) {
642+ if (m_status == Undecided) {
643+ TouchRegistry::instance()->removeCandidateOwnerForTouch(m_touchId, this);
644+ // We still wanna know when it ends for keeping the composition time window up-to-date
645+ TouchRegistry::instance()->addTouchWatcher(m_touchId, this);
646+ }
647+
648+ if (m_status != WaitingForTouch) {
649+ DDA_DEBUG("Resetting status because got disabled or made invisible");
650+ setStatus(WaitingForTouch);
651+ }
539652 }
540653}
541654
@@ -631,7 +744,9 @@ void DirectionalDragArea::updateVelocityCalculator(const QPointF &scenePos)
631744
632745bool DirectionalDragArea::isWithinTouchCompositionWindow()
633746{
634− return !m_activeTouches.isEmpty() &&
747+ return
748+ compositionTime() > 0 &&
749+ !m_activeTouches.isEmpty() &&
635750 m_timeSource->msecsSinceReference() <=
636751 m_activeTouches.mostRecentStartTime() + (qint64)compositionTime();
637752}
@@ -639,18 +754,17 @@ bool DirectionalDragArea::isWithinTouchCompositionWindow()
639754//************************** ActiveTouchesInfo **************************
640755
641756DirectionalDragArea::ActiveTouchesInfo::ActiveTouchesInfo(const SharedTimeSource &timeSource)
642− : m_timeSource(timeSource), m_lastUsedIndex(-1)
757+ : m_timeSource(timeSource)
643758{
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);
648759}
649760
650761void DirectionalDragArea::ActiveTouchesInfo::update(QTouchEvent *event)
651762{
652763 if (!(event->touchPointStates() & (Qt::TouchPointPressed | Qt::TouchPointReleased))) {
653764 // nothing to update
765+ #if ACTIVETOUCHESINFO_DEBUG
766+ qDebug("[DDA::ActiveTouchesInfo] Nothing to Update");
767+ #endif
654768 return;
655769 }
656770
@@ -658,74 +772,88 @@ void DirectionalDragArea::ActiveTouchesInfo::update(QTouchEvent *event)
658772 for (int i = 0; i < touchPoints.count(); ++i) {
659773 const QTouchEvent::TouchPoint &touchPoint = touchPoints.at(i);
660774 if (touchPoint.state() == Qt::TouchPointPressed) {
661− addTouchPoint(touchPoint);
775+ addTouchPoint(touchPoint.id());
662776 } else if (touchPoint.state() == Qt::TouchPointReleased) {
663− removeTouchPoint(touchPoint);
777+ removeTouchPoint(touchPoint.id());
664778 }
665779 }
666780}
667781
668−void DirectionalDragArea::ActiveTouchesInfo::addTouchPoint(const QTouchEvent::TouchPoint &touchPoint)
782+#if ACTIVETOUCHESINFO_DEBUG
783+QString DirectionalDragArea::ActiveTouchesInfo::toString()
669784{
670− ActiveTouchInfo &activeTouchInfo = getEmptySlot();
671− activeTouchInfo.id = touchPoint.id();
672− activeTouchInfo.startTime = m_timeSource->msecsSinceReference();
785+ QString string = "(";
786+
787+ {
788+ QTextStream stream(&string);
789+ m_touchInfoPool.forEach([&](Pool<ActiveTouchInfo>::Iterator &touchInfo) {
790+ stream << "(id=" << touchInfo->id << ",startTime=" << touchInfo->startTime << ")";
791+ return true;
792+ });
793+ }
794+
795+ string.append(")");
796+
797+ return string;
673798}
799+#endif // ACTIVETOUCHESINFO_DEBUG
674800
675−void DirectionalDragArea::ActiveTouchesInfo::removeTouchPoint(const QTouchEvent::TouchPoint &touchPoint)
801+void DirectionalDragArea::ActiveTouchesInfo::addTouchPoint(int touchId)
676802{
677− for (int i = 0; i <= m_lastUsedIndex; ++i) {
678− if (touchPoint.id() == m_vector.at(i).id) {
679− freeSlot(i);
680− return;
681− }
682− }
683− Q_ASSERT(false); // shouldn't reach this point
803+ ActiveTouchInfo &activeTouchInfo = m_touchInfoPool.getEmptySlot();
804+ activeTouchInfo.id = touchId;
805+ activeTouchInfo.startTime = m_timeSource->msecsSinceReference();
806+
807+ #if ACTIVETOUCHESINFO_DEBUG
808+ qDebug() << "[DDA::ActiveTouchesInfo]" << qPrintable(toString());
809+ #endif
684810}
685811
686−DirectionalDragArea::ActiveTouchInfo &DirectionalDragArea::ActiveTouchesInfo::getEmptySlot()
812+qint64 DirectionalDragArea::ActiveTouchesInfo::touchStartTime(int touchId)
687813{
688− Q_ASSERT(m_lastUsedIndex < m_vector.size());
814+ qint64 result = -1;
689815
690− // Look for an in-between vacancy first
691− for (int i = 0; i < m_lastUsedIndex; ++i) {
692− ActiveTouchInfo &activeTouchInfo = m_vector[i];
693− if (!activeTouchInfo.isValid()) {
694− return activeTouchInfo;
816+ m_touchInfoPool.forEach([&](Pool<ActiveTouchInfo>::Iterator &touchInfo) {
817+ if (touchId == touchInfo->id) {
818+ result = touchInfo->startTime;
819+ return false;
820+ } else {
821+ return true;
695822 }
696− }
697−
698− ++m_lastUsedIndex;
699− if (m_lastUsedIndex >= m_vector.size()) {
700− m_vector.resize(m_lastUsedIndex + 1);
701− }
823+ });
702824
703− return m_vector[m_lastUsedIndex];
825+ Q_ASSERT(result != -1);
826+ return result;
704827}
705828
706−void DirectionalDragArea::ActiveTouchesInfo::freeSlot(int index)
829+void DirectionalDragArea::ActiveTouchesInfo::removeTouchPoint(int touchId)
707830{
708− m_vector[index].reset();
709− if (index == m_lastUsedIndex) {
710− do {
711− --m_lastUsedIndex;
712− } while (m_lastUsedIndex >= 0 && !m_vector.at(m_lastUsedIndex).isValid());
713− }
831+ m_touchInfoPool.forEach([&](Pool<ActiveTouchInfo>::Iterator &touchInfo) {
832+ if (touchId == touchInfo->id) {
833+ m_touchInfoPool.freeSlot(touchInfo);
834+ return false;
835+ } else {
836+ return true;
837+ }
838+ });
839+
840+ #if ACTIVETOUCHESINFO_DEBUG
841+ qDebug() << "[DDA::ActiveTouchesInfo]" << qPrintable(toString());
842+ #endif
714843}
715844
716845qint64 DirectionalDragArea::ActiveTouchesInfo::mostRecentStartTime()
717846{
718− Q_ASSERT(m_lastUsedIndex >= 0);
847+ Q_ASSERT(!m_touchInfoPool.isEmpty());
848+
849+ qint64 highestStartTime = -1;
719850
720− qint64 highestStartTime = m_vector.at(0).startTime;
721− int i = 1;
722− do {
723− const ActiveTouchInfo &activeTouchInfo = m_vector.at(i);
724− if (activeTouchInfo.isValid() && activeTouchInfo.startTime > highestStartTime) {
725− highestStartTime = activeTouchInfo.startTime;
851+ m_touchInfoPool.forEach([&](Pool<ActiveTouchInfo>::Iterator &activeTouchInfo) {
852+ if (activeTouchInfo->startTime > highestStartTime) {
853+ highestStartTime = activeTouchInfo->startTime;
726854 }
727− ++i;
728− } while (i < m_lastUsedIndex);
855+ return true;
856+ });
729857
730858 return highestStartTime;
731859}
plugins/Ubuntu/Gestures/DirectionalDragArea.h+37−29
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013,2014 Canonical, Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
@@ -19,27 +19,16 @@
1919
2020#include <QtQuick/QQuickItem>
2121#include "AxisVelocityCalculator.h"
22−#include "UbuntuGesturesGlobal.h"
22+#include "UbuntuGesturesQmlGlobal.h"
2323#include "Damper.h"
2424#include "Direction.h"
2525
26−namespace UbuntuGestures {
27−/* Defines an interface for a Timer. */
28−class UBUNTUGESTURES_EXPORT AbstractTimer : public QObject {
29− Q_OBJECT
30−public:
31− AbstractTimer(QObject *parent) : QObject(parent), m_isRunning(false) {}
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−}
26+// lib UbuntuGestures
27+#include <Pool.h>
28+#include <Timer.h>
29+
30+class TouchOwnershipEvent;
31+class UnownedTouchEvent;
4332
4433/*
4534 An area that detects axis-aligned single-finger drag gestures
@@ -50,7 +39,7 @@ private:
5039
5140 See doc/DirectionalDragArea.svg
5241 */
53−class UBUNTUGESTURES_EXPORT DirectionalDragArea : public QQuickItem {
42+class UBUNTUGESTURESQML_EXPORT DirectionalDragArea : public QQuickItem {
5443 Q_OBJECT
5544
5645 // The direction in which the gesture should move in order to be recognized.
@@ -196,6 +185,12 @@ public:
196185 // Useful for testing, where a fake time source can be supplied
197186 void setTimeSource(const UbuntuGestures::SharedTimeSource &timeSource);
198187
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+
199194Q_SIGNALS:
200195 void directionChanged(Direction::Type direction);
201196 void statusChanged(Status value);
@@ -212,6 +207,10 @@ Q_SIGNALS:
212207 void touchYChanged(qreal value);
213208 void touchSceneXChanged(qreal value);
214209 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()
215214 void tapped();
216215
217216protected:
@@ -219,7 +218,7 @@ protected:
219218
220219private Q_SLOTS:
221220 void checkSpeed();
222− void onEnabledChanged();
221+ void giveUpIfDisabledOrInvisible();
223222
224223private:
225224 void touchEvent_absent(QTouchEvent *event);
@@ -238,6 +237,12 @@ private:
238237 // returns the scalar projection between the given vector (in scene coordinates)
239238 // and m_sceneDirectionVector
240239 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();
241246
242247 Status m_status;
243248
@@ -283,18 +288,21 @@ private:
283288 public:
284289 ActiveTouchesInfo(const UbuntuGestures::SharedTimeSource &timeSource);
285290 void update(QTouchEvent *event);
286− ActiveTouchInfo &touchInfo(int id);
291+ qint64 touchStartTime(int id);
292+ bool isEmpty() const { return m_touchInfoPool.isEmpty(); }
287293 qint64 mostRecentStartTime();
288294 UbuntuGestures::SharedTimeSource m_timeSource;
289− bool isEmpty() const { return m_lastUsedIndex == -1; }
290295 private:
291− void addTouchPoint(const QTouchEvent::TouchPoint &touchPoint);
292− ActiveTouchInfo &getEmptySlot();
293− void freeSlot(int index);
294− void removeTouchPoint(const QTouchEvent::TouchPoint &touchPoint);
295− QVector<struct ActiveTouchInfo> m_vector;
296− int m_lastUsedIndex;
296+ void addTouchPoint(int touchId);
297+ void removeTouchPoint(int touchId);
298+ #if ACTIVETOUCHESINFO_DEBUG
299+ QString toString();
300+ #endif
301+
302+ Pool<ActiveTouchInfo> m_touchInfoPool;
297303 } m_activeTouches;
304+
305+ friend class tst_DirectionalDragArea;
298306};
299307
300308#endif // DIRECTIONAL_DRAG_AREA_H
plugins/Ubuntu/Gestures/TimeSource.h+2−2
@@ -21,14 +21,14 @@
2121#ifndef UBUNTUGESTURES_TIMESOURCE_H
2222#define UBUNTUGESTURES_TIMESOURCE_H
2323
24−#include "UbuntuGesturesGlobal.h"
24+#include "UbuntuGesturesQmlGlobal.h"
2525#include <QSharedPointer>
2626
2727namespace UbuntuGestures {
2828/*
2929 Interface for a time source.
3030 */
31−class UBUNTUGESTURES_EXPORT TimeSource {
31+class UBUNTUGESTURESQML_EXPORT TimeSource {
3232public:
3333 virtual ~TimeSource() {}
3434 /* Returns the current time in milliseconds since some reference time in the past. */
plugins/Ubuntu/Gestures/TouchDispatcher.cppnew file+367
@@ -0,0 +1,367 @@
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 "TouchDispatcher.h"
18+
19+#include <QGuiApplication>
20+#include <QScopedPointer>
21+#include <QStyleHints>
22+
23+#pragma GCC diagnostic push
24+#pragma GCC diagnostic ignored "-pedantic"
25+#include <private/qquickitem_p.h>
26+#pragma GCC diagnostic pop
27+
28+#define TOUCHDISPATCHER_DEBUG 0
29+
30+#if TOUCHDISPATCHER_DEBUG
31+#include <DebugHelpers.h>
32+#endif
33+
34+TouchDispatcher::TouchDispatcher()
35+ : m_status(NoActiveTouch)
36+ , m_touchMouseId(-1)
37+ , m_touchMousePressTimestamp(0)
38+{
39+}
40+
41+void TouchDispatcher::setTargetItem(QQuickItem *target)
42+{
43+ if (target != m_targetItem) {
44+ m_targetItem = target;
45+ if (m_status != NoActiveTouch) {
46+ qWarning("[TouchDispatcher] Changing target item in the middle of a touch stream");
47+ m_status = TargetRejectedTouches;
48+ }
49+ }
50+}
51+
52+void TouchDispatcher::dispatch(QEvent::Type eventType,
53+ QTouchDevice *device,
54+ Qt::KeyboardModifiers modifiers,
55+ const QList<QTouchEvent::TouchPoint> &touchPoints,
56+ QWindow *window,
57+ ulong timestamp)
58+{
59+ if (m_targetItem.isNull()) {
60+ qWarning("[TouchDispatcher] Cannot dispatch touch event because target item is null");
61+ return;
62+ }
63+
64+ if (eventType == QEvent::TouchBegin) {
65+ dispatchTouchBegin(device, modifiers, touchPoints, window, timestamp);
66+
67+ } else if (eventType == QEvent::TouchUpdate || eventType == QEvent::TouchEnd) {
68+
69+ if (m_status == DeliveringTouchEvents) {
70+ dispatchAsTouch(eventType, device, modifiers, touchPoints, window, timestamp);
71+ } else if (m_status == DeliveringMouseEvents) {
72+ dispatchAsMouse(device, modifiers, touchPoints, timestamp);
73+ } else {
74+ Q_ASSERT(m_status == TargetRejectedTouches);
75+ #if TOUCHDISPATCHER_DEBUG
76+ qDebug() << "[TouchDispatcher] Not dispatching touch event to" << m_targetItem.data()
77+ << "because it already rejected the touch stream.";
78+ #endif
79+ // Do nothing
80+ }
81+
82+ if (eventType == QEvent::TouchEnd) {
83+ m_status = NoActiveTouch;
84+ m_touchMouseId = -1;
85+ }
86+
87+ } else {
88+ // Should never happen
89+ qCritical() << "[TouchDispatcher] Unexpected event type" << eventType;
90+ Q_ASSERT(false);
91+ return;
92+ }
93+}
94+
95+void TouchDispatcher::dispatchTouchBegin(
96+ QTouchDevice *device,
97+ Qt::KeyboardModifiers modifiers,
98+ const QList<QTouchEvent::TouchPoint> &touchPoints,
99+ QWindow *window,
100+ ulong timestamp)
101+{
102+ Q_ASSERT(m_status == NoActiveTouch);
103+ QQuickItem *targetItem = m_targetItem.data();
104+
105+ if (!targetItem->isEnabled() || !targetItem->isVisible()) {
106+ #if TOUCHDISPATCHER_DEBUG
107+ qDebug() << "[TouchDispatcher] Cannot dispatch touch event to" << targetItem
108+ << "because it's disabled or invisible.";
109+ #endif
110+ return;
111+ }
112+
113+ // Map touch points to targetItem coordinates
114+ QList<QTouchEvent::TouchPoint> targetTouchPoints = touchPoints;
115+ transformTouchPoints(targetTouchPoints, QQuickItemPrivate::get(targetItem)->windowToItemTransform());
116+
117+ QScopedPointer<QTouchEvent> touchEvent(
118+ createQTouchEvent(QEvent::TouchBegin, device, modifiers, targetTouchPoints, window, timestamp));
119+
120+
121+ #if TOUCHDISPATCHER_DEBUG
122+ qDebug() << "[TouchDispatcher] dispatching" << qPrintable(touchEventToString(touchEvent.data()))
123+ << "to" << targetItem;
124+ #endif
125+ QCoreApplication::sendEvent(targetItem, touchEvent.data());
126+
127+
128+ if (touchEvent->isAccepted()) {
129+ #if TOUCHDISPATCHER_DEBUG
130+ qDebug() << "[TouchDispatcher] Item accepted the touch event.";
131+ #endif
132+ m_status = DeliveringTouchEvents;
133+ } else if (targetItem->acceptedMouseButtons() & Qt::LeftButton) {
134+ #if TOUCHDISPATCHER_DEBUG
135+ qDebug() << "[TouchDispatcher] Item rejected the touch event. Trying a QMouseEvent";
136+ #endif
137+ // NB: Arbitrarily chose the first touch point to emulate the mouse pointer
138+ QScopedPointer<QMouseEvent> mouseEvent(
139+ touchToMouseEvent(QEvent::MouseButtonPress, targetTouchPoints.at(0), timestamp,
140+ modifiers, false /* transformNeeded */));
141+ Q_ASSERT(targetTouchPoints.at(0).state() == Qt::TouchPointPressed);
142+
143+ #if TOUCHDISPATCHER_DEBUG
144+ qDebug() << "[TouchDispatcher] dispatching" << qPrintable(mouseEventToString(mouseEvent.data()))
145+ << "to" << m_targetItem.data();
146+ #endif
147+ QCoreApplication::sendEvent(targetItem, mouseEvent.data());
148+ if (mouseEvent->isAccepted()) {
149+ #if TOUCHDISPATCHER_DEBUG
150+ qDebug() << "[TouchDispatcher] Item accepted the QMouseEvent.";
151+ #endif
152+ m_status = DeliveringMouseEvents;
153+ m_touchMouseId = targetTouchPoints.at(0).id();
154+
155+ if (checkIfDoubleClicked(timestamp)) {
156+ QScopedPointer<QMouseEvent> doubleClickEvent(
157+ touchToMouseEvent(QEvent::MouseButtonDblClick, targetTouchPoints.at(0), timestamp,
158+ modifiers, false /* transformNeeded */));
159+ #if TOUCHDISPATCHER_DEBUG
160+ qDebug() << "[TouchDispatcher] dispatching" << qPrintable(mouseEventToString(doubleClickEvent.data()))
161+ << "to" << m_targetItem.data();
162+ #endif
163+ QCoreApplication::sendEvent(targetItem, doubleClickEvent.data());
164+ }
165+
166+ } else {
167+ #if TOUCHDISPATCHER_DEBUG
168+ qDebug() << "[TouchDispatcher] Item rejected the QMouseEvent.";
169+ #endif
170+ m_status = TargetRejectedTouches;
171+ }
172+ } else {
173+ #if TOUCHDISPATCHER_DEBUG
174+ qDebug() << "[TouchDispatcher] Item rejected the touch event and does not accept mouse buttons.";
175+ #endif
176+ m_status = TargetRejectedTouches;
177+ }
178+}
179+
180+void TouchDispatcher::dispatchAsTouch(QEvent::Type eventType,
181+ QTouchDevice *device,
182+ Qt::KeyboardModifiers modifiers,
183+ const QList<QTouchEvent::TouchPoint> &touchPoints,
184+ QWindow *window,
185+ ulong timestamp)
186+{
187+ QQuickItem *targetItem = m_targetItem.data();
188+
189+ // Map touch points to targetItem coordinates
190+ QList<QTouchEvent::TouchPoint> targetTouchPoints = touchPoints;
191+ transformTouchPoints(targetTouchPoints, QQuickItemPrivate::get(targetItem)->windowToItemTransform());
192+
193+ QScopedPointer<QTouchEvent> eventForTargetItem(
194+ createQTouchEvent(eventType, device, modifiers, targetTouchPoints, window, timestamp));
195+
196+
197+ #if TOUCHDISPATCHER_DEBUG
198+ qDebug() << "[TouchDispatcher] dispatching" << qPrintable(touchEventToString(eventForTargetItem.data()))
199+ << "to" << targetItem;
200+ #endif
201+ QCoreApplication::sendEvent(targetItem, eventForTargetItem.data());
202+}
203+
204+void TouchDispatcher::dispatchAsMouse(
205+ QTouchDevice * /*device*/,
206+ Qt::KeyboardModifiers modifiers,
207+ const QList<QTouchEvent::TouchPoint> &touchPoints,
208+ ulong timestamp)
209+{
210+ // TODO: Detect double clicks in order to synthesize QEvent::MouseButtonDblClick events accordingly
211+
212+ Q_ASSERT(!touchPoints.isEmpty());
213+
214+ const QTouchEvent::TouchPoint *touchMouse = nullptr;
215+
216+ if (m_touchMouseId != -1) {
217+ for (int i = 0; i < touchPoints.count() && !touchMouse; ++i) {
218+ const auto &touchPoint = touchPoints.at(i);
219+ if (touchPoint.id() == m_touchMouseId) {
220+ touchMouse = &touchPoint;
221+ }
222+ }
223+
224+ Q_ASSERT(touchMouse);
225+ if (!touchMouse) {
226+ // should not happen, but deal with it just in case.
227+ qWarning("[TouchDispatcher] Didn't find touch with id %d, used for mouse pointer emulation.",
228+ m_touchMouseId);
229+ m_touchMouseId = touchPoints.at(0).id();
230+ touchMouse = &touchPoints.at(0);
231+ }
232+ } else {
233+ // Try to find a new touch for mouse emulation
234+ for (int i = 0; i < touchPoints.count() && !touchMouse; ++i) {
235+ const auto &touchPoint = touchPoints.at(i);
236+ if (touchPoint.state() == Qt::TouchPointPressed) {
237+ touchMouse = &touchPoint;
238+ m_touchMouseId = touchMouse->id();
239+ }
240+ }
241+ }
242+
243+ if (touchMouse) {
244+ QEvent::Type eventType;
245+ if (touchMouse->state() == Qt::TouchPointPressed) {
246+ eventType = QEvent::MouseButtonPress;
247+ } if (touchMouse->state() == Qt::TouchPointReleased) {
248+ eventType = QEvent::MouseButtonRelease;
249+ m_touchMouseId = -1;
250+ } else {
251+ eventType = QEvent::MouseMove;
252+ }
253+
254+ QScopedPointer<QMouseEvent> mouseEvent(touchToMouseEvent(eventType, *touchMouse, timestamp, modifiers,
255+ true /* transformNeeded */));
256+
257+ #if TOUCHDISPATCHER_DEBUG
258+ qDebug() << "[TouchDispatcher] dispatching" << qPrintable(mouseEventToString(mouseEvent.data()))
259+ << "to" << m_targetItem.data();
260+ #endif
261+ QCoreApplication::sendEvent(m_targetItem.data(), mouseEvent.data());
262+ }
263+}
264+
265+QTouchEvent *TouchDispatcher::createQTouchEvent(QEvent::Type eventType,
266+ QTouchDevice *device,
267+ Qt::KeyboardModifiers modifiers,
268+ const QList<QTouchEvent::TouchPoint> &touchPoints,
269+ QWindow *window,
270+ ulong timestamp)
271+{
272+ Qt::TouchPointStates eventStates = 0;
273+ for (int i = 0; i < touchPoints.count(); i++)
274+ eventStates |= touchPoints[i].state();
275+ // if all points have the same state, set the event type accordingly
276+ switch (eventStates) {
277+ case Qt::TouchPointPressed:
278+ eventType = QEvent::TouchBegin;
279+ break;
280+ case Qt::TouchPointReleased:
281+ eventType = QEvent::TouchEnd;
282+ break;
283+ default:
284+ eventType = QEvent::TouchUpdate;
285+ break;
286+ }
287+
288+ QTouchEvent *touchEvent = new QTouchEvent(eventType);
289+ touchEvent->setWindow(window);
290+ touchEvent->setTarget(m_targetItem.data());
291+ touchEvent->setDevice(device);
292+ touchEvent->setModifiers(modifiers);
293+ touchEvent->setTouchPoints(touchPoints);
294+ touchEvent->setTouchPointStates(eventStates);
295+ touchEvent->setTimestamp(timestamp);
296+ touchEvent->accept();
297+ return touchEvent;
298+}
299+
300+// NB: From QQuickWindow
301+void TouchDispatcher::transformTouchPoints(QList<QTouchEvent::TouchPoint> &touchPoints, const QTransform &transform)
302+{
303+ QMatrix4x4 transformMatrix(transform);
304+ for (int i=0; i<touchPoints.count(); i++) {
305+ QTouchEvent::TouchPoint &touchPoint = touchPoints[i];
306+ touchPoint.setRect(transform.mapRect(touchPoint.sceneRect()));
307+ touchPoint.setStartPos(transform.map(touchPoint.startScenePos()));
308+ touchPoint.setLastPos(transform.map(touchPoint.lastScenePos()));
309+ touchPoint.setVelocity(transformMatrix.mapVector(touchPoint.velocity()).toVector2D());
310+ }
311+}
312+
313+// Copied with minor modifications from qtdeclarative/src/quick/items/qquickwindow.cpp
314+QMouseEvent *TouchDispatcher::touchToMouseEvent(
315+ QEvent::Type type, const QTouchEvent::TouchPoint &p,
316+ ulong timestamp, Qt::KeyboardModifiers modifiers,
317+ bool transformNeeded)
318+{
319+ QQuickItem *item = m_targetItem.data();
320+
321+ // The touch point local position and velocity are not yet transformed.
322+ QMouseEvent *me = new QMouseEvent(type, transformNeeded ? item->mapFromScene(p.scenePos()) : p.pos(),
323+ p.scenePos(), p.screenPos(), Qt::LeftButton,
324+ (type == QEvent::MouseButtonRelease ? Qt::NoButton : Qt::LeftButton),
325+ modifiers);
326+ me->setAccepted(true);
327+ me->setTimestamp(timestamp);
328+ QVector2D transformedVelocity = p.velocity();
329+ if (transformNeeded) {
330+ QQuickItemPrivate *itemPrivate = QQuickItemPrivate::get(item);
331+ QMatrix4x4 transformMatrix(itemPrivate->windowToItemTransform());
332+ transformedVelocity = transformMatrix.mapVector(p.velocity()).toVector2D();
333+ }
334+
335+ // Add these later if needed:
336+ //QGuiApplicationPrivate::setMouseEventCapsAndVelocity(me, event->device()->capabilities(), transformedVelocity);
337+ //QGuiApplicationPrivate::setMouseEventSource(me, Qt::MouseEventSynthesizedByQt);
338+ return me;
339+}
340+
341+/*
342+ Copied from qquickwindow.cpp which has:
343+ Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies)
344+ Under GPL 3.0 license.
345+*/
346+bool TouchDispatcher::checkIfDoubleClicked(ulong newPressEventTimestamp)
347+{
348+ bool doubleClicked;
349+
350+ if (m_touchMousePressTimestamp == 0) {
351+ // just initialize the variable
352+ m_touchMousePressTimestamp = newPressEventTimestamp;
353+ doubleClicked = false;
354+ } else {
355+ ulong timeBetweenPresses = newPressEventTimestamp - m_touchMousePressTimestamp;
356+ ulong doubleClickInterval = static_cast<ulong>(qApp->styleHints()->
357+ mouseDoubleClickInterval());
358+ doubleClicked = timeBetweenPresses < doubleClickInterval;
359+ if (doubleClicked) {
360+ m_touchMousePressTimestamp = 0;
361+ } else {
362+ m_touchMousePressTimestamp = newPressEventTimestamp;
363+ }
364+ }
365+
366+ return doubleClicked;
367+}
plugins/Ubuntu/Gestures/TouchDispatcher.hnew file+89
@@ -0,0 +1,89 @@
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_DISPATCHER_H
18+#define UBUNTU_TOUCH_DISPATCHER_H
19+
20+#include "UbuntuGesturesQmlGlobal.h"
21+
22+#include <QPointer>
23+#include <QQuickItem>
24+
25+/*
26+ Dispatches touches to the given target, converting the touch point
27+ coordinates accordingly.
28+
29+ Also takes care of synthesizing mouse events in case the target
30+ doesn't work with touch events.
31+ */
32+class UBUNTUGESTURESQML_EXPORT TouchDispatcher {
33+public:
34+ TouchDispatcher();
35+
36+ void setTargetItem(QQuickItem *target);
37+ QQuickItem *targetItem() { return m_targetItem; }
38+
39+ void dispatch(QEvent::Type eventType,
40+ QTouchDevice *device,
41+ Qt::KeyboardModifiers modifiers,
42+ const QList<QTouchEvent::TouchPoint> &touchPoints,
43+ QWindow *window,
44+ ulong timestamp);
45+private:
46+ void dispatchTouchBegin(
47+ QTouchDevice *device,
48+ Qt::KeyboardModifiers modifiers,
49+ const QList<QTouchEvent::TouchPoint> &touchPoints,
50+ QWindow *window,
51+ ulong timestamp);
52+ void dispatchAsTouch(QEvent::Type eventType,
53+ QTouchDevice *device,
54+ Qt::KeyboardModifiers modifiers,
55+ const QList<QTouchEvent::TouchPoint> &touchPoints,
56+ QWindow *window,
57+ ulong timestamp);
58+ void dispatchAsMouse(
59+ QTouchDevice *device,
60+ Qt::KeyboardModifiers modifiers,
61+ const QList<QTouchEvent::TouchPoint> &touchPoints,
62+ ulong timestamp);
63+
64+ static void transformTouchPoints(QList<QTouchEvent::TouchPoint> &touchPoints, const QTransform &transform);
65+ QTouchEvent *createQTouchEvent(QEvent::Type eventType,
66+ QTouchDevice *device,
67+ Qt::KeyboardModifiers modifiers,
68+ const QList<QTouchEvent::TouchPoint> &touchPoints,
69+ QWindow *window,
70+ ulong timestamp);
71+ QMouseEvent *touchToMouseEvent(QEvent::Type type, const QTouchEvent::TouchPoint &p,
72+ ulong timestamp, Qt::KeyboardModifiers modifiers, bool transformNeeded = true);
73+
74+ bool checkIfDoubleClicked(ulong newPressEventTimestamp);
75+
76+ QPointer<QQuickItem> m_targetItem;
77+
78+ enum {
79+ NoActiveTouch,
80+ DeliveringTouchEvents,
81+ DeliveringMouseEvents,
82+ TargetRejectedTouches
83+ } m_status;
84+
85+ int m_touchMouseId;
86+ ulong m_touchMousePressTimestamp;
87+};
88+
89+#endif // UBUNTU_TOUCH_DISPATCHER_H
plugins/Ubuntu/Gestures/TouchGate.cppnew file+251
@@ -0,0 +1,251 @@
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+#if TOUCHGATE_DEBUG
26+#include <DebugHelpers.h>
27+#endif
28+
29+bool TouchGate::event(QEvent *e)
30+{
31+ if (e->type() == TouchOwnershipEvent::touchOwnershipEventType()) {
32+ touchOwnershipEvent(static_cast<TouchOwnershipEvent *>(e));
33+ return true;
34+ } else {
35+ return QQuickItem::event(e);
36+ }
37+}
38+
39+void TouchGate::touchEvent(QTouchEvent *event)
40+{
41+ #if TOUCHGATE_DEBUG
42+ qDebug() << "[TouchGate] got touch event" << qPrintable(touchEventToString(event));
43+ #endif
44+ event->accept();
45+
46+ const QList<QTouchEvent::TouchPoint> &touchPoints = event->touchPoints();
47+ bool goodToGo = true;
48+ for (int i = 0; i < touchPoints.count(); ++i) {
49+ const QTouchEvent::TouchPoint &touchPoint = touchPoints[i];
50+
51+ if (touchPoint.state() == Qt::TouchPointPressed) {
52+ Q_ASSERT(!m_touchInfoMap.contains(touchPoint.id()));
53+ m_touchInfoMap[touchPoint.id()].ownership = OwnershipRequested;
54+ m_touchInfoMap[touchPoint.id()].ended = false;
55+ TouchRegistry::instance()->requestTouchOwnership(touchPoint.id(), this);
56+ }
57+
58+ goodToGo &= m_touchInfoMap.contains(touchPoint.id())
59+ && m_touchInfoMap[touchPoint.id()].ownership == OwnershipGranted;
60+
61+ if (touchPoint.state() == Qt::TouchPointReleased && m_touchInfoMap.contains(touchPoint.id())) {
62+ m_touchInfoMap[touchPoint.id()].ended = true;
63+ }
64+
65+ }
66+
67+ if (goodToGo) {
68+ if (m_storedEvents.isEmpty()) {
69+ // let it pass through
70+ dispatchTouchEventToTarget(event);
71+ } else {
72+ // Retain the event to ensure TouchGate dispatches them in order.
73+ // Otherwise the current event would come before the stored ones, which are older.
74+ #if TOUCHGATE_DEBUG
75+ qDebug("[TouchGate] Storing event because thouches %s are still pending ownership.",
76+ qPrintable(oldestPendingTouchIdsString()));
77+ #endif
78+ storeTouchEvent(event);
79+ }
80+ } else {
81+ // Retain events that have unowned touches
82+ storeTouchEvent(event);
83+ }
84+}
85+
86+void TouchGate::touchOwnershipEvent(TouchOwnershipEvent *event)
87+{
88+ // TODO: Optimization: batch those actions as TouchOwnershipEvents
89+ // might come one right after the other.
90+
91+ Q_ASSERT(m_touchInfoMap.contains(event->touchId()));
92+
93+ TouchInfo &touchInfo = m_touchInfoMap[event->touchId()];
94+
95+ if (event->gained()) {
96+ #if TOUCHGATE_DEBUG
97+ qDebug() << "[TouchGate] Got ownership of touch " << event->touchId();
98+ #endif
99+ touchInfo.ownership = OwnershipGranted;
100+ } else {
101+ #if TOUCHGATE_DEBUG
102+ qDebug() << "[TouchGate] Lost ownership of touch " << event->touchId();
103+ #endif
104+ m_touchInfoMap.remove(event->touchId());
105+ removeTouchFromStoredEvents(event->touchId());
106+ }
107+
108+ dispatchFullyOwnedEvents();
109+}
110+
111+bool TouchGate::isTouchPointOwned(int touchId) const
112+{
113+ return m_touchInfoMap[touchId].ownership == OwnershipGranted;
114+}
115+
116+void TouchGate::storeTouchEvent(const QTouchEvent *event)
117+{
118+ #if TOUCHGATE_DEBUG
119+ qDebug() << "[TouchGate] Storing" << qPrintable(touchEventToString(event));
120+ #endif
121+
122+ TouchEvent clonedEvent(event);
123+ m_storedEvents.append(std::move(clonedEvent));
124+}
125+
126+void TouchGate::removeTouchFromStoredEvents(int touchId)
127+{
128+ int i = 0;
129+ while (i < m_storedEvents.count()) {
130+ TouchEvent &event = m_storedEvents[i];
131+ bool removed = event.removeTouch(touchId);
132+
133+ if (removed && event.touchPoints.isEmpty()) {
134+ m_storedEvents.removeAt(i);
135+ } else {
136+ ++i;
137+ }
138+ }
139+}
140+
141+void TouchGate::dispatchFullyOwnedEvents()
142+{
143+ while (!m_storedEvents.isEmpty() && eventIsFullyOwned(m_storedEvents.first())) {
144+ TouchEvent event = m_storedEvents.takeFirst();
145+ dispatchTouchEventToTarget(event);
146+ }
147+}
148+
149+#if TOUCHGATE_DEBUG
150+QString TouchGate::oldestPendingTouchIdsString()
151+{
152+ Q_ASSERT(!m_storedEvents.isEmpty());
153+
154+ QString str;
155+
156+ const auto &touchPoints = m_storedEvents.first().touchPoints;
157+ for (int i = 0; i < touchPoints.count(); ++i) {
158+ if (!isTouchPointOwned(touchPoints[i].id())) {
159+ if (!str.isEmpty()) {
160+ str.append(", ");
161+ }
162+ str.append(QString::number(touchPoints[i].id()));
163+ }
164+ }
165+
166+ return str;
167+}
168+#endif
169+
170+bool TouchGate::eventIsFullyOwned(const TouchGate::TouchEvent &event) const
171+{
172+ for (int i = 0; i < event.touchPoints.count(); ++i) {
173+ if (!isTouchPointOwned(event.touchPoints[i].id())) {
174+ return false;
175+ }
176+ }
177+
178+ return true;
179+}
180+
181+void TouchGate::setTargetItem(QQuickItem *item)
182+{
183+ // TODO: changing the target item while dispatch of touch events is taking place will
184+ // create a mess
185+
186+ if (item == m_dispatcher.targetItem())
187+ return;
188+
189+ m_dispatcher.setTargetItem(item);
190+ Q_EMIT targetItemChanged(item);
191+}
192+
193+void TouchGate::dispatchTouchEventToTarget(const TouchEvent &event)
194+{
195+ removeTouchInfoForEndedTouches(event.touchPoints);
196+ m_dispatcher.dispatch(event.eventType,
197+ event.device,
198+ event.modifiers,
199+ event.touchPoints,
200+ event.window,
201+ event.timestamp);
202+}
203+
204+void TouchGate::dispatchTouchEventToTarget(QTouchEvent* event)
205+{
206+ removeTouchInfoForEndedTouches(event->touchPoints());
207+ m_dispatcher.dispatch(event->type(),
208+ event->device(),
209+ event->modifiers(),
210+ event->touchPoints(),
211+ event->window(),
212+ event->timestamp());
213+}
214+
215+void TouchGate::removeTouchInfoForEndedTouches(const QList<QTouchEvent::TouchPoint> &touchPoints)
216+{
217+ for (int i = 0; i < touchPoints.size(); ++i) {\
218+ const QTouchEvent::TouchPoint &touchPoint = touchPoints.at(i);
219+
220+ if (touchPoint.state() == Qt::TouchPointReleased) {
221+ Q_ASSERT(m_touchInfoMap.contains(touchPoint.id()));
222+ Q_ASSERT(m_touchInfoMap[touchPoint.id()].ended);
223+ Q_ASSERT(m_touchInfoMap[touchPoint.id()].ownership == OwnershipGranted);
224+ m_touchInfoMap.remove(touchPoint.id());
225+ }
226+ }
227+}
228+
229+TouchGate::TouchEvent::TouchEvent(const QTouchEvent *event)
230+ : eventType(event->type())
231+ , device(event->device())
232+ , modifiers(event->modifiers())
233+ , touchPoints(event->touchPoints())
234+ , target(qobject_cast<QQuickItem*>(event->target()))
235+ , window(event->window())
236+ , timestamp(event->timestamp())
237+{
238+}
239+
240+bool TouchGate::TouchEvent::removeTouch(int touchId)
241+{
242+ bool removed = false;
243+ for (int i = 0; i < touchPoints.count() && !removed; ++i) {
244+ if (touchPoints[i].id() == touchId) {
245+ touchPoints.removeAt(i);
246+ removed = true;
247+ }
248+ }
249+
250+ return removed;
251+}
plugins/Ubuntu/Gestures/TouchGate.hnew file+110
@@ -0,0 +1,110 @@
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+#include "TouchDispatcher.h"
22+
23+#include <QQuickItem>
24+#include <QList>
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_dispatcher.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+ QQuickItem *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+
84+ void removeTouchInfoForEndedTouches(const QList<QTouchEvent::TouchPoint> &touchPoints);
85+
86+ #if TOUCHGATE_DEBUG
87+ QString oldestPendingTouchIdsString();
88+ #endif
89+
90+ QList<TouchEvent> m_storedEvents;
91+
92+ enum {
93+ OwnershipUndefined,
94+ OwnershipRequested,
95+ OwnershipGranted,
96+ };
97+ class TouchInfo {
98+ public:
99+ TouchInfo() {ownership = OwnershipUndefined; ended = false;}
100+ int ownership;
101+ bool ended;
102+ };
103+ QMap<int, TouchInfo> m_touchInfoMap;
104+
105+ TouchDispatcher m_dispatcher;
106+
107+ friend class tst_TouchGate;
108+};
109+
110+#endif // UBUNTU_TOUCH_GATE_H
tests/mocks/Unity/Notifications/notification.js → plugins/Ubuntu/Gestures/UbuntuGesturesQmlGlobal.hrenamed+6−6
@@ -14,10 +14,10 @@
1414 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1515 */
1616
17−.pragma library
17+#include <QtCore/QtGlobal>
1818
19−var Confirmation = 0;
20−var Ephemeral = 1;
21−var Interactive = 2;
22−var SnapDecision = 3;
23−var PlaceHolder = 4;
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 @@
1919#include "Direction.h"
2020#include "DirectionalDragArea.h"
2121#include "PressedOutsideNotifier.h"
22+#include "TouchGate.h"
2223
2324#include <qqml.h>
2425
@@ -28,10 +29,11 @@ static QObject* directionSingleton(QQmlEngine* engine, QJSEngine* scriptEngine)
2829 return new Direction;
2930}
3031
31−void UbuntuGestureQmlPlugin::registerTypes(const char *uri)
32+void UbuntuGesturesQmlPlugin::registerTypes(const char *uri)
3233{
3334 qmlRegisterSingletonType<Direction>(uri, 0, 1, "Direction", directionSingleton);
3435 qmlRegisterType<DirectionalDragArea>(uri, 0, 1, "DirectionalDragArea");
3536 qmlRegisterType<AxisVelocityCalculator>(uri, 0, 1, "AxisVelocityCalculator");
3637 qmlRegisterType<PressedOutsideNotifier>(uri, 0, 1, "PressedOutsideNotifier");
38+ qmlRegisterType<TouchGate>(uri, 0, 1, "TouchGate");
3739}
plugins/Ubuntu/Gestures/plugin.h+1−1
@@ -19,7 +19,7 @@
1919
2020#include <QtQml/QQmlExtensionPlugin>
2121
22−class UbuntuGestureQmlPlugin : public QQmlExtensionPlugin
22+class UbuntuGesturesQmlPlugin : public QQmlExtensionPlugin
2323{
2424 Q_OBJECT
2525 Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
plugins/Ubuntu/Gestures/qmldir+1−1
@@ -1,3 +1,3 @@
11module Ubuntu.Gestures
2−plugin UbuntuGestureQml
2+plugin UbuntuGesturesQml
33typeinfo Gestures.qmltypes
plugins/Ubuntu/Payments/Payments.qmltypes+1
@@ -37,6 +37,7 @@ Module {
3737 Parameter { name: "error"; type: "string" }
3838 }
3939 Signal { name: "purchaseCompleted" }
40+ Signal { name: "purchaseCancelled" }
4041 Method { name: "start" }
4142 }
4243}
plugins/Unity/DashCommunicator/CMakeLists.txt+8−2
@@ -1,5 +1,6 @@
11include_directories(
22 ${CMAKE_CURRENT_SOURCE_DIR}
3+ ${libunity8-private_SOURCE_DIR}
34)
45
56set(QMLDASHCOMMUNICATORPLUGIN_SRC
@@ -7,13 +8,18 @@ set(QMLDASHCOMMUNICATORPLUGIN_SRC
78 dbusdashcommunicatorservice.cpp
89 dashcommunicatorservice.cpp
910 dashcommunicator.cpp
10− )
11+ dashconnection.cpp
12+)
1113
1214add_library(DashCommunicator-qml MODULE
1315 ${QMLDASHCOMMUNICATORPLUGIN_SRC}
14− )
16+)
1517
1618qt5_use_modules(DashCommunicator-qml DBus Qml)
1719
20+target_link_libraries(DashCommunicator-qml
21+ unity8-private
22+)
23+
1824# export the qmldir and qmltypes files
1925add_unity8_plugin(Unity.DashCommunicator 0.1 Unity/DashCommunicator TARGETS DashCommunicator-qml)
plugins/Unity/DashCommunicator/DashCommunicator.qmltypes+18−5
@@ -9,14 +9,14 @@ import QtQuick.tooling 1.1
99Module {
1010 Component {
1111 name: "DashCommunicator"
12− prototype: "QObject"
12+ prototype: "QThread"
1313 exports: ["Unity.DashCommunicator/DashCommunicator 0.1"]
1414 exportMetaObjectRevisions: [0]
1515 Method {
1616 name: "setCurrentScope"
17− Parameter { name: "scopeId"; type: "string" }
17+ Parameter { name: "index"; type: "int" }
1818 Parameter { name: "animate"; type: "bool" }
19− Parameter { name: "reset"; type: "bool" }
19+ Parameter { name: "isSwipe"; type: "bool" }
2020 }
2121 }
2222 Component {
@@ -26,9 +26,22 @@ Module {
2626 exportMetaObjectRevisions: [0]
2727 Signal {
2828 name: "setCurrentScopeRequested"
29− Parameter { name: "scopeId"; type: "string" }
29+ Parameter { name: "index"; type: "int" }
3030 Parameter { name: "animate"; type: "bool" }
31− Parameter { name: "reset"; type: "bool" }
31+ Parameter { name: "isSwipe"; type: "bool" }
32+ }
33+ }
34+ Component {
35+ name: "QThread"
36+ prototype: "QObject"
37+ Signal { name: "started" }
38+ Signal { name: "finished" }
39+ Method {
40+ name: "start"
41+ Parameter { type: "Priority" }
3242 }
43+ Method { name: "start" }
44+ Method { name: "terminate" }
45+ Method { name: "quit" }
3346 }
3447}
plugins/Unity/DashCommunicator/dashcommunicator.cpp+22−13
@@ -15,29 +15,38 @@
1515 */
1616
1717#include "dashcommunicator.h"
18+#include "dashconnection.h"
1819
1920#include <QObject>
20−#include <QDBusConnection>
21−#include <QDBusInterface>
22−#include <QDebug>
2321
2422DashCommunicator::DashCommunicator(QObject *parent):
25− QObject(parent)
23+ QThread(parent),
24+ m_dashConnection(nullptr),
25+ m_created(false)
2626{
27+ start();
2728}
2829
29−DashCommunicator::~DashCommunicator()
30+void DashCommunicator::setCurrentScope(int index, bool animate, bool isSwipe)
3031{
32+ m_mutex.lock();
33+ if (m_created) {
34+ QMetaObject::invokeMethod(m_dashConnection, "setCurrentScope",
35+ Q_ARG(int, index),
36+ Q_ARG(bool, animate),
37+ Q_ARG(bool, isSwipe));
38+ }
39+ m_mutex.unlock();
3140}
3241
33−
34−void DashCommunicator::setCurrentScope(const QString &scopeId, bool animate, bool isSwipe)
42+void DashCommunicator::run()
3543{
36− QDBusConnection connection = QDBusConnection::sessionBus();
37− QDBusInterface dashIface ("com.canonical.UnityDash",
38− "/com/canonical/UnityDash",
39− "",
40− connection);
44+ m_dashConnection = new DashConnection("com.canonical.UnityDash",
45+ "/com/canonical/UnityDash",
46+ "", this);
47+ m_mutex.lock();
48+ m_created = true;
49+ m_mutex.unlock();
4150
42− dashIface.call("SetCurrentScope", scopeId, animate, isSwipe);
51+ exec();
4352}
plugins/Unity/DashCommunicator/dashcommunicator.h+17−7
@@ -17,19 +17,29 @@
1717#ifndef DASHCOMMUNICATOR_H
1818#define DASHCOMMUNICATOR_H
1919
20−#include <QObject>
20+// Qt
21+#include <QThread>
22+#include <QMutex>
2123
22−class DashCommunicator: public QObject
24+class DashConnection;
25+
26+class DashCommunicator: public QThread
2327{
2428 Q_OBJECT
25− Q_CLASSINFO("D-Bus Interface", "com.canonical.Unity.DashCommunicator")
26−
2729public:
28− DashCommunicator(QObject *parent = 0);
29− ~DashCommunicator();
30+ explicit DashCommunicator(QObject *parent = 0);
31+ ~DashCommunicator() = default;
3032
3133public Q_SLOTS:
32− void setCurrentScope(const QString &scopeId, bool animate, bool isSwipe);
34+ void setCurrentScope(int index, 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;
3343};
3444
3545#endif
plugins/Unity/DashCommunicator/dashcommunicatorservice.h+1−1
@@ -29,7 +29,7 @@ public:
2929 ~DashCommunicatorService();
3030
3131Q_SIGNALS:
32− void setCurrentScopeRequested(const QString &scopeId, bool animate, bool isSwipe);
32+ void setCurrentScopeRequested(int index, bool animate, bool isSwipe);
3333
3434private:
3535 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(int index, bool animate, bool isSwipe)
29+{
30+ if (dbusInterface()) {
31+ dbusInterface()->asyncCall("SetCurrentScope", index, 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(int index, bool animate, bool isSwipe);
32+};
33+
34+#endif
plugins/Unity/DashCommunicator/dbusdashcommunicatorservice.cpp+3−7
@@ -21,19 +21,15 @@
2121#include <QDebug>
2222
2323DBusDashCommunicatorService::DBusDashCommunicatorService(QObject *parent):
24− QObject(parent)
24+ UnityDBusObject("/com/canonical/UnityDash", "com.canonical.UnityDash", false, parent)
2525{
26− QDBusConnection connection = QDBusConnection::sessionBus();
27−
28− connection.registerService("com.canonical.UnityDash");
29− connection.registerObject("/com/canonical/UnityDash", this, QDBusConnection::ExportScriptableSlots);
3026}
3127
3228DBusDashCommunicatorService::~DBusDashCommunicatorService()
3329{
3430}
3531
36−void DBusDashCommunicatorService::SetCurrentScope(const QString &scopeId, bool animate, bool isSwipe)
32+void DBusDashCommunicatorService::SetCurrentScope(int index, bool animate, bool isSwipe)
3733{
38− Q_EMIT setCurrentScopeRequested(scopeId, animate, isSwipe);
34+ Q_EMIT setCurrentScopeRequested(index, animate, isSwipe);
3935}
plugins/Unity/DashCommunicator/dbusdashcommunicatorservice.h+4−4
@@ -17,9 +17,9 @@
1717#ifndef DBUSDASHCOMMUNICATORSERVICE_H
1818#define DBUSDASHCOMMUNICATORSERVICE_H
1919
20−#include <QObject>
20+#include "unitydbusobject.h"
2121
22−class DBusDashCommunicatorService: public QObject
22+class DBusDashCommunicatorService: public UnityDBusObject
2323{
2424 Q_OBJECT
2525 Q_CLASSINFO("D-Bus Interface", "com.canonical.Unity.DashCommunicator")
@@ -29,10 +29,10 @@ public:
2929 ~DBusDashCommunicatorService();
3030
3131Q_SIGNALS:
32− void setCurrentScopeRequested(const QString &scopeId, bool animate, bool isSwipe);
32+ void setCurrentScopeRequested(int index, bool animate, bool isSwipe);
3333
3434public Q_SLOTS:
35− Q_SCRIPTABLE void SetCurrentScope(const QString &scopeId, bool animate, bool isSwipe);
35+ Q_SCRIPTABLE void SetCurrentScope(int index, bool animate, bool isSwipe);
3636
3737};
3838
plugins/Unity/Indicators/CMakeLists.txt+1
@@ -24,6 +24,7 @@ set(IndicatorsQML_SOURCES
2424 modelprinter.cpp
2525 plugin.cpp
2626 rootactionstate.cpp
27+ sharedunitymenumodel.cpp
2728 unitymenumodelcache.cpp
2829 unitymenumodelstack.cpp
2930 visibleindicatorsmodel.cpp
plugins/Unity/Indicators/Indicators.qmltypes+12−11
@@ -99,10 +99,8 @@ Module {
9999 values: {
100100 "Identifier": 0,
101101 "Position": 1,
102− "WidgetSource": 2,
103− "PageSource": 3,
104− "IndicatorProperties": 4,
105− "IsVisible": 5
102+ "IndicatorProperties": 2,
103+ "IsVisible": 3
106104 }
107105 }
108106 }
@@ -209,6 +207,16 @@ Module {
209207 Signal { name: "updated" }
210208 Signal { name: "indexChanged" }
211209 }
210+ Component {
211+ name: "SharedUnityMenuModel"
212+ prototype: "QObject"
213+ exports: ["Unity.Indicators/SharedUnityMenuModel 0.1"]
214+ exportMetaObjectRevisions: [0]
215+ Property { name: "busName"; type: "QByteArray" }
216+ Property { name: "menuObjectPath"; type: "QByteArray" }
217+ Property { name: "actions"; type: "QVariantMap" }
218+ Property { name: "model"; type: "UnityMenuModel"; isReadonly: true; isPointer: true }
219+ }
212220 Component {
213221 name: "UnityMenuModelCache"
214222 prototype: "QObject"
@@ -216,13 +224,6 @@ Module {
216224 isCreatable: false
217225 isSingleton: true
218226 exportMetaObjectRevisions: [0]
219− Method {
220− name: "model"
221− type: "UnityMenuModel*"
222− Parameter { name: "bus"; type: "QByteArray" }
223− Parameter { name: "path"; type: "QByteArray" }
224− Parameter { name: "actions"; type: "QVariantMap" }
225− }
226227 Method {
227228 name: "contains"
228229 type: "bool"
plugins/Unity/Indicators/indicators.h−2
@@ -74,8 +74,6 @@ public:
7474 enum Roles {
7575 Identifier = 0,
7676 Position,
77− WidgetSource,
78− PageSource,
7977 IndicatorProperties,
8078 IsVisible
8179 };
plugins/Unity/Indicators/indicatorsmodel.cpp−6
@@ -202,8 +202,6 @@ QHash<int, QByteArray> IndicatorsModel::roleNames() const
202202 {
203203 roles[IndicatorsModelRole::Identifier] = "identifier";
204204 roles[IndicatorsModelRole::Position] = "position";
205− roles[IndicatorsModelRole::WidgetSource] = "widgetSource";
206− roles[IndicatorsModelRole::PageSource] = "pageSource";
207205 roles[IndicatorsModelRole::IndicatorProperties] = "indicatorProperties";
208206 }
209207 return roles;
@@ -248,10 +246,6 @@ QVariant IndicatorsModel::data(const QModelIndex &index, int role) const
248246 return QVariant(indicator->indicatorProperties());
249247 }
250248 break;
251− case IndicatorsModelRole::WidgetSource:
252− return qmlDirectory()+"/Panel/Indicators/DefaultIndicatorWidget.qml";
253− case IndicatorsModelRole::PageSource:
254− return qmlDirectory()+"/Panel/Indicators/DefaultIndicatorPage.qml";
255249 default:
256250 break;
257251 }
plugins/Unity/Indicators/plugin.cpp+8−2
@@ -30,18 +30,23 @@
3030#include "menucontentactivator.h"
3131#include "modelprinter.h"
3232#include "rootactionstate.h"
33+#include "sharedunitymenumodel.h"
3334#include "unitymenumodelcache.h"
3435#include "unitymenumodelstack.h"
3536#include "visibleindicatorsmodel.h"
3637
38+#include <unitymenumodel.h>
39+
3740static QObject* menuModelCacheSingleton(QQmlEngine* engine, QJSEngine* scriptEngine) {
3841 Q_UNUSED(engine);
3942 Q_UNUSED(scriptEngine);
40− return new UnityMenuModelCache;
43+ return UnityMenuModelCache::singleton();
4144}
4245
43−void Indicators2Plugin::registerTypes(const char *uri)
46+void IndicatorsPlugin::registerTypes(const char *uri)
4447{
48+ qRegisterMetaType<UnityMenuModel*>("UnityMenuModel*");
49+
4550 qmlRegisterType<IndicatorsManager>(uri, 0, 1, "IndicatorsManager");
4651 qmlRegisterType<IndicatorsModel>(uri, 0, 1, "IndicatorsModel");
4752 qmlRegisterType<MenuContentActivator>(uri, 0, 1, "MenuContentActivator");
@@ -49,6 +54,7 @@ void Indicators2Plugin::registerTypes(const char *uri)
4954 qmlRegisterType<RootActionState>(uri, 0, 1, "RootActionState");
5055 qmlRegisterType<ModelPrinter>(uri, 0, 1, "ModelPrinter");
5156 qmlRegisterType<VisibleIndicatorsModel>(uri, 0, 1, "VisibleIndicatorsModel");
57+ qmlRegisterType<SharedUnityMenuModel>(uri, 0, 1, "SharedUnityMenuModel");
5258
5359 qmlRegisterSingletonType<UnityMenuModelCache>(uri, 0, 1, "UnityMenuModelCache", menuModelCacheSingleton);
5460
plugins/Unity/Indicators/plugin.h+1−1
@@ -22,7 +22,7 @@
2222
2323#include <QtQml/QQmlExtensionPlugin>
2424
25−class Indicators2Plugin : public QQmlExtensionPlugin
25+class IndicatorsPlugin : public QQmlExtensionPlugin
2626{
2727 Q_OBJECT
2828 Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
plugins/Unity/Indicators/rootactionstate.cpp+1−1
@@ -156,7 +156,7 @@ QString RootActionState::accessibleName() const
156156 return m_cachedState.value("accessible-desc", QVariant::fromValue(QString())).toString();
157157}
158158
159−bool RootActionState::isVisible() const
159+bool RootActionState::indicatorVisible() const
160160{
161161 if (!isValid()) return false;
162162
plugins/Unity/Indicators/rootactionstate.h+4−4
@@ -37,7 +37,7 @@ class UNITYINDICATORS_EXPORT RootActionState : public ActionStateParser
3737 Q_PROPERTY(QString rightLabel READ rightLabel NOTIFY rightLabelChanged)
3838 Q_PROPERTY(QStringList icons READ icons NOTIFY iconsChanged)
3939 Q_PROPERTY(QString accessibleName READ accessibleName NOTIFY accessibleNameChanged)
40− Q_PROPERTY(bool visible READ isVisible NOTIFY visibleChanged)
40+ Q_PROPERTY(bool indicatorVisible READ indicatorVisible NOTIFY indicatorVisibleChanged)
4141public:
4242 RootActionState(QObject *parent = 0);
4343 virtual ~RootActionState();
@@ -54,10 +54,10 @@ public:
5454 QString rightLabel() const;
5555 QStringList icons() const;
5656 QString accessibleName() const;
57− bool isVisible() const;
57+ bool indicatorVisible() const;
5858
5959 // from ActionStateParser
60− virtual QVariant toQVariant(GVariant* state) const;
60+ virtual QVariant toQVariant(GVariant* state) const override;
6161
6262Q_SIGNALS:
6363 void updated();
@@ -71,7 +71,7 @@ Q_SIGNALS:
7171 void rightLabelChanged();
7272 void iconsChanged();
7373 void accessibleNameChanged();
74− void visibleChanged();
74+ void indicatorVisibleChanged();
7575
7676private Q_SLOTS:
7777 void onModelRowsAdded(const QModelIndex& parent, int start, int end);
plugins/Unity/Indicators/sharedunitymenumodel.cppnew file+92
@@ -0,0 +1,92 @@
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+ */
17+
18+#include "sharedunitymenumodel.h"
19+#include "unitymenumodelcache.h"
20+
21+#include <unitymenumodel.h>
22+
23+SharedUnityMenuModel::SharedUnityMenuModel(QObject* parent)
24+ : QObject(parent)
25+{
26+}
27+
28+QByteArray SharedUnityMenuModel::busName() const
29+{
30+ return m_busName;
31+}
32+
33+void SharedUnityMenuModel::setBusName(const QByteArray& busName)
34+{
35+ if (m_busName != busName) {
36+ m_busName = busName;
37+ Q_EMIT busNameChanged();
38+ initialize();
39+ }
40+}
41+
42+QByteArray SharedUnityMenuModel::menuObjectPath() const
43+{
44+ return m_menuObjectPath;
45+}
46+
47+void SharedUnityMenuModel::setMenuObjectPath(const QByteArray& menuObjectPath)
48+{
49+ if (m_menuObjectPath != menuObjectPath) {
50+ m_menuObjectPath = menuObjectPath;
51+ Q_EMIT menuObjectPathChanged();
52+ initialize();
53+ }
54+}
55+
56+QVariantMap SharedUnityMenuModel::actions() const
57+{
58+ return m_actions;
59+}
60+
61+void SharedUnityMenuModel::setActions(const QVariantMap& actions)
62+{
63+ if (m_actions != actions) {
64+ m_actions = actions;
65+ Q_EMIT actionsChanged();
66+ initialize();
67+ }
68+}
69+
70+UnityMenuModel* SharedUnityMenuModel::model() const
71+{
72+ return m_model ? m_model.data() : nullptr;
73+}
74+
75+void SharedUnityMenuModel::initialize()
76+{
77+ if (m_busName.isEmpty() || m_menuObjectPath.isEmpty() || m_actions.isEmpty()) {
78+ if (!m_model.isNull()) {
79+ m_model.clear();
80+ Q_EMIT modelChanged();
81+ }
82+ } else {
83+ QSharedPointer<UnityMenuModel> model = UnityMenuModelCache::singleton()->model(m_menuObjectPath);
84+ if (model != m_model) {
85+ if (model->busName() != m_busName) model->setBusName(m_busName);
86+ if (model->actions() != m_actions) model->setActions(m_actions);
87+
88+ m_model = model;
89+ Q_EMIT modelChanged();
90+ }
91+ }
92+}
plugins/Unity/Indicators/sharedunitymenumodel.hnew 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+ */
17+
18+#ifndef SHAREDUNITYMENUMODEL_H
19+#define SHAREDUNITYMENUMODEL_H
20+
21+#include "unityindicatorsglobal.h"
22+
23+#include <QObject>
24+#include <QSharedPointer>
25+#include <QVariantMap>
26+
27+class UnityMenuModel;
28+
29+class UNITYINDICATORS_EXPORT SharedUnityMenuModel : public QObject
30+{
31+ Q_OBJECT
32+ Q_PROPERTY(QByteArray busName READ busName WRITE setBusName NOTIFY busNameChanged)
33+ Q_PROPERTY(QByteArray menuObjectPath READ menuObjectPath WRITE setMenuObjectPath NOTIFY menuObjectPathChanged)
34+ Q_PROPERTY(QVariantMap actions READ actions WRITE setActions NOTIFY actionsChanged)
35+ Q_PROPERTY(UnityMenuModel* model READ model NOTIFY modelChanged)
36+
37+public:
38+ SharedUnityMenuModel(QObject* parent = nullptr);
39+
40+ QByteArray busName() const;
41+ void setBusName(const QByteArray&);
42+
43+ QByteArray menuObjectPath() const;
44+ void setMenuObjectPath(const QByteArray&);
45+
46+ QVariantMap actions() const;
47+ void setActions(const QVariantMap&);
48+
49+ UnityMenuModel* model() const;
50+
51+Q_SIGNALS:
52+ void busNameChanged();
53+ void menuObjectPathChanged();
54+ void actionsChanged();
55+ void modelChanged();
56+
57+private:
58+ void initialize();
59+
60+ QByteArray m_busName;
61+ QByteArray m_menuObjectPath;
62+ QVariantMap m_actions;
63+ QSharedPointer<UnityMenuModel> m_model;
64+};
65+
66+#endif // SHAREDUNITYMENUMODEL_H
plugins/Unity/Indicators/unitymenumodelcache.cpp+25−14
@@ -20,34 +20,45 @@
2020#include "unitymenumodelcache.h"
2121#include <unitymenumodel.h>
2222
23−UnityMenuModelCache::UnityMenuModelCache(QObject* parent)
24− : QObject(parent)
23+#include <QQmlEngine>
24+
25+QPointer<UnityMenuModelCache> UnityMenuModelCache::theCache = nullptr;
26+
27+UnityMenuModelCache* UnityMenuModelCache::singleton()
2528{
29+ if (theCache.isNull()) {
30+ theCache = new UnityMenuModelCache();
31+ }
32+ return theCache.data();
2633}
2734
28−UnityMenuModelCache::~UnityMenuModelCache()
35+UnityMenuModelCache::UnityMenuModelCache(QObject* parent)
36+ : QObject(parent)
2937{
3038}
3139
32−UnityMenuModel* UnityMenuModelCache::model(const QByteArray& bus,
33− const QByteArray& path,
34− const QVariantMap& actions)
40+QSharedPointer<UnityMenuModel> UnityMenuModelCache::model(const QByteArray& path)
3541{
3642 if (m_registry.contains(path))
3743 return m_registry[path];
3844
39− UnityMenuModel* menuModel = new UnityMenuModel;
40− connect(menuModel, &QObject::destroyed, this, [menuModel, this](QObject*) {
41− QList<QByteArray> keys = m_registry.keys(menuModel);
42− Q_FOREACH(const QByteArray& key, keys) {
43− m_registry.remove(key);
45+ UnityMenuModel* model = new UnityMenuModel;
46+ QQmlEngine::setObjectOwnership(model, QQmlEngine::CppOwnership);
47+
48+ QSharedPointer<UnityMenuModel> menuModel(model);
49+ connect(model, &QObject::destroyed, this, [this] {
50+ QMutableHashIterator<QByteArray, QWeakPointer<UnityMenuModel>> iter(m_registry);
51+ while(iter.hasNext()) {
52+ auto keyVal = iter.next();
53+ if (keyVal.value().isNull()) {
54+ iter.remove();
55+ break;
56+ }
4457 }
4558 });
46− m_registry[path] = menuModel;
59+ m_registry[path] = menuModel.toWeakRef();
4760
48− menuModel->setBusName(bus);
4961 menuModel->setMenuObjectPath(path);
50− menuModel->setActions(actions);
5162 return menuModel;
5263}
5364
plugins/Unity/Indicators/unitymenumodelcache.h+11−7
@@ -24,6 +24,8 @@
2424
2525#include <QObject>
2626#include <QHash>
27+#include <QPointer>
28+#include <QWeakPointer>
2729
2830class UnityMenuModel;
2931
@@ -32,15 +34,17 @@ class UNITYINDICATORS_EXPORT UnityMenuModelCache : public QObject
3234 Q_OBJECT
3335public:
3436 UnityMenuModelCache(QObject*parent=nullptr);
35− ~UnityMenuModelCache();
3637
37− Q_INVOKABLE UnityMenuModel* model(const QByteArray& bus,
38− const QByteArray& path,
39− const QVariantMap& actions);
40− Q_INVOKABLE bool contains(const QByteArray& path);
38+ static UnityMenuModelCache* singleton();
4139
42−private:
43− QHash<QByteArray, UnityMenuModel*> m_registry;
40+ virtual QSharedPointer<UnityMenuModel> model(const QByteArray& path);
41+
42+ // for tests use
43+ Q_INVOKABLE virtual bool contains(const QByteArray& path);
44+
45+protected:
46+ QHash<QByteArray, QWeakPointer<UnityMenuModel>> m_registry;
47+ static QPointer<UnityMenuModelCache> theCache;
4448};
4549
4650#endif // UNITYMENUMODELCACHE_H
plugins/Unity/Indicators/visibleindicatorsmodel.cpp−2
@@ -33,8 +33,6 @@ QHash<int, QByteArray> VisibleIndicatorsModel::roleNames() const
3333 {
3434 roles[IndicatorsModelRole::Identifier] = "identifier";
3535 roles[IndicatorsModelRole::Position] = "position";
36− roles[IndicatorsModelRole::WidgetSource] = "widgetSource";
37− roles[IndicatorsModelRole::PageSource] = "pageSource";
3836 roles[IndicatorsModelRole::IndicatorProperties] = "indicatorProperties";
3937 roles[IndicatorsModelRole::IsVisible] = "isVisible";
4038 }
plugins/Unity/Launcher/CMakeLists.txt+7−3
@@ -1,6 +1,6 @@
11include(FindPkgConfig)
2−pkg_check_modules(LAUNCHER_API REQUIRED unity-shell-launcher=4)
3−pkg_check_modules(APPLICATION_API REQUIRED unity-shell-application=4)
2+pkg_check_modules(LAUNCHER_API REQUIRED unity-shell-launcher=5)
3+pkg_check_modules(APPLICATION_API REQUIRED unity-shell-application=5)
44pkg_check_modules(GSETTINGS_QT REQUIRED gsettings-qt)
55
66add_definitions(-DSM_BUSNAME=systemBus)
@@ -9,6 +9,7 @@ include_directories(
99 ${CMAKE_CURRENT_SOURCE_DIR}
1010 ${CMAKE_SOURCE_DIR}/plugins/AccountsService
1111 ${GSETTINGS_QT_INCLUDE_DIRS}
12+ ${libunity8-private_SOURCE_DIR}
1213)
1314
1415set(QMLLAUNCHERPLUGIN_SRC
@@ -30,7 +31,10 @@ add_library(UnityLauncher-qml MODULE
3031 ${QMLLAUNCHERPLUGIN_SRC}
3132 )
3233
33−target_link_libraries(UnityLauncher-qml ${GSETTINGS_QT_LDFLAGS})
34+target_link_libraries(UnityLauncher-qml
35+ unity8-private
36+ ${GSETTINGS_QT_LDFLAGS}
37+ )
3438
3539qt5_use_modules(UnityLauncher-qml DBus Qml Gui)
3640
plugins/Unity/Launcher/Launcher.qmltypes+17−12
@@ -13,14 +13,6 @@ Module {
1313 exports: ["Unity.Launcher/LauncherItem 0.1"]
1414 isCreatable: false
1515 exportMetaObjectRevisions: [0]
16− Signal {
17− name: "favoriteChanged"
18− Parameter { name: "favorite"; type: "bool" }
19− }
20− Signal {
21− name: "runningChanged"
22− Parameter { name: "running"; type: "bool" }
23− }
2416 }
2517 Component {
2618 name: "LauncherModel"
@@ -29,6 +21,10 @@ Module {
2921 isCreatable: false
3022 isSingleton: true
3123 exportMetaObjectRevisions: [0]
24+ Method {
25+ name: "requestRemove"
26+ Parameter { name: "appId"; type: "string" }
27+ }
3228 Method {
3329 name: "get"
3430 type: "unity::shell::launcher::LauncherItemInterface*"
@@ -48,10 +44,6 @@ Module {
4844 name: "pin"
4945 Parameter { name: "appId"; type: "string" }
5046 }
51− Method {
52− name: "requestRemove"
53− Parameter { name: "appId"; type: "string" }
54− }
5547 Method {
5648 name: "quickListActionInvoked"
5749 Parameter { name: "appId"; type: "string" }
@@ -88,6 +80,7 @@ Module {
8880 Property { name: "recent"; type: "bool"; isReadonly: true }
8981 Property { name: "progress"; type: "int"; isReadonly: true }
9082 Property { name: "count"; type: "int"; isReadonly: true }
83+ Property { name: "countVisible"; type: "bool"; isReadonly: true }
9184 Property { name: "focused"; type: "bool"; isReadonly: true }
9285 Property {
9386 name: "quickList"
@@ -95,6 +88,14 @@ Module {
9588 isReadonly: true
9689 isPointer: true
9790 }
91+ Signal {
92+ name: "nameChanged"
93+ Parameter { name: "name"; type: "string" }
94+ }
95+ Signal {
96+ name: "iconChanged"
97+ Parameter { name: "icon"; type: "string" }
98+ }
9899 Signal {
99100 name: "pinnedChanged"
100101 Parameter { name: "pinned"; type: "bool" }
@@ -115,6 +116,10 @@ Module {
115116 name: "countChanged"
116117 Parameter { name: "count"; type: "int" }
117118 }
119+ Signal {
120+ name: "countVisibleChanged"
121+ Parameter { name: "countVisible"; type: "bool" }
122+ }
118123 Signal {
119124 name: "focusedChanged"
120125 Parameter { name: "focused"; type: "bool" }
plugins/Unity/Launcher/dbusinterface.cpp+5−38
@@ -27,25 +27,13 @@
2727#include <QDebug>
2828
2929DBusInterface::DBusInterface(LauncherModel *parent):
30− QDBusVirtualObject(parent),
30+ UnityDBusVirtualObject("/com/canonical/Unity/Launcher", "com.canonical.Unity.Launcher", true, parent),
3131 m_launcherModel(parent)
3232{
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− }
4133}
4234
4335DBusInterface::~DBusInterface()
4436{
45− /* Remove oursevles from DBus */
46− QDBusConnection con = QDBusConnection::sessionBus();
47− con.unregisterService("com.canonical.Unity.Launcher");
48− con.unregisterObject("/com/canonical/Unity/Launcher");
4937}
5038
5139QString DBusInterface::introspect(const QString &path) const
@@ -183,16 +171,16 @@ bool DBusInterface::handleMessage(const QDBusMessage& message, const QDBusConnec
183171 }
184172 } else if (message.member() == "Set") {
185173 if (message.arguments()[1].toString() == "count") {
186− int newCount = message.arguments()[2].toInt();
174+ int newCount = message.arguments()[2].value<QDBusVariant>().variant().toInt();
187175 if (!item || newCount != item->count()) {
188176 Q_EMIT countChanged(appid, newCount);
189− emitPropChangedDbus(appid, "count", QVariant(newCount));
177+ notifyPropertyChanged("com.canonical.Unity.Launcher.Item", encodeAppId(appid), "count", QVariant(newCount));
190178 }
191179 } else if (message.arguments()[1].toString() == "countVisible") {
192− bool newVisible = message.arguments()[2].toBool();
180+ bool newVisible = message.arguments()[2].value<QDBusVariant>().variant().toBool();
193181 if (!item || newVisible != item->countVisible()) {
194182 Q_EMIT countVisibleChanged(appid, newVisible);
195− emitPropChangedDbus(appid, "countVisible", newVisible);
183+ notifyPropertyChanged("com.canonical.Unity.Launcher.Item", encodeAppId(appid), "countVisible", newVisible);
196184 }
197185 }
198186 } else if (message.member() == "GetAll") {
@@ -209,24 +197,3 @@ bool DBusInterface::handleMessage(const QDBusMessage& message, const QDBusConnec
209197 QDBusMessage reply = message.createReply(retval);
210198 return connection.send(reply);
211199}
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.h+2−5
@@ -18,12 +18,11 @@
1818 */
1919
2020#include "launcheritem.h"
21−
22−#include <QDBusVirtualObject>
21+#include "unitydbusvirtualobject.h"
2322
2423class LauncherModel;
2524
26−class DBusInterface: public QDBusVirtualObject
25+class DBusInterface: public UnityDBusVirtualObject
2726{
2827 Q_OBJECT
2928public:
@@ -43,8 +42,6 @@ private:
4342 static QString decodeAppId(const QString& path);
4443 static QString encodeAppId(const QString& appId);
4544
46− void emitPropChangedDbus(const QString& appId, const QString& property, const QVariant &value);
47−
4845 LauncherModel *m_launcherModel;
4946
5047};
plugins/Unity/Launcher/desktopfilehandler.cpp+3−1
@@ -70,7 +70,7 @@ void DesktopFileHandler::load()
7070
7171 QStringList searchDirs = QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation);
7272#ifdef LAUNCHER_TESTING
73− searchDirs << "";
73+ searchDirs << ".";
7474#endif
7575
7676 QString path;
@@ -106,6 +106,7 @@ QString DesktopFileHandler::displayName() const
106106 }
107107
108108 QSettings settings(m_filename, QSettings::IniFormat);
109+ settings.setIniCodec("UTF-8");
109110 settings.beginGroup("Desktop Entry");
110111
111112 // First try to find Name[xx_YY] and Name[xx] in .desktop file
@@ -138,6 +139,7 @@ QString DesktopFileHandler::icon() const
138139 }
139140
140141 QSettings settings(m_filename, QSettings::IniFormat);
142+ settings.setIniCodec("UTF-8");
141143 settings.beginGroup("Desktop Entry");
142144 QString iconString = settings.value("Icon").toString();
143145 QString pathString = settings.value("Path").toString();
plugins/Unity/Launcher/gsettings.cpp+11−7
@@ -19,22 +19,20 @@
1919
2020#include "gsettings.h"
2121
22−#include <QGSettings>
2322#include <QVariant>
2423
2524GSettings::GSettings(QObject *parent):
2625 QObject(parent)
2726{
28−
27+ m_gSettings = new QGSettings("com.canonical.Unity.Launcher", "/com/canonical/unity/launcher/", this);
28+ connect(m_gSettings, &QGSettings::changed, this, &GSettings::onSettingsChanged);
2929}
3030
3131QStringList GSettings::storedApplications() const
3232{
3333 QStringList storedApps;
3434
35− QGSettings gSettings("com.canonical.Unity.Launcher", "/com/canonical/unity/launcher/");
36−
37− Q_FOREACH(const QString &entry, gSettings.get("items").toStringList()) {
35+ Q_FOREACH(const QString &entry, m_gSettings->get("items").toStringList()) {
3836 if (entry.startsWith("application:///")) {
3937 // convert legacy entries to new world appids
4038 QString appId = entry;
@@ -57,10 +55,16 @@ QStringList GSettings::storedApplications() const
5755
5856void GSettings::setStoredApplications(const QStringList &storedApplications)
5957{
60− QGSettings gSettings("com.canonical.Unity.Launcher", "/com/canonical/unity/launcher/");
6158 QStringList gSettingsList;
6259 Q_FOREACH(const QString &entry, storedApplications) {
6360 gSettingsList << QString("appid://%1").arg(entry);
6461 }
65− gSettings.set("items", gSettingsList);
62+ m_gSettings->set("items", gSettingsList);
63+}
64+
65+void GSettings::onSettingsChanged(const QString &key)
66+{
67+ if (key == "items") {
68+ Q_EMIT changed();
69+ }
6670}
plugins/Unity/Launcher/gsettings.h+10−1
@@ -22,7 +22,7 @@
2222
2323#include <QObject>
2424#include <QStringList>
25−
25+#include <QGSettings>
2626
2727class GSettings: public QObject
2828{
@@ -32,6 +32,15 @@ public:
3232
3333 QStringList storedApplications() const;
3434 void setStoredApplications(const QStringList &storedApplications);
35+
36+Q_SIGNALS:
37+ void changed();
38+
39+private Q_SLOTS:
40+ void onSettingsChanged(const QString &key);
41+
42+private:
43+ QGSettings *m_gSettings;
3544};
3645
3746#endif
plugins/Unity/Launcher/launchermodel.cpp+86−32
@@ -1,5 +1,5 @@
11/*
2− * Copyright 2013 Canonical Ltd.
2+ * Copyright 2013-2014 Canonical Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU Lesser General Public License as published by
@@ -40,20 +40,9 @@ LauncherModel::LauncherModel(QObject *parent):
4040 connect(m_dbusIface, &DBusInterface::countVisibleChanged, this, &LauncherModel::countVisibleChanged);
4141 connect(m_dbusIface, &DBusInterface::refreshCalled, this, &LauncherModel::refresh);
4242
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− }
43+ connect(m_settings, &GSettings::changed, this, &LauncherModel::refresh);
4944
50− LauncherItem *item = new LauncherItem(entry,
51− desktopFile.displayName(),
52− desktopFile.icon(),
53− this);
54− item->setPinned(true);
55− m_list.append(item);
56− }
45+ refresh();
5746}
5847
5948LauncherModel::~LauncherModel()
@@ -173,22 +162,7 @@ void LauncherModel::pin(const QString &appId, int index)
173162
174163void LauncherModel::requestRemove(const QString &appId)
175164{
176− int index = findApplication(appId);
177− if (index < 0) {
178− return;
179− }
180−
181− if (m_appManager->findApplication(appId)) {
182− m_list.at(index)->setPinned(false);
183− QModelIndex modelIndex = this->index(index);
184− Q_EMIT dataChanged(modelIndex, modelIndex, QVector<int>() << RolePinned);
185− return;
186− }
187−
188− beginRemoveRows(QModelIndex(), index, index);
189− m_list.takeAt(index)->deleteLater();
190− endRemoveRows();
191−
165+ unpin(appId);
192166 storeAppList();
193167}
194168
@@ -299,6 +273,26 @@ void LauncherModel::storeAppList()
299273 m_settings->setStoredApplications(appIds);
300274}
301275
276+void LauncherModel::unpin(const QString &appId)
277+{
278+ int index = findApplication(appId);
279+ if (index < 0) {
280+ return;
281+ }
282+
283+ if (m_appManager->findApplication(appId)) {
284+ if (m_list.at(index)->pinned()) {
285+ m_list.at(index)->setPinned(false);
286+ QModelIndex modelIndex = this->index(index);
287+ Q_EMIT dataChanged(modelIndex, modelIndex, QVector<int>() << RolePinned);
288+ }
289+ } else {
290+ beginRemoveRows(QModelIndex(), index, index);
291+ m_list.takeAt(index)->deleteLater();
292+ endRemoveRows();
293+ }
294+}
295+
302296int LauncherModel::findApplication(const QString &appId)
303297{
304298 for (int i = 0; i < m_list.count(); ++i) {
@@ -320,7 +314,6 @@ void LauncherModel::progressChanged(const QString &appId, int progress)
320314 }
321315}
322316
323−
324317void LauncherModel::countChanged(const QString &appId, int count)
325318{
326319 int idx = findApplication(appId);
@@ -356,16 +349,22 @@ void LauncherModel::countVisibleChanged(const QString &appId, int countVisible)
356349 beginInsertRows(QModelIndex(), m_list.count(), m_list.count());
357350 m_list.append(item);
358351 endInsertRows();
352+ Q_EMIT hint();
359353 }
360354 }
361355}
362356
363357void LauncherModel::refresh()
364358{
359+ // First walk through all the existing items and see if we need to remove something
365360 QList<LauncherItem*> toBeRemoved;
366361 Q_FOREACH (LauncherItem* item, m_list) {
367362 DesktopFileHandler desktopFile(item->appId());
368363 if (!desktopFile.isValid()) {
364+ // Desktop file not available for this app => drop it!
365+ toBeRemoved << item;
366+ } else if (!m_settings->storedApplications().contains(item->appId())) {
367+ // Item not in settings any more => drop it!
369368 toBeRemoved << item;
370369 } else {
371370 int idx = m_list.indexOf(item);
@@ -376,7 +375,62 @@ void LauncherModel::refresh()
376375 }
377376
378377 Q_FOREACH (LauncherItem* item, toBeRemoved) {
379− requestRemove(item->appId());
378+ unpin(item->appId());
379+ }
380+
381+ bool changed = toBeRemoved.count() > 0;
382+
383+ // This brings the Launcher into sync with the settings backend again. There's an issue though:
384+ // If we can't find a .desktop file for an entry we need to skip it. That makes our settingsIndex
385+ // go out of sync with the actual index of items. So let's also use an addedIndex which reflects
386+ // the settingsIndex minus the skipped items.
387+ int addedIndex = 0;
388+
389+ // Now walk through settings and see if we need to add something
390+ for (int settingsIndex = 0; settingsIndex < m_settings->storedApplications().count(); ++settingsIndex) {
391+ QString entry = m_settings->storedApplications().at(settingsIndex);
392+ int itemIndex = -1;
393+ for (int i = 0; i < m_list.count(); ++i) {
394+ if (m_list.at(i)->appId() == entry) {
395+ itemIndex = i;
396+ break;
397+ }
398+ }
399+
400+ if (itemIndex == -1) {
401+ // Need to add it. Just add it into the addedIndex to keep same ordering as the list
402+ // in the settings.
403+ DesktopFileHandler desktopFile(entry);
404+ if (!desktopFile.isValid()) {
405+ qWarning() << "Couldn't find a .desktop file for" << entry << ". Skipping...";
406+ continue;
407+ }
408+
409+ LauncherItem *item = new LauncherItem(entry,
410+ desktopFile.displayName(),
411+ desktopFile.icon(),
412+ this);
413+ item->setPinned(true);
414+ beginInsertRows(QModelIndex(), addedIndex, addedIndex);
415+ m_list.insert(addedIndex, item);
416+ endInsertRows();
417+ changed = true;
418+ } else if (itemIndex != addedIndex) {
419+ // The item is already there, but it is in a different place than in the settings.
420+ // Move it to the addedIndex
421+ beginMoveRows(QModelIndex(), itemIndex, itemIndex, QModelIndex(), addedIndex);
422+ m_list.move(itemIndex, addedIndex);
423+ endMoveRows();
424+ changed = true;
425+ }
426+
427+ // Just like settingsIndex, this will increase with every item, except the ones we
428+ // skipped with the "continue" call above.
429+ addedIndex++;
430+ }
431+
432+ if (changed) {
433+ Q_EMIT hint();
380434 }
381435}
382436
plugins/Unity/Launcher/launchermodel.h+5−1
@@ -1,5 +1,5 @@
11/*
2− * Copyright 2013 Canonical Ltd.
2+ * Copyright 2013-2014 Canonical Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU Lesser General Public License as published by
@@ -62,6 +62,8 @@ public Q_SLOTS:
6262private:
6363 void storeAppList();
6464
65+ void unpin(const QString &appId);
66+
6567private Q_SLOTS:
6668 void countChanged(const QString &appId, int count);
6769 void countVisibleChanged(const QString &appId, int count);
@@ -79,6 +81,8 @@ private:
7981 DBusInterface *m_dbusIface;
8082
8183 ApplicationManagerInterface *m_appManager;
84+
85+ friend class LauncherModelTest;
8286};
8387
8488#endif // LAUNCHERMODEL_H
plugins/Unity/Session/CMakeLists.txt+5−1
@@ -5,6 +5,7 @@ pkg_search_module(GIO REQUIRED gio-2.0)
55include_directories(
66 ${CMAKE_CURRENT_SOURCE_DIR}
77 ${GIO_INCLUDE_DIRS}
8+ ${libunity8-private_SOURCE_DIR}
89)
910
1011set(QMLSESSIONPLUGIN_SRC
@@ -18,7 +19,10 @@ add_library(UnitySession-qml MODULE
1819 )
1920
2021qt5_use_modules(UnitySession-qml DBus Qml)
21−target_link_libraries(UnitySession-qml ${GIO_LDFLAGS})
22+target_link_libraries(UnitySession-qml
23+ unity8-private
24+ ${GIO_LDFLAGS}
25+ )
2226
2327# export the qmldir and qmltypes files
2428add_unity8_plugin(Unity.Session 0.1 Unity/Session TARGETS UnitySession-qml)
plugins/Unity/Session/Session.qmltypes+10
@@ -34,4 +34,14 @@ Module {
3434 Method { name: "RequestReboot" }
3535 Method { name: "RequestShutdown" }
3636 }
37+ Component {
38+ name: "OrientationLock"
39+ prototype: "QObject"
40+ exports: ["Unity.Session/OrientationLock 0.1"]
41+ isCreatable: false
42+ isSingleton: true
43+ exportMetaObjectRevisions: [0]
44+ Property { name: "enabled"; type: "bool"; isReadonly: true }
45+ Property { name: "savedOrientation"; type: "Qt::ScreenOrientation" }
46+ }
3747}
plugins/Unity/Session/dbusunitysessionservice.cpp+2−8
@@ -21,15 +21,9 @@
2121#include <QDBusConnection>
2222#include <QDBusInterface>
2323
24−DBusUnitySessionService::DBusUnitySessionService() : QObject()
24+DBusUnitySessionService::DBusUnitySessionService()
25+ : UnityDBusObject("/com/canonical/Unity/Session", "com.canonical.Unity")
2526{
26− QDBusConnection connection = QDBusConnection::sessionBus();
27−
28− connection.registerService("com.canonical.Unity");
29− connection.registerObject("/com/canonical/Unity/Session", this,
30− QDBusConnection::ExportScriptableSignals
31− | QDBusConnection::ExportScriptableSlots
32− | QDBusConnection::ExportScriptableInvokables);
3327}
3428
3529DBusUnitySessionService::~DBusUnitySessionService()
plugins/Unity/Session/dbusunitysessionservice.h+2−2
@@ -17,7 +17,7 @@
1717#ifndef DBUSUNITYSESSIONSERVICE_H
1818#define DBUSUNITYSESSIONSERVICE_H
1919
20−#include <QObject>
20+#include "unitydbusobject.h"
2121
2222/**
2323 * DBusUnitySessionService provides com.canonical.Unity.Session dbus
@@ -26,7 +26,7 @@
2626 * com.canonical.Unity.Session interface provides public methods
2727 * and signals to handle Logout/Reboot/Shutdown.
2828 */
29−class DBusUnitySessionService : public QObject
29+class DBusUnitySessionService : public UnityDBusObject
3030{
3131 Q_OBJECT
3232 Q_CLASSINFO("D-Bus Interface", "com.canonical.Unity.Session")
plugins/Unity/Session/orientationlock.cpp+6−6
@@ -24,16 +24,16 @@ OrientationLock::OrientationLock(QObject *parent)
2424 , m_enabled(false)
2525 , m_savedOrientation(Qt::PortraitOrientation)
2626{
27− systemSettings = g_settings_new("com.ubuntu.touch.system");
28− g_signal_connect(systemSettings, "changed::rotation-lock",
27+ m_systemSettings = g_settings_new("com.ubuntu.touch.system");
28+ g_signal_connect(m_systemSettings, "changed::rotation-lock",
2929 G_CALLBACK(OrientationLock::onEnabledChangedProxy), this);
30− m_enabled = g_settings_get_boolean(systemSettings, "rotation-lock");
30+ m_enabled = g_settings_get_boolean(m_systemSettings, "rotation-lock");
3131}
3232
3333OrientationLock::~OrientationLock()
3434{
35− g_signal_handlers_disconnect_by_data(systemSettings, this);
36− g_object_unref(systemSettings);
35+ g_signal_handlers_disconnect_by_data(m_systemSettings, this);
36+ g_object_unref(m_systemSettings);
3737}
3838
3939bool OrientationLock::enabled() const
@@ -54,7 +54,7 @@ void OrientationLock::onEnabledChangedProxy(GSettings */*settings*/, const gchar
5454
5555void OrientationLock::onEnabledChanged()
5656{
57− const bool enabled = g_settings_get_boolean(systemSettings, "rotation-lock");
57+ const bool enabled = g_settings_get_boolean(m_systemSettings, "rotation-lock");
5858 if (m_enabled != enabled) {
5959 m_enabled = enabled;
6060 Q_EMIT enabledChanged();
plugins/Unity/Session/orientationlock.h+1−3
@@ -19,7 +19,6 @@
1919
2020#include <gio/gio.h>
2121#include <QtCore/QObject>
22−#include <QtDBus/QDBusInterface>
2322
2423/**
2524 * @brief The OrientationLock class exports orientation lock related properties to QML
@@ -52,8 +51,7 @@ private Q_SLOTS:
5251 void onEnabledChanged();
5352
5453private:
55− QDBusInterface *dbusInterface;
56− GSettings *systemSettings;
54+ GSettings *m_systemSettings;
5755
5856 bool m_enabled;
5957 Qt::ScreenOrientation m_savedOrientation;
plugins/Utils/Utils.qmltypes+6
@@ -106,6 +106,12 @@ Module {
106106 Parameter { name: "row"; type: "int" }
107107 }
108108 }
109+ Component {
110+ name: "RelativeTimeFormatter"
111+ prototype: "TimeFormatter"
112+ exports: ["Utils/RelativeTimeFormatter 0.1"]
113+ exportMetaObjectRevisions: [0]
114+ }
109115 Component {
110116 name: "TimeFormatter"
111117 prototype: "QObject"
plugins/Utils/relativetimeformatter.cpp+31−39
@@ -74,53 +74,45 @@ getDateProximity(GDateTime* now, GDateTime* time)
7474 }
7575
7676 // did it happen yesterday?
77− GDateTime* tomorrow = g_date_time_add_days(now, -1);
77+ GDateTime* yesterday = g_date_time_add_days(now, -1);
7878 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);
79+ g_date_time_get_ymd(yesterday, &tom_year, &tom_month, &tom_day);
80+ g_date_time_unref(yesterday);
8181 if ((tom_year == time_year) && (tom_month == time_month) && (tom_day == time_day)) {
8282 return DATE_PROXIMITY_YESTERDAY;
8383 }
8484
8585 // 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− }
86+ GDateTime* tomorrow = g_date_time_add_days(now, 1);
87+ g_date_time_get_ymd(tomorrow, &tom_year, &tom_month, &tom_day);
88+ g_date_time_unref(tomorrow);
89+ if ((tom_year == time_year) && (tom_month == time_month) && (tom_day == time_day)) {
90+ return DATE_PROXIMITY_TOMORROW;
9691 }
9792
9893 // 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−
94+ if (g_date_time_compare(time, now) < 0) {
95+ GDateTime* last_week = g_date_time_add_days(now, -6);
96+ GDateTime* last_week_bound = g_date_time_new_local(g_date_time_get_year(last_week),
97+ g_date_time_get_month(last_week),
98+ g_date_time_get_day_of_month(last_week),
99+ 0, 0, 0);
100+ if (g_date_time_compare(time, last_week_bound) >= 0)
101+ prox = DATE_PROXIMITY_LAST_WEEK;
102+
103+ g_date_time_unref(last_week);
104+ g_date_time_unref(last_week_bound);
105+ } else {
106+ GDateTime* next_week = g_date_time_add_days(now, 6);
107+ GDateTime* next_week_bound = g_date_time_new_local(g_date_time_get_year(next_week),
108+ g_date_time_get_month(next_week),
109+ g_date_time_get_day_of_month(next_week),
110+ 23, 59, 59.9);
111+ if (g_date_time_compare(time, next_week_bound) <= 0)
112+ prox = DATE_PROXIMITY_NEXT_WEEK;
113+
114+ g_date_time_unref(next_week);
115+ g_date_time_unref(next_week_bound);
124116 }
125117
126118 return prox;
@@ -250,7 +242,7 @@ char* generate_full_format_string_at_time (GDateTime* now,
250242
251243QString RelativeTimeFormatter::format() const
252244{
253− GDateTime* now = g_date_time_new_from_unix_utc(QDateTime::currentMSecsSinceEpoch() / 1000);
245+ GDateTime* now = g_date_time_new_now_local();
254246 if (!now) { return QString(); }
255247
256248 GDateTime* then = g_date_time_new_from_unix_local(time());
po/am.po+96−88
@@ -7,15 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
11−"PO-Revision-Date: 2014-09-28 14:37+0000\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
11+"PO-Revision-Date: 2014-11-06 00:53+0000\n"
1212"Last-Translator: samson <Unknown>\n"
1313"Language-Team: Amharic <am@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:19+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=2; plural=n > 1;\n"
18+"X-Launchpad-Export-Date: 2014-11-07 06:52+0000\n"
19+"X-Generator: Launchpad (build 17231)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
@@ -30,45 +31,64 @@ msgstr "አቋራጭ ማጣበቂያ"
3031msgid "Unpin shortcut"
3132msgstr "አቋራጭ መለያያ"
3233
33−#: qml/Components/Dialogs.qml:70
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+
53+#: qml/Components/Dialogs.qml:74
3454msgid "Log out"
3555msgstr "መውጫ"
3656
37−#: qml/Components/Dialogs.qml:71
57+#: qml/Components/Dialogs.qml:75
3858msgid "Are you sure you want to log out?"
3959msgstr "በእርግጥ መውጣት ይፈልጋሉ?"
4060
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
61+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
62+#: qml/Components/Dialogs.qml:126
4363msgid "No"
4464msgstr "አይ"
4565
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
66+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
67+#: qml/Components/Dialogs.qml:133
4868msgid "Yes"
4969msgstr "አዎ"
5070
51−#: qml/Components/Dialogs.qml:94
71+#: qml/Components/Dialogs.qml:98
5272msgid "Shut down"
5373msgstr "ማጥፊያ"
5474
55−#: qml/Components/Dialogs.qml:95
75+#: qml/Components/Dialogs.qml:99
5676msgid "Are you sure you want to shut down?"
5777msgstr "በእርግጥ ማጥፋት ይፈልጋሉ?"
5878
59−#: qml/Components/Dialogs.qml:119
79+#: qml/Components/Dialogs.qml:123
6080msgid "Reboot"
6181msgstr "እንደገና ማስነሻ"
6282
63−#: qml/Components/Dialogs.qml:120
83+#: qml/Components/Dialogs.qml:124
6484msgid "Are you sure you want to reboot?"
6585msgstr "በእርግጥ እንደገና ማስነሳት ይፈልጋሉ?"
6686
67−#: qml/Components/Dialogs.qml:144
87+#: qml/Components/Dialogs.qml:148
6888msgid "Power"
6989msgstr "ሐይል"
7090
71−#: qml/Components/Dialogs.qml:145
91+#: qml/Components/Dialogs.qml:149
7292msgid ""
7393"Are you sure you would like\n"
7494"to power off?"
@@ -76,15 +96,15 @@ msgstr ""
7696"በእርግጥ ሐይሉን ማጥፋት\n"
7797"ይፈልጋሉ?"
7898
79−#: qml/Components/Dialogs.qml:147
99+#: qml/Components/Dialogs.qml:151
80100msgid "Power off"
81101msgstr "ማጥፊያ"
82102
83−#: qml/Components/Dialogs.qml:157
103+#: qml/Components/Dialogs.qml:161
84104msgid "Restart"
85105msgstr "እንደገና ማስጀመሪያ"
86106
87−#: qml/Components/Dialogs.qml:167
107+#: qml/Components/Dialogs.qml:171
88108msgid "Cancel"
89109msgstr "መሰረዣ"
90110
@@ -116,59 +136,46 @@ msgstr "መዝጊያ"
116136msgid "Swipe up again to close the settings screen"
117137msgstr "የማሰናጃውን መመልከቻ ለመዝጋት እንደገና ወደ ላይ ይጥረጉ"
118138
119−#: qml/Components/EdgeDemo.qml:198
139+#: qml/Components/EdgeDemo.qml:201
120140msgid "Left edge"
121141msgstr "የግራ ጠርዝ"
122142
123−#: qml/Components/EdgeDemo.qml:199
143+#: qml/Components/EdgeDemo.qml:202
124144msgid "Swipe from the left to reveal the launcher for quick access to apps"
125145msgstr "ከ ግራ በኩል ወደ ቀኝ ይጥረጉ በፍጥነት መተግበሪያዎች ጋር ለመድረስ እና ለማስጀመር"
126146
127−#: qml/Components/EdgeDemo.qml:226
147+#: qml/Components/EdgeDemo.qml:229
128148msgid "Well done"
129149msgstr "ጥሩ አድረገዋል"
130150
131−#: qml/Components/EdgeDemo.qml:227
151+#: qml/Components/EdgeDemo.qml:230
132152msgid ""
133153"You have now mastered the edge gestures and can start using the "
134154"phone<br><br>Tap on the screen to start"
135155msgstr ""
136156"አሁን የ ጠርዝ እንቅስቃሴን አውቀዋል እና መጀመር ይችላሉ ስልኩን መጠቀም <br><br>መመልከቻውን መታ ያድርጉ ለመጀመር"
137157
138−#: qml/Components/Lockscreen.qml:167
139−msgid "Please wait"
140−msgstr "እባክዎን ይቆዩ"
141−
142−#: qml/Components/Lockscreen.qml:172
143−msgid "Too many incorrect attempts"
144−msgstr "በርካታ የተሳሳቱ ሙከራዎች"
158+#: qml/Components/Lockscreen.qml:223
159+msgid "Return to Call"
160+msgstr "ወደ ጥሪ መመለሻ"
145161
146−#: qml/Components/Lockscreen.qml:206
162+#: qml/Components/Lockscreen.qml:223
147163msgid "Emergency Call"
148164msgstr "የ ድንገተኛ ጥሪ"
149165
150−#: qml/Components/Lockscreen.qml:226
166+#: qml/Components/Lockscreen.qml:255
151167msgid "OK"
152168msgstr "እሺ"
153169
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:411 qml/Dash/GenericScopeView.qml:533
170+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
164171msgid "See less"
165172msgstr "አነስተኛ መመልከቻ"
166173
167−#: qml/Dash/GenericScopeView.qml:411
174+#: qml/Dash/GenericScopeView.qml:434
168175msgid "See all"
169176msgstr "ሁሉንም መመልከቻ"
170177
171−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
178+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
172179#: qml/Panel/SearchIndicator.qml:27
173180msgid "Search"
174181msgstr "መፈለጊያ"
@@ -205,15 +212,23 @@ msgstr "ግምገማ መጨመሪያ"
205212msgid "Send"
206213msgstr "መላኪያ"
207214
208−#: qml/Dash/ScopesOverview.qml:206
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+
223+#: qml/Dash/ScopesOverview.qml:215
209224msgid "Manage Scopes"
210225msgstr "የ ክልል አስተዳዳሪ"
211226
212−#: qml/Dash/ScopesOverview.qml:428
227+#: qml/Dash/ScopesOverview.qml:437
213228msgid "Done"
214229msgstr "ጨርሷል"
215230
216−#: qml/Dash/ScopesOverview.qml:454
231+#: qml/Dash/ScopesOverview.qml:463
217232msgid "Store"
218233msgstr "ማስቀመጫ"
219234
@@ -225,9 +240,9 @@ msgstr "የምወዳቸው"
225240msgid "All"
226241msgstr "ሁሉንም"
227242
228−#: qml/Greeter/Greeter.qml:157
229−msgid "Swipe to unlock"
230−msgstr "ለመክፈት ይጥረጉ"
243+#: qml/Greeter/Greeter.qml:174
244+msgid "Unlock"
245+msgstr "መክፈቻ"
231246
232247#: qml/Hud/HudParametrizedActionsPage.qml:139
233248msgid "Confirm"
@@ -249,51 +264,43 @@ msgstr "አሁን ይናገሩ..."
249264msgid "Speaking..."
250265msgstr "በመናገር ላይ..."
251266
252−#: qml/Notifications/NotificationMenuItemFactory.qml:108
267+#: qml/Notifications/NotificationMenuItemFactory.qml:116
253268msgid "Show password"
254269msgstr "የመግቢያ ቃል ማሳያ"
255270
256−#: qml/Notifications/NotificationMenuItemFactory.qml:124
257−msgid "Enter SIM PIN"
258−msgstr "ሲም ፒን ያስገቡ"
259−
260−#: qml/Notifications/NotificationMenuItemFactory.qml:125
261−msgid "Sorry, incorrect PIN"
262−msgstr "አዝናለሁ የተሳሳተ ፒን"
263−
264−#: qml/Panel/ActiveCallHint.qml:77
271+#: qml/Panel/ActiveCallHint.qml:79
265272msgid "Tap to return to call..."
266273msgstr "ወደ ጥሪው ለመመለስ መታ ያድርጉ..."
267274
268−#: qml/Panel/ActiveCallHint.qml:90
275+#: qml/Panel/ActiveCallHint.qml:92
269276msgid "Conference"
270277msgstr "ስብሰባ"
271278
272−#: qml/Panel/Indicators/MenuItemFactory.qml:600
279+#: qml/Panel/Indicators/MenuItemFactory.qml:615
273280msgid "Nothing is playing"
274281msgstr "ምንም አይጫወትም"
275282
276−#: qml/Panel/Indicators/MenuItemFactory.qml:748
283+#: qml/Panel/Indicators/MenuItemFactory.qml:763
277284msgid "In queue…"
278285msgstr "ወረፋ በመጠበቅ ላይ…"
279286
280−#: qml/Panel/Indicators/MenuItemFactory.qml:752
287+#: qml/Panel/Indicators/MenuItemFactory.qml:767
281288msgid "Downloading"
282289msgstr "በማውረድ ላይ"
283290
284−#: qml/Panel/Indicators/MenuItemFactory.qml:754
291+#: qml/Panel/Indicators/MenuItemFactory.qml:769
285292msgid "Paused, tap to resume"
286293msgstr "ማስቆሚያ: ለመቀጠል መታ ያድርጉ"
287294
288−#: qml/Panel/Indicators/MenuItemFactory.qml:756
295+#: qml/Panel/Indicators/MenuItemFactory.qml:771
289296msgid "Canceled"
290297msgstr "ተሰርዟል"
291298
292−#: qml/Panel/Indicators/MenuItemFactory.qml:758
299+#: qml/Panel/Indicators/MenuItemFactory.qml:773
293300msgid "Finished"
294301msgstr "ጨርሷል"
295302
296−#: qml/Panel/Indicators/MenuItemFactory.qml:760
303+#: qml/Panel/Indicators/MenuItemFactory.qml:775
297304msgid "Failed, tap to retry"
298305msgstr "አልተቻለም: እንደገና ለመሞከር መታ ያድርጉ"
299306
@@ -305,45 +312,49 @@ msgstr "ሲም መክፈቻ"
305312msgid "Roaming"
306313msgstr "ማዘዋወሪያ"
307314
308−#: qml/Shell.qml:320
309−msgid "Enter your passphrase"
310−msgstr "የማለፊያ ሐረግ ያስገቡ"
315+#: qml/Shell.qml:381
316+msgid "Enter passphrase"
317+msgstr "የ ማለፊያ ሀረግ ያስገቡ"
311318
312−#: qml/Shell.qml:321
319+#: qml/Shell.qml:382
313320msgid "Sorry, incorrect passphrase"
314321msgstr "አዝናለሁ የተሳሳተ የማለፊያ ሐረግ"
315322
316−#: qml/Shell.qml:323
317−msgid "Enter your passcode"
318−msgstr "የ እርስዎን የማለፊያ ኮድ ያስገቡ"
323+#: qml/Shell.qml:383
324+msgid "Please re-enter"
325+msgstr "እባክዎን እንደገና-ያስገቡ"
326+
327+#: qml/Shell.qml:385
328+msgid "Enter passcode"
329+msgstr "የ ማለፊያ ኮድ ያስገቡ"
319330
320−#: qml/Shell.qml:324
331+#: qml/Shell.qml:386
321332msgid "Sorry, incorrect passcode"
322333msgstr "አዝናለሁ የተሳሳተ የማለፊያ ኮድ"
323334
324−#: qml/Shell.qml:327
335+#: qml/Shell.qml:389
325336#, qt-format
326−msgid "Enter your %1"
327−msgstr "ያስገቡ የ እርስዎን %1"
337+msgid "Enter %1"
338+msgstr "ማስገቢያ %1"
328339
329−#: qml/Shell.qml:328
340+#: qml/Shell.qml:390
330341#, qt-format
331342msgid "Sorry, incorrect %1"
332343msgstr "አዝናለሁ: የተሳሳተ%1"
333344
334−#: qml/Shell.qml:363
345+#: qml/Shell.qml:431
335346msgid "Sorry, incorrect passphrase."
336347msgstr "አዝናለሁ የተሳሳተ የማለፊያ ሐረግ"
337348
338−#: qml/Shell.qml:364
349+#: qml/Shell.qml:432
339350msgid "Sorry, incorrect passcode."
340351msgstr "አዝናለሁ የተሳሳተ የማለፊያ ኮድ"
341352
342−#: qml/Shell.qml:365
353+#: qml/Shell.qml:433
343354msgid "This will be your last attempt."
344355msgstr "ይህ የመጨረሻ ሙከራዎ ነው"
345356
346−#: qml/Shell.qml:367
357+#: qml/Shell.qml:435
347358msgid ""
348359"If passphrase is entered incorrectly, your phone will conduct a factory "
349360"reset and all personal data will be deleted."
@@ -351,13 +362,10 @@ msgstr ""
351362"የተሳሳተ የማለፊያ ሐረግ ካስገቡ የ እርስዎ ስልክ ወደ ነበረበት ወደ ፋክቶሪው ዘዴ ይመለሳል: እና የ ግል ዳታ በሙሉ "
352363"ይጠፋል"
353364
354−#: qml/Shell.qml:368
365+#: qml/Shell.qml:436
355366msgid ""
356367"If passcode is entered incorrectly, your phone will conduct a factory reset "
357368"and all personal data will be deleted."
358369msgstr ""
359370"የተሳሳተ የማለፊያ ኮድ ካስገቡ የ እርስዎ ስልክ ወደ ነበረበት ወደ ፋክቶሪው ዘዴ ይመለሳል: እና የ ግል ዳታ በሙሉ "
360371"ይጠፋል"
361−
362−#~ msgid "Manage Dash"
363−#~ msgstr "የ ዳሽ አስተዳዳሪ"
po/ar.po+92−80
@@ -7,15 +7,17 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
1111"PO-Revision-Date: 2014-05-22 08:22+0000\n"
1212"Last-Translator: Ibrahim Saed <ibraheem5000@gmail.com>\n"
1313"Language-Team: Arabic <ar@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:19+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n % 100 >= "
18+"3 && n % 100 <= 10 ? 3 : n % 100 >= 11 && n % 100 <= 99 ? 4 : 5;\n"
19+"X-Launchpad-Export-Date: 2014-11-06 06:39+0000\n"
20+"X-Generator: Launchpad (build 17223)\n"
1921
2022#: plugins/LightDM/Greeter.cpp:130
2123msgid "Password: "
@@ -30,59 +32,78 @@ msgstr ""
3032msgid "Unpin shortcut"
3133msgstr ""
3234
33−#: qml/Components/Dialogs.qml:70
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:74
3455msgid "Log out"
3556msgstr ""
3657
37−#: qml/Components/Dialogs.qml:71
58+#: qml/Components/Dialogs.qml:75
3859msgid "Are you sure you want to log out?"
3960msgstr ""
4061
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
62+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
63+#: qml/Components/Dialogs.qml:126
4364msgid "No"
4465msgstr ""
4566
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
67+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
68+#: qml/Components/Dialogs.qml:133
4869msgid "Yes"
4970msgstr ""
5071
51−#: qml/Components/Dialogs.qml:94
72+#: qml/Components/Dialogs.qml:98
5273msgid "Shut down"
5374msgstr ""
5475
55−#: qml/Components/Dialogs.qml:95
76+#: qml/Components/Dialogs.qml:99
5677msgid "Are you sure you want to shut down?"
5778msgstr ""
5879
59−#: qml/Components/Dialogs.qml:119
80+#: qml/Components/Dialogs.qml:123
6081msgid "Reboot"
6182msgstr ""
6283
63−#: qml/Components/Dialogs.qml:120
84+#: qml/Components/Dialogs.qml:124
6485msgid "Are you sure you want to reboot?"
6586msgstr ""
6687
67−#: qml/Components/Dialogs.qml:144
88+#: qml/Components/Dialogs.qml:148
6889msgid "Power"
6990msgstr ""
7091
71−#: qml/Components/Dialogs.qml:145
92+#: qml/Components/Dialogs.qml:149
7293msgid ""
7394"Are you sure you would like\n"
7495"to power off?"
7596msgstr ""
7697
77−#: qml/Components/Dialogs.qml:147
98+#: qml/Components/Dialogs.qml:151
7899msgid "Power off"
79100msgstr ""
80101
81−#: qml/Components/Dialogs.qml:157
102+#: qml/Components/Dialogs.qml:161
82103msgid "Restart"
83104msgstr ""
84105
85−#: qml/Components/Dialogs.qml:167
106+#: qml/Components/Dialogs.qml:171
86107msgid "Cancel"
87108msgstr ""
88109
@@ -114,20 +135,20 @@ msgstr "أغلق"
114135msgid "Swipe up again to close the settings screen"
115136msgstr "اسحب اصعبك لأعلى مرة أخرى لغلق شاشة الإعدادات"
116137
117−#: qml/Components/EdgeDemo.qml:198
138+#: qml/Components/EdgeDemo.qml:201
118139msgid "Left edge"
119140msgstr "الحافة اليسرى"
120141
121−#: qml/Components/EdgeDemo.qml:199
142+#: qml/Components/EdgeDemo.qml:202
122143msgid "Swipe from the left to reveal the launcher for quick access to apps"
123144msgstr ""
124145"اسحب أصبعك من الحافة اليسرى لإظهار شريط يونتي للوصول السريع للتطبيقات"
125146
126−#: qml/Components/EdgeDemo.qml:226
147+#: qml/Components/EdgeDemo.qml:229
127148msgid "Well done"
128149msgstr "أحسنت!"
129150
130−#: qml/Components/EdgeDemo.qml:227
151+#: qml/Components/EdgeDemo.qml:230
131152msgid ""
132153"You have now mastered the edge gestures and can start using the "
133154"phone<br><br>Tap on the screen to start"
@@ -135,40 +156,27 @@ msgstr ""
135156"أنت الآن بارع في إيماءات الحواف ويمكنك البدء باستخدام هاتفك<br><br>انقر على "
136157"الشاشة للبدء"
137158
138−#: qml/Components/Lockscreen.qml:167
139−msgid "Please wait"
140−msgstr ""
141−
142−#: qml/Components/Lockscreen.qml:172
143−msgid "Too many incorrect attempts"
159+#: qml/Components/Lockscreen.qml:223
160+msgid "Return to Call"
144161msgstr ""
145162
146−#: qml/Components/Lockscreen.qml:206
163+#: qml/Components/Lockscreen.qml:223
147164msgid "Emergency Call"
148165msgstr "مكالمة طوارئ"
149166
150−#: qml/Components/Lockscreen.qml:226
167+#: qml/Components/Lockscreen.qml:255
151168msgid "OK"
152169msgstr ""
153170
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:411 qml/Dash/GenericScopeView.qml:533
171+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
164172msgid "See less"
165173msgstr "شاهد أقل"
166174
167−#: qml/Dash/GenericScopeView.qml:411
175+#: qml/Dash/GenericScopeView.qml:434
168176msgid "See all"
169177msgstr ""
170178
171−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
179+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
172180#: qml/Panel/SearchIndicator.qml:27
173181msgid "Search"
174182msgstr "ابحث"
@@ -205,15 +213,23 @@ msgstr "أضف تعليق"
205213msgid "Send"
206214msgstr "أرسل"
207215
208−#: qml/Dash/ScopesOverview.qml:206
216+#: qml/Dash/PullToRefreshScopeStyle.qml:55
217+msgid "Pull to refresh…"
218+msgstr ""
219+
220+#: qml/Dash/PullToRefreshScopeStyle.qml:60
221+msgid "Release to refresh…"
222+msgstr ""
223+
224+#: qml/Dash/ScopesOverview.qml:215
209225msgid "Manage Scopes"
210226msgstr ""
211227
212−#: qml/Dash/ScopesOverview.qml:428
228+#: qml/Dash/ScopesOverview.qml:437
213229msgid "Done"
214230msgstr ""
215231
216−#: qml/Dash/ScopesOverview.qml:454
232+#: qml/Dash/ScopesOverview.qml:463
217233msgid "Store"
218234msgstr ""
219235
@@ -225,9 +241,9 @@ msgstr ""
225241msgid "All"
226242msgstr ""
227243
228−#: qml/Greeter/Greeter.qml:157
229−msgid "Swipe to unlock"
230−msgstr "اسحب لفتح القفل"
244+#: qml/Greeter/Greeter.qml:174
245+msgid "Unlock"
246+msgstr ""
231247
232248#: qml/Hud/HudParametrizedActionsPage.qml:139
233249msgid "Confirm"
@@ -249,51 +265,43 @@ msgstr "تكلم الآن..."
249265msgid "Speaking..."
250266msgstr "تتكلم الآن..."
251267
252−#: qml/Notifications/NotificationMenuItemFactory.qml:108
268+#: qml/Notifications/NotificationMenuItemFactory.qml:116
253269msgid "Show password"
254270msgstr "عرض كلمة السر"
255271
256−#: qml/Notifications/NotificationMenuItemFactory.qml:124
257−msgid "Enter SIM PIN"
258−msgstr ""
259−
260−#: qml/Notifications/NotificationMenuItemFactory.qml:125
261−msgid "Sorry, incorrect PIN"
262−msgstr ""
263−
264−#: qml/Panel/ActiveCallHint.qml:77
272+#: qml/Panel/ActiveCallHint.qml:79
265273msgid "Tap to return to call..."
266274msgstr ""
267275
268−#: qml/Panel/ActiveCallHint.qml:90
276+#: qml/Panel/ActiveCallHint.qml:92
269277msgid "Conference"
270278msgstr ""
271279
272−#: qml/Panel/Indicators/MenuItemFactory.qml:600
280+#: qml/Panel/Indicators/MenuItemFactory.qml:615
273281msgid "Nothing is playing"
274282msgstr ""
275283
276−#: qml/Panel/Indicators/MenuItemFactory.qml:748
284+#: qml/Panel/Indicators/MenuItemFactory.qml:763
277285msgid "In queue…"
278286msgstr ""
279287
280−#: qml/Panel/Indicators/MenuItemFactory.qml:752
288+#: qml/Panel/Indicators/MenuItemFactory.qml:767
281289msgid "Downloading"
282290msgstr ""
283291
284−#: qml/Panel/Indicators/MenuItemFactory.qml:754
292+#: qml/Panel/Indicators/MenuItemFactory.qml:769
285293msgid "Paused, tap to resume"
286294msgstr ""
287295
288−#: qml/Panel/Indicators/MenuItemFactory.qml:756
296+#: qml/Panel/Indicators/MenuItemFactory.qml:771
289297msgid "Canceled"
290298msgstr ""
291299
292−#: qml/Panel/Indicators/MenuItemFactory.qml:758
300+#: qml/Panel/Indicators/MenuItemFactory.qml:773
293301msgid "Finished"
294302msgstr ""
295303
296−#: qml/Panel/Indicators/MenuItemFactory.qml:760
304+#: qml/Panel/Indicators/MenuItemFactory.qml:775
297305msgid "Failed, tap to retry"
298306msgstr ""
299307
@@ -305,51 +313,55 @@ msgstr ""
305313msgid "Roaming"
306314msgstr ""
307315
308−#: qml/Shell.qml:320
309−msgid "Enter your passphrase"
316+#: qml/Shell.qml:381
317+msgid "Enter passphrase"
310318msgstr ""
311319
312−#: qml/Shell.qml:321
320+#: qml/Shell.qml:382
313321msgid "Sorry, incorrect passphrase"
314322msgstr ""
315323
316−#: qml/Shell.qml:323
317−msgid "Enter your passcode"
324+#: qml/Shell.qml:383
325+msgid "Please re-enter"
326+msgstr ""
327+
328+#: qml/Shell.qml:385
329+msgid "Enter passcode"
318330msgstr ""
319331
320−#: qml/Shell.qml:324
332+#: qml/Shell.qml:386
321333msgid "Sorry, incorrect passcode"
322334msgstr ""
323335
324−#: qml/Shell.qml:327
336+#: qml/Shell.qml:389
325337#, qt-format
326−msgid "Enter your %1"
338+msgid "Enter %1"
327339msgstr ""
328340
329−#: qml/Shell.qml:328
341+#: qml/Shell.qml:390
330342#, qt-format
331343msgid "Sorry, incorrect %1"
332344msgstr ""
333345
334−#: qml/Shell.qml:363
346+#: qml/Shell.qml:431
335347msgid "Sorry, incorrect passphrase."
336348msgstr ""
337349
338−#: qml/Shell.qml:364
350+#: qml/Shell.qml:432
339351msgid "Sorry, incorrect passcode."
340352msgstr ""
341353
342−#: qml/Shell.qml:365
354+#: qml/Shell.qml:433
343355msgid "This will be your last attempt."
344356msgstr ""
345357
346−#: qml/Shell.qml:367
358+#: qml/Shell.qml:435
347359msgid ""
348360"If passphrase is entered incorrectly, your phone will conduct a factory "
349361"reset and all personal data will be deleted."
350362msgstr ""
351363
352−#: qml/Shell.qml:368
364+#: qml/Shell.qml:436
353365msgid ""
354366"If passcode is entered incorrectly, your phone will conduct a factory reset "
355367"and all personal data will be deleted."
po/ast.po+97−88
@@ -7,15 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
11−"PO-Revision-Date: 2014-09-28 09:02+0000\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
11+"PO-Revision-Date: 2014-10-09 09:49+0000\n"
1212"Last-Translator: ivarela <ivarela@ubuntu.com>\n"
1313"Language-Team: Asturian <ast@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:19+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
18+"X-Launchpad-Export-Date: 2014-11-06 06:39+0000\n"
19+"X-Generator: Launchpad (build 17223)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
@@ -30,45 +31,65 @@ msgstr "Anclar"
3031msgid "Unpin shortcut"
3132msgstr "Desanclar"
3233
33−#: qml/Components/Dialogs.qml:70
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+
54+#: qml/Components/Dialogs.qml:74
3455msgid "Log out"
3556msgstr "Zarrar sesión"
3657
37−#: qml/Components/Dialogs.qml:71
58+#: qml/Components/Dialogs.qml:75
3859msgid "Are you sure you want to log out?"
3960msgstr "De xuru que quies zarrar la sesión?"
4061
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
62+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
63+#: qml/Components/Dialogs.qml:126
4364msgid "No"
4465msgstr "Non"
4566
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
67+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
68+#: qml/Components/Dialogs.qml:133
4869msgid "Yes"
4970msgstr "Sí"
5071
51−#: qml/Components/Dialogs.qml:94
72+#: qml/Components/Dialogs.qml:98
5273msgid "Shut down"
5374msgstr "Apagar"
5475
55−#: qml/Components/Dialogs.qml:95
76+#: qml/Components/Dialogs.qml:99
5677msgid "Are you sure you want to shut down?"
5778msgstr "De xuru que quies apagar?"
5879
59−#: qml/Components/Dialogs.qml:119
80+#: qml/Components/Dialogs.qml:123
6081msgid "Reboot"
6182msgstr "Reaniciar"
6283
63−#: qml/Components/Dialogs.qml:120
84+#: qml/Components/Dialogs.qml:124
6485msgid "Are you sure you want to reboot?"
6586msgstr "De xuru que quies reaniciar?"
6687
67−#: qml/Components/Dialogs.qml:144
88+#: qml/Components/Dialogs.qml:148
6889msgid "Power"
6990msgstr "Enerxía"
7091
71−#: qml/Components/Dialogs.qml:145
92+#: qml/Components/Dialogs.qml:149
7293msgid ""
7394"Are you sure you would like\n"
7495"to power off?"
@@ -76,15 +97,15 @@ msgstr ""
7697"De xuru que quies\n"
7798"apagar?"
7899
79−#: qml/Components/Dialogs.qml:147
100+#: qml/Components/Dialogs.qml:151
80101msgid "Power off"
81102msgstr "Apagar"
82103
83−#: qml/Components/Dialogs.qml:157
104+#: qml/Components/Dialogs.qml:161
84105msgid "Restart"
85106msgstr "Reaniciar"
86107
87−#: qml/Components/Dialogs.qml:167
108+#: qml/Components/Dialogs.qml:171
88109msgid "Cancel"
89110msgstr "Encaboxar"
90111
@@ -116,21 +137,21 @@ msgstr "Zarrar"
116137msgid "Swipe up again to close the settings screen"
117138msgstr "Esliza hacia arriba pa zarrar la pantalla d'axustes"
118139
119−#: qml/Components/EdgeDemo.qml:198
140+#: qml/Components/EdgeDemo.qml:201
120141msgid "Left edge"
121142msgstr "Berbesu esquierdu"
122143
123−#: qml/Components/EdgeDemo.qml:199
144+#: qml/Components/EdgeDemo.qml:202
124145msgid "Swipe from the left to reveal the launcher for quick access to apps"
125146msgstr ""
126147"Esliza'l deu dende la esquierda p'amosar el llanzador y acceder rápidamente "
127148"a les aplicaciones"
128149
129−#: qml/Components/EdgeDemo.qml:226
150+#: qml/Components/EdgeDemo.qml:229
130151msgid "Well done"
131152msgstr "Bien fecho"
132153
133−#: qml/Components/EdgeDemo.qml:227
154+#: qml/Components/EdgeDemo.qml:230
134155msgid ""
135156"You have now mastered the edge gestures and can start using the "
136157"phone<br><br>Tap on the screen to start"
@@ -138,40 +159,27 @@ msgstr ""
138159"Agora yá domines los xestos de los berbesos y pues entamar a usar el "
139160"teléfonu<br><br>Toca la pantalla pa comenzar"
140161
141−#: qml/Components/Lockscreen.qml:167
142−msgid "Please wait"
143−msgstr "Espera un segundu"
144−
145−#: qml/Components/Lockscreen.qml:172
146−msgid "Too many incorrect attempts"
147−msgstr "Munchos intentos incorreutos"
162+#: qml/Components/Lockscreen.qml:223
163+msgid "Return to Call"
164+msgstr ""
148165
149−#: qml/Components/Lockscreen.qml:206
166+#: qml/Components/Lockscreen.qml:223
150167msgid "Emergency Call"
151168msgstr "Llamada d'emerxencia"
152169
153−#: qml/Components/Lockscreen.qml:226
170+#: qml/Components/Lockscreen.qml:255
154171msgid "OK"
155172msgstr "Aceutar"
156173
157−#: qml/Components/PassphraseLockscreen.qml:61
158−#, qt-format
159−msgid "Hello %1"
160−msgstr "Hola %1"
161−
162−#: qml/Components/PassphraseLockscreen.qml:61
163−msgid "Hello"
164−msgstr "Hola"
165−
166−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
174+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
167175msgid "See less"
168176msgstr "Ver menos"
169177
170−#: qml/Dash/GenericScopeView.qml:411
178+#: qml/Dash/GenericScopeView.qml:434
171179msgid "See all"
172180msgstr "Ver too"
173181
174−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
182+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
175183#: qml/Panel/SearchIndicator.qml:27
176184msgid "Search"
177185msgstr "Guetar"
@@ -208,15 +216,23 @@ msgstr "Amestar una reseña"
208216msgid "Send"
209217msgstr "Unviar"
210218
211−#: qml/Dash/ScopesOverview.qml:206
219+#: qml/Dash/PullToRefreshScopeStyle.qml:55
220+msgid "Pull to refresh…"
221+msgstr "Tirar p'anovar..."
222+
223+#: qml/Dash/PullToRefreshScopeStyle.qml:60
224+msgid "Release to refresh…"
225+msgstr "Soltar p'anovar..."
226+
227+#: qml/Dash/ScopesOverview.qml:215
212228msgid "Manage Scopes"
213229msgstr "Xestionar ámbitos"
214230
215−#: qml/Dash/ScopesOverview.qml:428
231+#: qml/Dash/ScopesOverview.qml:437
216232msgid "Done"
217233msgstr "Fecho"
218234
219−#: qml/Dash/ScopesOverview.qml:454
235+#: qml/Dash/ScopesOverview.qml:463
220236msgid "Store"
221237msgstr "Tienda"
222238
@@ -228,9 +244,9 @@ msgstr "Favoritos"
228244msgid "All"
229245msgstr "Too"
230246
231−#: qml/Greeter/Greeter.qml:157
232−msgid "Swipe to unlock"
233−msgstr "Esliza pa desbloquiar"
247+#: qml/Greeter/Greeter.qml:174
248+msgid "Unlock"
249+msgstr "Desbloquiar"
234250
235251#: qml/Hud/HudParametrizedActionsPage.qml:139
236252msgid "Confirm"
@@ -252,51 +268,43 @@ msgstr "Fala agora…"
252268msgid "Speaking..."
253269msgstr "Falando…"
254270
255−#: qml/Notifications/NotificationMenuItemFactory.qml:108
271+#: qml/Notifications/NotificationMenuItemFactory.qml:116
256272msgid "Show password"
257273msgstr "Amosar contraseña"
258274
259−#: qml/Notifications/NotificationMenuItemFactory.qml:124
260−msgid "Enter SIM PIN"
261−msgstr "Escribi'l PIN de la SIM"
262−
263−#: qml/Notifications/NotificationMenuItemFactory.qml:125
264−msgid "Sorry, incorrect PIN"
265−msgstr "PIN incorreutu"
266−
267−#: qml/Panel/ActiveCallHint.qml:77
275+#: qml/Panel/ActiveCallHint.qml:79
268276msgid "Tap to return to call..."
269277msgstr "Tocar pa tornar a la llamada..."
270278
271−#: qml/Panel/ActiveCallHint.qml:90
279+#: qml/Panel/ActiveCallHint.qml:92
272280msgid "Conference"
273281msgstr "Conferencia"
274282
275−#: qml/Panel/Indicators/MenuItemFactory.qml:600
283+#: qml/Panel/Indicators/MenuItemFactory.qml:615
276284msgid "Nothing is playing"
277285msgstr "Nun hai nada en reproducción"
278286
279−#: qml/Panel/Indicators/MenuItemFactory.qml:748
287+#: qml/Panel/Indicators/MenuItemFactory.qml:763
280288msgid "In queue…"
281289msgstr "N'espera…"
282290
283−#: qml/Panel/Indicators/MenuItemFactory.qml:752
291+#: qml/Panel/Indicators/MenuItemFactory.qml:767
284292msgid "Downloading"
285293msgstr "Baxando"
286294
287−#: qml/Panel/Indicators/MenuItemFactory.qml:754
295+#: qml/Panel/Indicators/MenuItemFactory.qml:769
288296msgid "Paused, tap to resume"
289297msgstr "Posáu, toca pa reanudar"
290298
291−#: qml/Panel/Indicators/MenuItemFactory.qml:756
299+#: qml/Panel/Indicators/MenuItemFactory.qml:771
292300msgid "Canceled"
293301msgstr "Encaboxáu"
294302
295−#: qml/Panel/Indicators/MenuItemFactory.qml:758
303+#: qml/Panel/Indicators/MenuItemFactory.qml:773
296304msgid "Finished"
297305msgstr "Finó"
298306
299−#: qml/Panel/Indicators/MenuItemFactory.qml:760
307+#: qml/Panel/Indicators/MenuItemFactory.qml:775
300308msgid "Failed, tap to retry"
301309msgstr "Falló, toca pa reintentar"
302310
@@ -308,45 +316,49 @@ msgstr "Desbloquiar SIM"
308316msgid "Roaming"
309317msgstr "Roaming"
310318
311−#: qml/Shell.qml:320
312−msgid "Enter your passphrase"
313−msgstr "Introduz contraseña"
319+#: qml/Shell.qml:381
320+msgid "Enter passphrase"
321+msgstr "Escribi la frase contraseña"
314322
315−#: qml/Shell.qml:321
323+#: qml/Shell.qml:382
316324msgid "Sorry, incorrect passphrase"
317325msgstr "Sentímoslo, contraseña incorreuta"
318326
319−#: qml/Shell.qml:323
320−msgid "Enter your passcode"
321−msgstr "Introduz códigu de pasu"
327+#: qml/Shell.qml:383
328+msgid "Please re-enter"
329+msgstr "Vuelvi a escribila"
322330
323−#: qml/Shell.qml:324
331+#: qml/Shell.qml:385
332+msgid "Enter passcode"
333+msgstr "Escribi'l códigu de pasu"
334+
335+#: qml/Shell.qml:386
324336msgid "Sorry, incorrect passcode"
325337msgstr "Sentímoslo, códigu de pasu incorreutu"
326338
327−#: qml/Shell.qml:327
339+#: qml/Shell.qml:389
328340#, qt-format
329−msgid "Enter your %1"
330−msgstr "Introduz %1"
341+msgid "Enter %1"
342+msgstr "Escribi %1"
331343
332−#: qml/Shell.qml:328
344+#: qml/Shell.qml:390
333345#, qt-format
334346msgid "Sorry, incorrect %1"
335347msgstr "Sentímoslo, %1 incorreutu"
336348
337−#: qml/Shell.qml:363
349+#: qml/Shell.qml:431
338350msgid "Sorry, incorrect passphrase."
339351msgstr "Fras de pasu incorreuta"
340352
341−#: qml/Shell.qml:364
353+#: qml/Shell.qml:432
342354msgid "Sorry, incorrect passcode."
343355msgstr "Códigu de pasu incorreutu"
344356
345−#: qml/Shell.qml:365
357+#: qml/Shell.qml:433
346358msgid "This will be your last attempt."
347359msgstr "Esti ye'l caberu intentu."
348360
349−#: qml/Shell.qml:367
361+#: qml/Shell.qml:435
350362msgid ""
351363"If passphrase is entered incorrectly, your phone will conduct a factory "
352364"reset and all personal data will be deleted."
@@ -354,13 +366,10 @@ msgstr ""
354366"Si s'inxerta la fras incorreutamente, el teléfonu va volver a la "
355367"configuración de fábrica y van perdese tolos datos personales."
356368
357−#: qml/Shell.qml:368
369+#: qml/Shell.qml:436
358370msgid ""
359371"If passcode is entered incorrectly, your phone will conduct a factory reset "
360372"and all personal data will be deleted."
361373msgstr ""
362374"Si s'inxerta'l códigu incorreutamente, el teléfonu va volver a la "
363375"configuración de fábrica y van perdese tolos datos personales."
364−
365−#~ msgid "Manage Dash"
366−#~ msgstr "Xestionar tableru"
po/az.po+94−83
@@ -7,15 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
1111"PO-Revision-Date: 2014-09-03 16:39+0000\n"
1212"Last-Translator: Nicat Məmmədov <n1c4t97@gmail.com>\n"
1313"Language-Team: Azerbaijani <az@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:19+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
18+"X-Launchpad-Export-Date: 2014-11-06 06:39+0000\n"
19+"X-Generator: Launchpad (build 17223)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
@@ -30,59 +31,78 @@ msgstr "Pin qısayolu"
3031msgid "Unpin shortcut"
3132msgstr "Açma qısayolu"
3233
33−#: qml/Components/Dialogs.qml:70
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+
53+#: qml/Components/Dialogs.qml:74
3454msgid "Log out"
3555msgstr "Çıxış"
3656
37−#: qml/Components/Dialogs.qml:71
57+#: qml/Components/Dialogs.qml:75
3858msgid "Are you sure you want to log out?"
3959msgstr "Çıxmaq istәdiyinizdәn әminsiniz?"
4060
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
61+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
62+#: qml/Components/Dialogs.qml:126
4363msgid "No"
4464msgstr "Yox"
4565
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
66+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
67+#: qml/Components/Dialogs.qml:133
4868msgid "Yes"
4969msgstr "Hə"
5070
51−#: qml/Components/Dialogs.qml:94
71+#: qml/Components/Dialogs.qml:98
5272msgid "Shut down"
5373msgstr "Sistemi Söndür"
5474
55−#: qml/Components/Dialogs.qml:95
75+#: qml/Components/Dialogs.qml:99
5676msgid "Are you sure you want to shut down?"
5777msgstr "Sistemi söndürmәk istәdiyinizә әminsiniz?"
5878
59−#: qml/Components/Dialogs.qml:119
79+#: qml/Components/Dialogs.qml:123
6080msgid "Reboot"
6181msgstr "Yenidən yüklə"
6282
63−#: qml/Components/Dialogs.qml:120
83+#: qml/Components/Dialogs.qml:124
6484msgid "Are you sure you want to reboot?"
6585msgstr "Yenidәn başlatmaq istәdiyinizә әminsiniz?"
6686
67−#: qml/Components/Dialogs.qml:144
87+#: qml/Components/Dialogs.qml:148
6888msgid "Power"
6989msgstr ""
7090
71−#: qml/Components/Dialogs.qml:145
91+#: qml/Components/Dialogs.qml:149
7292msgid ""
7393"Are you sure you would like\n"
7494"to power off?"
7595msgstr ""
7696
77−#: qml/Components/Dialogs.qml:147
97+#: qml/Components/Dialogs.qml:151
7898msgid "Power off"
7999msgstr "Söndür"
80100
81−#: qml/Components/Dialogs.qml:157
101+#: qml/Components/Dialogs.qml:161
82102msgid "Restart"
83103msgstr ""
84104
85−#: qml/Components/Dialogs.qml:167
105+#: qml/Components/Dialogs.qml:171
86106msgid "Cancel"
87107msgstr "İmtina"
88108
@@ -114,20 +134,20 @@ msgstr "Bağla"
114134msgid "Swipe up again to close the settings screen"
115135msgstr "Nizamlamalar ekranını bağlamaq üçün yenidən yuxarı sürüşdürün"
116136
117−#: qml/Components/EdgeDemo.qml:198
137+#: qml/Components/EdgeDemo.qml:201
118138msgid "Left edge"
119139msgstr "Sol künc"
120140
121−#: qml/Components/EdgeDemo.qml:199
141+#: qml/Components/EdgeDemo.qml:202
122142msgid "Swipe from the left to reveal the launcher for quick access to apps"
123143msgstr ""
124144"Applikasiyalara sürətli keçid üçün paneli açmaq üçün sol küncdən çəkin"
125145
126−#: qml/Components/EdgeDemo.qml:226
146+#: qml/Components/EdgeDemo.qml:229
127147msgid "Well done"
128148msgstr "Təbriklər"
129149
130−#: qml/Components/EdgeDemo.qml:227
150+#: qml/Components/EdgeDemo.qml:230
131151msgid ""
132152"You have now mastered the edge gestures and can start using the "
133153"phone<br><br>Tap on the screen to start"
@@ -135,40 +155,27 @@ msgstr ""
135155"Siz künc hәrәkәtlәrini öyrәndiniz və telefonu istifadə etməyə başlaya "
136156"bilərsiniz.<br><br>Başlamaq üçün ekrana toxunun"
137157
138−#: qml/Components/Lockscreen.qml:167
139−msgid "Please wait"
140−msgstr "Xahiş edirik gözləyin"
141−
142−#: qml/Components/Lockscreen.qml:172
143−msgid "Too many incorrect attempts"
144−msgstr "Çoxlu yanlış cəhdlәr"
158+#: qml/Components/Lockscreen.qml:223
159+msgid "Return to Call"
160+msgstr ""
145161
146−#: qml/Components/Lockscreen.qml:206
162+#: qml/Components/Lockscreen.qml:223
147163msgid "Emergency Call"
148164msgstr "Zərurət zəngi"
149165
150−#: qml/Components/Lockscreen.qml:226
166+#: qml/Components/Lockscreen.qml:255
151167msgid "OK"
152168msgstr "Oldu"
153169
154−#: qml/Components/PassphraseLockscreen.qml:61
155−#, qt-format
156−msgid "Hello %1"
157−msgstr "Salam %1"
158−
159−#: qml/Components/PassphraseLockscreen.qml:61
160−msgid "Hello"
161−msgstr "Salam"
162−
163−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
170+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
164171msgid "See less"
165172msgstr "Daha azını gör"
166173
167−#: qml/Dash/GenericScopeView.qml:411
174+#: qml/Dash/GenericScopeView.qml:434
168175msgid "See all"
169176msgstr "Hamısını gör"
170177
171−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
178+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
172179#: qml/Panel/SearchIndicator.qml:27
173180msgid "Search"
174181msgstr "Axtar"
@@ -205,15 +212,23 @@ msgstr "Rəy yaz"
205212msgid "Send"
206213msgstr "Göndər"
207214
208−#: qml/Dash/ScopesOverview.qml:206
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+
223+#: qml/Dash/ScopesOverview.qml:215
209224msgid "Manage Scopes"
210225msgstr ""
211226
212−#: qml/Dash/ScopesOverview.qml:428
227+#: qml/Dash/ScopesOverview.qml:437
213228msgid "Done"
214229msgstr "Başa çatdı"
215230
216−#: qml/Dash/ScopesOverview.qml:454
231+#: qml/Dash/ScopesOverview.qml:463
217232msgid "Store"
218233msgstr ""
219234
@@ -225,9 +240,9 @@ msgstr "Seçilmişlər"
225240msgid "All"
226241msgstr "Hamısı"
227242
228−#: qml/Greeter/Greeter.qml:157
229−msgid "Swipe to unlock"
230−msgstr "Kilidi açmaq üçün sürüşdürün"
243+#: qml/Greeter/Greeter.qml:174
244+msgid "Unlock"
245+msgstr ""
231246
232247#: qml/Hud/HudParametrizedActionsPage.qml:139
233248msgid "Confirm"
@@ -249,51 +264,43 @@ msgstr "Danışın..."
249264msgid "Speaking..."
250265msgstr "Danışır..."
251266
252−#: qml/Notifications/NotificationMenuItemFactory.qml:108
267+#: qml/Notifications/NotificationMenuItemFactory.qml:116
253268msgid "Show password"
254269msgstr "Şifrәni göstәr"
255270
256−#: qml/Notifications/NotificationMenuItemFactory.qml:124
257−msgid "Enter SIM PIN"
258−msgstr "SIM PIN kodunuzu daxil edin"
259−
260−#: qml/Notifications/NotificationMenuItemFactory.qml:125
261−msgid "Sorry, incorrect PIN"
262−msgstr "Bağışlayın, PIN yanlışdır"
263−
264−#: qml/Panel/ActiveCallHint.qml:77
271+#: qml/Panel/ActiveCallHint.qml:79
265272msgid "Tap to return to call..."
266273msgstr "Zəngə qayıtmaq üçün toxunun..."
267274
268−#: qml/Panel/ActiveCallHint.qml:90
275+#: qml/Panel/ActiveCallHint.qml:92
269276msgid "Conference"
270277msgstr "Konfrans"
271278
272−#: qml/Panel/Indicators/MenuItemFactory.qml:600
279+#: qml/Panel/Indicators/MenuItemFactory.qml:615
273280msgid "Nothing is playing"
274281msgstr ""
275282
276−#: qml/Panel/Indicators/MenuItemFactory.qml:748
283+#: qml/Panel/Indicators/MenuItemFactory.qml:763
277284msgid "In queue…"
278285msgstr "Növbədədir..."
279286
280−#: qml/Panel/Indicators/MenuItemFactory.qml:752
287+#: qml/Panel/Indicators/MenuItemFactory.qml:767
281288msgid "Downloading"
282289msgstr "Endirilir"
283290
284−#: qml/Panel/Indicators/MenuItemFactory.qml:754
291+#: qml/Panel/Indicators/MenuItemFactory.qml:769
285292msgid "Paused, tap to resume"
286293msgstr "Dayandırıldı. Davam etmək üçün toxunun"
287294
288−#: qml/Panel/Indicators/MenuItemFactory.qml:756
295+#: qml/Panel/Indicators/MenuItemFactory.qml:771
289296msgid "Canceled"
290297msgstr "İmtina edildi"
291298
292−#: qml/Panel/Indicators/MenuItemFactory.qml:758
299+#: qml/Panel/Indicators/MenuItemFactory.qml:773
293300msgid "Finished"
294301msgstr "Bitdi"
295302
296−#: qml/Panel/Indicators/MenuItemFactory.qml:760
303+#: qml/Panel/Indicators/MenuItemFactory.qml:775
297304msgid "Failed, tap to retry"
298305msgstr "Alınmadı. Yenidәn cәhd etmək üçün toxunun"
299306
@@ -305,45 +312,49 @@ msgstr "SIM kilidini aç"
305312msgid "Roaming"
306313msgstr "Rominq"
307314
308−#: qml/Shell.qml:320
309−msgid "Enter your passphrase"
310−msgstr "Açar sözünüzü daxil edin"
315+#: qml/Shell.qml:381
316+msgid "Enter passphrase"
317+msgstr ""
311318
312−#: qml/Shell.qml:321
319+#: qml/Shell.qml:382
313320msgid "Sorry, incorrect passphrase"
314321msgstr "Bağışlayın, açar söz yanlışdır"
315322
316−#: qml/Shell.qml:323
317−msgid "Enter your passcode"
323+#: qml/Shell.qml:383
324+msgid "Please re-enter"
318325msgstr ""
319326
320−#: qml/Shell.qml:324
327+#: qml/Shell.qml:385
328+msgid "Enter passcode"
329+msgstr ""
330+
331+#: qml/Shell.qml:386
321332msgid "Sorry, incorrect passcode"
322333msgstr ""
323334
324−#: qml/Shell.qml:327
335+#: qml/Shell.qml:389
325336#, qt-format
326−msgid "Enter your %1"
327−msgstr "%1 daxil edin"
337+msgid "Enter %1"
338+msgstr ""
328339
329−#: qml/Shell.qml:328
340+#: qml/Shell.qml:390
330341#, qt-format
331342msgid "Sorry, incorrect %1"
332343msgstr "Bağışlayın, %1 yanlışdır"
333344
334−#: qml/Shell.qml:363
345+#: qml/Shell.qml:431
335346msgid "Sorry, incorrect passphrase."
336347msgstr "Bağışlayın, açar söz yanlışdır."
337348
338−#: qml/Shell.qml:364
349+#: qml/Shell.qml:432
339350msgid "Sorry, incorrect passcode."
340351msgstr "Təəssüf ki, açar kod yanlışdır."
341352
342−#: qml/Shell.qml:365
353+#: qml/Shell.qml:433
343354msgid "This will be your last attempt."
344355msgstr "Bu sizin son cəhdiniz olacaq."
345356
346−#: qml/Shell.qml:367
357+#: qml/Shell.qml:435
347358msgid ""
348359"If passphrase is entered incorrectly, your phone will conduct a factory "
349360"reset and all personal data will be deleted."
@@ -351,7 +362,7 @@ msgstr ""
351362"Əgər açar söz yanlış daxil edilibsə, onda telefonunuz fabrika parametrlərinə "
352363"geri qayıdacaq və bütün şəxsi məlumatlarınız silinəcək."
353364
354−#: qml/Shell.qml:368
365+#: qml/Shell.qml:436
355366msgid ""
356367"If passcode is entered incorrectly, your phone will conduct a factory reset "
357368"and all personal data will be deleted."
po/be.po+91−79
@@ -7,15 +7,17 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
1111"PO-Revision-Date: 2014-09-24 17:12+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Belarusian <be@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:19+0000\n"
18−"X-Generator: Launchpad (build 17196)\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-11-06 06:39+0000\n"
20+"X-Generator: Launchpad (build 17223)\n"
1921
2022#: plugins/LightDM/Greeter.cpp:130
2123msgid "Password: "
@@ -30,59 +32,78 @@ msgstr ""
3032msgid "Unpin shortcut"
3133msgstr ""
3234
33−#: qml/Components/Dialogs.qml:70
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:74
3455msgid "Log out"
3556msgstr ""
3657
37−#: qml/Components/Dialogs.qml:71
58+#: qml/Components/Dialogs.qml:75
3859msgid "Are you sure you want to log out?"
3960msgstr ""
4061
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
62+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
63+#: qml/Components/Dialogs.qml:126
4364msgid "No"
4465msgstr ""
4566
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
67+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
68+#: qml/Components/Dialogs.qml:133
4869msgid "Yes"
4970msgstr ""
5071
51−#: qml/Components/Dialogs.qml:94
72+#: qml/Components/Dialogs.qml:98
5273msgid "Shut down"
5374msgstr ""
5475
55−#: qml/Components/Dialogs.qml:95
76+#: qml/Components/Dialogs.qml:99
5677msgid "Are you sure you want to shut down?"
5778msgstr ""
5879
59−#: qml/Components/Dialogs.qml:119
80+#: qml/Components/Dialogs.qml:123
6081msgid "Reboot"
6182msgstr ""
6283
63−#: qml/Components/Dialogs.qml:120
84+#: qml/Components/Dialogs.qml:124
6485msgid "Are you sure you want to reboot?"
6586msgstr ""
6687
67−#: qml/Components/Dialogs.qml:144
88+#: qml/Components/Dialogs.qml:148
6889msgid "Power"
6990msgstr ""
7091
71−#: qml/Components/Dialogs.qml:145
92+#: qml/Components/Dialogs.qml:149
7293msgid ""
7394"Are you sure you would like\n"
7495"to power off?"
7596msgstr ""
7697
77−#: qml/Components/Dialogs.qml:147
98+#: qml/Components/Dialogs.qml:151
7899msgid "Power off"
79100msgstr ""
80101
81−#: qml/Components/Dialogs.qml:157
102+#: qml/Components/Dialogs.qml:161
82103msgid "Restart"
83104msgstr ""
84105
85−#: qml/Components/Dialogs.qml:167
106+#: qml/Components/Dialogs.qml:171
86107msgid "Cancel"
87108msgstr ""
88109
@@ -114,58 +135,45 @@ msgstr ""
114135msgid "Swipe up again to close the settings screen"
115136msgstr ""
116137
117−#: qml/Components/EdgeDemo.qml:198
138+#: qml/Components/EdgeDemo.qml:201
118139msgid "Left edge"
119140msgstr ""
120141
121−#: qml/Components/EdgeDemo.qml:199
142+#: qml/Components/EdgeDemo.qml:202
122143msgid "Swipe from the left to reveal the launcher for quick access to apps"
123144msgstr ""
124145
125−#: qml/Components/EdgeDemo.qml:226
146+#: qml/Components/EdgeDemo.qml:229
126147msgid "Well done"
127148msgstr ""
128149
129−#: qml/Components/EdgeDemo.qml:227
150+#: qml/Components/EdgeDemo.qml:230
130151msgid ""
131152"You have now mastered the edge gestures and can start using the "
132153"phone<br><br>Tap on the screen to start"
133154msgstr ""
134155
135−#: qml/Components/Lockscreen.qml:167
136−msgid "Please wait"
137−msgstr ""
138−
139−#: qml/Components/Lockscreen.qml:172
140−msgid "Too many incorrect attempts"
156+#: qml/Components/Lockscreen.qml:223
157+msgid "Return to Call"
141158msgstr ""
142159
143−#: qml/Components/Lockscreen.qml:206
160+#: qml/Components/Lockscreen.qml:223
144161msgid "Emergency Call"
145162msgstr ""
146163
147−#: qml/Components/Lockscreen.qml:226
164+#: qml/Components/Lockscreen.qml:255
148165msgid "OK"
149166msgstr ""
150167
151−#: qml/Components/PassphraseLockscreen.qml:61
152−#, qt-format
153−msgid "Hello %1"
154−msgstr ""
155−
156−#: qml/Components/PassphraseLockscreen.qml:61
157−msgid "Hello"
158−msgstr ""
159−
160−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
168+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
161169msgid "See less"
162170msgstr ""
163171
164−#: qml/Dash/GenericScopeView.qml:411
172+#: qml/Dash/GenericScopeView.qml:434
165173msgid "See all"
166174msgstr ""
167175
168−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
176+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
169177#: qml/Panel/SearchIndicator.qml:27
170178msgid "Search"
171179msgstr ""
@@ -202,15 +210,23 @@ msgstr ""
202210msgid "Send"
203211msgstr ""
204212
205−#: qml/Dash/ScopesOverview.qml:206
213+#: qml/Dash/PullToRefreshScopeStyle.qml:55
214+msgid "Pull to refresh…"
215+msgstr ""
216+
217+#: qml/Dash/PullToRefreshScopeStyle.qml:60
218+msgid "Release to refresh…"
219+msgstr ""
220+
221+#: qml/Dash/ScopesOverview.qml:215
206222msgid "Manage Scopes"
207223msgstr ""
208224
209−#: qml/Dash/ScopesOverview.qml:428
225+#: qml/Dash/ScopesOverview.qml:437
210226msgid "Done"
211227msgstr ""
212228
213−#: qml/Dash/ScopesOverview.qml:454
229+#: qml/Dash/ScopesOverview.qml:463
214230msgid "Store"
215231msgstr ""
216232
@@ -222,8 +238,8 @@ msgstr ""
222238msgid "All"
223239msgstr ""
224240
225−#: qml/Greeter/Greeter.qml:157
226−msgid "Swipe to unlock"
241+#: qml/Greeter/Greeter.qml:174
242+msgid "Unlock"
227243msgstr ""
228244
229245#: qml/Hud/HudParametrizedActionsPage.qml:139
@@ -246,51 +262,43 @@ msgstr ""
246262msgid "Speaking..."
247263msgstr ""
248264
249−#: qml/Notifications/NotificationMenuItemFactory.qml:108
265+#: qml/Notifications/NotificationMenuItemFactory.qml:116
250266msgid "Show password"
251267msgstr ""
252268
253−#: qml/Notifications/NotificationMenuItemFactory.qml:124
254−msgid "Enter SIM PIN"
255−msgstr ""
256−
257−#: qml/Notifications/NotificationMenuItemFactory.qml:125
258−msgid "Sorry, incorrect PIN"
259−msgstr ""
260−
261−#: qml/Panel/ActiveCallHint.qml:77
269+#: qml/Panel/ActiveCallHint.qml:79
262270msgid "Tap to return to call..."
263271msgstr ""
264272
265−#: qml/Panel/ActiveCallHint.qml:90
273+#: qml/Panel/ActiveCallHint.qml:92
266274msgid "Conference"
267275msgstr ""
268276
269−#: qml/Panel/Indicators/MenuItemFactory.qml:600
277+#: qml/Panel/Indicators/MenuItemFactory.qml:615
270278msgid "Nothing is playing"
271279msgstr ""
272280
273−#: qml/Panel/Indicators/MenuItemFactory.qml:748
281+#: qml/Panel/Indicators/MenuItemFactory.qml:763
274282msgid "In queue…"
275283msgstr ""
276284
277−#: qml/Panel/Indicators/MenuItemFactory.qml:752
285+#: qml/Panel/Indicators/MenuItemFactory.qml:767
278286msgid "Downloading"
279287msgstr ""
280288
281−#: qml/Panel/Indicators/MenuItemFactory.qml:754
289+#: qml/Panel/Indicators/MenuItemFactory.qml:769
282290msgid "Paused, tap to resume"
283291msgstr ""
284292
285−#: qml/Panel/Indicators/MenuItemFactory.qml:756
293+#: qml/Panel/Indicators/MenuItemFactory.qml:771
286294msgid "Canceled"
287295msgstr ""
288296
289−#: qml/Panel/Indicators/MenuItemFactory.qml:758
297+#: qml/Panel/Indicators/MenuItemFactory.qml:773
290298msgid "Finished"
291299msgstr ""
292300
293−#: qml/Panel/Indicators/MenuItemFactory.qml:760
301+#: qml/Panel/Indicators/MenuItemFactory.qml:775
294302msgid "Failed, tap to retry"
295303msgstr ""
296304
@@ -302,51 +310,55 @@ msgstr ""
302310msgid "Roaming"
303311msgstr ""
304312
305−#: qml/Shell.qml:320
306−msgid "Enter your passphrase"
313+#: qml/Shell.qml:381
314+msgid "Enter passphrase"
307315msgstr ""
308316
309−#: qml/Shell.qml:321
317+#: qml/Shell.qml:382
310318msgid "Sorry, incorrect passphrase"
311319msgstr ""
312320
313−#: qml/Shell.qml:323
314−msgid "Enter your passcode"
321+#: qml/Shell.qml:383
322+msgid "Please re-enter"
323+msgstr ""
324+
325+#: qml/Shell.qml:385
326+msgid "Enter passcode"
315327msgstr ""
316328
317−#: qml/Shell.qml:324
329+#: qml/Shell.qml:386
318330msgid "Sorry, incorrect passcode"
319331msgstr ""
320332
321−#: qml/Shell.qml:327
333+#: qml/Shell.qml:389
322334#, qt-format
323−msgid "Enter your %1"
335+msgid "Enter %1"
324336msgstr ""
325337
326−#: qml/Shell.qml:328
338+#: qml/Shell.qml:390
327339#, qt-format
328340msgid "Sorry, incorrect %1"
329341msgstr ""
330342
331−#: qml/Shell.qml:363
343+#: qml/Shell.qml:431
332344msgid "Sorry, incorrect passphrase."
333345msgstr ""
334346
335−#: qml/Shell.qml:364
347+#: qml/Shell.qml:432
336348msgid "Sorry, incorrect passcode."
337349msgstr ""
338350
339−#: qml/Shell.qml:365
351+#: qml/Shell.qml:433
340352msgid "This will be your last attempt."
341353msgstr ""
342354
343−#: qml/Shell.qml:367
355+#: qml/Shell.qml:435
344356msgid ""
345357"If passphrase is entered incorrectly, your phone will conduct a factory "
346358"reset and all personal data will be deleted."
347359msgstr ""
348360
349−#: qml/Shell.qml:368
361+#: qml/Shell.qml:436
350362msgid ""
351363"If passcode is entered incorrectly, your phone will conduct a factory reset "
352364"and all personal data will be deleted."
po/bg.po+90−79
@@ -7,15 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
1111"PO-Revision-Date: 2014-04-01 14:08+0000\n"
1212"Last-Translator: Atanas Kovachki <Unknown>\n"
1313"Language-Team: Bulgarian <bg@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:19+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
18+"X-Launchpad-Export-Date: 2014-11-06 06:40+0000\n"
19+"X-Generator: Launchpad (build 17223)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
@@ -30,59 +31,78 @@ msgstr ""
3031msgid "Unpin shortcut"
3132msgstr ""
3233
33−#: qml/Components/Dialogs.qml:70
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+
53+#: qml/Components/Dialogs.qml:74
3454msgid "Log out"
3555msgstr ""
3656
37−#: qml/Components/Dialogs.qml:71
57+#: qml/Components/Dialogs.qml:75
3858msgid "Are you sure you want to log out?"
3959msgstr ""
4060
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
61+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
62+#: qml/Components/Dialogs.qml:126
4363msgid "No"
4464msgstr ""
4565
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
66+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
67+#: qml/Components/Dialogs.qml:133
4868msgid "Yes"
4969msgstr ""
5070
51−#: qml/Components/Dialogs.qml:94
71+#: qml/Components/Dialogs.qml:98
5272msgid "Shut down"
5373msgstr ""
5474
55−#: qml/Components/Dialogs.qml:95
75+#: qml/Components/Dialogs.qml:99
5676msgid "Are you sure you want to shut down?"
5777msgstr ""
5878
59−#: qml/Components/Dialogs.qml:119
79+#: qml/Components/Dialogs.qml:123
6080msgid "Reboot"
6181msgstr ""
6282
63−#: qml/Components/Dialogs.qml:120
83+#: qml/Components/Dialogs.qml:124
6484msgid "Are you sure you want to reboot?"
6585msgstr ""
6686
67−#: qml/Components/Dialogs.qml:144
87+#: qml/Components/Dialogs.qml:148
6888msgid "Power"
6989msgstr ""
7090
71−#: qml/Components/Dialogs.qml:145
91+#: qml/Components/Dialogs.qml:149
7292msgid ""
7393"Are you sure you would like\n"
7494"to power off?"
7595msgstr ""
7696
77−#: qml/Components/Dialogs.qml:147
97+#: qml/Components/Dialogs.qml:151
7898msgid "Power off"
7999msgstr ""
80100
81−#: qml/Components/Dialogs.qml:157
101+#: qml/Components/Dialogs.qml:161
82102msgid "Restart"
83103msgstr ""
84104
85−#: qml/Components/Dialogs.qml:167
105+#: qml/Components/Dialogs.qml:171
86106msgid "Cancel"
87107msgstr ""
88108
@@ -119,60 +139,47 @@ msgid "Swipe up again to close the settings screen"
119139msgstr ""
120140"Отново приплъзнете пръста си нагоре за да затворите екрана с настройките"
121141
122−#: qml/Components/EdgeDemo.qml:198
142+#: qml/Components/EdgeDemo.qml:201
123143msgid "Left edge"
124144msgstr "Ляв край"
125145
126−#: qml/Components/EdgeDemo.qml:199
146+#: qml/Components/EdgeDemo.qml:202
127147msgid "Swipe from the left to reveal the launcher for quick access to apps"
128148msgstr ""
129149"Приплъзнете пръста си от левия край към десния, за да отворите стартера за "
130150"бърз достъп до приложенията"
131151
132−#: qml/Components/EdgeDemo.qml:226
152+#: qml/Components/EdgeDemo.qml:229
133153msgid "Well done"
134154msgstr "Великолепно"
135155
136−#: qml/Components/EdgeDemo.qml:227
156+#: qml/Components/EdgeDemo.qml:230
137157msgid ""
138158"You have now mastered the edge gestures and can start using the "
139159"phone<br><br>Tap on the screen to start"
140160msgstr ""
141161
142−#: qml/Components/Lockscreen.qml:167
143−msgid "Please wait"
144−msgstr ""
145−
146−#: qml/Components/Lockscreen.qml:172
147−msgid "Too many incorrect attempts"
162+#: qml/Components/Lockscreen.qml:223
163+msgid "Return to Call"
148164msgstr ""
149165
150−#: qml/Components/Lockscreen.qml:206
166+#: qml/Components/Lockscreen.qml:223
151167msgid "Emergency Call"
152168msgstr "Спешно повикване"
153169
154−#: qml/Components/Lockscreen.qml:226
170+#: qml/Components/Lockscreen.qml:255
155171msgid "OK"
156172msgstr ""
157173
158−#: qml/Components/PassphraseLockscreen.qml:61
159−#, qt-format
160−msgid "Hello %1"
161−msgstr "Здравей, %1"
162−
163−#: qml/Components/PassphraseLockscreen.qml:61
164−msgid "Hello"
165−msgstr "Здравей"
166−
167−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
174+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
168175msgid "See less"
169176msgstr ""
170177
171−#: qml/Dash/GenericScopeView.qml:411
178+#: qml/Dash/GenericScopeView.qml:434
172179msgid "See all"
173180msgstr ""
174181
175−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
182+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
176183#: qml/Panel/SearchIndicator.qml:27
177184msgid "Search"
178185msgstr "Търсене"
@@ -209,15 +216,23 @@ msgstr "Добави отзив"
209216msgid "Send"
210217msgstr "Изпрати"
211218
212−#: qml/Dash/ScopesOverview.qml:206
219+#: qml/Dash/PullToRefreshScopeStyle.qml:55
220+msgid "Pull to refresh…"
221+msgstr ""
222+
223+#: qml/Dash/PullToRefreshScopeStyle.qml:60
224+msgid "Release to refresh…"
225+msgstr ""
226+
227+#: qml/Dash/ScopesOverview.qml:215
213228msgid "Manage Scopes"
214229msgstr ""
215230
216−#: qml/Dash/ScopesOverview.qml:428
231+#: qml/Dash/ScopesOverview.qml:437
217232msgid "Done"
218233msgstr ""
219234
220−#: qml/Dash/ScopesOverview.qml:454
235+#: qml/Dash/ScopesOverview.qml:463
221236msgid "Store"
222237msgstr ""
223238
@@ -229,8 +244,8 @@ msgstr ""
229244msgid "All"
230245msgstr ""
231246
232−#: qml/Greeter/Greeter.qml:157
233−msgid "Swipe to unlock"
247+#: qml/Greeter/Greeter.qml:174
248+msgid "Unlock"
234249msgstr ""
235250
236251#: qml/Hud/HudParametrizedActionsPage.qml:139
@@ -253,51 +268,43 @@ msgstr "Говорете сега..."
253268msgid "Speaking..."
254269msgstr "Говорете..."
255270
256−#: qml/Notifications/NotificationMenuItemFactory.qml:108
271+#: qml/Notifications/NotificationMenuItemFactory.qml:116
257272msgid "Show password"
258273msgstr "Покажи паролата"
259274
260−#: qml/Notifications/NotificationMenuItemFactory.qml:124
261−msgid "Enter SIM PIN"
262−msgstr ""
263−
264−#: qml/Notifications/NotificationMenuItemFactory.qml:125
265−msgid "Sorry, incorrect PIN"
266−msgstr ""
267−
268−#: qml/Panel/ActiveCallHint.qml:77
275+#: qml/Panel/ActiveCallHint.qml:79
269276msgid "Tap to return to call..."
270277msgstr ""
271278
272−#: qml/Panel/ActiveCallHint.qml:90
279+#: qml/Panel/ActiveCallHint.qml:92
273280msgid "Conference"
274281msgstr ""
275282
276−#: qml/Panel/Indicators/MenuItemFactory.qml:600
283+#: qml/Panel/Indicators/MenuItemFactory.qml:615
277284msgid "Nothing is playing"
278285msgstr ""
279286
280−#: qml/Panel/Indicators/MenuItemFactory.qml:748
287+#: qml/Panel/Indicators/MenuItemFactory.qml:763
281288msgid "In queue…"
282289msgstr ""
283290
284−#: qml/Panel/Indicators/MenuItemFactory.qml:752
291+#: qml/Panel/Indicators/MenuItemFactory.qml:767
285292msgid "Downloading"
286293msgstr ""
287294
288−#: qml/Panel/Indicators/MenuItemFactory.qml:754
295+#: qml/Panel/Indicators/MenuItemFactory.qml:769
289296msgid "Paused, tap to resume"
290297msgstr ""
291298
292−#: qml/Panel/Indicators/MenuItemFactory.qml:756
299+#: qml/Panel/Indicators/MenuItemFactory.qml:771
293300msgid "Canceled"
294301msgstr ""
295302
296−#: qml/Panel/Indicators/MenuItemFactory.qml:758
303+#: qml/Panel/Indicators/MenuItemFactory.qml:773
297304msgid "Finished"
298305msgstr ""
299306
300−#: qml/Panel/Indicators/MenuItemFactory.qml:760
307+#: qml/Panel/Indicators/MenuItemFactory.qml:775
301308msgid "Failed, tap to retry"
302309msgstr ""
303310
@@ -309,51 +316,55 @@ msgstr ""
309316msgid "Roaming"
310317msgstr ""
311318
312−#: qml/Shell.qml:320
313−msgid "Enter your passphrase"
319+#: qml/Shell.qml:381
320+msgid "Enter passphrase"
314321msgstr ""
315322
316−#: qml/Shell.qml:321
323+#: qml/Shell.qml:382
317324msgid "Sorry, incorrect passphrase"
318325msgstr ""
319326
320−#: qml/Shell.qml:323
321−msgid "Enter your passcode"
327+#: qml/Shell.qml:383
328+msgid "Please re-enter"
329+msgstr ""
330+
331+#: qml/Shell.qml:385
332+msgid "Enter passcode"
322333msgstr ""
323334
324−#: qml/Shell.qml:324
335+#: qml/Shell.qml:386
325336msgid "Sorry, incorrect passcode"
326337msgstr ""
327338
328−#: qml/Shell.qml:327
339+#: qml/Shell.qml:389
329340#, qt-format
330−msgid "Enter your %1"
341+msgid "Enter %1"
331342msgstr ""
332343
333−#: qml/Shell.qml:328
344+#: qml/Shell.qml:390
334345#, qt-format
335346msgid "Sorry, incorrect %1"
336347msgstr ""
337348
338−#: qml/Shell.qml:363
349+#: qml/Shell.qml:431
339350msgid "Sorry, incorrect passphrase."
340351msgstr ""
341352
342−#: qml/Shell.qml:364
353+#: qml/Shell.qml:432
343354msgid "Sorry, incorrect passcode."
344355msgstr ""
345356
346−#: qml/Shell.qml:365
357+#: qml/Shell.qml:433
347358msgid "This will be your last attempt."
348359msgstr ""
349360
350−#: qml/Shell.qml:367
361+#: qml/Shell.qml:435
351362msgid ""
352363"If passphrase is entered incorrectly, your phone will conduct a factory "
353364"reset and all personal data will be deleted."
354365msgstr ""
355366
356−#: qml/Shell.qml:368
367+#: qml/Shell.qml:436
357368msgid ""
358369"If passcode is entered incorrectly, your phone will conduct a factory reset "
359370"and all personal data will be deleted."
po/br.po+103−91
@@ -7,68 +7,92 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
11−"PO-Revision-Date: 2014-09-30 06:25+0000\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
11+"PO-Revision-Date: 2014-11-05 07:24+0000\n"
1212"Last-Translator: Fohanno Thierry <thierry.fohanno@ofis-bzh.org>\n"
1313"Language-Team: Breton <br@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-30 07:10+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=2; plural=n > 1;\n"
18+"X-Launchpad-Export-Date: 2014-11-06 06:40+0000\n"
19+"X-Generator: Launchpad (build 17223)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
2223msgstr "Ger-tremen : "
2324
24−#: plugins/Unity/Launcher/launcheritem.cpp:44
25−#: plugins/Unity/Launcher/launcheritem.cpp:74
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
2627msgid "Pin shortcut"
2728msgstr "Spilhennañ ar verradenn"
2829
29−#: plugins/Unity/Launcher/launcheritem.cpp:74
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
3031msgid "Unpin shortcut"
3132msgstr "Dispilhennañ ar verradenn"
3233
33−#: qml/Components/Dialogs.qml:70
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+
57+#: qml/Components/Dialogs.qml:74
3458msgid "Log out"
3559msgstr "Digevreañ"
3660
37−#: qml/Components/Dialogs.qml:71
61+#: qml/Components/Dialogs.qml:75
3862msgid "Are you sure you want to log out?"
3963msgstr "Ha sur oc'h e fell deoc'h digevreañ ?"
4064
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
65+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
66+#: qml/Components/Dialogs.qml:126
4367msgid "No"
4468msgstr "N'on ket"
4569
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
70+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
71+#: qml/Components/Dialogs.qml:133
4872msgid "Yes"
4973msgstr "Ya"
5074
51−#: qml/Components/Dialogs.qml:94
75+#: qml/Components/Dialogs.qml:98
5276msgid "Shut down"
5377msgstr "Lazhañ ar benveg"
5478
55−#: qml/Components/Dialogs.qml:95
79+#: qml/Components/Dialogs.qml:99
5680msgid "Are you sure you want to shut down?"
5781msgstr "Ha sur oc'h e fell deoc'h lazhañ ar benveg ?"
5882
59−#: qml/Components/Dialogs.qml:119
83+#: qml/Components/Dialogs.qml:123
6084msgid "Reboot"
6185msgstr "Adloc'hañ"
6286
63−#: qml/Components/Dialogs.qml:120
87+#: qml/Components/Dialogs.qml:124
6488msgid "Are you sure you want to reboot?"
6589msgstr "Ha sur oc'h e fell deoc'h adloc'hañ ?"
6690
67−#: qml/Components/Dialogs.qml:144
91+#: qml/Components/Dialogs.qml:148
6892msgid "Power"
6993msgstr "Tredan"
7094
71−#: qml/Components/Dialogs.qml:145
95+#: qml/Components/Dialogs.qml:149
7296msgid ""
7397"Are you sure you would like\n"
7498"to power off?"
@@ -76,15 +100,15 @@ msgstr ""
76100"Ha sur oc'h e fell deoc'h\n"
77101"troc'hañ an tredan ?"
78102
79−#: qml/Components/Dialogs.qml:147
103+#: qml/Components/Dialogs.qml:151
80104msgid "Power off"
81105msgstr "Lazhañ"
82106
83−#: qml/Components/Dialogs.qml:157
107+#: qml/Components/Dialogs.qml:161
84108msgid "Restart"
85109msgstr "Adloc'hañ"
86110
87−#: qml/Components/Dialogs.qml:167
111+#: qml/Components/Dialogs.qml:171
88112msgid "Cancel"
89113msgstr "Nullañ"
90114
@@ -119,21 +143,21 @@ msgid "Swipe up again to close the settings screen"
119143msgstr ""
120144"Lakait ho piz da riklañ war-du ar bord uhelañ da serriñ skramm an arventennoù"
121145
122−#: qml/Components/EdgeDemo.qml:198
146+#: qml/Components/EdgeDemo.qml:201
123147msgid "Left edge"
124148msgstr "Bord kleiz"
125149
126−#: qml/Components/EdgeDemo.qml:199
150+#: qml/Components/EdgeDemo.qml:202
127151msgid "Swipe from the left to reveal the launcher for quick access to apps"
128152msgstr ""
129153"Lakait ho piz da riklañ adalek ar bord kleiz da ziskouez al lañser arloadoù "
130154"prim."
131155
132−#: qml/Components/EdgeDemo.qml:226
156+#: qml/Components/EdgeDemo.qml:229
133157msgid "Well done"
134158msgstr "Gourc'hemennoù !"
135159
136−#: qml/Components/EdgeDemo.qml:227
160+#: qml/Components/EdgeDemo.qml:230
137161msgid ""
138162"You have now mastered the edge gestures and can start using the "
139163"phone<br><br>Tap on the screen to start"
@@ -141,40 +165,27 @@ msgstr ""
141165"Mestroniañ a rit ar jestroù ha gallout a rit kregiñ da implijout ar "
142166"pellgomzer<br><br>Touchit d'ar skramm evit kregiñ ganti"
143167
144−#: qml/Components/Lockscreen.qml:167
145−msgid "Please wait"
146−msgstr "Gortozit, mar plij"
168+#: qml/Components/Lockscreen.qml:223
169+msgid "Return to Call"
170+msgstr "Distreiñ d'ar bellgomzadenn"
147171
148−#: qml/Components/Lockscreen.qml:172
149−msgid "Too many incorrect attempts"
150−msgstr "Re a daolioù-esae direizh"
151−
152−#: qml/Components/Lockscreen.qml:206
172+#: qml/Components/Lockscreen.qml:223
153173msgid "Emergency Call"
154174msgstr "Pellgomzadenn vallus"
155175
156−#: qml/Components/Lockscreen.qml:226
176+#: qml/Components/Lockscreen.qml:255
157177msgid "OK"
158178msgstr "Mat eo"
159179
160−#: qml/Components/PassphraseLockscreen.qml:61
161−#, qt-format
162−msgid "Hello %1"
163−msgstr "Demat %1"
164−
165−#: qml/Components/PassphraseLockscreen.qml:61
166−msgid "Hello"
167−msgstr "Demat"
168−
169−#: qml/Dash/GenericScopeView.qml:364 qml/Dash/GenericScopeView.qml:483
180+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
170181msgid "See less"
171182msgstr "Gwelet nebeutoc'h"
172183
173−#: qml/Dash/GenericScopeView.qml:364
184+#: qml/Dash/GenericScopeView.qml:434
174185msgid "See all"
175186msgstr "Gwelet pep tra"
176187
177−#: qml/Dash/GenericScopeView.qml:427 qml/Dash/PageHeader.qml:258
188+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
178189#: qml/Panel/SearchIndicator.qml:27
179190msgid "Search"
180191msgstr "Klask"
@@ -211,15 +222,23 @@ msgstr "Ouzhpennañ un ali"
211222msgid "Send"
212223msgstr "Kas"
213224
214−#: qml/Dash/ScopesOverview.qml:206
225+#: qml/Dash/PullToRefreshScopeStyle.qml:55
226+msgid "Pull to refresh…"
227+msgstr "Tennañ evit freskaat..."
228+
229+#: qml/Dash/PullToRefreshScopeStyle.qml:60
230+msgid "Release to refresh…"
231+msgstr "Lezel da vont evit freskaat..."
232+
233+#: qml/Dash/ScopesOverview.qml:215
215234msgid "Manage Scopes"
216235msgstr "Merañ ar c'hefluskerioù enklask"
217236
218−#: qml/Dash/ScopesOverview.qml:428
237+#: qml/Dash/ScopesOverview.qml:437
219238msgid "Done"
220239msgstr "Graet eo"
221240
222−#: qml/Dash/ScopesOverview.qml:454
241+#: qml/Dash/ScopesOverview.qml:463
223242msgid "Store"
224243msgstr "Enrollañ"
225244
@@ -231,9 +250,9 @@ msgstr "Gwellañ deuet"
231250msgid "All"
232251msgstr "An holl anezho"
233252
234−#: qml/Greeter/Greeter.qml:157
235−msgid "Swipe to unlock"
236−msgstr "Riklañ evit dibrennañ"
253+#: qml/Greeter/Greeter.qml:174
254+msgid "Unlock"
255+msgstr "Dibrennañ"
237256
238257#: qml/Hud/HudParametrizedActionsPage.qml:139
239258msgid "Confirm"
@@ -255,51 +274,43 @@ msgstr "Komzit bremañ..."
255274msgid "Speaking..."
256275msgstr "O komz..."
257276
258−#: qml/Notifications/NotificationMenuItemFactory.qml:108
277+#: qml/Notifications/NotificationMenuItemFactory.qml:116
259278msgid "Show password"
260279msgstr "Diskouez ar ger-tremen"
261280
262−#: qml/Notifications/NotificationMenuItemFactory.qml:124
263−msgid "Enter SIM PIN"
264−msgstr "Ebarzhit kod PIN ar gartenn SIM"
265−
266−#: qml/Notifications/NotificationMenuItemFactory.qml:125
267−msgid "Sorry, incorrect PIN"
268−msgstr "Siwazh, kod PIN direizh"
269−
270−#: qml/Panel/ActiveCallHint.qml:77
281+#: qml/Panel/ActiveCallHint.qml:79
271282msgid "Tap to return to call..."
272283msgstr "Touchit evit distreiñ d'ar bellgomzadenn..."
273284
274−#: qml/Panel/ActiveCallHint.qml:90
285+#: qml/Panel/ActiveCallHint.qml:92
275286msgid "Conference"
276287msgstr "Kendiviz"
277288
278−#: qml/Panel/Indicators/MenuItemFactory.qml:600
289+#: qml/Panel/Indicators/MenuItemFactory.qml:615
279290msgid "Nothing is playing"
280291msgstr "Ne lenner netra bremañ"
281292
282−#: qml/Panel/Indicators/MenuItemFactory.qml:651
293+#: qml/Panel/Indicators/MenuItemFactory.qml:763
283294msgid "In queue…"
284295msgstr "El lostennad..."
285296
286−#: qml/Panel/Indicators/MenuItemFactory.qml:655
297+#: qml/Panel/Indicators/MenuItemFactory.qml:767
287298msgid "Downloading"
288299msgstr "O pellgargañ"
289300
290−#: qml/Panel/Indicators/MenuItemFactory.qml:657
301+#: qml/Panel/Indicators/MenuItemFactory.qml:769
291302msgid "Paused, tap to resume"
292303msgstr "Ehanet, touchit evit adkregiñ"
293304
294−#: qml/Panel/Indicators/MenuItemFactory.qml:659
305+#: qml/Panel/Indicators/MenuItemFactory.qml:771
295306msgid "Canceled"
296307msgstr "Nullet"
297308
298−#: qml/Panel/Indicators/MenuItemFactory.qml:661
309+#: qml/Panel/Indicators/MenuItemFactory.qml:773
299310msgid "Finished"
300311msgstr "Echu"
301312
302−#: qml/Panel/Indicators/MenuItemFactory.qml:663
313+#: qml/Panel/Indicators/MenuItemFactory.qml:775
303314msgid "Failed, tap to retry"
304315msgstr "C'hwitet, touchit evit adkregiñ"
305316
@@ -311,45 +322,49 @@ msgstr "Dibrennañ ar gartenn SIM"
311322msgid "Roaming"
312323msgstr "O kantren"
313324
314−#: qml/Shell.qml:292
315−msgid "Enter your passphrase"
316−msgstr "Ebarzhit ho frazenn-dremen"
325+#: qml/Shell.qml:381
326+msgid "Enter passphrase"
327+msgstr "Merkañ ar frazenn-dremen"
317328
318−#: qml/Shell.qml:293
329+#: qml/Shell.qml:382
319330msgid "Sorry, incorrect passphrase"
320331msgstr "Siwazh, frazenn-dremen direizh"
321332
322−#: qml/Shell.qml:295
323−msgid "Enter your passcode"
324−msgstr "Ebarzhit ho kod-tremen"
333+#: qml/Shell.qml:383
334+msgid "Please re-enter"
335+msgstr "Adverkañ, mar plij"
325336
326−#: qml/Shell.qml:296
337+#: qml/Shell.qml:385
338+msgid "Enter passcode"
339+msgstr "Merkañ ar c'hod-tremen"
340+
341+#: qml/Shell.qml:386
327342msgid "Sorry, incorrect passcode"
328343msgstr "Digarezit, kod-tremen direizh"
329344
330−#: qml/Shell.qml:299
345+#: qml/Shell.qml:389
331346#, qt-format
332−msgid "Enter your %1"
333−msgstr "Ebarzhit ho %1"
347+msgid "Enter %1"
348+msgstr "Merkañ %1"
334349
335−#: qml/Shell.qml:300
350+#: qml/Shell.qml:390
336351#, qt-format
337352msgid "Sorry, incorrect %1"
338353msgstr "Siwazh, %1 direizh"
339354
340−#: qml/Shell.qml:335
355+#: qml/Shell.qml:431
341356msgid "Sorry, incorrect passphrase."
342357msgstr "Siwazh, frazenn-dremen direizh"
343358
344−#: qml/Shell.qml:336
359+#: qml/Shell.qml:432
345360msgid "Sorry, incorrect passcode."
346361msgstr "Siwazh, kod-tremen direizh"
347362
348−#: qml/Shell.qml:337
363+#: qml/Shell.qml:433
349364msgid "This will be your last attempt."
350365msgstr "Ho taol-esae diwezhañ e vo."
351366
352−#: qml/Shell.qml:339
367+#: qml/Shell.qml:435
353368msgid ""
354369"If passphrase is entered incorrectly, your phone will conduct a factory "
355370"reset and all personal data will be deleted."
@@ -357,13 +372,10 @@ msgstr ""
357372"Ma vez ebarzhet ur frazenn-dremen direizh, e vo adderaouekaet ho pellgomzer "
358373"gant arventennoù al labouradeg hag e vo diverket an holl roadennoù personel"
359374
360−#: qml/Shell.qml:340
375+#: qml/Shell.qml:436
361376msgid ""
362377"If passcode is entered incorrectly, your phone will conduct a factory reset "
363378"and all personal data will be deleted."
364379msgstr ""
365380"Ma vez ebarzhet ur c'hod-tremen direizh, e vo adderaouekaet ho pellgomzer "
366381"gant arventennoù al labouradeg hag e vo diverket an holl roadennoù personel."
367−
368−#~ msgid "Manage Dash"
369−#~ msgstr "Merañ an daolenn-vourzh"
po/bs.po+95−83
@@ -7,15 +7,17 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
1111"PO-Revision-Date: 2014-01-16 22:33+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Bosnian <bs@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:19+0000\n"
18−"X-Generator: Launchpad (build 17196)\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-11-06 06:40+0000\n"
20+"X-Generator: Launchpad (build 17223)\n"
1921
2022#: plugins/LightDM/Greeter.cpp:130
2123msgid "Password: "
@@ -30,69 +32,88 @@ msgstr ""
3032msgid "Unpin shortcut"
3133msgstr ""
3234
33−#: qml/Components/Dialogs.qml:70
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:74
3455msgid "Log out"
3556msgstr ""
3657
37−#: qml/Components/Dialogs.qml:71
58+#: qml/Components/Dialogs.qml:75
3859msgid "Are you sure you want to log out?"
3960msgstr ""
4061
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
62+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
63+#: qml/Components/Dialogs.qml:126
4364msgid "No"
4465msgstr ""
4566
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
67+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
68+#: qml/Components/Dialogs.qml:133
4869msgid "Yes"
4970msgstr ""
5071
51−#: qml/Components/Dialogs.qml:94
72+#: qml/Components/Dialogs.qml:98
5273msgid "Shut down"
5374msgstr ""
5475
55−#: qml/Components/Dialogs.qml:95
76+#: qml/Components/Dialogs.qml:99
5677msgid "Are you sure you want to shut down?"
5778msgstr ""
5879
59−#: qml/Components/Dialogs.qml:119
80+#: qml/Components/Dialogs.qml:123
6081msgid "Reboot"
6182msgstr ""
6283
63−#: qml/Components/Dialogs.qml:120
84+#: qml/Components/Dialogs.qml:124
6485msgid "Are you sure you want to reboot?"
6586msgstr ""
6687
67−#: qml/Components/Dialogs.qml:144
88+#: qml/Components/Dialogs.qml:148
6889msgid "Power"
6990msgstr ""
7091
71−#: qml/Components/Dialogs.qml:145
92+#: qml/Components/Dialogs.qml:149
7293msgid ""
7394"Are you sure you would like\n"
7495"to power off?"
7596msgstr ""
7697
77−#: qml/Components/Dialogs.qml:147
98+#: qml/Components/Dialogs.qml:151
7899msgid "Power off"
79100msgstr ""
80101
81−#: qml/Components/Dialogs.qml:157
102+#: qml/Components/Dialogs.qml:161
82103msgid "Restart"
83104msgstr ""
84105
85−#: qml/Components/Dialogs.qml:167
106+#: qml/Components/Dialogs.qml:171
86107msgid "Cancel"
87108msgstr ""
88109
89110#: qml/Components/EdgeDemoOverlay.qml:151
90111msgid "Skip intro"
91−msgstr ""
112+msgstr "Preskoči uvod"
92113
93114#: qml/Components/EdgeDemo.qml:112
94115msgid "Right edge"
95−msgstr ""
116+msgstr "Desna ivica"
96117
97118#: qml/Components/EdgeDemo.qml:113
98119msgid "Try swiping from the right edge to unlock the phone"
@@ -100,7 +121,7 @@ msgstr ""
100121
101122#: qml/Components/EdgeDemo.qml:144
102123msgid "Top edge"
103−msgstr ""
124+msgstr "Gornja ivica"
104125
105126#: qml/Components/EdgeDemo.qml:145
106127msgid "Try swiping from the top edge to access the indicators"
@@ -108,64 +129,51 @@ msgstr ""
108129
109130#: qml/Components/EdgeDemo.qml:170
110131msgid "Close"
111−msgstr ""
132+msgstr "Zatvori"
112133
113134#: qml/Components/EdgeDemo.qml:171
114135msgid "Swipe up again to close the settings screen"
115136msgstr ""
116137
117−#: qml/Components/EdgeDemo.qml:198
138+#: qml/Components/EdgeDemo.qml:201
118139msgid "Left edge"
119140msgstr ""
120141
121−#: qml/Components/EdgeDemo.qml:199
142+#: qml/Components/EdgeDemo.qml:202
122143msgid "Swipe from the left to reveal the launcher for quick access to apps"
123144msgstr ""
124145
125−#: qml/Components/EdgeDemo.qml:226
146+#: qml/Components/EdgeDemo.qml:229
126147msgid "Well done"
127148msgstr ""
128149
129−#: qml/Components/EdgeDemo.qml:227
150+#: qml/Components/EdgeDemo.qml:230
130151msgid ""
131152"You have now mastered the edge gestures and can start using the "
132153"phone<br><br>Tap on the screen to start"
133154msgstr ""
134155
135−#: qml/Components/Lockscreen.qml:167
136−msgid "Please wait"
156+#: qml/Components/Lockscreen.qml:223
157+msgid "Return to Call"
137158msgstr ""
138159
139−#: qml/Components/Lockscreen.qml:172
140−msgid "Too many incorrect attempts"
141−msgstr ""
142−
143−#: qml/Components/Lockscreen.qml:206
160+#: qml/Components/Lockscreen.qml:223
144161msgid "Emergency Call"
145162msgstr ""
146163
147−#: qml/Components/Lockscreen.qml:226
164+#: qml/Components/Lockscreen.qml:255
148165msgid "OK"
149166msgstr ""
150167
151−#: qml/Components/PassphraseLockscreen.qml:61
152−#, qt-format
153−msgid "Hello %1"
154−msgstr ""
155−
156−#: qml/Components/PassphraseLockscreen.qml:61
157−msgid "Hello"
158−msgstr ""
159−
160−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
168+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
161169msgid "See less"
162170msgstr ""
163171
164−#: qml/Dash/GenericScopeView.qml:411
172+#: qml/Dash/GenericScopeView.qml:434
165173msgid "See all"
166174msgstr ""
167175
168−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
176+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
169177#: qml/Panel/SearchIndicator.qml:27
170178msgid "Search"
171179msgstr ""
@@ -202,15 +210,23 @@ msgstr ""
202210msgid "Send"
203211msgstr ""
204212
205−#: qml/Dash/ScopesOverview.qml:206
213+#: qml/Dash/PullToRefreshScopeStyle.qml:55
214+msgid "Pull to refresh…"
215+msgstr ""
216+
217+#: qml/Dash/PullToRefreshScopeStyle.qml:60
218+msgid "Release to refresh…"
219+msgstr ""
220+
221+#: qml/Dash/ScopesOverview.qml:215
206222msgid "Manage Scopes"
207223msgstr ""
208224
209−#: qml/Dash/ScopesOverview.qml:428
225+#: qml/Dash/ScopesOverview.qml:437
210226msgid "Done"
211227msgstr ""
212228
213−#: qml/Dash/ScopesOverview.qml:454
229+#: qml/Dash/ScopesOverview.qml:463
214230msgid "Store"
215231msgstr ""
216232
@@ -222,8 +238,8 @@ msgstr ""
222238msgid "All"
223239msgstr ""
224240
225−#: qml/Greeter/Greeter.qml:157
226−msgid "Swipe to unlock"
241+#: qml/Greeter/Greeter.qml:174
242+msgid "Unlock"
227243msgstr ""
228244
229245#: qml/Hud/HudParametrizedActionsPage.qml:139
@@ -246,51 +262,43 @@ msgstr ""
246262msgid "Speaking..."
247263msgstr ""
248264
249−#: qml/Notifications/NotificationMenuItemFactory.qml:108
265+#: qml/Notifications/NotificationMenuItemFactory.qml:116
250266msgid "Show password"
251267msgstr ""
252268
253−#: qml/Notifications/NotificationMenuItemFactory.qml:124
254−msgid "Enter SIM PIN"
255−msgstr ""
256−
257−#: qml/Notifications/NotificationMenuItemFactory.qml:125
258−msgid "Sorry, incorrect PIN"
259−msgstr ""
260−
261−#: qml/Panel/ActiveCallHint.qml:77
269+#: qml/Panel/ActiveCallHint.qml:79
262270msgid "Tap to return to call..."
263271msgstr ""
264272
265−#: qml/Panel/ActiveCallHint.qml:90
273+#: qml/Panel/ActiveCallHint.qml:92
266274msgid "Conference"
267275msgstr ""
268276
269−#: qml/Panel/Indicators/MenuItemFactory.qml:600
277+#: qml/Panel/Indicators/MenuItemFactory.qml:615
270278msgid "Nothing is playing"
271279msgstr ""
272280
273−#: qml/Panel/Indicators/MenuItemFactory.qml:748
281+#: qml/Panel/Indicators/MenuItemFactory.qml:763
274282msgid "In queue…"
275283msgstr ""
276284
277−#: qml/Panel/Indicators/MenuItemFactory.qml:752
285+#: qml/Panel/Indicators/MenuItemFactory.qml:767
278286msgid "Downloading"
279287msgstr ""
280288
281−#: qml/Panel/Indicators/MenuItemFactory.qml:754
289+#: qml/Panel/Indicators/MenuItemFactory.qml:769
282290msgid "Paused, tap to resume"
283291msgstr ""
284292
285−#: qml/Panel/Indicators/MenuItemFactory.qml:756
293+#: qml/Panel/Indicators/MenuItemFactory.qml:771
286294msgid "Canceled"
287295msgstr ""
288296
289−#: qml/Panel/Indicators/MenuItemFactory.qml:758
297+#: qml/Panel/Indicators/MenuItemFactory.qml:773
290298msgid "Finished"
291299msgstr ""
292300
293−#: qml/Panel/Indicators/MenuItemFactory.qml:760
301+#: qml/Panel/Indicators/MenuItemFactory.qml:775
294302msgid "Failed, tap to retry"
295303msgstr ""
296304
@@ -302,51 +310,55 @@ msgstr ""
302310msgid "Roaming"
303311msgstr ""
304312
305−#: qml/Shell.qml:320
306−msgid "Enter your passphrase"
313+#: qml/Shell.qml:381
314+msgid "Enter passphrase"
307315msgstr ""
308316
309−#: qml/Shell.qml:321
317+#: qml/Shell.qml:382
310318msgid "Sorry, incorrect passphrase"
311319msgstr ""
312320
313−#: qml/Shell.qml:323
314−msgid "Enter your passcode"
321+#: qml/Shell.qml:383
322+msgid "Please re-enter"
323+msgstr ""
324+
325+#: qml/Shell.qml:385
326+msgid "Enter passcode"
315327msgstr ""
316328
317−#: qml/Shell.qml:324
329+#: qml/Shell.qml:386
318330msgid "Sorry, incorrect passcode"
319331msgstr ""
320332
321−#: qml/Shell.qml:327
333+#: qml/Shell.qml:389
322334#, qt-format
323−msgid "Enter your %1"
335+msgid "Enter %1"
324336msgstr ""
325337
326−#: qml/Shell.qml:328
338+#: qml/Shell.qml:390
327339#, qt-format
328340msgid "Sorry, incorrect %1"
329341msgstr ""
330342
331−#: qml/Shell.qml:363
343+#: qml/Shell.qml:431
332344msgid "Sorry, incorrect passphrase."
333345msgstr ""
334346
335−#: qml/Shell.qml:364
347+#: qml/Shell.qml:432
336348msgid "Sorry, incorrect passcode."
337349msgstr ""
338350
339−#: qml/Shell.qml:365
351+#: qml/Shell.qml:433
340352msgid "This will be your last attempt."
341353msgstr ""
342354
343−#: qml/Shell.qml:367
355+#: qml/Shell.qml:435
344356msgid ""
345357"If passphrase is entered incorrectly, your phone will conduct a factory "
346358"reset and all personal data will be deleted."
347359msgstr ""
348360
349−#: qml/Shell.qml:368
361+#: qml/Shell.qml:436
350362msgid ""
351363"If passcode is entered incorrectly, your phone will conduct a factory reset "
352364"and all personal data will be deleted."
po/ca.po+105−92
@@ -7,15 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
11−"PO-Revision-Date: 2014-09-23 06:27+0000\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
11+"PO-Revision-Date: 2014-10-07 10:51+0000\n"
1212"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
1313"Language-Team: Catalan <ca@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:19+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
18+"X-Launchpad-Export-Date: 2014-11-06 06:40+0000\n"
19+"X-Generator: Launchpad (build 17223)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
@@ -30,45 +31,68 @@ msgstr "Enganxa la drecera"
3031msgid "Unpin shortcut"
3132msgstr "Desenganxa la drecera"
3233
33−#: qml/Components/Dialogs.qml:70
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+
57+#: qml/Components/Dialogs.qml:74
3458msgid "Log out"
3559msgstr "Surt"
3660
37−#: qml/Components/Dialogs.qml:71
61+#: qml/Components/Dialogs.qml:75
3862msgid "Are you sure you want to log out?"
3963msgstr "Segur que voleu sortir?"
4064
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
65+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
66+#: qml/Components/Dialogs.qml:126
4367msgid "No"
4468msgstr "No"
4569
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
70+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
71+#: qml/Components/Dialogs.qml:133
4872msgid "Yes"
4973msgstr "Sí"
5074
51−#: qml/Components/Dialogs.qml:94
75+#: qml/Components/Dialogs.qml:98
5276msgid "Shut down"
5377msgstr "Apaga"
5478
55−#: qml/Components/Dialogs.qml:95
79+#: qml/Components/Dialogs.qml:99
5680msgid "Are you sure you want to shut down?"
5781msgstr "Segur que voleu apagar?"
5882
59−#: qml/Components/Dialogs.qml:119
83+#: qml/Components/Dialogs.qml:123
6084msgid "Reboot"
6185msgstr "Reinicia"
6286
63−#: qml/Components/Dialogs.qml:120
87+#: qml/Components/Dialogs.qml:124
6488msgid "Are you sure you want to reboot?"
6589msgstr "Segur que voleu reiniciar?"
6690
67−#: qml/Components/Dialogs.qml:144
91+#: qml/Components/Dialogs.qml:148
6892msgid "Power"
6993msgstr "Energia"
7094
71−#: qml/Components/Dialogs.qml:145
95+#: qml/Components/Dialogs.qml:149
7296msgid ""
7397"Are you sure you would like\n"
7498"to power off?"
@@ -76,15 +100,15 @@ msgstr ""
76100"Segur que voleu\n"
77101"apagar?"
78102
79−#: qml/Components/Dialogs.qml:147
103+#: qml/Components/Dialogs.qml:151
80104msgid "Power off"
81105msgstr "Apaga"
82106
83−#: qml/Components/Dialogs.qml:157
107+#: qml/Components/Dialogs.qml:161
84108msgid "Restart"
85109msgstr "Reinicia"
86110
87−#: qml/Components/Dialogs.qml:167
111+#: qml/Components/Dialogs.qml:171
88112msgid "Cancel"
89113msgstr "Cancel·la"
90114
@@ -120,21 +144,21 @@ msgstr ""
120144"Llisqueu el dit cap amunt una altra vegada per tancar la pantalla de "
121145"configuració"
122146
123−#: qml/Components/EdgeDemo.qml:198
147+#: qml/Components/EdgeDemo.qml:201
124148msgid "Left edge"
125149msgstr "Vora esquerra"
126150
127−#: qml/Components/EdgeDemo.qml:199
151+#: qml/Components/EdgeDemo.qml:202
128152msgid "Swipe from the left to reveal the launcher for quick access to apps"
129153msgstr ""
130154"Llisqueu el dit des de la vora esquerra per mostrar el llançador i accedir "
131155"ràpidament a les aplicacions"
132156
133−#: qml/Components/EdgeDemo.qml:226
157+#: qml/Components/EdgeDemo.qml:229
134158msgid "Well done"
135159msgstr "Enhorabona!"
136160
137−#: qml/Components/EdgeDemo.qml:227
161+#: qml/Components/EdgeDemo.qml:230
138162msgid ""
139163"You have now mastered the edge gestures and can start using the "
140164"phone<br><br>Tap on the screen to start"
@@ -142,40 +166,27 @@ msgstr ""
142166"Ja heu après com utilitzar els gestos de les vores per fer servir el "
143167"telèfon<br><br>Feu un toc a la pantalla per començar"
144168
145−#: qml/Components/Lockscreen.qml:167
146−msgid "Please wait"
147−msgstr "Espereu"
148−
149−#: qml/Components/Lockscreen.qml:172
150−msgid "Too many incorrect attempts"
151−msgstr "Massa intents incorrectes"
169+#: qml/Components/Lockscreen.qml:223
170+msgid "Return to Call"
171+msgstr ""
152172
153−#: qml/Components/Lockscreen.qml:206
173+#: qml/Components/Lockscreen.qml:223
154174msgid "Emergency Call"
155175msgstr "Trucada d'emergència"
156176
157−#: qml/Components/Lockscreen.qml:226
177+#: qml/Components/Lockscreen.qml:255
158178msgid "OK"
159179msgstr "D'acord"
160180
161−#: qml/Components/PassphraseLockscreen.qml:61
162−#, qt-format
163−msgid "Hello %1"
164−msgstr "Hola %1"
165−
166−#: qml/Components/PassphraseLockscreen.qml:61
167−msgid "Hello"
168−msgstr "Hola"
169−
170−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
181+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
171182msgid "See less"
172183msgstr "Mostra'n menys"
173184
174−#: qml/Dash/GenericScopeView.qml:411
185+#: qml/Dash/GenericScopeView.qml:434
175186msgid "See all"
176187msgstr "Mostra-ho tot"
177188
178−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
189+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
179190#: qml/Panel/SearchIndicator.qml:27
180191msgid "Search"
181192msgstr "Cerca"
@@ -212,15 +223,23 @@ msgstr "Afegiu una ressenya"
212223msgid "Send"
213224msgstr "Envia"
214225
215−#: qml/Dash/ScopesOverview.qml:206
226+#: qml/Dash/PullToRefreshScopeStyle.qml:55
227+msgid "Pull to refresh…"
228+msgstr "Estireu per actualitzar..."
229+
230+#: qml/Dash/PullToRefreshScopeStyle.qml:60
231+msgid "Release to refresh…"
232+msgstr "Deixeu anar per actualitzar..."
233+
234+#: qml/Dash/ScopesOverview.qml:215
216235msgid "Manage Scopes"
217−msgstr ""
236+msgstr "Gestioneu les lents"
218237
219−#: qml/Dash/ScopesOverview.qml:428
238+#: qml/Dash/ScopesOverview.qml:437
220239msgid "Done"
221240msgstr "Fet"
222241
223−#: qml/Dash/ScopesOverview.qml:454
242+#: qml/Dash/ScopesOverview.qml:463
224243msgid "Store"
225244msgstr "Botiga"
226245
@@ -232,9 +251,9 @@ msgstr "Preferides"
232251msgid "All"
233252msgstr "Totes"
234253
235−#: qml/Greeter/Greeter.qml:157
236−msgid "Swipe to unlock"
237−msgstr "Feu lliscar el dit per desbloquejar"
254+#: qml/Greeter/Greeter.qml:174
255+msgid "Unlock"
256+msgstr "Desbloca"
238257
239258#: qml/Hud/HudParametrizedActionsPage.qml:139
240259msgid "Confirm"
@@ -256,51 +275,43 @@ msgstr "Parleu..."
256275msgid "Speaking..."
257276msgstr "S'està parlant..."
258277
259−#: qml/Notifications/NotificationMenuItemFactory.qml:108
278+#: qml/Notifications/NotificationMenuItemFactory.qml:116
260279msgid "Show password"
261280msgstr "Mostra la contrasenya"
262281
263−#: qml/Notifications/NotificationMenuItemFactory.qml:124
264−msgid "Enter SIM PIN"
265−msgstr "Introduïu el PIN de la targeta SIM"
266−
267−#: qml/Notifications/NotificationMenuItemFactory.qml:125
268−msgid "Sorry, incorrect PIN"
269−msgstr "El PIN no és correcte"
270−
271−#: qml/Panel/ActiveCallHint.qml:77
282+#: qml/Panel/ActiveCallHint.qml:79
272283msgid "Tap to return to call..."
273284msgstr "Feu un toc per tornar a la trucada..."
274285
275−#: qml/Panel/ActiveCallHint.qml:90
286+#: qml/Panel/ActiveCallHint.qml:92
276287msgid "Conference"
277288msgstr "Conferència"
278289
279−#: qml/Panel/Indicators/MenuItemFactory.qml:600
290+#: qml/Panel/Indicators/MenuItemFactory.qml:615
280291msgid "Nothing is playing"
281−msgstr ""
292+msgstr "No s'està reproduint res"
282293
283−#: qml/Panel/Indicators/MenuItemFactory.qml:748
294+#: qml/Panel/Indicators/MenuItemFactory.qml:763
284295msgid "In queue…"
285296msgstr "A la cua..."
286297
287−#: qml/Panel/Indicators/MenuItemFactory.qml:752
298+#: qml/Panel/Indicators/MenuItemFactory.qml:767
288299msgid "Downloading"
289300msgstr "S'està baixant"
290301
291−#: qml/Panel/Indicators/MenuItemFactory.qml:754
302+#: qml/Panel/Indicators/MenuItemFactory.qml:769
292303msgid "Paused, tap to resume"
293304msgstr "En pausa, feu un toc per continuar"
294305
295−#: qml/Panel/Indicators/MenuItemFactory.qml:756
306+#: qml/Panel/Indicators/MenuItemFactory.qml:771
296307msgid "Canceled"
297308msgstr "S'ha cancel·lat"
298309
299−#: qml/Panel/Indicators/MenuItemFactory.qml:758
310+#: qml/Panel/Indicators/MenuItemFactory.qml:773
300311msgid "Finished"
301312msgstr "S'ha finalitzat"
302313
303−#: qml/Panel/Indicators/MenuItemFactory.qml:760
314+#: qml/Panel/Indicators/MenuItemFactory.qml:775
304315msgid "Failed, tap to retry"
305316msgstr "Ha fallat, feu un toc per tornar-ho a intentar"
306317
@@ -312,45 +323,49 @@ msgstr "Desbloca la SIM"
312323msgid "Roaming"
313324msgstr "Itinerància"
314325
315−#: qml/Shell.qml:320
316−msgid "Enter your passphrase"
317−msgstr "Escriviu la contrasenya"
326+#: qml/Shell.qml:381
327+msgid "Enter passphrase"
328+msgstr "Introduïu la contrasenya"
318329
319−#: qml/Shell.qml:321
330+#: qml/Shell.qml:382
320331msgid "Sorry, incorrect passphrase"
321332msgstr "La contrasenya no és correcta"
322333
323−#: qml/Shell.qml:323
324−msgid "Enter your passcode"
334+#: qml/Shell.qml:383
335+msgid "Please re-enter"
336+msgstr "Torneu-ho a introduir"
337+
338+#: qml/Shell.qml:385
339+msgid "Enter passcode"
325340msgstr "Introduïu el codi d'accés"
326341
327−#: qml/Shell.qml:324
342+#: qml/Shell.qml:386
328343msgid "Sorry, incorrect passcode"
329344msgstr "El codi d'accés no és correcte"
330345
331−#: qml/Shell.qml:327
346+#: qml/Shell.qml:389
332347#, qt-format
333−msgid "Enter your %1"
334−msgstr "Introduïu la %1"
348+msgid "Enter %1"
349+msgstr "Introduïu: %1"
335350
336−#: qml/Shell.qml:328
351+#: qml/Shell.qml:390
337352#, qt-format
338353msgid "Sorry, incorrect %1"
339354msgstr "Incorrecte (%1)"
340355
341−#: qml/Shell.qml:363
356+#: qml/Shell.qml:431
342357msgid "Sorry, incorrect passphrase."
343358msgstr "La contrasenya és incorrecta"
344359
345−#: qml/Shell.qml:364
360+#: qml/Shell.qml:432
346361msgid "Sorry, incorrect passcode."
347−msgstr "La clau és incorrecta"
362+msgstr "El codi d'accés no és correcte"
348363
349−#: qml/Shell.qml:365
364+#: qml/Shell.qml:433
350365msgid "This will be your last attempt."
351366msgstr "Aquest serà el darrer intent."
352367
353−#: qml/Shell.qml:367
368+#: qml/Shell.qml:435
354369msgid ""
355370"If passphrase is entered incorrectly, your phone will conduct a factory "
356371"reset and all personal data will be deleted."
@@ -359,13 +374,11 @@ msgstr ""
359374"reinicialitzarà a l'estat de fàbrica i se suprimiran totes les dades "
360375"personals."
361376
362−#: qml/Shell.qml:368
377+#: qml/Shell.qml:436
363378msgid ""
364379"If passcode is entered incorrectly, your phone will conduct a factory reset "
365380"and all personal data will be deleted."
366381msgstr ""
367−"Si la clau s'introdueix de manera incorrecta, el telèfon es reinicialitzarà "
368−"a l'estat de fàbrica i se suprimiran totes les dades personals."
369−
370−#~ msgid "Manage Dash"
371−#~ msgstr "Gestiona el tauler"
382+"Si el codi d'accés s'introdueix de manera incorrecta, el telèfon es "
383+"reinicialitzarà a l'estat de fàbrica i se suprimiran totes les dades "
384+"personals."
po/ca@valencia.ponew file+384
@@ -0,0 +1,384 @@
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-31 10:36+0100\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-11-06 06:41+0000\n"
19+"X-Generator: Launchpad (build 17223)\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:74
58+msgid "Log out"
59+msgstr "Ix"
60+
61+#: qml/Components/Dialogs.qml:75
62+msgid "Are you sure you want to log out?"
63+msgstr "Segur que voleu eixir?"
64+
65+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
66+#: qml/Components/Dialogs.qml:126
67+msgid "No"
68+msgstr "No"
69+
70+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
71+#: qml/Components/Dialogs.qml:133
72+msgid "Yes"
73+msgstr "Sí"
74+
75+#: qml/Components/Dialogs.qml:98
76+msgid "Shut down"
77+msgstr "Apaga"
78+
79+#: qml/Components/Dialogs.qml:99
80+msgid "Are you sure you want to shut down?"
81+msgstr "Segur que voleu apagar?"
82+
83+#: qml/Components/Dialogs.qml:123
84+msgid "Reboot"
85+msgstr "Reinicia"
86+
87+#: qml/Components/Dialogs.qml:124
88+msgid "Are you sure you want to reboot?"
89+msgstr "Segur que voleu reiniciar?"
90+
91+#: qml/Components/Dialogs.qml:148
92+msgid "Power"
93+msgstr "Energia"
94+
95+#: qml/Components/Dialogs.qml:149
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:151
104+msgid "Power off"
105+msgstr "Apaga"
106+
107+#: qml/Components/Dialogs.qml:161
108+msgid "Restart"
109+msgstr "Reinicia"
110+
111+#: qml/Components/Dialogs.qml:171
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:201
148+msgid "Left edge"
149+msgstr "Vora esquerra"
150+
151+#: qml/Components/EdgeDemo.qml:202
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:229
158+msgid "Well done"
159+msgstr "Enhorabona!"
160+
161+#: qml/Components/EdgeDemo.qml:230
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:223
170+msgid "Return to Call"
171+msgstr ""
172+
173+#: qml/Components/Lockscreen.qml:223
174+msgid "Emergency Call"
175+msgstr "Cridada d'emergència"
176+
177+#: qml/Components/Lockscreen.qml:255
178+msgid "OK"
179+msgstr "D'acord"
180+
181+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
182+msgid "See less"
183+msgstr "Mostra'n menys"
184+
185+#: qml/Dash/GenericScopeView.qml:434
186+msgid "See all"
187+msgstr "Mostra-ho tot"
188+
189+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
190+#: qml/Panel/SearchIndicator.qml:27
191+msgid "Search"
192+msgstr "Cerca"
193+
194+#: qml/Dash/PageHeader.qml:268
195+msgid "Settings"
196+msgstr "Paràmetres"
197+
198+#: qml/Dash/PageHeader.qml:275
199+msgid "Remove from Favorites"
200+msgstr "Suprimeix dels preferits"
201+
202+#: qml/Dash/PageHeader.qml:275
203+msgid "Add to Favorites"
204+msgstr "Afig als preferits"
205+
206+#: qml/Dash/Previews/PreviewActionCombo.qml:35
207+msgid "More..."
208+msgstr "Més..."
209+
210+#: qml/Dash/Previews/PreviewActionCombo.qml:35
211+msgid "Less..."
212+msgstr "Menys..."
213+
214+#: qml/Dash/Previews/PreviewRatingInput.qml:81
215+msgid "Rate this"
216+msgstr "Puntueu-ho"
217+
218+#: qml/Dash/Previews/PreviewRatingInput.qml:126
219+msgid "Add a review"
220+msgstr "Afegiu una ressenya"
221+
222+#: qml/Dash/Previews/PreviewRatingInput.qml:166
223+msgid "Send"
224+msgstr "Envia"
225+
226+#: qml/Dash/PullToRefreshScopeStyle.qml:55
227+msgid "Pull to refresh…"
228+msgstr "Estireu per actualitzar..."
229+
230+#: qml/Dash/PullToRefreshScopeStyle.qml:60
231+msgid "Release to refresh…"
232+msgstr "Deixeu anar per actualitzar..."
233+
234+#: qml/Dash/ScopesOverview.qml:215
235+msgid "Manage Scopes"
236+msgstr "Gestioneu les lents"
237+
238+#: qml/Dash/ScopesOverview.qml:437
239+msgid "Done"
240+msgstr "Fet"
241+
242+#: qml/Dash/ScopesOverview.qml:463
243+msgid "Store"
244+msgstr "Botiga"
245+
246+#: qml/Dash/ScopesOverviewTab.qml:36
247+msgid "Favorites"
248+msgstr "Preferides"
249+
250+#: qml/Dash/ScopesOverviewTab.qml:54
251+msgid "All"
252+msgstr "Totes"
253+
254+#: qml/Greeter/Greeter.qml:174
255+msgid "Unlock"
256+msgstr "Desbloca"
257+
258+#: qml/Hud/HudParametrizedActionsPage.qml:139
259+msgid "Confirm"
260+msgstr "Confirma"
261+
262+#: qml/Hud/Hud.qml:61 qml/Hud/Hud.qml:99 qml/Hud/Hud.qml:372
263+msgid "Type or say a command"
264+msgstr "Escriviu o pronuncieu una orde"
265+
266+#: qml/Hud/Hud.qml:84
267+msgid "Loading. Please Wait..."
268+msgstr "S'està carregant. Espereu-vos un moment..."
269+
270+#: qml/Hud/Hud.qml:89
271+msgid "Speak Now..."
272+msgstr "Parleu..."
273+
274+#: qml/Hud/Hud.qml:94
275+msgid "Speaking..."
276+msgstr "S'està parlant..."
277+
278+#: qml/Notifications/NotificationMenuItemFactory.qml:116
279+msgid "Show password"
280+msgstr "Mostra la contrasenya"
281+
282+#: qml/Panel/ActiveCallHint.qml:79
283+msgid "Tap to return to call..."
284+msgstr "Feu un toc per tornar a la cridada..."
285+
286+#: qml/Panel/ActiveCallHint.qml:92
287+msgid "Conference"
288+msgstr "Conferència"
289+
290+#: qml/Panel/Indicators/MenuItemFactory.qml:615
291+msgid "Nothing is playing"
292+msgstr "No s'està reproduint res"
293+
294+#: qml/Panel/Indicators/MenuItemFactory.qml:763
295+msgid "In queue…"
296+msgstr "A la cua..."
297+
298+#: qml/Panel/Indicators/MenuItemFactory.qml:767
299+msgid "Downloading"
300+msgstr "S'està baixant"
301+
302+#: qml/Panel/Indicators/MenuItemFactory.qml:769
303+msgid "Paused, tap to resume"
304+msgstr "En pausa, feu un toc per continuar"
305+
306+#: qml/Panel/Indicators/MenuItemFactory.qml:771
307+msgid "Canceled"
308+msgstr "S'ha cancel·lat"
309+
310+#: qml/Panel/Indicators/MenuItemFactory.qml:773
311+msgid "Finished"
312+msgstr "S'ha finalitzat"
313+
314+#: qml/Panel/Indicators/MenuItemFactory.qml:775
315+msgid "Failed, tap to retry"
316+msgstr "Ha fallat, feu un toc per tornar-ho a intentar"
317+
318+#: qml/Panel/Indicators/ModemInfoItem.qml:105
319+msgid "Unlock SIM"
320+msgstr "Desbloca la SIM"
321+
322+#: qml/Panel/Indicators/RoamingIndication.qml:27
323+msgid "Roaming"
324+msgstr "Itinerància"
325+
326+#: qml/Shell.qml:381
327+msgid "Enter passphrase"
328+msgstr "Introduïu la contrasenya"
329+
330+#: qml/Shell.qml:382
331+msgid "Sorry, incorrect passphrase"
332+msgstr "La contrasenya no és correcta"
333+
334+#: qml/Shell.qml:383
335+msgid "Please re-enter"
336+msgstr "Torneu-ho a introduir"
337+
338+#: qml/Shell.qml:385
339+msgid "Enter passcode"
340+msgstr "Introduïu el codi d'accés"
341+
342+#: qml/Shell.qml:386
343+msgid "Sorry, incorrect passcode"
344+msgstr "El codi d'accés no és correcte"
345+
346+#: qml/Shell.qml:389
347+#, qt-format
348+msgid "Enter %1"
349+msgstr "Introduïu: %1"
350+
351+#: qml/Shell.qml:390
352+#, qt-format
353+msgid "Sorry, incorrect %1"
354+msgstr "Incorrecte (%1)"
355+
356+#: qml/Shell.qml:431
357+msgid "Sorry, incorrect passphrase."
358+msgstr "La contrasenya és incorrecta"
359+
360+#: qml/Shell.qml:432
361+msgid "Sorry, incorrect passcode."
362+msgstr "El codi d'accés no és correcte"
363+
364+#: qml/Shell.qml:433
365+msgid "This will be your last attempt."
366+msgstr "Este serà el darrer intent."
367+
368+#: qml/Shell.qml:435
369+msgid ""
370+"If passphrase is entered incorrectly, your phone will conduct a factory "
371+"reset and all personal data will be deleted."
372+msgstr ""
373+"Si la contrasenya s'introdueix de manera incorrecta, el telèfon es "
374+"reinicialitzarà a l'estat de fàbrica i se suprimiran totes les dades "
375+"personals."
376+
377+#: qml/Shell.qml:436
378+msgid ""
379+"If passcode is entered incorrectly, your phone will conduct a factory reset "
380+"and all personal data will be deleted."
381+msgstr ""
382+"Si el codi d'accés s'introdueix de manera incorrecta, el telèfon es "
383+"reinicialitzarà a l'estat de fàbrica i se suprimiran totes les dades "
384+"personals."
po/ckb.po+90−79
@@ -7,15 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
1111"PO-Revision-Date: 2014-01-21 11:05+0000\n"
1212"Last-Translator: Aras <aras.noori@gmail.com>\n"
1313"Language-Team: Kurdish (Sorani) <ckb@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:20+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
18+"X-Launchpad-Export-Date: 2014-11-06 06:41+0000\n"
19+"X-Generator: Launchpad (build 17223)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
@@ -30,59 +31,78 @@ msgstr ""
3031msgid "Unpin shortcut"
3132msgstr ""
3233
33−#: qml/Components/Dialogs.qml:70
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+
53+#: qml/Components/Dialogs.qml:74
3454msgid "Log out"
3555msgstr ""
3656
37−#: qml/Components/Dialogs.qml:71
57+#: qml/Components/Dialogs.qml:75
3858msgid "Are you sure you want to log out?"
3959msgstr ""
4060
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
61+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
62+#: qml/Components/Dialogs.qml:126
4363msgid "No"
4464msgstr ""
4565
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
66+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
67+#: qml/Components/Dialogs.qml:133
4868msgid "Yes"
4969msgstr ""
5070
51−#: qml/Components/Dialogs.qml:94
71+#: qml/Components/Dialogs.qml:98
5272msgid "Shut down"
5373msgstr ""
5474
55−#: qml/Components/Dialogs.qml:95
75+#: qml/Components/Dialogs.qml:99
5676msgid "Are you sure you want to shut down?"
5777msgstr ""
5878
59−#: qml/Components/Dialogs.qml:119
79+#: qml/Components/Dialogs.qml:123
6080msgid "Reboot"
6181msgstr ""
6282
63−#: qml/Components/Dialogs.qml:120
83+#: qml/Components/Dialogs.qml:124
6484msgid "Are you sure you want to reboot?"
6585msgstr ""
6686
67−#: qml/Components/Dialogs.qml:144
87+#: qml/Components/Dialogs.qml:148
6888msgid "Power"
6989msgstr ""
7090
71−#: qml/Components/Dialogs.qml:145
91+#: qml/Components/Dialogs.qml:149
7292msgid ""
7393"Are you sure you would like\n"
7494"to power off?"
7595msgstr ""
7696
77−#: qml/Components/Dialogs.qml:147
97+#: qml/Components/Dialogs.qml:151
7898msgid "Power off"
7999msgstr ""
80100
81−#: qml/Components/Dialogs.qml:157
101+#: qml/Components/Dialogs.qml:161
82102msgid "Restart"
83103msgstr ""
84104
85−#: qml/Components/Dialogs.qml:167
105+#: qml/Components/Dialogs.qml:171
86106msgid "Cancel"
87107msgstr ""
88108
@@ -114,58 +134,45 @@ msgstr "داخستن"
114134msgid "Swipe up again to close the settings screen"
115135msgstr "ڕایکێشەوە سەرەوە جارێکی تر بۆ داخستنی پەردەی ڕێکخستنەکان"
116136
117−#: qml/Components/EdgeDemo.qml:198
137+#: qml/Components/EdgeDemo.qml:201
118138msgid "Left edge"
119139msgstr "لێواری چەپ"
120140
121−#: qml/Components/EdgeDemo.qml:199
141+#: qml/Components/EdgeDemo.qml:202
122142msgid "Swipe from the left to reveal the launcher for quick access to apps"
123143msgstr "لە چەپەوە بچۆرەوە سەر دەستپێک بۆئەوەی بتوانی هەموو ئەپەکان ببینی"
124144
125−#: qml/Components/EdgeDemo.qml:226
145+#: qml/Components/EdgeDemo.qml:229
126146msgid "Well done"
127147msgstr "دەستخۆش"
128148
129−#: qml/Components/EdgeDemo.qml:227
149+#: qml/Components/EdgeDemo.qml:230
130150msgid ""
131151"You have now mastered the edge gestures and can start using the "
132152"phone<br><br>Tap on the screen to start"
133153msgstr ""
134154
135−#: qml/Components/Lockscreen.qml:167
136−msgid "Please wait"
137−msgstr ""
138−
139−#: qml/Components/Lockscreen.qml:172
140−msgid "Too many incorrect attempts"
155+#: qml/Components/Lockscreen.qml:223
156+msgid "Return to Call"
141157msgstr ""
142158
143−#: qml/Components/Lockscreen.qml:206
159+#: qml/Components/Lockscreen.qml:223
144160msgid "Emergency Call"
145161msgstr "هێڵی فریاگوزاری"
146162
147−#: qml/Components/Lockscreen.qml:226
163+#: qml/Components/Lockscreen.qml:255
148164msgid "OK"
149165msgstr ""
150166
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:411 qml/Dash/GenericScopeView.qml:533
167+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
161168msgid "See less"
162169msgstr ""
163170
164−#: qml/Dash/GenericScopeView.qml:411
171+#: qml/Dash/GenericScopeView.qml:434
165172msgid "See all"
166173msgstr ""
167174
168−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
175+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
169176#: qml/Panel/SearchIndicator.qml:27
170177msgid "Search"
171178msgstr "گەڕان"
@@ -202,15 +209,23 @@ msgstr "پێداچوونەوە زۆر بکە"
202209msgid "Send"
203210msgstr "ناردن"
204211
205−#: qml/Dash/ScopesOverview.qml:206
212+#: qml/Dash/PullToRefreshScopeStyle.qml:55
213+msgid "Pull to refresh…"
214+msgstr ""
215+
216+#: qml/Dash/PullToRefreshScopeStyle.qml:60
217+msgid "Release to refresh…"
218+msgstr ""
219+
220+#: qml/Dash/ScopesOverview.qml:215
206221msgid "Manage Scopes"
207222msgstr ""
208223
209−#: qml/Dash/ScopesOverview.qml:428
224+#: qml/Dash/ScopesOverview.qml:437
210225msgid "Done"
211226msgstr ""
212227
213−#: qml/Dash/ScopesOverview.qml:454
228+#: qml/Dash/ScopesOverview.qml:463
214229msgid "Store"
215230msgstr ""
216231
@@ -222,8 +237,8 @@ msgstr ""
222237msgid "All"
223238msgstr ""
224239
225−#: qml/Greeter/Greeter.qml:157
226−msgid "Swipe to unlock"
240+#: qml/Greeter/Greeter.qml:174
241+msgid "Unlock"
227242msgstr ""
228243
229244#: qml/Hud/HudParametrizedActionsPage.qml:139
@@ -246,51 +261,43 @@ msgstr "ئێستا قسە بکە"
246261msgid "Speaking..."
247262msgstr "قسە دەکات..."
248263
249−#: qml/Notifications/NotificationMenuItemFactory.qml:108
264+#: qml/Notifications/NotificationMenuItemFactory.qml:116
250265msgid "Show password"
251266msgstr "تێپەڕەوشە پیشان بدە"
252267
253−#: qml/Notifications/NotificationMenuItemFactory.qml:124
254−msgid "Enter SIM PIN"
255−msgstr ""
256−
257−#: qml/Notifications/NotificationMenuItemFactory.qml:125
258−msgid "Sorry, incorrect PIN"
259−msgstr ""
260−
261−#: qml/Panel/ActiveCallHint.qml:77
268+#: qml/Panel/ActiveCallHint.qml:79
262269msgid "Tap to return to call..."
263270msgstr ""
264271
265−#: qml/Panel/ActiveCallHint.qml:90
272+#: qml/Panel/ActiveCallHint.qml:92
266273msgid "Conference"
267274msgstr ""
268275
269−#: qml/Panel/Indicators/MenuItemFactory.qml:600
276+#: qml/Panel/Indicators/MenuItemFactory.qml:615
270277msgid "Nothing is playing"
271278msgstr ""
272279
273−#: qml/Panel/Indicators/MenuItemFactory.qml:748
280+#: qml/Panel/Indicators/MenuItemFactory.qml:763
274281msgid "In queue…"
275282msgstr ""
276283
277−#: qml/Panel/Indicators/MenuItemFactory.qml:752
284+#: qml/Panel/Indicators/MenuItemFactory.qml:767
278285msgid "Downloading"
279286msgstr ""
280287
281−#: qml/Panel/Indicators/MenuItemFactory.qml:754
288+#: qml/Panel/Indicators/MenuItemFactory.qml:769
282289msgid "Paused, tap to resume"
283290msgstr ""
284291
285−#: qml/Panel/Indicators/MenuItemFactory.qml:756
292+#: qml/Panel/Indicators/MenuItemFactory.qml:771
286293msgid "Canceled"
287294msgstr ""
288295
289−#: qml/Panel/Indicators/MenuItemFactory.qml:758
296+#: qml/Panel/Indicators/MenuItemFactory.qml:773
290297msgid "Finished"
291298msgstr ""
292299
293−#: qml/Panel/Indicators/MenuItemFactory.qml:760
300+#: qml/Panel/Indicators/MenuItemFactory.qml:775
294301msgid "Failed, tap to retry"
295302msgstr ""
296303
@@ -302,51 +309,55 @@ msgstr ""
302309msgid "Roaming"
303310msgstr ""
304311
305−#: qml/Shell.qml:320
306−msgid "Enter your passphrase"
312+#: qml/Shell.qml:381
313+msgid "Enter passphrase"
307314msgstr ""
308315
309−#: qml/Shell.qml:321
316+#: qml/Shell.qml:382
310317msgid "Sorry, incorrect passphrase"
311318msgstr ""
312319
313−#: qml/Shell.qml:323
314−msgid "Enter your passcode"
320+#: qml/Shell.qml:383
321+msgid "Please re-enter"
322+msgstr ""
323+
324+#: qml/Shell.qml:385
325+msgid "Enter passcode"
315326msgstr ""
316327
317−#: qml/Shell.qml:324
328+#: qml/Shell.qml:386
318329msgid "Sorry, incorrect passcode"
319330msgstr ""
320331
321−#: qml/Shell.qml:327
332+#: qml/Shell.qml:389
322333#, qt-format
323−msgid "Enter your %1"
334+msgid "Enter %1"
324335msgstr ""
325336
326−#: qml/Shell.qml:328
337+#: qml/Shell.qml:390
327338#, qt-format
328339msgid "Sorry, incorrect %1"
329340msgstr ""
330341
331−#: qml/Shell.qml:363
342+#: qml/Shell.qml:431
332343msgid "Sorry, incorrect passphrase."
333344msgstr ""
334345
335−#: qml/Shell.qml:364
346+#: qml/Shell.qml:432
336347msgid "Sorry, incorrect passcode."
337348msgstr ""
338349
339−#: qml/Shell.qml:365
350+#: qml/Shell.qml:433
340351msgid "This will be your last attempt."
341352msgstr ""
342353
343−#: qml/Shell.qml:367
354+#: qml/Shell.qml:435
344355msgid ""
345356"If passphrase is entered incorrectly, your phone will conduct a factory "
346357"reset and all personal data will be deleted."
347358msgstr ""
348359
349−#: qml/Shell.qml:368
360+#: qml/Shell.qml:436
350361msgid ""
351362"If passcode is entered incorrectly, your phone will conduct a factory reset "
352363"and all personal data will be deleted."
po/cs.po+90−79
@@ -7,15 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
1111"PO-Revision-Date: 2014-01-08 10:11+0000\n"
1212"Last-Translator: Tadeáš Pařík <tadeas.parik@gmail.com>\n"
1313"Language-Team: Czech <cs@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:19+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
18+"X-Launchpad-Export-Date: 2014-11-06 06:40+0000\n"
19+"X-Generator: Launchpad (build 17223)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
@@ -30,59 +31,78 @@ msgstr ""
3031msgid "Unpin shortcut"
3132msgstr ""
3233
33−#: qml/Components/Dialogs.qml:70
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+
53+#: qml/Components/Dialogs.qml:74
3454msgid "Log out"
3555msgstr ""
3656
37−#: qml/Components/Dialogs.qml:71
57+#: qml/Components/Dialogs.qml:75
3858msgid "Are you sure you want to log out?"
3959msgstr ""
4060
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
61+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
62+#: qml/Components/Dialogs.qml:126
4363msgid "No"
4464msgstr ""
4565
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
66+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
67+#: qml/Components/Dialogs.qml:133
4868msgid "Yes"
4969msgstr ""
5070
51−#: qml/Components/Dialogs.qml:94
71+#: qml/Components/Dialogs.qml:98
5272msgid "Shut down"
5373msgstr ""
5474
55−#: qml/Components/Dialogs.qml:95
75+#: qml/Components/Dialogs.qml:99
5676msgid "Are you sure you want to shut down?"
5777msgstr ""
5878
59−#: qml/Components/Dialogs.qml:119
79+#: qml/Components/Dialogs.qml:123
6080msgid "Reboot"
6181msgstr ""
6282
63−#: qml/Components/Dialogs.qml:120
83+#: qml/Components/Dialogs.qml:124
6484msgid "Are you sure you want to reboot?"
6585msgstr ""
6686
67−#: qml/Components/Dialogs.qml:144
87+#: qml/Components/Dialogs.qml:148
6888msgid "Power"
6989msgstr ""
7090
71−#: qml/Components/Dialogs.qml:145
91+#: qml/Components/Dialogs.qml:149
7292msgid ""
7393"Are you sure you would like\n"
7494"to power off?"
7595msgstr ""
7696
77−#: qml/Components/Dialogs.qml:147
97+#: qml/Components/Dialogs.qml:151
7898msgid "Power off"
7999msgstr ""
80100
81−#: qml/Components/Dialogs.qml:157
101+#: qml/Components/Dialogs.qml:161
82102msgid "Restart"
83103msgstr ""
84104
85−#: qml/Components/Dialogs.qml:167
105+#: qml/Components/Dialogs.qml:171
86106msgid "Cancel"
87107msgstr ""
88108
@@ -114,58 +134,45 @@ msgstr "Uzavřít"
114134msgid "Swipe up again to close the settings screen"
115135msgstr "Přetažením nahoru dojde k uzavření obrazovky nastavení"
116136
117−#: qml/Components/EdgeDemo.qml:198
137+#: qml/Components/EdgeDemo.qml:201
118138msgid "Left edge"
119139msgstr "Levý okraj"
120140
121−#: qml/Components/EdgeDemo.qml:199
141+#: qml/Components/EdgeDemo.qml:202
122142msgid "Swipe from the left to reveal the launcher for quick access to apps"
123143msgstr "Pro rychlý přístup k aplikacím potáhněte prst z levého okraje."
124144
125−#: qml/Components/EdgeDemo.qml:226
145+#: qml/Components/EdgeDemo.qml:229
126146msgid "Well done"
127147msgstr "Výborně"
128148
129−#: qml/Components/EdgeDemo.qml:227
149+#: qml/Components/EdgeDemo.qml:230
130150msgid ""
131151"You have now mastered the edge gestures and can start using the "
132152"phone<br><br>Tap on the screen to start"
133153msgstr ""
134154
135−#: qml/Components/Lockscreen.qml:167
136−msgid "Please wait"
137−msgstr ""
138−
139−#: qml/Components/Lockscreen.qml:172
140−msgid "Too many incorrect attempts"
155+#: qml/Components/Lockscreen.qml:223
156+msgid "Return to Call"
141157msgstr ""
142158
143−#: qml/Components/Lockscreen.qml:206
159+#: qml/Components/Lockscreen.qml:223
144160msgid "Emergency Call"
145161msgstr "Tísňové volání"
146162
147−#: qml/Components/Lockscreen.qml:226
163+#: qml/Components/Lockscreen.qml:255
148164msgid "OK"
149165msgstr ""
150166
151−#: qml/Components/PassphraseLockscreen.qml:61
152−#, qt-format
153−msgid "Hello %1"
154−msgstr "Ahoj %1"
155−
156−#: qml/Components/PassphraseLockscreen.qml:61
157−msgid "Hello"
158−msgstr "Ahoj"
159−
160−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
167+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
161168msgid "See less"
162169msgstr ""
163170
164−#: qml/Dash/GenericScopeView.qml:411
171+#: qml/Dash/GenericScopeView.qml:434
165172msgid "See all"
166173msgstr ""
167174
168−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
175+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
169176#: qml/Panel/SearchIndicator.qml:27
170177msgid "Search"
171178msgstr "Hledat"
@@ -202,15 +209,23 @@ msgstr "Přidat recenzi"
202209msgid "Send"
203210msgstr "Odeslat"
204211
205−#: qml/Dash/ScopesOverview.qml:206
212+#: qml/Dash/PullToRefreshScopeStyle.qml:55
213+msgid "Pull to refresh…"
214+msgstr ""
215+
216+#: qml/Dash/PullToRefreshScopeStyle.qml:60
217+msgid "Release to refresh…"
218+msgstr ""
219+
220+#: qml/Dash/ScopesOverview.qml:215
206221msgid "Manage Scopes"
207222msgstr ""
208223
209−#: qml/Dash/ScopesOverview.qml:428
224+#: qml/Dash/ScopesOverview.qml:437
210225msgid "Done"
211226msgstr ""
212227
213−#: qml/Dash/ScopesOverview.qml:454
228+#: qml/Dash/ScopesOverview.qml:463
214229msgid "Store"
215230msgstr ""
216231
@@ -222,8 +237,8 @@ msgstr ""
222237msgid "All"
223238msgstr ""
224239
225−#: qml/Greeter/Greeter.qml:157
226−msgid "Swipe to unlock"
240+#: qml/Greeter/Greeter.qml:174
241+msgid "Unlock"
227242msgstr ""
228243
229244#: qml/Hud/HudParametrizedActionsPage.qml:139
@@ -246,51 +261,43 @@ msgstr "Mluvte..."
246261msgid "Speaking..."
247262msgstr "Mluvte..."
248263
249−#: qml/Notifications/NotificationMenuItemFactory.qml:108
264+#: qml/Notifications/NotificationMenuItemFactory.qml:116
250265msgid "Show password"
251266msgstr "Zobrazit heslo"
252267
253−#: qml/Notifications/NotificationMenuItemFactory.qml:124
254−msgid "Enter SIM PIN"
255−msgstr ""
256−
257−#: qml/Notifications/NotificationMenuItemFactory.qml:125
258−msgid "Sorry, incorrect PIN"
259−msgstr ""
260−
261−#: qml/Panel/ActiveCallHint.qml:77
268+#: qml/Panel/ActiveCallHint.qml:79
262269msgid "Tap to return to call..."
263270msgstr ""
264271
265−#: qml/Panel/ActiveCallHint.qml:90
272+#: qml/Panel/ActiveCallHint.qml:92
266273msgid "Conference"
267274msgstr ""
268275
269−#: qml/Panel/Indicators/MenuItemFactory.qml:600
276+#: qml/Panel/Indicators/MenuItemFactory.qml:615
270277msgid "Nothing is playing"
271278msgstr ""
272279
273−#: qml/Panel/Indicators/MenuItemFactory.qml:748
280+#: qml/Panel/Indicators/MenuItemFactory.qml:763
274281msgid "In queue…"
275282msgstr ""
276283
277−#: qml/Panel/Indicators/MenuItemFactory.qml:752
284+#: qml/Panel/Indicators/MenuItemFactory.qml:767
278285msgid "Downloading"
279286msgstr ""
280287
281−#: qml/Panel/Indicators/MenuItemFactory.qml:754
288+#: qml/Panel/Indicators/MenuItemFactory.qml:769
282289msgid "Paused, tap to resume"
283290msgstr ""
284291
285−#: qml/Panel/Indicators/MenuItemFactory.qml:756
292+#: qml/Panel/Indicators/MenuItemFactory.qml:771
286293msgid "Canceled"
287294msgstr ""
288295
289−#: qml/Panel/Indicators/MenuItemFactory.qml:758
296+#: qml/Panel/Indicators/MenuItemFactory.qml:773
290297msgid "Finished"
291298msgstr ""
292299
293−#: qml/Panel/Indicators/MenuItemFactory.qml:760
300+#: qml/Panel/Indicators/MenuItemFactory.qml:775
294301msgid "Failed, tap to retry"
295302msgstr ""
296303
@@ -302,51 +309,55 @@ msgstr ""
302309msgid "Roaming"
303310msgstr ""
304311
305−#: qml/Shell.qml:320
306−msgid "Enter your passphrase"
312+#: qml/Shell.qml:381
313+msgid "Enter passphrase"
307314msgstr ""
308315
309−#: qml/Shell.qml:321
316+#: qml/Shell.qml:382
310317msgid "Sorry, incorrect passphrase"
311318msgstr ""
312319
313−#: qml/Shell.qml:323
314−msgid "Enter your passcode"
320+#: qml/Shell.qml:383
321+msgid "Please re-enter"
322+msgstr ""
323+
324+#: qml/Shell.qml:385
325+msgid "Enter passcode"
315326msgstr ""
316327
317−#: qml/Shell.qml:324
328+#: qml/Shell.qml:386
318329msgid "Sorry, incorrect passcode"
319330msgstr ""
320331
321−#: qml/Shell.qml:327
332+#: qml/Shell.qml:389
322333#, qt-format
323−msgid "Enter your %1"
334+msgid "Enter %1"
324335msgstr ""
325336
326−#: qml/Shell.qml:328
337+#: qml/Shell.qml:390
327338#, qt-format
328339msgid "Sorry, incorrect %1"
329340msgstr ""
330341
331−#: qml/Shell.qml:363
342+#: qml/Shell.qml:431
332343msgid "Sorry, incorrect passphrase."
333344msgstr ""
334345
335−#: qml/Shell.qml:364
346+#: qml/Shell.qml:432
336347msgid "Sorry, incorrect passcode."
337348msgstr ""
338349
339−#: qml/Shell.qml:365
350+#: qml/Shell.qml:433
340351msgid "This will be your last attempt."
341352msgstr ""
342353
343−#: qml/Shell.qml:367
354+#: qml/Shell.qml:435
344355msgid ""
345356"If passphrase is entered incorrectly, your phone will conduct a factory "
346357"reset and all personal data will be deleted."
347358msgstr ""
348359
349−#: qml/Shell.qml:368
360+#: qml/Shell.qml:436
350361msgid ""
351362"If passcode is entered incorrectly, your phone will conduct a factory reset "
352363"and all personal data will be deleted."
po/da.po+91−80
@@ -8,15 +8,16 @@ msgid ""
88msgstr ""
99"Project-Id-Version: unity8\n"
1010"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
11+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
1212"PO-Revision-Date: 2014-07-30 12:37+0000\n"
1313"Last-Translator: Ask Hjorth Larsen <asklarsen@gmail.com>\n"
1414"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
1515"MIME-Version: 1.0\n"
1616"Content-Type: text/plain; charset=UTF-8\n"
1717"Content-Transfer-Encoding: 8bit\n"
18−"X-Launchpad-Export-Date: 2014-09-29 05:19+0000\n"
19−"X-Generator: Launchpad (build 17196)\n"
18+"Plural-Forms: nplurals=2; plural=n != 1;\n"
19+"X-Launchpad-Export-Date: 2014-11-06 06:40+0000\n"
20+"X-Generator: Launchpad (build 17223)\n"
2021
2122#: plugins/LightDM/Greeter.cpp:130
2223msgid "Password: "
@@ -31,59 +32,78 @@ msgstr "Fastgør genvej"
3132msgid "Unpin shortcut"
3233msgstr "Gør genvej flytbar"
3334
34−#: qml/Components/Dialogs.qml:70
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:74
3555msgid "Log out"
3656msgstr ""
3757
38−#: qml/Components/Dialogs.qml:71
58+#: qml/Components/Dialogs.qml:75
3959msgid "Are you sure you want to log out?"
4060msgstr ""
4161
42−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
43−#: qml/Components/Dialogs.qml:122
62+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
63+#: qml/Components/Dialogs.qml:126
4464msgid "No"
4565msgstr ""
4666
47−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
48−#: qml/Components/Dialogs.qml:129
67+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
68+#: qml/Components/Dialogs.qml:133
4969msgid "Yes"
5070msgstr ""
5171
52−#: qml/Components/Dialogs.qml:94
72+#: qml/Components/Dialogs.qml:98
5373msgid "Shut down"
5474msgstr ""
5575
56−#: qml/Components/Dialogs.qml:95
76+#: qml/Components/Dialogs.qml:99
5777msgid "Are you sure you want to shut down?"
5878msgstr ""
5979
60−#: qml/Components/Dialogs.qml:119
80+#: qml/Components/Dialogs.qml:123
6181msgid "Reboot"
6282msgstr ""
6383
64−#: qml/Components/Dialogs.qml:120
84+#: qml/Components/Dialogs.qml:124
6585msgid "Are you sure you want to reboot?"
6686msgstr ""
6787
68−#: qml/Components/Dialogs.qml:144
88+#: qml/Components/Dialogs.qml:148
6989msgid "Power"
7090msgstr ""
7191
72−#: qml/Components/Dialogs.qml:145
92+#: qml/Components/Dialogs.qml:149
7393msgid ""
7494"Are you sure you would like\n"
7595"to power off?"
7696msgstr ""
7797
78−#: qml/Components/Dialogs.qml:147
98+#: qml/Components/Dialogs.qml:151
7999msgid "Power off"
80100msgstr ""
81101
82−#: qml/Components/Dialogs.qml:157
102+#: qml/Components/Dialogs.qml:161
83103msgid "Restart"
84104msgstr ""
85105
86−#: qml/Components/Dialogs.qml:167
106+#: qml/Components/Dialogs.qml:171
87107msgid "Cancel"
88108msgstr ""
89109
@@ -115,19 +135,19 @@ msgstr "Luk"
115135msgid "Swipe up again to close the settings screen"
116136msgstr "Stryg op igen for at låse indstillingsskærmen"
117137
118−#: qml/Components/EdgeDemo.qml:198
138+#: qml/Components/EdgeDemo.qml:201
119139msgid "Left edge"
120140msgstr "Venstre kant"
121141
122−#: qml/Components/EdgeDemo.qml:199
142+#: qml/Components/EdgeDemo.qml:202
123143msgid "Swipe from the left to reveal the launcher for quick access to apps"
124144msgstr "Stryg fra venstre for at vise opstarteren med hurtig adgang til apps"
125145
126−#: qml/Components/EdgeDemo.qml:226
146+#: qml/Components/EdgeDemo.qml:229
127147msgid "Well done"
128148msgstr "Godt gjort"
129149
130−#: qml/Components/EdgeDemo.qml:227
150+#: qml/Components/EdgeDemo.qml:230
131151msgid ""
132152"You have now mastered the edge gestures and can start using the "
133153"phone<br><br>Tap on the screen to start"
@@ -135,40 +155,27 @@ msgstr ""
135155"Du mestrer nu kantbevægelserne og kan begynde at bruge telefonen<br><br>Tryk "
136156"på skærmen for at starte"
137157
138−#: qml/Components/Lockscreen.qml:167
139−msgid "Please wait"
140−msgstr ""
141−
142−#: qml/Components/Lockscreen.qml:172
143−msgid "Too many incorrect attempts"
158+#: qml/Components/Lockscreen.qml:223
159+msgid "Return to Call"
144160msgstr ""
145161
146−#: qml/Components/Lockscreen.qml:206
162+#: qml/Components/Lockscreen.qml:223
147163msgid "Emergency Call"
148164msgstr "Nødopkald"
149165
150−#: qml/Components/Lockscreen.qml:226
166+#: qml/Components/Lockscreen.qml:255
151167msgid "OK"
152168msgstr "O.k."
153169
154−#: qml/Components/PassphraseLockscreen.qml:61
155−#, qt-format
156−msgid "Hello %1"
157−msgstr "Hej %1"
158−
159−#: qml/Components/PassphraseLockscreen.qml:61
160−msgid "Hello"
161−msgstr "Hej"
162−
163−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
170+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
164171msgid "See less"
165172msgstr "Vis mindre"
166173
167−#: qml/Dash/GenericScopeView.qml:411
174+#: qml/Dash/GenericScopeView.qml:434
168175msgid "See all"
169176msgstr "Se alle"
170177
171−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
178+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
172179#: qml/Panel/SearchIndicator.qml:27
173180msgid "Search"
174181msgstr "Søg"
@@ -205,15 +212,23 @@ msgstr "Tilføj en forhåndsvisning"
205212msgid "Send"
206213msgstr "Send"
207214
208−#: qml/Dash/ScopesOverview.qml:206
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+
223+#: qml/Dash/ScopesOverview.qml:215
209224msgid "Manage Scopes"
210225msgstr ""
211226
212−#: qml/Dash/ScopesOverview.qml:428
227+#: qml/Dash/ScopesOverview.qml:437
213228msgid "Done"
214229msgstr ""
215230
216−#: qml/Dash/ScopesOverview.qml:454
231+#: qml/Dash/ScopesOverview.qml:463
217232msgid "Store"
218233msgstr ""
219234
@@ -225,9 +240,9 @@ msgstr ""
225240msgid "All"
226241msgstr ""
227242
228−#: qml/Greeter/Greeter.qml:157
229−msgid "Swipe to unlock"
230−msgstr "Stryg for at låse op"
243+#: qml/Greeter/Greeter.qml:174
244+msgid "Unlock"
245+msgstr ""
231246
232247#: qml/Hud/HudParametrizedActionsPage.qml:139
233248msgid "Confirm"
@@ -249,51 +264,43 @@ msgstr "Tal nu..."
249264msgid "Speaking..."
250265msgstr "Taler..."
251266
252−#: qml/Notifications/NotificationMenuItemFactory.qml:108
267+#: qml/Notifications/NotificationMenuItemFactory.qml:116
253268msgid "Show password"
254269msgstr "Vis adgangskode"
255270
256−#: qml/Notifications/NotificationMenuItemFactory.qml:124
257−msgid "Enter SIM PIN"
258−msgstr ""
259−
260−#: qml/Notifications/NotificationMenuItemFactory.qml:125
261−msgid "Sorry, incorrect PIN"
262−msgstr ""
263−
264−#: qml/Panel/ActiveCallHint.qml:77
271+#: qml/Panel/ActiveCallHint.qml:79
265272msgid "Tap to return to call..."
266273msgstr "Tryk for at besvare opkaldet..."
267274
268−#: qml/Panel/ActiveCallHint.qml:90
275+#: qml/Panel/ActiveCallHint.qml:92
269276msgid "Conference"
270277msgstr "Konference"
271278
272−#: qml/Panel/Indicators/MenuItemFactory.qml:600
279+#: qml/Panel/Indicators/MenuItemFactory.qml:615
273280msgid "Nothing is playing"
274281msgstr ""
275282
276−#: qml/Panel/Indicators/MenuItemFactory.qml:748
283+#: qml/Panel/Indicators/MenuItemFactory.qml:763
277284msgid "In queue…"
278285msgstr "I kø…"
279286
280−#: qml/Panel/Indicators/MenuItemFactory.qml:752
287+#: qml/Panel/Indicators/MenuItemFactory.qml:767
281288msgid "Downloading"
282289msgstr "Henter"
283290
284−#: qml/Panel/Indicators/MenuItemFactory.qml:754
291+#: qml/Panel/Indicators/MenuItemFactory.qml:769
285292msgid "Paused, tap to resume"
286293msgstr "På pause; tryk for at fortsætte"
287294
288−#: qml/Panel/Indicators/MenuItemFactory.qml:756
295+#: qml/Panel/Indicators/MenuItemFactory.qml:771
289296msgid "Canceled"
290297msgstr "Annulleret"
291298
292−#: qml/Panel/Indicators/MenuItemFactory.qml:758
299+#: qml/Panel/Indicators/MenuItemFactory.qml:773
293300msgid "Finished"
294301msgstr "Færdig"
295302
296−#: qml/Panel/Indicators/MenuItemFactory.qml:760
303+#: qml/Panel/Indicators/MenuItemFactory.qml:775
297304msgid "Failed, tap to retry"
298305msgstr "Mislykkedes; tryk for at prøve igen"
299306
@@ -305,51 +312,55 @@ msgstr ""
305312msgid "Roaming"
306313msgstr ""
307314
308−#: qml/Shell.qml:320
309−msgid "Enter your passphrase"
315+#: qml/Shell.qml:381
316+msgid "Enter passphrase"
310317msgstr ""
311318
312−#: qml/Shell.qml:321
319+#: qml/Shell.qml:382
313320msgid "Sorry, incorrect passphrase"
314321msgstr ""
315322
316−#: qml/Shell.qml:323
317−msgid "Enter your passcode"
323+#: qml/Shell.qml:383
324+msgid "Please re-enter"
325+msgstr ""
326+
327+#: qml/Shell.qml:385
328+msgid "Enter passcode"
318329msgstr ""
319330
320−#: qml/Shell.qml:324
331+#: qml/Shell.qml:386
321332msgid "Sorry, incorrect passcode"
322333msgstr ""
323334
324−#: qml/Shell.qml:327
335+#: qml/Shell.qml:389
325336#, qt-format
326−msgid "Enter your %1"
337+msgid "Enter %1"
327338msgstr ""
328339
329−#: qml/Shell.qml:328
340+#: qml/Shell.qml:390
330341#, qt-format
331342msgid "Sorry, incorrect %1"
332343msgstr ""
333344
334−#: qml/Shell.qml:363
345+#: qml/Shell.qml:431
335346msgid "Sorry, incorrect passphrase."
336347msgstr ""
337348
338−#: qml/Shell.qml:364
349+#: qml/Shell.qml:432
339350msgid "Sorry, incorrect passcode."
340351msgstr ""
341352
342−#: qml/Shell.qml:365
353+#: qml/Shell.qml:433
343354msgid "This will be your last attempt."
344355msgstr ""
345356
346−#: qml/Shell.qml:367
357+#: qml/Shell.qml:435
347358msgid ""
348359"If passphrase is entered incorrectly, your phone will conduct a factory "
349360"reset and all personal data will be deleted."
350361msgstr ""
351362
352−#: qml/Shell.qml:368
363+#: qml/Shell.qml:436
353364msgid ""
354365"If passcode is entered incorrectly, your phone will conduct a factory reset "
355366"and all personal data will be deleted."
po/de.po+104−92
@@ -7,68 +7,92 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
11−"PO-Revision-Date: 2014-09-29 06:33+0000\n"
12−"Last-Translator: Niklas Wenzel <nikwen.developer@gmail.com>\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
11+"PO-Revision-Date: 2014-10-21 11:26+0000\n"
12+"Last-Translator: Alexander Dobetsberger <Unknown>\n"
1313"Language-Team: German <de@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-30 07:10+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
18+"X-Launchpad-Export-Date: 2014-11-06 06:40+0000\n"
19+"X-Generator: Launchpad (build 17223)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
2223msgstr "Passwort: "
2324
24−#: plugins/Unity/Launcher/launcheritem.cpp:44
25−#: plugins/Unity/Launcher/launcheritem.cpp:74
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
2627msgid "Pin shortcut"
2728msgstr "Verknüpfung anheften"
2829
29−#: plugins/Unity/Launcher/launcheritem.cpp:74
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
3031msgid "Unpin shortcut"
3132msgstr "Verknüpfung entfernen"
3233
33−#: qml/Components/Dialogs.qml:70
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr "Gerät gesperrt"
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr ""
41+"Das Gerät wurde aufgrund zu vieler falscher Passworteingaben für längere "
42+"Zeit gesperrt."
43+
44+#: qml/Components/DelayedLockscreen.qml:63
45+msgid "You have been locked out due to too many failed passcode attempts."
46+msgstr ""
47+"Das Gerät wurde aufgrund zu vieler falscher PIN-Eingaben für längere Zeit "
48+"gesperrt."
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] "Bitte warten Sie %1 Minute und versuchen Sie es dann erneut..."
55+msgstr[1] "Bitte warten Sie %1 Minuten und versuchen Sie es dann erneut..."
56+
57+#: qml/Components/Dialogs.qml:74
3458msgid "Log out"
3559msgstr "Abmelden"
3660
37−#: qml/Components/Dialogs.qml:71
61+#: qml/Components/Dialogs.qml:75
3862msgid "Are you sure you want to log out?"
3963msgstr "Sind Sie sicher, dass Sie sich abmelden wollen?"
4064
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
65+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
66+#: qml/Components/Dialogs.qml:126
4367msgid "No"
4468msgstr "Nein"
4569
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
70+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
71+#: qml/Components/Dialogs.qml:133
4872msgid "Yes"
4973msgstr "Ja"
5074
51−#: qml/Components/Dialogs.qml:94
75+#: qml/Components/Dialogs.qml:98
5276msgid "Shut down"
5377msgstr "Herunterfahren"
5478
55−#: qml/Components/Dialogs.qml:95
79+#: qml/Components/Dialogs.qml:99
5680msgid "Are you sure you want to shut down?"
5781msgstr "Sind Sie sicher, dass Sie herunterfahren wollen?"
5882
59−#: qml/Components/Dialogs.qml:119
83+#: qml/Components/Dialogs.qml:123
6084msgid "Reboot"
6185msgstr "Neustart"
6286
63−#: qml/Components/Dialogs.qml:120
87+#: qml/Components/Dialogs.qml:124
6488msgid "Are you sure you want to reboot?"
6589msgstr "Sind Sie sicher, dass Sie neu starten wollen?"
6690
67−#: qml/Components/Dialogs.qml:144
91+#: qml/Components/Dialogs.qml:148
6892msgid "Power"
6993msgstr "Energie"
7094
71−#: qml/Components/Dialogs.qml:145
95+#: qml/Components/Dialogs.qml:149
7296msgid ""
7397"Are you sure you would like\n"
7498"to power off?"
@@ -76,15 +100,15 @@ msgstr ""
76100"Sind Sie sicher, dass Sie das\n"
77101"Gerät ausschalten wollen?"
78102
79−#: qml/Components/Dialogs.qml:147
103+#: qml/Components/Dialogs.qml:151
80104msgid "Power off"
81105msgstr "Ausschalten"
82106
83−#: qml/Components/Dialogs.qml:157
107+#: qml/Components/Dialogs.qml:161
84108msgid "Restart"
85109msgstr "Neustarten"
86110
87−#: qml/Components/Dialogs.qml:167
111+#: qml/Components/Dialogs.qml:171
88112msgid "Cancel"
89113msgstr "Abbrechen"
90114
@@ -117,21 +141,21 @@ msgstr "Schließen"
117141msgid "Swipe up again to close the settings screen"
118142msgstr "Wischen Sie erneut nach oben, um das Einstellungsmenü zu schließen"
119143
120−#: qml/Components/EdgeDemo.qml:198
144+#: qml/Components/EdgeDemo.qml:201
121145msgid "Left edge"
122146msgstr "Linker Rand"
123147
124−#: qml/Components/EdgeDemo.qml:199
148+#: qml/Components/EdgeDemo.qml:202
125149msgid "Swipe from the left to reveal the launcher for quick access to apps"
126150msgstr ""
127151"Wischen Sie von links nach rechts, um die Seitenleiste für den Anwendungs-"
128152"Schnellzugriff aufzurufen"
129153
130−#: qml/Components/EdgeDemo.qml:226
154+#: qml/Components/EdgeDemo.qml:229
131155msgid "Well done"
132156msgstr "Gut gemacht"
133157
134−#: qml/Components/EdgeDemo.qml:227
158+#: qml/Components/EdgeDemo.qml:230
135159msgid ""
136160"You have now mastered the edge gestures and can start using the "
137161"phone<br><br>Tap on the screen to start"
@@ -139,40 +163,27 @@ msgstr ""
139163"Sie haben nun die Kantengesten erfolgreich erlernt und können das Telefon "
140164"nun nutzen<br><br>Zum Starten auf den Bildschirm tippen"
141165
142−#: qml/Components/Lockscreen.qml:167
143−msgid "Please wait"
144−msgstr "Bitte warten"
145−
146−#: qml/Components/Lockscreen.qml:172
147−msgid "Too many incorrect attempts"
148−msgstr "Zu viele falsche Versuche"
166+#: qml/Components/Lockscreen.qml:223
167+msgid "Return to Call"
168+msgstr ""
149169
150−#: qml/Components/Lockscreen.qml:206
170+#: qml/Components/Lockscreen.qml:223
151171msgid "Emergency Call"
152172msgstr "Notruf"
153173
154−#: qml/Components/Lockscreen.qml:226
174+#: qml/Components/Lockscreen.qml:255
155175msgid "OK"
156176msgstr "OK"
157177
158−#: qml/Components/PassphraseLockscreen.qml:61
159−#, qt-format
160−msgid "Hello %1"
161−msgstr "Hallo %1"
162−
163−#: qml/Components/PassphraseLockscreen.qml:61
164−msgid "Hello"
165−msgstr "Hallo"
166−
167−#: qml/Dash/GenericScopeView.qml:364 qml/Dash/GenericScopeView.qml:483
178+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
168179msgid "See less"
169180msgstr "Weniger ansehen"
170181
171−#: qml/Dash/GenericScopeView.qml:364
182+#: qml/Dash/GenericScopeView.qml:434
172183msgid "See all"
173184msgstr "Alle anzeigen"
174185
175−#: qml/Dash/GenericScopeView.qml:427 qml/Dash/PageHeader.qml:258
186+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
176187#: qml/Panel/SearchIndicator.qml:27
177188msgid "Search"
178189msgstr "Suchen"
@@ -209,15 +220,23 @@ msgstr "Bewertung hinzufügen"
209220msgid "Send"
210221msgstr "Senden"
211222
212−#: qml/Dash/ScopesOverview.qml:206
223+#: qml/Dash/PullToRefreshScopeStyle.qml:55
224+msgid "Pull to refresh…"
225+msgstr "Zum Aktualisieren ziehen …"
226+
227+#: qml/Dash/PullToRefreshScopeStyle.qml:60
228+msgid "Release to refresh…"
229+msgstr "Zum Aktualisieren loslassen …"
230+
231+#: qml/Dash/ScopesOverview.qml:215
213232msgid "Manage Scopes"
214233msgstr "Filter verwalten"
215234
216−#: qml/Dash/ScopesOverview.qml:428
235+#: qml/Dash/ScopesOverview.qml:437
217236msgid "Done"
218237msgstr "Erledigt"
219238
220−#: qml/Dash/ScopesOverview.qml:454
239+#: qml/Dash/ScopesOverview.qml:463
221240msgid "Store"
222241msgstr "Store"
223242
@@ -229,9 +248,9 @@ msgstr "Favoriten"
229248msgid "All"
230249msgstr "Alle"
231250
232−#: qml/Greeter/Greeter.qml:157
233−msgid "Swipe to unlock"
234−msgstr "Wischen zum Entsperren"
251+#: qml/Greeter/Greeter.qml:174
252+msgid "Unlock"
253+msgstr "Entsperren"
235254
236255#: qml/Hud/HudParametrizedActionsPage.qml:139
237256msgid "Confirm"
@@ -253,51 +272,43 @@ msgstr "Sprechen Sie jetzt …"
253272msgid "Speaking..."
254273msgstr "Sprechen Sie …"
255274
256−#: qml/Notifications/NotificationMenuItemFactory.qml:108
275+#: qml/Notifications/NotificationMenuItemFactory.qml:116
257276msgid "Show password"
258277msgstr "Passwort anzeigen"
259278
260−#: qml/Notifications/NotificationMenuItemFactory.qml:124
261−msgid "Enter SIM PIN"
262−msgstr "Geben Sie die SIM-PIN ein"
263−
264−#: qml/Notifications/NotificationMenuItemFactory.qml:125
265−msgid "Sorry, incorrect PIN"
266−msgstr "Die PIN ist nicht korrekt"
267−
268−#: qml/Panel/ActiveCallHint.qml:77
279+#: qml/Panel/ActiveCallHint.qml:79
269280msgid "Tap to return to call..."
270281msgstr "Tippen um zum Anruf zurückzugehen"
271282
272−#: qml/Panel/ActiveCallHint.qml:90
283+#: qml/Panel/ActiveCallHint.qml:92
273284msgid "Conference"
274285msgstr "Konferenz"
275286
276−#: qml/Panel/Indicators/MenuItemFactory.qml:600
287+#: qml/Panel/Indicators/MenuItemFactory.qml:615
277288msgid "Nothing is playing"
278289msgstr "Nichts wird abgespielt"
279290
280−#: qml/Panel/Indicators/MenuItemFactory.qml:651
291+#: qml/Panel/Indicators/MenuItemFactory.qml:763
281292msgid "In queue…"
282293msgstr "In Warteschlange …"
283294
284−#: qml/Panel/Indicators/MenuItemFactory.qml:655
295+#: qml/Panel/Indicators/MenuItemFactory.qml:767
285296msgid "Downloading"
286297msgstr "Wird heruntergeladen"
287298
288−#: qml/Panel/Indicators/MenuItemFactory.qml:657
299+#: qml/Panel/Indicators/MenuItemFactory.qml:769
289300msgid "Paused, tap to resume"
290301msgstr "Pausiert, tippen Sie zum fortsetzen"
291302
292−#: qml/Panel/Indicators/MenuItemFactory.qml:659
303+#: qml/Panel/Indicators/MenuItemFactory.qml:771
293304msgid "Canceled"
294305msgstr "Abgebrochen"
295306
296−#: qml/Panel/Indicators/MenuItemFactory.qml:661
307+#: qml/Panel/Indicators/MenuItemFactory.qml:773
297308msgid "Finished"
298309msgstr "Erledigt"
299310
300−#: qml/Panel/Indicators/MenuItemFactory.qml:663
311+#: qml/Panel/Indicators/MenuItemFactory.qml:775
301312msgid "Failed, tap to retry"
302313msgstr "Fehlgeschlagen, tippen Sie zum Wiederholen"
303314
@@ -309,45 +320,49 @@ msgstr "SIM-Karte entsperren"
309320msgid "Roaming"
310321msgstr "Roaming"
311322
312−#: qml/Shell.qml:292
313−msgid "Enter your passphrase"
314−msgstr "Geben Sie Ihr Passwort ein"
323+#: qml/Shell.qml:381
324+msgid "Enter passphrase"
325+msgstr "Passwort eingeben"
315326
316−#: qml/Shell.qml:293
327+#: qml/Shell.qml:382
317328msgid "Sorry, incorrect passphrase"
318329msgstr "Das Passwort ist nicht korrekt"
319330
320−#: qml/Shell.qml:295
321−msgid "Enter your passcode"
322−msgstr "Passwort eingeben"
331+#: qml/Shell.qml:383
332+msgid "Please re-enter"
333+msgstr "Bitte erneut eingeben"
323334
324−#: qml/Shell.qml:296
335+#: qml/Shell.qml:385
336+msgid "Enter passcode"
337+msgstr "PIN eingeben"
338+
339+#: qml/Shell.qml:386
325340msgid "Sorry, incorrect passcode"
326341msgstr "Falsches Passwort"
327342
328−#: qml/Shell.qml:299
343+#: qml/Shell.qml:389
329344#, qt-format
330−msgid "Enter your %1"
345+msgid "Enter %1"
331346msgstr "%1 eingeben"
332347
333−#: qml/Shell.qml:300
348+#: qml/Shell.qml:390
334349#, qt-format
335350msgid "Sorry, incorrect %1"
336351msgstr "%1 falsch"
337352
338−#: qml/Shell.qml:335
353+#: qml/Shell.qml:431
339354msgid "Sorry, incorrect passphrase."
340−msgstr "Falsches Passwort."
355+msgstr "Entschuldigung, falsches Passwort."
341356
342−#: qml/Shell.qml:336
357+#: qml/Shell.qml:432
343358msgid "Sorry, incorrect passcode."
344359msgstr "Falsche PIN"
345360
346−#: qml/Shell.qml:337
361+#: qml/Shell.qml:433
347362msgid "This will be your last attempt."
348363msgstr "Dies ist Ihr letzter Versuch."
349364
350−#: qml/Shell.qml:339
365+#: qml/Shell.qml:435
351366msgid ""
352367"If passphrase is entered incorrectly, your phone will conduct a factory "
353368"reset and all personal data will be deleted."
@@ -355,13 +370,10 @@ msgstr ""
355370"Wird das Passwort falsch eingegeben, wird das Telefon auf den Werkszustand "
356371"zurückgesetzt und alle Daten werden gelöscht."
357372
358−#: qml/Shell.qml:340
373+#: qml/Shell.qml:436
359374msgid ""
360375"If passcode is entered incorrectly, your phone will conduct a factory reset "
361376"and all personal data will be deleted."
362377msgstr ""
363378"Wird die PIN falsch eingegeben, wird das Telefon auf den Werkszustand "
364379"zurückgesetzt und alle Daten werden gelöscht."
365−
366−#~ msgid "Manage Dash"
367−#~ msgstr "Dash verwalten"
po/el.po+93−82
@@ -7,15 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
1111"PO-Revision-Date: 2014-08-21 12:06+0000\n"
1212"Last-Translator: Chris Taklis (aka Kailor) <ctaklis@gmail.com>\n"
1313"Language-Team: Greek <el@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:19+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
18+"X-Launchpad-Export-Date: 2014-11-06 06:40+0000\n"
19+"X-Generator: Launchpad (build 17223)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
@@ -30,59 +31,78 @@ msgstr "Καρφίτσωμα συντόμευσης"
3031msgid "Unpin shortcut"
3132msgstr "Ξεκαρφίτσωμα συντόμευσης"
3233
33−#: qml/Components/Dialogs.qml:70
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+
53+#: qml/Components/Dialogs.qml:74
3454msgid "Log out"
3555msgstr ""
3656
37−#: qml/Components/Dialogs.qml:71
57+#: qml/Components/Dialogs.qml:75
3858msgid "Are you sure you want to log out?"
3959msgstr ""
4060
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
61+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
62+#: qml/Components/Dialogs.qml:126
4363msgid "No"
4464msgstr ""
4565
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
66+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
67+#: qml/Components/Dialogs.qml:133
4868msgid "Yes"
4969msgstr ""
5070
51−#: qml/Components/Dialogs.qml:94
71+#: qml/Components/Dialogs.qml:98
5272msgid "Shut down"
5373msgstr ""
5474
55−#: qml/Components/Dialogs.qml:95
75+#: qml/Components/Dialogs.qml:99
5676msgid "Are you sure you want to shut down?"
5777msgstr ""
5878
59−#: qml/Components/Dialogs.qml:119
79+#: qml/Components/Dialogs.qml:123
6080msgid "Reboot"
6181msgstr ""
6282
63−#: qml/Components/Dialogs.qml:120
83+#: qml/Components/Dialogs.qml:124
6484msgid "Are you sure you want to reboot?"
6585msgstr ""
6686
67−#: qml/Components/Dialogs.qml:144
87+#: qml/Components/Dialogs.qml:148
6888msgid "Power"
6989msgstr ""
7090
71−#: qml/Components/Dialogs.qml:145
91+#: qml/Components/Dialogs.qml:149
7292msgid ""
7393"Are you sure you would like\n"
7494"to power off?"
7595msgstr ""
7696
77−#: qml/Components/Dialogs.qml:147
97+#: qml/Components/Dialogs.qml:151
7898msgid "Power off"
7999msgstr "Τερματισμός"
80100
81−#: qml/Components/Dialogs.qml:157
101+#: qml/Components/Dialogs.qml:161
82102msgid "Restart"
83103msgstr ""
84104
85−#: qml/Components/Dialogs.qml:167
105+#: qml/Components/Dialogs.qml:171
86106msgid "Cancel"
87107msgstr "Ακύρωση"
88108
@@ -114,21 +134,21 @@ msgstr "Κλείσιμο"
114134msgid "Swipe up again to close the settings screen"
115135msgstr "Σύρετε προς τα επάνω για κλείσιμο των ρυθμίσεων"
116136
117−#: qml/Components/EdgeDemo.qml:198
137+#: qml/Components/EdgeDemo.qml:201
118138msgid "Left edge"
119139msgstr "Αριστερό άκρο"
120140
121−#: qml/Components/EdgeDemo.qml:199
141+#: qml/Components/EdgeDemo.qml:202
122142msgid "Swipe from the left to reveal the launcher for quick access to apps"
123143msgstr ""
124144"Σύρετε από τα αριστερό άκρο για εμφάνιση του εκκινητή για άμεση πρόσβαση "
125145"στις εφαρμογές"
126146
127−#: qml/Components/EdgeDemo.qml:226
147+#: qml/Components/EdgeDemo.qml:229
128148msgid "Well done"
129149msgstr "Συγχαρητήρια"
130150
131−#: qml/Components/EdgeDemo.qml:227
151+#: qml/Components/EdgeDemo.qml:230
132152msgid ""
133153"You have now mastered the edge gestures and can start using the "
134154"phone<br><br>Tap on the screen to start"
@@ -136,40 +156,27 @@ msgstr ""
136156"Πλέον γνωρίζετε τις χειρονομίες από τα άκρα και μπορείτε να ξεκινήσετε να "
137157"χρησιμοποιείτε το τηλέφωνο<br><br>Αγγίξτε την οθόνη για να ξεκινήσετε"
138158
139−#: qml/Components/Lockscreen.qml:167
140−msgid "Please wait"
141−msgstr "Παρακαλώ περιμένετε"
142−
143−#: qml/Components/Lockscreen.qml:172
144−msgid "Too many incorrect attempts"
145−msgstr "Πολλές άκυρες προσπάθειες"
159+#: qml/Components/Lockscreen.qml:223
160+msgid "Return to Call"
161+msgstr ""
146162
147−#: qml/Components/Lockscreen.qml:206
163+#: qml/Components/Lockscreen.qml:223
148164msgid "Emergency Call"
149165msgstr "Κλήση έκτακτης ανάγκης"
150166
151−#: qml/Components/Lockscreen.qml:226
167+#: qml/Components/Lockscreen.qml:255
152168msgid "OK"
153169msgstr "OK"
154170
155−#: qml/Components/PassphraseLockscreen.qml:61
156−#, qt-format
157−msgid "Hello %1"
158−msgstr "Γεια σας %1"
159−
160−#: qml/Components/PassphraseLockscreen.qml:61
161−msgid "Hello"
162−msgstr "Γεια σας"
163−
164−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
171+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
165172msgid "See less"
166173msgstr "Λιγότερα"
167174
168−#: qml/Dash/GenericScopeView.qml:411
175+#: qml/Dash/GenericScopeView.qml:434
169176msgid "See all"
170177msgstr "Εμφάνιση όλων"
171178
172−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
179+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
173180#: qml/Panel/SearchIndicator.qml:27
174181msgid "Search"
175182msgstr "Αναζήτηση"
@@ -206,15 +213,23 @@ msgstr "Προσθέστε την αξιολόγησή σας"
206213msgid "Send"
207214msgstr "Αποστολή"
208215
209−#: qml/Dash/ScopesOverview.qml:206
216+#: qml/Dash/PullToRefreshScopeStyle.qml:55
217+msgid "Pull to refresh…"
218+msgstr ""
219+
220+#: qml/Dash/PullToRefreshScopeStyle.qml:60
221+msgid "Release to refresh…"
222+msgstr ""
223+
224+#: qml/Dash/ScopesOverview.qml:215
210225msgid "Manage Scopes"
211226msgstr ""
212227
213−#: qml/Dash/ScopesOverview.qml:428
228+#: qml/Dash/ScopesOverview.qml:437
214229msgid "Done"
215230msgstr "Ολοκληρώθηκε"
216231
217−#: qml/Dash/ScopesOverview.qml:454
232+#: qml/Dash/ScopesOverview.qml:463
218233msgid "Store"
219234msgstr "Κατάστημα"
220235
@@ -226,9 +241,9 @@ msgstr "Αγαπημένα"
226241msgid "All"
227242msgstr "Όλα"
228243
229−#: qml/Greeter/Greeter.qml:157
230−msgid "Swipe to unlock"
231−msgstr "Σύρετε για να ξεκλειδώσετε"
244+#: qml/Greeter/Greeter.qml:174
245+msgid "Unlock"
246+msgstr ""
232247
233248#: qml/Hud/HudParametrizedActionsPage.qml:139
234249msgid "Confirm"
@@ -250,51 +265,43 @@ msgstr "Μιλήστε τώρα..."
250265msgid "Speaking..."
251266msgstr "Ομιλία..."
252267
253−#: qml/Notifications/NotificationMenuItemFactory.qml:108
268+#: qml/Notifications/NotificationMenuItemFactory.qml:116
254269msgid "Show password"
255270msgstr "Εμφάνιση κωδικού"
256271
257−#: qml/Notifications/NotificationMenuItemFactory.qml:124
258−msgid "Enter SIM PIN"
259−msgstr ""
260−
261−#: qml/Notifications/NotificationMenuItemFactory.qml:125
262−msgid "Sorry, incorrect PIN"
263−msgstr ""
264−
265−#: qml/Panel/ActiveCallHint.qml:77
272+#: qml/Panel/ActiveCallHint.qml:79
266273msgid "Tap to return to call..."
267274msgstr "Πατήστε για να γυρίσετε στην κλήση..."
268275
269−#: qml/Panel/ActiveCallHint.qml:90
276+#: qml/Panel/ActiveCallHint.qml:92
270277msgid "Conference"
271278msgstr "Συνδιάσκεψη"
272279
273−#: qml/Panel/Indicators/MenuItemFactory.qml:600
280+#: qml/Panel/Indicators/MenuItemFactory.qml:615
274281msgid "Nothing is playing"
275282msgstr ""
276283
277−#: qml/Panel/Indicators/MenuItemFactory.qml:748
284+#: qml/Panel/Indicators/MenuItemFactory.qml:763
278285msgid "In queue…"
279286msgstr "Στην ουρά..."
280287
281−#: qml/Panel/Indicators/MenuItemFactory.qml:752
288+#: qml/Panel/Indicators/MenuItemFactory.qml:767
282289msgid "Downloading"
283290msgstr "Λήψη σε εξέλιξη"
284291
285−#: qml/Panel/Indicators/MenuItemFactory.qml:754
292+#: qml/Panel/Indicators/MenuItemFactory.qml:769
286293msgid "Paused, tap to resume"
287294msgstr "Σταματημένο, αγγίξτε για συνέχιση"
288295
289−#: qml/Panel/Indicators/MenuItemFactory.qml:756
296+#: qml/Panel/Indicators/MenuItemFactory.qml:771
290297msgid "Canceled"
291298msgstr "Ακυρώθηκε"
292299
293−#: qml/Panel/Indicators/MenuItemFactory.qml:758
300+#: qml/Panel/Indicators/MenuItemFactory.qml:773
294301msgid "Finished"
295302msgstr "Ολοκληρώθηκε"
296303
297−#: qml/Panel/Indicators/MenuItemFactory.qml:760
304+#: qml/Panel/Indicators/MenuItemFactory.qml:775
298305msgid "Failed, tap to retry"
299306msgstr "Αποτυχία, πατήστε για να ξαναπροσπαθήσετε"
300307
@@ -306,51 +313,55 @@ msgstr "Ξεκλείδωμα SIM"
306313msgid "Roaming"
307314msgstr "Περιαγωγή"
308315
309−#: qml/Shell.qml:320
310−msgid "Enter your passphrase"
316+#: qml/Shell.qml:381
317+msgid "Enter passphrase"
311318msgstr ""
312319
313−#: qml/Shell.qml:321
320+#: qml/Shell.qml:382
314321msgid "Sorry, incorrect passphrase"
315322msgstr ""
316323
317−#: qml/Shell.qml:323
318−msgid "Enter your passcode"
324+#: qml/Shell.qml:383
325+msgid "Please re-enter"
319326msgstr ""
320327
321−#: qml/Shell.qml:324
328+#: qml/Shell.qml:385
329+msgid "Enter passcode"
330+msgstr ""
331+
332+#: qml/Shell.qml:386
322333msgid "Sorry, incorrect passcode"
323334msgstr ""
324335
325−#: qml/Shell.qml:327
336+#: qml/Shell.qml:389
326337#, qt-format
327−msgid "Enter your %1"
328−msgstr "Εισάγετε το %1"
338+msgid "Enter %1"
339+msgstr ""
329340
330−#: qml/Shell.qml:328
341+#: qml/Shell.qml:390
331342#, qt-format
332343msgid "Sorry, incorrect %1"
333344msgstr ""
334345
335−#: qml/Shell.qml:363
346+#: qml/Shell.qml:431
336347msgid "Sorry, incorrect passphrase."
337348msgstr ""
338349
339−#: qml/Shell.qml:364
350+#: qml/Shell.qml:432
340351msgid "Sorry, incorrect passcode."
341352msgstr ""
342353
343−#: qml/Shell.qml:365
354+#: qml/Shell.qml:433
344355msgid "This will be your last attempt."
345356msgstr ""
346357
347−#: qml/Shell.qml:367
358+#: qml/Shell.qml:435
348359msgid ""
349360"If passphrase is entered incorrectly, your phone will conduct a factory "
350361"reset and all personal data will be deleted."
351362msgstr ""
352363
353−#: qml/Shell.qml:368
364+#: qml/Shell.qml:436
354365msgid ""
355366"If passcode is entered incorrectly, your phone will conduct a factory reset "
356367"and all personal data will be deleted."
po/en_AU.po+98−90
@@ -7,15 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
11−"PO-Revision-Date: 2014-09-23 01:24+0000\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
11+"PO-Revision-Date: 2014-10-12 09:41+0000\n"
1212"Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
1313"Language-Team: English (Australia) <en_AU@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:20+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
18+"X-Launchpad-Export-Date: 2014-11-06 06:41+0000\n"
19+"X-Generator: Launchpad (build 17223)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
@@ -30,45 +31,64 @@ msgstr "Pin shortcut"
3031msgid "Unpin shortcut"
3132msgstr "Unpin shortcut"
3233
33−#: qml/Components/Dialogs.qml:70
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+
53+#: qml/Components/Dialogs.qml:74
3454msgid "Log out"
3555msgstr "Log out"
3656
37−#: qml/Components/Dialogs.qml:71
57+#: qml/Components/Dialogs.qml:75
3858msgid "Are you sure you want to log out?"
3959msgstr "Are you sure you want to log out?"
4060
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
61+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
62+#: qml/Components/Dialogs.qml:126
4363msgid "No"
4464msgstr "No"
4565
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
66+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
67+#: qml/Components/Dialogs.qml:133
4868msgid "Yes"
4969msgstr "Yes"
5070
51−#: qml/Components/Dialogs.qml:94
71+#: qml/Components/Dialogs.qml:98
5272msgid "Shut down"
5373msgstr "Shut down"
5474
55−#: qml/Components/Dialogs.qml:95
75+#: qml/Components/Dialogs.qml:99
5676msgid "Are you sure you want to shut down?"
5777msgstr "Are you sure you want to shut down?"
5878
59−#: qml/Components/Dialogs.qml:119
79+#: qml/Components/Dialogs.qml:123
6080msgid "Reboot"
6181msgstr "Reboot"
6282
63−#: qml/Components/Dialogs.qml:120
83+#: qml/Components/Dialogs.qml:124
6484msgid "Are you sure you want to reboot?"
6585msgstr "Are you sure you want to reboot?"
6686
67−#: qml/Components/Dialogs.qml:144
87+#: qml/Components/Dialogs.qml:148
6888msgid "Power"
6989msgstr "Power"
7090
71−#: qml/Components/Dialogs.qml:145
91+#: qml/Components/Dialogs.qml:149
7292msgid ""
7393"Are you sure you would like\n"
7494"to power off?"
@@ -76,15 +96,15 @@ msgstr ""
7696"Are you sure you would like\n"
7797"to power off?"
7898
79−#: qml/Components/Dialogs.qml:147
99+#: qml/Components/Dialogs.qml:151
80100msgid "Power off"
81101msgstr "Power off"
82102
83−#: qml/Components/Dialogs.qml:157
103+#: qml/Components/Dialogs.qml:161
84104msgid "Restart"
85105msgstr "Restart"
86106
87−#: qml/Components/Dialogs.qml:167
107+#: qml/Components/Dialogs.qml:171
88108msgid "Cancel"
89109msgstr "Cancel"
90110
@@ -116,19 +136,19 @@ msgstr "Close"
116136msgid "Swipe up again to close the settings screen"
117137msgstr "Swipe up again to close the settings screen"
118138
119−#: qml/Components/EdgeDemo.qml:198
139+#: qml/Components/EdgeDemo.qml:201
120140msgid "Left edge"
121141msgstr "Left edge"
122142
123−#: qml/Components/EdgeDemo.qml:199
143+#: qml/Components/EdgeDemo.qml:202
124144msgid "Swipe from the left to reveal the launcher for quick access to apps"
125145msgstr "Swipe from the left to reveal the launcher for quick access to apps"
126146
127−#: qml/Components/EdgeDemo.qml:226
147+#: qml/Components/EdgeDemo.qml:229
128148msgid "Well done"
129149msgstr "Well done"
130150
131−#: qml/Components/EdgeDemo.qml:227
151+#: qml/Components/EdgeDemo.qml:230
132152msgid ""
133153"You have now mastered the edge gestures and can start using the "
134154"phone<br><br>Tap on the screen to start"
@@ -136,40 +156,27 @@ msgstr ""
136156"You have now mastered the edge gestures and can start using the "
137157"phone<br><br>Tap on the screen to start"
138158
139−#: qml/Components/Lockscreen.qml:167
140−msgid "Please wait"
141−msgstr "Please wait"
142−
143−#: qml/Components/Lockscreen.qml:172
144−msgid "Too many incorrect attempts"
145−msgstr "Too many incorrect attempts"
159+#: qml/Components/Lockscreen.qml:223
160+msgid "Return to Call"
161+msgstr ""
146162
147−#: qml/Components/Lockscreen.qml:206
163+#: qml/Components/Lockscreen.qml:223
148164msgid "Emergency Call"
149165msgstr "Emergency Call"
150166
151−#: qml/Components/Lockscreen.qml:226
167+#: qml/Components/Lockscreen.qml:255
152168msgid "OK"
153169msgstr "OK"
154170
155−#: qml/Components/PassphraseLockscreen.qml:61
156−#, qt-format
157−msgid "Hello %1"
158−msgstr "Hello %1"
159−
160−#: qml/Components/PassphraseLockscreen.qml:61
161−msgid "Hello"
162−msgstr "Hello"
163−
164−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
171+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
165172msgid "See less"
166173msgstr "See less"
167174
168−#: qml/Dash/GenericScopeView.qml:411
175+#: qml/Dash/GenericScopeView.qml:434
169176msgid "See all"
170177msgstr "See all"
171178
172−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
179+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
173180#: qml/Panel/SearchIndicator.qml:27
174181msgid "Search"
175182msgstr "Search"
@@ -206,15 +213,23 @@ msgstr "Add a review"
206213msgid "Send"
207214msgstr "Send"
208215
209−#: qml/Dash/ScopesOverview.qml:206
216+#: qml/Dash/PullToRefreshScopeStyle.qml:55
217+msgid "Pull to refresh…"
218+msgstr "Pull to refresh…"
219+
220+#: qml/Dash/PullToRefreshScopeStyle.qml:60
221+msgid "Release to refresh…"
222+msgstr "Release to refresh…"
223+
224+#: qml/Dash/ScopesOverview.qml:215
210225msgid "Manage Scopes"
211−msgstr ""
226+msgstr "Manage Scopes"
212227
213−#: qml/Dash/ScopesOverview.qml:428
228+#: qml/Dash/ScopesOverview.qml:437
214229msgid "Done"
215230msgstr "Done"
216231
217−#: qml/Dash/ScopesOverview.qml:454
232+#: qml/Dash/ScopesOverview.qml:463
218233msgid "Store"
219234msgstr "Store"
220235
@@ -226,9 +241,9 @@ msgstr "Favourites"
226241msgid "All"
227242msgstr "All"
228243
229−#: qml/Greeter/Greeter.qml:157
230−msgid "Swipe to unlock"
231−msgstr "Swipe to unlock"
244+#: qml/Greeter/Greeter.qml:174
245+msgid "Unlock"
246+msgstr "Unlock"
232247
233248#: qml/Hud/HudParametrizedActionsPage.qml:139
234249msgid "Confirm"
@@ -250,51 +265,43 @@ msgstr "Speak Now..."
250265msgid "Speaking..."
251266msgstr "Speaking..."
252267
253−#: qml/Notifications/NotificationMenuItemFactory.qml:108
268+#: qml/Notifications/NotificationMenuItemFactory.qml:116
254269msgid "Show password"
255270msgstr "Show password"
256271
257−#: qml/Notifications/NotificationMenuItemFactory.qml:124
258−msgid "Enter SIM PIN"
259−msgstr "Enter SIM PIN"
260−
261−#: qml/Notifications/NotificationMenuItemFactory.qml:125
262−msgid "Sorry, incorrect PIN"
263−msgstr "Sorry, incorrect PIN"
264−
265−#: qml/Panel/ActiveCallHint.qml:77
272+#: qml/Panel/ActiveCallHint.qml:79
266273msgid "Tap to return to call..."
267274msgstr "Tap to return to call..."
268275
269−#: qml/Panel/ActiveCallHint.qml:90
276+#: qml/Panel/ActiveCallHint.qml:92
270277msgid "Conference"
271278msgstr "Conference"
272279
273−#: qml/Panel/Indicators/MenuItemFactory.qml:600
280+#: qml/Panel/Indicators/MenuItemFactory.qml:615
274281msgid "Nothing is playing"
275−msgstr ""
282+msgstr "Nothing is playing"
276283
277−#: qml/Panel/Indicators/MenuItemFactory.qml:748
284+#: qml/Panel/Indicators/MenuItemFactory.qml:763
278285msgid "In queue…"
279286msgstr "In queue…"
280287
281−#: qml/Panel/Indicators/MenuItemFactory.qml:752
288+#: qml/Panel/Indicators/MenuItemFactory.qml:767
282289msgid "Downloading"
283290msgstr "Downloading"
284291
285−#: qml/Panel/Indicators/MenuItemFactory.qml:754
292+#: qml/Panel/Indicators/MenuItemFactory.qml:769
286293msgid "Paused, tap to resume"
287294msgstr "Paused, tap to resume"
288295
289−#: qml/Panel/Indicators/MenuItemFactory.qml:756
296+#: qml/Panel/Indicators/MenuItemFactory.qml:771
290297msgid "Canceled"
291298msgstr "Cancelled"
292299
293−#: qml/Panel/Indicators/MenuItemFactory.qml:758
300+#: qml/Panel/Indicators/MenuItemFactory.qml:773
294301msgid "Finished"
295302msgstr "Finished"
296303
297−#: qml/Panel/Indicators/MenuItemFactory.qml:760
304+#: qml/Panel/Indicators/MenuItemFactory.qml:775
298305msgid "Failed, tap to retry"
299306msgstr "Failed, tap to retry"
300307
@@ -306,45 +313,49 @@ msgstr "Unlock SIM"
306313msgid "Roaming"
307314msgstr "Roaming"
308315
309−#: qml/Shell.qml:320
310−msgid "Enter your passphrase"
311−msgstr "Enter your passphrase"
316+#: qml/Shell.qml:381
317+msgid "Enter passphrase"
318+msgstr "Enter passphrase"
312319
313−#: qml/Shell.qml:321
320+#: qml/Shell.qml:382
314321msgid "Sorry, incorrect passphrase"
315322msgstr "Sorry, incorrect passphrase"
316323
317−#: qml/Shell.qml:323
318−msgid "Enter your passcode"
319−msgstr "Enter your passcode"
324+#: qml/Shell.qml:383
325+msgid "Please re-enter"
326+msgstr "Please re-enter"
320327
321−#: qml/Shell.qml:324
328+#: qml/Shell.qml:385
329+msgid "Enter passcode"
330+msgstr "Enter passcode"
331+
332+#: qml/Shell.qml:386
322333msgid "Sorry, incorrect passcode"
323334msgstr "Sorry, incorrect passcode"
324335
325−#: qml/Shell.qml:327
336+#: qml/Shell.qml:389
326337#, qt-format
327−msgid "Enter your %1"
328−msgstr "Enter your %1"
338+msgid "Enter %1"
339+msgstr "Enter %1"
329340
330−#: qml/Shell.qml:328
341+#: qml/Shell.qml:390
331342#, qt-format
332343msgid "Sorry, incorrect %1"
333344msgstr "Sorry, incorrect %1"
334345
335−#: qml/Shell.qml:363
346+#: qml/Shell.qml:431
336347msgid "Sorry, incorrect passphrase."
337348msgstr "Sorry, incorrect passphrase."
338349
339−#: qml/Shell.qml:364
350+#: qml/Shell.qml:432
340351msgid "Sorry, incorrect passcode."
341352msgstr "Sorry, incorrect passcode."
342353
343−#: qml/Shell.qml:365
354+#: qml/Shell.qml:433
344355msgid "This will be your last attempt."
345356msgstr "This will be your last attempt."
346357
347−#: qml/Shell.qml:367
358+#: qml/Shell.qml:435
348359msgid ""
349360"If passphrase is entered incorrectly, your phone will conduct a factory "
350361"reset and all personal data will be deleted."
@@ -352,13 +363,10 @@ msgstr ""
352363"If passphrase is entered incorrectly, your phone will conduct a factory "
353364"reset and all personal data will be deleted."
354365
355−#: qml/Shell.qml:368
366+#: qml/Shell.qml:436
356367msgid ""
357368"If passcode is entered incorrectly, your phone will conduct a factory reset "
358369"and all personal data will be deleted."
359370msgstr ""
360371"If passcode is entered incorrectly, your phone will conduct a factory reset "
361372"and all personal data will be deleted."
362−
363−#~ msgid "Manage Dash"
364−#~ msgstr "Manage Dash"
po/en_GB.po+97−89
@@ -7,15 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
11−"PO-Revision-Date: 2014-08-23 13:48+0000\n"
12−"Last-Translator: Alan Pope ( ͡° ͜ʖ ͡°) <alan@ubuntu.com>\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
11+"PO-Revision-Date: 2014-11-05 18:59+0000\n"
12+"Last-Translator: Andi Chandler <Unknown>\n"
1313"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:20+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
18+"X-Launchpad-Export-Date: 2014-11-06 06:41+0000\n"
19+"X-Generator: Launchpad (build 17223)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
@@ -30,45 +31,64 @@ msgstr "Pin shortcut"
3031msgid "Unpin shortcut"
3132msgstr "Unpin shortcut"
3233
33−#: qml/Components/Dialogs.qml:70
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+
53+#: qml/Components/Dialogs.qml:74
3454msgid "Log out"
3555msgstr "Log out"
3656
37−#: qml/Components/Dialogs.qml:71
57+#: qml/Components/Dialogs.qml:75
3858msgid "Are you sure you want to log out?"
3959msgstr "Are you sure you want to log out?"
4060
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
61+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
62+#: qml/Components/Dialogs.qml:126
4363msgid "No"
4464msgstr "No"
4565
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
66+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
67+#: qml/Components/Dialogs.qml:133
4868msgid "Yes"
4969msgstr "Yes"
5070
51−#: qml/Components/Dialogs.qml:94
71+#: qml/Components/Dialogs.qml:98
5272msgid "Shut down"
5373msgstr "Shut down"
5474
55−#: qml/Components/Dialogs.qml:95
75+#: qml/Components/Dialogs.qml:99
5676msgid "Are you sure you want to shut down?"
5777msgstr "Are you sure you want to shut down?"
5878
59−#: qml/Components/Dialogs.qml:119
79+#: qml/Components/Dialogs.qml:123
6080msgid "Reboot"
6181msgstr "Reboot"
6282
63−#: qml/Components/Dialogs.qml:120
83+#: qml/Components/Dialogs.qml:124
6484msgid "Are you sure you want to reboot?"
6585msgstr "Are you sure you want to reboot?"
6686
67−#: qml/Components/Dialogs.qml:144
87+#: qml/Components/Dialogs.qml:148
6888msgid "Power"
6989msgstr "Power"
7090
71−#: qml/Components/Dialogs.qml:145
91+#: qml/Components/Dialogs.qml:149
7292msgid ""
7393"Are you sure you would like\n"
7494"to power off?"
@@ -76,15 +96,15 @@ msgstr ""
7696"Are you sure you would like\n"
7797"to power off?"
7898
79−#: qml/Components/Dialogs.qml:147
99+#: qml/Components/Dialogs.qml:151
80100msgid "Power off"
81101msgstr "Power off"
82102
83−#: qml/Components/Dialogs.qml:157
103+#: qml/Components/Dialogs.qml:161
84104msgid "Restart"
85105msgstr "Restart"
86106
87−#: qml/Components/Dialogs.qml:167
107+#: qml/Components/Dialogs.qml:171
88108msgid "Cancel"
89109msgstr "Cancel"
90110
@@ -116,19 +136,19 @@ msgstr "Close"
116136msgid "Swipe up again to close the settings screen"
117137msgstr "Swipe up again to close the settings screen"
118138
119−#: qml/Components/EdgeDemo.qml:198
139+#: qml/Components/EdgeDemo.qml:201
120140msgid "Left edge"
121141msgstr "Left edge"
122142
123−#: qml/Components/EdgeDemo.qml:199
143+#: qml/Components/EdgeDemo.qml:202
124144msgid "Swipe from the left to reveal the launcher for quick access to apps"
125145msgstr "Swipe from the left to reveal the launcher for quick access to apps"
126146
127−#: qml/Components/EdgeDemo.qml:226
147+#: qml/Components/EdgeDemo.qml:229
128148msgid "Well done"
129149msgstr "Well done"
130150
131−#: qml/Components/EdgeDemo.qml:227
151+#: qml/Components/EdgeDemo.qml:230
132152msgid ""
133153"You have now mastered the edge gestures and can start using the "
134154"phone<br><br>Tap on the screen to start"
@@ -136,40 +156,27 @@ msgstr ""
136156"You have now mastered the edge gestures and can start using the "
137157"phone<br><br>Tap on the screen to start"
138158
139−#: qml/Components/Lockscreen.qml:167
140−msgid "Please wait"
141−msgstr "Please wait"
142−
143−#: qml/Components/Lockscreen.qml:172
144−msgid "Too many incorrect attempts"
145−msgstr "Too many incorrect attempts"
159+#: qml/Components/Lockscreen.qml:223
160+msgid "Return to Call"
161+msgstr "Return to Call"
146162
147−#: qml/Components/Lockscreen.qml:206
163+#: qml/Components/Lockscreen.qml:223
148164msgid "Emergency Call"
149165msgstr "Emergency Call"
150166
151−#: qml/Components/Lockscreen.qml:226
167+#: qml/Components/Lockscreen.qml:255
152168msgid "OK"
153169msgstr "OK"
154170
155−#: qml/Components/PassphraseLockscreen.qml:61
156−#, qt-format
157−msgid "Hello %1"
158−msgstr "Hello %1"
159−
160−#: qml/Components/PassphraseLockscreen.qml:61
161−msgid "Hello"
162−msgstr "Hello"
163−
164−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
171+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
165172msgid "See less"
166173msgstr "See less"
167174
168−#: qml/Dash/GenericScopeView.qml:411
175+#: qml/Dash/GenericScopeView.qml:434
169176msgid "See all"
170177msgstr "See all"
171178
172−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
179+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
173180#: qml/Panel/SearchIndicator.qml:27
174181msgid "Search"
175182msgstr "Search"
@@ -206,15 +213,23 @@ msgstr "Add a review"
206213msgid "Send"
207214msgstr "Send"
208215
209−#: qml/Dash/ScopesOverview.qml:206
216+#: qml/Dash/PullToRefreshScopeStyle.qml:55
217+msgid "Pull to refresh…"
218+msgstr "Pull to refresh…"
219+
220+#: qml/Dash/PullToRefreshScopeStyle.qml:60
221+msgid "Release to refresh…"
222+msgstr "Release to refresh…"
223+
224+#: qml/Dash/ScopesOverview.qml:215
210225msgid "Manage Scopes"
211226msgstr "Manage Scopes"
212227
213−#: qml/Dash/ScopesOverview.qml:428
228+#: qml/Dash/ScopesOverview.qml:437
214229msgid "Done"
215230msgstr "Done"
216231
217−#: qml/Dash/ScopesOverview.qml:454
232+#: qml/Dash/ScopesOverview.qml:463
218233msgid "Store"
219234msgstr "Store"
220235
@@ -226,9 +241,9 @@ msgstr "Favourites"
226241msgid "All"
227242msgstr "All"
228243
229−#: qml/Greeter/Greeter.qml:157
230−msgid "Swipe to unlock"
231−msgstr "Swipe to unlock"
244+#: qml/Greeter/Greeter.qml:174
245+msgid "Unlock"
246+msgstr "Unlock"
232247
233248#: qml/Hud/HudParametrizedActionsPage.qml:139
234249msgid "Confirm"
@@ -250,51 +265,43 @@ msgstr "Speak Now..."
250265msgid "Speaking..."
251266msgstr "Speaking..."
252267
253−#: qml/Notifications/NotificationMenuItemFactory.qml:108
268+#: qml/Notifications/NotificationMenuItemFactory.qml:116
254269msgid "Show password"
255270msgstr "Show password"
256271
257−#: qml/Notifications/NotificationMenuItemFactory.qml:124
258−msgid "Enter SIM PIN"
259−msgstr "Enter SIM PIN"
260−
261−#: qml/Notifications/NotificationMenuItemFactory.qml:125
262−msgid "Sorry, incorrect PIN"
263−msgstr "Sorry, incorrect PIN"
264−
265−#: qml/Panel/ActiveCallHint.qml:77
272+#: qml/Panel/ActiveCallHint.qml:79
266273msgid "Tap to return to call..."
267274msgstr "Tap to return to call..."
268275
269−#: qml/Panel/ActiveCallHint.qml:90
276+#: qml/Panel/ActiveCallHint.qml:92
270277msgid "Conference"
271278msgstr "Conference"
272279
273−#: qml/Panel/Indicators/MenuItemFactory.qml:600
280+#: qml/Panel/Indicators/MenuItemFactory.qml:615
274281msgid "Nothing is playing"
275282msgstr "Nothing is playing"
276283
277−#: qml/Panel/Indicators/MenuItemFactory.qml:748
284+#: qml/Panel/Indicators/MenuItemFactory.qml:763
278285msgid "In queue…"
279286msgstr "In queue…"
280287
281−#: qml/Panel/Indicators/MenuItemFactory.qml:752
288+#: qml/Panel/Indicators/MenuItemFactory.qml:767
282289msgid "Downloading"
283290msgstr "Downloading"
284291
285−#: qml/Panel/Indicators/MenuItemFactory.qml:754
292+#: qml/Panel/Indicators/MenuItemFactory.qml:769
286293msgid "Paused, tap to resume"
287294msgstr "Paused, tap to resume"
288295
289−#: qml/Panel/Indicators/MenuItemFactory.qml:756
296+#: qml/Panel/Indicators/MenuItemFactory.qml:771
290297msgid "Canceled"
291298msgstr "Cancelled"
292299
293−#: qml/Panel/Indicators/MenuItemFactory.qml:758
300+#: qml/Panel/Indicators/MenuItemFactory.qml:773
294301msgid "Finished"
295302msgstr "Finished"
296303
297−#: qml/Panel/Indicators/MenuItemFactory.qml:760
304+#: qml/Panel/Indicators/MenuItemFactory.qml:775
298305msgid "Failed, tap to retry"
299306msgstr "Failed, tap to retry"
300307
@@ -306,45 +313,49 @@ msgstr "Unlock SIM"
306313msgid "Roaming"
307314msgstr "Roaming"
308315
309−#: qml/Shell.qml:320
310−msgid "Enter your passphrase"
311−msgstr "Enter your passphrase"
316+#: qml/Shell.qml:381
317+msgid "Enter passphrase"
318+msgstr "Enter passphrase"
312319
313−#: qml/Shell.qml:321
320+#: qml/Shell.qml:382
314321msgid "Sorry, incorrect passphrase"
315322msgstr "Sorry, incorrect passphrase"
316323
317−#: qml/Shell.qml:323
318−msgid "Enter your passcode"
319−msgstr "Enter your passcode"
324+#: qml/Shell.qml:383
325+msgid "Please re-enter"
326+msgstr "Please re-enter"
327+
328+#: qml/Shell.qml:385
329+msgid "Enter passcode"
330+msgstr "Enter passcode"
320331
321−#: qml/Shell.qml:324
332+#: qml/Shell.qml:386
322333msgid "Sorry, incorrect passcode"
323334msgstr "Sorry, incorrect passcode"
324335
325−#: qml/Shell.qml:327
336+#: qml/Shell.qml:389
326337#, qt-format
327−msgid "Enter your %1"
328−msgstr "Enter your %1"
338+msgid "Enter %1"
339+msgstr "Enter %1"
329340
330−#: qml/Shell.qml:328
341+#: qml/Shell.qml:390
331342#, qt-format
332343msgid "Sorry, incorrect %1"
333344msgstr "Sorry, incorrect %1"
334345
335−#: qml/Shell.qml:363
346+#: qml/Shell.qml:431
336347msgid "Sorry, incorrect passphrase."
337348msgstr "Sorry, incorrect passphrase."
338349
339−#: qml/Shell.qml:364
350+#: qml/Shell.qml:432
340351msgid "Sorry, incorrect passcode."
341352msgstr "Sorry, incorrect passcode."
342353
343−#: qml/Shell.qml:365
354+#: qml/Shell.qml:433
344355msgid "This will be your last attempt."
345356msgstr "This will be your last attempt."
346357
347−#: qml/Shell.qml:367
358+#: qml/Shell.qml:435
348359msgid ""
349360"If passphrase is entered incorrectly, your phone will conduct a factory "
350361"reset and all personal data will be deleted."
@@ -352,13 +363,10 @@ msgstr ""
352363"If passphrase is entered incorrectly, your phone will conduct a factory "
353364"reset and all personal data will be deleted."
354365
355−#: qml/Shell.qml:368
366+#: qml/Shell.qml:436
356367msgid ""
357368"If passcode is entered incorrectly, your phone will conduct a factory reset "
358369"and all personal data will be deleted."
359370msgstr ""
360371"If passcode is entered incorrectly, your phone will conduct a factory reset "
361372"and all personal data will be deleted."
362−
363−#~ msgid "Manage Dash"
364−#~ msgstr "Manage Dash"
po/eo.po+90−79
@@ -7,15 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
1111"PO-Revision-Date: 2013-06-26 22:35+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Esperanto <eo@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:19+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
18+"X-Launchpad-Export-Date: 2014-11-06 06:40+0000\n"
19+"X-Generator: Launchpad (build 17223)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
@@ -30,59 +31,78 @@ msgstr ""
3031msgid "Unpin shortcut"
3132msgstr ""
3233
33−#: qml/Components/Dialogs.qml:70
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+
53+#: qml/Components/Dialogs.qml:74
3454msgid "Log out"
3555msgstr ""
3656
37−#: qml/Components/Dialogs.qml:71
57+#: qml/Components/Dialogs.qml:75
3858msgid "Are you sure you want to log out?"
3959msgstr ""
4060
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
61+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
62+#: qml/Components/Dialogs.qml:126
4363msgid "No"
4464msgstr ""
4565
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
66+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
67+#: qml/Components/Dialogs.qml:133
4868msgid "Yes"
4969msgstr ""
5070
51−#: qml/Components/Dialogs.qml:94
71+#: qml/Components/Dialogs.qml:98
5272msgid "Shut down"
5373msgstr ""
5474
55−#: qml/Components/Dialogs.qml:95
75+#: qml/Components/Dialogs.qml:99
5676msgid "Are you sure you want to shut down?"
5777msgstr ""
5878
59−#: qml/Components/Dialogs.qml:119
79+#: qml/Components/Dialogs.qml:123
6080msgid "Reboot"
6181msgstr ""
6282
63−#: qml/Components/Dialogs.qml:120
83+#: qml/Components/Dialogs.qml:124
6484msgid "Are you sure you want to reboot?"
6585msgstr ""
6686
67−#: qml/Components/Dialogs.qml:144
87+#: qml/Components/Dialogs.qml:148
6888msgid "Power"
6989msgstr ""
7090
71−#: qml/Components/Dialogs.qml:145
91+#: qml/Components/Dialogs.qml:149
7292msgid ""
7393"Are you sure you would like\n"
7494"to power off?"
7595msgstr ""
7696
77−#: qml/Components/Dialogs.qml:147
97+#: qml/Components/Dialogs.qml:151
7898msgid "Power off"
7999msgstr ""
80100
81−#: qml/Components/Dialogs.qml:157
101+#: qml/Components/Dialogs.qml:161
82102msgid "Restart"
83103msgstr ""
84104
85−#: qml/Components/Dialogs.qml:167
105+#: qml/Components/Dialogs.qml:171
86106msgid "Cancel"
87107msgstr ""
88108
@@ -114,58 +134,45 @@ msgstr ""
114134msgid "Swipe up again to close the settings screen"
115135msgstr ""
116136
117−#: qml/Components/EdgeDemo.qml:198
137+#: qml/Components/EdgeDemo.qml:201
118138msgid "Left edge"
119139msgstr ""
120140
121−#: qml/Components/EdgeDemo.qml:199
141+#: qml/Components/EdgeDemo.qml:202
122142msgid "Swipe from the left to reveal the launcher for quick access to apps"
123143msgstr ""
124144
125−#: qml/Components/EdgeDemo.qml:226
145+#: qml/Components/EdgeDemo.qml:229
126146msgid "Well done"
127147msgstr ""
128148
129−#: qml/Components/EdgeDemo.qml:227
149+#: qml/Components/EdgeDemo.qml:230
130150msgid ""
131151"You have now mastered the edge gestures and can start using the "
132152"phone<br><br>Tap on the screen to start"
133153msgstr ""
134154
135−#: qml/Components/Lockscreen.qml:167
136−msgid "Please wait"
137−msgstr ""
138−
139−#: qml/Components/Lockscreen.qml:172
140−msgid "Too many incorrect attempts"
155+#: qml/Components/Lockscreen.qml:223
156+msgid "Return to Call"
141157msgstr ""
142158
143−#: qml/Components/Lockscreen.qml:206
159+#: qml/Components/Lockscreen.qml:223
144160msgid "Emergency Call"
145161msgstr ""
146162
147−#: qml/Components/Lockscreen.qml:226
163+#: qml/Components/Lockscreen.qml:255
148164msgid "OK"
149165msgstr ""
150166
151−#: qml/Components/PassphraseLockscreen.qml:61
152−#, qt-format
153−msgid "Hello %1"
154−msgstr ""
155−
156−#: qml/Components/PassphraseLockscreen.qml:61
157−msgid "Hello"
158−msgstr ""
159−
160−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
167+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
161168msgid "See less"
162169msgstr ""
163170
164−#: qml/Dash/GenericScopeView.qml:411
171+#: qml/Dash/GenericScopeView.qml:434
165172msgid "See all"
166173msgstr ""
167174
168−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
175+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
169176#: qml/Panel/SearchIndicator.qml:27
170177msgid "Search"
171178msgstr ""
@@ -202,15 +209,23 @@ msgstr ""
202209msgid "Send"
203210msgstr ""
204211
205−#: qml/Dash/ScopesOverview.qml:206
212+#: qml/Dash/PullToRefreshScopeStyle.qml:55
213+msgid "Pull to refresh…"
214+msgstr ""
215+
216+#: qml/Dash/PullToRefreshScopeStyle.qml:60
217+msgid "Release to refresh…"
218+msgstr ""
219+
220+#: qml/Dash/ScopesOverview.qml:215
206221msgid "Manage Scopes"
207222msgstr ""
208223
209−#: qml/Dash/ScopesOverview.qml:428
224+#: qml/Dash/ScopesOverview.qml:437
210225msgid "Done"
211226msgstr ""
212227
213−#: qml/Dash/ScopesOverview.qml:454
228+#: qml/Dash/ScopesOverview.qml:463
214229msgid "Store"
215230msgstr ""
216231
@@ -222,8 +237,8 @@ msgstr ""
222237msgid "All"
223238msgstr ""
224239
225−#: qml/Greeter/Greeter.qml:157
226−msgid "Swipe to unlock"
240+#: qml/Greeter/Greeter.qml:174
241+msgid "Unlock"
227242msgstr ""
228243
229244#: qml/Hud/HudParametrizedActionsPage.qml:139
@@ -246,51 +261,43 @@ msgstr ""
246261msgid "Speaking..."
247262msgstr ""
248263
249−#: qml/Notifications/NotificationMenuItemFactory.qml:108
264+#: qml/Notifications/NotificationMenuItemFactory.qml:116
250265msgid "Show password"
251266msgstr ""
252267
253−#: qml/Notifications/NotificationMenuItemFactory.qml:124
254−msgid "Enter SIM PIN"
255−msgstr ""
256−
257−#: qml/Notifications/NotificationMenuItemFactory.qml:125
258−msgid "Sorry, incorrect PIN"
259−msgstr ""
260−
261−#: qml/Panel/ActiveCallHint.qml:77
268+#: qml/Panel/ActiveCallHint.qml:79
262269msgid "Tap to return to call..."
263270msgstr ""
264271
265−#: qml/Panel/ActiveCallHint.qml:90
272+#: qml/Panel/ActiveCallHint.qml:92
266273msgid "Conference"
267274msgstr ""
268275
269−#: qml/Panel/Indicators/MenuItemFactory.qml:600
276+#: qml/Panel/Indicators/MenuItemFactory.qml:615
270277msgid "Nothing is playing"
271278msgstr ""
272279
273−#: qml/Panel/Indicators/MenuItemFactory.qml:748
280+#: qml/Panel/Indicators/MenuItemFactory.qml:763
274281msgid "In queue…"
275282msgstr ""
276283
277−#: qml/Panel/Indicators/MenuItemFactory.qml:752
284+#: qml/Panel/Indicators/MenuItemFactory.qml:767
278285msgid "Downloading"
279286msgstr ""
280287
281−#: qml/Panel/Indicators/MenuItemFactory.qml:754
288+#: qml/Panel/Indicators/MenuItemFactory.qml:769
282289msgid "Paused, tap to resume"
283290msgstr ""
284291
285−#: qml/Panel/Indicators/MenuItemFactory.qml:756
292+#: qml/Panel/Indicators/MenuItemFactory.qml:771
286293msgid "Canceled"
287294msgstr ""
288295
289−#: qml/Panel/Indicators/MenuItemFactory.qml:758
296+#: qml/Panel/Indicators/MenuItemFactory.qml:773
290297msgid "Finished"
291298msgstr ""
292299
293−#: qml/Panel/Indicators/MenuItemFactory.qml:760
300+#: qml/Panel/Indicators/MenuItemFactory.qml:775
294301msgid "Failed, tap to retry"
295302msgstr ""
296303
@@ -302,51 +309,55 @@ msgstr ""
302309msgid "Roaming"
303310msgstr ""
304311
305−#: qml/Shell.qml:320
306−msgid "Enter your passphrase"
312+#: qml/Shell.qml:381
313+msgid "Enter passphrase"
307314msgstr ""
308315
309−#: qml/Shell.qml:321
316+#: qml/Shell.qml:382
310317msgid "Sorry, incorrect passphrase"
311318msgstr ""
312319
313−#: qml/Shell.qml:323
314−msgid "Enter your passcode"
320+#: qml/Shell.qml:383
321+msgid "Please re-enter"
322+msgstr ""
323+
324+#: qml/Shell.qml:385
325+msgid "Enter passcode"
315326msgstr ""
316327
317−#: qml/Shell.qml:324
328+#: qml/Shell.qml:386
318329msgid "Sorry, incorrect passcode"
319330msgstr ""
320331
321−#: qml/Shell.qml:327
332+#: qml/Shell.qml:389
322333#, qt-format
323−msgid "Enter your %1"
334+msgid "Enter %1"
324335msgstr ""
325336
326−#: qml/Shell.qml:328
337+#: qml/Shell.qml:390
327338#, qt-format
328339msgid "Sorry, incorrect %1"
329340msgstr ""
330341
331−#: qml/Shell.qml:363
342+#: qml/Shell.qml:431
332343msgid "Sorry, incorrect passphrase."
333344msgstr ""
334345
335−#: qml/Shell.qml:364
346+#: qml/Shell.qml:432
336347msgid "Sorry, incorrect passcode."
337348msgstr ""
338349
339−#: qml/Shell.qml:365
350+#: qml/Shell.qml:433
340351msgid "This will be your last attempt."
341352msgstr ""
342353
343−#: qml/Shell.qml:367
354+#: qml/Shell.qml:435
344355msgid ""
345356"If passphrase is entered incorrectly, your phone will conduct a factory "
346357"reset and all personal data will be deleted."
347358msgstr ""
348359
349−#: qml/Shell.qml:368
360+#: qml/Shell.qml:436
350361msgid ""
351362"If passcode is entered incorrectly, your phone will conduct a factory reset "
352363"and all personal data will be deleted."
po/es.po+104−92
@@ -7,68 +7,92 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
11−"PO-Revision-Date: 2014-09-29 20:25+0000\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
11+"PO-Revision-Date: 2014-11-05 14:59+0000\n"
1212"Last-Translator: Víctor R. Ruiz <Unknown>\n"
1313"Language-Team: Spanish <es@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-30 07:10+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
18+"X-Launchpad-Export-Date: 2014-11-06 06:40+0000\n"
19+"X-Generator: Launchpad (build 17223)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
2223msgstr "Contraseña: "
2324
24−#: plugins/Unity/Launcher/launcheritem.cpp:44
25−#: plugins/Unity/Launcher/launcheritem.cpp:74
25+#: plugins/Unity/Launcher/launcheritem.cpp:45
26+#: plugins/Unity/Launcher/launcheritem.cpp:91
2627msgid "Pin shortcut"
2728msgstr "Anclar"
2829
29−#: plugins/Unity/Launcher/launcheritem.cpp:74
30+#: plugins/Unity/Launcher/launcheritem.cpp:91
3031msgid "Unpin shortcut"
3132msgstr "Desanclar"
3233
33−#: qml/Components/Dialogs.qml:70
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+
57+#: qml/Components/Dialogs.qml:74
3458msgid "Log out"
3559msgstr "Cerrar la sesión"
3660
37−#: qml/Components/Dialogs.qml:71
61+#: qml/Components/Dialogs.qml:75
3862msgid "Are you sure you want to log out?"
3963msgstr "̉¿Está seguro de que quiere cerrar la sesión?"
4064
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
65+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
66+#: qml/Components/Dialogs.qml:126
4367msgid "No"
4468msgstr "No"
4569
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
70+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
71+#: qml/Components/Dialogs.qml:133
4872msgid "Yes"
4973msgstr "Sí"
5074
51−#: qml/Components/Dialogs.qml:94
75+#: qml/Components/Dialogs.qml:98
5276msgid "Shut down"
5377msgstr "Apagar"
5478
55−#: qml/Components/Dialogs.qml:95
79+#: qml/Components/Dialogs.qml:99
5680msgid "Are you sure you want to shut down?"
5781msgstr "¿Está seguro de que quiere apagar?"
5882
59−#: qml/Components/Dialogs.qml:119
83+#: qml/Components/Dialogs.qml:123
6084msgid "Reboot"
6185msgstr "Reiniciar"
6286
63−#: qml/Components/Dialogs.qml:120
87+#: qml/Components/Dialogs.qml:124
6488msgid "Are you sure you want to reboot?"
6589msgstr "¿Esta seguro de que quiere reiniciar?"
6690
67−#: qml/Components/Dialogs.qml:144
91+#: qml/Components/Dialogs.qml:148
6892msgid "Power"
69−msgstr "Encendido"
93+msgstr "Apagar"
7094
71−#: qml/Components/Dialogs.qml:145
95+#: qml/Components/Dialogs.qml:149
7296msgid ""
7397"Are you sure you would like\n"
7498"to power off?"
@@ -76,15 +100,15 @@ msgstr ""
76100"¿Está seguro de que quiere\n"
77101"apagar?"
78102
79−#: qml/Components/Dialogs.qml:147
103+#: qml/Components/Dialogs.qml:151
80104msgid "Power off"
81105msgstr "Apagar"
82106
83−#: qml/Components/Dialogs.qml:157
107+#: qml/Components/Dialogs.qml:161
84108msgid "Restart"
85109msgstr "Reiniciar"
86110
87−#: qml/Components/Dialogs.qml:167
111+#: qml/Components/Dialogs.qml:171
88112msgid "Cancel"
89113msgstr "Cancelar"
90114
@@ -117,21 +141,21 @@ msgstr "Cerrar"
117141msgid "Swipe up again to close the settings screen"
118142msgstr "Deslice hacia arriba para cerrar la pantalla de configuración"
119143
120−#: qml/Components/EdgeDemo.qml:198
144+#: qml/Components/EdgeDemo.qml:201
121145msgid "Left edge"
122146msgstr "Borde izquierdo"
123147
124−#: qml/Components/EdgeDemo.qml:199
148+#: qml/Components/EdgeDemo.qml:202
125149msgid "Swipe from the left to reveal the launcher for quick access to apps"
126150msgstr ""
127151"Deslice el dedo desde la izquierda para mostrar el lanzador y acceder "
128152"rápidamente a las aplicaciones"
129153
130−#: qml/Components/EdgeDemo.qml:226
154+#: qml/Components/EdgeDemo.qml:229
131155msgid "Well done"
132156msgstr "Bien hecho"
133157
134−#: qml/Components/EdgeDemo.qml:227
158+#: qml/Components/EdgeDemo.qml:230
135159msgid ""
136160"You have now mastered the edge gestures and can start using the "
137161"phone<br><br>Tap on the screen to start"
@@ -139,40 +163,27 @@ msgstr ""
139163"Ahora domina los gestos de los bordes y puede usar el teléfono<br><br>Toque "
140164"la pantalla para comenzar"
141165
142−#: qml/Components/Lockscreen.qml:167
143−msgid "Please wait"
144−msgstr "Espere un momento"
145−
146−#: qml/Components/Lockscreen.qml:172
147−msgid "Too many incorrect attempts"
148−msgstr "Demasiados intentos incorrectos"
166+#: qml/Components/Lockscreen.qml:223
167+msgid "Return to Call"
168+msgstr "Volver a la llamada"
149169
150−#: qml/Components/Lockscreen.qml:206
170+#: qml/Components/Lockscreen.qml:223
151171msgid "Emergency Call"
152172msgstr "Llamada de emergencia"
153173
154−#: qml/Components/Lockscreen.qml:226
174+#: qml/Components/Lockscreen.qml:255
155175msgid "OK"
156176msgstr "Aceptar"
157177
158−#: qml/Components/PassphraseLockscreen.qml:61
159−#, qt-format
160−msgid "Hello %1"
161−msgstr "Hola, %1"
162−
163−#: qml/Components/PassphraseLockscreen.qml:61
164−msgid "Hello"
165−msgstr "Hola"
166−
167−#: qml/Dash/GenericScopeView.qml:364 qml/Dash/GenericScopeView.qml:483
178+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
168179msgid "See less"
169180msgstr "Ver menos"
170181
171−#: qml/Dash/GenericScopeView.qml:364
182+#: qml/Dash/GenericScopeView.qml:434
172183msgid "See all"
173184msgstr "Ver todo"
174185
175−#: qml/Dash/GenericScopeView.qml:427 qml/Dash/PageHeader.qml:258
186+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
176187#: qml/Panel/SearchIndicator.qml:27
177188msgid "Search"
178189msgstr "Buscar"
@@ -209,15 +220,23 @@ msgstr "Añadir una reseña"
209220msgid "Send"
210221msgstr "Enviar"
211222
212−#: qml/Dash/ScopesOverview.qml:206
223+#: qml/Dash/PullToRefreshScopeStyle.qml:55
224+msgid "Pull to refresh…"
225+msgstr "Deslice para actualizar…"
226+
227+#: qml/Dash/PullToRefreshScopeStyle.qml:60
228+msgid "Release to refresh…"
229+msgstr "Suelte para actualizar…"
230+
231+#: qml/Dash/ScopesOverview.qml:215
213232msgid "Manage Scopes"
214233msgstr "Administrar ámbitos"
215234
216−#: qml/Dash/ScopesOverview.qml:428
235+#: qml/Dash/ScopesOverview.qml:437
217236msgid "Done"
218237msgstr "Hecho"
219238
220−#: qml/Dash/ScopesOverview.qml:454
239+#: qml/Dash/ScopesOverview.qml:463
221240msgid "Store"
222241msgstr "Tienda"
223242
@@ -229,9 +248,9 @@ msgstr "Favoritos"
229248msgid "All"
230249msgstr "Todo"
231250
232−#: qml/Greeter/Greeter.qml:157
233−msgid "Swipe to unlock"
234−msgstr "Deslice para desbloquear"
251+#: qml/Greeter/Greeter.qml:174
252+msgid "Unlock"
253+msgstr "Desbloquear"
235254
236255#: qml/Hud/HudParametrizedActionsPage.qml:139
237256msgid "Confirm"
@@ -253,51 +272,43 @@ msgstr "Hable ahora…"
253272msgid "Speaking..."
254273msgstr "Hablando…"
255274
256−#: qml/Notifications/NotificationMenuItemFactory.qml:108
275+#: qml/Notifications/NotificationMenuItemFactory.qml:116
257276msgid "Show password"
258277msgstr "Mostrar contraseña"
259278
260−#: qml/Notifications/NotificationMenuItemFactory.qml:124
261−msgid "Enter SIM PIN"
262−msgstr "Escriba el PIN de la SIM"
263−
264−#: qml/Notifications/NotificationMenuItemFactory.qml:125
265−msgid "Sorry, incorrect PIN"
266−msgstr "El PIN es incorrecto"
267−
268−#: qml/Panel/ActiveCallHint.qml:77
279+#: qml/Panel/ActiveCallHint.qml:79
269280msgid "Tap to return to call..."
270281msgstr "Toque para volver a llamar..."
271282
272−#: qml/Panel/ActiveCallHint.qml:90
283+#: qml/Panel/ActiveCallHint.qml:92
273284msgid "Conference"
274285msgstr "Conferencia"
275286
276−#: qml/Panel/Indicators/MenuItemFactory.qml:600
287+#: qml/Panel/Indicators/MenuItemFactory.qml:615
277288msgid "Nothing is playing"
278289msgstr "Ningún contenido en reproducción"
279290
280−#: qml/Panel/Indicators/MenuItemFactory.qml:651
291+#: qml/Panel/Indicators/MenuItemFactory.qml:763
281292msgid "In queue…"
282293msgstr "En espera…"
283294
284−#: qml/Panel/Indicators/MenuItemFactory.qml:655
295+#: qml/Panel/Indicators/MenuItemFactory.qml:767
285296msgid "Downloading"
286297msgstr "Descargando"
287298
288−#: qml/Panel/Indicators/MenuItemFactory.qml:657
299+#: qml/Panel/Indicators/MenuItemFactory.qml:769
289300msgid "Paused, tap to resume"
290301msgstr "Pausado, toque para reanudar"
291302
292−#: qml/Panel/Indicators/MenuItemFactory.qml:659
303+#: qml/Panel/Indicators/MenuItemFactory.qml:771
293304msgid "Canceled"
294305msgstr "Cancelado"
295306
296−#: qml/Panel/Indicators/MenuItemFactory.qml:661
307+#: qml/Panel/Indicators/MenuItemFactory.qml:773
297308msgid "Finished"
298309msgstr "Finalizado"
299310
300−#: qml/Panel/Indicators/MenuItemFactory.qml:663
311+#: qml/Panel/Indicators/MenuItemFactory.qml:775
301312msgid "Failed, tap to retry"
302313msgstr "Falló, toque para reintentar"
303314
@@ -309,45 +320,49 @@ msgstr "Desbloquear SIM"
309320msgid "Roaming"
310321msgstr "Itinerancia"
311322
312−#: qml/Shell.qml:292
313−msgid "Enter your passphrase"
314−msgstr "Escriba su contraseña"
323+#: qml/Shell.qml:381
324+msgid "Enter passphrase"
325+msgstr "Introduzca la contraseña"
315326
316−#: qml/Shell.qml:293
327+#: qml/Shell.qml:382
317328msgid "Sorry, incorrect passphrase"
318329msgstr "La contraseña es incorrecta"
319330
320−#: qml/Shell.qml:295
321−msgid "Enter your passcode"
322−msgstr "Escriba su código de acceso"
331+#: qml/Shell.qml:383
332+msgid "Please re-enter"
333+msgstr "Reintroduzca"
323334
324−#: qml/Shell.qml:296
335+#: qml/Shell.qml:385
336+msgid "Enter passcode"
337+msgstr "Introduzca el código"
338+
339+#: qml/Shell.qml:386
325340msgid "Sorry, incorrect passcode"
326341msgstr "El código es incorrecto"
327342
328−#: qml/Shell.qml:299
343+#: qml/Shell.qml:389
329344#, qt-format
330−msgid "Enter your %1"
331−msgstr "Introduzca su %1"
345+msgid "Enter %1"
346+msgstr "Introduzca %1"
332347
333−#: qml/Shell.qml:300
348+#: qml/Shell.qml:390
334349#, qt-format
335350msgid "Sorry, incorrect %1"
336351msgstr "Incorrecto (%1)"
337352
338−#: qml/Shell.qml:335
353+#: qml/Shell.qml:431
339354msgid "Sorry, incorrect passphrase."
340355msgstr "La contraseña es incorrecta."
341356
342−#: qml/Shell.qml:336
357+#: qml/Shell.qml:432
343358msgid "Sorry, incorrect passcode."
344359msgstr "Código de acceso incorrecto."
345360
346−#: qml/Shell.qml:337
361+#: qml/Shell.qml:433
347362msgid "This will be your last attempt."
348363msgstr "Este será su último intento."
349364
350−#: qml/Shell.qml:339
365+#: qml/Shell.qml:435
351366msgid ""
352367"If passphrase is entered incorrectly, your phone will conduct a factory "
353368"reset and all personal data will be deleted."
@@ -355,13 +370,10 @@ msgstr ""
355370"Si se introduce la frase incorrectamente, el teléfono volverá a la "
356371"configuración de fábrica y se perderán todos los datos personales."
357372
358−#: qml/Shell.qml:340
373+#: qml/Shell.qml:436
359374msgid ""
360375"If passcode is entered incorrectly, your phone will conduct a factory reset "
361376"and all personal data will be deleted."
362377msgstr ""
363378"Si se introduce el código incorrectamente, el teléfono volverá a la "
364379"configuración de fábrica y se perderán todos los datos personales."
365−
366−#~ msgid "Manage Dash"
367−#~ msgstr "Gestionar tablero"
po/eu.po+100−89
@@ -7,15 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
11−"PO-Revision-Date: 2014-09-27 12:47+0000\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
11+"PO-Revision-Date: 2014-10-07 19:21+0000\n"
1212"Last-Translator: Ibai Oihanguren Sala <Unknown>\n"
1313"Language-Team: Basque <eu@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:19+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
18+"X-Launchpad-Export-Date: 2014-11-06 06:39+0000\n"
19+"X-Generator: Launchpad (build 17223)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
@@ -30,59 +31,81 @@ msgstr "Ainguratu lasterbidea"
3031msgid "Unpin shortcut"
3132msgstr "Askatu lasterbidea"
3233
33−#: qml/Components/Dialogs.qml:70
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+
56+#: qml/Components/Dialogs.qml:74
3457msgid "Log out"
3558msgstr "Amaitu saioa"
3659
37−#: qml/Components/Dialogs.qml:71
60+#: qml/Components/Dialogs.qml:75
3861msgid "Are you sure you want to log out?"
3962msgstr "Ziur saioa amaitu nahi duzula?"
4063
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
64+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
65+#: qml/Components/Dialogs.qml:126
4366msgid "No"
4467msgstr "Ez"
4568
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
69+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
70+#: qml/Components/Dialogs.qml:133
4871msgid "Yes"
4972msgstr "Bai"
5073
51−#: qml/Components/Dialogs.qml:94
74+#: qml/Components/Dialogs.qml:98
5275msgid "Shut down"
5376msgstr "Itzali"
5477
55−#: qml/Components/Dialogs.qml:95
78+#: qml/Components/Dialogs.qml:99
5679msgid "Are you sure you want to shut down?"
5780msgstr "Ziur itzali nahi duzula?"
5881
59−#: qml/Components/Dialogs.qml:119
82+#: qml/Components/Dialogs.qml:123
6083msgid "Reboot"
6184msgstr "Berrabiarazi"
6285
63−#: qml/Components/Dialogs.qml:120
86+#: qml/Components/Dialogs.qml:124
6487msgid "Are you sure you want to reboot?"
6588msgstr "Ziur berrabiarazi nahi duzula?"
6689
67−#: qml/Components/Dialogs.qml:144
90+#: qml/Components/Dialogs.qml:148
6891msgid "Power"
6992msgstr "Piztu/itzali"
7093
71−#: qml/Components/Dialogs.qml:145
94+#: qml/Components/Dialogs.qml:149
7295msgid ""
7396"Are you sure you would like\n"
7497"to power off?"
7598msgstr "Ziur itzali nahi duzula?"
7699
77−#: qml/Components/Dialogs.qml:147
100+#: qml/Components/Dialogs.qml:151
78101msgid "Power off"
79102msgstr "Itzali"
80103
81−#: qml/Components/Dialogs.qml:157
104+#: qml/Components/Dialogs.qml:161
82105msgid "Restart"
83106msgstr "Berrabiarazi"
84107
85−#: qml/Components/Dialogs.qml:167
108+#: qml/Components/Dialogs.qml:171
86109msgid "Cancel"
87110msgstr "Utzi"
88111
@@ -115,21 +138,21 @@ msgstr "Itxi"
115138msgid "Swipe up again to close the settings screen"
116139msgstr "Pasatu hatza berriro gora ezarpenen leihoa ixteko"
117140
118−#: qml/Components/EdgeDemo.qml:198
141+#: qml/Components/EdgeDemo.qml:201
119142msgid "Left edge"
120143msgstr "Ezkerreko ertza"
121144
122−#: qml/Components/EdgeDemo.qml:199
145+#: qml/Components/EdgeDemo.qml:202
123146msgid "Swipe from the left to reveal the launcher for quick access to apps"
124147msgstr ""
125148"Pasatu hatza ezkerretik abiarazlea erakutsi eta aplikazioak berehala eskura "
126149"izateko"
127150
128−#: qml/Components/EdgeDemo.qml:226
151+#: qml/Components/EdgeDemo.qml:229
129152msgid "Well done"
130153msgstr "Bikain"
131154
132−#: qml/Components/EdgeDemo.qml:227
155+#: qml/Components/EdgeDemo.qml:230
133156msgid ""
134157"You have now mastered the edge gestures and can start using the "
135158"phone<br><br>Tap on the screen to start"
@@ -137,40 +160,27 @@ msgstr ""
137160"Jadanik ezagutzen dituzu ertzetako keinuak, eta mugikorra erabiltzen has "
138161"zaitezke<br><br>Sakatu pantailan hasteko"
139162
140−#: qml/Components/Lockscreen.qml:167
141−msgid "Please wait"
142−msgstr "Itxaron"
143−
144−#: qml/Components/Lockscreen.qml:172
145−msgid "Too many incorrect attempts"
146−msgstr "Okerreko saiakera gehiegi"
163+#: qml/Components/Lockscreen.qml:223
164+msgid "Return to Call"
165+msgstr ""
147166
148−#: qml/Components/Lockscreen.qml:206
167+#: qml/Components/Lockscreen.qml:223
149168msgid "Emergency Call"
150169msgstr "Larrialdi-deia"
151170
152−#: qml/Components/Lockscreen.qml:226
171+#: qml/Components/Lockscreen.qml:255
153172msgid "OK"
154173msgstr "Ados"
155174
156−#: qml/Components/PassphraseLockscreen.qml:61
157−#, qt-format
158−msgid "Hello %1"
159−msgstr "Kaixo %1"
160−
161−#: qml/Components/PassphraseLockscreen.qml:61
162−msgid "Hello"
163−msgstr "Kaixo"
164−
165−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
175+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
166176msgid "See less"
167177msgstr "Ikusi gutxiago"
168178
169−#: qml/Dash/GenericScopeView.qml:411
179+#: qml/Dash/GenericScopeView.qml:434
170180msgid "See all"
171181msgstr "Ikusi guztiak"
172182
173−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
183+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
174184#: qml/Panel/SearchIndicator.qml:27
175185msgid "Search"
176186msgstr "Bilatu"
@@ -207,15 +217,23 @@ msgstr "Gehitu kritika"
207217msgid "Send"
208218msgstr "Bidali"
209219
210−#: qml/Dash/ScopesOverview.qml:206
220+#: qml/Dash/PullToRefreshScopeStyle.qml:55
221+msgid "Pull to refresh…"
222+msgstr "Tiratu freskatzeko…"
223+
224+#: qml/Dash/PullToRefreshScopeStyle.qml:60
225+msgid "Release to refresh…"
226+msgstr "Askatu freskatzeko…"
227+
228+#: qml/Dash/ScopesOverview.qml:215
211229msgid "Manage Scopes"
212230msgstr "Kudeatu eremuak"
213231
214−#: qml/Dash/ScopesOverview.qml:428
232+#: qml/Dash/ScopesOverview.qml:437
215233msgid "Done"
216234msgstr "Eginda"
217235
218−#: qml/Dash/ScopesOverview.qml:454
236+#: qml/Dash/ScopesOverview.qml:463
219237msgid "Store"
220238msgstr "Denda"
221239
@@ -227,9 +245,9 @@ msgstr "Gogokoak"
227245msgid "All"
228246msgstr "Guztiak"
229247
230−#: qml/Greeter/Greeter.qml:157
231−msgid "Swipe to unlock"
232−msgstr "Pasatu hatza desblokeatzeko"
248+#: qml/Greeter/Greeter.qml:174
249+msgid "Unlock"
250+msgstr "Desblokeatu"
233251
234252#: qml/Hud/HudParametrizedActionsPage.qml:139
235253msgid "Confirm"
@@ -251,51 +269,43 @@ msgstr "Hitz egin orain..."
251269msgid "Speaking..."
252270msgstr "Hitz egiten..."
253271
254−#: qml/Notifications/NotificationMenuItemFactory.qml:108
272+#: qml/Notifications/NotificationMenuItemFactory.qml:116
255273msgid "Show password"
256274msgstr "Erakutsi pasahitza"
257275
258−#: qml/Notifications/NotificationMenuItemFactory.qml:124
259−msgid "Enter SIM PIN"
260−msgstr "Sartu SIMaren PINa"
261−
262−#: qml/Notifications/NotificationMenuItemFactory.qml:125
263−msgid "Sorry, incorrect PIN"
264−msgstr "Sentitzen dugu, PINa okerrekoa da"
265−
266−#: qml/Panel/ActiveCallHint.qml:77
276+#: qml/Panel/ActiveCallHint.qml:79
267277msgid "Tap to return to call..."
268278msgstr "Sakatu deira itzultzeko..."
269279
270−#: qml/Panel/ActiveCallHint.qml:90
280+#: qml/Panel/ActiveCallHint.qml:92
271281msgid "Conference"
272282msgstr "Konferentzia"
273283
274−#: qml/Panel/Indicators/MenuItemFactory.qml:600
284+#: qml/Panel/Indicators/MenuItemFactory.qml:615
275285msgid "Nothing is playing"
276286msgstr "Ez dago ezer erreproduzitzen"
277287
278−#: qml/Panel/Indicators/MenuItemFactory.qml:748
288+#: qml/Panel/Indicators/MenuItemFactory.qml:763
279289msgid "In queue…"
280290msgstr "Ilaran..."
281291
282−#: qml/Panel/Indicators/MenuItemFactory.qml:752
292+#: qml/Panel/Indicators/MenuItemFactory.qml:767
283293msgid "Downloading"
284294msgstr "Deskargatzen"
285295
286−#: qml/Panel/Indicators/MenuItemFactory.qml:754
296+#: qml/Panel/Indicators/MenuItemFactory.qml:769
287297msgid "Paused, tap to resume"
288298msgstr "Pausatuta, sakatu jarraitzeko"
289299
290−#: qml/Panel/Indicators/MenuItemFactory.qml:756
300+#: qml/Panel/Indicators/MenuItemFactory.qml:771
291301msgid "Canceled"
292302msgstr "Utzita"
293303
294−#: qml/Panel/Indicators/MenuItemFactory.qml:758
304+#: qml/Panel/Indicators/MenuItemFactory.qml:773
295305msgid "Finished"
296306msgstr "Amaituta"
297307
298−#: qml/Panel/Indicators/MenuItemFactory.qml:760
308+#: qml/Panel/Indicators/MenuItemFactory.qml:775
299309msgid "Failed, tap to retry"
300310msgstr "Huts egin du, sakatu berriro saiatzeko"
301311
@@ -307,45 +317,49 @@ msgstr "Desblokeatu SIMa"
307317msgid "Roaming"
308318msgstr "Ibiltaritza"
309319
310−#: qml/Shell.qml:320
311−msgid "Enter your passphrase"
320+#: qml/Shell.qml:381
321+msgid "Enter passphrase"
312322msgstr "Sartu pasaesaldia"
313323
314−#: qml/Shell.qml:321
324+#: qml/Shell.qml:382
315325msgid "Sorry, incorrect passphrase"
316326msgstr "Sentitzen dugu, pasaesaldia okerrekoa da"
317327
318−#: qml/Shell.qml:323
319−msgid "Enter your passcode"
328+#: qml/Shell.qml:383
329+msgid "Please re-enter"
330+msgstr "Errepikatu"
331+
332+#: qml/Shell.qml:385
333+msgid "Enter passcode"
320334msgstr "Sartu pasakodea"
321335
322−#: qml/Shell.qml:324
336+#: qml/Shell.qml:386
323337msgid "Sorry, incorrect passcode"
324−msgstr "Sentitzen dugu, pasakodea okerrekoa da"
338+msgstr "Sentitzen dugu, pasakodea okerra da"
325339
326−#: qml/Shell.qml:327
340+#: qml/Shell.qml:389
327341#, qt-format
328−msgid "Enter your %1"
342+msgid "Enter %1"
329343msgstr "Sartu %1"
330344
331−#: qml/Shell.qml:328
345+#: qml/Shell.qml:390
332346#, qt-format
333347msgid "Sorry, incorrect %1"
334−msgstr "Sentitzen dugu, %1 okerrekoa da"
348+msgstr "Sentitzen dugu, %1 okerra da"
335349
336−#: qml/Shell.qml:363
350+#: qml/Shell.qml:431
337351msgid "Sorry, incorrect passphrase."
338−msgstr "Sentitzen dugu, pasaesaldia okerrekoa da."
352+msgstr "Sentitzen dugu, pasaesaldia okerra da."
339353
340−#: qml/Shell.qml:364
354+#: qml/Shell.qml:432
341355msgid "Sorry, incorrect passcode."
342−msgstr "Sentitzen dugu, pasakodea okerrekoa da."
356+msgstr "Sentitzen dugu, pasakodea okerra da."
343357
344−#: qml/Shell.qml:365
358+#: qml/Shell.qml:433
345359msgid "This will be your last attempt."
346360msgstr "Hau duzu azken saiakera."
347361
348−#: qml/Shell.qml:367
362+#: qml/Shell.qml:435
349363msgid ""
350364"If passphrase is entered incorrectly, your phone will conduct a factory "
351365"reset and all personal data will be deleted."
@@ -353,13 +367,10 @@ msgstr ""
353367"Okerreko pasaesaldia sartzen baduzu, telefonoaren jatorrizko ezarpenak "
354368"berrezarri eta datu pertsonal guztiak ezabatuko dira."
355369
356−#: qml/Shell.qml:368
370+#: qml/Shell.qml:436
357371msgid ""
358372"If passcode is entered incorrectly, your phone will conduct a factory reset "
359373"and all personal data will be deleted."
360374msgstr ""
361375"Okerreko pasakodea sartzen baduzu, telefonoaren jatorrizko ezarpenak "
362376"berrezarri eta datu pertsonal guztiak ezabatuko dira."
363−
364−#~ msgid "Manage Dash"
365−#~ msgstr "Kudeatu abio-leihoa"
po/fa.po+98−90
@@ -7,15 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
11−"PO-Revision-Date: 2014-09-21 10:43+0000\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
11+"PO-Revision-Date: 2014-10-11 23:41+0000\n"
1212"Last-Translator: Danial Behzadi <dani.behzi@gmail.com>\n"
1313"Language-Team: Persian <fa@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:20+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=1; plural=0;\n"
18+"X-Launchpad-Export-Date: 2014-11-06 06:40+0000\n"
19+"X-Generator: Launchpad (build 17223)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
@@ -30,45 +31,64 @@ msgstr "سنجاق کردن میانبر"
3031msgid "Unpin shortcut"
3132msgstr "برداشتن سنجاق میانبر"
3233
33−#: qml/Components/Dialogs.qml:70
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+
53+#: qml/Components/Dialogs.qml:74
3454msgid "Log out"
3555msgstr "خروج از حساب"
3656
37−#: qml/Components/Dialogs.qml:71
57+#: qml/Components/Dialogs.qml:75
3858msgid "Are you sure you want to log out?"
3959msgstr "مطمئنید که می‌خواهید از حساب خارج شوید"
4060
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
61+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
62+#: qml/Components/Dialogs.qml:126
4363msgid "No"
4464msgstr "خیر"
4565
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
66+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
67+#: qml/Components/Dialogs.qml:133
4868msgid "Yes"
4969msgstr "بله"
5070
51−#: qml/Components/Dialogs.qml:94
71+#: qml/Components/Dialogs.qml:98
5272msgid "Shut down"
5373msgstr "خاموش کردن"
5474
55−#: qml/Components/Dialogs.qml:95
75+#: qml/Components/Dialogs.qml:99
5676msgid "Are you sure you want to shut down?"
5777msgstr "مطمئنید که می‌خواهید خاموش کنید؟"
5878
59−#: qml/Components/Dialogs.qml:119
79+#: qml/Components/Dialogs.qml:123
6080msgid "Reboot"
6181msgstr "راه‌اندازی مجدّد"
6282
63−#: qml/Components/Dialogs.qml:120
83+#: qml/Components/Dialogs.qml:124
6484msgid "Are you sure you want to reboot?"
6585msgstr "مطمئنید که می‌خواهید مجدّداً راه‌اندازی کنسد؟"
6686
67−#: qml/Components/Dialogs.qml:144
87+#: qml/Components/Dialogs.qml:148
6888msgid "Power"
6989msgstr "توان"
7090
71−#: qml/Components/Dialogs.qml:145
91+#: qml/Components/Dialogs.qml:149
7292msgid ""
7393"Are you sure you would like\n"
7494"to power off?"
@@ -76,15 +96,15 @@ msgstr ""
7696"آیا مطمئن هستید که\n"
7797"می‌خواهید خاموش کنید؟"
7898
79−#: qml/Components/Dialogs.qml:147
99+#: qml/Components/Dialogs.qml:151
80100msgid "Power off"
81101msgstr "خاموش کردن"
82102
83−#: qml/Components/Dialogs.qml:157
103+#: qml/Components/Dialogs.qml:161
84104msgid "Restart"
85105msgstr "شروع مجدّد"
86106
87−#: qml/Components/Dialogs.qml:167
107+#: qml/Components/Dialogs.qml:171
88108msgid "Cancel"
89109msgstr "لغو"
90110
@@ -116,19 +136,19 @@ msgstr "بستن"
116136msgid "Swipe up again to close the settings screen"
117137msgstr "برای بستن صفحه‌ی تنظیمات، دوباره به بالا بکشپد"
118138
119−#: qml/Components/EdgeDemo.qml:198
139+#: qml/Components/EdgeDemo.qml:201
120140msgid "Left edge"
121141msgstr "لبه‌ی چپ"
122142
123−#: qml/Components/EdgeDemo.qml:199
143+#: qml/Components/EdgeDemo.qml:202
124144msgid "Swipe from the left to reveal the launcher for quick access to apps"
125145msgstr "برای آشکار شدن اجراگر به منظور دست‌رسی سریع به اپ‌ها از سمت چپ بکشید"
126146
127−#: qml/Components/EdgeDemo.qml:226
147+#: qml/Components/EdgeDemo.qml:229
128148msgid "Well done"
129149msgstr "عالی بود"
130150
131−#: qml/Components/EdgeDemo.qml:227
151+#: qml/Components/EdgeDemo.qml:230
132152msgid ""
133153"You have now mastered the edge gestures and can start using the "
134154"phone<br><br>Tap on the screen to start"
@@ -136,40 +156,27 @@ msgstr ""
136156"هم اکنون در استفاده از ژست های حرکتی مهارت لازم را دارید و می‌توانید استفاده "
137157"از تلفن را آغاز کنید<br><br>برای شروع صفحه را لمس کنید"
138158
139−#: qml/Components/Lockscreen.qml:167
140−msgid "Please wait"
141−msgstr "لطفاً صبر کنید"
142−
143−#: qml/Components/Lockscreen.qml:172
144−msgid "Too many incorrect attempts"
145−msgstr "تلاش‌های ناموفّق زیاد"
159+#: qml/Components/Lockscreen.qml:223
160+msgid "Return to Call"
161+msgstr ""
146162
147−#: qml/Components/Lockscreen.qml:206
163+#: qml/Components/Lockscreen.qml:223
148164msgid "Emergency Call"
149165msgstr "تماس اضطراری"
150166
151−#: qml/Components/Lockscreen.qml:226
167+#: qml/Components/Lockscreen.qml:255
152168msgid "OK"
153169msgstr "قبول"
154170
155−#: qml/Components/PassphraseLockscreen.qml:61
156−#, qt-format
157−msgid "Hello %1"
158−msgstr "سلام %1"
159−
160−#: qml/Components/PassphraseLockscreen.qml:61
161−msgid "Hello"
162−msgstr "سلام"
163−
164−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
171+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
165172msgid "See less"
166173msgstr "کم‌تر ببینید"
167174
168−#: qml/Dash/GenericScopeView.qml:411
175+#: qml/Dash/GenericScopeView.qml:434
169176msgid "See all"
170177msgstr "دیدن همه"
171178
172−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
179+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
173180#: qml/Panel/SearchIndicator.qml:27
174181msgid "Search"
175182msgstr "جست‌وجو"
@@ -206,15 +213,23 @@ msgstr "افزودن یک بازبینی"
206213msgid "Send"
207214msgstr "ارسال"
208215
209−#: qml/Dash/ScopesOverview.qml:206
216+#: qml/Dash/PullToRefreshScopeStyle.qml:55
217+msgid "Pull to refresh…"
218+msgstr "برای تازه‌سازی بکشید…"
219+
220+#: qml/Dash/PullToRefreshScopeStyle.qml:60
221+msgid "Release to refresh…"
222+msgstr "برای تازه‌سازی رها کنید…"
223+
224+#: qml/Dash/ScopesOverview.qml:215
210225msgid "Manage Scopes"
211−msgstr ""
226+msgstr "مدیریت حوزه‌ها"
212227
213−#: qml/Dash/ScopesOverview.qml:428
228+#: qml/Dash/ScopesOverview.qml:437
214229msgid "Done"
215230msgstr "انجام شد"
216231
217−#: qml/Dash/ScopesOverview.qml:454
232+#: qml/Dash/ScopesOverview.qml:463
218233msgid "Store"
219234msgstr "فروشگاه"
220235
@@ -226,9 +241,9 @@ msgstr "برگزیده‌ها"
226241msgid "All"
227242msgstr "همه"
228243
229−#: qml/Greeter/Greeter.qml:157
230−msgid "Swipe to unlock"
231−msgstr "برای باز کردن قفل بکشد"
244+#: qml/Greeter/Greeter.qml:174
245+msgid "Unlock"
246+msgstr "بازکردن قفل"
232247
233248#: qml/Hud/HudParametrizedActionsPage.qml:139
234249msgid "Confirm"
@@ -250,51 +265,43 @@ msgstr "اکنون صحبت کنید…"
250265msgid "Speaking..."
251266msgstr "در حال صحبت کردن…"
252267
253−#: qml/Notifications/NotificationMenuItemFactory.qml:108
268+#: qml/Notifications/NotificationMenuItemFactory.qml:116
254269msgid "Show password"
255270msgstr "نمایش گذرواژه"
256271
257−#: qml/Notifications/NotificationMenuItemFactory.qml:124
258−msgid "Enter SIM PIN"
259−msgstr "PIN سیم‌کارت را وارد کنید"
260−
261−#: qml/Notifications/NotificationMenuItemFactory.qml:125
262−msgid "Sorry, incorrect PIN"
263−msgstr "متأسّفیم، PIN نادرست بود"
264−
265−#: qml/Panel/ActiveCallHint.qml:77
272+#: qml/Panel/ActiveCallHint.qml:79
266273msgid "Tap to return to call..."
267274msgstr "برای بازگشت به تماس ضربه بزنید…"
268275
269−#: qml/Panel/ActiveCallHint.qml:90
276+#: qml/Panel/ActiveCallHint.qml:92
270277msgid "Conference"
271278msgstr "کنفرانس"
272279
273−#: qml/Panel/Indicators/MenuItemFactory.qml:600
280+#: qml/Panel/Indicators/MenuItemFactory.qml:615
274281msgid "Nothing is playing"
275−msgstr ""
282+msgstr "هیچ چیزی در حال پخش نیست"
276283
277−#: qml/Panel/Indicators/MenuItemFactory.qml:748
284+#: qml/Panel/Indicators/MenuItemFactory.qml:763
278285msgid "In queue…"
279286msgstr "در صف…"
280287
281−#: qml/Panel/Indicators/MenuItemFactory.qml:752
288+#: qml/Panel/Indicators/MenuItemFactory.qml:767
282289msgid "Downloading"
283290msgstr "در حال بارگیری"
284291
285−#: qml/Panel/Indicators/MenuItemFactory.qml:754
292+#: qml/Panel/Indicators/MenuItemFactory.qml:769
286293msgid "Paused, tap to resume"
287294msgstr "مکث شد، برای از سر گیری ضربه بزنید"
288295
289−#: qml/Panel/Indicators/MenuItemFactory.qml:756
296+#: qml/Panel/Indicators/MenuItemFactory.qml:771
290297msgid "Canceled"
291298msgstr "لغو شد"
292299
293−#: qml/Panel/Indicators/MenuItemFactory.qml:758
300+#: qml/Panel/Indicators/MenuItemFactory.qml:773
294301msgid "Finished"
295302msgstr "پایان یافت"
296303
297−#: qml/Panel/Indicators/MenuItemFactory.qml:760
304+#: qml/Panel/Indicators/MenuItemFactory.qml:775
298305msgid "Failed, tap to retry"
299306msgstr "شکست خورد، برای تلاش دوباره ضربه بزنید"
300307
@@ -306,45 +313,49 @@ msgstr "باز کردن قفل سیم‌کارت"
306313msgid "Roaming"
307314msgstr "رومینگ"
308315
309−#: qml/Shell.qml:320
310−msgid "Enter your passphrase"
311−msgstr "عبارت‌عبورتان را وارد کنید"
316+#: qml/Shell.qml:381
317+msgid "Enter passphrase"
318+msgstr "عبارت‌عبور را وارد کنید"
312319
313−#: qml/Shell.qml:321
320+#: qml/Shell.qml:382
314321msgid "Sorry, incorrect passphrase"
315322msgstr "متأسّفیم، عبارت‌عبور نادرست بود"
316323
317−#: qml/Shell.qml:323
318−msgid "Enter your passcode"
319−msgstr "رمزعبورتان را وارد کنید"
324+#: qml/Shell.qml:383
325+msgid "Please re-enter"
326+msgstr "لطفاً دوباره وارد کنید"
320327
321−#: qml/Shell.qml:324
328+#: qml/Shell.qml:385
329+msgid "Enter passcode"
330+msgstr "رمزعبور را وارد کنید"
331+
332+#: qml/Shell.qml:386
322333msgid "Sorry, incorrect passcode"
323334msgstr "متأسّفیم، رمزعبور نادرست بود"
324335
325−#: qml/Shell.qml:327
336+#: qml/Shell.qml:389
326337#, qt-format
327−msgid "Enter your %1"
328−msgstr "%1 خود را وارد کنید"
338+msgid "Enter %1"
339+msgstr "%1 را وارد کنید"
329340
330−#: qml/Shell.qml:328
341+#: qml/Shell.qml:390
331342#, qt-format
332343msgid "Sorry, incorrect %1"
333344msgstr "متأسّفیم، %1 نادرست بود"
334345
335−#: qml/Shell.qml:363
346+#: qml/Shell.qml:431
336347msgid "Sorry, incorrect passphrase."
337348msgstr "متأسّفیم، عبارت‌عبور نادرست است."
338349
339−#: qml/Shell.qml:364
350+#: qml/Shell.qml:432
340351msgid "Sorry, incorrect passcode."
341352msgstr "متأسّفیم، رمزعبور نادرست است."
342353
343−#: qml/Shell.qml:365
354+#: qml/Shell.qml:433
344355msgid "This will be your last attempt."
345356msgstr "این آخرین تلاش شما خواهد بود."
346357
347−#: qml/Shell.qml:367
358+#: qml/Shell.qml:435
348359msgid ""
349360"If passphrase is entered incorrectly, your phone will conduct a factory "
350361"reset and all personal data will be deleted."
@@ -352,13 +363,10 @@ msgstr ""
352363"اگر عبارت‌عبور نادرست وارد شود، تلفن شما بازنشانی کارخانه خواهد شد و تمامی "
353364"اطّلاعات شخصی حذف خواهند شد."
354365
355−#: qml/Shell.qml:368
366+#: qml/Shell.qml:436
356367msgid ""
357368"If passcode is entered incorrectly, your phone will conduct a factory reset "
358369"and all personal data will be deleted."
359370msgstr ""
360371"اگر رمزعبور نادرست وارد شود، تلفن شما بازنشانی کارخانه خواهد شد و تمامی "
361372"اطّلاعات شخصی حذف خواهند شد."
362−
363−#~ msgid "Manage Dash"
364−#~ msgstr "مدیریت دش"
po/fi.po+96−86
@@ -7,15 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
11−"PO-Revision-Date: 2014-08-28 13:47+0000\n"
12−"Last-Translator: Timo Jyrinki <timo.jyrinki@canonical.com>\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
11+"PO-Revision-Date: 2014-11-05 11:49+0000\n"
12+"Last-Translator: Jiri Grönroos <Unknown>\n"
1313"Language-Team: Finnish <fi@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:19+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
18+"X-Launchpad-Export-Date: 2014-11-06 06:40+0000\n"
19+"X-Generator: Launchpad (build 17223)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
@@ -30,45 +31,66 @@ msgstr "Kiinnitä pikakuvake"
3031msgid "Unpin shortcut"
3132msgstr "Poista pikakuvakkeen kiinnitys"
3233
33−#: qml/Components/Dialogs.qml:70
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+
55+#: qml/Components/Dialogs.qml:74
3456msgid "Log out"
3557msgstr "Kirjaudu ulos"
3658
37−#: qml/Components/Dialogs.qml:71
59+#: qml/Components/Dialogs.qml:75
3860msgid "Are you sure you want to log out?"
3961msgstr "Haluatko varmasti kirjautua ulos?"
4062
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
63+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
64+#: qml/Components/Dialogs.qml:126
4365msgid "No"
4466msgstr "Ei"
4567
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
68+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
69+#: qml/Components/Dialogs.qml:133
4870msgid "Yes"
4971msgstr "Kyllä"
5072
51−#: qml/Components/Dialogs.qml:94
73+#: qml/Components/Dialogs.qml:98
5274msgid "Shut down"
5375msgstr "Sammuta"
5476
55−#: qml/Components/Dialogs.qml:95
77+#: qml/Components/Dialogs.qml:99
5678msgid "Are you sure you want to shut down?"
5779msgstr "Haluatko varmasti sammuttaa laitteen?"
5880
59−#: qml/Components/Dialogs.qml:119
81+#: qml/Components/Dialogs.qml:123
6082msgid "Reboot"
6183msgstr "Käynnistä uudelleen"
6284
63−#: qml/Components/Dialogs.qml:120
85+#: qml/Components/Dialogs.qml:124
6486msgid "Are you sure you want to reboot?"
6587msgstr "Haluatko varmasti käynnistää laitteen uudelleen?"
6688
67−#: qml/Components/Dialogs.qml:144
89+#: qml/Components/Dialogs.qml:148
6890msgid "Power"
6991msgstr "Virran katkaisu"
7092
71−#: qml/Components/Dialogs.qml:145
93+#: qml/Components/Dialogs.qml:149
7294msgid ""
7395"Are you sure you would like\n"
7496"to power off?"
@@ -76,15 +98,15 @@ msgstr ""
7698"Haluatko varmasti\n"
7799"sammuttaa laitteen?"
78100
79−#: qml/Components/Dialogs.qml:147
101+#: qml/Components/Dialogs.qml:151
80102msgid "Power off"
81103msgstr "Sammuta"
82104
83−#: qml/Components/Dialogs.qml:157
105+#: qml/Components/Dialogs.qml:161
84106msgid "Restart"
85107msgstr "Käynnistä uudelleen"
86108
87−#: qml/Components/Dialogs.qml:167
109+#: qml/Components/Dialogs.qml:171
88110msgid "Cancel"
89111msgstr "Peru"
90112
@@ -116,19 +138,19 @@ msgstr "Sulje"
116138msgid "Swipe up again to close the settings screen"
117139msgstr "Vedä uudestaan sulkeaksesi asetusnäkymän"
118140
119−#: qml/Components/EdgeDemo.qml:198
141+#: qml/Components/EdgeDemo.qml:201
120142msgid "Left edge"
121143msgstr "Vasen reuna"
122144
123−#: qml/Components/EdgeDemo.qml:199
145+#: qml/Components/EdgeDemo.qml:202
124146msgid "Swipe from the left to reveal the launcher for quick access to apps"
125147msgstr "Vedä vasemmalta saattaaksesi sovellusten käynnistimen esiin"
126148
127−#: qml/Components/EdgeDemo.qml:226
149+#: qml/Components/EdgeDemo.qml:229
128150msgid "Well done"
129151msgstr "Hyvin tehty"
130152
131−#: qml/Components/EdgeDemo.qml:227
153+#: qml/Components/EdgeDemo.qml:230
132154msgid ""
133155"You have now mastered the edge gestures and can start using the "
134156"phone<br><br>Tap on the screen to start"
@@ -136,40 +158,27 @@ msgstr ""
136158"Hallitset nyt reunaeleet, joten voit aloittaa puhelimen "
137159"käytön<br><br>Napauta näyttöä aloittaaksesi"
138160
139−#: qml/Components/Lockscreen.qml:167
140−msgid "Please wait"
141−msgstr "Odota hetki"
161+#: qml/Components/Lockscreen.qml:223
162+msgid "Return to Call"
163+msgstr "Palaa puheluun"
142164
143−#: qml/Components/Lockscreen.qml:172
144−msgid "Too many incorrect attempts"
145−msgstr "Liian monta virheellistä yritystä"
146−
147−#: qml/Components/Lockscreen.qml:206
165+#: qml/Components/Lockscreen.qml:223
148166msgid "Emergency Call"
149167msgstr "Hätäpuhelu"
150168
151−#: qml/Components/Lockscreen.qml:226
169+#: qml/Components/Lockscreen.qml:255
152170msgid "OK"
153171msgstr "OK"
154172
155−#: qml/Components/PassphraseLockscreen.qml:61
156−#, qt-format
157−msgid "Hello %1"
158−msgstr "Hei %1!"
159−
160−#: qml/Components/PassphraseLockscreen.qml:61
161−msgid "Hello"
162−msgstr "Hei"
163−
164−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
173+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
165174msgid "See less"
166175msgstr "Näytä vähemmän"
167176
168−#: qml/Dash/GenericScopeView.qml:411
177+#: qml/Dash/GenericScopeView.qml:434
169178msgid "See all"
170179msgstr "Näytä kaikki"
171180
172−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
181+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
173182#: qml/Panel/SearchIndicator.qml:27
174183msgid "Search"
175184msgstr "Hae"
@@ -206,15 +215,23 @@ msgstr "Lisää arvostelu"
206215msgid "Send"
207216msgstr "Lähetä"
208217
209−#: qml/Dash/ScopesOverview.qml:206
218+#: qml/Dash/PullToRefreshScopeStyle.qml:55
219+msgid "Pull to refresh…"
220+msgstr "Vedä päivittääksesi…"
221+
222+#: qml/Dash/PullToRefreshScopeStyle.qml:60
223+msgid "Release to refresh…"
224+msgstr "Vapauta päivittääksesi…"
225+
226+#: qml/Dash/ScopesOverview.qml:215
210227msgid "Manage Scopes"
211228msgstr "Näkymien hallinta"
212229
213−#: qml/Dash/ScopesOverview.qml:428
230+#: qml/Dash/ScopesOverview.qml:437
214231msgid "Done"
215232msgstr "Valmis"
216233
217−#: qml/Dash/ScopesOverview.qml:454
234+#: qml/Dash/ScopesOverview.qml:463
218235msgid "Store"
219236msgstr "Kauppa"
220237
@@ -226,9 +243,9 @@ msgstr "Suosikit"
226243msgid "All"
227244msgstr "Kaikki"
228245
229−#: qml/Greeter/Greeter.qml:157
230−msgid "Swipe to unlock"
231−msgstr "Avaa pyyhkäisemällä"
246+#: qml/Greeter/Greeter.qml:174
247+msgid "Unlock"
248+msgstr "Avaa lukitus"
232249
233250#: qml/Hud/HudParametrizedActionsPage.qml:139
234251msgid "Confirm"
@@ -250,51 +267,43 @@ msgstr "Puhu nyt..."
250267msgid "Speaking..."
251268msgstr "Puhutaan..."
252269
253−#: qml/Notifications/NotificationMenuItemFactory.qml:108
270+#: qml/Notifications/NotificationMenuItemFactory.qml:116
254271msgid "Show password"
255272msgstr "Näytä salasana"
256273
257−#: qml/Notifications/NotificationMenuItemFactory.qml:124
258−msgid "Enter SIM PIN"
259−msgstr "Anna SIM-kortin PIN-koodi"
260−
261−#: qml/Notifications/NotificationMenuItemFactory.qml:125
262−msgid "Sorry, incorrect PIN"
263−msgstr "Väärä PIN-koodi"
264−
265−#: qml/Panel/ActiveCallHint.qml:77
274+#: qml/Panel/ActiveCallHint.qml:79
266275msgid "Tap to return to call..."
267276msgstr "Napauta palataksesi puheluun..."
268277
269−#: qml/Panel/ActiveCallHint.qml:90
278+#: qml/Panel/ActiveCallHint.qml:92
270279msgid "Conference"
271280msgstr "Ryhmäpuhelu"
272281
273−#: qml/Panel/Indicators/MenuItemFactory.qml:600
282+#: qml/Panel/Indicators/MenuItemFactory.qml:615
274283msgid "Nothing is playing"
275284msgstr "Mitään ei toisteta juuri nyt"
276285
277−#: qml/Panel/Indicators/MenuItemFactory.qml:748
286+#: qml/Panel/Indicators/MenuItemFactory.qml:763
278287msgid "In queue…"
279288msgstr "Jonossa…"
280289
281−#: qml/Panel/Indicators/MenuItemFactory.qml:752
290+#: qml/Panel/Indicators/MenuItemFactory.qml:767
282291msgid "Downloading"
283292msgstr "Ladataan"
284293
285−#: qml/Panel/Indicators/MenuItemFactory.qml:754
294+#: qml/Panel/Indicators/MenuItemFactory.qml:769
286295msgid "Paused, tap to resume"
287296msgstr "Keskeytetty, napauta palauttaaksesi"
288297
289−#: qml/Panel/Indicators/MenuItemFactory.qml:756
298+#: qml/Panel/Indicators/MenuItemFactory.qml:771
290299msgid "Canceled"
291300msgstr "Peruttu"
292301
293−#: qml/Panel/Indicators/MenuItemFactory.qml:758
302+#: qml/Panel/Indicators/MenuItemFactory.qml:773
294303msgid "Finished"
295304msgstr "Valmistunut"
296305
297−#: qml/Panel/Indicators/MenuItemFactory.qml:760
306+#: qml/Panel/Indicators/MenuItemFactory.qml:775
298307msgid "Failed, tap to retry"
299308msgstr "Epäonnistunut, napauta yrittääksesi uudelleen"
300309
@@ -306,45 +315,49 @@ msgstr "Avaa SIM-kortin lukitus"
306315msgid "Roaming"
307316msgstr "Verkkovierailu"
308317
309−#: qml/Shell.qml:320
310−msgid "Enter your passphrase"
318+#: qml/Shell.qml:381
319+msgid "Enter passphrase"
311320msgstr "Anna tunnuslause"
312321
313−#: qml/Shell.qml:321
322+#: qml/Shell.qml:382
314323msgid "Sorry, incorrect passphrase"
315324msgstr "Virheellinen tunnuslause"
316325
317−#: qml/Shell.qml:323
318−msgid "Enter your passcode"
326+#: qml/Shell.qml:383
327+msgid "Please re-enter"
328+msgstr "Anna uudelleen"
329+
330+#: qml/Shell.qml:385
331+msgid "Enter passcode"
319332msgstr "Anna suojakoodi"
320333
321−#: qml/Shell.qml:324
334+#: qml/Shell.qml:386
322335msgid "Sorry, incorrect passcode"
323336msgstr "Väärä suojakoodi"
324337
325−#: qml/Shell.qml:327
338+#: qml/Shell.qml:389
326339#, qt-format
327−msgid "Enter your %1"
340+msgid "Enter %1"
328341msgstr "Anna %1"
329342
330−#: qml/Shell.qml:328
343+#: qml/Shell.qml:390
331344#, qt-format
332345msgid "Sorry, incorrect %1"
333346msgstr "Väärä %1"
334347
335−#: qml/Shell.qml:363
348+#: qml/Shell.qml:431
336349msgid "Sorry, incorrect passphrase."
337350msgstr "Virheellinen tunnuslause."
338351
339−#: qml/Shell.qml:364
352+#: qml/Shell.qml:432
340353msgid "Sorry, incorrect passcode."
341354msgstr "Virheellinen suojakoodi."
342355
343−#: qml/Shell.qml:365
356+#: qml/Shell.qml:433
344357msgid "This will be your last attempt."
345358msgstr "Tämä on viimeinen yritys."
346359
347−#: qml/Shell.qml:367
360+#: qml/Shell.qml:435
348361msgid ""
349362"If passphrase is entered incorrectly, your phone will conduct a factory "
350363"reset and all personal data will be deleted."
@@ -352,13 +365,10 @@ msgstr ""
352365"Jos kirjoitat tunnuslauseen virheellisesti, puhelimesi palautetaan "
353366"tehdastilaan ja kaikki henkilökohtaiset tietosi poistetaan."
354367
355−#: qml/Shell.qml:368
368+#: qml/Shell.qml:436
356369msgid ""
357370"If passcode is entered incorrectly, your phone will conduct a factory reset "
358371"and all personal data will be deleted."
359372msgstr ""
360373"Jos kirjoitat suojakoodin virheellisesti, puhelimesi palautetaan "
361374"tehdastilaan ja kaikki henkilökohtaiset tietosi poistetaan."
362−
363−#~ msgid "Manage Dash"
364−#~ msgstr "Unityn hallinta"
po/fo.po+90−79
@@ -7,15 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
1111"PO-Revision-Date: 2014-01-14 20:08+0000\n"
1212"Last-Translator: Jógvan Olsen <jeggy@jebster.net>\n"
1313"Language-Team: Faroese <fo@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:19+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
18+"X-Launchpad-Export-Date: 2014-11-06 06:40+0000\n"
19+"X-Generator: Launchpad (build 17223)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
@@ -30,59 +31,78 @@ msgstr ""
3031msgid "Unpin shortcut"
3132msgstr ""
3233
33−#: qml/Components/Dialogs.qml:70
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+
53+#: qml/Components/Dialogs.qml:74
3454msgid "Log out"
3555msgstr ""
3656
37−#: qml/Components/Dialogs.qml:71
57+#: qml/Components/Dialogs.qml:75
3858msgid "Are you sure you want to log out?"
3959msgstr ""
4060
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
61+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
62+#: qml/Components/Dialogs.qml:126
4363msgid "No"
4464msgstr ""
4565
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
66+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
67+#: qml/Components/Dialogs.qml:133
4868msgid "Yes"
4969msgstr ""
5070
51−#: qml/Components/Dialogs.qml:94
71+#: qml/Components/Dialogs.qml:98
5272msgid "Shut down"
5373msgstr ""
5474
55−#: qml/Components/Dialogs.qml:95
75+#: qml/Components/Dialogs.qml:99
5676msgid "Are you sure you want to shut down?"
5777msgstr ""
5878
59−#: qml/Components/Dialogs.qml:119
79+#: qml/Components/Dialogs.qml:123
6080msgid "Reboot"
6181msgstr ""
6282
63−#: qml/Components/Dialogs.qml:120
83+#: qml/Components/Dialogs.qml:124
6484msgid "Are you sure you want to reboot?"
6585msgstr ""
6686
67−#: qml/Components/Dialogs.qml:144
87+#: qml/Components/Dialogs.qml:148
6888msgid "Power"
6989msgstr ""
7090
71−#: qml/Components/Dialogs.qml:145
91+#: qml/Components/Dialogs.qml:149
7292msgid ""
7393"Are you sure you would like\n"
7494"to power off?"
7595msgstr ""
7696
77−#: qml/Components/Dialogs.qml:147
97+#: qml/Components/Dialogs.qml:151
7898msgid "Power off"
7999msgstr ""
80100
81−#: qml/Components/Dialogs.qml:157
101+#: qml/Components/Dialogs.qml:161
82102msgid "Restart"
83103msgstr ""
84104
85−#: qml/Components/Dialogs.qml:167
105+#: qml/Components/Dialogs.qml:171
86106msgid "Cancel"
87107msgstr ""
88108
@@ -114,58 +134,45 @@ msgstr ""
114134msgid "Swipe up again to close the settings screen"
115135msgstr ""
116136
117−#: qml/Components/EdgeDemo.qml:198
137+#: qml/Components/EdgeDemo.qml:201
118138msgid "Left edge"
119139msgstr ""
120140
121−#: qml/Components/EdgeDemo.qml:199
141+#: qml/Components/EdgeDemo.qml:202
122142msgid "Swipe from the left to reveal the launcher for quick access to apps"
123143msgstr ""
124144
125−#: qml/Components/EdgeDemo.qml:226
145+#: qml/Components/EdgeDemo.qml:229
126146msgid "Well done"
127147msgstr ""
128148
129−#: qml/Components/EdgeDemo.qml:227
149+#: qml/Components/EdgeDemo.qml:230
130150msgid ""
131151"You have now mastered the edge gestures and can start using the "
132152"phone<br><br>Tap on the screen to start"
133153msgstr ""
134154
135−#: qml/Components/Lockscreen.qml:167
136−msgid "Please wait"
137−msgstr ""
138−
139−#: qml/Components/Lockscreen.qml:172
140−msgid "Too many incorrect attempts"
155+#: qml/Components/Lockscreen.qml:223
156+msgid "Return to Call"
141157msgstr ""
142158
143−#: qml/Components/Lockscreen.qml:206
159+#: qml/Components/Lockscreen.qml:223
144160msgid "Emergency Call"
145161msgstr ""
146162
147−#: qml/Components/Lockscreen.qml:226
163+#: qml/Components/Lockscreen.qml:255
148164msgid "OK"
149165msgstr ""
150166
151−#: qml/Components/PassphraseLockscreen.qml:61
152−#, qt-format
153−msgid "Hello %1"
154−msgstr ""
155−
156−#: qml/Components/PassphraseLockscreen.qml:61
157−msgid "Hello"
158−msgstr ""
159−
160−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
167+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
161168msgid "See less"
162169msgstr ""
163170
164−#: qml/Dash/GenericScopeView.qml:411
171+#: qml/Dash/GenericScopeView.qml:434
165172msgid "See all"
166173msgstr ""
167174
168−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
175+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
169176#: qml/Panel/SearchIndicator.qml:27
170177msgid "Search"
171178msgstr "Leita"
@@ -202,15 +209,23 @@ msgstr ""
202209msgid "Send"
203210msgstr ""
204211
205−#: qml/Dash/ScopesOverview.qml:206
212+#: qml/Dash/PullToRefreshScopeStyle.qml:55
213+msgid "Pull to refresh…"
214+msgstr ""
215+
216+#: qml/Dash/PullToRefreshScopeStyle.qml:60
217+msgid "Release to refresh…"
218+msgstr ""
219+
220+#: qml/Dash/ScopesOverview.qml:215
206221msgid "Manage Scopes"
207222msgstr ""
208223
209−#: qml/Dash/ScopesOverview.qml:428
224+#: qml/Dash/ScopesOverview.qml:437
210225msgid "Done"
211226msgstr ""
212227
213−#: qml/Dash/ScopesOverview.qml:454
228+#: qml/Dash/ScopesOverview.qml:463
214229msgid "Store"
215230msgstr ""
216231
@@ -222,8 +237,8 @@ msgstr ""
222237msgid "All"
223238msgstr ""
224239
225−#: qml/Greeter/Greeter.qml:157
226−msgid "Swipe to unlock"
240+#: qml/Greeter/Greeter.qml:174
241+msgid "Unlock"
227242msgstr ""
228243
229244#: qml/Hud/HudParametrizedActionsPage.qml:139
@@ -246,51 +261,43 @@ msgstr "Snakka nú..."
246261msgid "Speaking..."
247262msgstr "Snakkar..."
248263
249−#: qml/Notifications/NotificationMenuItemFactory.qml:108
264+#: qml/Notifications/NotificationMenuItemFactory.qml:116
250265msgid "Show password"
251266msgstr ""
252267
253−#: qml/Notifications/NotificationMenuItemFactory.qml:124
254−msgid "Enter SIM PIN"
255−msgstr ""
256−
257−#: qml/Notifications/NotificationMenuItemFactory.qml:125
258−msgid "Sorry, incorrect PIN"
259−msgstr ""
260−
261−#: qml/Panel/ActiveCallHint.qml:77
268+#: qml/Panel/ActiveCallHint.qml:79
262269msgid "Tap to return to call..."
263270msgstr ""
264271
265−#: qml/Panel/ActiveCallHint.qml:90
272+#: qml/Panel/ActiveCallHint.qml:92
266273msgid "Conference"
267274msgstr ""
268275
269−#: qml/Panel/Indicators/MenuItemFactory.qml:600
276+#: qml/Panel/Indicators/MenuItemFactory.qml:615
270277msgid "Nothing is playing"
271278msgstr ""
272279
273−#: qml/Panel/Indicators/MenuItemFactory.qml:748
280+#: qml/Panel/Indicators/MenuItemFactory.qml:763
274281msgid "In queue…"
275282msgstr ""
276283
277−#: qml/Panel/Indicators/MenuItemFactory.qml:752
284+#: qml/Panel/Indicators/MenuItemFactory.qml:767
278285msgid "Downloading"
279286msgstr ""
280287
281−#: qml/Panel/Indicators/MenuItemFactory.qml:754
288+#: qml/Panel/Indicators/MenuItemFactory.qml:769
282289msgid "Paused, tap to resume"
283290msgstr ""
284291
285−#: qml/Panel/Indicators/MenuItemFactory.qml:756
292+#: qml/Panel/Indicators/MenuItemFactory.qml:771
286293msgid "Canceled"
287294msgstr ""
288295
289−#: qml/Panel/Indicators/MenuItemFactory.qml:758
296+#: qml/Panel/Indicators/MenuItemFactory.qml:773
290297msgid "Finished"
291298msgstr ""
292299
293−#: qml/Panel/Indicators/MenuItemFactory.qml:760
300+#: qml/Panel/Indicators/MenuItemFactory.qml:775
294301msgid "Failed, tap to retry"
295302msgstr ""
296303
@@ -302,51 +309,55 @@ msgstr ""
302309msgid "Roaming"
303310msgstr ""
304311
305−#: qml/Shell.qml:320
306−msgid "Enter your passphrase"
312+#: qml/Shell.qml:381
313+msgid "Enter passphrase"
307314msgstr ""
308315
309−#: qml/Shell.qml:321
316+#: qml/Shell.qml:382
310317msgid "Sorry, incorrect passphrase"
311318msgstr ""
312319
313−#: qml/Shell.qml:323
314−msgid "Enter your passcode"
320+#: qml/Shell.qml:383
321+msgid "Please re-enter"
322+msgstr ""
323+
324+#: qml/Shell.qml:385
325+msgid "Enter passcode"
315326msgstr ""
316327
317−#: qml/Shell.qml:324
328+#: qml/Shell.qml:386
318329msgid "Sorry, incorrect passcode"
319330msgstr ""
320331
321−#: qml/Shell.qml:327
332+#: qml/Shell.qml:389
322333#, qt-format
323−msgid "Enter your %1"
334+msgid "Enter %1"
324335msgstr ""
325336
326−#: qml/Shell.qml:328
337+#: qml/Shell.qml:390
327338#, qt-format
328339msgid "Sorry, incorrect %1"
329340msgstr ""
330341
331−#: qml/Shell.qml:363
342+#: qml/Shell.qml:431
332343msgid "Sorry, incorrect passphrase."
333344msgstr ""
334345
335−#: qml/Shell.qml:364
346+#: qml/Shell.qml:432
336347msgid "Sorry, incorrect passcode."
337348msgstr ""
338349
339−#: qml/Shell.qml:365
350+#: qml/Shell.qml:433
340351msgid "This will be your last attempt."
341352msgstr ""
342353
343−#: qml/Shell.qml:367
354+#: qml/Shell.qml:435
344355msgid ""
345356"If passphrase is entered incorrectly, your phone will conduct a factory "
346357"reset and all personal data will be deleted."
347358msgstr ""
348359
349−#: qml/Shell.qml:368
360+#: qml/Shell.qml:436
350361msgid ""
351362"If passcode is entered incorrectly, your phone will conduct a factory reset "
352363"and all personal data will be deleted."
po/fr.po+102−90
@@ -7,15 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
11−"PO-Revision-Date: 2014-08-29 10:31+0000\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
11+"PO-Revision-Date: 2014-11-05 17:30+0000\n"
1212"Last-Translator: Sébastien Maes <nautilussebastien@gmail.com>\n"
1313"Language-Team: French <fr@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:19+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=2; plural=n > 1;\n"
18+"X-Launchpad-Export-Date: 2014-11-06 06:40+0000\n"
19+"X-Generator: Launchpad (build 17223)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
@@ -30,45 +31,68 @@ msgstr "Épingler le raccourci"
3031msgid "Unpin shortcut"
3132msgstr "Détacher le raccourci"
3233
33−#: qml/Components/Dialogs.qml:70
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+
57+#: qml/Components/Dialogs.qml:74
3458msgid "Log out"
3559msgstr "Se déconnecter"
3660
37−#: qml/Components/Dialogs.qml:71
61+#: qml/Components/Dialogs.qml:75
3862msgid "Are you sure you want to log out?"
3963msgstr "Êtes-vous sûr de vouloir vous déconnecter ?"
4064
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
65+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
66+#: qml/Components/Dialogs.qml:126
4367msgid "No"
4468msgstr "Non"
4569
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
70+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
71+#: qml/Components/Dialogs.qml:133
4872msgid "Yes"
4973msgstr "Oui"
5074
51−#: qml/Components/Dialogs.qml:94
75+#: qml/Components/Dialogs.qml:98
5276msgid "Shut down"
5377msgstr "Éteindre"
5478
55−#: qml/Components/Dialogs.qml:95
79+#: qml/Components/Dialogs.qml:99
5680msgid "Are you sure you want to shut down?"
5781msgstr "Êtes-vous sûr de vouloir éteindre ?"
5882
59−#: qml/Components/Dialogs.qml:119
83+#: qml/Components/Dialogs.qml:123
6084msgid "Reboot"
6185msgstr "Redémarrer"
6286
63−#: qml/Components/Dialogs.qml:120
87+#: qml/Components/Dialogs.qml:124
6488msgid "Are you sure you want to reboot?"
6589msgstr "Êtes-vous sûr de vouloir redémarrer ?"
6690
67−#: qml/Components/Dialogs.qml:144
91+#: qml/Components/Dialogs.qml:148
6892msgid "Power"
6993msgstr "Alimentation"
7094
71−#: qml/Components/Dialogs.qml:145
95+#: qml/Components/Dialogs.qml:149
7296msgid ""
7397"Are you sure you would like\n"
7498"to power off?"
@@ -76,15 +100,15 @@ msgstr ""
76100"Êtes-vous sûr de vouloir\n"
77101"couper l'alimentation ?"
78102
79−#: qml/Components/Dialogs.qml:147
103+#: qml/Components/Dialogs.qml:151
80104msgid "Power off"
81105msgstr "Éteindre"
82106
83−#: qml/Components/Dialogs.qml:157
107+#: qml/Components/Dialogs.qml:161
84108msgid "Restart"
85109msgstr "Redémarrer"
86110
87−#: qml/Components/Dialogs.qml:167
111+#: qml/Components/Dialogs.qml:171
88112msgid "Cancel"
89113msgstr "Annuler"
90114
@@ -121,21 +145,21 @@ msgstr ""
121145"Faites glisser à nouveau votre doigt vers le bord supérieur pour fermer "
122146"l'écran des paramètres"
123147
124−#: qml/Components/EdgeDemo.qml:198
148+#: qml/Components/EdgeDemo.qml:201
125149msgid "Left edge"
126150msgstr "Bord gauche"
127151
128−#: qml/Components/EdgeDemo.qml:199
152+#: qml/Components/EdgeDemo.qml:202
129153msgid "Swipe from the left to reveal the launcher for quick access to apps"
130154msgstr ""
131155"Faites glisser votre doigt à partir du bord gauche pour afficher le lanceur "
132156"d'applications."
133157
134−#: qml/Components/EdgeDemo.qml:226
158+#: qml/Components/EdgeDemo.qml:229
135159msgid "Well done"
136160msgstr "Félicitations"
137161
138−#: qml/Components/EdgeDemo.qml:227
162+#: qml/Components/EdgeDemo.qml:230
139163msgid ""
140164"You have now mastered the edge gestures and can start using the "
141165"phone<br><br>Tap on the screen to start"
@@ -143,40 +167,27 @@ msgstr ""
143167"Vous maîtrisez maintenant les différents gestes et pouvez commencer à "
144168"utiliser le téléphone<br><br>Appuyez sur l'écran pour commencer"
145169
146−#: qml/Components/Lockscreen.qml:167
147−msgid "Please wait"
148−msgstr "Veuillez patienter"
149−
150−#: qml/Components/Lockscreen.qml:172
151−msgid "Too many incorrect attempts"
152−msgstr "Trop de tentatives incorrectes"
170+#: qml/Components/Lockscreen.qml:223
171+msgid "Return to Call"
172+msgstr "Retourner à l'appel"
153173
154−#: qml/Components/Lockscreen.qml:206
174+#: qml/Components/Lockscreen.qml:223
155175msgid "Emergency Call"
156176msgstr "Appel d'urgence"
157177
158−#: qml/Components/Lockscreen.qml:226
178+#: qml/Components/Lockscreen.qml:255
159179msgid "OK"
160180msgstr "OK"
161181
162−#: qml/Components/PassphraseLockscreen.qml:61
163−#, qt-format
164−msgid "Hello %1"
165−msgstr "Bonjour %1"
166−
167−#: qml/Components/PassphraseLockscreen.qml:61
168−msgid "Hello"
169−msgstr "Bonjour"
170−
171−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
182+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
172183msgid "See less"
173184msgstr "Voir moins"
174185
175−#: qml/Dash/GenericScopeView.qml:411
186+#: qml/Dash/GenericScopeView.qml:434
176187msgid "See all"
177188msgstr "Tout voir"
178189
179−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
190+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
180191#: qml/Panel/SearchIndicator.qml:27
181192msgid "Search"
182193msgstr "Rechercher"
@@ -213,15 +224,23 @@ msgstr "Ajouter un avis"
213224msgid "Send"
214225msgstr "Envoyer"
215226
216−#: qml/Dash/ScopesOverview.qml:206
227+#: qml/Dash/PullToRefreshScopeStyle.qml:55
228+msgid "Pull to refresh…"
229+msgstr "Tirer pour actualiser..."
230+
231+#: qml/Dash/PullToRefreshScopeStyle.qml:60
232+msgid "Release to refresh…"
233+msgstr "Relâcher pour actualiser..."
234+
235+#: qml/Dash/ScopesOverview.qml:215
217236msgid "Manage Scopes"
218−msgstr ""
237+msgstr "Gérer les moteurs de recherche"
219238
220−#: qml/Dash/ScopesOverview.qml:428
239+#: qml/Dash/ScopesOverview.qml:437
221240msgid "Done"
222241msgstr "Terminé"
223242
224−#: qml/Dash/ScopesOverview.qml:454
243+#: qml/Dash/ScopesOverview.qml:463
225244msgid "Store"
226245msgstr "Logithèque"
227246
@@ -233,9 +252,9 @@ msgstr "Favorites"
233252msgid "All"
234253msgstr "Toutes"
235254
236−#: qml/Greeter/Greeter.qml:157
237−msgid "Swipe to unlock"
238−msgstr "Faites glisser pour déverrouiller"
255+#: qml/Greeter/Greeter.qml:174
256+msgid "Unlock"
257+msgstr "Déverrouiller"
239258
240259#: qml/Hud/HudParametrizedActionsPage.qml:139
241260msgid "Confirm"
@@ -257,51 +276,43 @@ msgstr "Parlez maintenant…"
257276msgid "Speaking..."
258277msgstr "En cours d'écoute..."
259278
260−#: qml/Notifications/NotificationMenuItemFactory.qml:108
279+#: qml/Notifications/NotificationMenuItemFactory.qml:116
261280msgid "Show password"
262281msgstr "Afficher le mot de passe"
263282
264−#: qml/Notifications/NotificationMenuItemFactory.qml:124
265−msgid "Enter SIM PIN"
266−msgstr "Entrez le code PIN de la SIM"
267−
268−#: qml/Notifications/NotificationMenuItemFactory.qml:125
269−msgid "Sorry, incorrect PIN"
270−msgstr "Désolé, code PIN incorrect"
271−
272−#: qml/Panel/ActiveCallHint.qml:77
283+#: qml/Panel/ActiveCallHint.qml:79
273284msgid "Tap to return to call..."
274285msgstr "Appuyez pour revenir à l'appel…"
275286
276−#: qml/Panel/ActiveCallHint.qml:90
287+#: qml/Panel/ActiveCallHint.qml:92
277288msgid "Conference"
278289msgstr "Conférence"
279290
280−#: qml/Panel/Indicators/MenuItemFactory.qml:600
291+#: qml/Panel/Indicators/MenuItemFactory.qml:615
281292msgid "Nothing is playing"
282−msgstr ""
293+msgstr "Rien n'est en cours de lecture"
283294
284−#: qml/Panel/Indicators/MenuItemFactory.qml:748
295+#: qml/Panel/Indicators/MenuItemFactory.qml:763
285296msgid "In queue…"
286297msgstr "Dans la file d'attente..."
287298
288−#: qml/Panel/Indicators/MenuItemFactory.qml:752
299+#: qml/Panel/Indicators/MenuItemFactory.qml:767
289300msgid "Downloading"
290301msgstr "Téléchargement en cours"
291302
292−#: qml/Panel/Indicators/MenuItemFactory.qml:754
303+#: qml/Panel/Indicators/MenuItemFactory.qml:769
293304msgid "Paused, tap to resume"
294305msgstr "En pause, appuyez pour reprendre"
295306
296−#: qml/Panel/Indicators/MenuItemFactory.qml:756
307+#: qml/Panel/Indicators/MenuItemFactory.qml:771
297308msgid "Canceled"
298309msgstr "Annulé"
299310
300−#: qml/Panel/Indicators/MenuItemFactory.qml:758
311+#: qml/Panel/Indicators/MenuItemFactory.qml:773
301312msgid "Finished"
302313msgstr "Terminé"
303314
304−#: qml/Panel/Indicators/MenuItemFactory.qml:760
315+#: qml/Panel/Indicators/MenuItemFactory.qml:775
305316msgid "Failed, tap to retry"
306317msgstr "Échec, appuyez pour réessayer"
307318
@@ -313,45 +324,49 @@ msgstr "Déverrouiller la carte SIM"
313324msgid "Roaming"
314325msgstr "Roaming"
315326
316−#: qml/Shell.qml:320
317−msgid "Enter your passphrase"
318−msgstr "Entrez votre phrase secrète"
327+#: qml/Shell.qml:381
328+msgid "Enter passphrase"
329+msgstr "Saisissez la phrase de passe"
319330
320−#: qml/Shell.qml:321
331+#: qml/Shell.qml:382
321332msgid "Sorry, incorrect passphrase"
322333msgstr "Désolé, phrase secrète incorrecte"
323334
324−#: qml/Shell.qml:323
325−msgid "Enter your passcode"
326−msgstr "Entrez votre code"
335+#: qml/Shell.qml:383
336+msgid "Please re-enter"
337+msgstr "Veuillez ressaisir"
327338
328−#: qml/Shell.qml:324
339+#: qml/Shell.qml:385
340+msgid "Enter passcode"
341+msgstr "Saisissez le mot de passe"
342+
343+#: qml/Shell.qml:386
329344msgid "Sorry, incorrect passcode"
330345msgstr "Désolé, code incorrect"
331346
332−#: qml/Shell.qml:327
347+#: qml/Shell.qml:389
333348#, qt-format
334−msgid "Enter your %1"
335−msgstr "Saisissez votre %1"
349+msgid "Enter %1"
350+msgstr "Saisissez %1"
336351
337−#: qml/Shell.qml:328
352+#: qml/Shell.qml:390
338353#, qt-format
339354msgid "Sorry, incorrect %1"
340355msgstr "Désolé, %1 incorrect"
341356
342−#: qml/Shell.qml:363
357+#: qml/Shell.qml:431
343358msgid "Sorry, incorrect passphrase."
344359msgstr "Désolé, phrase secrète incorrecte."
345360
346−#: qml/Shell.qml:364
361+#: qml/Shell.qml:432
347362msgid "Sorry, incorrect passcode."
348363msgstr "Désolé, code incorrect."
349364
350−#: qml/Shell.qml:365
365+#: qml/Shell.qml:433
351366msgid "This will be your last attempt."
352367msgstr "Ceci sera votre dernière tentative."
353368
354−#: qml/Shell.qml:367
369+#: qml/Shell.qml:435
355370msgid ""
356371"If passphrase is entered incorrectly, your phone will conduct a factory "
357372"reset and all personal data will be deleted."
@@ -360,7 +375,7 @@ msgstr ""
360375"effectuera une réinitialisation aux paramètres d'usine et toutes les données "
361376"personnelles seront supprimées."
362377
363−#: qml/Shell.qml:368
378+#: qml/Shell.qml:436
364379msgid ""
365380"If passcode is entered incorrectly, your phone will conduct a factory reset "
366381"and all personal data will be deleted."
@@ -368,6 +383,3 @@ msgstr ""
368383"Si le code est saisi de manière incorrecte, votre téléphone effectuera une "
369384"réinitialisation aux paramètres d'usine et toutes les données personnelles "
370385"seront supprimées."
371−
372−#~ msgid "Manage Dash"
373−#~ msgstr "Gérer le tableau de bord"
po/gd.po+105−90
@@ -7,15 +7,17 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
11−"PO-Revision-Date: 2014-09-25 12:40+0000\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
11+"PO-Revision-Date: 2014-10-09 18:09+0000\n"
1212"Last-Translator: GunChleoc <Unknown>\n"
1313"Language-Team: Fòram na Gàidhlig\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:19+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : "
18+"(n > 2 && n < 20) ? 2 : 3;\n"
19+"X-Launchpad-Export-Date: 2014-11-06 06:40+0000\n"
20+"X-Generator: Launchpad (build 17223)\n"
1921"Language: gd\n"
2022
2123#: plugins/LightDM/Greeter.cpp:130
@@ -31,45 +33,70 @@ msgstr "Prìnich ath-ghoirid"
3133msgid "Unpin shortcut"
3234msgstr "Neo-phrìnich an ath-ghoirid"
3335
34−#: qml/Components/Dialogs.qml:70
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+
61+#: qml/Components/Dialogs.qml:74
3562msgid "Log out"
3663msgstr "Clàraich a-mach"
3764
38−#: qml/Components/Dialogs.qml:71
65+#: qml/Components/Dialogs.qml:75
3966msgid "Are you sure you want to log out?"
4067msgstr "A bheil thu cinnteach gu bheil thu airson clàradh a-mach?"
4168
42−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
43−#: qml/Components/Dialogs.qml:122
69+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
70+#: qml/Components/Dialogs.qml:126
4471msgid "No"
4572msgstr "Chan eil"
4673
47−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
48−#: qml/Components/Dialogs.qml:129
74+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
75+#: qml/Components/Dialogs.qml:133
4976msgid "Yes"
5077msgstr "Tha"
5178
52−#: qml/Components/Dialogs.qml:94
79+#: qml/Components/Dialogs.qml:98
5380msgid "Shut down"
5481msgstr "Dùin sìos"
5582
56−#: qml/Components/Dialogs.qml:95
83+#: qml/Components/Dialogs.qml:99
5784msgid "Are you sure you want to shut down?"
5885msgstr "A bheil thu cinnteach gu bheil thu airson a dhùnadh sìos?"
5986
60−#: qml/Components/Dialogs.qml:119
87+#: qml/Components/Dialogs.qml:123
6188msgid "Reboot"
6289msgstr "Ath-thòisich an siostam"
6390
64−#: qml/Components/Dialogs.qml:120
91+#: qml/Components/Dialogs.qml:124
6592msgid "Are you sure you want to reboot?"
6693msgstr "A bheil thu cinnteach gu bheil thu airson tòiseachadh às ùr?"
6794
68−#: qml/Components/Dialogs.qml:144
95+#: qml/Components/Dialogs.qml:148
6996msgid "Power"
7097msgstr "Cumhachd"
7198
72−#: qml/Components/Dialogs.qml:145
99+#: qml/Components/Dialogs.qml:149
73100msgid ""
74101"Are you sure you would like\n"
75102"to power off?"
@@ -77,15 +104,15 @@ msgstr ""
77104"A bheil thu cinnteach gu bheil thu\n"
78105"airson a' chumhachd a chur dheth?"
79106
80−#: qml/Components/Dialogs.qml:147
107+#: qml/Components/Dialogs.qml:151
81108msgid "Power off"
82109msgstr "Cuir a' chumhachd dheth"
83110
84−#: qml/Components/Dialogs.qml:157
111+#: qml/Components/Dialogs.qml:161
85112msgid "Restart"
86113msgstr "Ath-thòisich"
87114
88−#: qml/Components/Dialogs.qml:167
115+#: qml/Components/Dialogs.qml:171
89116msgid "Cancel"
90117msgstr "Sguir dheth"
91118
@@ -121,21 +148,21 @@ msgstr "Dùin"
121148msgid "Swipe up again to close the settings screen"
122149msgstr "Dèan grad-shlaighdeadh a-nìos gus sgrìn nan roghainnean a dhùnadh"
123150
124−#: qml/Components/EdgeDemo.qml:198
151+#: qml/Components/EdgeDemo.qml:201
125152msgid "Left edge"
126153msgstr "An oir chlì"
127154
128−#: qml/Components/EdgeDemo.qml:199
155+#: qml/Components/EdgeDemo.qml:202
129156msgid "Swipe from the left to reveal the launcher for quick access to apps"
130157msgstr ""
131158"Dèan grad-shlaighdeadh on oir chlì air an lòinseir a bheir dhut cothrom "
132159"luath air na h-aplacaidean"
133160
134−#: qml/Components/EdgeDemo.qml:226
161+#: qml/Components/EdgeDemo.qml:229
135162msgid "Well done"
136163msgstr "Gasta!"
137164
138−#: qml/Components/EdgeDemo.qml:227
165+#: qml/Components/EdgeDemo.qml:230
139166msgid ""
140167"You have now mastered the edge gestures and can start using the "
141168"phone<br><br>Tap on the screen to start"
@@ -143,40 +170,27 @@ msgstr ""
143170"Fhuair thu air na gluasadan oire ceart a dhèanamh a-nis agus is urrainn dhut "
144171"am fòn a chleachdadh<br><br>Thoir gnogag air an sgrìn airson tòiseachadh"
145172
146−#: qml/Components/Lockscreen.qml:167
147−msgid "Please wait"
148−msgstr "Fuirich ort"
149−
150−#: qml/Components/Lockscreen.qml:172
151−msgid "Too many incorrect attempts"
152−msgstr "Cus oidhirpean leis nach do shoirbhich"
173+#: qml/Components/Lockscreen.qml:223
174+msgid "Return to Call"
175+msgstr ""
153176
154−#: qml/Components/Lockscreen.qml:206
177+#: qml/Components/Lockscreen.qml:223
155178msgid "Emergency Call"
156179msgstr "Gairm èiginn"
157180
158−#: qml/Components/Lockscreen.qml:226
181+#: qml/Components/Lockscreen.qml:255
159182msgid "OK"
160183msgstr "Ceart ma-thà"
161184
162−#: qml/Components/PassphraseLockscreen.qml:61
163−#, qt-format
164−msgid "Hello %1"
165−msgstr "Shin thu, %1"
166−
167−#: qml/Components/PassphraseLockscreen.qml:61
168−msgid "Hello"
169−msgstr "Shin thu"
170−
171−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
185+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
172186msgid "See less"
173187msgstr "Seall nas lugha"
174188
175−#: qml/Dash/GenericScopeView.qml:411
189+#: qml/Dash/GenericScopeView.qml:434
176190msgid "See all"
177191msgstr "Seall na h-uile"
178192
179−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
193+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
180194#: qml/Panel/SearchIndicator.qml:27
181195msgid "Search"
182196msgstr "Lorg"
@@ -213,15 +227,23 @@ msgstr "Cuir lèirmheas ris"
213227msgid "Send"
214228msgstr "Cuir"
215229
216−#: qml/Dash/ScopesOverview.qml:206
230+#: qml/Dash/PullToRefreshScopeStyle.qml:55
231+msgid "Pull to refresh…"
232+msgstr "Tarraing airson ath-nuadhachadh…"
233+
234+#: qml/Dash/PullToRefreshScopeStyle.qml:60
235+msgid "Release to refresh…"
236+msgstr "Leig às airson ath-nuadhachadh…"
237+
238+#: qml/Dash/ScopesOverview.qml:215
217239msgid "Manage Scopes"
218−msgstr ""
240+msgstr "Stiùirich na sgòpaichean"
219241
220−#: qml/Dash/ScopesOverview.qml:428
242+#: qml/Dash/ScopesOverview.qml:437
221243msgid "Done"
222244msgstr "Deiseil"
223245
224−#: qml/Dash/ScopesOverview.qml:454
246+#: qml/Dash/ScopesOverview.qml:463
225247msgid "Store"
226248msgstr "Am bùth"
227249
@@ -233,9 +255,9 @@ msgstr "Annsachdan"
233255msgid "All"
234256msgstr "Na h-uile"
235257
236−#: qml/Greeter/Greeter.qml:157
237−msgid "Swipe to unlock"
238−msgstr "Dèan grad-shlaighdeadh gus a' ghlas a thoirt dheth"
258+#: qml/Greeter/Greeter.qml:174
259+msgid "Unlock"
260+msgstr "Thoir a' ghlas dheth"
239261
240262#: qml/Hud/HudParametrizedActionsPage.qml:139
241263msgid "Confirm"
@@ -257,51 +279,43 @@ msgstr "Can rud a-nis..."
257279msgid "Speaking..."
258280msgstr "A' bruidhinn..."
259281
260−#: qml/Notifications/NotificationMenuItemFactory.qml:108
282+#: qml/Notifications/NotificationMenuItemFactory.qml:116
261283msgid "Show password"
262284msgstr "Seall am facal-faire"
263285
264−#: qml/Notifications/NotificationMenuItemFactory.qml:124
265−msgid "Enter SIM PIN"
266−msgstr "Cuir a-steach PIN an t-SIM"
267−
268−#: qml/Notifications/NotificationMenuItemFactory.qml:125
269−msgid "Sorry, incorrect PIN"
270−msgstr "Duilich ach tha a' PIN cearr"
271−
272−#: qml/Panel/ActiveCallHint.qml:77
286+#: qml/Panel/ActiveCallHint.qml:79
273287msgid "Tap to return to call..."
274288msgstr "Gnog gus tilleadh dhan ghairm..."
275289
276−#: qml/Panel/ActiveCallHint.qml:90
290+#: qml/Panel/ActiveCallHint.qml:92
277291msgid "Conference"
278292msgstr "Gairm co-labhairt"
279293
280−#: qml/Panel/Indicators/MenuItemFactory.qml:600
294+#: qml/Panel/Indicators/MenuItemFactory.qml:615
281295msgid "Nothing is playing"
282−msgstr ""
296+msgstr "Chan eil dad 'ga chluich"
283297
284−#: qml/Panel/Indicators/MenuItemFactory.qml:748
298+#: qml/Panel/Indicators/MenuItemFactory.qml:763
285299msgid "In queue…"
286300msgstr "Air a' chiudha…"
287301
288−#: qml/Panel/Indicators/MenuItemFactory.qml:752
302+#: qml/Panel/Indicators/MenuItemFactory.qml:767
289303msgid "Downloading"
290304msgstr "'Ga luchdadh a-nuas"
291305
292−#: qml/Panel/Indicators/MenuItemFactory.qml:754
306+#: qml/Panel/Indicators/MenuItemFactory.qml:769
293307msgid "Paused, tap to resume"
294308msgstr "'Na stad, thoir gnogag gus leantainn air"
295309
296−#: qml/Panel/Indicators/MenuItemFactory.qml:756
310+#: qml/Panel/Indicators/MenuItemFactory.qml:771
297311msgid "Canceled"
298312msgstr "Air a sgur dheth"
299313
300−#: qml/Panel/Indicators/MenuItemFactory.qml:758
314+#: qml/Panel/Indicators/MenuItemFactory.qml:773
301315msgid "Finished"
302316msgstr "Coileanta"
303317
304−#: qml/Panel/Indicators/MenuItemFactory.qml:760
318+#: qml/Panel/Indicators/MenuItemFactory.qml:775
305319msgid "Failed, tap to retry"
306320msgstr "Dh'fhàillig leis, thoir gnogag gus feuchainn a-rithist"
307321
@@ -313,45 +327,49 @@ msgstr "Thoir a' ghlas far an SIM"
313327msgid "Roaming"
314328msgstr "Air fàrsan"
315329
316−#: qml/Shell.qml:320
317−msgid "Enter your passphrase"
318−msgstr "Cuir an abairt-fhaire agad a-steach"
330+#: qml/Shell.qml:381
331+msgid "Enter passphrase"
332+msgstr "Cuir abairt-fhaire a-steach"
319333
320−#: qml/Shell.qml:321
334+#: qml/Shell.qml:382
321335msgid "Sorry, incorrect passphrase"
322336msgstr "Duilich ach tha an abairt-fhaire cearr"
323337
324−#: qml/Shell.qml:323
325−msgid "Enter your passcode"
326−msgstr "Cuir an còd-faire agad a-steach"
338+#: qml/Shell.qml:383
339+msgid "Please re-enter"
340+msgstr "Cuir a-steach e a-rithist"
327341
328−#: qml/Shell.qml:324
342+#: qml/Shell.qml:385
343+msgid "Enter passcode"
344+msgstr "Cuir còd-faire a-steach"
345+
346+#: qml/Shell.qml:386
329347msgid "Sorry, incorrect passcode"
330348msgstr "Duilich ach tha an còd-faire cearr"
331349
332−#: qml/Shell.qml:327
350+#: qml/Shell.qml:389
333351#, qt-format
334−msgid "Enter your %1"
335−msgstr "Cuir a-steach a' %1 agad"
352+msgid "Enter %1"
353+msgstr "Cuir a-steach %1"
336354
337−#: qml/Shell.qml:328
355+#: qml/Shell.qml:390
338356#, qt-format
339357msgid "Sorry, incorrect %1"
340358msgstr "Duilich ach tha a' %1 cearr"
341359
342−#: qml/Shell.qml:363
360+#: qml/Shell.qml:431
343361msgid "Sorry, incorrect passphrase."
344362msgstr "Duilich ach tha an abairt-fhaire cearr."
345363
346−#: qml/Shell.qml:364
364+#: qml/Shell.qml:432
347365msgid "Sorry, incorrect passcode."
348366msgstr "Duilich ach tha an còd-faire cearr."
349367
350−#: qml/Shell.qml:365
368+#: qml/Shell.qml:433
351369msgid "This will be your last attempt."
352370msgstr "Seo an oidhirp mu dheireadh agad."
353371
354−#: qml/Shell.qml:367
372+#: qml/Shell.qml:435
355373msgid ""
356374"If passphrase is entered incorrectly, your phone will conduct a factory "
357375"reset and all personal data will be deleted."
@@ -360,7 +378,7 @@ msgstr ""
360378"ath-shuidheachadh air roghainnean an fhactaraidh agus thèid gach dàta "
361379"pearsanta a sguabadh às."
362380
363−#: qml/Shell.qml:368
381+#: qml/Shell.qml:436
364382msgid ""
365383"If passcode is entered incorrectly, your phone will conduct a factory reset "
366384"and all personal data will be deleted."
@@ -368,6 +386,3 @@ msgstr ""
368386"Ma thèid an còd-faire a chur a-steach mar bu chòir, thèid an fhòn agad a ath-"
369387"shuidheachadh air roghainnean an fhactaraidh agus thèid gach dàta pearsanta "
370388"a sguabadh às."
371−
372−#~ msgid "Manage Dash"
373−#~ msgstr "Stiùirich an deas-bhòrd"
po/gl.po+93−85
@@ -7,15 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
11−"PO-Revision-Date: 2014-09-28 13:57+0000\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
11+"PO-Revision-Date: 2014-11-06 13:30+0000\n"
1212"Last-Translator: Marcos Lans <Unknown>\n"
1313"Language-Team: Galician <gl@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:19+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
18+"X-Launchpad-Export-Date: 2014-11-07 06:52+0000\n"
19+"X-Generator: Launchpad (build 17231)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
@@ -30,59 +31,78 @@ msgstr "Fixar o atallo"
3031msgid "Unpin shortcut"
3132msgstr "Eliminar o atallo"
3233
33−#: qml/Components/Dialogs.qml:70
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+
53+#: qml/Components/Dialogs.qml:74
3454msgid "Log out"
3555msgstr "Saír da sesión"
3656
37−#: qml/Components/Dialogs.qml:71
57+#: qml/Components/Dialogs.qml:75
3858msgid "Are you sure you want to log out?"
3959msgstr "Está seguro de querer pechar a sesión?"
4060
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
61+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
62+#: qml/Components/Dialogs.qml:126
4363msgid "No"
4464msgstr "Non"
4565
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
66+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
67+#: qml/Components/Dialogs.qml:133
4868msgid "Yes"
4969msgstr "Si"
5070
51−#: qml/Components/Dialogs.qml:94
71+#: qml/Components/Dialogs.qml:98
5272msgid "Shut down"
5373msgstr "Apagar"
5474
55−#: qml/Components/Dialogs.qml:95
75+#: qml/Components/Dialogs.qml:99
5676msgid "Are you sure you want to shut down?"
5777msgstr "Está seguro de querer apagar?"
5878
59−#: qml/Components/Dialogs.qml:119
79+#: qml/Components/Dialogs.qml:123
6080msgid "Reboot"
6181msgstr "Reiniciar"
6282
63−#: qml/Components/Dialogs.qml:120
83+#: qml/Components/Dialogs.qml:124
6484msgid "Are you sure you want to reboot?"
6585msgstr "Está seguro de querer reiniciar?"
6686
67−#: qml/Components/Dialogs.qml:144
87+#: qml/Components/Dialogs.qml:148
6888msgid "Power"
6989msgstr "Enerxía"
7090
71−#: qml/Components/Dialogs.qml:145
91+#: qml/Components/Dialogs.qml:149
7292msgid ""
7393"Are you sure you would like\n"
7494"to power off?"
7595msgstr "Está seguro de querer apagar?"
7696
77−#: qml/Components/Dialogs.qml:147
97+#: qml/Components/Dialogs.qml:151
7898msgid "Power off"
7999msgstr "Apagar"
80100
81−#: qml/Components/Dialogs.qml:157
101+#: qml/Components/Dialogs.qml:161
82102msgid "Restart"
83103msgstr "Reiniciar"
84104
85−#: qml/Components/Dialogs.qml:167
105+#: qml/Components/Dialogs.qml:171
86106msgid "Cancel"
87107msgstr "Cancelar"
88108
@@ -114,21 +134,21 @@ msgstr "Pechar"
114134msgid "Swipe up again to close the settings screen"
115135msgstr "Esvare o dedo de novo cara a arriba para pechar os axustes"
116136
117−#: qml/Components/EdgeDemo.qml:198
137+#: qml/Components/EdgeDemo.qml:201
118138msgid "Left edge"
119139msgstr "Bordo esquerdo"
120140
121−#: qml/Components/EdgeDemo.qml:199
141+#: qml/Components/EdgeDemo.qml:202
122142msgid "Swipe from the left to reveal the launcher for quick access to apps"
123143msgstr ""
124144"Esvare o dedo desde a esquerda para mostrar o iniciador rápido dos "
125145"aplicativos"
126146
127−#: qml/Components/EdgeDemo.qml:226
147+#: qml/Components/EdgeDemo.qml:229
128148msgid "Well done"
129149msgstr "Ben feito!"
130150
131−#: qml/Components/EdgeDemo.qml:227
151+#: qml/Components/EdgeDemo.qml:230
132152msgid ""
133153"You have now mastered the edge gestures and can start using the "
134154"phone<br><br>Tap on the screen to start"
@@ -136,40 +156,27 @@ msgstr ""
136156"Agora xa domina os xestos dos bordos e pode comezar a usar o "
137157"teléfono<br><br>Toque na pantalla para comezar"
138158
139−#: qml/Components/Lockscreen.qml:167
140−msgid "Please wait"
141−msgstr "Agarde"
142−
143−#: qml/Components/Lockscreen.qml:172
144−msgid "Too many incorrect attempts"
145−msgstr "Demasiados erros"
159+#: qml/Components/Lockscreen.qml:223
160+msgid "Return to Call"
161+msgstr "Volver á chamada"
146162
147−#: qml/Components/Lockscreen.qml:206
163+#: qml/Components/Lockscreen.qml:223
148164msgid "Emergency Call"
149165msgstr "Chamada de emerxencia"
150166
151−#: qml/Components/Lockscreen.qml:226
167+#: qml/Components/Lockscreen.qml:255
152168msgid "OK"
153169msgstr "Aceptar"
154170
155−#: qml/Components/PassphraseLockscreen.qml:61
156−#, qt-format
157−msgid "Hello %1"
158−msgstr "Ola %1"
159−
160−#: qml/Components/PassphraseLockscreen.qml:61
161−msgid "Hello"
162−msgstr "Ola"
163−
164−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
171+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
165172msgid "See less"
166173msgstr "Ver menos"
167174
168−#: qml/Dash/GenericScopeView.qml:411
175+#: qml/Dash/GenericScopeView.qml:434
169176msgid "See all"
170177msgstr "Ver todo"
171178
172−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
179+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
173180#: qml/Panel/SearchIndicator.qml:27
174181msgid "Search"
175182msgstr "Buscar"
@@ -206,15 +213,23 @@ msgstr "Engadir unha opinión"
206213msgid "Send"
207214msgstr "Enviar"
208215
209−#: qml/Dash/ScopesOverview.qml:206
216+#: qml/Dash/PullToRefreshScopeStyle.qml:55
217+msgid "Pull to refresh…"
218+msgstr "Tirar para actualizar..."
219+
220+#: qml/Dash/PullToRefreshScopeStyle.qml:60
221+msgid "Release to refresh…"
222+msgstr "Soltar para actualizar"
223+
224+#: qml/Dash/ScopesOverview.qml:215
210225msgid "Manage Scopes"
211226msgstr "Xestionar os Ámbitos"
212227
213−#: qml/Dash/ScopesOverview.qml:428
228+#: qml/Dash/ScopesOverview.qml:437
214229msgid "Done"
215230msgstr "Feito"
216231
217−#: qml/Dash/ScopesOverview.qml:454
232+#: qml/Dash/ScopesOverview.qml:463
218233msgid "Store"
219234msgstr "Tenda"
220235
@@ -226,9 +241,9 @@ msgstr "Favoritos"
226241msgid "All"
227242msgstr "Todos"
228243
229−#: qml/Greeter/Greeter.qml:157
230−msgid "Swipe to unlock"
231−msgstr "Esvare o dedo para desbloquear"
244+#: qml/Greeter/Greeter.qml:174
245+msgid "Unlock"
246+msgstr "Desbloquear"
232247
233248#: qml/Hud/HudParametrizedActionsPage.qml:139
234249msgid "Confirm"
@@ -250,51 +265,43 @@ msgstr "Fale agora…"
250265msgid "Speaking..."
251266msgstr "Falando…"
252267
253−#: qml/Notifications/NotificationMenuItemFactory.qml:108
268+#: qml/Notifications/NotificationMenuItemFactory.qml:116
254269msgid "Show password"
255270msgstr "Mostrar contrasinal"
256271
257−#: qml/Notifications/NotificationMenuItemFactory.qml:124
258−msgid "Enter SIM PIN"
259−msgstr "Introduza o PIN da SIM"
260−
261−#: qml/Notifications/NotificationMenuItemFactory.qml:125
262−msgid "Sorry, incorrect PIN"
263−msgstr "Sentímolo, o PIN é incorrecto"
264−
265−#: qml/Panel/ActiveCallHint.qml:77
272+#: qml/Panel/ActiveCallHint.qml:79
266273msgid "Tap to return to call..."
267274msgstr "Toque para volver a chamar..."
268275
269−#: qml/Panel/ActiveCallHint.qml:90
276+#: qml/Panel/ActiveCallHint.qml:92
270277msgid "Conference"
271278msgstr "Conferencia"
272279
273−#: qml/Panel/Indicators/MenuItemFactory.qml:600
280+#: qml/Panel/Indicators/MenuItemFactory.qml:615
274281msgid "Nothing is playing"
275282msgstr "Non hai nada en reprodución"
276283
277−#: qml/Panel/Indicators/MenuItemFactory.qml:748
284+#: qml/Panel/Indicators/MenuItemFactory.qml:763
278285msgid "In queue…"
279286msgstr "Na cola..."
280287
281−#: qml/Panel/Indicators/MenuItemFactory.qml:752
288+#: qml/Panel/Indicators/MenuItemFactory.qml:767
282289msgid "Downloading"
283290msgstr "Descargando"
284291
285−#: qml/Panel/Indicators/MenuItemFactory.qml:754
292+#: qml/Panel/Indicators/MenuItemFactory.qml:769
286293msgid "Paused, tap to resume"
287294msgstr "Detido, toque para continuar"
288295
289−#: qml/Panel/Indicators/MenuItemFactory.qml:756
296+#: qml/Panel/Indicators/MenuItemFactory.qml:771
290297msgid "Canceled"
291298msgstr "Cancelado"
292299
293−#: qml/Panel/Indicators/MenuItemFactory.qml:758
300+#: qml/Panel/Indicators/MenuItemFactory.qml:773
294301msgid "Finished"
295302msgstr "Rematado"
296303
297−#: qml/Panel/Indicators/MenuItemFactory.qml:760
304+#: qml/Panel/Indicators/MenuItemFactory.qml:775
298305msgid "Failed, tap to retry"
299306msgstr "Fallou, toque para reintentar"
300307
@@ -306,45 +313,49 @@ msgstr "Desbloquear a SIM"
306313msgid "Roaming"
307314msgstr "Itinerancia"
308315
309−#: qml/Shell.qml:320
310−msgid "Enter your passphrase"
316+#: qml/Shell.qml:381
317+msgid "Enter passphrase"
311318msgstr "Introduza a frase secreta"
312319
313−#: qml/Shell.qml:321
320+#: qml/Shell.qml:382
314321msgid "Sorry, incorrect passphrase"
315322msgstr "Sentímolo a frase é incorrecta"
316323
317−#: qml/Shell.qml:323
318−msgid "Enter your passcode"
324+#: qml/Shell.qml:383
325+msgid "Please re-enter"
326+msgstr "Introducir de novo"
327+
328+#: qml/Shell.qml:385
329+msgid "Enter passcode"
319330msgstr "Introduza a clave"
320331
321−#: qml/Shell.qml:324
332+#: qml/Shell.qml:386
322333msgid "Sorry, incorrect passcode"
323334msgstr "Sentímolo, a clave é incorrecta"
324335
325−#: qml/Shell.qml:327
336+#: qml/Shell.qml:389
326337#, qt-format
327−msgid "Enter your %1"
338+msgid "Enter %1"
328339msgstr "Introducir %1"
329340
330−#: qml/Shell.qml:328
341+#: qml/Shell.qml:390
331342#, qt-format
332343msgid "Sorry, incorrect %1"
333344msgstr "Sentímolo, %1 non coincide"
334345
335−#: qml/Shell.qml:363
346+#: qml/Shell.qml:431
336347msgid "Sorry, incorrect passphrase."
337348msgstr "Sentímolo a frase é incorrecta."
338349
339−#: qml/Shell.qml:364
350+#: qml/Shell.qml:432
340351msgid "Sorry, incorrect passcode."
341352msgstr "Sentímolo, a clave é incorrecta."
342353
343−#: qml/Shell.qml:365
354+#: qml/Shell.qml:433
344355msgid "This will be your last attempt."
345356msgstr "Este será o seu último intento."
346357
347−#: qml/Shell.qml:367
358+#: qml/Shell.qml:435
348359msgid ""
349360"If passphrase is entered incorrectly, your phone will conduct a factory "
350361"reset and all personal data will be deleted."
@@ -352,13 +363,10 @@ msgstr ""
352363"Se a frase de paso introducida é incorrecta, o teléfono restabelecerá os "
353364"valores de fábrica e perderá todos os datos persoais."
354365
355−#: qml/Shell.qml:368
366+#: qml/Shell.qml:436
356367msgid ""
357368"If passcode is entered incorrectly, your phone will conduct a factory reset "
358369"and all personal data will be deleted."
359370msgstr ""
360371"Se a clave introducida é incorrecta, o teléfono restabelecerá os valores de "
361372"fábrica e perderá todos os datos persoais."
362−
363−#~ msgid "Manage Dash"
364−#~ msgstr "Xestión do Panel"
po/he.po+93−82
@@ -7,15 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
1111"PO-Revision-Date: 2014-08-23 14:19+0000\n"
1212"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
1313"Language-Team: Hebrew <he@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:19+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
18+"X-Launchpad-Export-Date: 2014-11-06 06:40+0000\n"
19+"X-Generator: Launchpad (build 17223)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
@@ -30,59 +31,78 @@ msgstr "הצמדת קיצור דרך"
3031msgid "Unpin shortcut"
3132msgstr "הפרדת קיצור הדרך"
3233
33−#: qml/Components/Dialogs.qml:70
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+
53+#: qml/Components/Dialogs.qml:74
3454msgid "Log out"
3555msgstr ""
3656
37−#: qml/Components/Dialogs.qml:71
57+#: qml/Components/Dialogs.qml:75
3858msgid "Are you sure you want to log out?"
3959msgstr ""
4060
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
61+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
62+#: qml/Components/Dialogs.qml:126
4363msgid "No"
4464msgstr ""
4565
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
66+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
67+#: qml/Components/Dialogs.qml:133
4868msgid "Yes"
4969msgstr ""
5070
51−#: qml/Components/Dialogs.qml:94
71+#: qml/Components/Dialogs.qml:98
5272msgid "Shut down"
5373msgstr ""
5474
55−#: qml/Components/Dialogs.qml:95
75+#: qml/Components/Dialogs.qml:99
5676msgid "Are you sure you want to shut down?"
5777msgstr ""
5878
59−#: qml/Components/Dialogs.qml:119
79+#: qml/Components/Dialogs.qml:123
6080msgid "Reboot"
6181msgstr ""
6282
63−#: qml/Components/Dialogs.qml:120
83+#: qml/Components/Dialogs.qml:124
6484msgid "Are you sure you want to reboot?"
6585msgstr ""
6686
67−#: qml/Components/Dialogs.qml:144
87+#: qml/Components/Dialogs.qml:148
6888msgid "Power"
6989msgstr ""
7090
71−#: qml/Components/Dialogs.qml:145
91+#: qml/Components/Dialogs.qml:149
7292msgid ""
7393"Are you sure you would like\n"
7494"to power off?"
7595msgstr ""
7696
77−#: qml/Components/Dialogs.qml:147
97+#: qml/Components/Dialogs.qml:151
7898msgid "Power off"
7999msgstr "כיבוי"
80100
81−#: qml/Components/Dialogs.qml:157
101+#: qml/Components/Dialogs.qml:161
82102msgid "Restart"
83103msgstr ""
84104
85−#: qml/Components/Dialogs.qml:167
105+#: qml/Components/Dialogs.qml:171
86106msgid "Cancel"
87107msgstr "ביטול"
88108
@@ -114,19 +134,19 @@ msgstr "סגירה"
114134msgid "Swipe up again to close the settings screen"
115135msgstr "ניתן למשוך שוב כדי לסגור את מסך ההגדרות"
116136
117−#: qml/Components/EdgeDemo.qml:198
137+#: qml/Components/EdgeDemo.qml:201
118138msgid "Left edge"
119139msgstr "שול שמאלי"
120140
121−#: qml/Components/EdgeDemo.qml:199
141+#: qml/Components/EdgeDemo.qml:202
122142msgid "Swipe from the left to reveal the launcher for quick access to apps"
123143msgstr "יש למשוך משמאל כדי לחשוף את המשגר לצורך גישה מהירה ליישומים"
124144
125−#: qml/Components/EdgeDemo.qml:226
145+#: qml/Components/EdgeDemo.qml:229
126146msgid "Well done"
127147msgstr "כל הכבוד"
128148
129−#: qml/Components/EdgeDemo.qml:227
149+#: qml/Components/EdgeDemo.qml:230
130150msgid ""
131151"You have now mastered the edge gestures and can start using the "
132152"phone<br><br>Tap on the screen to start"
@@ -134,40 +154,27 @@ msgstr ""
134154"ברגעים אלו סיימת את התמחותך בשימוש במחוות קצה והטלפון פתוח לשימושך<br><br>נא "
135155"לגעת במסך כדי להתחיל"
136156
137−#: qml/Components/Lockscreen.qml:167
138−msgid "Please wait"
139−msgstr "נא להמתין"
140−
141−#: qml/Components/Lockscreen.qml:172
142−msgid "Too many incorrect attempts"
143−msgstr "יותר מדי ניסיונות שגויים"
157+#: qml/Components/Lockscreen.qml:223
158+msgid "Return to Call"
159+msgstr ""
144160
145−#: qml/Components/Lockscreen.qml:206
161+#: qml/Components/Lockscreen.qml:223
146162msgid "Emergency Call"
147163msgstr "שיחת חירום"
148164
149−#: qml/Components/Lockscreen.qml:226
165+#: qml/Components/Lockscreen.qml:255
150166msgid "OK"
151167msgstr "אישור"
152168
153−#: qml/Components/PassphraseLockscreen.qml:61
154−#, qt-format
155−msgid "Hello %1"
156−msgstr "שלום %1"
157−
158−#: qml/Components/PassphraseLockscreen.qml:61
159−msgid "Hello"
160−msgstr "שלום"
161−
162−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
169+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
163170msgid "See less"
164171msgstr "לראות פחות"
165172
166−#: qml/Dash/GenericScopeView.qml:411
173+#: qml/Dash/GenericScopeView.qml:434
167174msgid "See all"
168175msgstr "להציג הכול"
169176
170−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
177+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
171178#: qml/Panel/SearchIndicator.qml:27
172179msgid "Search"
173180msgstr "חיפוש"
@@ -204,15 +211,23 @@ msgstr "הוספת סקירה"
204211msgid "Send"
205212msgstr "שליחה"
206213
207−#: qml/Dash/ScopesOverview.qml:206
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+
222+#: qml/Dash/ScopesOverview.qml:215
208223msgid "Manage Scopes"
209224msgstr ""
210225
211−#: qml/Dash/ScopesOverview.qml:428
226+#: qml/Dash/ScopesOverview.qml:437
212227msgid "Done"
213228msgstr "סיימתי"
214229
215−#: qml/Dash/ScopesOverview.qml:454
230+#: qml/Dash/ScopesOverview.qml:463
216231msgid "Store"
217232msgstr "אחסון"
218233
@@ -224,9 +239,9 @@ msgstr "מועדפים"
224239msgid "All"
225240msgstr "הכול"
226241
227−#: qml/Greeter/Greeter.qml:157
228−msgid "Swipe to unlock"
229−msgstr "יש להחליק לפתיחה"
242+#: qml/Greeter/Greeter.qml:174
243+msgid "Unlock"
244+msgstr ""
230245
231246#: qml/Hud/HudParametrizedActionsPage.qml:139
232247msgid "Confirm"
@@ -248,51 +263,43 @@ msgstr "יש לדבר כעת..."
248263msgid "Speaking..."
249264msgstr "הדיבור מושמע…"
250265
251−#: qml/Notifications/NotificationMenuItemFactory.qml:108
266+#: qml/Notifications/NotificationMenuItemFactory.qml:116
252267msgid "Show password"
253268msgstr "הצגת הססמה"
254269
255−#: qml/Notifications/NotificationMenuItemFactory.qml:124
256−msgid "Enter SIM PIN"
257−msgstr ""
258−
259−#: qml/Notifications/NotificationMenuItemFactory.qml:125
260−msgid "Sorry, incorrect PIN"
261−msgstr ""
262−
263−#: qml/Panel/ActiveCallHint.qml:77
270+#: qml/Panel/ActiveCallHint.qml:79
264271msgid "Tap to return to call..."
265272msgstr "יש לגעת כדי להחזיר שיחה…"
266273
267−#: qml/Panel/ActiveCallHint.qml:90
274+#: qml/Panel/ActiveCallHint.qml:92
268275msgid "Conference"
269276msgstr "ועידה"
270277
271−#: qml/Panel/Indicators/MenuItemFactory.qml:600
278+#: qml/Panel/Indicators/MenuItemFactory.qml:615
272279msgid "Nothing is playing"
273280msgstr ""
274281
275−#: qml/Panel/Indicators/MenuItemFactory.qml:748
282+#: qml/Panel/Indicators/MenuItemFactory.qml:763
276283msgid "In queue…"
277284msgstr "בתור…"
278285
279−#: qml/Panel/Indicators/MenuItemFactory.qml:752
286+#: qml/Panel/Indicators/MenuItemFactory.qml:767
280287msgid "Downloading"
281288msgstr "בהורדה"
282289
283−#: qml/Panel/Indicators/MenuItemFactory.qml:754
290+#: qml/Panel/Indicators/MenuItemFactory.qml:769
284291msgid "Paused, tap to resume"
285292msgstr "מושהה, יש לגעת כדי להמשיך"
286293
287−#: qml/Panel/Indicators/MenuItemFactory.qml:756
294+#: qml/Panel/Indicators/MenuItemFactory.qml:771
288295msgid "Canceled"
289296msgstr "בוטל"
290297
291−#: qml/Panel/Indicators/MenuItemFactory.qml:758
298+#: qml/Panel/Indicators/MenuItemFactory.qml:773
292299msgid "Finished"
293300msgstr "הושלם"
294301
295−#: qml/Panel/Indicators/MenuItemFactory.qml:760
302+#: qml/Panel/Indicators/MenuItemFactory.qml:775
296303msgid "Failed, tap to retry"
297304msgstr "נכשל, יש לגעת כדי לנסות שוב"
298305
@@ -304,51 +311,55 @@ msgstr ""
304311msgid "Roaming"
305312msgstr "נדידה"
306313
307−#: qml/Shell.qml:320
308−msgid "Enter your passphrase"
309−msgstr "נא להזין את מילת הצופן שלך"
314+#: qml/Shell.qml:381
315+msgid "Enter passphrase"
316+msgstr ""
310317
311−#: qml/Shell.qml:321
318+#: qml/Shell.qml:382
312319msgid "Sorry, incorrect passphrase"
313320msgstr "מילת הצופן שגויה, עמך הסליחה."
314321
315−#: qml/Shell.qml:323
316−msgid "Enter your passcode"
322+#: qml/Shell.qml:383
323+msgid "Please re-enter"
324+msgstr ""
325+
326+#: qml/Shell.qml:385
327+msgid "Enter passcode"
317328msgstr ""
318329
319−#: qml/Shell.qml:324
330+#: qml/Shell.qml:386
320331msgid "Sorry, incorrect passcode"
321332msgstr ""
322333
323−#: qml/Shell.qml:327
334+#: qml/Shell.qml:389
324335#, qt-format
325−msgid "Enter your %1"
336+msgid "Enter %1"
326337msgstr ""
327338
328−#: qml/Shell.qml:328
339+#: qml/Shell.qml:390
329340#, qt-format
330341msgid "Sorry, incorrect %1"
331342msgstr ""
332343
333−#: qml/Shell.qml:363
344+#: qml/Shell.qml:431
334345msgid "Sorry, incorrect passphrase."
335346msgstr "מילת הצופן שגויה, עמך הסליחה."
336347
337−#: qml/Shell.qml:364
348+#: qml/Shell.qml:432
338349msgid "Sorry, incorrect passcode."
339350msgstr "הצופן שגוי, עם הסליחה."
340351
341−#: qml/Shell.qml:365
352+#: qml/Shell.qml:433
342353msgid "This will be your last attempt."
343354msgstr "זה יהיה הניסיון האחרון שלך."
344355
345−#: qml/Shell.qml:367
356+#: qml/Shell.qml:435
346357msgid ""
347358"If passphrase is entered incorrectly, your phone will conduct a factory "
348359"reset and all personal data will be deleted."
349360msgstr ""
350361
351−#: qml/Shell.qml:368
362+#: qml/Shell.qml:436
352363msgid ""
353364"If passcode is entered incorrectly, your phone will conduct a factory reset "
354365"and all personal data will be deleted."
po/hi.po+90−79
@@ -7,15 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
1111"PO-Revision-Date: 2014-01-15 01:49+0000\n"
1212"Last-Translator: Siddhanathan S. <Unknown>\n"
1313"Language-Team: Hindi <hi@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:19+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
18+"X-Launchpad-Export-Date: 2014-11-06 06:40+0000\n"
19+"X-Generator: Launchpad (build 17223)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
@@ -30,59 +31,78 @@ msgstr ""
3031msgid "Unpin shortcut"
3132msgstr ""
3233
33−#: qml/Components/Dialogs.qml:70
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+
53+#: qml/Components/Dialogs.qml:74
3454msgid "Log out"
3555msgstr ""
3656
37−#: qml/Components/Dialogs.qml:71
57+#: qml/Components/Dialogs.qml:75
3858msgid "Are you sure you want to log out?"
3959msgstr ""
4060
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
61+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
62+#: qml/Components/Dialogs.qml:126
4363msgid "No"
4464msgstr ""
4565
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
66+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
67+#: qml/Components/Dialogs.qml:133
4868msgid "Yes"
4969msgstr ""
5070
51−#: qml/Components/Dialogs.qml:94
71+#: qml/Components/Dialogs.qml:98
5272msgid "Shut down"
5373msgstr ""
5474
55−#: qml/Components/Dialogs.qml:95
75+#: qml/Components/Dialogs.qml:99
5676msgid "Are you sure you want to shut down?"
5777msgstr ""
5878
59−#: qml/Components/Dialogs.qml:119
79+#: qml/Components/Dialogs.qml:123
6080msgid "Reboot"
6181msgstr ""
6282
63−#: qml/Components/Dialogs.qml:120
83+#: qml/Components/Dialogs.qml:124
6484msgid "Are you sure you want to reboot?"
6585msgstr ""
6686
67−#: qml/Components/Dialogs.qml:144
87+#: qml/Components/Dialogs.qml:148
6888msgid "Power"
6989msgstr ""
7090
71−#: qml/Components/Dialogs.qml:145
91+#: qml/Components/Dialogs.qml:149
7292msgid ""
7393"Are you sure you would like\n"
7494"to power off?"
7595msgstr ""
7696
77−#: qml/Components/Dialogs.qml:147
97+#: qml/Components/Dialogs.qml:151
7898msgid "Power off"
7999msgstr ""
80100
81−#: qml/Components/Dialogs.qml:157
101+#: qml/Components/Dialogs.qml:161
82102msgid "Restart"
83103msgstr ""
84104
85−#: qml/Components/Dialogs.qml:167
105+#: qml/Components/Dialogs.qml:171
86106msgid "Cancel"
87107msgstr ""
88108
@@ -114,58 +134,45 @@ msgstr "बंद करें"
114134msgid "Swipe up again to close the settings screen"
115135msgstr ""
116136
117−#: qml/Components/EdgeDemo.qml:198
137+#: qml/Components/EdgeDemo.qml:201
118138msgid "Left edge"
119139msgstr "बायाँ किनारा"
120140
121−#: qml/Components/EdgeDemo.qml:199
141+#: qml/Components/EdgeDemo.qml:202
122142msgid "Swipe from the left to reveal the launcher for quick access to apps"
123143msgstr ""
124144
125−#: qml/Components/EdgeDemo.qml:226
145+#: qml/Components/EdgeDemo.qml:229
126146msgid "Well done"
127147msgstr "शाबाश"
128148
129−#: qml/Components/EdgeDemo.qml:227
149+#: qml/Components/EdgeDemo.qml:230
130150msgid ""
131151"You have now mastered the edge gestures and can start using the "
132152"phone<br><br>Tap on the screen to start"
133153msgstr ""
134154
135−#: qml/Components/Lockscreen.qml:167
136−msgid "Please wait"
137−msgstr ""
138−
139−#: qml/Components/Lockscreen.qml:172
140−msgid "Too many incorrect attempts"
155+#: qml/Components/Lockscreen.qml:223
156+msgid "Return to Call"
141157msgstr ""
142158
143−#: qml/Components/Lockscreen.qml:206
159+#: qml/Components/Lockscreen.qml:223
144160msgid "Emergency Call"
145161msgstr "आपातकालीन कॉल"
146162
147−#: qml/Components/Lockscreen.qml:226
163+#: qml/Components/Lockscreen.qml:255
148164msgid "OK"
149165msgstr ""
150166
151−#: qml/Components/PassphraseLockscreen.qml:61
152−#, qt-format
153−msgid "Hello %1"
154−msgstr ""
155−
156−#: qml/Components/PassphraseLockscreen.qml:61
157−msgid "Hello"
158−msgstr "नमस्ते"
159−
160−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
167+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
161168msgid "See less"
162169msgstr ""
163170
164−#: qml/Dash/GenericScopeView.qml:411
171+#: qml/Dash/GenericScopeView.qml:434
165172msgid "See all"
166173msgstr ""
167174
168−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
175+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
169176#: qml/Panel/SearchIndicator.qml:27
170177msgid "Search"
171178msgstr "खोजें"
@@ -202,15 +209,23 @@ msgstr "समीक्षा दे"
202209msgid "Send"
203210msgstr "भेजें"
204211
205−#: qml/Dash/ScopesOverview.qml:206
212+#: qml/Dash/PullToRefreshScopeStyle.qml:55
213+msgid "Pull to refresh…"
214+msgstr ""
215+
216+#: qml/Dash/PullToRefreshScopeStyle.qml:60
217+msgid "Release to refresh…"
218+msgstr ""
219+
220+#: qml/Dash/ScopesOverview.qml:215
206221msgid "Manage Scopes"
207222msgstr ""
208223
209−#: qml/Dash/ScopesOverview.qml:428
224+#: qml/Dash/ScopesOverview.qml:437
210225msgid "Done"
211226msgstr ""
212227
213−#: qml/Dash/ScopesOverview.qml:454
228+#: qml/Dash/ScopesOverview.qml:463
214229msgid "Store"
215230msgstr ""
216231
@@ -222,8 +237,8 @@ msgstr ""
222237msgid "All"
223238msgstr ""
224239
225−#: qml/Greeter/Greeter.qml:157
226−msgid "Swipe to unlock"
240+#: qml/Greeter/Greeter.qml:174
241+msgid "Unlock"
227242msgstr ""
228243
229244#: qml/Hud/HudParametrizedActionsPage.qml:139
@@ -246,51 +261,43 @@ msgstr "अब बात करें"
246261msgid "Speaking..."
247262msgstr "अब बोल रहे हैं"
248263
249−#: qml/Notifications/NotificationMenuItemFactory.qml:108
264+#: qml/Notifications/NotificationMenuItemFactory.qml:116
250265msgid "Show password"
251266msgstr ""
252267
253−#: qml/Notifications/NotificationMenuItemFactory.qml:124
254−msgid "Enter SIM PIN"
255−msgstr ""
256−
257−#: qml/Notifications/NotificationMenuItemFactory.qml:125
258−msgid "Sorry, incorrect PIN"
259−msgstr ""
260−
261−#: qml/Panel/ActiveCallHint.qml:77
268+#: qml/Panel/ActiveCallHint.qml:79
262269msgid "Tap to return to call..."
263270msgstr ""
264271
265−#: qml/Panel/ActiveCallHint.qml:90
272+#: qml/Panel/ActiveCallHint.qml:92
266273msgid "Conference"
267274msgstr ""
268275
269−#: qml/Panel/Indicators/MenuItemFactory.qml:600
276+#: qml/Panel/Indicators/MenuItemFactory.qml:615
270277msgid "Nothing is playing"
271278msgstr ""
272279
273−#: qml/Panel/Indicators/MenuItemFactory.qml:748
280+#: qml/Panel/Indicators/MenuItemFactory.qml:763
274281msgid "In queue…"
275282msgstr ""
276283
277−#: qml/Panel/Indicators/MenuItemFactory.qml:752
284+#: qml/Panel/Indicators/MenuItemFactory.qml:767
278285msgid "Downloading"
279286msgstr ""
280287
281−#: qml/Panel/Indicators/MenuItemFactory.qml:754
288+#: qml/Panel/Indicators/MenuItemFactory.qml:769
282289msgid "Paused, tap to resume"
283290msgstr ""
284291
285−#: qml/Panel/Indicators/MenuItemFactory.qml:756
292+#: qml/Panel/Indicators/MenuItemFactory.qml:771
286293msgid "Canceled"
287294msgstr ""
288295
289−#: qml/Panel/Indicators/MenuItemFactory.qml:758
296+#: qml/Panel/Indicators/MenuItemFactory.qml:773
290297msgid "Finished"
291298msgstr ""
292299
293−#: qml/Panel/Indicators/MenuItemFactory.qml:760
300+#: qml/Panel/Indicators/MenuItemFactory.qml:775
294301msgid "Failed, tap to retry"
295302msgstr ""
296303
@@ -302,51 +309,55 @@ msgstr ""
302309msgid "Roaming"
303310msgstr ""
304311
305−#: qml/Shell.qml:320
306−msgid "Enter your passphrase"
312+#: qml/Shell.qml:381
313+msgid "Enter passphrase"
307314msgstr ""
308315
309−#: qml/Shell.qml:321
316+#: qml/Shell.qml:382
310317msgid "Sorry, incorrect passphrase"
311318msgstr ""
312319
313−#: qml/Shell.qml:323
314−msgid "Enter your passcode"
320+#: qml/Shell.qml:383
321+msgid "Please re-enter"
322+msgstr ""
323+
324+#: qml/Shell.qml:385
325+msgid "Enter passcode"
315326msgstr ""
316327
317−#: qml/Shell.qml:324
328+#: qml/Shell.qml:386
318329msgid "Sorry, incorrect passcode"
319330msgstr ""
320331
321−#: qml/Shell.qml:327
332+#: qml/Shell.qml:389
322333#, qt-format
323−msgid "Enter your %1"
334+msgid "Enter %1"
324335msgstr ""
325336
326−#: qml/Shell.qml:328
337+#: qml/Shell.qml:390
327338#, qt-format
328339msgid "Sorry, incorrect %1"
329340msgstr ""
330341
331−#: qml/Shell.qml:363
342+#: qml/Shell.qml:431
332343msgid "Sorry, incorrect passphrase."
333344msgstr ""
334345
335−#: qml/Shell.qml:364
346+#: qml/Shell.qml:432
336347msgid "Sorry, incorrect passcode."
337348msgstr ""
338349
339−#: qml/Shell.qml:365
350+#: qml/Shell.qml:433
340351msgid "This will be your last attempt."
341352msgstr ""
342353
343−#: qml/Shell.qml:367
354+#: qml/Shell.qml:435
344355msgid ""
345356"If passphrase is entered incorrectly, your phone will conduct a factory "
346357"reset and all personal data will be deleted."
347358msgstr ""
348359
349−#: qml/Shell.qml:368
360+#: qml/Shell.qml:436
350361msgid ""
351362"If passcode is entered incorrectly, your phone will conduct a factory reset "
352363"and all personal data will be deleted."
po/hr.po+91−79
@@ -7,15 +7,17 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
1111"PO-Revision-Date: 2013-06-27 04:14+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Croatian <hr@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:20+0000\n"
18−"X-Generator: Launchpad (build 17196)\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-11-06 06:40+0000\n"
20+"X-Generator: Launchpad (build 17223)\n"
1921
2022#: plugins/LightDM/Greeter.cpp:130
2123msgid "Password: "
@@ -30,59 +32,78 @@ msgstr ""
3032msgid "Unpin shortcut"
3133msgstr ""
3234
33−#: qml/Components/Dialogs.qml:70
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:74
3455msgid "Log out"
3556msgstr ""
3657
37−#: qml/Components/Dialogs.qml:71
58+#: qml/Components/Dialogs.qml:75
3859msgid "Are you sure you want to log out?"
3960msgstr ""
4061
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
62+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
63+#: qml/Components/Dialogs.qml:126
4364msgid "No"
4465msgstr ""
4566
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
67+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
68+#: qml/Components/Dialogs.qml:133
4869msgid "Yes"
4970msgstr ""
5071
51−#: qml/Components/Dialogs.qml:94
72+#: qml/Components/Dialogs.qml:98
5273msgid "Shut down"
5374msgstr ""
5475
55−#: qml/Components/Dialogs.qml:95
76+#: qml/Components/Dialogs.qml:99
5677msgid "Are you sure you want to shut down?"
5778msgstr ""
5879
59−#: qml/Components/Dialogs.qml:119
80+#: qml/Components/Dialogs.qml:123
6081msgid "Reboot"
6182msgstr ""
6283
63−#: qml/Components/Dialogs.qml:120
84+#: qml/Components/Dialogs.qml:124
6485msgid "Are you sure you want to reboot?"
6586msgstr ""
6687
67−#: qml/Components/Dialogs.qml:144
88+#: qml/Components/Dialogs.qml:148
6889msgid "Power"
6990msgstr ""
7091
71−#: qml/Components/Dialogs.qml:145
92+#: qml/Components/Dialogs.qml:149
7293msgid ""
7394"Are you sure you would like\n"
7495"to power off?"
7596msgstr ""
7697
77−#: qml/Components/Dialogs.qml:147
98+#: qml/Components/Dialogs.qml:151
7899msgid "Power off"
79100msgstr ""
80101
81−#: qml/Components/Dialogs.qml:157
102+#: qml/Components/Dialogs.qml:161
82103msgid "Restart"
83104msgstr ""
84105
85−#: qml/Components/Dialogs.qml:167
106+#: qml/Components/Dialogs.qml:171
86107msgid "Cancel"
87108msgstr ""
88109
@@ -114,58 +135,45 @@ msgstr ""
114135msgid "Swipe up again to close the settings screen"
115136msgstr ""
116137
117−#: qml/Components/EdgeDemo.qml:198
138+#: qml/Components/EdgeDemo.qml:201
118139msgid "Left edge"
119140msgstr ""
120141
121−#: qml/Components/EdgeDemo.qml:199
142+#: qml/Components/EdgeDemo.qml:202
122143msgid "Swipe from the left to reveal the launcher for quick access to apps"
123144msgstr ""
124145
125−#: qml/Components/EdgeDemo.qml:226
146+#: qml/Components/EdgeDemo.qml:229
126147msgid "Well done"
127148msgstr ""
128149
129−#: qml/Components/EdgeDemo.qml:227
150+#: qml/Components/EdgeDemo.qml:230
130151msgid ""
131152"You have now mastered the edge gestures and can start using the "
132153"phone<br><br>Tap on the screen to start"
133154msgstr ""
134155
135−#: qml/Components/Lockscreen.qml:167
136−msgid "Please wait"
137−msgstr ""
138−
139−#: qml/Components/Lockscreen.qml:172
140−msgid "Too many incorrect attempts"
156+#: qml/Components/Lockscreen.qml:223
157+msgid "Return to Call"
141158msgstr ""
142159
143−#: qml/Components/Lockscreen.qml:206
160+#: qml/Components/Lockscreen.qml:223
144161msgid "Emergency Call"
145162msgstr ""
146163
147−#: qml/Components/Lockscreen.qml:226
164+#: qml/Components/Lockscreen.qml:255
148165msgid "OK"
149166msgstr ""
150167
151−#: qml/Components/PassphraseLockscreen.qml:61
152−#, qt-format
153−msgid "Hello %1"
154−msgstr ""
155−
156−#: qml/Components/PassphraseLockscreen.qml:61
157−msgid "Hello"
158−msgstr ""
159−
160−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
168+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
161169msgid "See less"
162170msgstr ""
163171
164−#: qml/Dash/GenericScopeView.qml:411
172+#: qml/Dash/GenericScopeView.qml:434
165173msgid "See all"
166174msgstr ""
167175
168−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
176+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
169177#: qml/Panel/SearchIndicator.qml:27
170178msgid "Search"
171179msgstr "Pretraživanje"
@@ -202,15 +210,23 @@ msgstr ""
202210msgid "Send"
203211msgstr ""
204212
205−#: qml/Dash/ScopesOverview.qml:206
213+#: qml/Dash/PullToRefreshScopeStyle.qml:55
214+msgid "Pull to refresh…"
215+msgstr ""
216+
217+#: qml/Dash/PullToRefreshScopeStyle.qml:60
218+msgid "Release to refresh…"
219+msgstr ""
220+
221+#: qml/Dash/ScopesOverview.qml:215
206222msgid "Manage Scopes"
207223msgstr ""
208224
209−#: qml/Dash/ScopesOverview.qml:428
225+#: qml/Dash/ScopesOverview.qml:437
210226msgid "Done"
211227msgstr ""
212228
213−#: qml/Dash/ScopesOverview.qml:454
229+#: qml/Dash/ScopesOverview.qml:463
214230msgid "Store"
215231msgstr ""
216232
@@ -222,8 +238,8 @@ msgstr ""
222238msgid "All"
223239msgstr ""
224240
225−#: qml/Greeter/Greeter.qml:157
226−msgid "Swipe to unlock"
241+#: qml/Greeter/Greeter.qml:174
242+msgid "Unlock"
227243msgstr ""
228244
229245#: qml/Hud/HudParametrizedActionsPage.qml:139
@@ -246,51 +262,43 @@ msgstr "Recite..."
246262msgid "Speaking..."
247263msgstr "Govor..."
248264
249−#: qml/Notifications/NotificationMenuItemFactory.qml:108
265+#: qml/Notifications/NotificationMenuItemFactory.qml:116
250266msgid "Show password"
251267msgstr ""
252268
253−#: qml/Notifications/NotificationMenuItemFactory.qml:124
254−msgid "Enter SIM PIN"
255−msgstr ""
256−
257−#: qml/Notifications/NotificationMenuItemFactory.qml:125
258−msgid "Sorry, incorrect PIN"
259−msgstr ""
260−
261−#: qml/Panel/ActiveCallHint.qml:77
269+#: qml/Panel/ActiveCallHint.qml:79
262270msgid "Tap to return to call..."
263271msgstr ""
264272
265−#: qml/Panel/ActiveCallHint.qml:90
273+#: qml/Panel/ActiveCallHint.qml:92
266274msgid "Conference"
267275msgstr ""
268276
269−#: qml/Panel/Indicators/MenuItemFactory.qml:600
277+#: qml/Panel/Indicators/MenuItemFactory.qml:615
270278msgid "Nothing is playing"
271279msgstr ""
272280
273−#: qml/Panel/Indicators/MenuItemFactory.qml:748
281+#: qml/Panel/Indicators/MenuItemFactory.qml:763
274282msgid "In queue…"
275283msgstr ""
276284
277−#: qml/Panel/Indicators/MenuItemFactory.qml:752
285+#: qml/Panel/Indicators/MenuItemFactory.qml:767
278286msgid "Downloading"
279287msgstr ""
280288
281−#: qml/Panel/Indicators/MenuItemFactory.qml:754
289+#: qml/Panel/Indicators/MenuItemFactory.qml:769
282290msgid "Paused, tap to resume"
283291msgstr ""
284292
285−#: qml/Panel/Indicators/MenuItemFactory.qml:756
293+#: qml/Panel/Indicators/MenuItemFactory.qml:771
286294msgid "Canceled"
287295msgstr ""
288296
289−#: qml/Panel/Indicators/MenuItemFactory.qml:758
297+#: qml/Panel/Indicators/MenuItemFactory.qml:773
290298msgid "Finished"
291299msgstr ""
292300
293−#: qml/Panel/Indicators/MenuItemFactory.qml:760
301+#: qml/Panel/Indicators/MenuItemFactory.qml:775
294302msgid "Failed, tap to retry"
295303msgstr ""
296304
@@ -302,51 +310,55 @@ msgstr ""
302310msgid "Roaming"
303311msgstr ""
304312
305−#: qml/Shell.qml:320
306−msgid "Enter your passphrase"
313+#: qml/Shell.qml:381
314+msgid "Enter passphrase"
307315msgstr ""
308316
309−#: qml/Shell.qml:321
317+#: qml/Shell.qml:382
310318msgid "Sorry, incorrect passphrase"
311319msgstr ""
312320
313−#: qml/Shell.qml:323
314−msgid "Enter your passcode"
321+#: qml/Shell.qml:383
322+msgid "Please re-enter"
323+msgstr ""
324+
325+#: qml/Shell.qml:385
326+msgid "Enter passcode"
315327msgstr ""
316328
317−#: qml/Shell.qml:324
329+#: qml/Shell.qml:386
318330msgid "Sorry, incorrect passcode"
319331msgstr ""
320332
321−#: qml/Shell.qml:327
333+#: qml/Shell.qml:389
322334#, qt-format
323−msgid "Enter your %1"
335+msgid "Enter %1"
324336msgstr ""
325337
326−#: qml/Shell.qml:328
338+#: qml/Shell.qml:390
327339#, qt-format
328340msgid "Sorry, incorrect %1"
329341msgstr ""
330342
331−#: qml/Shell.qml:363
343+#: qml/Shell.qml:431
332344msgid "Sorry, incorrect passphrase."
333345msgstr ""
334346
335−#: qml/Shell.qml:364
347+#: qml/Shell.qml:432
336348msgid "Sorry, incorrect passcode."
337349msgstr ""
338350
339−#: qml/Shell.qml:365
351+#: qml/Shell.qml:433
340352msgid "This will be your last attempt."
341353msgstr ""
342354
343−#: qml/Shell.qml:367
355+#: qml/Shell.qml:435
344356msgid ""
345357"If passphrase is entered incorrectly, your phone will conduct a factory "
346358"reset and all personal data will be deleted."
347359msgstr ""
348360
349−#: qml/Shell.qml:368
361+#: qml/Shell.qml:436
350362msgid ""
351363"If passcode is entered incorrectly, your phone will conduct a factory reset "
352364"and all personal data will be deleted."
po/hu.po+96−88
@@ -7,15 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
11−"PO-Revision-Date: 2014-09-28 09:02+0000\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
11+"PO-Revision-Date: 2014-11-05 15:45+0000\n"
1212"Last-Translator: Richard Somlói <ricsipontaz@gmail.com>\n"
1313"Language-Team: Hungarian <hu@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:19+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
18+"X-Launchpad-Export-Date: 2014-11-06 06:40+0000\n"
19+"X-Generator: Launchpad (build 17223)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
@@ -30,45 +31,64 @@ msgstr "Indító rögzítése"
3031msgid "Unpin shortcut"
3132msgstr "Indító feloldása"
3233
33−#: qml/Components/Dialogs.qml:70
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+
53+#: qml/Components/Dialogs.qml:74
3454msgid "Log out"
3555msgstr "Kijelentkezés"
3656
37−#: qml/Components/Dialogs.qml:71
57+#: qml/Components/Dialogs.qml:75
3858msgid "Are you sure you want to log out?"
3959msgstr "Biztos benne, hogy kijelentkezik?"
4060
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
61+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
62+#: qml/Components/Dialogs.qml:126
4363msgid "No"
4464msgstr "Nem"
4565
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
66+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
67+#: qml/Components/Dialogs.qml:133
4868msgid "Yes"
4969msgstr "Igen"
5070
51−#: qml/Components/Dialogs.qml:94
71+#: qml/Components/Dialogs.qml:98
5272msgid "Shut down"
5373msgstr "Leállítás"
5474
55−#: qml/Components/Dialogs.qml:95
75+#: qml/Components/Dialogs.qml:99
5676msgid "Are you sure you want to shut down?"
5777msgstr "Biztosan le szeretné állítani?"
5878
59−#: qml/Components/Dialogs.qml:119
79+#: qml/Components/Dialogs.qml:123
6080msgid "Reboot"
6181msgstr "Újraindítás"
6282
63−#: qml/Components/Dialogs.qml:120
83+#: qml/Components/Dialogs.qml:124
6484msgid "Are you sure you want to reboot?"
6585msgstr "Biztosan újra szeretné indítani?"
6686
67−#: qml/Components/Dialogs.qml:144
87+#: qml/Components/Dialogs.qml:148
6888msgid "Power"
6989msgstr "Kikapcsolás"
7090
71−#: qml/Components/Dialogs.qml:145
91+#: qml/Components/Dialogs.qml:149
7292msgid ""
7393"Are you sure you would like\n"
7494"to power off?"
@@ -76,15 +96,15 @@ msgstr ""
7696"Biztos benne, hogy ki\n"
7797"szeretné kapcsolni?"
7898
79−#: qml/Components/Dialogs.qml:147
99+#: qml/Components/Dialogs.qml:151
80100msgid "Power off"
81101msgstr "Kikapcsolás"
82102
83−#: qml/Components/Dialogs.qml:157
103+#: qml/Components/Dialogs.qml:161
84104msgid "Restart"
85105msgstr "Újraindítás"
86106
87−#: qml/Components/Dialogs.qml:167
107+#: qml/Components/Dialogs.qml:171
88108msgid "Cancel"
89109msgstr "Mégse"
90110
@@ -116,21 +136,21 @@ msgstr "Bezárás"
116136msgid "Swipe up again to close the settings screen"
117137msgstr "A beállítások bezárásához csúsztassa ujját újra felfelé"
118138
119−#: qml/Components/EdgeDemo.qml:198
139+#: qml/Components/EdgeDemo.qml:201
120140msgid "Left edge"
121141msgstr "Bal szél"
122142
123−#: qml/Components/EdgeDemo.qml:199
143+#: qml/Components/EdgeDemo.qml:202
124144msgid "Swipe from the left to reveal the launcher for quick access to apps"
125145msgstr ""
126146"Csúsztassa ujját a bal szélről az indítón található alkalmazások gyors "
127147"eléréséhez"
128148
129−#: qml/Components/EdgeDemo.qml:226
149+#: qml/Components/EdgeDemo.qml:229
130150msgid "Well done"
131151msgstr "Rendben"
132152
133−#: qml/Components/EdgeDemo.qml:227
153+#: qml/Components/EdgeDemo.qml:230
134154msgid ""
135155"You have now mastered the edge gestures and can start using the "
136156"phone<br><br>Tap on the screen to start"
@@ -138,40 +158,27 @@ msgstr ""
138158"Elsajátította a gesztusokat, és megkezdheti a telefon "
139159"használatát.<br><br>Koppintson a képernyőre a kezdéshez."
140160
141−#: qml/Components/Lockscreen.qml:167
142−msgid "Please wait"
143−msgstr "Kérem várjon"
144−
145−#: qml/Components/Lockscreen.qml:172
146−msgid "Too many incorrect attempts"
147−msgstr "Túl sok sikertelen kísérlet"
161+#: qml/Components/Lockscreen.qml:223
162+msgid "Return to Call"
163+msgstr "Vissza a híváshoz"
148164
149−#: qml/Components/Lockscreen.qml:206
165+#: qml/Components/Lockscreen.qml:223
150166msgid "Emergency Call"
151167msgstr "Vészhívás"
152168
153−#: qml/Components/Lockscreen.qml:226
169+#: qml/Components/Lockscreen.qml:255
154170msgid "OK"
155171msgstr "Ok"
156172
157−#: qml/Components/PassphraseLockscreen.qml:61
158−#, qt-format
159−msgid "Hello %1"
160−msgstr "Üdv %1"
161−
162−#: qml/Components/PassphraseLockscreen.qml:61
163−msgid "Hello"
164−msgstr "Üdvözöljük"
165−
166−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
173+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
167174msgid "See less"
168175msgstr "Kevesebb"
169176
170−#: qml/Dash/GenericScopeView.qml:411
177+#: qml/Dash/GenericScopeView.qml:434
171178msgid "See all"
172179msgstr "Összes megtekintése"
173180
174−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
181+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
175182#: qml/Panel/SearchIndicator.qml:27
176183msgid "Search"
177184msgstr "Keresés"
@@ -208,15 +215,23 @@ msgstr "Értékelés hozzáadása"
208215msgid "Send"
209216msgstr "Küldés"
210217
211−#: qml/Dash/ScopesOverview.qml:206
218+#: qml/Dash/PullToRefreshScopeStyle.qml:55
219+msgid "Pull to refresh…"
220+msgstr "Húzza a frissítéshez…"
221+
222+#: qml/Dash/PullToRefreshScopeStyle.qml:60
223+msgid "Release to refresh…"
224+msgstr "Engedje el a frissítéshez…"
225+
226+#: qml/Dash/ScopesOverview.qml:215
212227msgid "Manage Scopes"
213228msgstr "Lencsék kezelése"
214229
215−#: qml/Dash/ScopesOverview.qml:428
230+#: qml/Dash/ScopesOverview.qml:437
216231msgid "Done"
217232msgstr "Kész"
218233
219−#: qml/Dash/ScopesOverview.qml:454
234+#: qml/Dash/ScopesOverview.qml:463
220235msgid "Store"
221236msgstr "Áruház"
222237
@@ -228,9 +243,9 @@ msgstr "Kedvencek"
228243msgid "All"
229244msgstr "Összes"
230245
231−#: qml/Greeter/Greeter.qml:157
232−msgid "Swipe to unlock"
233−msgstr "Csúsztasson a feloldáshoz"
246+#: qml/Greeter/Greeter.qml:174
247+msgid "Unlock"
248+msgstr "Feloldás"
234249
235250#: qml/Hud/HudParametrizedActionsPage.qml:139
236251msgid "Confirm"
@@ -252,51 +267,43 @@ msgstr "Most beszéljen…"
252267msgid "Speaking..."
253268msgstr "Beszéd…"
254269
255−#: qml/Notifications/NotificationMenuItemFactory.qml:108
270+#: qml/Notifications/NotificationMenuItemFactory.qml:116
256271msgid "Show password"
257272msgstr "Jelszó megjelenítése"
258273
259−#: qml/Notifications/NotificationMenuItemFactory.qml:124
260−msgid "Enter SIM PIN"
261−msgstr "Adja meg a SIM PIN kódját"
262−
263−#: qml/Notifications/NotificationMenuItemFactory.qml:125
264−msgid "Sorry, incorrect PIN"
265−msgstr "Sajnáljuk, helytelen PIN"
266−
267−#: qml/Panel/ActiveCallHint.qml:77
274+#: qml/Panel/ActiveCallHint.qml:79
268275msgid "Tap to return to call..."
269276msgstr "Érintse meg, hogy visszatérjen a híváshoz..."
270277
271−#: qml/Panel/ActiveCallHint.qml:90
278+#: qml/Panel/ActiveCallHint.qml:92
272279msgid "Conference"
273280msgstr "Konferencia"
274281
275−#: qml/Panel/Indicators/MenuItemFactory.qml:600
282+#: qml/Panel/Indicators/MenuItemFactory.qml:615
276283msgid "Nothing is playing"
277284msgstr "Nincs lejátszás"
278285
279−#: qml/Panel/Indicators/MenuItemFactory.qml:748
286+#: qml/Panel/Indicators/MenuItemFactory.qml:763
280287msgid "In queue…"
281288msgstr "Sorban…"
282289
283−#: qml/Panel/Indicators/MenuItemFactory.qml:752
290+#: qml/Panel/Indicators/MenuItemFactory.qml:767
284291msgid "Downloading"
285292msgstr "Letöltés"
286293
287−#: qml/Panel/Indicators/MenuItemFactory.qml:754
294+#: qml/Panel/Indicators/MenuItemFactory.qml:769
288295msgid "Paused, tap to resume"
289296msgstr "Szüneteltetve, koppintson a folytatáshoz"
290297
291−#: qml/Panel/Indicators/MenuItemFactory.qml:756
298+#: qml/Panel/Indicators/MenuItemFactory.qml:771
292299msgid "Canceled"
293300msgstr "Megszakítva"
294301
295−#: qml/Panel/Indicators/MenuItemFactory.qml:758
302+#: qml/Panel/Indicators/MenuItemFactory.qml:773
296303msgid "Finished"
297304msgstr "Befejeződött"
298305
299−#: qml/Panel/Indicators/MenuItemFactory.qml:760
306+#: qml/Panel/Indicators/MenuItemFactory.qml:775
300307msgid "Failed, tap to retry"
301308msgstr "Sikertelen, koppintson az újrapróbáláshoz"
302309
@@ -308,45 +315,49 @@ msgstr "SIM feloldása"
308315msgid "Roaming"
309316msgstr "Barangolás"
310317
311−#: qml/Shell.qml:320
312−msgid "Enter your passphrase"
313−msgstr "Adja meg a jelmondatot"
318+#: qml/Shell.qml:381
319+msgid "Enter passphrase"
320+msgstr "Jelmondat megadása"
314321
315−#: qml/Shell.qml:321
322+#: qml/Shell.qml:382
316323msgid "Sorry, incorrect passphrase"
317324msgstr "Sajnáljuk, helytelen jelmondat"
318325
319−#: qml/Shell.qml:323
320−msgid "Enter your passcode"
321−msgstr "Adja meg a jelkódját"
326+#: qml/Shell.qml:383
327+msgid "Please re-enter"
328+msgstr "Kérjük próbálja újra"
329+
330+#: qml/Shell.qml:385
331+msgid "Enter passcode"
332+msgstr "Jelkód megadása"
322333
323−#: qml/Shell.qml:324
334+#: qml/Shell.qml:386
324335msgid "Sorry, incorrect passcode"
325336msgstr "Sajnáljuk, helytelen jelkód"
326337
327−#: qml/Shell.qml:327
338+#: qml/Shell.qml:389
328339#, qt-format
329−msgid "Enter your %1"
330−msgstr "Kérjük adja meg: %1"
340+msgid "Enter %1"
341+msgstr "Adja meg: %1"
331342
332−#: qml/Shell.qml:328
343+#: qml/Shell.qml:390
333344#, qt-format
334345msgid "Sorry, incorrect %1"
335346msgstr "Sajnáljuk, helytelen %1"
336347
337−#: qml/Shell.qml:363
348+#: qml/Shell.qml:431
338349msgid "Sorry, incorrect passphrase."
339350msgstr "Sajnáljuk, helytelen jelmondat."
340351
341−#: qml/Shell.qml:364
352+#: qml/Shell.qml:432
342353msgid "Sorry, incorrect passcode."
343354msgstr "Sajnáljuk, helytelen jelkód."
344355
345−#: qml/Shell.qml:365
356+#: qml/Shell.qml:433
346357msgid "This will be your last attempt."
347358msgstr "Ez az utolsó próbálkozási lehetősége."
348359
349−#: qml/Shell.qml:367
360+#: qml/Shell.qml:435
350361msgid ""
351362"If passphrase is entered incorrectly, your phone will conduct a factory "
352363"reset and all personal data will be deleted."
@@ -354,13 +365,10 @@ msgstr ""
354365"Ha helytelen jelmondatot ad meg, a telefonja visszaállítja a gyári "
355366"beállításokat és törli minden személyes adatát."
356367
357−#: qml/Shell.qml:368
368+#: qml/Shell.qml:436
358369msgid ""
359370"If passcode is entered incorrectly, your phone will conduct a factory reset "
360371"and all personal data will be deleted."
361372msgstr ""
362373"Ha helytelen jelkódot ad meg, a telefonja visszaállítja a gyári "
363374"beállításokat és törli minden személyes adatát."
364−
365−#~ msgid "Manage Dash"
366−#~ msgstr "Dash kezelése"
po/hy.po+146−131
@@ -7,92 +7,116 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
11−"PO-Revision-Date: 2013-06-27 04:43+0000\n"
12−"Last-Translator: iAbaS <sosabazyan@yandex.ru>\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
11+"PO-Revision-Date: 2014-10-28 06:34+0000\n"
12+"Last-Translator: Vahan Harutyunyan <Unknown>\n"
1313"Language-Team: Armenian <hy@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:19+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=1; plural=0;\n"
18+"X-Launchpad-Export-Date: 2014-11-06 06:39+0000\n"
19+"X-Generator: Launchpad (build 17223)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
22−msgstr ""
23+msgstr "Գաղտնաբառ: "
2324
2425#: plugins/Unity/Launcher/launcheritem.cpp:45
2526#: plugins/Unity/Launcher/launcheritem.cpp:91
2627msgid "Pin shortcut"
27−msgstr ""
28+msgstr "Փակցնել պիտակը"
2829
2930#: plugins/Unity/Launcher/launcheritem.cpp:91
3031msgid "Unpin shortcut"
32+msgstr "Հեռացնել պիտակը"
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."
3140msgstr ""
41+"Գաղտնաբառի բավականին շատ ձախողված փորձերի պատճառով Դուք արգելափակված եք:"
3242
33−#: qml/Components/Dialogs.qml:70
34−msgid "Log out"
43+#: qml/Components/DelayedLockscreen.qml:63
44+msgid "You have been locked out due to too many failed passcode attempts."
3545msgstr ""
46+"Ծածկագրի բավականին շատ ձախողված փորձերի պատճառով Դուք արգելափակված եք:"
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] ""
53+"Խնդրում ենք սպասել %1 րոպե և փորձել կրկին...\r\n"
54+"Խնդրում ենք սպասել %1 րոպե և փորձել կրկին..."
55+
56+#: qml/Components/Dialogs.qml:74
57+msgid "Log out"
58+msgstr "Ելք"
3659
37−#: qml/Components/Dialogs.qml:71
60+#: qml/Components/Dialogs.qml:75
3861msgid "Are you sure you want to log out?"
39−msgstr ""
62+msgstr "Դուք համոզվա՞ծ եք, որ ցանկանում եք դուրս գալ համակարգից"
4063
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
64+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
65+#: qml/Components/Dialogs.qml:126
4366msgid "No"
44−msgstr ""
67+msgstr "Ոչ"
4568
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
69+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
70+#: qml/Components/Dialogs.qml:133
4871msgid "Yes"
49−msgstr ""
72+msgstr "Այո"
5073
51−#: qml/Components/Dialogs.qml:94
74+#: qml/Components/Dialogs.qml:98
5275msgid "Shut down"
53−msgstr ""
76+msgstr "Անջատել"
5477
55−#: qml/Components/Dialogs.qml:95
78+#: qml/Components/Dialogs.qml:99
5679msgid "Are you sure you want to shut down?"
57−msgstr ""
80+msgstr "Դուք համոզվա՞ծ եք, որ ցանկանում եք անջատել համակարգիչը"
5881
59−#: qml/Components/Dialogs.qml:119
82+#: qml/Components/Dialogs.qml:123
6083msgid "Reboot"
61−msgstr ""
84+msgstr "Վերաբեռնել"
6285
63−#: qml/Components/Dialogs.qml:120
86+#: qml/Components/Dialogs.qml:124
6487msgid "Are you sure you want to reboot?"
65−msgstr ""
88+msgstr "Դուք համոզվա՞ծ եք, որ ցանկանում եք վերաբեռնել համակարգիչը"
6689
67−#: qml/Components/Dialogs.qml:144
90+#: qml/Components/Dialogs.qml:148
6891msgid "Power"
69−msgstr ""
92+msgstr "Էլեկտրասնուցում"
7093
71−#: qml/Components/Dialogs.qml:145
94+#: qml/Components/Dialogs.qml:149
7295msgid ""
7396"Are you sure you would like\n"
7497"to power off?"
7598msgstr ""
99+"Դուք համոզվա՞ծ եք, որ ցանկանում եք անջատել համակարգիչը սնուցման աղբյուրից"
76100
77−#: qml/Components/Dialogs.qml:147
101+#: qml/Components/Dialogs.qml:151
78102msgid "Power off"
79−msgstr ""
103+msgstr "Անջատել սնուցման աղբյուրից"
80104
81−#: qml/Components/Dialogs.qml:157
105+#: qml/Components/Dialogs.qml:161
82106msgid "Restart"
83−msgstr ""
107+msgstr "Վերագործարկել"
84108
85−#: qml/Components/Dialogs.qml:167
109+#: qml/Components/Dialogs.qml:171
86110msgid "Cancel"
87−msgstr ""
111+msgstr "Չեղյալ համարել"
88112
89113#: qml/Components/EdgeDemoOverlay.qml:151
90114msgid "Skip intro"
91−msgstr ""
115+msgstr "Բաց թողնել ներածությունը"
92116
93117#: qml/Components/EdgeDemo.qml:112
94118msgid "Right edge"
95−msgstr ""
119+msgstr "Աջ եզրը"
96120
97121#: qml/Components/EdgeDemo.qml:113
98122msgid "Try swiping from the right edge to unlock the phone"
@@ -100,7 +124,7 @@ msgstr ""
100124
101125#: qml/Components/EdgeDemo.qml:144
102126msgid "Top edge"
103−msgstr ""
127+msgstr "Վերին եզրը"
104128
105129#: qml/Components/EdgeDemo.qml:145
106130msgid "Try swiping from the top edge to access the indicators"
@@ -108,91 +132,78 @@ msgstr ""
108132
109133#: qml/Components/EdgeDemo.qml:170
110134msgid "Close"
111−msgstr ""
135+msgstr "Փակել"
112136
113137#: qml/Components/EdgeDemo.qml:171
114138msgid "Swipe up again to close the settings screen"
115139msgstr ""
116140
117−#: qml/Components/EdgeDemo.qml:198
141+#: qml/Components/EdgeDemo.qml:201
118142msgid "Left edge"
119−msgstr ""
143+msgstr "Ձախ եզրը"
120144
121−#: qml/Components/EdgeDemo.qml:199
145+#: qml/Components/EdgeDemo.qml:202
122146msgid "Swipe from the left to reveal the launcher for quick access to apps"
123147msgstr ""
124148
125−#: qml/Components/EdgeDemo.qml:226
149+#: qml/Components/EdgeDemo.qml:229
126150msgid "Well done"
127−msgstr ""
151+msgstr "Լավ է"
128152
129−#: qml/Components/EdgeDemo.qml:227
153+#: qml/Components/EdgeDemo.qml:230
130154msgid ""
131155"You have now mastered the edge gestures and can start using the "
132156"phone<br><br>Tap on the screen to start"
133157msgstr ""
134158
135−#: qml/Components/Lockscreen.qml:167
136−msgid "Please wait"
159+#: qml/Components/Lockscreen.qml:223
160+msgid "Return to Call"
137161msgstr ""
138162
139−#: qml/Components/Lockscreen.qml:172
140−msgid "Too many incorrect attempts"
141−msgstr ""
142−
143−#: qml/Components/Lockscreen.qml:206
163+#: qml/Components/Lockscreen.qml:223
144164msgid "Emergency Call"
145165msgstr ""
146166
147−#: qml/Components/Lockscreen.qml:226
167+#: qml/Components/Lockscreen.qml:255
148168msgid "OK"
149169msgstr ""
150170
151−#: qml/Components/PassphraseLockscreen.qml:61
152−#, qt-format
153−msgid "Hello %1"
154−msgstr ""
155−
156−#: qml/Components/PassphraseLockscreen.qml:61
157−msgid "Hello"
158−msgstr ""
159−
160−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
171+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
161172msgid "See less"
162173msgstr ""
163174
164−#: qml/Dash/GenericScopeView.qml:411
175+#: qml/Dash/GenericScopeView.qml:434
165176msgid "See all"
166−msgstr ""
177+msgstr "Տեսնել բոլորը"
167178
168−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
179+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
169180#: qml/Panel/SearchIndicator.qml:27
170181msgid "Search"
171182msgstr "Որոնում"
172183
173184#: qml/Dash/PageHeader.qml:268
174185msgid "Settings"
175−msgstr ""
186+msgstr "Կարգավորումներ"
176187
177188#: qml/Dash/PageHeader.qml:275
178189msgid "Remove from Favorites"
179−msgstr ""
190+msgstr "Հեռացնել ընտրյալների ցուցակից"
180191
181192#: qml/Dash/PageHeader.qml:275
182193msgid "Add to Favorites"
183−msgstr ""
194+msgstr "Ավելացնել ընտրյալների ցուցակում"
184195
185196#: qml/Dash/Previews/PreviewActionCombo.qml:35
186197msgid "More..."
187−msgstr ""
198+msgstr "Ավելին..."
188199
189200#: qml/Dash/Previews/PreviewActionCombo.qml:35
190201msgid "Less..."
191−msgstr ""
202+msgstr "Ավելի քիչ..."
192203
193204#: qml/Dash/Previews/PreviewRatingInput.qml:81
194205msgid "Rate this"
195−msgstr ""
206+msgstr "Գնահատեք սա"
196207
197208#: qml/Dash/Previews/PreviewRatingInput.qml:126
198209msgid "Add a review"
@@ -200,31 +211,39 @@ msgstr ""
200211
201212#: qml/Dash/Previews/PreviewRatingInput.qml:166
202213msgid "Send"
214+msgstr "Ուղղարկել"
215+
216+#: qml/Dash/PullToRefreshScopeStyle.qml:55
217+msgid "Pull to refresh…"
218+msgstr ""
219+
220+#: qml/Dash/PullToRefreshScopeStyle.qml:60
221+msgid "Release to refresh…"
203222msgstr ""
204223
205−#: qml/Dash/ScopesOverview.qml:206
224+#: qml/Dash/ScopesOverview.qml:215
206225msgid "Manage Scopes"
207226msgstr ""
208227
209−#: qml/Dash/ScopesOverview.qml:428
228+#: qml/Dash/ScopesOverview.qml:437
210229msgid "Done"
211−msgstr ""
230+msgstr "Կատարված է"
212231
213−#: qml/Dash/ScopesOverview.qml:454
232+#: qml/Dash/ScopesOverview.qml:463
214233msgid "Store"
215−msgstr ""
234+msgstr "Խանութ"
216235
217236#: qml/Dash/ScopesOverviewTab.qml:36
218237msgid "Favorites"
219−msgstr ""
238+msgstr "Նախընտրելի"
220239
221240#: qml/Dash/ScopesOverviewTab.qml:54
222241msgid "All"
223−msgstr ""
242+msgstr "Բոլորը"
224243
225−#: qml/Greeter/Greeter.qml:157
226−msgid "Swipe to unlock"
227−msgstr ""
244+#: qml/Greeter/Greeter.qml:174
245+msgid "Unlock"
246+msgstr "Ապաբլոկավորել"
228247
229248#: qml/Hud/HudParametrizedActionsPage.qml:139
230249msgid "Confirm"
@@ -236,117 +255,113 @@ msgstr "Գրիր կամ ասա կոմմենտը"
236255
237256#: qml/Hud/Hud.qml:84
238257msgid "Loading. Please Wait..."
239−msgstr "Խնդրում ենք սպասել..."
258+msgstr "Բեռնվում է: Խնդրում ենք սպասել..."
240259
241260#: qml/Hud/Hud.qml:89
242261msgid "Speak Now..."
243−msgstr "Խոսի՛ր"
262+msgstr "Հիմա խոսեք..."
244263
245264#: qml/Hud/Hud.qml:94
246265msgid "Speaking..."
247266msgstr "Խոսում եմ..."
248267
249−#: qml/Notifications/NotificationMenuItemFactory.qml:108
268+#: qml/Notifications/NotificationMenuItemFactory.qml:116
250269msgid "Show password"
251−msgstr ""
252−
253−#: qml/Notifications/NotificationMenuItemFactory.qml:124
254−msgid "Enter SIM PIN"
255−msgstr ""
256−
257−#: qml/Notifications/NotificationMenuItemFactory.qml:125
258−msgid "Sorry, incorrect PIN"
259−msgstr ""
270+msgstr "Ցույց տալ գաղտնաբառը"
260271
261−#: qml/Panel/ActiveCallHint.qml:77
272+#: qml/Panel/ActiveCallHint.qml:79
262273msgid "Tap to return to call..."
263274msgstr ""
264275
265−#: qml/Panel/ActiveCallHint.qml:90
276+#: qml/Panel/ActiveCallHint.qml:92
266277msgid "Conference"
267278msgstr ""
268279
269−#: qml/Panel/Indicators/MenuItemFactory.qml:600
280+#: qml/Panel/Indicators/MenuItemFactory.qml:615
270281msgid "Nothing is playing"
271282msgstr ""
272283
273−#: qml/Panel/Indicators/MenuItemFactory.qml:748
284+#: qml/Panel/Indicators/MenuItemFactory.qml:763
274285msgid "In queue…"
275−msgstr ""
286+msgstr "Հերթում..."
276287
277−#: qml/Panel/Indicators/MenuItemFactory.qml:752
288+#: qml/Panel/Indicators/MenuItemFactory.qml:767
278289msgid "Downloading"
279−msgstr ""
290+msgstr "Ներբեռնում"
280291
281−#: qml/Panel/Indicators/MenuItemFactory.qml:754
292+#: qml/Panel/Indicators/MenuItemFactory.qml:769
282293msgid "Paused, tap to resume"
283294msgstr ""
284295
285−#: qml/Panel/Indicators/MenuItemFactory.qml:756
296+#: qml/Panel/Indicators/MenuItemFactory.qml:771
286297msgid "Canceled"
287−msgstr ""
298+msgstr "Չեղյալ է համարված"
288299
289−#: qml/Panel/Indicators/MenuItemFactory.qml:758
300+#: qml/Panel/Indicators/MenuItemFactory.qml:773
290301msgid "Finished"
291−msgstr ""
302+msgstr "Ավարտված է"
292303
293−#: qml/Panel/Indicators/MenuItemFactory.qml:760
304+#: qml/Panel/Indicators/MenuItemFactory.qml:775
294305msgid "Failed, tap to retry"
295306msgstr ""
296307
297308#: qml/Panel/Indicators/ModemInfoItem.qml:105
298309msgid "Unlock SIM"
299−msgstr ""
310+msgstr "Ապաբլոկավորել SIM-ը"
300311
301312#: qml/Panel/Indicators/RoamingIndication.qml:27
302313msgid "Roaming"
303−msgstr ""
314+msgstr "Ռոումինգ"
304315
305−#: qml/Shell.qml:320
306−msgid "Enter your passphrase"
307−msgstr ""
316+#: qml/Shell.qml:381
317+msgid "Enter passphrase"
318+msgstr "Մուտքագրե՛ք անցաբառը"
308319
309−#: qml/Shell.qml:321
320+#: qml/Shell.qml:382
310321msgid "Sorry, incorrect passphrase"
311−msgstr ""
322+msgstr "Ներեցեք, սխալ անցաբառ է"
312323
313−#: qml/Shell.qml:323
314−msgid "Enter your passcode"
315−msgstr ""
324+#: qml/Shell.qml:383
325+msgid "Please re-enter"
326+msgstr "Խնդրում ենք նորից մուտքագրել"
327+
328+#: qml/Shell.qml:385
329+msgid "Enter passcode"
330+msgstr "Մոտքագրեք ծածկագիրը"
316331
317−#: qml/Shell.qml:324
332+#: qml/Shell.qml:386
318333msgid "Sorry, incorrect passcode"
319−msgstr ""
334+msgstr "Ներեցեք, սխալ ծածկագիր է"
320335
321−#: qml/Shell.qml:327
336+#: qml/Shell.qml:389
322337#, qt-format
323−msgid "Enter your %1"
324−msgstr ""
338+msgid "Enter %1"
339+msgstr "Մուտքագրեք %1"
325340
326−#: qml/Shell.qml:328
341+#: qml/Shell.qml:390
327342#, qt-format
328343msgid "Sorry, incorrect %1"
329−msgstr ""
344+msgstr "Ներեցեք, սխալ %1"
330345
331−#: qml/Shell.qml:363
346+#: qml/Shell.qml:431
332347msgid "Sorry, incorrect passphrase."
333−msgstr ""
348+msgstr "Ներեցեք, սխալ անցաբառ է"
334349
335−#: qml/Shell.qml:364
350+#: qml/Shell.qml:432
336351msgid "Sorry, incorrect passcode."
337−msgstr ""
352+msgstr "Ներեցեք, սխալ ծածկագիր է:"
338353
339−#: qml/Shell.qml:365
354+#: qml/Shell.qml:433
340355msgid "This will be your last attempt."
341−msgstr ""
356+msgstr "Սա կլինի ձեր վերջին փորձը"
342357
343−#: qml/Shell.qml:367
358+#: qml/Shell.qml:435
344359msgid ""
345360"If passphrase is entered incorrectly, your phone will conduct a factory "
346361"reset and all personal data will be deleted."
347362msgstr ""
348363
349−#: qml/Shell.qml:368
364+#: qml/Shell.qml:436
350365msgid ""
351366"If passcode is entered incorrectly, your phone will conduct a factory reset "
352367"and all personal data will be deleted."
po/id.po+90−79
@@ -7,15 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
1111"PO-Revision-Date: 2013-06-26 22:35+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Indonesian <id@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:19+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=1; plural=0;\n"
18+"X-Launchpad-Export-Date: 2014-11-06 06:40+0000\n"
19+"X-Generator: Launchpad (build 17223)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
@@ -30,59 +31,78 @@ msgstr ""
3031msgid "Unpin shortcut"
3132msgstr ""
3233
33−#: qml/Components/Dialogs.qml:70
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+
53+#: qml/Components/Dialogs.qml:74
3454msgid "Log out"
3555msgstr ""
3656
37−#: qml/Components/Dialogs.qml:71
57+#: qml/Components/Dialogs.qml:75
3858msgid "Are you sure you want to log out?"
3959msgstr ""
4060
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
61+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
62+#: qml/Components/Dialogs.qml:126
4363msgid "No"
4464msgstr ""
4565
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
66+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
67+#: qml/Components/Dialogs.qml:133
4868msgid "Yes"
4969msgstr ""
5070
51−#: qml/Components/Dialogs.qml:94
71+#: qml/Components/Dialogs.qml:98
5272msgid "Shut down"
5373msgstr ""
5474
55−#: qml/Components/Dialogs.qml:95
75+#: qml/Components/Dialogs.qml:99
5676msgid "Are you sure you want to shut down?"
5777msgstr ""
5878
59−#: qml/Components/Dialogs.qml:119
79+#: qml/Components/Dialogs.qml:123
6080msgid "Reboot"
6181msgstr ""
6282
63−#: qml/Components/Dialogs.qml:120
83+#: qml/Components/Dialogs.qml:124
6484msgid "Are you sure you want to reboot?"
6585msgstr ""
6686
67−#: qml/Components/Dialogs.qml:144
87+#: qml/Components/Dialogs.qml:148
6888msgid "Power"
6989msgstr ""
7090
71−#: qml/Components/Dialogs.qml:145
91+#: qml/Components/Dialogs.qml:149
7292msgid ""
7393"Are you sure you would like\n"
7494"to power off?"
7595msgstr ""
7696
77−#: qml/Components/Dialogs.qml:147
97+#: qml/Components/Dialogs.qml:151
7898msgid "Power off"
7999msgstr ""
80100
81−#: qml/Components/Dialogs.qml:157
101+#: qml/Components/Dialogs.qml:161
82102msgid "Restart"
83103msgstr ""
84104
85−#: qml/Components/Dialogs.qml:167
105+#: qml/Components/Dialogs.qml:171
86106msgid "Cancel"
87107msgstr ""
88108
@@ -114,58 +134,45 @@ msgstr ""
114134msgid "Swipe up again to close the settings screen"
115135msgstr ""
116136
117−#: qml/Components/EdgeDemo.qml:198
137+#: qml/Components/EdgeDemo.qml:201
118138msgid "Left edge"
119139msgstr ""
120140
121−#: qml/Components/EdgeDemo.qml:199
141+#: qml/Components/EdgeDemo.qml:202
122142msgid "Swipe from the left to reveal the launcher for quick access to apps"
123143msgstr ""
124144
125−#: qml/Components/EdgeDemo.qml:226
145+#: qml/Components/EdgeDemo.qml:229
126146msgid "Well done"
127147msgstr ""
128148
129−#: qml/Components/EdgeDemo.qml:227
149+#: qml/Components/EdgeDemo.qml:230
130150msgid ""
131151"You have now mastered the edge gestures and can start using the "
132152"phone<br><br>Tap on the screen to start"
133153msgstr ""
134154
135−#: qml/Components/Lockscreen.qml:167
136−msgid "Please wait"
137−msgstr ""
138−
139−#: qml/Components/Lockscreen.qml:172
140−msgid "Too many incorrect attempts"
155+#: qml/Components/Lockscreen.qml:223
156+msgid "Return to Call"
141157msgstr ""
142158
143−#: qml/Components/Lockscreen.qml:206
159+#: qml/Components/Lockscreen.qml:223
144160msgid "Emergency Call"
145161msgstr ""
146162
147−#: qml/Components/Lockscreen.qml:226
163+#: qml/Components/Lockscreen.qml:255
148164msgid "OK"
149165msgstr ""
150166
151−#: qml/Components/PassphraseLockscreen.qml:61
152−#, qt-format
153−msgid "Hello %1"
154−msgstr ""
155−
156−#: qml/Components/PassphraseLockscreen.qml:61
157−msgid "Hello"
158−msgstr ""
159−
160−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
167+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
161168msgid "See less"
162169msgstr ""
163170
164−#: qml/Dash/GenericScopeView.qml:411
171+#: qml/Dash/GenericScopeView.qml:434
165172msgid "See all"
166173msgstr ""
167174
168−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
175+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
169176#: qml/Panel/SearchIndicator.qml:27
170177msgid "Search"
171178msgstr ""
@@ -202,15 +209,23 @@ msgstr ""
202209msgid "Send"
203210msgstr ""
204211
205−#: qml/Dash/ScopesOverview.qml:206
212+#: qml/Dash/PullToRefreshScopeStyle.qml:55
213+msgid "Pull to refresh…"
214+msgstr ""
215+
216+#: qml/Dash/PullToRefreshScopeStyle.qml:60
217+msgid "Release to refresh…"
218+msgstr ""
219+
220+#: qml/Dash/ScopesOverview.qml:215
206221msgid "Manage Scopes"
207222msgstr ""
208223
209−#: qml/Dash/ScopesOverview.qml:428
224+#: qml/Dash/ScopesOverview.qml:437
210225msgid "Done"
211226msgstr ""
212227
213−#: qml/Dash/ScopesOverview.qml:454
228+#: qml/Dash/ScopesOverview.qml:463
214229msgid "Store"
215230msgstr ""
216231
@@ -222,8 +237,8 @@ msgstr ""
222237msgid "All"
223238msgstr ""
224239
225−#: qml/Greeter/Greeter.qml:157
226−msgid "Swipe to unlock"
240+#: qml/Greeter/Greeter.qml:174
241+msgid "Unlock"
227242msgstr ""
228243
229244#: qml/Hud/HudParametrizedActionsPage.qml:139
@@ -246,51 +261,43 @@ msgstr ""
246261msgid "Speaking..."
247262msgstr ""
248263
249−#: qml/Notifications/NotificationMenuItemFactory.qml:108
264+#: qml/Notifications/NotificationMenuItemFactory.qml:116
250265msgid "Show password"
251266msgstr ""
252267
253−#: qml/Notifications/NotificationMenuItemFactory.qml:124
254−msgid "Enter SIM PIN"
255−msgstr ""
256−
257−#: qml/Notifications/NotificationMenuItemFactory.qml:125
258−msgid "Sorry, incorrect PIN"
259−msgstr ""
260−
261−#: qml/Panel/ActiveCallHint.qml:77
268+#: qml/Panel/ActiveCallHint.qml:79
262269msgid "Tap to return to call..."
263270msgstr ""
264271
265−#: qml/Panel/ActiveCallHint.qml:90
272+#: qml/Panel/ActiveCallHint.qml:92
266273msgid "Conference"
267274msgstr ""
268275
269−#: qml/Panel/Indicators/MenuItemFactory.qml:600
276+#: qml/Panel/Indicators/MenuItemFactory.qml:615
270277msgid "Nothing is playing"
271278msgstr ""
272279
273−#: qml/Panel/Indicators/MenuItemFactory.qml:748
280+#: qml/Panel/Indicators/MenuItemFactory.qml:763
274281msgid "In queue…"
275282msgstr ""
276283
277−#: qml/Panel/Indicators/MenuItemFactory.qml:752
284+#: qml/Panel/Indicators/MenuItemFactory.qml:767
278285msgid "Downloading"
279286msgstr ""
280287
281−#: qml/Panel/Indicators/MenuItemFactory.qml:754
288+#: qml/Panel/Indicators/MenuItemFactory.qml:769
282289msgid "Paused, tap to resume"
283290msgstr ""
284291
285−#: qml/Panel/Indicators/MenuItemFactory.qml:756
292+#: qml/Panel/Indicators/MenuItemFactory.qml:771
286293msgid "Canceled"
287294msgstr ""
288295
289−#: qml/Panel/Indicators/MenuItemFactory.qml:758
296+#: qml/Panel/Indicators/MenuItemFactory.qml:773
290297msgid "Finished"
291298msgstr ""
292299
293−#: qml/Panel/Indicators/MenuItemFactory.qml:760
300+#: qml/Panel/Indicators/MenuItemFactory.qml:775
294301msgid "Failed, tap to retry"
295302msgstr ""
296303
@@ -302,51 +309,55 @@ msgstr ""
302309msgid "Roaming"
303310msgstr ""
304311
305−#: qml/Shell.qml:320
306−msgid "Enter your passphrase"
312+#: qml/Shell.qml:381
313+msgid "Enter passphrase"
307314msgstr ""
308315
309−#: qml/Shell.qml:321
316+#: qml/Shell.qml:382
310317msgid "Sorry, incorrect passphrase"
311318msgstr ""
312319
313−#: qml/Shell.qml:323
314−msgid "Enter your passcode"
320+#: qml/Shell.qml:383
321+msgid "Please re-enter"
322+msgstr ""
323+
324+#: qml/Shell.qml:385
325+msgid "Enter passcode"
315326msgstr ""
316327
317−#: qml/Shell.qml:324
328+#: qml/Shell.qml:386
318329msgid "Sorry, incorrect passcode"
319330msgstr ""
320331
321−#: qml/Shell.qml:327
332+#: qml/Shell.qml:389
322333#, qt-format
323−msgid "Enter your %1"
334+msgid "Enter %1"
324335msgstr ""
325336
326−#: qml/Shell.qml:328
337+#: qml/Shell.qml:390
327338#, qt-format
328339msgid "Sorry, incorrect %1"
329340msgstr ""
330341
331−#: qml/Shell.qml:363
342+#: qml/Shell.qml:431
332343msgid "Sorry, incorrect passphrase."
333344msgstr ""
334345
335−#: qml/Shell.qml:364
346+#: qml/Shell.qml:432
336347msgid "Sorry, incorrect passcode."
337348msgstr ""
338349
339−#: qml/Shell.qml:365
350+#: qml/Shell.qml:433
340351msgid "This will be your last attempt."
341352msgstr ""
342353
343−#: qml/Shell.qml:367
354+#: qml/Shell.qml:435
344355msgid ""
345356"If passphrase is entered incorrectly, your phone will conduct a factory "
346357"reset and all personal data will be deleted."
347358msgstr ""
348359
349−#: qml/Shell.qml:368
360+#: qml/Shell.qml:436
350361msgid ""
351362"If passcode is entered incorrectly, your phone will conduct a factory reset "
352363"and all personal data will be deleted."
po/is.po+109−92
@@ -9,15 +9,16 @@ msgid ""
99msgstr ""
1010"Project-Id-Version: po_unity8-is\n"
1111"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
12−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
13−"PO-Revision-Date: 2014-09-21 12:07+0000\n"
12+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
13+"PO-Revision-Date: 2014-10-09 10:49+0000\n"
1414"Last-Translator: Sveinn í Felli <sv1@fellsnet.is>\n"
1515"Language-Team: Icelandic <translation-team-is@lists.sourceforge.net>\n"
1616"MIME-Version: 1.0\n"
1717"Content-Type: text/plain; charset=UTF-8\n"
1818"Content-Transfer-Encoding: 8bit\n"
19−"X-Launchpad-Export-Date: 2014-09-29 05:19+0000\n"
20−"X-Generator: Launchpad (build 17196)\n"
19+"Plural-Forms: nplurals=2; plural=n != 1;\n"
20+"X-Launchpad-Export-Date: 2014-11-06 06:40+0000\n"
21+"X-Generator: Launchpad (build 17223)\n"
2122"Language: is\n"
2223
2324#: plugins/LightDM/Greeter.cpp:130
@@ -33,59 +34,80 @@ msgstr "Pinna flýtilykil"
3334msgid "Unpin shortcut"
3435msgstr "Losa flýtilykil"
3536
36−#: qml/Components/Dialogs.qml:70
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+
56+#: qml/Components/Dialogs.qml:74
3757msgid "Log out"
3858msgstr "Útskráning"
3959
40−#: qml/Components/Dialogs.qml:71
60+#: qml/Components/Dialogs.qml:75
4161msgid "Are you sure you want to log out?"
42−msgstr ""
62+msgstr "Ertu viss um að þú viljir skrá þig út?"
4363
44−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
45−#: qml/Components/Dialogs.qml:122
64+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
65+#: qml/Components/Dialogs.qml:126
4666msgid "No"
4767msgstr "Nei"
4868
49−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
50−#: qml/Components/Dialogs.qml:129
69+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
70+#: qml/Components/Dialogs.qml:133
5171msgid "Yes"
5272msgstr "Já"
5373
54−#: qml/Components/Dialogs.qml:94
74+#: qml/Components/Dialogs.qml:98
5575msgid "Shut down"
5676msgstr "Slökkva á tölvunni"
5777
58−#: qml/Components/Dialogs.qml:95
78+#: qml/Components/Dialogs.qml:99
5979msgid "Are you sure you want to shut down?"
60−msgstr ""
80+msgstr "Ertu viss um að þú viljir slökkva á símanum?"
6181
62−#: qml/Components/Dialogs.qml:119
82+#: qml/Components/Dialogs.qml:123
6383msgid "Reboot"
6484msgstr "Endurræsa"
6585
66−#: qml/Components/Dialogs.qml:120
86+#: qml/Components/Dialogs.qml:124
6787msgid "Are you sure you want to reboot?"
68−msgstr ""
88+msgstr "Ertu viss að þú viljir enduræsa?"
6989
70−#: qml/Components/Dialogs.qml:144
90+#: qml/Components/Dialogs.qml:148
7191msgid "Power"
7292msgstr "Aflstjórnun"
7393
74−#: qml/Components/Dialogs.qml:145
94+#: qml/Components/Dialogs.qml:149
7595msgid ""
7696"Are you sure you would like\n"
7797"to power off?"
7898msgstr ""
99+"Ertu viss um að þú viljir\n"
100+"slökkva á símanum?"
79101
80−#: qml/Components/Dialogs.qml:147
102+#: qml/Components/Dialogs.qml:151
81103msgid "Power off"
82104msgstr "Slökkva"
83105
84−#: qml/Components/Dialogs.qml:157
106+#: qml/Components/Dialogs.qml:161
85107msgid "Restart"
86108msgstr "Endurræsa"
87109
88−#: qml/Components/Dialogs.qml:167
110+#: qml/Components/Dialogs.qml:171
89111msgid "Cancel"
90112msgstr "Hætta við"
91113
@@ -118,19 +140,19 @@ msgstr "Loka"
118140msgid "Swipe up again to close the settings screen"
119141msgstr "Strjúktu upp til að loka stillingum"
120142
121−#: qml/Components/EdgeDemo.qml:198
143+#: qml/Components/EdgeDemo.qml:201
122144msgid "Left edge"
123145msgstr "Vinstri brún"
124146
125−#: qml/Components/EdgeDemo.qml:199
147+#: qml/Components/EdgeDemo.qml:202
126148msgid "Swipe from the left to reveal the launcher for quick access to apps"
127149msgstr "Strjúktu frá vinstri til að afhjúpa flýtiræsi forrita"
128150
129−#: qml/Components/EdgeDemo.qml:226
151+#: qml/Components/EdgeDemo.qml:229
130152msgid "Well done"
131153msgstr "Vel gert"
132154
133−#: qml/Components/EdgeDemo.qml:227
155+#: qml/Components/EdgeDemo.qml:230
134156msgid ""
135157"You have now mastered the edge gestures and can start using the "
136158"phone<br><br>Tap on the screen to start"
@@ -138,40 +160,27 @@ msgstr ""
138160"Þú ert núna með æfingu í að nota skjáhreyfingar og getur því farið að nota "
139161"símann<br><br>Sláðu létt á skjáinn til að byrja"
140162
141−#: qml/Components/Lockscreen.qml:167
142−msgid "Please wait"
143−msgstr "Bíddu aðeins"
144−
145−#: qml/Components/Lockscreen.qml:172
146−msgid "Too many incorrect attempts"
163+#: qml/Components/Lockscreen.qml:223
164+msgid "Return to Call"
147165msgstr ""
148166
149−#: qml/Components/Lockscreen.qml:206
167+#: qml/Components/Lockscreen.qml:223
150168msgid "Emergency Call"
151169msgstr "Neyðarsímtal"
152170
153−#: qml/Components/Lockscreen.qml:226
171+#: qml/Components/Lockscreen.qml:255
154172msgid "OK"
155173msgstr "Í lagi"
156174
157−#: qml/Components/PassphraseLockscreen.qml:61
158−#, qt-format
159−msgid "Hello %1"
160−msgstr "Hæ %1"
161−
162−#: qml/Components/PassphraseLockscreen.qml:61
163−msgid "Hello"
164−msgstr "Hæ"
165−
166−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
175+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
167176msgid "See less"
168177msgstr "Sjá minna"
169178
170−#: qml/Dash/GenericScopeView.qml:411
179+#: qml/Dash/GenericScopeView.qml:434
171180msgid "See all"
172181msgstr "Sjá allt"
173182
174−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
183+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
175184#: qml/Panel/SearchIndicator.qml:27
176185msgid "Search"
177186msgstr "Leita"
@@ -208,15 +217,23 @@ msgstr "Gefa umsögn"
208217msgid "Send"
209218msgstr "Senda"
210219
211−#: qml/Dash/ScopesOverview.qml:206
220+#: qml/Dash/PullToRefreshScopeStyle.qml:55
221+msgid "Pull to refresh…"
222+msgstr ""
223+
224+#: qml/Dash/PullToRefreshScopeStyle.qml:60
225+msgid "Release to refresh…"
226+msgstr "Slepptu til að endurlesa..."
227+
228+#: qml/Dash/ScopesOverview.qml:215
212229msgid "Manage Scopes"
213230msgstr ""
214231
215−#: qml/Dash/ScopesOverview.qml:428
232+#: qml/Dash/ScopesOverview.qml:437
216233msgid "Done"
217234msgstr "Lokið"
218235
219−#: qml/Dash/ScopesOverview.qml:454
236+#: qml/Dash/ScopesOverview.qml:463
220237msgid "Store"
221238msgstr "Geyma"
222239
@@ -228,9 +245,9 @@ msgstr "Eftirlæti"
228245msgid "All"
229246msgstr "Allt"
230247
231−#: qml/Greeter/Greeter.qml:157
232−msgid "Swipe to unlock"
233−msgstr "Strjúka til að aflæsa"
248+#: qml/Greeter/Greeter.qml:174
249+msgid "Unlock"
250+msgstr "Aflæsa"
234251
235252#: qml/Hud/HudParametrizedActionsPage.qml:139
236253msgid "Confirm"
@@ -252,51 +269,43 @@ msgstr "Tala núna..."
252269msgid "Speaking..."
253270msgstr "Tala..."
254271
255−#: qml/Notifications/NotificationMenuItemFactory.qml:108
272+#: qml/Notifications/NotificationMenuItemFactory.qml:116
256273msgid "Show password"
257274msgstr "Birta lykilorð"
258275
259−#: qml/Notifications/NotificationMenuItemFactory.qml:124
260−msgid "Enter SIM PIN"
261−msgstr "Settu inn PIN-númer SIM-kortsins"
262−
263−#: qml/Notifications/NotificationMenuItemFactory.qml:125
264−msgid "Sorry, incorrect PIN"
265−msgstr "Því miður, rangt PIN-númer"
266−
267−#: qml/Panel/ActiveCallHint.qml:77
276+#: qml/Panel/ActiveCallHint.qml:79
268277msgid "Tap to return to call..."
269278msgstr "Slá til að svara símtali..."
270279
271−#: qml/Panel/ActiveCallHint.qml:90
280+#: qml/Panel/ActiveCallHint.qml:92
272281msgid "Conference"
273282msgstr "Ráðstefna"
274283
275−#: qml/Panel/Indicators/MenuItemFactory.qml:600
284+#: qml/Panel/Indicators/MenuItemFactory.qml:615
276285msgid "Nothing is playing"
277286msgstr ""
278287
279−#: qml/Panel/Indicators/MenuItemFactory.qml:748
288+#: qml/Panel/Indicators/MenuItemFactory.qml:763
280289msgid "In queue…"
281290msgstr "Í biðröð..."
282291
283−#: qml/Panel/Indicators/MenuItemFactory.qml:752
292+#: qml/Panel/Indicators/MenuItemFactory.qml:767
284293msgid "Downloading"
285294msgstr "Sæki"
286295
287−#: qml/Panel/Indicators/MenuItemFactory.qml:754
296+#: qml/Panel/Indicators/MenuItemFactory.qml:769
288297msgid "Paused, tap to resume"
289298msgstr "Í bið, sláðu létt til að halda áfram"
290299
291−#: qml/Panel/Indicators/MenuItemFactory.qml:756
300+#: qml/Panel/Indicators/MenuItemFactory.qml:771
292301msgid "Canceled"
293302msgstr "Hætt við"
294303
295−#: qml/Panel/Indicators/MenuItemFactory.qml:758
304+#: qml/Panel/Indicators/MenuItemFactory.qml:773
296305msgid "Finished"
297306msgstr "Lokið"
298307
299−#: qml/Panel/Indicators/MenuItemFactory.qml:760
308+#: qml/Panel/Indicators/MenuItemFactory.qml:775
300309msgid "Failed, tap to retry"
301310msgstr "Mistókst, sláðu létt til að reyna aftur"
302311
@@ -306,54 +315,62 @@ msgstr "Aflæsa SIM-korti"
306315
307316#: qml/Panel/Indicators/RoamingIndication.qml:27
308317msgid "Roaming"
309−msgstr ""
318+msgstr "Ráphamur"
310319
311−#: qml/Shell.qml:320
312−msgid "Enter your passphrase"
320+#: qml/Shell.qml:381
321+msgid "Enter passphrase"
313322msgstr ""
314323
315−#: qml/Shell.qml:321
324+#: qml/Shell.qml:382
316325msgid "Sorry, incorrect passphrase"
317−msgstr ""
326+msgstr "Því miður, rangt lykilorð"
318327
319−#: qml/Shell.qml:323
320−msgid "Enter your passcode"
328+#: qml/Shell.qml:383
329+msgid "Please re-enter"
330+msgstr "Settu aftur inn"
331+
332+#: qml/Shell.qml:385
333+msgid "Enter passcode"
321334msgstr ""
322335
323−#: qml/Shell.qml:324
336+#: qml/Shell.qml:386
324337msgid "Sorry, incorrect passcode"
325−msgstr ""
338+msgstr "Því miður, rangur aðgangskóði"
326339
327−#: qml/Shell.qml:327
340+#: qml/Shell.qml:389
328341#, qt-format
329−msgid "Enter your %1"
330−msgstr ""
342+msgid "Enter %1"
343+msgstr "Settu inn %1"
331344
332−#: qml/Shell.qml:328
345+#: qml/Shell.qml:390
333346#, qt-format
334347msgid "Sorry, incorrect %1"
335−msgstr ""
348+msgstr "Því miður, rangt %1"
336349
337−#: qml/Shell.qml:363
350+#: qml/Shell.qml:431
338351msgid "Sorry, incorrect passphrase."
339−msgstr ""
352+msgstr "Því miður, rangt lykilorð."
340353
341−#: qml/Shell.qml:364
354+#: qml/Shell.qml:432
342355msgid "Sorry, incorrect passcode."
343−msgstr ""
356+msgstr "Því miður, rangur aðgangskóði."
344357
345−#: qml/Shell.qml:365
358+#: qml/Shell.qml:433
346359msgid "This will be your last attempt."
347−msgstr ""
360+msgstr "Þetta mun verða síðasta tilraunin þín."
348361
349−#: qml/Shell.qml:367
362+#: qml/Shell.qml:435
350363msgid ""
351364"If passphrase is entered incorrectly, your phone will conduct a factory "
352365"reset and all personal data will be deleted."
353366msgstr ""
367+"Ef lykilorð er rangt, mun síminn frumstilla allt á verksmiðjustillingar og "
368+"öllum einkagögnum verður eytt."
354369
355−#: qml/Shell.qml:368
370+#: qml/Shell.qml:436
356371msgid ""
357372"If passcode is entered incorrectly, your phone will conduct a factory reset "
358373"and all personal data will be deleted."
359374msgstr ""
375+"Ef aðgangskóði er rangur, mun síminn frumstilla allt á verksmiðjustillingar "
376+"og öllum einkagögnum verður eytt."
po/it.po+102−90
@@ -7,15 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
11−"PO-Revision-Date: 2014-08-28 15:31+0000\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
11+"PO-Revision-Date: 2014-09-30 10:56+0000\n"
1212"Last-Translator: Claudio Arseni <claudio.arseni@gmail.com>\n"
1313"Language-Team: Italian <it@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:19+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
18+"X-Launchpad-Export-Date: 2014-11-06 06:40+0000\n"
19+"X-Generator: Launchpad (build 17223)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
@@ -30,45 +31,68 @@ msgstr "Blocca scorciatoia"
3031msgid "Unpin shortcut"
3132msgstr "Sblocca scorciatoia"
3233
33−#: qml/Components/Dialogs.qml:70
34+#: qml/Components/DelayedLockscreen.qml:47
35+msgid "Device Locked"
36+msgstr "Dispositivo bloccato"
37+
38+#: qml/Components/DelayedLockscreen.qml:62
39+msgid "You have been locked out due to too many failed passphrase attempts."
40+msgstr ""
41+"Utente bloccato a causa di troppi tentativi falliti di inserimento della "
42+"passphrase."
43+
44+#: qml/Components/DelayedLockscreen.qml:63
45+msgid "You have been locked out due to too many failed passcode attempts."
46+msgstr ""
47+"Utente bloccato a causa di troppo tentativi falliti di inserimento del "
48+"codice."
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] "Attendere %1 minuto poi riprovare…"
55+msgstr[1] "Attendere %1 minuti poi riprovare…"
56+
57+#: qml/Components/Dialogs.qml:74
3458msgid "Log out"
3559msgstr "Termina sessione"
3660
37−#: qml/Components/Dialogs.qml:71
61+#: qml/Components/Dialogs.qml:75
3862msgid "Are you sure you want to log out?"
3963msgstr "Terminare veramente la sessione?"
4064
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
65+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
66+#: qml/Components/Dialogs.qml:126
4367msgid "No"
4468msgstr "No"
4569
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
70+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
71+#: qml/Components/Dialogs.qml:133
4872msgid "Yes"
4973msgstr "Sì"
5074
51−#: qml/Components/Dialogs.qml:94
75+#: qml/Components/Dialogs.qml:98
5276msgid "Shut down"
5377msgstr "Spegni"
5478
55−#: qml/Components/Dialogs.qml:95
79+#: qml/Components/Dialogs.qml:99
5680msgid "Are you sure you want to shut down?"
5781msgstr "Spegnere veramente il dispositivo?"
5882
59−#: qml/Components/Dialogs.qml:119
83+#: qml/Components/Dialogs.qml:123
6084msgid "Reboot"
6185msgstr "Riavvia"
6286
63−#: qml/Components/Dialogs.qml:120
87+#: qml/Components/Dialogs.qml:124
6488msgid "Are you sure you want to reboot?"
6589msgstr "Riavviare veramente il dispositivo?"
6690
67−#: qml/Components/Dialogs.qml:144
91+#: qml/Components/Dialogs.qml:148
6892msgid "Power"
6993msgstr "Alimentazione"
7094
71−#: qml/Components/Dialogs.qml:145
95+#: qml/Components/Dialogs.qml:149
7296msgid ""
7397"Are you sure you would like\n"
7498"to power off?"
@@ -76,15 +100,15 @@ msgstr ""
76100"Spegnere veramente\n"
77101"il dispositivo?"
78102
79−#: qml/Components/Dialogs.qml:147
103+#: qml/Components/Dialogs.qml:151
80104msgid "Power off"
81105msgstr "Spegni"
82106
83−#: qml/Components/Dialogs.qml:157
107+#: qml/Components/Dialogs.qml:161
84108msgid "Restart"
85−msgstr ""
109+msgstr "Riavvia"
86110
87−#: qml/Components/Dialogs.qml:167
111+#: qml/Components/Dialogs.qml:171
88112msgid "Cancel"
89113msgstr "Annulla"
90114
@@ -119,21 +143,21 @@ msgstr ""
119143"Far scorrere verso l'alto nuovamente per chiudere la schermata delle "
120144"impostazioni"
121145
122−#: qml/Components/EdgeDemo.qml:198
146+#: qml/Components/EdgeDemo.qml:201
123147msgid "Left edge"
124148msgstr "Bordo sinistro"
125149
126−#: qml/Components/EdgeDemo.qml:199
150+#: qml/Components/EdgeDemo.qml:202
127151msgid "Swipe from the left to reveal the launcher for quick access to apps"
128152msgstr ""
129153"Far scorrere il bordo sinistro per mostrare il Launcher e avere un rapido "
130154"accesso alle applicazioni"
131155
132−#: qml/Components/EdgeDemo.qml:226
156+#: qml/Components/EdgeDemo.qml:229
133157msgid "Well done"
134158msgstr "Ben fatto"
135159
136−#: qml/Components/EdgeDemo.qml:227
160+#: qml/Components/EdgeDemo.qml:230
137161msgid ""
138162"You have now mastered the edge gestures and can start using the "
139163"phone<br><br>Tap on the screen to start"
@@ -141,40 +165,27 @@ msgstr ""
141165"L'apprendimento dei gesti è stato completato. È ora possibile iniziare a "
142166"usare il telefono.<br><br>Toccare lo schermo per iniziare"
143167
144−#: qml/Components/Lockscreen.qml:167
145−msgid "Please wait"
146−msgstr "Attendere"
147−
148−#: qml/Components/Lockscreen.qml:172
149−msgid "Too many incorrect attempts"
150−msgstr "Troppi tentativi errati"
168+#: qml/Components/Lockscreen.qml:223
169+msgid "Return to Call"
170+msgstr ""
151171
152−#: qml/Components/Lockscreen.qml:206
172+#: qml/Components/Lockscreen.qml:223
153173msgid "Emergency Call"
154174msgstr "Chiamata di emergenza"
155175
156−#: qml/Components/Lockscreen.qml:226
176+#: qml/Components/Lockscreen.qml:255
157177msgid "OK"
158178msgstr "OK"
159179
160−#: qml/Components/PassphraseLockscreen.qml:61
161−#, qt-format
162−msgid "Hello %1"
163−msgstr "Ciao %1"
164−
165−#: qml/Components/PassphraseLockscreen.qml:61
166−msgid "Hello"
167−msgstr "Ciao"
168−
169−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
180+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
170181msgid "See less"
171182msgstr "Mostra meno"
172183
173−#: qml/Dash/GenericScopeView.qml:411
184+#: qml/Dash/GenericScopeView.qml:434
174185msgid "See all"
175186msgstr "Mostra tutto"
176187
177−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
188+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
178189#: qml/Panel/SearchIndicator.qml:27
179190msgid "Search"
180191msgstr "Cerca"
@@ -211,15 +222,23 @@ msgstr "Aggiungi una recensione"
211222msgid "Send"
212223msgstr "Invia"
213224
214−#: qml/Dash/ScopesOverview.qml:206
225+#: qml/Dash/PullToRefreshScopeStyle.qml:55
226+msgid "Pull to refresh…"
227+msgstr "Scorrere per aggiornare…"
228+
229+#: qml/Dash/PullToRefreshScopeStyle.qml:60
230+msgid "Release to refresh…"
231+msgstr "Rilasciare per aggiornare…"
232+
233+#: qml/Dash/ScopesOverview.qml:215
215234msgid "Manage Scopes"
216−msgstr ""
235+msgstr "Gestisci Scope"
217236
218−#: qml/Dash/ScopesOverview.qml:428
237+#: qml/Dash/ScopesOverview.qml:437
219238msgid "Done"
220239msgstr "Fatto"
221240
222−#: qml/Dash/ScopesOverview.qml:454
241+#: qml/Dash/ScopesOverview.qml:463
223242msgid "Store"
224243msgstr "Store"
225244
@@ -231,9 +250,9 @@ msgstr "Preferiti"
231250msgid "All"
232251msgstr "Tutto"
233252
234−#: qml/Greeter/Greeter.qml:157
235−msgid "Swipe to unlock"
236−msgstr "Scorrere per sbloccare"
253+#: qml/Greeter/Greeter.qml:174
254+msgid "Unlock"
255+msgstr "Sblocca"
237256
238257#: qml/Hud/HudParametrizedActionsPage.qml:139
239258msgid "Confirm"
@@ -255,51 +274,43 @@ msgstr "Parla ora..."
255274msgid "Speaking..."
256275msgstr "Sto parlando..."
257276
258−#: qml/Notifications/NotificationMenuItemFactory.qml:108
277+#: qml/Notifications/NotificationMenuItemFactory.qml:116
259278msgid "Show password"
260279msgstr "Mostra password"
261280
262−#: qml/Notifications/NotificationMenuItemFactory.qml:124
263−msgid "Enter SIM PIN"
264−msgstr "Inserire il PIN della SIM"
265−
266−#: qml/Notifications/NotificationMenuItemFactory.qml:125
267−msgid "Sorry, incorrect PIN"
268−msgstr "PIN errato"
269−
270−#: qml/Panel/ActiveCallHint.qml:77
281+#: qml/Panel/ActiveCallHint.qml:79
271282msgid "Tap to return to call..."
272283msgstr "Tocca per tornare alla chiamata..."
273284
274−#: qml/Panel/ActiveCallHint.qml:90
285+#: qml/Panel/ActiveCallHint.qml:92
275286msgid "Conference"
276287msgstr "Conferenza"
277288
278−#: qml/Panel/Indicators/MenuItemFactory.qml:600
289+#: qml/Panel/Indicators/MenuItemFactory.qml:615
279290msgid "Nothing is playing"
280−msgstr ""
291+msgstr "Niente in riproduzione"
281292
282−#: qml/Panel/Indicators/MenuItemFactory.qml:748
293+#: qml/Panel/Indicators/MenuItemFactory.qml:763
283294msgid "In queue…"
284295msgstr "In coda..."
285296
286−#: qml/Panel/Indicators/MenuItemFactory.qml:752
297+#: qml/Panel/Indicators/MenuItemFactory.qml:767
287298msgid "Downloading"
288299msgstr "Scaricamento in corso"
289300
290−#: qml/Panel/Indicators/MenuItemFactory.qml:754
301+#: qml/Panel/Indicators/MenuItemFactory.qml:769
291302msgid "Paused, tap to resume"
292303msgstr "In pausa. Tocca per riprendere"
293304
294−#: qml/Panel/Indicators/MenuItemFactory.qml:756
305+#: qml/Panel/Indicators/MenuItemFactory.qml:771
295306msgid "Canceled"
296307msgstr "Annullato"
297308
298−#: qml/Panel/Indicators/MenuItemFactory.qml:758
309+#: qml/Panel/Indicators/MenuItemFactory.qml:773
299310msgid "Finished"
300311msgstr "Completato"
301312
302−#: qml/Panel/Indicators/MenuItemFactory.qml:760
313+#: qml/Panel/Indicators/MenuItemFactory.qml:775
303314msgid "Failed, tap to retry"
304315msgstr "Non riuscito. Tocca per riprovare"
305316
@@ -311,45 +322,49 @@ msgstr "Sblocca SIM"
311322msgid "Roaming"
312323msgstr "Roaming"
313324
314−#: qml/Shell.qml:320
315−msgid "Enter your passphrase"
316−msgstr "Digitare la passphrase"
325+#: qml/Shell.qml:381
326+msgid "Enter passphrase"
327+msgstr "Inserire passphrase"
317328
318−#: qml/Shell.qml:321
329+#: qml/Shell.qml:382
319330msgid "Sorry, incorrect passphrase"
320331msgstr "Passphrase errata"
321332
322−#: qml/Shell.qml:323
323−msgid "Enter your passcode"
324−msgstr "Inserire il passcode"
333+#: qml/Shell.qml:383
334+msgid "Please re-enter"
335+msgstr "Inserire nuovamente"
325336
326−#: qml/Shell.qml:324
337+#: qml/Shell.qml:385
338+msgid "Enter passcode"
339+msgstr "Inserire codice"
340+
341+#: qml/Shell.qml:386
327342msgid "Sorry, incorrect passcode"
328343msgstr "Passcode non corretto"
329344
330−#: qml/Shell.qml:327
345+#: qml/Shell.qml:389
331346#, qt-format
332−msgid "Enter your %1"
347+msgid "Enter %1"
333348msgstr "Inserire %1"
334349
335−#: qml/Shell.qml:328
350+#: qml/Shell.qml:390
336351#, qt-format
337352msgid "Sorry, incorrect %1"
338353msgstr "%1 non corretto"
339354
340−#: qml/Shell.qml:363
355+#: qml/Shell.qml:431
341356msgid "Sorry, incorrect passphrase."
342357msgstr "Passphrase non corretta"
343358
344−#: qml/Shell.qml:364
359+#: qml/Shell.qml:432
345360msgid "Sorry, incorrect passcode."
346361msgstr "Passcode non corretto"
347362
348−#: qml/Shell.qml:365
363+#: qml/Shell.qml:433
349364msgid "This will be your last attempt."
350365msgstr "Questo sarà l'ultimo tentativo."
351366
352−#: qml/Shell.qml:367
367+#: qml/Shell.qml:435
353368msgid ""
354369"If passphrase is entered incorrectly, your phone will conduct a factory "
355370"reset and all personal data will be deleted."
@@ -357,13 +372,10 @@ msgstr ""
357372"Se verrà inserita una passphrase errata, il telefono eseguirà un ripristino "
358373"delle impostazioni di fabbrica e tutti i dati personali verranno eliminati."
359374
360−#: qml/Shell.qml:368
375+#: qml/Shell.qml:436
361376msgid ""
362377"If passcode is entered incorrectly, your phone will conduct a factory reset "
363378"and all personal data will be deleted."
364379msgstr ""
365380"Se verrà inserito una passcode errato, il telefono eseguirà un ripristino "
366381"delle impostazioni di fabbrica e tutti i dati personali verranno eliminati."
367−
368−#~ msgid "Manage Dash"
369−#~ msgstr "Gestione della Dash"
po/ja.po+95−87
@@ -7,15 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
1111"PO-Revision-Date: 2014-09-18 09:47+0000\n"
1212"Last-Translator: Mitsuya Shibata <mty.shibata@gmail.com>\n"
1313"Language-Team: Japanese <ja@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:19+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=1; plural=0;\n"
18+"X-Launchpad-Export-Date: 2014-11-06 06:40+0000\n"
19+"X-Generator: Launchpad (build 17223)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
@@ -30,59 +31,78 @@ msgstr "ショートカットを追加する"
3031msgid "Unpin shortcut"
3132msgstr "ショートカットを削除する"
3233
33−#: qml/Components/Dialogs.qml:70
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+
53+#: qml/Components/Dialogs.qml:74
3454msgid "Log out"
3555msgstr "ログアウト"
3656
37−#: qml/Components/Dialogs.qml:71
57+#: qml/Components/Dialogs.qml:75
3858msgid "Are you sure you want to log out?"
3959msgstr "本当にログアウトしますか?"
4060
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
61+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
62+#: qml/Components/Dialogs.qml:126
4363msgid "No"
4464msgstr "いいえ"
4565
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
66+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
67+#: qml/Components/Dialogs.qml:133
4868msgid "Yes"
4969msgstr "はい"
5070
51−#: qml/Components/Dialogs.qml:94
71+#: qml/Components/Dialogs.qml:98
5272msgid "Shut down"
5373msgstr "シャットダウン"
5474
55−#: qml/Components/Dialogs.qml:95
75+#: qml/Components/Dialogs.qml:99
5676msgid "Are you sure you want to shut down?"
5777msgstr "本当にシャットダウンしますか?"
5878
59−#: qml/Components/Dialogs.qml:119
79+#: qml/Components/Dialogs.qml:123
6080msgid "Reboot"
6181msgstr "再起動"
6282
63−#: qml/Components/Dialogs.qml:120
83+#: qml/Components/Dialogs.qml:124
6484msgid "Are you sure you want to reboot?"
6585msgstr "本当に再起動しますか?"
6686
67−#: qml/Components/Dialogs.qml:144
87+#: qml/Components/Dialogs.qml:148
6888msgid "Power"
6989msgstr "電源"
7090
71−#: qml/Components/Dialogs.qml:145
91+#: qml/Components/Dialogs.qml:149
7292msgid ""
7393"Are you sure you would like\n"
7494"to power off?"
7595msgstr "本当に電源を切りますか?"
7696
77−#: qml/Components/Dialogs.qml:147
97+#: qml/Components/Dialogs.qml:151
7898msgid "Power off"
7999msgstr "電源を切る"
80100
81−#: qml/Components/Dialogs.qml:157
101+#: qml/Components/Dialogs.qml:161
82102msgid "Restart"
83103msgstr "再起動"
84104
85−#: qml/Components/Dialogs.qml:167
105+#: qml/Components/Dialogs.qml:171
86106msgid "Cancel"
87107msgstr "キャンセル"
88108
@@ -114,59 +134,46 @@ msgstr "閉じる"
114134msgid "Swipe up again to close the settings screen"
115135msgstr "設定画面を閉じるにはもう一度上にスワイプしてください"
116136
117−#: qml/Components/EdgeDemo.qml:198
137+#: qml/Components/EdgeDemo.qml:201
118138msgid "Left edge"
119139msgstr "左端"
120140
121−#: qml/Components/EdgeDemo.qml:199
141+#: qml/Components/EdgeDemo.qml:202
122142msgid "Swipe from the left to reveal the launcher for quick access to apps"
123143msgstr "アプリに素早くアクセスできるLauncherを表示するには左からスワイプしてください"
124144
125−#: qml/Components/EdgeDemo.qml:226
145+#: qml/Components/EdgeDemo.qml:229
126146msgid "Well done"
127147msgstr "よくできました!"
128148
129−#: qml/Components/EdgeDemo.qml:227
149+#: qml/Components/EdgeDemo.qml:230
130150msgid ""
131151"You have now mastered the edge gestures and can start using the "
132152"phone<br><br>Tap on the screen to start"
133153msgstr ""
134154"これでスマートフォンの操作に必要な、画面端を用いたジェスチャーを習得できました。<br><br>利用を開始するなら画面をタップしてください"
135155
136−#: qml/Components/Lockscreen.qml:167
137−msgid "Please wait"
138−msgstr "お待ちください"
139−
140−#: qml/Components/Lockscreen.qml:172
141−msgid "Too many incorrect attempts"
142−msgstr "失敗回数が上限に達しました"
156+#: qml/Components/Lockscreen.qml:223
157+msgid "Return to Call"
158+msgstr ""
143159
144−#: qml/Components/Lockscreen.qml:206
160+#: qml/Components/Lockscreen.qml:223
145161msgid "Emergency Call"
146162msgstr "緊急通報"
147163
148−#: qml/Components/Lockscreen.qml:226
164+#: qml/Components/Lockscreen.qml:255
149165msgid "OK"
150166msgstr "OK"
151167
152−#: qml/Components/PassphraseLockscreen.qml:61
153−#, qt-format
154−msgid "Hello %1"
155−msgstr "こんにちは %1 さん"
156−
157−#: qml/Components/PassphraseLockscreen.qml:61
158−msgid "Hello"
159−msgstr "こんにちは"
160−
161−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
168+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
162169msgid "See less"
163170msgstr "隠す"
164171
165−#: qml/Dash/GenericScopeView.qml:411
172+#: qml/Dash/GenericScopeView.qml:434
166173msgid "See all"
167174msgstr "すべて表示する"
168175
169−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
176+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
170177#: qml/Panel/SearchIndicator.qml:27
171178msgid "Search"
172179msgstr "検索"
@@ -203,15 +210,23 @@ msgstr "レビューを追加"
203210msgid "Send"
204211msgstr "送信"
205212
206−#: qml/Dash/ScopesOverview.qml:206
213+#: qml/Dash/PullToRefreshScopeStyle.qml:55
214+msgid "Pull to refresh…"
215+msgstr ""
216+
217+#: qml/Dash/PullToRefreshScopeStyle.qml:60
218+msgid "Release to refresh…"
219+msgstr ""
220+
221+#: qml/Dash/ScopesOverview.qml:215
207222msgid "Manage Scopes"
208223msgstr ""
209224
210−#: qml/Dash/ScopesOverview.qml:428
225+#: qml/Dash/ScopesOverview.qml:437
211226msgid "Done"
212227msgstr "完了"
213228
214−#: qml/Dash/ScopesOverview.qml:454
229+#: qml/Dash/ScopesOverview.qml:463
215230msgid "Store"
216231msgstr "保存"
217232
@@ -223,9 +238,9 @@ msgstr "お気に入り"
223238msgid "All"
224239msgstr "すべて"
225240
226−#: qml/Greeter/Greeter.qml:157
227−msgid "Swipe to unlock"
228−msgstr "スワイプしてロック解除"
241+#: qml/Greeter/Greeter.qml:174
242+msgid "Unlock"
243+msgstr "ロックの解除"
229244
230245#: qml/Hud/HudParametrizedActionsPage.qml:139
231246msgid "Confirm"
@@ -247,51 +262,43 @@ msgstr "音声入力を開始..."
247262msgid "Speaking..."
248263msgstr "入力中..."
249264
250−#: qml/Notifications/NotificationMenuItemFactory.qml:108
265+#: qml/Notifications/NotificationMenuItemFactory.qml:116
251266msgid "Show password"
252267msgstr "パスワードを表示"
253268
254−#: qml/Notifications/NotificationMenuItemFactory.qml:124
255−msgid "Enter SIM PIN"
256−msgstr "SIM PINの入力"
257−
258−#: qml/Notifications/NotificationMenuItemFactory.qml:125
259−msgid "Sorry, incorrect PIN"
260−msgstr "PINが違います"
261−
262−#: qml/Panel/ActiveCallHint.qml:77
269+#: qml/Panel/ActiveCallHint.qml:79
263270msgid "Tap to return to call..."
264271msgstr "タップすると通話に戻ります..."
265272
266−#: qml/Panel/ActiveCallHint.qml:90
273+#: qml/Panel/ActiveCallHint.qml:92
267274msgid "Conference"
268275msgstr "グループ通話"
269276
270−#: qml/Panel/Indicators/MenuItemFactory.qml:600
277+#: qml/Panel/Indicators/MenuItemFactory.qml:615
271278msgid "Nothing is playing"
272279msgstr ""
273280
274−#: qml/Panel/Indicators/MenuItemFactory.qml:748
281+#: qml/Panel/Indicators/MenuItemFactory.qml:763
275282msgid "In queue…"
276283msgstr "開始待ち..."
277284
278−#: qml/Panel/Indicators/MenuItemFactory.qml:752
285+#: qml/Panel/Indicators/MenuItemFactory.qml:767
279286msgid "Downloading"
280287msgstr "ダウンロード中"
281288
282−#: qml/Panel/Indicators/MenuItemFactory.qml:754
289+#: qml/Panel/Indicators/MenuItemFactory.qml:769
283290msgid "Paused, tap to resume"
284291msgstr "停止中、再開するにはタップしてください"
285292
286−#: qml/Panel/Indicators/MenuItemFactory.qml:756
293+#: qml/Panel/Indicators/MenuItemFactory.qml:771
287294msgid "Canceled"
288295msgstr "中止しました"
289296
290−#: qml/Panel/Indicators/MenuItemFactory.qml:758
297+#: qml/Panel/Indicators/MenuItemFactory.qml:773
291298msgid "Finished"
292299msgstr "完了しました"
293300
294−#: qml/Panel/Indicators/MenuItemFactory.qml:760
301+#: qml/Panel/Indicators/MenuItemFactory.qml:775
295302msgid "Failed, tap to retry"
296303msgstr "失敗しました、再試行するにはタップしてください"
297304
@@ -303,55 +310,56 @@ msgstr "SIMのアンロック"
303310msgid "Roaming"
304311msgstr "ローミング"
305312
306−#: qml/Shell.qml:320
307−msgid "Enter your passphrase"
308−msgstr "パスフレーズの入力"
313+#: qml/Shell.qml:381
314+msgid "Enter passphrase"
315+msgstr "パスフレーズを入力"
309316
310−#: qml/Shell.qml:321
317+#: qml/Shell.qml:382
311318msgid "Sorry, incorrect passphrase"
312319msgstr "パスフレーズが違います"
313320
314−#: qml/Shell.qml:323
315−msgid "Enter your passcode"
316−msgstr "パスコードの入力"
321+#: qml/Shell.qml:383
322+msgid "Please re-enter"
323+msgstr ""
324+
325+#: qml/Shell.qml:385
326+msgid "Enter passcode"
327+msgstr ""
317328
318−#: qml/Shell.qml:324
329+#: qml/Shell.qml:386
319330msgid "Sorry, incorrect passcode"
320331msgstr "パスコードが違います"
321332
322−#: qml/Shell.qml:327
333+#: qml/Shell.qml:389
323334#, qt-format
324−msgid "Enter your %1"
325−msgstr "%1を入力してください"
335+msgid "Enter %1"
336+msgstr ""
326337
327−#: qml/Shell.qml:328
338+#: qml/Shell.qml:390
328339#, qt-format
329340msgid "Sorry, incorrect %1"
330341msgstr "%1が違います"
331342
332−#: qml/Shell.qml:363
343+#: qml/Shell.qml:431
333344msgid "Sorry, incorrect passphrase."
334345msgstr "パスフレーズが間違っています。"
335346
336−#: qml/Shell.qml:364
347+#: qml/Shell.qml:432
337348msgid "Sorry, incorrect passcode."
338349msgstr "パスコードが間違っています。"
339350
340−#: qml/Shell.qml:365
351+#: qml/Shell.qml:433
341352msgid "This will be your last attempt."
342353msgstr "これが最後のチャンスです。"
343354
344−#: qml/Shell.qml:367
355+#: qml/Shell.qml:435
345356msgid ""
346357"If passphrase is entered incorrectly, your phone will conduct a factory "
347358"reset and all personal data will be deleted."
348359msgstr "パスフレーズが間違っている場合、ファクトリーリセットを実施し、すべての個人データは削除されます。"
349360
350−#: qml/Shell.qml:368
361+#: qml/Shell.qml:436
351362msgid ""
352363"If passcode is entered incorrectly, your phone will conduct a factory reset "
353364"and all personal data will be deleted."
354365msgstr "パスコードが間違っている場合、ファクトリーリセットを実施し、すべての個人データは削除されます。"
355−
356−#~ msgid "Manage Dash"
357−#~ msgstr "Dashの管理"
po/km.po+96−88
@@ -7,15 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
1111"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"
1313"Language-Team: Khmer <km@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:19+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=1; plural=0;\n"
18+"X-Launchpad-Export-Date: 2014-11-06 06:40+0000\n"
19+"X-Generator: Launchpad (build 17223)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
@@ -30,45 +31,64 @@ msgstr "ភ្ជាប់​ផ្លូវកាត់"
3031msgid "Unpin shortcut"
3132msgstr "មិន​ភ្ជាប់ផ្លូវកាត់"
3233
33−#: qml/Components/Dialogs.qml:70
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+
53+#: qml/Components/Dialogs.qml:74
3454msgid "Log out"
3555msgstr "ចេញ"
3656
37−#: qml/Components/Dialogs.qml:71
57+#: qml/Components/Dialogs.qml:75
3858msgid "Are you sure you want to log out?"
3959msgstr "តើ​អ្នក​ពិតជា​ចង់​ចេញ​មែន​ឬ?"
4060
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
61+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
62+#: qml/Components/Dialogs.qml:126
4363msgid "No"
4464msgstr "ទេ"
4565
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
66+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
67+#: qml/Components/Dialogs.qml:133
4868msgid "Yes"
4969msgstr "បាទ/ចាស"
5070
51−#: qml/Components/Dialogs.qml:94
71+#: qml/Components/Dialogs.qml:98
5272msgid "Shut down"
5373msgstr "បិទ"
5474
55−#: qml/Components/Dialogs.qml:95
75+#: qml/Components/Dialogs.qml:99
5676msgid "Are you sure you want to shut down?"
5777msgstr "តើ​អ្នក​ពិតជា​ចង់​បិទ​មែន​ឬ?"
5878
59−#: qml/Components/Dialogs.qml:119
79+#: qml/Components/Dialogs.qml:123
6080msgid "Reboot"
6181msgstr "ចាប់ផ្ដើម​ឡើងវិញ"
6282
63−#: qml/Components/Dialogs.qml:120
83+#: qml/Components/Dialogs.qml:124
6484msgid "Are you sure you want to reboot?"
6585msgstr "តើ​អ្នក​ពិតជា​ចង់​ចាប់ផ្ដើម​ឡើងវិញ​មែន​ឬ?"
6686
67−#: qml/Components/Dialogs.qml:144
87+#: qml/Components/Dialogs.qml:148
6888msgid "Power"
6989msgstr "បីទ/បើក"
7090
71−#: qml/Components/Dialogs.qml:145
91+#: qml/Components/Dialogs.qml:149
7292msgid ""
7393"Are you sure you would like\n"
7494"to power off?"
@@ -76,15 +96,15 @@ msgstr ""
7696"តើ​អ្នក​ពិតជា​ចង់\n"
7797"បិទ​មែន​ឬ?"
7898
79−#: qml/Components/Dialogs.qml:147
99+#: qml/Components/Dialogs.qml:151
80100msgid "Power off"
81101msgstr "បិទ"
82102
83−#: qml/Components/Dialogs.qml:157
103+#: qml/Components/Dialogs.qml:161
84104msgid "Restart"
85105msgstr "ចាប់​ផ្ដើម​ឡើង​វិញ"
86106
87−#: qml/Components/Dialogs.qml:167
107+#: qml/Components/Dialogs.qml:171
88108msgid "Cancel"
89109msgstr "បោះបង់"
90110
@@ -116,21 +136,21 @@ msgstr "បិទ"
116136msgid "Swipe up again to close the settings screen"
117137msgstr "អូស​ឡើង​លើ​ម្ដងទៀត ដើម្បី​បិទ​ការ​កំណត់​អេក្រង់"
118138
119−#: qml/Components/EdgeDemo.qml:198
139+#: qml/Components/EdgeDemo.qml:201
120140msgid "Left edge"
121141msgstr "គែមឆ្វេង"
122142
123−#: qml/Components/EdgeDemo.qml:199
143+#: qml/Components/EdgeDemo.qml:202
124144msgid "Swipe from the left to reveal the launcher for quick access to apps"
125145msgstr ""
126146"អូស​ពី​គែម​ឆ្វេង "
127147"ដើម្បី​បង្ហាញ​កម្មវិធី​ចាប់ផ្ដើម​សម្រាប់​ចូល​ដំណើរ​ការ​កម្មវិធី​រហ័ស"
128148
129−#: qml/Components/EdgeDemo.qml:226
149+#: qml/Components/EdgeDemo.qml:229
130150msgid "Well done"
131151msgstr "ធ្វើ​បាន​ល្អ"
132152
133−#: qml/Components/EdgeDemo.qml:227
153+#: qml/Components/EdgeDemo.qml:230
134154msgid ""
135155"You have now mastered the edge gestures and can start using the "
136156"phone<br><br>Tap on the screen to start"
@@ -138,40 +158,27 @@ msgstr ""
138158"ឥឡូវ​អ្នក​បាន​ពិនិត្យ​កាយវិការ​គែម​ "
139159"និង​អាច​ចាប់ផ្ដើម​ប្រើ​ទូរស័ព្ទ<br><br>ប៉ះ លើ​អេក្រង់​ដើម្បី​ចាប់ផ្ដើម"
140160
141−#: qml/Components/Lockscreen.qml:167
142−msgid "Please wait"
143−msgstr "សូមរង់ចាំ"
144−
145−#: qml/Components/Lockscreen.qml:172
146−msgid "Too many incorrect attempts"
147−msgstr "បាន​ព្យាយាម​ខុស​ច្រើន​ដង​ពេក"
161+#: qml/Components/Lockscreen.qml:223
162+msgid "Return to Call"
163+msgstr ""
148164
149−#: qml/Components/Lockscreen.qml:206
165+#: qml/Components/Lockscreen.qml:223
150166msgid "Emergency Call"
151167msgstr "ការ​ហៅ​ពេល​អាសន្ន"
152168
153−#: qml/Components/Lockscreen.qml:226
169+#: qml/Components/Lockscreen.qml:255
154170msgid "OK"
155171msgstr "យល់ព្រម"
156172
157−#: qml/Components/PassphraseLockscreen.qml:61
158−#, qt-format
159−msgid "Hello %1"
160−msgstr "សួស្ដី %1"
161−
162−#: qml/Components/PassphraseLockscreen.qml:61
163−msgid "Hello"
164−msgstr "សួស្តី"
165−
166−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
173+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
167174msgid "See less"
168175msgstr "មើល​តិច​ជាង"
169176
170−#: qml/Dash/GenericScopeView.qml:411
177+#: qml/Dash/GenericScopeView.qml:434
171178msgid "See all"
172179msgstr "មើល​ទាំងអស់"
173180
174−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
181+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
175182#: qml/Panel/SearchIndicator.qml:27
176183msgid "Search"
177184msgstr "ស្វែង​រក"
@@ -208,15 +215,23 @@ msgstr "បន្ថែម​ការ​ពិនិត្យ"
208215msgid "Send"
209216msgstr "ផ្ញើ"
210217
211−#: qml/Dash/ScopesOverview.qml:206
218+#: qml/Dash/PullToRefreshScopeStyle.qml:55
219+msgid "Pull to refresh…"
220+msgstr ""
221+
222+#: qml/Dash/PullToRefreshScopeStyle.qml:60
223+msgid "Release to refresh…"
224+msgstr ""
225+
226+#: qml/Dash/ScopesOverview.qml:215
212227msgid "Manage Scopes"
213228msgstr ""
214229
215−#: qml/Dash/ScopesOverview.qml:428
230+#: qml/Dash/ScopesOverview.qml:437
216231msgid "Done"
217232msgstr "ធ្វើរួច"
218233
219−#: qml/Dash/ScopesOverview.qml:454
234+#: qml/Dash/ScopesOverview.qml:463
220235msgid "Store"
221236msgstr "រក្សាទុក"
222237
@@ -228,9 +243,9 @@ msgstr "និយម"
228243msgid "All"
229244msgstr "ទាំងអស់"
230245
231−#: qml/Greeter/Greeter.qml:157
232−msgid "Swipe to unlock"
233−msgstr "អូស​ដើម្បី​ដោះសោ"
246+#: qml/Greeter/Greeter.qml:174
247+msgid "Unlock"
248+msgstr ""
234249
235250#: qml/Hud/HudParametrizedActionsPage.qml:139
236251msgid "Confirm"
@@ -252,51 +267,43 @@ msgstr "និយាយ​ឥឡូវ..."
252267msgid "Speaking..."
253268msgstr "កំពុង​និយាយ..."
254269
255−#: qml/Notifications/NotificationMenuItemFactory.qml:108
270+#: qml/Notifications/NotificationMenuItemFactory.qml:116
256271msgid "Show password"
257272msgstr "បង្ហាញ​ពាក្យ​សម្ងាត់"
258273
259−#: qml/Notifications/NotificationMenuItemFactory.qml:124
260−msgid "Enter SIM PIN"
261−msgstr "បញ្ចូល​លេខ​កូដ PIN ស៊ីម"
262−
263−#: qml/Notifications/NotificationMenuItemFactory.qml:125
264−msgid "Sorry, incorrect PIN"
265−msgstr "សូមទោស! លេខ​កូដ PIN មិន​ត្រឹមត្រូវ"
266−
267−#: qml/Panel/ActiveCallHint.qml:77
274+#: qml/Panel/ActiveCallHint.qml:79
268275msgid "Tap to return to call..."
269276msgstr "ប៉ះ​ដើម្បី​ត្រឡប់​ទៅ​ការ​ហៅ..."
270277
271−#: qml/Panel/ActiveCallHint.qml:90
278+#: qml/Panel/ActiveCallHint.qml:92
272279msgid "Conference"
273280msgstr "សន្និសីទ"
274281
275−#: qml/Panel/Indicators/MenuItemFactory.qml:600
282+#: qml/Panel/Indicators/MenuItemFactory.qml:615
276283msgid "Nothing is playing"
277284msgstr ""
278285
279−#: qml/Panel/Indicators/MenuItemFactory.qml:748
286+#: qml/Panel/Indicators/MenuItemFactory.qml:763
280287msgid "In queue…"
281288msgstr "ក្នុងជួរ…"
282289
283−#: qml/Panel/Indicators/MenuItemFactory.qml:752
290+#: qml/Panel/Indicators/MenuItemFactory.qml:767
284291msgid "Downloading"
285292msgstr "ទាញយក"
286293
287−#: qml/Panel/Indicators/MenuItemFactory.qml:754
294+#: qml/Panel/Indicators/MenuItemFactory.qml:769
288295msgid "Paused, tap to resume"
289296msgstr "បាន​ផ្អាក, ប៉ះ ដើម្បីបន្ត"
290297
291−#: qml/Panel/Indicators/MenuItemFactory.qml:756
298+#: qml/Panel/Indicators/MenuItemFactory.qml:771
292299msgid "Canceled"
293300msgstr "បាន​បោះបង់"
294301
295−#: qml/Panel/Indicators/MenuItemFactory.qml:758
302+#: qml/Panel/Indicators/MenuItemFactory.qml:773
296303msgid "Finished"
297304msgstr "បាន​បញ្ចប់"
298305
299−#: qml/Panel/Indicators/MenuItemFactory.qml:760
306+#: qml/Panel/Indicators/MenuItemFactory.qml:775
300307msgid "Failed, tap to retry"
301308msgstr "បាន​បរាជ័យ ប៉ះ​ ដើម្បី​ព្យាយាម​ម្ដង​ទៀត"
302309
@@ -308,45 +315,49 @@ msgstr "ដោះ​សោ​ស៊ីម"
308315msgid "Roaming"
309316msgstr "រ៉ូមីង"
310317
311−#: qml/Shell.qml:320
312−msgid "Enter your passphrase"
313−msgstr "បញ្ចូល​ឃ្លា​សម្ងាត់​របស់​អ្នក"
318+#: qml/Shell.qml:381
319+msgid "Enter passphrase"
320+msgstr ""
314321
315−#: qml/Shell.qml:321
322+#: qml/Shell.qml:382
316323msgid "Sorry, incorrect passphrase"
317324msgstr "សូមទោស! ឃ្លា​សម្ងាត់​មិន​ត្រឹមត្រូវ"
318325
319−#: qml/Shell.qml:323
320−msgid "Enter your passcode"
321−msgstr "បញ្ចូល​កូដ​សម្ងាត់​របស់​អ្នក"
326+#: qml/Shell.qml:383
327+msgid "Please re-enter"
328+msgstr ""
329+
330+#: qml/Shell.qml:385
331+msgid "Enter passcode"
332+msgstr ""
322333
323−#: qml/Shell.qml:324
334+#: qml/Shell.qml:386
324335msgid "Sorry, incorrect passcode"
325336msgstr "សូមទោស! កូដ​សម្ងាត់​មិន​ត្រឹមត្រូវ"
326337
327−#: qml/Shell.qml:327
338+#: qml/Shell.qml:389
328339#, qt-format
329−msgid "Enter your %1"
330−msgstr "បញ្ចូល %1 របស់​អ្នក"
340+msgid "Enter %1"
341+msgstr ""
331342
332−#: qml/Shell.qml:328
343+#: qml/Shell.qml:390
333344#, qt-format
334345msgid "Sorry, incorrect %1"
335346msgstr "សូមទោស! %1 មិន​ត្រឹមត្រូវ"
336347
337−#: qml/Shell.qml:363
348+#: qml/Shell.qml:431
338349msgid "Sorry, incorrect passphrase."
339350msgstr "សូមទោស! ឃ្លា​សម្ងាត់​មិន​ត្រឹមត្រូវ។"
340351
341−#: qml/Shell.qml:364
352+#: qml/Shell.qml:432
342353msgid "Sorry, incorrect passcode."
343354msgstr "សូមទោស! កូដ​សម្ងាត់​មិន​ត្រឹមត្រូវ។"
344355
345−#: qml/Shell.qml:365
356+#: qml/Shell.qml:433
346357msgid "This will be your last attempt."
347358msgstr "នេះ​គឺ​ការ​ព្យាយាម​លើក​ចុងក្រោយ។"
348359
349−#: qml/Shell.qml:367
360+#: qml/Shell.qml:435
350361msgid ""
351362"If passphrase is entered incorrectly, your phone will conduct a factory "
352363"reset and all personal data will be deleted."
@@ -355,7 +366,7 @@ msgstr ""
355366"ទូរស័ព្ទ​របស់​អ្នក​នឹង​កំណត់​ទៅ​ទិន្នន័យ​ពី​រោងចក្រ​វិញ "
356367"ហើយ​ទិន្នន័យ​ផ្ទាល់ខ្លួន​ទាំងអស់​របស់​អ្នក​នឹង​ត្រូវ​បាន​លុប។"
357368
358−#: qml/Shell.qml:368
369+#: qml/Shell.qml:436
359370msgid ""
360371"If passcode is entered incorrectly, your phone will conduct a factory reset "
361372"and all personal data will be deleted."
@@ -363,6 +374,3 @@ msgstr ""
363374"បើ​បញ្ចូល​កូដ​សម្ងាត់​មិន​ត្រឹមត្រូវ "
364375"ទូរស័ព្ទ​របស់​អ្នក​នឹង​កំណត់​ទៅ​ទិន្នន័យ​ពី​រោងចក្រ​វិញ "
365376"ហើយ​ទិន្នន័យ​ផ្ទាល់ខ្លួន​ទាំងអស់​របស់​អ្នក​នឹង​ត្រូវ​បាន​លុប។"
366−
367−#~ msgid "Manage Dash"
368−#~ msgstr "គ្រប់គ្រង​ផ្ទាំង"
po/kn.po+90−79
@@ -7,15 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
1111"PO-Revision-Date: 2013-06-27 05:43+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Kannada <kn@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:19+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
18+"X-Launchpad-Export-Date: 2014-11-06 06:40+0000\n"
19+"X-Generator: Launchpad (build 17223)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
@@ -30,59 +31,78 @@ msgstr ""
3031msgid "Unpin shortcut"
3132msgstr ""
3233
33−#: qml/Components/Dialogs.qml:70
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+
53+#: qml/Components/Dialogs.qml:74
3454msgid "Log out"
3555msgstr ""
3656
37−#: qml/Components/Dialogs.qml:71
57+#: qml/Components/Dialogs.qml:75
3858msgid "Are you sure you want to log out?"
3959msgstr ""
4060
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
61+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
62+#: qml/Components/Dialogs.qml:126
4363msgid "No"
4464msgstr ""
4565
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
66+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
67+#: qml/Components/Dialogs.qml:133
4868msgid "Yes"
4969msgstr ""
5070
51−#: qml/Components/Dialogs.qml:94
71+#: qml/Components/Dialogs.qml:98
5272msgid "Shut down"
5373msgstr ""
5474
55−#: qml/Components/Dialogs.qml:95
75+#: qml/Components/Dialogs.qml:99
5676msgid "Are you sure you want to shut down?"
5777msgstr ""
5878
59−#: qml/Components/Dialogs.qml:119
79+#: qml/Components/Dialogs.qml:123
6080msgid "Reboot"
6181msgstr ""
6282
63−#: qml/Components/Dialogs.qml:120
83+#: qml/Components/Dialogs.qml:124
6484msgid "Are you sure you want to reboot?"
6585msgstr ""
6686
67−#: qml/Components/Dialogs.qml:144
87+#: qml/Components/Dialogs.qml:148
6888msgid "Power"
6989msgstr ""
7090
71−#: qml/Components/Dialogs.qml:145
91+#: qml/Components/Dialogs.qml:149
7292msgid ""
7393"Are you sure you would like\n"
7494"to power off?"
7595msgstr ""
7696
77−#: qml/Components/Dialogs.qml:147
97+#: qml/Components/Dialogs.qml:151
7898msgid "Power off"
7999msgstr ""
80100
81−#: qml/Components/Dialogs.qml:157
101+#: qml/Components/Dialogs.qml:161
82102msgid "Restart"
83103msgstr ""
84104
85−#: qml/Components/Dialogs.qml:167
105+#: qml/Components/Dialogs.qml:171
86106msgid "Cancel"
87107msgstr ""
88108
@@ -114,58 +134,45 @@ msgstr ""
114134msgid "Swipe up again to close the settings screen"
115135msgstr ""
116136
117−#: qml/Components/EdgeDemo.qml:198
137+#: qml/Components/EdgeDemo.qml:201
118138msgid "Left edge"
119139msgstr ""
120140
121−#: qml/Components/EdgeDemo.qml:199
141+#: qml/Components/EdgeDemo.qml:202
122142msgid "Swipe from the left to reveal the launcher for quick access to apps"
123143msgstr ""
124144
125−#: qml/Components/EdgeDemo.qml:226
145+#: qml/Components/EdgeDemo.qml:229
126146msgid "Well done"
127147msgstr ""
128148
129−#: qml/Components/EdgeDemo.qml:227
149+#: qml/Components/EdgeDemo.qml:230
130150msgid ""
131151"You have now mastered the edge gestures and can start using the "
132152"phone<br><br>Tap on the screen to start"
133153msgstr ""
134154
135−#: qml/Components/Lockscreen.qml:167
136−msgid "Please wait"
137−msgstr ""
138−
139−#: qml/Components/Lockscreen.qml:172
140−msgid "Too many incorrect attempts"
155+#: qml/Components/Lockscreen.qml:223
156+msgid "Return to Call"
141157msgstr ""
142158
143−#: qml/Components/Lockscreen.qml:206
159+#: qml/Components/Lockscreen.qml:223
144160msgid "Emergency Call"
145161msgstr ""
146162
147−#: qml/Components/Lockscreen.qml:226
163+#: qml/Components/Lockscreen.qml:255
148164msgid "OK"
149165msgstr ""
150166
151−#: qml/Components/PassphraseLockscreen.qml:61
152−#, qt-format
153−msgid "Hello %1"
154−msgstr ""
155−
156−#: qml/Components/PassphraseLockscreen.qml:61
157−msgid "Hello"
158−msgstr ""
159−
160−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
167+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
161168msgid "See less"
162169msgstr ""
163170
164−#: qml/Dash/GenericScopeView.qml:411
171+#: qml/Dash/GenericScopeView.qml:434
165172msgid "See all"
166173msgstr ""
167174
168−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
175+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
169176#: qml/Panel/SearchIndicator.qml:27
170177msgid "Search"
171178msgstr "ಹುಡುಕು"
@@ -202,15 +209,23 @@ msgstr ""
202209msgid "Send"
203210msgstr ""
204211
205−#: qml/Dash/ScopesOverview.qml:206
212+#: qml/Dash/PullToRefreshScopeStyle.qml:55
213+msgid "Pull to refresh…"
214+msgstr ""
215+
216+#: qml/Dash/PullToRefreshScopeStyle.qml:60
217+msgid "Release to refresh…"
218+msgstr ""
219+
220+#: qml/Dash/ScopesOverview.qml:215
206221msgid "Manage Scopes"
207222msgstr ""
208223
209−#: qml/Dash/ScopesOverview.qml:428
224+#: qml/Dash/ScopesOverview.qml:437
210225msgid "Done"
211226msgstr ""
212227
213−#: qml/Dash/ScopesOverview.qml:454
228+#: qml/Dash/ScopesOverview.qml:463
214229msgid "Store"
215230msgstr ""
216231
@@ -222,8 +237,8 @@ msgstr ""
222237msgid "All"
223238msgstr ""
224239
225−#: qml/Greeter/Greeter.qml:157
226−msgid "Swipe to unlock"
240+#: qml/Greeter/Greeter.qml:174
241+msgid "Unlock"
227242msgstr ""
228243
229244#: qml/Hud/HudParametrizedActionsPage.qml:139
@@ -246,51 +261,43 @@ msgstr "ಈಗ ಮಾತನಾಡಿ ..."
246261msgid "Speaking..."
247262msgstr "ಮಾತನಾಡುತಿದ್ದೀರಿ"
248263
249−#: qml/Notifications/NotificationMenuItemFactory.qml:108
264+#: qml/Notifications/NotificationMenuItemFactory.qml:116
250265msgid "Show password"
251266msgstr ""
252267
253−#: qml/Notifications/NotificationMenuItemFactory.qml:124
254−msgid "Enter SIM PIN"
255−msgstr ""
256−
257−#: qml/Notifications/NotificationMenuItemFactory.qml:125
258−msgid "Sorry, incorrect PIN"
259−msgstr ""
260−
261−#: qml/Panel/ActiveCallHint.qml:77
268+#: qml/Panel/ActiveCallHint.qml:79
262269msgid "Tap to return to call..."
263270msgstr ""
264271
265−#: qml/Panel/ActiveCallHint.qml:90
272+#: qml/Panel/ActiveCallHint.qml:92
266273msgid "Conference"
267274msgstr ""
268275
269−#: qml/Panel/Indicators/MenuItemFactory.qml:600
276+#: qml/Panel/Indicators/MenuItemFactory.qml:615
270277msgid "Nothing is playing"
271278msgstr ""
272279
273−#: qml/Panel/Indicators/MenuItemFactory.qml:748
280+#: qml/Panel/Indicators/MenuItemFactory.qml:763
274281msgid "In queue…"
275282msgstr ""
276283
277−#: qml/Panel/Indicators/MenuItemFactory.qml:752
284+#: qml/Panel/Indicators/MenuItemFactory.qml:767
278285msgid "Downloading"
279286msgstr ""
280287
281−#: qml/Panel/Indicators/MenuItemFactory.qml:754
288+#: qml/Panel/Indicators/MenuItemFactory.qml:769
282289msgid "Paused, tap to resume"
283290msgstr ""
284291
285−#: qml/Panel/Indicators/MenuItemFactory.qml:756
292+#: qml/Panel/Indicators/MenuItemFactory.qml:771
286293msgid "Canceled"
287294msgstr ""
288295
289−#: qml/Panel/Indicators/MenuItemFactory.qml:758
296+#: qml/Panel/Indicators/MenuItemFactory.qml:773
290297msgid "Finished"
291298msgstr ""
292299
293−#: qml/Panel/Indicators/MenuItemFactory.qml:760
300+#: qml/Panel/Indicators/MenuItemFactory.qml:775
294301msgid "Failed, tap to retry"
295302msgstr ""
296303
@@ -302,51 +309,55 @@ msgstr ""
302309msgid "Roaming"
303310msgstr ""
304311
305−#: qml/Shell.qml:320
306−msgid "Enter your passphrase"
312+#: qml/Shell.qml:381
313+msgid "Enter passphrase"
307314msgstr ""
308315
309−#: qml/Shell.qml:321
316+#: qml/Shell.qml:382
310317msgid "Sorry, incorrect passphrase"
311318msgstr ""
312319
313−#: qml/Shell.qml:323
314−msgid "Enter your passcode"
320+#: qml/Shell.qml:383
321+msgid "Please re-enter"
322+msgstr ""
323+
324+#: qml/Shell.qml:385
325+msgid "Enter passcode"
315326msgstr ""
316327
317−#: qml/Shell.qml:324
328+#: qml/Shell.qml:386
318329msgid "Sorry, incorrect passcode"
319330msgstr ""
320331
321−#: qml/Shell.qml:327
332+#: qml/Shell.qml:389
322333#, qt-format
323−msgid "Enter your %1"
334+msgid "Enter %1"
324335msgstr ""
325336
326−#: qml/Shell.qml:328
337+#: qml/Shell.qml:390
327338#, qt-format
328339msgid "Sorry, incorrect %1"
329340msgstr ""
330341
331−#: qml/Shell.qml:363
342+#: qml/Shell.qml:431
332343msgid "Sorry, incorrect passphrase."
333344msgstr ""
334345
335−#: qml/Shell.qml:364
346+#: qml/Shell.qml:432
336347msgid "Sorry, incorrect passcode."
337348msgstr ""
338349
339−#: qml/Shell.qml:365
350+#: qml/Shell.qml:433
340351msgid "This will be your last attempt."
341352msgstr ""
342353
343−#: qml/Shell.qml:367
354+#: qml/Shell.qml:435
344355msgid ""
345356"If passphrase is entered incorrectly, your phone will conduct a factory "
346357"reset and all personal data will be deleted."
347358msgstr ""
348359
349−#: qml/Shell.qml:368
360+#: qml/Shell.qml:436
350361msgid ""
351362"If passcode is entered incorrectly, your phone will conduct a factory reset "
352363"and all personal data will be deleted."
po/ko.po+92−85
@@ -7,15 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-09-24 10:43+0100\n"
10+"POT-Creation-Date: 2014-10-31 10:36+0100\n"
1111"PO-Revision-Date: 2014-08-19 13:02+0000\n"
1212"Last-Translator: MinSik CHO <Unknown>\n"
1313"Language-Team: Korean <ko@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-09-29 05:19+0000\n"
18−"X-Generator: Launchpad (build 17196)\n"
17+"Plural-Forms: nplurals=1; plural=0;\n"
18+"X-Launchpad-Export-Date: 2014-11-06 06:40+0000\n"
19+"X-Generator: Launchpad (build 17223)\n"
1920
2021#: plugins/LightDM/Greeter.cpp:130
2122msgid "Password: "
@@ -30,59 +31,77 @@ msgstr "바로 가기를 고정"
3031msgid "Unpin shortcut"
3132msgstr "바로 가기를 고정 해제"
3233
33−#: qml/Components/Dialogs.qml:70
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+
52+#: qml/Components/Dialogs.qml:74
3453msgid "Log out"
3554msgstr "로그아웃"
3655
37−#: qml/Components/Dialogs.qml:71
56+#: qml/Components/Dialogs.qml:75
3857msgid "Are you sure you want to log out?"
3958msgstr "정말 로그아웃하시겠습니까?"
4059
41−#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42−#: qml/Components/Dialogs.qml:122
60+#: qml/Components/Dialogs.qml:77 qml/Components/Dialogs.qml:101
61+#: qml/Components/Dialogs.qml:126
4362msgid "No"
4463msgstr "아니요"
4564
46−#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47−#: qml/Components/Dialogs.qml:129
65+#: qml/Components/Dialogs.qml:84 qml/Components/Dialogs.qml:108
66+#: qml/Components/Dialogs.qml:133
4867msgid "Yes"
4968msgstr "예"
5069
51−#: qml/Components/Dialogs.qml:94
70+#: qml/Components/Dialogs.qml:98
5271msgid "Shut down"
5372msgstr "컴퓨터 끄기"
5473
55−#: qml/Components/Dialogs.qml:95
74+#: qml/Components/Dialogs.qml:99
5675msgid "Are you sure you want to shut down?"
5776msgstr "정말 컴퓨터를 끄시겠습니까?"
5877
59−#: qml/Components/Dialogs.qml:119
78+#: qml/Components/Dialogs.qml:123
6079msgid "Reboot"
6180msgstr "다시 시작"
6281
63−#: qml/Components/Dialogs.qml:120
82+#: qml/Components/Dialogs.qml:124
6483msgid "Are you sure you want to reboot?"
6584msgstr "정말 컴퓨터를 다시 시작하시겠습니까?"
6685
67−#: qml/Components/Dialogs.qml:144
86+#: qml/Components/Dialogs.qml:148
6887msgid "Power"
6988msgstr "전원"
7089
71−#: qml/Components/Dialogs.qml:145
90+#: qml/Components/Dialogs.qml:149
7291msgid ""
7392"Are you sure you would like\n"
7493"to power off?"
7594msgstr "정말 컴퓨터를 끄시겠습니까?"
7695
77−#: qml/Components/Dialogs.qml:147
96+#: qml/Components/Dialogs.qml:151
7897msgid "Power off"
7998msgstr "전원 끄기"
8099
81−#: qml/Components/Dialogs.qml:157
100+#: qml/Components/Dialogs.qml:161
82101msgid "Restart"
83102msgstr "다시 시작"
84103
85−#: qml/Components/Dialogs.qml:167
104+#: qml/Components/Dialogs.qml:171
86105msgid "Cancel"
87106msgstr "취소"
88107
@@ -114,59 +133,46 @@ msgstr "닫기"
114133msgid "Swipe up again to close the settings screen"
115134msgstr "위쪽으로 쓸면 설정 화면을 닫습니다."
116135
117−#: qml/Components/EdgeDemo.qml:198
136+#: qml/Components/EdgeDemo.qml:201
118137msgid "Left edge"
119138msgstr "왼쪽 가장자리"
120139
121−#: qml/Components/EdgeDemo.qml:199
140+#: qml/Components/EdgeDemo.qml:202
122141msgid "Swipe from the left to reveal the launcher for quick access to apps"
123142msgstr "왼쪽에서 쓸면 런처를 표시해 프로그램에 빠르게 접근할 수 있습니다."
124143
125−#: qml/Components/EdgeDemo.qml:226
144+#: qml/Components/EdgeDemo.qml:229
126145msgid "Well done"
127146msgstr "잘하셨습니다."
128147
129−#: qml/Components/EdgeDemo.qml:227
148+#: qml/Components/EdgeDemo.qml:230
130149msgid ""
131150"You have now mastered the edge gestures and can start using the "
132151"phone<br><br>Tap on the screen to start"
133152msgstr ""
134153"여러분은 가장자리에서 끌어오기 제스쳐를 완벽히 익히셨고 휴대 전화를 사용할 수 있습니다. <br><br> 스크린을 터치해서 시작하세요."
135154
136−#: qml/Components/Lockscreen.qml:167
137−msgid "Please wait"
138−msgstr "기다려주십시오"
139−
140−#: qml/Components/Lockscreen.qml:172
141−msgid "Too many incorrect attempts"
142−msgstr "너무 많이 틀리셨습니다"
155+#: qml/Components/Lockscreen.qml:223
156+msgid "Return to Call"
157+msgstr ""
143158
144−#: qml/Components/Lockscreen.qml:206
159+#: qml/Components/Lockscreen.qml:223
145160msgid "Emergency Call"
146161msgstr "긴급 통화"
147162
148−#: qml/Components/Lockscreen.qml:226
163+#: qml/Components/Lockscreen.qml:255
149164msgid "OK"
150165msgstr "확인"
151166
152−#: qml/Components/PassphraseLockscreen.qml:61
153−#, qt-format
154−msgid "Hello %1"
155−msgstr "안녕하세요 %1"
156−
157−#: qml/Components/PassphraseLockscreen.qml:61
158−msgid "Hello"
159−msgstr "안녕하세요"
160−
161−#: qml/Dash/GenericScopeView.qml:411 qml/Dash/GenericScopeView.qml:533
167+#: qml/Dash/GenericScopeView.qml:434 qml/Dash/GenericScopeView.qml:591
162168msgid "See less"
163169msgstr "간단히 표시"
164170
165−#: qml/Dash/GenericScopeView.qml:411
171+#: qml/Dash/GenericScopeView.qml:434
166172msgid "See all"
167173msgstr "모두 보기"
168174
169−#: qml/Dash/GenericScopeView.qml:473 qml/Dash/PageHeader.qml:258
175+#: qml/Dash/GenericScopeView.qml:496 qml/Dash/PageHeader.qml:258
170176#: qml/Panel/SearchIndicator.qml:27
171177msgid "Search"
172178msgstr "검색"
@@ -203,15 +209,23 @@ msgstr "평가 추가"
203209msgid "Send"
204210msgstr "보내기"
205211
206−#: qml/Dash/ScopesOverview.qml:206
212+#: qml/Dash/PullToRefreshScopeStyle.qml:55
213+msgid "Pull to refresh…"
214+msgstr "당기면 새로 고침..."
215+
216+#: qml/Dash/PullToRefreshScopeStyle.qml:60
217+msgid "Release to refresh…"
218+msgstr "놓으면 새로 고침..."
219+
220+#: qml/Dash/ScopesOverview.qml:215
207221msgid "Manage Scopes"
208222msgstr "스코프 관리"
209223
210−#: qml/Dash/ScopesOverview.qml:428
224+#: qml/Dash/ScopesOverview.qml:437
211225msgid "Done"
212226msgstr "완료"
213227
214−#: qml/Dash/ScopesOverview.qml:454
228+#: qml/Dash/ScopesOverview.qml:463
215229msgid "Store"
216230msgstr "장터"
217231
@@ -223,9 +237,9 @@ msgstr "즐겨찾기"
223237msgid "All"
224238msgstr "모두"
225239
226−#: qml/Greeter/Greeter.qml:157
227−msgid "Swipe to unlock"
228−msgstr "쓸어서 잠금 해제"
240+#: qml/Greeter/Greeter.qml:174
241+msgid "Unlock"
242+msgstr "잠금 해제"
229243
230244#: qml/Hud/HudParametrizedActionsPage.qml:139
231245msgid "Confirm"
@@ -247,51 +261,43 @@ msgstr "지금 말하세요..."
247261msgid "Speaking..."
248262msgstr "말하는 중..."
249263
250−#: qml/Notifications/NotificationMenuItemFactory.qml:108
264+#: qml/Notifications/NotificationMenuItemFactory.qml:116
251265msgid "Show password"
252266msgstr "암호 표시"
253267
254−#: qml/Notifications/NotificationMenuItemFactory.qml:124
255−msgid "Enter SIM PIN"
256−msgstr "심 카드의 개인 식별 번호 입력"
257−
258−#: qml/Notifications/NotificationMenuItemFactory.qml:125
259−msgid "Sorry, incorrect PIN"
260−msgstr "죄송합니다. 개인 식별 번호가 올바르지 않습니다."
261−
262−#: qml/Panel/ActiveCallHint.qml:77
268+#: qml/Panel/ActiveCallHint.qml:79
263269msgid "Tap to return to call..."
264270msgstr "통화로 돌아가려면 터치하세요..."
265271
266−#: qml/Panel/ActiveCallHint.qml:90
272+#: qml/Panel/ActiveCallHint.qml:92
267273msgid "Conference"
268274msgstr "회의"
269275
270−#: qml/Panel/Indicators/MenuItemFactory.qml:600
276+#: qml/Panel/Indicators/MenuItemFactory.qml:615
271277msgid "Nothing is playing"
272278msgstr "연주하는 항목 없음"
273279
274−#: qml/Panel/Indicators/MenuItemFactory.qml:748
280+#: qml/Panel/Indicators/MenuItemFactory.qml:763
275281msgid "In queue…"
276282msgstr "대기 중..."
277283
278−#: qml/Panel/Indicators/MenuItemFactory.qml:752
284+#: qml/Panel/Indicators/MenuItemFactory.qml:767
279285msgid "Downloading"
280286msgstr "다운로드 중"
281287
282−#: qml/Panel/Indicators/MenuItemFactory.qml:754
288+#: qml/Panel/Indicators/MenuItemFactory.qml:769
283289msgid "Paused, tap to resume"
284290msgstr "일시 중지하였습니다. 계속하려면 눌러주세요."
285291
286−#: qml/Panel/Indicators/MenuItemFactory.qml:756
292+#: qml/Panel/Indicators/MenuItemFactory.qml:771
287293msgid "Canceled"
288294msgstr "취소함"
289295
290−#: qml/Panel/Indicators/MenuItemFactory.qml:758
296+#: qml/Panel/Indicators/MenuItemFactory.qml:773
291297msgid "Finished"
292298msgstr "완료함"
293299
294−#: qml/Panel/Indicators/MenuItemFactory.qml:760
300+#: qml/Panel/Indicators/MenuItemFactory.qml:775
295301msgid "Failed, tap to retry"
296302msgstr "실패, 누르면 다시 시도합니다."
297303
@@ -303,55 +309,56 @@ msgstr "심 카드 잠금 해제"
303309msgid "Roaming"
304310msgstr "로밍"
305311
306−#: qml/Shell.qml:320
307−msgid "Enter your passphrase"
312+#: qml/Shell.qml:381
313+msgid "Enter passphrase"
308314msgstr "패스프레이즈를 입력해주십시오."
309315
310−#: qml/Shell.qml:321
316+#: qml/Shell.qml:382
311317msgid "Sorry, incorrect passphrase"
312318msgstr "죄송합니다. 패스프레이즈가 올바르지 않습니다."
313319
314−#: qml/Shell.qml:323
315−msgid "Enter your passcode"
320+#: qml/Shell.qml:383
321+msgid "Please re-enter"
322+msgstr "다시 입력해주십시오."
323+
324+#: qml/Shell.qml:385
325+msgid "Enter passcode"
316326msgstr "패스코드를 입력해주십시오."
317327
318−#: qml/Shell.qml:324
328+#: qml/Shell.qml:386
319329msgid "Sorry, incorrect passcode"
320330msgstr "죄송합니다. 패스코드가 올바르지 않습니다."
321331
322−#: qml/Shell.qml:327
332+#: qml/Shell.qml:389
323333#, qt-format
324−msgid "Enter your %1"
325−msgstr "%1을(를) 입력해주십시오."
334+msgid "Enter %1"
335+msgstr "%1 입력"
326336
327−#: qml/Shell.qml:328
337+#: qml/Shell.qml:390
328338#, qt-format
329339msgid "Sorry, incorrect %1"
330340msgstr "죄송합니다. %1이(가) 올바르지 않습니다."
331341
332−#: qml/Shell.qml:363
342+#: qml/Shell.qml:431
333343msgid "Sorry, incorrect passphrase."
334344msgstr "올바르지 않은 패스프레이즈입니다."
335345
336−#: qml/Shell.qml:364
346+#: qml/Shell.qml:432
337347msgid "Sorry, incorrect passcode."
338348msgstr "최송합니다. 패스코드가 올바르지 않습니다."
339349
340−#: qml/Shell.qml:365
350+#: qml/Shell.qml:433
341351msgid "This will be your last attempt."
342352msgstr "마지막 시도입니다."
343353
344−#: qml/Shell.qml:367
354+#: qml/Shell.qml:435
345355msgid ""
346356"If passphrase is entered incorrectly, your phone will conduct a factory "
347357"reset and all personal data will be deleted."
348358msgstr "이번에도 올바르지 않은 패스프레이즈를 입력하면 휴대 전화를 공장 초기화하여 모든 개인 정보를 삭제합니다."
349359
350−#: qml/Shell.qml:368
360+#: qml/Shell.qml:436
351361msgid ""
352362"If passcode is entered incorrectly, your phone will conduct a factory reset "
353363"and all personal data will be deleted."
354364msgstr "이번에도 올바르지 않은 패스코드를 입력하면 휴대 전화를 공장 초기화하여 모든 개인 정보를 삭제합니다."
355−
356−#~ msgid "Manage Dash"
357−#~ msgstr "대시 관리"
po/ku.po+95−84

This diff is too big to show here.

po/ky.po+90−79

This diff is too big to show here.

po/lo.po+90−79

This diff is too big to show here.

po/lt.po+92−80

This diff is too big to show here.

po/lv.po+92−81

This diff is too big to show here.

po/ml.po+90−79

This diff is too big to show here.

po/mr.po+90−79

This diff is too big to show here.

po/ms.po+147−128

This diff is too big to show here.

po/my.po+90−79

This diff is too big to show here.

po/nb.po+100−90

This diff is too big to show here.

po/nl.po+101−89

This diff is too big to show here.

po/pa.ponew file+366

This diff is too big to show here.

po/pl.po+92−80

This diff is too big to show here.

po/pt.po+108−99

This diff is too big to show here.

po/pt_BR.po+99−91

This diff is too big to show here.

po/ro.po+100−87

This diff is too big to show here.

po/ru.po+101−84

This diff is too big to show here.

po/shn.po+90−79

This diff is too big to show here.

po/si.po+90−79

This diff is too big to show here.

po/sl.po+101−90

This diff is too big to show here.

po/sq.po+90−79

This diff is too big to show here.

po/sr.po+96−87

This diff is too big to show here.

po/sv.po+96−88

This diff is too big to show here.

po/sw.po+90−79

This diff is too big to show here.

po/ta.po+90−79

This diff is too big to show here.

po/te.po+91−80

This diff is too big to show here.

po/th.po+249−105

This diff is too big to show here.

po/tr.po+93−82

This diff is too big to show here.

po/ug.po+97−90

This diff is too big to show here.

po/uk.po+102−88

This diff is too big to show here.

po/unity8.pot+88−77

This diff is too big to show here.

po/update-unity-pot+1

This diff is too big to show here.

po/vi.po+90−79

This diff is too big to show here.

po/xh.po+90−79

This diff is too big to show here.

po/zh_CN.po+91−83

This diff is too big to show here.

po/zh_HK.po+91−80

This diff is too big to show here.

po/zh_TW.po+100−93

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+21−17

This diff is too big to show here.

qml/Components/DragHandle.qml+8−3

This diff is too big to show here.

qml/Components/EdgeDemo.qml+13−10

This diff is too big to show here.

qml/Components/EdgeDragArea.qml+2

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/ListItems/graphics/ListItemDividerVertical@18.pngdeleted

Binary file not shown.

qml/Components/Lockscreen.qml+132−103

This diff is too big to show here.

qml/Components/PassphraseLockscreen.qml+98−43

This diff is too big to show here.

qml/Components/PinLockscreen.qml+13−5

This diff is too big to show here.

qml/Components/ResponsiveGridView.qml+5−1

This diff is too big to show here.

qml/Components/ResponsiveVerticalJournal.qml+3−2

This diff is too big to show here.

qml/Components/ScreenGrabber.qmlnew file+72

This diff is too big to show here.

qml/Components/ScrollCalculator.qmlnew file+81

This diff is too big to show here.

qml/Components/VolumeKeyFilter.qmlnew file+63

This diff is too big to show here.

qml/Components/ZoomableImage.qml+17−14

This diff is too big to show here.

qml/Dash/CardGrid.qml+2−1

This diff is too big to show here.

qml/Dash/CardHorizontalList.qml+1−1

This diff is too big to show here.

qml/Dash/CardTool.qml+26−18

This diff is too big to show here.

qml/Dash/CardVerticalJournal.qml+19−1

This diff is too big to show here.

qml/Dash/Dash.qml+34−20

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+8−2

This diff is too big to show here.

qml/Dash/DashNavigation.qml+1

This diff is too big to show here.

qml/Dash/DashRenderer.qml+6−2

This diff is too big to show here.

qml/Dash/GenericScopeView.qml+75−17

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+54−18

This diff is too big to show here.

qml/Dash/Previews/PreviewOverlay.qmlnew file+115

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/Previews/PreviewZoomableImage.qml+38−5

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+1

This diff is too big to show here.

qml/Dash/ScopeSettingsPage.qml+1

This diff is too big to show here.

qml/Dash/ScopesOverview.qml+9−1

This diff is too big to show here.

qml/Dash/ScopesOverviewAll.qml+2

This diff is too big to show here.

qml/Dash/ScopesOverviewFavorites.qml+1−1

This diff is too big to show here.

qml/Greeter/Clock.qml+9−9

This diff is too big to show here.

qml/Greeter/Greeter.qml+19−2

This diff is too big to show here.

qml/Greeter/GreeterContent.qml+15

This diff is too big to show here.

qml/Greeter/Infographics.qml+20−15

This diff is too big to show here.

qml/Greeter/LoginList.qml+19−7

This diff is too big to show here.

qml/Launcher/Launcher.qml+29−4

This diff is too big to show here.

qml/Launcher/LauncherDelegate.qml+1−31

This diff is too big to show here.

qml/Launcher/LauncherPanel.qml+17−29

This diff is too big to show here.

qml/Launcher/graphics/quicklist_tooltip@30.png

Binary file not shown.

qml/Notifications/Notification.qml+94−11

This diff is too big to show here.

qml/Notifications/NotificationMenuItemFactory.qml+77−5

This diff is too big to show here.

qml/Notifications/Notifications.qml+2

This diff is too big to show here.

qml/Notifications/SwipeToAct.qmlnew file+309

This diff is too big to show here.

qml/Panel/ActiveCallHint.qml+4−2

This diff is too big to show here.

qml/Panel/Handle.qmlnew file+43

This diff is too big to show here.

qml/Panel/IndicatorItem.qml+234−23

This diff is too big to show here.

qml/Panel/IndicatorItemRow.qmlnew file+297

This diff is too big to show here.

qml/Panel/Indicators/DefaultIndicatorPage.qml → qml/Panel/IndicatorPage.qmlrenamed+22−17

This diff is too big to show here.

qml/Panel/IndicatorRow.qmldeleted−162

This diff is too big to show here.

qml/Panel/Indicators.qmldeleted−415

This diff is too big to show here.

qml/Panel/Indicators/CachedUnityMenuModel.qmldeleted−39

This diff is too big to show here.

qml/Panel/Indicators/DefaultIndicatorWidget.qmldeleted−119

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

qml/Panel/Indicators/MenuItemFactory.qml+47−4

This diff is too big to show here.

qml/Panel/Indicators/VisibleIndicators.qml+5−5

This diff is too big to show here.

qml/Panel/Indicators/client/IndicatorsPage.qml → qml/Panel/Indicators/client/IndicatorRepresentation.qmlrenamed+21−10

This diff is too big to show here.

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

This diff is too big to show here.

qml/Panel/Indicators/client/IndicatorsTree.qml+4−26

This diff is too big to show here.

qml/Panel/IndicatorsBar.qmlnew file+269

This diff is too big to show here.

qml/Panel/IndicatorsMenu.qmlnew file+318

This diff is too big to show here.

qml/Panel/MenuContent.qml+25−75

This diff is too big to show here.

qml/Panel/Panel.qml+48−41

This diff is too big to show here.

qml/Panel/PanelVelocityCalculator.qmlnew file+54

This diff is too big to show here.

qml/Shell.qml+219−83

This diff is too big to show here.

qml/Stages/ApplicationWindow.qml−18

This diff is too big to show here.

qml/Stages/PhoneStage.qml+28−6

This diff is too big to show here.

qml/Stages/SessionContainer.qml+1−13

This diff is too big to show here.

qml/Stages/SurfaceContainer.qml+37−6

This diff is too big to show here.

qml/Stages/TabletStage.qml+12−1

This diff is too big to show here.

run_on_device.sh+4−5

This diff is too big to show here.

src/CMakeLists.txt+7

This diff is too big to show here.

src/Dash/CMakeLists.txt+7

This diff is too big to show here.

src/Dash/main.cpp+6

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+27

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/libunity8-private/unitydbusobject.cppnew file+86

This diff is too big to show here.

src/libunity8-private/unitydbusobject.hnew file+46

This diff is too big to show here.

src/libunity8-private/unitydbusvirtualobject.cppnew file+83

This diff is too big to show here.

src/libunity8-private/unitydbusvirtualobject.hnew file+47

This diff is too big to show here.

src/main.cpp+5

This diff is too big to show here.

tests/CMakeLists.txt+1

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

tests/autopilot/unity8/shell/emulators/main_window.py+6−6

This diff is too big to show here.

tests/autopilot/unity8/shell/tests/__init__.py+1−1

This diff is too big to show here.

tests/autopilot/unity8/shell/tests/test_emulators.py+10−47

This diff is too big to show here.

tests/autopilot/unity8/shell/tests/test_lock_screen.py+3−1

This diff is too big to show here.

tests/autopilot/unity8/shell/tests/test_notifications.py+6−56

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+5−3

This diff is too big to show here.

tests/mocks/AccountsService/AccountsService.h+1

This diff is too big to show here.

tests/mocks/AccountsService/AccountsService.qmltypes+2

This diff is too big to show here.

tests/mocks/LightDM/CMakeLists.txt+2

This diff is too big to show here.

tests/mocks/LightDM/LightDM.qmltypes+1

This diff is too big to show here.

tests/mocks/QMenuModel/QMenuModel.qmltypes+1−1

This diff is too big to show here.

tests/mocks/QMenuModel/unitymenumodel.cpp+1−2

This diff is too big to show here.

tests/mocks/QMenuModel/unitymenumodel.h+6−2

This diff is too big to show here.

tests/mocks/QtMultimedia/QtMultimedia.qmltypes+10

This diff is too big to show here.

tests/mocks/QtMultimedia/audio.cpp+10

This diff is too big to show here.

tests/mocks/QtMultimedia/audio.h+12

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/Payments.qmltypes+2

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/Ubuntu/Telephony/Telephony.qmltypes+2−1

This diff is too big to show here.

tests/mocks/Unity/Application/Application.qmltypes+13

This diff is too big to show here.

tests/mocks/Unity/Application/ApplicationManager.cpp+26

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

tests/mocks/Unity/Application/MirSurfaceItem.cpp+18−22

This diff is too big to show here.

tests/mocks/Unity/Application/MirSurfaceItem.h+18−1

This diff is too big to show here.

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

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+7

This diff is too big to show here.

tests/mocks/Unity/DashCommunicator/DashCommunicator.qmltypes+6−6

This diff is too big to show here.

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

This diff is too big to show here.

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

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/CMakeLists.txt+3−10

This diff is too big to show here.

tests/mocks/Unity/Indicators/Indicators.qmltypes+43−15

This diff is too big to show here.

tests/mocks/Unity/Indicators/IndicatorsModel.qml+152−34

This diff is too big to show here.

tests/mocks/Unity/Indicators/RootActionState.qml+18−10

This diff is too big to show here.

tests/mocks/Unity/Indicators/fakeindicatorsmodel.cpp+50−21

This diff is too big to show here.

tests/mocks/Unity/Indicators/fakeindicatorsmodel.h+8−2

This diff is too big to show here.

tests/mocks/Unity/Indicators/fakeplugin.cpp+8−4

This diff is too big to show here.

tests/mocks/Unity/Indicators/fakeunitymenumodelcache.cppnew file+59

This diff is too big to show here.

tests/mocks/Unity/Indicators/fakeunitymenumodelcache.hnew file+45

This diff is too big to show here.

tests/mocks/Unity/Indicators/indicators_fake.qrcdeleted−14

This diff is too big to show here.

tests/mocks/Unity/Indicators/qml/fake_menu_page5.qmldeleted−35

This diff is too big to show here.

tests/mocks/Unity/Indicators/qml/fake_menu_widget3.qmldeleted−23

This diff is too big to show here.

tests/mocks/Unity/Indicators/qml/fake_menu_widget4.qmldeleted−23

This diff is too big to show here.

tests/mocks/Unity/Indicators/qml/fake_menu_widget5.qmldeleted−23

This diff is too big to show here.

tests/mocks/Unity/Indicators/qmldir−1

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/Launcher.qmltypes+13

This diff is too big to show here.

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

This diff is too big to show here.

tests/mocks/Unity/Launcher/MockLauncherModel.h+3

This diff is too big to show here.

tests/mocks/Unity/Notifications/CMakeLists.txt+15−1

This diff is too big to show here.

tests/mocks/Unity/Notifications/MockActionModel.cppnew file+72

This diff is too big to show here.

tests/mocks/Unity/Notifications/MockActionModel.hnew file+51

This diff is too big to show here.

tests/mocks/Unity/Notifications/MockNotificationTypes.cppnew file+26

This diff is too big to show here.

tests/mocks/Unity/Notifications/MockNotificationTypes.hnew file+36

This diff is too big to show here.

tests/mocks/Unity/Notifications/plugin.cppnew file+31

This diff is too big to show here.

tests/mocks/Unity/Notifications/plugin.hnew file+35

This diff is too big to show here.

tests/mocks/Unity/Notifications/qmldir+2−1

This diff is too big to show here.

tests/mocks/Unity/Unity.qmltypes+32

This diff is too big to show here.

tests/mocks/Unity/fake_scope.cpp+1−1

This diff is too big to show here.

tests/mocks/Unity/fake_scope.h+3

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−6

This diff is too big to show here.

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

This diff is too big to show here.

tests/plugins/Dash/cardcreator/3.res+11−9

This diff is too big to show here.

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

This diff is too big to show here.

tests/plugins/Dash/cardcreator/5.res+12−10

This diff is too big to show here.

tests/plugins/Dash/cardcreator/6.res+7−7

This diff is too big to show here.

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

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+11−3

This diff is too big to show here.

tests/plugins/Ubuntu/Gestures/GestureTest.cpp+76

This diff is too big to show here.

tests/plugins/Ubuntu/Gestures/GestureTest.h+42−1

This diff is too big to show here.

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

This diff is too big to show here.

tests/mocks/Unity/Indicators/qml/fake_menu_widget2.qml → tests/plugins/Ubuntu/Gestures/empty.qmlrenamed+4−5

This diff is too big to show here.

tests/mocks/Unity/Indicators/qml/fake_menu_widget1.qml → tests/plugins/Ubuntu/Gestures/touchGateExample.qmlrenamed+8−4

This diff is too big to show here.

tests/plugins/Ubuntu/Gestures/tst_DirectionalDragArea.cpp+422−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_TouchDispatcher.cppnew file+149

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/Indicators/CMakeLists.txt+1

This diff is too big to show here.

tests/plugins/Unity/Indicators/sharedunitymenumodeltest.cppnew file+102

This diff is too big to show here.

tests/plugins/Unity/Launcher/CMakeLists.txt+7−3

This diff is too big to show here.

tests/plugins/Unity/Launcher/gsettings.cpp+9−4

This diff is too big to show here.

tests/plugins/Unity/Launcher/gsettings.h+9

This diff is too big to show here.

tests/plugins/Unity/Launcher/launchermodeltest.cpp+103−12

This diff is too big to show here.

tests/plugins/Unity/Session/CMakeLists.txt+4

This diff is too big to show here.

tests/plugins/Unity/Session/sessionbackendtest.cpp+1

This diff is too big to show here.

tests/plugins/Utils/qsortfilterproxymodeltest.cpp+1−1

This diff is too big to show here.

tests/qmltests/CMakeLists.txt+12−11

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/Greeter/tst_Lockscreen.qml → tests/qmltests/Components/tst_Lockscreen.qmlrenamed+31−51

This diff is too big to show here.

tests/qmltests/Components/tst_ZoomableImage.qml+21−21

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+52−1

This diff is too big to show here.

tests/qmltests/Dash/Previews/tst_PreviewZoomableImage.qml+30−8

This diff is too big to show here.

tests/qmltests/Dash/tst_Card.qml+39

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+19−62

This diff is too big to show here.

tests/qmltests/Dash/tst_DashContent.qml+19−6

This diff is too big to show here.

tests/qmltests/Dash/tst_GenericScopeView.qml+61−6

This diff is too big to show here.

tests/qmltests/Greeter/tst_Clock.qml+49−34

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+70−27

This diff is too big to show here.

tests/qmltests/Launcher/tst_Launcher.qml+143−105

This diff is too big to show here.

tests/qmltests/Notifications/tst_Notifications.qml+566−427

This diff is too big to show here.

tests/qmltests/Notifications/tst_SwipeToAct.qmlnew file+276

This diff is too big to show here.

tests/qmltests/Panel/IndicatorTest.qmlnew file+80

This diff is too big to show here.

tests/qmltests/Panel/Indicators/tst_CachedUnityMenuModel.qmldeleted−137

This diff is too big to show here.

tests/qmltests/Panel/Indicators/tst_DefaultIndicatorWidget.qmldeleted−60

This diff is too big to show here.

tests/qmltests/Panel/Indicators/tst_MenuItemFactory.qml+40

This diff is too big to show here.

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

This diff is too big to show here.

tests/qmltests/Panel/tst_IndicatorItem.qml+173−18

This diff is too big to show here.

tests/qmltests/Panel/tst_IndicatorItemRow.qmlnew file+290

This diff is too big to show here.

tests/qmltests/Panel/Indicators/tst_DefaultIndicatorPage.qml → tests/qmltests/Panel/tst_IndicatorPage.qmlrenamed+65−45

This diff is too big to show here.

tests/qmltests/Panel/tst_IndicatorRow.qmldeleted−160

This diff is too big to show here.

tests/qmltests/Panel/tst_Indicators.qmldeleted−230

This diff is too big to show here.

tests/qmltests/Panel/tst_IndicatorsBar.qmlnew file+224

This diff is too big to show here.

tests/qmltests/Panel/tst_IndicatorsMenu.qmlnew file+258

This diff is too big to show here.

tests/qmltests/Panel/tst_MenuContent.qml+9−25

This diff is too big to show here.

tests/qmltests/Panel/tst_Panel.qml+185−214

This diff is too big to show here.

tests/qmltests/Panel/tst_SearchIndicator.qml−1

This diff is too big to show here.

tests/qmltests/Stages/tst_ApplicationWindow.qml+2−2

This diff is too big to show here.

tests/qmltests/Stages/tst_PhoneStage.qml+36−1

This diff is too big to show here.

tests/qmltests/Stages/tst_SurfaceContainer.qml+26−1

This diff is too big to show here.

tests/qmltests/tst_Shell.qml+256−47

This diff is too big to show here.

tests/qmltests/tst_ShellWithPin.qml+226−33

This diff is too big to show here.

tests/qmltests/tst_TabletShell.qmlnew file+302

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+29−2

This diff is too big to show here.

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

This diff is too big to show here.

tools/unlock-device+14−13

This diff is too big to show here.