on xenial help sign in
Merge from parent
commit53af655bb9bb1ac5aa5673d081b864e523a0d66c authorMichael Terry <michael.terry@canonical.com> dateWed 29 Jun 2016, 14:05 (10 years ago) parent9b372d603d5035
390 files changed+6765−2533
build.sh+2−2 data/unity8-dash.png data/unity8.conf+13 debian/changelog+70 debian/control+9−7 plugins/AccountsService/AccountsService.cpp+21−1 plugins/AccountsService/AccountsService.h+13−1 plugins/AccountsService/com.canonical.unity.AccountsService.xml+4 plugins/Cursor/CMakeLists.txt+4 plugins/Cursor/Cursor.qml+26−11 plugins/Cursor/MousePointer.cpp+5−5 plugins/Dash/CMakeLists.txt+4 plugins/Dash/abstractdashview.h+1−3 plugins/Dash/graphics/music_progress_bg.png plugins/Dash/horizontaljournal.cpp+1−4 plugins/Dash/listviewwithpageheader.cpp+8−4 plugins/Dash/organicgrid.cpp−3 plugins/Dash/verticaljournal.cpp−3 plugins/LightDM/IntegratedLightDM/liblightdm/UsersModel.cpp+4−1 plugins/LightDM/IntegratedLightDM/liblightdm/UsersModel.h+2−1 plugins/LightDM/IntegratedLightDM/liblightdm/UsersModelPrivate.cpp+5−3 plugins/LightDM/IntegratedLightDM/liblightdm/UsersModelPrivate.h+2−1 plugins/Lights/CMakeLists.txt+1 plugins/Lights/android-hardware.h−4 plugins/Ubuntu/DownloadDaemonListener/CMakeLists.txt−1 plugins/Ubuntu/Gestures/CMakeLists.txt+5−1 plugins/Ubuntu/Gestures/TouchDispatcher.cpp−4 plugins/Unity/Indicators/CMakeLists.txt+4 plugins/Unity/Session/CMakeLists.txt+2 plugins/Unity/Session/dbusunitysessionservice.cpp+50−18 plugins/Unity/Session/dbusunitysessionservice.h+7 plugins/Utils/CMakeLists.txt+5 plugins/Utils/globalfunctions.cpp+1−4 plugins/Utils/windowstatestorage.cpp+2−2 plugins/Utils/windowstatestorage.h+1−1 plugins/WindowManager/CMakeLists.txt+1 po/aa.po+22−18 po/am.po+22−18 po/ar.po+22−18 po/ast.po+22−18 po/az.po+22−18 po/be.po+22−18 po/bg.po+22−18 po/bn.po+22−18 po/br.po+22−18 po/bs.po+22−18 po/ca.po+22−18 po/ca@valencia.po+22−18 po/ce.po+22−18 po/ckb.po+22−18 po/co.po+22−18 po/cs.po+22−18 po/cy.po+22−18 po/da.po+22−18 po/de.po+28−24 po/el.po+22−18 po/en_AU.po+22−18 po/en_GB.po+22−18 po/eo.po+22−18 po/es.po+67−61 po/eu.po+22−18 po/fa.po+22−18 po/fi.po+23−19 po/fo.po+22−18 po/fr.po+22−18 po/ga.po+22−18 po/gd.po+22−18 po/gl.po+67−61 po/gv.po+22−18 po/he.po+22−18 po/hi.po+22−18 po/hr.po+22−18 po/hu.po+22−18 po/hy.po+22−18 po/ia.po+67−61 po/id.po+22−18 po/is.po+22−18 po/it.po+22−18 po/ja.po+22−18 po/km.po+22−18 po/kn.po+22−18 po/ko.po+22−18 po/ku.po+22−18 po/ky.po+22−18 po/lo.po+22−18 po/lt.po+22−18 po/lv.po+22−18 po/ml.po+22−18 po/mr.po+22−18 po/ms.po+22−18 po/my.po+22−18 po/nb.po+21−17 po/ne.po+22−18 po/nl.po+22−18 po/nn.po+22−18 po/oc.po+22−18 po/or.po+22−18 po/pa.po+22−18 po/pl.po+21−17 po/pt.po+22−18 po/pt_BR.po+22−18 po/ro.po+22−18 po/ru.po+22−18 po/shn.po+22−18 po/si.po+22−18 po/sk.po+51−47 po/sl.po+22−18 po/sq.po+22−18 po/sr.po+22−18 po/sv.po+22−18 po/sw.po+22−18 po/ta.po+22−18 po/te.po+22−18 po/th.po+22−18 po/tr.po+22−18 po/ug.po+22−18 po/uk.po+22−18 po/unity8.pot+52−34 po/ur.po+22−18 po/uz.po+22−18 po/vi.po+22−18 po/wo.po+22−18 po/xh.po+22−18 po/zh_CN.po+22−18 po/zh_HK.po+22−18 po/zh_TW.po+22−18 qml/Components/DelayedLockscreen.qml+1 qml/Components/LazyImage.qml+3−1 qml/Components/ListItems/graphics/ListItemDividerHorizontal@18.png qml/Components/Lockscreen.qml+8 qml/Components/MediaServices/MediaServices.qml+386 qml/Components/MediaServices/MediaServicesControls.qml+192 qml/Components/MediaServices/MediaServicesHeader.qml+71 qml/Components/MediaServices/VideoPlayer.qml+155 qml/Components/MediaServices/VideoPlayerControls.qml+158 qml/Components/PassphraseLockscreen.qml+4 qml/Components/PinLockscreen.qml+4 qml/Dash/Previews/PreviewSharing.qml → qml/Components/SharingPicker.qml+2−14 qml/Components/WindowControlButtons.qml+2 qml/Components/graphics/close@20.png qml/Components/graphics/icon_star_empty@20.png qml/Components/graphics/icon_star_full@20.png qml/Components/graphics/icon_star_half@20.png qml/Components/graphics/icon_star_off@20.png qml/Components/graphics/icon_star_on@20.png qml/Components/graphics/non-selected@18.png qml/Dash/CardTool.qml+2−1 qml/Dash/DashApplication.qml+16−5 qml/Dash/Previews/Preview.qml+16 qml/Dash/Previews/PreviewImageGallery.qml+2 qml/Dash/Previews/PreviewInlineVideo.qml+65 qml/Dash/Previews/PreviewMediaToolbar.qml+25−5 qml/Dash/Previews/PreviewRatingEdit.qml+4−1 qml/Dash/Previews/PreviewWidget.qml+3 qml/Dash/Previews/PreviewWidgetFactory.qml+11−1 qml/Dash/Previews/PreviewZoomableImage.qml+1 qml/Dash/ScopesList.qml+1 qml/Dash/graphics/dash_divider_top_darkgrad@27.png qml/Dash/graphics/dash_divider_top_lightgrad@27.png qml/Dash/graphics/header_handlearrow2@27.png qml/Dash/graphics/header_handlearrow@27.png qml/Dash/graphics/icon_clear@20.png qml/Dash/graphics/icon_search_active@20.png qml/Dash/graphics/icon_search_inactive@20.png qml/Dash/graphics/navigation_shadow@18.png qml/Dash/graphics/navigation_shadow_light@18.png qml/Dash/graphics/overview_hint@27.png qml/Dash/graphics/pagination_dot_off@30.png qml/Dash/graphics/pagination_dot_on@30.png qml/Dash/graphics/paper.png qml/Dash/graphics/pixel.png qml/Dash/graphics/play_button@18.png qml/Dash/graphics/play_button_active@18.png qml/Dash/graphics/play_button_active_big@20.png qml/Dash/graphics/play_button_big@20.png qml/Dash/graphics/tabbarchevron@27.png qml/Dash/graphics/tablet/icon_close_preview@20.png qml/Dash/graphics/tooltip_arrow@27.png qml/Greeter/CoverPage.qml+22−1 qml/Greeter/Greeter.qml+101−5 qml/Greeter/NarrowView.qml+18−2 qml/Greeter/WideView.qml+5−1 qml/Greeter/graphics/dot_empty.png qml/Greeter/graphics/dot_filled.png qml/Greeter/graphics/dot_pointer.png qml/Greeter/graphics/icon_arrow.png qml/Greeter/graphics/infographic_circle_back.png qml/Launcher/LauncherPanel.qml+3−1 qml/Launcher/graphics/divider-line.png qml/Launcher/graphics/focused_app_arrow@30.png qml/Launcher/graphics/home@18.png qml/Launcher/graphics/quicklist_tooltip@30.png qml/Panel/Indicators/client/IndicatorsClient.qml+7−1 qml/Panel/Indicators/client/IndicatorsList.qml+7 qml/Panel/IndicatorsMenu.qml+3−1 qml/Panel/graphics/rectangular_dropshadow@30.png qml/Rotation/HalfLoopRotationAnimation.qml+1−1 qml/Rotation/ImmediateRotationAction.qml+1−1 qml/Rotation/NinetyRotationAnimation.qml+1−1 qml/Rotation/UpdateShellTransformations.qml+4−4 qml/Shell.qml+3 qml/Stages/DecoratedWindow.qml+5−4 qml/Stages/DesktopSpread.qml+2 qml/Stages/DesktopStage.qml+19−2 qml/Stages/TabletStage.qml+17−9 qml/Stages/WindowControlsOverlay.qml+2−2 qml/Stages/WindowDecoration.qml+13−6 qml/Stages/WindowResizeArea.qml+11−11 qml/Stages/graphics/PageHeaderBaseDividerBottom@18.png qml/Stages/graphics/PageHeaderBaseDividerLight@18.png qml/Stages/graphics/dropshadow2gu@30.png qml/Stages/graphics/sidestage_handle@20.png qml/Tutorial/graphics/background1.png qml/Tutorial/graphics/background2.png qml/Wizard/Pages/data/Desktop_header_bkg.png qml/Wizard/Pages/data/Desktop_splash_screen_bkg.png qml/Wizard/Pages/data/Phone_header_bkg.png qml/Wizard/Pages/data/Phone_splash_screen_bkg.png qml/Wizard/Pages/data/Tick@30.png qml/Wizard/Pages/data/timezonemap/map.png qml/Wizard/Pages/data/timezonemap/pin.png qml/Wizard/Pages/data/timezonemap/timezone_-1.png qml/Wizard/Pages/data/timezonemap/timezone_-10.png qml/Wizard/Pages/data/timezonemap/timezone_-11.png qml/Wizard/Pages/data/timezonemap/timezone_-2.png qml/Wizard/Pages/data/timezonemap/timezone_-3.5.png qml/Wizard/Pages/data/timezonemap/timezone_-3.png qml/Wizard/Pages/data/timezonemap/timezone_-4.5.png qml/Wizard/Pages/data/timezonemap/timezone_-4.png qml/Wizard/Pages/data/timezonemap/timezone_-5.png qml/Wizard/Pages/data/timezonemap/timezone_-6.png qml/Wizard/Pages/data/timezonemap/timezone_-7.png qml/Wizard/Pages/data/timezonemap/timezone_-8.png qml/Wizard/Pages/data/timezonemap/timezone_-9.5.png qml/Wizard/Pages/data/timezonemap/timezone_-9.png qml/Wizard/Pages/data/timezonemap/timezone_0.png qml/Wizard/Pages/data/timezonemap/timezone_1.png qml/Wizard/Pages/data/timezonemap/timezone_10.5.png qml/Wizard/Pages/data/timezonemap/timezone_10.png qml/Wizard/Pages/data/timezonemap/timezone_11.png qml/Wizard/Pages/data/timezonemap/timezone_12.75.png qml/Wizard/Pages/data/timezonemap/timezone_12.png qml/Wizard/Pages/data/timezonemap/timezone_13.png qml/Wizard/Pages/data/timezonemap/timezone_2.png qml/Wizard/Pages/data/timezonemap/timezone_3.5.png qml/Wizard/Pages/data/timezonemap/timezone_3.png qml/Wizard/Pages/data/timezonemap/timezone_4.5.png qml/Wizard/Pages/data/timezonemap/timezone_4.png qml/Wizard/Pages/data/timezonemap/timezone_5.5.png qml/Wizard/Pages/data/timezonemap/timezone_5.75.png qml/Wizard/Pages/data/timezonemap/timezone_5.png qml/Wizard/Pages/data/timezonemap/timezone_6.5.png qml/Wizard/Pages/data/timezonemap/timezone_6.png qml/Wizard/Pages/data/timezonemap/timezone_7.png qml/Wizard/Pages/data/timezonemap/timezone_8.5.png qml/Wizard/Pages/data/timezonemap/timezone_8.png qml/Wizard/Pages/data/timezonemap/timezone_9.5.png qml/Wizard/Pages/data/timezonemap/timezone_9.png qml/Wizard/Pages/passcode-desktop.qml+27−10 qml/Wizard/PasswordMeter.qml+3−1 qml/graphics/dropshadow_left@20.png qml/graphics/dropshadow_right@20.png src/CMakeLists.txt+1 src/Dash/main.cpp+22−21 tests/data/unity/backgrounds/blue.png tests/data/unity/backgrounds/red.png tests/graphics/applicationIcons/browser@18.png tests/graphics/applicationIcons/calendar@18.png tests/graphics/applicationIcons/camera@18.png tests/graphics/applicationIcons/contacts-app@18.png tests/graphics/applicationIcons/dash.png tests/graphics/applicationIcons/dialer-app@18.png tests/graphics/applicationIcons/evernote@18.png tests/graphics/applicationIcons/facebook@18.png tests/graphics/applicationIcons/gallery@18.png tests/graphics/applicationIcons/gmail@18.png tests/graphics/applicationIcons/libreoffice@18.png tests/graphics/applicationIcons/map@18.png tests/graphics/applicationIcons/messages-app@18.png tests/graphics/applicationIcons/notepad@18.png tests/graphics/applicationIcons/pinterest@18.png tests/graphics/applicationIcons/soundcloud@18.png tests/graphics/applicationIcons/system-settings@18.png tests/graphics/applicationIcons/twitter@18.png tests/graphics/applicationIcons/weather@18.png tests/graphics/applicationIcons/wikipedia@18.png tests/graphics/applicationIcons/youtube@18.png tests/graphics/avatars/amanda@12.png tests/graphics/avatars/anna_olsson@12.png tests/graphics/avatars/funky@12.png tests/graphics/clock@18.png tests/mocks/AccountsService/AccountsService.cpp+24 tests/mocks/AccountsService/AccountsService.h+16 tests/mocks/Biometryd/CMakeLists.txt+14 tests/mocks/Biometryd/MockBiometryd.cpp+43 tests/mocks/Biometryd/MockBiometryd.h+50 tests/mocks/Biometryd/MockDevice.cpp+29 tests/mocks/Biometryd/MockDevice.h+40 tests/mocks/Biometryd/MockIdentifier.cpp+28 tests/mocks/Biometryd/MockIdentifier.h+36 tests/mocks/Biometryd/MockObserver.cpp+22 tests/mocks/Biometryd/MockObserver.h+37 tests/mocks/Biometryd/MockOperation.cpp+56 tests/mocks/Biometryd/MockOperation.h+48 tests/mocks/Biometryd/plugin.cpp+41 tests/mocks/Biometryd/plugin.h+31 tests/mocks/Biometryd/qmldir+3 tests/mocks/CMakeLists.txt+1 tests/mocks/LightDM/IntegratedLightDM/liblightdm/UsersModel.cpp+4−1 tests/mocks/LightDM/IntegratedLightDM/liblightdm/UsersModel.h+2−1 tests/mocks/LightDM/IntegratedLightDM/liblightdm/UsersModelPrivate.cpp+29−23 tests/mocks/LightDM/IntegratedLightDM/liblightdm/UsersModelPrivate.h+2−1 tests/mocks/QtMultimedia/CMakeLists.txt+8−2 tests/mocks/QtMultimedia/VideoSurface.qml+111 tests/mocks/QtMultimedia/audio.cpp−132 tests/mocks/QtMultimedia/audio.h−103 tests/mocks/QtMultimedia/mediaplayer.cpp+318 tests/mocks/QtMultimedia/mediaplayer.h+223 tests/mocks/QtMultimedia/plugin.cpp+7−3 tests/mocks/QtMultimedia/videooutput.cpp+127 tests/mocks/QtMultimedia/videooutput.h+52 tests/mocks/Unity/Application/ApplicationManager.cpp+6−1 tests/mocks/Unity/Application/UbuntuKeyboardInfo.cpp+1−1 tests/mocks/Unity/Application/resources/screenshots/browser@12.png tests/mocks/Unity/Application/resources/screenshots/camera@12.png tests/mocks/Unity/Application/resources/screenshots/dialer@12.png tests/mocks/Unity/Application/resources/screenshots/facebook@12.png tests/mocks/Unity/Application/resources/screenshots/gallery@12.png tests/mocks/Unity/Application/resources/screenshots/libreoffice@12.png tests/mocks/Unity/Application/resources/screenshots/map@12.png tests/mocks/Unity/Application/resources/screenshots/music@12.png tests/mocks/Unity/Application/resources/screenshots/twitter@12.png tests/mocks/Unity/Application/resources/screenshots/unity8-dash@12.png tests/mocks/Unity/Application/resources/screenshots/vkb_portrait.png tests/mocks/Unity/Application/resources/vkb_portrait.png tests/mocks/Unity/fake_scope.cpp+6−1 tests/mocks/Unity/fake_scope.h+1 tests/mocks/Utils/CMakeLists.txt+5−1 tests/mocks/Utils/windowstatestorage.cpp+2−2 tests/mocks/Utils/windowstatestorage.h+1−1 tests/plugins/Dash/CMakeLists.txt+4 tests/plugins/Dash/horizontaljournaltest.cpp−3 tests/plugins/Dash/listviewwithpageheadersectionexternalmodeltest.cpp−3 tests/plugins/Dash/listviewwithpageheadersectiontest.cpp−3 tests/plugins/Dash/listviewwithpageheadertest.cpp−3 tests/plugins/Dash/organicgridtest.cpp−3 tests/plugins/Dash/verticaljournaltest.cpp−3 tests/plugins/Ubuntu/Gestures/CMakeLists.txt+3−2 tests/plugins/Unity/Session/CMakeLists.txt+29−1 tests/plugins/Unity/Session/LightDMServer.cpp+29 tests/plugins/Unity/Session/LightDMServer.h+38 tests/plugins/Unity/Session/LogindServer.cpp+33 tests/plugins/Unity/Session/LogindServer.h+43 tests/plugins/Unity/Session/interfaces.xml+17 tests/plugins/Unity/Session/server.cpp+50 tests/plugins/Unity/Session/sessionbackendtest.cpp+15−1 tests/qmltests/CMakeLists.txt+3−1 tests/qmltests/Components/CMakeLists.txt+5−1 tests/qmltests/Components/tst_LazyImage/portrait.png tests/qmltests/Components/tst_LazyImage/square.png tests/qmltests/Components/tst_LazyImage/wide.png tests/qmltests/Components/tst_Lockscreen.qml+20−1 tests/qmltests/Components/tst_MediaServices.qml+230 tests/qmltests/Dash/Previews/tst_PreviewSharing.qml → tests/qmltests/Components/tst_SharingPicker.qml+8−8 tests/qmltests/Dash/Previews/tst_PreviewInlineVideo.qml+114 tests/qmltests/Dash/Previews/tst_PreviewMediaToolbar.qml+3−3 tests/qmltests/Dash/Previews/tst_PreviewRatingDisplayCreationRanges.qml+51−15 tests/qmltests/Dash/Previews/tst_PreviewRatingEdit.qml+3 tests/qmltests/Dash/Previews/tst_PreviewWidgetFactory.qml+17−16 tests/qmltests/Dash/artwork/avatar@12.png tests/qmltests/Dash/artwork/background.png tests/qmltests/Dash/artwork/checkers.png tests/qmltests/Dash/artwork/emblem.png tests/qmltests/Dash/artwork/music-player-design.png tests/qmltests/Dash/tst_Dash.qml+56−71 tests/qmltests/Dash/tst_DashContent.qml+7−1 tests/qmltests/Dash/tst_GenericScopeView.qml+7 tests/qmltests/Greeter/TestView.qml+10−4 tests/qmltests/Greeter/tst_Greeter.qml+171 tests/qmltests/Greeter/tst_NarrowView.qml+22−1 tests/qmltests/Greeter/tst_WideView.qml+1−1 tests/qmltests/Launcher/tst_Launcher.qml+23−3 tests/qmltests/Panel/tst_IndicatorsMenu.qml+29−1 tests/qmltests/Stages/tst_DesktopStage.qml+135 tests/qmltests/Stages/tst_TabletStage.qml+162−35 tests/qmltests/Stages/tst_WindowResizeArea.qml+36−34 tests/qmltests/UnityLogo.png tests/qmltests/tst_OrientedShell.qml+53−44 tests/qmltests/tst_Shell.qml+27 tests/utils/modules/Unity/Test/CMakeLists.txt+5−1
build.sh+2−2
@@ -46,11 +46,11 @@ install_dependencies() {
4646 qmenumodel-qml \
4747 qml-module-qtquick-layouts \
4848 qml-module-qtquick-xmllistmodel \
49+ qml-module-ubuntu-components \
50+ qml-module-ubuntu-thumbnailer0.1 \
4951 qtdeclarative5-gsettings1.0 \
50− qtdeclarative5-ubuntu-ui-toolkit-plugin \
5152 qtdeclarative5-ubuntu-settings-components \
5253 qtdeclarative5-ubuntu-telephony0.1 \
53− qtdeclarative5-ubuntu-thumbnailer0.1 \
5454 qtdeclarative5-unity-notifications-plugin \
5555 qml-module-ubuntu-connectivity \
5656 ubuntu-mobile-icons \
data/unity8-dash.png

Binary file not shown.

data/unity8.conf+13
@@ -65,6 +65,19 @@ end script
6565exec ${BINARY:-unity8} --mode=$MODE $ARGS
6666
6767post-start script
68+ # If no MIR_SOCKET was defined on launch, we try to set one here
69+ if [ -z "$(initctl get-env --global UNITY_MIR_SOCKET)" ]; then
70+ if [ -S "$XDG_RUNTIME_DIR/mir_socket" ]; then
71+ mir_socket=$XDG_RUNTIME_DIR/mir_socket
72+ elif [ -S "/tmp/mir_socket" ]; then
73+ mir_socket=/tmp/mir_socket
74+ fi
75+
76+ if [ -n "$mir_socket" ]; then
77+ initctl set-env --global MIR_SOCKET="$mir_socket"
78+ fi
79+ fi
80+
6881 initctl emit --no-wait indicator-services-start
6982end script
7083
debian/changelog+70
@@ -1,3 +1,73 @@
1+unity8 (8.12+16.10.20160627.5-0ubuntu1) yakkety; urgency=medium
2+
3+ [ Albert Astals Cid ]
4+ * Stop watching the old header item height once it's not our header
5+ anymore
6+ * LVWPH: cull the header item when not on view to save some painting
7+ * Adapt test to new mock behaviour
8+ * Don't let the mouse go outside the parentItem (LP: #1525350)
9+ * Use non deprecated package names
10+ * Mark system includes as such
11+ * Fix initialization order warning
12+ * Do not rely on deleteLater not crashing on null pointers
13+ * Add more headers of classes we use for automoc to be run
14+ * CardTool: Fix the fallback value to be a size and not an integer
15+ * CardTool: Include Ubuntu Components since we're using units.gu
16+ * Rework tst_PreviewRatingDisplayCreationRanges
17+
18+ [ Daniel d'Andrada ]
19+ * Cursor: Let AnimatedSprite run only on animated cursors and while
20+ the display is on (LP: #1588873, #1594358)
21+ * Fix missing screenshot when orientation changes while shell rotation
22+ ongoing (LP: #1587796)
23+
24+ [ Josh Arenson ]
25+ * Make PreviewRatingSingleDisplay visible again after editing a
26+ review. (LP: #1587097)
27+ * Correct errors in all png images to prevent libpng warnings.
28+
29+ [ Lukáš Tinkl ]
30+ * Fix some smaller issues with OOBE wizard password pages (LP:
31+ #1590467)
32+ * Prevent mouse wheel events from going through shell elements (LP:
33+ #1536268)
34+ * Do not let mouse and wheel events pass thru the titlebar (LP:
35+ #1588424)
36+ * Hide the maximize window button based on size restrictions (LP:
37+ #1541982)
38+
39+ [ Marco Trevisan (Treviño) ]
40+ * Unity8.conf: ensure MIR_SOCKET is set for future customers (such as
41+ the dash)
42+ * ClientIndicator: be more informative about loading failures for
43+ dynamically created objects
44+
45+ [ Michael Terry ]
46+ * Stop unity8 from getting in a "switch-to-greeter" loop when locking
47+ on a desktop. (LP: #1593718)
48+
49+ [ Michael Zanetti ]
50+ * set minimum window sizes on dash
51+ * displace application windows when the OSK would cover them
52+
53+ [ Nick Dedekind ]
54+ * Force dash to always stay in the main stage. (lp:#1592404) (LP:
55+ #1592404)
56+ * Save the last surface stage on stage drop. (LP: #1579003)
57+ * Default portrait only apps to the side stage. (LP: #1573153)
58+
59+ [ Albert Astals Cid, Andrea Cimitan, Michał Sawicz, Nick Dedekind ]
60+ * Added live video playback in dash previews
61+
62+ -- Michael Zanetti <michael.zanetti@canonical.com> Mon, 27 Jun 2016 18:48:59 +0000
63+
64+unity8 (8.12+16.10.20160620.3-0ubuntu1) yakkety; urgency=medium
65+
66+ [ Michael Terry, Michał Sawicz ]
67+ * Support unlocking via fingerprint, if one is registered.
68+
69+ -- Michael Terry <michael.terry@canonical.com> Mon, 20 Jun 2016 20:25:25 +0000
70+
171unity8 (8.12+16.10.20160617-0ubuntu1) yakkety; urgency=medium
272
373 [ Michael Terry ]
debian/control+9−7
@@ -45,11 +45,14 @@ Build-Depends: cmake,
4545 python3-all:any,
4646 python3-setuptools,
4747 qml-module-qt-labs-folderlistmodel,
48+ qml-module-qtmultimedia (>= 5.4.1-1ubuntu19~overlay2),
4849 qml-module-qtquick-layouts,
4950 qml-module-qtquick-xmllistmodel,
5051 qml-module-qtquick2,
5152 qml-module-qtsysteminfo,
5253 qml-module-qttest,
54+ qml-module-ubuntu-components (>= 1.3.1845) | qml-module-ubuntu-components-gles (>= 1.3.1845),
55+ qml-module-ubuntu-web,
5356 qt5-default,
5457 qtbase5-dev (>= 5.4),
5558 qtbase5-dev-tools,
@@ -57,11 +60,8 @@ Build-Depends: cmake,
5760 qtdeclarative5-dev (>= 5.4),
5861 qtdeclarative5-dev-tools,
5962 qtdeclarative5-private-dev (>= 5.4),
60− qtdeclarative5-qtmultimedia-plugin (>= 5.4.1-1ubuntu19~overlay2),
6163 qtdeclarative5-ubuntu-content1,
6264 qtdeclarative5-ubuntu-settings-components (>= 0.7),
63− qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.3.1845) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.3.1845),
64− qtdeclarative5-ubuntu-web-plugin,
6565 ttf-ubuntu-font-family,
6666Standards-Version: 3.9.4
6767Homepage: http://launchpad.net/unity
@@ -76,7 +76,7 @@ X-Ubuntu-Use-Langpack: yes
7676Package: indicators-client
7777Architecture: amd64 armhf i386
7878Depends: qmenumodel-qml (>= 0.2.9),
79− qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.3.1845) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.3.1845),
79+ qml-module-ubuntu-components (>= 1.3.1845) | qml-module-ubuntu-components-gles (>= 1.3.1845),
8080 unity8 (= ${binary:Version}),
8181 ${misc:Depends},
8282 ${shlibs:Depends},
@@ -115,9 +115,11 @@ Depends: dmz-cursor-theme,
115115 libcap2-bin,
116116 libglib2.0-bin,
117117 qmenumodel-qml (>= 0.2.9),
118+ qml-module-biometryd,
118119 qml-module-qt-labs-folderlistmodel,
119120 qml-module-qtquick-xmllistmodel,
120121 qml-module-qtsysteminfo,
122+ qml-module-ubuntu-web,
121123 qtdeclarative5-qtmir-plugin (>= 0.4.8),
122124 qtdeclarative5-ubuntu-telephony0.1,
123125 qtdeclarative5-ubuntu-web-plugin,
@@ -144,9 +146,9 @@ Description: Unity 8 shell
144146Package: unity8-common
145147Architecture: all
146148Depends: qml-module-qtquick-layouts,
149+ qml-module-ubuntu-components (>= 1.3.1845) | qml-module-ubuntu-components-gles (>= 1.3.1845),
150+ qml-module-ubuntu-thumbnailer0.1 | ubuntu-thumbnailer-impl,
147151 qtdeclarative5-ubuntu-settings-components (>= 0.7),
148− qtdeclarative5-ubuntu-thumbnailer0.1 | ubuntu-thumbnailer-impl,
149− qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.3.1845) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.3.1845),
150152 qtdeclarative5-unity-notifications-plugin (>= 0.1.2) | unity-notifications-impl,
151153 ubuntu-thumbnailer-impl-0,
152154 unity-application-impl-17,
@@ -205,7 +207,7 @@ Package: unity8-private
205207Architecture: any
206208Multi-Arch: same
207209Pre-Depends: ${misc:Pre-Depends},
208−Depends: accountsservice-ubuntu-schemas (>= 0.0.5),
210+Depends: accountsservice-ubuntu-schemas (>= 0.0.7),
209211 gsettings-ubuntu-schemas (>= 0.0.2+14.10.20140815),
210212 libhardware2,
211213 pay-service,
plugins/AccountsService/AccountsService.cpp+21−1
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2013, 2015 Canonical, Ltd.
2+ * Copyright (C) 2013-2016 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
@@ -36,8 +36,10 @@
3636#define PROP_DEMO_EDGES QStringLiteral("demo-edges")
3737#define PROP_DEMO_EDGES_COMPLETED QStringLiteral("DemoEdgesCompleted")
3838#define PROP_EMAIL QStringLiteral("Email")
39+#define PROP_ENABLE_FINGERPRINT_IDENTIFICATION QStringLiteral("EnableFingerprintIdentification")
3940#define PROP_ENABLE_INDICATORS_WHILE_LOCKED QStringLiteral("EnableIndicatorsWhileLocked")
4041#define PROP_ENABLE_LAUNCHER_WHILE_LOCKED QStringLiteral("EnableLauncherWhileLocked")
42+#define PROP_FAILED_FINGERPRINT_LOGINS QStringLiteral("FailedFingerprintLogins")
4143#define PROP_FAILED_LOGINS QStringLiteral("FailedLogins")
4244#define PROP_INPUT_SOURCES QStringLiteral("InputSources")
4345#define PROP_LICENSE_ACCEPTED QStringLiteral("LicenseAccepted")
@@ -93,12 +95,14 @@ AccountsService::AccountsService(QObject* parent, const QString &user)
9395 registerProperty(IFACE_ACCOUNTS_USER, PROP_INPUT_SOURCES, QStringLiteral("keymapsChanged"));
9496 registerProperty(IFACE_LOCATION_HERE, PROP_LICENSE_ACCEPTED, QStringLiteral("hereEnabledChanged"));
9597 registerProperty(IFACE_LOCATION_HERE, PROP_LICENSE_BASE_PATH, QStringLiteral("hereLicensePathChanged"));
98+ registerProperty(IFACE_UBUNTU_SECURITY, PROP_ENABLE_FINGERPRINT_IDENTIFICATION, QStringLiteral("enableFingerprintIdentificationChanged"));
9699 registerProperty(IFACE_UBUNTU_SECURITY, PROP_ENABLE_LAUNCHER_WHILE_LOCKED, QStringLiteral("enableLauncherWhileLockedChanged"));
97100 registerProperty(IFACE_UBUNTU_SECURITY, PROP_ENABLE_INDICATORS_WHILE_LOCKED, QStringLiteral("enableIndicatorsWhileLockedChanged"));
98101 registerProperty(IFACE_UBUNTU_SECURITY, PROP_PASSWORD_DISPLAY_HINT, QStringLiteral("passwordDisplayHintChanged"));
99102 registerProperty(IFACE_UBUNTU_SECURITY_OLD, PROP_STATS_WELCOME_SCREEN, QStringLiteral("statsWelcomeScreenChanged"));
100103 registerProperty(IFACE_UNITY, PROP_DEMO_EDGES, QStringLiteral("demoEdgesChanged"));
101104 registerProperty(IFACE_UNITY, PROP_DEMO_EDGES_COMPLETED, QStringLiteral("demoEdgesCompletedChanged"));
105+ registerProperty(IFACE_UNITY_PRIVATE, PROP_FAILED_FINGERPRINT_LOGINS, QStringLiteral("failedFingerprintLoginsChanged"));
102106 registerProperty(IFACE_UNITY_PRIVATE, PROP_FAILED_LOGINS, QStringLiteral("failedLoginsChanged"));
103107
104108 registerProxy(IFACE_UBUNTU_INPUT, PROP_MOUSE_CURSOR_SPEED,
@@ -176,6 +180,12 @@ void AccountsService::markDemoEdgeCompleted(const QString &edge)
176180 }
177181}
178182
183+bool AccountsService::enableFingerprintIdentification() const
184+{
185+ auto value = getProperty(IFACE_UBUNTU_SECURITY, PROP_ENABLE_FINGERPRINT_IDENTIFICATION);
186+ return value.toBool();
187+}
188+
179189bool AccountsService::enableLauncherWhileLocked() const
180190{
181191 auto value = getProperty(IFACE_UBUNTU_SECURITY, PROP_ENABLE_LAUNCHER_WHILE_LOCKED);
@@ -274,6 +284,16 @@ QStringList AccountsService::keymaps() const
274284 return {QStringLiteral("us")};
275285}
276286
287+uint AccountsService::failedFingerprintLogins() const
288+{
289+ return getProperty(IFACE_UNITY_PRIVATE, PROP_FAILED_FINGERPRINT_LOGINS).toUInt();
290+}
291+
292+void AccountsService::setFailedFingerprintLogins(uint failedFingerprintLogins)
293+{
294+ setProperty(IFACE_UNITY_PRIVATE, PROP_FAILED_FINGERPRINT_LOGINS, failedFingerprintLogins);
295+}
296+
277297uint AccountsService::failedLogins() const
278298{
279299 return getProperty(IFACE_UNITY_PRIVATE, PROP_FAILED_LOGINS).toUInt();
plugins/AccountsService/AccountsService.h+13−1
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2013, 2015 Canonical, Ltd.
2+ * Copyright (C) 2013-2016 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
@@ -41,6 +41,9 @@ class AccountsService: public QObject
4141 Q_PROPERTY (QStringList demoEdgesCompleted
4242 READ demoEdgesCompleted
4343 NOTIFY demoEdgesCompletedChanged)
44+ Q_PROPERTY (bool enableFingerprintIdentification
45+ READ enableFingerprintIdentification
46+ NOTIFY enableFingerprintIdentificationChanged)
4447 Q_PROPERTY (bool enableLauncherWhileLocked
4548 READ enableLauncherWhileLocked
4649 NOTIFY enableLauncherWhileLockedChanged)
@@ -60,6 +63,10 @@ class AccountsService: public QObject
6063 READ failedLogins
6164 WRITE setFailedLogins
6265 NOTIFY failedLoginsChanged)
66+ Q_PROPERTY (uint failedFingerprintLogins
67+ READ failedFingerprintLogins
68+ WRITE setFailedFingerprintLogins
69+ NOTIFY failedFingerprintLoginsChanged)
6370 Q_PROPERTY(bool hereEnabled
6471 READ hereEnabled
6572 WRITE setHereEnabled
@@ -91,6 +98,7 @@ public:
9198 void setDemoEdges(bool demoEdges);
9299 QStringList demoEdgesCompleted() const;
93100 Q_INVOKABLE void markDemoEdgeCompleted(const QString &edge);
101+ bool enableFingerprintIdentification() const;
94102 bool enableLauncherWhileLocked() const;
95103 bool enableIndicatorsWhileLocked() const;
96104 QString backgroundFile() const;
@@ -98,6 +106,8 @@ public:
98106 PasswordDisplayHint passwordDisplayHint() const;
99107 uint failedLogins() const;
100108 void setFailedLogins(uint failedLogins);
109+ uint failedFingerprintLogins() const;
110+ void setFailedFingerprintLogins(uint failedFingerprintLogins);
101111 bool hereEnabled() const;
102112 void setHereEnabled(bool enabled);
103113 QString hereLicensePath() const;
@@ -112,12 +122,14 @@ Q_SIGNALS:
112122 void userChanged();
113123 void demoEdgesChanged();
114124 void demoEdgesCompletedChanged();
125+ void enableFingerprintIdentificationChanged();
115126 void enableLauncherWhileLockedChanged();
116127 void enableIndicatorsWhileLockedChanged();
117128 void backgroundFileChanged();
118129 void statsWelcomeScreenChanged();
119130 void passwordDisplayHintChanged();
120131 void failedLoginsChanged();
132+ void failedFingerprintLoginsChanged();
121133 void hereEnabledChanged();
122134 void hereLicensePathChanged();
123135 void realNameChanged();
plugins/AccountsService/com.canonical.unity.AccountsService.xml+4
@@ -47,5 +47,9 @@
4747 <annotation name="org.freedesktop.Accounts.DefaultValue" value="0"/>
4848 </property>
4949
50+ <property name="FailedFingerprintLogins" type="u" access="readwrite">
51+ <annotation name="org.freedesktop.Accounts.DefaultValue" value="0"/>
52+ </property>
53+
5054 </interface>
5155</node>
plugins/Cursor/CMakeLists.txt+4
@@ -3,6 +3,10 @@ add_subdirectory(3rd_party)
33include_directories(
44 ${CMAKE_CURRENT_SOURCE_DIR}
55 ${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/xcursor
6+)
7+
8+include_directories(
9+ SYSTEM
610 ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
711)
812
plugins/Cursor/Cursor.qml+26−11
@@ -16,6 +16,7 @@
1616
1717import QtQuick 2.4
1818import Cursor 1.1
19+import Powerd 0.1
1920
2021MousePointer {
2122 id: mousePointer
@@ -26,19 +27,33 @@ MousePointer {
2627 cursorName: mousePointer.cursorName
2728 }
2829
29− AnimatedSprite {
30− x: -imageInfo.hotspot.x
31− y: -imageInfo.hotspot.y
32− source: "image://cursor/" + mousePointer.themeName + "/" + mousePointer.cursorName
30+ Loader {
31+ active: mousePointer.visible && imageInfo.frameCount > 1
32+ sourceComponent: AnimatedSprite {
33+ x: -imageInfo.hotspot.x
34+ y: -imageInfo.hotspot.y
35+ source: "image://cursor/" + mousePointer.themeName + "/" + mousePointer.cursorName
3336
34− interpolate: false
37+ interpolate: false
3538
36− width: imageInfo.frameWidth
37− height: imageInfo.frameHeight
39+ width: imageInfo.frameWidth
40+ height: imageInfo.frameHeight
3841
39− frameCount: imageInfo.frameCount
40− frameDuration: imageInfo.frameDuration
41− frameWidth: imageInfo.frameWidth
42− frameHeight: imageInfo.frameHeight
42+ frameCount: imageInfo.frameCount
43+ frameDuration: imageInfo.frameDuration
44+ frameWidth: imageInfo.frameWidth
45+ frameHeight: imageInfo.frameHeight
46+
47+ running: Powerd.status === Powerd.On
48+ }
49+ }
50+
51+ Loader {
52+ active: mousePointer.visible && imageInfo.frameCount === 1
53+ sourceComponent: Image {
54+ x: -imageInfo.hotspot.x
55+ y: -imageInfo.hotspot.y
56+ source: "image://cursor/" + mousePointer.themeName + "/" + mousePointer.cursorName
57+ }
4358 }
4459}
plugins/Cursor/MousePointer.cpp+5−5
@@ -52,17 +52,17 @@ void MousePointer::handleMouseEvent(ulong timestamp, QPointF movement, Qt::Mouse
5252 if (newX < 0) {
5353 Q_EMIT pushedLeftBoundary(qAbs(newX), buttons);
5454 newX = 0;
55− } else if (newX > parentItem()->width()) {
56− Q_EMIT pushedRightBoundary(newX - parentItem()->width(), buttons);
57− newX = parentItem()->width();
55+ } else if (newX >= parentItem()->width()) {
56+ Q_EMIT pushedRightBoundary(newX - (parentItem()->width() - 1), buttons);
57+ newX = parentItem()->width() - 1;
5858 }
5959 setX(newX);
6060
6161 qreal newY = y() + appliedMovement.y();
6262 if (newY < 0) {
6363 newY = 0;
64− } else if (newY > parentItem()->height()) {
65− newY = parentItem()->height();
64+ } else if (newY >= parentItem()->height()) {
65+ newY = parentItem()->height() - 1;
6666 }
6767 setY(newY);
6868
plugins/Dash/CMakeLists.txt+4
@@ -10,6 +10,10 @@ endif()
1010include_directories(
1111 ${CMAKE_CURRENT_SOURCE_DIR}
1212 ${CMAKE_CURRENT_BINARY_DIR}
13+)
14+
15+include_directories(
16+ SYSTEM
1317 ${Qt5Qml_PRIVATE_INCLUDE_DIRS}
1418 ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
1519 ${Qt5V8_PRIVATE_INCLUDE_DIR}
plugins/Dash/abstractdashview.h+1−3
@@ -21,11 +21,9 @@
2121
2222class QAbstractItemModel;
2323class QQmlComponent;
24−#pragma GCC diagnostic push
25−#pragma GCC diagnostic ignored "-pedantic"
24+
2625#include <private/qqmldelegatemodel_p.h>
2726#include <qqmlinfo.h>
28−#pragma GCC diagnostic pop
2927
3028class AbstractDashView : public QQuickItem
3129{
plugins/Dash/graphics/music_progress_bg.png

Binary file not shown.

plugins/Dash/horizontaljournal.cpp+1−4
@@ -26,12 +26,9 @@
2626#include "horizontaljournal.h"
2727
2828#include <qqmlengine.h>
29−#pragma GCC diagnostic push
30−#pragma GCC diagnostic ignored "-pedantic"
31−#include <private/qqmldelegatemodel_p.h>
3229#include <qqmlinfo.h>
30+#include <private/qqmldelegatemodel_p.h>
3331#include <private/qquickitem_p.h>
34−#pragma GCC diagnostic pop
3532
3633HorizontalJournal::HorizontalJournal()
3734 : m_firstVisibleIndex(-1)
plugins/Dash/listviewwithpageheader.cpp+8−4
@@ -95,14 +95,11 @@
9595#include <QDebug>
9696#include <qqmlinfo.h>
9797#include <qqmlengine.h>
98−#pragma GCC diagnostic push
99−#pragma GCC diagnostic ignored "-pedantic"
10098#include <private/qqmlcontext_p.h>
10199#include <private/qqmldelegatemodel_p.h>
102100#include <private/qqmlglobal_p.h>
103101#include <private/qquickitem_p.h>
104102#include <private/qquickanimation_p.h>
105−#pragma GCC diagnostic pop
106103// #include <private/qquickrectangle_p.h>
107104
108105qreal ListViewWithPageHeader::ListItem::height() const
@@ -256,6 +253,7 @@ void ListViewWithPageHeader::setHeader(QQuickItem *headerItem)
256253 oldHeaderHeight = m_headerItem->height();
257254 oldHeaderY = m_headerItem->y();
258255 m_headerItem->setParentItem(nullptr);
256+ QQuickItemPrivate::get(m_headerItem)->removeItemChangeListener(this, QQuickItemPrivate::ImplicitHeight);
259257 }
260258 m_headerItem = headerItem;
261259 if (m_headerItem) {
@@ -702,7 +700,9 @@ void ListViewWithPageHeader::reallyReleaseItem(ListItem *listItem)
702700 if (flags & QQmlDelegateModel::Destroyed) {
703701 item->setParentItem(nullptr);
704702 }
705− listItem->sectionItem()->deleteLater();
703+ if (listItem->sectionItem()) {
704+ listItem->sectionItem()->deleteLater();
705+ }
706706 delete listItem;
707707}
708708
@@ -1334,6 +1334,10 @@ void ListViewWithPageHeader::layout()
13341334 }
13351335 }
13361336 }
1337+ if (m_headerItem) {
1338+ const bool cullHeader = m_headerItem->y() + m_headerItem->height() < contentY();
1339+ QQuickItemPrivate::get(m_headerItem)->setCulled(cullHeader);
1340+ }
13371341 m_inLayout = false;
13381342}
13391343
plugins/Dash/organicgrid.cpp−3
@@ -16,10 +16,7 @@
1616
1717#include "organicgrid.h"
1818
19−#pragma GCC diagnostic push
20−#pragma GCC diagnostic ignored "-pedantic"
2119#include <private/qquickitem_p.h>
22−#pragma GCC diagnostic pop
2320
2421OrganicGrid::OrganicGrid()
2522 : m_firstVisibleIndex(-1)
plugins/Dash/verticaljournal.cpp−3
@@ -27,10 +27,7 @@
2727 */
2828#include "verticaljournal.h"
2929
30−#pragma GCC diagnostic push
31−#pragma GCC diagnostic ignored "-pedantic"
3230#include <private/qquickitem_p.h>
33−#pragma GCC diagnostic pop
3431
3532VerticalJournal::VerticalJournal()
3633 : m_columnWidth(0)
plugins/LightDM/IntegratedLightDM/liblightdm/UsersModel.cpp+4−1
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013-2016 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
@@ -52,6 +52,7 @@ UsersModel::UsersModel(QObject *parent) :
5252 roles[SessionRole] = "session";
5353 roles[HasMessagesRole] = "hasMessages";
5454 roles[ImagePathRole] = "imagePath";
55+ roles[UidRole] = "uid";
5556 setRoleNames(roles);
5657
5758 connect(d_ptr, &UsersModelPrivate::dataChanged, this, [this](int i) {
@@ -101,6 +102,8 @@ QVariant UsersModel::data(const QModelIndex &index, int role) const
101102 return d->entries[row].has_messages;
102103 case UsersModel::ImagePathRole:
103104 return "";
105+ case UsersModel::UidRole:
106+ return d->entries[row].uid;
104107 default:
105108 return QVariant();
106109 }
plugins/LightDM/IntegratedLightDM/liblightdm/UsersModel.h+2−1
@@ -50,7 +50,8 @@ public:
5050 SessionRole,
5151 HasMessagesRole,
5252 ImagePathRole,
53− BackgroundPathRole
53+ BackgroundPathRole,
54+ UidRole
5455 };
5556
5657 int rowCount(const QModelIndex &parent) const override;
plugins/LightDM/IntegratedLightDM/liblightdm/UsersModelPrivate.cpp+5−3
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013-2016 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
@@ -26,6 +26,7 @@
2626#include <QDir>
2727#include <QSettings>
2828#include <QStringList>
29+#include <unistd.h>
2930
3031namespace QLightDM
3132{
@@ -37,6 +38,7 @@ UsersModelPrivate::UsersModelPrivate(UsersModel* parent)
3738{
3839 QFileInfo demoFile(QDir::homePath() + "/.unity8-greeter-demo");
3940 QString currentUser = g_get_user_name();
41+ uid_t currentUid = getuid();
4042
4143 if (demoFile.exists()) {
4244 QSettings settings(demoFile.filePath(), QSettings::NativeFormat);
@@ -46,10 +48,10 @@ UsersModelPrivate::UsersModelPrivate(UsersModel* parent)
4648 Q_FOREACH(const QString &user, users)
4749 {
4850 QString name = settings.value(user + "/name", user).toString();
49− entries.append({user, name, 0, 0, false, false, 0, 0});
51+ entries.append({user, name, 0, 0, false, false, 0, 0, currentUid++});
5052 }
5153 } else {
52− entries.append({currentUser, 0, 0, 0, false, false, 0, 0});
54+ entries.append({currentUser, 0, 0, 0, false, false, 0, 0, currentUid});
5355
5456 connect(m_service, &AccountsServiceDBusAdaptor::maybeChanged,
5557 this, [this](const QString &user) {
plugins/LightDM/IntegratedLightDM/liblightdm/UsersModelPrivate.h+2−1
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013-2016 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
@@ -40,6 +40,7 @@ public:
4040 bool has_messages;
4141 QString session;
4242 QString infographic;
43+ uid_t uid;
4344};
4445
4546class UsersModelPrivate : public QObject
plugins/Lights/CMakeLists.txt+1
@@ -2,6 +2,7 @@ pkg_check_modules(ANDROID_HEADERS REQUIRED android-headers)
22pkg_check_modules(ANDROID_HARDWARE REQUIRED libhardware)
33
44include_directories(
5+ SYSTEM
56 ${ANDROID_HEADERS_INCLUDE_DIRS}
67)
78
plugins/Lights/android-hardware.h−4
@@ -15,9 +15,5 @@
1515 *
1616 */
1717
18−// The purpose of this header wrapper is just to avoid having warnings being reported on
19−// code from external header files, as we can't do anything about them.
20−#pragma GCC system_header
21−
2218#include <hardware/hardware.h>
2319#include <hardware/lights.h>
plugins/Ubuntu/DownloadDaemonListener/CMakeLists.txt−1
@@ -1,7 +1,6 @@
11include_directories(
22 ${CMAKE_CURRENT_SOURCE_DIR}
33 ${CMAKE_CURRENT_BINARY_DIR}
4− ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
54)
65
76set(DOWNLOADDAEMONLISTENER_SOURCES
plugins/Ubuntu/Gestures/CMakeLists.txt+5−1
@@ -24,7 +24,10 @@ qt5_use_modules(UbuntuGesturesQml Core Quick)
2424# So that Foo.cpp can #include "Foo.moc"
2525include_directories(${CMAKE_CURRENT_BINARY_DIR})
2626
27−include_directories(${UBUNTUGESTURES_INCLUDE_DIRS})
27+include_directories(
28+ SYSTEM
29+ ${UBUNTUGESTURES_INCLUDE_DIRS}
30+)
2831
2932# There's no cmake var for v8 include path :-/ so create one
3033LIST(GET Qt5Core_INCLUDE_DIRS 0 QtCoreDir0)
@@ -32,6 +35,7 @@ SET(Qt5V8_PRIVATE_INCLUDE_DIR ${QtCoreDir0}/QtV8/${Qt5Core_VERSION_STRING}/QtV8)
3235
3336# DANGER! DANGER! Using Qt's private API!
3437include_directories(
38+ SYSTEM
3539 ${Qt5Qml_PRIVATE_INCLUDE_DIRS}
3640 ${Qt5Quick_INCLUDE_DIRS}
3741 ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
plugins/Ubuntu/Gestures/TouchDispatcher.cpp−4
@@ -19,11 +19,7 @@
1919#include <QGuiApplication>
2020#include <QScopedPointer>
2121#include <QStyleHints>
22−
23−#pragma GCC diagnostic push
24−#pragma GCC diagnostic ignored "-pedantic"
2522#include <private/qquickitem_p.h>
26−#pragma GCC diagnostic pop
2723
2824#define TOUCHDISPATCHER_DEBUG 0
2925
plugins/Unity/Indicators/CMakeLists.txt+4
@@ -6,6 +6,10 @@ find_package(Qt5Quick REQUIRED)
66include_directories(
77 ${CMAKE_CURRENT_SOURCE_DIR}
88 ${CMAKE_CURRENT_BINARY_DIR}
9+)
10+
11+include_directories(
12+ SYSTEM
913 ${GLIB_INCLUDE_DIRS}
1014 ${GIO_INCLUDE_DIRS}
1115 ${QMENUMODEL_INCLUDE_DIRS}
plugins/Unity/Session/CMakeLists.txt+2
@@ -6,6 +6,8 @@ include_directories(
66 ${libunity8-private_SOURCE_DIR}
77)
88
9+add_definitions(-DSM_BUSNAME=systemBus)
10+
911set(QMLSESSIONPLUGIN_SRC
1012 plugin.cpp
1113 dbusunitysessionservice.cpp
plugins/Unity/Session/dbusunitysessionservice.cpp+50−18
@@ -64,19 +64,19 @@ public:
6464 QStringLiteral("GetSessionByPID"));
6565 msg << (quint32) getpid();
6666
67− QDBusReply<QDBusObjectPath> reply = QDBusConnection::systemBus().call(msg);
67+ QDBusReply<QDBusObjectPath> reply = QDBusConnection::SM_BUSNAME().call(msg);
6868 if (reply.isValid()) {
6969 logindSessionPath = reply.value().path();
7070
7171 // start watching the Active property
72− QDBusConnection::systemBus().connect(LOGIN1_SERVICE, logindSessionPath, QStringLiteral("org.freedesktop.DBus.Properties"), QStringLiteral("PropertiesChanged"),
73− this, SLOT(onPropertiesChanged(QString,QVariantMap,QStringList)));
72+ QDBusConnection::SM_BUSNAME().connect(LOGIN1_SERVICE, logindSessionPath, QStringLiteral("org.freedesktop.DBus.Properties"), QStringLiteral("PropertiesChanged"),
73+ this, SLOT(onPropertiesChanged(QString,QVariantMap,QStringList)));
7474
7575 setupSystemdInhibition();
7676
7777 // re-enable the inhibition upon resume from sleep
78− QDBusConnection::systemBus().connect(LOGIN1_SERVICE, LOGIN1_PATH, LOGIN1_IFACE, QStringLiteral("PrepareForSleep"),
79− this, SLOT(onResuming(bool)));
78+ QDBusConnection::SM_BUSNAME().connect(LOGIN1_SERVICE, LOGIN1_PATH, LOGIN1_IFACE, QStringLiteral("PrepareForSleep"),
79+ this, SLOT(onResuming(bool)));
8080 } else {
8181 qWarning() << "Failed to get logind session path" << reply.error().message();
8282 }
@@ -96,7 +96,7 @@ public:
9696 msg << "Unity8 handles power events"; // why
9797 msg << "block"; // mode
9898
99− QDBusPendingCall pendingCall = QDBusConnection::systemBus().asyncCall(msg);
99+ QDBusPendingCall pendingCall = QDBusConnection::SM_BUSNAME().asyncCall(msg);
100100 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingCall, this);
101101 connect(watcher, &QDBusPendingCallWatcher::finished,
102102 this, [this](QDBusPendingCallWatcher* watcher) {
@@ -114,7 +114,7 @@ public:
114114 bool checkLogin1Call(const QString &method) const
115115 {
116116 QDBusMessage msg = QDBusMessage::createMethodCall(LOGIN1_SERVICE, LOGIN1_PATH, LOGIN1_IFACE, method);
117− QDBusReply<QString> reply = QDBusConnection::systemBus().call(msg);
117+ QDBusReply<QString> reply = QDBusConnection::SM_BUSNAME().call(msg);
118118 return reply.isValid() && (reply == QStringLiteral("yes") || reply == QStringLiteral("challenge"));
119119 }
120120
@@ -125,7 +125,7 @@ public:
125125 LOGIN1_IFACE,
126126 method);
127127 msg.setArguments(args);
128− QDBusConnection::systemBus().asyncCall(msg);
128+ QDBusConnection::SM_BUSNAME().asyncCall(msg);
129129 }
130130
131131 void setActive(bool active)
@@ -157,7 +157,7 @@ public:
157157 msg << LOGIN1_SESSION_IFACE;
158158 msg << ACTIVE_KEY;
159159
160− QDBusPendingCall pendingCall = QDBusConnection::systemBus().asyncCall(msg);
160+ QDBusPendingCall pendingCall = QDBusConnection::SM_BUSNAME().asyncCall(msg);
161161 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingCall, this);
162162 connect(watcher, &QDBusPendingCallWatcher::finished,
163163 this, [this](QDBusPendingCallWatcher* watcher) {
@@ -191,7 +191,7 @@ public:
191191 msg << LOGIN1_SESSION_IFACE;
192192 msg << IDLE_SINCE_KEY;
193193
194− QDBusReply<QVariant> reply = QDBusConnection::systemBus().call(msg);
194+ QDBusReply<QVariant> reply = QDBusConnection::SM_BUSNAME().call(msg);
195195 if (reply.isValid()) {
196196 return reply.value().value<quint64>();
197197 } else {
@@ -208,7 +208,7 @@ public:
208208 LOGIN1_SESSION_IFACE,
209209 QStringLiteral("SetIdleHint"));
210210 msg << idle;
211− QDBusConnection::systemBus().asyncCall(msg);
211+ QDBusConnection::SM_BUSNAME().asyncCall(msg);
212212 }
213213
214214private Q_SLOTS:
@@ -243,11 +243,11 @@ DBusUnitySessionService::DBusUnitySessionService()
243243 : UnityDBusObject(QStringLiteral("/com/canonical/Unity/Session"), QStringLiteral("com.canonical.Unity"))
244244{
245245 if (!d->logindSessionPath.isEmpty()) {
246− // connect our Lock() slot to the logind's session Lock() signal
247− QDBusConnection::systemBus().connect(LOGIN1_SERVICE, d->logindSessionPath, LOGIN1_SESSION_IFACE, QStringLiteral("Lock"), this, SLOT(Lock()));
246+ // connect our PromptLock() slot to the logind's session Lock() signal
247+ QDBusConnection::SM_BUSNAME().connect(LOGIN1_SERVICE, d->logindSessionPath, LOGIN1_SESSION_IFACE, QStringLiteral("Lock"), this, SLOT(PromptLock()));
248248 // ... and our Unlocked() signal to the logind's session Unlock() signal
249249 // (lightdm handles the unlocking by calling logind's Unlock method which in turn emits this signal we connect to)
250− QDBusConnection::systemBus().connect(LOGIN1_SERVICE, d->logindSessionPath, LOGIN1_SESSION_IFACE, QStringLiteral("Unlock"), this, SIGNAL(Unlocked()));
250+ QDBusConnection::SM_BUSNAME().connect(LOGIN1_SERVICE, d->logindSessionPath, LOGIN1_SESSION_IFACE, QStringLiteral("Unlock"), this, SLOT(doUnlock()));
251251 connect(d, &DBusUnitySessionServicePrivate::prepareForSleep, this, &DBusUnitySessionService::PromptLock);
252252 } else {
253253 qWarning() << "Failed to connect to logind's session Lock/Unlock signals";
@@ -332,15 +332,41 @@ QString DBusUnitySessionService::HostName() const
332332
333333void DBusUnitySessionService::PromptLock()
334334{
335+ // Prompt as in quick. No locking animation needed. Usually used by
336+ // indicator-session in combination with a switch to greeter or other
337+ // user session.
335338 Q_EMIT LockRequested();
336339 Q_EMIT lockRequested();
337340}
338341
339342void DBusUnitySessionService::Lock()
340343{
341− // signal u8 to show the lockscreen/greeter
344+ // Normal lock (with animation, as compared to PromptLock above). Usually
345+ // used by indicator-session to lock the session in place.
346+ //
347+ // FIXME: We also -- as a bit of a hack around indicator-session not fully
348+ // supporting a phone profile -- switch to greeter here. The unity7 flow is
349+ // that the user chooses "Lock/Switch" from the indicator, and then can go
350+ // to greeter by selecting "Switch" again from the indicator, which is now
351+ // exposed by the desktop_lockscreen profile. But since in unity8, we try
352+ // to expose most things all the time, we don't use the separate lockscreen
353+ // profile. Instead, we just go directly to the greeter the first time
354+ // a user presses "Lock/Switch". This isn't what this DBus call is
355+ // supposed to do, but we can live with it for now.
356+ //
357+ // Here's a bug about indicator-session growing a converged Touch profile:
358+ // https://launchpad.net/bugs/1557716
359+ //
360+ // We only do this here in the animated-lock call because that's the only
361+ // time the indicator locks without also asking the display manager to
362+ // switch sessions on us. And since we are switching screens, we also
363+ // don't bother respecting the animate request, simply doing a PromptLock.
342364 PromptLock();
365+ switchToGreeter();
366+}
343367
368+void DBusUnitySessionService::switchToGreeter()
369+{
344370 // lock the session using the org.freedesktop.DisplayManager system DBUS service
345371 const QString sessionPath = QString::fromLocal8Bit(qgetenv("XDG_SESSION_PATH"));
346372 QDBusMessage msg = QDBusMessage::createMethodCall(QStringLiteral("org.freedesktop.DisplayManager"),
@@ -348,7 +374,7 @@ void DBusUnitySessionService::Lock()
348374 QStringLiteral("org.freedesktop.DisplayManager.Session"),
349375 QStringLiteral("Lock"));
350376
351− QDBusPendingCall pendingCall = QDBusConnection::systemBus().asyncCall(msg);
377+ QDBusPendingCall pendingCall = QDBusConnection::SM_BUSNAME().asyncCall(msg);
352378 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingCall, this);
353379 connect(watcher, &QDBusPendingCallWatcher::finished,
354380 this, [this](QDBusPendingCallWatcher* watcher) {
@@ -365,6 +391,12 @@ void DBusUnitySessionService::Lock()
365391 });
366392}
367393
394+void DBusUnitySessionService::doUnlock()
395+{
396+ Q_EMIT Unlocked();
397+ Q_EMIT unlocked();
398+}
399+
368400bool DBusUnitySessionService::IsLocked() const
369401{
370402 return !d->isSessionActive;
@@ -486,7 +518,7 @@ void DBusGnomeScreensaverWrapper::SetActive(bool lock)
486518
487519void DBusGnomeScreensaverWrapper::Lock()
488520{
489− performAsyncUnityCall(QStringLiteral("Lock"));
521+ performAsyncUnityCall(QStringLiteral("PromptLock"));
490522}
491523
492524quint32 DBusGnomeScreensaverWrapper::GetActiveTime() const
@@ -523,7 +555,7 @@ bool DBusScreensaverWrapper::SetActive(bool lock)
523555
524556void DBusScreensaverWrapper::Lock()
525557{
526− performAsyncUnityCall(QStringLiteral("Lock"));
558+ performAsyncUnityCall(QStringLiteral("PromptLock"));
527559}
528560
529561quint32 DBusScreensaverWrapper::GetActiveTime() const
plugins/Unity/Session/dbusunitysessionservice.h+7
@@ -106,6 +106,7 @@ Q_SIGNALS:
106106 * Emitted after the session has been unlocked.
107107 */
108108 Q_SCRIPTABLE void Unlocked();
109+ void unlocked();
109110
110111public Q_SLOTS:
111112 /**
@@ -258,6 +259,12 @@ public Q_SLOTS:
258259 * @return whether the session is currently locked
259260 */
260261 Q_SCRIPTABLE bool IsLocked() const;
262+
263+private Q_SLOTS:
264+ void doUnlock();
265+
266+private:
267+ void switchToGreeter();
261268};
262269
263270class DBusGnomeSessionManagerWrapper : public UnityDBusObject
plugins/Utils/CMakeLists.txt+5
@@ -1,6 +1,10 @@
11include_directories(
22 ${CMAKE_CURRENT_SOURCE_DIR}
33 ${CMAKE_CURRENT_BINARY_DIR}
4+)
5+
6+include_directories(
7+ SYSTEM
48 ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
59 ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
610 ${GIO_INCLUDE_DIRS}
@@ -9,6 +13,7 @@ include_directories(
913set(QMLPLUGIN_SRC
1014 activefocuslogger.cpp
1115 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationManagerInterface.h
16+ ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationInfoInterface.h
1217 applicationsfiltermodel.cpp
1318 constants.cpp
1419 WindowInputMonitor.cpp
plugins/Utils/globalfunctions.cpp+1−4
@@ -16,11 +16,8 @@
1616
1717#include "globalfunctions.h"
1818
19−#pragma GCC diagnostic push
20−#pragma GCC diagnostic ignored "-pedantic"
21−#include <private/qquickitem_p.h>
22−#pragma GCC diagnostic pop
2319#include <QQmlEngine>
20+#include <private/qquickitem_p.h>
2421
2522GlobalFunctions::GlobalFunctions(QObject *parent)
2623 : QObject(parent)
plugins/Utils/windowstatestorage.cpp+2−2
@@ -95,7 +95,7 @@ void WindowStateStorage::saveStage(const QString &appId, int stage)
9595 saveValue(queryString);
9696}
9797
98−int WindowStateStorage::getStage(const QString &appId) const
98+int WindowStateStorage::getStage(const QString &appId, int defaultValue) const
9999{
100100 const QString queryString = QStringLiteral("SELECT * FROM stage WHERE appId = '%1';")
101101 .arg(sanitiseString(appId));
@@ -103,7 +103,7 @@ int WindowStateStorage::getStage(const QString &appId) const
103103 QSqlQuery query = getValue(queryString);
104104
105105 if (!query.first()) {
106− return unity::shell::application::ApplicationInfoInterface::MainStage;
106+ return defaultValue;
107107 }
108108 return query.value("stage").toInt();
109109}
plugins/Utils/windowstatestorage.h+1−1
@@ -49,7 +49,7 @@ public:
4949 Q_INVOKABLE QRect getGeometry(const QString &windowId, const QRect defaultValue) const;
5050
5151 Q_INVOKABLE void saveStage(const QString &appId, int stage);
52− Q_INVOKABLE int getStage(const QString &appId) const;
52+ Q_INVOKABLE int getStage(const QString &appId, int defaultValue) const;
5353
5454private:
5555 void initdb();
plugins/WindowManager/CMakeLists.txt+1
@@ -4,6 +4,7 @@ set(WINDOWMANAGER_SRC
44 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationInfoInterface.h
55 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/Mir.h
66 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/MirSurfaceInterface.h
7+ ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/MirSurfaceListInterface.h
78 )
89
910add_library(windowmanager-qml SHARED ${WINDOWMANAGER_SRC})
po/aa.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2016-02-12 10:18+0000\n"
1212"Last-Translator: Charif AYFARAH <ayfarah@ymail.com>\n"
1313"Language-Team: Afar <aa@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "Kat"
3535msgid "Unpin shortcut"
3636msgstr ""
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr ""
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277277msgid "Closes the current window."
278278msgstr ""
279279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281281msgid "Return to Call"
282282msgstr "Seecol gacis"
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Emergency Call"
286286msgstr ""
287287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289289msgid "OK"
290290msgstr "Hayya"
291291
@@ -422,10 +422,14 @@ msgid ""
422422"touch pad to interact with the pointer."
423423msgstr ""
424424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426426msgid "Unlock"
427427msgstr ""
428428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429433#: qml/Greeter/LoginList.qml:259
430434msgid "Retry"
431435msgstr "Qagis"
@@ -458,34 +462,34 @@ msgid ""
458462"and all personal data will be deleted."
459463msgstr ""
460464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462466#, qt-format
463467msgid "Enter %1"
464468msgstr "%1 culus"
465469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467471msgid "Enter passphrase"
468472msgstr "Tatur-maxco culus"
469473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471475msgid "Enter passcode"
472476msgstr "Tatur-mudenta culus"
473477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475479#, qt-format
476480msgid "Sorry, incorrect %1"
477481msgstr ""
478482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480484msgid "Sorry, incorrect passphrase"
481485msgstr ""
482486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484488msgctxt "passphrase"
485489msgid "Please re-enter"
486490msgstr ""
487491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489493msgid "Sorry, incorrect passcode"
490494msgstr ""
491495
po/am.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2016-06-19 16:08+0000\n"
1212"Last-Translator: samson <Unknown>\n"
1313"Language-Team: Amharic <am@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-20 06:12+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "ማጥፊያ"
3535msgid "Unpin shortcut"
3636msgstr "አቋራጭ መለያያ"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "አካሉ ተቆልፏል"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr "ብዙ ጊዜ የተሳሳተ የ ማለፊያ ሀረግ ለማስገባት በ መሞከር ምክንያት ስልኩ ተቆልፏል"
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr "ብዙ ጊዜ የተሳሳተ የ ማለፊያ ኮድ ለማስገባት በ መሞከር ምክንያት ስልኩ ተቆልፏል"
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr "Alt + F4"
279279msgid "Closes the current window."
280280msgstr "የ አሁኑን መስኮት መዝጊያ"
281281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283283msgid "Return to Call"
284284msgstr "ወደ ጥሪ መመለሻ"
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Emergency Call"
288288msgstr "የ ድንገተኛ ጥሪ"
289289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291291msgid "OK"
292292msgstr "እሺ"
293293
@@ -424,10 +424,14 @@ msgid ""
424424"touch pad to interact with the pointer."
425425msgstr "የ እርስዎ አካል አሁን ከ ውጪ ማሳያ ጋር ተገናኝቷል: ይህን መመልከቻ እንደ ተችፓድ መጠቀሚያ"
426426
427−#: qml/Greeter/CoverPage.qml:119
427+#: qml/Greeter/CoverPage.qml:127
428428msgid "Unlock"
429429msgstr "መክፈቻ"
430430
431+#: qml/Greeter/Greeter.qml:536
432+msgid "Try again"
433+msgstr ""
434+
431435#: qml/Greeter/LoginList.qml:259
432436msgid "Retry"
433437msgstr "እንደገና ይሞክሩ"
@@ -464,34 +468,34 @@ msgstr ""
464468"የተሳሳተ የማለፊያ ኮድ ካስገቡ የ እርስዎ ስልክ ወደ ነበረበት ወደ ፋክቶሪው ዘዴ ይመለሳል: እና የ ግል ዳታ በሙሉ "
465469"ይጠፋል"
466470
467−#: qml/Greeter/NarrowView.qml:116
471+#: qml/Greeter/NarrowView.qml:129
468472#, qt-format
469473msgid "Enter %1"
470474msgstr "ማስገቢያ %1"
471475
472−#: qml/Greeter/NarrowView.qml:117
476+#: qml/Greeter/NarrowView.qml:130
473477msgid "Enter passphrase"
474478msgstr "የ ማለፊያ ሀረግ ያስገቡ"
475479
476−#: qml/Greeter/NarrowView.qml:118
480+#: qml/Greeter/NarrowView.qml:131
477481msgid "Enter passcode"
478482msgstr "የ ማለፊያ ኮድ ያስገቡ"
479483
480−#: qml/Greeter/NarrowView.qml:119
484+#: qml/Greeter/NarrowView.qml:135
481485#, qt-format
482486msgid "Sorry, incorrect %1"
483487msgstr "አዝናለሁ: የተሳሳተ%1"
484488
485−#: qml/Greeter/NarrowView.qml:120
489+#: qml/Greeter/NarrowView.qml:136
486490msgid "Sorry, incorrect passphrase"
487491msgstr "አዝናለሁ የተሳሳተ የማለፊያ ሐረግ"
488492
489−#: qml/Greeter/NarrowView.qml:121
493+#: qml/Greeter/NarrowView.qml:137
490494msgctxt "passphrase"
491495msgid "Please re-enter"
492496msgstr "እባክዎን እንደገና-ያስገቡ"
493497
494−#: qml/Greeter/NarrowView.qml:122
498+#: qml/Greeter/NarrowView.qml:138
495499msgid "Sorry, incorrect passcode"
496500msgstr "አዝናለሁ የተሳሳተ የማለፊያ ኮድ"
497501
po/ar.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-07-29 09:41+0000\n"
1212"Last-Translator: Ibrahim Saed <ibraheem5000@gmail.com>\n"
1313"Language-Team: Arabic <ar@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n % 100 >= "
1818"3 && n % 100 <= 10 ? 3 : n % 100 >= 11 && n % 100 <= 99 ? 4 : 5;\n"
19−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
20−"X-Generator: Launchpad (build 18097)\n"
19+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
20+"X-Generator: Launchpad (build 18111)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -36,21 +36,21 @@ msgstr "خروج"
3636msgid "Unpin shortcut"
3737msgstr "إزالة تثبيت الاختصار"
3838
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
4040msgid "Device Locked"
4141msgstr "الجهاز موصد"
4242
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
4444msgid "You have been locked out due to too many failed passphrase attempts."
4545msgstr ""
4646"لقد تم تأمين الجهاز ضد الفتح بسبب المحاولات العديدة الفاشلة للعبارة السرّية."
4747
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
4949msgid "You have been locked out due to too many failed passcode attempts."
5050msgstr ""
5151"لقد تم تأمين الجهاز ضد الفتح بسبب المحاولات العديدة الفاشلة للرمز السرّي."
5252
53−#: qml/Components/DelayedLockscreen.qml:74
53+#: qml/Components/DelayedLockscreen.qml:75
5454#, qt-format
5555msgid "Please wait %1 minute and then try again…"
5656msgid_plural "Please wait %1 minutes and then try again…"
@@ -286,15 +286,15 @@ msgstr ""
286286msgid "Closes the current window."
287287msgstr ""
288288
289−#: qml/Components/Lockscreen.qml:231
289+#: qml/Components/Lockscreen.qml:239
290290msgid "Return to Call"
291291msgstr "العودة إلى المكالمة"
292292
293−#: qml/Components/Lockscreen.qml:231
293+#: qml/Components/Lockscreen.qml:239
294294msgid "Emergency Call"
295295msgstr "مكالمة طوارئ"
296296
297−#: qml/Components/Lockscreen.qml:263
297+#: qml/Components/Lockscreen.qml:271
298298msgid "OK"
299299msgstr "موافق"
300300
@@ -431,10 +431,14 @@ msgid ""
431431"touch pad to interact with the pointer."
432432msgstr ""
433433
434−#: qml/Greeter/CoverPage.qml:119
434+#: qml/Greeter/CoverPage.qml:127
435435msgid "Unlock"
436436msgstr "فك القفل"
437437
438+#: qml/Greeter/Greeter.qml:536
439+msgid "Try again"
440+msgstr ""
441+
438442#: qml/Greeter/LoginList.qml:259
439443msgid "Retry"
440444msgstr "إعادة المحاولة"
@@ -471,34 +475,34 @@ msgstr ""
471475"إذا تم إدخال العبارة السرية بشكل خاطئ، فسوف يتم إعادة الهاتف لحالة ضبط "
472476"المصنع وسيتم حذف كافة البيانات الشخصية."
473477
474−#: qml/Greeter/NarrowView.qml:116
478+#: qml/Greeter/NarrowView.qml:129
475479#, qt-format
476480msgid "Enter %1"
477481msgstr "أدخِل %1"
478482
479−#: qml/Greeter/NarrowView.qml:117
483+#: qml/Greeter/NarrowView.qml:130
480484msgid "Enter passphrase"
481485msgstr "أدخِل العبارة السرية"
482486
483−#: qml/Greeter/NarrowView.qml:118
487+#: qml/Greeter/NarrowView.qml:131
484488msgid "Enter passcode"
485489msgstr "أدخِل الرمز السرّي"
486490
487−#: qml/Greeter/NarrowView.qml:119
491+#: qml/Greeter/NarrowView.qml:135
488492#, qt-format
489493msgid "Sorry, incorrect %1"
490494msgstr "نأسف، %1 غير صحيحية"
491495
492−#: qml/Greeter/NarrowView.qml:120
496+#: qml/Greeter/NarrowView.qml:136
493497msgid "Sorry, incorrect passphrase"
494498msgstr "نأسف، عبارة السّر غير صحيحية"
495499
496−#: qml/Greeter/NarrowView.qml:121
500+#: qml/Greeter/NarrowView.qml:137
497501msgctxt "passphrase"
498502msgid "Please re-enter"
499503msgstr "برجاء إعادة إدخالها"
500504
501−#: qml/Greeter/NarrowView.qml:122
505+#: qml/Greeter/NarrowView.qml:138
502506msgid "Sorry, incorrect passcode"
503507msgstr "نأسف، الرمز السري غير صحيح"
504508
po/ast.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2016-05-16 14:07+0000\n"
1212"Last-Translator: Xuacu Saturio <xuacusk8@gmail.com>\n"
1313"Language-Team: Asturian <ast@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,20 +35,20 @@ msgstr "Colar"
3535msgid "Unpin shortcut"
3636msgstr "Desanclar atayu"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Preséu bloquiáu"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr "Quedasti bloquiáu polos escesivos intentos fallíos de fras de pasu."
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949"Quedasti bloquiáu polos escesivos intentos fallíos de códigu de pasu."
5050
51−#: qml/Components/DelayedLockscreen.qml:74
51+#: qml/Components/DelayedLockscreen.qml:75
5252#, qt-format
5353msgid "Please wait %1 minute and then try again…"
5454msgid_plural "Please wait %1 minutes and then try again…"
@@ -280,15 +280,15 @@ msgstr ""
280280msgid "Closes the current window."
281281msgstr ""
282282
283−#: qml/Components/Lockscreen.qml:231
283+#: qml/Components/Lockscreen.qml:239
284284msgid "Return to Call"
285285msgstr "Tornar a la llamada"
286286
287−#: qml/Components/Lockscreen.qml:231
287+#: qml/Components/Lockscreen.qml:239
288288msgid "Emergency Call"
289289msgstr "Llamada d'emerxencia"
290290
291−#: qml/Components/Lockscreen.qml:263
291+#: qml/Components/Lockscreen.qml:271
292292msgid "OK"
293293msgstr "Aceutar"
294294
@@ -427,10 +427,14 @@ msgstr ""
427427"El preséu agora ta coneutáu con una pantalla esterna. Usa esta pantalla como "
428428"touch pad pa interactuar col punteru."
429429
430−#: qml/Greeter/CoverPage.qml:119
430+#: qml/Greeter/CoverPage.qml:127
431431msgid "Unlock"
432432msgstr "Desbloquiar"
433433
434+#: qml/Greeter/Greeter.qml:536
435+msgid "Try again"
436+msgstr ""
437+
434438#: qml/Greeter/LoginList.qml:259
435439msgid "Retry"
436440msgstr "Reintentar"
@@ -467,34 +471,34 @@ msgstr ""
467471"Si s'inxerta'l códigu de pasu incorreutamente, el to teléfonu va reafitase y "
468472"van desaniciase tolos datos personales."
469473
470−#: qml/Greeter/NarrowView.qml:116
474+#: qml/Greeter/NarrowView.qml:129
471475#, qt-format
472476msgid "Enter %1"
473477msgstr "Introduz %1"
474478
475−#: qml/Greeter/NarrowView.qml:117
479+#: qml/Greeter/NarrowView.qml:130
476480msgid "Enter passphrase"
477481msgstr "Introduz la fras de pasu"
478482
479−#: qml/Greeter/NarrowView.qml:118
483+#: qml/Greeter/NarrowView.qml:131
480484msgid "Enter passcode"
481485msgstr "Introduz el códigu de pasu"
482486
483−#: qml/Greeter/NarrowView.qml:119
487+#: qml/Greeter/NarrowView.qml:135
484488#, qt-format
485489msgid "Sorry, incorrect %1"
486490msgstr "Sentímoslo, %1 incorreutu"
487491
488−#: qml/Greeter/NarrowView.qml:120
492+#: qml/Greeter/NarrowView.qml:136
489493msgid "Sorry, incorrect passphrase"
490494msgstr "Sentímoslo, contraseña incorreuta"
491495
492−#: qml/Greeter/NarrowView.qml:121
496+#: qml/Greeter/NarrowView.qml:137
493497msgctxt "passphrase"
494498msgid "Please re-enter"
495499msgstr "Vuelve a escribila"
496500
497−#: qml/Greeter/NarrowView.qml:122
501+#: qml/Greeter/NarrowView.qml:138
498502msgid "Sorry, incorrect passcode"
499503msgstr "Sentímoslo, códigu de pasu incorreutu"
500504
po/az.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\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"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr "Açma qısayolu"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr ""
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277277msgid "Closes the current window."
278278msgstr ""
279279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281281msgid "Return to Call"
282282msgstr ""
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Emergency Call"
286286msgstr "Zərurət zəngi"
287287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289289msgid "OK"
290290msgstr "Oldu"
291291
@@ -422,10 +422,14 @@ msgid ""
422422"touch pad to interact with the pointer."
423423msgstr ""
424424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426426msgid "Unlock"
427427msgstr ""
428428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429433#: qml/Greeter/LoginList.qml:259
430434msgid "Retry"
431435msgstr ""
@@ -462,34 +466,34 @@ msgstr ""
462466"Əgər açar kod yanlış daxil edilibsə, onda telefonunuz fabrika parametrlərinə "
463467"geri qayıdacaq və bütün şəxsi məlumatlarınız silinəcək."
464468
465−#: qml/Greeter/NarrowView.qml:116
469+#: qml/Greeter/NarrowView.qml:129
466470#, qt-format
467471msgid "Enter %1"
468472msgstr ""
469473
470−#: qml/Greeter/NarrowView.qml:117
474+#: qml/Greeter/NarrowView.qml:130
471475msgid "Enter passphrase"
472476msgstr ""
473477
474−#: qml/Greeter/NarrowView.qml:118
478+#: qml/Greeter/NarrowView.qml:131
475479msgid "Enter passcode"
476480msgstr ""
477481
478−#: qml/Greeter/NarrowView.qml:119
482+#: qml/Greeter/NarrowView.qml:135
479483#, qt-format
480484msgid "Sorry, incorrect %1"
481485msgstr "Bağışlayın, %1 yanlışdır"
482486
483−#: qml/Greeter/NarrowView.qml:120
487+#: qml/Greeter/NarrowView.qml:136
484488msgid "Sorry, incorrect passphrase"
485489msgstr "Bağışlayın, açar söz yanlışdır"
486490
487−#: qml/Greeter/NarrowView.qml:121
491+#: qml/Greeter/NarrowView.qml:137
488492msgctxt "passphrase"
489493msgid "Please re-enter"
490494msgstr ""
491495
492−#: qml/Greeter/NarrowView.qml:122
496+#: qml/Greeter/NarrowView.qml:138
493497msgid "Sorry, incorrect passcode"
494498msgstr ""
495499
po/be.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-12-13 13:12+0000\n"
1212"Last-Translator: Mikhail_SaTuRn <mikhail_saturn@tut.by>\n"
1313"Language-Team: Belarusian <be@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
19−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
20−"X-Generator: Launchpad (build 18097)\n"
19+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
20+"X-Generator: Launchpad (build 18111)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -36,22 +36,22 @@ msgstr "Выйсці"
3636msgid "Unpin shortcut"
3737msgstr "Адмацаваць кнопку"
3838
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
4040msgid "Device Locked"
4141msgstr "Прылада заблакаваная"
4242
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
4444msgid "You have been locked out due to too many failed passphrase attempts."
4545msgstr ""
4646"Вы былі заблакаваныя з-за занадта вялікай колькасці няўдалых спробаў."
4747
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
4949msgid "You have been locked out due to too many failed passcode attempts."
5050msgstr ""
5151"Вы былі заблакаваныя з-за занадта вялікай колькасці няўдалых спробаў уводу "
5252"кода доступу."
5353
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
5555#, qt-format
5656msgid "Please wait %1 minute and then try again…"
5757msgid_plural "Please wait %1 minutes and then try again…"
@@ -284,15 +284,15 @@ msgstr ""
284284msgid "Closes the current window."
285285msgstr ""
286286
287−#: qml/Components/Lockscreen.qml:231
287+#: qml/Components/Lockscreen.qml:239
288288msgid "Return to Call"
289289msgstr "Вярнуцца да выкліку"
290290
291−#: qml/Components/Lockscreen.qml:231
291+#: qml/Components/Lockscreen.qml:239
292292msgid "Emergency Call"
293293msgstr "Терміновы выклік"
294294
295−#: qml/Components/Lockscreen.qml:263
295+#: qml/Components/Lockscreen.qml:271
296296msgid "OK"
297297msgstr "Добра"
298298
@@ -429,10 +429,14 @@ msgid ""
429429"touch pad to interact with the pointer."
430430msgstr ""
431431
432−#: qml/Greeter/CoverPage.qml:119
432+#: qml/Greeter/CoverPage.qml:127
433433msgid "Unlock"
434434msgstr "Разблакаваць"
435435
436+#: qml/Greeter/Greeter.qml:536
437+msgid "Try again"
438+msgstr ""
439+
436440#: qml/Greeter/LoginList.qml:259
437441msgid "Retry"
438442msgstr "Паспрабаваць зноў"
@@ -469,34 +473,34 @@ msgstr ""
469473"Калі ўведзены код неправільны, Ваш тэлефон зробіць агульны скід налад і ўсе "
470474"асабістыя дадзеныя будуць выдалены."
471475
472−#: qml/Greeter/NarrowView.qml:116
476+#: qml/Greeter/NarrowView.qml:129
473477#, qt-format
474478msgid "Enter %1"
475479msgstr "Увядзіце %1"
476480
477−#: qml/Greeter/NarrowView.qml:117
481+#: qml/Greeter/NarrowView.qml:130
478482msgid "Enter passphrase"
479483msgstr "Увядзіце пароль"
480484
481−#: qml/Greeter/NarrowView.qml:118
485+#: qml/Greeter/NarrowView.qml:131
482486msgid "Enter passcode"
483487msgstr "Увядзіце код"
484488
485−#: qml/Greeter/NarrowView.qml:119
489+#: qml/Greeter/NarrowView.qml:135
486490#, qt-format
487491msgid "Sorry, incorrect %1"
488492msgstr "Даруйце, некарэктны %1"
489493
490−#: qml/Greeter/NarrowView.qml:120
494+#: qml/Greeter/NarrowView.qml:136
491495msgid "Sorry, incorrect passphrase"
492496msgstr "Даруйце, някарэктны пароль"
493497
494−#: qml/Greeter/NarrowView.qml:121
498+#: qml/Greeter/NarrowView.qml:137
495499msgctxt "passphrase"
496500msgid "Please re-enter"
497501msgstr "Калі ласка, паўтарыце ўвод"
498502
499−#: qml/Greeter/NarrowView.qml:122
503+#: qml/Greeter/NarrowView.qml:138
500504msgid "Sorry, incorrect passcode"
501505msgstr "Даруйце, некарэктны код"
502506
po/bg.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-04-12 14:43+0000\n"
1212"Last-Translator: George Karavasilev <kokoto-java@ubuntu.com>\n"
1313"Language-Team: Bulgarian <bg@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr ""
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr ""
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr ""
279279msgid "Closes the current window."
280280msgstr ""
281281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283283msgid "Return to Call"
284284msgstr ""
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Emergency Call"
288288msgstr "Спешно повикване"
289289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291291msgid "OK"
292292msgstr ""
293293
@@ -424,10 +424,14 @@ msgid ""
424424"touch pad to interact with the pointer."
425425msgstr ""
426426
427−#: qml/Greeter/CoverPage.qml:119
427+#: qml/Greeter/CoverPage.qml:127
428428msgid "Unlock"
429429msgstr ""
430430
431+#: qml/Greeter/Greeter.qml:536
432+msgid "Try again"
433+msgstr ""
434+
431435#: qml/Greeter/LoginList.qml:259
432436msgid "Retry"
433437msgstr ""
@@ -460,34 +464,34 @@ msgid ""
460464"and all personal data will be deleted."
461465msgstr ""
462466
463−#: qml/Greeter/NarrowView.qml:116
467+#: qml/Greeter/NarrowView.qml:129
464468#, qt-format
465469msgid "Enter %1"
466470msgstr ""
467471
468−#: qml/Greeter/NarrowView.qml:117
472+#: qml/Greeter/NarrowView.qml:130
469473msgid "Enter passphrase"
470474msgstr ""
471475
472−#: qml/Greeter/NarrowView.qml:118
476+#: qml/Greeter/NarrowView.qml:131
473477msgid "Enter passcode"
474478msgstr ""
475479
476−#: qml/Greeter/NarrowView.qml:119
480+#: qml/Greeter/NarrowView.qml:135
477481#, qt-format
478482msgid "Sorry, incorrect %1"
479483msgstr ""
480484
481−#: qml/Greeter/NarrowView.qml:120
485+#: qml/Greeter/NarrowView.qml:136
482486msgid "Sorry, incorrect passphrase"
483487msgstr ""
484488
485−#: qml/Greeter/NarrowView.qml:121
489+#: qml/Greeter/NarrowView.qml:137
486490msgctxt "passphrase"
487491msgid "Please re-enter"
488492msgstr ""
489493
490−#: qml/Greeter/NarrowView.qml:122
494+#: qml/Greeter/NarrowView.qml:138
491495msgid "Sorry, incorrect passcode"
492496msgstr ""
493497
po/bn.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-11-27 19:38+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Bengali <bn@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr "আনপিন"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "ডিভাইসটি লক করা"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr "অধিকবার পাসফ্রেজ ভুল দেওয়ার কারনে আপনার আইডি লক করা হয়েছে"
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr "অধিকবার পাসকোড ভুল করার কারনে আপনার আইডি লক করা হয়েছে"
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr ""
279279msgid "Closes the current window."
280280msgstr ""
281281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283283msgid "Return to Call"
284284msgstr "কল এ ফিরে যান"
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Emergency Call"
288288msgstr "জরুরী কল"
289289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291291msgid "OK"
292292msgstr "ঠিক আছে"
293293
@@ -424,10 +424,14 @@ msgid ""
424424"touch pad to interact with the pointer."
425425msgstr ""
426426
427−#: qml/Greeter/CoverPage.qml:119
427+#: qml/Greeter/CoverPage.qml:127
428428msgid "Unlock"
429429msgstr "লক খুলুন"
430430
431+#: qml/Greeter/Greeter.qml:536
432+msgid "Try again"
433+msgstr ""
434+
431435#: qml/Greeter/LoginList.qml:259
432436msgid "Retry"
433437msgstr ""
@@ -461,34 +465,34 @@ msgid ""
461465"and all personal data will be deleted."
462466msgstr "ভুল পাসকোড প্রদান করলে, আপনার ফোনটির সকল ব্যক্তিগত তথ্য মুছে যাবে।"
463467
464−#: qml/Greeter/NarrowView.qml:116
468+#: qml/Greeter/NarrowView.qml:129
465469#, qt-format
466470msgid "Enter %1"
467471msgstr "%1 লিখুন"
468472
469−#: qml/Greeter/NarrowView.qml:117
473+#: qml/Greeter/NarrowView.qml:130
470474msgid "Enter passphrase"
471475msgstr "পাসওয়ার্ড লিখুন"
472476
473−#: qml/Greeter/NarrowView.qml:118
477+#: qml/Greeter/NarrowView.qml:131
474478msgid "Enter passcode"
475479msgstr "পাসকোড লিখুন"
476480
477−#: qml/Greeter/NarrowView.qml:119
481+#: qml/Greeter/NarrowView.qml:135
478482#, qt-format
479483msgid "Sorry, incorrect %1"
480484msgstr "দুঃখিত, %1 ভুল হয়েছে"
481485
482−#: qml/Greeter/NarrowView.qml:120
486+#: qml/Greeter/NarrowView.qml:136
483487msgid "Sorry, incorrect passphrase"
484488msgstr "দুঃখিত, পাসওয়ার্ড ভুল হয়েছে"
485489
486−#: qml/Greeter/NarrowView.qml:121
490+#: qml/Greeter/NarrowView.qml:137
487491msgctxt "passphrase"
488492msgid "Please re-enter"
489493msgstr "অনুগ্রহ করে আবার লিখুন"
490494
491−#: qml/Greeter/NarrowView.qml:122
495+#: qml/Greeter/NarrowView.qml:138
492496msgid "Sorry, incorrect passcode"
493497msgstr "দুঃখিত, পাসকোড ভুল হয়েছে"
494498
po/br.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2016-04-27 12:20+0000\n"
1212"Last-Translator: Fohanno Thierry <thierry.fohanno@ofis-bzh.org>\n"
1313"Language-Team: Breton <br@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,23 +35,23 @@ msgstr "Mont kuit"
3535msgid "Unpin shortcut"
3636msgstr "Dispilhennañ ar verradenn"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Benveg prennet"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545"Prennet eo bet ho penveg abalamour da re a daolioù-esae c'hwitet evit merkañ "
4646"ho frazenn-dremen."
4747
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
4949msgid "You have been locked out due to too many failed passcode attempts."
5050msgstr ""
5151"Prennet eo bet ho penveg abalamour da re a daolioù-esae evit merkañ ho kod-"
5252"tremen."
5353
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
5555#, qt-format
5656msgid "Please wait %1 minute and then try again…"
5757msgid_plural "Please wait %1 minutes and then try again…"
@@ -283,15 +283,15 @@ msgstr ""
283283msgid "Closes the current window."
284284msgstr ""
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Return to Call"
288288msgstr "Distreiñ d'ar bellgomzadenn"
289289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291291msgid "Emergency Call"
292292msgstr "Pellgomzadenn vallus"
293293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295295msgid "OK"
296296msgstr "Mat eo"
297297
@@ -431,10 +431,14 @@ msgid ""
431431"touch pad to interact with the pointer."
432432msgstr ""
433433
434−#: qml/Greeter/CoverPage.qml:119
434+#: qml/Greeter/CoverPage.qml:127
435435msgid "Unlock"
436436msgstr "Dibrennañ"
437437
438+#: qml/Greeter/Greeter.qml:536
439+msgid "Try again"
440+msgstr ""
441+
438442#: qml/Greeter/LoginList.qml:259
439443msgid "Retry"
440444msgstr "Esaeañ en-dro"
@@ -471,34 +475,34 @@ msgstr ""
471475"Ma vez ebarzhet ur c'hod-tremen direizh, e vo adderaouekaet ho pellgomzer "
472476"gant arventennoù al labouradeg hag e vo diverket an holl roadennoù personel."
473477
474−#: qml/Greeter/NarrowView.qml:116
478+#: qml/Greeter/NarrowView.qml:129
475479#, qt-format
476480msgid "Enter %1"
477481msgstr "Merkañ %1"
478482
479−#: qml/Greeter/NarrowView.qml:117
483+#: qml/Greeter/NarrowView.qml:130
480484msgid "Enter passphrase"
481485msgstr "Merkañ ar frazenn-dremen"
482486
483−#: qml/Greeter/NarrowView.qml:118
487+#: qml/Greeter/NarrowView.qml:131
484488msgid "Enter passcode"
485489msgstr "Merkañ ar c'hod-tremen"
486490
487−#: qml/Greeter/NarrowView.qml:119
491+#: qml/Greeter/NarrowView.qml:135
488492#, qt-format
489493msgid "Sorry, incorrect %1"
490494msgstr "Siwazh, %1 direizh"
491495
492−#: qml/Greeter/NarrowView.qml:120
496+#: qml/Greeter/NarrowView.qml:136
493497msgid "Sorry, incorrect passphrase"
494498msgstr "Siwazh, frazenn-dremen direizh"
495499
496−#: qml/Greeter/NarrowView.qml:121
500+#: qml/Greeter/NarrowView.qml:137
497501msgctxt "passphrase"
498502msgid "Please re-enter"
499503msgstr "Adverkañ, mar plij"
500504
501−#: qml/Greeter/NarrowView.qml:122
505+#: qml/Greeter/NarrowView.qml:138
502506msgid "Sorry, incorrect passcode"
503507msgstr "Digarezit, kod-tremen direizh"
504508
po/bs.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-12-01 20:06+0000\n"
1212"Last-Translator: Kenan Gutić <Unknown>\n"
1313"Language-Team: Bosnian <bs@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
20−"X-Generator: Launchpad (build 18097)\n"
19+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
20+"X-Generator: Launchpad (build 18111)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -36,19 +36,19 @@ msgstr "Napusti"
3636msgid "Unpin shortcut"
3737msgstr "Otkačite prečicu"
3838
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
4040msgid "Device Locked"
4141msgstr "Uređaj zaključan"
4242
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
4444msgid "You have been locked out due to too many failed passphrase attempts."
4545msgstr "Izbačeni ste zbog previše neuspjelih pokušaja unosa pristupne fraze."
4646
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
4848msgid "You have been locked out due to too many failed passcode attempts."
4949msgstr "Izbačeni ste zbog previše neuspjelih pokušaja unosa pristupnog koda."
5050
51−#: qml/Components/DelayedLockscreen.qml:74
51+#: qml/Components/DelayedLockscreen.qml:75
5252#, qt-format
5353msgid "Please wait %1 minute and then try again…"
5454msgid_plural "Please wait %1 minutes and then try again…"
@@ -281,15 +281,15 @@ msgstr ""
281281msgid "Closes the current window."
282282msgstr ""
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Return to Call"
286286msgstr "Povratak na Poziv"
287287
288−#: qml/Components/Lockscreen.qml:231
288+#: qml/Components/Lockscreen.qml:239
289289msgid "Emergency Call"
290290msgstr "Hitan Poziv"
291291
292−#: qml/Components/Lockscreen.qml:263
292+#: qml/Components/Lockscreen.qml:271
293293msgid "OK"
294294msgstr "U redu"
295295
@@ -428,10 +428,14 @@ msgid ""
428428"touch pad to interact with the pointer."
429429msgstr ""
430430
431−#: qml/Greeter/CoverPage.qml:119
431+#: qml/Greeter/CoverPage.qml:127
432432msgid "Unlock"
433433msgstr "Otključaj"
434434
435+#: qml/Greeter/Greeter.qml:536
436+msgid "Try again"
437+msgstr ""
438+
435439#: qml/Greeter/LoginList.qml:259
436440msgid "Retry"
437441msgstr "Ponovi"
@@ -468,34 +472,34 @@ msgstr ""
468472"Ako je pristupni kod unesen netačno, vaš telefon će sprovesti reset na "
469473"fabričke postavke i svi osobni podaci će biti izbrisani."
470474
471−#: qml/Greeter/NarrowView.qml:116
475+#: qml/Greeter/NarrowView.qml:129
472476#, qt-format
473477msgid "Enter %1"
474478msgstr "Unesite %1"
475479
476−#: qml/Greeter/NarrowView.qml:117
480+#: qml/Greeter/NarrowView.qml:130
477481msgid "Enter passphrase"
478482msgstr "Unesite propusnu frazu"
479483
480−#: qml/Greeter/NarrowView.qml:118
484+#: qml/Greeter/NarrowView.qml:131
481485msgid "Enter passcode"
482486msgstr "Unesite pristupni kod"
483487
484−#: qml/Greeter/NarrowView.qml:119
488+#: qml/Greeter/NarrowView.qml:135
485489#, qt-format
486490msgid "Sorry, incorrect %1"
487491msgstr "Izvinite, netačno %1"
488492
489−#: qml/Greeter/NarrowView.qml:120
493+#: qml/Greeter/NarrowView.qml:136
490494msgid "Sorry, incorrect passphrase"
491495msgstr "Izvinite, netačna propusna fraza"
492496
493−#: qml/Greeter/NarrowView.qml:121
497+#: qml/Greeter/NarrowView.qml:137
494498msgctxt "passphrase"
495499msgid "Please re-enter"
496500msgstr "Molim ponovo unesite"
497501
498−#: qml/Greeter/NarrowView.qml:122
502+#: qml/Greeter/NarrowView.qml:138
499503msgid "Sorry, incorrect passcode"
500504msgstr "Izvinite, netačan pristupni kod"
501505
po/ca.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-07-04 09:48+0000\n"
1212"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
1313"Language-Team: Catalan <ca@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,23 +35,23 @@ msgstr "Surt"
3535msgid "Unpin shortcut"
3636msgstr "Desenganxa la drecera"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Dispositiu bloquejat"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545"Se us ha bloquejat l'accés al dispositiu. Heu sobrepassat el nombre "
4646"d'intents d'introducció de la contrasenya."
4747
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
4949msgid "You have been locked out due to too many failed passcode attempts."
5050msgstr ""
5151"Se us ha bloquejat l'accés al dispositiu. Heu sobrepassat el nombre "
5252"d'intents d'introducció del codi d'accés."
5353
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
5555#, qt-format
5656msgid "Please wait %1 minute and then try again…"
5757msgid_plural "Please wait %1 minutes and then try again…"
@@ -283,15 +283,15 @@ msgstr ""
283283msgid "Closes the current window."
284284msgstr ""
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Return to Call"
288288msgstr "Torna a la trucada"
289289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291291msgid "Emergency Call"
292292msgstr "Trucada d'emergència"
293293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295295msgid "OK"
296296msgstr "D'acord"
297297
@@ -428,10 +428,14 @@ msgid ""
428428"touch pad to interact with the pointer."
429429msgstr ""
430430
431−#: qml/Greeter/CoverPage.qml:119
431+#: qml/Greeter/CoverPage.qml:127
432432msgid "Unlock"
433433msgstr "Desbloca"
434434
435+#: qml/Greeter/Greeter.qml:536
436+msgid "Try again"
437+msgstr ""
438+
435439#: qml/Greeter/LoginList.qml:259
436440msgid "Retry"
437441msgstr "Torna-ho a provar"
@@ -470,34 +474,34 @@ msgstr ""
470474"reinicialitzarà a l'estat de fàbrica i se suprimiran totes les dades "
471475"personals."
472476
473−#: qml/Greeter/NarrowView.qml:116
477+#: qml/Greeter/NarrowView.qml:129
474478#, qt-format
475479msgid "Enter %1"
476480msgstr "Introduïu: %1"
477481
478−#: qml/Greeter/NarrowView.qml:117
482+#: qml/Greeter/NarrowView.qml:130
479483msgid "Enter passphrase"
480484msgstr "Introduïu la contrasenya"
481485
482−#: qml/Greeter/NarrowView.qml:118
486+#: qml/Greeter/NarrowView.qml:131
483487msgid "Enter passcode"
484488msgstr "Introduïu el codi d'accés"
485489
486−#: qml/Greeter/NarrowView.qml:119
490+#: qml/Greeter/NarrowView.qml:135
487491#, qt-format
488492msgid "Sorry, incorrect %1"
489493msgstr "Incorrecte (%1)"
490494
491−#: qml/Greeter/NarrowView.qml:120
495+#: qml/Greeter/NarrowView.qml:136
492496msgid "Sorry, incorrect passphrase"
493497msgstr "La contrasenya no és correcta"
494498
495−#: qml/Greeter/NarrowView.qml:121
499+#: qml/Greeter/NarrowView.qml:137
496500msgctxt "passphrase"
497501msgid "Please re-enter"
498502msgstr "Torneu-ho a introduir"
499503
500−#: qml/Greeter/NarrowView.qml:122
504+#: qml/Greeter/NarrowView.qml:138
501505msgid "Sorry, incorrect passcode"
502506msgstr "El codi d'accés no és correcte"
503507
po/ca@valencia.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-02-22 15:22+0000\n"
1212"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
1313"Language-Team: Catalan <ca@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,23 +35,23 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr "Desenganxa la drecera"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Dispositiu bloquejat"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545"Se vos ha bloquejat l'accés al dispositiu. Heu sobrepassat el nombre "
4646"d'intents d'introducció de la contrasenya."
4747
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
4949msgid "You have been locked out due to too many failed passcode attempts."
5050msgstr ""
5151"Se vos ha bloquejat l'accés al dispositiu. Heu sobrepassat el nombre "
5252"d'intents d'introducció del codi d'accés."
5353
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
5555#, qt-format
5656msgid "Please wait %1 minute and then try again…"
5757msgid_plural "Please wait %1 minutes and then try again…"
@@ -283,15 +283,15 @@ msgstr ""
283283msgid "Closes the current window."
284284msgstr ""
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Return to Call"
288288msgstr "Torna a la cridada"
289289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291291msgid "Emergency Call"
292292msgstr "Cridada d'emergència"
293293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295295msgid "OK"
296296msgstr "D'acord"
297297
@@ -428,10 +428,14 @@ msgid ""
428428"touch pad to interact with the pointer."
429429msgstr ""
430430
431−#: qml/Greeter/CoverPage.qml:119
431+#: qml/Greeter/CoverPage.qml:127
432432msgid "Unlock"
433433msgstr "Desbloca"
434434
435+#: qml/Greeter/Greeter.qml:536
436+msgid "Try again"
437+msgstr ""
438+
435439#: qml/Greeter/LoginList.qml:259
436440msgid "Retry"
437441msgstr ""
@@ -470,34 +474,34 @@ msgstr ""
470474"reinicialitzarà a l'estat de fàbrica i se suprimiran totes les dades "
471475"personals."
472476
473−#: qml/Greeter/NarrowView.qml:116
477+#: qml/Greeter/NarrowView.qml:129
474478#, qt-format
475479msgid "Enter %1"
476480msgstr "Introduïu: %1"
477481
478−#: qml/Greeter/NarrowView.qml:117
482+#: qml/Greeter/NarrowView.qml:130
479483msgid "Enter passphrase"
480484msgstr "Introduïu la contrasenya"
481485
482−#: qml/Greeter/NarrowView.qml:118
486+#: qml/Greeter/NarrowView.qml:131
483487msgid "Enter passcode"
484488msgstr "Introduïu el codi d'accés"
485489
486−#: qml/Greeter/NarrowView.qml:119
490+#: qml/Greeter/NarrowView.qml:135
487491#, qt-format
488492msgid "Sorry, incorrect %1"
489493msgstr "Incorrecte (%1)"
490494
491−#: qml/Greeter/NarrowView.qml:120
495+#: qml/Greeter/NarrowView.qml:136
492496msgid "Sorry, incorrect passphrase"
493497msgstr "La contrasenya no és correcta"
494498
495−#: qml/Greeter/NarrowView.qml:121
499+#: qml/Greeter/NarrowView.qml:137
496500msgctxt "passphrase"
497501msgid "Please re-enter"
498502msgstr ""
499503
500−#: qml/Greeter/NarrowView.qml:122
504+#: qml/Greeter/NarrowView.qml:138
501505msgid "Sorry, incorrect passcode"
502506msgstr "El codi d'accés no és correcte"
503507
po/ce.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-02-15 04:01+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Chechen <ce@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr ""
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr ""
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277277msgid "Closes the current window."
278278msgstr ""
279279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281281msgid "Return to Call"
282282msgstr ""
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Emergency Call"
286286msgstr ""
287287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289289msgid "OK"
290290msgstr ""
291291
@@ -422,10 +422,14 @@ msgid ""
422422"touch pad to interact with the pointer."
423423msgstr ""
424424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426426msgid "Unlock"
427427msgstr ""
428428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429433#: qml/Greeter/LoginList.qml:259
430434msgid "Retry"
431435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458462"and all personal data will be deleted."
459463msgstr ""
460464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462466#, qt-format
463467msgid "Enter %1"
464468msgstr ""
465469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467471msgid "Enter passphrase"
468472msgstr ""
469473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471475msgid "Enter passcode"
472476msgstr ""
473477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475479#, qt-format
476480msgid "Sorry, incorrect %1"
477481msgstr ""
478482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480484msgid "Sorry, incorrect passphrase"
481485msgstr ""
482486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484488msgctxt "passphrase"
485489msgid "Please re-enter"
486490msgstr ""
487491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489493msgid "Sorry, incorrect passcode"
490494msgstr ""
491495
po/ckb.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\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"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr ""
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr ""
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277277msgid "Closes the current window."
278278msgstr ""
279279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281281msgid "Return to Call"
282282msgstr ""
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Emergency Call"
286286msgstr "هێڵی فریاگوزاری"
287287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289289msgid "OK"
290290msgstr ""
291291
@@ -422,10 +422,14 @@ msgid ""
422422"touch pad to interact with the pointer."
423423msgstr ""
424424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426426msgid "Unlock"
427427msgstr ""
428428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429433#: qml/Greeter/LoginList.qml:259
430434msgid "Retry"
431435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458462"and all personal data will be deleted."
459463msgstr ""
460464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462466#, qt-format
463467msgid "Enter %1"
464468msgstr ""
465469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467471msgid "Enter passphrase"
468472msgstr ""
469473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471475msgid "Enter passcode"
472476msgstr ""
473477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475479#, qt-format
476480msgid "Sorry, incorrect %1"
477481msgstr ""
478482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480484msgid "Sorry, incorrect passphrase"
481485msgstr ""
482486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484488msgctxt "passphrase"
485489msgid "Please re-enter"
486490msgstr ""
487491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489493msgid "Sorry, incorrect passcode"
490494msgstr ""
491495
po/co.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2016-05-24 10:40+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Corsican <co@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,23 +35,23 @@ msgstr "Abbandunà"
3535msgid "Unpin shortcut"
3636msgstr "Toglie l'accurtatoghju"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Dispusitivu bluccatu"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545"Site stati bluccati per troppi tentativi fallati d'inserimentu di a frasa "
4646"d'ordine."
4747
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
4949msgid "You have been locked out due to too many failed passcode attempts."
5050msgstr ""
5151"Site stati bluccati per troppi tentativi fallati d'inserimentu di u codice "
5252"d'accessu."
5353
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
5555#, qt-format
5656msgid "Please wait %1 minute and then try again…"
5757msgid_plural "Please wait %1 minutes and then try again…"
@@ -283,15 +283,15 @@ msgstr ""
283283msgid "Closes the current window."
284284msgstr ""
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Return to Call"
288288msgstr "Turnà à a Chjamata"
289289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291291msgid "Emergency Call"
292292msgstr "Chjamata d'emergenza"
293293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295295msgid "OK"
296296msgstr "OK"
297297
@@ -432,10 +432,14 @@ msgstr ""
432432"U vostru dispusitivu avà hè cunnessu à unu screnu esternu. Usà u screnu di "
433433"ssu dispusitivu cum'è un tappettu tattile per guvernà u puntatore."
434434
435−#: qml/Greeter/CoverPage.qml:119
435+#: qml/Greeter/CoverPage.qml:127
436436msgid "Unlock"
437437msgstr "Sbluccà"
438438
439+#: qml/Greeter/Greeter.qml:536
440+msgid "Try again"
441+msgstr ""
442+
439443#: qml/Greeter/LoginList.qml:259
440444msgid "Retry"
441445msgstr "Turnà à pruvà"
@@ -472,34 +476,34 @@ msgstr ""
472476"Si u codice d'accessu hè erratu, u telefunu serà reinizializatu, è tutti i "
473477"dati persunali serannu perduti."
474478
475−#: qml/Greeter/NarrowView.qml:116
479+#: qml/Greeter/NarrowView.qml:129
476480#, qt-format
477481msgid "Enter %1"
478482msgstr "Inserì %1"
479483
480−#: qml/Greeter/NarrowView.qml:117
484+#: qml/Greeter/NarrowView.qml:130
481485msgid "Enter passphrase"
482486msgstr "Inserì a frasa d'ordine"
483487
484−#: qml/Greeter/NarrowView.qml:118
488+#: qml/Greeter/NarrowView.qml:131
485489msgid "Enter passcode"
486490msgstr "Inserì u codice d'accessu"
487491
488−#: qml/Greeter/NarrowView.qml:119
492+#: qml/Greeter/NarrowView.qml:135
489493#, qt-format
490494msgid "Sorry, incorrect %1"
491495msgstr "Spiacenti, %1 micca currettu"
492496
493−#: qml/Greeter/NarrowView.qml:120
497+#: qml/Greeter/NarrowView.qml:136
494498msgid "Sorry, incorrect passphrase"
495499msgstr "Spiacenti, frasa d'ordine micca curretta"
496500
497−#: qml/Greeter/NarrowView.qml:121
501+#: qml/Greeter/NarrowView.qml:137
498502msgctxt "passphrase"
499503msgid "Please re-enter"
500504msgstr "Ripete l'inserimentu"
501505
502−#: qml/Greeter/NarrowView.qml:122
506+#: qml/Greeter/NarrowView.qml:138
503507msgid "Sorry, incorrect passcode"
504508msgstr "Spiacenti, codice d'accessu micca currettu"
505509
po/cs.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-07-07 10:44+0000\n"
1212"Last-Translator: Vojtěch Daněk <vdanek@outlook.com>\n"
1313"Language-Team: Czech <cs@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020"Language: cs\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -36,21 +36,21 @@ msgstr ""
3636msgid "Unpin shortcut"
3737msgstr "Odpíchnout zkratku"
3838
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
4040msgid "Device Locked"
4141msgstr "Zařízení uzamčeno"
4242
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
4444msgid "You have been locked out due to too many failed passphrase attempts."
4545msgstr ""
4646"Zařízení bylo uzamčeno z důvodu mnoha neúspěšných pokusů o přihlášení."
4747
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
4949msgid "You have been locked out due to too many failed passcode attempts."
5050msgstr ""
5151"Zařízení bylo uzamčeno z důvodu mnoha neúspěšných pokusů o přihlášení."
5252
53−#: qml/Components/DelayedLockscreen.qml:74
53+#: qml/Components/DelayedLockscreen.qml:75
5454#, qt-format
5555msgid "Please wait %1 minute and then try again…"
5656msgid_plural "Please wait %1 minutes and then try again…"
@@ -283,15 +283,15 @@ msgstr ""
283283msgid "Closes the current window."
284284msgstr ""
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Return to Call"
288288msgstr "Vrátit se k hovoru"
289289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291291msgid "Emergency Call"
292292msgstr "Tísňové volání"
293293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295295msgid "OK"
296296msgstr "OK"
297297
@@ -428,10 +428,14 @@ msgid ""
428428"touch pad to interact with the pointer."
429429msgstr ""
430430
431−#: qml/Greeter/CoverPage.qml:119
431+#: qml/Greeter/CoverPage.qml:127
432432msgid "Unlock"
433433msgstr "Odemknout"
434434
435+#: qml/Greeter/Greeter.qml:536
436+msgid "Try again"
437+msgstr ""
438+
435439#: qml/Greeter/LoginList.qml:259
436440msgid "Retry"
437441msgstr "Znovu"
@@ -468,34 +472,34 @@ msgstr ""
468472"Pokud bude heslo zadáno nesprávně, bude telefon obnoven do továrního "
469473"nastavení a všechna osobní data budou smazána."
470474
471−#: qml/Greeter/NarrowView.qml:116
475+#: qml/Greeter/NarrowView.qml:129
472476#, qt-format
473477msgid "Enter %1"
474478msgstr "Vložte %1"
475479
476−#: qml/Greeter/NarrowView.qml:117
480+#: qml/Greeter/NarrowView.qml:130
477481msgid "Enter passphrase"
478482msgstr "Vložte heslo"
479483
480−#: qml/Greeter/NarrowView.qml:118
484+#: qml/Greeter/NarrowView.qml:131
481485msgid "Enter passcode"
482486msgstr "Vložte heslo"
483487
484−#: qml/Greeter/NarrowView.qml:119
488+#: qml/Greeter/NarrowView.qml:135
485489#, qt-format
486490msgid "Sorry, incorrect %1"
487491msgstr "Špatné %1"
488492
489−#: qml/Greeter/NarrowView.qml:120
493+#: qml/Greeter/NarrowView.qml:136
490494msgid "Sorry, incorrect passphrase"
491495msgstr "Špatné heslo"
492496
493−#: qml/Greeter/NarrowView.qml:121
497+#: qml/Greeter/NarrowView.qml:137
494498msgctxt "passphrase"
495499msgid "Please re-enter"
496500msgstr ""
497501
498−#: qml/Greeter/NarrowView.qml:122
502+#: qml/Greeter/NarrowView.qml:138
499503msgid "Sorry, incorrect passcode"
500504msgstr "Špatné heslo"
501505
po/cy.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-07-31 13:21+0000\n"
1212"Last-Translator: Owen Llywelyn <owen.llywelyn@gmail.com>\n"
1313"Language-Team: Welsh <cy@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=4; plural=n==1 ? 0 : n==2 ? 1 : (n != 8 && n != 11) ? "
1818"2 : 3;\n"
19−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
20−"X-Generator: Launchpad (build 18097)\n"
19+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
20+"X-Generator: Launchpad (build 18111)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -36,21 +36,21 @@ msgstr ""
3636msgid "Unpin shortcut"
3737msgstr "Dadbinio llwybr byr"
3838
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
4040msgid "Device Locked"
4141msgstr "Dyfais ar glo"
4242
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
4444msgid "You have been locked out due to too many failed passphrase attempts."
4545msgstr ""
4646"Cawsoch eich cloi allan am gyflwyno cyfrinair anghywir ormod o weithiau."
4747
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
4949msgid "You have been locked out due to too many failed passcode attempts."
5050msgstr ""
5151"Cawsoch eich cloi allan am gyflwyno côd mynediad anghywir ormod o weithiau."
5252
53−#: qml/Components/DelayedLockscreen.qml:74
53+#: qml/Components/DelayedLockscreen.qml:75
5454#, qt-format
5555msgid "Please wait %1 minute and then try again…"
5656msgid_plural "Please wait %1 minutes and then try again…"
@@ -284,15 +284,15 @@ msgstr ""
284284msgid "Closes the current window."
285285msgstr ""
286286
287−#: qml/Components/Lockscreen.qml:231
287+#: qml/Components/Lockscreen.qml:239
288288msgid "Return to Call"
289289msgstr "Nôl i'r alwad"
290290
291−#: qml/Components/Lockscreen.qml:231
291+#: qml/Components/Lockscreen.qml:239
292292msgid "Emergency Call"
293293msgstr "Galwad Frys"
294294
295−#: qml/Components/Lockscreen.qml:263
295+#: qml/Components/Lockscreen.qml:271
296296msgid "OK"
297297msgstr "Iawn"
298298
@@ -429,10 +429,14 @@ msgid ""
429429"touch pad to interact with the pointer."
430430msgstr ""
431431
432−#: qml/Greeter/CoverPage.qml:119
432+#: qml/Greeter/CoverPage.qml:127
433433msgid "Unlock"
434434msgstr "Datgloi"
435435
436+#: qml/Greeter/Greeter.qml:536
437+msgid "Try again"
438+msgstr ""
439+
436440#: qml/Greeter/LoginList.qml:259
437441msgid "Retry"
438442msgstr "Ailgynnig"
@@ -469,34 +473,34 @@ msgstr ""
469473"Os fydd y cod cyfrinachol yn anghywir bydd eich ffôn yn cael ei ailosod i "
470474"gyflwr ffatri a bydd data personol yn cael ei ddileu."
471475
472−#: qml/Greeter/NarrowView.qml:116
476+#: qml/Greeter/NarrowView.qml:129
473477#, qt-format
474478msgid "Enter %1"
475479msgstr "Rhowch %1"
476480
477−#: qml/Greeter/NarrowView.qml:117
481+#: qml/Greeter/NarrowView.qml:130
478482msgid "Enter passphrase"
479483msgstr "Rhowch gyfrinair"
480484
481−#: qml/Greeter/NarrowView.qml:118
485+#: qml/Greeter/NarrowView.qml:131
482486msgid "Enter passcode"
483487msgstr "Rhowch god cyfrinachol"
484488
485−#: qml/Greeter/NarrowView.qml:119
489+#: qml/Greeter/NarrowView.qml:135
486490#, qt-format
487491msgid "Sorry, incorrect %1"
488492msgstr "%1 anghywir"
489493
490−#: qml/Greeter/NarrowView.qml:120
494+#: qml/Greeter/NarrowView.qml:136
491495msgid "Sorry, incorrect passphrase"
492496msgstr "Cyfrinair anghywir"
493497
494−#: qml/Greeter/NarrowView.qml:121
498+#: qml/Greeter/NarrowView.qml:137
495499msgctxt "passphrase"
496500msgid "Please re-enter"
497501msgstr "Ceisiwch eto"
498502
499−#: qml/Greeter/NarrowView.qml:122
503+#: qml/Greeter/NarrowView.qml:138
500504msgid "Sorry, incorrect passcode"
501505msgstr "Cod cyfrinachol anghywir"
502506
po/da.po+22−18
@@ -8,7 +8,7 @@ msgid ""
88msgstr ""
99"Project-Id-Version: unity8\n"
1010"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
11+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1212"PO-Revision-Date: 2015-07-06 12:05+0000\n"
1313"Last-Translator: Folmer Fredslund <Unknown>\n"
1414"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Type: text/plain; charset=UTF-8\n"
1717"Content-Transfer-Encoding: 8bit\n"
1818"Plural-Forms: nplurals=2; plural=n != 1;\n"
19−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
20−"X-Generator: Launchpad (build 18097)\n"
19+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
20+"X-Generator: Launchpad (build 18111)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -36,23 +36,23 @@ msgstr ""
3636msgid "Unpin shortcut"
3737msgstr "Gør genvej flytbar"
3838
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
4040msgid "Device Locked"
4141msgstr "Enheden er låst"
4242
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
4444msgid "You have been locked out due to too many failed passphrase attempts."
4545msgstr ""
4646"Du er blevet låst ude på grund af for mange fejlslagne forsøg på at angive "
4747"adgangskode."
4848
49−#: qml/Components/DelayedLockscreen.qml:65
49+#: qml/Components/DelayedLockscreen.qml:66
5050msgid "You have been locked out due to too many failed passcode attempts."
5151msgstr ""
5252"Du er blevet låst ude på grund af for mange fejlslagne forsøg på at angive "
5353"adgangskode."
5454
55−#: qml/Components/DelayedLockscreen.qml:74
55+#: qml/Components/DelayedLockscreen.qml:75
5656#, qt-format
5757msgid "Please wait %1 minute and then try again…"
5858msgid_plural "Please wait %1 minutes and then try again…"
@@ -284,15 +284,15 @@ msgstr ""
284284msgid "Closes the current window."
285285msgstr ""
286286
287−#: qml/Components/Lockscreen.qml:231
287+#: qml/Components/Lockscreen.qml:239
288288msgid "Return to Call"
289289msgstr "Vend tilbage til opkald"
290290
291−#: qml/Components/Lockscreen.qml:231
291+#: qml/Components/Lockscreen.qml:239
292292msgid "Emergency Call"
293293msgstr "Nødopkald"
294294
295−#: qml/Components/Lockscreen.qml:263
295+#: qml/Components/Lockscreen.qml:271
296296msgid "OK"
297297msgstr "Ok"
298298
@@ -429,10 +429,14 @@ msgid ""
429429"touch pad to interact with the pointer."
430430msgstr ""
431431
432−#: qml/Greeter/CoverPage.qml:119
432+#: qml/Greeter/CoverPage.qml:127
433433msgid "Unlock"
434434msgstr "Lås op"
435435
436+#: qml/Greeter/Greeter.qml:536
437+msgid "Try again"
438+msgstr ""
439+
436440#: qml/Greeter/LoginList.qml:259
437441msgid "Retry"
438442msgstr "Forsøg igen"
@@ -469,34 +473,34 @@ msgstr ""
469473"Hvis adgangskoden er forkert, vil telefonen blive gendannet til "
470474"fabriksindstillinger og al personlig data vil blive slettet."
471475
472−#: qml/Greeter/NarrowView.qml:116
476+#: qml/Greeter/NarrowView.qml:129
473477#, qt-format
474478msgid "Enter %1"
475479msgstr "Indtast %1"
476480
477−#: qml/Greeter/NarrowView.qml:117
481+#: qml/Greeter/NarrowView.qml:130
478482msgid "Enter passphrase"
479483msgstr "Angiv adgangsfrase"
480484
481−#: qml/Greeter/NarrowView.qml:118
485+#: qml/Greeter/NarrowView.qml:131
482486msgid "Enter passcode"
483487msgstr "Indtast adgangskode"
484488
485−#: qml/Greeter/NarrowView.qml:119
489+#: qml/Greeter/NarrowView.qml:135
486490#, qt-format
487491msgid "Sorry, incorrect %1"
488492msgstr "Beklager, forkert %1"
489493
490−#: qml/Greeter/NarrowView.qml:120
494+#: qml/Greeter/NarrowView.qml:136
491495msgid "Sorry, incorrect passphrase"
492496msgstr "Beklager, forkert adgangsfrase"
493497
494−#: qml/Greeter/NarrowView.qml:121
498+#: qml/Greeter/NarrowView.qml:137
495499msgctxt "passphrase"
496500msgid "Please re-enter"
497501msgstr ""
498502
499−#: qml/Greeter/NarrowView.qml:122
503+#: qml/Greeter/NarrowView.qml:138
500504msgid "Sorry, incorrect passcode"
501505msgstr "Beklager, forkert adgangskode"
502506
po/de.po+28−24
@@ -7,16 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
11−"PO-Revision-Date: 2016-05-10 19:23+0000\n"
12−"Last-Translator: Torsten Franz <Unknown>\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11+"PO-Revision-Date: 2016-06-25 21:01+0000\n"
12+"Last-Translator: Matthias Seidel <matthias.seidel@hamburg.de>\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"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,23 +35,23 @@ msgstr "Beenden"
3535msgid "Unpin shortcut"
3636msgstr "Verknüpfung entfernen"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Gerät gesperrt"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545"Das Gerät wurde aufgrund zu vieler falscher Passworteingaben für längere "
4646"Zeit gesperrt."
4747
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
4949msgid "You have been locked out due to too many failed passcode attempts."
5050msgstr ""
5151"Das Gerät wurde aufgrund zu vieler falscher PIN-Eingaben für längere Zeit "
5252"gesperrt."
5353
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
5555#, qt-format
5656msgid "Please wait %1 minute and then try again…"
5757msgid_plural "Please wait %1 minutes and then try again…"
@@ -129,7 +129,7 @@ msgstr ""
129129
130130#: qml/Components/KeyboardShortcutsOverlay.qml:55
131131msgid "Unity 8"
132−msgstr ""
132+msgstr "Unity 8"
133133
134134#: qml/Components/KeyboardShortcutsOverlay.qml:62
135135msgid "PrtScr"
@@ -177,7 +177,7 @@ msgstr ""
177177
178178#: qml/Components/KeyboardShortcutsOverlay.qml:138
179179msgid "Alt + F1"
180−msgstr ""
180+msgstr "Alt + F1"
181181
182182#: qml/Components/KeyboardShortcutsOverlay.qml:143
183183msgid "Opens launcher keyboard navigation mode."
@@ -217,7 +217,7 @@ msgstr ""
217217
218218#: qml/Components/KeyboardShortcutsOverlay.qml:216
219219msgid "Alt + Tab"
220−msgstr ""
220+msgstr "Alt + Tabulator"
221221
222222#: qml/Components/KeyboardShortcutsOverlay.qml:221
223223msgid "Switches between applications."
@@ -277,21 +277,21 @@ msgstr ""
277277
278278#: qml/Components/KeyboardShortcutsOverlay.qml:318
279279msgid "Alt + F4"
280−msgstr ""
280+msgstr "Alt + F4"
281281
282282#: qml/Components/KeyboardShortcutsOverlay.qml:323
283283msgid "Closes the current window."
284284msgstr ""
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Return to Call"
288288msgstr "Zu Anruf zurückkehren"
289289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291291msgid "Emergency Call"
292292msgstr "Notruf"
293293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295295msgid "OK"
296296msgstr "OK"
297297
@@ -432,10 +432,14 @@ msgstr ""
432432"Ihr Gerät ist nun mit einem externen Bildschirm verbunden. Verwenden Sie das "
433433"Gerätedisplay als Touchpad, um den Mauszeiger zu steuern."
434434
435−#: qml/Greeter/CoverPage.qml:119
435+#: qml/Greeter/CoverPage.qml:127
436436msgid "Unlock"
437437msgstr "Entsperren"
438438
439+#: qml/Greeter/Greeter.qml:536
440+msgid "Try again"
441+msgstr ""
442+
439443#: qml/Greeter/LoginList.qml:259
440444msgid "Retry"
441445msgstr "Erneut versuchen"
@@ -472,34 +476,34 @@ msgstr ""
472476"Wird die PIN falsch eingegeben, wird das Telefon auf den Werkszustand "
473477"zurückgesetzt und alle Daten werden gelöscht."
474478
475−#: qml/Greeter/NarrowView.qml:116
479+#: qml/Greeter/NarrowView.qml:129
476480#, qt-format
477481msgid "Enter %1"
478482msgstr "%1 eingeben"
479483
480−#: qml/Greeter/NarrowView.qml:117
484+#: qml/Greeter/NarrowView.qml:130
481485msgid "Enter passphrase"
482486msgstr "Passphrase eingeben"
483487
484−#: qml/Greeter/NarrowView.qml:118
488+#: qml/Greeter/NarrowView.qml:131
485489msgid "Enter passcode"
486490msgstr "PIN eingeben"
487491
488−#: qml/Greeter/NarrowView.qml:119
492+#: qml/Greeter/NarrowView.qml:135
489493#, qt-format
490494msgid "Sorry, incorrect %1"
491495msgstr "%1 falsch"
492496
493−#: qml/Greeter/NarrowView.qml:120
497+#: qml/Greeter/NarrowView.qml:136
494498msgid "Sorry, incorrect passphrase"
495499msgstr "Das Passwort ist nicht korrekt"
496500
497−#: qml/Greeter/NarrowView.qml:121
501+#: qml/Greeter/NarrowView.qml:137
498502msgctxt "passphrase"
499503msgid "Please re-enter"
500504msgstr "Bitte erneut eingeben"
501505
502−#: qml/Greeter/NarrowView.qml:122
506+#: qml/Greeter/NarrowView.qml:138
503507msgid "Sorry, incorrect passcode"
504508msgstr "Falsches Passwort"
505509
po/el.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2016-04-25 16:24+0000\n"
1212"Last-Translator: Aggelos Arnaoutis <angelosarn@hotmail.com>\n"
1313"Language-Team: Greek <el@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,23 +35,23 @@ msgstr "Έξοδος"
3535msgid "Unpin shortcut"
3636msgstr "Ξεκαρφίτσωμα συντόμευσης"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Κλειδωμένη συσκευή"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545"Δεν σας επιτρέπεται η πρόσβαση καθώς προσπαθήσατε επανηλλημένως να "
4646"συνδεθείτε με λάθος συνθηματικό."
4747
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
4949msgid "You have been locked out due to too many failed passcode attempts."
5050msgstr ""
5151"Δεν σας επιτρέπεται η πρόσβαση καθώς προσπαθήσατε επανηλλημένως να "
5252"συνδεθείτε με λάθος κωδικό πρόσβασης."
5353
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
5555#, qt-format
5656msgid "Please wait %1 minute and then try again…"
5757msgid_plural "Please wait %1 minutes and then try again…"
@@ -283,15 +283,15 @@ msgstr ""
283283msgid "Closes the current window."
284284msgstr ""
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Return to Call"
288288msgstr "Επιστροφή στην κλήση"
289289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291291msgid "Emergency Call"
292292msgstr "Κλήση έκτακτης ανάγκης"
293293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295295msgid "OK"
296296msgstr "OK"
297297
@@ -432,10 +432,14 @@ msgstr ""
432432"Η συσκεύη σας τώρα είναι συνδεδεμένη με μια εξωτερική οθόνη. Χρησιμοποιείστε "
433433"αυτήν την οθόνη ως επιφάνεια αφής για να αλληλεπηδράσετε με τον δείκτη."
434434
435−#: qml/Greeter/CoverPage.qml:119
435+#: qml/Greeter/CoverPage.qml:127
436436msgid "Unlock"
437437msgstr "Ξεκλείδωμα"
438438
439+#: qml/Greeter/Greeter.qml:536
440+msgid "Try again"
441+msgstr ""
442+
439443#: qml/Greeter/LoginList.qml:259
440444msgid "Retry"
441445msgstr "Επανάληψη"
@@ -473,34 +477,34 @@ msgstr ""
473477"κάνει επαναφορά των εργοστασιακών ρυθμίσεων και όλα τα δεδομένα σας θα "
474478"διαγραφούν."
475479
476−#: qml/Greeter/NarrowView.qml:116
480+#: qml/Greeter/NarrowView.qml:129
477481#, qt-format
478482msgid "Enter %1"
479483msgstr "Εισάγετε %1"
480484
481−#: qml/Greeter/NarrowView.qml:117
485+#: qml/Greeter/NarrowView.qml:130
482486msgid "Enter passphrase"
483487msgstr "Εισαγωγή συνθηματικού"
484488
485−#: qml/Greeter/NarrowView.qml:118
489+#: qml/Greeter/NarrowView.qml:131
486490msgid "Enter passcode"
487491msgstr "Εισαγωγή κωδικού πρόσβασης"
488492
489−#: qml/Greeter/NarrowView.qml:119
493+#: qml/Greeter/NarrowView.qml:135
490494#, qt-format
491495msgid "Sorry, incorrect %1"
492496msgstr "Συγνώμη, μη έγκυρο %1"
493497
494−#: qml/Greeter/NarrowView.qml:120
498+#: qml/Greeter/NarrowView.qml:136
495499msgid "Sorry, incorrect passphrase"
496500msgstr "Συγνώμη, μη έγκυρο συνθηματικό"
497501
498−#: qml/Greeter/NarrowView.qml:121
502+#: qml/Greeter/NarrowView.qml:137
499503msgctxt "passphrase"
500504msgid "Please re-enter"
501505msgstr "Παρακαλώ πληκτρολογήστε ξανά"
502506
503−#: qml/Greeter/NarrowView.qml:122
507+#: qml/Greeter/NarrowView.qml:138
504508msgid "Sorry, incorrect passcode"
505509msgstr "Συγνώμη, μη έγκυρος κωδικός πρόσβασης"
506510
po/en_AU.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2016-03-27 10:09+0000\n"
1212"Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
1313"Language-Team: English (Australia) <en_AU@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "Quit"
3535msgid "Unpin shortcut"
3636msgstr "Unpin shortcut"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Device Locked"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr "You have been locked out due to too many failed passphrase attempts."
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr "You have been locked out due to too many failed passcode attempts."
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr ""
279279msgid "Closes the current window."
280280msgstr ""
281281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283283msgid "Return to Call"
284284msgstr "Return to Call"
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Emergency Call"
288288msgstr "Emergency Call"
289289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291291msgid "OK"
292292msgstr "OK"
293293
@@ -426,10 +426,14 @@ msgstr ""
426426"Your device is now connected to an external display. Use this screen as a "
427427"touch pad to interact with the pointer."
428428
429−#: qml/Greeter/CoverPage.qml:119
429+#: qml/Greeter/CoverPage.qml:127
430430msgid "Unlock"
431431msgstr "Unlock"
432432
433+#: qml/Greeter/Greeter.qml:536
434+msgid "Try again"
435+msgstr ""
436+
433437#: qml/Greeter/LoginList.qml:259
434438msgid "Retry"
435439msgstr "Retry"
@@ -466,34 +470,34 @@ msgstr ""
466470"If passcode is entered incorrectly, your phone will conduct a factory reset "
467471"and all personal data will be deleted."
468472
469−#: qml/Greeter/NarrowView.qml:116
473+#: qml/Greeter/NarrowView.qml:129
470474#, qt-format
471475msgid "Enter %1"
472476msgstr "Enter %1"
473477
474−#: qml/Greeter/NarrowView.qml:117
478+#: qml/Greeter/NarrowView.qml:130
475479msgid "Enter passphrase"
476480msgstr "Enter passphrase"
477481
478−#: qml/Greeter/NarrowView.qml:118
482+#: qml/Greeter/NarrowView.qml:131
479483msgid "Enter passcode"
480484msgstr "Enter passcode"
481485
482−#: qml/Greeter/NarrowView.qml:119
486+#: qml/Greeter/NarrowView.qml:135
483487#, qt-format
484488msgid "Sorry, incorrect %1"
485489msgstr "Sorry, incorrect %1"
486490
487−#: qml/Greeter/NarrowView.qml:120
491+#: qml/Greeter/NarrowView.qml:136
488492msgid "Sorry, incorrect passphrase"
489493msgstr "Sorry, incorrect passphrase"
490494
491−#: qml/Greeter/NarrowView.qml:121
495+#: qml/Greeter/NarrowView.qml:137
492496msgctxt "passphrase"
493497msgid "Please re-enter"
494498msgstr "Please re-enter"
495499
496−#: qml/Greeter/NarrowView.qml:122
500+#: qml/Greeter/NarrowView.qml:138
497501msgid "Sorry, incorrect passcode"
498502msgstr "Sorry, incorrect passcode"
499503
po/en_GB.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2016-05-10 10:10+0000\n"
1212"Last-Translator: Andi Chandler <Unknown>\n"
1313"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "Quit"
3535msgid "Unpin shortcut"
3636msgstr "Unpin shortcut"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Device Locked"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr "You have been locked out due to too many failed passphrase attempts."
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr "You have been locked out due to too many failed passcode attempts."
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr ""
279279msgid "Closes the current window."
280280msgstr ""
281281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283283msgid "Return to Call"
284284msgstr "Return to Call"
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Emergency Call"
288288msgstr "Emergency Call"
289289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291291msgid "OK"
292292msgstr "OK"
293293
@@ -426,10 +426,14 @@ msgstr ""
426426"Your device is now connected to an external display. Use this screen as a "
427427"touch pad to interact with the pointer."
428428
429−#: qml/Greeter/CoverPage.qml:119
429+#: qml/Greeter/CoverPage.qml:127
430430msgid "Unlock"
431431msgstr "Unlock"
432432
433+#: qml/Greeter/Greeter.qml:536
434+msgid "Try again"
435+msgstr ""
436+
433437#: qml/Greeter/LoginList.qml:259
434438msgid "Retry"
435439msgstr "Retry"
@@ -466,34 +470,34 @@ msgstr ""
466470"If passcode is entered incorrectly, your phone will conduct a factory reset "
467471"and all personal data will be deleted."
468472
469−#: qml/Greeter/NarrowView.qml:116
473+#: qml/Greeter/NarrowView.qml:129
470474#, qt-format
471475msgid "Enter %1"
472476msgstr "Enter %1"
473477
474−#: qml/Greeter/NarrowView.qml:117
478+#: qml/Greeter/NarrowView.qml:130
475479msgid "Enter passphrase"
476480msgstr "Enter passphrase"
477481
478−#: qml/Greeter/NarrowView.qml:118
482+#: qml/Greeter/NarrowView.qml:131
479483msgid "Enter passcode"
480484msgstr "Enter passcode"
481485
482−#: qml/Greeter/NarrowView.qml:119
486+#: qml/Greeter/NarrowView.qml:135
483487#, qt-format
484488msgid "Sorry, incorrect %1"
485489msgstr "Sorry, incorrect %1"
486490
487−#: qml/Greeter/NarrowView.qml:120
491+#: qml/Greeter/NarrowView.qml:136
488492msgid "Sorry, incorrect passphrase"
489493msgstr "Sorry, incorrect passphrase"
490494
491−#: qml/Greeter/NarrowView.qml:121
495+#: qml/Greeter/NarrowView.qml:137
492496msgctxt "passphrase"
493497msgid "Please re-enter"
494498msgstr "Please re-enter"
495499
496−#: qml/Greeter/NarrowView.qml:122
500+#: qml/Greeter/NarrowView.qml:138
497501msgid "Sorry, incorrect passcode"
498502msgstr "Sorry, incorrect passcode"
499503
po/eo.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-06-06 23:37+0000\n"
1212"Last-Translator: Eliovir <Unknown>\n"
1313"Language-Team: Esperanto <eo@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "Ĉesi"
3535msgid "Unpin shortcut"
3636msgstr ""
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Aparato ŝlosita"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277277msgid "Closes the current window."
278278msgstr ""
279279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281281msgid "Return to Call"
282282msgstr ""
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Emergency Call"
286286msgstr ""
287287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289289msgid "OK"
290290msgstr "Bone"
291291
@@ -422,10 +422,14 @@ msgid ""
422422"touch pad to interact with the pointer."
423423msgstr ""
424424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426426msgid "Unlock"
427427msgstr "Malŝlosi"
428428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429433#: qml/Greeter/LoginList.qml:259
430434msgid "Retry"
431435msgstr "Reprovi"
@@ -458,34 +462,34 @@ msgid ""
458462"and all personal data will be deleted."
459463msgstr ""
460464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462466#, qt-format
463467msgid "Enter %1"
464468msgstr ""
465469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467471msgid "Enter passphrase"
468472msgstr ""
469473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471475msgid "Enter passcode"
472476msgstr ""
473477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475479#, qt-format
476480msgid "Sorry, incorrect %1"
477481msgstr ""
478482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480484msgid "Sorry, incorrect passphrase"
481485msgstr ""
482486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484488msgctxt "passphrase"
485489msgid "Please re-enter"
486490msgstr ""
487491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489493msgid "Sorry, incorrect passcode"
490494msgstr ""
491495
po/es.po+67−61
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2016-03-25 12:02+0000\n"
1212"Last-Translator: Adolfo Jayme <fitoschido@gmail.com>\n"
1313"Language-Team: Spanish <es@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,23 +35,23 @@ msgstr "Salir"
3535msgid "Unpin shortcut"
3636msgstr "Desanclar"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Dispositivo bloqueado"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545"Se ha proporcionado una contraseña errónea demasiadas veces. Se ha bloqueado "
4646"el dispositivo."
4747
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
4949msgid "You have been locked out due to too many failed passcode attempts."
5050msgstr ""
5151"Se ha bloqueado el dispositivo debido al gran número de intentos fallidos de "
5252"desbloqueo."
5353
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
5555#, qt-format
5656msgid "Please wait %1 minute and then try again…"
5757msgid_plural "Please wait %1 minutes and then try again…"
@@ -125,173 +125,173 @@ msgstr "Reiniciar"
125125
126126#: qml/Components/KeyboardShortcutsOverlay.qml:41
127127msgid "Keyboard Shortcuts"
128−msgstr ""
128+msgstr "Atajos de teclado"
129129
130130#: qml/Components/KeyboardShortcutsOverlay.qml:55
131131msgid "Unity 8"
132−msgstr ""
132+msgstr "Unity 8"
133133
134134#: qml/Components/KeyboardShortcutsOverlay.qml:62
135135msgid "PrtScr"
136−msgstr ""
136+msgstr "ImprPant"
137137
138138#: qml/Components/KeyboardShortcutsOverlay.qml:67
139139msgid "Takes a screenshot."
140−msgstr ""
140+msgstr "Captura la pantalla."
141141
142142#: qml/Components/KeyboardShortcutsOverlay.qml:75
143143msgid "Alt + PrtScr"
144−msgstr ""
144+msgstr "Alt + ImprPant"
145145
146146#: qml/Components/KeyboardShortcutsOverlay.qml:80
147147msgid "Takes a screenshot of a window."
148−msgstr ""
148+msgstr "Captura una ventana."
149149
150150#: qml/Components/KeyboardShortcutsOverlay.qml:88
151151msgid "Super + Space"
152−msgstr ""
152+msgstr "Super + Espacio"
153153
154154#: qml/Components/KeyboardShortcutsOverlay.qml:93
155155msgid "Switches to next keyboard layout."
156−msgstr ""
156+msgstr "Cambia a la siguiente disposición de teclado."
157157
158158#: qml/Components/KeyboardShortcutsOverlay.qml:101
159159msgid "Super + Shift + Space"
160−msgstr ""
160+msgstr "Super + Mayús + Espacio"
161161
162162#: qml/Components/KeyboardShortcutsOverlay.qml:106
163163msgid "Switches to previous keyboard layout."
164−msgstr ""
164+msgstr "Cambia a la anterior disposición de teclado."
165165
166166#: qml/Components/KeyboardShortcutsOverlay.qml:118
167167msgid "Launcher"
168−msgstr ""
168+msgstr "Lanzador"
169169
170170#: qml/Components/KeyboardShortcutsOverlay.qml:125
171171msgid "Super (Hold)"
172−msgstr ""
172+msgstr "Super (Mantener)"
173173
174174#: qml/Components/KeyboardShortcutsOverlay.qml:130
175175msgid "Opens the launcher, displays shortcuts."
176−msgstr ""
176+msgstr "Abre el lanzador y muestra los atajos."
177177
178178#: qml/Components/KeyboardShortcutsOverlay.qml:138
179179msgid "Alt + F1"
180−msgstr ""
180+msgstr "Alt + F1"
181181
182182#: qml/Components/KeyboardShortcutsOverlay.qml:143
183183msgid "Opens launcher keyboard navigation mode."
184−msgstr ""
184+msgstr "Abre el Lanzador en modo de navegación de teclado."
185185
186186#: qml/Components/KeyboardShortcutsOverlay.qml:151
187187msgid "Super + Tab"
188−msgstr ""
188+msgstr "Super + Tab"
189189
190190#: qml/Components/KeyboardShortcutsOverlay.qml:156
191191msgid "Switches applications via the launcher."
192−msgstr ""
192+msgstr "Recorre las aplicaciones del Lanzador."
193193
194194#: qml/Components/KeyboardShortcutsOverlay.qml:164
195195msgid "Super + 0 to 9"
196−msgstr ""
196+msgstr "Super + 0 a 9"
197197
198198#: qml/Components/KeyboardShortcutsOverlay.qml:169
199199msgid "Same as clicking on a launcher icon."
200−msgstr ""
200+msgstr "Lo mismo que hacer clic en un icono del Lanzador."
201201
202202#: qml/Components/KeyboardShortcutsOverlay.qml:181
203203msgid "Scopes"
204−msgstr ""
204+msgstr "Scopes"
205205
206206#: qml/Components/KeyboardShortcutsOverlay.qml:188
207207msgid "Super (Tap)"
208−msgstr ""
208+msgstr "Super (Toque)"
209209
210210#: qml/Components/KeyboardShortcutsOverlay.qml:193
211211msgid "Opens the Scopes home."
212−msgstr ""
212+msgstr "Abre el inicio de los Scopes."
213213
214214#: qml/Components/KeyboardShortcutsOverlay.qml:209
215215msgid "Switching"
216−msgstr ""
216+msgstr "Cambiar"
217217
218218#: qml/Components/KeyboardShortcutsOverlay.qml:216
219219msgid "Alt + Tab"
220−msgstr ""
220+msgstr "Alt + Tab"
221221
222222#: qml/Components/KeyboardShortcutsOverlay.qml:221
223223msgid "Switches between applications."
224−msgstr ""
224+msgstr "Cambia entre aplicaciones."
225225
226226#: qml/Components/KeyboardShortcutsOverlay.qml:229
227227msgid "Super + W"
228−msgstr ""
228+msgstr "Super + W"
229229
230230#: qml/Components/KeyboardShortcutsOverlay.qml:234
231231msgid "Opens the desktop spread."
232−msgstr ""
232+msgstr "Mostrar las ventanas del escritorio."
233233
234234#: qml/Components/KeyboardShortcutsOverlay.qml:242
235235msgid "Cursor Left or Right"
236−msgstr ""
236+msgstr "Flecha izquierda o derecha."
237237
238238#: qml/Components/KeyboardShortcutsOverlay.qml:247
239239msgid "Moves the focus."
240−msgstr ""
240+msgstr "Cambia el foco."
241241
242242#: qml/Components/KeyboardShortcutsOverlay.qml:259
243243msgid "Windows"
244−msgstr ""
244+msgstr "Ventanas"
245245
246246#: qml/Components/KeyboardShortcutsOverlay.qml:266
247247msgid "Ctrl + Super + D"
248−msgstr ""
248+msgstr "Ctrl + Super + D"
249249
250250#: qml/Components/KeyboardShortcutsOverlay.qml:271
251251msgid "Minimizes all windows."
252−msgstr ""
252+msgstr "Minimiza todas las ventanas."
253253
254254#: qml/Components/KeyboardShortcutsOverlay.qml:279
255255msgid "Ctrl + Super + Up"
256−msgstr ""
256+msgstr "Ctrl + Super + Arriba"
257257
258258#: qml/Components/KeyboardShortcutsOverlay.qml:284
259259msgid "Maximizes the current window."
260−msgstr ""
260+msgstr "Maximiza la ventana actual."
261261
262262#: qml/Components/KeyboardShortcutsOverlay.qml:292
263263msgid "Ctrl + Super + Down"
264−msgstr ""
264+msgstr "Ctrl + Super + Abajo"
265265
266266#: qml/Components/KeyboardShortcutsOverlay.qml:297
267267msgid "Minimizes or restores the current window."
268−msgstr ""
268+msgstr "Minimiza o restaura la ventana actual."
269269
270270#: qml/Components/KeyboardShortcutsOverlay.qml:305
271271msgid "Ctrl + Super + Left or Right"
272−msgstr ""
272+msgstr "Ctrl + Super + Arriba o Derecha"
273273
274274#: qml/Components/KeyboardShortcutsOverlay.qml:310
275275msgid "Semi-maximizes the current window."
276−msgstr ""
276+msgstr "Semi-maximiza la ventana actual."
277277
278278#: qml/Components/KeyboardShortcutsOverlay.qml:318
279279msgid "Alt + F4"
280−msgstr ""
280+msgstr "Alt + F4"
281281
282282#: qml/Components/KeyboardShortcutsOverlay.qml:323
283283msgid "Closes the current window."
284−msgstr ""
284+msgstr "Cierra la ventana actual."
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Return to Call"
288288msgstr "Volver a la llamada"
289289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291291msgid "Emergency Call"
292292msgstr "Llamada de emergencia"
293293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295295msgid "OK"
296296msgstr "Aceptar"
297297
@@ -431,17 +431,21 @@ msgstr ""
431431"Se ha conectado el dispositivo a una pantalla externa. Utilice esta ventana "
432432"como panel táctil para mover el puntero."
433433
434−#: qml/Greeter/CoverPage.qml:119
434+#: qml/Greeter/CoverPage.qml:127
435435msgid "Unlock"
436436msgstr "Desbloquear"
437437
438+#: qml/Greeter/Greeter.qml:536
439+msgid "Try again"
440+msgstr ""
441+
438442#: qml/Greeter/LoginList.qml:259
439443msgid "Retry"
440444msgstr "Reintentar"
441445
442446#: qml/Greeter/LoginList.qml:260
443447msgid "Log In"
444−msgstr ""
448+msgstr "Iniciar sesión"
445449
446450#: qml/Greeter/NarrowView.qml:54
447451msgid "Sorry, incorrect passphrase."
@@ -471,34 +475,34 @@ msgstr ""
471475"Si se introduce el código incorrectamente, el teléfono volverá a la "
472476"configuración de fábrica y se perderán todos los datos personales."
473477
474−#: qml/Greeter/NarrowView.qml:116
478+#: qml/Greeter/NarrowView.qml:129
475479#, qt-format
476480msgid "Enter %1"
477481msgstr "Introduzca %1"
478482
479−#: qml/Greeter/NarrowView.qml:117
483+#: qml/Greeter/NarrowView.qml:130
480484msgid "Enter passphrase"
481485msgstr "Introduzca la contraseña"
482486
483−#: qml/Greeter/NarrowView.qml:118
487+#: qml/Greeter/NarrowView.qml:131
484488msgid "Enter passcode"
485489msgstr "Introduzca el código"
486490
487−#: qml/Greeter/NarrowView.qml:119
491+#: qml/Greeter/NarrowView.qml:135
488492#, qt-format
489493msgid "Sorry, incorrect %1"
490494msgstr "Incorrecto (%1)"
491495
492−#: qml/Greeter/NarrowView.qml:120
496+#: qml/Greeter/NarrowView.qml:136
493497msgid "Sorry, incorrect passphrase"
494498msgstr "La contraseña es incorrecta"
495499
496−#: qml/Greeter/NarrowView.qml:121
500+#: qml/Greeter/NarrowView.qml:137
497501msgctxt "passphrase"
498502msgid "Please re-enter"
499503msgstr "Reintroduzca"
500504
501−#: qml/Greeter/NarrowView.qml:122
505+#: qml/Greeter/NarrowView.qml:138
502506msgid "Sorry, incorrect passcode"
503507msgstr "El código es incorrecto"
504508
@@ -600,7 +604,7 @@ msgstr "Deslice largo desde el borde izquierdo para ver el scope Hoy"
600604
601605#: qml/Tutorial/TutorialLeft.qml:47
602606msgid "Short swipe from the left edge to open the launcher"
603−msgstr ""
607+msgstr "Deslizar un poco desde el borde izquierdo para abrir el lanzador"
604608
605609#: qml/Tutorial/TutorialRight.qml:55
606610msgid "Push your mouse against the right edge to view your open apps"
@@ -609,11 +613,13 @@ msgstr ""
609613
610614#: qml/Tutorial/TutorialRight.qml:56
611615msgid "Swipe from the right edge to view your open apps"
612−msgstr ""
616+msgstr "Deslizar desde el borde derecho para ver las aplis abiertas"
613617
614618#: qml/Tutorial/TutorialTop.qml:53
615619msgid "Swipe from the top edge to access notifications and quick settings"
616620msgstr ""
621+"Deslizar desde el borde superior para acceder a las notificaciones y "
622+"configuración"
617623
618624#: qml/Wizard/Page.qml:54
619625msgctxt "Button: Go back one page in the Wizard"
po/eu.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-07-13 23:29+0000\n"
1212"Last-Translator: Ibai Oihanguren Sala <Unknown>\n"
1313"Language-Team: Basque <eu@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,22 +35,22 @@ msgstr "Irten"
3535msgid "Unpin shortcut"
3636msgstr "Askatu lasterbidea"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Gailua blokeatuta"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545"Gailua blokeatu da, pasaesaldia sartzeko saiakera gehiegi hutsegin "
4646"dituzulako."
4747
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
4949msgid "You have been locked out due to too many failed passcode attempts."
5050msgstr ""
5151"Gailua blokeatu da, pasakodea sartzeko saiakera gehiegi hutsegin dituzulako."
5252
53−#: qml/Components/DelayedLockscreen.qml:74
53+#: qml/Components/DelayedLockscreen.qml:75
5454#, qt-format
5555msgid "Please wait %1 minute and then try again…"
5656msgid_plural "Please wait %1 minutes and then try again…"
@@ -280,15 +280,15 @@ msgstr ""
280280msgid "Closes the current window."
281281msgstr ""
282282
283−#: qml/Components/Lockscreen.qml:231
283+#: qml/Components/Lockscreen.qml:239
284284msgid "Return to Call"
285285msgstr "Itzuli deira"
286286
287−#: qml/Components/Lockscreen.qml:231
287+#: qml/Components/Lockscreen.qml:239
288288msgid "Emergency Call"
289289msgstr "Larrialdi-deia"
290290
291−#: qml/Components/Lockscreen.qml:263
291+#: qml/Components/Lockscreen.qml:271
292292msgid "OK"
293293msgstr "Ados"
294294
@@ -425,10 +425,14 @@ msgid ""
425425"touch pad to interact with the pointer."
426426msgstr ""
427427
428−#: qml/Greeter/CoverPage.qml:119
428+#: qml/Greeter/CoverPage.qml:127
429429msgid "Unlock"
430430msgstr "Desblokeatu"
431431
432+#: qml/Greeter/Greeter.qml:536
433+msgid "Try again"
434+msgstr ""
435+
432436#: qml/Greeter/LoginList.qml:259
433437msgid "Retry"
434438msgstr "Saiatu berriz"
@@ -465,34 +469,34 @@ msgstr ""
465469"Okerreko pasakodea sartzen baduzu, telefonoaren jatorrizko ezarpenak "
466470"berrezarri eta datu pertsonal guztiak ezabatuko dira."
467471
468−#: qml/Greeter/NarrowView.qml:116
472+#: qml/Greeter/NarrowView.qml:129
469473#, qt-format
470474msgid "Enter %1"
471475msgstr "Sartu %1"
472476
473−#: qml/Greeter/NarrowView.qml:117
477+#: qml/Greeter/NarrowView.qml:130
474478msgid "Enter passphrase"
475479msgstr "Sartu pasaesaldia"
476480
477−#: qml/Greeter/NarrowView.qml:118
481+#: qml/Greeter/NarrowView.qml:131
478482msgid "Enter passcode"
479483msgstr "Sartu pasakodea"
480484
481−#: qml/Greeter/NarrowView.qml:119
485+#: qml/Greeter/NarrowView.qml:135
482486#, qt-format
483487msgid "Sorry, incorrect %1"
484488msgstr "Sentitzen dugu, %1 okerra da"
485489
486−#: qml/Greeter/NarrowView.qml:120
490+#: qml/Greeter/NarrowView.qml:136
487491msgid "Sorry, incorrect passphrase"
488492msgstr "Sentitzen dugu, pasaesaldia okerrekoa da"
489493
490−#: qml/Greeter/NarrowView.qml:121
494+#: qml/Greeter/NarrowView.qml:137
491495msgctxt "passphrase"
492496msgid "Please re-enter"
493497msgstr "Errepikatu"
494498
495−#: qml/Greeter/NarrowView.qml:122
499+#: qml/Greeter/NarrowView.qml:138
496500msgid "Sorry, incorrect passcode"
497501msgstr "Sentitzen dugu, pasakodea okerra da"
498502
po/fa.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2016-03-30 14:29+0000\n"
1212"Last-Translator: Danial Behzadi <dani.behzi@gmail.com>\n"
1313"Language-Team: Persian <fa@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,20 +35,20 @@ msgstr "خروج"
3535msgid "Unpin shortcut"
3636msgstr "برداشتن سنجاق میانبر"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "دستگاه قفل شد"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545"شما به دلیل تلاش‌های بسیار زیاد شکست خورده برای عبارت‌عبور قفل شده‌اید."
4646
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
4848msgid "You have been locked out due to too many failed passcode attempts."
4949msgstr "شما به دلیل تلاش‌های بسیار زیاد شکست خورده برای رمزعبور قفل شده‌اید."
5050
51−#: qml/Components/DelayedLockscreen.qml:74
51+#: qml/Components/DelayedLockscreen.qml:75
5252#, qt-format
5353msgid "Please wait %1 minute and then try again…"
5454msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr ""
279279msgid "Closes the current window."
280280msgstr ""
281281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283283msgid "Return to Call"
284284msgstr "بازگشت به تماس"
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Emergency Call"
288288msgstr "تماس اضطراری"
289289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291291msgid "OK"
292292msgstr "قبول"
293293
@@ -427,10 +427,14 @@ msgstr ""
427427"افزاره‌تان هم‌تکنون به یک نمایشگر خارجی وصل شده است. از این صفحه به عنوان یک "
428428"صفحه‌لمسی برای کارکردن با نشانگر استفاده کنید."
429429
430−#: qml/Greeter/CoverPage.qml:119
430+#: qml/Greeter/CoverPage.qml:127
431431msgid "Unlock"
432432msgstr "بازکردن قفل"
433433
434+#: qml/Greeter/Greeter.qml:536
435+msgid "Try again"
436+msgstr ""
437+
434438#: qml/Greeter/LoginList.qml:259
435439msgid "Retry"
436440msgstr "تلاش دوباره"
@@ -467,34 +471,34 @@ msgstr ""
467471"اگر رمزعبور نادرست وارد شود، تلفن شما بازنشانی کارخانه خواهد شد و تمامی "
468472"اطّلاعات شخصی حذف خواهند شد."
469473
470−#: qml/Greeter/NarrowView.qml:116
474+#: qml/Greeter/NarrowView.qml:129
471475#, qt-format
472476msgid "Enter %1"
473477msgstr "%1 را وارد کنید"
474478
475−#: qml/Greeter/NarrowView.qml:117
479+#: qml/Greeter/NarrowView.qml:130
476480msgid "Enter passphrase"
477481msgstr "عبارت‌عبور را وارد کنید"
478482
479−#: qml/Greeter/NarrowView.qml:118
483+#: qml/Greeter/NarrowView.qml:131
480484msgid "Enter passcode"
481485msgstr "رمزعبور را وارد کنید"
482486
483−#: qml/Greeter/NarrowView.qml:119
487+#: qml/Greeter/NarrowView.qml:135
484488#, qt-format
485489msgid "Sorry, incorrect %1"
486490msgstr "متأسّفیم، %1 نادرست بود"
487491
488−#: qml/Greeter/NarrowView.qml:120
492+#: qml/Greeter/NarrowView.qml:136
489493msgid "Sorry, incorrect passphrase"
490494msgstr "متأسّفیم، عبارت‌عبور نادرست بود"
491495
492−#: qml/Greeter/NarrowView.qml:121
496+#: qml/Greeter/NarrowView.qml:137
493497msgctxt "passphrase"
494498msgid "Please re-enter"
495499msgstr "لطفاً دوباره وارد کنید"
496500
497−#: qml/Greeter/NarrowView.qml:122
501+#: qml/Greeter/NarrowView.qml:138
498502msgid "Sorry, incorrect passcode"
499503msgstr "متأسّفیم، رمزعبور نادرست بود"
500504
po/fi.po+23−19
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-07-04 18:32+0000\n"
1212"Last-Translator: Jiri Grönroos <Unknown>\n"
1313"Language-Team: Finnish <fi@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,21 +35,21 @@ msgstr "Lopeta"
3535msgid "Unpin shortcut"
3636msgstr "Poista pikakuvakkeen kiinnitys"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Laite on lukittu"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545"Laite on lukittu liian monen virheellisen tunnuslauseyrityksen jälkeen."
4646
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
4848msgid "You have been locked out due to too many failed passcode attempts."
4949msgstr ""
5050"Laite on lukittu liian monen virheellisen suojakoodiyrityksen jälkeen."
5151
52−#: qml/Components/DelayedLockscreen.qml:74
52+#: qml/Components/DelayedLockscreen.qml:75
5353#, qt-format
5454msgid "Please wait %1 minute and then try again…"
5555msgid_plural "Please wait %1 minutes and then try again…"
@@ -255,7 +255,7 @@ msgstr ""
255255
256256#: qml/Components/KeyboardShortcutsOverlay.qml:284
257257msgid "Maximizes the current window."
258−msgstr ""
258+msgstr "Suurentaa nykyisen ikkunn,"
259259
260260#: qml/Components/KeyboardShortcutsOverlay.qml:292
261261msgid "Ctrl + Super + Down"
@@ -281,15 +281,15 @@ msgstr ""
281281msgid "Closes the current window."
282282msgstr ""
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Return to Call"
286286msgstr "Palaa puheluun"
287287
288−#: qml/Components/Lockscreen.qml:231
288+#: qml/Components/Lockscreen.qml:239
289289msgid "Emergency Call"
290290msgstr "Hätäpuhelu"
291291
292−#: qml/Components/Lockscreen.qml:263
292+#: qml/Components/Lockscreen.qml:271
293293msgid "OK"
294294msgstr "OK"
295295
@@ -430,10 +430,14 @@ msgstr ""
430430"Laitteesi on nyt yhdistetty ulkoiseen näyttöön. Käytä tätä näyttöä "
431431"kosketuslevynä hiiren osoittimen liikuttamiseksi."
432432
433−#: qml/Greeter/CoverPage.qml:119
433+#: qml/Greeter/CoverPage.qml:127
434434msgid "Unlock"
435435msgstr "Avaa lukitus"
436436
437+#: qml/Greeter/Greeter.qml:536
438+msgid "Try again"
439+msgstr ""
440+
437441#: qml/Greeter/LoginList.qml:259
438442msgid "Retry"
439443msgstr "Yritä uudelleen"
@@ -470,34 +474,34 @@ msgstr ""
470474"Jos kirjoitat suojakoodin virheellisesti, puhelimesi palautetaan "
471475"tehdastilaan ja kaikki henkilökohtaiset tietosi poistetaan."
472476
473−#: qml/Greeter/NarrowView.qml:116
477+#: qml/Greeter/NarrowView.qml:129
474478#, qt-format
475479msgid "Enter %1"
476480msgstr "Anna %1"
477481
478−#: qml/Greeter/NarrowView.qml:117
482+#: qml/Greeter/NarrowView.qml:130
479483msgid "Enter passphrase"
480484msgstr "Anna tunnuslause"
481485
482−#: qml/Greeter/NarrowView.qml:118
486+#: qml/Greeter/NarrowView.qml:131
483487msgid "Enter passcode"
484488msgstr "Anna suojakoodi"
485489
486−#: qml/Greeter/NarrowView.qml:119
490+#: qml/Greeter/NarrowView.qml:135
487491#, qt-format
488492msgid "Sorry, incorrect %1"
489493msgstr "Väärä %1"
490494
491−#: qml/Greeter/NarrowView.qml:120
495+#: qml/Greeter/NarrowView.qml:136
492496msgid "Sorry, incorrect passphrase"
493497msgstr "Virheellinen tunnuslause"
494498
495−#: qml/Greeter/NarrowView.qml:121
499+#: qml/Greeter/NarrowView.qml:137
496500msgctxt "passphrase"
497501msgid "Please re-enter"
498502msgstr "Anna uudelleen"
499503
500−#: qml/Greeter/NarrowView.qml:122
504+#: qml/Greeter/NarrowView.qml:138
501505msgid "Sorry, incorrect passcode"
502506msgstr "Väärä suojakoodi"
503507
po/fo.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\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"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,21 +35,21 @@ msgstr "Gevst"
3535msgid "Unpin shortcut"
3636msgstr "Óheft snarveg"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Tóleind stongd"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545"Tú ert vorðin útstongdur, tí tú ikki hevur skrivað skeiva loyniorðið ov ofta."
4646
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
4848msgid "You have been locked out due to too many failed passcode attempts."
4949msgstr ""
5050"Tú ert vorðin útstongdur, tí tú ikki hevur skrivað skeiva loyniorðið ov ofta."
5151
52−#: qml/Components/DelayedLockscreen.qml:74
52+#: qml/Components/DelayedLockscreen.qml:75
5353#, qt-format
5454msgid "Please wait %1 minute and then try again…"
5555msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr ""
279279msgid "Closes the current window."
280280msgstr ""
281281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283283msgid "Return to Call"
284284msgstr "Far aftur til uppkall"
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Emergency Call"
288288msgstr "Neyðarkall"
289289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291291msgid "OK"
292292msgstr "OK"
293293
@@ -426,10 +426,14 @@ msgid ""
426426"touch pad to interact with the pointer."
427427msgstr ""
428428
429−#: qml/Greeter/CoverPage.qml:119
429+#: qml/Greeter/CoverPage.qml:127
430430msgid "Unlock"
431431msgstr ""
432432
433+#: qml/Greeter/Greeter.qml:536
434+msgid "Try again"
435+msgstr ""
436+
433437#: qml/Greeter/LoginList.qml:259
434438msgid "Retry"
435439msgstr "Royn aftur"
@@ -462,34 +466,34 @@ msgid ""
462466"and all personal data will be deleted."
463467msgstr ""
464468
465−#: qml/Greeter/NarrowView.qml:116
469+#: qml/Greeter/NarrowView.qml:129
466470#, qt-format
467471msgid "Enter %1"
468472msgstr "Skriva %1"
469473
470−#: qml/Greeter/NarrowView.qml:117
474+#: qml/Greeter/NarrowView.qml:130
471475msgid "Enter passphrase"
472476msgstr "Skriva loyniorð"
473477
474−#: qml/Greeter/NarrowView.qml:118
478+#: qml/Greeter/NarrowView.qml:131
475479msgid "Enter passcode"
476480msgstr "Skriva loyniorð"
477481
478−#: qml/Greeter/NarrowView.qml:119
482+#: qml/Greeter/NarrowView.qml:135
479483#, qt-format
480484msgid "Sorry, incorrect %1"
481485msgstr "Orsakað, skeiv %1"
482486
483−#: qml/Greeter/NarrowView.qml:120
487+#: qml/Greeter/NarrowView.qml:136
484488msgid "Sorry, incorrect passphrase"
485489msgstr ""
486490
487−#: qml/Greeter/NarrowView.qml:121
491+#: qml/Greeter/NarrowView.qml:137
488492msgctxt "passphrase"
489493msgid "Please re-enter"
490494msgstr ""
491495
492−#: qml/Greeter/NarrowView.qml:122
496+#: qml/Greeter/NarrowView.qml:138
493497msgid "Sorry, incorrect passcode"
494498msgstr ""
495499
po/fr.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2016-05-19 21:22+0000\n"
1212"Last-Translator: Ubuntu-QC-1 <Unknown>\n"
1313"Language-Team: French <fr@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,23 +35,23 @@ msgstr "Quitter"
3535msgid "Unpin shortcut"
3636msgstr "Détacher le raccourci"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Appareil verrouillé"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545"L'appareil a été verrouillé suite à un trop grand nombre de tentatives de "
4646"saisie d'une phrase de passe erronée."
4747
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
4949msgid "You have been locked out due to too many failed passcode attempts."
5050msgstr ""
5151"Vous avez été bloqué suite à un trop grand nombre de tentatives de saisie "
5252"d'un mot de passe erroné."
5353
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
5555#, qt-format
5656msgid "Please wait %1 minute and then try again…"
5757msgid_plural "Please wait %1 minutes and then try again…"
@@ -283,15 +283,15 @@ msgstr ""
283283msgid "Closes the current window."
284284msgstr ""
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Return to Call"
288288msgstr "Retourner à l'appel"
289289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291291msgid "Emergency Call"
292292msgstr "Appel d'urgence"
293293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295295msgid "OK"
296296msgstr "OK"
297297
@@ -434,10 +434,14 @@ msgstr ""
434434"Votre appareil est maintenant connecté à un écran externe. Utilisez cet "
435435"écran comme un pavé tactile pour interagir avec le pointeur."
436436
437−#: qml/Greeter/CoverPage.qml:119
437+#: qml/Greeter/CoverPage.qml:127
438438msgid "Unlock"
439439msgstr "Déverrouiller"
440440
441+#: qml/Greeter/Greeter.qml:536
442+msgid "Try again"
443+msgstr ""
444+
441445#: qml/Greeter/LoginList.qml:259
442446msgid "Retry"
443447msgstr "Réessayer"
@@ -476,34 +480,34 @@ msgstr ""
476480"réinitialisation aux paramètres d'usine et toutes les données personnelles "
477481"seront supprimées."
478482
479−#: qml/Greeter/NarrowView.qml:116
483+#: qml/Greeter/NarrowView.qml:129
480484#, qt-format
481485msgid "Enter %1"
482486msgstr "Saisissez %1"
483487
484−#: qml/Greeter/NarrowView.qml:117
488+#: qml/Greeter/NarrowView.qml:130
485489msgid "Enter passphrase"
486490msgstr "Saisissez la phrase de passe"
487491
488−#: qml/Greeter/NarrowView.qml:118
492+#: qml/Greeter/NarrowView.qml:131
489493msgid "Enter passcode"
490494msgstr "Saisissez le mot de passe"
491495
492−#: qml/Greeter/NarrowView.qml:119
496+#: qml/Greeter/NarrowView.qml:135
493497#, qt-format
494498msgid "Sorry, incorrect %1"
495499msgstr "Désolé, %1 incorrect"
496500
497−#: qml/Greeter/NarrowView.qml:120
501+#: qml/Greeter/NarrowView.qml:136
498502msgid "Sorry, incorrect passphrase"
499503msgstr "Désolé, phrase secrète incorrecte"
500504
501−#: qml/Greeter/NarrowView.qml:121
505+#: qml/Greeter/NarrowView.qml:137
502506msgctxt "passphrase"
503507msgid "Please re-enter"
504508msgstr "Veuillez ressaisir"
505509
506−#: qml/Greeter/NarrowView.qml:122
510+#: qml/Greeter/NarrowView.qml:138
507511msgid "Sorry, incorrect passcode"
508512msgstr "Désolé, code incorrect"
509513
po/ga.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2016-01-25 11:33+0000\n"
1212"Last-Translator: Joshua Kiley <Unknown>\n"
1313"Language-Team: Irish <ga@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n==2 ? 1 : 2;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "Éirigh as"
3535msgid "Unpin shortcut"
3636msgstr "Bain Aicearra Den Bharra"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Faoi Ghlas"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr "Tá tú dúnta amach ceal an iomarca drochiarrachtaí pasfhocail."
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr "Tá tú dúnta amach ceal an iomarca drochiarrachtaí cóid."
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -278,15 +278,15 @@ msgstr ""
278278msgid "Closes the current window."
279279msgstr ""
280280
281−#: qml/Components/Lockscreen.qml:231
281+#: qml/Components/Lockscreen.qml:239
282282msgid "Return to Call"
283283msgstr "Fill ar an Ghlaoch"
284284
285−#: qml/Components/Lockscreen.qml:231
285+#: qml/Components/Lockscreen.qml:239
286286msgid "Emergency Call"
287287msgstr "Glaoch Éigeandála"
288288
289−#: qml/Components/Lockscreen.qml:263
289+#: qml/Components/Lockscreen.qml:271
290290msgid "OK"
291291msgstr "Tá Go Maith"
292292
@@ -423,10 +423,14 @@ msgid ""
423423"touch pad to interact with the pointer."
424424msgstr ""
425425
426−#: qml/Greeter/CoverPage.qml:119
426+#: qml/Greeter/CoverPage.qml:127
427427msgid "Unlock"
428428msgstr "Oscail"
429429
430+#: qml/Greeter/Greeter.qml:536
431+msgid "Try again"
432+msgstr ""
433+
430434#: qml/Greeter/LoginList.qml:259
431435msgid "Retry"
432436msgstr "Bain triail as arís"
@@ -463,34 +467,34 @@ msgstr ""
463467"Más mbíonn paschód mícheart agat arís, déanann do guthan monarchan athshocrú "
464468"agus beidh do shonraí pearsanta scriosadh."
465469
466−#: qml/Greeter/NarrowView.qml:116
470+#: qml/Greeter/NarrowView.qml:129
467471#, qt-format
468472msgid "Enter %1"
469473msgstr "Cuir isteach %1"
470474
471−#: qml/Greeter/NarrowView.qml:117
475+#: qml/Greeter/NarrowView.qml:130
472476msgid "Enter passphrase"
473477msgstr "Cuir pasfhrása isteach"
474478
475−#: qml/Greeter/NarrowView.qml:118
479+#: qml/Greeter/NarrowView.qml:131
476480msgid "Enter passcode"
477481msgstr "Cuir paschód isteach"
478482
479−#: qml/Greeter/NarrowView.qml:119
483+#: qml/Greeter/NarrowView.qml:135
480484#, qt-format
481485msgid "Sorry, incorrect %1"
482486msgstr "Míchruinn, mo léan %1"
483487
484−#: qml/Greeter/NarrowView.qml:120
488+#: qml/Greeter/NarrowView.qml:136
485489msgid "Sorry, incorrect passphrase"
486490msgstr "Códfhrása míchruinn, mo léan."
487491
488−#: qml/Greeter/NarrowView.qml:121
492+#: qml/Greeter/NarrowView.qml:137
489493msgctxt "passphrase"
490494msgid "Please re-enter"
491495msgstr "Cuir isteach é arís, le do thoil"
492496
493−#: qml/Greeter/NarrowView.qml:122
497+#: qml/Greeter/NarrowView.qml:138
494498msgid "Sorry, incorrect passcode"
495499msgstr "Paschód míchruinn, mo léan"
496500
po/gd.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2016-04-08 18:34+0000\n"
1212"Last-Translator: Akerbeltz <fios@akerbeltz.org>\n"
1313"Language-Team: Fòram na Gàidhlig\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : "
1818"(n > 2 && n < 20) ? 2 : 3;\n"
19−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
20−"X-Generator: Launchpad (build 18097)\n"
19+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
20+"X-Generator: Launchpad (build 18111)\n"
2121"Language: gd\n"
2222
2323#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -37,23 +37,23 @@ msgstr "Fàg an-seo"
3737msgid "Unpin shortcut"
3838msgstr "Neo-phrìnich an ath-ghoirid"
3939
40−#: qml/Components/DelayedLockscreen.qml:49
40+#: qml/Components/DelayedLockscreen.qml:50
4141msgid "Device Locked"
4242msgstr "Tha glas air an uidheam"
4343
44−#: qml/Components/DelayedLockscreen.qml:64
44+#: qml/Components/DelayedLockscreen.qml:65
4545msgid "You have been locked out due to too many failed passphrase attempts."
4646msgstr ""
4747"Chaidh do glasadh a-mach às an uidheam on a chuir thu abairt-fhaire chearr a-"
4848"steach cus tursan."
4949
50−#: qml/Components/DelayedLockscreen.qml:65
50+#: qml/Components/DelayedLockscreen.qml:66
5151msgid "You have been locked out due to too many failed passcode attempts."
5252msgstr ""
5353"Chaidh do glasadh a-mach às an uidheam on a chuir thu còd-faire cearr a-"
5454"steach cus tursan."
5555
56−#: qml/Components/DelayedLockscreen.qml:74
56+#: qml/Components/DelayedLockscreen.qml:75
5757#, qt-format
5858msgid "Please wait %1 minute and then try again…"
5959msgid_plural "Please wait %1 minutes and then try again…"
@@ -287,15 +287,15 @@ msgstr ""
287287msgid "Closes the current window."
288288msgstr ""
289289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291291msgid "Return to Call"
292292msgstr "Till dhan ghairm"
293293
294−#: qml/Components/Lockscreen.qml:231
294+#: qml/Components/Lockscreen.qml:239
295295msgid "Emergency Call"
296296msgstr "Gairm èiginn"
297297
298−#: qml/Components/Lockscreen.qml:263
298+#: qml/Components/Lockscreen.qml:271
299299msgid "OK"
300300msgstr "Ceart ma-thà"
301301
@@ -437,10 +437,14 @@ msgstr ""
437437"muigh a-nis. Cleachd an sgrìn seo 'na phada-suathaidh gus gnìomh tomhaire a "
438438"dhèanamh."
439439
440−#: qml/Greeter/CoverPage.qml:119
440+#: qml/Greeter/CoverPage.qml:127
441441msgid "Unlock"
442442msgstr "Thoir a' ghlas dheth"
443443
444+#: qml/Greeter/Greeter.qml:536
445+msgid "Try again"
446+msgstr ""
447+
444448#: qml/Greeter/LoginList.qml:259
445449msgid "Retry"
446450msgstr "Feuch ris a-rithist"
@@ -479,34 +483,34 @@ msgstr ""
479483"shuidheachadh air roghainnean an fhactaraidh agus thèid gach dàta pearsanta "
480484"a sguabadh às."
481485
482−#: qml/Greeter/NarrowView.qml:116
486+#: qml/Greeter/NarrowView.qml:129
483487#, qt-format
484488msgid "Enter %1"
485489msgstr "Cuir a-steach %1"
486490
487−#: qml/Greeter/NarrowView.qml:117
491+#: qml/Greeter/NarrowView.qml:130
488492msgid "Enter passphrase"
489493msgstr "Cuir abairt-fhaire a-steach"
490494
491−#: qml/Greeter/NarrowView.qml:118
495+#: qml/Greeter/NarrowView.qml:131
492496msgid "Enter passcode"
493497msgstr "Cuir còd-faire a-steach"
494498
495−#: qml/Greeter/NarrowView.qml:119
499+#: qml/Greeter/NarrowView.qml:135
496500#, qt-format
497501msgid "Sorry, incorrect %1"
498502msgstr "Duilich ach tha a' %1 cearr"
499503
500−#: qml/Greeter/NarrowView.qml:120
504+#: qml/Greeter/NarrowView.qml:136
501505msgid "Sorry, incorrect passphrase"
502506msgstr "Duilich ach tha an abairt-fhaire cearr"
503507
504−#: qml/Greeter/NarrowView.qml:121
508+#: qml/Greeter/NarrowView.qml:137
505509msgctxt "passphrase"
506510msgid "Please re-enter"
507511msgstr "Cuir a-steach i a-rithist"
508512
509−#: qml/Greeter/NarrowView.qml:122
513+#: qml/Greeter/NarrowView.qml:138
510514msgid "Sorry, incorrect passcode"
511515msgstr "Duilich ach tha an còd-faire cearr"
512516
po/gl.po+67−61
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2016-01-15 14:56+0000\n"
1212"Last-Translator: Marcos Lans <Unknown>\n"
1313"Language-Team: Galician <gl@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "Saír"
3535msgid "Unpin shortcut"
3636msgstr "Eliminar o atallo"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Dispositivo bloqueado"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr "Bloqueouse o dispositivo polos intentos fallidos da frase secreta."
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr "Bloqueouse o dispositivo polos intentos fallidos da clave."
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -119,173 +119,173 @@ msgstr "Reiniciar"
119119
120120#: qml/Components/KeyboardShortcutsOverlay.qml:41
121121msgid "Keyboard Shortcuts"
122−msgstr ""
122+msgstr "Atallos do teclado"
123123
124124#: qml/Components/KeyboardShortcutsOverlay.qml:55
125125msgid "Unity 8"
126−msgstr ""
126+msgstr "Unity 8"
127127
128128#: qml/Components/KeyboardShortcutsOverlay.qml:62
129129msgid "PrtScr"
130−msgstr ""
130+msgstr "ImpPant"
131131
132132#: qml/Components/KeyboardShortcutsOverlay.qml:67
133133msgid "Takes a screenshot."
134−msgstr ""
134+msgstr "Capturar a pantalla."
135135
136136#: qml/Components/KeyboardShortcutsOverlay.qml:75
137137msgid "Alt + PrtScr"
138−msgstr ""
138+msgstr "Alt + ImpPant"
139139
140140#: qml/Components/KeyboardShortcutsOverlay.qml:80
141141msgid "Takes a screenshot of a window."
142−msgstr ""
142+msgstr "Capturar unha xanela da pantalla."
143143
144144#: qml/Components/KeyboardShortcutsOverlay.qml:88
145145msgid "Super + Space"
146−msgstr ""
146+msgstr "Super + Espazo"
147147
148148#: qml/Components/KeyboardShortcutsOverlay.qml:93
149149msgid "Switches to next keyboard layout."
150−msgstr ""
150+msgstr "Cambia á disposición seguinte do teclado."
151151
152152#: qml/Components/KeyboardShortcutsOverlay.qml:101
153153msgid "Super + Shift + Space"
154−msgstr ""
154+msgstr "Super + Maiús + Espazo"
155155
156156#: qml/Components/KeyboardShortcutsOverlay.qml:106
157157msgid "Switches to previous keyboard layout."
158−msgstr ""
158+msgstr "Cambia á disposición anterior do teclado"
159159
160160#: qml/Components/KeyboardShortcutsOverlay.qml:118
161161msgid "Launcher"
162−msgstr ""
162+msgstr "Iniciador"
163163
164164#: qml/Components/KeyboardShortcutsOverlay.qml:125
165165msgid "Super (Hold)"
166−msgstr ""
166+msgstr "Super (manter primida)"
167167
168168#: qml/Components/KeyboardShortcutsOverlay.qml:130
169169msgid "Opens the launcher, displays shortcuts."
170−msgstr ""
170+msgstr "Abre o Iniciador, mostra os atallos."
171171
172172#: qml/Components/KeyboardShortcutsOverlay.qml:138
173173msgid "Alt + F1"
174−msgstr ""
174+msgstr "Alt + F1"
175175
176176#: qml/Components/KeyboardShortcutsOverlay.qml:143
177177msgid "Opens launcher keyboard navigation mode."
178−msgstr ""
178+msgstr "Abre o modo navegación por teclado do Iniciador."
179179
180180#: qml/Components/KeyboardShortcutsOverlay.qml:151
181181msgid "Super + Tab"
182−msgstr ""
182+msgstr "Super + Tab"
183183
184184#: qml/Components/KeyboardShortcutsOverlay.qml:156
185185msgid "Switches applications via the launcher."
186−msgstr ""
186+msgstr "Cambia entre aplicativos co Iniciador."
187187
188188#: qml/Components/KeyboardShortcutsOverlay.qml:164
189189msgid "Super + 0 to 9"
190−msgstr ""
190+msgstr "Super + 0 a 9"
191191
192192#: qml/Components/KeyboardShortcutsOverlay.qml:169
193193msgid "Same as clicking on a launcher icon."
194−msgstr ""
194+msgstr "Igual que premer nunha icona do Iniciador."
195195
196196#: qml/Components/KeyboardShortcutsOverlay.qml:181
197197msgid "Scopes"
198−msgstr ""
198+msgstr "Ámbitos"
199199
200200#: qml/Components/KeyboardShortcutsOverlay.qml:188
201201msgid "Super (Tap)"
202−msgstr ""
202+msgstr "Super (tocar)"
203203
204204#: qml/Components/KeyboardShortcutsOverlay.qml:193
205205msgid "Opens the Scopes home."
206−msgstr ""
206+msgstr "Abre os Ámbitos."
207207
208208#: qml/Components/KeyboardShortcutsOverlay.qml:209
209209msgid "Switching"
210−msgstr ""
210+msgstr "Cambiar"
211211
212212#: qml/Components/KeyboardShortcutsOverlay.qml:216
213213msgid "Alt + Tab"
214−msgstr ""
214+msgstr "Alt + Tab"
215215
216216#: qml/Components/KeyboardShortcutsOverlay.qml:221
217217msgid "Switches between applications."
218−msgstr ""
218+msgstr "Cambia entre aplicativos."
219219
220220#: qml/Components/KeyboardShortcutsOverlay.qml:229
221221msgid "Super + W"
222−msgstr ""
222+msgstr "Super + W"
223223
224224#: qml/Components/KeyboardShortcutsOverlay.qml:234
225225msgid "Opens the desktop spread."
226−msgstr ""
226+msgstr "Mostra todas as xanelas do escritorio."
227227
228228#: qml/Components/KeyboardShortcutsOverlay.qml:242
229229msgid "Cursor Left or Right"
230−msgstr ""
230+msgstr "Frecha esquerda ou dereita"
231231
232232#: qml/Components/KeyboardShortcutsOverlay.qml:247
233233msgid "Moves the focus."
234−msgstr ""
234+msgstr "Cambia o foco."
235235
236236#: qml/Components/KeyboardShortcutsOverlay.qml:259
237237msgid "Windows"
238−msgstr ""
238+msgstr "Xanelas"
239239
240240#: qml/Components/KeyboardShortcutsOverlay.qml:266
241241msgid "Ctrl + Super + D"
242−msgstr ""
242+msgstr "Ctrl + Super + D"
243243
244244#: qml/Components/KeyboardShortcutsOverlay.qml:271
245245msgid "Minimizes all windows."
246−msgstr ""
246+msgstr "Minimiza todas as xanelas."
247247
248248#: qml/Components/KeyboardShortcutsOverlay.qml:279
249249msgid "Ctrl + Super + Up"
250−msgstr ""
250+msgstr "Ctrl + Super + Arriba"
251251
252252#: qml/Components/KeyboardShortcutsOverlay.qml:284
253253msgid "Maximizes the current window."
254−msgstr ""
254+msgstr "Maximiza a xanela actual."
255255
256256#: qml/Components/KeyboardShortcutsOverlay.qml:292
257257msgid "Ctrl + Super + Down"
258−msgstr ""
258+msgstr "Ctrl + Super + Abaixo"
259259
260260#: qml/Components/KeyboardShortcutsOverlay.qml:297
261261msgid "Minimizes or restores the current window."
262−msgstr ""
262+msgstr "Minimiza ou restabelece a xanela actual."
263263
264264#: qml/Components/KeyboardShortcutsOverlay.qml:305
265265msgid "Ctrl + Super + Left or Right"
266−msgstr ""
266+msgstr "Ctrl + Super + Esq. ou Der."
267267
268268#: qml/Components/KeyboardShortcutsOverlay.qml:310
269269msgid "Semi-maximizes the current window."
270−msgstr ""
270+msgstr "Semi-maximiza a xanela actual."
271271
272272#: qml/Components/KeyboardShortcutsOverlay.qml:318
273273msgid "Alt + F4"
274−msgstr ""
274+msgstr "Alt + F4"
275275
276276#: qml/Components/KeyboardShortcutsOverlay.qml:323
277277msgid "Closes the current window."
278−msgstr ""
278+msgstr "Pecha a xanela actual."
279279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281281msgid "Return to Call"
282282msgstr "Volver á chamada"
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Emergency Call"
286286msgstr "Chamada de emerxencia"
287287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289289msgid "OK"
290290msgstr "Aceptar"
291291
@@ -426,17 +426,21 @@ msgstr ""
426426"Agora o dispositivo conectouse a unha pantalla externa. Use esta pantalla "
427427"como área táctil para interactuar co punteiro."
428428
429−#: qml/Greeter/CoverPage.qml:119
429+#: qml/Greeter/CoverPage.qml:127
430430msgid "Unlock"
431431msgstr "Desbloquear"
432432
433+#: qml/Greeter/Greeter.qml:536
434+msgid "Try again"
435+msgstr "Tentar de novo"
436+
433437#: qml/Greeter/LoginList.qml:259
434438msgid "Retry"
435439msgstr "Reintentar"
436440
437441#: qml/Greeter/LoginList.qml:260
438442msgid "Log In"
439−msgstr ""
443+msgstr "Iniciar sesión"
440444
441445#: qml/Greeter/NarrowView.qml:54
442446msgid "Sorry, incorrect passphrase."
@@ -466,34 +470,34 @@ msgstr ""
466470"Se a clave introducida é incorrecta, o teléfono restabelecerá os valores de "
467471"fábrica e perderá todos os datos persoais."
468472
469−#: qml/Greeter/NarrowView.qml:116
473+#: qml/Greeter/NarrowView.qml:129
470474#, qt-format
471475msgid "Enter %1"
472476msgstr "Introducir %1"
473477
474−#: qml/Greeter/NarrowView.qml:117
478+#: qml/Greeter/NarrowView.qml:130
475479msgid "Enter passphrase"
476480msgstr "Introduza a frase secreta"
477481
478−#: qml/Greeter/NarrowView.qml:118
482+#: qml/Greeter/NarrowView.qml:131
479483msgid "Enter passcode"
480484msgstr "Introduza a clave"
481485
482−#: qml/Greeter/NarrowView.qml:119
486+#: qml/Greeter/NarrowView.qml:135
483487#, qt-format
484488msgid "Sorry, incorrect %1"
485489msgstr "Sentímolo, %1 non coincide"
486490
487−#: qml/Greeter/NarrowView.qml:120
491+#: qml/Greeter/NarrowView.qml:136
488492msgid "Sorry, incorrect passphrase"
489493msgstr "Sentímolo a frase é incorrecta"
490494
491−#: qml/Greeter/NarrowView.qml:121
495+#: qml/Greeter/NarrowView.qml:137
492496msgctxt "passphrase"
493497msgid "Please re-enter"
494498msgstr "Introducir de novo"
495499
496−#: qml/Greeter/NarrowView.qml:122
500+#: qml/Greeter/NarrowView.qml:138
497501msgid "Sorry, incorrect passcode"
498502msgstr "Sentímolo, a clave é incorrecta"
499503
@@ -594,7 +598,7 @@ msgstr "Esvare longo desde o bordo esquerdo para abrir o ámbito Hoxe"
594598
595599#: qml/Tutorial/TutorialLeft.qml:47
596600msgid "Short swipe from the left edge to open the launcher"
597−msgstr ""
601+msgstr "Esvarar lixeiramente desde a esquerda para abrir o Iniciador"
598602
599603#: qml/Tutorial/TutorialRight.qml:55
600604msgid "Push your mouse against the right edge to view your open apps"
@@ -602,11 +606,13 @@ msgstr "Empuxe o rato contra o bordo dereito para ver os aplicativos abertos"
602606
603607#: qml/Tutorial/TutorialRight.qml:56
604608msgid "Swipe from the right edge to view your open apps"
605−msgstr ""
609+msgstr "Esvarar desde a dereita para ver os aplicativos abertos"
606610
607611#: qml/Tutorial/TutorialTop.qml:53
608612msgid "Swipe from the top edge to access notifications and quick settings"
609613msgstr ""
614+"Esvarar desde o bordo superior para acceder ás notificacións e axustes "
615+"rápidos"
610616
611617#: qml/Wizard/Page.qml:54
612618msgctxt "Button: Go back one page in the Wizard"
po/gv.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-04-02 14:24+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Manx <gv@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : (n == 2 ? 1 : 2);\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,23 +35,23 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr "Jean neu-freenaghey yn cassan er lheh"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Saase glast"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545"Hie oo er glassey magh kyndagh rish rour çhebbyn aggairagh er yn fockle "
4646"follit."
4747
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
4949msgid "You have been locked out due to too many failed passcode attempts."
5050msgstr ""
5151"Hie oo er glassey magh kyndagh rish rour çhebbyn aggairagh er yn fockle "
5252"follit."
5353
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
5555#, qt-format
5656msgid "Please wait %1 minute and then try again…"
5757msgid_plural "Please wait %1 minutes and then try again…"
@@ -284,15 +284,15 @@ msgstr ""
284284msgid "Closes the current window."
285285msgstr ""
286286
287−#: qml/Components/Lockscreen.qml:231
287+#: qml/Components/Lockscreen.qml:239
288288msgid "Return to Call"
289289msgstr "Erash dys eam"
290290
291−#: qml/Components/Lockscreen.qml:231
291+#: qml/Components/Lockscreen.qml:239
292292msgid "Emergency Call"
293293msgstr "Eam eginit"
294294
295−#: qml/Components/Lockscreen.qml:263
295+#: qml/Components/Lockscreen.qml:271
296296msgid "OK"
297297msgstr "Mie dy liooar"
298298
@@ -429,10 +429,14 @@ msgid ""
429429"touch pad to interact with the pointer."
430430msgstr ""
431431
432−#: qml/Greeter/CoverPage.qml:119
432+#: qml/Greeter/CoverPage.qml:127
433433msgid "Unlock"
434434msgstr ""
435435
436+#: qml/Greeter/Greeter.qml:536
437+msgid "Try again"
438+msgstr ""
439+
436440#: qml/Greeter/LoginList.qml:259
437441msgid "Retry"
438442msgstr ""
@@ -465,34 +469,34 @@ msgid ""
465469"and all personal data will be deleted."
466470msgstr ""
467471
468−#: qml/Greeter/NarrowView.qml:116
472+#: qml/Greeter/NarrowView.qml:129
469473#, qt-format
470474msgid "Enter %1"
471475msgstr ""
472476
473−#: qml/Greeter/NarrowView.qml:117
477+#: qml/Greeter/NarrowView.qml:130
474478msgid "Enter passphrase"
475479msgstr ""
476480
477−#: qml/Greeter/NarrowView.qml:118
481+#: qml/Greeter/NarrowView.qml:131
478482msgid "Enter passcode"
479483msgstr ""
480484
481−#: qml/Greeter/NarrowView.qml:119
485+#: qml/Greeter/NarrowView.qml:135
482486#, qt-format
483487msgid "Sorry, incorrect %1"
484488msgstr ""
485489
486−#: qml/Greeter/NarrowView.qml:120
490+#: qml/Greeter/NarrowView.qml:136
487491msgid "Sorry, incorrect passphrase"
488492msgstr ""
489493
490−#: qml/Greeter/NarrowView.qml:121
494+#: qml/Greeter/NarrowView.qml:137
491495msgctxt "passphrase"
492496msgid "Please re-enter"
493497msgstr ""
494498
495−#: qml/Greeter/NarrowView.qml:122
499+#: qml/Greeter/NarrowView.qml:138
496500msgid "Sorry, incorrect passcode"
497501msgstr ""
498502
po/he.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-07-12 08:47+0000\n"
1212"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
1313"Language-Team: Hebrew <he@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr "הפרדת קיצור הדרך"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "ההתקן נעול"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr "ננעלת מחוץ למערכת עקב ריבוי ניסיונות הזנת מילת צופן."
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277277msgid "Closes the current window."
278278msgstr ""
279279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281281msgid "Return to Call"
282282msgstr "חזרה לשיחה"
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Emergency Call"
286286msgstr "שיחת חירום"
287287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289289msgid "OK"
290290msgstr "אישור"
291291
@@ -422,10 +422,14 @@ msgid ""
422422"touch pad to interact with the pointer."
423423msgstr ""
424424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426426msgid "Unlock"
427427msgstr "שחרור נעילה"
428428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429433#: qml/Greeter/LoginList.qml:259
430434msgid "Retry"
431435msgstr "ניסיון חוזר"
@@ -458,34 +462,34 @@ msgid ""
458462"and all personal data will be deleted."
459463msgstr ""
460464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462466#, qt-format
463467msgid "Enter %1"
464468msgstr ""
465469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467471msgid "Enter passphrase"
468472msgstr "נא להזין מילת צופן"
469473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471475msgid "Enter passcode"
472476msgstr ""
473477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475479#, qt-format
476480msgid "Sorry, incorrect %1"
477481msgstr ""
478482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480484msgid "Sorry, incorrect passphrase"
481485msgstr "מילת הצופן שגויה, עמך הסליחה."
482486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484488msgctxt "passphrase"
485489msgid "Please re-enter"
486490msgstr ""
487491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489493msgid "Sorry, incorrect passcode"
490494msgstr ""
491495
po/hi.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2014-01-15 01:49+0000\n"
1212"Last-Translator: Siddhanathan Shanmugam <Unknown>\n"
1313"Language-Team: Hindi <hi@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr ""
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr ""
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277277msgid "Closes the current window."
278278msgstr ""
279279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281281msgid "Return to Call"
282282msgstr ""
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Emergency Call"
286286msgstr "आपातकालीन कॉल"
287287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289289msgid "OK"
290290msgstr ""
291291
@@ -422,10 +422,14 @@ msgid ""
422422"touch pad to interact with the pointer."
423423msgstr ""
424424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426426msgid "Unlock"
427427msgstr ""
428428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429433#: qml/Greeter/LoginList.qml:259
430434msgid "Retry"
431435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458462"and all personal data will be deleted."
459463msgstr ""
460464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462466#, qt-format
463467msgid "Enter %1"
464468msgstr ""
465469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467471msgid "Enter passphrase"
468472msgstr ""
469473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471475msgid "Enter passcode"
472476msgstr ""
473477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475479#, qt-format
476480msgid "Sorry, incorrect %1"
477481msgstr ""
478482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480484msgid "Sorry, incorrect passphrase"
481485msgstr ""
482486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484488msgctxt "passphrase"
485489msgid "Please re-enter"
486490msgstr ""
487491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489493msgid "Sorry, incorrect passcode"
490494msgstr ""
491495
po/hr.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2016-05-04 17:52+0000\n"
1212"Last-Translator: gogo <trebelnik2@gmail.com>\n"
1313"Language-Team: Croatian <hr@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
20−"X-Generator: Launchpad (build 18097)\n"
19+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
20+"X-Generator: Launchpad (build 18111)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -36,19 +36,19 @@ msgstr "Zatvori"
3636msgid "Unpin shortcut"
3737msgstr "Ukloni kraticu"
3838
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
4040msgid "Device Locked"
4141msgstr "Uređaj zaključan"
4242
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
4444msgid "You have been locked out due to too many failed passphrase attempts."
4545msgstr "Previše pogrešnih pokušaja otključavanja."
4646
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
4848msgid "You have been locked out due to too many failed passcode attempts."
4949msgstr "Previše pogrešnih pokušaja otključavanja."
5050
51−#: qml/Components/DelayedLockscreen.qml:74
51+#: qml/Components/DelayedLockscreen.qml:75
5252#, qt-format
5353msgid "Please wait %1 minute and then try again…"
5454msgid_plural "Please wait %1 minutes and then try again…"
@@ -281,15 +281,15 @@ msgstr ""
281281msgid "Closes the current window."
282282msgstr ""
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Return to Call"
286286msgstr "Vrati na poziv"
287287
288−#: qml/Components/Lockscreen.qml:231
288+#: qml/Components/Lockscreen.qml:239
289289msgid "Emergency Call"
290290msgstr "Hitni poziv"
291291
292−#: qml/Components/Lockscreen.qml:263
292+#: qml/Components/Lockscreen.qml:271
293293msgid "OK"
294294msgstr "U redu"
295295
@@ -430,10 +430,14 @@ msgstr ""
430430"Vaš uređaj je sada povezan s vanjskim uređajem. Koristite ovaj zaslon kao "
431431"dodirnik za interakciju s pokazivačem."
432432
433−#: qml/Greeter/CoverPage.qml:119
433+#: qml/Greeter/CoverPage.qml:127
434434msgid "Unlock"
435435msgstr "Otključaj"
436436
437+#: qml/Greeter/Greeter.qml:536
438+msgid "Try again"
439+msgstr ""
440+
437441#: qml/Greeter/LoginList.qml:259
438442msgid "Retry"
439443msgstr "Pokušaj ponovno"
@@ -470,34 +474,34 @@ msgstr ""
470474"Ako je netočno upisan kôd, vaš telefon će pokrenuti vraćanje na tvorničke "
471475"postavke i svi osobni podaci biti će obrisani."
472476
473−#: qml/Greeter/NarrowView.qml:116
477+#: qml/Greeter/NarrowView.qml:129
474478#, qt-format
475479msgid "Enter %1"
476480msgstr "Upišite %1"
477481
478−#: qml/Greeter/NarrowView.qml:117
482+#: qml/Greeter/NarrowView.qml:130
479483msgid "Enter passphrase"
480484msgstr "Upišite lozinku"
481485
482−#: qml/Greeter/NarrowView.qml:118
486+#: qml/Greeter/NarrowView.qml:131
483487msgid "Enter passcode"
484488msgstr "Upišite kôd"
485489
486−#: qml/Greeter/NarrowView.qml:119
490+#: qml/Greeter/NarrowView.qml:135
487491#, qt-format
488492msgid "Sorry, incorrect %1"
489493msgstr "Isprika, netočna %1"
490494
491−#: qml/Greeter/NarrowView.qml:120
495+#: qml/Greeter/NarrowView.qml:136
492496msgid "Sorry, incorrect passphrase"
493497msgstr "Isprika, netočna lozinka"
494498
495−#: qml/Greeter/NarrowView.qml:121
499+#: qml/Greeter/NarrowView.qml:137
496500msgctxt "passphrase"
497501msgid "Please re-enter"
498502msgstr "Ponovno upišite"
499503
500−#: qml/Greeter/NarrowView.qml:122
504+#: qml/Greeter/NarrowView.qml:138
501505msgid "Sorry, incorrect passcode"
502506msgstr "Isprika, netočan kôd"
503507
po/hu.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2016-06-20 07:28+0000\n"
1212"Last-Translator: Richard Somlói <ricsipontaz@gmail.com>\n"
1313"Language-Team: Hungarian <hu@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-21 05:59+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "Kilépés"
3535msgid "Unpin shortcut"
3636msgstr "Indító feloldása"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Az eszköz zárolva"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr "A túl sok hibás jelmondat próbálkozás miatt az eszköz zárolva lett."
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr "A túl sok hibás jelkód próbálkozás miatt az eszköz zárolva lett."
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr "Alt + F4"
279279msgid "Closes the current window."
280280msgstr "Az aktuális ablak bezárása."
281281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283283msgid "Return to Call"
284284msgstr "Vissza a híváshoz"
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Emergency Call"
288288msgstr "Segélyhívás"
289289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291291msgid "OK"
292292msgstr "OK"
293293
@@ -428,10 +428,14 @@ msgstr ""
428428"Az eszköz jelenleg egy külső kijelzőhöz van csatlakoztatva. Használja ezt a "
429429"kijelzőt érintőtáblaként, melynek segítéségével irányíthatja a mutatót."
430430
431−#: qml/Greeter/CoverPage.qml:119
431+#: qml/Greeter/CoverPage.qml:127
432432msgid "Unlock"
433433msgstr "Feloldás"
434434
435+#: qml/Greeter/Greeter.qml:536
436+msgid "Try again"
437+msgstr "Próbálja újra"
438+
435439#: qml/Greeter/LoginList.qml:259
436440msgid "Retry"
437441msgstr "Újra"
@@ -468,34 +472,34 @@ msgstr ""
468472"Ha helytelen jelkódot ad meg, a telefonja visszaállítja a gyári "
469473"beállításokat és törli minden személyes adatát."
470474
471−#: qml/Greeter/NarrowView.qml:116
475+#: qml/Greeter/NarrowView.qml:129
472476#, qt-format
473477msgid "Enter %1"
474478msgstr "%1 megadása"
475479
476−#: qml/Greeter/NarrowView.qml:117
480+#: qml/Greeter/NarrowView.qml:130
477481msgid "Enter passphrase"
478482msgstr "Jelmondat megadása"
479483
480−#: qml/Greeter/NarrowView.qml:118
484+#: qml/Greeter/NarrowView.qml:131
481485msgid "Enter passcode"
482486msgstr "Jelkód megadása"
483487
484−#: qml/Greeter/NarrowView.qml:119
488+#: qml/Greeter/NarrowView.qml:135
485489#, qt-format
486490msgid "Sorry, incorrect %1"
487491msgstr "Elnézést, helytelen %1"
488492
489−#: qml/Greeter/NarrowView.qml:120
493+#: qml/Greeter/NarrowView.qml:136
490494msgid "Sorry, incorrect passphrase"
491495msgstr "Elnézést, helytelen jelmondat"
492496
493−#: qml/Greeter/NarrowView.qml:121
497+#: qml/Greeter/NarrowView.qml:137
494498msgctxt "passphrase"
495499msgid "Please re-enter"
496500msgstr "Próbálja újra"
497501
498−#: qml/Greeter/NarrowView.qml:122
502+#: qml/Greeter/NarrowView.qml:138
499503msgid "Sorry, incorrect passcode"
500504msgstr "Elnézést, helytelen jelkód"
501505
po/hy.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2014-10-28 06:34+0000\n"
1212"Last-Translator: Vahan Harutyunyan <Unknown>\n"
1313"Language-Team: Armenian <hy@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,21 +35,21 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr "Հեռացնել պիտակը"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Սարքը արգելափակված է"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545"Գաղտնաբառի բավականին շատ ձախողված փորձերի պատճառով Դուք արգելափակված եք:"
4646
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
4848msgid "You have been locked out due to too many failed passcode attempts."
4949msgstr ""
5050"Ծածկագրի բավականին շատ ձախողված փորձերի պատճառով Դուք արգելափակված եք:"
5151
52−#: qml/Components/DelayedLockscreen.qml:74
52+#: qml/Components/DelayedLockscreen.qml:75
5353#, qt-format
5454msgid "Please wait %1 minute and then try again…"
5555msgid_plural "Please wait %1 minutes and then try again…"
@@ -281,15 +281,15 @@ msgstr ""
281281msgid "Closes the current window."
282282msgstr ""
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Return to Call"
286286msgstr ""
287287
288−#: qml/Components/Lockscreen.qml:231
288+#: qml/Components/Lockscreen.qml:239
289289msgid "Emergency Call"
290290msgstr ""
291291
292−#: qml/Components/Lockscreen.qml:263
292+#: qml/Components/Lockscreen.qml:271
293293msgid "OK"
294294msgstr ""
295295
@@ -426,10 +426,14 @@ msgid ""
426426"touch pad to interact with the pointer."
427427msgstr ""
428428
429−#: qml/Greeter/CoverPage.qml:119
429+#: qml/Greeter/CoverPage.qml:127
430430msgid "Unlock"
431431msgstr "Ապաբլոկավորել"
432432
433+#: qml/Greeter/Greeter.qml:536
434+msgid "Try again"
435+msgstr ""
436+
433437#: qml/Greeter/LoginList.qml:259
434438msgid "Retry"
435439msgstr ""
@@ -462,34 +466,34 @@ msgid ""
462466"and all personal data will be deleted."
463467msgstr ""
464468
465−#: qml/Greeter/NarrowView.qml:116
469+#: qml/Greeter/NarrowView.qml:129
466470#, qt-format
467471msgid "Enter %1"
468472msgstr "Մուտքագրեք %1"
469473
470−#: qml/Greeter/NarrowView.qml:117
474+#: qml/Greeter/NarrowView.qml:130
471475msgid "Enter passphrase"
472476msgstr "Մուտքագրե՛ք անցաբառը"
473477
474−#: qml/Greeter/NarrowView.qml:118
478+#: qml/Greeter/NarrowView.qml:131
475479msgid "Enter passcode"
476480msgstr "Մոտքագրեք ծածկագիրը"
477481
478−#: qml/Greeter/NarrowView.qml:119
482+#: qml/Greeter/NarrowView.qml:135
479483#, qt-format
480484msgid "Sorry, incorrect %1"
481485msgstr "Ներեցեք, սխալ %1"
482486
483−#: qml/Greeter/NarrowView.qml:120
487+#: qml/Greeter/NarrowView.qml:136
484488msgid "Sorry, incorrect passphrase"
485489msgstr "Ներեցեք, սխալ անցաբառ է"
486490
487−#: qml/Greeter/NarrowView.qml:121
491+#: qml/Greeter/NarrowView.qml:137
488492msgctxt "passphrase"
489493msgid "Please re-enter"
490494msgstr ""
491495
492−#: qml/Greeter/NarrowView.qml:122
496+#: qml/Greeter/NarrowView.qml:138
493497msgid "Sorry, incorrect passcode"
494498msgstr "Ներեցեք, սխալ ծածկագիր է"
495499
po/ia.po+67−61
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-08-25 19:31+0000\n"
1212"Last-Translator: karm <melo@carmu.com>\n"
1313"Language-Team: Interlingua <ia@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,21 +35,21 @@ msgstr "Quitar"
3535msgid "Unpin shortcut"
3636msgstr "Via-breve a levar pin"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Dispositivo blocate"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545"Tu ha essite blocate per multe tentativas de phrase-contrasigno fallite."
4646
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
4848msgid "You have been locked out due to too many failed passcode attempts."
4949msgstr ""
5050"Tu ha essite blocate per multe tentativas de codice-contrasigno fallite."
5151
52−#: qml/Components/DelayedLockscreen.qml:74
52+#: qml/Components/DelayedLockscreen.qml:75
5353#, qt-format
5454msgid "Please wait %1 minute and then try again…"
5555msgid_plural "Please wait %1 minutes and then try again…"
@@ -123,173 +123,173 @@ msgstr "Reinitiar"
123123
124124#: qml/Components/KeyboardShortcutsOverlay.qml:41
125125msgid "Keyboard Shortcuts"
126−msgstr ""
126+msgstr "Vias breve del claviero"
127127
128128#: qml/Components/KeyboardShortcutsOverlay.qml:55
129129msgid "Unity 8"
130−msgstr ""
130+msgstr "Unity 8"
131131
132132#: qml/Components/KeyboardShortcutsOverlay.qml:62
133133msgid "PrtScr"
134−msgstr ""
134+msgstr "PrtScr"
135135
136136#: qml/Components/KeyboardShortcutsOverlay.qml:67
137137msgid "Takes a screenshot."
138−msgstr ""
138+msgstr "Prende un imagine instantanee del schermo."
139139
140140#: qml/Components/KeyboardShortcutsOverlay.qml:75
141141msgid "Alt + PrtScr"
142−msgstr ""
142+msgstr "Alt + PrtScr"
143143
144144#: qml/Components/KeyboardShortcutsOverlay.qml:80
145145msgid "Takes a screenshot of a window."
146−msgstr ""
146+msgstr "Prende un imagine instantanee de un fenestra."
147147
148148#: qml/Components/KeyboardShortcutsOverlay.qml:88
149149msgid "Super + Space"
150−msgstr ""
150+msgstr "Super + Space"
151151
152152#: qml/Components/KeyboardShortcutsOverlay.qml:93
153153msgid "Switches to next keyboard layout."
154−msgstr ""
154+msgstr "Excambia al mappa de claviero sequente."
155155
156156#: qml/Components/KeyboardShortcutsOverlay.qml:101
157157msgid "Super + Shift + Space"
158−msgstr ""
158+msgstr "Super + Shift + Space"
159159
160160#: qml/Components/KeyboardShortcutsOverlay.qml:106
161161msgid "Switches to previous keyboard layout."
162−msgstr ""
162+msgstr "Excambia al mappa de claviero precedente."
163163
164164#: qml/Components/KeyboardShortcutsOverlay.qml:118
165165msgid "Launcher"
166−msgstr ""
166+msgstr "Lanceator"
167167
168168#: qml/Components/KeyboardShortcutsOverlay.qml:125
169169msgid "Super (Hold)"
170−msgstr ""
170+msgstr "Super (Hold)"
171171
172172#: qml/Components/KeyboardShortcutsOverlay.qml:130
173173msgid "Opens the launcher, displays shortcuts."
174−msgstr ""
174+msgstr "Aperi le lanceator, monstra le vias breve."
175175
176176#: qml/Components/KeyboardShortcutsOverlay.qml:138
177177msgid "Alt + F1"
178−msgstr ""
178+msgstr "Alt + F1"
179179
180180#: qml/Components/KeyboardShortcutsOverlay.qml:143
181181msgid "Opens launcher keyboard navigation mode."
182−msgstr ""
182+msgstr "Aperi le modo de navigation per le claviero del lanceator."
183183
184184#: qml/Components/KeyboardShortcutsOverlay.qml:151
185185msgid "Super + Tab"
186−msgstr ""
186+msgstr "Super + Tab"
187187
188188#: qml/Components/KeyboardShortcutsOverlay.qml:156
189189msgid "Switches applications via the launcher."
190−msgstr ""
190+msgstr "Excambia le applicationes via le lanceator"
191191
192192#: qml/Components/KeyboardShortcutsOverlay.qml:164
193193msgid "Super + 0 to 9"
194−msgstr ""
194+msgstr "Super + 0 a 9"
195195
196196#: qml/Components/KeyboardShortcutsOverlay.qml:169
197197msgid "Same as clicking on a launcher icon."
198−msgstr ""
198+msgstr "Mesmo que cliccar sur un icone del lanceator."
199199
200200#: qml/Components/KeyboardShortcutsOverlay.qml:181
201201msgid "Scopes"
202−msgstr ""
202+msgstr "Miras"
203203
204204#: qml/Components/KeyboardShortcutsOverlay.qml:188
205205msgid "Super (Tap)"
206−msgstr ""
206+msgstr "Super (Tap)"
207207
208208#: qml/Components/KeyboardShortcutsOverlay.qml:193
209209msgid "Opens the Scopes home."
210−msgstr ""
210+msgstr "Aperi le initio de Scopes."
211211
212212#: qml/Components/KeyboardShortcutsOverlay.qml:209
213213msgid "Switching"
214−msgstr ""
214+msgstr "Commutar"
215215
216216#: qml/Components/KeyboardShortcutsOverlay.qml:216
217217msgid "Alt + Tab"
218−msgstr ""
218+msgstr "Alt + Tab"
219219
220220#: qml/Components/KeyboardShortcutsOverlay.qml:221
221221msgid "Switches between applications."
222−msgstr ""
222+msgstr "Commuta inter le applicationes."
223223
224224#: qml/Components/KeyboardShortcutsOverlay.qml:229
225225msgid "Super + W"
226−msgstr ""
226+msgstr "Super + W"
227227
228228#: qml/Components/KeyboardShortcutsOverlay.qml:234
229229msgid "Opens the desktop spread."
230−msgstr ""
230+msgstr "Aperi le diffusion delscriptorio"
231231
232232#: qml/Components/KeyboardShortcutsOverlay.qml:242
233233msgid "Cursor Left or Right"
234−msgstr ""
234+msgstr "Cursor sinistre o dextre"
235235
236236#: qml/Components/KeyboardShortcutsOverlay.qml:247
237237msgid "Moves the focus."
238−msgstr ""
238+msgstr "Move le foco."
239239
240240#: qml/Components/KeyboardShortcutsOverlay.qml:259
241241msgid "Windows"
242−msgstr ""
242+msgstr "Fenestras"
243243
244244#: qml/Components/KeyboardShortcutsOverlay.qml:266
245245msgid "Ctrl + Super + D"
246−msgstr ""
246+msgstr "Ctrl + Super + D"
247247
248248#: qml/Components/KeyboardShortcutsOverlay.qml:271
249249msgid "Minimizes all windows."
250−msgstr ""
250+msgstr "Minimisa tote le fenestras."
251251
252252#: qml/Components/KeyboardShortcutsOverlay.qml:279
253253msgid "Ctrl + Super + Up"
254−msgstr ""
254+msgstr "Ctrl + Super + Up"
255255
256256#: qml/Components/KeyboardShortcutsOverlay.qml:284
257257msgid "Maximizes the current window."
258−msgstr ""
258+msgstr "Maximisa tote le fenestras."
259259
260260#: qml/Components/KeyboardShortcutsOverlay.qml:292
261261msgid "Ctrl + Super + Down"
262−msgstr ""
262+msgstr "Ctrl + Super + Down"
263263
264264#: qml/Components/KeyboardShortcutsOverlay.qml:297
265265msgid "Minimizes or restores the current window."
266−msgstr ""
266+msgstr "Maximisa o restaura le fenestra actual."
267267
268268#: qml/Components/KeyboardShortcutsOverlay.qml:305
269269msgid "Ctrl + Super + Left or Right"
270−msgstr ""
270+msgstr "Ctrl + Super + Left o Right"
271271
272272#: qml/Components/KeyboardShortcutsOverlay.qml:310
273273msgid "Semi-maximizes the current window."
274−msgstr ""
274+msgstr "Semi-maximisa le fenestra actual."
275275
276276#: qml/Components/KeyboardShortcutsOverlay.qml:318
277277msgid "Alt + F4"
278−msgstr ""
278+msgstr "Alt + F4"
279279
280280#: qml/Components/KeyboardShortcutsOverlay.qml:323
281281msgid "Closes the current window."
282−msgstr ""
282+msgstr "Claude le fenestra actual"
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Return to Call"
286286msgstr "Retornar al appello"
287287
288−#: qml/Components/Lockscreen.qml:231
288+#: qml/Components/Lockscreen.qml:239
289289msgid "Emergency Call"
290290msgstr "Appello de emergentia"
291291
292−#: qml/Components/Lockscreen.qml:263
292+#: qml/Components/Lockscreen.qml:271
293293msgid "OK"
294294msgstr "OK"
295295
@@ -428,17 +428,21 @@ msgstr ""
428428"Tu dispositivo es nunc connexe a un schermo externe. Usa iste schermo como "
429429"pannello tactile pro interager con le punctator."
430430
431−#: qml/Greeter/CoverPage.qml:119
431+#: qml/Greeter/CoverPage.qml:127
432432msgid "Unlock"
433433msgstr "Liberar"
434434
435+#: qml/Greeter/Greeter.qml:536
436+msgid "Try again"
437+msgstr ""
438+
435439#: qml/Greeter/LoginList.qml:259
436440msgid "Retry"
437441msgstr "Re-provar"
438442
439443#: qml/Greeter/LoginList.qml:260
440444msgid "Log In"
441−msgstr ""
445+msgstr "Connecter se"
442446
443447#: qml/Greeter/NarrowView.qml:54
444448msgid "Sorry, incorrect passphrase."
@@ -468,34 +472,34 @@ msgstr ""
468472"Si le codice-contrasigno es inserite incorrectemente, tu telephono conducera "
469473"un prefixation a fabrica e omne le datos personal essera delite."
470474
471−#: qml/Greeter/NarrowView.qml:116
475+#: qml/Greeter/NarrowView.qml:129
472476#, qt-format
473477msgid "Enter %1"
474478msgstr "Inserer %1"
475479
476−#: qml/Greeter/NarrowView.qml:117
480+#: qml/Greeter/NarrowView.qml:130
477481msgid "Enter passphrase"
478482msgstr "Inserer le phrase-contrasigno"
479483
480−#: qml/Greeter/NarrowView.qml:118
484+#: qml/Greeter/NarrowView.qml:131
481485msgid "Enter passcode"
482486msgstr "Inserer le codice-contrasigno"
483487
484−#: qml/Greeter/NarrowView.qml:119
488+#: qml/Greeter/NarrowView.qml:135
485489#, qt-format
486490msgid "Sorry, incorrect %1"
487491msgstr "Displacente, incorrecte %1"
488492
489−#: qml/Greeter/NarrowView.qml:120
493+#: qml/Greeter/NarrowView.qml:136
490494msgid "Sorry, incorrect passphrase"
491495msgstr "Displacente, phrase-contrasigno incorrecte"
492496
493−#: qml/Greeter/NarrowView.qml:121
497+#: qml/Greeter/NarrowView.qml:137
494498msgctxt "passphrase"
495499msgid "Please re-enter"
496500msgstr "Per favor re-insere"
497501
498−#: qml/Greeter/NarrowView.qml:122
502+#: qml/Greeter/NarrowView.qml:138
499503msgid "Sorry, incorrect passcode"
500504msgstr "Displacente, codice-contrasigno incorrecte"
501505
@@ -596,7 +600,7 @@ msgstr "Striar ab le bordo sinistre pro aperir le campo Hodie"
596600
597601#: qml/Tutorial/TutorialLeft.qml:47
598602msgid "Short swipe from the left edge to open the launcher"
599−msgstr ""
603+msgstr "Colpa brevemente ab le bordo sinistre pro aperir le lanceator."
600604
601605#: qml/Tutorial/TutorialRight.qml:55
602606msgid "Push your mouse against the right edge to view your open apps"
@@ -605,11 +609,13 @@ msgstr ""
605609
606610#: qml/Tutorial/TutorialRight.qml:56
607611msgid "Swipe from the right edge to view your open apps"
608−msgstr ""
612+msgstr "Colpa ab le bordo dextre pro aperir le applicationes."
609613
610614#: qml/Tutorial/TutorialTop.qml:53
611615msgid "Swipe from the top edge to access notifications and quick settings"
612616msgstr ""
617+"Colpa ab le bordo superior pro acceder la notificationes e al "
618+"configurationes celere."
613619
614620#: qml/Wizard/Page.qml:54
615621msgctxt "Button: Go back one page in the Wizard"
po/id.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\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"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,21 +35,21 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr "Lepas pintasan"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Perangkat Terkunci"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545"Anda telah terkunci karena terlalu banyak percobaan frasa sandi yang gagal."
4646
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
4848msgid "You have been locked out due to too many failed passcode attempts."
4949msgstr ""
5050"Anda telah terkunci karena terlalu banyak percobaan kode sandi yang gagal."
5151
52−#: qml/Components/DelayedLockscreen.qml:74
52+#: qml/Components/DelayedLockscreen.qml:75
5353#, qt-format
5454msgid "Please wait %1 minute and then try again…"
5555msgid_plural "Please wait %1 minutes and then try again…"
@@ -280,15 +280,15 @@ msgstr ""
280280msgid "Closes the current window."
281281msgstr ""
282282
283−#: qml/Components/Lockscreen.qml:231
283+#: qml/Components/Lockscreen.qml:239
284284msgid "Return to Call"
285285msgstr "Kembali ke Panggilan"
286286
287−#: qml/Components/Lockscreen.qml:231
287+#: qml/Components/Lockscreen.qml:239
288288msgid "Emergency Call"
289289msgstr "Panggilan Darurat"
290290
291−#: qml/Components/Lockscreen.qml:263
291+#: qml/Components/Lockscreen.qml:271
292292msgid "OK"
293293msgstr "OK"
294294
@@ -425,10 +425,14 @@ msgid ""
425425"touch pad to interact with the pointer."
426426msgstr ""
427427
428−#: qml/Greeter/CoverPage.qml:119
428+#: qml/Greeter/CoverPage.qml:127
429429msgid "Unlock"
430430msgstr "Buka kunci"
431431
432+#: qml/Greeter/Greeter.qml:536
433+msgid "Try again"
434+msgstr ""
435+
432436#: qml/Greeter/LoginList.qml:259
433437msgid "Retry"
434438msgstr ""
@@ -465,34 +469,34 @@ msgstr ""
465469"Bila kode sandi salah dimasukkan, telepon Anda akan melakukan reset pabrik "
466470"dan semua data pribadi akan dihapus."
467471
468−#: qml/Greeter/NarrowView.qml:116
472+#: qml/Greeter/NarrowView.qml:129
469473#, qt-format
470474msgid "Enter %1"
471475msgstr "Masukkan %1"
472476
473−#: qml/Greeter/NarrowView.qml:117
477+#: qml/Greeter/NarrowView.qml:130
474478msgid "Enter passphrase"
475479msgstr "Masukkan frasa sandi"
476480
477−#: qml/Greeter/NarrowView.qml:118
481+#: qml/Greeter/NarrowView.qml:131
478482msgid "Enter passcode"
479483msgstr "Masukkan kode sandi"
480484
481−#: qml/Greeter/NarrowView.qml:119
485+#: qml/Greeter/NarrowView.qml:135
482486#, qt-format
483487msgid "Sorry, incorrect %1"
484488msgstr "Maaf, %1 salah"
485489
486−#: qml/Greeter/NarrowView.qml:120
490+#: qml/Greeter/NarrowView.qml:136
487491msgid "Sorry, incorrect passphrase"
488492msgstr "Maaf, frasa sandi salah"
489493
490−#: qml/Greeter/NarrowView.qml:121
494+#: qml/Greeter/NarrowView.qml:137
491495msgctxt "passphrase"
492496msgid "Please re-enter"
493497msgstr ""
494498
495−#: qml/Greeter/NarrowView.qml:122
499+#: qml/Greeter/NarrowView.qml:138
496500msgid "Sorry, incorrect passcode"
497501msgstr "Maaf, kode sandi salah"
498502
po/is.po+22−18
@@ -9,7 +9,7 @@ msgid ""
99msgstr ""
1010"Project-Id-Version: po_unity8-is\n"
1111"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
12−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
12+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1313"PO-Revision-Date: 2014-11-13 09:32+0000\n"
1414"Last-Translator: Sveinn í Felli <sv1@fellsnet.is>\n"
1515"Language-Team: Icelandic <translation-team-is@lists.sourceforge.net>\n"
@@ -17,8 +17,8 @@ msgstr ""
1717"Content-Type: text/plain; charset=UTF-8\n"
1818"Content-Transfer-Encoding: 8bit\n"
1919"Plural-Forms: nplurals=2; plural=n != 1;\n"
20−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
21−"X-Generator: Launchpad (build 18097)\n"
20+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
21+"X-Generator: Launchpad (build 18111)\n"
2222"Language: is\n"
2323
2424#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -38,23 +38,23 @@ msgstr ""
3838msgid "Unpin shortcut"
3939msgstr "Losa flýtilykil"
4040
41−#: qml/Components/DelayedLockscreen.qml:49
41+#: qml/Components/DelayedLockscreen.qml:50
4242msgid "Device Locked"
4343msgstr "Tæki læst"
4444
45−#: qml/Components/DelayedLockscreen.qml:64
45+#: qml/Components/DelayedLockscreen.qml:65
4646msgid "You have been locked out due to too many failed passphrase attempts."
4747msgstr ""
4848"Það er búið að loka á þig vegna of margra tilrauna við innsetningu "
4949"lykilfrasa."
5050
51−#: qml/Components/DelayedLockscreen.qml:65
51+#: qml/Components/DelayedLockscreen.qml:66
5252msgid "You have been locked out due to too many failed passcode attempts."
5353msgstr ""
5454"Það er búið að loka á þig vegna of margra tilrauna við innsetningu "
5555"aðgangskóða."
5656
57−#: qml/Components/DelayedLockscreen.qml:74
57+#: qml/Components/DelayedLockscreen.qml:75
5858#, qt-format
5959msgid "Please wait %1 minute and then try again…"
6060msgid_plural "Please wait %1 minutes and then try again…"
@@ -286,15 +286,15 @@ msgstr ""
286286msgid "Closes the current window."
287287msgstr ""
288288
289−#: qml/Components/Lockscreen.qml:231
289+#: qml/Components/Lockscreen.qml:239
290290msgid "Return to Call"
291291msgstr "Snúa aftur í símtal"
292292
293−#: qml/Components/Lockscreen.qml:231
293+#: qml/Components/Lockscreen.qml:239
294294msgid "Emergency Call"
295295msgstr "Neyðarsímtal"
296296
297−#: qml/Components/Lockscreen.qml:263
297+#: qml/Components/Lockscreen.qml:271
298298msgid "OK"
299299msgstr "Í lagi"
300300
@@ -431,10 +431,14 @@ msgid ""
431431"touch pad to interact with the pointer."
432432msgstr ""
433433
434−#: qml/Greeter/CoverPage.qml:119
434+#: qml/Greeter/CoverPage.qml:127
435435msgid "Unlock"
436436msgstr "Aflæsa"
437437
438+#: qml/Greeter/Greeter.qml:536
439+msgid "Try again"
440+msgstr ""
441+
438442#: qml/Greeter/LoginList.qml:259
439443msgid "Retry"
440444msgstr ""
@@ -471,34 +475,34 @@ msgstr ""
471475"Ef aðgangskóði er rangur, mun síminn frumstilla allt á verksmiðjustillingar "
472476"og öllum einkagögnum verður eytt."
473477
474−#: qml/Greeter/NarrowView.qml:116
478+#: qml/Greeter/NarrowView.qml:129
475479#, qt-format
476480msgid "Enter %1"
477481msgstr "Settu inn %1"
478482
479−#: qml/Greeter/NarrowView.qml:117
483+#: qml/Greeter/NarrowView.qml:130
480484msgid "Enter passphrase"
481485msgstr "Settu inn lykilfrasa"
482486
483−#: qml/Greeter/NarrowView.qml:118
487+#: qml/Greeter/NarrowView.qml:131
484488msgid "Enter passcode"
485489msgstr "Settu inn aðgangskóða"
486490
487−#: qml/Greeter/NarrowView.qml:119
491+#: qml/Greeter/NarrowView.qml:135
488492#, qt-format
489493msgid "Sorry, incorrect %1"
490494msgstr "Því miður, rangt %1"
491495
492−#: qml/Greeter/NarrowView.qml:120
496+#: qml/Greeter/NarrowView.qml:136
493497msgid "Sorry, incorrect passphrase"
494498msgstr "Því miður, rangt lykilorð"
495499
496−#: qml/Greeter/NarrowView.qml:121
500+#: qml/Greeter/NarrowView.qml:137
497501msgctxt "passphrase"
498502msgid "Please re-enter"
499503msgstr ""
500504
501−#: qml/Greeter/NarrowView.qml:122
505+#: qml/Greeter/NarrowView.qml:138
502506msgid "Sorry, incorrect passcode"
503507msgstr "Því miður, rangur aðgangskóði"
504508
po/it.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2016-04-03 16:08+0000\n"
1212"Last-Translator: Milo Casagrande <milo.casagrande@gmail.com>\n"
1313"Language-Team: Italian <it@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,23 +35,23 @@ msgstr "Esci"
3535msgid "Unpin shortcut"
3636msgstr "Sblocca scorciatoia"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Dispositivo bloccato"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545"Utente bloccato a causa di troppi tentativi falliti di inserimento della "
4646"passphrase."
4747
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
4949msgid "You have been locked out due to too many failed passcode attempts."
5050msgstr ""
5151"Utente bloccato a causa di troppo tentativi falliti di inserimento del "
5252"codice."
5353
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
5555#, qt-format
5656msgid "Please wait %1 minute and then try again…"
5757msgid_plural "Please wait %1 minutes and then try again…"
@@ -283,15 +283,15 @@ msgstr ""
283283msgid "Closes the current window."
284284msgstr ""
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Return to Call"
288288msgstr "Torna alla chiamata"
289289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291291msgid "Emergency Call"
292292msgstr "Chiamata di emergenza"
293293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295295msgid "OK"
296296msgstr "OK"
297297
@@ -432,10 +432,14 @@ msgstr ""
432432"Il dispositivo è ora collegato a un display esterno: usare lo schermo come "
433433"un touchpad per interagire con il puntatore."
434434
435−#: qml/Greeter/CoverPage.qml:119
435+#: qml/Greeter/CoverPage.qml:127
436436msgid "Unlock"
437437msgstr "Sblocca"
438438
439+#: qml/Greeter/Greeter.qml:536
440+msgid "Try again"
441+msgstr ""
442+
439443#: qml/Greeter/LoginList.qml:259
440444msgid "Retry"
441445msgstr "Riprova"
@@ -472,34 +476,34 @@ msgstr ""
472476"Se verrà inserito un passcode errato, il telefono eseguirà un ripristino "
473477"delle impostazioni di fabbrica e tutti i dati personali verranno eliminati."
474478
475−#: qml/Greeter/NarrowView.qml:116
479+#: qml/Greeter/NarrowView.qml:129
476480#, qt-format
477481msgid "Enter %1"
478482msgstr "Inserire %1"
479483
480−#: qml/Greeter/NarrowView.qml:117
484+#: qml/Greeter/NarrowView.qml:130
481485msgid "Enter passphrase"
482486msgstr "Inserire passphrase"
483487
484−#: qml/Greeter/NarrowView.qml:118
488+#: qml/Greeter/NarrowView.qml:131
485489msgid "Enter passcode"
486490msgstr "Inserire codice"
487491
488−#: qml/Greeter/NarrowView.qml:119
492+#: qml/Greeter/NarrowView.qml:135
489493#, qt-format
490494msgid "Sorry, incorrect %1"
491495msgstr "%1 non corretto"
492496
493−#: qml/Greeter/NarrowView.qml:120
497+#: qml/Greeter/NarrowView.qml:136
494498msgid "Sorry, incorrect passphrase"
495499msgstr "Passphrase errata"
496500
497−#: qml/Greeter/NarrowView.qml:121
501+#: qml/Greeter/NarrowView.qml:137
498502msgctxt "passphrase"
499503msgid "Please re-enter"
500504msgstr "Inserire nuovamente"
501505
502−#: qml/Greeter/NarrowView.qml:122
506+#: qml/Greeter/NarrowView.qml:138
503507msgid "Sorry, incorrect passcode"
504508msgstr "Passcode non corretto"
505509
po/ja.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-10-05 10:05+0000\n"
1212"Last-Translator: Kentaro Kazuhama <Unknown>\n"
1313"Language-Team: Japanese <ja@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "終了"
3535msgid "Unpin shortcut"
3636msgstr "ショートカットを削除する"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "デバイスをロックしました"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr "パスフレーズの入力失敗が多すぎたため、デバイスをロックしました。"
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr "パスコードの入力失敗が多すぎたため、デバイスをロックしました。"
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -276,15 +276,15 @@ msgstr ""
276276msgid "Closes the current window."
277277msgstr ""
278278
279−#: qml/Components/Lockscreen.qml:231
279+#: qml/Components/Lockscreen.qml:239
280280msgid "Return to Call"
281281msgstr ""
282282
283−#: qml/Components/Lockscreen.qml:231
283+#: qml/Components/Lockscreen.qml:239
284284msgid "Emergency Call"
285285msgstr "緊急通報"
286286
287−#: qml/Components/Lockscreen.qml:263
287+#: qml/Components/Lockscreen.qml:271
288288msgid "OK"
289289msgstr "OK"
290290
@@ -421,10 +421,14 @@ msgid ""
421421"touch pad to interact with the pointer."
422422msgstr ""
423423
424−#: qml/Greeter/CoverPage.qml:119
424+#: qml/Greeter/CoverPage.qml:127
425425msgid "Unlock"
426426msgstr "ロックの解除"
427427
428+#: qml/Greeter/Greeter.qml:536
429+msgid "Try again"
430+msgstr ""
431+
428432#: qml/Greeter/LoginList.qml:259
429433msgid "Retry"
430434msgstr ""
@@ -457,34 +461,34 @@ msgid ""
457461"and all personal data will be deleted."
458462msgstr "パスコードが間違っている場合、ファクトリーリセットを実施し、すべての個人データは削除されます。"
459463
460−#: qml/Greeter/NarrowView.qml:116
464+#: qml/Greeter/NarrowView.qml:129
461465#, qt-format
462466msgid "Enter %1"
463467msgstr "%1 を入力"
464468
465−#: qml/Greeter/NarrowView.qml:117
469+#: qml/Greeter/NarrowView.qml:130
466470msgid "Enter passphrase"
467471msgstr "パスフレーズを入力"
468472
469−#: qml/Greeter/NarrowView.qml:118
473+#: qml/Greeter/NarrowView.qml:131
470474msgid "Enter passcode"
471475msgstr "パスコードを入力"
472476
473−#: qml/Greeter/NarrowView.qml:119
477+#: qml/Greeter/NarrowView.qml:135
474478#, qt-format
475479msgid "Sorry, incorrect %1"
476480msgstr "%1が違います"
477481
478−#: qml/Greeter/NarrowView.qml:120
482+#: qml/Greeter/NarrowView.qml:136
479483msgid "Sorry, incorrect passphrase"
480484msgstr "パスフレーズが違います"
481485
482−#: qml/Greeter/NarrowView.qml:121
486+#: qml/Greeter/NarrowView.qml:137
483487msgctxt "passphrase"
484488msgid "Please re-enter"
485489msgstr ""
486490
487−#: qml/Greeter/NarrowView.qml:122
491+#: qml/Greeter/NarrowView.qml:138
488492msgid "Sorry, incorrect passcode"
489493msgstr "パスコードが違います"
490494
po/km.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2014-08-20 02:48+0000\n"
1212"Last-Translator: Sophea Sok <sksophea@gmail.com>\n"
1313"Language-Team: Khmer <km@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "ចាកចេញ"
3535msgid "Unpin shortcut"
3636msgstr "មិន​ភ្ជាប់ផ្លូវកាត់"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr ""
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr ""
279279msgid "Closes the current window."
280280msgstr ""
281281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283283msgid "Return to Call"
284284msgstr ""
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Emergency Call"
288288msgstr "ការ​ហៅ​ពេល​អាសន្ន"
289289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291291msgid "OK"
292292msgstr "យល់ព្រម"
293293
@@ -424,10 +424,14 @@ msgid ""
424424"touch pad to interact with the pointer."
425425msgstr ""
426426
427−#: qml/Greeter/CoverPage.qml:119
427+#: qml/Greeter/CoverPage.qml:127
428428msgid "Unlock"
429429msgstr "ដោះ​សោ"
430430
431+#: qml/Greeter/Greeter.qml:536
432+msgid "Try again"
433+msgstr ""
434+
431435#: qml/Greeter/LoginList.qml:259
432436msgid "Retry"
433437msgstr "ព្យាយាម​ម្ដងទៀត"
@@ -466,34 +470,34 @@ msgstr ""
466470"ទូរស័ព្ទ​របស់​អ្នក​នឹង​កំណត់​ទៅ​ទិន្នន័យ​ពី​រោងចក្រ​វិញ "
467471"ហើយ​ទិន្នន័យ​ផ្ទាល់ខ្លួន​ទាំងអស់​របស់​អ្នក​នឹង​ត្រូវ​បាន​លុប។"
468472
469−#: qml/Greeter/NarrowView.qml:116
473+#: qml/Greeter/NarrowView.qml:129
470474#, qt-format
471475msgid "Enter %1"
472476msgstr ""
473477
474−#: qml/Greeter/NarrowView.qml:117
478+#: qml/Greeter/NarrowView.qml:130
475479msgid "Enter passphrase"
476480msgstr ""
477481
478−#: qml/Greeter/NarrowView.qml:118
482+#: qml/Greeter/NarrowView.qml:131
479483msgid "Enter passcode"
480484msgstr ""
481485
482−#: qml/Greeter/NarrowView.qml:119
486+#: qml/Greeter/NarrowView.qml:135
483487#, qt-format
484488msgid "Sorry, incorrect %1"
485489msgstr "សូមទោស! %1 មិន​ត្រឹមត្រូវ"
486490
487−#: qml/Greeter/NarrowView.qml:120
491+#: qml/Greeter/NarrowView.qml:136
488492msgid "Sorry, incorrect passphrase"
489493msgstr "សូមទោស! ឃ្លា​សម្ងាត់​មិន​ត្រឹមត្រូវ"
490494
491−#: qml/Greeter/NarrowView.qml:121
495+#: qml/Greeter/NarrowView.qml:137
492496msgctxt "passphrase"
493497msgid "Please re-enter"
494498msgstr ""
495499
496−#: qml/Greeter/NarrowView.qml:122
500+#: qml/Greeter/NarrowView.qml:138
497501msgid "Sorry, incorrect passcode"
498502msgstr "សូមទោស! កូដ​សម្ងាត់​មិន​ត្រឹមត្រូវ"
499503
po/kn.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\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"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr ""
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr ""
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277277msgid "Closes the current window."
278278msgstr ""
279279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281281msgid "Return to Call"
282282msgstr ""
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Emergency Call"
286286msgstr ""
287287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289289msgid "OK"
290290msgstr ""
291291
@@ -422,10 +422,14 @@ msgid ""
422422"touch pad to interact with the pointer."
423423msgstr ""
424424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426426msgid "Unlock"
427427msgstr ""
428428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429433#: qml/Greeter/LoginList.qml:259
430434msgid "Retry"
431435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458462"and all personal data will be deleted."
459463msgstr ""
460464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462466#, qt-format
463467msgid "Enter %1"
464468msgstr ""
465469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467471msgid "Enter passphrase"
468472msgstr ""
469473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471475msgid "Enter passcode"
472476msgstr ""
473477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475479#, qt-format
476480msgid "Sorry, incorrect %1"
477481msgstr ""
478482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480484msgid "Sorry, incorrect passphrase"
481485msgstr ""
482486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484488msgctxt "passphrase"
485489msgid "Please re-enter"
486490msgstr ""
487491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489493msgid "Sorry, incorrect passcode"
490494msgstr ""
491495
po/ko.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\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"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "끝내기"
3535msgid "Unpin shortcut"
3636msgstr "바로 가기를 고정 해제"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "장치가 잠김"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr "올바르지 않은 암호문을 너무 많이 입력해 장치가 잠겼습니다."
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr "올바르지 않은 패스코드를 너무 많이 입력해 장치가 잠겼습니다."
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -276,15 +276,15 @@ msgstr ""
276276msgid "Closes the current window."
277277msgstr ""
278278
279−#: qml/Components/Lockscreen.qml:231
279+#: qml/Components/Lockscreen.qml:239
280280msgid "Return to Call"
281281msgstr "다시 전화하기"
282282
283−#: qml/Components/Lockscreen.qml:231
283+#: qml/Components/Lockscreen.qml:239
284284msgid "Emergency Call"
285285msgstr "긴급 통화"
286286
287−#: qml/Components/Lockscreen.qml:263
287+#: qml/Components/Lockscreen.qml:271
288288msgid "OK"
289289msgstr "확인"
290290
@@ -421,10 +421,14 @@ msgid ""
421421"touch pad to interact with the pointer."
422422msgstr "장치를 외부 디스플레이에 연결했습니다. 포인터를 사용하려면 화면을 터치 패드로 사용해주십시오."
423423
424−#: qml/Greeter/CoverPage.qml:119
424+#: qml/Greeter/CoverPage.qml:127
425425msgid "Unlock"
426426msgstr "잠금 해제"
427427
428+#: qml/Greeter/Greeter.qml:536
429+msgid "Try again"
430+msgstr ""
431+
428432#: qml/Greeter/LoginList.qml:259
429433msgid "Retry"
430434msgstr "다시 시도"
@@ -457,34 +461,34 @@ msgid ""
457461"and all personal data will be deleted."
458462msgstr "이번에도 올바르지 않은 패스코드를 입력하면 휴대 전화를 공장 초기화하여 모든 개인 정보를 삭제합니다."
459463
460−#: qml/Greeter/NarrowView.qml:116
464+#: qml/Greeter/NarrowView.qml:129
461465#, qt-format
462466msgid "Enter %1"
463467msgstr "%1 입력"
464468
465−#: qml/Greeter/NarrowView.qml:117
469+#: qml/Greeter/NarrowView.qml:130
466470msgid "Enter passphrase"
467471msgstr "암호문을 입력해주십시오."
468472
469−#: qml/Greeter/NarrowView.qml:118
473+#: qml/Greeter/NarrowView.qml:131
470474msgid "Enter passcode"
471475msgstr "패스코드를 입력해주십시오."
472476
473−#: qml/Greeter/NarrowView.qml:119
477+#: qml/Greeter/NarrowView.qml:135
474478#, qt-format
475479msgid "Sorry, incorrect %1"
476480msgstr "죄송합니다. %1이(가) 올바르지 않습니다."
477481
478−#: qml/Greeter/NarrowView.qml:120
482+#: qml/Greeter/NarrowView.qml:136
479483msgid "Sorry, incorrect passphrase"
480484msgstr "죄송합니다. 암호문일 올바르지 않습니다."
481485
482−#: qml/Greeter/NarrowView.qml:121
486+#: qml/Greeter/NarrowView.qml:137
483487msgctxt "passphrase"
484488msgid "Please re-enter"
485489msgstr "다시 입력해주십시오."
486490
487−#: qml/Greeter/NarrowView.qml:122
491+#: qml/Greeter/NarrowView.qml:138
488492msgid "Sorry, incorrect passcode"
489493msgstr "죄송합니다. 패스코드가 올바르지 않습니다."
490494
po/ku.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2014-09-10 13:14+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Kurdish <ku@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr "Derzîdanka kurteriyê rake"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr ""
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr ""
279279msgid "Closes the current window."
280280msgstr ""
281281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283283msgid "Return to Call"
284284msgstr ""
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Emergency Call"
288288msgstr "Lêgerîna Lezgîn"
289289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291291msgid "OK"
292292msgstr "BAŞ E"
293293
@@ -424,10 +424,14 @@ msgid ""
424424"touch pad to interact with the pointer."
425425msgstr ""
426426
427−#: qml/Greeter/CoverPage.qml:119
427+#: qml/Greeter/CoverPage.qml:127
428428msgid "Unlock"
429429msgstr ""
430430
431+#: qml/Greeter/Greeter.qml:536
432+msgid "Try again"
433+msgstr ""
434+
431435#: qml/Greeter/LoginList.qml:259
432436msgid "Retry"
433437msgstr ""
@@ -464,34 +468,34 @@ msgstr ""
464468"Eger parola çewt bê nivîsandin, telefona te dê vegere eyarên fabrîkayê û "
465469"hemû daneyên te yên taybet dê bên jêbirin."
466470
467−#: qml/Greeter/NarrowView.qml:116
471+#: qml/Greeter/NarrowView.qml:129
468472#, qt-format
469473msgid "Enter %1"
470474msgstr ""
471475
472−#: qml/Greeter/NarrowView.qml:117
476+#: qml/Greeter/NarrowView.qml:130
473477msgid "Enter passphrase"
474478msgstr ""
475479
476−#: qml/Greeter/NarrowView.qml:118
480+#: qml/Greeter/NarrowView.qml:131
477481msgid "Enter passcode"
478482msgstr ""
479483
480−#: qml/Greeter/NarrowView.qml:119
484+#: qml/Greeter/NarrowView.qml:135
481485#, qt-format
482486msgid "Sorry, incorrect %1"
483487msgstr "Bibore, %1 çewt e"
484488
485−#: qml/Greeter/NarrowView.qml:120
489+#: qml/Greeter/NarrowView.qml:136
486490msgid "Sorry, incorrect passphrase"
487491msgstr "Bibore, parola çewt e"
488492
489−#: qml/Greeter/NarrowView.qml:121
493+#: qml/Greeter/NarrowView.qml:137
490494msgctxt "passphrase"
491495msgid "Please re-enter"
492496msgstr ""
493497
494−#: qml/Greeter/NarrowView.qml:122
498+#: qml/Greeter/NarrowView.qml:138
495499msgid "Sorry, incorrect passcode"
496500msgstr "Bibore, parola çewrt e"
497501
po/ky.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2013-06-27 06:17+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Kirghiz <ky@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr ""
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr ""
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277277msgid "Closes the current window."
278278msgstr ""
279279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281281msgid "Return to Call"
282282msgstr ""
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Emergency Call"
286286msgstr ""
287287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289289msgid "OK"
290290msgstr ""
291291
@@ -422,10 +422,14 @@ msgid ""
422422"touch pad to interact with the pointer."
423423msgstr ""
424424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426426msgid "Unlock"
427427msgstr ""
428428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429433#: qml/Greeter/LoginList.qml:259
430434msgid "Retry"
431435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458462"and all personal data will be deleted."
459463msgstr ""
460464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462466#, qt-format
463467msgid "Enter %1"
464468msgstr ""
465469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467471msgid "Enter passphrase"
468472msgstr ""
469473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471475msgid "Enter passcode"
472476msgstr ""
473477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475479#, qt-format
476480msgid "Sorry, incorrect %1"
477481msgstr ""
478482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480484msgid "Sorry, incorrect passphrase"
481485msgstr ""
482486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484488msgctxt "passphrase"
485489msgid "Please re-enter"
486490msgstr ""
487491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489493msgid "Sorry, incorrect passcode"
490494msgstr ""
491495
po/lo.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2013-10-02 10:00+0000\n"
1212"Last-Translator: Anousak <anousak@gmail.com>\n"
1313"Language-Team: Lao <lo@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr ""
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr ""
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277277msgid "Closes the current window."
278278msgstr ""
279279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281281msgid "Return to Call"
282282msgstr ""
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Emergency Call"
286286msgstr ""
287287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289289msgid "OK"
290290msgstr ""
291291
@@ -422,10 +422,14 @@ msgid ""
422422"touch pad to interact with the pointer."
423423msgstr ""
424424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426426msgid "Unlock"
427427msgstr ""
428428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429433#: qml/Greeter/LoginList.qml:259
430434msgid "Retry"
431435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458462"and all personal data will be deleted."
459463msgstr ""
460464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462466#, qt-format
463467msgid "Enter %1"
464468msgstr ""
465469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467471msgid "Enter passphrase"
468472msgstr ""
469473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471475msgid "Enter passcode"
472476msgstr ""
473477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475479#, qt-format
476480msgid "Sorry, incorrect %1"
477481msgstr ""
478482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480484msgid "Sorry, incorrect passphrase"
481485msgstr ""
482486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484488msgctxt "passphrase"
485489msgid "Please re-enter"
486490msgstr ""
487491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489493msgid "Sorry, incorrect passcode"
490494msgstr ""
491495
po/lt.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2014-05-19 17:15+0000\n"
1212"Last-Translator: Mantas Kriaučiūnas <mantas@akl.lt>\n"
1313"Language-Team: Lithuanian <lt@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"(n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
20−"X-Generator: Launchpad (build 18097)\n"
19+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
20+"X-Generator: Launchpad (build 18111)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -36,19 +36,19 @@ msgstr ""
3636msgid "Unpin shortcut"
3737msgstr ""
3838
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
4040msgid "Device Locked"
4141msgstr ""
4242
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
4444msgid "You have been locked out due to too many failed passphrase attempts."
4545msgstr ""
4646
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
4848msgid "You have been locked out due to too many failed passcode attempts."
4949msgstr ""
5050
51−#: qml/Components/DelayedLockscreen.qml:74
51+#: qml/Components/DelayedLockscreen.qml:75
5252#, qt-format
5353msgid "Please wait %1 minute and then try again…"
5454msgid_plural "Please wait %1 minutes and then try again…"
@@ -278,15 +278,15 @@ msgstr ""
278278msgid "Closes the current window."
279279msgstr ""
280280
281−#: qml/Components/Lockscreen.qml:231
281+#: qml/Components/Lockscreen.qml:239
282282msgid "Return to Call"
283283msgstr ""
284284
285−#: qml/Components/Lockscreen.qml:231
285+#: qml/Components/Lockscreen.qml:239
286286msgid "Emergency Call"
287287msgstr "Pagalbos skambutis"
288288
289−#: qml/Components/Lockscreen.qml:263
289+#: qml/Components/Lockscreen.qml:271
290290msgid "OK"
291291msgstr ""
292292
@@ -423,10 +423,14 @@ msgid ""
423423"touch pad to interact with the pointer."
424424msgstr ""
425425
426−#: qml/Greeter/CoverPage.qml:119
426+#: qml/Greeter/CoverPage.qml:127
427427msgid "Unlock"
428428msgstr ""
429429
430+#: qml/Greeter/Greeter.qml:536
431+msgid "Try again"
432+msgstr ""
433+
430434#: qml/Greeter/LoginList.qml:259
431435msgid "Retry"
432436msgstr ""
@@ -459,34 +463,34 @@ msgid ""
459463"and all personal data will be deleted."
460464msgstr ""
461465
462−#: qml/Greeter/NarrowView.qml:116
466+#: qml/Greeter/NarrowView.qml:129
463467#, qt-format
464468msgid "Enter %1"
465469msgstr ""
466470
467−#: qml/Greeter/NarrowView.qml:117
471+#: qml/Greeter/NarrowView.qml:130
468472msgid "Enter passphrase"
469473msgstr ""
470474
471−#: qml/Greeter/NarrowView.qml:118
475+#: qml/Greeter/NarrowView.qml:131
472476msgid "Enter passcode"
473477msgstr ""
474478
475−#: qml/Greeter/NarrowView.qml:119
479+#: qml/Greeter/NarrowView.qml:135
476480#, qt-format
477481msgid "Sorry, incorrect %1"
478482msgstr ""
479483
480−#: qml/Greeter/NarrowView.qml:120
484+#: qml/Greeter/NarrowView.qml:136
481485msgid "Sorry, incorrect passphrase"
482486msgstr ""
483487
484−#: qml/Greeter/NarrowView.qml:121
488+#: qml/Greeter/NarrowView.qml:137
485489msgctxt "passphrase"
486490msgid "Please re-enter"
487491msgstr ""
488492
489−#: qml/Greeter/NarrowView.qml:122
493+#: qml/Greeter/NarrowView.qml:138
490494msgid "Sorry, incorrect passcode"
491495msgstr ""
492496
po/lv.po+22−18
@@ -8,7 +8,7 @@ msgid ""
88msgstr ""
99"Project-Id-Version: unity\n"
1010"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
11+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1212"PO-Revision-Date: 2015-11-22 19:13+0000\n"
1313"Last-Translator: Klavs Anson <anson.klavs@gmail.com>\n"
1414"Language-Team: Latvian <lata-l10n@googlegroups.com>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Type: text/plain; charset=UTF-8\n"
1717"Content-Transfer-Encoding: 8bit\n"
1818"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
20−"X-Generator: Launchpad (build 18097)\n"
19+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
20+"X-Generator: Launchpad (build 18111)\n"
2121"Language: lv\n"
2222
2323#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -37,19 +37,19 @@ msgstr "Iziet"
3737msgid "Unpin shortcut"
3838msgstr "Noņemt īsceļu"
3939
40−#: qml/Components/DelayedLockscreen.qml:49
40+#: qml/Components/DelayedLockscreen.qml:50
4141msgid "Device Locked"
4242msgstr "Ierīce bloķēta"
4343
44−#: qml/Components/DelayedLockscreen.qml:64
44+#: qml/Components/DelayedLockscreen.qml:65
4545msgid "You have been locked out due to too many failed passphrase attempts."
4646msgstr "Bloķēts, jo pārāk bieži kļūdaini ievadījāt paroli."
4747
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
4949msgid "You have been locked out due to too many failed passcode attempts."
5050msgstr "Bloķēts, jo pārāk bieži kļūdaini ievadījāt piekļuves kodu."
5151
52−#: qml/Components/DelayedLockscreen.qml:74
52+#: qml/Components/DelayedLockscreen.qml:75
5353#, qt-format
5454msgid "Please wait %1 minute and then try again…"
5555msgid_plural "Please wait %1 minutes and then try again…"
@@ -282,15 +282,15 @@ msgstr ""
282282msgid "Closes the current window."
283283msgstr ""
284284
285−#: qml/Components/Lockscreen.qml:231
285+#: qml/Components/Lockscreen.qml:239
286286msgid "Return to Call"
287287msgstr "Atgriezties pie zvana"
288288
289−#: qml/Components/Lockscreen.qml:231
289+#: qml/Components/Lockscreen.qml:239
290290msgid "Emergency Call"
291291msgstr "Ārkārtas situācijas zvans"
292292
293−#: qml/Components/Lockscreen.qml:263
293+#: qml/Components/Lockscreen.qml:271
294294msgid "OK"
295295msgstr "Labi"
296296
@@ -427,10 +427,14 @@ msgid ""
427427"touch pad to interact with the pointer."
428428msgstr ""
429429
430−#: qml/Greeter/CoverPage.qml:119
430+#: qml/Greeter/CoverPage.qml:127
431431msgid "Unlock"
432432msgstr "Atbloķēt"
433433
434+#: qml/Greeter/Greeter.qml:536
435+msgid "Try again"
436+msgstr ""
437+
434438#: qml/Greeter/LoginList.qml:259
435439msgid "Retry"
436440msgstr "Mēģināt vēlreiz"
@@ -467,34 +471,34 @@ msgstr ""
467471"Ja piekļuves kods netiks pareizi ievadīts, jūsu tālrunis tiks atstatīts uz "
468472"rūpnīcas iestatījumiem un visa personīgā informācija tiks izdzēsta."
469473
470−#: qml/Greeter/NarrowView.qml:116
474+#: qml/Greeter/NarrowView.qml:129
471475#, qt-format
472476msgid "Enter %1"
473477msgstr "Ievadiet %1"
474478
475−#: qml/Greeter/NarrowView.qml:117
479+#: qml/Greeter/NarrowView.qml:130
476480msgid "Enter passphrase"
477481msgstr "Ievadiet paroli"
478482
479−#: qml/Greeter/NarrowView.qml:118
483+#: qml/Greeter/NarrowView.qml:131
480484msgid "Enter passcode"
481485msgstr "Ievadiet piekļuves kodu"
482486
483−#: qml/Greeter/NarrowView.qml:119
487+#: qml/Greeter/NarrowView.qml:135
484488#, qt-format
485489msgid "Sorry, incorrect %1"
486490msgstr "Piedodiet, nepareizs %1"
487491
488−#: qml/Greeter/NarrowView.qml:120
492+#: qml/Greeter/NarrowView.qml:136
489493msgid "Sorry, incorrect passphrase"
490494msgstr "Piedodiet, nepareiza parole"
491495
492−#: qml/Greeter/NarrowView.qml:121
496+#: qml/Greeter/NarrowView.qml:137
493497msgctxt "passphrase"
494498msgid "Please re-enter"
495499msgstr "Ievadiet vēlreiz"
496500
497−#: qml/Greeter/NarrowView.qml:122
501+#: qml/Greeter/NarrowView.qml:138
498502msgid "Sorry, incorrect passcode"
499503msgstr "Piedodiet, nepareizs piekļuves kods"
500504
po/ml.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2013-11-23 11:44+0000\n"
1212"Last-Translator: ST Alfas <Unknown>\n"
1313"Language-Team: Malayalam <ml@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr ""
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr ""
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277277msgid "Closes the current window."
278278msgstr ""
279279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281281msgid "Return to Call"
282282msgstr ""
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Emergency Call"
286286msgstr "അടിയന്തിര വിളി"
287287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289289msgid "OK"
290290msgstr ""
291291
@@ -422,10 +422,14 @@ msgid ""
422422"touch pad to interact with the pointer."
423423msgstr ""
424424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426426msgid "Unlock"
427427msgstr ""
428428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429433#: qml/Greeter/LoginList.qml:259
430434msgid "Retry"
431435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458462"and all personal data will be deleted."
459463msgstr ""
460464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462466#, qt-format
463467msgid "Enter %1"
464468msgstr ""
465469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467471msgid "Enter passphrase"
468472msgstr ""
469473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471475msgid "Enter passcode"
472476msgstr ""
473477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475479#, qt-format
476480msgid "Sorry, incorrect %1"
477481msgstr ""
478482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480484msgid "Sorry, incorrect passphrase"
481485msgstr ""
482486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484488msgctxt "passphrase"
485489msgid "Please re-enter"
486490msgstr ""
487491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489493msgid "Sorry, incorrect passcode"
490494msgstr ""
491495
po/mr.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2014-01-14 19:54+0000\n"
1212"Last-Translator: Rohan Deshmukh <Unknown>\n"
1313"Language-Team: Marathi <mr@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr ""
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr ""
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277277msgid "Closes the current window."
278278msgstr ""
279279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281281msgid "Return to Call"
282282msgstr ""
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Emergency Call"
286286msgstr ""
287287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289289msgid "OK"
290290msgstr ""
291291
@@ -422,10 +422,14 @@ msgid ""
422422"touch pad to interact with the pointer."
423423msgstr ""
424424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426426msgid "Unlock"
427427msgstr ""
428428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429433#: qml/Greeter/LoginList.qml:259
430434msgid "Retry"
431435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458462"and all personal data will be deleted."
459463msgstr ""
460464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462466#, qt-format
463467msgid "Enter %1"
464468msgstr ""
465469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467471msgid "Enter passphrase"
468472msgstr ""
469473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471475msgid "Enter passcode"
472476msgstr ""
473477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475479#, qt-format
476480msgid "Sorry, incorrect %1"
477481msgstr ""
478482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480484msgid "Sorry, incorrect passphrase"
481485msgstr ""
482486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484488msgctxt "passphrase"
485489msgid "Please re-enter"
486490msgstr ""
487491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489493msgid "Sorry, incorrect passcode"
490494msgstr ""
491495
po/ms.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2016-05-24 01:36+0000\n"
1212"Last-Translator: abuyop <Unknown>\n"
1313"Language-Team: Malay <ms@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,21 +35,21 @@ msgstr "Keluar"
3535msgid "Unpin shortcut"
3636msgstr "Nyahcemat pintasan"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Peranti Dikunci"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545"Anda telah dikunci kerana terlalu banyak percubaan frasa laluan yang gagal."
4646
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
4848msgid "You have been locked out due to too many failed passcode attempts."
4949msgstr ""
5050"Anda telah dikunci kerana terlalu banyak percubaan kod laluan yang gagal."
5151
52−#: qml/Components/DelayedLockscreen.qml:74
52+#: qml/Components/DelayedLockscreen.qml:75
5353#, qt-format
5454msgid "Please wait %1 minute and then try again…"
5555msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr ""
279279msgid "Closes the current window."
280280msgstr ""
281281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283283msgid "Return to Call"
284284msgstr "Kembali ke Panggilan"
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Emergency Call"
288288msgstr "Panggilan Kecemasan"
289289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291291msgid "OK"
292292msgstr "OK"
293293
@@ -426,10 +426,14 @@ msgstr ""
426426"Peranti anda kini bersambung dengan paparan luar. Guna skrin ini sebagai pad "
427427"sentuh untuk berinteraksi dengan penuding."
428428
429−#: qml/Greeter/CoverPage.qml:119
429+#: qml/Greeter/CoverPage.qml:127
430430msgid "Unlock"
431431msgstr "Buka"
432432
433+#: qml/Greeter/Greeter.qml:536
434+msgid "Try again"
435+msgstr ""
436+
433437#: qml/Greeter/LoginList.qml:259
434438msgid "Retry"
435439msgstr "Cuba Lagi"
@@ -466,34 +470,34 @@ msgstr ""
466470"Jika kod laluan masih salah, telefon anda akan membuat tetapan semula kilang "
467471"dan semua data peribadi anda akan dipadam."
468472
469−#: qml/Greeter/NarrowView.qml:116
473+#: qml/Greeter/NarrowView.qml:129
470474#, qt-format
471475msgid "Enter %1"
472476msgstr "Masuk %1"
473477
474−#: qml/Greeter/NarrowView.qml:117
478+#: qml/Greeter/NarrowView.qml:130
475479msgid "Enter passphrase"
476480msgstr "Masukkan frasa laluan"
477481
478−#: qml/Greeter/NarrowView.qml:118
482+#: qml/Greeter/NarrowView.qml:131
479483msgid "Enter passcode"
480484msgstr "Masukkan kod laluan"
481485
482−#: qml/Greeter/NarrowView.qml:119
486+#: qml/Greeter/NarrowView.qml:135
483487#, qt-format
484488msgid "Sorry, incorrect %1"
485489msgstr "Maaf, %1 salah"
486490
487−#: qml/Greeter/NarrowView.qml:120
491+#: qml/Greeter/NarrowView.qml:136
488492msgid "Sorry, incorrect passphrase"
489493msgstr "Maaf, frasa laluan salah"
490494
491−#: qml/Greeter/NarrowView.qml:121
495+#: qml/Greeter/NarrowView.qml:137
492496msgctxt "passphrase"
493497msgid "Please re-enter"
494498msgstr "Sila masukkan-semula"
495499
496−#: qml/Greeter/NarrowView.qml:122
500+#: qml/Greeter/NarrowView.qml:138
497501msgid "Sorry, incorrect passcode"
498502msgstr "Maaf, kod laluan salah"
499503
po/my.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2013-12-12 11:12+0000\n"
1212"Last-Translator: Pyae Sone <Unknown>\n"
1313"Language-Team: Burmese <my@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr ""
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr ""
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277277msgid "Closes the current window."
278278msgstr ""
279279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281281msgid "Return to Call"
282282msgstr ""
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Emergency Call"
286286msgstr "အရေးပေါ်ခေါ်မည်"
287287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289289msgid "OK"
290290msgstr "ကောင်းပြီ"
291291
@@ -422,10 +422,14 @@ msgid ""
422422"touch pad to interact with the pointer."
423423msgstr ""
424424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426426msgid "Unlock"
427427msgstr ""
428428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429433#: qml/Greeter/LoginList.qml:259
430434msgid "Retry"
431435msgstr "ထပ်ကြိုးစားပါ"
@@ -458,34 +462,34 @@ msgid ""
458462"and all personal data will be deleted."
459463msgstr ""
460464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462466#, qt-format
463467msgid "Enter %1"
464468msgstr ""
465469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467471msgid "Enter passphrase"
468472msgstr ""
469473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471475msgid "Enter passcode"
472476msgstr ""
473477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475479#, qt-format
476480msgid "Sorry, incorrect %1"
477481msgstr ""
478482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480484msgid "Sorry, incorrect passphrase"
481485msgstr ""
482486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484488msgctxt "passphrase"
485489msgid "Please re-enter"
486490msgstr ""
487491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489493msgid "Sorry, incorrect passcode"
490494msgstr ""
491495
po/nb.po+21−17
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2016-06-21 10:21+0000\n"
1212"Last-Translator: Åka Sikrom <Unknown>\n"
1313"Language-Team: Norwegian Bokmal <nb@li.org>\n"
@@ -15,7 +15,7 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-22 06:06+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
1919"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -35,21 +35,21 @@ msgstr "Avslutt"
3535msgid "Unpin shortcut"
3636msgstr "Fjern snarvei"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Enheten er låst"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545"Du har skrevet inn feil passordfrase for mange ganger, og er derfor "
4646"utestengt."
4747
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
4949msgid "You have been locked out due to too many failed passcode attempts."
5050msgstr "Du har tastet feil kode for mange ganger, og er derfor utestengt."
5151
52−#: qml/Components/DelayedLockscreen.qml:74
52+#: qml/Components/DelayedLockscreen.qml:75
5353#, qt-format
5454msgid "Please wait %1 minute and then try again…"
5555msgid_plural "Please wait %1 minutes and then try again…"
@@ -281,15 +281,15 @@ msgstr "Alt + F4"
281281msgid "Closes the current window."
282282msgstr "Lukker gjeldende vindu."
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Return to Call"
286286msgstr "Tilbake til samtale"
287287
288−#: qml/Components/Lockscreen.qml:231
288+#: qml/Components/Lockscreen.qml:239
289289msgid "Emergency Call"
290290msgstr "Nødanrop"
291291
292−#: qml/Components/Lockscreen.qml:263
292+#: qml/Components/Lockscreen.qml:271
293293msgid "OK"
294294msgstr "OK"
295295
@@ -430,10 +430,14 @@ msgstr ""
430430"Enheten er nå koblet til en ekstern skjerm. Bruk denne skjermen som en "
431431"pekeplate for å styre pekeren."
432432
433−#: qml/Greeter/CoverPage.qml:119
433+#: qml/Greeter/CoverPage.qml:127
434434msgid "Unlock"
435435msgstr "Lås opp"
436436
437+#: qml/Greeter/Greeter.qml:536
438+msgid "Try again"
439+msgstr ""
440+
437441#: qml/Greeter/LoginList.qml:259
438442msgid "Retry"
439443msgstr "Prøv igjen"
@@ -470,34 +474,34 @@ msgstr ""
470474"Hvis du skriver feil kode en gang til, tilbakestilles telefonen til "
471475"fabrikkinnstillinger, og alle personlige data slettes."
472476
473−#: qml/Greeter/NarrowView.qml:116
477+#: qml/Greeter/NarrowView.qml:129
474478#, qt-format
475479msgid "Enter %1"
476480msgstr "Skriv inn %1"
477481
478−#: qml/Greeter/NarrowView.qml:117
482+#: qml/Greeter/NarrowView.qml:130
479483msgid "Enter passphrase"
480484msgstr "Skriv inn passordfrase"
481485
482−#: qml/Greeter/NarrowView.qml:118
486+#: qml/Greeter/NarrowView.qml:131
483487msgid "Enter passcode"
484488msgstr "Tast kode"
485489
486−#: qml/Greeter/NarrowView.qml:119
490+#: qml/Greeter/NarrowView.qml:135
487491#, qt-format
488492msgid "Sorry, incorrect %1"
489493msgstr "Feil %1"
490494
491−#: qml/Greeter/NarrowView.qml:120
495+#: qml/Greeter/NarrowView.qml:136
492496msgid "Sorry, incorrect passphrase"
493497msgstr "Feil passordfrase"
494498
495−#: qml/Greeter/NarrowView.qml:121
499+#: qml/Greeter/NarrowView.qml:137
496500msgctxt "passphrase"
497501msgid "Please re-enter"
498502msgstr "Skriv inn på nytt"
499503
500−#: qml/Greeter/NarrowView.qml:122
504+#: qml/Greeter/NarrowView.qml:138
501505msgid "Sorry, incorrect passcode"
502506msgstr "Feil kode"
503507
po/ne.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-12-06 15:11+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Nepali <ne@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "बन्द गर्नुहोस्"
3535msgid "Unpin shortcut"
3636msgstr ""
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr ""
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277277msgid "Closes the current window."
278278msgstr ""
279279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281281msgid "Return to Call"
282282msgstr ""
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Emergency Call"
286286msgstr ""
287287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289289msgid "OK"
290290msgstr "ठीक छ"
291291
@@ -422,10 +422,14 @@ msgid ""
422422"touch pad to interact with the pointer."
423423msgstr ""
424424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426426msgid "Unlock"
427427msgstr "ताल्चा खोल्नुहोस्"
428428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429433#: qml/Greeter/LoginList.qml:259
430434msgid "Retry"
431435msgstr "पुन: प्रयास"
@@ -458,34 +462,34 @@ msgid ""
458462"and all personal data will be deleted."
459463msgstr ""
460464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462466#, qt-format
463467msgid "Enter %1"
464468msgstr ""
465469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467471msgid "Enter passphrase"
468472msgstr ""
469473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471475msgid "Enter passcode"
472476msgstr ""
473477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475479#, qt-format
476480msgid "Sorry, incorrect %1"
477481msgstr ""
478482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480484msgid "Sorry, incorrect passphrase"
481485msgstr ""
482486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484488msgctxt "passphrase"
485489msgid "Please re-enter"
486490msgstr ""
487491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489493msgid "Sorry, incorrect passcode"
490494msgstr ""
491495
po/nl.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-07-07 07:14+0000\n"
1212"Last-Translator: Hannie Dumoleyn <Unknown>\n"
1313"Language-Team: Dutch <nl@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,23 +35,23 @@ msgstr "Afsluiten"
3535msgid "Unpin shortcut"
3636msgstr "Snelkoppeling losmaken"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Apparaat vergrendeld"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545"U werd de toegang geweigerd omdat u te vaak een onjuiste wachtwoordzin heeft "
4646"ingevoerd."
4747
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
4949msgid "You have been locked out due to too many failed passcode attempts."
5050msgstr ""
5151"U werd de toegang geweigerd omdat u te vaak een onjuiste toegangscode heeft "
5252"ingevoerd."
5353
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
5555#, qt-format
5656msgid "Please wait %1 minute and then try again…"
5757msgid_plural "Please wait %1 minutes and then try again…"
@@ -283,15 +283,15 @@ msgstr ""
283283msgid "Closes the current window."
284284msgstr ""
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Return to Call"
288288msgstr "Teruggaan naar gesprek"
289289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291291msgid "Emergency Call"
292292msgstr "Noodoproep"
293293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295295msgid "OK"
296296msgstr "Ok"
297297
@@ -433,10 +433,14 @@ msgstr ""
433433"Uw apparaat is nu verbonden met een extern beeldscherm. Gebruik dit scherm "
434434"als een touchpad om de aanwijzer te bedienen."
435435
436−#: qml/Greeter/CoverPage.qml:119
436+#: qml/Greeter/CoverPage.qml:127
437437msgid "Unlock"
438438msgstr "Ontgrendelen"
439439
440+#: qml/Greeter/Greeter.qml:536
441+msgid "Try again"
442+msgstr ""
443+
440444#: qml/Greeter/LoginList.qml:259
441445msgid "Retry"
442446msgstr "Opnieuw proberen"
@@ -473,34 +477,34 @@ msgstr ""
473477"Wanneer de toegangscode nu opnieuw onjuist wordt ingevoerd, zal uw telefoon "
474478"teruggaan naar de fabrieksinstellingen en zal al uw eigen data verloren gaan."
475479
476−#: qml/Greeter/NarrowView.qml:116
480+#: qml/Greeter/NarrowView.qml:129
477481#, qt-format
478482msgid "Enter %1"
479483msgstr "Voer %1 in"
480484
481−#: qml/Greeter/NarrowView.qml:117
485+#: qml/Greeter/NarrowView.qml:130
482486msgid "Enter passphrase"
483487msgstr "Voer wachtwoordzin in"
484488
485−#: qml/Greeter/NarrowView.qml:118
489+#: qml/Greeter/NarrowView.qml:131
486490msgid "Enter passcode"
487491msgstr "Voer toegangscode in"
488492
489−#: qml/Greeter/NarrowView.qml:119
493+#: qml/Greeter/NarrowView.qml:135
490494#, qt-format
491495msgid "Sorry, incorrect %1"
492496msgstr "Sorry, onjuiste %1"
493497
494−#: qml/Greeter/NarrowView.qml:120
498+#: qml/Greeter/NarrowView.qml:136
495499msgid "Sorry, incorrect passphrase"
496500msgstr "Sorry, onjuiste wachtwoordzin"
497501
498−#: qml/Greeter/NarrowView.qml:121
502+#: qml/Greeter/NarrowView.qml:137
499503msgctxt "passphrase"
500504msgid "Please re-enter"
501505msgstr "Gelieve opnieuw in te voeren"
502506
503−#: qml/Greeter/NarrowView.qml:122
507+#: qml/Greeter/NarrowView.qml:138
504508msgid "Sorry, incorrect passcode"
505509msgstr "Sorry, onjuiste toegangscode"
506510
po/nn.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-05-12 11:32+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Norwegian Nynorsk <nn@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr ""
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr ""
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277277msgid "Closes the current window."
278278msgstr ""
279279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281281msgid "Return to Call"
282282msgstr ""
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Emergency Call"
286286msgstr ""
287287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289289msgid "OK"
290290msgstr ""
291291
@@ -422,10 +422,14 @@ msgid ""
422422"touch pad to interact with the pointer."
423423msgstr ""
424424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426426msgid "Unlock"
427427msgstr ""
428428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429433#: qml/Greeter/LoginList.qml:259
430434msgid "Retry"
431435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458462"and all personal data will be deleted."
459463msgstr ""
460464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462466#, qt-format
463467msgid "Enter %1"
464468msgstr ""
465469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467471msgid "Enter passphrase"
468472msgstr ""
469473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471475msgid "Enter passcode"
472476msgstr ""
473477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475479#, qt-format
476480msgid "Sorry, incorrect %1"
477481msgstr ""
478482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480484msgid "Sorry, incorrect passphrase"
481485msgstr ""
482486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484488msgctxt "passphrase"
485489msgid "Please re-enter"
486490msgstr ""
487491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489493msgid "Sorry, incorrect passcode"
490494msgstr ""
491495
po/oc.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-02-05 20:35+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Occitan (post 1500) <oc@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,23 +35,23 @@ msgstr "Quitar"
3535msgid "Unpin shortcut"
3636msgstr "Destacar l'acorchi"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Periferic verrolhat"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545"Sètz estat blocat en seguida d'un tròp grand nombre de temptativas de sasida "
4646"d'una frasa secreta erronèa."
4747
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
4949msgid "You have been locked out due to too many failed passcode attempts."
5050msgstr ""
5151"Sètz estat blocat en seguida d'un tròp grand nombre de temptativas de sasida "
5252"d'un senhal erronèu."
5353
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
5555#, qt-format
5656msgid "Please wait %1 minute and then try again…"
5757msgid_plural "Please wait %1 minutes and then try again…"
@@ -283,15 +283,15 @@ msgstr ""
283283msgid "Closes the current window."
284284msgstr ""
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Return to Call"
288288msgstr "Tornar a l'apèl"
289289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291291msgid "Emergency Call"
292292msgstr "Apèl d'urgéncia"
293293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295295msgid "OK"
296296msgstr "D'acòrdi"
297297
@@ -433,10 +433,14 @@ msgstr ""
433433"Vòstre aparelh es ara connectat a un ecran extèrne. Utilizatz aqueste ecran "
434434"coma un pavat tactil per interagir amb lo puntador."
435435
436−#: qml/Greeter/CoverPage.qml:119
436+#: qml/Greeter/CoverPage.qml:127
437437msgid "Unlock"
438438msgstr "Desverrolhar"
439439
440+#: qml/Greeter/Greeter.qml:536
441+msgid "Try again"
442+msgstr ""
443+
440444#: qml/Greeter/LoginList.qml:259
441445msgid "Retry"
442446msgstr "Ensajar tornamai"
@@ -475,34 +479,34 @@ msgstr ""
475479"reïnicializacion als paramètres d'usina e totas las donadas personalas "
476480"seront suprimidas."
477481
478−#: qml/Greeter/NarrowView.qml:116
482+#: qml/Greeter/NarrowView.qml:129
479483#, qt-format
480484msgid "Enter %1"
481485msgstr "Sasissètz %1"
482486
483−#: qml/Greeter/NarrowView.qml:117
487+#: qml/Greeter/NarrowView.qml:130
484488msgid "Enter passphrase"
485489msgstr "Sasissètz la frasa secreta"
486490
487−#: qml/Greeter/NarrowView.qml:118
491+#: qml/Greeter/NarrowView.qml:131
488492msgid "Enter passcode"
489493msgstr "Sasissètz lo senhal"
490494
491−#: qml/Greeter/NarrowView.qml:119
495+#: qml/Greeter/NarrowView.qml:135
492496#, qt-format
493497msgid "Sorry, incorrect %1"
494498msgstr "O planhèm, %1 incorrècte"
495499
496−#: qml/Greeter/NarrowView.qml:120
500+#: qml/Greeter/NarrowView.qml:136
497501msgid "Sorry, incorrect passphrase"
498502msgstr "O planhèm, frasa secreta incorrecte"
499503
500−#: qml/Greeter/NarrowView.qml:121
504+#: qml/Greeter/NarrowView.qml:137
501505msgctxt "passphrase"
502506msgid "Please re-enter"
503507msgstr "Veuillez rensagesir"
504508
505−#: qml/Greeter/NarrowView.qml:122
509+#: qml/Greeter/NarrowView.qml:138
506510msgid "Sorry, incorrect passcode"
507511msgstr "O planhèm, còde incorrècte"
508512
po/or.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-03-21 05:28+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Oriya <or@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n!=1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr ""
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr ""
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277277msgid "Closes the current window."
278278msgstr ""
279279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281281msgid "Return to Call"
282282msgstr ""
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Emergency Call"
286286msgstr ""
287287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289289msgid "OK"
290290msgstr ""
291291
@@ -422,10 +422,14 @@ msgid ""
422422"touch pad to interact with the pointer."
423423msgstr ""
424424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426426msgid "Unlock"
427427msgstr ""
428428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429433#: qml/Greeter/LoginList.qml:259
430434msgid "Retry"
431435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458462"and all personal data will be deleted."
459463msgstr ""
460464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462466#, qt-format
463467msgid "Enter %1"
464468msgstr ""
465469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467471msgid "Enter passphrase"
468472msgstr ""
469473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471475msgid "Enter passcode"
472476msgstr ""
473477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475479#, qt-format
476480msgid "Sorry, incorrect %1"
477481msgstr ""
478482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480484msgid "Sorry, incorrect passphrase"
481485msgstr ""
482486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484488msgctxt "passphrase"
485489msgid "Please re-enter"
486490msgstr ""
487491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489493msgid "Sorry, incorrect passcode"
490494msgstr ""
491495
po/pa.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-04-24 04:29+0000\n"
1212"Last-Translator: Gursharnjit_Singh <ubuntuser13@gmail.com>\n"
1313"Language-Team: Punjabi <pa@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr "ਸ਼ਾਰਟਕੱਟ ਪਿੰਨ ਹਟਾਓ"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "ਯੰਤਰ ਲਾਕ ਹੈ"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr "ਬਹੁਤ ਸਾਰੇ ਗਲਤ ਵਾਕਾਂ ਦੀ ਵਜ੍ਹਾ ਨਾਲ ਤੁਹਾਨੂੰ ਲਾਕ ਕੀਤਾ ਗਿਆ।"
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr "ਬਹੁਤ ਸਾਰੇ ਗਲਤ ਪਾਸਕੋਡਾਂ ਦੀ ਵਜ੍ਹਾ ਨਾਲ ਤੁਹਾਨੂੰ ਲਾਕ ਕੀਤਾ ਗਿਆ।"
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr ""
279279msgid "Closes the current window."
280280msgstr ""
281281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283283msgid "Return to Call"
284284msgstr "ਕਾਲ ਤੇ ਵਾਪਸ"
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Emergency Call"
288288msgstr "ਅਪਾਤਕਾਲੀਨ ਕਾਲ"
289289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291291msgid "OK"
292292msgstr "ਠੀਕ"
293293
@@ -424,10 +424,14 @@ msgid ""
424424"touch pad to interact with the pointer."
425425msgstr ""
426426
427−#: qml/Greeter/CoverPage.qml:119
427+#: qml/Greeter/CoverPage.qml:127
428428msgid "Unlock"
429429msgstr "ਅਣ-ਲਾਕ"
430430
431+#: qml/Greeter/Greeter.qml:536
432+msgid "Try again"
433+msgstr ""
434+
431435#: qml/Greeter/LoginList.qml:259
432436msgid "Retry"
433437msgstr "ਮੁੜ-ਕੋਸ਼ਿਸ਼"
@@ -464,34 +468,34 @@ msgstr ""
464468"ਜੇਕਰ ਗਲਤ ਪਾਸਕੋਡ ਦਰਜ ਹੋਇਆ, ਤੁਹਾਡਾ ਫ਼ੋਨ ਇੱਕ ਫ਼ੋਨ ਇੱਕ ਫ਼ੈਕਟਰੀ ਰੀਸੈੱਟ ਚਾਲੂ ਕਰੇਗਾ "
465469"ਅਤੇ ਸਾਰਾ ਨਿੱਜੀ ਡਾਟਾ ਹਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ।"
466470
467−#: qml/Greeter/NarrowView.qml:116
471+#: qml/Greeter/NarrowView.qml:129
468472#, qt-format
469473msgid "Enter %1"
470474msgstr "ਦਰਜ %1"
471475
472−#: qml/Greeter/NarrowView.qml:117
476+#: qml/Greeter/NarrowView.qml:130
473477msgid "Enter passphrase"
474478msgstr "ਵਾਕ ਦਿਓ"
475479
476−#: qml/Greeter/NarrowView.qml:118
480+#: qml/Greeter/NarrowView.qml:131
477481msgid "Enter passcode"
478482msgstr "ਪਾਸਕੋਡ ਦਿਓ"
479483
480−#: qml/Greeter/NarrowView.qml:119
484+#: qml/Greeter/NarrowView.qml:135
481485#, qt-format
482486msgid "Sorry, incorrect %1"
483487msgstr "ਮੁਆਫ਼ੀ, ਗਲਤ %1"
484488
485−#: qml/Greeter/NarrowView.qml:120
489+#: qml/Greeter/NarrowView.qml:136
486490msgid "Sorry, incorrect passphrase"
487491msgstr "ਮੁਆਫ਼ੀ, ਗਲਤ ਵਾਕ"
488492
489−#: qml/Greeter/NarrowView.qml:121
493+#: qml/Greeter/NarrowView.qml:137
490494msgctxt "passphrase"
491495msgid "Please re-enter"
492496msgstr ""
493497
494−#: qml/Greeter/NarrowView.qml:122
498+#: qml/Greeter/NarrowView.qml:138
495499msgid "Sorry, incorrect passcode"
496500msgstr "ਮੁਆਫ਼ੀ, ਗਲਤ ਪਾਸਕੋਡ"
497501
po/pl.po+21−17
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2016-06-22 13:51+0000\n"
1212"Last-Translator: Krzysztof Tataradziński <Unknown>\n"
1313"Language-Team: Polish <pl@li.org>\n"
@@ -16,7 +16,7 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
1818"|| n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-06-23 05:37+0000\n"
19+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
2020"X-Generator: Launchpad (build 18111)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -36,19 +36,19 @@ msgstr "Zakończ"
3636msgid "Unpin shortcut"
3737msgstr "Odepnij skrót"
3838
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
4040msgid "Device Locked"
4141msgstr "Urządzenie zablokowane"
4242
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
4444msgid "You have been locked out due to too many failed passphrase attempts."
4545msgstr "Zablokowano z powodu zbyt wielu prób podania nieprawidłowego hasła."
4646
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
4848msgid "You have been locked out due to too many failed passcode attempts."
4949msgstr "Zablokowano z powodu zbyt wielu prób podania nieprawidłowego hasła."
5050
51−#: qml/Components/DelayedLockscreen.qml:74
51+#: qml/Components/DelayedLockscreen.qml:75
5252#, qt-format
5353msgid "Please wait %1 minute and then try again…"
5454msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr "Alt + F4"
279279msgid "Closes the current window."
280280msgstr "Zamyka bieżące okno."
281281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283283msgid "Return to Call"
284284msgstr "Powróć do rozmowy"
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Emergency Call"
288288msgstr "Telefon ratunkowy"
289289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291291msgid "OK"
292292msgstr "OK"
293293
@@ -427,10 +427,14 @@ msgstr ""
427427"Urządzenie jest podłączone do zewnętrznego wyświetlacza. Użyj tego ekranu "
428428"jako touch pad, by nawigować kursorem."
429429
430−#: qml/Greeter/CoverPage.qml:119
430+#: qml/Greeter/CoverPage.qml:127
431431msgid "Unlock"
432432msgstr "Odblokuj"
433433
434+#: qml/Greeter/Greeter.qml:536
435+msgid "Try again"
436+msgstr ""
437+
434438#: qml/Greeter/LoginList.qml:259
435439msgid "Retry"
436440msgstr "Ponów"
@@ -467,34 +471,34 @@ msgstr ""
467471"Jeśli zostanie wprowadzony błędny kod, telefon przywróci ustawienia "
468472"fabryczne i wszystkie dane osobiste zostaną usunięte."
469473
470−#: qml/Greeter/NarrowView.qml:116
474+#: qml/Greeter/NarrowView.qml:129
471475#, qt-format
472476msgid "Enter %1"
473477msgstr "Wprowadź %1"
474478
475−#: qml/Greeter/NarrowView.qml:117
479+#: qml/Greeter/NarrowView.qml:130
476480msgid "Enter passphrase"
477481msgstr "Wprowadź hasło"
478482
479−#: qml/Greeter/NarrowView.qml:118
483+#: qml/Greeter/NarrowView.qml:131
480484msgid "Enter passcode"
481485msgstr "Podaj kod"
482486
483−#: qml/Greeter/NarrowView.qml:119
487+#: qml/Greeter/NarrowView.qml:135
484488#, qt-format
485489msgid "Sorry, incorrect %1"
486490msgstr "Niestety niepoprawne %1"
487491
488−#: qml/Greeter/NarrowView.qml:120
492+#: qml/Greeter/NarrowView.qml:136
489493msgid "Sorry, incorrect passphrase"
490494msgstr "Niestety, błędne hasło"
491495
492−#: qml/Greeter/NarrowView.qml:121
496+#: qml/Greeter/NarrowView.qml:137
493497msgctxt "passphrase"
494498msgid "Please re-enter"
495499msgstr "Wprowadź ponownie"
496500
497−#: qml/Greeter/NarrowView.qml:122
501+#: qml/Greeter/NarrowView.qml:138
498502msgid "Sorry, incorrect passcode"
499503msgstr "Niestety ten kod nie jest poprawny"
500504
po/pt.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2016-06-20 11:37+0000\n"
1212"Last-Translator: Ivo Xavier <ivoxavier.8@gmail.com>\n"
1313"Language-Team: Portuguese <pt@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-21 05:59+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,23 +35,23 @@ msgstr "Sair"
3535msgid "Unpin shortcut"
3636msgstr "Remover atalho"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Dispositivo bloqueado"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545"Está bloqueado por diversas tentativas falhadas na introdução da palavra-"
4646"passe."
4747
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
4949msgid "You have been locked out due to too many failed passcode attempts."
5050msgstr ""
5151"Está bloqueado por diversas tentativas falhadas na introdução do código de "
5252"segurança."
5353
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
5555#, qt-format
5656msgid "Please wait %1 minute and then try again…"
5757msgid_plural "Please wait %1 minutes and then try again…"
@@ -283,15 +283,15 @@ msgstr "Alt + F4"
283283msgid "Closes the current window."
284284msgstr "Fecha a janela atual."
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Return to Call"
288288msgstr "Volte para a chamada"
289289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291291msgid "Emergency Call"
292292msgstr "Chamada de emergência"
293293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295295msgid "OK"
296296msgstr "OK"
297297
@@ -431,10 +431,14 @@ msgstr ""
431431"O seu dispositivo está agora ligado a um ecrã externo. Use este ecrã como "
432432"touchpad para mover o ponteiro."
433433
434−#: qml/Greeter/CoverPage.qml:119
434+#: qml/Greeter/CoverPage.qml:127
435435msgid "Unlock"
436436msgstr "Desbloquear"
437437
438+#: qml/Greeter/Greeter.qml:536
439+msgid "Try again"
440+msgstr "Tentar novamente"
441+
438442#: qml/Greeter/LoginList.qml:259
439443msgid "Retry"
440444msgstr "Tentar novamente"
@@ -471,34 +475,34 @@ msgstr ""
471475"Se o código for introduzido incorretamente, todos os dados pessoais serão "
472476"eliminados."
473477
474−#: qml/Greeter/NarrowView.qml:116
478+#: qml/Greeter/NarrowView.qml:129
475479#, qt-format
476480msgid "Enter %1"
477481msgstr "Introduziu %1"
478482
479−#: qml/Greeter/NarrowView.qml:117
483+#: qml/Greeter/NarrowView.qml:130
480484msgid "Enter passphrase"
481485msgstr "Introduza a palavra-passe"
482486
483−#: qml/Greeter/NarrowView.qml:118
487+#: qml/Greeter/NarrowView.qml:131
484488msgid "Enter passcode"
485489msgstr "Introduza o código"
486490
487−#: qml/Greeter/NarrowView.qml:119
491+#: qml/Greeter/NarrowView.qml:135
488492#, qt-format
489493msgid "Sorry, incorrect %1"
490494msgstr "Desculpe, %1 incorreto"
491495
492−#: qml/Greeter/NarrowView.qml:120
496+#: qml/Greeter/NarrowView.qml:136
493497msgid "Sorry, incorrect passphrase"
494498msgstr "Palavra-passe incorreta"
495499
496−#: qml/Greeter/NarrowView.qml:121
500+#: qml/Greeter/NarrowView.qml:137
497501msgctxt "passphrase"
498502msgid "Please re-enter"
499503msgstr "Por favor, volte a introduzir"
500504
501−#: qml/Greeter/NarrowView.qml:122
505+#: qml/Greeter/NarrowView.qml:138
502506msgid "Sorry, incorrect passcode"
503507msgstr "Desculpe, código incorreto"
504508
po/pt_BR.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-08-05 04:40+0000\n"
1212"Last-Translator: Julio Alexander Sieg <julio.sieg@gmail.com>\n"
1313"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,21 +35,21 @@ msgstr "Sair"
3535msgid "Unpin shortcut"
3636msgstr "Desafixar atalho"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Dispositivo bloqueado"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr "Você foi bloqueado por que inseriu uma senha incorreta várias vezes."
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949"Você foi bloqueado por que inseriu um código de acesso incorreto várias "
5050"vezes."
5151
52−#: qml/Components/DelayedLockscreen.qml:74
52+#: qml/Components/DelayedLockscreen.qml:75
5353#, qt-format
5454msgid "Please wait %1 minute and then try again…"
5555msgid_plural "Please wait %1 minutes and then try again…"
@@ -281,15 +281,15 @@ msgstr ""
281281msgid "Closes the current window."
282282msgstr ""
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Return to Call"
286286msgstr "Retornar para a chamada"
287287
288−#: qml/Components/Lockscreen.qml:231
288+#: qml/Components/Lockscreen.qml:239
289289msgid "Emergency Call"
290290msgstr "Chamada de emergência"
291291
292−#: qml/Components/Lockscreen.qml:263
292+#: qml/Components/Lockscreen.qml:271
293293msgid "OK"
294294msgstr "OK"
295295
@@ -426,10 +426,14 @@ msgid ""
426426"touch pad to interact with the pointer."
427427msgstr ""
428428
429−#: qml/Greeter/CoverPage.qml:119
429+#: qml/Greeter/CoverPage.qml:127
430430msgid "Unlock"
431431msgstr "Desbloquear"
432432
433+#: qml/Greeter/Greeter.qml:536
434+msgid "Try again"
435+msgstr ""
436+
433437#: qml/Greeter/LoginList.qml:259
434438msgid "Retry"
435439msgstr "Repetir"
@@ -466,34 +470,34 @@ msgstr ""
466470"Se o código de acesso for digitado incorretamente, o telefone será "
467471"restaurado aos padrões de fábrica e todos os dados pessoais serão apagados."
468472
469−#: qml/Greeter/NarrowView.qml:116
473+#: qml/Greeter/NarrowView.qml:129
470474#, qt-format
471475msgid "Enter %1"
472476msgstr "Digite %1"
473477
474−#: qml/Greeter/NarrowView.qml:117
478+#: qml/Greeter/NarrowView.qml:130
475479msgid "Enter passphrase"
476480msgstr "Digite a frase secreta"
477481
478−#: qml/Greeter/NarrowView.qml:118
482+#: qml/Greeter/NarrowView.qml:131
479483msgid "Enter passcode"
480484msgstr "Informe sua senha"
481485
482−#: qml/Greeter/NarrowView.qml:119
486+#: qml/Greeter/NarrowView.qml:135
483487#, qt-format
484488msgid "Sorry, incorrect %1"
485489msgstr "Desculpe, %1 incorreto"
486490
487−#: qml/Greeter/NarrowView.qml:120
491+#: qml/Greeter/NarrowView.qml:136
488492msgid "Sorry, incorrect passphrase"
489493msgstr "Desculpe, senha incorreta"
490494
491−#: qml/Greeter/NarrowView.qml:121
495+#: qml/Greeter/NarrowView.qml:137
492496msgctxt "passphrase"
493497msgid "Please re-enter"
494498msgstr "Por favor, digite novamente"
495499
496−#: qml/Greeter/NarrowView.qml:122
500+#: qml/Greeter/NarrowView.qml:138
497501msgid "Sorry, incorrect passcode"
498502msgstr "Desculpe, senha incorreta"
499503
po/ro.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-07-06 17:47+0000\n"
1212"Last-Translator: Meriuță Cornel <meriutacornel@neacornel.eu>\n"
1313"Language-Team: Romanian <ro@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 "
1818"== 0) && (n != 0))) ? 2: 1));\n"
19−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
20−"X-Generator: Launchpad (build 18097)\n"
19+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
20+"X-Generator: Launchpad (build 18111)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -36,22 +36,22 @@ msgstr ""
3636msgid "Unpin shortcut"
3737msgstr "Eliberează scurtătura"
3838
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
4040msgid "Device Locked"
4141msgstr "Dispozitiv blocat"
4242
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
4444msgid "You have been locked out due to too many failed passphrase attempts."
4545msgstr ""
4646"Dispozitivul este blocat din cauza utilizării mai multor fraze parolă "
4747"greșite."
4848
49−#: qml/Components/DelayedLockscreen.qml:65
49+#: qml/Components/DelayedLockscreen.qml:66
5050msgid "You have been locked out due to too many failed passcode attempts."
5151msgstr ""
5252"Dispozitivul este blocat din cauza utilizării mai multor parole greșite."
5353
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
5555#, qt-format
5656msgid "Please wait %1 minute and then try again…"
5757msgid_plural "Please wait %1 minutes and then try again…"
@@ -284,15 +284,15 @@ msgstr ""
284284msgid "Closes the current window."
285285msgstr ""
286286
287−#: qml/Components/Lockscreen.qml:231
287+#: qml/Components/Lockscreen.qml:239
288288msgid "Return to Call"
289289msgstr "Reveniți la funcția de apelare"
290290
291−#: qml/Components/Lockscreen.qml:231
291+#: qml/Components/Lockscreen.qml:239
292292msgid "Emergency Call"
293293msgstr "Apel de urgență"
294294
295−#: qml/Components/Lockscreen.qml:263
295+#: qml/Components/Lockscreen.qml:271
296296msgid "OK"
297297msgstr "În regulă"
298298
@@ -429,10 +429,14 @@ msgid ""
429429"touch pad to interact with the pointer."
430430msgstr ""
431431
432−#: qml/Greeter/CoverPage.qml:119
432+#: qml/Greeter/CoverPage.qml:127
433433msgid "Unlock"
434434msgstr "Deblocare"
435435
436+#: qml/Greeter/Greeter.qml:536
437+msgid "Try again"
438+msgstr ""
439+
436440#: qml/Greeter/LoginList.qml:259
437441msgid "Retry"
438442msgstr "Reîncercați"
@@ -471,34 +475,34 @@ msgstr ""
471475"configurările inițiale, ale fabricantului, iar toate datele personale vor fi "
472476"șterse."
473477
474−#: qml/Greeter/NarrowView.qml:116
478+#: qml/Greeter/NarrowView.qml:129
475479#, qt-format
476480msgid "Enter %1"
477481msgstr "Introducere %1"
478482
479−#: qml/Greeter/NarrowView.qml:117
483+#: qml/Greeter/NarrowView.qml:130
480484msgid "Enter passphrase"
481485msgstr "Introduceți fraza parolă"
482486
483−#: qml/Greeter/NarrowView.qml:118
487+#: qml/Greeter/NarrowView.qml:131
484488msgid "Enter passcode"
485489msgstr "Introduceți parola"
486490
487−#: qml/Greeter/NarrowView.qml:119
491+#: qml/Greeter/NarrowView.qml:135
488492#, qt-format
489493msgid "Sorry, incorrect %1"
490494msgstr "%1 incorectă"
491495
492−#: qml/Greeter/NarrowView.qml:120
496+#: qml/Greeter/NarrowView.qml:136
493497msgid "Sorry, incorrect passphrase"
494498msgstr "Frază secretă incorectă"
495499
496−#: qml/Greeter/NarrowView.qml:121
500+#: qml/Greeter/NarrowView.qml:137
497501msgctxt "passphrase"
498502msgid "Please re-enter"
499503msgstr ""
500504
501−#: qml/Greeter/NarrowView.qml:122
505+#: qml/Greeter/NarrowView.qml:138
502506msgid "Sorry, incorrect passcode"
503507msgstr "Parolă incorectă"
504508
po/ru.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-07-06 05:33+0000\n"
1212"Last-Translator: ☠Jay ZDLin☠ <Unknown>\n"
1313"Language-Team: Russian <ru@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
20−"X-Generator: Launchpad (build 18097)\n"
19+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
20+"X-Generator: Launchpad (build 18111)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -36,23 +36,23 @@ msgstr "Завершить"
3636msgid "Unpin shortcut"
3737msgstr "Открепить ярлык"
3838
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
4040msgid "Device Locked"
4141msgstr "Устройство заблокировано"
4242
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
4444msgid "You have been locked out due to too many failed passphrase attempts."
4545msgstr ""
4646"Вы были заблокированы из-за большого количества неудачных попыток ввода "
4747"кодовой фразы."
4848
49−#: qml/Components/DelayedLockscreen.qml:65
49+#: qml/Components/DelayedLockscreen.qml:66
5050msgid "You have been locked out due to too many failed passcode attempts."
5151msgstr ""
5252"Вы были заблокированы из-за большого количества неудачных попыток ввода "
5353"секретного кода."
5454
55−#: qml/Components/DelayedLockscreen.qml:74
55+#: qml/Components/DelayedLockscreen.qml:75
5656#, qt-format
5757msgid "Please wait %1 minute and then try again…"
5858msgid_plural "Please wait %1 minutes and then try again…"
@@ -283,15 +283,15 @@ msgstr ""
283283msgid "Closes the current window."
284284msgstr ""
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Return to Call"
288288msgstr "Вернуться к вызову"
289289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291291msgid "Emergency Call"
292292msgstr "Экстренный вызов"
293293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295295msgid "OK"
296296msgstr "ОК"
297297
@@ -430,10 +430,14 @@ msgstr ""
430430"Ваше устройство подключено к внешнему дисплею. Используйте этот экран как "
431431"сенсорную панель для управления указателем."
432432
433−#: qml/Greeter/CoverPage.qml:119
433+#: qml/Greeter/CoverPage.qml:127
434434msgid "Unlock"
435435msgstr "Разблокировать"
436436
437+#: qml/Greeter/Greeter.qml:536
438+msgid "Try again"
439+msgstr ""
440+
437441#: qml/Greeter/LoginList.qml:259
438442msgid "Retry"
439443msgstr "Повторить"
@@ -470,34 +474,34 @@ msgstr ""
470474"Если секретный код будет введен неверно, то телефон вернётся к заводским "
471475"настройкам, а все личные данные будут удалены."
472476
473−#: qml/Greeter/NarrowView.qml:116
477+#: qml/Greeter/NarrowView.qml:129
474478#, qt-format
475479msgid "Enter %1"
476480msgstr "Введите %1"
477481
478−#: qml/Greeter/NarrowView.qml:117
482+#: qml/Greeter/NarrowView.qml:130
479483msgid "Enter passphrase"
480484msgstr "Введите кодовую фразу"
481485
482−#: qml/Greeter/NarrowView.qml:118
486+#: qml/Greeter/NarrowView.qml:131
483487msgid "Enter passcode"
484488msgstr "Введите секретный код"
485489
486−#: qml/Greeter/NarrowView.qml:119
490+#: qml/Greeter/NarrowView.qml:135
487491#, qt-format
488492msgid "Sorry, incorrect %1"
489493msgstr "Некорректный ввод %1"
490494
491−#: qml/Greeter/NarrowView.qml:120
495+#: qml/Greeter/NarrowView.qml:136
492496msgid "Sorry, incorrect passphrase"
493497msgstr "Введена неверная кодовая фраза"
494498
495−#: qml/Greeter/NarrowView.qml:121
499+#: qml/Greeter/NarrowView.qml:137
496500msgctxt "passphrase"
497501msgid "Please re-enter"
498502msgstr "Повторите ввод"
499503
500−#: qml/Greeter/NarrowView.qml:122
504+#: qml/Greeter/NarrowView.qml:138
501505msgid "Sorry, incorrect passcode"
502506msgstr "Секретный код введён неверно"
503507
po/shn.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-11-10 12:09+0000\n"
1212"Last-Translator: Rockworld <sumoisrock@gmail.com>\n"
1313"Language-Team: Shan <shn@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=(n == 1) ? 0 : 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "ဢိုတ်း"
3535msgid "Unpin shortcut"
3636msgstr ""
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr ""
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277277msgid "Closes the current window."
278278msgstr ""
279279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281281msgid "Return to Call"
282282msgstr ""
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Emergency Call"
286286msgstr ""
287287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289289msgid "OK"
290290msgstr ""
291291
@@ -422,10 +422,14 @@ msgid ""
422422"touch pad to interact with the pointer."
423423msgstr ""
424424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426426msgid "Unlock"
427427msgstr ""
428428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429433#: qml/Greeter/LoginList.qml:259
430434msgid "Retry"
431435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458462"and all personal data will be deleted."
459463msgstr ""
460464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462466#, qt-format
463467msgid "Enter %1"
464468msgstr ""
465469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467471msgid "Enter passphrase"
468472msgstr ""
469473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471475msgid "Enter passcode"
472476msgstr ""
473477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475479#, qt-format
476480msgid "Sorry, incorrect %1"
477481msgstr ""
478482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480484msgid "Sorry, incorrect passphrase"
481485msgstr ""
482486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484488msgctxt "passphrase"
485489msgid "Please re-enter"
486490msgstr ""
487491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489493msgid "Sorry, incorrect passcode"
490494msgstr ""
491495
po/si.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2013-06-26 22:36+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Sinhalese <si@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr ""
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr ""
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr ""
279279msgid "Closes the current window."
280280msgstr ""
281281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283283msgid "Return to Call"
284284msgstr ""
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Emergency Call"
288288msgstr "හදිසි ඇමතුම"
289289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291291msgid "OK"
292292msgstr ""
293293
@@ -424,10 +424,14 @@ msgid ""
424424"touch pad to interact with the pointer."
425425msgstr ""
426426
427−#: qml/Greeter/CoverPage.qml:119
427+#: qml/Greeter/CoverPage.qml:127
428428msgid "Unlock"
429429msgstr ""
430430
431+#: qml/Greeter/Greeter.qml:536
432+msgid "Try again"
433+msgstr ""
434+
431435#: qml/Greeter/LoginList.qml:259
432436msgid "Retry"
433437msgstr ""
@@ -460,34 +464,34 @@ msgid ""
460464"and all personal data will be deleted."
461465msgstr ""
462466
463−#: qml/Greeter/NarrowView.qml:116
467+#: qml/Greeter/NarrowView.qml:129
464468#, qt-format
465469msgid "Enter %1"
466470msgstr ""
467471
468−#: qml/Greeter/NarrowView.qml:117
472+#: qml/Greeter/NarrowView.qml:130
469473msgid "Enter passphrase"
470474msgstr ""
471475
472−#: qml/Greeter/NarrowView.qml:118
476+#: qml/Greeter/NarrowView.qml:131
473477msgid "Enter passcode"
474478msgstr ""
475479
476−#: qml/Greeter/NarrowView.qml:119
480+#: qml/Greeter/NarrowView.qml:135
477481#, qt-format
478482msgid "Sorry, incorrect %1"
479483msgstr ""
480484
481−#: qml/Greeter/NarrowView.qml:120
485+#: qml/Greeter/NarrowView.qml:136
482486msgid "Sorry, incorrect passphrase"
483487msgstr ""
484488
485−#: qml/Greeter/NarrowView.qml:121
489+#: qml/Greeter/NarrowView.qml:137
486490msgctxt "passphrase"
487491msgid "Please re-enter"
488492msgstr ""
489493
490−#: qml/Greeter/NarrowView.qml:122
494+#: qml/Greeter/NarrowView.qml:138
491495msgid "Sorry, incorrect passcode"
492496msgstr ""
493497
po/sk.po+51−47
@@ -7,16 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
11−"PO-Revision-Date: 2016-05-02 10:43+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11+"PO-Revision-Date: 2016-06-27 07:37+0000\n"
1212"Last-Translator: P_E_T_O <Unknown>\n"
1313"Language-Team: Slovak <sk@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-28 05:41+0000\n"
19+"X-Generator: Launchpad (build 18115)\n"
2020"Language: sk\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -36,23 +36,23 @@ msgstr "Ukončiť"
3636msgid "Unpin shortcut"
3737msgstr "Odopnúť odkaz"
3838
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
4040msgid "Device Locked"
4141msgstr "Zariadenie zamknuté"
4242
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
4444msgid "You have been locked out due to too many failed passphrase attempts."
4545msgstr ""
4646"Boli ste zablokovaný z dôvodu príliš veľkého počtu neúspešných pokusov o "
4747"prístupovú frázu."
4848
49−#: qml/Components/DelayedLockscreen.qml:65
49+#: qml/Components/DelayedLockscreen.qml:66
5050msgid "You have been locked out due to too many failed passcode attempts."
5151msgstr ""
5252"Boli ste zablokovaný z dôvodu príliš veľkého počtu neúspešných pokusov o "
5353"prístupové heslo."
5454
55−#: qml/Components/DelayedLockscreen.qml:74
55+#: qml/Components/DelayedLockscreen.qml:75
5656#, qt-format
5757msgid "Please wait %1 minute and then try again…"
5858msgid_plural "Please wait %1 minutes and then try again…"
@@ -127,59 +127,59 @@ msgstr "Reštartovať"
127127
128128#: qml/Components/KeyboardShortcutsOverlay.qml:41
129129msgid "Keyboard Shortcuts"
130−msgstr ""
130+msgstr "Klávesové skratky"
131131
132132#: qml/Components/KeyboardShortcutsOverlay.qml:55
133133msgid "Unity 8"
134−msgstr ""
134+msgstr "Unity 8"
135135
136136#: qml/Components/KeyboardShortcutsOverlay.qml:62
137137msgid "PrtScr"
138−msgstr ""
138+msgstr "PrtScr"
139139
140140#: qml/Components/KeyboardShortcutsOverlay.qml:67
141141msgid "Takes a screenshot."
142−msgstr ""
142+msgstr "Vytvorí snímku obrazovky."
143143
144144#: qml/Components/KeyboardShortcutsOverlay.qml:75
145145msgid "Alt + PrtScr"
146−msgstr ""
146+msgstr "Alt + PrtScr"
147147
148148#: qml/Components/KeyboardShortcutsOverlay.qml:80
149149msgid "Takes a screenshot of a window."
150−msgstr ""
150+msgstr "Vytvorí snímku okna."
151151
152152#: qml/Components/KeyboardShortcutsOverlay.qml:88
153153msgid "Super + Space"
154−msgstr ""
154+msgstr "Super + Space"
155155
156156#: qml/Components/KeyboardShortcutsOverlay.qml:93
157157msgid "Switches to next keyboard layout."
158−msgstr ""
158+msgstr "Prepne na ďalšie rozloženie klávesnice."
159159
160160#: qml/Components/KeyboardShortcutsOverlay.qml:101
161161msgid "Super + Shift + Space"
162−msgstr ""
162+msgstr "Super + Shift + Space"
163163
164164#: qml/Components/KeyboardShortcutsOverlay.qml:106
165165msgid "Switches to previous keyboard layout."
166−msgstr ""
166+msgstr "Prepne na predošlé rozloženie klávesnice."
167167
168168#: qml/Components/KeyboardShortcutsOverlay.qml:118
169169msgid "Launcher"
170−msgstr ""
170+msgstr "Launcher"
171171
172172#: qml/Components/KeyboardShortcutsOverlay.qml:125
173173msgid "Super (Hold)"
174−msgstr ""
174+msgstr "Super (Držať)"
175175
176176#: qml/Components/KeyboardShortcutsOverlay.qml:130
177177msgid "Opens the launcher, displays shortcuts."
178−msgstr ""
178+msgstr "Otvorí launcher, zobrazí skratky."
179179
180180#: qml/Components/KeyboardShortcutsOverlay.qml:138
181181msgid "Alt + F1"
182−msgstr ""
182+msgstr "Alt + F1"
183183
184184#: qml/Components/KeyboardShortcutsOverlay.qml:143
185185msgid "Opens launcher keyboard navigation mode."
@@ -187,55 +187,55 @@ msgstr ""
187187
188188#: qml/Components/KeyboardShortcutsOverlay.qml:151
189189msgid "Super + Tab"
190−msgstr ""
190+msgstr "Super + Tab"
191191
192192#: qml/Components/KeyboardShortcutsOverlay.qml:156
193193msgid "Switches applications via the launcher."
194−msgstr ""
194+msgstr "Prepínanie aplikácií pomocou launchera."
195195
196196#: qml/Components/KeyboardShortcutsOverlay.qml:164
197197msgid "Super + 0 to 9"
198−msgstr ""
198+msgstr "Super + 0 do 9"
199199
200200#: qml/Components/KeyboardShortcutsOverlay.qml:169
201201msgid "Same as clicking on a launcher icon."
202−msgstr ""
202+msgstr "Rovnaké ako kliknutie na ikonu v launchery."
203203
204204#: qml/Components/KeyboardShortcutsOverlay.qml:181
205205msgid "Scopes"
206−msgstr ""
206+msgstr "Scopes"
207207
208208#: qml/Components/KeyboardShortcutsOverlay.qml:188
209209msgid "Super (Tap)"
210−msgstr ""
210+msgstr "Super (Klik)"
211211
212212#: qml/Components/KeyboardShortcutsOverlay.qml:193
213213msgid "Opens the Scopes home."
214−msgstr ""
214+msgstr "Otvorí Scopes."
215215
216216#: qml/Components/KeyboardShortcutsOverlay.qml:209
217217msgid "Switching"
218−msgstr ""
218+msgstr "Prepínanie"
219219
220220#: qml/Components/KeyboardShortcutsOverlay.qml:216
221221msgid "Alt + Tab"
222−msgstr ""
222+msgstr "Alt + Tab"
223223
224224#: qml/Components/KeyboardShortcutsOverlay.qml:221
225225msgid "Switches between applications."
226−msgstr ""
226+msgstr "Prepínanie medzi aplikáciami."
227227
228228#: qml/Components/KeyboardShortcutsOverlay.qml:229
229229msgid "Super + W"
230−msgstr ""
230+msgstr "Super + W"
231231
232232#: qml/Components/KeyboardShortcutsOverlay.qml:234
233233msgid "Opens the desktop spread."
234−msgstr ""
234+msgstr "Otvorí rozloženie obrazoviek."
235235
236236#: qml/Components/KeyboardShortcutsOverlay.qml:242
237237msgid "Cursor Left or Right"
238−msgstr ""
238+msgstr "Ľavý alebo pravý kurzorový kláves"
239239
240240#: qml/Components/KeyboardShortcutsOverlay.qml:247
241241msgid "Moves the focus."
@@ -243,7 +243,7 @@ msgstr ""
243243
244244#: qml/Components/KeyboardShortcutsOverlay.qml:259
245245msgid "Windows"
246−msgstr ""
246+msgstr "Okná"
247247
248248#: qml/Components/KeyboardShortcutsOverlay.qml:266
249249msgid "Ctrl + Super + D"
@@ -285,15 +285,15 @@ msgstr ""
285285msgid "Closes the current window."
286286msgstr ""
287287
288−#: qml/Components/Lockscreen.qml:231
288+#: qml/Components/Lockscreen.qml:239
289289msgid "Return to Call"
290290msgstr "Návrat k hovoru"
291291
292−#: qml/Components/Lockscreen.qml:231
292+#: qml/Components/Lockscreen.qml:239
293293msgid "Emergency Call"
294294msgstr "Tiesňový hovor"
295295
296−#: qml/Components/Lockscreen.qml:263
296+#: qml/Components/Lockscreen.qml:271
297297msgid "OK"
298298msgstr "OK"
299299
@@ -433,10 +433,14 @@ msgstr ""
433433"Zariadenie je pripojené k externému displeju. Táto obrazovka slúži ako "
434434"dotyková plocha pre interakciu s ukazovateľom."
435435
436−#: qml/Greeter/CoverPage.qml:119
436+#: qml/Greeter/CoverPage.qml:127
437437msgid "Unlock"
438438msgstr "Odomknúť"
439439
440+#: qml/Greeter/Greeter.qml:536
441+msgid "Try again"
442+msgstr ""
443+
440444#: qml/Greeter/LoginList.qml:259
441445msgid "Retry"
442446msgstr "Skúsiť znova"
@@ -473,34 +477,34 @@ msgstr ""
473477"Ak bude zle zadané heslo, váš telefón vykoná továrenský reset a všetky "
474478"osobné údaje budú vymazané."
475479
476−#: qml/Greeter/NarrowView.qml:116
480+#: qml/Greeter/NarrowView.qml:129
477481#, qt-format
478482msgid "Enter %1"
479483msgstr "Zadajte %1"
480484
481−#: qml/Greeter/NarrowView.qml:117
485+#: qml/Greeter/NarrowView.qml:130
482486msgid "Enter passphrase"
483487msgstr "Zadajte prístupovú frázu"
484488
485−#: qml/Greeter/NarrowView.qml:118
489+#: qml/Greeter/NarrowView.qml:131
486490msgid "Enter passcode"
487491msgstr "Zadajte heslo"
488492
489−#: qml/Greeter/NarrowView.qml:119
493+#: qml/Greeter/NarrowView.qml:135
490494#, qt-format
491495msgid "Sorry, incorrect %1"
492496msgstr "Prepáčte, nesprávne %1"
493497
494−#: qml/Greeter/NarrowView.qml:120
498+#: qml/Greeter/NarrowView.qml:136
495499msgid "Sorry, incorrect passphrase"
496500msgstr "Prepáčte, nesprávna prístupová fráza"
497501
498−#: qml/Greeter/NarrowView.qml:121
502+#: qml/Greeter/NarrowView.qml:137
499503msgctxt "passphrase"
500504msgid "Please re-enter"
501505msgstr "Zadajte znova"
502506
503−#: qml/Greeter/NarrowView.qml:122
507+#: qml/Greeter/NarrowView.qml:138
504508msgid "Sorry, incorrect passcode"
505509msgstr "Prepáčte, nesprávne heslo"
506510
po/sl.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2016-01-31 18:34+0000\n"
1212"Last-Translator: Bernard Banko <Unknown>\n"
1313"Language-Team: Slovenian <sl@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || "
1818"n%100==4 ? 3 : 0);\n"
19−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
20−"X-Generator: Launchpad (build 18097)\n"
19+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
20+"X-Generator: Launchpad (build 18111)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -36,19 +36,19 @@ msgstr "Končaj"
3636msgid "Unpin shortcut"
3737msgstr "Odpni bližnjico"
3838
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
4040msgid "Device Locked"
4141msgstr "Naprava je zaklenjena"
4242
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
4444msgid "You have been locked out due to too many failed passphrase attempts."
4545msgstr "Telefon ste zaklenili zaradi preveč napačnih vnosov gesla."
4646
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
4848msgid "You have been locked out due to too many failed passcode attempts."
4949msgstr "Telefon ste zaklenili zaradi preveč napačnih vnosov gesla."
5050
51−#: qml/Components/DelayedLockscreen.qml:74
51+#: qml/Components/DelayedLockscreen.qml:75
5252#, qt-format
5353msgid "Please wait %1 minute and then try again…"
5454msgid_plural "Please wait %1 minutes and then try again…"
@@ -282,15 +282,15 @@ msgstr ""
282282msgid "Closes the current window."
283283msgstr ""
284284
285−#: qml/Components/Lockscreen.qml:231
285+#: qml/Components/Lockscreen.qml:239
286286msgid "Return to Call"
287287msgstr "Vrni se h klicu"
288288
289−#: qml/Components/Lockscreen.qml:231
289+#: qml/Components/Lockscreen.qml:239
290290msgid "Emergency Call"
291291msgstr "Klic v sili"
292292
293−#: qml/Components/Lockscreen.qml:263
293+#: qml/Components/Lockscreen.qml:271
294294msgid "OK"
295295msgstr "V redu"
296296
@@ -431,10 +431,14 @@ msgstr ""
431431"Vaša naprava je sedaj priključena na zunanji zaslon. S tem zaslonom pa lahko "
432432"upravljate kazalko, kot da bi imeli sledilno ploščico."
433433
434−#: qml/Greeter/CoverPage.qml:119
434+#: qml/Greeter/CoverPage.qml:127
435435msgid "Unlock"
436436msgstr "Odkleni"
437437
438+#: qml/Greeter/Greeter.qml:536
439+msgid "Try again"
440+msgstr ""
441+
438442#: qml/Greeter/LoginList.qml:259
439443msgid "Retry"
440444msgstr "Poskusi znova"
@@ -471,34 +475,34 @@ msgstr ""
471475"Če je vneseno nepravilno geslo, bo telefon ponastavljen na tovarniške "
472476"nastavitve ter vsi osebni podatki bodo izbrisani."
473477
474−#: qml/Greeter/NarrowView.qml:116
478+#: qml/Greeter/NarrowView.qml:129
475479#, qt-format
476480msgid "Enter %1"
477481msgstr "Vnesite %1"
478482
479−#: qml/Greeter/NarrowView.qml:117
483+#: qml/Greeter/NarrowView.qml:130
480484msgid "Enter passphrase"
481485msgstr "Vnesite šifrirno reklo"
482486
483−#: qml/Greeter/NarrowView.qml:118
487+#: qml/Greeter/NarrowView.qml:131
484488msgid "Enter passcode"
485489msgstr "Vnesite geslo"
486490
487−#: qml/Greeter/NarrowView.qml:119
491+#: qml/Greeter/NarrowView.qml:135
488492#, qt-format
489493msgid "Sorry, incorrect %1"
490494msgstr "Oprostite, napačen %1"
491495
492−#: qml/Greeter/NarrowView.qml:120
496+#: qml/Greeter/NarrowView.qml:136
493497msgid "Sorry, incorrect passphrase"
494498msgstr "Oprostite, napačno šifrirno reklo"
495499
496−#: qml/Greeter/NarrowView.qml:121
500+#: qml/Greeter/NarrowView.qml:137
497501msgctxt "passphrase"
498502msgid "Please re-enter"
499503msgstr "Ponovno vnesite"
500504
501−#: qml/Greeter/NarrowView.qml:122
505+#: qml/Greeter/NarrowView.qml:138
502506msgid "Sorry, incorrect passcode"
503507msgstr "Nepravilno geslo"
504508
po/sq.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2016-04-21 06:03+0000\n"
1212"Last-Translator: Indrit Bashkimi <indrit.bashkimi@gmail.com>\n"
1313"Language-Team: sq\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020"Language: sq\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -36,19 +36,19 @@ msgstr "Dil"
3636msgid "Unpin shortcut"
3737msgstr ""
3838
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
4040msgid "Device Locked"
4141msgstr "Pajisje e bllokuar"
4242
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
4444msgid "You have been locked out due to too many failed passphrase attempts."
4545msgstr ""
4646
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
4848msgid "You have been locked out due to too many failed passcode attempts."
4949msgstr ""
5050
51−#: qml/Components/DelayedLockscreen.qml:74
51+#: qml/Components/DelayedLockscreen.qml:75
5252#, qt-format
5353msgid "Please wait %1 minute and then try again…"
5454msgid_plural "Please wait %1 minutes and then try again…"
@@ -278,15 +278,15 @@ msgstr ""
278278msgid "Closes the current window."
279279msgstr ""
280280
281−#: qml/Components/Lockscreen.qml:231
281+#: qml/Components/Lockscreen.qml:239
282282msgid "Return to Call"
283283msgstr "Kthehu tek thirrja"
284284
285−#: qml/Components/Lockscreen.qml:231
285+#: qml/Components/Lockscreen.qml:239
286286msgid "Emergency Call"
287287msgstr "Thirrje emergjence"
288288
289−#: qml/Components/Lockscreen.qml:263
289+#: qml/Components/Lockscreen.qml:271
290290msgid "OK"
291291msgstr "OK"
292292
@@ -423,10 +423,14 @@ msgid ""
423423"touch pad to interact with the pointer."
424424msgstr ""
425425
426−#: qml/Greeter/CoverPage.qml:119
426+#: qml/Greeter/CoverPage.qml:127
427427msgid "Unlock"
428428msgstr "Zhblloko"
429429
430+#: qml/Greeter/Greeter.qml:536
431+msgid "Try again"
432+msgstr ""
433+
430434#: qml/Greeter/LoginList.qml:259
431435msgid "Retry"
432436msgstr "Riprovo"
@@ -459,34 +463,34 @@ msgid ""
459463"and all personal data will be deleted."
460464msgstr ""
461465
462−#: qml/Greeter/NarrowView.qml:116
466+#: qml/Greeter/NarrowView.qml:129
463467#, qt-format
464468msgid "Enter %1"
465469msgstr "Shkruaj %1"
466470
467−#: qml/Greeter/NarrowView.qml:117
471+#: qml/Greeter/NarrowView.qml:130
468472msgid "Enter passphrase"
469473msgstr ""
470474
471−#: qml/Greeter/NarrowView.qml:118
475+#: qml/Greeter/NarrowView.qml:131
472476msgid "Enter passcode"
473477msgstr ""
474478
475−#: qml/Greeter/NarrowView.qml:119
479+#: qml/Greeter/NarrowView.qml:135
476480#, qt-format
477481msgid "Sorry, incorrect %1"
478482msgstr "%1 e pasaktë"
479483
480−#: qml/Greeter/NarrowView.qml:120
484+#: qml/Greeter/NarrowView.qml:136
481485msgid "Sorry, incorrect passphrase"
482486msgstr ""
483487
484−#: qml/Greeter/NarrowView.qml:121
488+#: qml/Greeter/NarrowView.qml:137
485489msgctxt "passphrase"
486490msgid "Please re-enter"
487491msgstr "Shkruani përsëri"
488492
489−#: qml/Greeter/NarrowView.qml:122
493+#: qml/Greeter/NarrowView.qml:138
490494msgid "Sorry, incorrect passcode"
491495msgstr ""
492496
po/sr.po+22−18
@@ -8,7 +8,7 @@ msgid ""
88msgstr ""
99"Project-Id-Version: unity\n"
1010"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
11+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1212"PO-Revision-Date: 2016-05-04 19:50+0000\n"
1313"Last-Translator: Bojan Bogdanović <Unknown>\n"
1414"Language-Team: српски <xfce4@xfce4.org>\n"
@@ -17,8 +17,8 @@ msgstr ""
1717"Content-Transfer-Encoding: 8bit\n"
1818"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1919"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
20−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
21−"X-Generator: Launchpad (build 18097)\n"
20+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
21+"X-Generator: Launchpad (build 18111)\n"
2222"Language: sr\n"
2323
2424#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -38,19 +38,19 @@ msgstr "Напусти"
3838msgid "Unpin shortcut"
3939msgstr "Откачи пречицу"
4040
41−#: qml/Components/DelayedLockscreen.qml:49
41+#: qml/Components/DelayedLockscreen.qml:50
4242msgid "Device Locked"
4343msgstr "Уређај је закључан"
4444
45−#: qml/Components/DelayedLockscreen.qml:64
45+#: qml/Components/DelayedLockscreen.qml:65
4646msgid "You have been locked out due to too many failed passphrase attempts."
4747msgstr "Закључано је због превише погрешних покушаја уноса приступне фразе."
4848
49−#: qml/Components/DelayedLockscreen.qml:65
49+#: qml/Components/DelayedLockscreen.qml:66
5050msgid "You have been locked out due to too many failed passcode attempts."
5151msgstr "Закључано је због превише погрешних покушаја уноса приступног кода."
5252
53−#: qml/Components/DelayedLockscreen.qml:74
53+#: qml/Components/DelayedLockscreen.qml:75
5454#, qt-format
5555msgid "Please wait %1 minute and then try again…"
5656msgid_plural "Please wait %1 minutes and then try again…"
@@ -283,15 +283,15 @@ msgstr ""
283283msgid "Closes the current window."
284284msgstr ""
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Return to Call"
288288msgstr "Врати се на позив"
289289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291291msgid "Emergency Call"
292292msgstr "Хитан позив"
293293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295295msgid "OK"
296296msgstr "У реду"
297297
@@ -430,10 +430,14 @@ msgstr ""
430430"Ваш уређај је сада повезан на спољни монитор. користите овај екран као "
431431"додирну плочицу да покрећете показивач."
432432
433−#: qml/Greeter/CoverPage.qml:119
433+#: qml/Greeter/CoverPage.qml:127
434434msgid "Unlock"
435435msgstr "Откључај"
436436
437+#: qml/Greeter/Greeter.qml:536
438+msgid "Try again"
439+msgstr ""
440+
437441#: qml/Greeter/LoginList.qml:259
438442msgid "Retry"
439443msgstr "Покушај поново"
@@ -470,34 +474,34 @@ msgstr ""
470474"Ако се унесе погрешан приступни код, ваш телефон ће се вратити на фабричка "
471475"подешавања и сви лични подаци биће обрисани."
472476
473−#: qml/Greeter/NarrowView.qml:116
477+#: qml/Greeter/NarrowView.qml:129
474478#, qt-format
475479msgid "Enter %1"
476480msgstr "Унеси %1"
477481
478−#: qml/Greeter/NarrowView.qml:117
482+#: qml/Greeter/NarrowView.qml:130
479483msgid "Enter passphrase"
480484msgstr "Унесите приступну фразу"
481485
482−#: qml/Greeter/NarrowView.qml:118
486+#: qml/Greeter/NarrowView.qml:131
483487msgid "Enter passcode"
484488msgstr "Унесите приступни код"
485489
486−#: qml/Greeter/NarrowView.qml:119
490+#: qml/Greeter/NarrowView.qml:135
487491#, qt-format
488492msgid "Sorry, incorrect %1"
489493msgstr "Извините, погрешан %1"
490494
491−#: qml/Greeter/NarrowView.qml:120
495+#: qml/Greeter/NarrowView.qml:136
492496msgid "Sorry, incorrect passphrase"
493497msgstr "Извините, погрешна приступна фраза"
494498
495−#: qml/Greeter/NarrowView.qml:121
499+#: qml/Greeter/NarrowView.qml:137
496500msgctxt "passphrase"
497501msgid "Please re-enter"
498502msgstr "Поново унесите"
499503
500−#: qml/Greeter/NarrowView.qml:122
504+#: qml/Greeter/NarrowView.qml:138
501505msgid "Sorry, incorrect passcode"
502506msgstr "Извините, погрешан приступни код"
503507
po/sv.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2016-06-19 19:31+0000\n"
1212"Last-Translator: Josef Andersson <Unknown>\n"
1313"Language-Team: Swedish\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-20 06:12+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020"Language: sv\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -36,19 +36,19 @@ msgstr "Avsluta"
3636msgid "Unpin shortcut"
3737msgstr "Släpp genväg"
3838
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
4040msgid "Device Locked"
4141msgstr "Enhet låst"
4242
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
4444msgid "You have been locked out due to too many failed passphrase attempts."
4545msgstr "Du har blivit utlåst efter för många misslyckade lösenfrasförsök."
4646
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
4848msgid "You have been locked out due to too many failed passcode attempts."
4949msgstr "Du har blivit utlåst efter för många misslyckade lösenkodsförsök."
5050
51−#: qml/Components/DelayedLockscreen.qml:74
51+#: qml/Components/DelayedLockscreen.qml:75
5252#, qt-format
5353msgid "Please wait %1 minute and then try again…"
5454msgid_plural "Please wait %1 minutes and then try again…"
@@ -280,15 +280,15 @@ msgstr "Alt + F4"
280280msgid "Closes the current window."
281281msgstr "Stänger det aktuella fönstret."
282282
283−#: qml/Components/Lockscreen.qml:231
283+#: qml/Components/Lockscreen.qml:239
284284msgid "Return to Call"
285285msgstr "Tillbaka till samtal"
286286
287−#: qml/Components/Lockscreen.qml:231
287+#: qml/Components/Lockscreen.qml:239
288288msgid "Emergency Call"
289289msgstr "Nödsamtal"
290290
291−#: qml/Components/Lockscreen.qml:263
291+#: qml/Components/Lockscreen.qml:271
292292msgid "OK"
293293msgstr "OK"
294294
@@ -428,10 +428,14 @@ msgstr ""
428428"Din enhet är nu ansluten till en extern display. Använd denna skärm som en "
429429"styrplatta för att interagera med pekaren."
430430
431−#: qml/Greeter/CoverPage.qml:119
431+#: qml/Greeter/CoverPage.qml:127
432432msgid "Unlock"
433433msgstr "Lås upp"
434434
435+#: qml/Greeter/Greeter.qml:536
436+msgid "Try again"
437+msgstr ""
438+
435439#: qml/Greeter/LoginList.qml:259
436440msgid "Retry"
437441msgstr "Försök igen"
@@ -468,34 +472,34 @@ msgstr ""
468472"Om lösenkoden anges felaktigt kommer telefonen att fabrikåterställas och all "
469473"personlig data kommer att tas bort."
470474
471−#: qml/Greeter/NarrowView.qml:116
475+#: qml/Greeter/NarrowView.qml:129
472476#, qt-format
473477msgid "Enter %1"
474478msgstr "Ange %1"
475479
476−#: qml/Greeter/NarrowView.qml:117
480+#: qml/Greeter/NarrowView.qml:130
477481msgid "Enter passphrase"
478482msgstr "Ange lösenfras"
479483
480−#: qml/Greeter/NarrowView.qml:118
484+#: qml/Greeter/NarrowView.qml:131
481485msgid "Enter passcode"
482486msgstr "Ange lösenkod"
483487
484−#: qml/Greeter/NarrowView.qml:119
488+#: qml/Greeter/NarrowView.qml:135
485489#, qt-format
486490msgid "Sorry, incorrect %1"
487491msgstr "Felaktig %1"
488492
489−#: qml/Greeter/NarrowView.qml:120
493+#: qml/Greeter/NarrowView.qml:136
490494msgid "Sorry, incorrect passphrase"
491495msgstr "Felaktig lösenfras"
492496
493−#: qml/Greeter/NarrowView.qml:121
497+#: qml/Greeter/NarrowView.qml:137
494498msgctxt "passphrase"
495499msgid "Please re-enter"
496500msgstr "Ange igen"
497501
498−#: qml/Greeter/NarrowView.qml:122
502+#: qml/Greeter/NarrowView.qml:138
499503msgid "Sorry, incorrect passcode"
500504msgstr "Felaktig lösenkod"
501505
po/sw.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-07-17 20:02+0000\n"
1212"Last-Translator: Valentine <mwangi_valentino@yahoo.com>\n"
1313"Language-Team: Swahili <sw@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,21 +35,21 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr "Toa njia ya mkato ya nambari ya siri"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "kifaa kimefungwa"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545"Huwezi kulogi kwa sababu umenoa kubonyeza vizuri neno la siri mara nyingi."
4646
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
4848msgid "You have been locked out due to too many failed passcode attempts."
4949msgstr ""
5050"Huwezi kulogi kwa sababu umenoa kubonyeza vizuri neno la siri mara nyingi."
5151
52−#: qml/Components/DelayedLockscreen.qml:74
52+#: qml/Components/DelayedLockscreen.qml:75
5353#, qt-format
5454msgid "Please wait %1 minute and then try again…"
5555msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr ""
279279msgid "Closes the current window."
280280msgstr ""
281281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283283msgid "Return to Call"
284284msgstr "Rudi nyuma upige simu"
285285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287287msgid "Emergency Call"
288288msgstr "Simu ya dharura"
289289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291291msgid "OK"
292292msgstr "Sawa"
293293
@@ -424,10 +424,14 @@ msgid ""
424424"touch pad to interact with the pointer."
425425msgstr ""
426426
427−#: qml/Greeter/CoverPage.qml:119
427+#: qml/Greeter/CoverPage.qml:127
428428msgid "Unlock"
429429msgstr "Fungua"
430430
431+#: qml/Greeter/Greeter.qml:536
432+msgid "Try again"
433+msgstr ""
434+
431435#: qml/Greeter/LoginList.qml:259
432436msgid "Retry"
433437msgstr "Jaribu tena"
@@ -464,34 +468,34 @@ msgstr ""
464468"Kama utabonyeza neno la siri lisilofaa, simu yako itajiweka upya na data "
465469"yako yote itafutwa."
466470
467−#: qml/Greeter/NarrowView.qml:116
471+#: qml/Greeter/NarrowView.qml:129
468472#, qt-format
469473msgid "Enter %1"
470474msgstr "Bonyeza %1"
471475
472−#: qml/Greeter/NarrowView.qml:117
476+#: qml/Greeter/NarrowView.qml:130
473477msgid "Enter passphrase"
474478msgstr "Bonyeza neno siri"
475479
476−#: qml/Greeter/NarrowView.qml:118
480+#: qml/Greeter/NarrowView.qml:131
477481msgid "Enter passcode"
478482msgstr "Bonyeza neno la siri"
479483
480−#: qml/Greeter/NarrowView.qml:119
484+#: qml/Greeter/NarrowView.qml:135
481485#, qt-format
482486msgid "Sorry, incorrect %1"
483487msgstr "Samahani, %1 halidhihirishi"
484488
485−#: qml/Greeter/NarrowView.qml:120
489+#: qml/Greeter/NarrowView.qml:136
486490msgid "Sorry, incorrect passphrase"
487491msgstr "Samahani, neno la siri si hilo"
488492
489−#: qml/Greeter/NarrowView.qml:121
493+#: qml/Greeter/NarrowView.qml:137
490494msgctxt "passphrase"
491495msgid "Please re-enter"
492496msgstr ""
493497
494−#: qml/Greeter/NarrowView.qml:122
498+#: qml/Greeter/NarrowView.qml:138
495499msgid "Sorry, incorrect passcode"
496500msgstr "Samahani, neno la siri si hilo"
497501
po/ta.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2013-10-24 11:36+0000\n"
1212"Last-Translator: Arun Kumar - அருண் குமார் <thangam.arunx@gmail.com>\n"
1313"Language-Team: Ubuntu Tamil Team/Free Tamil Computing/Thamizha\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020"Language: ta\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -36,19 +36,19 @@ msgstr ""
3636msgid "Unpin shortcut"
3737msgstr ""
3838
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
4040msgid "Device Locked"
4141msgstr ""
4242
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
4444msgid "You have been locked out due to too many failed passphrase attempts."
4545msgstr ""
4646
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
4848msgid "You have been locked out due to too many failed passcode attempts."
4949msgstr ""
5050
51−#: qml/Components/DelayedLockscreen.qml:74
51+#: qml/Components/DelayedLockscreen.qml:75
5252#, qt-format
5353msgid "Please wait %1 minute and then try again…"
5454msgid_plural "Please wait %1 minutes and then try again…"
@@ -278,15 +278,15 @@ msgstr ""
278278msgid "Closes the current window."
279279msgstr ""
280280
281−#: qml/Components/Lockscreen.qml:231
281+#: qml/Components/Lockscreen.qml:239
282282msgid "Return to Call"
283283msgstr ""
284284
285−#: qml/Components/Lockscreen.qml:231
285+#: qml/Components/Lockscreen.qml:239
286286msgid "Emergency Call"
287287msgstr "அவசர அழைப்பு"
288288
289−#: qml/Components/Lockscreen.qml:263
289+#: qml/Components/Lockscreen.qml:271
290290msgid "OK"
291291msgstr ""
292292
@@ -423,10 +423,14 @@ msgid ""
423423"touch pad to interact with the pointer."
424424msgstr ""
425425
426−#: qml/Greeter/CoverPage.qml:119
426+#: qml/Greeter/CoverPage.qml:127
427427msgid "Unlock"
428428msgstr ""
429429
430+#: qml/Greeter/Greeter.qml:536
431+msgid "Try again"
432+msgstr ""
433+
430434#: qml/Greeter/LoginList.qml:259
431435msgid "Retry"
432436msgstr ""
@@ -459,34 +463,34 @@ msgid ""
459463"and all personal data will be deleted."
460464msgstr ""
461465
462−#: qml/Greeter/NarrowView.qml:116
466+#: qml/Greeter/NarrowView.qml:129
463467#, qt-format
464468msgid "Enter %1"
465469msgstr ""
466470
467−#: qml/Greeter/NarrowView.qml:117
471+#: qml/Greeter/NarrowView.qml:130
468472msgid "Enter passphrase"
469473msgstr ""
470474
471−#: qml/Greeter/NarrowView.qml:118
475+#: qml/Greeter/NarrowView.qml:131
472476msgid "Enter passcode"
473477msgstr ""
474478
475−#: qml/Greeter/NarrowView.qml:119
479+#: qml/Greeter/NarrowView.qml:135
476480#, qt-format
477481msgid "Sorry, incorrect %1"
478482msgstr ""
479483
480−#: qml/Greeter/NarrowView.qml:120
484+#: qml/Greeter/NarrowView.qml:136
481485msgid "Sorry, incorrect passphrase"
482486msgstr ""
483487
484−#: qml/Greeter/NarrowView.qml:121
488+#: qml/Greeter/NarrowView.qml:137
485489msgctxt "passphrase"
486490msgid "Please re-enter"
487491msgstr ""
488492
489−#: qml/Greeter/NarrowView.qml:122
493+#: qml/Greeter/NarrowView.qml:138
490494msgid "Sorry, incorrect passcode"
491495msgstr ""
492496
po/te.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2014-07-19 10:04+0000\n"
1212"Last-Translator: Praveen Illa <mail2ipn@gmail.com>\n"
1313"Language-Team: Telugu <te@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr ""
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr ""
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277277msgid "Closes the current window."
278278msgstr ""
279279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281281msgid "Return to Call"
282282msgstr ""
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Emergency Call"
286286msgstr "అత్యవసర పిలుపు"
287287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289289msgid "OK"
290290msgstr "సరే"
291291
@@ -422,10 +422,14 @@ msgid ""
422422"touch pad to interact with the pointer."
423423msgstr ""
424424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426426msgid "Unlock"
427427msgstr ""
428428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429433#: qml/Greeter/LoginList.qml:259
430434msgid "Retry"
431435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458462"and all personal data will be deleted."
459463msgstr ""
460464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462466#, qt-format
463467msgid "Enter %1"
464468msgstr ""
465469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467471msgid "Enter passphrase"
468472msgstr ""
469473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471475msgid "Enter passcode"
472476msgstr ""
473477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475479#, qt-format
476480msgid "Sorry, incorrect %1"
477481msgstr ""
478482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480484msgid "Sorry, incorrect passphrase"
481485msgstr ""
482486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484488msgctxt "passphrase"
485489msgid "Please re-enter"
486490msgstr ""
487491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489493msgid "Sorry, incorrect passcode"
490494msgstr ""
491495
po/th.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2014-10-02 04:55+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Thai <th@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr ""
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr ""
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277277msgid "Closes the current window."
278278msgstr ""
279279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281281msgid "Return to Call"
282282msgstr ""
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Emergency Call"
286286msgstr ""
287287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289289msgid "OK"
290290msgstr ""
291291
@@ -422,10 +422,14 @@ msgid ""
422422"touch pad to interact with the pointer."
423423msgstr ""
424424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426426msgid "Unlock"
427427msgstr ""
428428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429433#: qml/Greeter/LoginList.qml:259
430434msgid "Retry"
431435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458462"and all personal data will be deleted."
459463msgstr ""
460464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462466#, qt-format
463467msgid "Enter %1"
464468msgstr ""
465469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467471msgid "Enter passphrase"
468472msgstr ""
469473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471475msgid "Enter passcode"
472476msgstr ""
473477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475479#, qt-format
476480msgid "Sorry, incorrect %1"
477481msgstr ""
478482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480484msgid "Sorry, incorrect passphrase"
481485msgstr ""
482486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484488msgctxt "passphrase"
485489msgid "Please re-enter"
486490msgstr ""
487491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489493msgid "Sorry, incorrect passcode"
490494msgstr ""
491495
po/tr.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-03-22 15:56+0000\n"
1212"Last-Translator: Arda Ünlü <aarda.uunlu@gmail.com>\n"
1313"Language-Team: Turkish <tr@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "Çıkış"
3535msgid "Unpin shortcut"
3636msgstr "Kısayol iğnesini kaldır"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Cihaz Kilitli"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr "Çok sayıda parola hatası yaptığınız için kilitlendiniz."
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr "Çok sayıda parola hatası yaptığınız için kilitlendiniz."
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277277msgid "Closes the current window."
278278msgstr ""
279279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281281msgid "Return to Call"
282282msgstr "Çağrıya Dön"
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Emergency Call"
286286msgstr "Acil Arama"
287287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289289msgid "OK"
290290msgstr "Tamam"
291291
@@ -422,10 +422,14 @@ msgid ""
422422"touch pad to interact with the pointer."
423423msgstr ""
424424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426426msgid "Unlock"
427427msgstr "Kilidi Aç"
428428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429433#: qml/Greeter/LoginList.qml:259
430434msgid "Retry"
431435msgstr "Tekrar Dene"
@@ -462,34 +466,34 @@ msgstr ""
462466"Eğer hatalı parola girilirse, telefonunuz fabrika ayarlarına dönecek ve tüm "
463467"kişisel verileriniz silinecek."
464468
465−#: qml/Greeter/NarrowView.qml:116
469+#: qml/Greeter/NarrowView.qml:129
466470#, qt-format
467471msgid "Enter %1"
468472msgstr "%1 Girin"
469473
470−#: qml/Greeter/NarrowView.qml:117
474+#: qml/Greeter/NarrowView.qml:130
471475msgid "Enter passphrase"
472476msgstr "Parolayı girin"
473477
474−#: qml/Greeter/NarrowView.qml:118
478+#: qml/Greeter/NarrowView.qml:131
475479msgid "Enter passcode"
476480msgstr "Parolayı girin"
477481
478−#: qml/Greeter/NarrowView.qml:119
482+#: qml/Greeter/NarrowView.qml:135
479483#, qt-format
480484msgid "Sorry, incorrect %1"
481485msgstr "Üzgünüm, hatalı %1"
482486
483−#: qml/Greeter/NarrowView.qml:120
487+#: qml/Greeter/NarrowView.qml:136
484488msgid "Sorry, incorrect passphrase"
485489msgstr "Üzgünüm, hatalı parola"
486490
487−#: qml/Greeter/NarrowView.qml:121
491+#: qml/Greeter/NarrowView.qml:137
488492msgctxt "passphrase"
489493msgid "Please re-enter"
490494msgstr "Lütfen yeniden girin"
491495
492−#: qml/Greeter/NarrowView.qml:122
496+#: qml/Greeter/NarrowView.qml:138
493497msgid "Sorry, incorrect passcode"
494498msgstr "Üzgünüm, hatalı parola"
495499
po/ug.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-12-01 07:37+0000\n"
1212"Last-Translator: Eltikin <eltikinuyghur@hotmail.com>\n"
1313"Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "چېكىن"
3535msgid "Unpin shortcut"
3636msgstr "تېزلەتمىنى ئېلىۋەت"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "ئۈسكۈنە قۇلۇپلانغان"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr "خاتا ئىم جۈملىسى كۆپ قېتىم كىرگۈزۈلگەنلىكى ئۈچۈن قۇلۇپلاندى."
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr "ھىساباتىڭز قۇلۇپلاندى.ئىم كىرگۈزۈشتە كۆپ قېتىم خاتالاشتىڭز."
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -278,15 +278,15 @@ msgstr ""
278278msgid "Closes the current window."
279279msgstr ""
280280
281−#: qml/Components/Lockscreen.qml:231
281+#: qml/Components/Lockscreen.qml:239
282282msgid "Return to Call"
283283msgstr "سۆزلىشىشكە قايت"
284284
285−#: qml/Components/Lockscreen.qml:231
285+#: qml/Components/Lockscreen.qml:239
286286msgid "Emergency Call"
287287msgstr "جىددىي تېلېفون"
288288
289−#: qml/Components/Lockscreen.qml:263
289+#: qml/Components/Lockscreen.qml:271
290290msgid "OK"
291291msgstr "تامام"
292292
@@ -423,10 +423,14 @@ msgid ""
423423"touch pad to interact with the pointer."
424424msgstr ""
425425
426−#: qml/Greeter/CoverPage.qml:119
426+#: qml/Greeter/CoverPage.qml:127
427427msgid "Unlock"
428428msgstr "قۇلۇپسىزلا"
429429
430+#: qml/Greeter/Greeter.qml:536
431+msgid "Try again"
432+msgstr ""
433+
430434#: qml/Greeter/LoginList.qml:259
431435msgid "Retry"
432436msgstr "قايتا سىنا"
@@ -463,34 +467,34 @@ msgstr ""
463467"ئەگەر ئىم كودى توغرا بولمىسا، تېلېفونىڭىز ئەسلىگە قايتۇرۇلۇپ، زاۋۇتتىن "
464468"چىققان ھالەتكە كېلىپ قالىدۇ. بارلىق مەزمۇنلار يوقىلىدۇ."
465469
466−#: qml/Greeter/NarrowView.qml:116
470+#: qml/Greeter/NarrowView.qml:129
467471#, qt-format
468472msgid "Enter %1"
469473msgstr "%1 نى كىرگۈزۈڭ"
470474
471−#: qml/Greeter/NarrowView.qml:117
475+#: qml/Greeter/NarrowView.qml:130
472476msgid "Enter passphrase"
473477msgstr "ئىم كىرگۈزۈڭ"
474478
475−#: qml/Greeter/NarrowView.qml:118
479+#: qml/Greeter/NarrowView.qml:131
476480msgid "Enter passcode"
477481msgstr "ئىم كودى(passcode)نى كىرگۈزۈڭ"
478482
479−#: qml/Greeter/NarrowView.qml:119
483+#: qml/Greeter/NarrowView.qml:135
480484#, qt-format
481485msgid "Sorry, incorrect %1"
482486msgstr "كەچۈرۈڭ، %1 توغرا ئەمەس"
483487
484−#: qml/Greeter/NarrowView.qml:120
488+#: qml/Greeter/NarrowView.qml:136
485489msgid "Sorry, incorrect passphrase"
486490msgstr "كەچۈرۈڭ، ئىم توغرا ئەمەس"
487491
488−#: qml/Greeter/NarrowView.qml:121
492+#: qml/Greeter/NarrowView.qml:137
489493msgctxt "passphrase"
490494msgid "Please re-enter"
491495msgstr "قايتا كىرگۈزۈڭ"
492496
493−#: qml/Greeter/NarrowView.qml:122
497+#: qml/Greeter/NarrowView.qml:138
494498msgid "Sorry, incorrect passcode"
495499msgstr "كەچۈرۈڭ، ئىم توغرا ئەمەس"
496500
po/uk.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2016-04-01 17:32+0000\n"
1212"Last-Translator: Yuri Chornoivan <yurchor@gmail.com>\n"
1313"Language-Team: Ukrainian <uk@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
20−"X-Generator: Launchpad (build 18097)\n"
19+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
20+"X-Generator: Launchpad (build 18111)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -36,23 +36,23 @@ msgstr "Вийти"
3636msgid "Unpin shortcut"
3737msgstr "Розблокувати кнопку"
3838
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
4040msgid "Device Locked"
4141msgstr "Пристрій заблоковано"
4242
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
4444msgid "You have been locked out due to too many failed passphrase attempts."
4545msgstr ""
4646"Ваш пристрій було заблоковано через перевищення граничної кількості спроб "
4747"введення пароля."
4848
49−#: qml/Components/DelayedLockscreen.qml:65
49+#: qml/Components/DelayedLockscreen.qml:66
5050msgid "You have been locked out due to too many failed passcode attempts."
5151msgstr ""
5252"Ваш пристрій було заблоковано через перевищення граничної кількості спроб "
5353"введення коду-пароля."
5454
55−#: qml/Components/DelayedLockscreen.qml:74
55+#: qml/Components/DelayedLockscreen.qml:75
5656#, qt-format
5757msgid "Please wait %1 minute and then try again…"
5858msgid_plural "Please wait %1 minutes and then try again…"
@@ -285,15 +285,15 @@ msgstr ""
285285msgid "Closes the current window."
286286msgstr ""
287287
288−#: qml/Components/Lockscreen.qml:231
288+#: qml/Components/Lockscreen.qml:239
289289msgid "Return to Call"
290290msgstr "Повернутися до дзвінка"
291291
292−#: qml/Components/Lockscreen.qml:231
292+#: qml/Components/Lockscreen.qml:239
293293msgid "Emergency Call"
294294msgstr "Терміновий виклик"
295295
296−#: qml/Components/Lockscreen.qml:263
296+#: qml/Components/Lockscreen.qml:271
297297msgid "OK"
298298msgstr "Гаразд"
299299
@@ -434,10 +434,14 @@ msgstr ""
434434"Ваш пристрій під’єднаний до зовнішнього дисплея. Використовуйте цей екран як "
435435"сенсорну панель для керування вказівником."
436436
437−#: qml/Greeter/CoverPage.qml:119
437+#: qml/Greeter/CoverPage.qml:127
438438msgid "Unlock"
439439msgstr "Розблокувати"
440440
441+#: qml/Greeter/Greeter.qml:536
442+msgid "Try again"
443+msgstr ""
444+
441445#: qml/Greeter/LoginList.qml:259
442446msgid "Retry"
443447msgstr "Повторити"
@@ -474,34 +478,34 @@ msgstr ""
474478"Якщо код-пароль буде вказано неправильно, телефон повернеться до початкового "
475479"стану, усі особисті дані буде вилучено."
476480
477−#: qml/Greeter/NarrowView.qml:116
481+#: qml/Greeter/NarrowView.qml:129
478482#, qt-format
479483msgid "Enter %1"
480484msgstr "Введіть %1"
481485
482−#: qml/Greeter/NarrowView.qml:117
486+#: qml/Greeter/NarrowView.qml:130
483487msgid "Enter passphrase"
484488msgstr "Введіть пароль"
485489
486−#: qml/Greeter/NarrowView.qml:118
490+#: qml/Greeter/NarrowView.qml:131
487491msgid "Enter passcode"
488492msgstr "Введіть код"
489493
490−#: qml/Greeter/NarrowView.qml:119
494+#: qml/Greeter/NarrowView.qml:135
491495#, qt-format
492496msgid "Sorry, incorrect %1"
493497msgstr "Вибачте, помилковий %1"
494498
495−#: qml/Greeter/NarrowView.qml:120
499+#: qml/Greeter/NarrowView.qml:136
496500msgid "Sorry, incorrect passphrase"
497501msgstr "Вибачте, помилковий пароль"
498502
499−#: qml/Greeter/NarrowView.qml:121
503+#: qml/Greeter/NarrowView.qml:137
500504msgctxt "passphrase"
501505msgid "Please re-enter"
502506msgstr "Введіть ще раз"
503507
504−#: qml/Greeter/NarrowView.qml:122
508+#: qml/Greeter/NarrowView.qml:138
505509msgid "Sorry, incorrect passcode"
506510msgstr "Вибачте, помилковий код-пароль"
507511
po/unity8.pot+52−34
@@ -8,7 +8,7 @@ msgid ""
88msgstr ""
99"Project-Id-Version: unity8\n"
1010"Report-Msgid-Bugs-To: \n"
11−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
11+"POT-Creation-Date: 2016-06-27 18:49+0000\n"
1212"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1313"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1414"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -35,19 +35,19 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr ""
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr ""
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,18 +277,28 @@ msgstr ""
277277msgid "Closes the current window."
278278msgstr ""
279279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281281msgid "Return to Call"
282282msgstr ""
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Emergency Call"
286286msgstr ""
287287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289289msgid "OK"
290290msgstr ""
291291
292+#: qml/Components/MediaServices/VideoPlayerControls.qml:44
293+#, qt-format
294+msgid "%1:%2:%3"
295+msgstr ""
296+
297+#: qml/Components/MediaServices/VideoPlayerControls.qml:49
298+#, qt-format
299+msgid "%1:%2"
300+msgstr ""
301+
292302#: qml/Components/ModeSwitchWarningDialog.qml:32
293303msgid "Apps may have unsaved data:"
294304msgstr ""
@@ -315,6 +325,10 @@ msgstr ""
315325msgid "Close all"
316326msgstr ""
317327
328+#: qml/Components/SharingPicker.qml:54
329+msgid "Preview Share Item"
330+msgstr ""
331+
318332#: qml/Dash/DashPageHeader.qml:333
319333msgctxt "Button: Open the Ubuntu Store"
320334msgid "Store"
@@ -388,10 +402,6 @@ msgstr ""
388402msgid "Add a review"
389403msgstr ""
390404
391−#: qml/Dash/Previews/PreviewSharing.qml:66
392−msgid "Preview Share Item"
393−msgstr ""
394−
395405#: qml/Dash/PullToRefreshScopeStyle.qml:55
396406msgid "Pull to refresh…"
397407msgstr ""
@@ -408,11 +418,11 @@ msgstr ""
408418msgid "Manage"
409419msgstr ""
410420
411−#: qml/Dash/ScopesList.qml:101
421+#: qml/Dash/ScopesList.qml:102
412422msgid "Home"
413423msgstr ""
414424
415−#: qml/Dash/ScopesList.qml:102
425+#: qml/Dash/ScopesList.qml:103
416426msgid "Also installed"
417427msgstr ""
418428
@@ -422,10 +432,14 @@ msgid ""
422432"touch pad to interact with the pointer."
423433msgstr ""
424434
425−#: qml/Greeter/CoverPage.qml:119
435+#: qml/Greeter/CoverPage.qml:127
426436msgid "Unlock"
427437msgstr ""
428438
439+#: qml/Greeter/Greeter.qml:539
440+msgid "Try again"
441+msgstr ""
442+
429443#: qml/Greeter/LoginList.qml:259
430444msgid "Retry"
431445msgstr ""
@@ -458,34 +472,34 @@ msgid ""
458472"and all personal data will be deleted."
459473msgstr ""
460474
461−#: qml/Greeter/NarrowView.qml:116
475+#: qml/Greeter/NarrowView.qml:129
462476#, qt-format
463477msgid "Enter %1"
464478msgstr ""
465479
466−#: qml/Greeter/NarrowView.qml:117
480+#: qml/Greeter/NarrowView.qml:130
467481msgid "Enter passphrase"
468482msgstr ""
469483
470−#: qml/Greeter/NarrowView.qml:118
484+#: qml/Greeter/NarrowView.qml:131
471485msgid "Enter passcode"
472486msgstr ""
473487
474−#: qml/Greeter/NarrowView.qml:119
488+#: qml/Greeter/NarrowView.qml:135
475489#, qt-format
476490msgid "Sorry, incorrect %1"
477491msgstr ""
478492
479−#: qml/Greeter/NarrowView.qml:120
493+#: qml/Greeter/NarrowView.qml:136
480494msgid "Sorry, incorrect passphrase"
481495msgstr ""
482496
483−#: qml/Greeter/NarrowView.qml:121
497+#: qml/Greeter/NarrowView.qml:137
484498msgctxt "passphrase"
485499msgid "Please re-enter"
486500msgstr ""
487501
488−#: qml/Greeter/NarrowView.qml:122
502+#: qml/Greeter/NarrowView.qml:138
489503msgid "Sorry, incorrect passcode"
490504msgstr ""
491505
@@ -613,7 +627,7 @@ msgstr ""
613627#: qml/Wizard/Pages/40-location.qml:271 qml/Wizard/Pages/50-timezone.qml:270
614628#: qml/Wizard/Pages/60-account.qml:65 qml/Wizard/Pages/70-passwd-type.qml:144
615629#: qml/Wizard/Pages/75-report-check.qml:84
616−#: qml/Wizard/Pages/passcode-desktop.qml:124
630+#: qml/Wizard/Pages/passcode-desktop.qml:141
617631#: qml/Wizard/Pages/password-set.qml:141
618632msgid "Next"
619633msgstr ""
@@ -765,7 +779,7 @@ msgid "Service Terms"
765779msgstr ""
766780
767781#: qml/Wizard/Pages/passcode-confirm.qml:43
768−#: qml/Wizard/Pages/passcode-desktop.qml:80
782+#: qml/Wizard/Pages/passcode-desktop.qml:96
769783msgid "Confirm passcode"
770784msgstr ""
771785
@@ -782,24 +796,24 @@ msgstr ""
782796msgid "Lock Screen Passcode"
783797msgstr ""
784798
785−#: qml/Wizard/Pages/passcode-desktop.qml:56
799+#: qml/Wizard/Pages/passcode-desktop.qml:60
786800msgid "Enter 4 numbers to setup your passcode"
787801msgstr ""
788802
789−#: qml/Wizard/Pages/passcode-desktop.qml:65
803+#: qml/Wizard/Pages/passcode-desktop.qml:76
790804#: qml/Wizard/Pages/passcode-set.qml:54
791805msgid "Choose passcode"
792806msgstr ""
793807
794−#: qml/Wizard/Pages/passcode-desktop.qml:105
808+#: qml/Wizard/Pages/passcode-desktop.qml:126
795809msgid "Passcode too short"
796810msgstr ""
797811
798−#: qml/Wizard/Pages/passcode-desktop.qml:107
812+#: qml/Wizard/Pages/passcode-desktop.qml:128
799813msgid "Passcodes match"
800814msgstr ""
801815
802−#: qml/Wizard/Pages/passcode-desktop.qml:109
816+#: qml/Wizard/Pages/passcode-desktop.qml:130
803817msgid "Passcodes do not match"
804818msgstr ""
805819
@@ -848,25 +862,29 @@ msgid "To proceed with no SIM tap Skip."
848862msgstr ""
849863
850864#: qml/Wizard/PasswordMeter.qml:87
851−msgid "Passwords match"
865+msgid "Password too short"
852866msgstr ""
853867
854868#: qml/Wizard/PasswordMeter.qml:89
869+msgid "Passwords match"
870+msgstr ""
871+
872+#: qml/Wizard/PasswordMeter.qml:91
855873msgid "Passwords do not match"
856874msgstr ""
857875
858−#: qml/Wizard/PasswordMeter.qml:93
876+#: qml/Wizard/PasswordMeter.qml:95
859877msgid "Strong password"
860878msgstr ""
861879
862−#: qml/Wizard/PasswordMeter.qml:95
880+#: qml/Wizard/PasswordMeter.qml:97
863881msgid "Fair password"
864882msgstr ""
865883
866−#: qml/Wizard/PasswordMeter.qml:97
884+#: qml/Wizard/PasswordMeter.qml:99
867885msgid "Weak password"
868886msgstr ""
869887
870−#: qml/Wizard/PasswordMeter.qml:99
888+#: qml/Wizard/PasswordMeter.qml:101
871889msgid "Very weak password"
872890msgstr ""
po/ur.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-05-05 03:12+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Urdu <ur@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr ""
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr ""
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277277msgid "Closes the current window."
278278msgstr ""
279279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281281msgid "Return to Call"
282282msgstr ""
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Emergency Call"
286286msgstr ""
287287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289289msgid "OK"
290290msgstr ""
291291
@@ -422,10 +422,14 @@ msgid ""
422422"touch pad to interact with the pointer."
423423msgstr ""
424424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426426msgid "Unlock"
427427msgstr ""
428428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429433#: qml/Greeter/LoginList.qml:259
430434msgid "Retry"
431435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458462"and all personal data will be deleted."
459463msgstr ""
460464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462466#, qt-format
463467msgid "Enter %1"
464468msgstr ""
465469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467471msgid "Enter passphrase"
468472msgstr ""
469473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471475msgid "Enter passcode"
472476msgstr ""
473477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475479#, qt-format
476480msgid "Sorry, incorrect %1"
477481msgstr ""
478482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480484msgid "Sorry, incorrect passphrase"
481485msgstr ""
482486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484488msgctxt "passphrase"
485489msgid "Please re-enter"
486490msgstr ""
487491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489493msgid "Sorry, incorrect passcode"
490494msgstr ""
491495
po/uz.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-07-04 16:03+0000\n"
1212"Last-Translator: Learner <muzaffar.habibullayev@yandex.ru>\n"
1313"Language-Team: Uzbek <uz@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr ""
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr ""
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277277msgid "Closes the current window."
278278msgstr ""
279279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281281msgid "Return to Call"
282282msgstr ""
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Emergency Call"
286286msgstr ""
287287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289289msgid "OK"
290290msgstr ""
291291
@@ -422,10 +422,14 @@ msgid ""
422422"touch pad to interact with the pointer."
423423msgstr ""
424424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426426msgid "Unlock"
427427msgstr ""
428428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429433#: qml/Greeter/LoginList.qml:259
430434msgid "Retry"
431435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458462"and all personal data will be deleted."
459463msgstr ""
460464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462466#, qt-format
463467msgid "Enter %1"
464468msgstr ""
465469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467471msgid "Enter passphrase"
468472msgstr ""
469473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471475msgid "Enter passcode"
472476msgstr ""
473477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475479#, qt-format
476480msgid "Sorry, incorrect %1"
477481msgstr ""
478482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480484msgid "Sorry, incorrect passphrase"
481485msgstr ""
482486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484488msgctxt "passphrase"
485489msgid "Please re-enter"
486490msgstr ""
487491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489493msgid "Sorry, incorrect passcode"
490494msgstr ""
491495
po/vi.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2014-01-15 01:19+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Vietnamese <vi@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr ""
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr ""
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277277msgid "Closes the current window."
278278msgstr ""
279279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281281msgid "Return to Call"
282282msgstr ""
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Emergency Call"
286286msgstr ""
287287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289289msgid "OK"
290290msgstr ""
291291
@@ -422,10 +422,14 @@ msgid ""
422422"touch pad to interact with the pointer."
423423msgstr ""
424424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426426msgid "Unlock"
427427msgstr ""
428428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429433#: qml/Greeter/LoginList.qml:259
430434msgid "Retry"
431435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458462"and all personal data will be deleted."
459463msgstr ""
460464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462466#, qt-format
463467msgid "Enter %1"
464468msgstr ""
465469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467471msgid "Enter passphrase"
468472msgstr ""
469473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471475msgid "Enter passcode"
472476msgstr ""
473477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475479#, qt-format
476480msgid "Sorry, incorrect %1"
477481msgstr ""
478482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480484msgid "Sorry, incorrect passphrase"
481485msgstr ""
482486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484488msgctxt "passphrase"
485489msgid "Please re-enter"
486490msgstr ""
487491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489493msgid "Sorry, incorrect passcode"
490494msgstr ""
491495
po/wo.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2015-10-29 11:16+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Wolof <wo@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "Génn"
3535msgid "Unpin shortcut"
3636msgstr "Dindi"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "Téye nañ jumtukaay"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr "Téye nañ la ndax danga duggal ay yoon kàddu-jàll bu baaxul."
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr "Téye nañ la ndax danga duggal ay yoon kàddu-jàll bu baaxul."
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277277msgid "Closes the current window."
278278msgstr ""
279279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281281msgid "Return to Call"
282282msgstr "Dellu ci woote bi"
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Emergency Call"
286286msgstr "Wooteb wallu"
287287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289289msgid "OK"
290290msgstr "OK"
291291
@@ -422,10 +422,14 @@ msgid ""
422422"touch pad to interact with the pointer."
423423msgstr ""
424424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426426msgid "Unlock"
427427msgstr "Ubbi"
428428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429433#: qml/Greeter/LoginList.qml:259
430434msgid "Retry"
431435msgstr "Jéemaat"
@@ -462,34 +466,34 @@ msgstr ""
462466"Su baatu-jàll bi dugg baaxul, sa wootekaay di nañ ko delloo nimu meloon ci "
463467"defaram te sa bépp njoxe di nañ ko far."
464468
465−#: qml/Greeter/NarrowView.qml:116
469+#: qml/Greeter/NarrowView.qml:129
466470#, qt-format
467471msgid "Enter %1"
468472msgstr "Bindal %1"
469473
470−#: qml/Greeter/NarrowView.qml:117
474+#: qml/Greeter/NarrowView.qml:130
471475msgid "Enter passphrase"
472476msgstr "Duggal kàddu-jàll"
473477
474−#: qml/Greeter/NarrowView.qml:118
478+#: qml/Greeter/NarrowView.qml:131
475479msgid "Enter passcode"
476480msgstr "Duggal baatu-jàll"
477481
478−#: qml/Greeter/NarrowView.qml:119
482+#: qml/Greeter/NarrowView.qml:135
479483#, qt-format
480484msgid "Sorry, incorrect %1"
481485msgstr "Jéggalu, %1 baaxul"
482486
483−#: qml/Greeter/NarrowView.qml:120
487+#: qml/Greeter/NarrowView.qml:136
484488msgid "Sorry, incorrect passphrase"
485489msgstr "Jéggalu, kàddu-jàll gi baaxul"
486490
487−#: qml/Greeter/NarrowView.qml:121
491+#: qml/Greeter/NarrowView.qml:137
488492msgctxt "passphrase"
489493msgid "Please re-enter"
490494msgstr "Di la ñaan nga duggalaat"
491495
492−#: qml/Greeter/NarrowView.qml:122
496+#: qml/Greeter/NarrowView.qml:138
493497msgid "Sorry, incorrect passcode"
494498msgstr "Jéggalu, baatu-jàll bi baaxul"
495499
po/xh.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2013-09-28 13:20+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Xhosa <xh@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr ""
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr ""
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277277msgid "Closes the current window."
278278msgstr ""
279279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281281msgid "Return to Call"
282282msgstr ""
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Emergency Call"
286286msgstr ""
287287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289289msgid "OK"
290290msgstr ""
291291
@@ -422,10 +422,14 @@ msgid ""
422422"touch pad to interact with the pointer."
423423msgstr ""
424424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426426msgid "Unlock"
427427msgstr ""
428428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429433#: qml/Greeter/LoginList.qml:259
430434msgid "Retry"
431435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458462"and all personal data will be deleted."
459463msgstr ""
460464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462466#, qt-format
463467msgid "Enter %1"
464468msgstr ""
465469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467471msgid "Enter passphrase"
468472msgstr ""
469473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471475msgid "Enter passcode"
472476msgstr ""
473477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475479#, qt-format
476480msgid "Sorry, incorrect %1"
477481msgstr ""
478482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480484msgid "Sorry, incorrect passphrase"
481485msgstr ""
482486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484488msgctxt "passphrase"
485489msgid "Please re-enter"
486490msgstr ""
487491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489493msgid "Sorry, incorrect passcode"
490494msgstr ""
491495
po/zh_CN.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2016-04-13 06:27+0000\n"
1212"Last-Translator: YunQiang Su <wzssyqa@gmail.com>\n"
1313"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "退出"
3535msgid "Unpin shortcut"
3636msgstr "取消固定快捷方式"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr "设备锁定"
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr "您因太多失败的口令密语尝试而被锁定。"
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr "您因太多失败的密码尝试而被锁定。"
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -278,15 +278,15 @@ msgstr ""
278278msgid "Closes the current window."
279279msgstr ""
280280
281−#: qml/Components/Lockscreen.qml:231
281+#: qml/Components/Lockscreen.qml:239
282282msgid "Return to Call"
283283msgstr "回到呼叫"
284284
285−#: qml/Components/Lockscreen.qml:231
285+#: qml/Components/Lockscreen.qml:239
286286msgid "Emergency Call"
287287msgstr "紧急呼叫"
288288
289−#: qml/Components/Lockscreen.qml:263
289+#: qml/Components/Lockscreen.qml:271
290290msgid "OK"
291291msgstr "确定"
292292
@@ -423,10 +423,14 @@ msgid ""
423423"touch pad to interact with the pointer."
424424msgstr "你的设备现在已经连接到一个外部显示。将这个屏幕当作一块触控板使用来与指针互动。"
425425
426−#: qml/Greeter/CoverPage.qml:119
426+#: qml/Greeter/CoverPage.qml:127
427427msgid "Unlock"
428428msgstr "解锁"
429429
430+#: qml/Greeter/Greeter.qml:536
431+msgid "Try again"
432+msgstr ""
433+
430434#: qml/Greeter/LoginList.qml:259
431435msgid "Retry"
432436msgstr "重试"
@@ -459,34 +463,34 @@ msgid ""
459463"and all personal data will be deleted."
460464msgstr "如果输入的密码不正确,您的手机将恢复到出厂设置并且所有的个人数据将被删除。"
461465
462−#: qml/Greeter/NarrowView.qml:116
466+#: qml/Greeter/NarrowView.qml:129
463467#, qt-format
464468msgid "Enter %1"
465469msgstr "输入 %1"
466470
467−#: qml/Greeter/NarrowView.qml:117
471+#: qml/Greeter/NarrowView.qml:130
468472msgid "Enter passphrase"
469473msgstr "输入口令密语"
470474
471−#: qml/Greeter/NarrowView.qml:118
475+#: qml/Greeter/NarrowView.qml:131
472476msgid "Enter passcode"
473477msgstr "输入密码"
474478
475−#: qml/Greeter/NarrowView.qml:119
479+#: qml/Greeter/NarrowView.qml:135
476480#, qt-format
477481msgid "Sorry, incorrect %1"
478482msgstr "对不起,%1 不正确"
479483
480−#: qml/Greeter/NarrowView.qml:120
484+#: qml/Greeter/NarrowView.qml:136
481485msgid "Sorry, incorrect passphrase"
482486msgstr "对不起,密语不正确"
483487
484−#: qml/Greeter/NarrowView.qml:121
488+#: qml/Greeter/NarrowView.qml:137
485489msgctxt "passphrase"
486490msgid "Please re-enter"
487491msgstr "请重新输入"
488492
489−#: qml/Greeter/NarrowView.qml:122
493+#: qml/Greeter/NarrowView.qml:138
490494msgid "Sorry, incorrect passcode"
491495msgstr "对不起,密码错误"
492496
po/zh_HK.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2014-08-10 11:45+0000\n"
1212"Last-Translator: Daniel Cheung <daniel.2345@hotmail.com>\n"
1313"Language-Team: Chinese (Hong Kong) <zh_HK@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
3535msgid "Unpin shortcut"
3636msgstr "取消捷徑釘選"
3737
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
3939msgid "Device Locked"
4040msgstr ""
4141
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
4545
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
4747msgid "You have been locked out due to too many failed passcode attempts."
4848msgstr ""
4949
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
5151#, qt-format
5252msgid "Please wait %1 minute and then try again…"
5353msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277277msgid "Closes the current window."
278278msgstr ""
279279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281281msgid "Return to Call"
282282msgstr ""
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Emergency Call"
286286msgstr "緊急電話"
287287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289289msgid "OK"
290290msgstr "確定"
291291
@@ -422,10 +422,14 @@ msgid ""
422422"touch pad to interact with the pointer."
423423msgstr ""
424424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426426msgid "Unlock"
427427msgstr ""
428428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429433#: qml/Greeter/LoginList.qml:259
430434msgid "Retry"
431435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458462"and all personal data will be deleted."
459463msgstr ""
460464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462466#, qt-format
463467msgid "Enter %1"
464468msgstr ""
465469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467471msgid "Enter passphrase"
468472msgstr ""
469473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471475msgid "Enter passcode"
472476msgstr ""
473477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475479#, qt-format
476480msgid "Sorry, incorrect %1"
477481msgstr ""
478482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480484msgid "Sorry, incorrect passphrase"
481485msgstr ""
482486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484488msgctxt "passphrase"
485489msgid "Please re-enter"
486490msgstr ""
487491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489493msgid "Sorry, incorrect passcode"
490494msgstr ""
491495
po/zh_TW.po+22−18
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
1111"PO-Revision-Date: 2016-02-24 04:40+0000\n"
1212"Last-Translator: Po-Hsu Lin <po-hsu.lin@canonical.com>\n"
1313"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19+"X-Generator: Launchpad (build 18111)\n"
2020"Language: zh_TW\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -36,19 +36,19 @@ msgstr "結束"
3636msgid "Unpin shortcut"
3737msgstr "取消捷徑釘選"
3838
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
4040msgid "Device Locked"
4141msgstr "裝置已鎖定"
4242
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
4444msgid "You have been locked out due to too many failed passphrase attempts."
4545msgstr "因為嘗試輸入太多次錯誤的密碼,裝置已經被鎖定。"
4646
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
4848msgid "You have been locked out due to too many failed passcode attempts."
4949msgstr "因為嘗試輸入太多次錯誤的密碼,裝置已經被鎖定。"
5050
51−#: qml/Components/DelayedLockscreen.qml:74
51+#: qml/Components/DelayedLockscreen.qml:75
5252#, qt-format
5353msgid "Please wait %1 minute and then try again…"
5454msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277277msgid "Closes the current window."
278278msgstr ""
279279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281281msgid "Return to Call"
282282msgstr "返回通話"
283283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285285msgid "Emergency Call"
286286msgstr "緊急通話"
287287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289289msgid "OK"
290290msgstr "確定"
291291
@@ -422,10 +422,14 @@ msgid ""
422422"touch pad to interact with the pointer."
423423msgstr ""
424424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426426msgid "Unlock"
427427msgstr "解鎖"
428428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429433#: qml/Greeter/LoginList.qml:259
430434msgid "Retry"
431435msgstr "重試"
@@ -458,34 +462,34 @@ msgid ""
458462"and all personal data will be deleted."
459463msgstr "如輸入的通關碼不對,本電話會進行重設,所有個人資料都會刪除。"
460464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462466#, qt-format
463467msgid "Enter %1"
464468msgstr "輸入 %1"
465469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467471msgid "Enter passphrase"
468472msgstr "輸入密語"
469473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471475msgid "Enter passcode"
472476msgstr "輸入通關碼"
473477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475479#, qt-format
476480msgid "Sorry, incorrect %1"
477481msgstr "抱歉,%1不對"
478482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480484msgid "Sorry, incorrect passphrase"
481485msgstr "抱歉,密語不對"
482486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484488msgctxt "passphrase"
485489msgid "Please re-enter"
486490msgstr "請再輸入"
487491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489493msgid "Sorry, incorrect passcode"
490494msgstr "抱歉,通關碼不對"
491495
qml/Components/DelayedLockscreen.qml+1
@@ -28,6 +28,7 @@ Item {
2828 signal cancel() // unused
2929
3030 function clear(playAnimation) {}
31+ function showText(text) {}
3132
3233 Column {
3334 anchors.left: parent.left
qml/Components/LazyImage.qml+3−1
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013-2016 Canonical, Ltd.
33 *
44 * Authors:
55 * Michał Sawicz <michal.sawicz@canonical.com>
@@ -29,6 +29,7 @@ Item {
2929
3030 property real initialWidth: scaleTo == "width" || scaleTo == "fit" ? width : units.gu(10)
3131 property real initialHeight: scaleTo == "height" || scaleTo == "fit" ? height : units.gu(10)
32+ property real lastScaledDimension: scaleTo == "height" || scaleTo == "fit" ? width : height
3233
3334 property alias sourceSize: image.sourceSize
3435 property alias asynchronous: image.asynchronous
@@ -168,6 +169,7 @@ Item {
168169 easing.type: Easing.Linear; duration: UbuntuAnimation.SnapDuration
169170 }
170171 }
172+ ScriptAction { script: { lastScaledDimension = scaleTo == "height" || scaleTo == "fit" ? root.width : root.height } }
171173 }
172174 },
173175
qml/Components/ListItems/graphics/ListItemDividerHorizontal@18.png

Binary file not shown.

qml/Components/Lockscreen.qml+8
@@ -91,6 +91,14 @@ Showable {
9191 popup.z = Number.MAX_VALUE
9292 }
9393
94+ function showText(text) {
95+ // Programmatically enters the given text into the lockscreen
96+ if (pinPadLoader.item) {
97+ pinPadLoader.item.showText(text);
98+ pinPadLoader.waiting = true;
99+ }
100+ }
101+
94102 Rectangle {
95103 // In case background fails to load
96104 id: backgroundBackup
qml/Components/MediaServices/MediaServices.qmlnew file+386
@@ -0,0 +1,386 @@
1+/*
2+ * Copyright (C) 2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+import QtMultimedia 5.0
19+import Ubuntu.Components 1.3
20+
21+FocusScope {
22+ id: root
23+ property var sourceData
24+ property string context: ""
25+ property list<Action> actions
26+ property Item rootItem: QuickUtils.rootItem(root)
27+ property var maximumEmbeddedHeight
28+
29+ property alias header: headerContent.item
30+ property alias content: contentLoader.item
31+ property alias footer: footerContent.item
32+ property alias fullscreen: priv.fullscreen
33+
34+ signal close();
35+
36+ onFullscreenChanged: {
37+ if (!fullscreen) rotationAction.checked = false;
38+ }
39+
40+ readonly property color backgroundColor: "#1B1B1B"
41+ readonly property color iconColor: "#F3F3E7"
42+
43+ Rectangle {
44+ anchors.fill: parent
45+ color: root.backgroundColor
46+ opacity: 0.85
47+ }
48+
49+ OrientationHelper {
50+ id: orientationHelper
51+ automaticOrientation: fullscreen
52+
53+ StateGroup {
54+ id: orientationState
55+
56+ states: [
57+ State {
58+ name: "portrait"
59+ when: !rotationAction.checked
60+ },
61+ State {
62+ name: "landscape"
63+ when: rotationAction.checked
64+ }
65+ ]
66+
67+ transitions: [
68+ Transition {
69+ to: "landscape"
70+ SequentialAnimation {
71+ PropertyAction { target: orientationHelper; property: "automaticOrientation"; value: false }
72+ PropertyAction { target: orientationHelper; property: "orientationAngle"; value: 90 }
73+ PropertyAction { target: orientationHelper; property: "automaticOrientation"; value: false }
74+ }
75+ },
76+ Transition {
77+ to: "portrait"
78+ SequentialAnimation {
79+ PropertyAction { target: orientationHelper; property: "automaticOrientation"; value: false }
80+ PropertyAction { target: orientationHelper; property: "orientationAngle"; value: 0 }
81+ PropertyAction { target: orientationHelper; property: "automaticOrientation"; value: fullscreen }
82+ }
83+ }
84+ ]
85+ }
86+
87+ Loader {
88+ id: contentLoader
89+
90+ sourceComponent: {
91+ switch (context) {
92+ case "video":
93+ return videoComponent;
94+ }
95+ return undefined;
96+ }
97+
98+ Component {
99+ id: videoComponent
100+ VideoPlayer {
101+ id: player
102+ objectName: "videoPlayer"
103+
104+ width: orientationHelper.width
105+ height: orientationHelper.height
106+ maximumEmbeddedHeight: root.maximumEmbeddedHeight
107+ fixedHeight: fullscreen
108+ orientation: orientationState.state === "landscape" ? Qt.LandscapeOrientation : Qt.PortraitOrientation
109+
110+ playButtonBackgroundColor: root.backgroundColor
111+ playButtonIconColor: root.iconColor
112+
113+ screenshot: {
114+ var screenshotData = root.sourceData["screenshot"];
115+ if (screenshotData) return screenshotData;
116+
117+ var source = root.sourceData["source"];
118+ if (source) {
119+ if (source.toString().indexOf("file://") === 0) {
120+ return "image://thumbnailer/" + source.toString().substr(7);
121+ }
122+ }
123+ return "";
124+ }
125+
126+ mediaPlayer: footer ? footer.mediaPlayer : null
127+
128+ onClicked: {
129+ if (mediaPlayer.availability !== MediaPlayer.Available) return;
130+
131+ if (mediaPlayer.playbackState === MediaPlayer.StoppedState) {
132+ mediaPlayer.play();
133+ } else if (controlHideTimer.running) {
134+ if (mediaPlayer.playbackState === MediaPlayer.PlayingState) {
135+ mediaPlayer.pause();
136+ } else {
137+ mediaPlayer.play();
138+ }
139+ } else {
140+ controlHideTimer.restart();
141+ }
142+ }
143+ onPositionChanged: controlHideTimer.restart();
144+ }
145+ }
146+ }
147+ }
148+
149+ Loader {
150+ id: headerContent
151+ anchors {
152+ top: parent.top
153+ left: parent.left
154+ right: parent.right
155+ topMargin: -headerContent.height
156+ }
157+ height: units.gu(6)
158+ visible: false
159+
160+ // eater
161+ MouseArea {
162+ anchors.fill: parent
163+ }
164+
165+ Rectangle {
166+ anchors.fill: parent
167+ color: root.backgroundColor
168+ opacity: 0.85
169+ visible: headerContent.status === Loader.Ready
170+ }
171+
172+ active: root.fullscreen
173+ sourceComponent: headerComponent
174+
175+ Component {
176+ id: headerComponent
177+
178+ MediaServicesHeader {
179+ iconColor: root.iconColor
180+ onGoPrevious: {
181+ rotationAction.checked = false;
182+ root.close();
183+ }
184+ }
185+ }
186+
187+ // If we interact with the bar, reset the hide timer.
188+ MouseArea {
189+ anchors.fill: parent
190+ onPressed: {
191+ mouse.accepted = false
192+ if (controlHideTimer.running) controlHideTimer.restart()
193+ }
194+ }
195+ }
196+
197+ Loader {
198+ id: footerContent
199+ anchors {
200+ left: parent.left
201+ right: parent.right
202+ bottom: parent.bottom
203+ bottomMargin: -footerContent.height
204+ }
205+ height: units.gu(7)
206+ visible: false
207+
208+ sourceComponent: {
209+ switch (context) {
210+ case "video":
211+ return videoControlsComponent;
212+ }
213+ return undefined;
214+ }
215+ // eater
216+ MouseArea {
217+ anchors.fill: parent
218+ }
219+
220+ Rectangle {
221+ anchors.fill: parent
222+ color: root.backgroundColor
223+ opacity: 0.85
224+ visible: footerContent.status === Loader.Ready
225+ }
226+
227+ Component {
228+ id: videoControlsComponent
229+ VideoPlayerControls {
230+ id: controls
231+ objectName: "videoControls"
232+
233+ viewAction: rotationAction.enabled ? rotationAction : fullscreenAction
234+ userActions: root.actions
235+ iconColor: root.iconColor
236+ backgroundColor: root.backgroundColor
237+
238+ mediaPlayer.source: {
239+ if (!root.sourceData) return "";
240+
241+ var source = root.sourceData["source"];
242+ if (source.toString().indexOf("video://") === 0) {
243+ return source.toString().substr(6);
244+ }
245+ return source;
246+ }
247+ mediaPlayer.onPlaybackStateChanged: {
248+ controlHideTimer.restart();
249+ }
250+
251+ Binding {
252+ target: priv
253+ property: "forceControlsShown"
254+
255+ value: (fullscreen && mediaPlayer.playbackState === MediaPlayer.StoppedState) ||
256+ mediaPlayer.playbackState === MediaPlayer.PausedState ||
257+ interacting
258+ }
259+
260+ onInteractingChanged: {
261+ controlHideTimer.restart();
262+ }
263+
264+ Binding {
265+ target: header
266+ property: "title"
267+ value: controls.mediaPlayer.metaData.title !== undefined ?
268+ controls.mediaPlayer.metaData.title :
269+ controls.mediaPlayer.source.toString().replace(/^.*[\\\/]/, '')
270+ when: header != null
271+ }
272+ }
273+ }
274+
275+ // If we interact with the bar, reset the hide timer.
276+ MouseArea {
277+ z: 1
278+ anchors.fill: parent
279+ onPressed: {
280+ mouse.accepted = false
281+ if (controlHideTimer.running) controlHideTimer.restart()
282+ }
283+ }
284+ }
285+
286+ StateGroup {
287+ states: [
288+ State {
289+ name: "controlsShown"
290+ when: priv.forceControlsShown || priv.controlTimerActive
291+ PropertyChanges {
292+ target: footerContent
293+ anchors.bottomMargin: 0
294+ visible: true
295+ }
296+ PropertyChanges {
297+ target: headerContent
298+ anchors.topMargin: 0
299+ visible: true
300+ }
301+ }
302+ ]
303+
304+ transitions: [
305+ Transition {
306+ to: "controlsShown"
307+ SequentialAnimation {
308+ PropertyAction { target: root; property: "clip"; value: true }
309+ PropertyAction { property: "visible" }
310+ NumberAnimation {
311+ properties: "anchors.bottomMargin,anchors.topMargin"
312+ duration: UbuntuAnimation.FastDuration
313+ }
314+ PropertyAction { target: root; property: "clip"; value: false }
315+ }
316+ },
317+ Transition {
318+ from: "controlsShown"
319+ SequentialAnimation {
320+ PropertyAction { target: root; property: "clip"; value: true }
321+ NumberAnimation {
322+ properties: "anchors.bottomMargin,anchors.topMargin"
323+ duration: UbuntuAnimation.FastDuration
324+ }
325+ PropertyAction { property: "visible" }
326+ PropertyAction { target: root; property: "clip"; value: false }
327+ }
328+ }
329+ ]
330+ }
331+
332+ StateGroup {
333+ states: [
334+ State {
335+ name: "minimized"
336+ when: !priv.fullscreen
337+ PropertyChanges { target: root; implicitHeight: content ? content.implicitHeight : 0; }
338+ },
339+ State {
340+ name: "fullscreen"
341+ when: priv.fullscreen
342+ ParentChange { target: root; parent: rootItem; x: 0; y: 0; width: parent.width; }
343+ PropertyChanges { target: root; implicitHeight: root.parent ? root.parent.height : 0; }
344+ PropertyChanges { target: fullscreenAction; iconName: "view-restore"; }
345+ }
346+ ]
347+
348+ transitions: Transition {
349+ ParentAnimation {
350+ UbuntuNumberAnimation { properties: "x,y,width,implicitHeight"; duration: UbuntuAnimation.FastDuration }
351+ }
352+ }
353+ }
354+
355+ QtObject {
356+ id: priv
357+
358+ property bool fullscreen: false
359+ property alias controlTimerActive: controlHideTimer.running
360+ property bool forceControlsShown: false
361+ }
362+
363+ Timer {
364+ id: controlHideTimer
365+ objectName: "controlHideTimer"
366+ interval: 4000
367+ running: false
368+ }
369+
370+ Action {
371+ id: fullscreenAction
372+ enabled: rotationAction.enabled === false
373+ iconName: "view-fullscreen"
374+
375+ onTriggered: priv.fullscreen = !priv.fullscreen
376+ }
377+
378+ Action {
379+ id: rotationAction
380+ enabled: root.fullscreen === true
381+ iconName: "view-rotate"
382+
383+ property bool checked: false
384+ onTriggered: checked = !checked
385+ }
386+}
qml/Components/MediaServices/MediaServicesControls.qmlnew file+192
@@ -0,0 +1,192 @@
1+/*
2+ * Copyright (C) 2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+import QtQuick.Layouts 1.1
19+import QtMultimedia 5.0
20+import Ubuntu.Components 1.3
21+import Ubuntu.Components.ListItems 1.3 as ListItem
22+
23+Item {
24+ id: root
25+
26+ property alias component: loader.sourceComponent
27+
28+ signal actionClicked(string action)
29+ signal viewModeClicked
30+
31+ property list<Action> userActions
32+ property Action viewAction
33+
34+ property color iconColor
35+ property color backgroundColor
36+
37+ RowLayout {
38+ anchors {
39+ left: parent.left
40+ right: parent.right
41+ verticalCenter: parent.verticalCenter
42+ margins: units.gu(2)
43+ }
44+ spacing: units.gu(2)
45+
46+ AbstractButton {
47+ id: actionButton
48+ Layout.preferredWidth: units.gu(3)
49+ Layout.preferredHeight: units.gu(3)
50+ Layout.alignment: Qt.AlignVCenter
51+ enabled: action && action.enabled
52+
53+ Action {
54+ id: popupAction
55+ iconName: "navigation-menu"
56+ onTriggered: userActionsPopup.createObject(root, { "anchors.bottom": root.top })
57+ }
58+
59+ action: {
60+ switch (userActions.length) {
61+ case 0:
62+ return null;
63+ case 1:
64+ return userActions[0];
65+ default:
66+ return popupAction;
67+ }
68+ }
69+
70+ Icon {
71+ anchors.fill: parent
72+ visible: actionButton.action && actionButton.action.iconSource !== "" || false
73+ source: actionButton.action ? actionButton.action.iconSource : ""
74+ color: root.iconColor
75+ opacity: actionButton.action && actionButton.action.enabled ? 1.0 : 0.5
76+ }
77+ }
78+
79+ Loader {
80+ id: loader
81+ Layout.fillWidth: true
82+ Layout.preferredHeight: units.gu(3)
83+ }
84+
85+ AbstractButton {
86+ objectName: "viewActionButton"
87+ Layout.preferredWidth: units.gu(3)
88+ Layout.preferredHeight: units.gu(3)
89+ Layout.alignment: Qt.AlignVCenter
90+ enabled: viewAction.enabled
91+ action: viewAction
92+
93+ Icon {
94+ anchors.fill: parent
95+ visible: viewAction.iconSource !== ""
96+ source: viewAction.iconSource
97+ color: root.iconColor
98+ opacity: viewAction.enabled ? 1.0 : 0.5
99+ }
100+ }
101+ }
102+
103+ Component {
104+ id: userActionsPopup
105+
106+ Rectangle {
107+ id: popup
108+ color: root.backgroundColor
109+ width: userActionsColumn.width
110+ height: userActionsColumn.height
111+
112+ InverseMouseArea {
113+ id: eventGrabber
114+ acceptedButtons: Qt.LeftButton | Qt.MiddleButton | Qt.RightButton
115+ anchors.fill: popup
116+ propagateComposedEvents: false
117+ onWheel: wheel.accepted = true
118+
119+ onPressed: popup.destroy()
120+ }
121+
122+ Column {
123+ id: userActionsColumn
124+ spacing: units.gu(1)
125+ width: units.gu(31)
126+
127+ Repeater {
128+ id: actionRepeater
129+ model: userActions
130+ AbstractButton {
131+ action: modelData
132+
133+ onClicked: popup.destroy()
134+
135+ implicitHeight: units.gu(4) + bottomDividerLine.height
136+ width: parent ? parent.width : units.gu(31)
137+
138+ Rectangle {
139+ visible: parent.pressed
140+ anchors {
141+ left: parent.left
142+ right: parent.right
143+ top: parent.top
144+ }
145+ height: parent.height - bottomDividerLine.height
146+ opacity: 0.5
147+ }
148+
149+ Icon {
150+ id: actionIcon
151+ visible: "" !== action.iconSource
152+ source: action.iconSource
153+ color: root.iconColor
154+ anchors {
155+ verticalCenter: parent.verticalCenter
156+ verticalCenterOffset: units.dp(-1)
157+ left: parent.left
158+ leftMargin: units.gu(2)
159+ }
160+ width: units.gu(2)
161+ height: units.gu(2)
162+ opacity: action.enabled ? 1.0 : 0.5
163+ }
164+
165+ Label {
166+ anchors {
167+ verticalCenter: parent.verticalCenter
168+ verticalCenterOffset: units.dp(-1)
169+ left: actionIcon.visible ? actionIcon.right : parent.left
170+ leftMargin: units.gu(2)
171+ right: parent.right
172+ }
173+ // In the tabs overflow panel there are no icons, and the font-size
174+ // is medium as opposed to the small font-size in the actions overflow panel.
175+ fontSize: actionIcon.visible ? "small" : "medium"
176+ elide: Text.ElideRight
177+ text: action.text
178+ color: root.iconColor
179+ opacity: action.enabled ? 1.0 : 0.5
180+ }
181+
182+ ListItem.ThinDivider {
183+ id: bottomDividerLine
184+ anchors.bottom: parent.bottom
185+ visible: index !== actionRepeater.count - 1
186+ }
187+ }
188+ }
189+ }
190+ }
191+ }
192+}
qml/Components/MediaServices/MediaServicesHeader.qmlnew file+71
@@ -0,0 +1,71 @@
1+/*
2+ * Copyright (C) 2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+import QtQuick.Layouts 1.1
19+import Ubuntu.Components 1.3
20+
21+Item {
22+ id: root
23+
24+ property alias title: titleLabel.text
25+ property alias component: loader.sourceComponent
26+ property alias iconColor: titleLabel.color
27+
28+ signal goPrevious
29+
30+ RowLayout {
31+ id: row
32+ anchors {
33+ left: parent.left
34+ right: parent.right
35+ verticalCenter: parent.verticalCenter
36+ margins: units.gu(2)
37+ }
38+ spacing: units.gu(2)
39+
40+ AbstractButton {
41+ id: navigationButton
42+ objectName: "navigationButton"
43+ Layout.preferredWidth: units.gu(3)
44+ Layout.preferredHeight: units.gu(3)
45+ Layout.alignment: Qt.AlignVCenter
46+
47+ Icon {
48+ anchors.fill: parent
49+ name: "go-previous"
50+ color: titleLabel.color
51+ }
52+
53+ onTriggered: {
54+ root.goPrevious();
55+ }
56+ }
57+
58+ Label {
59+ id: titleLabel
60+ Layout.fillWidth: true
61+ Layout.alignment: Qt.AlignVCenter
62+ elide: Text.ElideRight
63+ }
64+
65+ Loader {
66+ id: loader
67+ Layout.alignment: Qt.AlignVCenter
68+ Layout.preferredHeight: units.gu(3)
69+ }
70+ }
71+}
qml/Components/MediaServices/VideoPlayer.qmlnew file+155
@@ -0,0 +1,155 @@
1+/*
2+ * Copyright (C) 2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+import QtMultimedia 5.0
19+import Ubuntu.Components 1.3
20+import Ubuntu.Thumbnailer 0.1
21+import "../../Components"
22+
23+Item {
24+ id: root
25+
26+ property alias screenshot: image.source
27+ property alias mediaPlayer: videoOutput.source
28+ property int orientation: Qt.PortraitOrientation
29+ property bool fixedHeight: false
30+ property var maximumEmbeddedHeight
31+
32+ property alias playButtonBackgroundColor: playButton.color
33+ property alias playButtonIconColor: playButtonIcon.color
34+
35+ implicitHeight: {
36+ if (parent && orientation === Qt.LandscapeOrientation) {
37+ return parent.height;
38+ }
39+ return content.height;
40+ }
41+
42+ signal clicked
43+ signal positionChanged
44+
45+ Item {
46+ id: content
47+ anchors {
48+ left: parent.left
49+ right: parent.right
50+ verticalCenter: parent.verticalCenter
51+ }
52+ height: {
53+ if (root.orientation === Qt.LandscapeOrientation || fixedHeight) {
54+ return root.height;
55+ }
56+ var proposedHeight = videoOutput.height;
57+ if (maximumEmbeddedHeight !== undefined && maximumEmbeddedHeight < proposedHeight) {
58+ return maximumEmbeddedHeight;
59+ }
60+ return proposedHeight;
61+ }
62+ clip: image.height > videoOutput.height
63+
64+ LazyImage {
65+ id: image
66+ objectName: "screenshot"
67+ anchors {
68+ left: parent.left
69+ right: parent.right
70+ verticalCenter: parent.verticalCenter
71+ }
72+ scaleTo: "width"
73+ lastScaledDimension: playButton.height + units.gu(2)
74+ initialHeight: lastScaledDimension
75+ useUbuntuShape: false
76+
77+ visible: !mediaPlayer || mediaPlayer.playbackState === MediaPlayer.StoppedState
78+ }
79+
80+ VideoOutput {
81+ id: videoOutput
82+ anchors.centerIn: parent
83+
84+ width: root.width
85+ height: {
86+ if (fixedHeight) {
87+ return root.height;
88+ }
89+ var proposedHeight = mediaPlayer && mediaPlayer.metaData.resolution !== undefined ?
90+ (mediaPlayer.metaData.resolution.height / mediaPlayer.metaData.resolution.width) * width :
91+ image.height;
92+ if (maximumEmbeddedHeight !== undefined && maximumEmbeddedHeight < proposedHeight) {
93+ return maximumEmbeddedHeight;
94+ }
95+ return proposedHeight;
96+ }
97+
98+ source: mediaPlayer
99+ visible: mediaPlayer && mediaPlayer.playbackState !== MediaPlayer.StoppedState || false
100+
101+ Connections {
102+ target: mediaPlayer
103+ onError: {
104+ if (error !== MediaPlayer.NoError) {
105+ errorTimer.restart();
106+ }
107+ }
108+ }
109+ }
110+ }
111+
112+ Rectangle {
113+ id: playButton
114+ readonly property bool bigButton: parent.width > units.gu(40)
115+ anchors.centerIn: content
116+ width: bigButton ? units.gu(10) : units.gu(8)
117+ height: width
118+ visible: mediaPlayer && mediaPlayer.playbackState !== MediaPlayer.PlayingState || false
119+ opacity: 0.85
120+ radius: width/2
121+
122+ Behavior on width { UbuntuNumberAnimation {} }
123+
124+ Icon {
125+ id: playButtonIcon
126+ anchors.fill: parent
127+ anchors.margins: units.gu(1)
128+ name: errorTimer.running ? "dialog-warning-symbolic" : "media-playback-start"
129+ }
130+ }
131+
132+ ActivityIndicator {
133+ anchors.centerIn: content
134+ running: {
135+ if (!mediaPlayer) return false;
136+ return mediaPlayer.status === MediaPlayer.Stalled ||
137+ (mediaPlayer.playbackState === MediaPlayer.PlayingState && mediaPlayer.status === MediaPlayer.Loading);
138+ }
139+ }
140+
141+ MouseArea {
142+ id: contentMouseArea
143+ anchors.fill: content
144+ enabled: !errorTimer.running
145+ hoverEnabled: mediaPlayer && mediaPlayer.playbackState !== MediaPlayer.StoppedState || false
146+
147+ onClicked: root.clicked()
148+ onPositionChanged: root.positionChanged()
149+ }
150+
151+ Timer {
152+ id: errorTimer
153+ interval: 2000
154+ }
155+}
qml/Components/MediaServices/VideoPlayerControls.qmlnew file+158
@@ -0,0 +1,158 @@
1+/*
2+ * Copyright (C) 2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+import QtQuick.Layouts 1.1
19+import QtMultimedia 5.0
20+import Ubuntu.Components 1.3
21+
22+MediaServicesControls {
23+ id: root
24+ readonly property alias mediaPlayer: _mediaPlayer
25+ property bool interacting: false
26+
27+ QtObject {
28+ id: priv
29+
30+ function formatProgress(time) {
31+ time = Math.floor(time / 1000);
32+
33+ var secs = time % 60;
34+ time = Math.floor(time / 60);
35+ var min = time % 60;
36+ var hour = Math.floor(time / 60);
37+
38+ if (secs < 10) secs = "0%1".arg(secs);
39+ if (min < 10) min = "0%1".arg(min);
40+ if (hour > 0) {
41+ // TRANSLATORS: this refers to a duration/remaining time of the video in hours, minutes and seconds,
42+ // of which you can change the order.
43+ // %1 refers to hours, %2 refers to minutes and %3 refers to seconds.
44+ return i18n.tr("%1:%2:%3").arg(hour).arg(min).arg(secs);
45+ } else {
46+ // TRANSLATORS: this refers to a duration/remaining time of the video in minutes and seconds,
47+ // of which you can change the order.
48+ // %1 refers to minutes and %2 refers to seconds.
49+ return i18n.tr("%1:%2").arg(min).arg(secs);
50+ }
51+ }
52+ }
53+
54+ component: Item {
55+ Connections {
56+ target: mediaPlayer
57+ onPositionChanged: {
58+ if (slider.valueGuard) return;
59+
60+ slider.valueGuard = true;
61+ slider.value = mediaPlayer.position;
62+ slider.valueGuard = false;
63+ if (!slider.pressed) {
64+ positionLabel.text = priv.formatProgress(mediaPlayer.position);
65+ }
66+ }
67+ }
68+
69+ Binding {
70+ target: root
71+ property: "interacting"
72+ value: slider.pressed
73+ }
74+
75+ Label {
76+ id: positionLabel
77+ anchors {
78+ left: parent.left
79+ bottom: parent.bottom
80+ bottomMargin: -units.dp(3)
81+ }
82+ verticalAlignment: Text.AlignBottom
83+ fontSize: "x-small"
84+ color: root.iconColor
85+
86+ text: priv.formatProgress(mediaPlayer.position)
87+ }
88+
89+ Slider {
90+ id: slider
91+ property bool valueGuard: false
92+
93+ anchors {
94+ left: parent.left
95+ right: parent.right
96+ }
97+ height: units.gu(2)
98+ live: true
99+ enabled: mediaPlayer.seekable && mediaPlayer.duration > 0
100+ minimumValue: 0
101+ maximumValue: mediaPlayer.duration > 0 ? mediaPlayer.duration : 1
102+ value: mediaPlayer.position
103+
104+ onStyleInstanceChanged: {
105+ if (__styleInstance) __styleInstance.backgroundColor = root.iconColor;
106+ }
107+
108+ onValueChanged: {
109+ if (!pressed || slider.valueGuard) return;
110+
111+ slider.valueGuard = true;
112+ mediaPlayer.seek(value);
113+ slider.valueGuard = false;
114+ }
115+
116+ property bool wasPlaying: mediaPlayer.playbackState === MediaPlayer.PlayingState
117+ onPressedChanged: {
118+ if (pressed) {
119+ wasPlaying = mediaPlayer.playbackState === MediaPlayer.PlayingState
120+ mediaPlayer.pause();
121+ } else {
122+ positionLabel.text = priv.formatProgress(mediaPlayer.position);
123+ if (wasPlaying) {
124+ mediaPlayer.play();
125+ }
126+ }
127+ }
128+
129+ function formatValue(value) {
130+ return priv.formatProgress(value);
131+ }
132+ }
133+
134+ Label {
135+ anchors {
136+ right: parent.right
137+ bottom: parent.bottom
138+ bottomMargin: -units.dp(3)
139+ }
140+ verticalAlignment: Text.AlignBottom
141+ fontSize: "x-small"
142+ color: root.iconColor
143+
144+ text: priv.formatProgress(mediaPlayer.duration)
145+ }
146+ }
147+
148+ MediaPlayer {
149+ id: _mediaPlayer
150+ objectName: "mediaPlayer"
151+
152+ onError: {
153+ if (error !== MediaPlayer.NoError) {
154+ stop();
155+ }
156+ }
157+ }
158+}
qml/Components/PassphraseLockscreen.qml+4
@@ -43,6 +43,10 @@ FocusScope {
4343 }
4444 }
4545
46+ function showText(text) {
47+ pinentryField.text = text;
48+ }
49+
4650 Column {
4751 id: shakeContainer
4852 anchors.horizontalCenter: parent.horizontalCenter
qml/Components/PinLockscreen.qml+4
@@ -46,6 +46,10 @@ FocusScope {
4646 }
4747 }
4848
49+ function showText(text) {
50+ pinentryField.text = text;
51+ }
52+
4953 Keys.onPressed: {
5054 if (pinentryField.text.length == root.maxPinLength)
5155 return;
qml/Dash/Previews/PreviewSharing.qml → qml/Components/SharingPicker.qmlrenamed+2−14
@@ -20,8 +20,6 @@ import Ubuntu.Content 1.1
2020
2121Item {
2222 id: root
23− implicitHeight: button.height
24− implicitWidth: button.width
2523
2624 property var shareData
2725 property alias active: peerPicker.active
@@ -30,18 +28,8 @@ Item {
3028 readonly property var url: shareData ? shareData["uri"] : ""
3129 readonly property Item rootItem: QuickUtils.rootItem(root)
3230
33− AbstractButton {
34− id: button
35− height: units.gu(4)
36− width: units.gu(4)
37− onClicked: peerPicker.visible = true
38−
39− Icon {
40− anchors.centerIn: parent
41− height: units.gu(3)
42− width: units.gu(3)
43− source: "image://theme/share"
44− }
31+ function showPeerPicker() {
32+ peerPicker.visible = true;
4533 }
4634
4735 function createExportedItems(url) {
qml/Components/WindowControlButtons.qml+2
@@ -29,6 +29,7 @@ Row {
2929 property bool active: false
3030 property bool windowIsMaximized: false
3131 property bool closeButtonShown: true
32+ property bool maximizeButtonShown: true
3233 property bool overlayShown
3334
3435 signal closeClicked()
@@ -88,6 +89,7 @@ Row {
8889 hoverEnabled: true
8990 height: parent.height
9091 width: height
92+ visible: root.maximizeButtonShown
9193 acceptedButtons: Qt.LeftButton | Qt.RightButton | Qt.MiddleButton
9294 onClicked: {
9395 if (mouse.button == Qt.LeftButton) {
qml/Components/graphics/close@20.png

Binary file not shown.

qml/Components/graphics/icon_star_empty@20.png

Binary file not shown.

qml/Components/graphics/icon_star_full@20.png

Binary file not shown.

qml/Components/graphics/icon_star_half@20.png

Binary file not shown.

qml/Components/graphics/icon_star_off@20.png

Binary file not shown.

qml/Components/graphics/icon_star_on@20.png

Binary file not shown.

qml/Components/graphics/non-selected@18.png

Binary file not shown.

qml/Dash/CardTool.qml+2−1
@@ -15,6 +15,7 @@
1515 */
1616
1717import QtQuick 2.4
18+import Ubuntu.Components 1.3
1819import Dash 0.1
1920
2021/*!
@@ -141,7 +142,7 @@ Item {
141142 type:real \brief Height of the card's header.
142143 */
143144 readonly property int headerHeight: cardLoader.item ? cardLoader.item.headerHeight : 0
144− property size artShapeSize: cardLoader.item ? cardLoader.item.artShapeSize : 0
145+ property size artShapeSize: cardLoader.item ? cardLoader.item.artShapeSize : Qt.size(0, 0)
145146
146147 QtObject {
147148 id: carouselTool
qml/Dash/DashApplication.qml+16−5
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2014,2015 Canonical, Ltd.
2+ * Copyright (C) 2014-2016 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
@@ -15,14 +15,25 @@
1515 */
1616
1717import QtQuick 2.4
18+import QtQuick.Window 2.2
1819import Ubuntu.Components 1.3
1920import Ubuntu.Thumbnailer 0.1 // Register support for image://thumbnailer/ and image://albumart/
2021
21−MainView {
22− implicitWidth: units.gu(40)
23− implicitHeight: units.gu(68)
22+Window {
23+ visible: true
24+ title: "Scopes" // Intentionally not translated
2425
25− Dash {
26+ width: initialWidth > 0 ? initialWidth : units.gu(40)
27+ height: initialHeight > 0 ? initialHeight : units.gu(68)
28+
29+ minimumWidth: units.gu(40)
30+ minimumHeight: units.gu(40)
31+
32+ MainView {
2633 anchors.fill: parent
34+
35+ Dash {
36+ anchors.fill: parent
37+ }
2738 }
2839}
qml/Dash/Previews/Preview.qml+16
@@ -37,12 +37,16 @@ Item {
3737 //! \brief The ScopeStyle component.
3838 property var scopeStyle: null
3939
40+ //! Should the orientation be locked
41+ property int orientationLockCount: 0
42+
4043 clip: true
4144
4245 Binding {
4346 target: previewModel
4447 property: "widgetColumnCount"
4548 value: row.columns
49+ when: root.orientationLockCount === 0
4650 }
4751
4852 MouseArea {
@@ -110,6 +114,18 @@ Item {
110114 column.forceLayout();
111115 column.positionViewAtIndex(index, ListView.Contain)
112116 }
117+
118+ onOrientationLockChanged: {
119+ if (orientationLock)
120+ root.orientationLockCount++;
121+ else
122+ root.orientationLockCount = Math.max(0, root.orientationLockCount--);
123+ }
124+
125+ Component.onDestruction: {
126+ if (orientationLock)
127+ root.orientationLockCount = Math.max(0, root.orientationLockCount--);
128+ }
113129 }
114130 }
115131 }
qml/Dash/Previews/PreviewImageGallery.qml+2
@@ -27,6 +27,8 @@ PreviewWidget {
2727 id: root
2828 implicitHeight: units.gu(22)
2929
30+ orientationLock: overlay.visible
31+
3032 property Item rootItem: QuickUtils.rootItem(root)
3133
3234 ListView {
qml/Dash/Previews/PreviewInlineVideo.qmlnew file+65
@@ -0,0 +1,65 @@
1+/*
2+ * Copyright (C) 2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+import QtMultimedia 5.0
19+import Ubuntu.Components 1.3
20+import Ubuntu.Thumbnailer 0.1
21+import "../../Components"
22+import "../../Components/MediaServices"
23+
24+/*! \brief Preview widget for video.
25+
26+ This widget shows video contained in widgetData["source"],
27+ with a placeholder screenshot specified by widgetData["screenshot"].
28+ */
29+
30+PreviewWidget {
31+ id: root
32+ implicitWidth: units.gu(35)
33+ implicitHeight: services.height
34+
35+ widgetMargins: -units.gu(1)
36+ orientationLock: services.fullscreen
37+
38+ property alias rootItem: services.rootItem
39+
40+ MediaServices {
41+ id: services
42+ width: parent.width
43+
44+ actions: sharingAction
45+ context: "video"
46+ sourceData: widgetData
47+ fullscreen: false
48+ maximumEmbeddedHeight: rootItem.height / 2
49+
50+ onClose: fullscreen = false
51+
52+ Action {
53+ id: sharingAction
54+ iconName: "share"
55+ visible: sharingPicker.active
56+ onTriggered: sharingPicker.showPeerPicker()
57+ }
58+ }
59+
60+ SharingPicker {
61+ id: sharingPicker
62+ objectName: "sharingPicker"
63+ shareData: widgetData["share-data"]
64+ }
65+}
qml/Dash/Previews/PreviewMediaToolbar.qml+25−5
@@ -19,19 +19,39 @@ import Ubuntu.Components 1.3
1919import "../../Components"
2020
2121Rectangle {
22− property alias shareData: sharingWidget.shareData
22+ property alias shareData: sharingPicker.shareData
2323
2424 implicitHeight: units.gu(6)
2525 color: Qt.rgba(0, 0, 0, 0.8)
26− visible: sharingWidget.active
26+ visible: sharingPicker.active
2727
28− PreviewSharing {
29− id: sharingWidget
30− objectName: "sharingWidget"
28+ Action {
29+ id: sharingAction
30+ iconName: "share"
31+ onTriggered: sharingPicker.showPeerPicker()
32+ }
33+
34+ AbstractButton {
35+ id: button
3136 anchors {
3237 left: parent.left
3338 verticalCenter: parent.verticalCenter
3439 leftMargin: units.gu(1)
3540 }
41+ height: units.gu(4)
42+ width: units.gu(4)
43+ action: sharingAction
44+
45+ Icon {
46+ anchors.centerIn: parent
47+ height: units.gu(3)
48+ width: units.gu(3)
49+ source: button.action.iconSource
50+ }
51+ }
52+
53+ SharingPicker {
54+ id: sharingPicker
55+ objectName: "sharingPicker"
3656 }
3757}
qml/Dash/Previews/PreviewRatingEdit.qml+4−1
@@ -73,7 +73,10 @@ PreviewWidget {
7373 ratingValue: widgetData["rating"]
7474 reviewText: widgetData["review"]
7575
76− onTriggered: root.triggered(widgetId, actionId, data);
76+ onTriggered: {
77+ root.triggered(widgetId, actionId, data);
78+ display.visible = true;
79+ }
7780 onMakeSureVisible: root.makeSureVisible(item);
7881 }
7982
qml/Dash/Previews/PreviewWidget.qml+3
@@ -31,6 +31,9 @@ Item {
3131 //! Should the widget show in expanded mode (For those that support it)
3232 property bool expanded: true
3333
34+ //! Should the orientation be locked
35+ property bool orientationLock: false
36+
3437 //! Set margins width.
3538 property real widgetMargins: units.gu(1)
3639
qml/Dash/Previews/PreviewWidgetFactory.qml+11−1
@@ -37,6 +37,9 @@ Loader {
3737 //! Should the widget show in expanded mode (For those that support it)
3838 property bool expanded: widgetType !== "expandable" || widgetData["expanded"] === true
3939
40+ //! Should the orientation be locked
41+ readonly property bool orientationLock: status === Loader.Ready ? item.orientationLock : false
42+
4043 //! Set margins width.
4144 property real widgetMargins: status === Loader.Ready ? item.widgetMargins : units.gu(1)
4245
@@ -70,7 +73,14 @@ Loader {
7073 case "reviews": return "PreviewRatingDisplay.qml";
7174 case "table": return "PreviewTable.qml";
7275 case "text": return "PreviewTextSummary.qml";
73− case "video": return "PreviewVideoPlayback.qml";
76+ case "video": {
77+ if (!widgetData) return "";
78+ var source = widgetData.hasOwnProperty("source") ? widgetData["source"].toString() : "";
79+ if (source.match("^https{0,1}\:") !== null) {
80+ return "PreviewVideoPlayback.qml";
81+ }
82+ return "PreviewInlineVideo.qml";
83+ }
7484 default: return "";
7585 }
7686 }
qml/Dash/Previews/PreviewZoomableImage.qml+1
@@ -31,6 +31,7 @@ PreviewWidget {
3131 implicitHeight: lazyImage.height
3232
3333 widgetMargins: -units.gu(1)
34+ orientationLock: overlay.visible
3435
3536 property Item rootItem: QuickUtils.rootItem(root)
3637
qml/Dash/ScopesList.qml+1
@@ -72,6 +72,7 @@ Item {
7272 }
7373
7474 Flickable {
75+ objectName: "scopesListFlickable"
7576 anchors {
7677 top: header.bottom
7778 bottom: parent.bottom
qml/Dash/graphics/dash_divider_top_darkgrad@27.png

Binary file not shown.

qml/Dash/graphics/dash_divider_top_lightgrad@27.png

Binary file not shown.

qml/Dash/graphics/header_handlearrow2@27.png

Binary file not shown.

qml/Dash/graphics/header_handlearrow@27.png

Binary file not shown.

qml/Dash/graphics/icon_clear@20.png

Binary file not shown.

qml/Dash/graphics/icon_search_active@20.png

Binary file not shown.

qml/Dash/graphics/icon_search_inactive@20.png

Binary file not shown.

qml/Dash/graphics/navigation_shadow@18.png

Binary file not shown.

qml/Dash/graphics/navigation_shadow_light@18.png

Binary file not shown.

qml/Dash/graphics/overview_hint@27.png

Binary file not shown.

qml/Dash/graphics/pagination_dot_off@30.png

Binary file not shown.

qml/Dash/graphics/pagination_dot_on@30.png

Binary file not shown.

qml/Dash/graphics/paper.png

Binary file not shown.

qml/Dash/graphics/pixel.png

Binary file not shown.

qml/Dash/graphics/play_button@18.png

Binary file not shown.

qml/Dash/graphics/play_button_active@18.png

Binary file not shown.

qml/Dash/graphics/play_button_active_big@20.png

Binary file not shown.

qml/Dash/graphics/play_button_big@20.png

Binary file not shown.

qml/Dash/graphics/tabbarchevron@27.png

Binary file not shown.

qml/Dash/graphics/tablet/icon_close_preview@20.png

Binary file not shown.

qml/Dash/graphics/tooltip_arrow@27.png

Binary file not shown.

qml/Greeter/CoverPage.qml+22−1
@@ -41,9 +41,16 @@ Showable {
4141 hide();
4242 }
4343
44+ function showErrorMessage(msg) {
45+ d.errorMessage = msg;
46+ showLabelAnimation.start();
47+ errorMessageAnimation.start();
48+ }
49+
4450 QtObject {
4551 id: d
4652 property bool forceRightOnNextHideAnimation: false
53+ property string errorMessage
4754 }
4855
4956 prepareToHide: function () {
@@ -111,15 +118,18 @@ Showable {
111118
112119 Label {
113120 id: swipeHint
121+ objectName: "swipeHint"
114122 property real baseOpacity: 0.5
115123 opacity: 0.0
116124 anchors.horizontalCenter: parent.horizontalCenter
117125 anchors.bottom: parent.bottom
118126 anchors.bottomMargin: units.gu(5)
119− text: "《 " + i18n.tr("Unlock") + " 》"
127+ text: "《 " + (d.errorMessage ? d.errorMessage : i18n.tr("Unlock")) + " 》"
120128 color: "white"
121129 font.weight: Font.Light
122130
131+ readonly property var opacityAnimation: showLabelAnimation // for testing
132+
123133 SequentialAnimation on opacity {
124134 id: showLabelAnimation
125135 running: false
@@ -136,9 +146,20 @@ Showable {
136146 to: 0.0
137147 duration: UbuntuAnimation.SleepyDuration
138148 }
149+
150+ onRunningChanged: {
151+ if (!running)
152+ d.errorMessage = "";
153+ }
139154 }
140155 }
141156
157+ WrongPasswordAnimation {
158+ id: errorMessageAnimation
159+ objectName: "errorMessageAnimation"
160+ target: swipeHint
161+ }
162+
142163 DragHandle {
143164 id: dragHandle
144165 objectName: "coverPageDragHandle"
qml/Greeter/Greeter.qml+101−5
@@ -16,7 +16,9 @@
1616
1717import QtQuick 2.4
1818import AccountsService 0.1
19+import Biometryd 0.0
1920import GSettings 1.0
21+import Powerd 0.1
2022import Ubuntu.Components 1.3
2123import Ubuntu.SystemImage 0.1
2224import Unity.Launcher 0.1
@@ -39,6 +41,8 @@ Showable {
3941 readonly property bool active: required || hasLockedApp
4042 readonly property bool fullyShown: loader.item ? loader.item.fullyShown : false
4143
44+ property bool allowFingerprint: true
45+
4246 // True when the greeter is waiting for PAM or other setup process
4347 readonly property alias waiting: d.waiting
4448
@@ -54,6 +58,7 @@ Showable {
5458 property int maxFailedLogins: -1 // disabled by default for now, will enable via settings in future
5559 property int failedLoginsDelayAttempts: 7 // number of failed logins
5660 property real failedLoginsDelayMinutes: 5 // minutes of forced waiting
61+ property int failedFingerprintLoginsDisableAttempts: 3 // number of failed fingerprint logins
5762
5863 readonly property bool animating: loader.item ? loader.item.animating : false
5964
@@ -62,6 +67,9 @@ Showable {
6267 signal emergencyCall()
6368
6469 function forceShow() {
70+ if (!active) {
71+ d.isLockscreen = true;
72+ }
6573 forcedUnlock = false;
6674 if (!required) {
6775 showNow(); // loader.onLoaded will select a user
@@ -121,6 +129,11 @@ Showable {
121129 readonly property int selectUserIndex: d.getUserIndex(LightDMService.greeter.selectUser)
122130 property int currentIndex: Math.max(selectUserIndex, 0)
123131 property bool waiting
132+ property bool isLockscreen // true when we are locking an active session, rather than first user login
133+ readonly property bool secureFingerprint: isLockscreen &&
134+ AccountsService.failedFingerprintLogins <
135+ root.failedFingerprintLoginsDisableAttempts
136+ readonly property bool alphanumeric: AccountsService.passwordDisplayHint === AccountsService.Keyboard
124137
125138 // We want 'launcherOffset' to animate down to zero. But not to animate
126139 // while being dragged. So ideally we change this only when the user
@@ -169,7 +182,7 @@ Showable {
169182 if (LightDMService.greeter.startSessionSync()) {
170183 sessionStarted();
171184 if (loader.item) {
172− loader.item.notifyAuthenticationSucceeded();
185+ loader.item.notifyAuthenticationSucceeded(false /* showFakePassword */);
173186 }
174187 } else if (loader.item) {
175188 loader.item.notifyAuthenticationFailed();
@@ -188,7 +201,7 @@ Showable {
188201 function checkForcedUnlock(hideNow) {
189202 if (forcedUnlock && shown && loader.item) {
190203 // pretend we were just authenticated
191− loader.item.notifyAuthenticationSucceeded();
204+ loader.item.notifyAuthenticationSucceeded(false /* showFakePassword */);
192205 loader.item.hide();
193206 if (hideNow) {
194207 root.hideNow(); // skip hide animation
@@ -206,6 +219,17 @@ Showable {
206219 onForcedUnlockChanged: d.checkForcedUnlock(false /* hideNow */)
207220 Component.onCompleted: d.checkForcedUnlock(true /* hideNow */)
208221
222+ onLockedChanged: {
223+ if (!locked) {
224+ AccountsService.failedLogins = 0;
225+ AccountsService.failedFingerprintLogins = 0;
226+
227+ // Stop delay timer if they logged in with fingerprint
228+ forcedDelayTimer.stop();
229+ forcedDelayTimer.delayMinutes = 0;
230+ }
231+ }
232+
209233 onRequiredChanged: {
210234 if (required) {
211235 d.waiting = true;
@@ -366,7 +390,7 @@ Showable {
366390 Binding {
367391 target: loader.item
368392 property: "alphanumeric"
369− value: AccountsService.passwordDisplayHint === AccountsService.Keyboard
393+ value: d.alphanumeric
370394 }
371395
372396 Binding {
@@ -425,7 +449,6 @@ Showable {
425449 d.waiting = false;
426450
427451 if (LightDMService.greeter.authenticated) {
428− AccountsService.failedLogins = 0;
429452 if (!LightDMService.greeter.promptless) {
430453 d.login();
431454 loader.item.hide();
@@ -464,7 +487,10 @@ Showable {
464487 Connections {
465488 target: DBusUnitySessionService
466489 onLockRequested: root.forceShow()
467− onUnlocked: root.forcedUnlock = true
490+ onUnlocked: {
491+ root.forcedUnlock = true;
492+ root.hideNow();
493+ }
468494 }
469495
470496 Binding {
@@ -483,4 +509,74 @@ Showable {
483509 target: i18n
484510 onLanguageChanged: LightDMService.infographic.readyForDataChange()
485511 }
512+
513+ Observer {
514+ id: biometryd
515+ objectName: "biometryd"
516+
517+ property var operation: null
518+ readonly property bool idEnabled: root.active &&
519+ root.allowFingerprint &&
520+ Powerd.status === Powerd.On &&
521+ Biometryd.available &&
522+ AccountsService.enableFingerprintIdentification
523+
524+ function cancelOperation() {
525+ if (operation) {
526+ operation.cancel();
527+ operation = null;
528+ }
529+ }
530+
531+ function restartOperation() {
532+ cancelOperation();
533+
534+ if (idEnabled) {
535+ var identifier = Biometryd.defaultDevice.identifier;
536+ operation = identifier.identifyUser();
537+ operation.start(biometryd);
538+ }
539+ }
540+
541+ function failOperation(reason) {
542+ console.log("Failed to identify user by fingerprint:", reason);
543+ restartOperation();
544+ if (!d.secureFingerprint) {
545+ d.startUnlock(false /* toTheRight */); // use normal login instead
546+ }
547+ if (loader.item) {
548+ var msg = d.secureFingerprint ? i18n.tr("Try again") : "";
549+ loader.item.showErrorMessage(msg);
550+ }
551+ }
552+
553+ Component.onCompleted: restartOperation()
554+ Component.onDestruction: cancelOperation()
555+ onIdEnabledChanged: restartOperation()
556+
557+ onSucceeded: {
558+ if (!d.secureFingerprint) {
559+ failOperation("fingerprint reader is locked");
560+ return;
561+ }
562+ if (result !== LightDMService.users.data(d.currentIndex, LightDMService.userRoles.UidRole)) {
563+ AccountsService.failedFingerprintLogins++;
564+ failOperation("not the selected user");
565+ return;
566+ }
567+ console.log("Identified user by fingerprint:", result);
568+ if (loader.item)
569+ loader.item.notifyAuthenticationSucceeded(true /* showFakePassword */);
570+ if (root.active)
571+ root.forcedUnlock = true;
572+ }
573+ onFailed: {
574+ if (!d.secureFingerprint) {
575+ failOperation("fingerprint reader is locked");
576+ } else {
577+ AccountsService.failedFingerprintLogins++;
578+ failOperation(reason);
579+ }
580+ }
581+ }
486582}
qml/Greeter/NarrowView.qml+18−2
@@ -65,15 +65,28 @@ FocusScope {
6565 coverPage.hide();
6666 }
6767
68− function notifyAuthenticationSucceeded() {
68+ function notifyAuthenticationSucceeded(showFakePassword) {
69+ // When using an alternate log in mechanism like fingerprints, the
70+ // design is it looks like the user entered a passcode.
71+ if (!alphanumeric && showFakePassword) {
72+ lockscreen.showText("...."); // actual text doesn't matter, we show bullets
73+ }
6974 lockscreen.hide();
7075 }
7176
7277 function notifyAuthenticationFailed() {
78+ lockscreen.customError = "";
79+ lockscreen.clear(true);
80+ }
81+
82+ function showErrorMessage(msg) {
83+ coverPage.showErrorMessage(msg);
84+ lockscreen.customError = msg ? msg : " "; // avoid default message
7385 lockscreen.clear(true);
7486 }
7587
7688 function reset() {
89+ lockscreen.customError = "";
7790 coverPage.show();
7891 }
7992
@@ -116,7 +129,10 @@ FocusScope {
116129 infoText: promptText !== "" ? i18n.tr("Enter %1").arg(promptText) :
117130 alphaNumeric ? i18n.tr("Enter passphrase") :
118131 i18n.tr("Enter passcode")
119− errorText: promptText !== "" ? i18n.tr("Sorry, incorrect %1").arg(promptText) :
132+
133+ property string customError
134+ errorText: customError !== "" ? customError :
135+ promptText !== "" ? i18n.tr("Sorry, incorrect %1").arg(promptText) :
120136 alphaNumeric ? i18n.tr("Sorry, incorrect passphrase") + "\n" +
121137 i18n.ctr("passphrase", "Please re-enter") :
122138 i18n.tr("Sorry, incorrect passcode")
qml/Greeter/WideView.qml+5−1
@@ -59,7 +59,7 @@ FocusScope {
5959 coverPage.hide();
6060 }
6161
62− function notifyAuthenticationSucceeded() {
62+ function notifyAuthenticationSucceeded(showFakePassword) {
6363 // Nothing needed
6464 }
6565
@@ -67,6 +67,10 @@ FocusScope {
6767 loginList.showError();
6868 }
6969
70+ function showErrorMessage(msg) {
71+ coverPage.showErrorMessage(msg);
72+ }
73+
7074 function reset() {
7175 loginList.reset();
7276 }
qml/Greeter/graphics/dot_empty.png

Binary file not shown.

qml/Greeter/graphics/dot_filled.png

Binary file not shown.

qml/Greeter/graphics/dot_pointer.png

Binary file not shown.

qml/Greeter/graphics/icon_arrow.png

Binary file not shown.

qml/Greeter/graphics/infographic_circle_back.png

Binary file not shown.

qml/Launcher/LauncherPanel.qml+3−1
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013-2016 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
@@ -69,7 +69,9 @@ Rectangle {
6969 MouseArea {
7070 id: mouseEventEater
7171 anchors.fill: parent
72+ acceptedButtons: Qt.AllButtons
7273 hoverEnabled: true
74+ onWheel: wheel.accepted = true;
7375 }
7476
7577 Column {
qml/Launcher/graphics/divider-line.png

Binary file not shown.

qml/Launcher/graphics/focused_app_arrow@30.png

Binary file not shown.

qml/Launcher/graphics/home@18.png

Binary file not shown.

qml/Launcher/graphics/quicklist_tooltip@30.png

Binary file not shown.

qml/Panel/Indicators/client/IndicatorsClient.qml+7−1
@@ -19,7 +19,6 @@
1919
2020import QtQuick 2.4
2121import Ubuntu.Components 1.3
22−import Ubuntu.Components.ListItems 1.3 as ListItem
2322
2423Rectangle {
2524 color: theme.palette.normal.background
@@ -37,6 +36,13 @@ Rectangle {
3736 function reset() {
3837 clear();
3938 var component = Qt.createComponent("IndicatorsList.qml");
39+ if (component.status !== Component.Ready) {
40+ if (component.status === Component.Error)
41+ console.error("Error: " + component.errorString());
42+
43+ return;
44+ }
45+
4046 var page = component.createObject(pages, {"profile": indicatorProfile});
4147 push(page);
4248 }
qml/Panel/Indicators/client/IndicatorsList.qml+7
@@ -58,6 +58,13 @@ Page {
5858
5959 onClicked: {
6060 var new_page = Qt.createComponent("IndicatorRepresentation.qml");
61+ if (new_page.status !== Component.Ready) {
62+ if (new_page.status === Component.Error)
63+ console.error("Error: " + new_page.errorString());
64+
65+ return;
66+ }
67+
6168 page.pageStack.push(new_page.createObject(pages), {"indicatorProperties" : model.indicatorProperties });
6269 }
6370 }
qml/Panel/IndicatorsMenu.qml+3−1
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2014 Canonical, Ltd.
2+ * Copyright (C) 2014-2016 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
@@ -80,6 +80,8 @@ Showable {
8080 MouseArea {
8181 anchors.fill: parent
8282 hoverEnabled: true
83+ acceptedButtons: Qt.AllButtons
84+ onWheel: wheel.accepted = true;
8385 }
8486
8587 MenuContent {
qml/Panel/graphics/rectangular_dropshadow@30.png

Binary file not shown.

qml/Rotation/HalfLoopRotationAnimation.qml+1−1
@@ -42,6 +42,6 @@ SequentialAnimation {
4242 from: root.fromAngle; to: root.toAngle
4343 duration: rotationDuration; easing.type: rotationEasing
4444 }
45− UpdateShellTransformations { info: root.info; shell: root.shell }
45+ UpdateShellTransformations { shell: root.shell; rotationAngle: root.toAngle }
4646 ScriptAction { script: { info.transitioning = false; } }
4747}
qml/Rotation/ImmediateRotationAction.qml+1−1
@@ -25,7 +25,7 @@ SequentialAnimation {
2525 root.info.transitioning = true;
2626 } }
2727
28− UpdateShellTransformations { info: root.info; shell: root.shell }
28+ UpdateShellTransformations { shell: root.shell; rotationAngle: root.info.requestedOrientationAngle }
2929
3030 ScriptAction { script: {
3131 root.shell.updateFocusedAppOrientation();
qml/Rotation/NinetyRotationAnimation.qml+1−1
@@ -78,7 +78,7 @@ SequentialAnimation {
7878 duration: rotationDuration; easing.type: rotationEasing
7979 }
8080 }
81− UpdateShellTransformations { info: root.info; shell: root.shell }
81+ UpdateShellTransformations { shell: root.shell; rotationAngle: root.toAngle }
8282 ScriptAction { script: {
8383 shellSnapshot.visible = false;
8484 shellSnapshot.discard();
qml/Rotation/UpdateShellTransformations.qml+4−4
@@ -17,16 +17,16 @@
1717import QtQuick 2.4
1818
1919ScriptAction {
20− property var info
2120 property var shell
21+ property int rotationAngle
2222
2323 script: {
24− shell.orientationAngle = info.requestedOrientationAngle;
25− shell.transformRotationAngle = info.requestedOrientationAngle;
24+ shell.orientationAngle = rotationAngle;
25+ shell.transformRotationAngle = rotationAngle;
2626
2727 // They must all be bindings as orientedShell's size can change
2828
29− if (info.requestedOrientationAngle === 90 || info.requestedOrientationAngle === 270) {
29+ if (rotationAngle === 90 || rotationAngle === 270) {
3030 shell.width = Qt.binding(function() { return orientedShell.height; });
3131 shell.height = Qt.binding(function() { return orientedShell.width; });
3232 } else {
qml/Shell.qml+3
@@ -428,6 +428,9 @@ StyledItem {
428428 launcherOffset: launcher.progress
429429 forcedUnlock: wizard.active || shell.mode === "full-shell"
430430 background: wallpaperResolver.background
431+ allowFingerprint: !dialogs.hasActiveDialog &&
432+ !notifications.topmostIsFullscreen &&
433+ !panel.indicators.shown
431434
432435 // avoid overlapping with Launcher's edge drag area
433436 // FIXME: Fix TouchRegistry & friends and remove this workaround
qml/Stages/DecoratedWindow.qml+5−4
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2014-2015 Canonical, Ltd.
2+ * Copyright (C) 2014-2016 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,8 +12,6 @@
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: Michael Zanetti <michael.zanetti@canonical.com>
1715 */
1816
1917import QtQuick 2.4
@@ -31,6 +29,7 @@ FocusScope {
3129 property alias active: decoration.active
3230 readonly property alias title: applicationWindow.title
3331 property alias fullscreen: applicationWindow.fullscreen
32+ property alias maximizeButtonShown: decoration.maximizeButtonShown
3433
3534 readonly property bool decorationShown: !fullscreen
3635 property bool highlightShown: false
@@ -38,6 +37,7 @@ FocusScope {
3837
3938 property real requestedWidth
4039 property real requestedHeight
40+
4141 property alias surfaceOrientationAngle: applicationWindow.surfaceOrientationAngle
4242 readonly property real visibleDecorationHeight: root.decorationShown ? decoration.height : 0
4343 readonly property bool counterRotate: surfaceOrientationAngle != 0 && surfaceOrientationAngle != 180
@@ -45,7 +45,8 @@ FocusScope {
4545 readonly property int minimumWidth: !counterRotate ? applicationWindow.minimumWidth : applicationWindow.minimumHeight
4646 readonly property int minimumHeight: visibleDecorationHeight + (!counterRotate ? applicationWindow.minimumHeight : applicationWindow.minimumWidth)
4747 readonly property int maximumWidth: !counterRotate ? applicationWindow.maximumWidth : applicationWindow.maximumHeight
48− readonly property int maximumHeight: visibleDecorationHeight + (!counterRotate ? applicationWindow.maximumHeight : applicationWindow.maximumWidth)
48+ readonly property int maximumHeight: (root.decorationShown && applicationWindow.maximumHeight > 0 ? decoration.height : 0)
49+ + (!counterRotate ? applicationWindow.maximumHeight : applicationWindow.maximumWidth)
4950 readonly property int widthIncrement: !counterRotate ? applicationWindow.widthIncrement : applicationWindow.heightIncrement
5051 readonly property int heightIncrement: !counterRotate ? applicationWindow.heightIncrement : applicationWindow.widthIncrement
5152
qml/Stages/DesktopSpread.qml+2
@@ -132,6 +132,8 @@ FocusScope {
132132 anchors.fill: parent
133133 visible: spreadBackground.visible
134134 enabled: visible
135+ acceptedButtons: Qt.AllButtons
136+ onWheel: wheel.accepted = true;
135137 }
136138
137139 Item {
qml/Stages/DesktopStage.qml+19−2
@@ -263,8 +263,23 @@ AbstractStage {
263263 }
264264 }
265265 z: normalZ
266− x: priv.focusedAppDelegate ? priv.focusedAppDelegate.x + units.gu(3) : (normalZ - 1) * units.gu(3)
267− y: priv.focusedAppDelegate ? priv.focusedAppDelegate.y + units.gu(3) : normalZ * units.gu(3)
266+ x: requestedX // may be overridden in some states. Do not directly write to this.
267+ y: requestedY // may be overridden in some states. Do not directly write to this.
268+ property real requestedX: priv.focusedAppDelegate ? priv.focusedAppDelegate.x + units.gu(3) : (normalZ - 1) * units.gu(3)
269+ property real requestedY: priv.focusedAppDelegate ? priv.focusedAppDelegate.y + units.gu(3) : normalZ * units.gu(3)
270+
271+ Binding {
272+ target: appDelegate
273+ property: "y"
274+ value: appDelegate.requestedY -
275+ Math.min(appDelegate.requestedY - PanelState.panelHeight,
276+ Math.max(0, UbuntuKeyboardInfo.height - (appContainer.height - (appDelegate.requestedY + appDelegate.height))))
277+ when: appDelegate.focus && appDelegate.state == "normal"
278+ && SurfaceManager.inputMethodSurface
279+ && SurfaceManager.inputMethodSurface.state != Mir.HiddenState
280+ && SurfaceManager.inputMethodSurface.state != Mir.MinimizedState
281+
282+ }
268283
269284 width: decoratedWindow.width
270285 height: decoratedWindow.height
@@ -654,6 +669,8 @@ AbstractStage {
654669 surface: model.surface
655670 active: appDelegate.focus
656671 focus: true
672+ maximizeButtonShown: (maximumWidth == 0 || maximumWidth >= appContainer.width) &&
673+ (maximumHeight == 0 || maximumHeight >= appContainer.height)
657674 overlayShown: touchControls.overlayShown
658675
659676 requestedWidth: appDelegate.requestedWidth
qml/Stages/TabletStage.qml+17−9
@@ -101,7 +101,7 @@ AbstractStage {
101101 orientations |= Qt.LandscapeOrientation | Qt.InvertedLandscapeOrientation;
102102 if (priv.sideStageItemId && !spreadView.surfaceDragging) {
103103 // If we have a sidestage app, support Portrait orientation
104− // so that it will switch the sidestage app to mainstage on rotate
104+ // so that it will switch the sidestage app to mainstage on rotate to portrait
105105 orientations |= Qt.PortraitOrientation|Qt.InvertedPortraitOrientation;
106106 }
107107 return orientations;
@@ -624,7 +624,7 @@ AbstractStage {
624624 enabled: priv.sideStageEnabled
625625
626626 onDropped: {
627− drop.source.spreadDelegate.stage = ApplicationInfoInterface.MainStage;
627+ drop.source.spreadDelegate.saveStage(ApplicationInfoInterface.MainStage);
628628 drop.source.spreadDelegate.focus = true;
629629 }
630630 keys: "SideStage"
@@ -679,7 +679,7 @@ AbstractStage {
679679 }
680680 onDropped: {
681681 if (drop.keys == "MainStage") {
682− drop.source.spreadDelegate.stage = ApplicationInfoInterface.SideStage;
682+ drop.source.spreadDelegate.saveStage(ApplicationInfoInterface.SideStage);
683683 drop.source.spreadDelegate.focus = true;
684684 }
685685 }
@@ -810,6 +810,11 @@ AbstractStage {
810810 }
811811 }
812812
813+ function saveStage(newStage) {
814+ stage = newStage;
815+ WindowStateStorage.saveStage(application.appId, newStage);
816+ }
817+
813818 // FIXME: A regular binding doesn't update any more after closing an app.
814819 // Using a Binding for now.
815820 Binding {
@@ -843,15 +848,17 @@ AbstractStage {
843848 refreshStage();
844849 _constructing = false;
845850 }
846− Component.onDestruction: {
847− WindowStateStorage.saveStage(application.appId, stage);
848− }
849851
850852 function refreshStage() {
851853 var newStage = ApplicationInfoInterface.MainStage;
852− if (priv.sideStageEnabled) {
853− if (application && application.supportedOrientations & (Qt.PortraitOrientation|Qt.InvertedPortraitOrientation)) {
854− newStage = WindowStateStorage.getStage(application.appId);
854+ if (priv.sideStageEnabled) { // we're in lanscape rotation.
855+ if (!isDash && application && application.supportedOrientations & (Qt.PortraitOrientation|Qt.InvertedPortraitOrientation)) {
856+ var defaultStage = ApplicationInfoInterface.SideStage; // if application supports portrait, it defaults to sidestage.
857+ if (application.supportedOrientations & (Qt.LandscapeOrientation|Qt.InvertedLandscapeOrientation)) {
858+ // if it supports lanscape, it defaults to mainstage.
859+ defaultStage = ApplicationInfoInterface.MainStage;
860+ }
861+ newStage = WindowStateStorage.getStage(application.appId, defaultStage);
855862 }
856863 }
857864
@@ -1085,6 +1092,7 @@ AbstractStage {
10851092 // only accept opposite stage.
10861093 Drag.keys: {
10871094 if (!surface) return "Disabled";
1095+ if (spreadDelegate.isDash) return "Disabled";
10881096
10891097 if (spreadDelegate.stage === ApplicationInfo.MainStage) {
10901098 if (spreadDelegate.application.supportedOrientations
qml/Stages/WindowControlsOverlay.qml+2−2
@@ -94,8 +94,8 @@ Item {
9494 function handlePositionChanged(mouseX, mouseY) {
9595 if (priv.dragging) {
9696 var pos = mapToItem(root.target.parent, mouseX, mouseY);
97− root.target.x = Math.round(pos.x - priv.distanceX);
98− root.target.y = Math.round(Math.max(pos.y - priv.distanceY, PanelState.panelHeight));
97+ root.target.requestedX = Math.round(pos.x - priv.distanceX);
98+ root.target.requestedY = Math.round(Math.max(pos.y - priv.distanceY, PanelState.panelHeight));
9999 }
100100 }
101101 }
qml/Stages/WindowDecoration.qml+13−6
@@ -26,18 +26,22 @@ MouseArea {
2626
2727 property Item target
2828 property alias title: titleLabel.text
29+ property alias maximizeButtonShown: buttons.maximizeButtonShown
2930 property bool active: false
31+ acceptedButtons: Qt.AllButtons // prevent leaking unhandled mouse events
3032 property alias overlayShown: buttons.overlayShown
3133
32− hoverEnabled: true
33−
3434 signal closeClicked()
3535 signal minimizeClicked()
3636 signal maximizeClicked()
3737 signal maximizeHorizontallyClicked()
3838 signal maximizeVerticallyClicked()
3939
40− onDoubleClicked: root.maximizeClicked()
40+ onDoubleClicked: {
41+ if (maximizeButtonShown && mouse.button == Qt.LeftButton) {
42+ root.maximizeClicked();
43+ }
44+ }
4145
4246 QtObject {
4347 id: priv
@@ -47,7 +51,7 @@ MouseArea {
4751 }
4852
4953 onPressedChanged: {
50− if (pressed) {
54+ if (pressed && pressedButtons == Qt.LeftButton) {
5155 var pos = mapToItem(root.target, mouseX, mouseY);
5256 priv.distanceX = pos.x;
5357 priv.distanceY = pos.y;
@@ -65,11 +69,14 @@ MouseArea {
6569 // Use integer coordinate values to ensure that target is left in a pixel-aligned
6670 // position. Mouse movement could have subpixel precision, yielding a fractional
6771 // mouse position.
68− root.target.x = Math.round(pos.x - priv.distanceX);
69− root.target.y = Math.round(Math.max(pos.y - priv.distanceY, PanelState.panelHeight));
72+ root.target.requestedX = Math.round(pos.x - priv.distanceX);
73+ root.target.requestedY = Math.round(Math.max(pos.y - priv.distanceY, PanelState.panelHeight));
7074 }
7175 }
7276
77+ // do not let unhandled wheel event pass thru the decoration
78+ onWheel: wheel.accepted = true;
79+
7380 Rectangle {
7481 anchors.fill: parent
7582 anchors.bottomMargin: -radius
qml/Stages/WindowResizeArea.qml+11−11
@@ -55,8 +55,8 @@ MouseArea {
5555
5656 function updateNormalGeometry() {
5757 if (root.target.state == "normal") {
58− normalX = root.target.x
59− normalY = root.target.y
58+ normalX = root.target.requestedX
59+ normalY = root.target.requestedY
6060 normalWidth = root.target.width
6161 normalHeight = root.target.height
6262 }
@@ -73,14 +73,14 @@ MouseArea {
7373
7474 function loadWindowState() {
7575 var windowGeometry = windowStateStorage.getGeometry(root.windowId,
76− Qt.rect(target.x, target.y, defaultWidth, defaultHeight));
76+ Qt.rect(target.requestedX, target.requestedY, defaultWidth, defaultHeight));
7777
7878 target.requestedWidth = Qt.binding(function() { return Math.min(Math.max(windowGeometry.width, d.minimumWidth), screenWidth - root.leftMargin); });
7979 target.requestedHeight = Qt.binding(function() { return Math.min(Math.max(windowGeometry.height, d.minimumHeight),
8080 root.screenHeight - (target.fullscreen ? 0 : PanelState.panelHeight)); });
81− target.x = Qt.binding(function() { return Math.max(Math.min(windowGeometry.x, root.screenWidth - root.leftMargin - target.requestedWidth),
81+ target.requestedX = Qt.binding(function() { return Math.max(Math.min(windowGeometry.x, root.screenWidth - root.leftMargin - target.requestedWidth),
8282 (target.fullscreen ? 0 : root.leftMargin)); });
83− target.y = Qt.binding(function() { return Math.max(Math.min(windowGeometry.y, root.screenHeight - target.requestedHeight), PanelState.panelHeight); });
83+ target.requestedY = Qt.binding(function() { return Math.max(Math.min(windowGeometry.y, root.screenHeight - target.requestedHeight), PanelState.panelHeight); });
8484
8585 var windowState = windowStateStorage.getState(root.windowId, WindowStateStorage.WindowStateNormal)
8686 switch (windowState) {
@@ -258,8 +258,8 @@ MouseArea {
258258 var pos = mapToItem(root.target.parent, mouseX, mouseY);
259259 d.startMousePosX = pos.x;
260260 d.startMousePosY = pos.y;
261− d.startX = target.x;
262− d.startY = target.y;
261+ d.startX = target.requestedX;
262+ d.startY = target.requestedY;
263263 d.startWidth = target.width;
264264 d.startHeight = target.height;
265265 d.currentWidth = target.width;
@@ -296,7 +296,7 @@ MouseArea {
296296
297297 if (d.leftBorder) {
298298 var newTargetX = d.startX + deltaX;
299− var rightBorderX = target.x + target.width;
299+ var rightBorderX = target.requestedX + target.width;
300300 if (rightBorderX > newTargetX + d.minimumWidth) {
301301 if (rightBorderX < newTargetX + d.maximumWidth) {
302302 target.requestedWidth = rightBorderX - newTargetX;
@@ -322,7 +322,7 @@ MouseArea {
322322
323323 if (d.topBorder) {
324324 var newTargetY = Math.max(d.startY + deltaY, PanelState.panelHeight); // disallow resizing up past Panel
325− var bottomBorderY = target.y + target.height;
325+ var bottomBorderY = target.requestedY + target.height;
326326 if (bottomBorderY > newTargetY + d.minimumHeight) {
327327 if (bottomBorderY < newTargetY + d.maximumHeight) {
328328 target.requestedHeight = bottomBorderY - newTargetY;
@@ -351,13 +351,13 @@ MouseArea {
351351 target: root.target
352352 onWidthChanged: {
353353 if (d.moveLeftBorder) {
354− target.x += d.currentWidth - target.width;
354+ target.requestedX += d.currentWidth - target.width;
355355 }
356356 d.currentWidth = target.width;
357357 }
358358 onHeightChanged: {
359359 if (d.moveTopBorder) {
360− target.y += d.currentHeight - target.height;
360+ target.requestedY += d.currentHeight - target.height;
361361 }
362362 d.currentHeight = target.height;
363363 }
qml/Stages/graphics/PageHeaderBaseDividerBottom@18.png

Binary file not shown.

qml/Stages/graphics/PageHeaderBaseDividerLight@18.png

Binary file not shown.

qml/Stages/graphics/dropshadow2gu@30.png

Binary file not shown.

qml/Stages/graphics/sidestage_handle@20.png

Binary file not shown.

qml/Tutorial/graphics/background1.png

Binary file not shown.

qml/Tutorial/graphics/background2.png

Binary file not shown.

qml/Wizard/Pages/data/Desktop_header_bkg.png

Binary file not shown.

qml/Wizard/Pages/data/Desktop_splash_screen_bkg.png

Binary file not shown.

qml/Wizard/Pages/data/Phone_header_bkg.png

Binary file not shown.

qml/Wizard/Pages/data/Phone_splash_screen_bkg.png

Binary file not shown.

qml/Wizard/Pages/data/Tick@30.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/map.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/pin.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_-1.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_-10.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_-11.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_-2.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_-3.5.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_-3.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_-4.5.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_-4.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_-5.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_-6.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_-7.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_-8.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_-9.5.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_-9.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_0.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_1.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_10.5.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_10.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_11.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_12.75.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_12.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_13.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_2.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_3.5.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_3.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_4.5.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_4.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_5.5.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_5.75.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_5.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_6.5.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_6.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_7.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_8.5.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_8.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_9.5.png

Binary file not shown.

qml/Wizard/Pages/data/timezonemap/timezone_9.png

Binary file not shown.

qml/Wizard/Pages/passcode-desktop.qml+27−10
@@ -33,15 +33,18 @@ LocalComponents.Page {
3333 readonly property alias password: passwordField.text
3434 readonly property alias password2: password2Field.text
3535
36− GridLayout {
36+ Flickable {
3737 id: column
38− columns: 1
39− rows: 3
38+ clip: true
39+ flickableDirection: Flickable.VerticalFlick
4040 anchors.fill: content
41− anchors.leftMargin: leftMargin
42− anchors.rightMargin: rightMargin
41+ anchors.leftMargin: parent.leftMargin
42+ anchors.rightMargin: parent.rightMargin
4343 anchors.topMargin: customMargin
44− rowSpacing: units.gu(3)
44+
45+ bottomMargin: Qt.inputMethod.keyboardRectangle.height - height - customMargin
46+
47+ Behavior on contentY { UbuntuNumberAnimation {} }
4548
4649 Label {
4750 id: infoLabel
@@ -49,6 +52,7 @@ LocalComponents.Page {
4952 anchors {
5053 left: parent.left
5154 right: parent.right
55+ top: parent.top
5256 }
5357 wrapMode: Text.Wrap
5458 font.weight: Font.Light
@@ -57,6 +61,13 @@ LocalComponents.Page {
5761 }
5862
5963 GridLayout {
64+ anchors {
65+ left: parent.left
66+ right: parent.right
67+ top: infoLabel.bottom
68+ topMargin: units.gu(3)
69+ }
70+
6071 columns: 2
6172 columnSpacing: units.gu(2)
6273 rowSpacing: units.gu(2)
@@ -74,6 +85,11 @@ LocalComponents.Page {
7485 validator: RegExpValidator { regExp: /^\d{4}$/ }
7586 maximumLength: 4
7687 onAccepted: password2Field.forceActiveFocus()
88+ onActiveFocusChanged: {
89+ if (activeFocus) {
90+ column.contentY = y
91+ }
92+ }
7793 }
7894
7995 Label {
@@ -88,6 +104,11 @@ LocalComponents.Page {
88104 inputMethodHints: Qt.ImhDigitsOnly
89105 validator: RegExpValidator { regExp: /^\d{4}$/ }
90106 maximumLength: 4
107+ onActiveFocusChanged: {
108+ if (activeFocus) {
109+ column.contentY = y
110+ }
111+ }
91112 }
92113
93114 Label {
@@ -112,10 +133,6 @@ LocalComponents.Page {
112133 }
113134 }
114135 }
115−
116− Item { // spacer
117− Layout.fillHeight: true
118− }
119136 }
120137
121138 Component {
qml/Wizard/PasswordMeter.qml+3−1
@@ -83,7 +83,9 @@ Item {
8383 wrapMode: Text.Wrap
8484 text: {
8585 if (matching !== undefined) {
86− if (matching)
86+ if (password.length < 8)
87+ return i18n.tr("Password too short");
88+ else if (matching)
8789 return i18n.tr("Passwords match");
8890 else if (!matching)
8991 return i18n.tr("Passwords do not match");
qml/graphics/dropshadow_left@20.png

Binary file not shown.

qml/graphics/dropshadow_right@20.png

Binary file not shown.

src/CMakeLists.txt+1
@@ -1,6 +1,7 @@
11pkg_check_modules(CONNECTIVITY REQUIRED connectivity-qt1)
22
33include_directories(
4+ SYSTEM
45 ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
56 ${CONNECTIVITY_INCLUDE_DIRS}
67)
src/Dash/main.cpp+22−21
@@ -25,6 +25,7 @@
2525#include <QCommandLineParser>
2626#include <QLibrary>
2727#include <libintl.h>
28+#include <QQmlApplicationEngine>
2829
2930#include <paths.h>
3031#include "../qmldebuggerutils.h"
@@ -83,40 +84,40 @@ int main(int argc, const char *argv[])
8384 bindtextdomain("unity8", translationDirectory().toUtf8().data());
8485 textdomain("unity8");
8586
86− QQuickView* view = new QQuickView();
87− view->setResizeMode(QQuickView::SizeRootObjectToView);
87+ #ifdef UNITY8_ENABLE_TOUCH_EMULATION
88+ // You will need this if you want to interact with touch-only components using a mouse
89+ // Needed only when manually testing on a desktop.
90+ MouseTouchAdaptor *mouseTouchAdaptor = 0;
91+ if (parser.isSet(mousetouchOption)) {
92+ mouseTouchAdaptor = MouseTouchAdaptor::instance();
93+ }
94+ #endif
8895
96+ QQmlApplicationEngine *engine = new QQmlApplicationEngine(application);
97+
98+ int initialWidth = -1;
99+ int initialHeight = -1;
89100 if (parser.isSet(windowGeometryOption) &&
90101 parser.value(windowGeometryOption).split('x').size() == 2)
91102 {
92103 QStringList geom = parser.value(windowGeometryOption).split('x');
93104 QSize windowSize(geom.at(0).toInt(), geom.at(1).toInt());
94105 if (windowSize.isValid()) {
95− view->setWidth(windowSize.width());
96− view->setHeight(windowSize.height());
106+ initialWidth = windowSize.width();
107+ initialHeight = windowSize.height();
97108 }
98109 }
99−
100− view->setTitle(QStringLiteral("Scopes"));
101−
102− #ifdef UNITY8_ENABLE_TOUCH_EMULATION
103− // You will need this if you want to interact with touch-only components using a mouse
104− // Needed only when manually testing on a desktop.
105− MouseTouchAdaptor *mouseTouchAdaptor = 0;
106− if (parser.isSet(mousetouchOption)) {
107− mouseTouchAdaptor = MouseTouchAdaptor::instance();
108− }
109− #endif
110+ engine->rootContext()->setContextProperty("initialWidth", initialWidth);
111+ engine->rootContext()->setContextProperty("initialHeight", initialHeight);
110112
111113 QUrl source(::qmlDirectory() + "/Dash/DashApplication.qml");
112− prependImportPaths(view->engine(), ::overrideImportPaths());
113− appendImportPaths(view->engine(), ::fallbackImportPaths());
114+ prependImportPaths(engine, ::overrideImportPaths());
115+ appendImportPaths(engine, ::fallbackImportPaths());
114116
115117 CachingNetworkManagerFactory *managerFactory = new CachingNetworkManagerFactory();
116− view->engine()->setNetworkAccessManagerFactory(managerFactory);
118+ engine->setNetworkAccessManagerFactory(managerFactory);
117119
118− view->setSource(source);
119− view->show();
120+ engine->load(source);
120121
121122 UnixSignalHandler signalHandler([]{
122123 QGuiApplication::exit(0);
@@ -125,7 +126,7 @@ int main(int argc, const char *argv[])
125126
126127 int result = application->exec();
127128
128− delete view;
129+ delete engine;
129130
130131 #ifdef UNITY8_ENABLE_TOUCH_EMULATION
131132 delete mouseTouchAdaptor;
tests/data/unity/backgrounds/blue.png

Binary file not shown.

tests/data/unity/backgrounds/red.png

Binary file not shown.

tests/graphics/applicationIcons/browser@18.png

Binary file not shown.

tests/graphics/applicationIcons/calendar@18.png

Binary file not shown.

tests/graphics/applicationIcons/camera@18.png

Binary file not shown.

tests/graphics/applicationIcons/contacts-app@18.png

Binary file not shown.

tests/graphics/applicationIcons/dash.png

Binary file not shown.

tests/graphics/applicationIcons/dialer-app@18.png

Binary file not shown.

tests/graphics/applicationIcons/evernote@18.png

Binary file not shown.

tests/graphics/applicationIcons/facebook@18.png

Binary file not shown.

tests/graphics/applicationIcons/gallery@18.png

Binary file not shown.

tests/graphics/applicationIcons/gmail@18.png

Binary file not shown.

tests/graphics/applicationIcons/libreoffice@18.png

Binary file not shown.

tests/graphics/applicationIcons/map@18.png

Binary file not shown.

tests/graphics/applicationIcons/messages-app@18.png

Binary file not shown.

tests/graphics/applicationIcons/notepad@18.png

Binary file not shown.

tests/graphics/applicationIcons/pinterest@18.png

Binary file not shown.

tests/graphics/applicationIcons/soundcloud@18.png

Binary file not shown.

tests/graphics/applicationIcons/system-settings@18.png

Binary file not shown.

tests/graphics/applicationIcons/twitter@18.png

Binary file not shown.

tests/graphics/applicationIcons/weather@18.png

Binary file not shown.

tests/graphics/applicationIcons/wikipedia@18.png

Binary file not shown.

tests/graphics/applicationIcons/youtube@18.png

Binary file not shown.

tests/graphics/avatars/amanda@12.png

Binary file not shown.

tests/graphics/avatars/anna_olsson@12.png

Binary file not shown.

tests/graphics/avatars/funky@12.png

Binary file not shown.

tests/graphics/clock@18.png

Binary file not shown.

tests/mocks/AccountsService/AccountsService.cpp+24
@@ -20,11 +20,13 @@
2020
2121AccountsService::AccountsService(QObject* parent)
2222 : QObject(parent),
23+ m_enableFingerprintIdentification(true),
2324 m_enableLauncherWhileLocked(true),
2425 m_enableIndicatorsWhileLocked(true),
2526 m_backgroundFile(qmlDirectory() + "/graphics/phone_background.jpg"),
2627 m_statsWelcomeScreen(true),
2728 m_failedLogins(0),
29+ m_failedFingerprintLogins(0),
2830 m_demoEdges(false),
2931 m_demoEdgesCompleted(),
3032 m_hereEnabled(false),
@@ -74,6 +76,17 @@ void AccountsService::setDemoEdgesCompleted(const QStringList &demoEdgesComplete
7476 Q_EMIT demoEdgesCompletedChanged();
7577}
7678
79+bool AccountsService::enableFingerprintIdentification() const
80+{
81+ return m_enableFingerprintIdentification;
82+}
83+
84+void AccountsService::setEnableFingerprintIdentification(bool enableFingerprintIdentification)
85+{
86+ m_enableFingerprintIdentification = enableFingerprintIdentification;
87+ Q_EMIT enableFingerprintIdentificationChanged();
88+}
89+
7790bool AccountsService::enableLauncherWhileLocked() const
7891{
7992 return m_enableLauncherWhileLocked;
@@ -137,6 +150,17 @@ void AccountsService::setFailedLogins(uint failedLogins)
137150 failedLoginsChanged();
138151}
139152
153+uint AccountsService::failedFingerprintLogins() const
154+{
155+ return m_failedFingerprintLogins;
156+}
157+
158+void AccountsService::setFailedFingerprintLogins(uint failedFingerprintLogins)
159+{
160+ m_failedFingerprintLogins = failedFingerprintLogins;
161+ failedFingerprintLoginsChanged();
162+}
163+
140164bool AccountsService::hereEnabled() const
141165{
142166 return m_hereEnabled;
tests/mocks/AccountsService/AccountsService.h+16
@@ -38,6 +38,10 @@ class AccountsService: public QObject
3838 READ demoEdgesCompleted
3939 WRITE setDemoEdgesCompleted // only available in mock
4040 NOTIFY demoEdgesCompletedChanged)
41+ Q_PROPERTY (bool enableFingerprintIdentification
42+ READ enableFingerprintIdentification
43+ WRITE setEnableFingerprintIdentification // only available in mock
44+ NOTIFY enableFingerprintIdentificationChanged)
4145 Q_PROPERTY (bool enableLauncherWhileLocked
4246 READ enableLauncherWhileLocked
4347 WRITE setEnableLauncherWhileLocked // only available in mock
@@ -61,6 +65,10 @@ class AccountsService: public QObject
6165 READ failedLogins
6266 WRITE setFailedLogins
6367 NOTIFY failedLoginsChanged)
68+ Q_PROPERTY (uint failedFingerprintLogins
69+ READ failedFingerprintLogins
70+ WRITE setFailedFingerprintLogins
71+ NOTIFY failedFingerprintLoginsChanged)
6472 Q_PROPERTY(bool hereEnabled
6573 READ hereEnabled
6674 WRITE setHereEnabled
@@ -94,6 +102,8 @@ public:
94102 QStringList demoEdgesCompleted() const;
95103 void setDemoEdgesCompleted(const QStringList &demoEdges);
96104 Q_INVOKABLE void markDemoEdgeCompleted(const QString &edge);
105+ bool enableFingerprintIdentification() const;
106+ void setEnableFingerprintIdentification(bool enableFingerprintIdentification);
97107 bool enableLauncherWhileLocked() const;
98108 void setEnableLauncherWhileLocked(bool enableLauncherWhileLocked);
99109 bool enableIndicatorsWhileLocked() const;
@@ -105,6 +115,8 @@ public:
105115 PasswordDisplayHint passwordDisplayHint() const;
106116 uint failedLogins() const;
107117 void setFailedLogins(uint failedLogins);
118+ uint failedFingerprintLogins() const;
119+ void setFailedFingerprintLogins(uint failedFingerprintLogins);
108120 bool hereEnabled() const;
109121 void setHereEnabled(bool enabled);
110122 QString hereLicensePath() const;
@@ -121,12 +133,14 @@ Q_SIGNALS:
121133 void userChanged();
122134 void demoEdgesChanged();
123135 void demoEdgesCompletedChanged();
136+ void enableFingerprintIdentificationChanged();
124137 void enableLauncherWhileLockedChanged();
125138 void enableIndicatorsWhileLockedChanged();
126139 void backgroundFileChanged();
127140 void statsWelcomeScreenChanged();
128141 void passwordDisplayHintChanged();
129142 void failedLoginsChanged();
143+ void failedFingerprintLoginsChanged();
130144 void hereEnabledChanged();
131145 void hereLicensePathChanged();
132146 void realNameChanged();
@@ -134,12 +148,14 @@ Q_SIGNALS:
134148 void keymapsChanged();
135149
136150private:
151+ bool m_enableFingerprintIdentification;
137152 bool m_enableLauncherWhileLocked;
138153 bool m_enableIndicatorsWhileLocked;
139154 QString m_backgroundFile;
140155 QString m_user;
141156 bool m_statsWelcomeScreen;
142157 uint m_failedLogins;
158+ uint m_failedFingerprintLogins;
143159 bool m_demoEdges;
144160 QStringList m_demoEdgesCompleted;
145161 bool m_hereEnabled;
tests/mocks/Biometryd/CMakeLists.txtnew file+14
@@ -0,0 +1,14 @@
1+set(MOCK_BIOMETRYD_SOURCES
2+ plugin.cpp
3+ MockBiometryd.cpp
4+ MockDevice.cpp
5+ MockIdentifier.cpp
6+ MockObserver.cpp
7+ MockOperation.cpp
8+)
9+
10+add_library(MockBiometryd MODULE ${MOCK_BIOMETRYD_SOURCES})
11+
12+qt5_use_modules(MockBiometryd Qml Quick Core)
13+
14+add_unity8_mock(Biometryd 0.0 Biometryd TARGETS MockBiometryd)
tests/mocks/Biometryd/MockBiometryd.cppnew file+43
@@ -0,0 +1,43 @@
1+/*
2+ * Copyright (C) 2016 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 "MockBiometryd.h"
18+#include "MockDevice.h"
19+
20+MockBiometryd::MockBiometryd(QObject *parent)
21+ : QObject(parent)
22+ , m_device(new MockDevice(this))
23+ , m_available(true)
24+{
25+}
26+
27+MockDevice *MockBiometryd::defaultDevice() const
28+{
29+ return m_device;
30+}
31+
32+bool MockBiometryd::available() const
33+{
34+ return m_available;
35+}
36+
37+void MockBiometryd::setAvailable(bool available)
38+{
39+ if (m_available != available) {
40+ m_available = available;
41+ Q_EMIT availableChanged();
42+ }
43+}
tests/mocks/Biometryd/MockBiometryd.hnew file+50
@@ -0,0 +1,50 @@
1+/*
2+ * Copyright (C) 2016 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 MOCK_BIOMETRYD_H
18+#define MOCK_BIOMETRYD_H
19+
20+#include <QObject>
21+
22+#include "MockDevice.h"
23+
24+class MockBiometryd : public QObject
25+{
26+ Q_OBJECT
27+ Q_DISABLE_COPY(MockBiometryd)
28+ Q_PROPERTY(MockDevice *defaultDevice READ defaultDevice CONSTANT)
29+ Q_PROPERTY(bool available
30+ READ available
31+ WRITE setAvailable // only in mock
32+ NOTIFY availableChanged)
33+
34+public:
35+ explicit MockBiometryd(QObject *parent = 0);
36+
37+ MockDevice *defaultDevice() const;
38+
39+ bool available() const;
40+ void setAvailable(bool available);
41+
42+Q_SIGNALS:
43+ void availableChanged();
44+
45+private:
46+ MockDevice *m_device;
47+ bool m_available;
48+};
49+
50+#endif // MOCK_BIOMETRYD_H
tests/mocks/Biometryd/MockDevice.cppnew file+29
@@ -0,0 +1,29 @@
1+/*
2+ * Copyright (C) 2016 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 "MockDevice.h"
18+#include "MockIdentifier.h"
19+
20+MockDevice::MockDevice(QObject *parent)
21+ : QObject(parent)
22+ , m_identifier(new MockIdentifier(this))
23+{
24+}
25+
26+MockIdentifier *MockDevice::identifier() const
27+{
28+ return m_identifier;
29+}
tests/mocks/Biometryd/MockDevice.hnew file+40
@@ -0,0 +1,40 @@
1+/*
2+ * Copyright (C) 2016 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 MOCK_DEVICE_H
18+#define MOCK_DEVICE_H
19+
20+#include <QObject>
21+
22+#include "MockIdentifier.h"
23+
24+class MockDevice : public QObject
25+{
26+ Q_OBJECT
27+ Q_PROPERTY(MockIdentifier *identifier READ identifier CONSTANT)
28+
29+public:
30+ explicit MockDevice(QObject *parent = 0);
31+
32+ MockIdentifier *identifier() const;
33+
34+private:
35+ MockIdentifier *m_identifier;
36+};
37+
38+Q_DECLARE_METATYPE(MockDevice*)
39+
40+#endif // MOCK_DEVICE_H
tests/mocks/Biometryd/MockIdentifier.cppnew file+28
@@ -0,0 +1,28 @@
1+/*
2+ * Copyright (C) 2016 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 "MockIdentifier.h"
18+#include "MockOperation.h"
19+
20+MockIdentifier::MockIdentifier(QObject *parent)
21+ : QObject(parent)
22+{
23+}
24+
25+MockOperation *MockIdentifier::identifyUser()
26+{
27+ return new MockOperation(this);
28+}
tests/mocks/Biometryd/MockIdentifier.hnew file+36
@@ -0,0 +1,36 @@
1+/*
2+ * Copyright (C) 2016 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 MOCK_IDENTIFIER_H
18+#define MOCK_IDENTIFIER_H
19+
20+#include <QObject>
21+
22+#include "MockOperation.h"
23+
24+class MockIdentifier : public QObject
25+{
26+ Q_OBJECT
27+
28+public:
29+ explicit MockIdentifier(QObject *parent = 0);
30+
31+ Q_INVOKABLE MockOperation *identifyUser();
32+};
33+
34+Q_DECLARE_METATYPE(MockIdentifier*)
35+
36+#endif // MOCK_IDENTIFIER_H
tests/mocks/Biometryd/MockObserver.cppnew file+22
@@ -0,0 +1,22 @@
1+/*
2+ * Copyright (C) 2016 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 "MockObserver.h"
18+
19+MockObserver::MockObserver(QObject *parent)
20+ : QObject(parent)
21+{
22+}
tests/mocks/Biometryd/MockObserver.hnew file+37
@@ -0,0 +1,37 @@
1+/*
2+ * Copyright (C) 2016 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 MOCK_OBSERVER_H
18+#define MOCK_OBSERVER_H
19+
20+#include <QObject>
21+#include <QString>
22+#include <QVariant>
23+
24+class MockObserver : public QObject
25+{
26+ Q_OBJECT
27+ Q_DISABLE_COPY(MockObserver)
28+
29+public:
30+ explicit MockObserver(QObject *parent = 0);
31+
32+Q_SIGNALS:
33+ void succeeded(const QVariant &result);
34+ void failed(const QString &reason);
35+};
36+
37+#endif // MOCK_OBSERVER_H
tests/mocks/Biometryd/MockOperation.cppnew file+56
@@ -0,0 +1,56 @@
1+/*
2+ * Copyright (C) 2016 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 <QString>
18+#include <QVariant>
19+
20+#include "MockOperation.h"
21+
22+MockOperation::MockOperation(QObject *parent)
23+ : QObject(parent)
24+ , m_observer(nullptr)
25+{
26+}
27+
28+bool MockOperation::running() const
29+{
30+ return m_observer != nullptr;
31+}
32+
33+void MockOperation::start(QObject *observer)
34+{
35+ if (!m_observer)
36+ m_observer = observer;
37+}
38+
39+void MockOperation::cancel()
40+{
41+ m_observer = nullptr;
42+}
43+
44+void MockOperation::mockSuccess(unsigned int uid)
45+{
46+ if (m_observer)
47+ QMetaObject::invokeMethod(m_observer, "succeeded", Qt::DirectConnection,
48+ Q_ARG(QVariant, QVariant::fromValue(uid)));
49+}
50+
51+void MockOperation::mockFailure(const QString &reason)
52+{
53+ if (m_observer)
54+ QMetaObject::invokeMethod(m_observer, "failed", Qt::DirectConnection,
55+ Q_ARG(QString, reason));
56+}
tests/mocks/Biometryd/MockOperation.hnew file+48
@@ -0,0 +1,48 @@
1+/*
2+ * Copyright (C) 2016 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 MOCK_OPERATION_H
18+#define MOCK_OPERATION_H
19+
20+#include <QObject>
21+
22+class MockOperation : public QObject
23+{
24+ Q_OBJECT
25+ Q_PROPERTY(bool running READ running NOTIFY runningChanged) // only in mock
26+
27+public:
28+ explicit MockOperation(QObject *parent = 0);
29+
30+ Q_INVOKABLE void start(QObject *observer);
31+ Q_INVOKABLE void cancel();
32+
33+ Q_INVOKABLE void mockSuccess(unsigned int uid); // only in mock
34+ Q_INVOKABLE void mockFailure(const QString &reason); // only in mock
35+
36+ bool running() const; // only in mock
37+
38+Q_SIGNALS:
39+ void runningChanged();
40+
41+private:
42+ QObject *m_observer;
43+ bool m_running;
44+};
45+
46+Q_DECLARE_METATYPE(MockOperation*)
47+
48+#endif // MOCK_OPERATION_H
tests/mocks/Biometryd/plugin.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 "plugin.h"
18+#include "MockBiometryd.h"
19+#include "MockDevice.h"
20+#include "MockIdentifier.h"
21+#include "MockObserver.h"
22+#include "MockOperation.h"
23+
24+#include <QtQml>
25+
26+static QObject *biometryd_provider(QQmlEngine *, QJSEngine *)
27+{
28+ return new MockBiometryd();
29+}
30+
31+void BackendPlugin::registerTypes(const char *uri)
32+{
33+ Q_ASSERT(uri == QLatin1String("Biometryd"));
34+
35+ qmlRegisterType<MockObserver>(uri, 0, 0, "Observer");
36+ qmlRegisterSingletonType<MockBiometryd>(uri, 0, 0, "Biometryd", biometryd_provider);
37+
38+ qRegisterMetaType<MockDevice*>();
39+ qRegisterMetaType<MockIdentifier*>();
40+ qRegisterMetaType<MockOperation*>();
41+}
tests/mocks/Biometryd/plugin.hnew file+31
@@ -0,0 +1,31 @@
1+/*
2+ * Copyright (C) 2016 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 MOCK_BIOMETRYD_PLUGIN_H
18+#define MOCK_BIOMETRYD_PLUGIN_H
19+
20+#include <QQmlExtensionPlugin>
21+
22+class BackendPlugin : public QQmlExtensionPlugin
23+{
24+ Q_OBJECT
25+ Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
26+
27+public:
28+ void registerTypes(const char *uri) override;
29+};
30+
31+#endif // MOCK_BIOMETRYD_PLUGIN_H
tests/mocks/Biometryd/qmldirnew file+3
@@ -0,0 +1,3 @@
1+module Biometryd
2+plugin MockBiometryd
3+typeinfo Biometryd.qmltypes
tests/mocks/CMakeLists.txt+1
@@ -29,6 +29,7 @@ macro(add_unity8_mock PLUGIN VERSION PATH)
2929endmacro()
3030
3131add_subdirectory(AccountsService)
32+add_subdirectory(Biometryd)
3233add_subdirectory(Cursor)
3334add_subdirectory(GSettings.1.0)
3435add_subdirectory(indicator-service)
tests/mocks/LightDM/IntegratedLightDM/liblightdm/UsersModel.cpp+4−1
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013-2016 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
@@ -46,6 +46,7 @@ UsersModel::UsersModel(QObject *parent) :
4646 roles[SessionRole] = "session";
4747 roles[HasMessagesRole] = "hasMessages";
4848 roles[ImagePathRole] = "imagePath";
49+ roles[UidRole] = "uid";
4950 setRoleNames(roles);
5051}
5152
@@ -95,6 +96,8 @@ QVariant UsersModel::data(const QModelIndex &index, int role) const
9596 return d->entries[row].has_messages;
9697 case UsersModel::ImagePathRole:
9798 return "";
99+ case UsersModel::UidRole:
100+ return d->entries[row].uid;
98101 default:
99102 return QVariant();
100103 }
tests/mocks/LightDM/IntegratedLightDM/liblightdm/UsersModel.h+2−1
@@ -50,7 +50,8 @@ public:
5050 SessionRole,
5151 HasMessagesRole,
5252 ImagePathRole,
53− BackgroundPathRole
53+ BackgroundPathRole,
54+ UidRole
5455 };
5556
5657 int rowCount(const QModelIndex &parent) const override;
tests/mocks/LightDM/IntegratedLightDM/liblightdm/UsersModelPrivate.cpp+29−23
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2014 Canonical, Ltd.
2+ * Copyright (C) 2014-2016 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
@@ -47,6 +47,12 @@ void UsersModelPrivate::resetEntries()
4747 resetEntries_full();
4848 }
4949
50+ // Assign uids in a loop, just to avoid having to muck with them when
51+ // adding or removing test users.
52+ for (int i = 0; i < entries.size(); i++) {
53+ entries[i].uid = i + 1;
54+ }
55+
5056 q->endResetModel();
5157}
5258
@@ -54,7 +60,7 @@ void UsersModelPrivate::resetEntries_single()
5460{
5561 entries =
5662 {
57− { "single", "Single User", 0, 0, false, false, 0, 0 },
63+ { "single", "Single User", 0, 0, false, false, 0, 0, 0 },
5864 };
5965}
6066
@@ -62,7 +68,7 @@ void UsersModelPrivate::resetEntries_singlePassphrase()
6268{
6369 entries =
6470 {
65− { "single", "Single User", 0, 0, false, false, 0, 0 },
71+ { "single", "Single User", 0, 0, false, false, 0, 0, 0 },
6672 };
6773}
6874
@@ -70,7 +76,7 @@ void UsersModelPrivate::resetEntries_singlePin()
7076{
7177 entries =
7278 {
73− { "has-pin", "Has PIN", 0, 0, false, false, 0, 0 },
79+ { "has-pin", "Has PIN", 0, 0, false, false, 0, 0, 0 },
7480 };
7581}
7682
@@ -78,26 +84,26 @@ void UsersModelPrivate::resetEntries_full()
7884{
7985 entries =
8086 {
81− { "has-password", "Has Password", 0, 0, false, false, 0, 0 },
82− { "has-pin", "Has PIN", 0, 0, false, false, 0, 0 },
83− { "different-prompt", "Different Prompt", 0, 0, false, false, 0, 0 },
84− { "no-password", "No Password", 0, 0, false, false, 0, 0 },
85− { "auth-error", "Auth Error", 0, 0, false, false, 0, 0 },
86− { "two-factor", "Two Factor", 0, 0, false, false, 0, 0 },
87− { "info-prompt", "Info Prompt", 0, 0, false, false, 0, 0 },
88− { "html-info-prompt", "HTML Info Prompt", 0, 0, false, false, 0, 0 },
89− { "long-info-prompt", "Long Info Prompt", 0, 0, false, false, 0, 0 },
90− { "wide-info-prompt", "Wide Info Prompt", 0, 0, false, false, 0, 0 },
91− { "multi-info-prompt", "Multi Info Prompt", 0, 0, false, false, 0, 0 },
92− { "long-name", "Long name (far far too long to fit, seriously this would never fit on the screen, you will never see this part of the name)", 0, 0, false, false, 0, 0 },
93− { "color-background", "Color Background", "#dd4814", 0, false, false, 0, 0 },
87+ { "has-password", "Has Password", 0, 0, false, false, 0, 0, 0 },
88+ { "has-pin", "Has PIN", 0, 0, false, false, 0, 0, 0 },
89+ { "different-prompt", "Different Prompt", 0, 0, false, false, 0, 0, 0 },
90+ { "no-password", "No Password", 0, 0, false, false, 0, 0, 0 },
91+ { "auth-error", "Auth Error", 0, 0, false, false, 0, 0, 0 },
92+ { "two-factor", "Two Factor", 0, 0, false, false, 0, 0, 0 },
93+ { "info-prompt", "Info Prompt", 0, 0, false, false, 0, 0, 0 },
94+ { "html-info-prompt", "HTML Info Prompt", 0, 0, false, false, 0, 0, 0 },
95+ { "long-info-prompt", "Long Info Prompt", 0, 0, false, false, 0, 0, 0 },
96+ { "wide-info-prompt", "Wide Info Prompt", 0, 0, false, false, 0, 0, 0 },
97+ { "multi-info-prompt", "Multi Info Prompt", 0, 0, false, false, 0, 0, 0 },
98+ { "long-name", "Long name (far far too long to fit, seriously this would never fit on the screen, you will never see this part of the name)", 0, 0, false, false, 0, 0, 0 },
99+ { "color-background", "Color Background", "#dd4814", 0, false, false, 0, 0, 0 },
94100 // white and black are a bit redundant, but useful for manually testing if UI is still readable
95− { "white-background", "White Background", "#ffffff", 0, false, false, 0, 0 },
96− { "black-background", "Black Background", "#000000", 0, false, false, 0, 0 },
97− { "no-background", "No Background", "", 0, false, false, 0, 0 },
98− { "unicode", "가나다라마", 0, 0, false, false, 0, 0 },
99− { "no-response", "No Response", 0, 0, false, false, 0, 0 },
100− { "empty-name", "", 0, 0, false, false, 0, 0 },
101+ { "white-background", "White Background", "#ffffff", 0, false, false, 0, 0, 0 },
102+ { "black-background", "Black Background", "#000000", 0, false, false, 0, 0, 0 },
103+ { "no-background", "No Background", "", 0, false, false, 0, 0, 0 },
104+ { "unicode", "가나다라마", 0, 0, false, false, 0, 0, 0 },
105+ { "no-response", "No Response", 0, 0, false, false, 0, 0, 0 },
106+ { "empty-name", "", 0, 0, false, false, 0, 0, 0 },
101107 };
102108}
103109
tests/mocks/LightDM/IntegratedLightDM/liblightdm/UsersModelPrivate.h+2−1
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2014 Canonical, Ltd.
2+ * Copyright (C) 2014-2016 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
@@ -35,6 +35,7 @@ public:
3535 bool has_messages;
3636 QString session;
3737 QString infographic;
38+ uid_t uid;
3839};
3940
4041class UsersModelPrivate
tests/mocks/QtMultimedia/CMakeLists.txt+8−2
@@ -1,9 +1,15 @@
1+include_directories(
2+ ${CMAKE_CURRENT_SOURCE_DIR}
3+ ${CMAKE_CURRENT_BINARY_DIR}
4+)
5+
16add_library(QtMultimedia-qml MODULE
27 plugin.cpp
3− audio.cpp
8+ mediaplayer.cpp
9+ videooutput.cpp
410 declarativeplaylist.cpp
511 )
612
7−qt5_use_modules(QtMultimedia-qml Qml)
13+qt5_use_modules(QtMultimedia-qml Qml Quick)
814
915add_unity8_mock(QtMultimedia 5.0 QtMultimedia TARGETS QtMultimedia-qml)
tests/mocks/QtMultimedia/VideoSurface.qmlnew file+111
@@ -0,0 +1,111 @@
1+/*
2+ * Copyright (C) 2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+import Ubuntu.Components 1.3
19+import QtMultimedia 5.0
20+
21+Rectangle {
22+ id: root
23+ property int position: 0
24+ property int playbackState: 0
25+ property var resolution: { "width": 16, "height": 9 }
26+
27+ anchors.centerIn: parent
28+ color: "black"
29+
30+ // scale to the parent window.
31+ implicitWidth: parent ? aspectScale(Qt.size(resolution.width, resolution.height), Qt.size(parent.width, parent.height)).width : 160
32+ implicitHeight: parent ? aspectScale(Qt.size(resolution.width, resolution.height), Qt.size(parent.width, parent.height)).height : 90
33+
34+ function aspectScale(fromSize, toSize) {
35+ var rw = toSize.height * fromSize.width / fromSize.height;
36+ var useHeight = (rw <= toSize.width);
37+
38+ if (useHeight) {
39+ return Qt.size(rw, toSize.height);
40+ } else {
41+ return Qt.size(toSize.width,
42+ toSize.width * (fromSize.height / fromSize.width));
43+ }
44+ }
45+
46+ GridView {
47+ anchors.fill: parent
48+ model: (parent.width / units.gu(5)) * ((parent.height / units.gu(5) + 1))
49+ clip: true
50+
51+ cellHeight: units.gu(5)
52+ cellWidth: units.gu(5)
53+
54+ delegate: Item {
55+ width: units.gu(5)
56+ height: units.gu(5)
57+
58+ Rectangle {
59+ id: rect
60+ color: "red"
61+ anchors.fill: parent
62+ anchors.margins: units.gu(1)
63+
64+ Connections {
65+ target: root
66+ onPositionChanged: {
67+ rect.rotation = position/100
68+ }
69+ }
70+ }
71+ }
72+ }
73+
74+ Column {
75+ anchors {
76+ left: parent.left;
77+ right: parent.right
78+ verticalCenter: parent.verticalCenter
79+ }
80+ height: units.gu(10)
81+
82+ Label {
83+ anchors.horizontalCenter: parent.horizontalCenter
84+ text: {
85+ var pos = (position/1000).toFixed(0)
86+
87+ var m = Math.floor(pos/60);
88+ var ss = pos % 60;
89+ if (ss >= 10) {
90+ return m + ":" + ss;
91+ } else {
92+ return m + ":0" + ss;
93+ }
94+ }
95+ fontSize: "x-large"
96+ }
97+
98+ Label {
99+ anchors.horizontalCenter: parent.horizontalCenter
100+ text: getPlaybackState(playbackState)
101+ fontSize: "x-large"
102+ }
103+ }
104+
105+ function getPlaybackState(playbackState) {
106+ if (playbackState === MediaPlayer.PlayingState) return "Playing";
107+ else if (playbackState === MediaPlayer.PausedState) return "Paused";
108+ else if (playbackState === MediaPlayer.StoppedState) return "Stopped";
109+ return "";
110+ }
111+}
tests/mocks/QtMultimedia/audio.cppdeleted−132
@@ -1,132 +0,0 @@
1−/*
2− * Copyright (C) 2013-2016 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− * Author: Michael Zanetti <michael.zanetti@canonical.com>
17− */
18−
19−#include "audio.h"
20−
21−Audio::Audio(QObject* parent):
22− QObject(parent),
23− m_playbackState(StoppedState),
24− m_playlist(nullptr)
25−{
26− qsrand(time(nullptr));
27− m_timer.setInterval(1000);
28− connect(&m_timer, &QTimer::timeout, this, &Audio::timerEvent);
29−
30− m_position = 0;
31− Q_EMIT positionChanged(m_position);
32−
33− m_duration = (qrand() % 20000) + 10000;
34− Q_EMIT durationChanged(m_duration);
35−}
36−
37−QUrl Audio::source() const
38−{
39− return m_source;
40−}
41−
42−void Audio::setSource(const QUrl &source)
43−{
44− if (m_source != source) {
45− m_source = source;
46− Q_EMIT sourceChanged(source);
47− }
48−}
49−
50−Audio::PlaybackState Audio::playbackState() const
51−{
52− return m_playbackState;
53−}
54−
55−int Audio::position() const
56−{
57− return m_position;
58−}
59−
60−int Audio::duration() const
61−{
62− return m_duration;
63−}
64−
65−QString Audio::errorString() const
66−{
67− return QString();
68−}
69−
70−void Audio::pause()
71−{
72− if (m_playbackState == PlayingState) {
73− m_playbackState = PausedState;
74− Q_EMIT playbackStateChanged(m_playbackState);
75− m_timer.stop();
76− }
77−}
78−
79−void Audio::play()
80−{
81− if (m_playbackState != PlayingState) {
82− m_playbackState = PlayingState;
83− Q_EMIT playbackStateChanged(m_playbackState);
84−
85− m_timer.start();
86− }
87−}
88−
89−void Audio::stop()
90−{
91− if (m_playbackState != StoppedState) {
92− m_playbackState = StoppedState;
93− Q_EMIT playbackStateChanged(m_playbackState);
94− m_timer.stop();
95− m_position = 0;
96− Q_EMIT positionChanged(m_position);
97− }
98−}
99−
100−void Audio::timerEvent()
101−{
102− if (m_position + 1000 < m_duration) {
103− m_position += 1000;
104− Q_EMIT positionChanged(m_position);
105− } else {
106− stop();
107− }
108−}
109−
110−Audio::AudioRole Audio::audioRole() const
111−{
112− return Audio::MusicRole;
113−}
114−
115−void Audio::setAudioRole(Audio::AudioRole audioRole)
116−{
117− Q_UNUSED(audioRole);
118−}
119−
120−DeclarativePlaylist *Audio::playlist() const
121−{
122− return m_playlist;
123−}
124−
125−void Audio::setPlaylist(DeclarativePlaylist *playlist)
126−{
127− if (playlist == m_playlist)
128− return;
129−
130− m_playlist = playlist;
131− Q_EMIT playlistChanged();
132−}
tests/mocks/QtMultimedia/audio.hdeleted−103
@@ -1,103 +0,0 @@
1−/*
2− * Copyright (C) 2012-2016 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− */
17−
18−#ifndef MOCK_AUDIO_H
19−#define MOCK_AUDIO_H
20−
21−#include <QObject>
22−#include <QUrl>
23−#include <QTimer>
24−
25−class DeclarativePlaylist;
26−
27−class Audio: public QObject
28−{
29− Q_OBJECT
30− Q_ENUMS(PlaybackState)
31− Q_ENUMS(AudioRole)
32− Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged)
33− Q_PROPERTY(PlaybackState playbackState READ playbackState NOTIFY playbackStateChanged)
34− Q_PROPERTY(int position READ position NOTIFY positionChanged)
35− Q_PROPERTY(int duration READ duration NOTIFY durationChanged)
36− Q_PROPERTY(QString errorString READ errorString NOTIFY errorStringChanged)
37− Q_PROPERTY(AudioRole audioRole READ audioRole WRITE setAudioRole)
38− Q_PROPERTY(DeclarativePlaylist *playlist READ playlist WRITE setPlaylist NOTIFY playlistChanged)
39−public:
40− enum PlaybackState {
41− PlayingState,
42− PausedState,
43− StoppedState
44− };
45−
46− enum AudioRole {
47− UnknownRole,
48− MusicRole,
49− VideoRole,
50− VoiceCommunicationRole,
51− AlarmRole,
52− NotificationRole,
53− RingtoneRole,
54− AccessibilityRole,
55− SonificationRole,
56− GameRole
57− };
58−
59− explicit Audio(QObject *parent = nullptr);
60−
61− QUrl source() const;
62− void setSource(const QUrl &source);
63−
64− DeclarativePlaylist *playlist() const;
65− void setPlaylist(DeclarativePlaylist *playlist);
66−
67− PlaybackState playbackState() const;
68−
69− int position() const;
70−
71− int duration() const;
72−
73− QString errorString() const;
74−
75− AudioRole audioRole() const;
76− void setAudioRole(AudioRole audioRole);
77−
78−public Q_SLOTS:
79− void pause();
80− void play();
81− void stop();
82−
83−Q_SIGNALS:
84− void playlistChanged();
85− void sourceChanged(const QUrl &source);
86− void playbackStateChanged(PlaybackState playbackState);
87− void positionChanged(int position);
88− void durationChanged(int duration);
89− void errorStringChanged(const QString &errorString);
90−
91−private Q_SLOTS:
92− void timerEvent();
93−
94−private:
95− QUrl m_source;
96− PlaybackState m_playbackState;
97− QTimer m_timer;
98− int m_position;
99− int m_duration;
100− DeclarativePlaylist *m_playlist;
101−};
102−
103−#endif
tests/mocks/QtMultimedia/mediaplayer.cppnew file+318
@@ -0,0 +1,318 @@
1+/*
2+ * Copyright (C) 2013-2016 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+ * Author: Michael Zanetti <michael.zanetti@canonical.com>
17+ */
18+
19+#include "mediaplayer.h"
20+
21+#include <QDebug>
22+#include <QSize>
23+
24+class MetaDataObject: public QObject
25+{
26+ Q_OBJECT
27+ Q_PROPERTY(QVariant title READ title NOTIFY metaDataChanged)
28+ Q_PROPERTY(QVariant resolution READ resolution NOTIFY metaDataChanged)
29+public:
30+ MetaDataObject(MediaPlayer* parent = nullptr)
31+ : QObject(parent)
32+ , m_source(parent)
33+ {
34+ }
35+
36+ QVariant title() const { return getProperty("title"); }
37+ QVariant resolution() const { return getProperty("resolution", QSize(640, 640)); }
38+
39+ QVariant getProperty(const QString& property, QVariant defaultValue = QVariant()) const {
40+ MediaDataSource* sourceData = MediaPlayerDataController::instance()->dataForSource(m_source->source());
41+ QVariant metaData = sourceData->metaData();
42+ return metaData.toMap().value(property, defaultValue);
43+ }
44+
45+Q_SIGNALS:
46+ void metaDataChanged();
47+
48+private:
49+ MediaPlayer* m_source;
50+};
51+
52+MediaPlayer::MediaPlayer(QObject* parent)
53+ : QObject(parent)
54+ , m_playbackState(StoppedState)
55+ , m_status(NoMedia)
56+ , m_metaData(new MetaDataObject(this))
57+ , m_playlist(nullptr)
58+{
59+ qsrand(time(nullptr));
60+ m_timer.setInterval(100);
61+ connect(&m_timer, &QTimer::timeout, this, &MediaPlayer::timerEvent);
62+
63+ connect(MediaPlayerDataController::instance(), &MediaPlayerDataController::sourceAboutToBeRemoved,
64+ this, [this](const QUrl& source) {
65+ MediaDataSource* dataSource = MediaPlayerDataController::instance()->dataForSource(source);
66+ if (!dataSource) return;
67+
68+ disconnect(dataSource, &MediaDataSource::durationChanged, this, &MediaPlayer::durationChanged);
69+ disconnect(dataSource, &MediaDataSource::seekableChanged, this, &MediaPlayer::seekableChanged);
70+ disconnect(dataSource, &MediaDataSource::availabilityChanged, this, &MediaPlayer::availabilityChanged);
71+ disconnect(dataSource, &MediaDataSource::metaDataChanged, m_metaData, &MetaDataObject::metaDataChanged);
72+ });
73+
74+ connect(MediaPlayerDataController::instance(), &MediaPlayerDataController::sourceAdded,
75+ this, [this](const QUrl& source) {
76+ MediaDataSource* dataSource = MediaPlayerDataController::instance()->dataForSource(source);
77+ if (!dataSource) return;
78+
79+ connect(dataSource, &MediaDataSource::durationChanged, this, &MediaPlayer::durationChanged);
80+ connect(dataSource, &MediaDataSource::seekableChanged,this, &MediaPlayer::seekableChanged);
81+ connect(dataSource, &MediaDataSource::availabilityChanged,this, &MediaPlayer::availabilityChanged);
82+ connect(dataSource, &MediaDataSource::metaDataChanged, m_metaData, &MetaDataObject::metaDataChanged);
83+ });
84+}
85+
86+QUrl MediaPlayer::source() const
87+{
88+ return m_source;
89+}
90+
91+void MediaPlayer::setSource(const QUrl &source)
92+{
93+ if (m_source != source) {
94+ m_source = source;
95+ Q_EMIT sourceChanged(source);
96+ Q_EMIT durationChanged(duration());
97+ Q_EMIT seekableChanged(isSeekable());
98+ Q_EMIT availabilityChanged(availability());
99+
100+ m_position = 0;
101+ Q_EMIT positionChanged(m_position);
102+ Q_EMIT m_metaData->metaDataChanged();
103+
104+ m_status = availability()==Available ? Loaded : InvalidMedia;
105+ Q_EMIT statusChanged();
106+ }
107+}
108+
109+DeclarativePlaylist *MediaPlayer::playlist() const
110+{
111+ return m_playlist;
112+}
113+
114+void MediaPlayer::setPlaylist(DeclarativePlaylist *playlist)
115+{
116+ if (playlist == m_playlist)
117+ return;
118+
119+ m_playlist = playlist;
120+ Q_EMIT playlistChanged();
121+}
122+
123+MediaPlayer::PlaybackState MediaPlayer::playbackState() const
124+{
125+ return m_playbackState;
126+}
127+
128+int MediaPlayer::position() const
129+{
130+ return m_position;
131+}
132+
133+int MediaPlayer::duration() const
134+{
135+ MediaDataSource* dataSource = MediaPlayerDataController::instance()->dataForSource(source());
136+ if (dataSource) return dataSource->duration();
137+ return 0;
138+}
139+
140+MediaPlayer::Error MediaPlayer::error() const
141+{
142+ return NoError;
143+}
144+
145+QString MediaPlayer::errorString() const
146+{
147+ return QString();
148+}
149+
150+void MediaPlayer::pause()
151+{
152+ if (m_playbackState == PlayingState) {
153+ m_playbackState = PausedState;
154+ Q_EMIT playbackStateChanged(m_playbackState);
155+ m_timer.stop();
156+ }
157+}
158+
159+void MediaPlayer::play()
160+{
161+ if (m_playbackState != PlayingState) {
162+ m_playbackState = PlayingState;
163+ Q_EMIT playbackStateChanged(m_playbackState);
164+
165+ m_timer.start();
166+ }
167+}
168+
169+void MediaPlayer::stop()
170+{
171+ if (m_playbackState != StoppedState) {
172+ m_playbackState = StoppedState;
173+ Q_EMIT playbackStateChanged(m_playbackState);
174+ m_timer.stop();
175+ m_position = 0;
176+ Q_EMIT positionChanged(m_position);
177+ }
178+}
179+
180+void MediaPlayer::seek(int position)
181+{
182+ if (status() != Loaded) return;
183+ int newPosition = qMin(qMax(0, position), duration());
184+ if (newPosition != m_position) {
185+ m_position = newPosition;
186+ Q_EMIT positionChanged(m_position);
187+ }
188+}
189+
190+void MediaPlayer::timerEvent()
191+{
192+ if (m_position + m_timer.interval() < duration()) {
193+ m_position += m_timer.interval();
194+ Q_EMIT positionChanged(m_position);
195+ } else {
196+ pause();
197+ }
198+}
199+
200+MediaPlayer::AudioRole MediaPlayer::audioRole() const
201+{
202+ return MediaPlayer::MusicRole;
203+}
204+
205+void MediaPlayer::setAudioRole(MediaPlayer::AudioRole audioRole)
206+{
207+ Q_UNUSED(audioRole);
208+}
209+
210+bool MediaPlayer::isSeekable() const
211+{
212+ MediaDataSource* dataSource = MediaPlayerDataController::instance()->dataForSource(source());
213+ if (dataSource) return dataSource->isSeekable();
214+ return true;
215+}
216+
217+MediaPlayer::Availability MediaPlayer::availability() const
218+{
219+ MediaDataSource* dataSource = MediaPlayerDataController::instance()->dataForSource(source());
220+ if (dataSource) return dataSource->availability();
221+ return Available;
222+}
223+
224+QObject *MediaPlayer::metaData() const
225+{
226+ return m_metaData;
227+}
228+
229+
230+MediaDataSource::MediaDataSource(QObject *parent)
231+ : QObject(parent)
232+ , m_seekable(true)
233+ , m_duration((qrand() % 20000) + 10000)
234+ , m_availability(MediaPlayer::Available)
235+{
236+}
237+
238+MediaDataSource::~MediaDataSource()
239+{
240+ if (!m_source.isEmpty()) MediaPlayerDataController::instance()->unregisterDataSource(this);
241+}
242+
243+void MediaDataSource::setSource(const QUrl &source)
244+{
245+ if (m_source != source) {
246+ if (!m_source.isEmpty()) MediaPlayerDataController::instance()->unregisterDataSource(this);
247+
248+ m_source = source;
249+
250+ if (!m_source.isEmpty()) MediaPlayerDataController::instance()->registerDataSource(this);
251+ Q_EMIT sourceChanged();
252+ }
253+}
254+
255+void MediaDataSource::setSeekable(bool seekable)
256+{
257+ if (m_seekable != seekable) {
258+ m_seekable = seekable;
259+ Q_EMIT seekableChanged(m_seekable);
260+ }
261+}
262+
263+void MediaDataSource::setDuration(int duration)
264+{
265+ if (m_duration != duration) {
266+ m_duration = duration;
267+ Q_EMIT durationChanged(m_duration);
268+ }
269+}
270+
271+void MediaDataSource::setAvailability(MediaPlayer::Availability availability)
272+{
273+ if (m_availability != availability) {
274+ m_availability = availability;
275+ Q_EMIT availabilityChanged(m_availability);
276+ }
277+}
278+
279+void MediaDataSource::setMetaData(const QVariant& metaData)
280+{
281+ if (m_metaData != metaData) {
282+ m_metaData = metaData;
283+ Q_EMIT metaDataChanged();
284+ }
285+}
286+
287+MediaPlayerDataController *MediaPlayerDataController::instance()
288+{
289+ static MediaPlayerDataController* instance = nullptr;
290+ if (!instance) { instance = new MediaPlayerDataController(); }
291+ return instance;
292+}
293+
294+void MediaPlayerDataController::registerDataSource(MediaDataSource *dataSource)
295+{
296+ m_dataSources[dataSource->source()] = dataSource;
297+ Q_EMIT sourceAdded(dataSource->source());
298+}
299+
300+void MediaPlayerDataController::unregisterDataSource(MediaDataSource *dataSource)
301+{
302+ QList<QUrl> keys = m_dataSources.keys(dataSource);
303+ Q_FOREACH(const QUrl& key, keys) {
304+ Q_EMIT sourceAboutToBeRemoved(key);
305+ m_dataSources.remove(key);
306+ }
307+}
308+
309+MediaDataSource *MediaPlayerDataController::dataForSource(const QUrl &source)
310+{
311+ if (!m_dataSources.contains(source)) {
312+ static MediaDataSource defaultSource;
313+ return &defaultSource;
314+ }
315+ return m_dataSources[source];
316+}
317+
318+#include "mediaplayer.moc"
tests/mocks/QtMultimedia/mediaplayer.hnew file+223
@@ -0,0 +1,223 @@
1+/*
2+ * Copyright (C) 2012-2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ *
16+ */
17+
18+#ifndef MOCK_MEDIAPLAYER_H
19+#define MOCK_MEDIAPLAYER_H
20+
21+#include <QObject>
22+#include <QUrl>
23+#include <QTimer>
24+#include <QHash>
25+#include <QVariant>
26+
27+class MetaDataObject;
28+class DeclarativePlaylist;
29+
30+class MediaPlayer: public QObject
31+{
32+ Q_OBJECT
33+
34+ Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged)
35+ Q_PROPERTY(PlaybackState playbackState READ playbackState NOTIFY playbackStateChanged)
36+ Q_PROPERTY(int position READ position NOTIFY positionChanged)
37+ Q_PROPERTY(int duration READ duration NOTIFY durationChanged)
38+ Q_PROPERTY(Error error READ error NOTIFY errorChanged)
39+ Q_PROPERTY(QString errorString READ errorString NOTIFY errorStringChanged)
40+ Q_PROPERTY(AudioRole audioRole READ audioRole WRITE setAudioRole)
41+
42+ Q_PROPERTY(bool seekable READ isSeekable NOTIFY seekableChanged)
43+ Q_PROPERTY(Availability availability READ availability NOTIFY availabilityChanged)
44+ Q_PROPERTY(Status status READ status NOTIFY statusChanged)
45+ Q_PROPERTY(QObject *metaData READ metaData CONSTANT)
46+ Q_PROPERTY(DeclarativePlaylist *playlist READ playlist WRITE setPlaylist NOTIFY playlistChanged)
47+
48+ Q_ENUMS(PlaybackState)
49+ Q_ENUMS(AudioRole)
50+ Q_ENUMS(Availability)
51+ Q_ENUMS(Status)
52+ Q_ENUMS(Error)
53+public:
54+ enum PlaybackState {
55+ PlayingState,
56+ PausedState,
57+ StoppedState
58+ };
59+
60+ enum AudioRole {
61+ UnknownRole,
62+ MusicRole,
63+ VideoRole,
64+ VoiceCommunicationRole,
65+ AlarmRole,
66+ NotificationRole,
67+ RingtoneRole,
68+ AccessibilityRole,
69+ SonificationRole,
70+ GameRole
71+ };
72+
73+ enum Availability {
74+ Available,
75+ Busy,
76+ Unavailable,
77+ ResourceMissing
78+ };
79+
80+ enum Status {
81+ UnknownStatus,
82+ NoMedia,
83+ Loading,
84+ Loaded,
85+ Stalled,
86+ Buffering,
87+ Buffered,
88+ EndOfMedia,
89+ InvalidMedia
90+ };
91+
92+ enum Error {
93+ NoError,
94+ ResourceError,
95+ FormatError,
96+ NetworkError,
97+ AccessDeniedError,
98+ ServiceMissingError
99+ };
100+
101+ explicit MediaPlayer(QObject *parent = nullptr);
102+
103+ QUrl source() const;
104+ void setSource(const QUrl &source);
105+
106+ DeclarativePlaylist *playlist() const;
107+ void setPlaylist(DeclarativePlaylist *playlist);
108+
109+ PlaybackState playbackState() const;
110+
111+ int position() const;
112+
113+ int duration() const;
114+
115+ Error error() const;
116+ QString errorString() const;
117+
118+ AudioRole audioRole() const;
119+ void setAudioRole(AudioRole audioRole);
120+
121+ bool isSeekable() const;
122+ MediaPlayer::Availability availability() const;
123+ Status status() const { return m_status; }
124+ QObject *metaData() const;
125+
126+public Q_SLOTS:
127+ void pause();
128+ void play();
129+ void stop();
130+ void seek(int position);
131+
132+Q_SIGNALS:
133+ void playlistChanged();
134+ void sourceChanged(const QUrl &source);
135+ void playbackStateChanged(PlaybackState playbackState);
136+ void positionChanged(int position);
137+ void durationChanged(int duration);
138+ void seekableChanged(bool seekable);
139+ void errorChanged(Error error);
140+ void errorStringChanged(const QString &errorString);
141+ void availabilityChanged(Availability availability);
142+ void statusChanged();
143+
144+ void error(Error error, const QString &errorString);
145+
146+private Q_SLOTS:
147+ void timerEvent();
148+
149+private:
150+ QUrl m_source;
151+ PlaybackState m_playbackState;
152+ QTimer m_timer;
153+ int m_position;
154+ Status m_status;
155+ MetaDataObject *m_metaData;
156+ DeclarativePlaylist *m_playlist;
157+};
158+
159+class MediaDataSource : public QObject
160+{
161+ Q_OBJECT
162+ Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged)
163+ Q_PROPERTY(bool seekable READ isSeekable WRITE setSeekable NOTIFY seekableChanged)
164+ Q_PROPERTY(int duration READ duration WRITE setDuration NOTIFY durationChanged)
165+ Q_PROPERTY(MediaPlayer::Availability availability READ availability WRITE setAvailability NOTIFY availabilityChanged)
166+ Q_PROPERTY(QVariant metaData READ metaData WRITE setMetaData NOTIFY metaDataChanged)
167+
168+public:
169+ MediaDataSource(QObject* parent = 0);
170+ ~MediaDataSource();
171+
172+ QUrl source() const { return m_source; }
173+ void setSource(const QUrl& source);
174+
175+ bool isSeekable() const { return m_seekable; }
176+ void setSeekable(bool seekable);
177+
178+ int duration() const { return m_duration; }
179+ void setDuration(int duration);
180+
181+ MediaPlayer::Availability availability() const { return m_availability; }
182+ void setAvailability(MediaPlayer::Availability availability);
183+
184+ QVariant metaData() const { return m_metaData; }
185+ void setMetaData(const QVariant& metaData);
186+
187+Q_SIGNALS:
188+ void sourceChanged();
189+ void seekableChanged(bool seekable);
190+ void durationChanged(int duration);
191+ void availabilityChanged(MediaPlayer::Availability availability);
192+ void metaDataChanged();
193+
194+private:
195+ QUrl m_source;
196+ bool m_seekable;
197+ int m_duration;
198+ MediaPlayer::Availability m_availability;
199+ QVariant m_metaData;
200+};
201+
202+class MediaPlayerDataController : public QObject
203+{
204+ Q_OBJECT
205+public:
206+ MediaPlayerDataController() = default;
207+
208+ static MediaPlayerDataController *instance();
209+
210+ void registerDataSource(MediaDataSource* dataSource);
211+ void unregisterDataSource(MediaDataSource* dataSource);
212+
213+ MediaDataSource* dataForSource(const QUrl& source);
214+
215+Q_SIGNALS:
216+ void sourceAdded(const QUrl& source);
217+ void sourceAboutToBeRemoved(const QUrl& source);
218+
219+public:
220+ QHash<QUrl, MediaDataSource*> m_dataSources;
221+};
222+
223+#endif // MOCK_MEDIAPLAYER_H
tests/mocks/QtMultimedia/plugin.cpp+7−3
@@ -17,15 +17,19 @@
1717 */
1818
1919#include "plugin.h"
20−#include "audio.h"
20+#include "mediaplayer.h"
2121#include "declarativeplaylist.h"
22+#include "videooutput.h"
2223
2324#include <QtQml/qqml.h>
2425
2526void MockQtMultimediaPlugin::registerTypes(const char *uri)
2627{
2728 Q_ASSERT(uri == QLatin1String("QtMultimedia"));
28− qmlRegisterType<Audio>(uri, 5, 0, "Audio");
29− qmlRegisterType<Audio>(uri, 5, 0, "MediaPlayer");
29+ qmlRegisterType<MediaPlayer>(uri, 5, 0, "Audio");
30+ qmlRegisterType<MediaPlayer>(uri, 5, 0, "MediaPlayer");
31+ qmlRegisterType<VideoOutput>(uri, 5, 0, "VideoOutput");
32+
33+ qmlRegisterType<MediaDataSource>(uri, 5, 0, "MediaDataSource");
3034 qmlRegisterType<DeclarativePlaylist>(uri, 5, 6, "Playlist");
3135}
tests/mocks/QtMultimedia/videooutput.cppnew file+127
@@ -0,0 +1,127 @@
1+/*
2+ * Copyright (C) 2016 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 "videooutput.h"
18+#include "mediaplayer.h"
19+
20+#include <paths.h>
21+
22+#include <QQuickView>
23+#include <QQmlComponent>
24+#include <QGuiApplication>
25+#include <QQmlProperty>
26+#include <QQmlEngine>
27+
28+VideoOutput::VideoOutput(QQuickItem *parent)
29+ : QQuickItem(parent)
30+ , m_source(nullptr)
31+ , m_qmlContentComponent(nullptr)
32+ , m_qmlItem(nullptr)
33+{
34+}
35+
36+void VideoOutput::setSource(QObject *source)
37+{
38+ if (m_source != source) {
39+ if (m_source) disconnect(m_source, 0, this, 0);
40+
41+ m_source = source;
42+ Q_EMIT sourceChanged();
43+
44+ MediaPlayer* mediaPlayer = qobject_cast<MediaPlayer*>(source);
45+ if (mediaPlayer) {
46+ connect(mediaPlayer, &MediaPlayer::positionChanged, this, &VideoOutput::updateProperties);
47+ connect(mediaPlayer, &MediaPlayer::playbackStateChanged, this, &VideoOutput::updateProperties);
48+ connect(mediaPlayer->metaData(), SIGNAL(metaDataChanged()), this, SLOT(updateProperties()));
49+ }
50+ }
51+}
52+
53+void VideoOutput::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &value)
54+{
55+ if (change == QQuickItem::ItemSceneChange && !m_qmlContentComponent) {
56+ QWindowList list = QGuiApplication::topLevelWindows();
57+ if (list.isEmpty()) return;
58+
59+ // The assumptions I make here really should hold.
60+ QQuickView *quickView =
61+ qobject_cast<QQuickView*>(list[0]);
62+
63+ m_qmlContentComponent = new QQmlComponent(quickView->engine(),
64+ QString("%1/QtMultimedia/VideoSurface.qml").arg(mockPluginsDir()));
65+
66+ switch (m_qmlContentComponent->status()) {
67+ case QQmlComponent::Ready:
68+ createQmlContentItem();
69+ break;
70+ case QQmlComponent::Loading:
71+ connect(m_qmlContentComponent, &QQmlComponent::statusChanged,
72+ this, &VideoOutput::onComponentStatusChanged);
73+ break;
74+ case QQmlComponent::Error:
75+ printComponentErrors();
76+ qFatal("VideoOutput: failed to create content component.");
77+ break;
78+ default:
79+ qFatal("VideoOutput: Unhandled component status");
80+ }
81+ }
82+ QQuickItem::itemChange(change, value);
83+}
84+
85+void VideoOutput::printComponentErrors()
86+{
87+ QList<QQmlError> errors = m_qmlContentComponent->errors();
88+ for (int i = 0; i < errors.count(); ++i) {
89+ qDebug() << errors[i];
90+ }
91+}
92+
93+void VideoOutput::onComponentStatusChanged(QQmlComponent::Status status)
94+{
95+ if (status == QQmlComponent::Ready) {
96+ createQmlContentItem();
97+ }
98+}
99+
100+void VideoOutput::createQmlContentItem()
101+{
102+ m_qmlItem = qobject_cast<QQuickItem*>(m_qmlContentComponent->create());
103+ m_qmlItem->setParentItem(this);
104+
105+ updateProperties();
106+}
107+
108+void VideoOutput:: updateProperties()
109+{
110+ if (!m_qmlItem) return;
111+
112+ MediaPlayer* mediaPlayer = qobject_cast<MediaPlayer*>(m_source);
113+ if (!mediaPlayer) return;
114+
115+ QQmlProperty playbackStateProperty(m_qmlItem, "playbackState");
116+ playbackStateProperty.write(QVariant::fromValue<int>(mediaPlayer->playbackState()));
117+
118+ QQmlProperty positionProperty(m_qmlItem, "position");
119+ positionProperty.write(QVariant::fromValue(mediaPlayer->position()));
120+
121+ QQmlProperty propResSource(mediaPlayer->metaData(), "resolution");
122+ QQmlProperty propResDest(m_qmlItem, "resolution");
123+
124+ if (propResSource.isValid() && propResDest.isValid()) {
125+ propResDest.write(propResSource.read());
126+ }
127+}
tests/mocks/QtMultimedia/videooutput.hnew file+52
@@ -0,0 +1,52 @@
1+/*
2+ * Copyright (C) 2016 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 VIDEOOUTPUT_H
18+#define VIDEOOUTPUT_H
19+
20+#include <QQuickItem>
21+#include <QPointer>
22+class QQmlComponent;
23+
24+class VideoOutput : public QQuickItem
25+{
26+ Q_OBJECT
27+ Q_PROPERTY(QObject* source READ source WRITE setSource NOTIFY sourceChanged)
28+public:
29+ explicit VideoOutput(QQuickItem *parent = 0);
30+
31+ QObject *source() const { return m_source.data(); }
32+ void setSource(QObject *source);
33+
34+ void itemChange(ItemChange change, const ItemChangeData & value);
35+
36+Q_SIGNALS:
37+ void sourceChanged();
38+
39+protected Q_SLOTS:
40+ void onComponentStatusChanged(QQmlComponent::Status status);
41+ void updateProperties();
42+
43+private:
44+ void createQmlContentItem();
45+ void printComponentErrors();
46+
47+ QPointer<QObject> m_source;
48+ QQmlComponent* m_qmlContentComponent;
49+ QQuickItem* m_qmlItem;
50+};
51+
52+#endif // VIDEOOUTPUT_H
tests/mocks/Unity/Application/ApplicationManager.cpp+6−1
@@ -302,7 +302,6 @@ void ApplicationManager::buildListOfAvailableApplications()
302302 application->setAppId("unity8-dash");
303303 application->setName("Unity 8 Mock Dash");
304304 application->setScreenshotId("unity8-dash");
305− application->setSupportedOrientations(Qt::PrimaryOrientation);
306305 m_availableApplications.append(application);
307306
308307 application = new ApplicationInfo(this);
@@ -459,6 +458,12 @@ void ApplicationManager::buildListOfAvailableApplications()
459458 application->setScreenshotId("libreoffice");
460459 application->setIsTouchApp(false);
461460 m_availableApplications.append(application);
461+
462+ application = new ApplicationInfo(this);
463+ application->setAppId("primary-oriented-app");
464+ application->setName("Primary Oriented");
465+ application->setSupportedOrientations(Qt::PrimaryOrientation);
466+ m_availableApplications.append(application);
462467}
463468
464469
tests/mocks/Unity/Application/UbuntuKeyboardInfo.cpp+1−1
@@ -21,7 +21,7 @@ UbuntuKeyboardInfo::UbuntuKeyboardInfo(QObject *parent)
2121 m_x(0),
2222 m_y(0),
2323 m_width(200),
24− m_height(200)
24+ m_height(0)
2525{
2626}
2727
tests/mocks/Unity/Application/resources/screenshots/browser@12.png

Binary file not shown.

tests/mocks/Unity/Application/resources/screenshots/camera@12.png

Binary file not shown.

tests/mocks/Unity/Application/resources/screenshots/dialer@12.png

Binary file not shown.

tests/mocks/Unity/Application/resources/screenshots/facebook@12.png

Binary file not shown.

tests/mocks/Unity/Application/resources/screenshots/gallery@12.png

Binary file not shown.

tests/mocks/Unity/Application/resources/screenshots/libreoffice@12.png

Binary file not shown.

tests/mocks/Unity/Application/resources/screenshots/map@12.png

Binary file not shown.

tests/mocks/Unity/Application/resources/screenshots/music@12.png

Binary file not shown.

tests/mocks/Unity/Application/resources/screenshots/twitter@12.png

Binary file not shown.

tests/mocks/Unity/Application/resources/screenshots/unity8-dash@12.png

Binary file not shown.

tests/mocks/Unity/Application/resources/screenshots/vkb_portrait.png

Binary file not shown.

tests/mocks/Unity/Application/resources/vkb_portrait.png

Binary file not shown.

tests/mocks/Unity/fake_scope.cpp+6−1
@@ -39,6 +39,7 @@ Scope::Scope(QString const& id, QString const& name, bool favorite, Scopes* pare
3939 , m_searching(false)
4040 , m_favorite(favorite)
4141 , m_isActive(false)
42+ , m_hasBeenActive(false)
4243 , m_hasNavigation(true)
4344 , m_hasPrimaryFilter(true)
4445 , m_currentNavigationId("root")
@@ -108,7 +109,7 @@ bool Scope::favorite() const
108109
109110unity::shell::scopes::CategoriesInterface* Scope::categories() const
110111{
111− return m_categories;
112+ return m_hasBeenActive ? m_categories : nullptr;
112113}
113114
114115unity::shell::scopes::SettingsModelInterface* Scope::settings() const
@@ -153,6 +154,10 @@ void Scope::setActive(const bool active)
153154 m_isActive = active;
154155 Q_EMIT isActiveChanged();
155156 }
157+ if (active && !m_hasBeenActive) {
158+ m_hasBeenActive = true;
159+ Q_EMIT categoriesChanged();
160+ }
156161}
157162
158163void Scope::setFavorite(const bool favorite)
tests/mocks/Unity/fake_scope.h+1
@@ -109,6 +109,7 @@ protected:
109109 bool m_searching;
110110 bool m_favorite;
111111 bool m_isActive;
112+ bool m_hasBeenActive;
112113 bool m_hasNavigation;
113114 bool m_hasPrimaryFilter;
114115 QString m_currentNavigationId;
tests/mocks/Utils/CMakeLists.txt+5−1
@@ -1,10 +1,14 @@
11include_directories(
22 ${CMAKE_CURRENT_SOURCE_DIR}
33 ${CMAKE_CURRENT_BINARY_DIR}
4+ ${CMAKE_SOURCE_DIR}/plugins/Utils
5+)
6+
7+include_directories(
8+ SYSTEM
49 ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
510 ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
611 ${GIO_INCLUDE_DIRS}
7− ${CMAKE_SOURCE_DIR}/plugins/Utils
812)
913
1014set(QMLPLUGIN_SRC
tests/mocks/Utils/windowstatestorage.cpp+2−2
@@ -53,9 +53,9 @@ void WindowStateStorage::saveStage(const QString &appId, int stage)
5353 Q_EMIT stageSaved(appId, stage);
5454}
5555
56−int WindowStateStorage::getStage(const QString &appId) const
56+int WindowStateStorage::getStage(const QString &appId, int defaultValue) const
5757{
58− return m_stage.value(appId, unity::shell::application::ApplicationInfoInterface::MainStage);
58+ return m_stage.value(appId, defaultValue);
5959}
6060
6161void WindowStateStorage::clear()
tests/mocks/Utils/windowstatestorage.h+1−1
@@ -48,7 +48,7 @@ public:
4848 Q_INVOKABLE QRect getGeometry(const QString &windowId, const QRect &defaultValue);
4949
5050 Q_INVOKABLE void saveStage(const QString &appId, int stage);
51− Q_INVOKABLE int getStage(const QString &appId) const;
51+ Q_INVOKABLE int getStage(const QString &appId, int defaultValue) const;
5252
5353 // Only in the mock, to easily restore a fresh state
5454 Q_INVOKABLE void clear();
tests/plugins/Dash/CMakeLists.txt+4
@@ -12,10 +12,14 @@ endif()
1212
1313
1414include_directories(
15+ SYSTEM
1516 ${Qt5Qml_PRIVATE_INCLUDE_DIRS}
1617 ${Qt5Quick_INCLUDE_DIRS}
1718 ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
1819 ${Qt5V8_PRIVATE_INCLUDE_DIR}
20+ )
21+
22+include_directories(
1923 ${CMAKE_CURRENT_SOURCE_DIR}/../../../plugins/Dash
2024 ${CMAKE_CURRENT_BINARY_DIR}
2125 )
tests/plugins/Dash/horizontaljournaltest.cpp−3
@@ -23,10 +23,7 @@
2323#include <QStringListModel>
2424#include <QQmlContext>
2525#include <QQmlEngine>
26−#pragma GCC diagnostic push
27−#pragma GCC diagnostic ignored "-pedantic"
2826#include <private/qquickitem_p.h>
29−#pragma GCC diagnostic pop
3027
3128#include "horizontaljournal.h"
3229
tests/plugins/Dash/listviewwithpageheadersectionexternalmodeltest.cpp−3
@@ -22,12 +22,9 @@
2222#include <QSignalSpy>
2323#include <QSortFilterProxyModel>
2424#include <QtTestGui>
25−#pragma GCC diagnostic push
26−#pragma GCC diagnostic ignored "-pedantic"
2725#include <private/qqmllistmodel_p.h>
2826#include <private/qquickanimation_p.h>
2927#include <private/qquickitem_p.h>
30−#pragma GCC diagnostic pop
3128
3229class StringListModel : public QAbstractListModel
3330{
tests/plugins/Dash/listviewwithpageheadersectiontest.cpp−3
@@ -21,12 +21,9 @@
2121#include <QQuickView>
2222#include <QSignalSpy>
2323#include <QtTestGui>
24−#pragma GCC diagnostic push
25−#pragma GCC diagnostic ignored "-pedantic"
2624#include <private/qqmllistmodel_p.h>
2725#include <private/qquickanimation_p.h>
2826#include <private/qquickitem_p.h>
29−#pragma GCC diagnostic pop
3027
3128class ListViewWithPageHeaderTestSection : public QObject
3229{
tests/plugins/Dash/listviewwithpageheadertest.cpp−3
@@ -21,12 +21,9 @@
2121#include <QQuickView>
2222#include <QSignalSpy>
2323#include <QtTestGui>
24−#pragma GCC diagnostic push
25−#pragma GCC diagnostic ignored "-pedantic"
2624#include <private/qqmllistmodel_p.h>
2725#include <private/qquickanimation_p.h>
2826#include <private/qquickitem_p.h>
29−#pragma GCC diagnostic pop
3027
3128#include <limits>
3229
tests/plugins/Dash/organicgridtest.cpp−3
@@ -23,10 +23,7 @@
2323#include <QStringListModel>
2424#include <QQmlContext>
2525#include <QQmlEngine>
26−#pragma GCC diagnostic push
27−#pragma GCC diagnostic ignored "-pedantic"
2826#include <private/qquickitem_p.h>
29−#pragma GCC diagnostic pop
3027
3128#include "organicgrid.h"
3229
tests/plugins/Dash/verticaljournaltest.cpp−3
@@ -23,10 +23,7 @@
2323#include <QStringListModel>
2424#include <QQmlContext>
2525#include <QQmlEngine>
26−#pragma GCC diagnostic push
27−#pragma GCC diagnostic ignored "-pedantic"
2826#include <private/qquickitem_p.h>
29−#pragma GCC diagnostic pop
3027
3128#include "verticaljournal.h"
3229
tests/plugins/Ubuntu/Gestures/CMakeLists.txt+3−2
@@ -4,14 +4,15 @@ pkg_check_modules(UBUNTUGESTURES REQUIRED UbuntuGestures)
44
55# DANGER! DANGER! Using Qt's private API!
66include_directories(
7+ SYSTEM
78 ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
9+ ${UBUNTUGESTURES_INCLUDE_DIRS}
10+ ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
811)
912
1013include_directories(
1114 ${CMAKE_SOURCE_DIR}/plugins/Ubuntu/Gestures
12− ${UBUNTUGESTURES_INCLUDE_DIRS}
1315 ${CMAKE_CURRENT_BINARY_DIR}
14− ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
1516 )
1617
1718export_qmlfiles(UbuntuGesturesTest .)
tests/plugins/Unity/Session/CMakeLists.txt+29−1
@@ -1,3 +1,13 @@
1+macro(make_dbus_class NAME INTERFACE)
2+ if(${CMAKE_CURRENT_SOURCE_DIR}/interfaces.xml IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/${NAME}Adaptor.h)
3+ execute_process(COMMAND ${QDBUSXML2CPP_EXECUTABLE} -c ${NAME}Adaptor -a ${CMAKE_CURRENT_BINARY_DIR}/${NAME}Adaptor ${CMAKE_CURRENT_SOURCE_DIR}/interfaces.xml ${INTERFACE})
4+ endif()
5+endmacro(make_dbus_class)
6+
7+make_dbus_class(LightDMSession org.freedesktop.DisplayManager.Session)
8+make_dbus_class(LogindManager org.freedesktop.login1.Manager)
9+make_dbus_class(LogindSession org.freedesktop.login1.Session)
10+
111include_directories(
212 ${CMAKE_CURRENT_BINARY_DIR}
313 ${CMAKE_SOURCE_DIR}/plugins/Unity/Session
@@ -9,6 +19,17 @@ add_definitions(-DSM_BUSNAME=sessionBus)
919add_definitions(-DSRCDIR="${CMAKE_CURRENT_SOURCE_DIR}")
1020add_definitions(-DSESSION_TESTING)
1121
22+### LightDMServer
23+add_executable(LightDMServer
24+ ${CMAKE_CURRENT_BINARY_DIR}/LightDMSessionAdaptor.cpp
25+ ${CMAKE_CURRENT_BINARY_DIR}/LogindManagerAdaptor.cpp
26+ ${CMAKE_CURRENT_BINARY_DIR}/LogindSessionAdaptor.cpp
27+ LightDMServer.cpp
28+ LogindServer.cpp
29+ server.cpp
30+)
31+qt5_use_modules(LightDMServer Core DBus)
32+
1233### SessionBackendTest
1334add_executable(sessionbackendtestExec
1435 sessionbackendtest.cpp
@@ -21,6 +42,13 @@ target_link_libraries(sessionbackendtestExec
2142qt5_use_modules(sessionbackendtestExec Test Core Qml DBus)
2243
2344add_unity8_unittest(SessionBackend dbus-test-runner
45+ ENVIRONMENT XDG_SESSION_PATH=/session
2446 ARG_PREFIX "--parameter"
25− ARGS --task $<TARGET_FILE:sessionbackendtestExec>
47+ ARGS
48+ --task $<TARGET_FILE:LightDMServer>
49+ --task-name server
50+ --ignore-return
51+ --task $<TARGET_FILE:sessionbackendtestExec>
52+ --task-name client
53+ --wait-for org.freedesktop.DisplayManager
2654)
tests/plugins/Unity/Session/LightDMServer.cppnew file+29
@@ -0,0 +1,29 @@
1+/*
2+ * Copyright 2016 Canonical Ltd.
3+ *
4+ * This program is free software: you can redistribute it and/or modify it
5+ * under the terms of the GNU General Public License version 3, as published
6+ * by the Free Software Foundation.
7+ *
8+ * This program is distributed in the hope that it will be useful, but
9+ * WITHOUT ANY WARRANTY; without even the implied warranties of
10+ * MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
11+ * PURPOSE. See the GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * version 3 along with this program. If not, see
15+ * <http://www.gnu.org/licenses/>
16+ */
17+
18+#include "LightDMServer.h"
19+
20+LightDMServer::LightDMServer(QObject *logind, QObject *parent)
21+ : QObject(parent)
22+ , m_logind(logind)
23+{
24+}
25+
26+void LightDMServer::Lock()
27+{
28+ QMetaObject::invokeMethod(m_logind, "Lock");
29+}
tests/plugins/Unity/Session/LightDMServer.hnew file+38
@@ -0,0 +1,38 @@
1+/*
2+ * Copyright 2016 Canonical Ltd.
3+ *
4+ * This program is free software: you can redistribute it and/or modify it
5+ * under the terms of the GNU General Public License version 3, as published
6+ * by the Free Software Foundation.
7+ *
8+ * This program is distributed in the hope that it will be useful, but
9+ * WITHOUT ANY WARRANTY; without even the implied warranties of
10+ * MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
11+ * PURPOSE. See the GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * version 3 along with this program. If not, see
15+ * <http://www.gnu.org/licenses/>
16+ */
17+
18+#ifndef UNITY_LIGHTDMSERVER_H
19+#define UNITY_LIGHTDMSERVER_H
20+
21+#include <QDBusContext>
22+#include <QObject>
23+
24+class LightDMServer: public QObject, protected QDBusContext
25+{
26+ Q_OBJECT
27+
28+public:
29+ explicit LightDMServer(QObject *logind, QObject *parent = nullptr);
30+
31+public Q_SLOTS:
32+ void Lock();
33+
34+private:
35+ QObject *m_logind;
36+};
37+
38+#endif
tests/plugins/Unity/Session/LogindServer.cppnew file+33
@@ -0,0 +1,33 @@
1+/*
2+ * Copyright 2016 Canonical Ltd.
3+ *
4+ * This program is free software: you can redistribute it and/or modify it
5+ * under the terms of the GNU General Public License version 3, as published
6+ * by the Free Software Foundation.
7+ *
8+ * This program is distributed in the hope that it will be useful, but
9+ * WITHOUT ANY WARRANTY; without even the implied warranties of
10+ * MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
11+ * PURPOSE. See the GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * version 3 along with this program. If not, see
15+ * <http://www.gnu.org/licenses/>
16+ */
17+
18+#include "LogindServer.h"
19+
20+LogindServer::LogindServer(QObject *parent)
21+ : QObject(parent)
22+{
23+}
24+
25+QDBusObjectPath LogindServer::GetSessionByPID(quint32)
26+{
27+ return QDBusObjectPath("/logindsession");
28+}
29+
30+void LogindServer::MockEmitUnlock()
31+{
32+ Q_EMIT Unlock();
33+}
tests/plugins/Unity/Session/LogindServer.hnew file+43
@@ -0,0 +1,43 @@
1+/*
2+ * Copyright 2016 Canonical Ltd.
3+ *
4+ * This program is free software: you can redistribute it and/or modify it
5+ * under the terms of the GNU General Public License version 3, as published
6+ * by the Free Software Foundation.
7+ *
8+ * This program is distributed in the hope that it will be useful, but
9+ * WITHOUT ANY WARRANTY; without even the implied warranties of
10+ * MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
11+ * PURPOSE. See the GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * version 3 along with this program. If not, see
15+ * <http://www.gnu.org/licenses/>
16+ */
17+
18+#ifndef UNITY_LOGINDSERVER_H
19+#define UNITY_LOGINDSERVER_H
20+
21+#include <QDBusContext>
22+#include <QDBusObjectPath>
23+#include <QObject>
24+
25+class LogindServer: public QObject, protected QDBusContext
26+{
27+ Q_OBJECT
28+
29+public:
30+ explicit LogindServer(QObject *parent = nullptr);
31+
32+public Q_SLOTS:
33+ QDBusObjectPath GetSessionByPID(quint32 pid);
34+
35+ void MockEmitUnlock(); // only in mock
36+
37+Q_SIGNALS:
38+ void Lock();
39+ void Unlock();
40+ void PrepareForSleep();
41+};
42+
43+#endif
tests/plugins/Unity/Session/interfaces.xmlnew file+17
@@ -0,0 +1,17 @@
1+<node>
2+ <interface name="org.freedesktop.DisplayManager.Session">
3+ <method name="Lock" />
4+ </interface>
5+ <interface name="org.freedesktop.login1.Manager">
6+ <method name="GetSessionByPID">
7+ <arg name="pid" type="u" direction="in" />
8+ <arg name="session" type="o" direction="out" />
9+ </method>
10+ <signal name="PrepareForSleep" />
11+ </interface>
12+ <interface name="org.freedesktop.login1.Session">
13+ <method name="MockEmitUnlock" />
14+ <signal name="Lock" />
15+ <signal name="Unlock" />
16+ </interface>
17+</node>
tests/plugins/Unity/Session/server.cppnew file+50
@@ -0,0 +1,50 @@
1+/*
2+ * Copyright 2016 Canonical Ltd.
3+ *
4+ * This program is free software: you can redistribute it and/or modify it
5+ * under the terms of the GNU General Public License version 3, as published
6+ * by the Free Software Foundation.
7+ *
8+ * This program is distributed in the hope that it will be useful, but
9+ * WITHOUT ANY WARRANTY; without even the implied warranties of
10+ * MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
11+ * PURPOSE. See the GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * version 3 along with this program. If not, see
15+ * <http://www.gnu.org/licenses/>
16+ */
17+
18+#include "LightDMServer.h"
19+#include "LightDMSessionAdaptor.h"
20+#include "LogindManagerAdaptor.h"
21+#include "LogindServer.h"
22+#include "LogindSessionAdaptor.h"
23+#include <QCoreApplication>
24+
25+int main(int argc, char *argv[])
26+{
27+ QCoreApplication a(argc, argv);
28+
29+ auto logind = new LogindServer(&a);
30+ new LogindManagerAdaptor(logind);
31+ new LogindSessionAdaptor(logind);
32+
33+ auto lightdm = new LightDMServer(logind, &a);
34+ new LightDMSessionAdaptor(lightdm);
35+
36+ // We use the session bus for testing. The real plugin uses the system bus
37+ auto connection = QDBusConnection::sessionBus();
38+ if (!connection.registerObject("/org/freedesktop/login1", logind))
39+ return 1;
40+ if (!connection.registerObject("/logindsession", logind))
41+ return 1;
42+ if (!connection.registerService("org.freedesktop.login1"))
43+ return 1;
44+ if (!connection.registerObject("/session", lightdm))
45+ return 1;
46+ if (!connection.registerService("org.freedesktop.DisplayManager"))
47+ return 1;
48+
49+ return a.exec();
50+}
tests/plugins/Unity/Session/sessionbackendtest.cpp+15−1
@@ -61,6 +61,8 @@ private Q_SLOTS:
6161 QTest::newRow("Reboot") << "RequestReboot" << "RebootRequested(bool)";
6262 QTest::newRow("Shutdown") << "RequestShutdown" << "ShutdownRequested(bool)";
6363 QTest::newRow("PromptLock") << "PromptLock" << "LockRequested()";
64+ QTest::newRow("Lock") << "Lock" << "LockRequested()";
65+ QTest::newRow("LockLightDM") << "Lock" << "Locked()"; // happens when we lock LightDM, only for Lock()
6466 }
6567
6668 void testUnitySessionLogoutRequested() {
@@ -76,7 +78,7 @@ private Q_SLOTS:
7678 QDBusReply<void> reply = dbusUnitySession->call(method);
7779 QCOMPARE(reply.isValid(), true);
7880
79− QCOMPARE(spy.count(), 1);
81+ QTRY_COMPARE(spy.count(), 1);
8082 }
8183
8284 void testGnomeSessionWrapper_data() {
@@ -122,6 +124,18 @@ private Q_SLOTS:
122124 QCOMPARE(spy.count(), 1);
123125 }
124126
127+ void testUnlockFromLogind() {
128+ DBusUnitySessionService dbusUnitySessionService;
129+ QCoreApplication::processEvents(); // to let the service register on DBus
130+
131+ QDBusInterface iface("org.freedesktop.login1", "/logindsession", "org.freedesktop.login1.Session");
132+ QVERIFY(iface.isValid());
133+
134+ QSignalSpy spy(&dbusUnitySessionService, SIGNAL(Unlocked()));
135+ QCOMPARE(iface.call("MockEmitUnlock").errorMessage(), QString());
136+ QTRY_COMPARE(spy.count(), 1);
137+ }
138+
125139 void testUserName() {
126140 DBusUnitySessionService dbusUnitySessionService;
127141 QCoreApplication::processEvents(); // to let the service register on DBus
tests/qmltests/CMakeLists.txt+3−1
@@ -12,11 +12,13 @@ add_unity8_qmltest(Components Dialogs LIGHTDM)
1212add_unity8_qmltest(Components DraggingArea)
1313add_unity8_qmltest(Components LazyImage)
1414add_unity8_qmltest(Components Lockscreen)
15+add_unity8_qmltest(Components MediaServices)
1516add_unity8_qmltest(Components ModeSwitchWarningDialog)
1617add_unity8_qmltest(Components PhysicalKeysMapper)
1718add_unity8_qmltest(Components Rating)
1819add_unity8_qmltest(Components ResponsiveGridView)
1920add_unity8_qmltest(Components ResponsiveVerticalJournal)
21+add_unity8_qmltest(Components SharingPicker)
2022add_unity8_qmltest(Components Showable)
2123add_unity8_qmltest(Components VirtualTouchPad)
2224add_unity8_qmltest(Components WallpaperResolver)
@@ -40,6 +42,7 @@ add_unity8_qmltest(Dash/Previews PreviewExpandable)
4042add_unity8_qmltest(Dash/Previews PreviewHeader)
4143add_unity8_qmltest(Dash/Previews PreviewIconActions)
4244add_unity8_qmltest(Dash/Previews PreviewImageGallery)
45+add_unity8_qmltest(Dash/Previews PreviewInlineVideo)
4346add_unity8_qmltest(Dash/Previews PreviewMediaToolbar)
4447add_unity8_qmltest(Dash/Previews PreviewPayments)
4548add_unity8_qmltest(Dash/Previews PreviewProgress)
@@ -47,7 +50,6 @@ add_unity8_qmltest(Dash/Previews PreviewRatingDisplay)
4750add_unity8_qmltest(Dash/Previews PreviewRatingDisplayCreationRanges)
4851add_unity8_qmltest(Dash/Previews PreviewRatingEdit)
4952add_unity8_qmltest(Dash/Previews PreviewRatingInput)
50−add_unity8_qmltest(Dash/Previews PreviewSharing)
5153add_unity8_qmltest(Dash/Previews PreviewTable)
5254add_unity8_qmltest(Dash/Previews PreviewTextSummary)
5355add_unity8_qmltest(Dash/Previews PreviewVideoPlayback)
tests/qmltests/Components/CMakeLists.txt+5−1
@@ -6,8 +6,12 @@ pkg_check_modules(UBUNTUGESTURES REQUIRED UbuntuGestures)
66
77include_directories(
88 ${CMAKE_SOURCE_DIR}/plugins/Ubuntu/Gestures
9− ${UBUNTUGESTURES_INCLUDE_DIRS}
109 ${CMAKE_CURRENT_BINARY_DIR}
10+ )
11+
12+include_directories(
13+ SYSTEM
14+ ${UBUNTUGESTURES_INCLUDE_DIRS}
1115 ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
1216 ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
1317 ${UBUNTUGESTURES_INCLUDEDIR}/UbuntuGestures/${UBUNTUGESTURES_VERSION}
tests/qmltests/Components/tst_LazyImage/portrait.png

Binary file not shown.

tests/qmltests/Components/tst_LazyImage/square.png

Binary file not shown.

tests/qmltests/Components/tst_LazyImage/wide.png

Binary file not shown.

tests/qmltests/Components/tst_Lockscreen.qml+20−1
@@ -173,6 +173,7 @@ Rectangle {
173173 function cleanup() {
174174 lockscreen.clear(false);
175175 delayMinutesTextField.text = "0"
176+ enteredLabel.text = "";
176177
177178 // Reset sizing
178179 root.width = units.gu(80)
@@ -247,7 +248,6 @@ Rectangle {
247248 }
248249
249250 function test_unlock(data) {
250− enteredLabel.text = ""
251251 minPinLengthTextField.text = data.minPinLength
252252 maxPinLengthTextField.text = data.maxPinLength
253253 pinPadCheckBox.checked = data.alphanumeric
@@ -462,6 +462,25 @@ Rectangle {
462462 compare(label.text, "Device Locked")
463463 }
464464
465+ function test_showText_data() {
466+ return [
467+ { tag: "alphanumeric", alphanumeric: true },
468+ { tag: "pinPad", alphanumeric: false },
469+ ]
470+ }
471+
472+ function test_showText(data) {
473+ pinPadCheckBox.checked = data.alphanumeric;
474+ waitForLockscreenReady();
475+
476+ lockscreen.showText("test");
477+
478+ var pinPadLoader = findChild(lockscreen, "pinPadLoader");
479+ verify(pinPadLoader.waiting);
480+ compare(enteredLabel.text, ""); // no entered signal should occur
481+ compare(lockscreen.passphrase, "test");
482+ }
483+
465484 function test_resize_data() {
466485 return [
467486 { tag: "small", width: units.gu(40), height: units.gu(76) },
tests/qmltests/Components/tst_MediaServices.qmlnew file+230
@@ -0,0 +1,230 @@
1+/*
2+ * Copyright 2016 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+import QtTest 1.0
19+import "../../../qml/Components/MediaServices"
20+import Unity.Test 0.1 as UT
21+import Ubuntu.Components 1.3
22+import QtMultimedia 5.0
23+
24+Rectangle {
25+ id: root
26+ width: units.gu(70)
27+ height: units.gu(80)
28+ color: "lightgrey"
29+
30+ property var sourceData: {
31+ // TODO do we want a video or make this fake
32+ "source": "file:///home/nick/Videos/test-mpeg.ogv",
33+ "screenshot": Qt.resolvedUrl("../Dash/artwork/avatar.png")
34+ }
35+
36+ property var sourceData2: {
37+ // TODO do we want a video or make this fake
38+ "source": "file:///home/nick/Videos/test-mpeg2.ogv",
39+ "screenshot": Qt.resolvedUrl("../Dash/artwork/checkers.png")
40+ }
41+
42+ MediaDataSource {
43+ source: root.sourceData["source"]
44+ duration: 60000
45+ metaData: {
46+ "title" : "TEST MPEG",
47+ "resolution" : { "width": 160, "height": 90 }
48+ }
49+ }
50+
51+ MediaDataSource {
52+ source: root.sourceData2["source"]
53+ duration: 30000
54+ metaData: {
55+ "title" : "TEST MPEG",
56+ "resolution" : { "width": 90, "height": 240 }
57+ }
58+ }
59+
60+ Item {
61+ anchors.fill: parent
62+
63+ Rectangle {
64+ anchors {
65+ top: parent.top
66+ bottom: parent.bottom
67+ left: parent.left
68+ right: controls.left
69+ }
70+ color: "darkblue"
71+
72+ MediaServices {
73+ id: services
74+ fullscreen: false
75+ width: parent.width
76+ sourceData: root.sourceData
77+ context: "video"
78+
79+ rootItem: parent
80+ maximumEmbeddedHeight: undefined
81+ }
82+ }
83+
84+ Rectangle {
85+ id: controls
86+ color: "darkgrey"
87+ anchors {
88+ top: parent.top
89+ bottom: parent.bottom
90+ right: parent.right
91+ }
92+ width: units.gu(30)
93+
94+ Column {
95+ anchors { left: parent.left; right: parent.right; top: parent.top; margins: units.gu(1) }
96+
97+ Button {
98+ text: "Fullscreen"
99+ onClicked: services.fullscreen = !services.fullscreen
100+ }
101+ UT.MouseTouchEmulationCheckbox {}
102+ }
103+ }
104+ }
105+
106+ SignalSpy {
107+ id: serviceCloseSpy
108+ target: services
109+ signalName: "close"
110+ }
111+
112+ UT.UnityTestCase {
113+ name: "VideoMediaServices"
114+ when: windowShown
115+
116+ property int oldControlTimerInterval: 0;
117+
118+ function init() {
119+ services.sourceData = root.sourceData
120+ services.context = "video";
121+
122+ var controlHideTimer = findInvisibleChild(services, "controlHideTimer");
123+ verify(controlHideTimer !== null);
124+ oldControlTimerInterval = controlHideTimer.interval;
125+ }
126+
127+ function cleanup() {
128+ serviceCloseSpy.clear();
129+ services.context = "";
130+ services.fullscreen = false;
131+ services.maximumEmbeddedHeight = undefined;
132+ tryCompareFunction(function() { return services.header ? services.header.visible : false }, false);
133+ tryCompareFunction(function() { return services.footer ? services.footer.visible : false }, false);
134+
135+ var controlHideTimer = findInvisibleChild(services, "controlHideTimer");
136+ controlHideTimer.interval = oldControlTimerInterval;
137+ }
138+
139+ function test_videoWidget() {
140+ var videoPlayer = findChild(services, "videoPlayer");
141+ verify(videoPlayer !== null);
142+
143+ var videoControls = findChild(services, "videoControls");
144+ verify(videoControls !== null);
145+ }
146+
147+ function test_tapVideoPlayerToPlayAndPause() {
148+ var videoPlayer = findChild(services, "videoPlayer");
149+ verify(videoPlayer !== null)
150+ tap(videoPlayer, videoPlayer.width/2, videoPlayer.height/2);
151+
152+ var mediaPlayer = findInvisibleChild(services, "mediaPlayer");
153+ verify(mediaPlayer !== null);
154+ compare(mediaPlayer.playbackState, MediaPlayer.PlayingState, "Media player should be playing");
155+
156+ tap(videoPlayer, videoPlayer.width/2, videoPlayer.height/2);
157+ compare(mediaPlayer.playbackState, MediaPlayer.PausedState, "Media player should be playing");
158+ }
159+
160+ function test_fullscreenSwitch() {
161+ var mediaPlayer = findInvisibleChild(services, "mediaPlayer");
162+ verify(mediaPlayer !== null);
163+ mediaPlayer.play();
164+ wait(UbuntuAnimation.BriskDuration); // animation
165+
166+ var button = findChild(services, "viewActionButton");
167+ verify(button !== null);
168+ tap(button);
169+
170+ compare(services.fullscreen, true, "Should have switched to fullscreen mode.");
171+ }
172+
173+ function test_HeaderVisibleOnlyWhenFullscreen() {
174+ services.fullscreen = false;
175+ compare(services.header, null, "Header should be null when not fullscreen");
176+ services.fullscreen = true;
177+ tryCompareFunction(function() { return services.header !== null }, true);
178+ }
179+
180+ function test_ControlsShowAndHideWhenPlayed() {
181+ services.fullscreen = true;
182+ var controlHideTimer = findInvisibleChild(services, "controlHideTimer");
183+ controlHideTimer.interval = 100;
184+
185+ var mediaPlayer = findInvisibleChild(services, "mediaPlayer");
186+ mediaPlayer.play();
187+
188+ tryCompare(services.header, "visible", true);
189+ tryCompare(services.footer, "visible", true);
190+
191+ tryCompare(services.header, "visible", false);
192+ tryCompare(services.footer, "visible", false);
193+ }
194+
195+ function test_ControlsDontTimeOutWhenPaused() {
196+ services.fullscreen = true;
197+ var controlHideTimer = findInvisibleChild(services, "controlHideTimer");
198+ controlHideTimer.interval = 100;
199+
200+ var mediaPlayer = findInvisibleChild(services, "mediaPlayer");
201+ mediaPlayer.play();
202+ mediaPlayer.pause();
203+ wait(300);
204+
205+ compare(services.header.visible, true, "Header should still be visible");
206+ compare(services.footer.visible, true, "Footer should still be visible");
207+ }
208+
209+ function test_close() {
210+ services.fullscreen = true;
211+ var mediaPlayer = findInvisibleChild(services, "mediaPlayer");
212+ mediaPlayer.play();
213+ mediaPlayer.pause();
214+ wait(UbuntuAnimation.BriskDuration); // animation
215+
216+ var navigationButton = findChild(services, "navigationButton");
217+ verify(navigationButton !== null);
218+
219+ tap(navigationButton);
220+ compare(serviceCloseSpy.count, 1, "close was not called");
221+ }
222+
223+ function test_maximumVideoSize() {
224+ services.maximumEmbeddedHeight = root.height / 2
225+ services.sourceData = root.sourceData2
226+ verify(services.content !== null);
227+ tryCompare(services.content, "height", root.height/2);
228+ }
229+ }
230+}
tests/qmltests/Dash/Previews/tst_PreviewSharing.qml → tests/qmltests/Components/tst_SharingPicker.qmlrenamed+8−8
@@ -17,7 +17,7 @@
1717import QtQuick 2.4
1818import QtTest 1.0
1919import Ubuntu.Components 1.3
20−import "../../../../qml/Dash/Previews"
20+import "../../../qml/Components"
2121import Unity.Test 0.1 as UT
2222
2323Rectangle {
@@ -40,33 +40,33 @@ Rectangle {
4040 "content-type": "text"
4141 }
4242
43− PreviewSharing {
44− id: previewSharing
43+ SharingPicker {
44+ id: sharingPicker
4545 anchors { left: parent.left; bottom: parent.bottom; }
4646 shareData: root.shareData
4747 }
4848
4949 UT.UnityTestCase {
50− name: "PreviewSharingTest"
50+ name: "SharingPickerTest"
5151 when: windowShown
5252
53− property Item peerPicker: findChild(previewSharing.rootItem, "peerPicker")
53+ property Item peerPicker: findChild(sharingPicker.rootItem, "peerPicker")
5454
5555 function cleanup() {
5656 peerPicker.visible = false;
5757 }
5858
5959 function test_open_picker() {
60− mouseClick(previewSharing);
60+ sharingPicker.showPeerPicker();
6161 compare(peerPicker.visible, true);
6262 }
6363
6464 function test_createExportedItems() {
65− var exportedItems = previewSharing.createExportedItems(shareData["uri"]);
65+ var exportedItems = sharingPicker.createExportedItems(shareData["uri"]);
6666 for (var i = 0; i < exportedItems.length; i++) {
6767 compare(exportedItems[i].url, shareData["uri"][i]);
6868 }
69− exportedItems = previewSharing.createExportedItems(shareDataString["uri"]);
69+ exportedItems = sharingPicker.createExportedItems(shareDataString["uri"]);
7070 compare(exportedItems[0].url, shareDataString["uri"]);
7171 }
7272 }
tests/qmltests/Dash/Previews/tst_PreviewInlineVideo.qmlnew file+114
@@ -0,0 +1,114 @@
1+/*
2+ * Copyright 2016 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+import QtTest 1.0
19+import "../../../../qml/Dash/Previews"
20+import Unity.Test 0.1 as UT
21+import Ubuntu.Components 1.3
22+import QtMultimedia 5.0
23+
24+Rectangle {
25+ width: units.gu(70)
26+ height: units.gu(80)
27+ color: "lightgrey"
28+
29+ property var widgetData0: {
30+ "source": "file:///test-video1",
31+ "screenshot": Qt.resolvedUrl("../artwork/avatar.png"),
32+ "share-data": {
33+ "uri": [
34+ "file:///this/is/an/url",
35+ "file:///this/is/an/url/2",
36+ "file:///this/is/an/url/3"
37+ ],
38+ "content-type": "text"
39+ }
40+ }
41+
42+ property var widgetData1: {
43+ "source": "file:///test-video2",
44+ "screenshot": "file:///test-video2-screenshot"
45+ }
46+
47+ MediaDataSource {
48+ source: "file:///test-video1"
49+ duration: 6000000
50+ metaData: {
51+ "title" : "TEST MPEG",
52+ "resolution" : { "width": 1920, "height": 1080 }
53+ }
54+ }
55+
56+ Item {
57+ anchors.fill: parent
58+
59+ Item {
60+ id: inner
61+ anchors {
62+ top: parent.top
63+ bottom: parent.bottom
64+ left: parent.left
65+ right: controls.left
66+ }
67+
68+ Item {
69+ anchors.fill: parent
70+ anchors.margins: units.gu(2)
71+
72+ PreviewInlineVideo {
73+ id: videoPlayback
74+ width: parent.width
75+ widgetData: widgetData0
76+
77+ rootItem: inner
78+ }
79+ }
80+
81+ }
82+
83+ Rectangle {
84+ id: controls
85+ color: "darkgrey"
86+ anchors {
87+ top: parent.top
88+ bottom: parent.bottom
89+ right: parent.right
90+ }
91+ width: units.gu(30)
92+
93+ Column {
94+ anchors { left: parent.left; right: parent.right; top: parent.top; margins: units.gu(1) }
95+
96+ UT.MouseTouchEmulationCheckbox {}
97+ }
98+ }
99+ }
100+
101+ UT.UnityTestCase {
102+ name: "PreviewInlineVideoTest"
103+ when: windowShown
104+
105+ function test_loadScreenshot() {
106+ var screenshot = findChild(videoPlayback, "screenshot");
107+ verify(screenshot !== null);
108+
109+ videoPlayback.widgetData = widgetData1;
110+ var screenshotSource = screenshot.source
111+ compare(screenshotSource.toString(), "file:///test-video2-screenshot");
112+ }
113+ }
114+}
tests/qmltests/Dash/Previews/tst_PreviewMediaToolbar.qml+3−3
@@ -51,7 +51,7 @@ Rectangle {
5151 name: "PreviewMediaToolbarTest"
5252 when: windowShown
5353
54− property Item sharingWidget: findChild(previewMediaToolbar, "sharingWidget")
54+ property Item sharingPicker: findChild(previewMediaToolbar, "sharingPicker")
5555
5656 function cleanup() {
5757 previewMediaToolbar.shareData = root.shareData;
@@ -60,10 +60,10 @@ Rectangle {
6060 function test_visible() {
6161 previewMediaToolbar.shareData = shareDataNoUri;
6262 compare(previewMediaToolbar.visible, false);
63− compare(sharingWidget.visible, false);
63+ compare(sharingPicker.visible, false);
6464 previewMediaToolbar.shareData = shareData;
6565 compare(previewMediaToolbar.visible, true);
66− compare(sharingWidget.visible, true);
66+ compare(sharingPicker.visible, true);
6767 }
6868 }
6969}
tests/qmltests/Dash/Previews/tst_PreviewRatingDisplayCreationRanges.qml+51−15
@@ -1,5 +1,5 @@
11/*
2− * Copyright 2014,2015 Canonical Ltd.
2+ * Copyright 2014-2016 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
@@ -42,6 +42,8 @@ Flickable {
4242 parentFlickable: root
4343 }
4444
45+ property int createdDelegates: 0
46+
4547 Component.onCompleted: {
4648 for (var i = 0; i < 500; ++i) {
4749 widgetData500.reviews.push({ author: "Some dude", review: "Very cool app" + i });
@@ -49,37 +51,68 @@ Flickable {
4951 factory.widgetData = widgetData500;
5052 }
5153
54+ Component {
55+ id: countingPreviewRatingSingleDisplayComponent
56+ PreviewRatingSingleDisplay {
57+ objectName: "reviewItem" + index
58+
59+ anchors { left: parent.left; right: parent.right; }
60+
61+ rating: modelData["rating"] || -1
62+ author: modelData["author"] || ""
63+ review: modelData["review"] || ""
64+ Component.onCompleted: root.createdDelegates++;
65+ }
66+ }
67+
5268 UT.UnityTestCase {
53− name: "PreviewRatingDisplayTest"
69+ name: "PreviewRatingDisplayCreationRangesTest"
5470 when: windowShown
5571
56− function test_creation_speed() {
57− factory.parentFlickable = null;
72+ function initTestCase() {
73+ var lists = findChildsByType(factory, "QQuickListView");
74+ compare(lists.length, 1)
75+ lists[0].delegate = countingPreviewRatingSingleDisplayComponent;
76+ }
77+
78+ function test_check_delegate_creation_range() {
79+ // Clear the reviews
5880 factory.widgetData = reviewsEmpty;
5981 waitForRendering(root);
6082
61− var start = new Date().getTime();
83+ // Unset parentFlickable this disables the creation range code
84+ factory.parentFlickable = null;
85+ root.createdDelegates = 0;
86+
87+ // Set the 500 reviews data
6288 factory.widgetData = widgetData500;
6389 waitForRendering(root);
64− var end = new Date().getTime();
65− var time500 = end - start;
6690
91+ // Check we have created 500 delegates
92+ compare(root.createdDelegates, 500);
93+
94+ // Check review 499 has been created
95+ var reviewItem499 = findChild(factory, "reviewItem499");
96+ verify(reviewItem499 !== null);
97+
98+ // Clear the reviews
6799 factory.widgetData = reviewsEmpty;
68100 waitForRendering(root);
69101
102+ // set parentFlickable to enable the creation ranges code
70103 factory.parentFlickable = root;
71− start = new Date().getTime();
104+ root.createdDelegates = 0;
105+
106+ // Set the 500 reviews data
72107 factory.widgetData = widgetData500;
73108 waitForRendering(root);
74− end = new Date().getTime();
75− var timeRanges500 = end - start;
76109
77− // Measurements show it's usually like 20 times faster
78− // but we set the range at 8 times fast to make sure it's not an unstable test
79− verify(timeRanges500 * 8 < time500);
80− }
110+ // Check we have only created a few delegates
111+ // For some reason xenial and yaketti we get 16 and on vivid 15 so
112+ // settle for <= 20
113+ expectFailContinue("", "Should not create more than 20 delegates when using ranges");
114+ tryCompareFunction(function() { return root.createdDelegates > 20 }, true);
81115
82− function test_check_indexes() {
83116 // Check that item 499 isn't there on startup but if we scroll down
84117 // it will be there
85118 var reviewItem499 = findChild(factory, "reviewItem499");
@@ -89,6 +122,9 @@ Flickable {
89122
90123 var reviewItem499 = findChild(factory, "reviewItem499");
91124 verify(reviewItem499 !== null);
125+
126+ // Check we have created 500 delegates
127+ compare(root.createdDelegates, 500);
92128 }
93129 }
94130}
tests/qmltests/Dash/Previews/tst_PreviewRatingEdit.qml+3
@@ -56,7 +56,9 @@ Rectangle {
5656 verify(!reviewTextArea.visible)
5757
5858 var editButton = findChild(previewRatingEdit, "editButton");
59+ var display = findChild(previewRatingEdit, "display");
5960 mouseClick(editButton);
61+ tryCompare(display, "visible", false);
6062 verify(!authorLabel.visible)
6163 verify(reviewTextArea.visible)
6264
@@ -72,6 +74,7 @@ Rectangle {
7274 var submitButton = findChild(previewRatingEdit, "submitButton")
7375 mouseClick(submitButton);
7476
77+ tryCompare(display, "visible", true);
7578 compare(spy.count, 1);
7679 var args = spy.signalArguments[0];
7780 compare(args[0], previewRatingEdit.widgetId);
tests/qmltests/Dash/Previews/tst_PreviewWidgetFactory.qml+17−16
@@ -75,26 +75,27 @@ Rectangle {
7575
7676 function test_mapping_data() {
7777 return [
78− { tag: "Actions", type: "actions", source: "PreviewActions.qml", expanded: true },
79− { tag: "Audio", type: "audio", source: "PreviewAudioPlayback.qml", expanded: true },
80− { tag: "Comment", type: "comment", source: "PreviewComment.qml", expanded: true },
81− { tag: "Comment Input", type: "comment-input", source: "PreviewCommentInput.qml", expanded: true },
82− { tag: "Expandable", type: "expandable", source: "PreviewExpandable.qml", expanded: false },
83− { tag: "Gallery", type: "gallery", source: "PreviewImageGallery.qml", expanded: true },
84− { tag: "Header", type: "header", source: "PreviewHeader.qml", expanded: true },
85− { tag: "Image", type: "image", source: "PreviewZoomableImage.qml", expanded: true },
86− { tag: "Progress", type: "progress", source: "PreviewProgress.qml", expanded: true },
87− { tag: "Rating Input", type: "rating-input", source: "PreviewRatingInput.qml", expanded: true },
88− { tag: "Rating Display", type: "reviews", source: "PreviewRatingDisplay.qml", expanded: true },
89− { tag: "Table", type: "table", source: "PreviewTable.qml", expanded: true },
90− { tag: "Text", type: "text", source: "PreviewTextSummary.qml", expanded: true },
91− { tag: "Video", type: "video", source: "PreviewVideoPlayback.qml", expanded: true },
78+ { tag: "Actions", data: { type: "actions" }, source: "PreviewActions.qml", expanded: true },
79+ { tag: "Audio", data: { type: "audio" }, source: "PreviewAudioPlayback.qml", expanded: true },
80+ { tag: "Comment", data: { type: "comment" }, source: "PreviewComment.qml", expanded: true },
81+ { tag: "Comment Input", data: { type: "comment-input" }, source: "PreviewCommentInput.qml", expanded: true },
82+ { tag: "Expandable", data: { type: "expandable" }, source: "PreviewExpandable.qml", expanded: false },
83+ { tag: "Gallery", data: { type: "gallery" }, source: "PreviewImageGallery.qml", expanded: true },
84+ { tag: "Header", data: { type: "header" }, source: "PreviewHeader.qml", expanded: true },
85+ { tag: "Image", data: { type: "image" }, source: "PreviewZoomableImage.qml", expanded: true },
86+ { tag: "Progress", data: { type: "progress" }, source: "PreviewProgress.qml", expanded: true },
87+ { tag: "Rating Input", data: { type: "rating-input" }, source: "PreviewRatingInput.qml", expanded: true },
88+ { tag: "Rating Display", data: { type: "reviews" }, source: "PreviewRatingDisplay.qml", expanded: true },
89+ { tag: "Table", data: { type: "table" }, source: "PreviewTable.qml", expanded: true },
90+ { tag: "Text", data: { type: "text" }, source: "PreviewTextSummary.qml", expanded: true },
91+ { tag: "Video Inline", data: { type: "video", source: "httpDemo" }, source: "PreviewInlineVideo.qml", expanded: true },
92+ { tag: "Video", data: { type: "video", source: "https://demo" }, source: "PreviewVideoPlayback.qml", expanded: true },
9293 ];
9394 }
9495
9596 function test_mapping(data) {
96− factory.widgetData = { type: data.type };
97− factory.widgetType = data.type;
97+ factory.widgetData = data.data;
98+ factory.widgetType = data.data.type;
9899
99100 verify((String(factory.source)).indexOf(data.source) != -1);
100101 compare(factory.item.expanded, data.expanded);
tests/qmltests/Dash/artwork/avatar@12.png

Binary file not shown.

tests/qmltests/Dash/artwork/background.png

Binary file not shown.

tests/qmltests/Dash/artwork/checkers.png

Binary file not shown.

tests/qmltests/Dash/artwork/emblem.png

Binary file not shown.

tests/qmltests/Dash/artwork/music-player-design.png

Binary file not shown.

tests/qmltests/Dash/tst_Dash.qml+56−71
@@ -112,6 +112,19 @@ Item {
112112 mouseClick(tile);
113113 }
114114
115+ function open_manage_dash() {
116+ // Show the manage dash
117+ touchFlick(dash, dash.width / 2, dash.height - 1, dash.width / 2, units.gu(2));
118+ var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
119+ tryCompare(bottomEdgeController, "progress", 1);
120+
121+ // Make sure stuff is loaded
122+ var favScopesListCategory = findChild(dash, "scopesListCategoryfavorites");
123+ var favScopesListCategoryList = findChild(favScopesListCategory, "scopesListCategoryInnerList");
124+ waitForRendering(favScopesListCategoryList);
125+ tryCompare(favScopesListCategoryList, "currentIndex", 0);
126+ }
127+
115128 function test_longNavigationFilterList() {
116129 // Select the scope with long navigation
117130 dash.setCurrentScope("LongPrimaryNavigation")
@@ -121,6 +134,7 @@ Item {
121134 var dashContentList = findChild(dashContent, "dashContentList")
122135 var searchButton = findChild(dashContentList.currentItem, "search_button")
123136 var extraPanel = findChild(dashContentList.currentItem, "peExtraPanel")
137+ waitForRendering(extraPanel);
124138 tryCompare(extraPanel, "visible", false)
125139
126140 // Open the primaryNavigationFilter
@@ -179,22 +193,16 @@ Item {
179193 }
180194
181195 function test_manage_dash_clickscope_unfavoritable() {
182− // Show the manage dash
183− touchFlick(dash, dash.width / 2, dash.height - 1, dash.width / 2, units.gu(2));
184− var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
185− tryCompare(bottomEdgeController, "progress", 1);
186−
187− // Make sure stuff is loaded
188− var favScopesListCategory = findChild(dash, "scopesListCategoryfavorites");
189− var favScopesListCategoryList = findChild(favScopesListCategory, "scopesListCategoryInnerList");
190− tryCompare(favScopesListCategoryList, "currentIndex", 0);
196+ open_manage_dash();
191197
192198 // Click scope star area is not visible (i.e. can't be unfavorited)
199+ var favScopesListCategoryList = findChild(findChild(dash, "scopesListCategoryfavorites"), "scopesListCategoryInnerList");
193200 var clickScope = findChild(favScopesListCategoryList, "delegateclickscope");
194201 var starArea = findChild(clickScope, "starArea");
195202 compare(starArea.visible, false);
196203
197204 // Go back
205+ var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
198206 var scopesList = findChild(dash, "scopesList");
199207 var scopesListPageHeader = findChild(scopesList, "pageHeader");
200208 var backButton = findChild(scopesListPageHeader, "innerPageHeader").leadingActionBar;
@@ -203,20 +211,14 @@ Item {
203211 }
204212
205213 function test_manage_dash_select_same_favorite() {
206− // Show the manage dash
207− touchFlick(dash, dash.width / 2, dash.height - 1, dash.width / 2, units.gu(2));
208− var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
209− tryCompare(bottomEdgeController, "progress", 1);
210−
211− // Make sure stuff is loaded
212− var favScopesListCategory = findChild(dash, "scopesListCategoryfavorites");
213− var favScopesListCategoryList = findChild(favScopesListCategory, "scopesListCategoryInnerList");
214− tryCompare(favScopesListCategoryList, "currentIndex", 0);
214+ open_manage_dash();
215215
216216 // Click in first item
217+ var favScopesListCategoryList = findChild(findChild(dash, "scopesListCategoryfavorites"), "scopesListCategoryInnerList");
217218 mouseClick(favScopesListCategoryList.currentItem);
218219
219220 // Make sure animation went back
221+ var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
220222 tryCompare(bottomEdgeController, "progress", 0);
221223
222224 var dashContentList = findChild(dash, "dashContentList");
@@ -224,31 +226,25 @@ Item {
224226 }
225227
226228 function test_manage_dash_select_different_favorite() {
227− // Show the manage dash
228− touchFlick(dash, dash.width / 2, dash.height - 1, dash.width / 2, units.gu(2));
229− var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
230− tryCompare(bottomEdgeController, "progress", 1);
231−
232− // Make sure stuff is loaded
233− var favScopesListCategory = findChild(dash, "scopesListCategoryfavorites");
234− var favScopesListCategoryList = findChild(favScopesListCategory, "scopesListCategoryInnerList");
235− tryCompare(favScopesListCategoryList, "currentIndex", 0);
229+ open_manage_dash();
236230
237231 // Click in second item
232+ var favScopesListCategoryList = findChild(findChild(dash, "scopesListCategoryfavorites"), "scopesListCategoryInnerList");
238233 favScopesListCategoryList.currentIndex = 1;
239234 mouseClick(favScopesListCategoryList.currentItem);
240235
241236 // Make sure animation went back
237+ var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
242238 tryCompare(bottomEdgeController, "progress", 0);
243239 var dashContentList = findChild(dash, "dashContentList");
244240 compare(dashContentList.currentIndex, 1);
245241 }
246242
247243 function test_manage_dash_select_non_favorite() {
248− // Show the manage dash
249− touchFlick(dash, dash.width / 2, dash.height - 1, dash.width / 2, units.gu(2));
250− var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
251− tryCompare(bottomEdgeController, "progress", 1);
244+ open_manage_dash();
245+
246+ // Ensure non favorites are visible
247+ flickToYEnd(findChild(dash,"scopesListFlickable"));
252248
253249 // Make sure stuff is loaded
254250 var nonfavScopesListCategory = findChild(dash, "scopesListCategoryother");
@@ -268,6 +264,7 @@ Item {
268264 tryCompare(dashTempScopeItem, "visible", true);
269265
270266 // Check the manage dash is gone
267+ var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
271268 tryCompare(bottomEdgeController, "progress", 0);
272269
273270 // Go back
@@ -296,6 +293,7 @@ Item {
296293 tryCompare(bottomEdgeController, "progress", 1);
297294
298295 // Go back
296+ var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
299297 var scopesList = findChild(dash, "scopesList");
300298 var scopesListPageHeader = findChild(scopesList, "pageHeader");
301299 var backButton = findChild(scopesListPageHeader, "innerPageHeader").leadingActionBar;
@@ -358,10 +356,7 @@ Item {
358356 }
359357
360358 function test_manage_dash_store_no_favorites() {
361− // Show the manage dash
362− touchFlick(dash, dash.width / 2, dash.height - 1, dash.width / 2, units.gu(2));
363− var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
364− tryCompare(bottomEdgeController, "progress", 1);
359+ open_manage_dash();
365360
366361 // clear the favorite scopes
367362 scopes.clearFavorites();
@@ -379,6 +374,7 @@ Item {
379374
380375 spy.wait();
381376 compare(spy.signalArguments[0][0], "scope://com.canonical.scopes.clickstore");
377+ var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
382378 tryCompare(bottomEdgeController, "progress", 0);
383379 }
384380
@@ -387,17 +383,10 @@ Item {
387383 compare(dashContentList.currentIndex, 0);
388384 compare(dashContentList.currentItem.scopeId, "MockScope1");
389385
390− // Show the manage dash
391− touchFlick(dash, dash.width / 2, dash.height - 1, dash.width / 2, units.gu(2));
392− var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
393− tryCompare(bottomEdgeController, "progress", 1);
394−
395− // Make sure stuff is loaded
396− var favScopesListCategory = findChild(dash, "scopesListCategoryfavorites");
397− var favScopesListCategoryList = findChild(favScopesListCategory, "scopesListCategoryInnerList");
398− tryCompare(favScopesListCategoryList, "currentIndex", 0);
386+ open_manage_dash();
399387
400388 // Enter edit mode
389+ var favScopesListCategoryList = findChild(findChild(dash, "scopesListCategoryfavorites"), "scopesListCategoryInnerList");
401390 var scopesList = findChild(dash, "scopesList");
402391 var clickScope = findChild(favScopesListCategoryList, "delegateclickscope");
403392 mousePress(clickScope);
@@ -408,6 +397,7 @@ Item {
408397 touchFlick(starArea, 0, 0, 0, -units.gu(10));
409398
410399 // Exit edit mode and go back
400+ var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
411401 var scopesList = findChild(dash, "scopesList");
412402 var scopesListPageHeader = findChild(scopesList, "pageHeader");
413403 var backButton = findChild(scopesListPageHeader, "innerPageHeader").leadingActionBar;
@@ -429,17 +419,10 @@ Item {
429419 compare(dashContentList.currentIndex, 0);
430420 compare(dashContentList.currentItem.scopeId, "MockScope1");
431421
432− // Show the manage dash
433− touchFlick(dash, dash.width / 2, dash.height - 1, dash.width / 2, units.gu(2));
434− var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
435− tryCompare(bottomEdgeController, "progress", 1);
436−
437− // Make sure stuff is loaded
438− var favScopesListCategory = findChild(dash, "scopesListCategoryfavorites");
439− var favScopesListCategoryList = findChild(favScopesListCategory, "scopesListCategoryInnerList");
440− tryCompare(favScopesListCategoryList, "currentIndex", 0);
422+ open_manage_dash();
441423
442424 // Enter edit mode
425+ var favScopesListCategoryList = findChild(findChild(dash, "scopesListCategoryfavorites"), "scopesListCategoryInnerList");
443426 var scopesList = findChild(dash, "scopesList");
444427 var clickScope = findChild(favScopesListCategoryList, "delegateclickscope");
445428 mousePress(clickScope);
@@ -459,6 +442,8 @@ Item {
459442 mouseClick(backButton);
460443
461444 // Click on third scope
445+ var favScopesListCategoryList = findChild(findChild(dash, "scopesListCategoryfavorites"), "scopesListCategoryInnerList");
446+ var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
462447 var mockScope5 = findChild(favScopesListCategoryList, "delegateMockScope5");
463448 waitForRendering(mockScope5)
464449 mouseClick(mockScope5);
@@ -472,14 +457,12 @@ Item {
472457 compare(dashContentList.currentIndex, 0);
473458 compare(dashContentList.currentItem.scopeId, "MockScope1");
474459
475− // Show the manage dash
476− touchFlick(dash, dash.width / 2, dash.height - 1, dash.width / 2, units.gu(2));
477− var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
478− tryCompare(bottomEdgeController, "progress", 1);
460+ open_manage_dash();
479461
480462 var dashCommunicatorService = findInvisibleChild(dash, "dashCommunicatorService");
481463 dashCommunicatorService.mockSetCurrentScope(1, true, false);
482464
465+ var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
483466 tryCompare(bottomEdgeController, "progress", 0);
484467 tryCompare(dashContentList, "currentIndex", 1)
485468 }
@@ -507,10 +490,10 @@ Item {
507490 }
508491
509492 function test_close_temp_scope_preview_opening_scope() {
510− // Show the manage dash
511− touchFlick(dash, dash.width / 2, dash.height - 1, dash.width / 2, units.gu(2));
512− var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
513− tryCompare(bottomEdgeController, "progress", 1);
493+ open_manage_dash();
494+
495+ // Ensure non favorite scopes are visible
496+ flickToYEnd(findChild(dash, "scopesListFlickable"));
514497
515498 // Make sure stuff is loaded
516499 var nonfavScopesListCategory = findChild(dash, "scopesListCategoryother");
@@ -530,6 +513,7 @@ Item {
530513 tryCompare(dashTempScopeItem, "visible", true);
531514
532515 // Check the manage dash is gone
516+ var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
533517 tryCompare(bottomEdgeController, "progress", 0);
534518
535519 // Open preview
@@ -580,12 +564,10 @@ Item {
580564 UriHandler.opened("scopes://clickscope");
581565 tryCompare(dashContentList, "currentIndex", 1);
582566
583− // Show the manage dash
584− touchFlick(dash, dash.width / 2, dash.height - 1, dash.width / 2, units.gu(2));
585− var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
586− tryCompare(bottomEdgeController, "progress", 1);
567+ open_manage_dash();
587568
588569 // UriHandler changes to a scope and closes the manage scopes
570+ var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
589571 UriHandler.opened("scopes://MockScope1");
590572 tryCompare(dashContentList, "currentIndex", 0);
591573 tryCompare(bottomEdgeController, "progress", 0);
@@ -603,11 +585,11 @@ Item {
603585 tryCompare(dashContent, "subPageShown", false);
604586
605587 // Go to a temp scope
606− touchFlick(dash, dash.width / 2, dash.height - 1, dash.width / 2, units.gu(2));
607− var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
608− tryCompare(bottomEdgeController, "progress", 1);
588+ open_manage_dash();
589+
609590 var nonfavScopesListCategory = findChild(dash, "scopesListCategoryother");
610591 var nonfavScopesListCategoryList = findChild(nonfavScopesListCategory, "scopesListCategoryInnerList");
592+ flickToYEnd(findChild(dash, "scopesListFlickable"));
611593 tryCompare(nonfavScopesListCategoryList, "currentIndex", 0);
612594 mouseClick(nonfavScopesListCategoryList.currentItem);
613595 var dashTempScopeItem = findChild(dash, "dashTempScopeItem");
@@ -666,12 +648,15 @@ Item {
666648 function test_tempScopeItemXOnResize()
667649 {
668650 // Go to a temp scope
669− touchFlick(dash, dash.width / 2, dash.height - 1, dash.width / 2, units.gu(2));
670− var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
671− tryCompare(bottomEdgeController, "progress", 1);
651+ open_manage_dash();
652+
672653 var nonfavScopesListCategory = findChild(dash, "scopesListCategoryother");
673654 var nonfavScopesListCategoryList = findChild(nonfavScopesListCategory, "scopesListCategoryInnerList");
655+ var scopesListFlickable = findChild(dash, "scopesListFlickable");
674656 tryCompare(nonfavScopesListCategoryList, "currentIndex", 0);
657+
658+ // Ensure the non-favorites, located at the bottom, are visible
659+ flickToYEnd(scopesListFlickable);
675660 mouseClick(nonfavScopesListCategoryList.currentItem);
676661 var dashTempScopeItem = findChild(dash, "dashTempScopeItem");
677662 tryCompare(dashTempScopeItem, "x", 0);
tests/qmltests/Dash/tst_DashContent.qml+7−1
@@ -70,7 +70,7 @@ Item {
7070 function loadScopes() {
7171 scopeLoadedSpy.clear();
7272 scopesModel.load();
73− tryCompare(scopeLoadedSpy, "count", 6, 15000);
73+ tryCompare(scopeLoadedSpy, "count", 8, 15000);
7474 tryCompare(scopesModel, "loaded", true);
7575 tryCompareFunction(function() {
7676 var mockScope1Loader = findChild(shell, "scopeLoader0");
@@ -610,6 +610,12 @@ Item {
610610 }
611611
612612 function test_noDelegateCreationDestructionOnMove() {
613+ // Go to scope 1 and back so that items are created
614+ // and so this test makes sense
615+ dashContent.setCurrentScopeAtIndex(1);
616+ waitForRendering(dashContent);
617+ dashContent.setCurrentScopeAtIndex(0);
618+
613619 // Our cards are of type AbstractButton as defined in CardCreator.js
614620 // This gives also other things that are not cards but for our purpose it
615621 // does not matter
tests/qmltests/Dash/tst_GenericScopeView.qml+7
@@ -76,6 +76,7 @@ Item {
7676 tryCompare(scopes, "loaded", true);
7777
7878 genericScopeView.scope = scopes.getScope(2);
79+ genericScopeView.isCurrent = true;
7980 shell.width = units.gu(120);
8081 genericScopeView.categoryView.positionAtBeginning();
8182 waitForRendering(genericScopeView.categoryView);
@@ -116,6 +117,7 @@ Item {
116117 }
117118
118119 function test_isActive() {
120+ genericScopeView.isCurrent = false
119121 tryCompare(genericScopeView.scope, "isActive", false)
120122 genericScopeView.isCurrent = true
121123 tryCompare(genericScopeView.scope, "isActive", true)
@@ -140,6 +142,7 @@ Item {
140142 }
141143
142144 function test_searchQuery() {
145+ genericScopeView.isCurrent = false
143146 genericScopeView.scope = scopes.getScope(0);
144147 genericScopeView.scope.searchQuery = "test";
145148 genericScopeView.scope = scopes.getScope(1);
@@ -151,6 +154,7 @@ Item {
151154 }
152155
153156 function test_changeScope() {
157+ genericScopeView.isCurrent = false;
154158 genericScopeView.scope.searchQuery = "test"
155159 var originalScopeId = genericScopeView.scope.id;
156160 genericScopeView.scope = scopes.getScope(originalScopeId + 1)
@@ -458,6 +462,7 @@ Item {
458462 function test_seeAllTwoCategoriesScenario1() {
459463 mockScope.setId("mockScope");
460464 mockScope.setName("Mock Scope");
465+ mockScope.isActive = true;
461466 mockScope.categories.setCount(2);
462467 mockScope.categories.resultModel(0).setResultCount(50);
463468 mockScope.categories.resultModel(1).setResultCount(25);
@@ -501,6 +506,7 @@ Item {
501506 function test_seeAllTwoCategoriesScenario2() {
502507 mockScope.setId("mockScope");
503508 mockScope.setName("Mock Scope");
509+ mockScope.isActive = true;
504510 mockScope.categories.setCount(2);
505511 mockScope.categories.resultModel(0).setResultCount(25);
506512 mockScope.categories.resultModel(1).setResultCount(50);
@@ -629,6 +635,7 @@ Item {
629635 var category0 = findChild(categoryListView, "dashCategory0");
630636 waitForRendering(category0);
631637
638+ tryCompareFunction(function() { return category0.item != null; }, true);
632639 var cardGrid = category0.item;
633640 compare(cardGrid.cardTool.template["non-interactive"], true);
634641
tests/qmltests/Greeter/TestView.qml+10−4
@@ -33,10 +33,11 @@ Item {
3333 property var infographicModel
3434 readonly property bool fullyShown: _fullyShown
3535 readonly property bool required: _required
36− readonly property bool animating: false
36+ readonly property bool animating: _animating
3737
3838 property bool _fullyShown: true
3939 property bool _required: true
40+ property bool _animating: true
4041
4142 signal selected(int index)
4243 signal responded(string response)
@@ -48,8 +49,9 @@ Item {
4849 signal _showPromptCalled(string text, bool isSecret, bool isDefaultPrompt)
4950 signal _showLastChanceCalled()
5051 signal _hideCalled()
51− signal _notifyAuthenticationSucceededCalled()
52+ signal _notifyAuthenticationSucceededCalled(bool showFakePassword)
5253 signal _notifyAuthenticationFailedCalled()
54+ signal _showErrorMessageCalled(string msg)
5355 signal _resetCalled()
5456 signal _tryToUnlockCalled(bool toTheRight)
5557
@@ -71,14 +73,18 @@ Item {
7173 _fullyShown = false;
7274 }
7375
74− function notifyAuthenticationSucceeded() {
75− _notifyAuthenticationSucceededCalled();
76+ function notifyAuthenticationSucceeded(showFakePassword) {
77+ _notifyAuthenticationSucceededCalled(showFakePassword);
7678 }
7779
7880 function notifyAuthenticationFailed() {
7981 _notifyAuthenticationFailedCalled();
8082 }
8183
84+ function showErrorMessage(msg) {
85+ _showErrorMessageCalled(msg);
86+ }
87+
8288 function reset() {
8389 _resetCalled();
8490 }
tests/qmltests/Greeter/tst_Greeter.qml+171
@@ -20,6 +20,7 @@ import ".."
2020import "../../../qml/Greeter"
2121import Ubuntu.Components 1.3
2222import AccountsService 0.1
23+import Biometryd 0.0
2324import GSettings 1.0
2425import LightDM.IntegratedLightDM 0.1 as LightDM // This is the mock
2526import Unity.Test 0.1 as UT
@@ -125,6 +126,12 @@ Item {
125126 signalName: "_notifyAuthenticationFailedCalled"
126127 }
127128
129+ SignalSpy {
130+ id: viewShowErrorMessageSpy
131+ target: testCase.view
132+ signalName: "_showErrorMessageCalled"
133+ }
134+
128135 SignalSpy {
129136 id: viewResetSpy
130137 target: testCase.view
@@ -145,12 +152,16 @@ Item {
145152 teaseSpy.clear();
146153 sessionStartedSpy.clear();
147154 activeChangedSpy.clear();
155+ Biometryd.available = true;
156+ AccountsService.enableFingerprintIdentification = true;
157+ AccountsService.failedFingerprintLogins = 0;
148158 viewShowMessageSpy.clear();
149159 viewShowPromptSpy.clear();
150160 viewShowLastChanceSpy.clear();
151161 viewHideSpy.clear();
152162 viewAuthenticationSucceededSpy.clear();
153163 viewAuthenticationFailedSpy.clear();
164+ viewShowErrorMessageSpy.clear();
154165 viewResetSpy.clear();
155166 viewTryToUnlockSpy.clear();
156167 resetLoader();
@@ -201,6 +212,14 @@ Item {
201212 compare(greeter.shown, false);
202213 }
203214
215+ function unlockAndShowGreeter() {
216+ // useful to enable "lockscreen mode" in greeter
217+ greeter.forcedUnlock = true;
218+ LightDM.Greeter.showGreeter();
219+ tryCompare(greeter, "waiting", false);
220+ view = findChild(greeter, "testView");
221+ }
222+
204223 function test_unlockPass() {
205224 selectUser("has-password");
206225 tryCompare(viewShowPromptSpy, "count", 1);
@@ -571,5 +590,157 @@ Item {
571590 resetLoader();
572591 verifySelected(LightDM.Users.data(0, LightDM.UserRoles.NameRole));
573592 }
593+
594+ function test_fingerprintSuccess() {
595+ var index = selectUser("has-password");
596+ unlockAndShowGreeter(); // turn on lockscreen mode
597+
598+ var biometryd = findInvisibleChild(greeter, "biometryd");
599+ verify(biometryd.operation);
600+ verify(biometryd.operation.running);
601+
602+ biometryd.operation.mockSuccess(LightDM.Users.data(index, LightDM.UserRoles.UidRole));
603+ verify(!greeter.active);
604+ }
605+
606+ function test_fingerprintFirstLoginDisabled() {
607+ var index = selectUser("has-password");
608+ // don't hide/show greeter, we want to test behavior before lockscreen mode is on
609+
610+ var biometryd = findInvisibleChild(greeter, "biometryd");
611+ verify(biometryd.operation);
612+ verify(biometryd.operation.running);
613+
614+ biometryd.operation.mockSuccess(LightDM.Users.data(index, LightDM.UserRoles.UidRole));
615+ compare(viewTryToUnlockSpy.count, 1);
616+ verify(greeter.locked);
617+ }
618+
619+ function test_forcedDisallowedFingerprint() {
620+ var index = selectUser("has-password");
621+ unlockAndShowGreeter(); // turn on lockscreen mode
622+
623+ var biometryd = findInvisibleChild(greeter, "biometryd");
624+ verify(biometryd.operation);
625+ verify(biometryd.operation.running);
626+
627+ greeter.allowFingerprint = false;
628+ verify(!biometryd.operation);
629+ }
630+
631+ function test_fingerprintFailureMessage() {
632+ var index = selectUser("has-password");
633+ unlockAndShowGreeter(); // turn on lockscreen mode
634+
635+ var biometryd = findInvisibleChild(greeter, "biometryd");
636+ verify(biometryd.operation);
637+ verify(biometryd.operation.running);
638+
639+ biometryd.operation.mockFailure("error");
640+ compare(viewShowErrorMessageSpy.count, 1);
641+ compare(viewShowErrorMessageSpy.signalArguments[0][0], i18n.tr("Try again"));
642+ }
643+
644+ function test_fingerprintTooManyFailures() {
645+ var index = selectUser("has-password");
646+ unlockAndShowGreeter(); // turn on lockscreen mode
647+
648+ var biometryd = findInvisibleChild(greeter, "biometryd");
649+ biometryd.operation.mockFailure("error");
650+ biometryd.operation.mockFailure("error");
651+ compare(viewTryToUnlockSpy.count, 0);
652+
653+ biometryd.operation.mockFailure("error");
654+ compare(viewTryToUnlockSpy.count, 1);
655+
656+ // Confirm that we are stuck in this mode until next login
657+ biometryd.operation.mockSuccess(LightDM.Users.data(index, LightDM.UserRoles.UidRole));
658+ compare(viewTryToUnlockSpy.count, 2);
659+
660+ unlockAndShowGreeter();
661+
662+ biometryd.operation.mockSuccess(LightDM.Users.data(index, LightDM.UserRoles.UidRole));
663+ verify(!greeter.active);
664+ }
665+
666+ function test_fingerprintFailureCountReset() {
667+ selectUser("has-password");
668+ unlockAndShowGreeter(); // turn on lockscreen mode
669+
670+ var biometryd = findInvisibleChild(greeter, "biometryd");
671+ biometryd.operation.mockFailure("error");
672+ biometryd.operation.mockFailure("error");
673+ compare(viewTryToUnlockSpy.count, 0);
674+
675+ unlockAndShowGreeter();
676+ biometryd.operation.mockFailure("error");
677+ biometryd.operation.mockFailure("error");
678+ compare(viewTryToUnlockSpy.count, 0);
679+
680+ biometryd.operation.mockFailure("error");
681+ compare(viewTryToUnlockSpy.count, 1);
682+ }
683+
684+ function test_fingerprintWrongUid() {
685+ selectUser("has-password");
686+ unlockAndShowGreeter(); // turn on lockscreen mode
687+
688+ var biometryd = findInvisibleChild(greeter, "biometryd");
689+ biometryd.operation.mockSuccess(0);
690+
691+ verify(greeter.active);
692+ compare(viewShowErrorMessageSpy.count, 1);
693+ compare(viewShowErrorMessageSpy.signalArguments[0][0], i18n.tr("Try again"));
694+ }
695+
696+ function test_fingerprintNotEnabled() {
697+ AccountsService.enableFingerprintIdentification = false;
698+ selectUser("has-password");
699+ unlockAndShowGreeter(); // turn on lockscreen mode
700+
701+ var biometryd = findInvisibleChild(greeter, "biometryd");
702+ verify(!biometryd.operation);
703+
704+ AccountsService.enableFingerprintIdentification = true;
705+ verify(biometryd.operation);
706+ verify(biometryd.operation.running);
707+
708+ AccountsService.enableFingerprintIdentification = false;
709+ verify(!biometryd.operation);
710+ }
711+
712+ function test_fingerprintReaderNotPresent() {
713+ Biometryd.available = false;
714+ selectUser("has-password");
715+ unlockAndShowGreeter(); // turn on lockscreen mode
716+
717+ verify(!Biometryd.available);
718+
719+ var biometryd = findInvisibleChild(greeter, "biometryd");
720+ verify(!biometryd.operation);
721+
722+ Biometryd.available = true;
723+ verify(biometryd.operation);
724+ verify(biometryd.operation.running);
725+
726+ Biometryd.available = false;
727+ verify(!biometryd.operation);
728+ }
729+
730+ function test_fingerprintGreeterNotActive() {
731+ selectUser("has-password");
732+ unlockAndShowGreeter(); // turn on lockscreen mode
733+
734+ var biometryd = findInvisibleChild(greeter, "biometryd");
735+ verify(biometryd.operation);
736+ verify(biometryd.operation.running);
737+
738+ greeter.hideNow();
739+ verify(!biometryd.operation);
740+
741+ greeter.showNow();
742+ verify(biometryd.operation);
743+ verify(biometryd.operation.running);
744+ }
574745 }
575746}
tests/qmltests/Greeter/tst_NarrowView.qml+22−1
@@ -128,7 +128,7 @@ Item {
128128 text: "Authenticated"
129129 onClicked: {
130130 if (successCheckBox.checked) {
131− loader.item.notifyAuthenticationSucceeded();
131+ loader.item.notifyAuthenticationSucceeded(fakePasswordCheckBox.checked);
132132 } else {
133133 loader.item.notifyAuthenticationFailed();
134134 }
@@ -140,6 +140,12 @@ Item {
140140 Label {
141141 text: "success"
142142 }
143+ CheckBox {
144+ id: fakePasswordCheckBox
145+ }
146+ Label {
147+ text: "fake password"
148+ }
143149 }
144150 Row {
145151 Button {
@@ -529,5 +535,20 @@ Item {
529535 mouseClick(coverPage, coverPage.width/2, coverPage.height - units.gu(2));
530536 verify(!coverPage.shown);
531537 }
538+
539+ function test_showErrorMessage() {
540+ var coverPage = findChild(view, "coverPage");
541+ var swipeHint = findChild(coverPage, "swipeHint");
542+ var errorMessageAnimation = findInvisibleChild(coverPage, "errorMessageAnimation");
543+
544+ view.showErrorMessage("hello");
545+ compare(swipeHint.text, "《 hello 》");
546+ verify(errorMessageAnimation.running);
547+ verify(swipeHint.opacityAnimation.running);
548+
549+ errorMessageAnimation.complete();
550+ swipeHint.opacityAnimation.complete();
551+ tryCompare(swipeHint, "text", "《 " + i18n.tr("Unlock") + " 》");
552+ }
532553 }
533554}
tests/qmltests/Greeter/tst_WideView.qml+1−1
@@ -170,7 +170,7 @@ StyledItem {
170170 text: "Authenticated"
171171 onClicked: {
172172 if (successCheckBox.checked) {
173− loader.item.notifyAuthenticationSucceeded();
173+ loader.item.notifyAuthenticationSucceeded(false);
174174 } else {
175175 loader.item.notifyAuthenticationFailed();
176176 }
tests/qmltests/Launcher/tst_Launcher.qml+23−3
@@ -1,5 +1,5 @@
11/*
2− * Copyright 2013-2014 Canonical Ltd.
2+ * Copyright 2013-2016 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
@@ -210,6 +210,11 @@ Rectangle {
210210 target: LauncherModel
211211 }
212212
213+ SignalSpy {
214+ id: clickThroughSpy
215+ target: clickThroughTester
216+ }
217+
213218 Item {
214219 id: fakeDismissTimer
215220 property bool running: false
@@ -231,6 +236,8 @@ Rectangle {
231236
232237 property Item launcher: launcherLoader.status === Loader.Ready ? launcherLoader.item : null
233238 function cleanup() {
239+ signalSpy.clear();
240+ clickThroughSpy.clear();
234241 launcherLoader.active = false;
235242 // Loader.status might be Loader.Null and Loader.item might be null but the Loader
236243 // item might still be alive. So if we set Loader.active back to true
@@ -925,7 +932,6 @@ Rectangle {
925932
926933 var quickListEntry = findChild(quickList, "quickListEntry" + data.index)
927934
928− signalSpy.clear();
929935 signalSpy.signalName = "quickListTriggered"
930936
931937 mouseClick(quickListEntry)
@@ -1218,7 +1224,6 @@ Rectangle {
12181224 launcher.openForKeyboardNavigation();
12191225 waitForRendering(launcher);
12201226
1221− signalSpy.clear();
12221227 signalSpy.signalName = "quickListTriggered"
12231228
12241229 keyClick(Qt.Key_Down); // Down to launcher item 0
@@ -1311,5 +1316,20 @@ Rectangle {
13111316 compare(surfacePipRepeater.model, Math.min(3, LauncherModel.get(i).surfaceCount))
13121317 }
13131318 }
1319+
1320+ function test_preventMouseEventsThru() {
1321+ dragLauncherIntoView();
1322+ var launcherPanel = findChild(launcher, "launcherPanel");
1323+ tryCompare(launcherPanel, "visible", true);
1324+
1325+ clickThroughSpy.signalName = "wheel";
1326+ mouseWheel(launcherPanel, launcherPanel.width/2, launcherPanel.height/2, 10, 10);
1327+ tryCompare(clickThroughSpy, "count", 0);
1328+
1329+ clickThroughSpy.clear();
1330+ clickThroughSpy.signalName = "clicked";
1331+ mouseWheel(launcherPanel, launcherPanel.width/2, launcherPanel.height/2, Qt.RightButton);
1332+ tryCompare(clickThroughSpy, "count", 0);
1333+ }
13141334 }
13151335}
tests/qmltests/Panel/tst_IndicatorsMenu.qml+29−1
@@ -1,5 +1,5 @@
11/*
2− * Copyright 2013-2014 Canonical Ltd.
2+ * Copyright 2013-2016 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
@@ -27,6 +27,16 @@ IndicatorTest {
2727 width: units.gu(80)
2828 height: units.gu(71)
2929
30+ SignalSpy {
31+ id: clickThroughSpy
32+ target: clickThroughTester
33+ }
34+
35+ MouseArea {
36+ id: clickThroughTester
37+ anchors.fill: root
38+ }
39+
3040 RowLayout {
3141 anchors.fill: parent
3242 anchors.margins: units.gu(1)
@@ -112,6 +122,10 @@ IndicatorTest {
112122 indicatorsMenu.verticalVelocityThreshold = 0.5
113123 }
114124
125+ function cleanup() {
126+ clickThroughSpy.clear();
127+ }
128+
115129 function get_indicator_item(index) {
116130 var indicatorItem = findChild(indicatorsMenu, root.originalModelData[index]["identifier"] + "-panelItem");
117131 verify(indicatorItem !== null);
@@ -257,5 +271,19 @@ IndicatorTest {
257271
258272 touchRelease(indicatorsMenu, nextItemMappedPositionX, indicatorsMenu.openedHeight / 3);
259273 }
274+
275+ function test_preventMouseEventsThru() {
276+ indicatorsMenu.show();
277+ tryCompare(indicatorsMenu, "fullyOpened", true);
278+
279+ clickThroughSpy.signalName = "wheel";
280+ mouseWheel(indicatorsMenu, indicatorsMenu.width/2, indicatorsMenu.height/2, 10, 10);
281+ tryCompare(clickThroughSpy, "count", 0);
282+
283+ clickThroughSpy.clear();
284+ clickThroughSpy.signalName = "clicked";
285+ mouseClick(indicatorsMenu, indicatorsMenu.width/2, indicatorsMenu.height/2, Qt.RightButton);
286+ tryCompare(clickThroughSpy, "count", 0);
287+ }
260288 }
261289}
tests/qmltests/Stages/tst_DesktopStage.qml+135
@@ -89,6 +89,13 @@ Item {
8989 topLevelSurfaceList: topSurfaceList
9090 }
9191 }
92+
93+ MouseArea {
94+ id: clickThroughTester
95+ anchors.fill: desktopStageLoader.item
96+ acceptedButtons: Qt.AllButtons
97+ hoverEnabled: true
98+ }
9299 }
93100
94101 Rectangle {
@@ -140,6 +147,11 @@ Item {
140147 }
141148 }
142149
150+ SignalSpy {
151+ id: mouseEaterSpy
152+ target: clickThroughTester
153+ }
154+
143155 UnityTestCase {
144156 id: testCase
145157 name: "DesktopStage"
@@ -179,6 +191,7 @@ Item {
179191 desktopStageLoader.active = true;
180192 tryCompare(desktopStageLoader, "status", Loader.Ready);
181193
194+ mouseEaterSpy.clear();
182195 }
183196
184197 function waitUntilAppSurfaceShowsUp(surfaceId) {
@@ -504,6 +517,33 @@ Item {
504517 tryCompare(MirFocusController, "focusedSurface", null); // verify still no surface is focused
505518 }
506519
520+ function test_oskDisplacesWindow_data() {
521+ return [
522+ {tag: "no need to displace", windowHeight: units.gu(10), windowY: units.gu(5), targetDisplacement: units.gu(5)},
523+ {tag: "displace to top", windowHeight: units.gu(50), windowY: units.gu(10), targetDisplacement: PanelState.panelHeight},
524+ {tag: "displace a bit", windowHeight: units.gu(40), windowY: units.gu(10), targetDisplacement: (root.height / 2) - units.gu(40)},
525+ ]
526+ }
527+
528+ function test_oskDisplacesWindow(data) {
529+ var dashAppDelegate = startApplication("unity8-dash");
530+ var oldOSKState = SurfaceManager.inputMethodSurface.state;
531+ SurfaceManager.inputMethodSurface.state = Mir.RestoredState;
532+ verify(dashAppDelegate);
533+ dashAppDelegate.requestedHeight = data.windowHeight;
534+ dashAppDelegate.requestedY = data.windowY;
535+ UbuntuKeyboardInfo.height = 0;
536+ var initialY = dashAppDelegate.y;
537+ verify(initialY > PanelState.panelHeight);
538+
539+ UbuntuKeyboardInfo.height = root.height / 2;
540+ tryCompare(dashAppDelegate, "y", data.targetDisplacement);
541+
542+ UbuntuKeyboardInfo.height = 0;
543+ tryCompare(dashAppDelegate, "y", initialY);
544+ SurfaceManager.inputMethodSurface.state = oldOSKState;
545+ }
546+
507547 function test_minimizeApplicationHidesSurface() {
508548 compare(topSurfaceList.applicationAt(0).appId, "unity8-dash");
509549 var dashSurface = topSurfaceList.surfaceAt(0);
@@ -677,5 +717,100 @@ Item {
677717 var closeButton = findChild(dashAppDelegate, "closeWindowButton");
678718 tryCompare(closeButton, "visible", false);
679719 }
720+
721+ function test_hideMaximizeButtonWhenSizeConstrained() {
722+ var dialerDelegate = startApplication("dialer-app");
723+
724+ var dialerMaximizeButton = findChild(dialerDelegate, "maximizeWindowButton");
725+ tryCompare(dialerMaximizeButton, "visible", true);
726+
727+ // add size restrictions, smaller than our stage
728+ dialerDelegate.surface.setMaximumWidth(40);
729+ dialerDelegate.surface.setMaximumHeight(30);
730+ tryCompare(dialerMaximizeButton, "visible", false);
731+
732+ // try double clicking the decoration, shouldn't maximize it
733+ var sizeBefore = Qt.size(dialerDelegate.width, dialerDelegate.height);
734+ var deco = findChild(dialerDelegate, "appWindowDecoration");
735+ verify(deco);
736+ tryCompare(deco, "maximizeButtonShown", false);
737+ mouseDoubleClick(deco);
738+ var sizeAfter = Qt.size(dialerDelegate.width, dialerDelegate.height);
739+ tryCompareFunction(function(){ return sizeBefore; }, sizeAfter);
740+
741+ // remove restrictions, the maximize button should again be visible
742+ dialerDelegate.surface.setMaximumWidth(0);
743+ dialerDelegate.surface.setMaximumHeight(0);
744+ tryCompare(dialerMaximizeButton, "visible", true);
745+ }
746+
747+ function test_canMoveWindowWithLeftMouseButtonOnly_data() {
748+ return [
749+ {tag: "left mouse button", button: Qt.LeftButton },
750+ {tag: "right mouse button", button: Qt.RightButton },
751+ {tag: "middle mouse button", button: Qt.MiddleButton }
752+ ]
753+ }
754+
755+ function test_canMoveWindowWithLeftMouseButtonOnly(data) {
756+ var appDelegate = startApplication("dialer-app");
757+ verify(appDelegate);
758+
759+ var posBefore = Qt.point(appDelegate.x, appDelegate.y);
760+
761+ mousePress(appDelegate, appDelegate.width / 2, units.gu(1), data.button);
762+ mouseMove(appDelegate, appDelegate.width / 2, -units.gu(100), undefined /* delay */, data.button);
763+
764+ var posAfter = Qt.point(appDelegate.x, appDelegate.y);
765+
766+ tryCompareFunction(function(){return posBefore == posAfter;}, data.button !== Qt.LeftButton ? true : false);
767+ }
768+
769+ function test_preventMouseEventsThruDesktopSpread() {
770+ var spread = findChild(desktopStage, "spread");
771+ verify(spread);
772+ spread.show();
773+ tryCompareFunction( function(){ return spread.ready }, true );
774+
775+ mouseEaterSpy.signalName = "wheel";
776+ mouseWheel(spread, spread.width/2, spread.height/2, 10, 10);
777+ tryCompare(mouseEaterSpy, "count", 0);
778+
779+ mouseEaterSpy.clear();
780+ mouseEaterSpy.signalName = "clicked";
781+ mouseClick(spread, spread.width/2, spread.height/2, Qt.RightButton);
782+ tryCompare(mouseEaterSpy, "count", 0);
783+
784+ spread.cancel();
785+ }
786+
787+ function test_eatWindowDecorationMouseEvents_data() {
788+ return [
789+ {tag: "left mouse click", signalName: "clicked", button: Qt.LeftButton },
790+ {tag: "right mouse click", signalName: "clicked", button: Qt.RightButton },
791+ {tag: "middle mouse click", signalName: "clicked", button: Qt.MiddleButton },
792+ {tag: "mouse wheel", signalName: "wheel", button: Qt.MiddleButton },
793+ {tag: "double click (RMB)", signalName: "doubleClicked", button: Qt.RightButton },
794+ ]
795+ }
796+
797+ function test_eatWindowDecorationMouseEvents(data) {
798+ var dialerAppDelegate = startApplication("dialer-app");
799+ verify(dialerAppDelegate);
800+ var decoration = findChild(dialerAppDelegate, "appWindowDecoration");
801+ verify(decoration);
802+
803+ mouseEaterSpy.signalName = data.signalName;
804+ if (data.signalName === "wheel") {
805+ mouseWheel(decoration, decoration.width/2, decoration.height/2, 20, 20);
806+ } else if (data.signalName === "clicked") {
807+ mouseClick(decoration, decoration.width/2, decoration.height/2, data.button);
808+ } else {
809+ mouseDoubleClick(decoration, decoration.width/2, decoration.height/2, data.button);
810+ tryCompare(dialerAppDelegate, "maximized", false);
811+ }
812+
813+ tryCompare(mouseEaterSpy, "count", 0);
814+ }
680815 }
681816}
tests/qmltests/Stages/tst_TabletStage.qml+162−35
@@ -242,6 +242,48 @@ Rectangle {
242242 appWindow.width * 0.1, -appWindow.height / 2);
243243 }
244244
245+ function dragToSideStage(surfaceId) {
246+ sideStage.showNow();
247+ var targetAppDelegate = findChild(tabletStage, "spreadDelegate_" + surfaceId);
248+
249+ var pos = tabletStage.width - sideStage.width - (tabletStage.width - sideStage.width) / 2;
250+ var end_pos = tabletStage.width - sideStage.width / 2;
251+
252+ multiTouchDragUntil([0,1,2],
253+ tabletStage,
254+ pos,
255+ tabletStage.height / 2,
256+ units.gu(3),
257+ 0,
258+ function() {
259+ pos += units.gu(3);
260+ return sideStage.shown && !sideStage.showAnimation.running &&
261+ pos >= end_pos;
262+ });
263+ tryCompare(targetAppDelegate, "stage", ApplicationInfoInterface.SideStage);
264+ }
265+
266+ function dragToMainStage(surfaceId) {
267+ sideStage.showNow();
268+ var targetAppDelegate = findChild(tabletStage, "spreadDelegate_" + surfaceId);
269+ verify(targetAppDelegate);
270+
271+ var pos = tabletStage.width - sideStage.width / 2;
272+ var end_pos = tabletStage.width - sideStage.width - (tabletStage.width - sideStage.width) / 2;
273+
274+ multiTouchDragUntil([0,1,2],
275+ tabletStage,
276+ pos,
277+ tabletStage.height / 2,
278+ -units.gu(3),
279+ 0,
280+ function() {
281+ pos -= units.gu(3);
282+ return pos <= end_pos;
283+ });
284+ tryCompare(targetAppDelegate, "stage", ApplicationInfoInterface.MainStage);
285+ }
286+
245287 function test_tappingSwitchesFocusBetweenStages() {
246288 WindowStateStorage.saveStage(dialerCheckBox.appId, ApplicationInfoInterface.SideStage)
247289
@@ -493,14 +535,36 @@ Rectangle {
493535 function() { return sideStage.shown; });
494536 }
495537
496− function test_applicationLoadsInCorrectStage_data() {
538+ function test_applicationLoadsInDefaultStage_data() {
539+ return [
540+ { tag: "MainStage", appId: "webbrowser-app", mainStageAppId: "webbrowser-app", sideStageAppId: "" },
541+ { tag: "SideStage", appId: "dialer-app", mainStageAppId: "unity8-dash", sideStageAppId: "dialer-app" },
542+ ];
543+ }
544+
545+ function test_applicationLoadsInDefaultStage(data) {
546+ var stagesPriv = findInvisibleChild(tabletStage, "stagesPriv");
547+ verify(stagesPriv);
548+
549+ tryCompare(stagesPriv, "mainStageAppId", "unity8-dash");
550+ tryCompare(stagesPriv, "sideStageAppId", "");
551+
552+ var appSurfaceId = topSurfaceList.nextId;
553+ var app = ApplicationManager.startApplication(data.appId);
554+ waitUntilAppSurfaceShowsUp(appSurfaceId);
555+
556+ tryCompare(stagesPriv, "mainStageAppId", data.mainStageAppId);
557+ tryCompare(stagesPriv, "sideStageAppId", data.sideStageAppId);
558+ }
559+
560+ function test_applicationLoadsInSavedStage_data() {
497561 return [
498562 { tag: "MainStage", stage: ApplicationInfoInterface.MainStage, mainStageAppId: "webbrowser-app", sideStageAppId: ""},
499563 { tag: "SideStage", stage: ApplicationInfoInterface.SideStage, mainStageAppId: "unity8-dash", sideStageAppId: "webbrowser-app" },
500564 ];
501565 }
502566
503− function test_applicationLoadsInCorrectStage(data) {
567+ function test_applicationLoadsInSavedStage(data) {
504568 WindowStateStorage.saveStage(webbrowserCheckBox.appId, data.stage)
505569
506570 var stagesPriv = findInvisibleChild(tabletStage, "stagesPriv");
@@ -519,13 +583,13 @@ Rectangle {
519583
520584 function test_applicationSavesLastStage_data() {
521585 return [
522− { tag: "MainStage", stage: ApplicationInfoInterface.MainStage},
523− { tag: "SideStage", stage: ApplicationInfoInterface.SideStage},
586+ { tag: "MainStage", fromStage: ApplicationInfoInterface.MainStage, toStage: ApplicationInfoInterface.SideStage },
587+ { tag: "SideStage", fromStage: ApplicationInfoInterface.SideStage, toStage: ApplicationInfoInterface.MainStage },
524588 ];
525589 }
526590
527591 function test_applicationSavesLastStage(data) {
528− WindowStateStorage.saveStage(webbrowserCheckBox.appId, data.stage);
592+ WindowStateStorage.saveStage(webbrowserCheckBox.appId, data.fromStage);
529593 stageSaver.clear();
530594
531595 var stagesPriv = findInvisibleChild(tabletStage, "stagesPriv");
@@ -538,11 +602,15 @@ Rectangle {
538602 webbrowserCheckBox.checked = true;
539603 waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
540604
541− webbrowserCheckBox.checked = false;
605+ if (data.toStage === ApplicationInfoInterface.SideStage) {
606+ dragToSideStage(webbrowserSurfaceId);
607+ } else {
608+ dragToMainStage(webbrowserSurfaceId);
609+ }
542610
543611 tryCompare(stageSaver, "count", 1);
544612 compare(stageSaver.signalArguments[0][0], "webbrowser-app")
545− compare(stageSaver.signalArguments[0][1], data.stage)
613+ compare(stageSaver.signalArguments[0][1], data.toStage)
546614 }
547615
548616 function test_loadSideStageByDraggingFromMainStage() {
@@ -555,21 +623,10 @@ Rectangle {
555623 verify(appDelegate);
556624 compare(appDelegate.stage, ApplicationInfoInterface.MainStage);
557625
558− var pos = tabletStage.width - sideStage.width - (tabletStage.width - sideStage.width) / 2;
559− var end_pos = tabletStage.width - sideStage.width / 2;
560−
561− multiTouchDragUntil([0,1,2],
562− tabletStage,
563− pos,
564− tabletStage.height / 2,
565− units.gu(3),
566− 0,
567− function() {
568− pos += units.gu(3);
569− return sideStage.shown && !sideStage.showAnimation.running &&
570− pos >= end_pos;
571− });
626+ dragToSideStage(webbrowserSurfaceId);
572627
628+ var spreadView = findChild(tabletStageLoader, "spreadView")
629+ tryCompare(spreadView, "surfaceDragging", false);
573630 tryCompare(appDelegate, "stage", ApplicationInfoInterface.SideStage);
574631 }
575632
@@ -584,20 +641,10 @@ Rectangle {
584641 verify(appDelegate);
585642 compare(appDelegate.stage, ApplicationInfoInterface.SideStage);
586643
587− var pos = tabletStage.width - sideStage.width / 2;
588− var end_pos = tabletStage.width - sideStage.width - (tabletStage.width - sideStage.width) / 2;
589−
590− multiTouchDragUntil([0,1,2],
591− tabletStage,
592− pos,
593− tabletStage.height / 2,
594− -units.gu(3),
595− 0,
596− function() {
597− pos -= units.gu(3);
598− return pos <= end_pos;
599− });
644+ dragToMainStage(webbrowserSurfaceId);
600645
646+ var spreadView = findChild(tabletStageLoader, "spreadView")
647+ tryCompare(spreadView, "surfaceDragging", false);
601648 tryCompare(appDelegate, "stage", ApplicationInfoInterface.MainStage);
602649 }
603650
@@ -737,6 +784,22 @@ Rectangle {
737784
738785 tryCompare(appDelegate.surface, "activeFocus", true);
739786
787+ dragToSideStage(webbrowserSurfaceId);
788+
789+ var spreadView = findChild(tabletStageLoader, "spreadView")
790+ tryCompare(spreadView, "surfaceDragging", false);
791+ tryCompare(appDelegate.surface, "activeFocus", true);
792+ }
793+
794+ function test_dashDoesNotDragToSidestage() {
795+ sideStage.showNow();
796+ compare(topSurfaceList.applicationAt(0).appId, "unity8-dash");
797+ var dashSurfaceId = topSurfaceList.idAt(0);
798+
799+ var appDelegate = findChild(tabletStage, "spreadDelegate_" + dashSurfaceId);
800+ verify(appDelegate);
801+ compare(appDelegate.stage, ApplicationInfoInterface.MainStage);
802+
740803 var pos = tabletStage.width - sideStage.width - (tabletStage.width - sideStage.width) / 2;
741804 var end_pos = tabletStage.width - sideStage.width / 2;
742805
@@ -752,7 +815,71 @@ Rectangle {
752815 pos >= end_pos;
753816 });
754817
755− tryCompare(appDelegate.surface, "activeFocus", true);
818+ var spreadView = findChild(tabletStageLoader, "spreadView")
819+ tryCompare(spreadView, "surfaceDragging", false);
820+ tryCompare(appDelegate, "stage", ApplicationInfoInterface.MainStage);
756821 }
822+
823+ function test_switchStageOnRotation() {
824+ WindowStateStorage.saveStage(webbrowserCheckBox.appId, ApplicationInfoInterface.SideStage)
825+ var webbrowserSurfaceId = topSurfaceList.nextId;
826+ webbrowserCheckBox.checked = true;
827+ waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
828+
829+ var appDelegate = findChild(tabletStage, "spreadDelegate_" + webbrowserSurfaceId);
830+ verify(appDelegate);
831+ compare(appDelegate.stage, ApplicationInfoInterface.SideStage);
832+
833+ tabletStage.shellOrientation = Qt.PortraitOrientation;
834+ tryCompare(appDelegate, "stage", ApplicationInfoInterface.MainStage);
835+ }
836+
837+ function test_restoreOriginalStageOnRotation() {
838+ var webbrowserSurfaceId = topSurfaceList.nextId;
839+ webbrowserCheckBox.checked = true;
840+ waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
841+
842+ var appDelegate = findChild(tabletStage, "spreadDelegate_" + webbrowserSurfaceId);
843+ verify(appDelegate);
844+
845+ dragToSideStage(webbrowserSurfaceId);
846+
847+ // will be in sidestage now
848+ tabletStage.shellOrientation = Qt.PortraitOrientation;
849+ tryCompare(appDelegate, "stage", ApplicationInfoInterface.MainStage);
850+
851+ tabletStage.shellOrientation = Qt.LandscapeOrientation;
852+ tryCompare(appDelegate, "stage", ApplicationInfoInterface.SideStage);
853+ }
854+
855+ function test_restoreSavedStageOnCloseReopen() {
856+ var webbrowserSurfaceId = topSurfaceList.nextId;
857+ webbrowserCheckBox.checked = true;
858+ waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
859+
860+ var appDelegate = findChild(tabletStage, "spreadDelegate_" + webbrowserSurfaceId);
861+ verify(appDelegate);
862+
863+ dragToSideStage(webbrowserSurfaceId);
864+ // will be in sidestage now
865+ tabletStage.shellOrientation = Qt.PortraitOrientation;
866+ tryCompare(appDelegate, "stage", ApplicationInfoInterface.MainStage);
867+
868+ webbrowserCheckBox.checked = false;
869+ tryCompare(ApplicationManager, "count", 1);
870+
871+ // back to landscape
872+ tabletStage.shellOrientation = Qt.LandscapeOrientation;
873+
874+ webbrowserSurfaceId = topSurfaceList.nextId;
875+ webbrowserCheckBox.checked = true;
876+ waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
877+
878+ appDelegate = findChild(tabletStage, "spreadDelegate_" + webbrowserSurfaceId);
879+ verify(appDelegate);
880+ tryCompare(appDelegate, "stage", ApplicationInfoInterface.SideStage);
881+ }
882+
883+
757884 }
758885}
tests/qmltests/Stages/tst_WindowResizeArea.qml+36−34
@@ -44,8 +44,10 @@ Item {
4444 id: fakeWindow
4545 property alias resizeAreaMinWidth: windowResizeArea.minWidth
4646 property alias resizeAreaMinHeight: windowResizeArea.minHeight
47− x: units.gu(20)
48− y: units.gu(20)
47+ x: requestedX
48+ y: requestedY
49+ property real requestedX: units.gu(20)
50+ property real requestedY: units.gu(20)
4951 width: requestedWidth
5052 height: requestedHeight
5153 property real requestedWidth
@@ -226,8 +228,8 @@ Item {
226228 property var fakeWindow: windowLoader.item
227229
228230 function init() {
229− fakeWindow.x = units.gu(20)
230− fakeWindow.y = units.gu(20)
231+ fakeWindow.requestedX = units.gu(20)
232+ fakeWindow.requestedY = units.gu(20)
231233 fakeWindow.requestedWidth = units.gu(20)
232234 fakeWindow.requestedHeight = units.gu(20)
233235 fakeWindow.resizeAreaMinWidth = units.gu(15);
@@ -254,8 +256,8 @@ Item {
254256 }
255257
256258 function test_resizeWindowRightBottom(data) {
257− var initialWindowX = fakeWindow.x;
258− var initialWindowY = fakeWindow.y;
259+ var initialWindowX = fakeWindow.requestedX;
260+ var initialWindowY = fakeWindow.requestedY;
259261 var initialWindowWidth = fakeWindow.width
260262 var initialWindowHeight = fakeWindow.height
261263
@@ -266,8 +268,8 @@ Item {
266268 tryCompare(fakeWindow, "width", Math.max(initialWindowWidth + data.dx, fakeWindow.resizeAreaMinWidth));
267269 tryCompare(fakeWindow, "height", Math.max(initialWindowHeight + data.dy, fakeWindow.resizeAreaMinHeight));
268270
269− compare(fakeWindow.x, initialWindowX);
270− compare(fakeWindow.y, initialWindowY);
271+ compare(fakeWindow.requestedX, initialWindowX);
272+ compare(fakeWindow.requestedY, initialWindowY);
271273 }
272274
273275 function test_resizeWindowLeftTop_data() {
@@ -280,8 +282,8 @@ Item {
280282 }
281283
282284 function test_resizeWindowLeftTop(data) {
283− var initialWindowX = fakeWindow.x;
284− var initialWindowY = fakeWindow.y;
285+ var initialWindowX = fakeWindow.requestedX;
286+ var initialWindowY = fakeWindow.requestedY;
285287 var initialWindowWidth = fakeWindow.width
286288 var initialWindowHeight = fakeWindow.height
287289
@@ -294,13 +296,13 @@ Item {
294296
295297 var maxMoveX = initialWindowWidth - fakeWindow.resizeAreaMinWidth;
296298 var maxMoveY = initialWindowHeight - fakeWindow.resizeAreaMinHeight;
297− compare(fakeWindow.x, Math.min(initialWindowX + data.dx, initialWindowX + maxMoveX));
298− compare(fakeWindow.y, Math.min(initialWindowY + data.dy, initialWindowY + maxMoveY));
299+ compare(fakeWindow.requestedX, Math.min(initialWindowX + data.dx, initialWindowX + maxMoveX));
300+ compare(fakeWindow.requestedY, Math.min(initialWindowY + data.dy, initialWindowY + maxMoveY));
299301 }
300302
301303 function test_saveRestoreSize() {
302− var initialWindowX = fakeWindow.x;
303− var initialWindowY = fakeWindow.y;
304+ var initialWindowX = fakeWindow.requestedX;
305+ var initialWindowY = fakeWindow.requestedY;
304306 var initialWindowWidth = fakeWindow.width
305307 var initialWindowHeight = fakeWindow.height
306308
@@ -332,8 +334,8 @@ Item {
332334 }
333335
334336 function test_resizeSmallerAndLarger(data) {
335− var initialWindowX = fakeWindow.x;
336− var initialWindowY = fakeWindow.y;
337+ var initialWindowX = fakeWindow.requestedX;
338+ var initialWindowY = fakeWindow.requestedY;
337339 var initialWindowWidth = fakeWindow.width
338340 var initialWindowHeight = fakeWindow.height
339341
@@ -348,18 +350,18 @@ Item {
348350 }
349351
350352 function test_saveRestoreMaximized() {
351− var initialWindowX = fakeWindow.x;
352− var initialWindowY = fakeWindow.y;
353+ var initialWindowX = fakeWindow.requestedX;
354+ var initialWindowY = fakeWindow.requestedY;
353355
354356 var moveDelta = units.gu(5);
355357
356− fakeWindow.x = initialWindowX + moveDelta
357− fakeWindow.y = initialWindowY + moveDelta
358+ fakeWindow.requestedX = initialWindowX + moveDelta
359+ fakeWindow.requestedY = initialWindowY + moveDelta
358360
359361 // Now change the state to maximized. The window should not keep updating the stored values
360362 fakeWindow.maximize()
361− fakeWindow.x = 31415 // 0 is too risky to pass the test even when broken
362− fakeWindow.y = 31415
363+ fakeWindow.requestedX = 31415 // 0 is too risky to pass the test even when broken
364+ fakeWindow.requestedY = 31415
363365
364366 // This will destroy the window and recreate it
365367 windowLoader.active = false;
@@ -389,8 +391,8 @@ Item {
389391 }
390392
391393 function test_restoreMovesIntoBounds(data) {
392− fakeWindow.x = data.x;
393− fakeWindow.y = data.y;
394+ fakeWindow.requestedX = data.x;
395+ fakeWindow.requestedY = data.y;
394396 fakeWindow.width = data.w;
395397 fakeWindow.height = data.h;
396398 waitForRendering(root);
@@ -402,10 +404,10 @@ Item {
402404 waitForRendering(root)
403405
404406 // Make sure it's again where we left it in normal state before destroying
405− compare(fakeWindow.x >= 0, true)
406− compare(fakeWindow.y >= PanelState.panelHeight, true)
407− compare(fakeWindow.x + fakeWindow.width <= root.width, true)
408− compare(fakeWindow.y + fakeWindow.height <= root.height, true)
407+ compare(fakeWindow.requestedX >= 0, true)
408+ compare(fakeWindow.requestedY >= PanelState.panelHeight, true)
409+ compare(fakeWindow.requestedX + fakeWindow.width <= root.width, true)
410+ compare(fakeWindow.requestedY + fakeWindow.height <= root.height, true)
409411
410412 waitForRendering(root)
411413 }
@@ -417,8 +419,8 @@ Item {
417419 and height) increment value.
418420 */
419421 function test_sizeIncrement() {
420− var initialWindowX = fakeWindow.x;
421− var initialWindowY = fakeWindow.y;
422+ var initialWindowX = fakeWindow.requestedX;
423+ var initialWindowY = fakeWindow.requestedY;
422424 var initialWindowWidth = fakeWindow.width
423425 var initialWindowHeight = fakeWindow.height
424426
@@ -448,8 +450,8 @@ Item {
448450 Tests that when dragging a window border you cannot make it bigger than its maximum size
449451 */
450452 function test_maximumSize() {
451− fakeWindow.x = units.gu(1);
452− fakeWindow.y = units.gu(1);
453+ fakeWindow.requestedX = units.gu(1);
454+ fakeWindow.requestedY = units.gu(1);
453455 fakeWindow.resizeAreaMinWidth = 1; // so it does not interfere with anything
454456 fakeWindow.resizeAreaMinHeight = 1; // so it does not interfere with anything
455457 fakeWindow.requestedWidth = units.gu(10);
@@ -478,8 +480,8 @@ Item {
478480 Tests that when dragging a window border you cannot make it smaller than its minimum size
479481 */
480482 function test_minimumSize() {
481− fakeWindow.x = units.gu(1);
482− fakeWindow.y = units.gu(1);
483+ fakeWindow.requestedX = units.gu(1);
484+ fakeWindow.requestedY = units.gu(1);
483485 fakeWindow.resizeAreaMinWidth = 1; // so it does not interfere with anything
484486 fakeWindow.resizeAreaMinHeight = 1; // so it does not interfere with anything
485487 fakeWindow.requestedWidth = units.gu(20);
tests/qmltests/UnityLogo.png

Binary file not shown.

tests/qmltests/tst_OrientedShell.qml+53−44
@@ -503,39 +503,37 @@ Rectangle {
503503 function test_appSupportingOnlyPrimaryOrientationMakesPhoneShellStayPut() {
504504 loadShell("mako");
505505
506− var spreadRepeater = findChild(shell, "spreadRepeater");
507− verify(spreadRepeater);
508−
509− // unity8-dash supports only primary orientation and should be already running
510− compare(spreadRepeater.count, 1);
511− var dashDelegate = spreadRepeater.itemAt(0);
512− var dashApp = dashDelegate.application;
513− verify(dashApp);
514− compare(dashApp.appId, "unity8-dash");
515− var dashAppWindow = findChild(dashDelegate, "appWindow");
516− verify(dashAppWindow);
517− compare(dashDelegate.focus, true);
518− compare(dashApp.rotatesWindowContents, false);
519− compare(dashApp.supportedOrientations, Qt.PrimaryOrientation);
520− compare(dashApp.stage, ApplicationInfoInterface.MainStage);
521−
522− tryCompareFunction(function(){return dashDelegate.surface != null;}, true);
523− verify(checkAppSurfaceOrientation(dashAppWindow, dashApp, root.primaryOrientationAngle));
506+ var primarySurfaceId = topLevelSurfaceList.nextId;
507+ var primaryApp = ApplicationManager.startApplication("primary-oriented-app");
508+ verify(primaryApp);
509+ waitUntilAppWindowIsFullyLoaded(primarySurfaceId);
510+
511+ var primaryAppWindow = findAppWindowForSurfaceId(primarySurfaceId);
512+ verify(primaryAppWindow)
513+ var primaryDelegate = findChild(shell, "spreadDelegate_" + primarySurfaceId);
514+
515+ compare(primaryDelegate.focus, true);
516+ compare(primaryApp.rotatesWindowContents, false);
517+ compare(primaryApp.supportedOrientations, Qt.PrimaryOrientation);
518+ compare(primaryApp.stage, ApplicationInfoInterface.MainStage);
519+
520+ tryCompareFunction(function(){return primaryDelegate.surface != null;}, true);
521+ verify(checkAppSurfaceOrientation(primaryAppWindow, primaryApp, root.primaryOrientationAngle));
524522
525523 compare(shell.transformRotationAngle, root.primaryOrientationAngle);
526524 rotateTo(90);
527525
528− verify(checkAppSurfaceOrientation(dashAppWindow, dashApp, root.primaryOrientationAngle));
526+ verify(checkAppSurfaceOrientation(primaryAppWindow, primaryApp, root.primaryOrientationAngle));
529527 compare(shell.transformRotationAngle, root.primaryOrientationAngle);
530528
531529 rotateTo(180);
532530
533− verify(checkAppSurfaceOrientation(dashAppWindow, dashApp, root.primaryOrientationAngle));
531+ verify(checkAppSurfaceOrientation(primaryAppWindow, primaryApp, root.primaryOrientationAngle));
534532 compare(shell.transformRotationAngle, root.primaryOrientationAngle);
535533
536534 rotateTo(270);
537535
538− verify(checkAppSurfaceOrientation(dashAppWindow, dashApp, root.primaryOrientationAngle));
536+ verify(checkAppSurfaceOrientation(primaryAppWindow, primaryApp, root.primaryOrientationAngle));
539537 compare(shell.transformRotationAngle, root.primaryOrientationAngle);
540538 }
541539
@@ -548,37 +546,39 @@ Rectangle {
548546 function test_appSupportingOnlyPrimaryOrientationWillOnlyRotateInLandscape(data) {
549547 loadShell(data.deviceName);
550548
551− compare(topLevelSurfaceList.applicationAt(0).appId, "unity8-dash");
552− var dashSurfaceId = topLevelSurfaceList.idAt(0);
553− var dashAppWindow = findAppWindowForSurfaceId(dashSurfaceId);
549+ var primarySurfaceId = topLevelSurfaceList.nextId;
550+ var primaryApp = ApplicationManager.startApplication("primary-oriented-app");
551+ verify(primaryApp);
552+ waitUntilAppWindowIsFullyLoaded(primarySurfaceId);
554553
555− // unity8-dash supports only primary orientation and should be already running
554+ var primaryAppWindow = findAppWindowForSurfaceId(primarySurfaceId);
555+ verify(primaryAppWindow)
556556
557− compare(ApplicationManager.focusedApplicationId, "unity8-dash");
558− var dashApp = dashAppWindow.application;
559− verify(dashApp);
560− compare(dashApp.rotatesWindowContents, false);
561− compare(dashApp.supportedOrientations, Qt.PrimaryOrientation);
562− compare(dashApp.stage, ApplicationInfoInterface.MainStage);
557+ // primary-oriented-app supports only primary orientation
563558
564− tryCompareFunction(function(){return dashApp.surfaceList.count > 0;}, true);
559+ compare(ApplicationManager.focusedApplicationId, "primary-oriented-app");
560+ compare(primaryApp.rotatesWindowContents, false);
561+ compare(primaryApp.supportedOrientations, Qt.PrimaryOrientation);
562+ compare(primaryApp.stage, ApplicationInfoInterface.MainStage);
565563
566− tryCompareFunction(function(){return checkAppSurfaceOrientation(dashAppWindow, dashApp, root.primaryOrientationAngle)}, true);
564+ tryCompareFunction(function(){return primaryApp.surfaceList.count > 0;}, true);
565+
566+ tryCompareFunction(function(){return checkAppSurfaceOrientation(primaryAppWindow, primaryApp, root.primaryOrientationAngle)}, true);
567567 compare(shell.transformRotationAngle, root.primaryOrientationAngle);
568568
569569 rotateTo(90);
570570
571− tryCompareFunction(function(){return checkAppSurfaceOrientation(dashAppWindow, dashApp, root.primaryOrientationAngle)}, true);
571+ tryCompareFunction(function(){return checkAppSurfaceOrientation(primaryAppWindow, primaryApp, root.primaryOrientationAngle)}, true);
572572 compare(shell.transformRotationAngle, root.primaryOrientationAngle);
573573
574574 rotateTo(180);
575575
576− tryCompareFunction(function(){return checkAppSurfaceOrientation(dashAppWindow, dashApp, root.primaryOrientationAngle + 180)}, true);
576+ tryCompareFunction(function(){return checkAppSurfaceOrientation(primaryAppWindow, primaryApp, root.primaryOrientationAngle + 180)}, true);
577577 compare(shell.transformRotationAngle, root.primaryOrientationAngle + 180);
578578
579579 rotateTo(270);
580580
581− tryCompareFunction(function(){return checkAppSurfaceOrientation(dashAppWindow, dashApp, root.primaryOrientationAngle + 180)}, true);
581+ tryCompareFunction(function(){return checkAppSurfaceOrientation(primaryAppWindow, primaryApp, root.primaryOrientationAngle + 180)}, true);
582582 compare(shell.transformRotationAngle, root.primaryOrientationAngle + 180);
583583 }
584584
@@ -816,12 +816,13 @@ Rectangle {
816816 }
817817
818818 /*
819+ - launch an app that only supports the primary orientation
819820 - launch an app that supports all orientations, such as twitter-webapp
820821 - wait a bit until that app is considered to have finished initializing and is thus
821822 ready to get resized/rotated
822− - switch back to dash
823+ - switch back to previous app (only supporting primary
823824 - rotate device to 90 degrees
824− - Physical orientation is 90 but Shell orientation is kept at 0 because unity8-dash
825+ - Physical orientation is 90 but Shell orientation is kept at 0 because the app
825826 doesn't support such orientation
826827 - do a long right-edge drag to show the apps spread
827828 - tap on twitter-webapp
@@ -838,6 +839,13 @@ Rectangle {
838839 */
839840 function test_greeterStaysAwayAfterRotation() {
840841 loadShell("mako");
842+
843+ // Load an app which only supports primary
844+ var primarySurfaceId = topLevelSurfaceList.nextId;
845+ var primaryApp = ApplicationManager.startApplication("primary-oriented-app");
846+ verify(primaryApp);
847+ waitUntilAppWindowIsFullyLoaded(primarySurfaceId);
848+
841849 var twitterSurfaceId = topLevelSurfaceList.nextId;
842850 var twitterApp = ApplicationManager.startApplication("twitter-webapp");
843851 verify(twitterApp);
@@ -850,12 +858,11 @@ Rectangle {
850858 waitUntilAppWindowIsFullyLoaded(twitterSurfaceId);
851859 waitUntilAppWindowCanRotate(twitterSurfaceId);
852860
853− // go back to unity8-dash
861+ // go back to primary-oriented-app
854862 performEdgeSwipeToSwitchToPreviousApp();
855863
856864 rotateTo(90);
857865 wait(1); // spin the event loop to let all bindings do their thing
858− // should not rotat as unity8-dash doesn't support it
859866 tryCompare(shell, "transformRotationAngle", 0);
860867
861868 performEdgeSwipeToShowAppSpread();
@@ -1257,7 +1264,7 @@ Rectangle {
12571264 Regression test for https://bugs.launchpad.net/ubuntu/+source/unity8/+bug/1476757
12581265
12591266 Steps:
1260− 1- have a portrait-only app in foreground (eg unity8-dash)
1267+ 1- have a portrait-only app in foreground (eg primary-oriented-app)
12611268 2- launch or switch to some other application
12621269 3- right-edge swipe to show the apps spread
12631270 4- swipe up to close the current app (the one from step 2)
@@ -1275,8 +1282,10 @@ Rectangle {
12751282 function test_lockPhoneAfterClosingAppInSpreadThenUnlockAndRotate() {
12761283 loadShell("mako");
12771284
1278− compare(topLevelSurfaceList.applicationAt(0).appId, "unity8-dash");
1279− var dashSurfaceId = topLevelSurfaceList.idAt(0);
1285+ var primarySurfaceId = topLevelSurfaceList.nextId;
1286+ var primaryApp = ApplicationManager.startApplication("primary-oriented-app");
1287+ verify(primaryApp);
1288+ waitUntilAppWindowIsFullyLoaded(primarySurfaceId);
12801289
12811290 var gmailSurfaceId = topLevelSurfaceList.nextId;
12821291 var gmailApp = ApplicationManager.startApplication("gmail-webapp");
@@ -1298,7 +1307,7 @@ Rectangle {
12981307
12991308 swipeAwayGreeter();
13001309
1301− verify(isAppSurfaceFocused(dashSurfaceId))
1310+ verify(isAppSurfaceFocused(primarySurfaceId))
13021311
13031312 signalSpy.clear();
13041313 signalSpy.target = shell;
tests/qmltests/tst_Shell.qml+27
@@ -335,6 +335,33 @@ Rectangle {
335335 }
336336 }
337337
338+ Label {
339+ text: "Fingerprint"
340+ }
341+ Row {
342+ Button {
343+ text: "Success"
344+ onClicked: {
345+ var biometryd = testCase.findInvisibleChild(shellContainer, "biometryd");
346+ var uid = 0;
347+ for (var i = 0; i < LightDM.Users.count; i++) {
348+ if (LightDM.Users.data(i, LightDM.UserRoles.NameRole) == AccountsService.user) {
349+ uid = LightDM.Users.data(i, LightDM.UserRoles.UidRole);
350+ break;
351+ }
352+ }
353+ biometryd.operation.mockSuccess(uid);
354+ }
355+ }
356+
357+ Button {
358+ text: "Failure"
359+ onClicked: {
360+ var biometryd = testCase.findInvisibleChild(shellContainer, "biometryd");
361+ biometryd.operation.mockFailure("error");
362+ }
363+ }
364+ }
338365 }
339366 }
340367 }
tests/utils/modules/Unity/Test/CMakeLists.txt+5−1
@@ -5,10 +5,14 @@ add_definitions(-DQT_NO_KEYWORDS)
55pkg_check_modules(UBUNTUGESTURES REQUIRED UbuntuGestures)
66
77include_directories(
8+ ${CMAKE_SOURCE_DIR}/src
9+)
10+
11+include_directories(
12+ SYSTEM
813 ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
914 ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
1015 ${UBUNTUGESTURES_INCLUDE_DIRS}
11− ${CMAKE_SOURCE_DIR}/src
1216)
1317
1418set(UnityTestQML_SOURCES