on xenial help sign in
Merge from parent
53af655Michael Terry
build.sh+2−2
@@ -46,11 +46,11 @@ install_dependencies() {
46 qmenumodel-qml \
46 qmenumodel-qml \
47 qml-module-qtquick-layouts \
47 qml-module-qtquick-layouts \
48 qml-module-qtquick-xmllistmodel \
48 qml-module-qtquick-xmllistmodel \
49+ qml-module-ubuntu-components \
50+ qml-module-ubuntu-thumbnailer0.1 \
49 qtdeclarative5-gsettings1.0 \
51 qtdeclarative5-gsettings1.0 \
50− qtdeclarative5-ubuntu-ui-toolkit-plugin \
51 qtdeclarative5-ubuntu-settings-components \
52 qtdeclarative5-ubuntu-settings-components \
52 qtdeclarative5-ubuntu-telephony0.1 \
53 qtdeclarative5-ubuntu-telephony0.1 \
53− qtdeclarative5-ubuntu-thumbnailer0.1 \
54 qtdeclarative5-unity-notifications-plugin \
54 qtdeclarative5-unity-notifications-plugin \
55 qml-module-ubuntu-connectivity \
55 qml-module-ubuntu-connectivity \
56 ubuntu-mobile-icons \
56 ubuntu-mobile-icons \
data/unity8-dash.png

Binary file not shown.

data/unity8.conf+13
@@ -65,6 +65,19 @@ end script
65exec ${BINARY:-unity8} --mode=$MODE $ARGS
65exec ${BINARY:-unity8} --mode=$MODE $ARGS
66
66
67post-start script
67post-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+
68 initctl emit --no-wait indicator-services-start
81 initctl emit --no-wait indicator-services-start
69end script
82end script
70
83
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+
1unity8 (8.12+16.10.20160617-0ubuntu1) yakkety; urgency=medium
71unity8 (8.12+16.10.20160617-0ubuntu1) yakkety; urgency=medium
2
72
3 [ Michael Terry ]
73 [ Michael Terry ]
debian/control+9−7
@@ -45,11 +45,14 @@ Build-Depends: cmake,
45 python3-all:any,
45 python3-all:any,
46 python3-setuptools,
46 python3-setuptools,
47 qml-module-qt-labs-folderlistmodel,
47 qml-module-qt-labs-folderlistmodel,
48+ qml-module-qtmultimedia (>= 5.4.1-1ubuntu19~overlay2),
48 qml-module-qtquick-layouts,
49 qml-module-qtquick-layouts,
49 qml-module-qtquick-xmllistmodel,
50 qml-module-qtquick-xmllistmodel,
50 qml-module-qtquick2,
51 qml-module-qtquick2,
51 qml-module-qtsysteminfo,
52 qml-module-qtsysteminfo,
52 qml-module-qttest,
53 qml-module-qttest,
54+ qml-module-ubuntu-components (>= 1.3.1845) | qml-module-ubuntu-components-gles (>= 1.3.1845),
55+ qml-module-ubuntu-web,
53 qt5-default,
56 qt5-default,
54 qtbase5-dev (>= 5.4),
57 qtbase5-dev (>= 5.4),
55 qtbase5-dev-tools,
58 qtbase5-dev-tools,
@@ -57,11 +60,8 @@ Build-Depends: cmake,
57 qtdeclarative5-dev (>= 5.4),
60 qtdeclarative5-dev (>= 5.4),
58 qtdeclarative5-dev-tools,
61 qtdeclarative5-dev-tools,
59 qtdeclarative5-private-dev (>= 5.4),
62 qtdeclarative5-private-dev (>= 5.4),
60− qtdeclarative5-qtmultimedia-plugin (>= 5.4.1-1ubuntu19~overlay2),
61 qtdeclarative5-ubuntu-content1,
63 qtdeclarative5-ubuntu-content1,
62 qtdeclarative5-ubuntu-settings-components (>= 0.7),
64 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,
65 ttf-ubuntu-font-family,
65 ttf-ubuntu-font-family,
66Standards-Version: 3.9.4
66Standards-Version: 3.9.4
67Homepage: http://launchpad.net/unity
67Homepage: http://launchpad.net/unity
@@ -76,7 +76,7 @@ X-Ubuntu-Use-Langpack: yes
76Package: indicators-client
76Package: indicators-client
77Architecture: amd64 armhf i386
77Architecture: amd64 armhf i386
78Depends: qmenumodel-qml (>= 0.2.9),
78Depends: 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),
80 unity8 (= ${binary:Version}),
80 unity8 (= ${binary:Version}),
81 ${misc:Depends},
81 ${misc:Depends},
82 ${shlibs:Depends},
82 ${shlibs:Depends},
@@ -115,9 +115,11 @@ Depends: dmz-cursor-theme,
115 libcap2-bin,
115 libcap2-bin,
116 libglib2.0-bin,
116 libglib2.0-bin,
117 qmenumodel-qml (>= 0.2.9),
117 qmenumodel-qml (>= 0.2.9),
118+ qml-module-biometryd,
118 qml-module-qt-labs-folderlistmodel,
119 qml-module-qt-labs-folderlistmodel,
119 qml-module-qtquick-xmllistmodel,
120 qml-module-qtquick-xmllistmodel,
120 qml-module-qtsysteminfo,
121 qml-module-qtsysteminfo,
122+ qml-module-ubuntu-web,
121 qtdeclarative5-qtmir-plugin (>= 0.4.8),
123 qtdeclarative5-qtmir-plugin (>= 0.4.8),
122 qtdeclarative5-ubuntu-telephony0.1,
124 qtdeclarative5-ubuntu-telephony0.1,
123 qtdeclarative5-ubuntu-web-plugin,
125 qtdeclarative5-ubuntu-web-plugin,
@@ -144,9 +146,9 @@ Description: Unity 8 shell
144Package: unity8-common
146Package: unity8-common
145Architecture: all
147Architecture: all
146Depends: qml-module-qtquick-layouts,
148Depends: 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,
147 qtdeclarative5-ubuntu-settings-components (>= 0.7),
151 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),
150 qtdeclarative5-unity-notifications-plugin (>= 0.1.2) | unity-notifications-impl,
152 qtdeclarative5-unity-notifications-plugin (>= 0.1.2) | unity-notifications-impl,
151 ubuntu-thumbnailer-impl-0,
153 ubuntu-thumbnailer-impl-0,
152 unity-application-impl-17,
154 unity-application-impl-17,
@@ -205,7 +207,7 @@ Package: unity8-private
205Architecture: any
207Architecture: any
206Multi-Arch: same
208Multi-Arch: same
207Pre-Depends: ${misc:Pre-Depends},
209Pre-Depends: ${misc:Pre-Depends},
208−Depends: accountsservice-ubuntu-schemas (>= 0.0.5),
210+Depends: accountsservice-ubuntu-schemas (>= 0.0.7),
209 gsettings-ubuntu-schemas (>= 0.0.2+14.10.20140815),
211 gsettings-ubuntu-schemas (>= 0.0.2+14.10.20140815),
210 libhardware2,
212 libhardware2,
211 pay-service,
213 pay-service,
plugins/AccountsService/AccountsService.cpp+21−1
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2013, 2015 Canonical, Ltd.
2+ * Copyright (C) 2013-2016 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
@@ -36,8 +36,10 @@
36#define PROP_DEMO_EDGES QStringLiteral("demo-edges")
36#define PROP_DEMO_EDGES QStringLiteral("demo-edges")
37#define PROP_DEMO_EDGES_COMPLETED QStringLiteral("DemoEdgesCompleted")
37#define PROP_DEMO_EDGES_COMPLETED QStringLiteral("DemoEdgesCompleted")
38#define PROP_EMAIL QStringLiteral("Email")
38#define PROP_EMAIL QStringLiteral("Email")
39+#define PROP_ENABLE_FINGERPRINT_IDENTIFICATION QStringLiteral("EnableFingerprintIdentification")
39#define PROP_ENABLE_INDICATORS_WHILE_LOCKED QStringLiteral("EnableIndicatorsWhileLocked")
40#define PROP_ENABLE_INDICATORS_WHILE_LOCKED QStringLiteral("EnableIndicatorsWhileLocked")
40#define PROP_ENABLE_LAUNCHER_WHILE_LOCKED QStringLiteral("EnableLauncherWhileLocked")
41#define PROP_ENABLE_LAUNCHER_WHILE_LOCKED QStringLiteral("EnableLauncherWhileLocked")
42+#define PROP_FAILED_FINGERPRINT_LOGINS QStringLiteral("FailedFingerprintLogins")
41#define PROP_FAILED_LOGINS QStringLiteral("FailedLogins")
43#define PROP_FAILED_LOGINS QStringLiteral("FailedLogins")
42#define PROP_INPUT_SOURCES QStringLiteral("InputSources")
44#define PROP_INPUT_SOURCES QStringLiteral("InputSources")
43#define PROP_LICENSE_ACCEPTED QStringLiteral("LicenseAccepted")
45#define PROP_LICENSE_ACCEPTED QStringLiteral("LicenseAccepted")
@@ -93,12 +95,14 @@ AccountsService::AccountsService(QObject* parent, const QString &user)
93 registerProperty(IFACE_ACCOUNTS_USER, PROP_INPUT_SOURCES, QStringLiteral("keymapsChanged"));
95 registerProperty(IFACE_ACCOUNTS_USER, PROP_INPUT_SOURCES, QStringLiteral("keymapsChanged"));
94 registerProperty(IFACE_LOCATION_HERE, PROP_LICENSE_ACCEPTED, QStringLiteral("hereEnabledChanged"));
96 registerProperty(IFACE_LOCATION_HERE, PROP_LICENSE_ACCEPTED, QStringLiteral("hereEnabledChanged"));
95 registerProperty(IFACE_LOCATION_HERE, PROP_LICENSE_BASE_PATH, QStringLiteral("hereLicensePathChanged"));
97 registerProperty(IFACE_LOCATION_HERE, PROP_LICENSE_BASE_PATH, QStringLiteral("hereLicensePathChanged"));
98+ registerProperty(IFACE_UBUNTU_SECURITY, PROP_ENABLE_FINGERPRINT_IDENTIFICATION, QStringLiteral("enableFingerprintIdentificationChanged"));
96 registerProperty(IFACE_UBUNTU_SECURITY, PROP_ENABLE_LAUNCHER_WHILE_LOCKED, QStringLiteral("enableLauncherWhileLockedChanged"));
99 registerProperty(IFACE_UBUNTU_SECURITY, PROP_ENABLE_LAUNCHER_WHILE_LOCKED, QStringLiteral("enableLauncherWhileLockedChanged"));
97 registerProperty(IFACE_UBUNTU_SECURITY, PROP_ENABLE_INDICATORS_WHILE_LOCKED, QStringLiteral("enableIndicatorsWhileLockedChanged"));
100 registerProperty(IFACE_UBUNTU_SECURITY, PROP_ENABLE_INDICATORS_WHILE_LOCKED, QStringLiteral("enableIndicatorsWhileLockedChanged"));
98 registerProperty(IFACE_UBUNTU_SECURITY, PROP_PASSWORD_DISPLAY_HINT, QStringLiteral("passwordDisplayHintChanged"));
101 registerProperty(IFACE_UBUNTU_SECURITY, PROP_PASSWORD_DISPLAY_HINT, QStringLiteral("passwordDisplayHintChanged"));
99 registerProperty(IFACE_UBUNTU_SECURITY_OLD, PROP_STATS_WELCOME_SCREEN, QStringLiteral("statsWelcomeScreenChanged"));
102 registerProperty(IFACE_UBUNTU_SECURITY_OLD, PROP_STATS_WELCOME_SCREEN, QStringLiteral("statsWelcomeScreenChanged"));
100 registerProperty(IFACE_UNITY, PROP_DEMO_EDGES, QStringLiteral("demoEdgesChanged"));
103 registerProperty(IFACE_UNITY, PROP_DEMO_EDGES, QStringLiteral("demoEdgesChanged"));
101 registerProperty(IFACE_UNITY, PROP_DEMO_EDGES_COMPLETED, QStringLiteral("demoEdgesCompletedChanged"));
104 registerProperty(IFACE_UNITY, PROP_DEMO_EDGES_COMPLETED, QStringLiteral("demoEdgesCompletedChanged"));
105+ registerProperty(IFACE_UNITY_PRIVATE, PROP_FAILED_FINGERPRINT_LOGINS, QStringLiteral("failedFingerprintLoginsChanged"));
102 registerProperty(IFACE_UNITY_PRIVATE, PROP_FAILED_LOGINS, QStringLiteral("failedLoginsChanged"));
106 registerProperty(IFACE_UNITY_PRIVATE, PROP_FAILED_LOGINS, QStringLiteral("failedLoginsChanged"));
103
107
104 registerProxy(IFACE_UBUNTU_INPUT, PROP_MOUSE_CURSOR_SPEED,
108 registerProxy(IFACE_UBUNTU_INPUT, PROP_MOUSE_CURSOR_SPEED,
@@ -176,6 +180,12 @@ void AccountsService::markDemoEdgeCompleted(const QString &edge)
176 }
180 }
177}
181}
178
182
183+bool AccountsService::enableFingerprintIdentification() const
184+{
185+ auto value = getProperty(IFACE_UBUNTU_SECURITY, PROP_ENABLE_FINGERPRINT_IDENTIFICATION);
186+ return value.toBool();
187+}
188+
179bool AccountsService::enableLauncherWhileLocked() const
189bool AccountsService::enableLauncherWhileLocked() const
180{
190{
181 auto value = getProperty(IFACE_UBUNTU_SECURITY, PROP_ENABLE_LAUNCHER_WHILE_LOCKED);
191 auto value = getProperty(IFACE_UBUNTU_SECURITY, PROP_ENABLE_LAUNCHER_WHILE_LOCKED);
@@ -274,6 +284,16 @@ QStringList AccountsService::keymaps() const
274 return {QStringLiteral("us")};
284 return {QStringLiteral("us")};
275}
285}
276
286
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+
277uint AccountsService::failedLogins() const
297uint AccountsService::failedLogins() const
278{
298{
279 return getProperty(IFACE_UNITY_PRIVATE, PROP_FAILED_LOGINS).toUInt();
299 return getProperty(IFACE_UNITY_PRIVATE, PROP_FAILED_LOGINS).toUInt();
plugins/AccountsService/AccountsService.h+13−1
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2013, 2015 Canonical, Ltd.
2+ * Copyright (C) 2013-2016 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
@@ -41,6 +41,9 @@ class AccountsService: public QObject
41 Q_PROPERTY (QStringList demoEdgesCompleted
41 Q_PROPERTY (QStringList demoEdgesCompleted
42 READ demoEdgesCompleted
42 READ demoEdgesCompleted
43 NOTIFY demoEdgesCompletedChanged)
43 NOTIFY demoEdgesCompletedChanged)
44+ Q_PROPERTY (bool enableFingerprintIdentification
45+ READ enableFingerprintIdentification
46+ NOTIFY enableFingerprintIdentificationChanged)
44 Q_PROPERTY (bool enableLauncherWhileLocked
47 Q_PROPERTY (bool enableLauncherWhileLocked
45 READ enableLauncherWhileLocked
48 READ enableLauncherWhileLocked
46 NOTIFY enableLauncherWhileLockedChanged)
49 NOTIFY enableLauncherWhileLockedChanged)
@@ -60,6 +63,10 @@ class AccountsService: public QObject
60 READ failedLogins
63 READ failedLogins
61 WRITE setFailedLogins
64 WRITE setFailedLogins
62 NOTIFY failedLoginsChanged)
65 NOTIFY failedLoginsChanged)
66+ Q_PROPERTY (uint failedFingerprintLogins
67+ READ failedFingerprintLogins
68+ WRITE setFailedFingerprintLogins
69+ NOTIFY failedFingerprintLoginsChanged)
63 Q_PROPERTY(bool hereEnabled
70 Q_PROPERTY(bool hereEnabled
64 READ hereEnabled
71 READ hereEnabled
65 WRITE setHereEnabled
72 WRITE setHereEnabled
@@ -91,6 +98,7 @@ public:
91 void setDemoEdges(bool demoEdges);
98 void setDemoEdges(bool demoEdges);
92 QStringList demoEdgesCompleted() const;
99 QStringList demoEdgesCompleted() const;
93 Q_INVOKABLE void markDemoEdgeCompleted(const QString &edge);
100 Q_INVOKABLE void markDemoEdgeCompleted(const QString &edge);
101+ bool enableFingerprintIdentification() const;
94 bool enableLauncherWhileLocked() const;
102 bool enableLauncherWhileLocked() const;
95 bool enableIndicatorsWhileLocked() const;
103 bool enableIndicatorsWhileLocked() const;
96 QString backgroundFile() const;
104 QString backgroundFile() const;
@@ -98,6 +106,8 @@ public:
98 PasswordDisplayHint passwordDisplayHint() const;
106 PasswordDisplayHint passwordDisplayHint() const;
99 uint failedLogins() const;
107 uint failedLogins() const;
100 void setFailedLogins(uint failedLogins);
108 void setFailedLogins(uint failedLogins);
109+ uint failedFingerprintLogins() const;
110+ void setFailedFingerprintLogins(uint failedFingerprintLogins);
101 bool hereEnabled() const;
111 bool hereEnabled() const;
102 void setHereEnabled(bool enabled);
112 void setHereEnabled(bool enabled);
103 QString hereLicensePath() const;
113 QString hereLicensePath() const;
@@ -112,12 +122,14 @@ Q_SIGNALS:
112 void userChanged();
122 void userChanged();
113 void demoEdgesChanged();
123 void demoEdgesChanged();
114 void demoEdgesCompletedChanged();
124 void demoEdgesCompletedChanged();
125+ void enableFingerprintIdentificationChanged();
115 void enableLauncherWhileLockedChanged();
126 void enableLauncherWhileLockedChanged();
116 void enableIndicatorsWhileLockedChanged();
127 void enableIndicatorsWhileLockedChanged();
117 void backgroundFileChanged();
128 void backgroundFileChanged();
118 void statsWelcomeScreenChanged();
129 void statsWelcomeScreenChanged();
119 void passwordDisplayHintChanged();
130 void passwordDisplayHintChanged();
120 void failedLoginsChanged();
131 void failedLoginsChanged();
132+ void failedFingerprintLoginsChanged();
121 void hereEnabledChanged();
133 void hereEnabledChanged();
122 void hereLicensePathChanged();
134 void hereLicensePathChanged();
123 void realNameChanged();
135 void realNameChanged();
plugins/AccountsService/com.canonical.unity.AccountsService.xml+4
@@ -47,5 +47,9 @@
47 <annotation name="org.freedesktop.Accounts.DefaultValue" value="0"/>
47 <annotation name="org.freedesktop.Accounts.DefaultValue" value="0"/>
48 </property>
48 </property>
49
49
50+ <property name="FailedFingerprintLogins" type="u" access="readwrite">
51+ <annotation name="org.freedesktop.Accounts.DefaultValue" value="0"/>
52+ </property>
53+
50 </interface>
54 </interface>
51</node>
55</node>
plugins/Cursor/CMakeLists.txt+4
@@ -3,6 +3,10 @@ add_subdirectory(3rd_party)
3include_directories(
3include_directories(
4 ${CMAKE_CURRENT_SOURCE_DIR}
4 ${CMAKE_CURRENT_SOURCE_DIR}
5 ${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/xcursor
5 ${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/xcursor
6+)
7+
8+include_directories(
9+ SYSTEM
6 ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
10 ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
7)
11)
8
12
plugins/Cursor/Cursor.qml+26−11
@@ -16,6 +16,7 @@
16
16
17import QtQuick 2.4
17import QtQuick 2.4
18import Cursor 1.1
18import Cursor 1.1
19+import Powerd 0.1
19
20
20MousePointer {
21MousePointer {
21 id: mousePointer
22 id: mousePointer
@@ -26,19 +27,33 @@ MousePointer {
26 cursorName: mousePointer.cursorName
27 cursorName: mousePointer.cursorName
27 }
28 }
28
29
30+ Loader {
31+ active: mousePointer.visible && imageInfo.frameCount > 1
29− AnimatedSprite {
32+ sourceComponent: AnimatedSprite {
30− x: -imageInfo.hotspot.x
33+ x: -imageInfo.hotspot.x
31− y: -imageInfo.hotspot.y
34+ y: -imageInfo.hotspot.y
32− source: "image://cursor/" + mousePointer.themeName + "/" + mousePointer.cursorName
35+ source: "image://cursor/" + mousePointer.themeName + "/" + mousePointer.cursorName
33
36
34− interpolate: false
37+ interpolate: false
35
38
36− width: imageInfo.frameWidth
39+ width: imageInfo.frameWidth
37− height: imageInfo.frameHeight
40+ height: imageInfo.frameHeight
38
41
39− frameCount: imageInfo.frameCount
42+ frameCount: imageInfo.frameCount
40− frameDuration: imageInfo.frameDuration
43+ frameDuration: imageInfo.frameDuration
41− frameWidth: imageInfo.frameWidth
44+ frameWidth: imageInfo.frameWidth
42− frameHeight: imageInfo.frameHeight
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+ }
43 }
58 }
44}
59}
plugins/Cursor/MousePointer.cpp+5−5
@@ -52,17 +52,17 @@ void MousePointer::handleMouseEvent(ulong timestamp, QPointF movement, Qt::Mouse
52 if (newX < 0) {
52 if (newX < 0) {
53 Q_EMIT pushedLeftBoundary(qAbs(newX), buttons);
53 Q_EMIT pushedLeftBoundary(qAbs(newX), buttons);
54 newX = 0;
54 newX = 0;
55− } else if (newX > parentItem()->width()) {
55+ } else if (newX >= parentItem()->width()) {
56− Q_EMIT pushedRightBoundary(newX - parentItem()->width(), buttons);
56+ Q_EMIT pushedRightBoundary(newX - (parentItem()->width() - 1), buttons);
57− newX = parentItem()->width();
57+ newX = parentItem()->width() - 1;
58 }
58 }
59 setX(newX);
59 setX(newX);
60
60
61 qreal newY = y() + appliedMovement.y();
61 qreal newY = y() + appliedMovement.y();
62 if (newY < 0) {
62 if (newY < 0) {
63 newY = 0;
63 newY = 0;
64− } else if (newY > parentItem()->height()) {
64+ } else if (newY >= parentItem()->height()) {
65− newY = parentItem()->height();
65+ newY = parentItem()->height() - 1;
66 }
66 }
67 setY(newY);
67 setY(newY);
68
68
plugins/Dash/CMakeLists.txt+4
@@ -10,6 +10,10 @@ endif()
10include_directories(
10include_directories(
11 ${CMAKE_CURRENT_SOURCE_DIR}
11 ${CMAKE_CURRENT_SOURCE_DIR}
12 ${CMAKE_CURRENT_BINARY_DIR}
12 ${CMAKE_CURRENT_BINARY_DIR}
13+)
14+
15+include_directories(
16+ SYSTEM
13 ${Qt5Qml_PRIVATE_INCLUDE_DIRS}
17 ${Qt5Qml_PRIVATE_INCLUDE_DIRS}
14 ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
18 ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
15 ${Qt5V8_PRIVATE_INCLUDE_DIR}
19 ${Qt5V8_PRIVATE_INCLUDE_DIR}
plugins/Dash/abstractdashview.h+1−3
@@ -21,11 +21,9 @@
21
21
22class QAbstractItemModel;
22class QAbstractItemModel;
23class QQmlComponent;
23class QQmlComponent;
24−#pragma GCC diagnostic push
24+
25−#pragma GCC diagnostic ignored "-pedantic"
26#include <private/qqmldelegatemodel_p.h>
25#include <private/qqmldelegatemodel_p.h>
27#include <qqmlinfo.h>
26#include <qqmlinfo.h>
28−#pragma GCC diagnostic pop
29
27
30class AbstractDashView : public QQuickItem
28class AbstractDashView : public QQuickItem
31{
29{
plugins/Dash/graphics/music_progress_bg.png

Binary file not shown.

plugins/Dash/horizontaljournal.cpp+1−4
@@ -26,12 +26,9 @@
26#include "horizontaljournal.h"
26#include "horizontaljournal.h"
27
27
28#include <qqmlengine.h>
28#include <qqmlengine.h>
29−#pragma GCC diagnostic push
30−#pragma GCC diagnostic ignored "-pedantic"
31−#include <private/qqmldelegatemodel_p.h>
32#include <qqmlinfo.h>
29#include <qqmlinfo.h>
30+#include <private/qqmldelegatemodel_p.h>
33#include <private/qquickitem_p.h>
31#include <private/qquickitem_p.h>
34−#pragma GCC diagnostic pop
35
32
36HorizontalJournal::HorizontalJournal()
33HorizontalJournal::HorizontalJournal()
37 : m_firstVisibleIndex(-1)
34 : m_firstVisibleIndex(-1)
plugins/Dash/listviewwithpageheader.cpp+8−4
@@ -95,14 +95,11 @@
95#include <QDebug>
95#include <QDebug>
96#include <qqmlinfo.h>
96#include <qqmlinfo.h>
97#include <qqmlengine.h>
97#include <qqmlengine.h>
98−#pragma GCC diagnostic push
99−#pragma GCC diagnostic ignored "-pedantic"
100#include <private/qqmlcontext_p.h>
98#include <private/qqmlcontext_p.h>
101#include <private/qqmldelegatemodel_p.h>
99#include <private/qqmldelegatemodel_p.h>
102#include <private/qqmlglobal_p.h>
100#include <private/qqmlglobal_p.h>
103#include <private/qquickitem_p.h>
101#include <private/qquickitem_p.h>
104#include <private/qquickanimation_p.h>
102#include <private/qquickanimation_p.h>
105−#pragma GCC diagnostic pop
106// #include <private/qquickrectangle_p.h>
103// #include <private/qquickrectangle_p.h>
107
104
108qreal ListViewWithPageHeader::ListItem::height() const
105qreal ListViewWithPageHeader::ListItem::height() const
@@ -256,6 +253,7 @@ void ListViewWithPageHeader::setHeader(QQuickItem *headerItem)
256 oldHeaderHeight = m_headerItem->height();
253 oldHeaderHeight = m_headerItem->height();
257 oldHeaderY = m_headerItem->y();
254 oldHeaderY = m_headerItem->y();
258 m_headerItem->setParentItem(nullptr);
255 m_headerItem->setParentItem(nullptr);
256+ QQuickItemPrivate::get(m_headerItem)->removeItemChangeListener(this, QQuickItemPrivate::ImplicitHeight);
259 }
257 }
260 m_headerItem = headerItem;
258 m_headerItem = headerItem;
261 if (m_headerItem) {
259 if (m_headerItem) {
@@ -702,7 +700,9 @@ void ListViewWithPageHeader::reallyReleaseItem(ListItem *listItem)
702 if (flags & QQmlDelegateModel::Destroyed) {
700 if (flags & QQmlDelegateModel::Destroyed) {
703 item->setParentItem(nullptr);
701 item->setParentItem(nullptr);
704 }
702 }
703+ if (listItem->sectionItem()) {
705− listItem->sectionItem()->deleteLater();
704+ listItem->sectionItem()->deleteLater();
705+ }
706 delete listItem;
706 delete listItem;
707}
707}
708
708
@@ -1334,6 +1334,10 @@ void ListViewWithPageHeader::layout()
1334 }
1334 }
1335 }
1335 }
1336 }
1336 }
1337+ if (m_headerItem) {
1338+ const bool cullHeader = m_headerItem->y() + m_headerItem->height() < contentY();
1339+ QQuickItemPrivate::get(m_headerItem)->setCulled(cullHeader);
1340+ }
1337 m_inLayout = false;
1341 m_inLayout = false;
1338}
1342}
1339
1343
plugins/Dash/organicgrid.cpp−3
@@ -16,10 +16,7 @@
16
16
17#include "organicgrid.h"
17#include "organicgrid.h"
18
18
19−#pragma GCC diagnostic push
20−#pragma GCC diagnostic ignored "-pedantic"
21#include <private/qquickitem_p.h>
19#include <private/qquickitem_p.h>
22−#pragma GCC diagnostic pop
23
20
24OrganicGrid::OrganicGrid()
21OrganicGrid::OrganicGrid()
25 : m_firstVisibleIndex(-1)
22 : m_firstVisibleIndex(-1)
plugins/Dash/verticaljournal.cpp−3
@@ -27,10 +27,7 @@
27 */
27 */
28#include "verticaljournal.h"
28#include "verticaljournal.h"
29
29
30−#pragma GCC diagnostic push
31−#pragma GCC diagnostic ignored "-pedantic"
32#include <private/qquickitem_p.h>
30#include <private/qquickitem_p.h>
33−#pragma GCC diagnostic pop
34
31
35VerticalJournal::VerticalJournal()
32VerticalJournal::VerticalJournal()
36 : m_columnWidth(0)
33 : m_columnWidth(0)
plugins/LightDM/IntegratedLightDM/liblightdm/UsersModel.cpp+4−1
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013-2016 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
@@ -52,6 +52,7 @@ UsersModel::UsersModel(QObject *parent) :
52 roles[SessionRole] = "session";
52 roles[SessionRole] = "session";
53 roles[HasMessagesRole] = "hasMessages";
53 roles[HasMessagesRole] = "hasMessages";
54 roles[ImagePathRole] = "imagePath";
54 roles[ImagePathRole] = "imagePath";
55+ roles[UidRole] = "uid";
55 setRoleNames(roles);
56 setRoleNames(roles);
56
57
57 connect(d_ptr, &UsersModelPrivate::dataChanged, this, [this](int i) {
58 connect(d_ptr, &UsersModelPrivate::dataChanged, this, [this](int i) {
@@ -101,6 +102,8 @@ QVariant UsersModel::data(const QModelIndex &index, int role) const
101 return d->entries[row].has_messages;
102 return d->entries[row].has_messages;
102 case UsersModel::ImagePathRole:
103 case UsersModel::ImagePathRole:
103 return "";
104 return "";
105+ case UsersModel::UidRole:
106+ return d->entries[row].uid;
104 default:
107 default:
105 return QVariant();
108 return QVariant();
106 }
109 }
plugins/LightDM/IntegratedLightDM/liblightdm/UsersModel.h+2−1
@@ -50,7 +50,8 @@ public:
50 SessionRole,
50 SessionRole,
51 HasMessagesRole,
51 HasMessagesRole,
52 ImagePathRole,
52 ImagePathRole,
53− BackgroundPathRole
53+ BackgroundPathRole,
54+ UidRole
54 };
55 };
55
56
56 int rowCount(const QModelIndex &parent) const override;
57 int rowCount(const QModelIndex &parent) const override;
plugins/LightDM/IntegratedLightDM/liblightdm/UsersModelPrivate.cpp+5−3
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013-2016 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
@@ -26,6 +26,7 @@
26#include <QDir>
26#include <QDir>
27#include <QSettings>
27#include <QSettings>
28#include <QStringList>
28#include <QStringList>
29+#include <unistd.h>
29
30
30namespace QLightDM
31namespace QLightDM
31{
32{
@@ -37,6 +38,7 @@ UsersModelPrivate::UsersModelPrivate(UsersModel* parent)
37{
38{
38 QFileInfo demoFile(QDir::homePath() + "/.unity8-greeter-demo");
39 QFileInfo demoFile(QDir::homePath() + "/.unity8-greeter-demo");
39 QString currentUser = g_get_user_name();
40 QString currentUser = g_get_user_name();
41+ uid_t currentUid = getuid();
40
42
41 if (demoFile.exists()) {
43 if (demoFile.exists()) {
42 QSettings settings(demoFile.filePath(), QSettings::NativeFormat);
44 QSettings settings(demoFile.filePath(), QSettings::NativeFormat);
@@ -46,10 +48,10 @@ UsersModelPrivate::UsersModelPrivate(UsersModel* parent)
46 Q_FOREACH(const QString &user, users)
48 Q_FOREACH(const QString &user, users)
47 {
49 {
48 QString name = settings.value(user + "/name", user).toString();
50 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++});
50 }
52 }
51 } else {
53 } else {
52− entries.append({currentUser, 0, 0, 0, false, false, 0, 0});
54+ entries.append({currentUser, 0, 0, 0, false, false, 0, 0, currentUid});
53
55
54 connect(m_service, &AccountsServiceDBusAdaptor::maybeChanged,
56 connect(m_service, &AccountsServiceDBusAdaptor::maybeChanged,
55 this, [this](const QString &user) {
57 this, [this](const QString &user) {
plugins/LightDM/IntegratedLightDM/liblightdm/UsersModelPrivate.h+2−1
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013-2016 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
@@ -40,6 +40,7 @@ public:
40 bool has_messages;
40 bool has_messages;
41 QString session;
41 QString session;
42 QString infographic;
42 QString infographic;
43+ uid_t uid;
43};
44};
44
45
45class UsersModelPrivate : public QObject
46class UsersModelPrivate : public QObject
plugins/Lights/CMakeLists.txt+1
@@ -2,6 +2,7 @@ pkg_check_modules(ANDROID_HEADERS REQUIRED android-headers)
2pkg_check_modules(ANDROID_HARDWARE REQUIRED libhardware)
2pkg_check_modules(ANDROID_HARDWARE REQUIRED libhardware)
3
3
4include_directories(
4include_directories(
5+ SYSTEM
5 ${ANDROID_HEADERS_INCLUDE_DIRS}
6 ${ANDROID_HEADERS_INCLUDE_DIRS}
6)
7)
7
8
plugins/Lights/android-hardware.h−4
@@ -15,9 +15,5 @@
15 *
15 *
16 */
16 */
17
17
18−// The purpose of this header wrapper is just to avoid having warnings being reported on
19−// code from external header files, as we can't do anything about them.
20−#pragma GCC system_header
21−
22#include <hardware/hardware.h>
18#include <hardware/hardware.h>
23#include <hardware/lights.h>
19#include <hardware/lights.h>
plugins/Ubuntu/DownloadDaemonListener/CMakeLists.txt−1
@@ -1,7 +1,6 @@
1include_directories(
1include_directories(
2 ${CMAKE_CURRENT_SOURCE_DIR}
2 ${CMAKE_CURRENT_SOURCE_DIR}
3 ${CMAKE_CURRENT_BINARY_DIR}
3 ${CMAKE_CURRENT_BINARY_DIR}
4− ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
5)
4)
6
5
7set(DOWNLOADDAEMONLISTENER_SOURCES
6set(DOWNLOADDAEMONLISTENER_SOURCES
plugins/Ubuntu/Gestures/CMakeLists.txt+5−1
@@ -24,7 +24,10 @@ qt5_use_modules(UbuntuGesturesQml Core Quick)
24# So that Foo.cpp can #include "Foo.moc"
24# So that Foo.cpp can #include "Foo.moc"
25include_directories(${CMAKE_CURRENT_BINARY_DIR})
25include_directories(${CMAKE_CURRENT_BINARY_DIR})
26
26
27+include_directories(
28+ SYSTEM
27−include_directories(${UBUNTUGESTURES_INCLUDE_DIRS})
29+ ${UBUNTUGESTURES_INCLUDE_DIRS}
30+)
28
31
29# There's no cmake var for v8 include path :-/ so create one
32# There's no cmake var for v8 include path :-/ so create one
30LIST(GET Qt5Core_INCLUDE_DIRS 0 QtCoreDir0)
33LIST(GET Qt5Core_INCLUDE_DIRS 0 QtCoreDir0)
@@ -32,6 +35,7 @@ SET(Qt5V8_PRIVATE_INCLUDE_DIR ${QtCoreDir0}/QtV8/${Qt5Core_VERSION_STRING}/QtV8)
32
35
33# DANGER! DANGER! Using Qt's private API!
36# DANGER! DANGER! Using Qt's private API!
34include_directories(
37include_directories(
38+ SYSTEM
35 ${Qt5Qml_PRIVATE_INCLUDE_DIRS}
39 ${Qt5Qml_PRIVATE_INCLUDE_DIRS}
36 ${Qt5Quick_INCLUDE_DIRS}
40 ${Qt5Quick_INCLUDE_DIRS}
37 ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
41 ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
plugins/Ubuntu/Gestures/TouchDispatcher.cpp−4
@@ -19,11 +19,7 @@
19#include <QGuiApplication>
19#include <QGuiApplication>
20#include <QScopedPointer>
20#include <QScopedPointer>
21#include <QStyleHints>
21#include <QStyleHints>
22−
23−#pragma GCC diagnostic push
24−#pragma GCC diagnostic ignored "-pedantic"
25#include <private/qquickitem_p.h>
22#include <private/qquickitem_p.h>
26−#pragma GCC diagnostic pop
27
23
28#define TOUCHDISPATCHER_DEBUG 0
24#define TOUCHDISPATCHER_DEBUG 0
29
25
plugins/Unity/Indicators/CMakeLists.txt+4
@@ -6,6 +6,10 @@ find_package(Qt5Quick REQUIRED)
6include_directories(
6include_directories(
7 ${CMAKE_CURRENT_SOURCE_DIR}
7 ${CMAKE_CURRENT_SOURCE_DIR}
8 ${CMAKE_CURRENT_BINARY_DIR}
8 ${CMAKE_CURRENT_BINARY_DIR}
9+)
10+
11+include_directories(
12+ SYSTEM
9 ${GLIB_INCLUDE_DIRS}
13 ${GLIB_INCLUDE_DIRS}
10 ${GIO_INCLUDE_DIRS}
14 ${GIO_INCLUDE_DIRS}
11 ${QMENUMODEL_INCLUDE_DIRS}
15 ${QMENUMODEL_INCLUDE_DIRS}
plugins/Unity/Session/CMakeLists.txt+2
@@ -6,6 +6,8 @@ include_directories(
6 ${libunity8-private_SOURCE_DIR}
6 ${libunity8-private_SOURCE_DIR}
7)
7)
8
8
9+add_definitions(-DSM_BUSNAME=systemBus)
10+
9set(QMLSESSIONPLUGIN_SRC
11set(QMLSESSIONPLUGIN_SRC
10 plugin.cpp
12 plugin.cpp
11 dbusunitysessionservice.cpp
13 dbusunitysessionservice.cpp
plugins/Unity/Session/dbusunitysessionservice.cpp+50−18
@@ -64,19 +64,19 @@ public:
64 QStringLiteral("GetSessionByPID"));
64 QStringLiteral("GetSessionByPID"));
65 msg << (quint32) getpid();
65 msg << (quint32) getpid();
66
66
67− QDBusReply<QDBusObjectPath> reply = QDBusConnection::systemBus().call(msg);
67+ QDBusReply<QDBusObjectPath> reply = QDBusConnection::SM_BUSNAME().call(msg);
68 if (reply.isValid()) {
68 if (reply.isValid()) {
69 logindSessionPath = reply.value().path();
69 logindSessionPath = reply.value().path();
70
70
71 // start watching the Active property
71 // start watching the Active property
72− QDBusConnection::systemBus().connect(LOGIN1_SERVICE, logindSessionPath, QStringLiteral("org.freedesktop.DBus.Properties"), QStringLiteral("PropertiesChanged"),
72+ QDBusConnection::SM_BUSNAME().connect(LOGIN1_SERVICE, logindSessionPath, QStringLiteral("org.freedesktop.DBus.Properties"), QStringLiteral("PropertiesChanged"),
73− this, SLOT(onPropertiesChanged(QString,QVariantMap,QStringList)));
73+ this, SLOT(onPropertiesChanged(QString,QVariantMap,QStringList)));
74
74
75 setupSystemdInhibition();
75 setupSystemdInhibition();
76
76
77 // re-enable the inhibition upon resume from sleep
77 // re-enable the inhibition upon resume from sleep
78− QDBusConnection::systemBus().connect(LOGIN1_SERVICE, LOGIN1_PATH, LOGIN1_IFACE, QStringLiteral("PrepareForSleep"),
78+ QDBusConnection::SM_BUSNAME().connect(LOGIN1_SERVICE, LOGIN1_PATH, LOGIN1_IFACE, QStringLiteral("PrepareForSleep"),
79− this, SLOT(onResuming(bool)));
79+ this, SLOT(onResuming(bool)));
80 } else {
80 } else {
81 qWarning() << "Failed to get logind session path" << reply.error().message();
81 qWarning() << "Failed to get logind session path" << reply.error().message();
82 }
82 }
@@ -96,7 +96,7 @@ public:
96 msg << "Unity8 handles power events"; // why
96 msg << "Unity8 handles power events"; // why
97 msg << "block"; // mode
97 msg << "block"; // mode
98
98
99− QDBusPendingCall pendingCall = QDBusConnection::systemBus().asyncCall(msg);
99+ QDBusPendingCall pendingCall = QDBusConnection::SM_BUSNAME().asyncCall(msg);
100 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingCall, this);
100 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingCall, this);
101 connect(watcher, &QDBusPendingCallWatcher::finished,
101 connect(watcher, &QDBusPendingCallWatcher::finished,
102 this, [this](QDBusPendingCallWatcher* watcher) {
102 this, [this](QDBusPendingCallWatcher* watcher) {
@@ -114,7 +114,7 @@ public:
114 bool checkLogin1Call(const QString &method) const
114 bool checkLogin1Call(const QString &method) const
115 {
115 {
116 QDBusMessage msg = QDBusMessage::createMethodCall(LOGIN1_SERVICE, LOGIN1_PATH, LOGIN1_IFACE, method);
116 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);
118 return reply.isValid() && (reply == QStringLiteral("yes") || reply == QStringLiteral("challenge"));
118 return reply.isValid() && (reply == QStringLiteral("yes") || reply == QStringLiteral("challenge"));
119 }
119 }
120
120
@@ -125,7 +125,7 @@ public:
125 LOGIN1_IFACE,
125 LOGIN1_IFACE,
126 method);
126 method);
127 msg.setArguments(args);
127 msg.setArguments(args);
128− QDBusConnection::systemBus().asyncCall(msg);
128+ QDBusConnection::SM_BUSNAME().asyncCall(msg);
129 }
129 }
130
130
131 void setActive(bool active)
131 void setActive(bool active)
@@ -157,7 +157,7 @@ public:
157 msg << LOGIN1_SESSION_IFACE;
157 msg << LOGIN1_SESSION_IFACE;
158 msg << ACTIVE_KEY;
158 msg << ACTIVE_KEY;
159
159
160− QDBusPendingCall pendingCall = QDBusConnection::systemBus().asyncCall(msg);
160+ QDBusPendingCall pendingCall = QDBusConnection::SM_BUSNAME().asyncCall(msg);
161 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingCall, this);
161 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingCall, this);
162 connect(watcher, &QDBusPendingCallWatcher::finished,
162 connect(watcher, &QDBusPendingCallWatcher::finished,
163 this, [this](QDBusPendingCallWatcher* watcher) {
163 this, [this](QDBusPendingCallWatcher* watcher) {
@@ -191,7 +191,7 @@ public:
191 msg << LOGIN1_SESSION_IFACE;
191 msg << LOGIN1_SESSION_IFACE;
192 msg << IDLE_SINCE_KEY;
192 msg << IDLE_SINCE_KEY;
193
193
194− QDBusReply<QVariant> reply = QDBusConnection::systemBus().call(msg);
194+ QDBusReply<QVariant> reply = QDBusConnection::SM_BUSNAME().call(msg);
195 if (reply.isValid()) {
195 if (reply.isValid()) {
196 return reply.value().value<quint64>();
196 return reply.value().value<quint64>();
197 } else {
197 } else {
@@ -208,7 +208,7 @@ public:
208 LOGIN1_SESSION_IFACE,
208 LOGIN1_SESSION_IFACE,
209 QStringLiteral("SetIdleHint"));
209 QStringLiteral("SetIdleHint"));
210 msg << idle;
210 msg << idle;
211− QDBusConnection::systemBus().asyncCall(msg);
211+ QDBusConnection::SM_BUSNAME().asyncCall(msg);
212 }
212 }
213
213
214private Q_SLOTS:
214private Q_SLOTS:
@@ -243,11 +243,11 @@ DBusUnitySessionService::DBusUnitySessionService()
243 : UnityDBusObject(QStringLiteral("/com/canonical/Unity/Session"), QStringLiteral("com.canonical.Unity"))
243 : UnityDBusObject(QStringLiteral("/com/canonical/Unity/Session"), QStringLiteral("com.canonical.Unity"))
244{
244{
245 if (!d->logindSessionPath.isEmpty()) {
245 if (!d->logindSessionPath.isEmpty()) {
246− // connect our Lock() slot to the logind's session Lock() signal
246+ // connect our PromptLock() slot to the logind's session Lock() signal
247− QDBusConnection::systemBus().connect(LOGIN1_SERVICE, d->logindSessionPath, LOGIN1_SESSION_IFACE, QStringLiteral("Lock"), this, SLOT(Lock()));
247+ QDBusConnection::SM_BUSNAME().connect(LOGIN1_SERVICE, d->logindSessionPath, LOGIN1_SESSION_IFACE, QStringLiteral("Lock"), this, SLOT(PromptLock()));
248 // ... and our Unlocked() signal to the logind's session Unlock() signal
248 // ... and our Unlocked() signal to the logind's session Unlock() signal
249 // (lightdm handles the unlocking by calling logind's Unlock method which in turn emits this signal we connect to)
249 // (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()));
251 connect(d, &DBusUnitySessionServicePrivate::prepareForSleep, this, &DBusUnitySessionService::PromptLock);
251 connect(d, &DBusUnitySessionServicePrivate::prepareForSleep, this, &DBusUnitySessionService::PromptLock);
252 } else {
252 } else {
253 qWarning() << "Failed to connect to logind's session Lock/Unlock signals";
253 qWarning() << "Failed to connect to logind's session Lock/Unlock signals";
@@ -332,15 +332,41 @@ QString DBusUnitySessionService::HostName() const
332
332
333void DBusUnitySessionService::PromptLock()
333void DBusUnitySessionService::PromptLock()
334{
334{
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.
335 Q_EMIT LockRequested();
338 Q_EMIT LockRequested();
336 Q_EMIT lockRequested();
339 Q_EMIT lockRequested();
337}
340}
338
341
339void DBusUnitySessionService::Lock()
342void DBusUnitySessionService::Lock()
340{
343{
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.
342 PromptLock();
364 PromptLock();
365+ switchToGreeter();
366+}
343
367
368+void DBusUnitySessionService::switchToGreeter()
369+{
344 // lock the session using the org.freedesktop.DisplayManager system DBUS service
370 // lock the session using the org.freedesktop.DisplayManager system DBUS service
345 const QString sessionPath = QString::fromLocal8Bit(qgetenv("XDG_SESSION_PATH"));
371 const QString sessionPath = QString::fromLocal8Bit(qgetenv("XDG_SESSION_PATH"));
346 QDBusMessage msg = QDBusMessage::createMethodCall(QStringLiteral("org.freedesktop.DisplayManager"),
372 QDBusMessage msg = QDBusMessage::createMethodCall(QStringLiteral("org.freedesktop.DisplayManager"),
@@ -348,7 +374,7 @@ void DBusUnitySessionService::Lock()
348 QStringLiteral("org.freedesktop.DisplayManager.Session"),
374 QStringLiteral("org.freedesktop.DisplayManager.Session"),
349 QStringLiteral("Lock"));
375 QStringLiteral("Lock"));
350
376
351− QDBusPendingCall pendingCall = QDBusConnection::systemBus().asyncCall(msg);
377+ QDBusPendingCall pendingCall = QDBusConnection::SM_BUSNAME().asyncCall(msg);
352 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingCall, this);
378 QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingCall, this);
353 connect(watcher, &QDBusPendingCallWatcher::finished,
379 connect(watcher, &QDBusPendingCallWatcher::finished,
354 this, [this](QDBusPendingCallWatcher* watcher) {
380 this, [this](QDBusPendingCallWatcher* watcher) {
@@ -365,6 +391,12 @@ void DBusUnitySessionService::Lock()
365 });
391 });
366}
392}
367
393
394+void DBusUnitySessionService::doUnlock()
395+{
396+ Q_EMIT Unlocked();
397+ Q_EMIT unlocked();
398+}
399+
368bool DBusUnitySessionService::IsLocked() const
400bool DBusUnitySessionService::IsLocked() const
369{
401{
370 return !d->isSessionActive;
402 return !d->isSessionActive;
@@ -486,7 +518,7 @@ void DBusGnomeScreensaverWrapper::SetActive(bool lock)
486
518
487void DBusGnomeScreensaverWrapper::Lock()
519void DBusGnomeScreensaverWrapper::Lock()
488{
520{
489− performAsyncUnityCall(QStringLiteral("Lock"));
521+ performAsyncUnityCall(QStringLiteral("PromptLock"));
490}
522}
491
523
492quint32 DBusGnomeScreensaverWrapper::GetActiveTime() const
524quint32 DBusGnomeScreensaverWrapper::GetActiveTime() const
@@ -523,7 +555,7 @@ bool DBusScreensaverWrapper::SetActive(bool lock)
523
555
524void DBusScreensaverWrapper::Lock()
556void DBusScreensaverWrapper::Lock()
525{
557{
526− performAsyncUnityCall(QStringLiteral("Lock"));
558+ performAsyncUnityCall(QStringLiteral("PromptLock"));
527}
559}
528
560
529quint32 DBusScreensaverWrapper::GetActiveTime() const
561quint32 DBusScreensaverWrapper::GetActiveTime() const
plugins/Unity/Session/dbusunitysessionservice.h+7
@@ -106,6 +106,7 @@ Q_SIGNALS:
106 * Emitted after the session has been unlocked.
106 * Emitted after the session has been unlocked.
107 */
107 */
108 Q_SCRIPTABLE void Unlocked();
108 Q_SCRIPTABLE void Unlocked();
109+ void unlocked();
109
110
110public Q_SLOTS:
111public Q_SLOTS:
111 /**
112 /**
@@ -258,6 +259,12 @@ public Q_SLOTS:
258 * @return whether the session is currently locked
259 * @return whether the session is currently locked
259 */
260 */
260 Q_SCRIPTABLE bool IsLocked() const;
261 Q_SCRIPTABLE bool IsLocked() const;
262+
263+private Q_SLOTS:
264+ void doUnlock();
265+
266+private:
267+ void switchToGreeter();
261};
268};
262
269
263class DBusGnomeSessionManagerWrapper : public UnityDBusObject
270class DBusGnomeSessionManagerWrapper : public UnityDBusObject
plugins/Utils/CMakeLists.txt+5
@@ -1,6 +1,10 @@
1include_directories(
1include_directories(
2 ${CMAKE_CURRENT_SOURCE_DIR}
2 ${CMAKE_CURRENT_SOURCE_DIR}
3 ${CMAKE_CURRENT_BINARY_DIR}
3 ${CMAKE_CURRENT_BINARY_DIR}
4+)
5+
6+include_directories(
7+ SYSTEM
4 ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
8 ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
5 ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
9 ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
6 ${GIO_INCLUDE_DIRS}
10 ${GIO_INCLUDE_DIRS}
@@ -9,6 +13,7 @@ include_directories(
9set(QMLPLUGIN_SRC
13set(QMLPLUGIN_SRC
10 activefocuslogger.cpp
14 activefocuslogger.cpp
11 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationManagerInterface.h
15 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationManagerInterface.h
16+ ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationInfoInterface.h
12 applicationsfiltermodel.cpp
17 applicationsfiltermodel.cpp
13 constants.cpp
18 constants.cpp
14 WindowInputMonitor.cpp
19 WindowInputMonitor.cpp
plugins/Utils/globalfunctions.cpp+1−4
@@ -16,11 +16,8 @@
16
16
17#include "globalfunctions.h"
17#include "globalfunctions.h"
18
18
19−#pragma GCC diagnostic push
20−#pragma GCC diagnostic ignored "-pedantic"
21−#include <private/qquickitem_p.h>
22−#pragma GCC diagnostic pop
23#include <QQmlEngine>
19#include <QQmlEngine>
20+#include <private/qquickitem_p.h>
24
21
25GlobalFunctions::GlobalFunctions(QObject *parent)
22GlobalFunctions::GlobalFunctions(QObject *parent)
26 : QObject(parent)
23 : QObject(parent)
plugins/Utils/windowstatestorage.cpp+2−2
@@ -95,7 +95,7 @@ void WindowStateStorage::saveStage(const QString &appId, int stage)
95 saveValue(queryString);
95 saveValue(queryString);
96}
96}
97
97
98−int WindowStateStorage::getStage(const QString &appId) const
98+int WindowStateStorage::getStage(const QString &appId, int defaultValue) const
99{
99{
100 const QString queryString = QStringLiteral("SELECT * FROM stage WHERE appId = '%1';")
100 const QString queryString = QStringLiteral("SELECT * FROM stage WHERE appId = '%1';")
101 .arg(sanitiseString(appId));
101 .arg(sanitiseString(appId));
@@ -103,7 +103,7 @@ int WindowStateStorage::getStage(const QString &appId) const
103 QSqlQuery query = getValue(queryString);
103 QSqlQuery query = getValue(queryString);
104
104
105 if (!query.first()) {
105 if (!query.first()) {
106− return unity::shell::application::ApplicationInfoInterface::MainStage;
106+ return defaultValue;
107 }
107 }
108 return query.value("stage").toInt();
108 return query.value("stage").toInt();
109}
109}
plugins/Utils/windowstatestorage.h+1−1
@@ -49,7 +49,7 @@ public:
49 Q_INVOKABLE QRect getGeometry(const QString &windowId, const QRect defaultValue) const;
49 Q_INVOKABLE QRect getGeometry(const QString &windowId, const QRect defaultValue) const;
50
50
51 Q_INVOKABLE void saveStage(const QString &appId, int stage);
51 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;
53
53
54private:
54private:
55 void initdb();
55 void initdb();
plugins/WindowManager/CMakeLists.txt+1
@@ -4,6 +4,7 @@ set(WINDOWMANAGER_SRC
4 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationInfoInterface.h
4 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationInfoInterface.h
5 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/Mir.h
5 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/Mir.h
6 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/MirSurfaceInterface.h
6 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/MirSurfaceInterface.h
7+ ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/MirSurfaceListInterface.h
7 )
8 )
8
9
9add_library(windowmanager-qml SHARED ${WINDOWMANAGER_SRC})
10add_library(windowmanager-qml SHARED ${WINDOWMANAGER_SRC})
po/aa.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2016-02-12 10:18+0000\n"
11"PO-Revision-Date: 2016-02-12 10:18+0000\n"
12"Last-Translator: Charif AYFARAH <ayfarah@ymail.com>\n"
12"Last-Translator: Charif AYFARAH <ayfarah@ymail.com>\n"
13"Language-Team: Afar <aa@li.org>\n"
13"Language-Team: Afar <aa@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "Kat"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr ""
36msgstr ""
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr ""
40msgstr ""
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277msgid "Closes the current window."
277msgid "Closes the current window."
278msgstr ""
278msgstr ""
279
279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281msgid "Return to Call"
281msgid "Return to Call"
282msgstr "Seecol gacis"
282msgstr "Seecol gacis"
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Emergency Call"
285msgid "Emergency Call"
286msgstr ""
286msgstr ""
287
287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289msgid "OK"
289msgid "OK"
290msgstr "Hayya"
290msgstr "Hayya"
291
291
@@ -422,10 +422,14 @@ msgid ""
422"touch pad to interact with the pointer."
422"touch pad to interact with the pointer."
423msgstr ""
423msgstr ""
424
424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426msgid "Unlock"
426msgid "Unlock"
427msgstr ""
427msgstr ""
428
428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429#: qml/Greeter/LoginList.qml:259
433#: qml/Greeter/LoginList.qml:259
430msgid "Retry"
434msgid "Retry"
431msgstr "Qagis"
435msgstr "Qagis"
@@ -458,34 +462,34 @@ msgid ""
458"and all personal data will be deleted."
462"and all personal data will be deleted."
459msgstr ""
463msgstr ""
460
464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462#, qt-format
466#, qt-format
463msgid "Enter %1"
467msgid "Enter %1"
464msgstr "%1 culus"
468msgstr "%1 culus"
465
469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467msgid "Enter passphrase"
471msgid "Enter passphrase"
468msgstr "Tatur-maxco culus"
472msgstr "Tatur-maxco culus"
469
473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471msgid "Enter passcode"
475msgid "Enter passcode"
472msgstr "Tatur-mudenta culus"
476msgstr "Tatur-mudenta culus"
473
477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475#, qt-format
479#, qt-format
476msgid "Sorry, incorrect %1"
480msgid "Sorry, incorrect %1"
477msgstr ""
481msgstr ""
478
482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480msgid "Sorry, incorrect passphrase"
484msgid "Sorry, incorrect passphrase"
481msgstr ""
485msgstr ""
482
486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484msgctxt "passphrase"
488msgctxt "passphrase"
485msgid "Please re-enter"
489msgid "Please re-enter"
486msgstr ""
490msgstr ""
487
491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489msgid "Sorry, incorrect passcode"
493msgid "Sorry, incorrect passcode"
490msgstr ""
494msgstr ""
491
495
po/am.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2016-06-19 16:08+0000\n"
11"PO-Revision-Date: 2016-06-19 16:08+0000\n"
12"Last-Translator: samson <Unknown>\n"
12"Last-Translator: samson <Unknown>\n"
13"Language-Team: Amharic <am@li.org>\n"
13"Language-Team: Amharic <am@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-20 06:12+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "ማጥፊያ"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "አቋራጭ መለያያ"
36msgstr "አቋራጭ መለያያ"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "አካሉ ተቆልፏል"
40msgstr "አካሉ ተቆልፏል"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr "ብዙ ጊዜ የተሳሳተ የ ማለፊያ ሀረግ ለማስገባት በ መሞከር ምክንያት ስልኩ ተቆልፏል"
44msgstr "ብዙ ጊዜ የተሳሳተ የ ማለፊያ ሀረግ ለማስገባት በ መሞከር ምክንያት ስልኩ ተቆልፏል"
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr "ብዙ ጊዜ የተሳሳተ የ ማለፊያ ኮድ ለማስገባት በ መሞከር ምክንያት ስልኩ ተቆልፏል"
48msgstr "ብዙ ጊዜ የተሳሳተ የ ማለፊያ ኮድ ለማስገባት በ መሞከር ምክንያት ስልኩ ተቆልፏል"
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr "Alt + F4"
279msgid "Closes the current window."
279msgid "Closes the current window."
280msgstr "የ አሁኑን መስኮት መዝጊያ"
280msgstr "የ አሁኑን መስኮት መዝጊያ"
281
281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283msgid "Return to Call"
283msgid "Return to Call"
284msgstr "ወደ ጥሪ መመለሻ"
284msgstr "ወደ ጥሪ መመለሻ"
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Emergency Call"
287msgid "Emergency Call"
288msgstr "የ ድንገተኛ ጥሪ"
288msgstr "የ ድንገተኛ ጥሪ"
289
289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291msgid "OK"
291msgid "OK"
292msgstr "እሺ"
292msgstr "እሺ"
293
293
@@ -424,10 +424,14 @@ msgid ""
424"touch pad to interact with the pointer."
424"touch pad to interact with the pointer."
425msgstr "የ እርስዎ አካል አሁን ከ ውጪ ማሳያ ጋር ተገናኝቷል: ይህን መመልከቻ እንደ ተችፓድ መጠቀሚያ"
425msgstr "የ እርስዎ አካል አሁን ከ ውጪ ማሳያ ጋር ተገናኝቷል: ይህን መመልከቻ እንደ ተችፓድ መጠቀሚያ"
426
426
427−#: qml/Greeter/CoverPage.qml:119
427+#: qml/Greeter/CoverPage.qml:127
428msgid "Unlock"
428msgid "Unlock"
429msgstr "መክፈቻ"
429msgstr "መክፈቻ"
430
430
431+#: qml/Greeter/Greeter.qml:536
432+msgid "Try again"
433+msgstr ""
434+
431#: qml/Greeter/LoginList.qml:259
435#: qml/Greeter/LoginList.qml:259
432msgid "Retry"
436msgid "Retry"
433msgstr "እንደገና ይሞክሩ"
437msgstr "እንደገና ይሞክሩ"
@@ -464,34 +468,34 @@ msgstr ""
464"የተሳሳተ የማለፊያ ኮድ ካስገቡ የ እርስዎ ስልክ ወደ ነበረበት ወደ ፋክቶሪው ዘዴ ይመለሳል: እና የ ግል ዳታ በሙሉ "
468"የተሳሳተ የማለፊያ ኮድ ካስገቡ የ እርስዎ ስልክ ወደ ነበረበት ወደ ፋክቶሪው ዘዴ ይመለሳል: እና የ ግል ዳታ በሙሉ "
465"ይጠፋል"
469"ይጠፋል"
466
470
467−#: qml/Greeter/NarrowView.qml:116
471+#: qml/Greeter/NarrowView.qml:129
468#, qt-format
472#, qt-format
469msgid "Enter %1"
473msgid "Enter %1"
470msgstr "ማስገቢያ %1"
474msgstr "ማስገቢያ %1"
471
475
472−#: qml/Greeter/NarrowView.qml:117
476+#: qml/Greeter/NarrowView.qml:130
473msgid "Enter passphrase"
477msgid "Enter passphrase"
474msgstr "የ ማለፊያ ሀረግ ያስገቡ"
478msgstr "የ ማለፊያ ሀረግ ያስገቡ"
475
479
476−#: qml/Greeter/NarrowView.qml:118
480+#: qml/Greeter/NarrowView.qml:131
477msgid "Enter passcode"
481msgid "Enter passcode"
478msgstr "የ ማለፊያ ኮድ ያስገቡ"
482msgstr "የ ማለፊያ ኮድ ያስገቡ"
479
483
480−#: qml/Greeter/NarrowView.qml:119
484+#: qml/Greeter/NarrowView.qml:135
481#, qt-format
485#, qt-format
482msgid "Sorry, incorrect %1"
486msgid "Sorry, incorrect %1"
483msgstr "አዝናለሁ: የተሳሳተ%1"
487msgstr "አዝናለሁ: የተሳሳተ%1"
484
488
485−#: qml/Greeter/NarrowView.qml:120
489+#: qml/Greeter/NarrowView.qml:136
486msgid "Sorry, incorrect passphrase"
490msgid "Sorry, incorrect passphrase"
487msgstr "አዝናለሁ የተሳሳተ የማለፊያ ሐረግ"
491msgstr "አዝናለሁ የተሳሳተ የማለፊያ ሐረግ"
488
492
489−#: qml/Greeter/NarrowView.qml:121
493+#: qml/Greeter/NarrowView.qml:137
490msgctxt "passphrase"
494msgctxt "passphrase"
491msgid "Please re-enter"
495msgid "Please re-enter"
492msgstr "እባክዎን እንደገና-ያስገቡ"
496msgstr "እባክዎን እንደገና-ያስገቡ"
493
497
494−#: qml/Greeter/NarrowView.qml:122
498+#: qml/Greeter/NarrowView.qml:138
495msgid "Sorry, incorrect passcode"
499msgid "Sorry, incorrect passcode"
496msgstr "አዝናለሁ የተሳሳተ የማለፊያ ኮድ"
500msgstr "አዝናለሁ የተሳሳተ የማለፊያ ኮድ"
497
501
po/ar.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-07-29 09:41+0000\n"
11"PO-Revision-Date: 2015-07-29 09:41+0000\n"
12"Last-Translator: Ibrahim Saed <ibraheem5000@gmail.com>\n"
12"Last-Translator: Ibrahim Saed <ibraheem5000@gmail.com>\n"
13"Language-Team: Arabic <ar@li.org>\n"
13"Language-Team: Arabic <ar@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n % 100 >= "
17"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n % 100 >= "
18"3 && n % 100 <= 10 ? 3 : n % 100 >= 11 && n % 100 <= 99 ? 4 : 5;\n"
18"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"
19+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
20−"X-Generator: Launchpad (build 18097)\n"
20+"X-Generator: Launchpad (build 18111)\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -36,21 +36,21 @@ msgstr "خروج"
36msgid "Unpin shortcut"
36msgid "Unpin shortcut"
37msgstr "إزالة تثبيت الاختصار"
37msgstr "إزالة تثبيت الاختصار"
38
38
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
40msgid "Device Locked"
40msgid "Device Locked"
41msgstr "الجهاز موصد"
41msgstr "الجهاز موصد"
42
42
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
44msgid "You have been locked out due to too many failed passphrase attempts."
44msgid "You have been locked out due to too many failed passphrase attempts."
45msgstr ""
45msgstr ""
46"لقد تم تأمين الجهاز ضد الفتح بسبب المحاولات العديدة الفاشلة للعبارة السرّية."
46"لقد تم تأمين الجهاز ضد الفتح بسبب المحاولات العديدة الفاشلة للعبارة السرّية."
47
47
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
49msgid "You have been locked out due to too many failed passcode attempts."
49msgid "You have been locked out due to too many failed passcode attempts."
50msgstr ""
50msgstr ""
51"لقد تم تأمين الجهاز ضد الفتح بسبب المحاولات العديدة الفاشلة للرمز السرّي."
51"لقد تم تأمين الجهاز ضد الفتح بسبب المحاولات العديدة الفاشلة للرمز السرّي."
52
52
53−#: qml/Components/DelayedLockscreen.qml:74
53+#: qml/Components/DelayedLockscreen.qml:75
54#, qt-format
54#, qt-format
55msgid "Please wait %1 minute and then try again…"
55msgid "Please wait %1 minute and then try again…"
56msgid_plural "Please wait %1 minutes and then try again…"
56msgid_plural "Please wait %1 minutes and then try again…"
@@ -286,15 +286,15 @@ msgstr ""
286msgid "Closes the current window."
286msgid "Closes the current window."
287msgstr ""
287msgstr ""
288
288
289−#: qml/Components/Lockscreen.qml:231
289+#: qml/Components/Lockscreen.qml:239
290msgid "Return to Call"
290msgid "Return to Call"
291msgstr "العودة إلى المكالمة"
291msgstr "العودة إلى المكالمة"
292
292
293−#: qml/Components/Lockscreen.qml:231
293+#: qml/Components/Lockscreen.qml:239
294msgid "Emergency Call"
294msgid "Emergency Call"
295msgstr "مكالمة طوارئ"
295msgstr "مكالمة طوارئ"
296
296
297−#: qml/Components/Lockscreen.qml:263
297+#: qml/Components/Lockscreen.qml:271
298msgid "OK"
298msgid "OK"
299msgstr "موافق"
299msgstr "موافق"
300
300
@@ -431,10 +431,14 @@ msgid ""
431"touch pad to interact with the pointer."
431"touch pad to interact with the pointer."
432msgstr ""
432msgstr ""
433
433
434−#: qml/Greeter/CoverPage.qml:119
434+#: qml/Greeter/CoverPage.qml:127
435msgid "Unlock"
435msgid "Unlock"
436msgstr "فك القفل"
436msgstr "فك القفل"
437
437
438+#: qml/Greeter/Greeter.qml:536
439+msgid "Try again"
440+msgstr ""
441+
438#: qml/Greeter/LoginList.qml:259
442#: qml/Greeter/LoginList.qml:259
439msgid "Retry"
443msgid "Retry"
440msgstr "إعادة المحاولة"
444msgstr "إعادة المحاولة"
@@ -471,34 +475,34 @@ msgstr ""
471"إذا تم إدخال العبارة السرية بشكل خاطئ، فسوف يتم إعادة الهاتف لحالة ضبط "
475"إذا تم إدخال العبارة السرية بشكل خاطئ، فسوف يتم إعادة الهاتف لحالة ضبط "
472"المصنع وسيتم حذف كافة البيانات الشخصية."
476"المصنع وسيتم حذف كافة البيانات الشخصية."
473
477
474−#: qml/Greeter/NarrowView.qml:116
478+#: qml/Greeter/NarrowView.qml:129
475#, qt-format
479#, qt-format
476msgid "Enter %1"
480msgid "Enter %1"
477msgstr "أدخِل %1"
481msgstr "أدخِل %1"
478
482
479−#: qml/Greeter/NarrowView.qml:117
483+#: qml/Greeter/NarrowView.qml:130
480msgid "Enter passphrase"
484msgid "Enter passphrase"
481msgstr "أدخِل العبارة السرية"
485msgstr "أدخِل العبارة السرية"
482
486
483−#: qml/Greeter/NarrowView.qml:118
487+#: qml/Greeter/NarrowView.qml:131
484msgid "Enter passcode"
488msgid "Enter passcode"
485msgstr "أدخِل الرمز السرّي"
489msgstr "أدخِل الرمز السرّي"
486
490
487−#: qml/Greeter/NarrowView.qml:119
491+#: qml/Greeter/NarrowView.qml:135
488#, qt-format
492#, qt-format
489msgid "Sorry, incorrect %1"
493msgid "Sorry, incorrect %1"
490msgstr "نأسف، %1 غير صحيحية"
494msgstr "نأسف، %1 غير صحيحية"
491
495
492−#: qml/Greeter/NarrowView.qml:120
496+#: qml/Greeter/NarrowView.qml:136
493msgid "Sorry, incorrect passphrase"
497msgid "Sorry, incorrect passphrase"
494msgstr "نأسف، عبارة السّر غير صحيحية"
498msgstr "نأسف، عبارة السّر غير صحيحية"
495
499
496−#: qml/Greeter/NarrowView.qml:121
500+#: qml/Greeter/NarrowView.qml:137
497msgctxt "passphrase"
501msgctxt "passphrase"
498msgid "Please re-enter"
502msgid "Please re-enter"
499msgstr "برجاء إعادة إدخالها"
503msgstr "برجاء إعادة إدخالها"
500
504
501−#: qml/Greeter/NarrowView.qml:122
505+#: qml/Greeter/NarrowView.qml:138
502msgid "Sorry, incorrect passcode"
506msgid "Sorry, incorrect passcode"
503msgstr "نأسف، الرمز السري غير صحيح"
507msgstr "نأسف، الرمز السري غير صحيح"
504
508
po/ast.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2016-05-16 14:07+0000\n"
11"PO-Revision-Date: 2016-05-16 14:07+0000\n"
12"Last-Translator: Xuacu Saturio <xuacusk8@gmail.com>\n"
12"Last-Translator: Xuacu Saturio <xuacusk8@gmail.com>\n"
13"Language-Team: Asturian <ast@li.org>\n"
13"Language-Team: Asturian <ast@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,20 +35,20 @@ msgstr "Colar"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Desanclar atayu"
36msgstr "Desanclar atayu"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Preséu bloquiáu"
40msgstr "Preséu bloquiáu"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr "Quedasti bloquiáu polos escesivos intentos fallíos de fras de pasu."
44msgstr "Quedasti bloquiáu polos escesivos intentos fallíos de fras de pasu."
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49"Quedasti bloquiáu polos escesivos intentos fallíos de códigu de pasu."
49"Quedasti bloquiáu polos escesivos intentos fallíos de códigu de pasu."
50
50
51−#: qml/Components/DelayedLockscreen.qml:74
51+#: qml/Components/DelayedLockscreen.qml:75
52#, qt-format
52#, qt-format
53msgid "Please wait %1 minute and then try again…"
53msgid "Please wait %1 minute and then try again…"
54msgid_plural "Please wait %1 minutes and then try again…"
54msgid_plural "Please wait %1 minutes and then try again…"
@@ -280,15 +280,15 @@ msgstr ""
280msgid "Closes the current window."
280msgid "Closes the current window."
281msgstr ""
281msgstr ""
282
282
283−#: qml/Components/Lockscreen.qml:231
283+#: qml/Components/Lockscreen.qml:239
284msgid "Return to Call"
284msgid "Return to Call"
285msgstr "Tornar a la llamada"
285msgstr "Tornar a la llamada"
286
286
287−#: qml/Components/Lockscreen.qml:231
287+#: qml/Components/Lockscreen.qml:239
288msgid "Emergency Call"
288msgid "Emergency Call"
289msgstr "Llamada d'emerxencia"
289msgstr "Llamada d'emerxencia"
290
290
291−#: qml/Components/Lockscreen.qml:263
291+#: qml/Components/Lockscreen.qml:271
292msgid "OK"
292msgid "OK"
293msgstr "Aceutar"
293msgstr "Aceutar"
294
294
@@ -427,10 +427,14 @@ msgstr ""
427"El preséu agora ta coneutáu con una pantalla esterna. Usa esta pantalla como "
427"El preséu agora ta coneutáu con una pantalla esterna. Usa esta pantalla como "
428"touch pad pa interactuar col punteru."
428"touch pad pa interactuar col punteru."
429
429
430−#: qml/Greeter/CoverPage.qml:119
430+#: qml/Greeter/CoverPage.qml:127
431msgid "Unlock"
431msgid "Unlock"
432msgstr "Desbloquiar"
432msgstr "Desbloquiar"
433
433
434+#: qml/Greeter/Greeter.qml:536
435+msgid "Try again"
436+msgstr ""
437+
434#: qml/Greeter/LoginList.qml:259
438#: qml/Greeter/LoginList.qml:259
435msgid "Retry"
439msgid "Retry"
436msgstr "Reintentar"
440msgstr "Reintentar"
@@ -467,34 +471,34 @@ msgstr ""
467"Si s'inxerta'l códigu de pasu incorreutamente, el to teléfonu va reafitase y "
471"Si s'inxerta'l códigu de pasu incorreutamente, el to teléfonu va reafitase y "
468"van desaniciase tolos datos personales."
472"van desaniciase tolos datos personales."
469
473
470−#: qml/Greeter/NarrowView.qml:116
474+#: qml/Greeter/NarrowView.qml:129
471#, qt-format
475#, qt-format
472msgid "Enter %1"
476msgid "Enter %1"
473msgstr "Introduz %1"
477msgstr "Introduz %1"
474
478
475−#: qml/Greeter/NarrowView.qml:117
479+#: qml/Greeter/NarrowView.qml:130
476msgid "Enter passphrase"
480msgid "Enter passphrase"
477msgstr "Introduz la fras de pasu"
481msgstr "Introduz la fras de pasu"
478
482
479−#: qml/Greeter/NarrowView.qml:118
483+#: qml/Greeter/NarrowView.qml:131
480msgid "Enter passcode"
484msgid "Enter passcode"
481msgstr "Introduz el códigu de pasu"
485msgstr "Introduz el códigu de pasu"
482
486
483−#: qml/Greeter/NarrowView.qml:119
487+#: qml/Greeter/NarrowView.qml:135
484#, qt-format
488#, qt-format
485msgid "Sorry, incorrect %1"
489msgid "Sorry, incorrect %1"
486msgstr "Sentímoslo, %1 incorreutu"
490msgstr "Sentímoslo, %1 incorreutu"
487
491
488−#: qml/Greeter/NarrowView.qml:120
492+#: qml/Greeter/NarrowView.qml:136
489msgid "Sorry, incorrect passphrase"
493msgid "Sorry, incorrect passphrase"
490msgstr "Sentímoslo, contraseña incorreuta"
494msgstr "Sentímoslo, contraseña incorreuta"
491
495
492−#: qml/Greeter/NarrowView.qml:121
496+#: qml/Greeter/NarrowView.qml:137
493msgctxt "passphrase"
497msgctxt "passphrase"
494msgid "Please re-enter"
498msgid "Please re-enter"
495msgstr "Vuelve a escribila"
499msgstr "Vuelve a escribila"
496
500
497−#: qml/Greeter/NarrowView.qml:122
501+#: qml/Greeter/NarrowView.qml:138
498msgid "Sorry, incorrect passcode"
502msgid "Sorry, incorrect passcode"
499msgstr "Sentímoslo, códigu de pasu incorreutu"
503msgstr "Sentímoslo, códigu de pasu incorreutu"
500
504
po/az.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2014-09-03 16:39+0000\n"
11"PO-Revision-Date: 2014-09-03 16:39+0000\n"
12"Last-Translator: Nicat Məmmədov <n1c4t97@gmail.com>\n"
12"Last-Translator: Nicat Məmmədov <n1c4t97@gmail.com>\n"
13"Language-Team: Azerbaijani <az@li.org>\n"
13"Language-Team: Azerbaijani <az@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Açma qısayolu"
36msgstr "Açma qısayolu"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr ""
40msgstr ""
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277msgid "Closes the current window."
277msgid "Closes the current window."
278msgstr ""
278msgstr ""
279
279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281msgid "Return to Call"
281msgid "Return to Call"
282msgstr ""
282msgstr ""
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Emergency Call"
285msgid "Emergency Call"
286msgstr "Zərurət zəngi"
286msgstr "Zərurət zəngi"
287
287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289msgid "OK"
289msgid "OK"
290msgstr "Oldu"
290msgstr "Oldu"
291
291
@@ -422,10 +422,14 @@ msgid ""
422"touch pad to interact with the pointer."
422"touch pad to interact with the pointer."
423msgstr ""
423msgstr ""
424
424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426msgid "Unlock"
426msgid "Unlock"
427msgstr ""
427msgstr ""
428
428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429#: qml/Greeter/LoginList.qml:259
433#: qml/Greeter/LoginList.qml:259
430msgid "Retry"
434msgid "Retry"
431msgstr ""
435msgstr ""
@@ -462,34 +466,34 @@ msgstr ""
462"Əgər açar kod yanlış daxil edilibsə, onda telefonunuz fabrika parametrlərinə "
466"Əgər açar kod yanlış daxil edilibsə, onda telefonunuz fabrika parametrlərinə "
463"geri qayıdacaq və bütün şəxsi məlumatlarınız silinəcək."
467"geri qayıdacaq və bütün şəxsi məlumatlarınız silinəcək."
464
468
465−#: qml/Greeter/NarrowView.qml:116
469+#: qml/Greeter/NarrowView.qml:129
466#, qt-format
470#, qt-format
467msgid "Enter %1"
471msgid "Enter %1"
468msgstr ""
472msgstr ""
469
473
470−#: qml/Greeter/NarrowView.qml:117
474+#: qml/Greeter/NarrowView.qml:130
471msgid "Enter passphrase"
475msgid "Enter passphrase"
472msgstr ""
476msgstr ""
473
477
474−#: qml/Greeter/NarrowView.qml:118
478+#: qml/Greeter/NarrowView.qml:131
475msgid "Enter passcode"
479msgid "Enter passcode"
476msgstr ""
480msgstr ""
477
481
478−#: qml/Greeter/NarrowView.qml:119
482+#: qml/Greeter/NarrowView.qml:135
479#, qt-format
483#, qt-format
480msgid "Sorry, incorrect %1"
484msgid "Sorry, incorrect %1"
481msgstr "Bağışlayın, %1 yanlışdır"
485msgstr "Bağışlayın, %1 yanlışdır"
482
486
483−#: qml/Greeter/NarrowView.qml:120
487+#: qml/Greeter/NarrowView.qml:136
484msgid "Sorry, incorrect passphrase"
488msgid "Sorry, incorrect passphrase"
485msgstr "Bağışlayın, açar söz yanlışdır"
489msgstr "Bağışlayın, açar söz yanlışdır"
486
490
487−#: qml/Greeter/NarrowView.qml:121
491+#: qml/Greeter/NarrowView.qml:137
488msgctxt "passphrase"
492msgctxt "passphrase"
489msgid "Please re-enter"
493msgid "Please re-enter"
490msgstr ""
494msgstr ""
491
495
492−#: qml/Greeter/NarrowView.qml:122
496+#: qml/Greeter/NarrowView.qml:138
493msgid "Sorry, incorrect passcode"
497msgid "Sorry, incorrect passcode"
494msgstr ""
498msgstr ""
495
499
po/be.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-12-13 13:12+0000\n"
11"PO-Revision-Date: 2015-12-13 13:12+0000\n"
12"Last-Translator: Mikhail_SaTuRn <mikhail_saturn@tut.by>\n"
12"Last-Translator: Mikhail_SaTuRn <mikhail_saturn@tut.by>\n"
13"Language-Team: Belarusian <be@li.org>\n"
13"Language-Team: Belarusian <be@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
17"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
19−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
19+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
20−"X-Generator: Launchpad (build 18097)\n"
20+"X-Generator: Launchpad (build 18111)\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -36,22 +36,22 @@ msgstr "Выйсці"
36msgid "Unpin shortcut"
36msgid "Unpin shortcut"
37msgstr "Адмацаваць кнопку"
37msgstr "Адмацаваць кнопку"
38
38
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
40msgid "Device Locked"
40msgid "Device Locked"
41msgstr "Прылада заблакаваная"
41msgstr "Прылада заблакаваная"
42
42
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
44msgid "You have been locked out due to too many failed passphrase attempts."
44msgid "You have been locked out due to too many failed passphrase attempts."
45msgstr ""
45msgstr ""
46"Вы былі заблакаваныя з-за занадта вялікай колькасці няўдалых спробаў."
46"Вы былі заблакаваныя з-за занадта вялікай колькасці няўдалых спробаў."
47
47
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
49msgid "You have been locked out due to too many failed passcode attempts."
49msgid "You have been locked out due to too many failed passcode attempts."
50msgstr ""
50msgstr ""
51"Вы былі заблакаваныя з-за занадта вялікай колькасці няўдалых спробаў уводу "
51"Вы былі заблакаваныя з-за занадта вялікай колькасці няўдалых спробаў уводу "
52"кода доступу."
52"кода доступу."
53
53
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
55#, qt-format
55#, qt-format
56msgid "Please wait %1 minute and then try again…"
56msgid "Please wait %1 minute and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
@@ -284,15 +284,15 @@ msgstr ""
284msgid "Closes the current window."
284msgid "Closes the current window."
285msgstr ""
285msgstr ""
286
286
287−#: qml/Components/Lockscreen.qml:231
287+#: qml/Components/Lockscreen.qml:239
288msgid "Return to Call"
288msgid "Return to Call"
289msgstr "Вярнуцца да выкліку"
289msgstr "Вярнуцца да выкліку"
290
290
291−#: qml/Components/Lockscreen.qml:231
291+#: qml/Components/Lockscreen.qml:239
292msgid "Emergency Call"
292msgid "Emergency Call"
293msgstr "Терміновы выклік"
293msgstr "Терміновы выклік"
294
294
295−#: qml/Components/Lockscreen.qml:263
295+#: qml/Components/Lockscreen.qml:271
296msgid "OK"
296msgid "OK"
297msgstr "Добра"
297msgstr "Добра"
298
298
@@ -429,10 +429,14 @@ msgid ""
429"touch pad to interact with the pointer."
429"touch pad to interact with the pointer."
430msgstr ""
430msgstr ""
431
431
432−#: qml/Greeter/CoverPage.qml:119
432+#: qml/Greeter/CoverPage.qml:127
433msgid "Unlock"
433msgid "Unlock"
434msgstr "Разблакаваць"
434msgstr "Разблакаваць"
435
435
436+#: qml/Greeter/Greeter.qml:536
437+msgid "Try again"
438+msgstr ""
439+
436#: qml/Greeter/LoginList.qml:259
440#: qml/Greeter/LoginList.qml:259
437msgid "Retry"
441msgid "Retry"
438msgstr "Паспрабаваць зноў"
442msgstr "Паспрабаваць зноў"
@@ -469,34 +473,34 @@ msgstr ""
469"Калі ўведзены код неправільны, Ваш тэлефон зробіць агульны скід налад і ўсе "
473"Калі ўведзены код неправільны, Ваш тэлефон зробіць агульны скід налад і ўсе "
470"асабістыя дадзеныя будуць выдалены."
474"асабістыя дадзеныя будуць выдалены."
471
475
472−#: qml/Greeter/NarrowView.qml:116
476+#: qml/Greeter/NarrowView.qml:129
473#, qt-format
477#, qt-format
474msgid "Enter %1"
478msgid "Enter %1"
475msgstr "Увядзіце %1"
479msgstr "Увядзіце %1"
476
480
477−#: qml/Greeter/NarrowView.qml:117
481+#: qml/Greeter/NarrowView.qml:130
478msgid "Enter passphrase"
482msgid "Enter passphrase"
479msgstr "Увядзіце пароль"
483msgstr "Увядзіце пароль"
480
484
481−#: qml/Greeter/NarrowView.qml:118
485+#: qml/Greeter/NarrowView.qml:131
482msgid "Enter passcode"
486msgid "Enter passcode"
483msgstr "Увядзіце код"
487msgstr "Увядзіце код"
484
488
485−#: qml/Greeter/NarrowView.qml:119
489+#: qml/Greeter/NarrowView.qml:135
486#, qt-format
490#, qt-format
487msgid "Sorry, incorrect %1"
491msgid "Sorry, incorrect %1"
488msgstr "Даруйце, некарэктны %1"
492msgstr "Даруйце, некарэктны %1"
489
493
490−#: qml/Greeter/NarrowView.qml:120
494+#: qml/Greeter/NarrowView.qml:136
491msgid "Sorry, incorrect passphrase"
495msgid "Sorry, incorrect passphrase"
492msgstr "Даруйце, някарэктны пароль"
496msgstr "Даруйце, някарэктны пароль"
493
497
494−#: qml/Greeter/NarrowView.qml:121
498+#: qml/Greeter/NarrowView.qml:137
495msgctxt "passphrase"
499msgctxt "passphrase"
496msgid "Please re-enter"
500msgid "Please re-enter"
497msgstr "Калі ласка, паўтарыце ўвод"
501msgstr "Калі ласка, паўтарыце ўвод"
498
502
499−#: qml/Greeter/NarrowView.qml:122
503+#: qml/Greeter/NarrowView.qml:138
500msgid "Sorry, incorrect passcode"
504msgid "Sorry, incorrect passcode"
501msgstr "Даруйце, некарэктны код"
505msgstr "Даруйце, некарэктны код"
502
506
po/bg.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-04-12 14:43+0000\n"
11"PO-Revision-Date: 2015-04-12 14:43+0000\n"
12"Last-Translator: George Karavasilev <kokoto-java@ubuntu.com>\n"
12"Last-Translator: George Karavasilev <kokoto-java@ubuntu.com>\n"
13"Language-Team: Bulgarian <bg@li.org>\n"
13"Language-Team: Bulgarian <bg@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr ""
36msgstr ""
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr ""
40msgstr ""
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr ""
279msgid "Closes the current window."
279msgid "Closes the current window."
280msgstr ""
280msgstr ""
281
281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283msgid "Return to Call"
283msgid "Return to Call"
284msgstr ""
284msgstr ""
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Emergency Call"
287msgid "Emergency Call"
288msgstr "Спешно повикване"
288msgstr "Спешно повикване"
289
289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291msgid "OK"
291msgid "OK"
292msgstr ""
292msgstr ""
293
293
@@ -424,10 +424,14 @@ msgid ""
424"touch pad to interact with the pointer."
424"touch pad to interact with the pointer."
425msgstr ""
425msgstr ""
426
426
427−#: qml/Greeter/CoverPage.qml:119
427+#: qml/Greeter/CoverPage.qml:127
428msgid "Unlock"
428msgid "Unlock"
429msgstr ""
429msgstr ""
430
430
431+#: qml/Greeter/Greeter.qml:536
432+msgid "Try again"
433+msgstr ""
434+
431#: qml/Greeter/LoginList.qml:259
435#: qml/Greeter/LoginList.qml:259
432msgid "Retry"
436msgid "Retry"
433msgstr ""
437msgstr ""
@@ -460,34 +464,34 @@ msgid ""
460"and all personal data will be deleted."
464"and all personal data will be deleted."
461msgstr ""
465msgstr ""
462
466
463−#: qml/Greeter/NarrowView.qml:116
467+#: qml/Greeter/NarrowView.qml:129
464#, qt-format
468#, qt-format
465msgid "Enter %1"
469msgid "Enter %1"
466msgstr ""
470msgstr ""
467
471
468−#: qml/Greeter/NarrowView.qml:117
472+#: qml/Greeter/NarrowView.qml:130
469msgid "Enter passphrase"
473msgid "Enter passphrase"
470msgstr ""
474msgstr ""
471
475
472−#: qml/Greeter/NarrowView.qml:118
476+#: qml/Greeter/NarrowView.qml:131
473msgid "Enter passcode"
477msgid "Enter passcode"
474msgstr ""
478msgstr ""
475
479
476−#: qml/Greeter/NarrowView.qml:119
480+#: qml/Greeter/NarrowView.qml:135
477#, qt-format
481#, qt-format
478msgid "Sorry, incorrect %1"
482msgid "Sorry, incorrect %1"
479msgstr ""
483msgstr ""
480
484
481−#: qml/Greeter/NarrowView.qml:120
485+#: qml/Greeter/NarrowView.qml:136
482msgid "Sorry, incorrect passphrase"
486msgid "Sorry, incorrect passphrase"
483msgstr ""
487msgstr ""
484
488
485−#: qml/Greeter/NarrowView.qml:121
489+#: qml/Greeter/NarrowView.qml:137
486msgctxt "passphrase"
490msgctxt "passphrase"
487msgid "Please re-enter"
491msgid "Please re-enter"
488msgstr ""
492msgstr ""
489
493
490−#: qml/Greeter/NarrowView.qml:122
494+#: qml/Greeter/NarrowView.qml:138
491msgid "Sorry, incorrect passcode"
495msgid "Sorry, incorrect passcode"
492msgstr ""
496msgstr ""
493
497
po/bn.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-11-27 19:38+0000\n"
11"PO-Revision-Date: 2015-11-27 19:38+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Bengali <bn@li.org>\n"
13"Language-Team: Bengali <bn@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "আনপিন"
36msgstr "আনপিন"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "ডিভাইসটি লক করা"
40msgstr "ডিভাইসটি লক করা"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr "অধিকবার পাসফ্রেজ ভুল দেওয়ার কারনে আপনার আইডি লক করা হয়েছে"
44msgstr "অধিকবার পাসফ্রেজ ভুল দেওয়ার কারনে আপনার আইডি লক করা হয়েছে"
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr "অধিকবার পাসকোড ভুল করার কারনে আপনার আইডি লক করা হয়েছে"
48msgstr "অধিকবার পাসকোড ভুল করার কারনে আপনার আইডি লক করা হয়েছে"
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr ""
279msgid "Closes the current window."
279msgid "Closes the current window."
280msgstr ""
280msgstr ""
281
281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283msgid "Return to Call"
283msgid "Return to Call"
284msgstr "কল এ ফিরে যান"
284msgstr "কল এ ফিরে যান"
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Emergency Call"
287msgid "Emergency Call"
288msgstr "জরুরী কল"
288msgstr "জরুরী কল"
289
289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291msgid "OK"
291msgid "OK"
292msgstr "ঠিক আছে"
292msgstr "ঠিক আছে"
293
293
@@ -424,10 +424,14 @@ msgid ""
424"touch pad to interact with the pointer."
424"touch pad to interact with the pointer."
425msgstr ""
425msgstr ""
426
426
427−#: qml/Greeter/CoverPage.qml:119
427+#: qml/Greeter/CoverPage.qml:127
428msgid "Unlock"
428msgid "Unlock"
429msgstr "লক খুলুন"
429msgstr "লক খুলুন"
430
430
431+#: qml/Greeter/Greeter.qml:536
432+msgid "Try again"
433+msgstr ""
434+
431#: qml/Greeter/LoginList.qml:259
435#: qml/Greeter/LoginList.qml:259
432msgid "Retry"
436msgid "Retry"
433msgstr ""
437msgstr ""
@@ -461,34 +465,34 @@ msgid ""
461"and all personal data will be deleted."
465"and all personal data will be deleted."
462msgstr "ভুল পাসকোড প্রদান করলে, আপনার ফোনটির সকল ব্যক্তিগত তথ্য মুছে যাবে।"
466msgstr "ভুল পাসকোড প্রদান করলে, আপনার ফোনটির সকল ব্যক্তিগত তথ্য মুছে যাবে।"
463
467
464−#: qml/Greeter/NarrowView.qml:116
468+#: qml/Greeter/NarrowView.qml:129
465#, qt-format
469#, qt-format
466msgid "Enter %1"
470msgid "Enter %1"
467msgstr "%1 লিখুন"
471msgstr "%1 লিখুন"
468
472
469−#: qml/Greeter/NarrowView.qml:117
473+#: qml/Greeter/NarrowView.qml:130
470msgid "Enter passphrase"
474msgid "Enter passphrase"
471msgstr "পাসওয়ার্ড লিখুন"
475msgstr "পাসওয়ার্ড লিখুন"
472
476
473−#: qml/Greeter/NarrowView.qml:118
477+#: qml/Greeter/NarrowView.qml:131
474msgid "Enter passcode"
478msgid "Enter passcode"
475msgstr "পাসকোড লিখুন"
479msgstr "পাসকোড লিখুন"
476
480
477−#: qml/Greeter/NarrowView.qml:119
481+#: qml/Greeter/NarrowView.qml:135
478#, qt-format
482#, qt-format
479msgid "Sorry, incorrect %1"
483msgid "Sorry, incorrect %1"
480msgstr "দুঃখিত, %1 ভুল হয়েছে"
484msgstr "দুঃখিত, %1 ভুল হয়েছে"
481
485
482−#: qml/Greeter/NarrowView.qml:120
486+#: qml/Greeter/NarrowView.qml:136
483msgid "Sorry, incorrect passphrase"
487msgid "Sorry, incorrect passphrase"
484msgstr "দুঃখিত, পাসওয়ার্ড ভুল হয়েছে"
488msgstr "দুঃখিত, পাসওয়ার্ড ভুল হয়েছে"
485
489
486−#: qml/Greeter/NarrowView.qml:121
490+#: qml/Greeter/NarrowView.qml:137
487msgctxt "passphrase"
491msgctxt "passphrase"
488msgid "Please re-enter"
492msgid "Please re-enter"
489msgstr "অনুগ্রহ করে আবার লিখুন"
493msgstr "অনুগ্রহ করে আবার লিখুন"
490
494
491−#: qml/Greeter/NarrowView.qml:122
495+#: qml/Greeter/NarrowView.qml:138
492msgid "Sorry, incorrect passcode"
496msgid "Sorry, incorrect passcode"
493msgstr "দুঃখিত, পাসকোড ভুল হয়েছে"
497msgstr "দুঃখিত, পাসকোড ভুল হয়েছে"
494
498
po/br.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2016-04-27 12:20+0000\n"
11"PO-Revision-Date: 2016-04-27 12:20+0000\n"
12"Last-Translator: Fohanno Thierry <thierry.fohanno@ofis-bzh.org>\n"
12"Last-Translator: Fohanno Thierry <thierry.fohanno@ofis-bzh.org>\n"
13"Language-Team: Breton <br@li.org>\n"
13"Language-Team: Breton <br@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,23 +35,23 @@ msgstr "Mont kuit"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Dispilhennañ ar verradenn"
36msgstr "Dispilhennañ ar verradenn"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Benveg prennet"
40msgstr "Benveg prennet"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45"Prennet eo bet ho penveg abalamour da re a daolioù-esae c'hwitet evit merkañ "
45"Prennet eo bet ho penveg abalamour da re a daolioù-esae c'hwitet evit merkañ "
46"ho frazenn-dremen."
46"ho frazenn-dremen."
47
47
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
49msgid "You have been locked out due to too many failed passcode attempts."
49msgid "You have been locked out due to too many failed passcode attempts."
50msgstr ""
50msgstr ""
51"Prennet eo bet ho penveg abalamour da re a daolioù-esae evit merkañ ho kod-"
51"Prennet eo bet ho penveg abalamour da re a daolioù-esae evit merkañ ho kod-"
52"tremen."
52"tremen."
53
53
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
55#, qt-format
55#, qt-format
56msgid "Please wait %1 minute and then try again…"
56msgid "Please wait %1 minute and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
@@ -283,15 +283,15 @@ msgstr ""
283msgid "Closes the current window."
283msgid "Closes the current window."
284msgstr ""
284msgstr ""
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Return to Call"
287msgid "Return to Call"
288msgstr "Distreiñ d'ar bellgomzadenn"
288msgstr "Distreiñ d'ar bellgomzadenn"
289
289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291msgid "Emergency Call"
291msgid "Emergency Call"
292msgstr "Pellgomzadenn vallus"
292msgstr "Pellgomzadenn vallus"
293
293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295msgid "OK"
295msgid "OK"
296msgstr "Mat eo"
296msgstr "Mat eo"
297
297
@@ -431,10 +431,14 @@ msgid ""
431"touch pad to interact with the pointer."
431"touch pad to interact with the pointer."
432msgstr ""
432msgstr ""
433
433
434−#: qml/Greeter/CoverPage.qml:119
434+#: qml/Greeter/CoverPage.qml:127
435msgid "Unlock"
435msgid "Unlock"
436msgstr "Dibrennañ"
436msgstr "Dibrennañ"
437
437
438+#: qml/Greeter/Greeter.qml:536
439+msgid "Try again"
440+msgstr ""
441+
438#: qml/Greeter/LoginList.qml:259
442#: qml/Greeter/LoginList.qml:259
439msgid "Retry"
443msgid "Retry"
440msgstr "Esaeañ en-dro"
444msgstr "Esaeañ en-dro"
@@ -471,34 +475,34 @@ msgstr ""
471"Ma vez ebarzhet ur c'hod-tremen direizh, e vo adderaouekaet ho pellgomzer "
475"Ma vez ebarzhet ur c'hod-tremen direizh, e vo adderaouekaet ho pellgomzer "
472"gant arventennoù al labouradeg hag e vo diverket an holl roadennoù personel."
476"gant arventennoù al labouradeg hag e vo diverket an holl roadennoù personel."
473
477
474−#: qml/Greeter/NarrowView.qml:116
478+#: qml/Greeter/NarrowView.qml:129
475#, qt-format
479#, qt-format
476msgid "Enter %1"
480msgid "Enter %1"
477msgstr "Merkañ %1"
481msgstr "Merkañ %1"
478
482
479−#: qml/Greeter/NarrowView.qml:117
483+#: qml/Greeter/NarrowView.qml:130
480msgid "Enter passphrase"
484msgid "Enter passphrase"
481msgstr "Merkañ ar frazenn-dremen"
485msgstr "Merkañ ar frazenn-dremen"
482
486
483−#: qml/Greeter/NarrowView.qml:118
487+#: qml/Greeter/NarrowView.qml:131
484msgid "Enter passcode"
488msgid "Enter passcode"
485msgstr "Merkañ ar c'hod-tremen"
489msgstr "Merkañ ar c'hod-tremen"
486
490
487−#: qml/Greeter/NarrowView.qml:119
491+#: qml/Greeter/NarrowView.qml:135
488#, qt-format
492#, qt-format
489msgid "Sorry, incorrect %1"
493msgid "Sorry, incorrect %1"
490msgstr "Siwazh, %1 direizh"
494msgstr "Siwazh, %1 direizh"
491
495
492−#: qml/Greeter/NarrowView.qml:120
496+#: qml/Greeter/NarrowView.qml:136
493msgid "Sorry, incorrect passphrase"
497msgid "Sorry, incorrect passphrase"
494msgstr "Siwazh, frazenn-dremen direizh"
498msgstr "Siwazh, frazenn-dremen direizh"
495
499
496−#: qml/Greeter/NarrowView.qml:121
500+#: qml/Greeter/NarrowView.qml:137
497msgctxt "passphrase"
501msgctxt "passphrase"
498msgid "Please re-enter"
502msgid "Please re-enter"
499msgstr "Adverkañ, mar plij"
503msgstr "Adverkañ, mar plij"
500
504
501−#: qml/Greeter/NarrowView.qml:122
505+#: qml/Greeter/NarrowView.qml:138
502msgid "Sorry, incorrect passcode"
506msgid "Sorry, incorrect passcode"
503msgstr "Digarezit, kod-tremen direizh"
507msgstr "Digarezit, kod-tremen direizh"
504
508
po/bs.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-12-01 20:06+0000\n"
11"PO-Revision-Date: 2015-12-01 20:06+0000\n"
12"Last-Translator: Kenan Gutić <Unknown>\n"
12"Last-Translator: Kenan Gutić <Unknown>\n"
13"Language-Team: Bosnian <bs@li.org>\n"
13"Language-Team: Bosnian <bs@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
19+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
20−"X-Generator: Launchpad (build 18097)\n"
20+"X-Generator: Launchpad (build 18111)\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -36,19 +36,19 @@ msgstr "Napusti"
36msgid "Unpin shortcut"
36msgid "Unpin shortcut"
37msgstr "Otkačite prečicu"
37msgstr "Otkačite prečicu"
38
38
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
40msgid "Device Locked"
40msgid "Device Locked"
41msgstr "Uređaj zaključan"
41msgstr "Uređaj zaključan"
42
42
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
44msgid "You have been locked out due to too many failed passphrase attempts."
44msgid "You have been locked out due to too many failed passphrase attempts."
45msgstr "Izbačeni ste zbog previše neuspjelih pokušaja unosa pristupne fraze."
45msgstr "Izbačeni ste zbog previše neuspjelih pokušaja unosa pristupne fraze."
46
46
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
48msgid "You have been locked out due to too many failed passcode attempts."
48msgid "You have been locked out due to too many failed passcode attempts."
49msgstr "Izbačeni ste zbog previše neuspjelih pokušaja unosa pristupnog koda."
49msgstr "Izbačeni ste zbog previše neuspjelih pokušaja unosa pristupnog koda."
50
50
51−#: qml/Components/DelayedLockscreen.qml:74
51+#: qml/Components/DelayedLockscreen.qml:75
52#, qt-format
52#, qt-format
53msgid "Please wait %1 minute and then try again…"
53msgid "Please wait %1 minute and then try again…"
54msgid_plural "Please wait %1 minutes and then try again…"
54msgid_plural "Please wait %1 minutes and then try again…"
@@ -281,15 +281,15 @@ msgstr ""
281msgid "Closes the current window."
281msgid "Closes the current window."
282msgstr ""
282msgstr ""
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Return to Call"
285msgid "Return to Call"
286msgstr "Povratak na Poziv"
286msgstr "Povratak na Poziv"
287
287
288−#: qml/Components/Lockscreen.qml:231
288+#: qml/Components/Lockscreen.qml:239
289msgid "Emergency Call"
289msgid "Emergency Call"
290msgstr "Hitan Poziv"
290msgstr "Hitan Poziv"
291
291
292−#: qml/Components/Lockscreen.qml:263
292+#: qml/Components/Lockscreen.qml:271
293msgid "OK"
293msgid "OK"
294msgstr "U redu"
294msgstr "U redu"
295
295
@@ -428,10 +428,14 @@ msgid ""
428"touch pad to interact with the pointer."
428"touch pad to interact with the pointer."
429msgstr ""
429msgstr ""
430
430
431−#: qml/Greeter/CoverPage.qml:119
431+#: qml/Greeter/CoverPage.qml:127
432msgid "Unlock"
432msgid "Unlock"
433msgstr "Otključaj"
433msgstr "Otključaj"
434
434
435+#: qml/Greeter/Greeter.qml:536
436+msgid "Try again"
437+msgstr ""
438+
435#: qml/Greeter/LoginList.qml:259
439#: qml/Greeter/LoginList.qml:259
436msgid "Retry"
440msgid "Retry"
437msgstr "Ponovi"
441msgstr "Ponovi"
@@ -468,34 +472,34 @@ msgstr ""
468"Ako je pristupni kod unesen netačno, vaš telefon će sprovesti reset na "
472"Ako je pristupni kod unesen netačno, vaš telefon će sprovesti reset na "
469"fabričke postavke i svi osobni podaci će biti izbrisani."
473"fabričke postavke i svi osobni podaci će biti izbrisani."
470
474
471−#: qml/Greeter/NarrowView.qml:116
475+#: qml/Greeter/NarrowView.qml:129
472#, qt-format
476#, qt-format
473msgid "Enter %1"
477msgid "Enter %1"
474msgstr "Unesite %1"
478msgstr "Unesite %1"
475
479
476−#: qml/Greeter/NarrowView.qml:117
480+#: qml/Greeter/NarrowView.qml:130
477msgid "Enter passphrase"
481msgid "Enter passphrase"
478msgstr "Unesite propusnu frazu"
482msgstr "Unesite propusnu frazu"
479
483
480−#: qml/Greeter/NarrowView.qml:118
484+#: qml/Greeter/NarrowView.qml:131
481msgid "Enter passcode"
485msgid "Enter passcode"
482msgstr "Unesite pristupni kod"
486msgstr "Unesite pristupni kod"
483
487
484−#: qml/Greeter/NarrowView.qml:119
488+#: qml/Greeter/NarrowView.qml:135
485#, qt-format
489#, qt-format
486msgid "Sorry, incorrect %1"
490msgid "Sorry, incorrect %1"
487msgstr "Izvinite, netačno %1"
491msgstr "Izvinite, netačno %1"
488
492
489−#: qml/Greeter/NarrowView.qml:120
493+#: qml/Greeter/NarrowView.qml:136
490msgid "Sorry, incorrect passphrase"
494msgid "Sorry, incorrect passphrase"
491msgstr "Izvinite, netačna propusna fraza"
495msgstr "Izvinite, netačna propusna fraza"
492
496
493−#: qml/Greeter/NarrowView.qml:121
497+#: qml/Greeter/NarrowView.qml:137
494msgctxt "passphrase"
498msgctxt "passphrase"
495msgid "Please re-enter"
499msgid "Please re-enter"
496msgstr "Molim ponovo unesite"
500msgstr "Molim ponovo unesite"
497
501
498−#: qml/Greeter/NarrowView.qml:122
502+#: qml/Greeter/NarrowView.qml:138
499msgid "Sorry, incorrect passcode"
503msgid "Sorry, incorrect passcode"
500msgstr "Izvinite, netačan pristupni kod"
504msgstr "Izvinite, netačan pristupni kod"
501
505
po/ca.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-07-04 09:48+0000\n"
11"PO-Revision-Date: 2015-07-04 09:48+0000\n"
12"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
12"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
13"Language-Team: Catalan <ca@li.org>\n"
13"Language-Team: Catalan <ca@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,23 +35,23 @@ msgstr "Surt"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Desenganxa la drecera"
36msgstr "Desenganxa la drecera"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Dispositiu bloquejat"
40msgstr "Dispositiu bloquejat"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45"Se us ha bloquejat l'accés al dispositiu. Heu sobrepassat el nombre "
45"Se us ha bloquejat l'accés al dispositiu. Heu sobrepassat el nombre "
46"d'intents d'introducció de la contrasenya."
46"d'intents d'introducció de la contrasenya."
47
47
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
49msgid "You have been locked out due to too many failed passcode attempts."
49msgid "You have been locked out due to too many failed passcode attempts."
50msgstr ""
50msgstr ""
51"Se us ha bloquejat l'accés al dispositiu. Heu sobrepassat el nombre "
51"Se us ha bloquejat l'accés al dispositiu. Heu sobrepassat el nombre "
52"d'intents d'introducció del codi d'accés."
52"d'intents d'introducció del codi d'accés."
53
53
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
55#, qt-format
55#, qt-format
56msgid "Please wait %1 minute and then try again…"
56msgid "Please wait %1 minute and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
@@ -283,15 +283,15 @@ msgstr ""
283msgid "Closes the current window."
283msgid "Closes the current window."
284msgstr ""
284msgstr ""
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Return to Call"
287msgid "Return to Call"
288msgstr "Torna a la trucada"
288msgstr "Torna a la trucada"
289
289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291msgid "Emergency Call"
291msgid "Emergency Call"
292msgstr "Trucada d'emergència"
292msgstr "Trucada d'emergència"
293
293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295msgid "OK"
295msgid "OK"
296msgstr "D'acord"
296msgstr "D'acord"
297
297
@@ -428,10 +428,14 @@ msgid ""
428"touch pad to interact with the pointer."
428"touch pad to interact with the pointer."
429msgstr ""
429msgstr ""
430
430
431−#: qml/Greeter/CoverPage.qml:119
431+#: qml/Greeter/CoverPage.qml:127
432msgid "Unlock"
432msgid "Unlock"
433msgstr "Desbloca"
433msgstr "Desbloca"
434
434
435+#: qml/Greeter/Greeter.qml:536
436+msgid "Try again"
437+msgstr ""
438+
435#: qml/Greeter/LoginList.qml:259
439#: qml/Greeter/LoginList.qml:259
436msgid "Retry"
440msgid "Retry"
437msgstr "Torna-ho a provar"
441msgstr "Torna-ho a provar"
@@ -470,34 +474,34 @@ msgstr ""
470"reinicialitzarà a l'estat de fàbrica i se suprimiran totes les dades "
474"reinicialitzarà a l'estat de fàbrica i se suprimiran totes les dades "
471"personals."
475"personals."
472
476
473−#: qml/Greeter/NarrowView.qml:116
477+#: qml/Greeter/NarrowView.qml:129
474#, qt-format
478#, qt-format
475msgid "Enter %1"
479msgid "Enter %1"
476msgstr "Introduïu: %1"
480msgstr "Introduïu: %1"
477
481
478−#: qml/Greeter/NarrowView.qml:117
482+#: qml/Greeter/NarrowView.qml:130
479msgid "Enter passphrase"
483msgid "Enter passphrase"
480msgstr "Introduïu la contrasenya"
484msgstr "Introduïu la contrasenya"
481
485
482−#: qml/Greeter/NarrowView.qml:118
486+#: qml/Greeter/NarrowView.qml:131
483msgid "Enter passcode"
487msgid "Enter passcode"
484msgstr "Introduïu el codi d'accés"
488msgstr "Introduïu el codi d'accés"
485
489
486−#: qml/Greeter/NarrowView.qml:119
490+#: qml/Greeter/NarrowView.qml:135
487#, qt-format
491#, qt-format
488msgid "Sorry, incorrect %1"
492msgid "Sorry, incorrect %1"
489msgstr "Incorrecte (%1)"
493msgstr "Incorrecte (%1)"
490
494
491−#: qml/Greeter/NarrowView.qml:120
495+#: qml/Greeter/NarrowView.qml:136
492msgid "Sorry, incorrect passphrase"
496msgid "Sorry, incorrect passphrase"
493msgstr "La contrasenya no és correcta"
497msgstr "La contrasenya no és correcta"
494
498
495−#: qml/Greeter/NarrowView.qml:121
499+#: qml/Greeter/NarrowView.qml:137
496msgctxt "passphrase"
500msgctxt "passphrase"
497msgid "Please re-enter"
501msgid "Please re-enter"
498msgstr "Torneu-ho a introduir"
502msgstr "Torneu-ho a introduir"
499
503
500−#: qml/Greeter/NarrowView.qml:122
504+#: qml/Greeter/NarrowView.qml:138
501msgid "Sorry, incorrect passcode"
505msgid "Sorry, incorrect passcode"
502msgstr "El codi d'accés no és correcte"
506msgstr "El codi d'accés no és correcte"
503
507
po/ca@valencia.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-02-22 15:22+0000\n"
11"PO-Revision-Date: 2015-02-22 15:22+0000\n"
12"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
12"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
13"Language-Team: Catalan <ca@li.org>\n"
13"Language-Team: Catalan <ca@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,23 +35,23 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Desenganxa la drecera"
36msgstr "Desenganxa la drecera"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Dispositiu bloquejat"
40msgstr "Dispositiu bloquejat"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45"Se vos ha bloquejat l'accés al dispositiu. Heu sobrepassat el nombre "
45"Se vos ha bloquejat l'accés al dispositiu. Heu sobrepassat el nombre "
46"d'intents d'introducció de la contrasenya."
46"d'intents d'introducció de la contrasenya."
47
47
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
49msgid "You have been locked out due to too many failed passcode attempts."
49msgid "You have been locked out due to too many failed passcode attempts."
50msgstr ""
50msgstr ""
51"Se vos ha bloquejat l'accés al dispositiu. Heu sobrepassat el nombre "
51"Se vos ha bloquejat l'accés al dispositiu. Heu sobrepassat el nombre "
52"d'intents d'introducció del codi d'accés."
52"d'intents d'introducció del codi d'accés."
53
53
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
55#, qt-format
55#, qt-format
56msgid "Please wait %1 minute and then try again…"
56msgid "Please wait %1 minute and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
@@ -283,15 +283,15 @@ msgstr ""
283msgid "Closes the current window."
283msgid "Closes the current window."
284msgstr ""
284msgstr ""
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Return to Call"
287msgid "Return to Call"
288msgstr "Torna a la cridada"
288msgstr "Torna a la cridada"
289
289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291msgid "Emergency Call"
291msgid "Emergency Call"
292msgstr "Cridada d'emergència"
292msgstr "Cridada d'emergència"
293
293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295msgid "OK"
295msgid "OK"
296msgstr "D'acord"
296msgstr "D'acord"
297
297
@@ -428,10 +428,14 @@ msgid ""
428"touch pad to interact with the pointer."
428"touch pad to interact with the pointer."
429msgstr ""
429msgstr ""
430
430
431−#: qml/Greeter/CoverPage.qml:119
431+#: qml/Greeter/CoverPage.qml:127
432msgid "Unlock"
432msgid "Unlock"
433msgstr "Desbloca"
433msgstr "Desbloca"
434
434
435+#: qml/Greeter/Greeter.qml:536
436+msgid "Try again"
437+msgstr ""
438+
435#: qml/Greeter/LoginList.qml:259
439#: qml/Greeter/LoginList.qml:259
436msgid "Retry"
440msgid "Retry"
437msgstr ""
441msgstr ""
@@ -470,34 +474,34 @@ msgstr ""
470"reinicialitzarà a l'estat de fàbrica i se suprimiran totes les dades "
474"reinicialitzarà a l'estat de fàbrica i se suprimiran totes les dades "
471"personals."
475"personals."
472
476
473−#: qml/Greeter/NarrowView.qml:116
477+#: qml/Greeter/NarrowView.qml:129
474#, qt-format
478#, qt-format
475msgid "Enter %1"
479msgid "Enter %1"
476msgstr "Introduïu: %1"
480msgstr "Introduïu: %1"
477
481
478−#: qml/Greeter/NarrowView.qml:117
482+#: qml/Greeter/NarrowView.qml:130
479msgid "Enter passphrase"
483msgid "Enter passphrase"
480msgstr "Introduïu la contrasenya"
484msgstr "Introduïu la contrasenya"
481
485
482−#: qml/Greeter/NarrowView.qml:118
486+#: qml/Greeter/NarrowView.qml:131
483msgid "Enter passcode"
487msgid "Enter passcode"
484msgstr "Introduïu el codi d'accés"
488msgstr "Introduïu el codi d'accés"
485
489
486−#: qml/Greeter/NarrowView.qml:119
490+#: qml/Greeter/NarrowView.qml:135
487#, qt-format
491#, qt-format
488msgid "Sorry, incorrect %1"
492msgid "Sorry, incorrect %1"
489msgstr "Incorrecte (%1)"
493msgstr "Incorrecte (%1)"
490
494
491−#: qml/Greeter/NarrowView.qml:120
495+#: qml/Greeter/NarrowView.qml:136
492msgid "Sorry, incorrect passphrase"
496msgid "Sorry, incorrect passphrase"
493msgstr "La contrasenya no és correcta"
497msgstr "La contrasenya no és correcta"
494
498
495−#: qml/Greeter/NarrowView.qml:121
499+#: qml/Greeter/NarrowView.qml:137
496msgctxt "passphrase"
500msgctxt "passphrase"
497msgid "Please re-enter"
501msgid "Please re-enter"
498msgstr ""
502msgstr ""
499
503
500−#: qml/Greeter/NarrowView.qml:122
504+#: qml/Greeter/NarrowView.qml:138
501msgid "Sorry, incorrect passcode"
505msgid "Sorry, incorrect passcode"
502msgstr "El codi d'accés no és correcte"
506msgstr "El codi d'accés no és correcte"
503
507
po/ce.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-02-15 04:01+0000\n"
11"PO-Revision-Date: 2015-02-15 04:01+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Chechen <ce@li.org>\n"
13"Language-Team: Chechen <ce@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr ""
36msgstr ""
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr ""
40msgstr ""
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277msgid "Closes the current window."
277msgid "Closes the current window."
278msgstr ""
278msgstr ""
279
279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281msgid "Return to Call"
281msgid "Return to Call"
282msgstr ""
282msgstr ""
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Emergency Call"
285msgid "Emergency Call"
286msgstr ""
286msgstr ""
287
287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289msgid "OK"
289msgid "OK"
290msgstr ""
290msgstr ""
291
291
@@ -422,10 +422,14 @@ msgid ""
422"touch pad to interact with the pointer."
422"touch pad to interact with the pointer."
423msgstr ""
423msgstr ""
424
424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426msgid "Unlock"
426msgid "Unlock"
427msgstr ""
427msgstr ""
428
428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429#: qml/Greeter/LoginList.qml:259
433#: qml/Greeter/LoginList.qml:259
430msgid "Retry"
434msgid "Retry"
431msgstr ""
435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458"and all personal data will be deleted."
462"and all personal data will be deleted."
459msgstr ""
463msgstr ""
460
464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462#, qt-format
466#, qt-format
463msgid "Enter %1"
467msgid "Enter %1"
464msgstr ""
468msgstr ""
465
469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467msgid "Enter passphrase"
471msgid "Enter passphrase"
468msgstr ""
472msgstr ""
469
473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471msgid "Enter passcode"
475msgid "Enter passcode"
472msgstr ""
476msgstr ""
473
477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475#, qt-format
479#, qt-format
476msgid "Sorry, incorrect %1"
480msgid "Sorry, incorrect %1"
477msgstr ""
481msgstr ""
478
482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480msgid "Sorry, incorrect passphrase"
484msgid "Sorry, incorrect passphrase"
481msgstr ""
485msgstr ""
482
486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484msgctxt "passphrase"
488msgctxt "passphrase"
485msgid "Please re-enter"
489msgid "Please re-enter"
486msgstr ""
490msgstr ""
487
491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489msgid "Sorry, incorrect passcode"
493msgid "Sorry, incorrect passcode"
490msgstr ""
494msgstr ""
491
495
po/ckb.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2014-01-21 11:05+0000\n"
11"PO-Revision-Date: 2014-01-21 11:05+0000\n"
12"Last-Translator: Aras <aras.noori@gmail.com>\n"
12"Last-Translator: Aras <aras.noori@gmail.com>\n"
13"Language-Team: Kurdish (Sorani) <ckb@li.org>\n"
13"Language-Team: Kurdish (Sorani) <ckb@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr ""
36msgstr ""
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr ""
40msgstr ""
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277msgid "Closes the current window."
277msgid "Closes the current window."
278msgstr ""
278msgstr ""
279
279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281msgid "Return to Call"
281msgid "Return to Call"
282msgstr ""
282msgstr ""
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Emergency Call"
285msgid "Emergency Call"
286msgstr "هێڵی فریاگوزاری"
286msgstr "هێڵی فریاگوزاری"
287
287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289msgid "OK"
289msgid "OK"
290msgstr ""
290msgstr ""
291
291
@@ -422,10 +422,14 @@ msgid ""
422"touch pad to interact with the pointer."
422"touch pad to interact with the pointer."
423msgstr ""
423msgstr ""
424
424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426msgid "Unlock"
426msgid "Unlock"
427msgstr ""
427msgstr ""
428
428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429#: qml/Greeter/LoginList.qml:259
433#: qml/Greeter/LoginList.qml:259
430msgid "Retry"
434msgid "Retry"
431msgstr ""
435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458"and all personal data will be deleted."
462"and all personal data will be deleted."
459msgstr ""
463msgstr ""
460
464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462#, qt-format
466#, qt-format
463msgid "Enter %1"
467msgid "Enter %1"
464msgstr ""
468msgstr ""
465
469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467msgid "Enter passphrase"
471msgid "Enter passphrase"
468msgstr ""
472msgstr ""
469
473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471msgid "Enter passcode"
475msgid "Enter passcode"
472msgstr ""
476msgstr ""
473
477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475#, qt-format
479#, qt-format
476msgid "Sorry, incorrect %1"
480msgid "Sorry, incorrect %1"
477msgstr ""
481msgstr ""
478
482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480msgid "Sorry, incorrect passphrase"
484msgid "Sorry, incorrect passphrase"
481msgstr ""
485msgstr ""
482
486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484msgctxt "passphrase"
488msgctxt "passphrase"
485msgid "Please re-enter"
489msgid "Please re-enter"
486msgstr ""
490msgstr ""
487
491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489msgid "Sorry, incorrect passcode"
493msgid "Sorry, incorrect passcode"
490msgstr ""
494msgstr ""
491
495
po/co.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2016-05-24 10:40+0000\n"
11"PO-Revision-Date: 2016-05-24 10:40+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Corsican <co@li.org>\n"
13"Language-Team: Corsican <co@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,23 +35,23 @@ msgstr "Abbandunà"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Toglie l'accurtatoghju"
36msgstr "Toglie l'accurtatoghju"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Dispusitivu bluccatu"
40msgstr "Dispusitivu bluccatu"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45"Site stati bluccati per troppi tentativi fallati d'inserimentu di a frasa "
45"Site stati bluccati per troppi tentativi fallati d'inserimentu di a frasa "
46"d'ordine."
46"d'ordine."
47
47
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
49msgid "You have been locked out due to too many failed passcode attempts."
49msgid "You have been locked out due to too many failed passcode attempts."
50msgstr ""
50msgstr ""
51"Site stati bluccati per troppi tentativi fallati d'inserimentu di u codice "
51"Site stati bluccati per troppi tentativi fallati d'inserimentu di u codice "
52"d'accessu."
52"d'accessu."
53
53
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
55#, qt-format
55#, qt-format
56msgid "Please wait %1 minute and then try again…"
56msgid "Please wait %1 minute and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
@@ -283,15 +283,15 @@ msgstr ""
283msgid "Closes the current window."
283msgid "Closes the current window."
284msgstr ""
284msgstr ""
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Return to Call"
287msgid "Return to Call"
288msgstr "Turnà à a Chjamata"
288msgstr "Turnà à a Chjamata"
289
289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291msgid "Emergency Call"
291msgid "Emergency Call"
292msgstr "Chjamata d'emergenza"
292msgstr "Chjamata d'emergenza"
293
293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295msgid "OK"
295msgid "OK"
296msgstr "OK"
296msgstr "OK"
297
297
@@ -432,10 +432,14 @@ msgstr ""
432"U vostru dispusitivu avà hè cunnessu à unu screnu esternu. Usà u screnu di "
432"U vostru dispusitivu avà hè cunnessu à unu screnu esternu. Usà u screnu di "
433"ssu dispusitivu cum'è un tappettu tattile per guvernà u puntatore."
433"ssu dispusitivu cum'è un tappettu tattile per guvernà u puntatore."
434
434
435−#: qml/Greeter/CoverPage.qml:119
435+#: qml/Greeter/CoverPage.qml:127
436msgid "Unlock"
436msgid "Unlock"
437msgstr "Sbluccà"
437msgstr "Sbluccà"
438
438
439+#: qml/Greeter/Greeter.qml:536
440+msgid "Try again"
441+msgstr ""
442+
439#: qml/Greeter/LoginList.qml:259
443#: qml/Greeter/LoginList.qml:259
440msgid "Retry"
444msgid "Retry"
441msgstr "Turnà à pruvà"
445msgstr "Turnà à pruvà"
@@ -472,34 +476,34 @@ msgstr ""
472"Si u codice d'accessu hè erratu, u telefunu serà reinizializatu, è tutti i "
476"Si u codice d'accessu hè erratu, u telefunu serà reinizializatu, è tutti i "
473"dati persunali serannu perduti."
477"dati persunali serannu perduti."
474
478
475−#: qml/Greeter/NarrowView.qml:116
479+#: qml/Greeter/NarrowView.qml:129
476#, qt-format
480#, qt-format
477msgid "Enter %1"
481msgid "Enter %1"
478msgstr "Inserì %1"
482msgstr "Inserì %1"
479
483
480−#: qml/Greeter/NarrowView.qml:117
484+#: qml/Greeter/NarrowView.qml:130
481msgid "Enter passphrase"
485msgid "Enter passphrase"
482msgstr "Inserì a frasa d'ordine"
486msgstr "Inserì a frasa d'ordine"
483
487
484−#: qml/Greeter/NarrowView.qml:118
488+#: qml/Greeter/NarrowView.qml:131
485msgid "Enter passcode"
489msgid "Enter passcode"
486msgstr "Inserì u codice d'accessu"
490msgstr "Inserì u codice d'accessu"
487
491
488−#: qml/Greeter/NarrowView.qml:119
492+#: qml/Greeter/NarrowView.qml:135
489#, qt-format
493#, qt-format
490msgid "Sorry, incorrect %1"
494msgid "Sorry, incorrect %1"
491msgstr "Spiacenti, %1 micca currettu"
495msgstr "Spiacenti, %1 micca currettu"
492
496
493−#: qml/Greeter/NarrowView.qml:120
497+#: qml/Greeter/NarrowView.qml:136
494msgid "Sorry, incorrect passphrase"
498msgid "Sorry, incorrect passphrase"
495msgstr "Spiacenti, frasa d'ordine micca curretta"
499msgstr "Spiacenti, frasa d'ordine micca curretta"
496
500
497−#: qml/Greeter/NarrowView.qml:121
501+#: qml/Greeter/NarrowView.qml:137
498msgctxt "passphrase"
502msgctxt "passphrase"
499msgid "Please re-enter"
503msgid "Please re-enter"
500msgstr "Ripete l'inserimentu"
504msgstr "Ripete l'inserimentu"
501
505
502−#: qml/Greeter/NarrowView.qml:122
506+#: qml/Greeter/NarrowView.qml:138
503msgid "Sorry, incorrect passcode"
507msgid "Sorry, incorrect passcode"
504msgstr "Spiacenti, codice d'accessu micca currettu"
508msgstr "Spiacenti, codice d'accessu micca currettu"
505
509
po/cs.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-07-07 10:44+0000\n"
11"PO-Revision-Date: 2015-07-07 10:44+0000\n"
12"Last-Translator: Vojtěch Daněk <vdanek@outlook.com>\n"
12"Last-Translator: Vojtěch Daněk <vdanek@outlook.com>\n"
13"Language-Team: Czech <cs@li.org>\n"
13"Language-Team: Czech <cs@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
17"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"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20"Language: cs\n"
20"Language: cs\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -36,21 +36,21 @@ msgstr ""
36msgid "Unpin shortcut"
36msgid "Unpin shortcut"
37msgstr "Odpíchnout zkratku"
37msgstr "Odpíchnout zkratku"
38
38
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
40msgid "Device Locked"
40msgid "Device Locked"
41msgstr "Zařízení uzamčeno"
41msgstr "Zařízení uzamčeno"
42
42
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
44msgid "You have been locked out due to too many failed passphrase attempts."
44msgid "You have been locked out due to too many failed passphrase attempts."
45msgstr ""
45msgstr ""
46"Zařízení bylo uzamčeno z důvodu mnoha neúspěšných pokusů o přihlášení."
46"Zařízení bylo uzamčeno z důvodu mnoha neúspěšných pokusů o přihlášení."
47
47
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
49msgid "You have been locked out due to too many failed passcode attempts."
49msgid "You have been locked out due to too many failed passcode attempts."
50msgstr ""
50msgstr ""
51"Zařízení bylo uzamčeno z důvodu mnoha neúspěšných pokusů o přihlášení."
51"Zařízení bylo uzamčeno z důvodu mnoha neúspěšných pokusů o přihlášení."
52
52
53−#: qml/Components/DelayedLockscreen.qml:74
53+#: qml/Components/DelayedLockscreen.qml:75
54#, qt-format
54#, qt-format
55msgid "Please wait %1 minute and then try again…"
55msgid "Please wait %1 minute and then try again…"
56msgid_plural "Please wait %1 minutes and then try again…"
56msgid_plural "Please wait %1 minutes and then try again…"
@@ -283,15 +283,15 @@ msgstr ""
283msgid "Closes the current window."
283msgid "Closes the current window."
284msgstr ""
284msgstr ""
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Return to Call"
287msgid "Return to Call"
288msgstr "Vrátit se k hovoru"
288msgstr "Vrátit se k hovoru"
289
289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291msgid "Emergency Call"
291msgid "Emergency Call"
292msgstr "Tísňové volání"
292msgstr "Tísňové volání"
293
293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295msgid "OK"
295msgid "OK"
296msgstr "OK"
296msgstr "OK"
297
297
@@ -428,10 +428,14 @@ msgid ""
428"touch pad to interact with the pointer."
428"touch pad to interact with the pointer."
429msgstr ""
429msgstr ""
430
430
431−#: qml/Greeter/CoverPage.qml:119
431+#: qml/Greeter/CoverPage.qml:127
432msgid "Unlock"
432msgid "Unlock"
433msgstr "Odemknout"
433msgstr "Odemknout"
434
434
435+#: qml/Greeter/Greeter.qml:536
436+msgid "Try again"
437+msgstr ""
438+
435#: qml/Greeter/LoginList.qml:259
439#: qml/Greeter/LoginList.qml:259
436msgid "Retry"
440msgid "Retry"
437msgstr "Znovu"
441msgstr "Znovu"
@@ -468,34 +472,34 @@ msgstr ""
468"Pokud bude heslo zadáno nesprávně, bude telefon obnoven do továrního "
472"Pokud bude heslo zadáno nesprávně, bude telefon obnoven do továrního "
469"nastavení a všechna osobní data budou smazána."
473"nastavení a všechna osobní data budou smazána."
470
474
471−#: qml/Greeter/NarrowView.qml:116
475+#: qml/Greeter/NarrowView.qml:129
472#, qt-format
476#, qt-format
473msgid "Enter %1"
477msgid "Enter %1"
474msgstr "Vložte %1"
478msgstr "Vložte %1"
475
479
476−#: qml/Greeter/NarrowView.qml:117
480+#: qml/Greeter/NarrowView.qml:130
477msgid "Enter passphrase"
481msgid "Enter passphrase"
478msgstr "Vložte heslo"
482msgstr "Vložte heslo"
479
483
480−#: qml/Greeter/NarrowView.qml:118
484+#: qml/Greeter/NarrowView.qml:131
481msgid "Enter passcode"
485msgid "Enter passcode"
482msgstr "Vložte heslo"
486msgstr "Vložte heslo"
483
487
484−#: qml/Greeter/NarrowView.qml:119
488+#: qml/Greeter/NarrowView.qml:135
485#, qt-format
489#, qt-format
486msgid "Sorry, incorrect %1"
490msgid "Sorry, incorrect %1"
487msgstr "Špatné %1"
491msgstr "Špatné %1"
488
492
489−#: qml/Greeter/NarrowView.qml:120
493+#: qml/Greeter/NarrowView.qml:136
490msgid "Sorry, incorrect passphrase"
494msgid "Sorry, incorrect passphrase"
491msgstr "Špatné heslo"
495msgstr "Špatné heslo"
492
496
493−#: qml/Greeter/NarrowView.qml:121
497+#: qml/Greeter/NarrowView.qml:137
494msgctxt "passphrase"
498msgctxt "passphrase"
495msgid "Please re-enter"
499msgid "Please re-enter"
496msgstr ""
500msgstr ""
497
501
498−#: qml/Greeter/NarrowView.qml:122
502+#: qml/Greeter/NarrowView.qml:138
499msgid "Sorry, incorrect passcode"
503msgid "Sorry, incorrect passcode"
500msgstr "Špatné heslo"
504msgstr "Špatné heslo"
501
505
po/cy.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-07-31 13:21+0000\n"
11"PO-Revision-Date: 2015-07-31 13:21+0000\n"
12"Last-Translator: Owen Llywelyn <owen.llywelyn@gmail.com>\n"
12"Last-Translator: Owen Llywelyn <owen.llywelyn@gmail.com>\n"
13"Language-Team: Welsh <cy@li.org>\n"
13"Language-Team: Welsh <cy@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=4; plural=n==1 ? 0 : n==2 ? 1 : (n != 8 && n != 11) ? "
17"Plural-Forms: nplurals=4; plural=n==1 ? 0 : n==2 ? 1 : (n != 8 && n != 11) ? "
18"2 : 3;\n"
18"2 : 3;\n"
19−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
20−"X-Generator: Launchpad (build 18097)\n"
20+"X-Generator: Launchpad (build 18111)\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -36,21 +36,21 @@ msgstr ""
36msgid "Unpin shortcut"
36msgid "Unpin shortcut"
37msgstr "Dadbinio llwybr byr"
37msgstr "Dadbinio llwybr byr"
38
38
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
40msgid "Device Locked"
40msgid "Device Locked"
41msgstr "Dyfais ar glo"
41msgstr "Dyfais ar glo"
42
42
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
44msgid "You have been locked out due to too many failed passphrase attempts."
44msgid "You have been locked out due to too many failed passphrase attempts."
45msgstr ""
45msgstr ""
46"Cawsoch eich cloi allan am gyflwyno cyfrinair anghywir ormod o weithiau."
46"Cawsoch eich cloi allan am gyflwyno cyfrinair anghywir ormod o weithiau."
47
47
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
49msgid "You have been locked out due to too many failed passcode attempts."
49msgid "You have been locked out due to too many failed passcode attempts."
50msgstr ""
50msgstr ""
51"Cawsoch eich cloi allan am gyflwyno côd mynediad anghywir ormod o weithiau."
51"Cawsoch eich cloi allan am gyflwyno côd mynediad anghywir ormod o weithiau."
52
52
53−#: qml/Components/DelayedLockscreen.qml:74
53+#: qml/Components/DelayedLockscreen.qml:75
54#, qt-format
54#, qt-format
55msgid "Please wait %1 minute and then try again…"
55msgid "Please wait %1 minute and then try again…"
56msgid_plural "Please wait %1 minutes and then try again…"
56msgid_plural "Please wait %1 minutes and then try again…"
@@ -284,15 +284,15 @@ msgstr ""
284msgid "Closes the current window."
284msgid "Closes the current window."
285msgstr ""
285msgstr ""
286
286
287−#: qml/Components/Lockscreen.qml:231
287+#: qml/Components/Lockscreen.qml:239
288msgid "Return to Call"
288msgid "Return to Call"
289msgstr "Nôl i'r alwad"
289msgstr "Nôl i'r alwad"
290
290
291−#: qml/Components/Lockscreen.qml:231
291+#: qml/Components/Lockscreen.qml:239
292msgid "Emergency Call"
292msgid "Emergency Call"
293msgstr "Galwad Frys"
293msgstr "Galwad Frys"
294
294
295−#: qml/Components/Lockscreen.qml:263
295+#: qml/Components/Lockscreen.qml:271
296msgid "OK"
296msgid "OK"
297msgstr "Iawn"
297msgstr "Iawn"
298
298
@@ -429,10 +429,14 @@ msgid ""
429"touch pad to interact with the pointer."
429"touch pad to interact with the pointer."
430msgstr ""
430msgstr ""
431
431
432−#: qml/Greeter/CoverPage.qml:119
432+#: qml/Greeter/CoverPage.qml:127
433msgid "Unlock"
433msgid "Unlock"
434msgstr "Datgloi"
434msgstr "Datgloi"
435
435
436+#: qml/Greeter/Greeter.qml:536
437+msgid "Try again"
438+msgstr ""
439+
436#: qml/Greeter/LoginList.qml:259
440#: qml/Greeter/LoginList.qml:259
437msgid "Retry"
441msgid "Retry"
438msgstr "Ailgynnig"
442msgstr "Ailgynnig"
@@ -469,34 +473,34 @@ msgstr ""
469"Os fydd y cod cyfrinachol yn anghywir bydd eich ffôn yn cael ei ailosod i "
473"Os fydd y cod cyfrinachol yn anghywir bydd eich ffôn yn cael ei ailosod i "
470"gyflwr ffatri a bydd data personol yn cael ei ddileu."
474"gyflwr ffatri a bydd data personol yn cael ei ddileu."
471
475
472−#: qml/Greeter/NarrowView.qml:116
476+#: qml/Greeter/NarrowView.qml:129
473#, qt-format
477#, qt-format
474msgid "Enter %1"
478msgid "Enter %1"
475msgstr "Rhowch %1"
479msgstr "Rhowch %1"
476
480
477−#: qml/Greeter/NarrowView.qml:117
481+#: qml/Greeter/NarrowView.qml:130
478msgid "Enter passphrase"
482msgid "Enter passphrase"
479msgstr "Rhowch gyfrinair"
483msgstr "Rhowch gyfrinair"
480
484
481−#: qml/Greeter/NarrowView.qml:118
485+#: qml/Greeter/NarrowView.qml:131
482msgid "Enter passcode"
486msgid "Enter passcode"
483msgstr "Rhowch god cyfrinachol"
487msgstr "Rhowch god cyfrinachol"
484
488
485−#: qml/Greeter/NarrowView.qml:119
489+#: qml/Greeter/NarrowView.qml:135
486#, qt-format
490#, qt-format
487msgid "Sorry, incorrect %1"
491msgid "Sorry, incorrect %1"
488msgstr "%1 anghywir"
492msgstr "%1 anghywir"
489
493
490−#: qml/Greeter/NarrowView.qml:120
494+#: qml/Greeter/NarrowView.qml:136
491msgid "Sorry, incorrect passphrase"
495msgid "Sorry, incorrect passphrase"
492msgstr "Cyfrinair anghywir"
496msgstr "Cyfrinair anghywir"
493
497
494−#: qml/Greeter/NarrowView.qml:121
498+#: qml/Greeter/NarrowView.qml:137
495msgctxt "passphrase"
499msgctxt "passphrase"
496msgid "Please re-enter"
500msgid "Please re-enter"
497msgstr "Ceisiwch eto"
501msgstr "Ceisiwch eto"
498
502
499−#: qml/Greeter/NarrowView.qml:122
503+#: qml/Greeter/NarrowView.qml:138
500msgid "Sorry, incorrect passcode"
504msgid "Sorry, incorrect passcode"
501msgstr "Cod cyfrinachol anghywir"
505msgstr "Cod cyfrinachol anghywir"
502
506
po/da.po+22−18
@@ -8,7 +8,7 @@ msgid ""
8msgstr ""
8msgstr ""
9"Project-Id-Version: unity8\n"
9"Project-Id-Version: unity8\n"
10"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
11+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
12"PO-Revision-Date: 2015-07-06 12:05+0000\n"
12"PO-Revision-Date: 2015-07-06 12:05+0000\n"
13"Last-Translator: Folmer Fredslund <Unknown>\n"
13"Last-Translator: Folmer Fredslund <Unknown>\n"
14"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
14"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Type: text/plain; charset=UTF-8\n"
17"Content-Transfer-Encoding: 8bit\n"
17"Content-Transfer-Encoding: 8bit\n"
18"Plural-Forms: nplurals=2; plural=n != 1;\n"
18"Plural-Forms: nplurals=2; plural=n != 1;\n"
19−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
19+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
20−"X-Generator: Launchpad (build 18097)\n"
20+"X-Generator: Launchpad (build 18111)\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -36,23 +36,23 @@ msgstr ""
36msgid "Unpin shortcut"
36msgid "Unpin shortcut"
37msgstr "Gør genvej flytbar"
37msgstr "Gør genvej flytbar"
38
38
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
40msgid "Device Locked"
40msgid "Device Locked"
41msgstr "Enheden er låst"
41msgstr "Enheden er låst"
42
42
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
44msgid "You have been locked out due to too many failed passphrase attempts."
44msgid "You have been locked out due to too many failed passphrase attempts."
45msgstr ""
45msgstr ""
46"Du er blevet låst ude på grund af for mange fejlslagne forsøg på at angive "
46"Du er blevet låst ude på grund af for mange fejlslagne forsøg på at angive "
47"adgangskode."
47"adgangskode."
48
48
49−#: qml/Components/DelayedLockscreen.qml:65
49+#: qml/Components/DelayedLockscreen.qml:66
50msgid "You have been locked out due to too many failed passcode attempts."
50msgid "You have been locked out due to too many failed passcode attempts."
51msgstr ""
51msgstr ""
52"Du er blevet låst ude på grund af for mange fejlslagne forsøg på at angive "
52"Du er blevet låst ude på grund af for mange fejlslagne forsøg på at angive "
53"adgangskode."
53"adgangskode."
54
54
55−#: qml/Components/DelayedLockscreen.qml:74
55+#: qml/Components/DelayedLockscreen.qml:75
56#, qt-format
56#, qt-format
57msgid "Please wait %1 minute and then try again…"
57msgid "Please wait %1 minute and then try again…"
58msgid_plural "Please wait %1 minutes and then try again…"
58msgid_plural "Please wait %1 minutes and then try again…"
@@ -284,15 +284,15 @@ msgstr ""
284msgid "Closes the current window."
284msgid "Closes the current window."
285msgstr ""
285msgstr ""
286
286
287−#: qml/Components/Lockscreen.qml:231
287+#: qml/Components/Lockscreen.qml:239
288msgid "Return to Call"
288msgid "Return to Call"
289msgstr "Vend tilbage til opkald"
289msgstr "Vend tilbage til opkald"
290
290
291−#: qml/Components/Lockscreen.qml:231
291+#: qml/Components/Lockscreen.qml:239
292msgid "Emergency Call"
292msgid "Emergency Call"
293msgstr "Nødopkald"
293msgstr "Nødopkald"
294
294
295−#: qml/Components/Lockscreen.qml:263
295+#: qml/Components/Lockscreen.qml:271
296msgid "OK"
296msgid "OK"
297msgstr "Ok"
297msgstr "Ok"
298
298
@@ -429,10 +429,14 @@ msgid ""
429"touch pad to interact with the pointer."
429"touch pad to interact with the pointer."
430msgstr ""
430msgstr ""
431
431
432−#: qml/Greeter/CoverPage.qml:119
432+#: qml/Greeter/CoverPage.qml:127
433msgid "Unlock"
433msgid "Unlock"
434msgstr "Lås op"
434msgstr "Lås op"
435
435
436+#: qml/Greeter/Greeter.qml:536
437+msgid "Try again"
438+msgstr ""
439+
436#: qml/Greeter/LoginList.qml:259
440#: qml/Greeter/LoginList.qml:259
437msgid "Retry"
441msgid "Retry"
438msgstr "Forsøg igen"
442msgstr "Forsøg igen"
@@ -469,34 +473,34 @@ msgstr ""
469"Hvis adgangskoden er forkert, vil telefonen blive gendannet til "
473"Hvis adgangskoden er forkert, vil telefonen blive gendannet til "
470"fabriksindstillinger og al personlig data vil blive slettet."
474"fabriksindstillinger og al personlig data vil blive slettet."
471
475
472−#: qml/Greeter/NarrowView.qml:116
476+#: qml/Greeter/NarrowView.qml:129
473#, qt-format
477#, qt-format
474msgid "Enter %1"
478msgid "Enter %1"
475msgstr "Indtast %1"
479msgstr "Indtast %1"
476
480
477−#: qml/Greeter/NarrowView.qml:117
481+#: qml/Greeter/NarrowView.qml:130
478msgid "Enter passphrase"
482msgid "Enter passphrase"
479msgstr "Angiv adgangsfrase"
483msgstr "Angiv adgangsfrase"
480
484
481−#: qml/Greeter/NarrowView.qml:118
485+#: qml/Greeter/NarrowView.qml:131
482msgid "Enter passcode"
486msgid "Enter passcode"
483msgstr "Indtast adgangskode"
487msgstr "Indtast adgangskode"
484
488
485−#: qml/Greeter/NarrowView.qml:119
489+#: qml/Greeter/NarrowView.qml:135
486#, qt-format
490#, qt-format
487msgid "Sorry, incorrect %1"
491msgid "Sorry, incorrect %1"
488msgstr "Beklager, forkert %1"
492msgstr "Beklager, forkert %1"
489
493
490−#: qml/Greeter/NarrowView.qml:120
494+#: qml/Greeter/NarrowView.qml:136
491msgid "Sorry, incorrect passphrase"
495msgid "Sorry, incorrect passphrase"
492msgstr "Beklager, forkert adgangsfrase"
496msgstr "Beklager, forkert adgangsfrase"
493
497
494−#: qml/Greeter/NarrowView.qml:121
498+#: qml/Greeter/NarrowView.qml:137
495msgctxt "passphrase"
499msgctxt "passphrase"
496msgid "Please re-enter"
500msgid "Please re-enter"
497msgstr ""
501msgstr ""
498
502
499−#: qml/Greeter/NarrowView.qml:122
503+#: qml/Greeter/NarrowView.qml:138
500msgid "Sorry, incorrect passcode"
504msgid "Sorry, incorrect passcode"
501msgstr "Beklager, forkert adgangskode"
505msgstr "Beklager, forkert adgangskode"
502
506
po/de.po+28−24
@@ -7,16 +7,16 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11−"PO-Revision-Date: 2016-05-10 19:23+0000\n"
11+"PO-Revision-Date: 2016-06-25 21:01+0000\n"
12−"Last-Translator: Torsten Franz <Unknown>\n"
12+"Last-Translator: Matthias Seidel <matthias.seidel@hamburg.de>\n"
13"Language-Team: German <de@li.org>\n"
13"Language-Team: German <de@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,23 +35,23 @@ msgstr "Beenden"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Verknüpfung entfernen"
36msgstr "Verknüpfung entfernen"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Gerät gesperrt"
40msgstr "Gerät gesperrt"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45"Das Gerät wurde aufgrund zu vieler falscher Passworteingaben für längere "
45"Das Gerät wurde aufgrund zu vieler falscher Passworteingaben für längere "
46"Zeit gesperrt."
46"Zeit gesperrt."
47
47
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
49msgid "You have been locked out due to too many failed passcode attempts."
49msgid "You have been locked out due to too many failed passcode attempts."
50msgstr ""
50msgstr ""
51"Das Gerät wurde aufgrund zu vieler falscher PIN-Eingaben für längere Zeit "
51"Das Gerät wurde aufgrund zu vieler falscher PIN-Eingaben für längere Zeit "
52"gesperrt."
52"gesperrt."
53
53
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
55#, qt-format
55#, qt-format
56msgid "Please wait %1 minute and then try again…"
56msgid "Please wait %1 minute and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
@@ -129,7 +129,7 @@ msgstr ""
129
129
130#: qml/Components/KeyboardShortcutsOverlay.qml:55
130#: qml/Components/KeyboardShortcutsOverlay.qml:55
131msgid "Unity 8"
131msgid "Unity 8"
132−msgstr ""
132+msgstr "Unity 8"
133
133
134#: qml/Components/KeyboardShortcutsOverlay.qml:62
134#: qml/Components/KeyboardShortcutsOverlay.qml:62
135msgid "PrtScr"
135msgid "PrtScr"
@@ -177,7 +177,7 @@ msgstr ""
177
177
178#: qml/Components/KeyboardShortcutsOverlay.qml:138
178#: qml/Components/KeyboardShortcutsOverlay.qml:138
179msgid "Alt + F1"
179msgid "Alt + F1"
180−msgstr ""
180+msgstr "Alt + F1"
181
181
182#: qml/Components/KeyboardShortcutsOverlay.qml:143
182#: qml/Components/KeyboardShortcutsOverlay.qml:143
183msgid "Opens launcher keyboard navigation mode."
183msgid "Opens launcher keyboard navigation mode."
@@ -217,7 +217,7 @@ msgstr ""
217
217
218#: qml/Components/KeyboardShortcutsOverlay.qml:216
218#: qml/Components/KeyboardShortcutsOverlay.qml:216
219msgid "Alt + Tab"
219msgid "Alt + Tab"
220−msgstr ""
220+msgstr "Alt + Tabulator"
221
221
222#: qml/Components/KeyboardShortcutsOverlay.qml:221
222#: qml/Components/KeyboardShortcutsOverlay.qml:221
223msgid "Switches between applications."
223msgid "Switches between applications."
@@ -277,21 +277,21 @@ msgstr ""
277
277
278#: qml/Components/KeyboardShortcutsOverlay.qml:318
278#: qml/Components/KeyboardShortcutsOverlay.qml:318
279msgid "Alt + F4"
279msgid "Alt + F4"
280−msgstr ""
280+msgstr "Alt + F4"
281
281
282#: qml/Components/KeyboardShortcutsOverlay.qml:323
282#: qml/Components/KeyboardShortcutsOverlay.qml:323
283msgid "Closes the current window."
283msgid "Closes the current window."
284msgstr ""
284msgstr ""
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Return to Call"
287msgid "Return to Call"
288msgstr "Zu Anruf zurückkehren"
288msgstr "Zu Anruf zurückkehren"
289
289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291msgid "Emergency Call"
291msgid "Emergency Call"
292msgstr "Notruf"
292msgstr "Notruf"
293
293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295msgid "OK"
295msgid "OK"
296msgstr "OK"
296msgstr "OK"
297
297
@@ -432,10 +432,14 @@ msgstr ""
432"Ihr Gerät ist nun mit einem externen Bildschirm verbunden. Verwenden Sie das "
432"Ihr Gerät ist nun mit einem externen Bildschirm verbunden. Verwenden Sie das "
433"Gerätedisplay als Touchpad, um den Mauszeiger zu steuern."
433"Gerätedisplay als Touchpad, um den Mauszeiger zu steuern."
434
434
435−#: qml/Greeter/CoverPage.qml:119
435+#: qml/Greeter/CoverPage.qml:127
436msgid "Unlock"
436msgid "Unlock"
437msgstr "Entsperren"
437msgstr "Entsperren"
438
438
439+#: qml/Greeter/Greeter.qml:536
440+msgid "Try again"
441+msgstr ""
442+
439#: qml/Greeter/LoginList.qml:259
443#: qml/Greeter/LoginList.qml:259
440msgid "Retry"
444msgid "Retry"
441msgstr "Erneut versuchen"
445msgstr "Erneut versuchen"
@@ -472,34 +476,34 @@ msgstr ""
472"Wird die PIN falsch eingegeben, wird das Telefon auf den Werkszustand "
476"Wird die PIN falsch eingegeben, wird das Telefon auf den Werkszustand "
473"zurückgesetzt und alle Daten werden gelöscht."
477"zurückgesetzt und alle Daten werden gelöscht."
474
478
475−#: qml/Greeter/NarrowView.qml:116
479+#: qml/Greeter/NarrowView.qml:129
476#, qt-format
480#, qt-format
477msgid "Enter %1"
481msgid "Enter %1"
478msgstr "%1 eingeben"
482msgstr "%1 eingeben"
479
483
480−#: qml/Greeter/NarrowView.qml:117
484+#: qml/Greeter/NarrowView.qml:130
481msgid "Enter passphrase"
485msgid "Enter passphrase"
482msgstr "Passphrase eingeben"
486msgstr "Passphrase eingeben"
483
487
484−#: qml/Greeter/NarrowView.qml:118
488+#: qml/Greeter/NarrowView.qml:131
485msgid "Enter passcode"
489msgid "Enter passcode"
486msgstr "PIN eingeben"
490msgstr "PIN eingeben"
487
491
488−#: qml/Greeter/NarrowView.qml:119
492+#: qml/Greeter/NarrowView.qml:135
489#, qt-format
493#, qt-format
490msgid "Sorry, incorrect %1"
494msgid "Sorry, incorrect %1"
491msgstr "%1 falsch"
495msgstr "%1 falsch"
492
496
493−#: qml/Greeter/NarrowView.qml:120
497+#: qml/Greeter/NarrowView.qml:136
494msgid "Sorry, incorrect passphrase"
498msgid "Sorry, incorrect passphrase"
495msgstr "Das Passwort ist nicht korrekt"
499msgstr "Das Passwort ist nicht korrekt"
496
500
497−#: qml/Greeter/NarrowView.qml:121
501+#: qml/Greeter/NarrowView.qml:137
498msgctxt "passphrase"
502msgctxt "passphrase"
499msgid "Please re-enter"
503msgid "Please re-enter"
500msgstr "Bitte erneut eingeben"
504msgstr "Bitte erneut eingeben"
501
505
502−#: qml/Greeter/NarrowView.qml:122
506+#: qml/Greeter/NarrowView.qml:138
503msgid "Sorry, incorrect passcode"
507msgid "Sorry, incorrect passcode"
504msgstr "Falsches Passwort"
508msgstr "Falsches Passwort"
505
509
po/el.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2016-04-25 16:24+0000\n"
11"PO-Revision-Date: 2016-04-25 16:24+0000\n"
12"Last-Translator: Aggelos Arnaoutis <angelosarn@hotmail.com>\n"
12"Last-Translator: Aggelos Arnaoutis <angelosarn@hotmail.com>\n"
13"Language-Team: Greek <el@li.org>\n"
13"Language-Team: Greek <el@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,23 +35,23 @@ msgstr "Έξοδος"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Ξεκαρφίτσωμα συντόμευσης"
36msgstr "Ξεκαρφίτσωμα συντόμευσης"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Κλειδωμένη συσκευή"
40msgstr "Κλειδωμένη συσκευή"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45"Δεν σας επιτρέπεται η πρόσβαση καθώς προσπαθήσατε επανηλλημένως να "
45"Δεν σας επιτρέπεται η πρόσβαση καθώς προσπαθήσατε επανηλλημένως να "
46"συνδεθείτε με λάθος συνθηματικό."
46"συνδεθείτε με λάθος συνθηματικό."
47
47
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
49msgid "You have been locked out due to too many failed passcode attempts."
49msgid "You have been locked out due to too many failed passcode attempts."
50msgstr ""
50msgstr ""
51"Δεν σας επιτρέπεται η πρόσβαση καθώς προσπαθήσατε επανηλλημένως να "
51"Δεν σας επιτρέπεται η πρόσβαση καθώς προσπαθήσατε επανηλλημένως να "
52"συνδεθείτε με λάθος κωδικό πρόσβασης."
52"συνδεθείτε με λάθος κωδικό πρόσβασης."
53
53
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
55#, qt-format
55#, qt-format
56msgid "Please wait %1 minute and then try again…"
56msgid "Please wait %1 minute and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
@@ -283,15 +283,15 @@ msgstr ""
283msgid "Closes the current window."
283msgid "Closes the current window."
284msgstr ""
284msgstr ""
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Return to Call"
287msgid "Return to Call"
288msgstr "Επιστροφή στην κλήση"
288msgstr "Επιστροφή στην κλήση"
289
289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291msgid "Emergency Call"
291msgid "Emergency Call"
292msgstr "Κλήση έκτακτης ανάγκης"
292msgstr "Κλήση έκτακτης ανάγκης"
293
293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295msgid "OK"
295msgid "OK"
296msgstr "OK"
296msgstr "OK"
297
297
@@ -432,10 +432,14 @@ msgstr ""
432"Η συσκεύη σας τώρα είναι συνδεδεμένη με μια εξωτερική οθόνη. Χρησιμοποιείστε "
432"Η συσκεύη σας τώρα είναι συνδεδεμένη με μια εξωτερική οθόνη. Χρησιμοποιείστε "
433"αυτήν την οθόνη ως επιφάνεια αφής για να αλληλεπηδράσετε με τον δείκτη."
433"αυτήν την οθόνη ως επιφάνεια αφής για να αλληλεπηδράσετε με τον δείκτη."
434
434
435−#: qml/Greeter/CoverPage.qml:119
435+#: qml/Greeter/CoverPage.qml:127
436msgid "Unlock"
436msgid "Unlock"
437msgstr "Ξεκλείδωμα"
437msgstr "Ξεκλείδωμα"
438
438
439+#: qml/Greeter/Greeter.qml:536
440+msgid "Try again"
441+msgstr ""
442+
439#: qml/Greeter/LoginList.qml:259
443#: qml/Greeter/LoginList.qml:259
440msgid "Retry"
444msgid "Retry"
441msgstr "Επανάληψη"
445msgstr "Επανάληψη"
@@ -473,34 +477,34 @@ msgstr ""
473"κάνει επαναφορά των εργοστασιακών ρυθμίσεων και όλα τα δεδομένα σας θα "
477"κάνει επαναφορά των εργοστασιακών ρυθμίσεων και όλα τα δεδομένα σας θα "
474"διαγραφούν."
478"διαγραφούν."
475
479
476−#: qml/Greeter/NarrowView.qml:116
480+#: qml/Greeter/NarrowView.qml:129
477#, qt-format
481#, qt-format
478msgid "Enter %1"
482msgid "Enter %1"
479msgstr "Εισάγετε %1"
483msgstr "Εισάγετε %1"
480
484
481−#: qml/Greeter/NarrowView.qml:117
485+#: qml/Greeter/NarrowView.qml:130
482msgid "Enter passphrase"
486msgid "Enter passphrase"
483msgstr "Εισαγωγή συνθηματικού"
487msgstr "Εισαγωγή συνθηματικού"
484
488
485−#: qml/Greeter/NarrowView.qml:118
489+#: qml/Greeter/NarrowView.qml:131
486msgid "Enter passcode"
490msgid "Enter passcode"
487msgstr "Εισαγωγή κωδικού πρόσβασης"
491msgstr "Εισαγωγή κωδικού πρόσβασης"
488
492
489−#: qml/Greeter/NarrowView.qml:119
493+#: qml/Greeter/NarrowView.qml:135
490#, qt-format
494#, qt-format
491msgid "Sorry, incorrect %1"
495msgid "Sorry, incorrect %1"
492msgstr "Συγνώμη, μη έγκυρο %1"
496msgstr "Συγνώμη, μη έγκυρο %1"
493
497
494−#: qml/Greeter/NarrowView.qml:120
498+#: qml/Greeter/NarrowView.qml:136
495msgid "Sorry, incorrect passphrase"
499msgid "Sorry, incorrect passphrase"
496msgstr "Συγνώμη, μη έγκυρο συνθηματικό"
500msgstr "Συγνώμη, μη έγκυρο συνθηματικό"
497
501
498−#: qml/Greeter/NarrowView.qml:121
502+#: qml/Greeter/NarrowView.qml:137
499msgctxt "passphrase"
503msgctxt "passphrase"
500msgid "Please re-enter"
504msgid "Please re-enter"
501msgstr "Παρακαλώ πληκτρολογήστε ξανά"
505msgstr "Παρακαλώ πληκτρολογήστε ξανά"
502
506
503−#: qml/Greeter/NarrowView.qml:122
507+#: qml/Greeter/NarrowView.qml:138
504msgid "Sorry, incorrect passcode"
508msgid "Sorry, incorrect passcode"
505msgstr "Συγνώμη, μη έγκυρος κωδικός πρόσβασης"
509msgstr "Συγνώμη, μη έγκυρος κωδικός πρόσβασης"
506
510
po/en_AU.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2016-03-27 10:09+0000\n"
11"PO-Revision-Date: 2016-03-27 10:09+0000\n"
12"Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
12"Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
13"Language-Team: English (Australia) <en_AU@li.org>\n"
13"Language-Team: English (Australia) <en_AU@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "Quit"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Unpin shortcut"
36msgstr "Unpin shortcut"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Device Locked"
40msgstr "Device Locked"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr "You have been locked out due to too many failed passphrase attempts."
44msgstr "You have been locked out due to too many failed passphrase attempts."
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr "You have been locked out due to too many failed passcode attempts."
48msgstr "You have been locked out due to too many failed passcode attempts."
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr ""
279msgid "Closes the current window."
279msgid "Closes the current window."
280msgstr ""
280msgstr ""
281
281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283msgid "Return to Call"
283msgid "Return to Call"
284msgstr "Return to Call"
284msgstr "Return to Call"
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Emergency Call"
287msgid "Emergency Call"
288msgstr "Emergency Call"
288msgstr "Emergency Call"
289
289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291msgid "OK"
291msgid "OK"
292msgstr "OK"
292msgstr "OK"
293
293
@@ -426,10 +426,14 @@ msgstr ""
426"Your device is now connected to an external display. Use this screen as a "
426"Your device is now connected to an external display. Use this screen as a "
427"touch pad to interact with the pointer."
427"touch pad to interact with the pointer."
428
428
429−#: qml/Greeter/CoverPage.qml:119
429+#: qml/Greeter/CoverPage.qml:127
430msgid "Unlock"
430msgid "Unlock"
431msgstr "Unlock"
431msgstr "Unlock"
432
432
433+#: qml/Greeter/Greeter.qml:536
434+msgid "Try again"
435+msgstr ""
436+
433#: qml/Greeter/LoginList.qml:259
437#: qml/Greeter/LoginList.qml:259
434msgid "Retry"
438msgid "Retry"
435msgstr "Retry"
439msgstr "Retry"
@@ -466,34 +470,34 @@ msgstr ""
466"If passcode is entered incorrectly, your phone will conduct a factory reset "
470"If passcode is entered incorrectly, your phone will conduct a factory reset "
467"and all personal data will be deleted."
471"and all personal data will be deleted."
468
472
469−#: qml/Greeter/NarrowView.qml:116
473+#: qml/Greeter/NarrowView.qml:129
470#, qt-format
474#, qt-format
471msgid "Enter %1"
475msgid "Enter %1"
472msgstr "Enter %1"
476msgstr "Enter %1"
473
477
474−#: qml/Greeter/NarrowView.qml:117
478+#: qml/Greeter/NarrowView.qml:130
475msgid "Enter passphrase"
479msgid "Enter passphrase"
476msgstr "Enter passphrase"
480msgstr "Enter passphrase"
477
481
478−#: qml/Greeter/NarrowView.qml:118
482+#: qml/Greeter/NarrowView.qml:131
479msgid "Enter passcode"
483msgid "Enter passcode"
480msgstr "Enter passcode"
484msgstr "Enter passcode"
481
485
482−#: qml/Greeter/NarrowView.qml:119
486+#: qml/Greeter/NarrowView.qml:135
483#, qt-format
487#, qt-format
484msgid "Sorry, incorrect %1"
488msgid "Sorry, incorrect %1"
485msgstr "Sorry, incorrect %1"
489msgstr "Sorry, incorrect %1"
486
490
487−#: qml/Greeter/NarrowView.qml:120
491+#: qml/Greeter/NarrowView.qml:136
488msgid "Sorry, incorrect passphrase"
492msgid "Sorry, incorrect passphrase"
489msgstr "Sorry, incorrect passphrase"
493msgstr "Sorry, incorrect passphrase"
490
494
491−#: qml/Greeter/NarrowView.qml:121
495+#: qml/Greeter/NarrowView.qml:137
492msgctxt "passphrase"
496msgctxt "passphrase"
493msgid "Please re-enter"
497msgid "Please re-enter"
494msgstr "Please re-enter"
498msgstr "Please re-enter"
495
499
496−#: qml/Greeter/NarrowView.qml:122
500+#: qml/Greeter/NarrowView.qml:138
497msgid "Sorry, incorrect passcode"
501msgid "Sorry, incorrect passcode"
498msgstr "Sorry, incorrect passcode"
502msgstr "Sorry, incorrect passcode"
499
503
po/en_GB.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2016-05-10 10:10+0000\n"
11"PO-Revision-Date: 2016-05-10 10:10+0000\n"
12"Last-Translator: Andi Chandler <Unknown>\n"
12"Last-Translator: Andi Chandler <Unknown>\n"
13"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
13"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "Quit"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Unpin shortcut"
36msgstr "Unpin shortcut"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Device Locked"
40msgstr "Device Locked"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr "You have been locked out due to too many failed passphrase attempts."
44msgstr "You have been locked out due to too many failed passphrase attempts."
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr "You have been locked out due to too many failed passcode attempts."
48msgstr "You have been locked out due to too many failed passcode attempts."
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr ""
279msgid "Closes the current window."
279msgid "Closes the current window."
280msgstr ""
280msgstr ""
281
281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283msgid "Return to Call"
283msgid "Return to Call"
284msgstr "Return to Call"
284msgstr "Return to Call"
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Emergency Call"
287msgid "Emergency Call"
288msgstr "Emergency Call"
288msgstr "Emergency Call"
289
289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291msgid "OK"
291msgid "OK"
292msgstr "OK"
292msgstr "OK"
293
293
@@ -426,10 +426,14 @@ msgstr ""
426"Your device is now connected to an external display. Use this screen as a "
426"Your device is now connected to an external display. Use this screen as a "
427"touch pad to interact with the pointer."
427"touch pad to interact with the pointer."
428
428
429−#: qml/Greeter/CoverPage.qml:119
429+#: qml/Greeter/CoverPage.qml:127
430msgid "Unlock"
430msgid "Unlock"
431msgstr "Unlock"
431msgstr "Unlock"
432
432
433+#: qml/Greeter/Greeter.qml:536
434+msgid "Try again"
435+msgstr ""
436+
433#: qml/Greeter/LoginList.qml:259
437#: qml/Greeter/LoginList.qml:259
434msgid "Retry"
438msgid "Retry"
435msgstr "Retry"
439msgstr "Retry"
@@ -466,34 +470,34 @@ msgstr ""
466"If passcode is entered incorrectly, your phone will conduct a factory reset "
470"If passcode is entered incorrectly, your phone will conduct a factory reset "
467"and all personal data will be deleted."
471"and all personal data will be deleted."
468
472
469−#: qml/Greeter/NarrowView.qml:116
473+#: qml/Greeter/NarrowView.qml:129
470#, qt-format
474#, qt-format
471msgid "Enter %1"
475msgid "Enter %1"
472msgstr "Enter %1"
476msgstr "Enter %1"
473
477
474−#: qml/Greeter/NarrowView.qml:117
478+#: qml/Greeter/NarrowView.qml:130
475msgid "Enter passphrase"
479msgid "Enter passphrase"
476msgstr "Enter passphrase"
480msgstr "Enter passphrase"
477
481
478−#: qml/Greeter/NarrowView.qml:118
482+#: qml/Greeter/NarrowView.qml:131
479msgid "Enter passcode"
483msgid "Enter passcode"
480msgstr "Enter passcode"
484msgstr "Enter passcode"
481
485
482−#: qml/Greeter/NarrowView.qml:119
486+#: qml/Greeter/NarrowView.qml:135
483#, qt-format
487#, qt-format
484msgid "Sorry, incorrect %1"
488msgid "Sorry, incorrect %1"
485msgstr "Sorry, incorrect %1"
489msgstr "Sorry, incorrect %1"
486
490
487−#: qml/Greeter/NarrowView.qml:120
491+#: qml/Greeter/NarrowView.qml:136
488msgid "Sorry, incorrect passphrase"
492msgid "Sorry, incorrect passphrase"
489msgstr "Sorry, incorrect passphrase"
493msgstr "Sorry, incorrect passphrase"
490
494
491−#: qml/Greeter/NarrowView.qml:121
495+#: qml/Greeter/NarrowView.qml:137
492msgctxt "passphrase"
496msgctxt "passphrase"
493msgid "Please re-enter"
497msgid "Please re-enter"
494msgstr "Please re-enter"
498msgstr "Please re-enter"
495
499
496−#: qml/Greeter/NarrowView.qml:122
500+#: qml/Greeter/NarrowView.qml:138
497msgid "Sorry, incorrect passcode"
501msgid "Sorry, incorrect passcode"
498msgstr "Sorry, incorrect passcode"
502msgstr "Sorry, incorrect passcode"
499
503
po/eo.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-06-06 23:37+0000\n"
11"PO-Revision-Date: 2015-06-06 23:37+0000\n"
12"Last-Translator: Eliovir <Unknown>\n"
12"Last-Translator: Eliovir <Unknown>\n"
13"Language-Team: Esperanto <eo@li.org>\n"
13"Language-Team: Esperanto <eo@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "Ĉesi"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr ""
36msgstr ""
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Aparato ŝlosita"
40msgstr "Aparato ŝlosita"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277msgid "Closes the current window."
277msgid "Closes the current window."
278msgstr ""
278msgstr ""
279
279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281msgid "Return to Call"
281msgid "Return to Call"
282msgstr ""
282msgstr ""
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Emergency Call"
285msgid "Emergency Call"
286msgstr ""
286msgstr ""
287
287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289msgid "OK"
289msgid "OK"
290msgstr "Bone"
290msgstr "Bone"
291
291
@@ -422,10 +422,14 @@ msgid ""
422"touch pad to interact with the pointer."
422"touch pad to interact with the pointer."
423msgstr ""
423msgstr ""
424
424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426msgid "Unlock"
426msgid "Unlock"
427msgstr "Malŝlosi"
427msgstr "Malŝlosi"
428
428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429#: qml/Greeter/LoginList.qml:259
433#: qml/Greeter/LoginList.qml:259
430msgid "Retry"
434msgid "Retry"
431msgstr "Reprovi"
435msgstr "Reprovi"
@@ -458,34 +462,34 @@ msgid ""
458"and all personal data will be deleted."
462"and all personal data will be deleted."
459msgstr ""
463msgstr ""
460
464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462#, qt-format
466#, qt-format
463msgid "Enter %1"
467msgid "Enter %1"
464msgstr ""
468msgstr ""
465
469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467msgid "Enter passphrase"
471msgid "Enter passphrase"
468msgstr ""
472msgstr ""
469
473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471msgid "Enter passcode"
475msgid "Enter passcode"
472msgstr ""
476msgstr ""
473
477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475#, qt-format
479#, qt-format
476msgid "Sorry, incorrect %1"
480msgid "Sorry, incorrect %1"
477msgstr ""
481msgstr ""
478
482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480msgid "Sorry, incorrect passphrase"
484msgid "Sorry, incorrect passphrase"
481msgstr ""
485msgstr ""
482
486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484msgctxt "passphrase"
488msgctxt "passphrase"
485msgid "Please re-enter"
489msgid "Please re-enter"
486msgstr ""
490msgstr ""
487
491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489msgid "Sorry, incorrect passcode"
493msgid "Sorry, incorrect passcode"
490msgstr ""
494msgstr ""
491
495
po/es.po+67−61
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2016-03-25 12:02+0000\n"
11"PO-Revision-Date: 2016-03-25 12:02+0000\n"
12"Last-Translator: Adolfo Jayme <fitoschido@gmail.com>\n"
12"Last-Translator: Adolfo Jayme <fitoschido@gmail.com>\n"
13"Language-Team: Spanish <es@li.org>\n"
13"Language-Team: Spanish <es@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,23 +35,23 @@ msgstr "Salir"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Desanclar"
36msgstr "Desanclar"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Dispositivo bloqueado"
40msgstr "Dispositivo bloqueado"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45"Se ha proporcionado una contraseña errónea demasiadas veces. Se ha bloqueado "
45"Se ha proporcionado una contraseña errónea demasiadas veces. Se ha bloqueado "
46"el dispositivo."
46"el dispositivo."
47
47
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
49msgid "You have been locked out due to too many failed passcode attempts."
49msgid "You have been locked out due to too many failed passcode attempts."
50msgstr ""
50msgstr ""
51"Se ha bloqueado el dispositivo debido al gran número de intentos fallidos de "
51"Se ha bloqueado el dispositivo debido al gran número de intentos fallidos de "
52"desbloqueo."
52"desbloqueo."
53
53
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
55#, qt-format
55#, qt-format
56msgid "Please wait %1 minute and then try again…"
56msgid "Please wait %1 minute and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
@@ -125,173 +125,173 @@ msgstr "Reiniciar"
125
125
126#: qml/Components/KeyboardShortcutsOverlay.qml:41
126#: qml/Components/KeyboardShortcutsOverlay.qml:41
127msgid "Keyboard Shortcuts"
127msgid "Keyboard Shortcuts"
128−msgstr ""
128+msgstr "Atajos de teclado"
129
129
130#: qml/Components/KeyboardShortcutsOverlay.qml:55
130#: qml/Components/KeyboardShortcutsOverlay.qml:55
131msgid "Unity 8"
131msgid "Unity 8"
132−msgstr ""
132+msgstr "Unity 8"
133
133
134#: qml/Components/KeyboardShortcutsOverlay.qml:62
134#: qml/Components/KeyboardShortcutsOverlay.qml:62
135msgid "PrtScr"
135msgid "PrtScr"
136−msgstr ""
136+msgstr "ImprPant"
137
137
138#: qml/Components/KeyboardShortcutsOverlay.qml:67
138#: qml/Components/KeyboardShortcutsOverlay.qml:67
139msgid "Takes a screenshot."
139msgid "Takes a screenshot."
140−msgstr ""
140+msgstr "Captura la pantalla."
141
141
142#: qml/Components/KeyboardShortcutsOverlay.qml:75
142#: qml/Components/KeyboardShortcutsOverlay.qml:75
143msgid "Alt + PrtScr"
143msgid "Alt + PrtScr"
144−msgstr ""
144+msgstr "Alt + ImprPant"
145
145
146#: qml/Components/KeyboardShortcutsOverlay.qml:80
146#: qml/Components/KeyboardShortcutsOverlay.qml:80
147msgid "Takes a screenshot of a window."
147msgid "Takes a screenshot of a window."
148−msgstr ""
148+msgstr "Captura una ventana."
149
149
150#: qml/Components/KeyboardShortcutsOverlay.qml:88
150#: qml/Components/KeyboardShortcutsOverlay.qml:88
151msgid "Super + Space"
151msgid "Super + Space"
152−msgstr ""
152+msgstr "Super + Espacio"
153
153
154#: qml/Components/KeyboardShortcutsOverlay.qml:93
154#: qml/Components/KeyboardShortcutsOverlay.qml:93
155msgid "Switches to next keyboard layout."
155msgid "Switches to next keyboard layout."
156−msgstr ""
156+msgstr "Cambia a la siguiente disposición de teclado."
157
157
158#: qml/Components/KeyboardShortcutsOverlay.qml:101
158#: qml/Components/KeyboardShortcutsOverlay.qml:101
159msgid "Super + Shift + Space"
159msgid "Super + Shift + Space"
160−msgstr ""
160+msgstr "Super + Mayús + Espacio"
161
161
162#: qml/Components/KeyboardShortcutsOverlay.qml:106
162#: qml/Components/KeyboardShortcutsOverlay.qml:106
163msgid "Switches to previous keyboard layout."
163msgid "Switches to previous keyboard layout."
164−msgstr ""
164+msgstr "Cambia a la anterior disposición de teclado."
165
165
166#: qml/Components/KeyboardShortcutsOverlay.qml:118
166#: qml/Components/KeyboardShortcutsOverlay.qml:118
167msgid "Launcher"
167msgid "Launcher"
168−msgstr ""
168+msgstr "Lanzador"
169
169
170#: qml/Components/KeyboardShortcutsOverlay.qml:125
170#: qml/Components/KeyboardShortcutsOverlay.qml:125
171msgid "Super (Hold)"
171msgid "Super (Hold)"
172−msgstr ""
172+msgstr "Super (Mantener)"
173
173
174#: qml/Components/KeyboardShortcutsOverlay.qml:130
174#: qml/Components/KeyboardShortcutsOverlay.qml:130
175msgid "Opens the launcher, displays shortcuts."
175msgid "Opens the launcher, displays shortcuts."
176−msgstr ""
176+msgstr "Abre el lanzador y muestra los atajos."
177
177
178#: qml/Components/KeyboardShortcutsOverlay.qml:138
178#: qml/Components/KeyboardShortcutsOverlay.qml:138
179msgid "Alt + F1"
179msgid "Alt + F1"
180−msgstr ""
180+msgstr "Alt + F1"
181
181
182#: qml/Components/KeyboardShortcutsOverlay.qml:143
182#: qml/Components/KeyboardShortcutsOverlay.qml:143
183msgid "Opens launcher keyboard navigation mode."
183msgid "Opens launcher keyboard navigation mode."
184−msgstr ""
184+msgstr "Abre el Lanzador en modo de navegación de teclado."
185
185
186#: qml/Components/KeyboardShortcutsOverlay.qml:151
186#: qml/Components/KeyboardShortcutsOverlay.qml:151
187msgid "Super + Tab"
187msgid "Super + Tab"
188−msgstr ""
188+msgstr "Super + Tab"
189
189
190#: qml/Components/KeyboardShortcutsOverlay.qml:156
190#: qml/Components/KeyboardShortcutsOverlay.qml:156
191msgid "Switches applications via the launcher."
191msgid "Switches applications via the launcher."
192−msgstr ""
192+msgstr "Recorre las aplicaciones del Lanzador."
193
193
194#: qml/Components/KeyboardShortcutsOverlay.qml:164
194#: qml/Components/KeyboardShortcutsOverlay.qml:164
195msgid "Super + 0 to 9"
195msgid "Super + 0 to 9"
196−msgstr ""
196+msgstr "Super + 0 a 9"
197
197
198#: qml/Components/KeyboardShortcutsOverlay.qml:169
198#: qml/Components/KeyboardShortcutsOverlay.qml:169
199msgid "Same as clicking on a launcher icon."
199msgid "Same as clicking on a launcher icon."
200−msgstr ""
200+msgstr "Lo mismo que hacer clic en un icono del Lanzador."
201
201
202#: qml/Components/KeyboardShortcutsOverlay.qml:181
202#: qml/Components/KeyboardShortcutsOverlay.qml:181
203msgid "Scopes"
203msgid "Scopes"
204−msgstr ""
204+msgstr "Scopes"
205
205
206#: qml/Components/KeyboardShortcutsOverlay.qml:188
206#: qml/Components/KeyboardShortcutsOverlay.qml:188
207msgid "Super (Tap)"
207msgid "Super (Tap)"
208−msgstr ""
208+msgstr "Super (Toque)"
209
209
210#: qml/Components/KeyboardShortcutsOverlay.qml:193
210#: qml/Components/KeyboardShortcutsOverlay.qml:193
211msgid "Opens the Scopes home."
211msgid "Opens the Scopes home."
212−msgstr ""
212+msgstr "Abre el inicio de los Scopes."
213
213
214#: qml/Components/KeyboardShortcutsOverlay.qml:209
214#: qml/Components/KeyboardShortcutsOverlay.qml:209
215msgid "Switching"
215msgid "Switching"
216−msgstr ""
216+msgstr "Cambiar"
217
217
218#: qml/Components/KeyboardShortcutsOverlay.qml:216
218#: qml/Components/KeyboardShortcutsOverlay.qml:216
219msgid "Alt + Tab"
219msgid "Alt + Tab"
220−msgstr ""
220+msgstr "Alt + Tab"
221
221
222#: qml/Components/KeyboardShortcutsOverlay.qml:221
222#: qml/Components/KeyboardShortcutsOverlay.qml:221
223msgid "Switches between applications."
223msgid "Switches between applications."
224−msgstr ""
224+msgstr "Cambia entre aplicaciones."
225
225
226#: qml/Components/KeyboardShortcutsOverlay.qml:229
226#: qml/Components/KeyboardShortcutsOverlay.qml:229
227msgid "Super + W"
227msgid "Super + W"
228−msgstr ""
228+msgstr "Super + W"
229
229
230#: qml/Components/KeyboardShortcutsOverlay.qml:234
230#: qml/Components/KeyboardShortcutsOverlay.qml:234
231msgid "Opens the desktop spread."
231msgid "Opens the desktop spread."
232−msgstr ""
232+msgstr "Mostrar las ventanas del escritorio."
233
233
234#: qml/Components/KeyboardShortcutsOverlay.qml:242
234#: qml/Components/KeyboardShortcutsOverlay.qml:242
235msgid "Cursor Left or Right"
235msgid "Cursor Left or Right"
236−msgstr ""
236+msgstr "Flecha izquierda o derecha."
237
237
238#: qml/Components/KeyboardShortcutsOverlay.qml:247
238#: qml/Components/KeyboardShortcutsOverlay.qml:247
239msgid "Moves the focus."
239msgid "Moves the focus."
240−msgstr ""
240+msgstr "Cambia el foco."
241
241
242#: qml/Components/KeyboardShortcutsOverlay.qml:259
242#: qml/Components/KeyboardShortcutsOverlay.qml:259
243msgid "Windows"
243msgid "Windows"
244−msgstr ""
244+msgstr "Ventanas"
245
245
246#: qml/Components/KeyboardShortcutsOverlay.qml:266
246#: qml/Components/KeyboardShortcutsOverlay.qml:266
247msgid "Ctrl + Super + D"
247msgid "Ctrl + Super + D"
248−msgstr ""
248+msgstr "Ctrl + Super + D"
249
249
250#: qml/Components/KeyboardShortcutsOverlay.qml:271
250#: qml/Components/KeyboardShortcutsOverlay.qml:271
251msgid "Minimizes all windows."
251msgid "Minimizes all windows."
252−msgstr ""
252+msgstr "Minimiza todas las ventanas."
253
253
254#: qml/Components/KeyboardShortcutsOverlay.qml:279
254#: qml/Components/KeyboardShortcutsOverlay.qml:279
255msgid "Ctrl + Super + Up"
255msgid "Ctrl + Super + Up"
256−msgstr ""
256+msgstr "Ctrl + Super + Arriba"
257
257
258#: qml/Components/KeyboardShortcutsOverlay.qml:284
258#: qml/Components/KeyboardShortcutsOverlay.qml:284
259msgid "Maximizes the current window."
259msgid "Maximizes the current window."
260−msgstr ""
260+msgstr "Maximiza la ventana actual."
261
261
262#: qml/Components/KeyboardShortcutsOverlay.qml:292
262#: qml/Components/KeyboardShortcutsOverlay.qml:292
263msgid "Ctrl + Super + Down"
263msgid "Ctrl + Super + Down"
264−msgstr ""
264+msgstr "Ctrl + Super + Abajo"
265
265
266#: qml/Components/KeyboardShortcutsOverlay.qml:297
266#: qml/Components/KeyboardShortcutsOverlay.qml:297
267msgid "Minimizes or restores the current window."
267msgid "Minimizes or restores the current window."
268−msgstr ""
268+msgstr "Minimiza o restaura la ventana actual."
269
269
270#: qml/Components/KeyboardShortcutsOverlay.qml:305
270#: qml/Components/KeyboardShortcutsOverlay.qml:305
271msgid "Ctrl + Super + Left or Right"
271msgid "Ctrl + Super + Left or Right"
272−msgstr ""
272+msgstr "Ctrl + Super + Arriba o Derecha"
273
273
274#: qml/Components/KeyboardShortcutsOverlay.qml:310
274#: qml/Components/KeyboardShortcutsOverlay.qml:310
275msgid "Semi-maximizes the current window."
275msgid "Semi-maximizes the current window."
276−msgstr ""
276+msgstr "Semi-maximiza la ventana actual."
277
277
278#: qml/Components/KeyboardShortcutsOverlay.qml:318
278#: qml/Components/KeyboardShortcutsOverlay.qml:318
279msgid "Alt + F4"
279msgid "Alt + F4"
280−msgstr ""
280+msgstr "Alt + F4"
281
281
282#: qml/Components/KeyboardShortcutsOverlay.qml:323
282#: qml/Components/KeyboardShortcutsOverlay.qml:323
283msgid "Closes the current window."
283msgid "Closes the current window."
284−msgstr ""
284+msgstr "Cierra la ventana actual."
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Return to Call"
287msgid "Return to Call"
288msgstr "Volver a la llamada"
288msgstr "Volver a la llamada"
289
289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291msgid "Emergency Call"
291msgid "Emergency Call"
292msgstr "Llamada de emergencia"
292msgstr "Llamada de emergencia"
293
293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295msgid "OK"
295msgid "OK"
296msgstr "Aceptar"
296msgstr "Aceptar"
297
297
@@ -431,17 +431,21 @@ msgstr ""
431"Se ha conectado el dispositivo a una pantalla externa. Utilice esta ventana "
431"Se ha conectado el dispositivo a una pantalla externa. Utilice esta ventana "
432"como panel táctil para mover el puntero."
432"como panel táctil para mover el puntero."
433
433
434−#: qml/Greeter/CoverPage.qml:119
434+#: qml/Greeter/CoverPage.qml:127
435msgid "Unlock"
435msgid "Unlock"
436msgstr "Desbloquear"
436msgstr "Desbloquear"
437
437
438+#: qml/Greeter/Greeter.qml:536
439+msgid "Try again"
440+msgstr ""
441+
438#: qml/Greeter/LoginList.qml:259
442#: qml/Greeter/LoginList.qml:259
439msgid "Retry"
443msgid "Retry"
440msgstr "Reintentar"
444msgstr "Reintentar"
441
445
442#: qml/Greeter/LoginList.qml:260
446#: qml/Greeter/LoginList.qml:260
443msgid "Log In"
447msgid "Log In"
444−msgstr ""
448+msgstr "Iniciar sesión"
445
449
446#: qml/Greeter/NarrowView.qml:54
450#: qml/Greeter/NarrowView.qml:54
447msgid "Sorry, incorrect passphrase."
451msgid "Sorry, incorrect passphrase."
@@ -471,34 +475,34 @@ msgstr ""
471"Si se introduce el código incorrectamente, el teléfono volverá a la "
475"Si se introduce el código incorrectamente, el teléfono volverá a la "
472"configuración de fábrica y se perderán todos los datos personales."
476"configuración de fábrica y se perderán todos los datos personales."
473
477
474−#: qml/Greeter/NarrowView.qml:116
478+#: qml/Greeter/NarrowView.qml:129
475#, qt-format
479#, qt-format
476msgid "Enter %1"
480msgid "Enter %1"
477msgstr "Introduzca %1"
481msgstr "Introduzca %1"
478
482
479−#: qml/Greeter/NarrowView.qml:117
483+#: qml/Greeter/NarrowView.qml:130
480msgid "Enter passphrase"
484msgid "Enter passphrase"
481msgstr "Introduzca la contraseña"
485msgstr "Introduzca la contraseña"
482
486
483−#: qml/Greeter/NarrowView.qml:118
487+#: qml/Greeter/NarrowView.qml:131
484msgid "Enter passcode"
488msgid "Enter passcode"
485msgstr "Introduzca el código"
489msgstr "Introduzca el código"
486
490
487−#: qml/Greeter/NarrowView.qml:119
491+#: qml/Greeter/NarrowView.qml:135
488#, qt-format
492#, qt-format
489msgid "Sorry, incorrect %1"
493msgid "Sorry, incorrect %1"
490msgstr "Incorrecto (%1)"
494msgstr "Incorrecto (%1)"
491
495
492−#: qml/Greeter/NarrowView.qml:120
496+#: qml/Greeter/NarrowView.qml:136
493msgid "Sorry, incorrect passphrase"
497msgid "Sorry, incorrect passphrase"
494msgstr "La contraseña es incorrecta"
498msgstr "La contraseña es incorrecta"
495
499
496−#: qml/Greeter/NarrowView.qml:121
500+#: qml/Greeter/NarrowView.qml:137
497msgctxt "passphrase"
501msgctxt "passphrase"
498msgid "Please re-enter"
502msgid "Please re-enter"
499msgstr "Reintroduzca"
503msgstr "Reintroduzca"
500
504
501−#: qml/Greeter/NarrowView.qml:122
505+#: qml/Greeter/NarrowView.qml:138
502msgid "Sorry, incorrect passcode"
506msgid "Sorry, incorrect passcode"
503msgstr "El código es incorrecto"
507msgstr "El código es incorrecto"
504
508
@@ -600,7 +604,7 @@ msgstr "Deslice largo desde el borde izquierdo para ver el scope Hoy"
600
604
601#: qml/Tutorial/TutorialLeft.qml:47
605#: qml/Tutorial/TutorialLeft.qml:47
602msgid "Short swipe from the left edge to open the launcher"
606msgid "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"
604
608
605#: qml/Tutorial/TutorialRight.qml:55
609#: qml/Tutorial/TutorialRight.qml:55
606msgid "Push your mouse against the right edge to view your open apps"
610msgid "Push your mouse against the right edge to view your open apps"
@@ -609,11 +613,13 @@ msgstr ""
609
613
610#: qml/Tutorial/TutorialRight.qml:56
614#: qml/Tutorial/TutorialRight.qml:56
611msgid "Swipe from the right edge to view your open apps"
615msgid "Swipe from the right edge to view your open apps"
612−msgstr ""
616+msgstr "Deslizar desde el borde derecho para ver las aplis abiertas"
613
617
614#: qml/Tutorial/TutorialTop.qml:53
618#: qml/Tutorial/TutorialTop.qml:53
615msgid "Swipe from the top edge to access notifications and quick settings"
619msgid "Swipe from the top edge to access notifications and quick settings"
616msgstr ""
620msgstr ""
621+"Deslizar desde el borde superior para acceder a las notificaciones y "
622+"configuración"
617
623
618#: qml/Wizard/Page.qml:54
624#: qml/Wizard/Page.qml:54
619msgctxt "Button: Go back one page in the Wizard"
625msgctxt "Button: Go back one page in the Wizard"
po/eu.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-07-13 23:29+0000\n"
11"PO-Revision-Date: 2015-07-13 23:29+0000\n"
12"Last-Translator: Ibai Oihanguren Sala <Unknown>\n"
12"Last-Translator: Ibai Oihanguren Sala <Unknown>\n"
13"Language-Team: Basque <eu@li.org>\n"
13"Language-Team: Basque <eu@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,22 +35,22 @@ msgstr "Irten"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Askatu lasterbidea"
36msgstr "Askatu lasterbidea"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Gailua blokeatuta"
40msgstr "Gailua blokeatuta"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45"Gailua blokeatu da, pasaesaldia sartzeko saiakera gehiegi hutsegin "
45"Gailua blokeatu da, pasaesaldia sartzeko saiakera gehiegi hutsegin "
46"dituzulako."
46"dituzulako."
47
47
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
49msgid "You have been locked out due to too many failed passcode attempts."
49msgid "You have been locked out due to too many failed passcode attempts."
50msgstr ""
50msgstr ""
51"Gailua blokeatu da, pasakodea sartzeko saiakera gehiegi hutsegin dituzulako."
51"Gailua blokeatu da, pasakodea sartzeko saiakera gehiegi hutsegin dituzulako."
52
52
53−#: qml/Components/DelayedLockscreen.qml:74
53+#: qml/Components/DelayedLockscreen.qml:75
54#, qt-format
54#, qt-format
55msgid "Please wait %1 minute and then try again…"
55msgid "Please wait %1 minute and then try again…"
56msgid_plural "Please wait %1 minutes and then try again…"
56msgid_plural "Please wait %1 minutes and then try again…"
@@ -280,15 +280,15 @@ msgstr ""
280msgid "Closes the current window."
280msgid "Closes the current window."
281msgstr ""
281msgstr ""
282
282
283−#: qml/Components/Lockscreen.qml:231
283+#: qml/Components/Lockscreen.qml:239
284msgid "Return to Call"
284msgid "Return to Call"
285msgstr "Itzuli deira"
285msgstr "Itzuli deira"
286
286
287−#: qml/Components/Lockscreen.qml:231
287+#: qml/Components/Lockscreen.qml:239
288msgid "Emergency Call"
288msgid "Emergency Call"
289msgstr "Larrialdi-deia"
289msgstr "Larrialdi-deia"
290
290
291−#: qml/Components/Lockscreen.qml:263
291+#: qml/Components/Lockscreen.qml:271
292msgid "OK"
292msgid "OK"
293msgstr "Ados"
293msgstr "Ados"
294
294
@@ -425,10 +425,14 @@ msgid ""
425"touch pad to interact with the pointer."
425"touch pad to interact with the pointer."
426msgstr ""
426msgstr ""
427
427
428−#: qml/Greeter/CoverPage.qml:119
428+#: qml/Greeter/CoverPage.qml:127
429msgid "Unlock"
429msgid "Unlock"
430msgstr "Desblokeatu"
430msgstr "Desblokeatu"
431
431
432+#: qml/Greeter/Greeter.qml:536
433+msgid "Try again"
434+msgstr ""
435+
432#: qml/Greeter/LoginList.qml:259
436#: qml/Greeter/LoginList.qml:259
433msgid "Retry"
437msgid "Retry"
434msgstr "Saiatu berriz"
438msgstr "Saiatu berriz"
@@ -465,34 +469,34 @@ msgstr ""
465"Okerreko pasakodea sartzen baduzu, telefonoaren jatorrizko ezarpenak "
469"Okerreko pasakodea sartzen baduzu, telefonoaren jatorrizko ezarpenak "
466"berrezarri eta datu pertsonal guztiak ezabatuko dira."
470"berrezarri eta datu pertsonal guztiak ezabatuko dira."
467
471
468−#: qml/Greeter/NarrowView.qml:116
472+#: qml/Greeter/NarrowView.qml:129
469#, qt-format
473#, qt-format
470msgid "Enter %1"
474msgid "Enter %1"
471msgstr "Sartu %1"
475msgstr "Sartu %1"
472
476
473−#: qml/Greeter/NarrowView.qml:117
477+#: qml/Greeter/NarrowView.qml:130
474msgid "Enter passphrase"
478msgid "Enter passphrase"
475msgstr "Sartu pasaesaldia"
479msgstr "Sartu pasaesaldia"
476
480
477−#: qml/Greeter/NarrowView.qml:118
481+#: qml/Greeter/NarrowView.qml:131
478msgid "Enter passcode"
482msgid "Enter passcode"
479msgstr "Sartu pasakodea"
483msgstr "Sartu pasakodea"
480
484
481−#: qml/Greeter/NarrowView.qml:119
485+#: qml/Greeter/NarrowView.qml:135
482#, qt-format
486#, qt-format
483msgid "Sorry, incorrect %1"
487msgid "Sorry, incorrect %1"
484msgstr "Sentitzen dugu, %1 okerra da"
488msgstr "Sentitzen dugu, %1 okerra da"
485
489
486−#: qml/Greeter/NarrowView.qml:120
490+#: qml/Greeter/NarrowView.qml:136
487msgid "Sorry, incorrect passphrase"
491msgid "Sorry, incorrect passphrase"
488msgstr "Sentitzen dugu, pasaesaldia okerrekoa da"
492msgstr "Sentitzen dugu, pasaesaldia okerrekoa da"
489
493
490−#: qml/Greeter/NarrowView.qml:121
494+#: qml/Greeter/NarrowView.qml:137
491msgctxt "passphrase"
495msgctxt "passphrase"
492msgid "Please re-enter"
496msgid "Please re-enter"
493msgstr "Errepikatu"
497msgstr "Errepikatu"
494
498
495−#: qml/Greeter/NarrowView.qml:122
499+#: qml/Greeter/NarrowView.qml:138
496msgid "Sorry, incorrect passcode"
500msgid "Sorry, incorrect passcode"
497msgstr "Sentitzen dugu, pasakodea okerra da"
501msgstr "Sentitzen dugu, pasakodea okerra da"
498
502
po/fa.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2016-03-30 14:29+0000\n"
11"PO-Revision-Date: 2016-03-30 14:29+0000\n"
12"Last-Translator: Danial Behzadi <dani.behzi@gmail.com>\n"
12"Last-Translator: Danial Behzadi <dani.behzi@gmail.com>\n"
13"Language-Team: Persian <fa@li.org>\n"
13"Language-Team: Persian <fa@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,20 +35,20 @@ msgstr "خروج"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "برداشتن سنجاق میانبر"
36msgstr "برداشتن سنجاق میانبر"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "دستگاه قفل شد"
40msgstr "دستگاه قفل شد"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45"شما به دلیل تلاش‌های بسیار زیاد شکست خورده برای عبارت‌عبور قفل شده‌اید."
45"شما به دلیل تلاش‌های بسیار زیاد شکست خورده برای عبارت‌عبور قفل شده‌اید."
46
46
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
48msgid "You have been locked out due to too many failed passcode attempts."
48msgid "You have been locked out due to too many failed passcode attempts."
49msgstr "شما به دلیل تلاش‌های بسیار زیاد شکست خورده برای رمزعبور قفل شده‌اید."
49msgstr "شما به دلیل تلاش‌های بسیار زیاد شکست خورده برای رمزعبور قفل شده‌اید."
50
50
51−#: qml/Components/DelayedLockscreen.qml:74
51+#: qml/Components/DelayedLockscreen.qml:75
52#, qt-format
52#, qt-format
53msgid "Please wait %1 minute and then try again…"
53msgid "Please wait %1 minute and then try again…"
54msgid_plural "Please wait %1 minutes and then try again…"
54msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr ""
279msgid "Closes the current window."
279msgid "Closes the current window."
280msgstr ""
280msgstr ""
281
281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283msgid "Return to Call"
283msgid "Return to Call"
284msgstr "بازگشت به تماس"
284msgstr "بازگشت به تماس"
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Emergency Call"
287msgid "Emergency Call"
288msgstr "تماس اضطراری"
288msgstr "تماس اضطراری"
289
289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291msgid "OK"
291msgid "OK"
292msgstr "قبول"
292msgstr "قبول"
293
293
@@ -427,10 +427,14 @@ msgstr ""
427"افزاره‌تان هم‌تکنون به یک نمایشگر خارجی وصل شده است. از این صفحه به عنوان یک "
427"افزاره‌تان هم‌تکنون به یک نمایشگر خارجی وصل شده است. از این صفحه به عنوان یک "
428"صفحه‌لمسی برای کارکردن با نشانگر استفاده کنید."
428"صفحه‌لمسی برای کارکردن با نشانگر استفاده کنید."
429
429
430−#: qml/Greeter/CoverPage.qml:119
430+#: qml/Greeter/CoverPage.qml:127
431msgid "Unlock"
431msgid "Unlock"
432msgstr "بازکردن قفل"
432msgstr "بازکردن قفل"
433
433
434+#: qml/Greeter/Greeter.qml:536
435+msgid "Try again"
436+msgstr ""
437+
434#: qml/Greeter/LoginList.qml:259
438#: qml/Greeter/LoginList.qml:259
435msgid "Retry"
439msgid "Retry"
436msgstr "تلاش دوباره"
440msgstr "تلاش دوباره"
@@ -467,34 +471,34 @@ msgstr ""
467"اگر رمزعبور نادرست وارد شود، تلفن شما بازنشانی کارخانه خواهد شد و تمامی "
471"اگر رمزعبور نادرست وارد شود، تلفن شما بازنشانی کارخانه خواهد شد و تمامی "
468"اطّلاعات شخصی حذف خواهند شد."
472"اطّلاعات شخصی حذف خواهند شد."
469
473
470−#: qml/Greeter/NarrowView.qml:116
474+#: qml/Greeter/NarrowView.qml:129
471#, qt-format
475#, qt-format
472msgid "Enter %1"
476msgid "Enter %1"
473msgstr "%1 را وارد کنید"
477msgstr "%1 را وارد کنید"
474
478
475−#: qml/Greeter/NarrowView.qml:117
479+#: qml/Greeter/NarrowView.qml:130
476msgid "Enter passphrase"
480msgid "Enter passphrase"
477msgstr "عبارت‌عبور را وارد کنید"
481msgstr "عبارت‌عبور را وارد کنید"
478
482
479−#: qml/Greeter/NarrowView.qml:118
483+#: qml/Greeter/NarrowView.qml:131
480msgid "Enter passcode"
484msgid "Enter passcode"
481msgstr "رمزعبور را وارد کنید"
485msgstr "رمزعبور را وارد کنید"
482
486
483−#: qml/Greeter/NarrowView.qml:119
487+#: qml/Greeter/NarrowView.qml:135
484#, qt-format
488#, qt-format
485msgid "Sorry, incorrect %1"
489msgid "Sorry, incorrect %1"
486msgstr "متأسّفیم، %1 نادرست بود"
490msgstr "متأسّفیم، %1 نادرست بود"
487
491
488−#: qml/Greeter/NarrowView.qml:120
492+#: qml/Greeter/NarrowView.qml:136
489msgid "Sorry, incorrect passphrase"
493msgid "Sorry, incorrect passphrase"
490msgstr "متأسّفیم، عبارت‌عبور نادرست بود"
494msgstr "متأسّفیم، عبارت‌عبور نادرست بود"
491
495
492−#: qml/Greeter/NarrowView.qml:121
496+#: qml/Greeter/NarrowView.qml:137
493msgctxt "passphrase"
497msgctxt "passphrase"
494msgid "Please re-enter"
498msgid "Please re-enter"
495msgstr "لطفاً دوباره وارد کنید"
499msgstr "لطفاً دوباره وارد کنید"
496
500
497−#: qml/Greeter/NarrowView.qml:122
501+#: qml/Greeter/NarrowView.qml:138
498msgid "Sorry, incorrect passcode"
502msgid "Sorry, incorrect passcode"
499msgstr "متأسّفیم، رمزعبور نادرست بود"
503msgstr "متأسّفیم، رمزعبور نادرست بود"
500
504
po/fi.po+23−19
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-07-04 18:32+0000\n"
11"PO-Revision-Date: 2015-07-04 18:32+0000\n"
12"Last-Translator: Jiri Grönroos <Unknown>\n"
12"Last-Translator: Jiri Grönroos <Unknown>\n"
13"Language-Team: Finnish <fi@li.org>\n"
13"Language-Team: Finnish <fi@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,21 +35,21 @@ msgstr "Lopeta"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Poista pikakuvakkeen kiinnitys"
36msgstr "Poista pikakuvakkeen kiinnitys"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Laite on lukittu"
40msgstr "Laite on lukittu"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45"Laite on lukittu liian monen virheellisen tunnuslauseyrityksen jälkeen."
45"Laite on lukittu liian monen virheellisen tunnuslauseyrityksen jälkeen."
46
46
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
48msgid "You have been locked out due to too many failed passcode attempts."
48msgid "You have been locked out due to too many failed passcode attempts."
49msgstr ""
49msgstr ""
50"Laite on lukittu liian monen virheellisen suojakoodiyrityksen jälkeen."
50"Laite on lukittu liian monen virheellisen suojakoodiyrityksen jälkeen."
51
51
52−#: qml/Components/DelayedLockscreen.qml:74
52+#: qml/Components/DelayedLockscreen.qml:75
53#, qt-format
53#, qt-format
54msgid "Please wait %1 minute and then try again…"
54msgid "Please wait %1 minute and then try again…"
55msgid_plural "Please wait %1 minutes and then try again…"
55msgid_plural "Please wait %1 minutes and then try again…"
@@ -255,7 +255,7 @@ msgstr ""
255
255
256#: qml/Components/KeyboardShortcutsOverlay.qml:284
256#: qml/Components/KeyboardShortcutsOverlay.qml:284
257msgid "Maximizes the current window."
257msgid "Maximizes the current window."
258−msgstr ""
258+msgstr "Suurentaa nykyisen ikkunn,"
259
259
260#: qml/Components/KeyboardShortcutsOverlay.qml:292
260#: qml/Components/KeyboardShortcutsOverlay.qml:292
261msgid "Ctrl + Super + Down"
261msgid "Ctrl + Super + Down"
@@ -281,15 +281,15 @@ msgstr ""
281msgid "Closes the current window."
281msgid "Closes the current window."
282msgstr ""
282msgstr ""
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Return to Call"
285msgid "Return to Call"
286msgstr "Palaa puheluun"
286msgstr "Palaa puheluun"
287
287
288−#: qml/Components/Lockscreen.qml:231
288+#: qml/Components/Lockscreen.qml:239
289msgid "Emergency Call"
289msgid "Emergency Call"
290msgstr "Hätäpuhelu"
290msgstr "Hätäpuhelu"
291
291
292−#: qml/Components/Lockscreen.qml:263
292+#: qml/Components/Lockscreen.qml:271
293msgid "OK"
293msgid "OK"
294msgstr "OK"
294msgstr "OK"
295
295
@@ -430,10 +430,14 @@ msgstr ""
430"Laitteesi on nyt yhdistetty ulkoiseen näyttöön. Käytä tätä näyttöä "
430"Laitteesi on nyt yhdistetty ulkoiseen näyttöön. Käytä tätä näyttöä "
431"kosketuslevynä hiiren osoittimen liikuttamiseksi."
431"kosketuslevynä hiiren osoittimen liikuttamiseksi."
432
432
433−#: qml/Greeter/CoverPage.qml:119
433+#: qml/Greeter/CoverPage.qml:127
434msgid "Unlock"
434msgid "Unlock"
435msgstr "Avaa lukitus"
435msgstr "Avaa lukitus"
436
436
437+#: qml/Greeter/Greeter.qml:536
438+msgid "Try again"
439+msgstr ""
440+
437#: qml/Greeter/LoginList.qml:259
441#: qml/Greeter/LoginList.qml:259
438msgid "Retry"
442msgid "Retry"
439msgstr "Yritä uudelleen"
443msgstr "Yritä uudelleen"
@@ -470,34 +474,34 @@ msgstr ""
470"Jos kirjoitat suojakoodin virheellisesti, puhelimesi palautetaan "
474"Jos kirjoitat suojakoodin virheellisesti, puhelimesi palautetaan "
471"tehdastilaan ja kaikki henkilökohtaiset tietosi poistetaan."
475"tehdastilaan ja kaikki henkilökohtaiset tietosi poistetaan."
472
476
473−#: qml/Greeter/NarrowView.qml:116
477+#: qml/Greeter/NarrowView.qml:129
474#, qt-format
478#, qt-format
475msgid "Enter %1"
479msgid "Enter %1"
476msgstr "Anna %1"
480msgstr "Anna %1"
477
481
478−#: qml/Greeter/NarrowView.qml:117
482+#: qml/Greeter/NarrowView.qml:130
479msgid "Enter passphrase"
483msgid "Enter passphrase"
480msgstr "Anna tunnuslause"
484msgstr "Anna tunnuslause"
481
485
482−#: qml/Greeter/NarrowView.qml:118
486+#: qml/Greeter/NarrowView.qml:131
483msgid "Enter passcode"
487msgid "Enter passcode"
484msgstr "Anna suojakoodi"
488msgstr "Anna suojakoodi"
485
489
486−#: qml/Greeter/NarrowView.qml:119
490+#: qml/Greeter/NarrowView.qml:135
487#, qt-format
491#, qt-format
488msgid "Sorry, incorrect %1"
492msgid "Sorry, incorrect %1"
489msgstr "Väärä %1"
493msgstr "Väärä %1"
490
494
491−#: qml/Greeter/NarrowView.qml:120
495+#: qml/Greeter/NarrowView.qml:136
492msgid "Sorry, incorrect passphrase"
496msgid "Sorry, incorrect passphrase"
493msgstr "Virheellinen tunnuslause"
497msgstr "Virheellinen tunnuslause"
494
498
495−#: qml/Greeter/NarrowView.qml:121
499+#: qml/Greeter/NarrowView.qml:137
496msgctxt "passphrase"
500msgctxt "passphrase"
497msgid "Please re-enter"
501msgid "Please re-enter"
498msgstr "Anna uudelleen"
502msgstr "Anna uudelleen"
499
503
500−#: qml/Greeter/NarrowView.qml:122
504+#: qml/Greeter/NarrowView.qml:138
501msgid "Sorry, incorrect passcode"
505msgid "Sorry, incorrect passcode"
502msgstr "Väärä suojakoodi"
506msgstr "Väärä suojakoodi"
503
507
po/fo.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2014-01-14 20:08+0000\n"
11"PO-Revision-Date: 2014-01-14 20:08+0000\n"
12"Last-Translator: Jógvan Olsen <jeggy@jebster.net>\n"
12"Last-Translator: Jógvan Olsen <jeggy@jebster.net>\n"
13"Language-Team: Faroese <fo@li.org>\n"
13"Language-Team: Faroese <fo@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,21 +35,21 @@ msgstr "Gevst"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Óheft snarveg"
36msgstr "Óheft snarveg"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Tóleind stongd"
40msgstr "Tóleind stongd"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45"Tú ert vorðin útstongdur, tí tú ikki hevur skrivað skeiva loyniorðið ov ofta."
45"Tú ert vorðin útstongdur, tí tú ikki hevur skrivað skeiva loyniorðið ov ofta."
46
46
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
48msgid "You have been locked out due to too many failed passcode attempts."
48msgid "You have been locked out due to too many failed passcode attempts."
49msgstr ""
49msgstr ""
50"Tú ert vorðin útstongdur, tí tú ikki hevur skrivað skeiva loyniorðið ov ofta."
50"Tú ert vorðin útstongdur, tí tú ikki hevur skrivað skeiva loyniorðið ov ofta."
51
51
52−#: qml/Components/DelayedLockscreen.qml:74
52+#: qml/Components/DelayedLockscreen.qml:75
53#, qt-format
53#, qt-format
54msgid "Please wait %1 minute and then try again…"
54msgid "Please wait %1 minute and then try again…"
55msgid_plural "Please wait %1 minutes and then try again…"
55msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr ""
279msgid "Closes the current window."
279msgid "Closes the current window."
280msgstr ""
280msgstr ""
281
281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283msgid "Return to Call"
283msgid "Return to Call"
284msgstr "Far aftur til uppkall"
284msgstr "Far aftur til uppkall"
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Emergency Call"
287msgid "Emergency Call"
288msgstr "Neyðarkall"
288msgstr "Neyðarkall"
289
289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291msgid "OK"
291msgid "OK"
292msgstr "OK"
292msgstr "OK"
293
293
@@ -426,10 +426,14 @@ msgid ""
426"touch pad to interact with the pointer."
426"touch pad to interact with the pointer."
427msgstr ""
427msgstr ""
428
428
429−#: qml/Greeter/CoverPage.qml:119
429+#: qml/Greeter/CoverPage.qml:127
430msgid "Unlock"
430msgid "Unlock"
431msgstr ""
431msgstr ""
432
432
433+#: qml/Greeter/Greeter.qml:536
434+msgid "Try again"
435+msgstr ""
436+
433#: qml/Greeter/LoginList.qml:259
437#: qml/Greeter/LoginList.qml:259
434msgid "Retry"
438msgid "Retry"
435msgstr "Royn aftur"
439msgstr "Royn aftur"
@@ -462,34 +466,34 @@ msgid ""
462"and all personal data will be deleted."
466"and all personal data will be deleted."
463msgstr ""
467msgstr ""
464
468
465−#: qml/Greeter/NarrowView.qml:116
469+#: qml/Greeter/NarrowView.qml:129
466#, qt-format
470#, qt-format
467msgid "Enter %1"
471msgid "Enter %1"
468msgstr "Skriva %1"
472msgstr "Skriva %1"
469
473
470−#: qml/Greeter/NarrowView.qml:117
474+#: qml/Greeter/NarrowView.qml:130
471msgid "Enter passphrase"
475msgid "Enter passphrase"
472msgstr "Skriva loyniorð"
476msgstr "Skriva loyniorð"
473
477
474−#: qml/Greeter/NarrowView.qml:118
478+#: qml/Greeter/NarrowView.qml:131
475msgid "Enter passcode"
479msgid "Enter passcode"
476msgstr "Skriva loyniorð"
480msgstr "Skriva loyniorð"
477
481
478−#: qml/Greeter/NarrowView.qml:119
482+#: qml/Greeter/NarrowView.qml:135
479#, qt-format
483#, qt-format
480msgid "Sorry, incorrect %1"
484msgid "Sorry, incorrect %1"
481msgstr "Orsakað, skeiv %1"
485msgstr "Orsakað, skeiv %1"
482
486
483−#: qml/Greeter/NarrowView.qml:120
487+#: qml/Greeter/NarrowView.qml:136
484msgid "Sorry, incorrect passphrase"
488msgid "Sorry, incorrect passphrase"
485msgstr ""
489msgstr ""
486
490
487−#: qml/Greeter/NarrowView.qml:121
491+#: qml/Greeter/NarrowView.qml:137
488msgctxt "passphrase"
492msgctxt "passphrase"
489msgid "Please re-enter"
493msgid "Please re-enter"
490msgstr ""
494msgstr ""
491
495
492−#: qml/Greeter/NarrowView.qml:122
496+#: qml/Greeter/NarrowView.qml:138
493msgid "Sorry, incorrect passcode"
497msgid "Sorry, incorrect passcode"
494msgstr ""
498msgstr ""
495
499
po/fr.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2016-05-19 21:22+0000\n"
11"PO-Revision-Date: 2016-05-19 21:22+0000\n"
12"Last-Translator: Ubuntu-QC-1 <Unknown>\n"
12"Last-Translator: Ubuntu-QC-1 <Unknown>\n"
13"Language-Team: French <fr@li.org>\n"
13"Language-Team: French <fr@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,23 +35,23 @@ msgstr "Quitter"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Détacher le raccourci"
36msgstr "Détacher le raccourci"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Appareil verrouillé"
40msgstr "Appareil verrouillé"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45"L'appareil a été verrouillé suite à un trop grand nombre de tentatives de "
45"L'appareil a été verrouillé suite à un trop grand nombre de tentatives de "
46"saisie d'une phrase de passe erronée."
46"saisie d'une phrase de passe erronée."
47
47
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
49msgid "You have been locked out due to too many failed passcode attempts."
49msgid "You have been locked out due to too many failed passcode attempts."
50msgstr ""
50msgstr ""
51"Vous avez été bloqué suite à un trop grand nombre de tentatives de saisie "
51"Vous avez été bloqué suite à un trop grand nombre de tentatives de saisie "
52"d'un mot de passe erroné."
52"d'un mot de passe erroné."
53
53
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
55#, qt-format
55#, qt-format
56msgid "Please wait %1 minute and then try again…"
56msgid "Please wait %1 minute and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
@@ -283,15 +283,15 @@ msgstr ""
283msgid "Closes the current window."
283msgid "Closes the current window."
284msgstr ""
284msgstr ""
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Return to Call"
287msgid "Return to Call"
288msgstr "Retourner à l'appel"
288msgstr "Retourner à l'appel"
289
289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291msgid "Emergency Call"
291msgid "Emergency Call"
292msgstr "Appel d'urgence"
292msgstr "Appel d'urgence"
293
293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295msgid "OK"
295msgid "OK"
296msgstr "OK"
296msgstr "OK"
297
297
@@ -434,10 +434,14 @@ msgstr ""
434"Votre appareil est maintenant connecté à un écran externe. Utilisez cet "
434"Votre appareil est maintenant connecté à un écran externe. Utilisez cet "
435"écran comme un pavé tactile pour interagir avec le pointeur."
435"écran comme un pavé tactile pour interagir avec le pointeur."
436
436
437−#: qml/Greeter/CoverPage.qml:119
437+#: qml/Greeter/CoverPage.qml:127
438msgid "Unlock"
438msgid "Unlock"
439msgstr "Déverrouiller"
439msgstr "Déverrouiller"
440
440
441+#: qml/Greeter/Greeter.qml:536
442+msgid "Try again"
443+msgstr ""
444+
441#: qml/Greeter/LoginList.qml:259
445#: qml/Greeter/LoginList.qml:259
442msgid "Retry"
446msgid "Retry"
443msgstr "Réessayer"
447msgstr "Réessayer"
@@ -476,34 +480,34 @@ msgstr ""
476"réinitialisation aux paramètres d'usine et toutes les données personnelles "
480"réinitialisation aux paramètres d'usine et toutes les données personnelles "
477"seront supprimées."
481"seront supprimées."
478
482
479−#: qml/Greeter/NarrowView.qml:116
483+#: qml/Greeter/NarrowView.qml:129
480#, qt-format
484#, qt-format
481msgid "Enter %1"
485msgid "Enter %1"
482msgstr "Saisissez %1"
486msgstr "Saisissez %1"
483
487
484−#: qml/Greeter/NarrowView.qml:117
488+#: qml/Greeter/NarrowView.qml:130
485msgid "Enter passphrase"
489msgid "Enter passphrase"
486msgstr "Saisissez la phrase de passe"
490msgstr "Saisissez la phrase de passe"
487
491
488−#: qml/Greeter/NarrowView.qml:118
492+#: qml/Greeter/NarrowView.qml:131
489msgid "Enter passcode"
493msgid "Enter passcode"
490msgstr "Saisissez le mot de passe"
494msgstr "Saisissez le mot de passe"
491
495
492−#: qml/Greeter/NarrowView.qml:119
496+#: qml/Greeter/NarrowView.qml:135
493#, qt-format
497#, qt-format
494msgid "Sorry, incorrect %1"
498msgid "Sorry, incorrect %1"
495msgstr "Désolé, %1 incorrect"
499msgstr "Désolé, %1 incorrect"
496
500
497−#: qml/Greeter/NarrowView.qml:120
501+#: qml/Greeter/NarrowView.qml:136
498msgid "Sorry, incorrect passphrase"
502msgid "Sorry, incorrect passphrase"
499msgstr "Désolé, phrase secrète incorrecte"
503msgstr "Désolé, phrase secrète incorrecte"
500
504
501−#: qml/Greeter/NarrowView.qml:121
505+#: qml/Greeter/NarrowView.qml:137
502msgctxt "passphrase"
506msgctxt "passphrase"
503msgid "Please re-enter"
507msgid "Please re-enter"
504msgstr "Veuillez ressaisir"
508msgstr "Veuillez ressaisir"
505
509
506−#: qml/Greeter/NarrowView.qml:122
510+#: qml/Greeter/NarrowView.qml:138
507msgid "Sorry, incorrect passcode"
511msgid "Sorry, incorrect passcode"
508msgstr "Désolé, code incorrect"
512msgstr "Désolé, code incorrect"
509
513
po/ga.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2016-01-25 11:33+0000\n"
11"PO-Revision-Date: 2016-01-25 11:33+0000\n"
12"Last-Translator: Joshua Kiley <Unknown>\n"
12"Last-Translator: Joshua Kiley <Unknown>\n"
13"Language-Team: Irish <ga@li.org>\n"
13"Language-Team: Irish <ga@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n==2 ? 1 : 2;\n"
17"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"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "Éirigh as"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Bain Aicearra Den Bharra"
36msgstr "Bain Aicearra Den Bharra"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Faoi Ghlas"
40msgstr "Faoi Ghlas"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr "Tá tú dúnta amach ceal an iomarca drochiarrachtaí pasfhocail."
44msgstr "Tá tú dúnta amach ceal an iomarca drochiarrachtaí pasfhocail."
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr "Tá tú dúnta amach ceal an iomarca drochiarrachtaí cóid."
48msgstr "Tá tú dúnta amach ceal an iomarca drochiarrachtaí cóid."
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -278,15 +278,15 @@ msgstr ""
278msgid "Closes the current window."
278msgid "Closes the current window."
279msgstr ""
279msgstr ""
280
280
281−#: qml/Components/Lockscreen.qml:231
281+#: qml/Components/Lockscreen.qml:239
282msgid "Return to Call"
282msgid "Return to Call"
283msgstr "Fill ar an Ghlaoch"
283msgstr "Fill ar an Ghlaoch"
284
284
285−#: qml/Components/Lockscreen.qml:231
285+#: qml/Components/Lockscreen.qml:239
286msgid "Emergency Call"
286msgid "Emergency Call"
287msgstr "Glaoch Éigeandála"
287msgstr "Glaoch Éigeandála"
288
288
289−#: qml/Components/Lockscreen.qml:263
289+#: qml/Components/Lockscreen.qml:271
290msgid "OK"
290msgid "OK"
291msgstr "Tá Go Maith"
291msgstr "Tá Go Maith"
292
292
@@ -423,10 +423,14 @@ msgid ""
423"touch pad to interact with the pointer."
423"touch pad to interact with the pointer."
424msgstr ""
424msgstr ""
425
425
426−#: qml/Greeter/CoverPage.qml:119
426+#: qml/Greeter/CoverPage.qml:127
427msgid "Unlock"
427msgid "Unlock"
428msgstr "Oscail"
428msgstr "Oscail"
429
429
430+#: qml/Greeter/Greeter.qml:536
431+msgid "Try again"
432+msgstr ""
433+
430#: qml/Greeter/LoginList.qml:259
434#: qml/Greeter/LoginList.qml:259
431msgid "Retry"
435msgid "Retry"
432msgstr "Bain triail as arís"
436msgstr "Bain triail as arís"
@@ -463,34 +467,34 @@ msgstr ""
463"Más mbíonn paschód mícheart agat arís, déanann do guthan monarchan athshocrú "
467"Más mbíonn paschód mícheart agat arís, déanann do guthan monarchan athshocrú "
464"agus beidh do shonraí pearsanta scriosadh."
468"agus beidh do shonraí pearsanta scriosadh."
465
469
466−#: qml/Greeter/NarrowView.qml:116
470+#: qml/Greeter/NarrowView.qml:129
467#, qt-format
471#, qt-format
468msgid "Enter %1"
472msgid "Enter %1"
469msgstr "Cuir isteach %1"
473msgstr "Cuir isteach %1"
470
474
471−#: qml/Greeter/NarrowView.qml:117
475+#: qml/Greeter/NarrowView.qml:130
472msgid "Enter passphrase"
476msgid "Enter passphrase"
473msgstr "Cuir pasfhrása isteach"
477msgstr "Cuir pasfhrása isteach"
474
478
475−#: qml/Greeter/NarrowView.qml:118
479+#: qml/Greeter/NarrowView.qml:131
476msgid "Enter passcode"
480msgid "Enter passcode"
477msgstr "Cuir paschód isteach"
481msgstr "Cuir paschód isteach"
478
482
479−#: qml/Greeter/NarrowView.qml:119
483+#: qml/Greeter/NarrowView.qml:135
480#, qt-format
484#, qt-format
481msgid "Sorry, incorrect %1"
485msgid "Sorry, incorrect %1"
482msgstr "Míchruinn, mo léan %1"
486msgstr "Míchruinn, mo léan %1"
483
487
484−#: qml/Greeter/NarrowView.qml:120
488+#: qml/Greeter/NarrowView.qml:136
485msgid "Sorry, incorrect passphrase"
489msgid "Sorry, incorrect passphrase"
486msgstr "Códfhrása míchruinn, mo léan."
490msgstr "Códfhrása míchruinn, mo léan."
487
491
488−#: qml/Greeter/NarrowView.qml:121
492+#: qml/Greeter/NarrowView.qml:137
489msgctxt "passphrase"
493msgctxt "passphrase"
490msgid "Please re-enter"
494msgid "Please re-enter"
491msgstr "Cuir isteach é arís, le do thoil"
495msgstr "Cuir isteach é arís, le do thoil"
492
496
493−#: qml/Greeter/NarrowView.qml:122
497+#: qml/Greeter/NarrowView.qml:138
494msgid "Sorry, incorrect passcode"
498msgid "Sorry, incorrect passcode"
495msgstr "Paschód míchruinn, mo léan"
499msgstr "Paschód míchruinn, mo léan"
496
500
po/gd.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2016-04-08 18:34+0000\n"
11"PO-Revision-Date: 2016-04-08 18:34+0000\n"
12"Last-Translator: Akerbeltz <fios@akerbeltz.org>\n"
12"Last-Translator: Akerbeltz <fios@akerbeltz.org>\n"
13"Language-Team: Fòram na Gàidhlig\n"
13"Language-Team: Fòram na Gàidhlig\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : "
17"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : "
18"(n > 2 && n < 20) ? 2 : 3;\n"
18"(n > 2 && n < 20) ? 2 : 3;\n"
19−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
19+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
20−"X-Generator: Launchpad (build 18097)\n"
20+"X-Generator: Launchpad (build 18111)\n"
21"Language: gd\n"
21"Language: gd\n"
22
22
23#: plugins/IntegratedLightDM/Greeter.cpp:112
23#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -37,23 +37,23 @@ msgstr "Fàg an-seo"
37msgid "Unpin shortcut"
37msgid "Unpin shortcut"
38msgstr "Neo-phrìnich an ath-ghoirid"
38msgstr "Neo-phrìnich an ath-ghoirid"
39
39
40−#: qml/Components/DelayedLockscreen.qml:49
40+#: qml/Components/DelayedLockscreen.qml:50
41msgid "Device Locked"
41msgid "Device Locked"
42msgstr "Tha glas air an uidheam"
42msgstr "Tha glas air an uidheam"
43
43
44−#: qml/Components/DelayedLockscreen.qml:64
44+#: qml/Components/DelayedLockscreen.qml:65
45msgid "You have been locked out due to too many failed passphrase attempts."
45msgid "You have been locked out due to too many failed passphrase attempts."
46msgstr ""
46msgstr ""
47"Chaidh do glasadh a-mach às an uidheam on a chuir thu abairt-fhaire chearr a-"
47"Chaidh do glasadh a-mach às an uidheam on a chuir thu abairt-fhaire chearr a-"
48"steach cus tursan."
48"steach cus tursan."
49
49
50−#: qml/Components/DelayedLockscreen.qml:65
50+#: qml/Components/DelayedLockscreen.qml:66
51msgid "You have been locked out due to too many failed passcode attempts."
51msgid "You have been locked out due to too many failed passcode attempts."
52msgstr ""
52msgstr ""
53"Chaidh do glasadh a-mach às an uidheam on a chuir thu còd-faire cearr a-"
53"Chaidh do glasadh a-mach às an uidheam on a chuir thu còd-faire cearr a-"
54"steach cus tursan."
54"steach cus tursan."
55
55
56−#: qml/Components/DelayedLockscreen.qml:74
56+#: qml/Components/DelayedLockscreen.qml:75
57#, qt-format
57#, qt-format
58msgid "Please wait %1 minute and then try again…"
58msgid "Please wait %1 minute and then try again…"
59msgid_plural "Please wait %1 minutes and then try again…"
59msgid_plural "Please wait %1 minutes and then try again…"
@@ -287,15 +287,15 @@ msgstr ""
287msgid "Closes the current window."
287msgid "Closes the current window."
288msgstr ""
288msgstr ""
289
289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291msgid "Return to Call"
291msgid "Return to Call"
292msgstr "Till dhan ghairm"
292msgstr "Till dhan ghairm"
293
293
294−#: qml/Components/Lockscreen.qml:231
294+#: qml/Components/Lockscreen.qml:239
295msgid "Emergency Call"
295msgid "Emergency Call"
296msgstr "Gairm èiginn"
296msgstr "Gairm èiginn"
297
297
298−#: qml/Components/Lockscreen.qml:263
298+#: qml/Components/Lockscreen.qml:271
299msgid "OK"
299msgid "OK"
300msgstr "Ceart ma-thà"
300msgstr "Ceart ma-thà"
301
301
@@ -437,10 +437,14 @@ msgstr ""
437"muigh a-nis. Cleachd an sgrìn seo 'na phada-suathaidh gus gnìomh tomhaire a "
437"muigh a-nis. Cleachd an sgrìn seo 'na phada-suathaidh gus gnìomh tomhaire a "
438"dhèanamh."
438"dhèanamh."
439
439
440−#: qml/Greeter/CoverPage.qml:119
440+#: qml/Greeter/CoverPage.qml:127
441msgid "Unlock"
441msgid "Unlock"
442msgstr "Thoir a' ghlas dheth"
442msgstr "Thoir a' ghlas dheth"
443
443
444+#: qml/Greeter/Greeter.qml:536
445+msgid "Try again"
446+msgstr ""
447+
444#: qml/Greeter/LoginList.qml:259
448#: qml/Greeter/LoginList.qml:259
445msgid "Retry"
449msgid "Retry"
446msgstr "Feuch ris a-rithist"
450msgstr "Feuch ris a-rithist"
@@ -479,34 +483,34 @@ msgstr ""
479"shuidheachadh air roghainnean an fhactaraidh agus thèid gach dàta pearsanta "
483"shuidheachadh air roghainnean an fhactaraidh agus thèid gach dàta pearsanta "
480"a sguabadh às."
484"a sguabadh às."
481
485
482−#: qml/Greeter/NarrowView.qml:116
486+#: qml/Greeter/NarrowView.qml:129
483#, qt-format
487#, qt-format
484msgid "Enter %1"
488msgid "Enter %1"
485msgstr "Cuir a-steach %1"
489msgstr "Cuir a-steach %1"
486
490
487−#: qml/Greeter/NarrowView.qml:117
491+#: qml/Greeter/NarrowView.qml:130
488msgid "Enter passphrase"
492msgid "Enter passphrase"
489msgstr "Cuir abairt-fhaire a-steach"
493msgstr "Cuir abairt-fhaire a-steach"
490
494
491−#: qml/Greeter/NarrowView.qml:118
495+#: qml/Greeter/NarrowView.qml:131
492msgid "Enter passcode"
496msgid "Enter passcode"
493msgstr "Cuir còd-faire a-steach"
497msgstr "Cuir còd-faire a-steach"
494
498
495−#: qml/Greeter/NarrowView.qml:119
499+#: qml/Greeter/NarrowView.qml:135
496#, qt-format
500#, qt-format
497msgid "Sorry, incorrect %1"
501msgid "Sorry, incorrect %1"
498msgstr "Duilich ach tha a' %1 cearr"
502msgstr "Duilich ach tha a' %1 cearr"
499
503
500−#: qml/Greeter/NarrowView.qml:120
504+#: qml/Greeter/NarrowView.qml:136
501msgid "Sorry, incorrect passphrase"
505msgid "Sorry, incorrect passphrase"
502msgstr "Duilich ach tha an abairt-fhaire cearr"
506msgstr "Duilich ach tha an abairt-fhaire cearr"
503
507
504−#: qml/Greeter/NarrowView.qml:121
508+#: qml/Greeter/NarrowView.qml:137
505msgctxt "passphrase"
509msgctxt "passphrase"
506msgid "Please re-enter"
510msgid "Please re-enter"
507msgstr "Cuir a-steach i a-rithist"
511msgstr "Cuir a-steach i a-rithist"
508
512
509−#: qml/Greeter/NarrowView.qml:122
513+#: qml/Greeter/NarrowView.qml:138
510msgid "Sorry, incorrect passcode"
514msgid "Sorry, incorrect passcode"
511msgstr "Duilich ach tha an còd-faire cearr"
515msgstr "Duilich ach tha an còd-faire cearr"
512
516
po/gl.po+67−61
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2016-01-15 14:56+0000\n"
11"PO-Revision-Date: 2016-01-15 14:56+0000\n"
12"Last-Translator: Marcos Lans <Unknown>\n"
12"Last-Translator: Marcos Lans <Unknown>\n"
13"Language-Team: Galician <gl@li.org>\n"
13"Language-Team: Galician <gl@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "Saír"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Eliminar o atallo"
36msgstr "Eliminar o atallo"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Dispositivo bloqueado"
40msgstr "Dispositivo bloqueado"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr "Bloqueouse o dispositivo polos intentos fallidos da frase secreta."
44msgstr "Bloqueouse o dispositivo polos intentos fallidos da frase secreta."
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr "Bloqueouse o dispositivo polos intentos fallidos da clave."
48msgstr "Bloqueouse o dispositivo polos intentos fallidos da clave."
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -119,173 +119,173 @@ msgstr "Reiniciar"
119
119
120#: qml/Components/KeyboardShortcutsOverlay.qml:41
120#: qml/Components/KeyboardShortcutsOverlay.qml:41
121msgid "Keyboard Shortcuts"
121msgid "Keyboard Shortcuts"
122−msgstr ""
122+msgstr "Atallos do teclado"
123
123
124#: qml/Components/KeyboardShortcutsOverlay.qml:55
124#: qml/Components/KeyboardShortcutsOverlay.qml:55
125msgid "Unity 8"
125msgid "Unity 8"
126−msgstr ""
126+msgstr "Unity 8"
127
127
128#: qml/Components/KeyboardShortcutsOverlay.qml:62
128#: qml/Components/KeyboardShortcutsOverlay.qml:62
129msgid "PrtScr"
129msgid "PrtScr"
130−msgstr ""
130+msgstr "ImpPant"
131
131
132#: qml/Components/KeyboardShortcutsOverlay.qml:67
132#: qml/Components/KeyboardShortcutsOverlay.qml:67
133msgid "Takes a screenshot."
133msgid "Takes a screenshot."
134−msgstr ""
134+msgstr "Capturar a pantalla."
135
135
136#: qml/Components/KeyboardShortcutsOverlay.qml:75
136#: qml/Components/KeyboardShortcutsOverlay.qml:75
137msgid "Alt + PrtScr"
137msgid "Alt + PrtScr"
138−msgstr ""
138+msgstr "Alt + ImpPant"
139
139
140#: qml/Components/KeyboardShortcutsOverlay.qml:80
140#: qml/Components/KeyboardShortcutsOverlay.qml:80
141msgid "Takes a screenshot of a window."
141msgid "Takes a screenshot of a window."
142−msgstr ""
142+msgstr "Capturar unha xanela da pantalla."
143
143
144#: qml/Components/KeyboardShortcutsOverlay.qml:88
144#: qml/Components/KeyboardShortcutsOverlay.qml:88
145msgid "Super + Space"
145msgid "Super + Space"
146−msgstr ""
146+msgstr "Super + Espazo"
147
147
148#: qml/Components/KeyboardShortcutsOverlay.qml:93
148#: qml/Components/KeyboardShortcutsOverlay.qml:93
149msgid "Switches to next keyboard layout."
149msgid "Switches to next keyboard layout."
150−msgstr ""
150+msgstr "Cambia á disposición seguinte do teclado."
151
151
152#: qml/Components/KeyboardShortcutsOverlay.qml:101
152#: qml/Components/KeyboardShortcutsOverlay.qml:101
153msgid "Super + Shift + Space"
153msgid "Super + Shift + Space"
154−msgstr ""
154+msgstr "Super + Maiús + Espazo"
155
155
156#: qml/Components/KeyboardShortcutsOverlay.qml:106
156#: qml/Components/KeyboardShortcutsOverlay.qml:106
157msgid "Switches to previous keyboard layout."
157msgid "Switches to previous keyboard layout."
158−msgstr ""
158+msgstr "Cambia á disposición anterior do teclado"
159
159
160#: qml/Components/KeyboardShortcutsOverlay.qml:118
160#: qml/Components/KeyboardShortcutsOverlay.qml:118
161msgid "Launcher"
161msgid "Launcher"
162−msgstr ""
162+msgstr "Iniciador"
163
163
164#: qml/Components/KeyboardShortcutsOverlay.qml:125
164#: qml/Components/KeyboardShortcutsOverlay.qml:125
165msgid "Super (Hold)"
165msgid "Super (Hold)"
166−msgstr ""
166+msgstr "Super (manter primida)"
167
167
168#: qml/Components/KeyboardShortcutsOverlay.qml:130
168#: qml/Components/KeyboardShortcutsOverlay.qml:130
169msgid "Opens the launcher, displays shortcuts."
169msgid "Opens the launcher, displays shortcuts."
170−msgstr ""
170+msgstr "Abre o Iniciador, mostra os atallos."
171
171
172#: qml/Components/KeyboardShortcutsOverlay.qml:138
172#: qml/Components/KeyboardShortcutsOverlay.qml:138
173msgid "Alt + F1"
173msgid "Alt + F1"
174−msgstr ""
174+msgstr "Alt + F1"
175
175
176#: qml/Components/KeyboardShortcutsOverlay.qml:143
176#: qml/Components/KeyboardShortcutsOverlay.qml:143
177msgid "Opens launcher keyboard navigation mode."
177msgid "Opens launcher keyboard navigation mode."
178−msgstr ""
178+msgstr "Abre o modo navegación por teclado do Iniciador."
179
179
180#: qml/Components/KeyboardShortcutsOverlay.qml:151
180#: qml/Components/KeyboardShortcutsOverlay.qml:151
181msgid "Super + Tab"
181msgid "Super + Tab"
182−msgstr ""
182+msgstr "Super + Tab"
183
183
184#: qml/Components/KeyboardShortcutsOverlay.qml:156
184#: qml/Components/KeyboardShortcutsOverlay.qml:156
185msgid "Switches applications via the launcher."
185msgid "Switches applications via the launcher."
186−msgstr ""
186+msgstr "Cambia entre aplicativos co Iniciador."
187
187
188#: qml/Components/KeyboardShortcutsOverlay.qml:164
188#: qml/Components/KeyboardShortcutsOverlay.qml:164
189msgid "Super + 0 to 9"
189msgid "Super + 0 to 9"
190−msgstr ""
190+msgstr "Super + 0 a 9"
191
191
192#: qml/Components/KeyboardShortcutsOverlay.qml:169
192#: qml/Components/KeyboardShortcutsOverlay.qml:169
193msgid "Same as clicking on a launcher icon."
193msgid "Same as clicking on a launcher icon."
194−msgstr ""
194+msgstr "Igual que premer nunha icona do Iniciador."
195
195
196#: qml/Components/KeyboardShortcutsOverlay.qml:181
196#: qml/Components/KeyboardShortcutsOverlay.qml:181
197msgid "Scopes"
197msgid "Scopes"
198−msgstr ""
198+msgstr "Ámbitos"
199
199
200#: qml/Components/KeyboardShortcutsOverlay.qml:188
200#: qml/Components/KeyboardShortcutsOverlay.qml:188
201msgid "Super (Tap)"
201msgid "Super (Tap)"
202−msgstr ""
202+msgstr "Super (tocar)"
203
203
204#: qml/Components/KeyboardShortcutsOverlay.qml:193
204#: qml/Components/KeyboardShortcutsOverlay.qml:193
205msgid "Opens the Scopes home."
205msgid "Opens the Scopes home."
206−msgstr ""
206+msgstr "Abre os Ámbitos."
207
207
208#: qml/Components/KeyboardShortcutsOverlay.qml:209
208#: qml/Components/KeyboardShortcutsOverlay.qml:209
209msgid "Switching"
209msgid "Switching"
210−msgstr ""
210+msgstr "Cambiar"
211
211
212#: qml/Components/KeyboardShortcutsOverlay.qml:216
212#: qml/Components/KeyboardShortcutsOverlay.qml:216
213msgid "Alt + Tab"
213msgid "Alt + Tab"
214−msgstr ""
214+msgstr "Alt + Tab"
215
215
216#: qml/Components/KeyboardShortcutsOverlay.qml:221
216#: qml/Components/KeyboardShortcutsOverlay.qml:221
217msgid "Switches between applications."
217msgid "Switches between applications."
218−msgstr ""
218+msgstr "Cambia entre aplicativos."
219
219
220#: qml/Components/KeyboardShortcutsOverlay.qml:229
220#: qml/Components/KeyboardShortcutsOverlay.qml:229
221msgid "Super + W"
221msgid "Super + W"
222−msgstr ""
222+msgstr "Super + W"
223
223
224#: qml/Components/KeyboardShortcutsOverlay.qml:234
224#: qml/Components/KeyboardShortcutsOverlay.qml:234
225msgid "Opens the desktop spread."
225msgid "Opens the desktop spread."
226−msgstr ""
226+msgstr "Mostra todas as xanelas do escritorio."
227
227
228#: qml/Components/KeyboardShortcutsOverlay.qml:242
228#: qml/Components/KeyboardShortcutsOverlay.qml:242
229msgid "Cursor Left or Right"
229msgid "Cursor Left or Right"
230−msgstr ""
230+msgstr "Frecha esquerda ou dereita"
231
231
232#: qml/Components/KeyboardShortcutsOverlay.qml:247
232#: qml/Components/KeyboardShortcutsOverlay.qml:247
233msgid "Moves the focus."
233msgid "Moves the focus."
234−msgstr ""
234+msgstr "Cambia o foco."
235
235
236#: qml/Components/KeyboardShortcutsOverlay.qml:259
236#: qml/Components/KeyboardShortcutsOverlay.qml:259
237msgid "Windows"
237msgid "Windows"
238−msgstr ""
238+msgstr "Xanelas"
239
239
240#: qml/Components/KeyboardShortcutsOverlay.qml:266
240#: qml/Components/KeyboardShortcutsOverlay.qml:266
241msgid "Ctrl + Super + D"
241msgid "Ctrl + Super + D"
242−msgstr ""
242+msgstr "Ctrl + Super + D"
243
243
244#: qml/Components/KeyboardShortcutsOverlay.qml:271
244#: qml/Components/KeyboardShortcutsOverlay.qml:271
245msgid "Minimizes all windows."
245msgid "Minimizes all windows."
246−msgstr ""
246+msgstr "Minimiza todas as xanelas."
247
247
248#: qml/Components/KeyboardShortcutsOverlay.qml:279
248#: qml/Components/KeyboardShortcutsOverlay.qml:279
249msgid "Ctrl + Super + Up"
249msgid "Ctrl + Super + Up"
250−msgstr ""
250+msgstr "Ctrl + Super + Arriba"
251
251
252#: qml/Components/KeyboardShortcutsOverlay.qml:284
252#: qml/Components/KeyboardShortcutsOverlay.qml:284
253msgid "Maximizes the current window."
253msgid "Maximizes the current window."
254−msgstr ""
254+msgstr "Maximiza a xanela actual."
255
255
256#: qml/Components/KeyboardShortcutsOverlay.qml:292
256#: qml/Components/KeyboardShortcutsOverlay.qml:292
257msgid "Ctrl + Super + Down"
257msgid "Ctrl + Super + Down"
258−msgstr ""
258+msgstr "Ctrl + Super + Abaixo"
259
259
260#: qml/Components/KeyboardShortcutsOverlay.qml:297
260#: qml/Components/KeyboardShortcutsOverlay.qml:297
261msgid "Minimizes or restores the current window."
261msgid "Minimizes or restores the current window."
262−msgstr ""
262+msgstr "Minimiza ou restabelece a xanela actual."
263
263
264#: qml/Components/KeyboardShortcutsOverlay.qml:305
264#: qml/Components/KeyboardShortcutsOverlay.qml:305
265msgid "Ctrl + Super + Left or Right"
265msgid "Ctrl + Super + Left or Right"
266−msgstr ""
266+msgstr "Ctrl + Super + Esq. ou Der."
267
267
268#: qml/Components/KeyboardShortcutsOverlay.qml:310
268#: qml/Components/KeyboardShortcutsOverlay.qml:310
269msgid "Semi-maximizes the current window."
269msgid "Semi-maximizes the current window."
270−msgstr ""
270+msgstr "Semi-maximiza a xanela actual."
271
271
272#: qml/Components/KeyboardShortcutsOverlay.qml:318
272#: qml/Components/KeyboardShortcutsOverlay.qml:318
273msgid "Alt + F4"
273msgid "Alt + F4"
274−msgstr ""
274+msgstr "Alt + F4"
275
275
276#: qml/Components/KeyboardShortcutsOverlay.qml:323
276#: qml/Components/KeyboardShortcutsOverlay.qml:323
277msgid "Closes the current window."
277msgid "Closes the current window."
278−msgstr ""
278+msgstr "Pecha a xanela actual."
279
279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281msgid "Return to Call"
281msgid "Return to Call"
282msgstr "Volver á chamada"
282msgstr "Volver á chamada"
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Emergency Call"
285msgid "Emergency Call"
286msgstr "Chamada de emerxencia"
286msgstr "Chamada de emerxencia"
287
287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289msgid "OK"
289msgid "OK"
290msgstr "Aceptar"
290msgstr "Aceptar"
291
291
@@ -426,17 +426,21 @@ msgstr ""
426"Agora o dispositivo conectouse a unha pantalla externa. Use esta pantalla "
426"Agora o dispositivo conectouse a unha pantalla externa. Use esta pantalla "
427"como área táctil para interactuar co punteiro."
427"como área táctil para interactuar co punteiro."
428
428
429−#: qml/Greeter/CoverPage.qml:119
429+#: qml/Greeter/CoverPage.qml:127
430msgid "Unlock"
430msgid "Unlock"
431msgstr "Desbloquear"
431msgstr "Desbloquear"
432
432
433+#: qml/Greeter/Greeter.qml:536
434+msgid "Try again"
435+msgstr "Tentar de novo"
436+
433#: qml/Greeter/LoginList.qml:259
437#: qml/Greeter/LoginList.qml:259
434msgid "Retry"
438msgid "Retry"
435msgstr "Reintentar"
439msgstr "Reintentar"
436
440
437#: qml/Greeter/LoginList.qml:260
441#: qml/Greeter/LoginList.qml:260
438msgid "Log In"
442msgid "Log In"
439−msgstr ""
443+msgstr "Iniciar sesión"
440
444
441#: qml/Greeter/NarrowView.qml:54
445#: qml/Greeter/NarrowView.qml:54
442msgid "Sorry, incorrect passphrase."
446msgid "Sorry, incorrect passphrase."
@@ -466,34 +470,34 @@ msgstr ""
466"Se a clave introducida é incorrecta, o teléfono restabelecerá os valores de "
470"Se a clave introducida é incorrecta, o teléfono restabelecerá os valores de "
467"fábrica e perderá todos os datos persoais."
471"fábrica e perderá todos os datos persoais."
468
472
469−#: qml/Greeter/NarrowView.qml:116
473+#: qml/Greeter/NarrowView.qml:129
470#, qt-format
474#, qt-format
471msgid "Enter %1"
475msgid "Enter %1"
472msgstr "Introducir %1"
476msgstr "Introducir %1"
473
477
474−#: qml/Greeter/NarrowView.qml:117
478+#: qml/Greeter/NarrowView.qml:130
475msgid "Enter passphrase"
479msgid "Enter passphrase"
476msgstr "Introduza a frase secreta"
480msgstr "Introduza a frase secreta"
477
481
478−#: qml/Greeter/NarrowView.qml:118
482+#: qml/Greeter/NarrowView.qml:131
479msgid "Enter passcode"
483msgid "Enter passcode"
480msgstr "Introduza a clave"
484msgstr "Introduza a clave"
481
485
482−#: qml/Greeter/NarrowView.qml:119
486+#: qml/Greeter/NarrowView.qml:135
483#, qt-format
487#, qt-format
484msgid "Sorry, incorrect %1"
488msgid "Sorry, incorrect %1"
485msgstr "Sentímolo, %1 non coincide"
489msgstr "Sentímolo, %1 non coincide"
486
490
487−#: qml/Greeter/NarrowView.qml:120
491+#: qml/Greeter/NarrowView.qml:136
488msgid "Sorry, incorrect passphrase"
492msgid "Sorry, incorrect passphrase"
489msgstr "Sentímolo a frase é incorrecta"
493msgstr "Sentímolo a frase é incorrecta"
490
494
491−#: qml/Greeter/NarrowView.qml:121
495+#: qml/Greeter/NarrowView.qml:137
492msgctxt "passphrase"
496msgctxt "passphrase"
493msgid "Please re-enter"
497msgid "Please re-enter"
494msgstr "Introducir de novo"
498msgstr "Introducir de novo"
495
499
496−#: qml/Greeter/NarrowView.qml:122
500+#: qml/Greeter/NarrowView.qml:138
497msgid "Sorry, incorrect passcode"
501msgid "Sorry, incorrect passcode"
498msgstr "Sentímolo, a clave é incorrecta"
502msgstr "Sentímolo, a clave é incorrecta"
499
503
@@ -594,7 +598,7 @@ msgstr "Esvare longo desde o bordo esquerdo para abrir o ámbito Hoxe"
594
598
595#: qml/Tutorial/TutorialLeft.qml:47
599#: qml/Tutorial/TutorialLeft.qml:47
596msgid "Short swipe from the left edge to open the launcher"
600msgid "Short swipe from the left edge to open the launcher"
597−msgstr ""
601+msgstr "Esvarar lixeiramente desde a esquerda para abrir o Iniciador"
598
602
599#: qml/Tutorial/TutorialRight.qml:55
603#: qml/Tutorial/TutorialRight.qml:55
600msgid "Push your mouse against the right edge to view your open apps"
604msgid "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"
602
606
603#: qml/Tutorial/TutorialRight.qml:56
607#: qml/Tutorial/TutorialRight.qml:56
604msgid "Swipe from the right edge to view your open apps"
608msgid "Swipe from the right edge to view your open apps"
605−msgstr ""
609+msgstr "Esvarar desde a dereita para ver os aplicativos abertos"
606
610
607#: qml/Tutorial/TutorialTop.qml:53
611#: qml/Tutorial/TutorialTop.qml:53
608msgid "Swipe from the top edge to access notifications and quick settings"
612msgid "Swipe from the top edge to access notifications and quick settings"
609msgstr ""
613msgstr ""
614+"Esvarar desde o bordo superior para acceder ás notificacións e axustes "
615+"rápidos"
610
616
611#: qml/Wizard/Page.qml:54
617#: qml/Wizard/Page.qml:54
612msgctxt "Button: Go back one page in the Wizard"
618msgctxt "Button: Go back one page in the Wizard"
po/gv.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-04-02 14:24+0000\n"
11"PO-Revision-Date: 2015-04-02 14:24+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Manx <gv@li.org>\n"
13"Language-Team: Manx <gv@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : (n == 2 ? 1 : 2);\n"
17"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"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,23 +35,23 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Jean neu-freenaghey yn cassan er lheh"
36msgstr "Jean neu-freenaghey yn cassan er lheh"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Saase glast"
40msgstr "Saase glast"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45"Hie oo er glassey magh kyndagh rish rour çhebbyn aggairagh er yn fockle "
45"Hie oo er glassey magh kyndagh rish rour çhebbyn aggairagh er yn fockle "
46"follit."
46"follit."
47
47
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
49msgid "You have been locked out due to too many failed passcode attempts."
49msgid "You have been locked out due to too many failed passcode attempts."
50msgstr ""
50msgstr ""
51"Hie oo er glassey magh kyndagh rish rour çhebbyn aggairagh er yn fockle "
51"Hie oo er glassey magh kyndagh rish rour çhebbyn aggairagh er yn fockle "
52"follit."
52"follit."
53
53
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
55#, qt-format
55#, qt-format
56msgid "Please wait %1 minute and then try again…"
56msgid "Please wait %1 minute and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
@@ -284,15 +284,15 @@ msgstr ""
284msgid "Closes the current window."
284msgid "Closes the current window."
285msgstr ""
285msgstr ""
286
286
287−#: qml/Components/Lockscreen.qml:231
287+#: qml/Components/Lockscreen.qml:239
288msgid "Return to Call"
288msgid "Return to Call"
289msgstr "Erash dys eam"
289msgstr "Erash dys eam"
290
290
291−#: qml/Components/Lockscreen.qml:231
291+#: qml/Components/Lockscreen.qml:239
292msgid "Emergency Call"
292msgid "Emergency Call"
293msgstr "Eam eginit"
293msgstr "Eam eginit"
294
294
295−#: qml/Components/Lockscreen.qml:263
295+#: qml/Components/Lockscreen.qml:271
296msgid "OK"
296msgid "OK"
297msgstr "Mie dy liooar"
297msgstr "Mie dy liooar"
298
298
@@ -429,10 +429,14 @@ msgid ""
429"touch pad to interact with the pointer."
429"touch pad to interact with the pointer."
430msgstr ""
430msgstr ""
431
431
432−#: qml/Greeter/CoverPage.qml:119
432+#: qml/Greeter/CoverPage.qml:127
433msgid "Unlock"
433msgid "Unlock"
434msgstr ""
434msgstr ""
435
435
436+#: qml/Greeter/Greeter.qml:536
437+msgid "Try again"
438+msgstr ""
439+
436#: qml/Greeter/LoginList.qml:259
440#: qml/Greeter/LoginList.qml:259
437msgid "Retry"
441msgid "Retry"
438msgstr ""
442msgstr ""
@@ -465,34 +469,34 @@ msgid ""
465"and all personal data will be deleted."
469"and all personal data will be deleted."
466msgstr ""
470msgstr ""
467
471
468−#: qml/Greeter/NarrowView.qml:116
472+#: qml/Greeter/NarrowView.qml:129
469#, qt-format
473#, qt-format
470msgid "Enter %1"
474msgid "Enter %1"
471msgstr ""
475msgstr ""
472
476
473−#: qml/Greeter/NarrowView.qml:117
477+#: qml/Greeter/NarrowView.qml:130
474msgid "Enter passphrase"
478msgid "Enter passphrase"
475msgstr ""
479msgstr ""
476
480
477−#: qml/Greeter/NarrowView.qml:118
481+#: qml/Greeter/NarrowView.qml:131
478msgid "Enter passcode"
482msgid "Enter passcode"
479msgstr ""
483msgstr ""
480
484
481−#: qml/Greeter/NarrowView.qml:119
485+#: qml/Greeter/NarrowView.qml:135
482#, qt-format
486#, qt-format
483msgid "Sorry, incorrect %1"
487msgid "Sorry, incorrect %1"
484msgstr ""
488msgstr ""
485
489
486−#: qml/Greeter/NarrowView.qml:120
490+#: qml/Greeter/NarrowView.qml:136
487msgid "Sorry, incorrect passphrase"
491msgid "Sorry, incorrect passphrase"
488msgstr ""
492msgstr ""
489
493
490−#: qml/Greeter/NarrowView.qml:121
494+#: qml/Greeter/NarrowView.qml:137
491msgctxt "passphrase"
495msgctxt "passphrase"
492msgid "Please re-enter"
496msgid "Please re-enter"
493msgstr ""
497msgstr ""
494
498
495−#: qml/Greeter/NarrowView.qml:122
499+#: qml/Greeter/NarrowView.qml:138
496msgid "Sorry, incorrect passcode"
500msgid "Sorry, incorrect passcode"
497msgstr ""
501msgstr ""
498
502
po/he.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-07-12 08:47+0000\n"
11"PO-Revision-Date: 2015-07-12 08:47+0000\n"
12"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
12"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
13"Language-Team: Hebrew <he@li.org>\n"
13"Language-Team: Hebrew <he@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "הפרדת קיצור הדרך"
36msgstr "הפרדת קיצור הדרך"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "ההתקן נעול"
40msgstr "ההתקן נעול"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr "ננעלת מחוץ למערכת עקב ריבוי ניסיונות הזנת מילת צופן."
44msgstr "ננעלת מחוץ למערכת עקב ריבוי ניסיונות הזנת מילת צופן."
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277msgid "Closes the current window."
277msgid "Closes the current window."
278msgstr ""
278msgstr ""
279
279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281msgid "Return to Call"
281msgid "Return to Call"
282msgstr "חזרה לשיחה"
282msgstr "חזרה לשיחה"
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Emergency Call"
285msgid "Emergency Call"
286msgstr "שיחת חירום"
286msgstr "שיחת חירום"
287
287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289msgid "OK"
289msgid "OK"
290msgstr "אישור"
290msgstr "אישור"
291
291
@@ -422,10 +422,14 @@ msgid ""
422"touch pad to interact with the pointer."
422"touch pad to interact with the pointer."
423msgstr ""
423msgstr ""
424
424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426msgid "Unlock"
426msgid "Unlock"
427msgstr "שחרור נעילה"
427msgstr "שחרור נעילה"
428
428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429#: qml/Greeter/LoginList.qml:259
433#: qml/Greeter/LoginList.qml:259
430msgid "Retry"
434msgid "Retry"
431msgstr "ניסיון חוזר"
435msgstr "ניסיון חוזר"
@@ -458,34 +462,34 @@ msgid ""
458"and all personal data will be deleted."
462"and all personal data will be deleted."
459msgstr ""
463msgstr ""
460
464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462#, qt-format
466#, qt-format
463msgid "Enter %1"
467msgid "Enter %1"
464msgstr ""
468msgstr ""
465
469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467msgid "Enter passphrase"
471msgid "Enter passphrase"
468msgstr "נא להזין מילת צופן"
472msgstr "נא להזין מילת צופן"
469
473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471msgid "Enter passcode"
475msgid "Enter passcode"
472msgstr ""
476msgstr ""
473
477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475#, qt-format
479#, qt-format
476msgid "Sorry, incorrect %1"
480msgid "Sorry, incorrect %1"
477msgstr ""
481msgstr ""
478
482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480msgid "Sorry, incorrect passphrase"
484msgid "Sorry, incorrect passphrase"
481msgstr "מילת הצופן שגויה, עמך הסליחה."
485msgstr "מילת הצופן שגויה, עמך הסליחה."
482
486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484msgctxt "passphrase"
488msgctxt "passphrase"
485msgid "Please re-enter"
489msgid "Please re-enter"
486msgstr ""
490msgstr ""
487
491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489msgid "Sorry, incorrect passcode"
493msgid "Sorry, incorrect passcode"
490msgstr ""
494msgstr ""
491
495
po/hi.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2014-01-15 01:49+0000\n"
11"PO-Revision-Date: 2014-01-15 01:49+0000\n"
12"Last-Translator: Siddhanathan Shanmugam <Unknown>\n"
12"Last-Translator: Siddhanathan Shanmugam <Unknown>\n"
13"Language-Team: Hindi <hi@li.org>\n"
13"Language-Team: Hindi <hi@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr ""
36msgstr ""
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr ""
40msgstr ""
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277msgid "Closes the current window."
277msgid "Closes the current window."
278msgstr ""
278msgstr ""
279
279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281msgid "Return to Call"
281msgid "Return to Call"
282msgstr ""
282msgstr ""
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Emergency Call"
285msgid "Emergency Call"
286msgstr "आपातकालीन कॉल"
286msgstr "आपातकालीन कॉल"
287
287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289msgid "OK"
289msgid "OK"
290msgstr ""
290msgstr ""
291
291
@@ -422,10 +422,14 @@ msgid ""
422"touch pad to interact with the pointer."
422"touch pad to interact with the pointer."
423msgstr ""
423msgstr ""
424
424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426msgid "Unlock"
426msgid "Unlock"
427msgstr ""
427msgstr ""
428
428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429#: qml/Greeter/LoginList.qml:259
433#: qml/Greeter/LoginList.qml:259
430msgid "Retry"
434msgid "Retry"
431msgstr ""
435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458"and all personal data will be deleted."
462"and all personal data will be deleted."
459msgstr ""
463msgstr ""
460
464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462#, qt-format
466#, qt-format
463msgid "Enter %1"
467msgid "Enter %1"
464msgstr ""
468msgstr ""
465
469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467msgid "Enter passphrase"
471msgid "Enter passphrase"
468msgstr ""
472msgstr ""
469
473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471msgid "Enter passcode"
475msgid "Enter passcode"
472msgstr ""
476msgstr ""
473
477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475#, qt-format
479#, qt-format
476msgid "Sorry, incorrect %1"
480msgid "Sorry, incorrect %1"
477msgstr ""
481msgstr ""
478
482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480msgid "Sorry, incorrect passphrase"
484msgid "Sorry, incorrect passphrase"
481msgstr ""
485msgstr ""
482
486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484msgctxt "passphrase"
488msgctxt "passphrase"
485msgid "Please re-enter"
489msgid "Please re-enter"
486msgstr ""
490msgstr ""
487
491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489msgid "Sorry, incorrect passcode"
493msgid "Sorry, incorrect passcode"
490msgstr ""
494msgstr ""
491
495
po/hr.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2016-05-04 17:52+0000\n"
11"PO-Revision-Date: 2016-05-04 17:52+0000\n"
12"Last-Translator: gogo <trebelnik2@gmail.com>\n"
12"Last-Translator: gogo <trebelnik2@gmail.com>\n"
13"Language-Team: Croatian <hr@li.org>\n"
13"Language-Team: Croatian <hr@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
20−"X-Generator: Launchpad (build 18097)\n"
20+"X-Generator: Launchpad (build 18111)\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -36,19 +36,19 @@ msgstr "Zatvori"
36msgid "Unpin shortcut"
36msgid "Unpin shortcut"
37msgstr "Ukloni kraticu"
37msgstr "Ukloni kraticu"
38
38
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
40msgid "Device Locked"
40msgid "Device Locked"
41msgstr "Uređaj zaključan"
41msgstr "Uređaj zaključan"
42
42
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
44msgid "You have been locked out due to too many failed passphrase attempts."
44msgid "You have been locked out due to too many failed passphrase attempts."
45msgstr "Previše pogrešnih pokušaja otključavanja."
45msgstr "Previše pogrešnih pokušaja otključavanja."
46
46
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
48msgid "You have been locked out due to too many failed passcode attempts."
48msgid "You have been locked out due to too many failed passcode attempts."
49msgstr "Previše pogrešnih pokušaja otključavanja."
49msgstr "Previše pogrešnih pokušaja otključavanja."
50
50
51−#: qml/Components/DelayedLockscreen.qml:74
51+#: qml/Components/DelayedLockscreen.qml:75
52#, qt-format
52#, qt-format
53msgid "Please wait %1 minute and then try again…"
53msgid "Please wait %1 minute and then try again…"
54msgid_plural "Please wait %1 minutes and then try again…"
54msgid_plural "Please wait %1 minutes and then try again…"
@@ -281,15 +281,15 @@ msgstr ""
281msgid "Closes the current window."
281msgid "Closes the current window."
282msgstr ""
282msgstr ""
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Return to Call"
285msgid "Return to Call"
286msgstr "Vrati na poziv"
286msgstr "Vrati na poziv"
287
287
288−#: qml/Components/Lockscreen.qml:231
288+#: qml/Components/Lockscreen.qml:239
289msgid "Emergency Call"
289msgid "Emergency Call"
290msgstr "Hitni poziv"
290msgstr "Hitni poziv"
291
291
292−#: qml/Components/Lockscreen.qml:263
292+#: qml/Components/Lockscreen.qml:271
293msgid "OK"
293msgid "OK"
294msgstr "U redu"
294msgstr "U redu"
295
295
@@ -430,10 +430,14 @@ msgstr ""
430"Vaš uređaj je sada povezan s vanjskim uređajem. Koristite ovaj zaslon kao "
430"Vaš uređaj je sada povezan s vanjskim uređajem. Koristite ovaj zaslon kao "
431"dodirnik za interakciju s pokazivačem."
431"dodirnik za interakciju s pokazivačem."
432
432
433−#: qml/Greeter/CoverPage.qml:119
433+#: qml/Greeter/CoverPage.qml:127
434msgid "Unlock"
434msgid "Unlock"
435msgstr "Otključaj"
435msgstr "Otključaj"
436
436
437+#: qml/Greeter/Greeter.qml:536
438+msgid "Try again"
439+msgstr ""
440+
437#: qml/Greeter/LoginList.qml:259
441#: qml/Greeter/LoginList.qml:259
438msgid "Retry"
442msgid "Retry"
439msgstr "Pokušaj ponovno"
443msgstr "Pokušaj ponovno"
@@ -470,34 +474,34 @@ msgstr ""
470"Ako je netočno upisan kôd, vaš telefon će pokrenuti vraćanje na tvorničke "
474"Ako je netočno upisan kôd, vaš telefon će pokrenuti vraćanje na tvorničke "
471"postavke i svi osobni podaci biti će obrisani."
475"postavke i svi osobni podaci biti će obrisani."
472
476
473−#: qml/Greeter/NarrowView.qml:116
477+#: qml/Greeter/NarrowView.qml:129
474#, qt-format
478#, qt-format
475msgid "Enter %1"
479msgid "Enter %1"
476msgstr "Upišite %1"
480msgstr "Upišite %1"
477
481
478−#: qml/Greeter/NarrowView.qml:117
482+#: qml/Greeter/NarrowView.qml:130
479msgid "Enter passphrase"
483msgid "Enter passphrase"
480msgstr "Upišite lozinku"
484msgstr "Upišite lozinku"
481
485
482−#: qml/Greeter/NarrowView.qml:118
486+#: qml/Greeter/NarrowView.qml:131
483msgid "Enter passcode"
487msgid "Enter passcode"
484msgstr "Upišite kôd"
488msgstr "Upišite kôd"
485
489
486−#: qml/Greeter/NarrowView.qml:119
490+#: qml/Greeter/NarrowView.qml:135
487#, qt-format
491#, qt-format
488msgid "Sorry, incorrect %1"
492msgid "Sorry, incorrect %1"
489msgstr "Isprika, netočna %1"
493msgstr "Isprika, netočna %1"
490
494
491−#: qml/Greeter/NarrowView.qml:120
495+#: qml/Greeter/NarrowView.qml:136
492msgid "Sorry, incorrect passphrase"
496msgid "Sorry, incorrect passphrase"
493msgstr "Isprika, netočna lozinka"
497msgstr "Isprika, netočna lozinka"
494
498
495−#: qml/Greeter/NarrowView.qml:121
499+#: qml/Greeter/NarrowView.qml:137
496msgctxt "passphrase"
500msgctxt "passphrase"
497msgid "Please re-enter"
501msgid "Please re-enter"
498msgstr "Ponovno upišite"
502msgstr "Ponovno upišite"
499
503
500−#: qml/Greeter/NarrowView.qml:122
504+#: qml/Greeter/NarrowView.qml:138
501msgid "Sorry, incorrect passcode"
505msgid "Sorry, incorrect passcode"
502msgstr "Isprika, netočan kôd"
506msgstr "Isprika, netočan kôd"
503
507
po/hu.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2016-06-20 07:28+0000\n"
11"PO-Revision-Date: 2016-06-20 07:28+0000\n"
12"Last-Translator: Richard Somlói <ricsipontaz@gmail.com>\n"
12"Last-Translator: Richard Somlói <ricsipontaz@gmail.com>\n"
13"Language-Team: Hungarian <hu@li.org>\n"
13"Language-Team: Hungarian <hu@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-21 05:59+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "Kilépés"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Indító feloldása"
36msgstr "Indító feloldása"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Az eszköz zárolva"
40msgstr "Az eszköz zárolva"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr "A túl sok hibás jelmondat próbálkozás miatt az eszköz zárolva lett."
44msgstr "A túl sok hibás jelmondat próbálkozás miatt az eszköz zárolva lett."
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr "A túl sok hibás jelkód próbálkozás miatt az eszköz zárolva lett."
48msgstr "A túl sok hibás jelkód próbálkozás miatt az eszköz zárolva lett."
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr "Alt + F4"
279msgid "Closes the current window."
279msgid "Closes the current window."
280msgstr "Az aktuális ablak bezárása."
280msgstr "Az aktuális ablak bezárása."
281
281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283msgid "Return to Call"
283msgid "Return to Call"
284msgstr "Vissza a híváshoz"
284msgstr "Vissza a híváshoz"
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Emergency Call"
287msgid "Emergency Call"
288msgstr "Segélyhívás"
288msgstr "Segélyhívás"
289
289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291msgid "OK"
291msgid "OK"
292msgstr "OK"
292msgstr "OK"
293
293
@@ -428,10 +428,14 @@ msgstr ""
428"Az eszköz jelenleg egy külső kijelzőhöz van csatlakoztatva. Használja ezt a "
428"Az eszköz jelenleg egy külső kijelzőhöz van csatlakoztatva. Használja ezt a "
429"kijelzőt érintőtáblaként, melynek segítéségével irányíthatja a mutatót."
429"kijelzőt érintőtáblaként, melynek segítéségével irányíthatja a mutatót."
430
430
431−#: qml/Greeter/CoverPage.qml:119
431+#: qml/Greeter/CoverPage.qml:127
432msgid "Unlock"
432msgid "Unlock"
433msgstr "Feloldás"
433msgstr "Feloldás"
434
434
435+#: qml/Greeter/Greeter.qml:536
436+msgid "Try again"
437+msgstr "Próbálja újra"
438+
435#: qml/Greeter/LoginList.qml:259
439#: qml/Greeter/LoginList.qml:259
436msgid "Retry"
440msgid "Retry"
437msgstr "Újra"
441msgstr "Újra"
@@ -468,34 +472,34 @@ msgstr ""
468"Ha helytelen jelkódot ad meg, a telefonja visszaállítja a gyári "
472"Ha helytelen jelkódot ad meg, a telefonja visszaállítja a gyári "
469"beállításokat és törli minden személyes adatát."
473"beállításokat és törli minden személyes adatát."
470
474
471−#: qml/Greeter/NarrowView.qml:116
475+#: qml/Greeter/NarrowView.qml:129
472#, qt-format
476#, qt-format
473msgid "Enter %1"
477msgid "Enter %1"
474msgstr "%1 megadása"
478msgstr "%1 megadása"
475
479
476−#: qml/Greeter/NarrowView.qml:117
480+#: qml/Greeter/NarrowView.qml:130
477msgid "Enter passphrase"
481msgid "Enter passphrase"
478msgstr "Jelmondat megadása"
482msgstr "Jelmondat megadása"
479
483
480−#: qml/Greeter/NarrowView.qml:118
484+#: qml/Greeter/NarrowView.qml:131
481msgid "Enter passcode"
485msgid "Enter passcode"
482msgstr "Jelkód megadása"
486msgstr "Jelkód megadása"
483
487
484−#: qml/Greeter/NarrowView.qml:119
488+#: qml/Greeter/NarrowView.qml:135
485#, qt-format
489#, qt-format
486msgid "Sorry, incorrect %1"
490msgid "Sorry, incorrect %1"
487msgstr "Elnézést, helytelen %1"
491msgstr "Elnézést, helytelen %1"
488
492
489−#: qml/Greeter/NarrowView.qml:120
493+#: qml/Greeter/NarrowView.qml:136
490msgid "Sorry, incorrect passphrase"
494msgid "Sorry, incorrect passphrase"
491msgstr "Elnézést, helytelen jelmondat"
495msgstr "Elnézést, helytelen jelmondat"
492
496
493−#: qml/Greeter/NarrowView.qml:121
497+#: qml/Greeter/NarrowView.qml:137
494msgctxt "passphrase"
498msgctxt "passphrase"
495msgid "Please re-enter"
499msgid "Please re-enter"
496msgstr "Próbálja újra"
500msgstr "Próbálja újra"
497
501
498−#: qml/Greeter/NarrowView.qml:122
502+#: qml/Greeter/NarrowView.qml:138
499msgid "Sorry, incorrect passcode"
503msgid "Sorry, incorrect passcode"
500msgstr "Elnézést, helytelen jelkód"
504msgstr "Elnézést, helytelen jelkód"
501
505
po/hy.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2014-10-28 06:34+0000\n"
11"PO-Revision-Date: 2014-10-28 06:34+0000\n"
12"Last-Translator: Vahan Harutyunyan <Unknown>\n"
12"Last-Translator: Vahan Harutyunyan <Unknown>\n"
13"Language-Team: Armenian <hy@li.org>\n"
13"Language-Team: Armenian <hy@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,21 +35,21 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Հեռացնել պիտակը"
36msgstr "Հեռացնել պիտակը"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Սարքը արգելափակված է"
40msgstr "Սարքը արգելափակված է"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45"Գաղտնաբառի բավականին շատ ձախողված փորձերի պատճառով Դուք արգելափակված եք:"
45"Գաղտնաբառի բավականին շատ ձախողված փորձերի պատճառով Դուք արգելափակված եք:"
46
46
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
48msgid "You have been locked out due to too many failed passcode attempts."
48msgid "You have been locked out due to too many failed passcode attempts."
49msgstr ""
49msgstr ""
50"Ծածկագրի բավականին շատ ձախողված փորձերի պատճառով Դուք արգելափակված եք:"
50"Ծածկագրի բավականին շատ ձախողված փորձերի պատճառով Դուք արգելափակված եք:"
51
51
52−#: qml/Components/DelayedLockscreen.qml:74
52+#: qml/Components/DelayedLockscreen.qml:75
53#, qt-format
53#, qt-format
54msgid "Please wait %1 minute and then try again…"
54msgid "Please wait %1 minute and then try again…"
55msgid_plural "Please wait %1 minutes and then try again…"
55msgid_plural "Please wait %1 minutes and then try again…"
@@ -281,15 +281,15 @@ msgstr ""
281msgid "Closes the current window."
281msgid "Closes the current window."
282msgstr ""
282msgstr ""
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Return to Call"
285msgid "Return to Call"
286msgstr ""
286msgstr ""
287
287
288−#: qml/Components/Lockscreen.qml:231
288+#: qml/Components/Lockscreen.qml:239
289msgid "Emergency Call"
289msgid "Emergency Call"
290msgstr ""
290msgstr ""
291
291
292−#: qml/Components/Lockscreen.qml:263
292+#: qml/Components/Lockscreen.qml:271
293msgid "OK"
293msgid "OK"
294msgstr ""
294msgstr ""
295
295
@@ -426,10 +426,14 @@ msgid ""
426"touch pad to interact with the pointer."
426"touch pad to interact with the pointer."
427msgstr ""
427msgstr ""
428
428
429−#: qml/Greeter/CoverPage.qml:119
429+#: qml/Greeter/CoverPage.qml:127
430msgid "Unlock"
430msgid "Unlock"
431msgstr "Ապաբլոկավորել"
431msgstr "Ապաբլոկավորել"
432
432
433+#: qml/Greeter/Greeter.qml:536
434+msgid "Try again"
435+msgstr ""
436+
433#: qml/Greeter/LoginList.qml:259
437#: qml/Greeter/LoginList.qml:259
434msgid "Retry"
438msgid "Retry"
435msgstr ""
439msgstr ""
@@ -462,34 +466,34 @@ msgid ""
462"and all personal data will be deleted."
466"and all personal data will be deleted."
463msgstr ""
467msgstr ""
464
468
465−#: qml/Greeter/NarrowView.qml:116
469+#: qml/Greeter/NarrowView.qml:129
466#, qt-format
470#, qt-format
467msgid "Enter %1"
471msgid "Enter %1"
468msgstr "Մուտքագրեք %1"
472msgstr "Մուտքագրեք %1"
469
473
470−#: qml/Greeter/NarrowView.qml:117
474+#: qml/Greeter/NarrowView.qml:130
471msgid "Enter passphrase"
475msgid "Enter passphrase"
472msgstr "Մուտքագրե՛ք անցաբառը"
476msgstr "Մուտքագրե՛ք անցաբառը"
473
477
474−#: qml/Greeter/NarrowView.qml:118
478+#: qml/Greeter/NarrowView.qml:131
475msgid "Enter passcode"
479msgid "Enter passcode"
476msgstr "Մոտքագրեք ծածկագիրը"
480msgstr "Մոտքագրեք ծածկագիրը"
477
481
478−#: qml/Greeter/NarrowView.qml:119
482+#: qml/Greeter/NarrowView.qml:135
479#, qt-format
483#, qt-format
480msgid "Sorry, incorrect %1"
484msgid "Sorry, incorrect %1"
481msgstr "Ներեցեք, սխալ %1"
485msgstr "Ներեցեք, սխալ %1"
482
486
483−#: qml/Greeter/NarrowView.qml:120
487+#: qml/Greeter/NarrowView.qml:136
484msgid "Sorry, incorrect passphrase"
488msgid "Sorry, incorrect passphrase"
485msgstr "Ներեցեք, սխալ անցաբառ է"
489msgstr "Ներեցեք, սխալ անցաբառ է"
486
490
487−#: qml/Greeter/NarrowView.qml:121
491+#: qml/Greeter/NarrowView.qml:137
488msgctxt "passphrase"
492msgctxt "passphrase"
489msgid "Please re-enter"
493msgid "Please re-enter"
490msgstr ""
494msgstr ""
491
495
492−#: qml/Greeter/NarrowView.qml:122
496+#: qml/Greeter/NarrowView.qml:138
493msgid "Sorry, incorrect passcode"
497msgid "Sorry, incorrect passcode"
494msgstr "Ներեցեք, սխալ ծածկագիր է"
498msgstr "Ներեցեք, սխալ ծածկագիր է"
495
499
po/ia.po+67−61
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-08-25 19:31+0000\n"
11"PO-Revision-Date: 2015-08-25 19:31+0000\n"
12"Last-Translator: karm <melo@carmu.com>\n"
12"Last-Translator: karm <melo@carmu.com>\n"
13"Language-Team: Interlingua <ia@li.org>\n"
13"Language-Team: Interlingua <ia@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,21 +35,21 @@ msgstr "Quitar"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Via-breve a levar pin"
36msgstr "Via-breve a levar pin"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Dispositivo blocate"
40msgstr "Dispositivo blocate"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45"Tu ha essite blocate per multe tentativas de phrase-contrasigno fallite."
45"Tu ha essite blocate per multe tentativas de phrase-contrasigno fallite."
46
46
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
48msgid "You have been locked out due to too many failed passcode attempts."
48msgid "You have been locked out due to too many failed passcode attempts."
49msgstr ""
49msgstr ""
50"Tu ha essite blocate per multe tentativas de codice-contrasigno fallite."
50"Tu ha essite blocate per multe tentativas de codice-contrasigno fallite."
51
51
52−#: qml/Components/DelayedLockscreen.qml:74
52+#: qml/Components/DelayedLockscreen.qml:75
53#, qt-format
53#, qt-format
54msgid "Please wait %1 minute and then try again…"
54msgid "Please wait %1 minute and then try again…"
55msgid_plural "Please wait %1 minutes and then try again…"
55msgid_plural "Please wait %1 minutes and then try again…"
@@ -123,173 +123,173 @@ msgstr "Reinitiar"
123
123
124#: qml/Components/KeyboardShortcutsOverlay.qml:41
124#: qml/Components/KeyboardShortcutsOverlay.qml:41
125msgid "Keyboard Shortcuts"
125msgid "Keyboard Shortcuts"
126−msgstr ""
126+msgstr "Vias breve del claviero"
127
127
128#: qml/Components/KeyboardShortcutsOverlay.qml:55
128#: qml/Components/KeyboardShortcutsOverlay.qml:55
129msgid "Unity 8"
129msgid "Unity 8"
130−msgstr ""
130+msgstr "Unity 8"
131
131
132#: qml/Components/KeyboardShortcutsOverlay.qml:62
132#: qml/Components/KeyboardShortcutsOverlay.qml:62
133msgid "PrtScr"
133msgid "PrtScr"
134−msgstr ""
134+msgstr "PrtScr"
135
135
136#: qml/Components/KeyboardShortcutsOverlay.qml:67
136#: qml/Components/KeyboardShortcutsOverlay.qml:67
137msgid "Takes a screenshot."
137msgid "Takes a screenshot."
138−msgstr ""
138+msgstr "Prende un imagine instantanee del schermo."
139
139
140#: qml/Components/KeyboardShortcutsOverlay.qml:75
140#: qml/Components/KeyboardShortcutsOverlay.qml:75
141msgid "Alt + PrtScr"
141msgid "Alt + PrtScr"
142−msgstr ""
142+msgstr "Alt + PrtScr"
143
143
144#: qml/Components/KeyboardShortcutsOverlay.qml:80
144#: qml/Components/KeyboardShortcutsOverlay.qml:80
145msgid "Takes a screenshot of a window."
145msgid "Takes a screenshot of a window."
146−msgstr ""
146+msgstr "Prende un imagine instantanee de un fenestra."
147
147
148#: qml/Components/KeyboardShortcutsOverlay.qml:88
148#: qml/Components/KeyboardShortcutsOverlay.qml:88
149msgid "Super + Space"
149msgid "Super + Space"
150−msgstr ""
150+msgstr "Super + Space"
151
151
152#: qml/Components/KeyboardShortcutsOverlay.qml:93
152#: qml/Components/KeyboardShortcutsOverlay.qml:93
153msgid "Switches to next keyboard layout."
153msgid "Switches to next keyboard layout."
154−msgstr ""
154+msgstr "Excambia al mappa de claviero sequente."
155
155
156#: qml/Components/KeyboardShortcutsOverlay.qml:101
156#: qml/Components/KeyboardShortcutsOverlay.qml:101
157msgid "Super + Shift + Space"
157msgid "Super + Shift + Space"
158−msgstr ""
158+msgstr "Super + Shift + Space"
159
159
160#: qml/Components/KeyboardShortcutsOverlay.qml:106
160#: qml/Components/KeyboardShortcutsOverlay.qml:106
161msgid "Switches to previous keyboard layout."
161msgid "Switches to previous keyboard layout."
162−msgstr ""
162+msgstr "Excambia al mappa de claviero precedente."
163
163
164#: qml/Components/KeyboardShortcutsOverlay.qml:118
164#: qml/Components/KeyboardShortcutsOverlay.qml:118
165msgid "Launcher"
165msgid "Launcher"
166−msgstr ""
166+msgstr "Lanceator"
167
167
168#: qml/Components/KeyboardShortcutsOverlay.qml:125
168#: qml/Components/KeyboardShortcutsOverlay.qml:125
169msgid "Super (Hold)"
169msgid "Super (Hold)"
170−msgstr ""
170+msgstr "Super (Hold)"
171
171
172#: qml/Components/KeyboardShortcutsOverlay.qml:130
172#: qml/Components/KeyboardShortcutsOverlay.qml:130
173msgid "Opens the launcher, displays shortcuts."
173msgid "Opens the launcher, displays shortcuts."
174−msgstr ""
174+msgstr "Aperi le lanceator, monstra le vias breve."
175
175
176#: qml/Components/KeyboardShortcutsOverlay.qml:138
176#: qml/Components/KeyboardShortcutsOverlay.qml:138
177msgid "Alt + F1"
177msgid "Alt + F1"
178−msgstr ""
178+msgstr "Alt + F1"
179
179
180#: qml/Components/KeyboardShortcutsOverlay.qml:143
180#: qml/Components/KeyboardShortcutsOverlay.qml:143
181msgid "Opens launcher keyboard navigation mode."
181msgid "Opens launcher keyboard navigation mode."
182−msgstr ""
182+msgstr "Aperi le modo de navigation per le claviero del lanceator."
183
183
184#: qml/Components/KeyboardShortcutsOverlay.qml:151
184#: qml/Components/KeyboardShortcutsOverlay.qml:151
185msgid "Super + Tab"
185msgid "Super + Tab"
186−msgstr ""
186+msgstr "Super + Tab"
187
187
188#: qml/Components/KeyboardShortcutsOverlay.qml:156
188#: qml/Components/KeyboardShortcutsOverlay.qml:156
189msgid "Switches applications via the launcher."
189msgid "Switches applications via the launcher."
190−msgstr ""
190+msgstr "Excambia le applicationes via le lanceator"
191
191
192#: qml/Components/KeyboardShortcutsOverlay.qml:164
192#: qml/Components/KeyboardShortcutsOverlay.qml:164
193msgid "Super + 0 to 9"
193msgid "Super + 0 to 9"
194−msgstr ""
194+msgstr "Super + 0 a 9"
195
195
196#: qml/Components/KeyboardShortcutsOverlay.qml:169
196#: qml/Components/KeyboardShortcutsOverlay.qml:169
197msgid "Same as clicking on a launcher icon."
197msgid "Same as clicking on a launcher icon."
198−msgstr ""
198+msgstr "Mesmo que cliccar sur un icone del lanceator."
199
199
200#: qml/Components/KeyboardShortcutsOverlay.qml:181
200#: qml/Components/KeyboardShortcutsOverlay.qml:181
201msgid "Scopes"
201msgid "Scopes"
202−msgstr ""
202+msgstr "Miras"
203
203
204#: qml/Components/KeyboardShortcutsOverlay.qml:188
204#: qml/Components/KeyboardShortcutsOverlay.qml:188
205msgid "Super (Tap)"
205msgid "Super (Tap)"
206−msgstr ""
206+msgstr "Super (Tap)"
207
207
208#: qml/Components/KeyboardShortcutsOverlay.qml:193
208#: qml/Components/KeyboardShortcutsOverlay.qml:193
209msgid "Opens the Scopes home."
209msgid "Opens the Scopes home."
210−msgstr ""
210+msgstr "Aperi le initio de Scopes."
211
211
212#: qml/Components/KeyboardShortcutsOverlay.qml:209
212#: qml/Components/KeyboardShortcutsOverlay.qml:209
213msgid "Switching"
213msgid "Switching"
214−msgstr ""
214+msgstr "Commutar"
215
215
216#: qml/Components/KeyboardShortcutsOverlay.qml:216
216#: qml/Components/KeyboardShortcutsOverlay.qml:216
217msgid "Alt + Tab"
217msgid "Alt + Tab"
218−msgstr ""
218+msgstr "Alt + Tab"
219
219
220#: qml/Components/KeyboardShortcutsOverlay.qml:221
220#: qml/Components/KeyboardShortcutsOverlay.qml:221
221msgid "Switches between applications."
221msgid "Switches between applications."
222−msgstr ""
222+msgstr "Commuta inter le applicationes."
223
223
224#: qml/Components/KeyboardShortcutsOverlay.qml:229
224#: qml/Components/KeyboardShortcutsOverlay.qml:229
225msgid "Super + W"
225msgid "Super + W"
226−msgstr ""
226+msgstr "Super + W"
227
227
228#: qml/Components/KeyboardShortcutsOverlay.qml:234
228#: qml/Components/KeyboardShortcutsOverlay.qml:234
229msgid "Opens the desktop spread."
229msgid "Opens the desktop spread."
230−msgstr ""
230+msgstr "Aperi le diffusion delscriptorio"
231
231
232#: qml/Components/KeyboardShortcutsOverlay.qml:242
232#: qml/Components/KeyboardShortcutsOverlay.qml:242
233msgid "Cursor Left or Right"
233msgid "Cursor Left or Right"
234−msgstr ""
234+msgstr "Cursor sinistre o dextre"
235
235
236#: qml/Components/KeyboardShortcutsOverlay.qml:247
236#: qml/Components/KeyboardShortcutsOverlay.qml:247
237msgid "Moves the focus."
237msgid "Moves the focus."
238−msgstr ""
238+msgstr "Move le foco."
239
239
240#: qml/Components/KeyboardShortcutsOverlay.qml:259
240#: qml/Components/KeyboardShortcutsOverlay.qml:259
241msgid "Windows"
241msgid "Windows"
242−msgstr ""
242+msgstr "Fenestras"
243
243
244#: qml/Components/KeyboardShortcutsOverlay.qml:266
244#: qml/Components/KeyboardShortcutsOverlay.qml:266
245msgid "Ctrl + Super + D"
245msgid "Ctrl + Super + D"
246−msgstr ""
246+msgstr "Ctrl + Super + D"
247
247
248#: qml/Components/KeyboardShortcutsOverlay.qml:271
248#: qml/Components/KeyboardShortcutsOverlay.qml:271
249msgid "Minimizes all windows."
249msgid "Minimizes all windows."
250−msgstr ""
250+msgstr "Minimisa tote le fenestras."
251
251
252#: qml/Components/KeyboardShortcutsOverlay.qml:279
252#: qml/Components/KeyboardShortcutsOverlay.qml:279
253msgid "Ctrl + Super + Up"
253msgid "Ctrl + Super + Up"
254−msgstr ""
254+msgstr "Ctrl + Super + Up"
255
255
256#: qml/Components/KeyboardShortcutsOverlay.qml:284
256#: qml/Components/KeyboardShortcutsOverlay.qml:284
257msgid "Maximizes the current window."
257msgid "Maximizes the current window."
258−msgstr ""
258+msgstr "Maximisa tote le fenestras."
259
259
260#: qml/Components/KeyboardShortcutsOverlay.qml:292
260#: qml/Components/KeyboardShortcutsOverlay.qml:292
261msgid "Ctrl + Super + Down"
261msgid "Ctrl + Super + Down"
262−msgstr ""
262+msgstr "Ctrl + Super + Down"
263
263
264#: qml/Components/KeyboardShortcutsOverlay.qml:297
264#: qml/Components/KeyboardShortcutsOverlay.qml:297
265msgid "Minimizes or restores the current window."
265msgid "Minimizes or restores the current window."
266−msgstr ""
266+msgstr "Maximisa o restaura le fenestra actual."
267
267
268#: qml/Components/KeyboardShortcutsOverlay.qml:305
268#: qml/Components/KeyboardShortcutsOverlay.qml:305
269msgid "Ctrl + Super + Left or Right"
269msgid "Ctrl + Super + Left or Right"
270−msgstr ""
270+msgstr "Ctrl + Super + Left o Right"
271
271
272#: qml/Components/KeyboardShortcutsOverlay.qml:310
272#: qml/Components/KeyboardShortcutsOverlay.qml:310
273msgid "Semi-maximizes the current window."
273msgid "Semi-maximizes the current window."
274−msgstr ""
274+msgstr "Semi-maximisa le fenestra actual."
275
275
276#: qml/Components/KeyboardShortcutsOverlay.qml:318
276#: qml/Components/KeyboardShortcutsOverlay.qml:318
277msgid "Alt + F4"
277msgid "Alt + F4"
278−msgstr ""
278+msgstr "Alt + F4"
279
279
280#: qml/Components/KeyboardShortcutsOverlay.qml:323
280#: qml/Components/KeyboardShortcutsOverlay.qml:323
281msgid "Closes the current window."
281msgid "Closes the current window."
282−msgstr ""
282+msgstr "Claude le fenestra actual"
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Return to Call"
285msgid "Return to Call"
286msgstr "Retornar al appello"
286msgstr "Retornar al appello"
287
287
288−#: qml/Components/Lockscreen.qml:231
288+#: qml/Components/Lockscreen.qml:239
289msgid "Emergency Call"
289msgid "Emergency Call"
290msgstr "Appello de emergentia"
290msgstr "Appello de emergentia"
291
291
292−#: qml/Components/Lockscreen.qml:263
292+#: qml/Components/Lockscreen.qml:271
293msgid "OK"
293msgid "OK"
294msgstr "OK"
294msgstr "OK"
295
295
@@ -428,17 +428,21 @@ msgstr ""
428"Tu dispositivo es nunc connexe a un schermo externe. Usa iste schermo como "
428"Tu dispositivo es nunc connexe a un schermo externe. Usa iste schermo como "
429"pannello tactile pro interager con le punctator."
429"pannello tactile pro interager con le punctator."
430
430
431−#: qml/Greeter/CoverPage.qml:119
431+#: qml/Greeter/CoverPage.qml:127
432msgid "Unlock"
432msgid "Unlock"
433msgstr "Liberar"
433msgstr "Liberar"
434
434
435+#: qml/Greeter/Greeter.qml:536
436+msgid "Try again"
437+msgstr ""
438+
435#: qml/Greeter/LoginList.qml:259
439#: qml/Greeter/LoginList.qml:259
436msgid "Retry"
440msgid "Retry"
437msgstr "Re-provar"
441msgstr "Re-provar"
438
442
439#: qml/Greeter/LoginList.qml:260
443#: qml/Greeter/LoginList.qml:260
440msgid "Log In"
444msgid "Log In"
441−msgstr ""
445+msgstr "Connecter se"
442
446
443#: qml/Greeter/NarrowView.qml:54
447#: qml/Greeter/NarrowView.qml:54
444msgid "Sorry, incorrect passphrase."
448msgid "Sorry, incorrect passphrase."
@@ -468,34 +472,34 @@ msgstr ""
468"Si le codice-contrasigno es inserite incorrectemente, tu telephono conducera "
472"Si le codice-contrasigno es inserite incorrectemente, tu telephono conducera "
469"un prefixation a fabrica e omne le datos personal essera delite."
473"un prefixation a fabrica e omne le datos personal essera delite."
470
474
471−#: qml/Greeter/NarrowView.qml:116
475+#: qml/Greeter/NarrowView.qml:129
472#, qt-format
476#, qt-format
473msgid "Enter %1"
477msgid "Enter %1"
474msgstr "Inserer %1"
478msgstr "Inserer %1"
475
479
476−#: qml/Greeter/NarrowView.qml:117
480+#: qml/Greeter/NarrowView.qml:130
477msgid "Enter passphrase"
481msgid "Enter passphrase"
478msgstr "Inserer le phrase-contrasigno"
482msgstr "Inserer le phrase-contrasigno"
479
483
480−#: qml/Greeter/NarrowView.qml:118
484+#: qml/Greeter/NarrowView.qml:131
481msgid "Enter passcode"
485msgid "Enter passcode"
482msgstr "Inserer le codice-contrasigno"
486msgstr "Inserer le codice-contrasigno"
483
487
484−#: qml/Greeter/NarrowView.qml:119
488+#: qml/Greeter/NarrowView.qml:135
485#, qt-format
489#, qt-format
486msgid "Sorry, incorrect %1"
490msgid "Sorry, incorrect %1"
487msgstr "Displacente, incorrecte %1"
491msgstr "Displacente, incorrecte %1"
488
492
489−#: qml/Greeter/NarrowView.qml:120
493+#: qml/Greeter/NarrowView.qml:136
490msgid "Sorry, incorrect passphrase"
494msgid "Sorry, incorrect passphrase"
491msgstr "Displacente, phrase-contrasigno incorrecte"
495msgstr "Displacente, phrase-contrasigno incorrecte"
492
496
493−#: qml/Greeter/NarrowView.qml:121
497+#: qml/Greeter/NarrowView.qml:137
494msgctxt "passphrase"
498msgctxt "passphrase"
495msgid "Please re-enter"
499msgid "Please re-enter"
496msgstr "Per favor re-insere"
500msgstr "Per favor re-insere"
497
501
498−#: qml/Greeter/NarrowView.qml:122
502+#: qml/Greeter/NarrowView.qml:138
499msgid "Sorry, incorrect passcode"
503msgid "Sorry, incorrect passcode"
500msgstr "Displacente, codice-contrasigno incorrecte"
504msgstr "Displacente, codice-contrasigno incorrecte"
501
505
@@ -596,7 +600,7 @@ msgstr "Striar ab le bordo sinistre pro aperir le campo Hodie"
596
600
597#: qml/Tutorial/TutorialLeft.qml:47
601#: qml/Tutorial/TutorialLeft.qml:47
598msgid "Short swipe from the left edge to open the launcher"
602msgid "Short swipe from the left edge to open the launcher"
599−msgstr ""
603+msgstr "Colpa brevemente ab le bordo sinistre pro aperir le lanceator."
600
604
601#: qml/Tutorial/TutorialRight.qml:55
605#: qml/Tutorial/TutorialRight.qml:55
602msgid "Push your mouse against the right edge to view your open apps"
606msgid "Push your mouse against the right edge to view your open apps"
@@ -605,11 +609,13 @@ msgstr ""
605
609
606#: qml/Tutorial/TutorialRight.qml:56
610#: qml/Tutorial/TutorialRight.qml:56
607msgid "Swipe from the right edge to view your open apps"
611msgid "Swipe from the right edge to view your open apps"
608−msgstr ""
612+msgstr "Colpa ab le bordo dextre pro aperir le applicationes."
609
613
610#: qml/Tutorial/TutorialTop.qml:53
614#: qml/Tutorial/TutorialTop.qml:53
611msgid "Swipe from the top edge to access notifications and quick settings"
615msgid "Swipe from the top edge to access notifications and quick settings"
612msgstr ""
616msgstr ""
617+"Colpa ab le bordo superior pro acceder la notificationes e al "
618+"configurationes celere."
613
619
614#: qml/Wizard/Page.qml:54
620#: qml/Wizard/Page.qml:54
615msgctxt "Button: Go back one page in the Wizard"
621msgctxt "Button: Go back one page in the Wizard"
po/id.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2013-06-26 22:35+0000\n"
11"PO-Revision-Date: 2013-06-26 22:35+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Indonesian <id@li.org>\n"
13"Language-Team: Indonesian <id@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,21 +35,21 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Lepas pintasan"
36msgstr "Lepas pintasan"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Perangkat Terkunci"
40msgstr "Perangkat Terkunci"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45"Anda telah terkunci karena terlalu banyak percobaan frasa sandi yang gagal."
45"Anda telah terkunci karena terlalu banyak percobaan frasa sandi yang gagal."
46
46
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
48msgid "You have been locked out due to too many failed passcode attempts."
48msgid "You have been locked out due to too many failed passcode attempts."
49msgstr ""
49msgstr ""
50"Anda telah terkunci karena terlalu banyak percobaan kode sandi yang gagal."
50"Anda telah terkunci karena terlalu banyak percobaan kode sandi yang gagal."
51
51
52−#: qml/Components/DelayedLockscreen.qml:74
52+#: qml/Components/DelayedLockscreen.qml:75
53#, qt-format
53#, qt-format
54msgid "Please wait %1 minute and then try again…"
54msgid "Please wait %1 minute and then try again…"
55msgid_plural "Please wait %1 minutes and then try again…"
55msgid_plural "Please wait %1 minutes and then try again…"
@@ -280,15 +280,15 @@ msgstr ""
280msgid "Closes the current window."
280msgid "Closes the current window."
281msgstr ""
281msgstr ""
282
282
283−#: qml/Components/Lockscreen.qml:231
283+#: qml/Components/Lockscreen.qml:239
284msgid "Return to Call"
284msgid "Return to Call"
285msgstr "Kembali ke Panggilan"
285msgstr "Kembali ke Panggilan"
286
286
287−#: qml/Components/Lockscreen.qml:231
287+#: qml/Components/Lockscreen.qml:239
288msgid "Emergency Call"
288msgid "Emergency Call"
289msgstr "Panggilan Darurat"
289msgstr "Panggilan Darurat"
290
290
291−#: qml/Components/Lockscreen.qml:263
291+#: qml/Components/Lockscreen.qml:271
292msgid "OK"
292msgid "OK"
293msgstr "OK"
293msgstr "OK"
294
294
@@ -425,10 +425,14 @@ msgid ""
425"touch pad to interact with the pointer."
425"touch pad to interact with the pointer."
426msgstr ""
426msgstr ""
427
427
428−#: qml/Greeter/CoverPage.qml:119
428+#: qml/Greeter/CoverPage.qml:127
429msgid "Unlock"
429msgid "Unlock"
430msgstr "Buka kunci"
430msgstr "Buka kunci"
431
431
432+#: qml/Greeter/Greeter.qml:536
433+msgid "Try again"
434+msgstr ""
435+
432#: qml/Greeter/LoginList.qml:259
436#: qml/Greeter/LoginList.qml:259
433msgid "Retry"
437msgid "Retry"
434msgstr ""
438msgstr ""
@@ -465,34 +469,34 @@ msgstr ""
465"Bila kode sandi salah dimasukkan, telepon Anda akan melakukan reset pabrik "
469"Bila kode sandi salah dimasukkan, telepon Anda akan melakukan reset pabrik "
466"dan semua data pribadi akan dihapus."
470"dan semua data pribadi akan dihapus."
467
471
468−#: qml/Greeter/NarrowView.qml:116
472+#: qml/Greeter/NarrowView.qml:129
469#, qt-format
473#, qt-format
470msgid "Enter %1"
474msgid "Enter %1"
471msgstr "Masukkan %1"
475msgstr "Masukkan %1"
472
476
473−#: qml/Greeter/NarrowView.qml:117
477+#: qml/Greeter/NarrowView.qml:130
474msgid "Enter passphrase"
478msgid "Enter passphrase"
475msgstr "Masukkan frasa sandi"
479msgstr "Masukkan frasa sandi"
476
480
477−#: qml/Greeter/NarrowView.qml:118
481+#: qml/Greeter/NarrowView.qml:131
478msgid "Enter passcode"
482msgid "Enter passcode"
479msgstr "Masukkan kode sandi"
483msgstr "Masukkan kode sandi"
480
484
481−#: qml/Greeter/NarrowView.qml:119
485+#: qml/Greeter/NarrowView.qml:135
482#, qt-format
486#, qt-format
483msgid "Sorry, incorrect %1"
487msgid "Sorry, incorrect %1"
484msgstr "Maaf, %1 salah"
488msgstr "Maaf, %1 salah"
485
489
486−#: qml/Greeter/NarrowView.qml:120
490+#: qml/Greeter/NarrowView.qml:136
487msgid "Sorry, incorrect passphrase"
491msgid "Sorry, incorrect passphrase"
488msgstr "Maaf, frasa sandi salah"
492msgstr "Maaf, frasa sandi salah"
489
493
490−#: qml/Greeter/NarrowView.qml:121
494+#: qml/Greeter/NarrowView.qml:137
491msgctxt "passphrase"
495msgctxt "passphrase"
492msgid "Please re-enter"
496msgid "Please re-enter"
493msgstr ""
497msgstr ""
494
498
495−#: qml/Greeter/NarrowView.qml:122
499+#: qml/Greeter/NarrowView.qml:138
496msgid "Sorry, incorrect passcode"
500msgid "Sorry, incorrect passcode"
497msgstr "Maaf, kode sandi salah"
501msgstr "Maaf, kode sandi salah"
498
502
po/is.po+22−18
@@ -9,7 +9,7 @@ msgid ""
9msgstr ""
9msgstr ""
10"Project-Id-Version: po_unity8-is\n"
10"Project-Id-Version: po_unity8-is\n"
11"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
12−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
12+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
13"PO-Revision-Date: 2014-11-13 09:32+0000\n"
13"PO-Revision-Date: 2014-11-13 09:32+0000\n"
14"Last-Translator: Sveinn í Felli <sv1@fellsnet.is>\n"
14"Last-Translator: Sveinn í Felli <sv1@fellsnet.is>\n"
15"Language-Team: Icelandic <translation-team-is@lists.sourceforge.net>\n"
15"Language-Team: Icelandic <translation-team-is@lists.sourceforge.net>\n"
@@ -17,8 +17,8 @@ msgstr ""
17"Content-Type: text/plain; charset=UTF-8\n"
17"Content-Type: text/plain; charset=UTF-8\n"
18"Content-Transfer-Encoding: 8bit\n"
18"Content-Transfer-Encoding: 8bit\n"
19"Plural-Forms: nplurals=2; plural=n != 1;\n"
19"Plural-Forms: nplurals=2; plural=n != 1;\n"
20−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
20+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
21−"X-Generator: Launchpad (build 18097)\n"
21+"X-Generator: Launchpad (build 18111)\n"
22"Language: is\n"
22"Language: is\n"
23
23
24#: plugins/IntegratedLightDM/Greeter.cpp:112
24#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -38,23 +38,23 @@ msgstr ""
38msgid "Unpin shortcut"
38msgid "Unpin shortcut"
39msgstr "Losa flýtilykil"
39msgstr "Losa flýtilykil"
40
40
41−#: qml/Components/DelayedLockscreen.qml:49
41+#: qml/Components/DelayedLockscreen.qml:50
42msgid "Device Locked"
42msgid "Device Locked"
43msgstr "Tæki læst"
43msgstr "Tæki læst"
44
44
45−#: qml/Components/DelayedLockscreen.qml:64
45+#: qml/Components/DelayedLockscreen.qml:65
46msgid "You have been locked out due to too many failed passphrase attempts."
46msgid "You have been locked out due to too many failed passphrase attempts."
47msgstr ""
47msgstr ""
48"Það er búið að loka á þig vegna of margra tilrauna við innsetningu "
48"Það er búið að loka á þig vegna of margra tilrauna við innsetningu "
49"lykilfrasa."
49"lykilfrasa."
50
50
51−#: qml/Components/DelayedLockscreen.qml:65
51+#: qml/Components/DelayedLockscreen.qml:66
52msgid "You have been locked out due to too many failed passcode attempts."
52msgid "You have been locked out due to too many failed passcode attempts."
53msgstr ""
53msgstr ""
54"Það er búið að loka á þig vegna of margra tilrauna við innsetningu "
54"Það er búið að loka á þig vegna of margra tilrauna við innsetningu "
55"aðgangskóða."
55"aðgangskóða."
56
56
57−#: qml/Components/DelayedLockscreen.qml:74
57+#: qml/Components/DelayedLockscreen.qml:75
58#, qt-format
58#, qt-format
59msgid "Please wait %1 minute and then try again…"
59msgid "Please wait %1 minute and then try again…"
60msgid_plural "Please wait %1 minutes and then try again…"
60msgid_plural "Please wait %1 minutes and then try again…"
@@ -286,15 +286,15 @@ msgstr ""
286msgid "Closes the current window."
286msgid "Closes the current window."
287msgstr ""
287msgstr ""
288
288
289−#: qml/Components/Lockscreen.qml:231
289+#: qml/Components/Lockscreen.qml:239
290msgid "Return to Call"
290msgid "Return to Call"
291msgstr "Snúa aftur í símtal"
291msgstr "Snúa aftur í símtal"
292
292
293−#: qml/Components/Lockscreen.qml:231
293+#: qml/Components/Lockscreen.qml:239
294msgid "Emergency Call"
294msgid "Emergency Call"
295msgstr "Neyðarsímtal"
295msgstr "Neyðarsímtal"
296
296
297−#: qml/Components/Lockscreen.qml:263
297+#: qml/Components/Lockscreen.qml:271
298msgid "OK"
298msgid "OK"
299msgstr "Í lagi"
299msgstr "Í lagi"
300
300
@@ -431,10 +431,14 @@ msgid ""
431"touch pad to interact with the pointer."
431"touch pad to interact with the pointer."
432msgstr ""
432msgstr ""
433
433
434−#: qml/Greeter/CoverPage.qml:119
434+#: qml/Greeter/CoverPage.qml:127
435msgid "Unlock"
435msgid "Unlock"
436msgstr "Aflæsa"
436msgstr "Aflæsa"
437
437
438+#: qml/Greeter/Greeter.qml:536
439+msgid "Try again"
440+msgstr ""
441+
438#: qml/Greeter/LoginList.qml:259
442#: qml/Greeter/LoginList.qml:259
439msgid "Retry"
443msgid "Retry"
440msgstr ""
444msgstr ""
@@ -471,34 +475,34 @@ msgstr ""
471"Ef aðgangskóði er rangur, mun síminn frumstilla allt á verksmiðjustillingar "
475"Ef aðgangskóði er rangur, mun síminn frumstilla allt á verksmiðjustillingar "
472"og öllum einkagögnum verður eytt."
476"og öllum einkagögnum verður eytt."
473
477
474−#: qml/Greeter/NarrowView.qml:116
478+#: qml/Greeter/NarrowView.qml:129
475#, qt-format
479#, qt-format
476msgid "Enter %1"
480msgid "Enter %1"
477msgstr "Settu inn %1"
481msgstr "Settu inn %1"
478
482
479−#: qml/Greeter/NarrowView.qml:117
483+#: qml/Greeter/NarrowView.qml:130
480msgid "Enter passphrase"
484msgid "Enter passphrase"
481msgstr "Settu inn lykilfrasa"
485msgstr "Settu inn lykilfrasa"
482
486
483−#: qml/Greeter/NarrowView.qml:118
487+#: qml/Greeter/NarrowView.qml:131
484msgid "Enter passcode"
488msgid "Enter passcode"
485msgstr "Settu inn aðgangskóða"
489msgstr "Settu inn aðgangskóða"
486
490
487−#: qml/Greeter/NarrowView.qml:119
491+#: qml/Greeter/NarrowView.qml:135
488#, qt-format
492#, qt-format
489msgid "Sorry, incorrect %1"
493msgid "Sorry, incorrect %1"
490msgstr "Því miður, rangt %1"
494msgstr "Því miður, rangt %1"
491
495
492−#: qml/Greeter/NarrowView.qml:120
496+#: qml/Greeter/NarrowView.qml:136
493msgid "Sorry, incorrect passphrase"
497msgid "Sorry, incorrect passphrase"
494msgstr "Því miður, rangt lykilorð"
498msgstr "Því miður, rangt lykilorð"
495
499
496−#: qml/Greeter/NarrowView.qml:121
500+#: qml/Greeter/NarrowView.qml:137
497msgctxt "passphrase"
501msgctxt "passphrase"
498msgid "Please re-enter"
502msgid "Please re-enter"
499msgstr ""
503msgstr ""
500
504
501−#: qml/Greeter/NarrowView.qml:122
505+#: qml/Greeter/NarrowView.qml:138
502msgid "Sorry, incorrect passcode"
506msgid "Sorry, incorrect passcode"
503msgstr "Því miður, rangur aðgangskóði"
507msgstr "Því miður, rangur aðgangskóði"
504
508
po/it.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2016-04-03 16:08+0000\n"
11"PO-Revision-Date: 2016-04-03 16:08+0000\n"
12"Last-Translator: Milo Casagrande <milo.casagrande@gmail.com>\n"
12"Last-Translator: Milo Casagrande <milo.casagrande@gmail.com>\n"
13"Language-Team: Italian <it@li.org>\n"
13"Language-Team: Italian <it@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,23 +35,23 @@ msgstr "Esci"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Sblocca scorciatoia"
36msgstr "Sblocca scorciatoia"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Dispositivo bloccato"
40msgstr "Dispositivo bloccato"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45"Utente bloccato a causa di troppi tentativi falliti di inserimento della "
45"Utente bloccato a causa di troppi tentativi falliti di inserimento della "
46"passphrase."
46"passphrase."
47
47
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
49msgid "You have been locked out due to too many failed passcode attempts."
49msgid "You have been locked out due to too many failed passcode attempts."
50msgstr ""
50msgstr ""
51"Utente bloccato a causa di troppo tentativi falliti di inserimento del "
51"Utente bloccato a causa di troppo tentativi falliti di inserimento del "
52"codice."
52"codice."
53
53
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
55#, qt-format
55#, qt-format
56msgid "Please wait %1 minute and then try again…"
56msgid "Please wait %1 minute and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
@@ -283,15 +283,15 @@ msgstr ""
283msgid "Closes the current window."
283msgid "Closes the current window."
284msgstr ""
284msgstr ""
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Return to Call"
287msgid "Return to Call"
288msgstr "Torna alla chiamata"
288msgstr "Torna alla chiamata"
289
289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291msgid "Emergency Call"
291msgid "Emergency Call"
292msgstr "Chiamata di emergenza"
292msgstr "Chiamata di emergenza"
293
293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295msgid "OK"
295msgid "OK"
296msgstr "OK"
296msgstr "OK"
297
297
@@ -432,10 +432,14 @@ msgstr ""
432"Il dispositivo è ora collegato a un display esterno: usare lo schermo come "
432"Il dispositivo è ora collegato a un display esterno: usare lo schermo come "
433"un touchpad per interagire con il puntatore."
433"un touchpad per interagire con il puntatore."
434
434
435−#: qml/Greeter/CoverPage.qml:119
435+#: qml/Greeter/CoverPage.qml:127
436msgid "Unlock"
436msgid "Unlock"
437msgstr "Sblocca"
437msgstr "Sblocca"
438
438
439+#: qml/Greeter/Greeter.qml:536
440+msgid "Try again"
441+msgstr ""
442+
439#: qml/Greeter/LoginList.qml:259
443#: qml/Greeter/LoginList.qml:259
440msgid "Retry"
444msgid "Retry"
441msgstr "Riprova"
445msgstr "Riprova"
@@ -472,34 +476,34 @@ msgstr ""
472"Se verrà inserito un passcode errato, il telefono eseguirà un ripristino "
476"Se verrà inserito un passcode errato, il telefono eseguirà un ripristino "
473"delle impostazioni di fabbrica e tutti i dati personali verranno eliminati."
477"delle impostazioni di fabbrica e tutti i dati personali verranno eliminati."
474
478
475−#: qml/Greeter/NarrowView.qml:116
479+#: qml/Greeter/NarrowView.qml:129
476#, qt-format
480#, qt-format
477msgid "Enter %1"
481msgid "Enter %1"
478msgstr "Inserire %1"
482msgstr "Inserire %1"
479
483
480−#: qml/Greeter/NarrowView.qml:117
484+#: qml/Greeter/NarrowView.qml:130
481msgid "Enter passphrase"
485msgid "Enter passphrase"
482msgstr "Inserire passphrase"
486msgstr "Inserire passphrase"
483
487
484−#: qml/Greeter/NarrowView.qml:118
488+#: qml/Greeter/NarrowView.qml:131
485msgid "Enter passcode"
489msgid "Enter passcode"
486msgstr "Inserire codice"
490msgstr "Inserire codice"
487
491
488−#: qml/Greeter/NarrowView.qml:119
492+#: qml/Greeter/NarrowView.qml:135
489#, qt-format
493#, qt-format
490msgid "Sorry, incorrect %1"
494msgid "Sorry, incorrect %1"
491msgstr "%1 non corretto"
495msgstr "%1 non corretto"
492
496
493−#: qml/Greeter/NarrowView.qml:120
497+#: qml/Greeter/NarrowView.qml:136
494msgid "Sorry, incorrect passphrase"
498msgid "Sorry, incorrect passphrase"
495msgstr "Passphrase errata"
499msgstr "Passphrase errata"
496
500
497−#: qml/Greeter/NarrowView.qml:121
501+#: qml/Greeter/NarrowView.qml:137
498msgctxt "passphrase"
502msgctxt "passphrase"
499msgid "Please re-enter"
503msgid "Please re-enter"
500msgstr "Inserire nuovamente"
504msgstr "Inserire nuovamente"
501
505
502−#: qml/Greeter/NarrowView.qml:122
506+#: qml/Greeter/NarrowView.qml:138
503msgid "Sorry, incorrect passcode"
507msgid "Sorry, incorrect passcode"
504msgstr "Passcode non corretto"
508msgstr "Passcode non corretto"
505
509
po/ja.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-10-05 10:05+0000\n"
11"PO-Revision-Date: 2015-10-05 10:05+0000\n"
12"Last-Translator: Kentaro Kazuhama <Unknown>\n"
12"Last-Translator: Kentaro Kazuhama <Unknown>\n"
13"Language-Team: Japanese <ja@li.org>\n"
13"Language-Team: Japanese <ja@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "終了"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "ショートカットを削除する"
36msgstr "ショートカットを削除する"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "デバイスをロックしました"
40msgstr "デバイスをロックしました"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr "パスフレーズの入力失敗が多すぎたため、デバイスをロックしました。"
44msgstr "パスフレーズの入力失敗が多すぎたため、デバイスをロックしました。"
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr "パスコードの入力失敗が多すぎたため、デバイスをロックしました。"
48msgstr "パスコードの入力失敗が多すぎたため、デバイスをロックしました。"
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -276,15 +276,15 @@ msgstr ""
276msgid "Closes the current window."
276msgid "Closes the current window."
277msgstr ""
277msgstr ""
278
278
279−#: qml/Components/Lockscreen.qml:231
279+#: qml/Components/Lockscreen.qml:239
280msgid "Return to Call"
280msgid "Return to Call"
281msgstr ""
281msgstr ""
282
282
283−#: qml/Components/Lockscreen.qml:231
283+#: qml/Components/Lockscreen.qml:239
284msgid "Emergency Call"
284msgid "Emergency Call"
285msgstr "緊急通報"
285msgstr "緊急通報"
286
286
287−#: qml/Components/Lockscreen.qml:263
287+#: qml/Components/Lockscreen.qml:271
288msgid "OK"
288msgid "OK"
289msgstr "OK"
289msgstr "OK"
290
290
@@ -421,10 +421,14 @@ msgid ""
421"touch pad to interact with the pointer."
421"touch pad to interact with the pointer."
422msgstr ""
422msgstr ""
423
423
424−#: qml/Greeter/CoverPage.qml:119
424+#: qml/Greeter/CoverPage.qml:127
425msgid "Unlock"
425msgid "Unlock"
426msgstr "ロックの解除"
426msgstr "ロックの解除"
427
427
428+#: qml/Greeter/Greeter.qml:536
429+msgid "Try again"
430+msgstr ""
431+
428#: qml/Greeter/LoginList.qml:259
432#: qml/Greeter/LoginList.qml:259
429msgid "Retry"
433msgid "Retry"
430msgstr ""
434msgstr ""
@@ -457,34 +461,34 @@ msgid ""
457"and all personal data will be deleted."
461"and all personal data will be deleted."
458msgstr "パスコードが間違っている場合、ファクトリーリセットを実施し、すべての個人データは削除されます。"
462msgstr "パスコードが間違っている場合、ファクトリーリセットを実施し、すべての個人データは削除されます。"
459
463
460−#: qml/Greeter/NarrowView.qml:116
464+#: qml/Greeter/NarrowView.qml:129
461#, qt-format
465#, qt-format
462msgid "Enter %1"
466msgid "Enter %1"
463msgstr "%1 を入力"
467msgstr "%1 を入力"
464
468
465−#: qml/Greeter/NarrowView.qml:117
469+#: qml/Greeter/NarrowView.qml:130
466msgid "Enter passphrase"
470msgid "Enter passphrase"
467msgstr "パスフレーズを入力"
471msgstr "パスフレーズを入力"
468
472
469−#: qml/Greeter/NarrowView.qml:118
473+#: qml/Greeter/NarrowView.qml:131
470msgid "Enter passcode"
474msgid "Enter passcode"
471msgstr "パスコードを入力"
475msgstr "パスコードを入力"
472
476
473−#: qml/Greeter/NarrowView.qml:119
477+#: qml/Greeter/NarrowView.qml:135
474#, qt-format
478#, qt-format
475msgid "Sorry, incorrect %1"
479msgid "Sorry, incorrect %1"
476msgstr "%1が違います"
480msgstr "%1が違います"
477
481
478−#: qml/Greeter/NarrowView.qml:120
482+#: qml/Greeter/NarrowView.qml:136
479msgid "Sorry, incorrect passphrase"
483msgid "Sorry, incorrect passphrase"
480msgstr "パスフレーズが違います"
484msgstr "パスフレーズが違います"
481
485
482−#: qml/Greeter/NarrowView.qml:121
486+#: qml/Greeter/NarrowView.qml:137
483msgctxt "passphrase"
487msgctxt "passphrase"
484msgid "Please re-enter"
488msgid "Please re-enter"
485msgstr ""
489msgstr ""
486
490
487−#: qml/Greeter/NarrowView.qml:122
491+#: qml/Greeter/NarrowView.qml:138
488msgid "Sorry, incorrect passcode"
492msgid "Sorry, incorrect passcode"
489msgstr "パスコードが違います"
493msgstr "パスコードが違います"
490
494
po/km.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2014-08-20 02:48+0000\n"
11"PO-Revision-Date: 2014-08-20 02:48+0000\n"
12"Last-Translator: Sophea Sok <sksophea@gmail.com>\n"
12"Last-Translator: Sophea Sok <sksophea@gmail.com>\n"
13"Language-Team: Khmer <km@li.org>\n"
13"Language-Team: Khmer <km@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "ចាកចេញ"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "មិន​ភ្ជាប់ផ្លូវកាត់"
36msgstr "មិន​ភ្ជាប់ផ្លូវកាត់"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr ""
40msgstr ""
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr ""
279msgid "Closes the current window."
279msgid "Closes the current window."
280msgstr ""
280msgstr ""
281
281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283msgid "Return to Call"
283msgid "Return to Call"
284msgstr ""
284msgstr ""
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Emergency Call"
287msgid "Emergency Call"
288msgstr "ការ​ហៅ​ពេល​អាសន្ន"
288msgstr "ការ​ហៅ​ពេល​អាសន្ន"
289
289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291msgid "OK"
291msgid "OK"
292msgstr "យល់ព្រម"
292msgstr "យល់ព្រម"
293
293
@@ -424,10 +424,14 @@ msgid ""
424"touch pad to interact with the pointer."
424"touch pad to interact with the pointer."
425msgstr ""
425msgstr ""
426
426
427−#: qml/Greeter/CoverPage.qml:119
427+#: qml/Greeter/CoverPage.qml:127
428msgid "Unlock"
428msgid "Unlock"
429msgstr "ដោះ​សោ"
429msgstr "ដោះ​សោ"
430
430
431+#: qml/Greeter/Greeter.qml:536
432+msgid "Try again"
433+msgstr ""
434+
431#: qml/Greeter/LoginList.qml:259
435#: qml/Greeter/LoginList.qml:259
432msgid "Retry"
436msgid "Retry"
433msgstr "ព្យាយាម​ម្ដងទៀត"
437msgstr "ព្យាយាម​ម្ដងទៀត"
@@ -466,34 +470,34 @@ msgstr ""
466"ទូរស័ព្ទ​របស់​អ្នក​នឹង​កំណត់​ទៅ​ទិន្នន័យ​ពី​រោងចក្រ​វិញ "
470"ទូរស័ព្ទ​របស់​អ្នក​នឹង​កំណត់​ទៅ​ទិន្នន័យ​ពី​រោងចក្រ​វិញ "
467"ហើយ​ទិន្នន័យ​ផ្ទាល់ខ្លួន​ទាំងអស់​របស់​អ្នក​នឹង​ត្រូវ​បាន​លុប។"
471"ហើយ​ទិន្នន័យ​ផ្ទាល់ខ្លួន​ទាំងអស់​របស់​អ្នក​នឹង​ត្រូវ​បាន​លុប។"
468
472
469−#: qml/Greeter/NarrowView.qml:116
473+#: qml/Greeter/NarrowView.qml:129
470#, qt-format
474#, qt-format
471msgid "Enter %1"
475msgid "Enter %1"
472msgstr ""
476msgstr ""
473
477
474−#: qml/Greeter/NarrowView.qml:117
478+#: qml/Greeter/NarrowView.qml:130
475msgid "Enter passphrase"
479msgid "Enter passphrase"
476msgstr ""
480msgstr ""
477
481
478−#: qml/Greeter/NarrowView.qml:118
482+#: qml/Greeter/NarrowView.qml:131
479msgid "Enter passcode"
483msgid "Enter passcode"
480msgstr ""
484msgstr ""
481
485
482−#: qml/Greeter/NarrowView.qml:119
486+#: qml/Greeter/NarrowView.qml:135
483#, qt-format
487#, qt-format
484msgid "Sorry, incorrect %1"
488msgid "Sorry, incorrect %1"
485msgstr "សូមទោស! %1 មិន​ត្រឹមត្រូវ"
489msgstr "សូមទោស! %1 មិន​ត្រឹមត្រូវ"
486
490
487−#: qml/Greeter/NarrowView.qml:120
491+#: qml/Greeter/NarrowView.qml:136
488msgid "Sorry, incorrect passphrase"
492msgid "Sorry, incorrect passphrase"
489msgstr "សូមទោស! ឃ្លា​សម្ងាត់​មិន​ត្រឹមត្រូវ"
493msgstr "សូមទោស! ឃ្លា​សម្ងាត់​មិន​ត្រឹមត្រូវ"
490
494
491−#: qml/Greeter/NarrowView.qml:121
495+#: qml/Greeter/NarrowView.qml:137
492msgctxt "passphrase"
496msgctxt "passphrase"
493msgid "Please re-enter"
497msgid "Please re-enter"
494msgstr ""
498msgstr ""
495
499
496−#: qml/Greeter/NarrowView.qml:122
500+#: qml/Greeter/NarrowView.qml:138
497msgid "Sorry, incorrect passcode"
501msgid "Sorry, incorrect passcode"
498msgstr "សូមទោស! កូដ​សម្ងាត់​មិន​ត្រឹមត្រូវ"
502msgstr "សូមទោស! កូដ​សម្ងាត់​មិន​ត្រឹមត្រូវ"
499
503
po/kn.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2013-06-27 05:43+0000\n"
11"PO-Revision-Date: 2013-06-27 05:43+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Kannada <kn@li.org>\n"
13"Language-Team: Kannada <kn@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr ""
36msgstr ""
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr ""
40msgstr ""
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277msgid "Closes the current window."
277msgid "Closes the current window."
278msgstr ""
278msgstr ""
279
279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281msgid "Return to Call"
281msgid "Return to Call"
282msgstr ""
282msgstr ""
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Emergency Call"
285msgid "Emergency Call"
286msgstr ""
286msgstr ""
287
287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289msgid "OK"
289msgid "OK"
290msgstr ""
290msgstr ""
291
291
@@ -422,10 +422,14 @@ msgid ""
422"touch pad to interact with the pointer."
422"touch pad to interact with the pointer."
423msgstr ""
423msgstr ""
424
424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426msgid "Unlock"
426msgid "Unlock"
427msgstr ""
427msgstr ""
428
428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429#: qml/Greeter/LoginList.qml:259
433#: qml/Greeter/LoginList.qml:259
430msgid "Retry"
434msgid "Retry"
431msgstr ""
435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458"and all personal data will be deleted."
462"and all personal data will be deleted."
459msgstr ""
463msgstr ""
460
464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462#, qt-format
466#, qt-format
463msgid "Enter %1"
467msgid "Enter %1"
464msgstr ""
468msgstr ""
465
469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467msgid "Enter passphrase"
471msgid "Enter passphrase"
468msgstr ""
472msgstr ""
469
473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471msgid "Enter passcode"
475msgid "Enter passcode"
472msgstr ""
476msgstr ""
473
477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475#, qt-format
479#, qt-format
476msgid "Sorry, incorrect %1"
480msgid "Sorry, incorrect %1"
477msgstr ""
481msgstr ""
478
482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480msgid "Sorry, incorrect passphrase"
484msgid "Sorry, incorrect passphrase"
481msgstr ""
485msgstr ""
482
486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484msgctxt "passphrase"
488msgctxt "passphrase"
485msgid "Please re-enter"
489msgid "Please re-enter"
486msgstr ""
490msgstr ""
487
491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489msgid "Sorry, incorrect passcode"
493msgid "Sorry, incorrect passcode"
490msgstr ""
494msgstr ""
491
495
po/ko.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2014-08-19 13:02+0000\n"
11"PO-Revision-Date: 2014-08-19 13:02+0000\n"
12"Last-Translator: MinSik CHO <Unknown>\n"
12"Last-Translator: MinSik CHO <Unknown>\n"
13"Language-Team: Korean <ko@li.org>\n"
13"Language-Team: Korean <ko@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "끝내기"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "바로 가기를 고정 해제"
36msgstr "바로 가기를 고정 해제"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "장치가 잠김"
40msgstr "장치가 잠김"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr "올바르지 않은 암호문을 너무 많이 입력해 장치가 잠겼습니다."
44msgstr "올바르지 않은 암호문을 너무 많이 입력해 장치가 잠겼습니다."
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr "올바르지 않은 패스코드를 너무 많이 입력해 장치가 잠겼습니다."
48msgstr "올바르지 않은 패스코드를 너무 많이 입력해 장치가 잠겼습니다."
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -276,15 +276,15 @@ msgstr ""
276msgid "Closes the current window."
276msgid "Closes the current window."
277msgstr ""
277msgstr ""
278
278
279−#: qml/Components/Lockscreen.qml:231
279+#: qml/Components/Lockscreen.qml:239
280msgid "Return to Call"
280msgid "Return to Call"
281msgstr "다시 전화하기"
281msgstr "다시 전화하기"
282
282
283−#: qml/Components/Lockscreen.qml:231
283+#: qml/Components/Lockscreen.qml:239
284msgid "Emergency Call"
284msgid "Emergency Call"
285msgstr "긴급 통화"
285msgstr "긴급 통화"
286
286
287−#: qml/Components/Lockscreen.qml:263
287+#: qml/Components/Lockscreen.qml:271
288msgid "OK"
288msgid "OK"
289msgstr "확인"
289msgstr "확인"
290
290
@@ -421,10 +421,14 @@ msgid ""
421"touch pad to interact with the pointer."
421"touch pad to interact with the pointer."
422msgstr "장치를 외부 디스플레이에 연결했습니다. 포인터를 사용하려면 화면을 터치 패드로 사용해주십시오."
422msgstr "장치를 외부 디스플레이에 연결했습니다. 포인터를 사용하려면 화면을 터치 패드로 사용해주십시오."
423
423
424−#: qml/Greeter/CoverPage.qml:119
424+#: qml/Greeter/CoverPage.qml:127
425msgid "Unlock"
425msgid "Unlock"
426msgstr "잠금 해제"
426msgstr "잠금 해제"
427
427
428+#: qml/Greeter/Greeter.qml:536
429+msgid "Try again"
430+msgstr ""
431+
428#: qml/Greeter/LoginList.qml:259
432#: qml/Greeter/LoginList.qml:259
429msgid "Retry"
433msgid "Retry"
430msgstr "다시 시도"
434msgstr "다시 시도"
@@ -457,34 +461,34 @@ msgid ""
457"and all personal data will be deleted."
461"and all personal data will be deleted."
458msgstr "이번에도 올바르지 않은 패스코드를 입력하면 휴대 전화를 공장 초기화하여 모든 개인 정보를 삭제합니다."
462msgstr "이번에도 올바르지 않은 패스코드를 입력하면 휴대 전화를 공장 초기화하여 모든 개인 정보를 삭제합니다."
459
463
460−#: qml/Greeter/NarrowView.qml:116
464+#: qml/Greeter/NarrowView.qml:129
461#, qt-format
465#, qt-format
462msgid "Enter %1"
466msgid "Enter %1"
463msgstr "%1 입력"
467msgstr "%1 입력"
464
468
465−#: qml/Greeter/NarrowView.qml:117
469+#: qml/Greeter/NarrowView.qml:130
466msgid "Enter passphrase"
470msgid "Enter passphrase"
467msgstr "암호문을 입력해주십시오."
471msgstr "암호문을 입력해주십시오."
468
472
469−#: qml/Greeter/NarrowView.qml:118
473+#: qml/Greeter/NarrowView.qml:131
470msgid "Enter passcode"
474msgid "Enter passcode"
471msgstr "패스코드를 입력해주십시오."
475msgstr "패스코드를 입력해주십시오."
472
476
473−#: qml/Greeter/NarrowView.qml:119
477+#: qml/Greeter/NarrowView.qml:135
474#, qt-format
478#, qt-format
475msgid "Sorry, incorrect %1"
479msgid "Sorry, incorrect %1"
476msgstr "죄송합니다. %1이(가) 올바르지 않습니다."
480msgstr "죄송합니다. %1이(가) 올바르지 않습니다."
477
481
478−#: qml/Greeter/NarrowView.qml:120
482+#: qml/Greeter/NarrowView.qml:136
479msgid "Sorry, incorrect passphrase"
483msgid "Sorry, incorrect passphrase"
480msgstr "죄송합니다. 암호문일 올바르지 않습니다."
484msgstr "죄송합니다. 암호문일 올바르지 않습니다."
481
485
482−#: qml/Greeter/NarrowView.qml:121
486+#: qml/Greeter/NarrowView.qml:137
483msgctxt "passphrase"
487msgctxt "passphrase"
484msgid "Please re-enter"
488msgid "Please re-enter"
485msgstr "다시 입력해주십시오."
489msgstr "다시 입력해주십시오."
486
490
487−#: qml/Greeter/NarrowView.qml:122
491+#: qml/Greeter/NarrowView.qml:138
488msgid "Sorry, incorrect passcode"
492msgid "Sorry, incorrect passcode"
489msgstr "죄송합니다. 패스코드가 올바르지 않습니다."
493msgstr "죄송합니다. 패스코드가 올바르지 않습니다."
490
494
po/ku.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2014-09-10 13:14+0000\n"
11"PO-Revision-Date: 2014-09-10 13:14+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Kurdish <ku@li.org>\n"
13"Language-Team: Kurdish <ku@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Derzîdanka kurteriyê rake"
36msgstr "Derzîdanka kurteriyê rake"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr ""
40msgstr ""
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr ""
279msgid "Closes the current window."
279msgid "Closes the current window."
280msgstr ""
280msgstr ""
281
281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283msgid "Return to Call"
283msgid "Return to Call"
284msgstr ""
284msgstr ""
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Emergency Call"
287msgid "Emergency Call"
288msgstr "Lêgerîna Lezgîn"
288msgstr "Lêgerîna Lezgîn"
289
289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291msgid "OK"
291msgid "OK"
292msgstr "BAŞ E"
292msgstr "BAŞ E"
293
293
@@ -424,10 +424,14 @@ msgid ""
424"touch pad to interact with the pointer."
424"touch pad to interact with the pointer."
425msgstr ""
425msgstr ""
426
426
427−#: qml/Greeter/CoverPage.qml:119
427+#: qml/Greeter/CoverPage.qml:127
428msgid "Unlock"
428msgid "Unlock"
429msgstr ""
429msgstr ""
430
430
431+#: qml/Greeter/Greeter.qml:536
432+msgid "Try again"
433+msgstr ""
434+
431#: qml/Greeter/LoginList.qml:259
435#: qml/Greeter/LoginList.qml:259
432msgid "Retry"
436msgid "Retry"
433msgstr ""
437msgstr ""
@@ -464,34 +468,34 @@ msgstr ""
464"Eger parola çewt bê nivîsandin, telefona te dê vegere eyarên fabrîkayê û "
468"Eger parola çewt bê nivîsandin, telefona te dê vegere eyarên fabrîkayê û "
465"hemû daneyên te yên taybet dê bên jêbirin."
469"hemû daneyên te yên taybet dê bên jêbirin."
466
470
467−#: qml/Greeter/NarrowView.qml:116
471+#: qml/Greeter/NarrowView.qml:129
468#, qt-format
472#, qt-format
469msgid "Enter %1"
473msgid "Enter %1"
470msgstr ""
474msgstr ""
471
475
472−#: qml/Greeter/NarrowView.qml:117
476+#: qml/Greeter/NarrowView.qml:130
473msgid "Enter passphrase"
477msgid "Enter passphrase"
474msgstr ""
478msgstr ""
475
479
476−#: qml/Greeter/NarrowView.qml:118
480+#: qml/Greeter/NarrowView.qml:131
477msgid "Enter passcode"
481msgid "Enter passcode"
478msgstr ""
482msgstr ""
479
483
480−#: qml/Greeter/NarrowView.qml:119
484+#: qml/Greeter/NarrowView.qml:135
481#, qt-format
485#, qt-format
482msgid "Sorry, incorrect %1"
486msgid "Sorry, incorrect %1"
483msgstr "Bibore, %1 çewt e"
487msgstr "Bibore, %1 çewt e"
484
488
485−#: qml/Greeter/NarrowView.qml:120
489+#: qml/Greeter/NarrowView.qml:136
486msgid "Sorry, incorrect passphrase"
490msgid "Sorry, incorrect passphrase"
487msgstr "Bibore, parola çewt e"
491msgstr "Bibore, parola çewt e"
488
492
489−#: qml/Greeter/NarrowView.qml:121
493+#: qml/Greeter/NarrowView.qml:137
490msgctxt "passphrase"
494msgctxt "passphrase"
491msgid "Please re-enter"
495msgid "Please re-enter"
492msgstr ""
496msgstr ""
493
497
494−#: qml/Greeter/NarrowView.qml:122
498+#: qml/Greeter/NarrowView.qml:138
495msgid "Sorry, incorrect passcode"
499msgid "Sorry, incorrect passcode"
496msgstr "Bibore, parola çewrt e"
500msgstr "Bibore, parola çewrt e"
497
501
po/ky.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2013-06-27 06:17+0000\n"
11"PO-Revision-Date: 2013-06-27 06:17+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Kirghiz <ky@li.org>\n"
13"Language-Team: Kirghiz <ky@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr ""
36msgstr ""
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr ""
40msgstr ""
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277msgid "Closes the current window."
277msgid "Closes the current window."
278msgstr ""
278msgstr ""
279
279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281msgid "Return to Call"
281msgid "Return to Call"
282msgstr ""
282msgstr ""
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Emergency Call"
285msgid "Emergency Call"
286msgstr ""
286msgstr ""
287
287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289msgid "OK"
289msgid "OK"
290msgstr ""
290msgstr ""
291
291
@@ -422,10 +422,14 @@ msgid ""
422"touch pad to interact with the pointer."
422"touch pad to interact with the pointer."
423msgstr ""
423msgstr ""
424
424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426msgid "Unlock"
426msgid "Unlock"
427msgstr ""
427msgstr ""
428
428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429#: qml/Greeter/LoginList.qml:259
433#: qml/Greeter/LoginList.qml:259
430msgid "Retry"
434msgid "Retry"
431msgstr ""
435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458"and all personal data will be deleted."
462"and all personal data will be deleted."
459msgstr ""
463msgstr ""
460
464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462#, qt-format
466#, qt-format
463msgid "Enter %1"
467msgid "Enter %1"
464msgstr ""
468msgstr ""
465
469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467msgid "Enter passphrase"
471msgid "Enter passphrase"
468msgstr ""
472msgstr ""
469
473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471msgid "Enter passcode"
475msgid "Enter passcode"
472msgstr ""
476msgstr ""
473
477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475#, qt-format
479#, qt-format
476msgid "Sorry, incorrect %1"
480msgid "Sorry, incorrect %1"
477msgstr ""
481msgstr ""
478
482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480msgid "Sorry, incorrect passphrase"
484msgid "Sorry, incorrect passphrase"
481msgstr ""
485msgstr ""
482
486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484msgctxt "passphrase"
488msgctxt "passphrase"
485msgid "Please re-enter"
489msgid "Please re-enter"
486msgstr ""
490msgstr ""
487
491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489msgid "Sorry, incorrect passcode"
493msgid "Sorry, incorrect passcode"
490msgstr ""
494msgstr ""
491
495
po/lo.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2013-10-02 10:00+0000\n"
11"PO-Revision-Date: 2013-10-02 10:00+0000\n"
12"Last-Translator: Anousak <anousak@gmail.com>\n"
12"Last-Translator: Anousak <anousak@gmail.com>\n"
13"Language-Team: Lao <lo@li.org>\n"
13"Language-Team: Lao <lo@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr ""
36msgstr ""
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr ""
40msgstr ""
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277msgid "Closes the current window."
277msgid "Closes the current window."
278msgstr ""
278msgstr ""
279
279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281msgid "Return to Call"
281msgid "Return to Call"
282msgstr ""
282msgstr ""
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Emergency Call"
285msgid "Emergency Call"
286msgstr ""
286msgstr ""
287
287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289msgid "OK"
289msgid "OK"
290msgstr ""
290msgstr ""
291
291
@@ -422,10 +422,14 @@ msgid ""
422"touch pad to interact with the pointer."
422"touch pad to interact with the pointer."
423msgstr ""
423msgstr ""
424
424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426msgid "Unlock"
426msgid "Unlock"
427msgstr ""
427msgstr ""
428
428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429#: qml/Greeter/LoginList.qml:259
433#: qml/Greeter/LoginList.qml:259
430msgid "Retry"
434msgid "Retry"
431msgstr ""
435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458"and all personal data will be deleted."
462"and all personal data will be deleted."
459msgstr ""
463msgstr ""
460
464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462#, qt-format
466#, qt-format
463msgid "Enter %1"
467msgid "Enter %1"
464msgstr ""
468msgstr ""
465
469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467msgid "Enter passphrase"
471msgid "Enter passphrase"
468msgstr ""
472msgstr ""
469
473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471msgid "Enter passcode"
475msgid "Enter passcode"
472msgstr ""
476msgstr ""
473
477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475#, qt-format
479#, qt-format
476msgid "Sorry, incorrect %1"
480msgid "Sorry, incorrect %1"
477msgstr ""
481msgstr ""
478
482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480msgid "Sorry, incorrect passphrase"
484msgid "Sorry, incorrect passphrase"
481msgstr ""
485msgstr ""
482
486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484msgctxt "passphrase"
488msgctxt "passphrase"
485msgid "Please re-enter"
489msgid "Please re-enter"
486msgstr ""
490msgstr ""
487
491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489msgid "Sorry, incorrect passcode"
493msgid "Sorry, incorrect passcode"
490msgstr ""
494msgstr ""
491
495
po/lt.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2014-05-19 17:15+0000\n"
11"PO-Revision-Date: 2014-05-19 17:15+0000\n"
12"Last-Translator: Mantas Kriaučiūnas <mantas@akl.lt>\n"
12"Last-Translator: Mantas Kriaučiūnas <mantas@akl.lt>\n"
13"Language-Team: Lithuanian <lt@li.org>\n"
13"Language-Team: Lithuanian <lt@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"(n%100<10 || n%100>=20) ? 1 : 2;\n"
18"(n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
20−"X-Generator: Launchpad (build 18097)\n"
20+"X-Generator: Launchpad (build 18111)\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -36,19 +36,19 @@ msgstr ""
36msgid "Unpin shortcut"
36msgid "Unpin shortcut"
37msgstr ""
37msgstr ""
38
38
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
40msgid "Device Locked"
40msgid "Device Locked"
41msgstr ""
41msgstr ""
42
42
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
44msgid "You have been locked out due to too many failed passphrase attempts."
44msgid "You have been locked out due to too many failed passphrase attempts."
45msgstr ""
45msgstr ""
46
46
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
48msgid "You have been locked out due to too many failed passcode attempts."
48msgid "You have been locked out due to too many failed passcode attempts."
49msgstr ""
49msgstr ""
50
50
51−#: qml/Components/DelayedLockscreen.qml:74
51+#: qml/Components/DelayedLockscreen.qml:75
52#, qt-format
52#, qt-format
53msgid "Please wait %1 minute and then try again…"
53msgid "Please wait %1 minute and then try again…"
54msgid_plural "Please wait %1 minutes and then try again…"
54msgid_plural "Please wait %1 minutes and then try again…"
@@ -278,15 +278,15 @@ msgstr ""
278msgid "Closes the current window."
278msgid "Closes the current window."
279msgstr ""
279msgstr ""
280
280
281−#: qml/Components/Lockscreen.qml:231
281+#: qml/Components/Lockscreen.qml:239
282msgid "Return to Call"
282msgid "Return to Call"
283msgstr ""
283msgstr ""
284
284
285−#: qml/Components/Lockscreen.qml:231
285+#: qml/Components/Lockscreen.qml:239
286msgid "Emergency Call"
286msgid "Emergency Call"
287msgstr "Pagalbos skambutis"
287msgstr "Pagalbos skambutis"
288
288
289−#: qml/Components/Lockscreen.qml:263
289+#: qml/Components/Lockscreen.qml:271
290msgid "OK"
290msgid "OK"
291msgstr ""
291msgstr ""
292
292
@@ -423,10 +423,14 @@ msgid ""
423"touch pad to interact with the pointer."
423"touch pad to interact with the pointer."
424msgstr ""
424msgstr ""
425
425
426−#: qml/Greeter/CoverPage.qml:119
426+#: qml/Greeter/CoverPage.qml:127
427msgid "Unlock"
427msgid "Unlock"
428msgstr ""
428msgstr ""
429
429
430+#: qml/Greeter/Greeter.qml:536
431+msgid "Try again"
432+msgstr ""
433+
430#: qml/Greeter/LoginList.qml:259
434#: qml/Greeter/LoginList.qml:259
431msgid "Retry"
435msgid "Retry"
432msgstr ""
436msgstr ""
@@ -459,34 +463,34 @@ msgid ""
459"and all personal data will be deleted."
463"and all personal data will be deleted."
460msgstr ""
464msgstr ""
461
465
462−#: qml/Greeter/NarrowView.qml:116
466+#: qml/Greeter/NarrowView.qml:129
463#, qt-format
467#, qt-format
464msgid "Enter %1"
468msgid "Enter %1"
465msgstr ""
469msgstr ""
466
470
467−#: qml/Greeter/NarrowView.qml:117
471+#: qml/Greeter/NarrowView.qml:130
468msgid "Enter passphrase"
472msgid "Enter passphrase"
469msgstr ""
473msgstr ""
470
474
471−#: qml/Greeter/NarrowView.qml:118
475+#: qml/Greeter/NarrowView.qml:131
472msgid "Enter passcode"
476msgid "Enter passcode"
473msgstr ""
477msgstr ""
474
478
475−#: qml/Greeter/NarrowView.qml:119
479+#: qml/Greeter/NarrowView.qml:135
476#, qt-format
480#, qt-format
477msgid "Sorry, incorrect %1"
481msgid "Sorry, incorrect %1"
478msgstr ""
482msgstr ""
479
483
480−#: qml/Greeter/NarrowView.qml:120
484+#: qml/Greeter/NarrowView.qml:136
481msgid "Sorry, incorrect passphrase"
485msgid "Sorry, incorrect passphrase"
482msgstr ""
486msgstr ""
483
487
484−#: qml/Greeter/NarrowView.qml:121
488+#: qml/Greeter/NarrowView.qml:137
485msgctxt "passphrase"
489msgctxt "passphrase"
486msgid "Please re-enter"
490msgid "Please re-enter"
487msgstr ""
491msgstr ""
488
492
489−#: qml/Greeter/NarrowView.qml:122
493+#: qml/Greeter/NarrowView.qml:138
490msgid "Sorry, incorrect passcode"
494msgid "Sorry, incorrect passcode"
491msgstr ""
495msgstr ""
492
496
po/lv.po+22−18
@@ -8,7 +8,7 @@ msgid ""
8msgstr ""
8msgstr ""
9"Project-Id-Version: unity\n"
9"Project-Id-Version: unity\n"
10"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
11+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
12"PO-Revision-Date: 2015-11-22 19:13+0000\n"
12"PO-Revision-Date: 2015-11-22 19:13+0000\n"
13"Last-Translator: Klavs Anson <anson.klavs@gmail.com>\n"
13"Last-Translator: Klavs Anson <anson.klavs@gmail.com>\n"
14"Language-Team: Latvian <lata-l10n@googlegroups.com>\n"
14"Language-Team: Latvian <lata-l10n@googlegroups.com>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Type: text/plain; charset=UTF-8\n"
17"Content-Transfer-Encoding: 8bit\n"
17"Content-Transfer-Encoding: 8bit\n"
18"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n"
18"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"
19+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
20−"X-Generator: Launchpad (build 18097)\n"
20+"X-Generator: Launchpad (build 18111)\n"
21"Language: lv\n"
21"Language: lv\n"
22
22
23#: plugins/IntegratedLightDM/Greeter.cpp:112
23#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -37,19 +37,19 @@ msgstr "Iziet"
37msgid "Unpin shortcut"
37msgid "Unpin shortcut"
38msgstr "Noņemt īsceļu"
38msgstr "Noņemt īsceļu"
39
39
40−#: qml/Components/DelayedLockscreen.qml:49
40+#: qml/Components/DelayedLockscreen.qml:50
41msgid "Device Locked"
41msgid "Device Locked"
42msgstr "Ierīce bloķēta"
42msgstr "Ierīce bloķēta"
43
43
44−#: qml/Components/DelayedLockscreen.qml:64
44+#: qml/Components/DelayedLockscreen.qml:65
45msgid "You have been locked out due to too many failed passphrase attempts."
45msgid "You have been locked out due to too many failed passphrase attempts."
46msgstr "Bloķēts, jo pārāk bieži kļūdaini ievadījāt paroli."
46msgstr "Bloķēts, jo pārāk bieži kļūdaini ievadījāt paroli."
47
47
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
49msgid "You have been locked out due to too many failed passcode attempts."
49msgid "You have been locked out due to too many failed passcode attempts."
50msgstr "Bloķēts, jo pārāk bieži kļūdaini ievadījāt piekļuves kodu."
50msgstr "Bloķēts, jo pārāk bieži kļūdaini ievadījāt piekļuves kodu."
51
51
52−#: qml/Components/DelayedLockscreen.qml:74
52+#: qml/Components/DelayedLockscreen.qml:75
53#, qt-format
53#, qt-format
54msgid "Please wait %1 minute and then try again…"
54msgid "Please wait %1 minute and then try again…"
55msgid_plural "Please wait %1 minutes and then try again…"
55msgid_plural "Please wait %1 minutes and then try again…"
@@ -282,15 +282,15 @@ msgstr ""
282msgid "Closes the current window."
282msgid "Closes the current window."
283msgstr ""
283msgstr ""
284
284
285−#: qml/Components/Lockscreen.qml:231
285+#: qml/Components/Lockscreen.qml:239
286msgid "Return to Call"
286msgid "Return to Call"
287msgstr "Atgriezties pie zvana"
287msgstr "Atgriezties pie zvana"
288
288
289−#: qml/Components/Lockscreen.qml:231
289+#: qml/Components/Lockscreen.qml:239
290msgid "Emergency Call"
290msgid "Emergency Call"
291msgstr "Ārkārtas situācijas zvans"
291msgstr "Ārkārtas situācijas zvans"
292
292
293−#: qml/Components/Lockscreen.qml:263
293+#: qml/Components/Lockscreen.qml:271
294msgid "OK"
294msgid "OK"
295msgstr "Labi"
295msgstr "Labi"
296
296
@@ -427,10 +427,14 @@ msgid ""
427"touch pad to interact with the pointer."
427"touch pad to interact with the pointer."
428msgstr ""
428msgstr ""
429
429
430−#: qml/Greeter/CoverPage.qml:119
430+#: qml/Greeter/CoverPage.qml:127
431msgid "Unlock"
431msgid "Unlock"
432msgstr "Atbloķēt"
432msgstr "Atbloķēt"
433
433
434+#: qml/Greeter/Greeter.qml:536
435+msgid "Try again"
436+msgstr ""
437+
434#: qml/Greeter/LoginList.qml:259
438#: qml/Greeter/LoginList.qml:259
435msgid "Retry"
439msgid "Retry"
436msgstr "Mēģināt vēlreiz"
440msgstr "Mēģināt vēlreiz"
@@ -467,34 +471,34 @@ msgstr ""
467"Ja piekļuves kods netiks pareizi ievadīts, jūsu tālrunis tiks atstatīts uz "
471"Ja piekļuves kods netiks pareizi ievadīts, jūsu tālrunis tiks atstatīts uz "
468"rūpnīcas iestatījumiem un visa personīgā informācija tiks izdzēsta."
472"rūpnīcas iestatījumiem un visa personīgā informācija tiks izdzēsta."
469
473
470−#: qml/Greeter/NarrowView.qml:116
474+#: qml/Greeter/NarrowView.qml:129
471#, qt-format
475#, qt-format
472msgid "Enter %1"
476msgid "Enter %1"
473msgstr "Ievadiet %1"
477msgstr "Ievadiet %1"
474
478
475−#: qml/Greeter/NarrowView.qml:117
479+#: qml/Greeter/NarrowView.qml:130
476msgid "Enter passphrase"
480msgid "Enter passphrase"
477msgstr "Ievadiet paroli"
481msgstr "Ievadiet paroli"
478
482
479−#: qml/Greeter/NarrowView.qml:118
483+#: qml/Greeter/NarrowView.qml:131
480msgid "Enter passcode"
484msgid "Enter passcode"
481msgstr "Ievadiet piekļuves kodu"
485msgstr "Ievadiet piekļuves kodu"
482
486
483−#: qml/Greeter/NarrowView.qml:119
487+#: qml/Greeter/NarrowView.qml:135
484#, qt-format
488#, qt-format
485msgid "Sorry, incorrect %1"
489msgid "Sorry, incorrect %1"
486msgstr "Piedodiet, nepareizs %1"
490msgstr "Piedodiet, nepareizs %1"
487
491
488−#: qml/Greeter/NarrowView.qml:120
492+#: qml/Greeter/NarrowView.qml:136
489msgid "Sorry, incorrect passphrase"
493msgid "Sorry, incorrect passphrase"
490msgstr "Piedodiet, nepareiza parole"
494msgstr "Piedodiet, nepareiza parole"
491
495
492−#: qml/Greeter/NarrowView.qml:121
496+#: qml/Greeter/NarrowView.qml:137
493msgctxt "passphrase"
497msgctxt "passphrase"
494msgid "Please re-enter"
498msgid "Please re-enter"
495msgstr "Ievadiet vēlreiz"
499msgstr "Ievadiet vēlreiz"
496
500
497−#: qml/Greeter/NarrowView.qml:122
501+#: qml/Greeter/NarrowView.qml:138
498msgid "Sorry, incorrect passcode"
502msgid "Sorry, incorrect passcode"
499msgstr "Piedodiet, nepareizs piekļuves kods"
503msgstr "Piedodiet, nepareizs piekļuves kods"
500
504
po/ml.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2013-11-23 11:44+0000\n"
11"PO-Revision-Date: 2013-11-23 11:44+0000\n"
12"Last-Translator: ST Alfas <Unknown>\n"
12"Last-Translator: ST Alfas <Unknown>\n"
13"Language-Team: Malayalam <ml@li.org>\n"
13"Language-Team: Malayalam <ml@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr ""
36msgstr ""
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr ""
40msgstr ""
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277msgid "Closes the current window."
277msgid "Closes the current window."
278msgstr ""
278msgstr ""
279
279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281msgid "Return to Call"
281msgid "Return to Call"
282msgstr ""
282msgstr ""
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Emergency Call"
285msgid "Emergency Call"
286msgstr "അടിയന്തിര വിളി"
286msgstr "അടിയന്തിര വിളി"
287
287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289msgid "OK"
289msgid "OK"
290msgstr ""
290msgstr ""
291
291
@@ -422,10 +422,14 @@ msgid ""
422"touch pad to interact with the pointer."
422"touch pad to interact with the pointer."
423msgstr ""
423msgstr ""
424
424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426msgid "Unlock"
426msgid "Unlock"
427msgstr ""
427msgstr ""
428
428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429#: qml/Greeter/LoginList.qml:259
433#: qml/Greeter/LoginList.qml:259
430msgid "Retry"
434msgid "Retry"
431msgstr ""
435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458"and all personal data will be deleted."
462"and all personal data will be deleted."
459msgstr ""
463msgstr ""
460
464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462#, qt-format
466#, qt-format
463msgid "Enter %1"
467msgid "Enter %1"
464msgstr ""
468msgstr ""
465
469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467msgid "Enter passphrase"
471msgid "Enter passphrase"
468msgstr ""
472msgstr ""
469
473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471msgid "Enter passcode"
475msgid "Enter passcode"
472msgstr ""
476msgstr ""
473
477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475#, qt-format
479#, qt-format
476msgid "Sorry, incorrect %1"
480msgid "Sorry, incorrect %1"
477msgstr ""
481msgstr ""
478
482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480msgid "Sorry, incorrect passphrase"
484msgid "Sorry, incorrect passphrase"
481msgstr ""
485msgstr ""
482
486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484msgctxt "passphrase"
488msgctxt "passphrase"
485msgid "Please re-enter"
489msgid "Please re-enter"
486msgstr ""
490msgstr ""
487
491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489msgid "Sorry, incorrect passcode"
493msgid "Sorry, incorrect passcode"
490msgstr ""
494msgstr ""
491
495
po/mr.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2014-01-14 19:54+0000\n"
11"PO-Revision-Date: 2014-01-14 19:54+0000\n"
12"Last-Translator: Rohan Deshmukh <Unknown>\n"
12"Last-Translator: Rohan Deshmukh <Unknown>\n"
13"Language-Team: Marathi <mr@li.org>\n"
13"Language-Team: Marathi <mr@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr ""
36msgstr ""
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr ""
40msgstr ""
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277msgid "Closes the current window."
277msgid "Closes the current window."
278msgstr ""
278msgstr ""
279
279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281msgid "Return to Call"
281msgid "Return to Call"
282msgstr ""
282msgstr ""
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Emergency Call"
285msgid "Emergency Call"
286msgstr ""
286msgstr ""
287
287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289msgid "OK"
289msgid "OK"
290msgstr ""
290msgstr ""
291
291
@@ -422,10 +422,14 @@ msgid ""
422"touch pad to interact with the pointer."
422"touch pad to interact with the pointer."
423msgstr ""
423msgstr ""
424
424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426msgid "Unlock"
426msgid "Unlock"
427msgstr ""
427msgstr ""
428
428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429#: qml/Greeter/LoginList.qml:259
433#: qml/Greeter/LoginList.qml:259
430msgid "Retry"
434msgid "Retry"
431msgstr ""
435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458"and all personal data will be deleted."
462"and all personal data will be deleted."
459msgstr ""
463msgstr ""
460
464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462#, qt-format
466#, qt-format
463msgid "Enter %1"
467msgid "Enter %1"
464msgstr ""
468msgstr ""
465
469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467msgid "Enter passphrase"
471msgid "Enter passphrase"
468msgstr ""
472msgstr ""
469
473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471msgid "Enter passcode"
475msgid "Enter passcode"
472msgstr ""
476msgstr ""
473
477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475#, qt-format
479#, qt-format
476msgid "Sorry, incorrect %1"
480msgid "Sorry, incorrect %1"
477msgstr ""
481msgstr ""
478
482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480msgid "Sorry, incorrect passphrase"
484msgid "Sorry, incorrect passphrase"
481msgstr ""
485msgstr ""
482
486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484msgctxt "passphrase"
488msgctxt "passphrase"
485msgid "Please re-enter"
489msgid "Please re-enter"
486msgstr ""
490msgstr ""
487
491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489msgid "Sorry, incorrect passcode"
493msgid "Sorry, incorrect passcode"
490msgstr ""
494msgstr ""
491
495
po/ms.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2016-05-24 01:36+0000\n"
11"PO-Revision-Date: 2016-05-24 01:36+0000\n"
12"Last-Translator: abuyop <Unknown>\n"
12"Last-Translator: abuyop <Unknown>\n"
13"Language-Team: Malay <ms@li.org>\n"
13"Language-Team: Malay <ms@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,21 +35,21 @@ msgstr "Keluar"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Nyahcemat pintasan"
36msgstr "Nyahcemat pintasan"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Peranti Dikunci"
40msgstr "Peranti Dikunci"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45"Anda telah dikunci kerana terlalu banyak percubaan frasa laluan yang gagal."
45"Anda telah dikunci kerana terlalu banyak percubaan frasa laluan yang gagal."
46
46
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
48msgid "You have been locked out due to too many failed passcode attempts."
48msgid "You have been locked out due to too many failed passcode attempts."
49msgstr ""
49msgstr ""
50"Anda telah dikunci kerana terlalu banyak percubaan kod laluan yang gagal."
50"Anda telah dikunci kerana terlalu banyak percubaan kod laluan yang gagal."
51
51
52−#: qml/Components/DelayedLockscreen.qml:74
52+#: qml/Components/DelayedLockscreen.qml:75
53#, qt-format
53#, qt-format
54msgid "Please wait %1 minute and then try again…"
54msgid "Please wait %1 minute and then try again…"
55msgid_plural "Please wait %1 minutes and then try again…"
55msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr ""
279msgid "Closes the current window."
279msgid "Closes the current window."
280msgstr ""
280msgstr ""
281
281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283msgid "Return to Call"
283msgid "Return to Call"
284msgstr "Kembali ke Panggilan"
284msgstr "Kembali ke Panggilan"
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Emergency Call"
287msgid "Emergency Call"
288msgstr "Panggilan Kecemasan"
288msgstr "Panggilan Kecemasan"
289
289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291msgid "OK"
291msgid "OK"
292msgstr "OK"
292msgstr "OK"
293
293
@@ -426,10 +426,14 @@ msgstr ""
426"Peranti anda kini bersambung dengan paparan luar. Guna skrin ini sebagai pad "
426"Peranti anda kini bersambung dengan paparan luar. Guna skrin ini sebagai pad "
427"sentuh untuk berinteraksi dengan penuding."
427"sentuh untuk berinteraksi dengan penuding."
428
428
429−#: qml/Greeter/CoverPage.qml:119
429+#: qml/Greeter/CoverPage.qml:127
430msgid "Unlock"
430msgid "Unlock"
431msgstr "Buka"
431msgstr "Buka"
432
432
433+#: qml/Greeter/Greeter.qml:536
434+msgid "Try again"
435+msgstr ""
436+
433#: qml/Greeter/LoginList.qml:259
437#: qml/Greeter/LoginList.qml:259
434msgid "Retry"
438msgid "Retry"
435msgstr "Cuba Lagi"
439msgstr "Cuba Lagi"
@@ -466,34 +470,34 @@ msgstr ""
466"Jika kod laluan masih salah, telefon anda akan membuat tetapan semula kilang "
470"Jika kod laluan masih salah, telefon anda akan membuat tetapan semula kilang "
467"dan semua data peribadi anda akan dipadam."
471"dan semua data peribadi anda akan dipadam."
468
472
469−#: qml/Greeter/NarrowView.qml:116
473+#: qml/Greeter/NarrowView.qml:129
470#, qt-format
474#, qt-format
471msgid "Enter %1"
475msgid "Enter %1"
472msgstr "Masuk %1"
476msgstr "Masuk %1"
473
477
474−#: qml/Greeter/NarrowView.qml:117
478+#: qml/Greeter/NarrowView.qml:130
475msgid "Enter passphrase"
479msgid "Enter passphrase"
476msgstr "Masukkan frasa laluan"
480msgstr "Masukkan frasa laluan"
477
481
478−#: qml/Greeter/NarrowView.qml:118
482+#: qml/Greeter/NarrowView.qml:131
479msgid "Enter passcode"
483msgid "Enter passcode"
480msgstr "Masukkan kod laluan"
484msgstr "Masukkan kod laluan"
481
485
482−#: qml/Greeter/NarrowView.qml:119
486+#: qml/Greeter/NarrowView.qml:135
483#, qt-format
487#, qt-format
484msgid "Sorry, incorrect %1"
488msgid "Sorry, incorrect %1"
485msgstr "Maaf, %1 salah"
489msgstr "Maaf, %1 salah"
486
490
487−#: qml/Greeter/NarrowView.qml:120
491+#: qml/Greeter/NarrowView.qml:136
488msgid "Sorry, incorrect passphrase"
492msgid "Sorry, incorrect passphrase"
489msgstr "Maaf, frasa laluan salah"
493msgstr "Maaf, frasa laluan salah"
490
494
491−#: qml/Greeter/NarrowView.qml:121
495+#: qml/Greeter/NarrowView.qml:137
492msgctxt "passphrase"
496msgctxt "passphrase"
493msgid "Please re-enter"
497msgid "Please re-enter"
494msgstr "Sila masukkan-semula"
498msgstr "Sila masukkan-semula"
495
499
496−#: qml/Greeter/NarrowView.qml:122
500+#: qml/Greeter/NarrowView.qml:138
497msgid "Sorry, incorrect passcode"
501msgid "Sorry, incorrect passcode"
498msgstr "Maaf, kod laluan salah"
502msgstr "Maaf, kod laluan salah"
499
503
po/my.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2013-12-12 11:12+0000\n"
11"PO-Revision-Date: 2013-12-12 11:12+0000\n"
12"Last-Translator: Pyae Sone <Unknown>\n"
12"Last-Translator: Pyae Sone <Unknown>\n"
13"Language-Team: Burmese <my@li.org>\n"
13"Language-Team: Burmese <my@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr ""
36msgstr ""
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr ""
40msgstr ""
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277msgid "Closes the current window."
277msgid "Closes the current window."
278msgstr ""
278msgstr ""
279
279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281msgid "Return to Call"
281msgid "Return to Call"
282msgstr ""
282msgstr ""
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Emergency Call"
285msgid "Emergency Call"
286msgstr "အရေးပေါ်ခေါ်မည်"
286msgstr "အရေးပေါ်ခေါ်မည်"
287
287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289msgid "OK"
289msgid "OK"
290msgstr "ကောင်းပြီ"
290msgstr "ကောင်းပြီ"
291
291
@@ -422,10 +422,14 @@ msgid ""
422"touch pad to interact with the pointer."
422"touch pad to interact with the pointer."
423msgstr ""
423msgstr ""
424
424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426msgid "Unlock"
426msgid "Unlock"
427msgstr ""
427msgstr ""
428
428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429#: qml/Greeter/LoginList.qml:259
433#: qml/Greeter/LoginList.qml:259
430msgid "Retry"
434msgid "Retry"
431msgstr "ထပ်ကြိုးစားပါ"
435msgstr "ထပ်ကြိုးစားပါ"
@@ -458,34 +462,34 @@ msgid ""
458"and all personal data will be deleted."
462"and all personal data will be deleted."
459msgstr ""
463msgstr ""
460
464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462#, qt-format
466#, qt-format
463msgid "Enter %1"
467msgid "Enter %1"
464msgstr ""
468msgstr ""
465
469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467msgid "Enter passphrase"
471msgid "Enter passphrase"
468msgstr ""
472msgstr ""
469
473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471msgid "Enter passcode"
475msgid "Enter passcode"
472msgstr ""
476msgstr ""
473
477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475#, qt-format
479#, qt-format
476msgid "Sorry, incorrect %1"
480msgid "Sorry, incorrect %1"
477msgstr ""
481msgstr ""
478
482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480msgid "Sorry, incorrect passphrase"
484msgid "Sorry, incorrect passphrase"
481msgstr ""
485msgstr ""
482
486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484msgctxt "passphrase"
488msgctxt "passphrase"
485msgid "Please re-enter"
489msgid "Please re-enter"
486msgstr ""
490msgstr ""
487
491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489msgid "Sorry, incorrect passcode"
493msgid "Sorry, incorrect passcode"
490msgstr ""
494msgstr ""
491
495
po/nb.po+21−17
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2016-06-21 10:21+0000\n"
11"PO-Revision-Date: 2016-06-21 10:21+0000\n"
12"Last-Translator: Åka Sikrom <Unknown>\n"
12"Last-Translator: Åka Sikrom <Unknown>\n"
13"Language-Team: Norwegian Bokmal <nb@li.org>\n"
13"Language-Team: Norwegian Bokmal <nb@li.org>\n"
@@ -15,7 +15,7 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"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"
19"X-Generator: Launchpad (build 18111)\n"
19"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -35,21 +35,21 @@ msgstr "Avslutt"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Fjern snarvei"
36msgstr "Fjern snarvei"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Enheten er låst"
40msgstr "Enheten er låst"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45"Du har skrevet inn feil passordfrase for mange ganger, og er derfor "
45"Du har skrevet inn feil passordfrase for mange ganger, og er derfor "
46"utestengt."
46"utestengt."
47
47
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
49msgid "You have been locked out due to too many failed passcode attempts."
49msgid "You have been locked out due to too many failed passcode attempts."
50msgstr "Du har tastet feil kode for mange ganger, og er derfor utestengt."
50msgstr "Du har tastet feil kode for mange ganger, og er derfor utestengt."
51
51
52−#: qml/Components/DelayedLockscreen.qml:74
52+#: qml/Components/DelayedLockscreen.qml:75
53#, qt-format
53#, qt-format
54msgid "Please wait %1 minute and then try again…"
54msgid "Please wait %1 minute and then try again…"
55msgid_plural "Please wait %1 minutes and then try again…"
55msgid_plural "Please wait %1 minutes and then try again…"
@@ -281,15 +281,15 @@ msgstr "Alt + F4"
281msgid "Closes the current window."
281msgid "Closes the current window."
282msgstr "Lukker gjeldende vindu."
282msgstr "Lukker gjeldende vindu."
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Return to Call"
285msgid "Return to Call"
286msgstr "Tilbake til samtale"
286msgstr "Tilbake til samtale"
287
287
288−#: qml/Components/Lockscreen.qml:231
288+#: qml/Components/Lockscreen.qml:239
289msgid "Emergency Call"
289msgid "Emergency Call"
290msgstr "Nødanrop"
290msgstr "Nødanrop"
291
291
292−#: qml/Components/Lockscreen.qml:263
292+#: qml/Components/Lockscreen.qml:271
293msgid "OK"
293msgid "OK"
294msgstr "OK"
294msgstr "OK"
295
295
@@ -430,10 +430,14 @@ msgstr ""
430"Enheten er nå koblet til en ekstern skjerm. Bruk denne skjermen som en "
430"Enheten er nå koblet til en ekstern skjerm. Bruk denne skjermen som en "
431"pekeplate for å styre pekeren."
431"pekeplate for å styre pekeren."
432
432
433−#: qml/Greeter/CoverPage.qml:119
433+#: qml/Greeter/CoverPage.qml:127
434msgid "Unlock"
434msgid "Unlock"
435msgstr "Lås opp"
435msgstr "Lås opp"
436
436
437+#: qml/Greeter/Greeter.qml:536
438+msgid "Try again"
439+msgstr ""
440+
437#: qml/Greeter/LoginList.qml:259
441#: qml/Greeter/LoginList.qml:259
438msgid "Retry"
442msgid "Retry"
439msgstr "Prøv igjen"
443msgstr "Prøv igjen"
@@ -470,34 +474,34 @@ msgstr ""
470"Hvis du skriver feil kode en gang til, tilbakestilles telefonen til "
474"Hvis du skriver feil kode en gang til, tilbakestilles telefonen til "
471"fabrikkinnstillinger, og alle personlige data slettes."
475"fabrikkinnstillinger, og alle personlige data slettes."
472
476
473−#: qml/Greeter/NarrowView.qml:116
477+#: qml/Greeter/NarrowView.qml:129
474#, qt-format
478#, qt-format
475msgid "Enter %1"
479msgid "Enter %1"
476msgstr "Skriv inn %1"
480msgstr "Skriv inn %1"
477
481
478−#: qml/Greeter/NarrowView.qml:117
482+#: qml/Greeter/NarrowView.qml:130
479msgid "Enter passphrase"
483msgid "Enter passphrase"
480msgstr "Skriv inn passordfrase"
484msgstr "Skriv inn passordfrase"
481
485
482−#: qml/Greeter/NarrowView.qml:118
486+#: qml/Greeter/NarrowView.qml:131
483msgid "Enter passcode"
487msgid "Enter passcode"
484msgstr "Tast kode"
488msgstr "Tast kode"
485
489
486−#: qml/Greeter/NarrowView.qml:119
490+#: qml/Greeter/NarrowView.qml:135
487#, qt-format
491#, qt-format
488msgid "Sorry, incorrect %1"
492msgid "Sorry, incorrect %1"
489msgstr "Feil %1"
493msgstr "Feil %1"
490
494
491−#: qml/Greeter/NarrowView.qml:120
495+#: qml/Greeter/NarrowView.qml:136
492msgid "Sorry, incorrect passphrase"
496msgid "Sorry, incorrect passphrase"
493msgstr "Feil passordfrase"
497msgstr "Feil passordfrase"
494
498
495−#: qml/Greeter/NarrowView.qml:121
499+#: qml/Greeter/NarrowView.qml:137
496msgctxt "passphrase"
500msgctxt "passphrase"
497msgid "Please re-enter"
501msgid "Please re-enter"
498msgstr "Skriv inn på nytt"
502msgstr "Skriv inn på nytt"
499
503
500−#: qml/Greeter/NarrowView.qml:122
504+#: qml/Greeter/NarrowView.qml:138
501msgid "Sorry, incorrect passcode"
505msgid "Sorry, incorrect passcode"
502msgstr "Feil kode"
506msgstr "Feil kode"
503
507
po/ne.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-12-06 15:11+0000\n"
11"PO-Revision-Date: 2015-12-06 15:11+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Nepali <ne@li.org>\n"
13"Language-Team: Nepali <ne@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "बन्द गर्नुहोस्"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr ""
36msgstr ""
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr ""
40msgstr ""
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277msgid "Closes the current window."
277msgid "Closes the current window."
278msgstr ""
278msgstr ""
279
279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281msgid "Return to Call"
281msgid "Return to Call"
282msgstr ""
282msgstr ""
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Emergency Call"
285msgid "Emergency Call"
286msgstr ""
286msgstr ""
287
287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289msgid "OK"
289msgid "OK"
290msgstr "ठीक छ"
290msgstr "ठीक छ"
291
291
@@ -422,10 +422,14 @@ msgid ""
422"touch pad to interact with the pointer."
422"touch pad to interact with the pointer."
423msgstr ""
423msgstr ""
424
424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426msgid "Unlock"
426msgid "Unlock"
427msgstr "ताल्चा खोल्नुहोस्"
427msgstr "ताल्चा खोल्नुहोस्"
428
428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429#: qml/Greeter/LoginList.qml:259
433#: qml/Greeter/LoginList.qml:259
430msgid "Retry"
434msgid "Retry"
431msgstr "पुन: प्रयास"
435msgstr "पुन: प्रयास"
@@ -458,34 +462,34 @@ msgid ""
458"and all personal data will be deleted."
462"and all personal data will be deleted."
459msgstr ""
463msgstr ""
460
464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462#, qt-format
466#, qt-format
463msgid "Enter %1"
467msgid "Enter %1"
464msgstr ""
468msgstr ""
465
469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467msgid "Enter passphrase"
471msgid "Enter passphrase"
468msgstr ""
472msgstr ""
469
473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471msgid "Enter passcode"
475msgid "Enter passcode"
472msgstr ""
476msgstr ""
473
477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475#, qt-format
479#, qt-format
476msgid "Sorry, incorrect %1"
480msgid "Sorry, incorrect %1"
477msgstr ""
481msgstr ""
478
482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480msgid "Sorry, incorrect passphrase"
484msgid "Sorry, incorrect passphrase"
481msgstr ""
485msgstr ""
482
486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484msgctxt "passphrase"
488msgctxt "passphrase"
485msgid "Please re-enter"
489msgid "Please re-enter"
486msgstr ""
490msgstr ""
487
491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489msgid "Sorry, incorrect passcode"
493msgid "Sorry, incorrect passcode"
490msgstr ""
494msgstr ""
491
495
po/nl.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-07-07 07:14+0000\n"
11"PO-Revision-Date: 2015-07-07 07:14+0000\n"
12"Last-Translator: Hannie Dumoleyn <Unknown>\n"
12"Last-Translator: Hannie Dumoleyn <Unknown>\n"
13"Language-Team: Dutch <nl@li.org>\n"
13"Language-Team: Dutch <nl@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,23 +35,23 @@ msgstr "Afsluiten"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Snelkoppeling losmaken"
36msgstr "Snelkoppeling losmaken"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Apparaat vergrendeld"
40msgstr "Apparaat vergrendeld"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45"U werd de toegang geweigerd omdat u te vaak een onjuiste wachtwoordzin heeft "
45"U werd de toegang geweigerd omdat u te vaak een onjuiste wachtwoordzin heeft "
46"ingevoerd."
46"ingevoerd."
47
47
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
49msgid "You have been locked out due to too many failed passcode attempts."
49msgid "You have been locked out due to too many failed passcode attempts."
50msgstr ""
50msgstr ""
51"U werd de toegang geweigerd omdat u te vaak een onjuiste toegangscode heeft "
51"U werd de toegang geweigerd omdat u te vaak een onjuiste toegangscode heeft "
52"ingevoerd."
52"ingevoerd."
53
53
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
55#, qt-format
55#, qt-format
56msgid "Please wait %1 minute and then try again…"
56msgid "Please wait %1 minute and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
@@ -283,15 +283,15 @@ msgstr ""
283msgid "Closes the current window."
283msgid "Closes the current window."
284msgstr ""
284msgstr ""
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Return to Call"
287msgid "Return to Call"
288msgstr "Teruggaan naar gesprek"
288msgstr "Teruggaan naar gesprek"
289
289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291msgid "Emergency Call"
291msgid "Emergency Call"
292msgstr "Noodoproep"
292msgstr "Noodoproep"
293
293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295msgid "OK"
295msgid "OK"
296msgstr "Ok"
296msgstr "Ok"
297
297
@@ -433,10 +433,14 @@ msgstr ""
433"Uw apparaat is nu verbonden met een extern beeldscherm. Gebruik dit scherm "
433"Uw apparaat is nu verbonden met een extern beeldscherm. Gebruik dit scherm "
434"als een touchpad om de aanwijzer te bedienen."
434"als een touchpad om de aanwijzer te bedienen."
435
435
436−#: qml/Greeter/CoverPage.qml:119
436+#: qml/Greeter/CoverPage.qml:127
437msgid "Unlock"
437msgid "Unlock"
438msgstr "Ontgrendelen"
438msgstr "Ontgrendelen"
439
439
440+#: qml/Greeter/Greeter.qml:536
441+msgid "Try again"
442+msgstr ""
443+
440#: qml/Greeter/LoginList.qml:259
444#: qml/Greeter/LoginList.qml:259
441msgid "Retry"
445msgid "Retry"
442msgstr "Opnieuw proberen"
446msgstr "Opnieuw proberen"
@@ -473,34 +477,34 @@ msgstr ""
473"Wanneer de toegangscode nu opnieuw onjuist wordt ingevoerd, zal uw telefoon "
477"Wanneer de toegangscode nu opnieuw onjuist wordt ingevoerd, zal uw telefoon "
474"teruggaan naar de fabrieksinstellingen en zal al uw eigen data verloren gaan."
478"teruggaan naar de fabrieksinstellingen en zal al uw eigen data verloren gaan."
475
479
476−#: qml/Greeter/NarrowView.qml:116
480+#: qml/Greeter/NarrowView.qml:129
477#, qt-format
481#, qt-format
478msgid "Enter %1"
482msgid "Enter %1"
479msgstr "Voer %1 in"
483msgstr "Voer %1 in"
480
484
481−#: qml/Greeter/NarrowView.qml:117
485+#: qml/Greeter/NarrowView.qml:130
482msgid "Enter passphrase"
486msgid "Enter passphrase"
483msgstr "Voer wachtwoordzin in"
487msgstr "Voer wachtwoordzin in"
484
488
485−#: qml/Greeter/NarrowView.qml:118
489+#: qml/Greeter/NarrowView.qml:131
486msgid "Enter passcode"
490msgid "Enter passcode"
487msgstr "Voer toegangscode in"
491msgstr "Voer toegangscode in"
488
492
489−#: qml/Greeter/NarrowView.qml:119
493+#: qml/Greeter/NarrowView.qml:135
490#, qt-format
494#, qt-format
491msgid "Sorry, incorrect %1"
495msgid "Sorry, incorrect %1"
492msgstr "Sorry, onjuiste %1"
496msgstr "Sorry, onjuiste %1"
493
497
494−#: qml/Greeter/NarrowView.qml:120
498+#: qml/Greeter/NarrowView.qml:136
495msgid "Sorry, incorrect passphrase"
499msgid "Sorry, incorrect passphrase"
496msgstr "Sorry, onjuiste wachtwoordzin"
500msgstr "Sorry, onjuiste wachtwoordzin"
497
501
498−#: qml/Greeter/NarrowView.qml:121
502+#: qml/Greeter/NarrowView.qml:137
499msgctxt "passphrase"
503msgctxt "passphrase"
500msgid "Please re-enter"
504msgid "Please re-enter"
501msgstr "Gelieve opnieuw in te voeren"
505msgstr "Gelieve opnieuw in te voeren"
502
506
503−#: qml/Greeter/NarrowView.qml:122
507+#: qml/Greeter/NarrowView.qml:138
504msgid "Sorry, incorrect passcode"
508msgid "Sorry, incorrect passcode"
505msgstr "Sorry, onjuiste toegangscode"
509msgstr "Sorry, onjuiste toegangscode"
506
510
po/nn.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-05-12 11:32+0000\n"
11"PO-Revision-Date: 2015-05-12 11:32+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Norwegian Nynorsk <nn@li.org>\n"
13"Language-Team: Norwegian Nynorsk <nn@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr ""
36msgstr ""
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr ""
40msgstr ""
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277msgid "Closes the current window."
277msgid "Closes the current window."
278msgstr ""
278msgstr ""
279
279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281msgid "Return to Call"
281msgid "Return to Call"
282msgstr ""
282msgstr ""
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Emergency Call"
285msgid "Emergency Call"
286msgstr ""
286msgstr ""
287
287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289msgid "OK"
289msgid "OK"
290msgstr ""
290msgstr ""
291
291
@@ -422,10 +422,14 @@ msgid ""
422"touch pad to interact with the pointer."
422"touch pad to interact with the pointer."
423msgstr ""
423msgstr ""
424
424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426msgid "Unlock"
426msgid "Unlock"
427msgstr ""
427msgstr ""
428
428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429#: qml/Greeter/LoginList.qml:259
433#: qml/Greeter/LoginList.qml:259
430msgid "Retry"
434msgid "Retry"
431msgstr ""
435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458"and all personal data will be deleted."
462"and all personal data will be deleted."
459msgstr ""
463msgstr ""
460
464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462#, qt-format
466#, qt-format
463msgid "Enter %1"
467msgid "Enter %1"
464msgstr ""
468msgstr ""
465
469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467msgid "Enter passphrase"
471msgid "Enter passphrase"
468msgstr ""
472msgstr ""
469
473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471msgid "Enter passcode"
475msgid "Enter passcode"
472msgstr ""
476msgstr ""
473
477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475#, qt-format
479#, qt-format
476msgid "Sorry, incorrect %1"
480msgid "Sorry, incorrect %1"
477msgstr ""
481msgstr ""
478
482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480msgid "Sorry, incorrect passphrase"
484msgid "Sorry, incorrect passphrase"
481msgstr ""
485msgstr ""
482
486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484msgctxt "passphrase"
488msgctxt "passphrase"
485msgid "Please re-enter"
489msgid "Please re-enter"
486msgstr ""
490msgstr ""
487
491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489msgid "Sorry, incorrect passcode"
493msgid "Sorry, incorrect passcode"
490msgstr ""
494msgstr ""
491
495
po/oc.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-02-05 20:35+0000\n"
11"PO-Revision-Date: 2015-02-05 20:35+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Occitan (post 1500) <oc@li.org>\n"
13"Language-Team: Occitan (post 1500) <oc@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,23 +35,23 @@ msgstr "Quitar"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Destacar l'acorchi"
36msgstr "Destacar l'acorchi"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Periferic verrolhat"
40msgstr "Periferic verrolhat"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45"Sètz estat blocat en seguida d'un tròp grand nombre de temptativas de sasida "
45"Sètz estat blocat en seguida d'un tròp grand nombre de temptativas de sasida "
46"d'una frasa secreta erronèa."
46"d'una frasa secreta erronèa."
47
47
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
49msgid "You have been locked out due to too many failed passcode attempts."
49msgid "You have been locked out due to too many failed passcode attempts."
50msgstr ""
50msgstr ""
51"Sètz estat blocat en seguida d'un tròp grand nombre de temptativas de sasida "
51"Sètz estat blocat en seguida d'un tròp grand nombre de temptativas de sasida "
52"d'un senhal erronèu."
52"d'un senhal erronèu."
53
53
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
55#, qt-format
55#, qt-format
56msgid "Please wait %1 minute and then try again…"
56msgid "Please wait %1 minute and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
@@ -283,15 +283,15 @@ msgstr ""
283msgid "Closes the current window."
283msgid "Closes the current window."
284msgstr ""
284msgstr ""
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Return to Call"
287msgid "Return to Call"
288msgstr "Tornar a l'apèl"
288msgstr "Tornar a l'apèl"
289
289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291msgid "Emergency Call"
291msgid "Emergency Call"
292msgstr "Apèl d'urgéncia"
292msgstr "Apèl d'urgéncia"
293
293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295msgid "OK"
295msgid "OK"
296msgstr "D'acòrdi"
296msgstr "D'acòrdi"
297
297
@@ -433,10 +433,14 @@ msgstr ""
433"Vòstre aparelh es ara connectat a un ecran extèrne. Utilizatz aqueste ecran "
433"Vòstre aparelh es ara connectat a un ecran extèrne. Utilizatz aqueste ecran "
434"coma un pavat tactil per interagir amb lo puntador."
434"coma un pavat tactil per interagir amb lo puntador."
435
435
436−#: qml/Greeter/CoverPage.qml:119
436+#: qml/Greeter/CoverPage.qml:127
437msgid "Unlock"
437msgid "Unlock"
438msgstr "Desverrolhar"
438msgstr "Desverrolhar"
439
439
440+#: qml/Greeter/Greeter.qml:536
441+msgid "Try again"
442+msgstr ""
443+
440#: qml/Greeter/LoginList.qml:259
444#: qml/Greeter/LoginList.qml:259
441msgid "Retry"
445msgid "Retry"
442msgstr "Ensajar tornamai"
446msgstr "Ensajar tornamai"
@@ -475,34 +479,34 @@ msgstr ""
475"reïnicializacion als paramètres d'usina e totas las donadas personalas "
479"reïnicializacion als paramètres d'usina e totas las donadas personalas "
476"seront suprimidas."
480"seront suprimidas."
477
481
478−#: qml/Greeter/NarrowView.qml:116
482+#: qml/Greeter/NarrowView.qml:129
479#, qt-format
483#, qt-format
480msgid "Enter %1"
484msgid "Enter %1"
481msgstr "Sasissètz %1"
485msgstr "Sasissètz %1"
482
486
483−#: qml/Greeter/NarrowView.qml:117
487+#: qml/Greeter/NarrowView.qml:130
484msgid "Enter passphrase"
488msgid "Enter passphrase"
485msgstr "Sasissètz la frasa secreta"
489msgstr "Sasissètz la frasa secreta"
486
490
487−#: qml/Greeter/NarrowView.qml:118
491+#: qml/Greeter/NarrowView.qml:131
488msgid "Enter passcode"
492msgid "Enter passcode"
489msgstr "Sasissètz lo senhal"
493msgstr "Sasissètz lo senhal"
490
494
491−#: qml/Greeter/NarrowView.qml:119
495+#: qml/Greeter/NarrowView.qml:135
492#, qt-format
496#, qt-format
493msgid "Sorry, incorrect %1"
497msgid "Sorry, incorrect %1"
494msgstr "O planhèm, %1 incorrècte"
498msgstr "O planhèm, %1 incorrècte"
495
499
496−#: qml/Greeter/NarrowView.qml:120
500+#: qml/Greeter/NarrowView.qml:136
497msgid "Sorry, incorrect passphrase"
501msgid "Sorry, incorrect passphrase"
498msgstr "O planhèm, frasa secreta incorrecte"
502msgstr "O planhèm, frasa secreta incorrecte"
499
503
500−#: qml/Greeter/NarrowView.qml:121
504+#: qml/Greeter/NarrowView.qml:137
501msgctxt "passphrase"
505msgctxt "passphrase"
502msgid "Please re-enter"
506msgid "Please re-enter"
503msgstr "Veuillez rensagesir"
507msgstr "Veuillez rensagesir"
504
508
505−#: qml/Greeter/NarrowView.qml:122
509+#: qml/Greeter/NarrowView.qml:138
506msgid "Sorry, incorrect passcode"
510msgid "Sorry, incorrect passcode"
507msgstr "O planhèm, còde incorrècte"
511msgstr "O planhèm, còde incorrècte"
508
512
po/or.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-03-21 05:28+0000\n"
11"PO-Revision-Date: 2015-03-21 05:28+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Oriya <or@li.org>\n"
13"Language-Team: Oriya <or@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n!=1;\n"
17"Plural-Forms: nplurals=2; plural=n!=1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr ""
36msgstr ""
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr ""
40msgstr ""
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277msgid "Closes the current window."
277msgid "Closes the current window."
278msgstr ""
278msgstr ""
279
279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281msgid "Return to Call"
281msgid "Return to Call"
282msgstr ""
282msgstr ""
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Emergency Call"
285msgid "Emergency Call"
286msgstr ""
286msgstr ""
287
287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289msgid "OK"
289msgid "OK"
290msgstr ""
290msgstr ""
291
291
@@ -422,10 +422,14 @@ msgid ""
422"touch pad to interact with the pointer."
422"touch pad to interact with the pointer."
423msgstr ""
423msgstr ""
424
424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426msgid "Unlock"
426msgid "Unlock"
427msgstr ""
427msgstr ""
428
428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429#: qml/Greeter/LoginList.qml:259
433#: qml/Greeter/LoginList.qml:259
430msgid "Retry"
434msgid "Retry"
431msgstr ""
435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458"and all personal data will be deleted."
462"and all personal data will be deleted."
459msgstr ""
463msgstr ""
460
464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462#, qt-format
466#, qt-format
463msgid "Enter %1"
467msgid "Enter %1"
464msgstr ""
468msgstr ""
465
469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467msgid "Enter passphrase"
471msgid "Enter passphrase"
468msgstr ""
472msgstr ""
469
473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471msgid "Enter passcode"
475msgid "Enter passcode"
472msgstr ""
476msgstr ""
473
477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475#, qt-format
479#, qt-format
476msgid "Sorry, incorrect %1"
480msgid "Sorry, incorrect %1"
477msgstr ""
481msgstr ""
478
482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480msgid "Sorry, incorrect passphrase"
484msgid "Sorry, incorrect passphrase"
481msgstr ""
485msgstr ""
482
486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484msgctxt "passphrase"
488msgctxt "passphrase"
485msgid "Please re-enter"
489msgid "Please re-enter"
486msgstr ""
490msgstr ""
487
491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489msgid "Sorry, incorrect passcode"
493msgid "Sorry, incorrect passcode"
490msgstr ""
494msgstr ""
491
495
po/pa.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-04-24 04:29+0000\n"
11"PO-Revision-Date: 2015-04-24 04:29+0000\n"
12"Last-Translator: Gursharnjit_Singh <ubuntuser13@gmail.com>\n"
12"Last-Translator: Gursharnjit_Singh <ubuntuser13@gmail.com>\n"
13"Language-Team: Punjabi <pa@li.org>\n"
13"Language-Team: Punjabi <pa@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "ਸ਼ਾਰਟਕੱਟ ਪਿੰਨ ਹਟਾਓ"
36msgstr "ਸ਼ਾਰਟਕੱਟ ਪਿੰਨ ਹਟਾਓ"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "ਯੰਤਰ ਲਾਕ ਹੈ"
40msgstr "ਯੰਤਰ ਲਾਕ ਹੈ"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr "ਬਹੁਤ ਸਾਰੇ ਗਲਤ ਵਾਕਾਂ ਦੀ ਵਜ੍ਹਾ ਨਾਲ ਤੁਹਾਨੂੰ ਲਾਕ ਕੀਤਾ ਗਿਆ।"
44msgstr "ਬਹੁਤ ਸਾਰੇ ਗਲਤ ਵਾਕਾਂ ਦੀ ਵਜ੍ਹਾ ਨਾਲ ਤੁਹਾਨੂੰ ਲਾਕ ਕੀਤਾ ਗਿਆ।"
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr "ਬਹੁਤ ਸਾਰੇ ਗਲਤ ਪਾਸਕੋਡਾਂ ਦੀ ਵਜ੍ਹਾ ਨਾਲ ਤੁਹਾਨੂੰ ਲਾਕ ਕੀਤਾ ਗਿਆ।"
48msgstr "ਬਹੁਤ ਸਾਰੇ ਗਲਤ ਪਾਸਕੋਡਾਂ ਦੀ ਵਜ੍ਹਾ ਨਾਲ ਤੁਹਾਨੂੰ ਲਾਕ ਕੀਤਾ ਗਿਆ।"
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr ""
279msgid "Closes the current window."
279msgid "Closes the current window."
280msgstr ""
280msgstr ""
281
281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283msgid "Return to Call"
283msgid "Return to Call"
284msgstr "ਕਾਲ ਤੇ ਵਾਪਸ"
284msgstr "ਕਾਲ ਤੇ ਵਾਪਸ"
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Emergency Call"
287msgid "Emergency Call"
288msgstr "ਅਪਾਤਕਾਲੀਨ ਕਾਲ"
288msgstr "ਅਪਾਤਕਾਲੀਨ ਕਾਲ"
289
289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291msgid "OK"
291msgid "OK"
292msgstr "ਠੀਕ"
292msgstr "ਠੀਕ"
293
293
@@ -424,10 +424,14 @@ msgid ""
424"touch pad to interact with the pointer."
424"touch pad to interact with the pointer."
425msgstr ""
425msgstr ""
426
426
427−#: qml/Greeter/CoverPage.qml:119
427+#: qml/Greeter/CoverPage.qml:127
428msgid "Unlock"
428msgid "Unlock"
429msgstr "ਅਣ-ਲਾਕ"
429msgstr "ਅਣ-ਲਾਕ"
430
430
431+#: qml/Greeter/Greeter.qml:536
432+msgid "Try again"
433+msgstr ""
434+
431#: qml/Greeter/LoginList.qml:259
435#: qml/Greeter/LoginList.qml:259
432msgid "Retry"
436msgid "Retry"
433msgstr "ਮੁੜ-ਕੋਸ਼ਿਸ਼"
437msgstr "ਮੁੜ-ਕੋਸ਼ਿਸ਼"
@@ -464,34 +468,34 @@ msgstr ""
464"ਜੇਕਰ ਗਲਤ ਪਾਸਕੋਡ ਦਰਜ ਹੋਇਆ, ਤੁਹਾਡਾ ਫ਼ੋਨ ਇੱਕ ਫ਼ੋਨ ਇੱਕ ਫ਼ੈਕਟਰੀ ਰੀਸੈੱਟ ਚਾਲੂ ਕਰੇਗਾ "
468"ਜੇਕਰ ਗਲਤ ਪਾਸਕੋਡ ਦਰਜ ਹੋਇਆ, ਤੁਹਾਡਾ ਫ਼ੋਨ ਇੱਕ ਫ਼ੋਨ ਇੱਕ ਫ਼ੈਕਟਰੀ ਰੀਸੈੱਟ ਚਾਲੂ ਕਰੇਗਾ "
465"ਅਤੇ ਸਾਰਾ ਨਿੱਜੀ ਡਾਟਾ ਹਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ।"
469"ਅਤੇ ਸਾਰਾ ਨਿੱਜੀ ਡਾਟਾ ਹਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ।"
466
470
467−#: qml/Greeter/NarrowView.qml:116
471+#: qml/Greeter/NarrowView.qml:129
468#, qt-format
472#, qt-format
469msgid "Enter %1"
473msgid "Enter %1"
470msgstr "ਦਰਜ %1"
474msgstr "ਦਰਜ %1"
471
475
472−#: qml/Greeter/NarrowView.qml:117
476+#: qml/Greeter/NarrowView.qml:130
473msgid "Enter passphrase"
477msgid "Enter passphrase"
474msgstr "ਵਾਕ ਦਿਓ"
478msgstr "ਵਾਕ ਦਿਓ"
475
479
476−#: qml/Greeter/NarrowView.qml:118
480+#: qml/Greeter/NarrowView.qml:131
477msgid "Enter passcode"
481msgid "Enter passcode"
478msgstr "ਪਾਸਕੋਡ ਦਿਓ"
482msgstr "ਪਾਸਕੋਡ ਦਿਓ"
479
483
480−#: qml/Greeter/NarrowView.qml:119
484+#: qml/Greeter/NarrowView.qml:135
481#, qt-format
485#, qt-format
482msgid "Sorry, incorrect %1"
486msgid "Sorry, incorrect %1"
483msgstr "ਮੁਆਫ਼ੀ, ਗਲਤ %1"
487msgstr "ਮੁਆਫ਼ੀ, ਗਲਤ %1"
484
488
485−#: qml/Greeter/NarrowView.qml:120
489+#: qml/Greeter/NarrowView.qml:136
486msgid "Sorry, incorrect passphrase"
490msgid "Sorry, incorrect passphrase"
487msgstr "ਮੁਆਫ਼ੀ, ਗਲਤ ਵਾਕ"
491msgstr "ਮੁਆਫ਼ੀ, ਗਲਤ ਵਾਕ"
488
492
489−#: qml/Greeter/NarrowView.qml:121
493+#: qml/Greeter/NarrowView.qml:137
490msgctxt "passphrase"
494msgctxt "passphrase"
491msgid "Please re-enter"
495msgid "Please re-enter"
492msgstr ""
496msgstr ""
493
497
494−#: qml/Greeter/NarrowView.qml:122
498+#: qml/Greeter/NarrowView.qml:138
495msgid "Sorry, incorrect passcode"
499msgid "Sorry, incorrect passcode"
496msgstr "ਮੁਆਫ਼ੀ, ਗਲਤ ਪਾਸਕੋਡ"
500msgstr "ਮੁਆਫ਼ੀ, ਗਲਤ ਪਾਸਕੋਡ"
497
501
po/pl.po+21−17
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2016-06-22 13:51+0000\n"
11"PO-Revision-Date: 2016-06-22 13:51+0000\n"
12"Last-Translator: Krzysztof Tataradziński <Unknown>\n"
12"Last-Translator: Krzysztof Tataradziński <Unknown>\n"
13"Language-Team: Polish <pl@li.org>\n"
13"Language-Team: Polish <pl@li.org>\n"
@@ -16,7 +16,7 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
17"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
18"|| n%100>=20) ? 1 : 2;\n"
18"|| 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"
20"X-Generator: Launchpad (build 18111)\n"
20"X-Generator: Launchpad (build 18111)\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -36,19 +36,19 @@ msgstr "Zakończ"
36msgid "Unpin shortcut"
36msgid "Unpin shortcut"
37msgstr "Odepnij skrót"
37msgstr "Odepnij skrót"
38
38
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
40msgid "Device Locked"
40msgid "Device Locked"
41msgstr "Urządzenie zablokowane"
41msgstr "Urządzenie zablokowane"
42
42
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
44msgid "You have been locked out due to too many failed passphrase attempts."
44msgid "You have been locked out due to too many failed passphrase attempts."
45msgstr "Zablokowano z powodu zbyt wielu prób podania nieprawidłowego hasła."
45msgstr "Zablokowano z powodu zbyt wielu prób podania nieprawidłowego hasła."
46
46
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
48msgid "You have been locked out due to too many failed passcode attempts."
48msgid "You have been locked out due to too many failed passcode attempts."
49msgstr "Zablokowano z powodu zbyt wielu prób podania nieprawidłowego hasła."
49msgstr "Zablokowano z powodu zbyt wielu prób podania nieprawidłowego hasła."
50
50
51−#: qml/Components/DelayedLockscreen.qml:74
51+#: qml/Components/DelayedLockscreen.qml:75
52#, qt-format
52#, qt-format
53msgid "Please wait %1 minute and then try again…"
53msgid "Please wait %1 minute and then try again…"
54msgid_plural "Please wait %1 minutes and then try again…"
54msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr "Alt + F4"
279msgid "Closes the current window."
279msgid "Closes the current window."
280msgstr "Zamyka bieżące okno."
280msgstr "Zamyka bieżące okno."
281
281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283msgid "Return to Call"
283msgid "Return to Call"
284msgstr "Powróć do rozmowy"
284msgstr "Powróć do rozmowy"
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Emergency Call"
287msgid "Emergency Call"
288msgstr "Telefon ratunkowy"
288msgstr "Telefon ratunkowy"
289
289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291msgid "OK"
291msgid "OK"
292msgstr "OK"
292msgstr "OK"
293
293
@@ -427,10 +427,14 @@ msgstr ""
427"Urządzenie jest podłączone do zewnętrznego wyświetlacza. Użyj tego ekranu "
427"Urządzenie jest podłączone do zewnętrznego wyświetlacza. Użyj tego ekranu "
428"jako touch pad, by nawigować kursorem."
428"jako touch pad, by nawigować kursorem."
429
429
430−#: qml/Greeter/CoverPage.qml:119
430+#: qml/Greeter/CoverPage.qml:127
431msgid "Unlock"
431msgid "Unlock"
432msgstr "Odblokuj"
432msgstr "Odblokuj"
433
433
434+#: qml/Greeter/Greeter.qml:536
435+msgid "Try again"
436+msgstr ""
437+
434#: qml/Greeter/LoginList.qml:259
438#: qml/Greeter/LoginList.qml:259
435msgid "Retry"
439msgid "Retry"
436msgstr "Ponów"
440msgstr "Ponów"
@@ -467,34 +471,34 @@ msgstr ""
467"Jeśli zostanie wprowadzony błędny kod, telefon przywróci ustawienia "
471"Jeśli zostanie wprowadzony błędny kod, telefon przywróci ustawienia "
468"fabryczne i wszystkie dane osobiste zostaną usunięte."
472"fabryczne i wszystkie dane osobiste zostaną usunięte."
469
473
470−#: qml/Greeter/NarrowView.qml:116
474+#: qml/Greeter/NarrowView.qml:129
471#, qt-format
475#, qt-format
472msgid "Enter %1"
476msgid "Enter %1"
473msgstr "Wprowadź %1"
477msgstr "Wprowadź %1"
474
478
475−#: qml/Greeter/NarrowView.qml:117
479+#: qml/Greeter/NarrowView.qml:130
476msgid "Enter passphrase"
480msgid "Enter passphrase"
477msgstr "Wprowadź hasło"
481msgstr "Wprowadź hasło"
478
482
479−#: qml/Greeter/NarrowView.qml:118
483+#: qml/Greeter/NarrowView.qml:131
480msgid "Enter passcode"
484msgid "Enter passcode"
481msgstr "Podaj kod"
485msgstr "Podaj kod"
482
486
483−#: qml/Greeter/NarrowView.qml:119
487+#: qml/Greeter/NarrowView.qml:135
484#, qt-format
488#, qt-format
485msgid "Sorry, incorrect %1"
489msgid "Sorry, incorrect %1"
486msgstr "Niestety niepoprawne %1"
490msgstr "Niestety niepoprawne %1"
487
491
488−#: qml/Greeter/NarrowView.qml:120
492+#: qml/Greeter/NarrowView.qml:136
489msgid "Sorry, incorrect passphrase"
493msgid "Sorry, incorrect passphrase"
490msgstr "Niestety, błędne hasło"
494msgstr "Niestety, błędne hasło"
491
495
492−#: qml/Greeter/NarrowView.qml:121
496+#: qml/Greeter/NarrowView.qml:137
493msgctxt "passphrase"
497msgctxt "passphrase"
494msgid "Please re-enter"
498msgid "Please re-enter"
495msgstr "Wprowadź ponownie"
499msgstr "Wprowadź ponownie"
496
500
497−#: qml/Greeter/NarrowView.qml:122
501+#: qml/Greeter/NarrowView.qml:138
498msgid "Sorry, incorrect passcode"
502msgid "Sorry, incorrect passcode"
499msgstr "Niestety ten kod nie jest poprawny"
503msgstr "Niestety ten kod nie jest poprawny"
500
504
po/pt.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2016-06-20 11:37+0000\n"
11"PO-Revision-Date: 2016-06-20 11:37+0000\n"
12"Last-Translator: Ivo Xavier <ivoxavier.8@gmail.com>\n"
12"Last-Translator: Ivo Xavier <ivoxavier.8@gmail.com>\n"
13"Language-Team: Portuguese <pt@li.org>\n"
13"Language-Team: Portuguese <pt@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-21 05:59+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,23 +35,23 @@ msgstr "Sair"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Remover atalho"
36msgstr "Remover atalho"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Dispositivo bloqueado"
40msgstr "Dispositivo bloqueado"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45"Está bloqueado por diversas tentativas falhadas na introdução da palavra-"
45"Está bloqueado por diversas tentativas falhadas na introdução da palavra-"
46"passe."
46"passe."
47
47
48−#: qml/Components/DelayedLockscreen.qml:65
48+#: qml/Components/DelayedLockscreen.qml:66
49msgid "You have been locked out due to too many failed passcode attempts."
49msgid "You have been locked out due to too many failed passcode attempts."
50msgstr ""
50msgstr ""
51"Está bloqueado por diversas tentativas falhadas na introdução do código de "
51"Está bloqueado por diversas tentativas falhadas na introdução do código de "
52"segurança."
52"segurança."
53
53
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
55#, qt-format
55#, qt-format
56msgid "Please wait %1 minute and then try again…"
56msgid "Please wait %1 minute and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
@@ -283,15 +283,15 @@ msgstr "Alt + F4"
283msgid "Closes the current window."
283msgid "Closes the current window."
284msgstr "Fecha a janela atual."
284msgstr "Fecha a janela atual."
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Return to Call"
287msgid "Return to Call"
288msgstr "Volte para a chamada"
288msgstr "Volte para a chamada"
289
289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291msgid "Emergency Call"
291msgid "Emergency Call"
292msgstr "Chamada de emergência"
292msgstr "Chamada de emergência"
293
293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295msgid "OK"
295msgid "OK"
296msgstr "OK"
296msgstr "OK"
297
297
@@ -431,10 +431,14 @@ msgstr ""
431"O seu dispositivo está agora ligado a um ecrã externo. Use este ecrã como "
431"O seu dispositivo está agora ligado a um ecrã externo. Use este ecrã como "
432"touchpad para mover o ponteiro."
432"touchpad para mover o ponteiro."
433
433
434−#: qml/Greeter/CoverPage.qml:119
434+#: qml/Greeter/CoverPage.qml:127
435msgid "Unlock"
435msgid "Unlock"
436msgstr "Desbloquear"
436msgstr "Desbloquear"
437
437
438+#: qml/Greeter/Greeter.qml:536
439+msgid "Try again"
440+msgstr "Tentar novamente"
441+
438#: qml/Greeter/LoginList.qml:259
442#: qml/Greeter/LoginList.qml:259
439msgid "Retry"
443msgid "Retry"
440msgstr "Tentar novamente"
444msgstr "Tentar novamente"
@@ -471,34 +475,34 @@ msgstr ""
471"Se o código for introduzido incorretamente, todos os dados pessoais serão "
475"Se o código for introduzido incorretamente, todos os dados pessoais serão "
472"eliminados."
476"eliminados."
473
477
474−#: qml/Greeter/NarrowView.qml:116
478+#: qml/Greeter/NarrowView.qml:129
475#, qt-format
479#, qt-format
476msgid "Enter %1"
480msgid "Enter %1"
477msgstr "Introduziu %1"
481msgstr "Introduziu %1"
478
482
479−#: qml/Greeter/NarrowView.qml:117
483+#: qml/Greeter/NarrowView.qml:130
480msgid "Enter passphrase"
484msgid "Enter passphrase"
481msgstr "Introduza a palavra-passe"
485msgstr "Introduza a palavra-passe"
482
486
483−#: qml/Greeter/NarrowView.qml:118
487+#: qml/Greeter/NarrowView.qml:131
484msgid "Enter passcode"
488msgid "Enter passcode"
485msgstr "Introduza o código"
489msgstr "Introduza o código"
486
490
487−#: qml/Greeter/NarrowView.qml:119
491+#: qml/Greeter/NarrowView.qml:135
488#, qt-format
492#, qt-format
489msgid "Sorry, incorrect %1"
493msgid "Sorry, incorrect %1"
490msgstr "Desculpe, %1 incorreto"
494msgstr "Desculpe, %1 incorreto"
491
495
492−#: qml/Greeter/NarrowView.qml:120
496+#: qml/Greeter/NarrowView.qml:136
493msgid "Sorry, incorrect passphrase"
497msgid "Sorry, incorrect passphrase"
494msgstr "Palavra-passe incorreta"
498msgstr "Palavra-passe incorreta"
495
499
496−#: qml/Greeter/NarrowView.qml:121
500+#: qml/Greeter/NarrowView.qml:137
497msgctxt "passphrase"
501msgctxt "passphrase"
498msgid "Please re-enter"
502msgid "Please re-enter"
499msgstr "Por favor, volte a introduzir"
503msgstr "Por favor, volte a introduzir"
500
504
501−#: qml/Greeter/NarrowView.qml:122
505+#: qml/Greeter/NarrowView.qml:138
502msgid "Sorry, incorrect passcode"
506msgid "Sorry, incorrect passcode"
503msgstr "Desculpe, código incorreto"
507msgstr "Desculpe, código incorreto"
504
508
po/pt_BR.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-08-05 04:40+0000\n"
11"PO-Revision-Date: 2015-08-05 04:40+0000\n"
12"Last-Translator: Julio Alexander Sieg <julio.sieg@gmail.com>\n"
12"Last-Translator: Julio Alexander Sieg <julio.sieg@gmail.com>\n"
13"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
13"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,21 +35,21 @@ msgstr "Sair"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Desafixar atalho"
36msgstr "Desafixar atalho"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Dispositivo bloqueado"
40msgstr "Dispositivo bloqueado"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr "Você foi bloqueado por que inseriu uma senha incorreta várias vezes."
44msgstr "Você foi bloqueado por que inseriu uma senha incorreta várias vezes."
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49"Você foi bloqueado por que inseriu um código de acesso incorreto várias "
49"Você foi bloqueado por que inseriu um código de acesso incorreto várias "
50"vezes."
50"vezes."
51
51
52−#: qml/Components/DelayedLockscreen.qml:74
52+#: qml/Components/DelayedLockscreen.qml:75
53#, qt-format
53#, qt-format
54msgid "Please wait %1 minute and then try again…"
54msgid "Please wait %1 minute and then try again…"
55msgid_plural "Please wait %1 minutes and then try again…"
55msgid_plural "Please wait %1 minutes and then try again…"
@@ -281,15 +281,15 @@ msgstr ""
281msgid "Closes the current window."
281msgid "Closes the current window."
282msgstr ""
282msgstr ""
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Return to Call"
285msgid "Return to Call"
286msgstr "Retornar para a chamada"
286msgstr "Retornar para a chamada"
287
287
288−#: qml/Components/Lockscreen.qml:231
288+#: qml/Components/Lockscreen.qml:239
289msgid "Emergency Call"
289msgid "Emergency Call"
290msgstr "Chamada de emergência"
290msgstr "Chamada de emergência"
291
291
292−#: qml/Components/Lockscreen.qml:263
292+#: qml/Components/Lockscreen.qml:271
293msgid "OK"
293msgid "OK"
294msgstr "OK"
294msgstr "OK"
295
295
@@ -426,10 +426,14 @@ msgid ""
426"touch pad to interact with the pointer."
426"touch pad to interact with the pointer."
427msgstr ""
427msgstr ""
428
428
429−#: qml/Greeter/CoverPage.qml:119
429+#: qml/Greeter/CoverPage.qml:127
430msgid "Unlock"
430msgid "Unlock"
431msgstr "Desbloquear"
431msgstr "Desbloquear"
432
432
433+#: qml/Greeter/Greeter.qml:536
434+msgid "Try again"
435+msgstr ""
436+
433#: qml/Greeter/LoginList.qml:259
437#: qml/Greeter/LoginList.qml:259
434msgid "Retry"
438msgid "Retry"
435msgstr "Repetir"
439msgstr "Repetir"
@@ -466,34 +470,34 @@ msgstr ""
466"Se o código de acesso for digitado incorretamente, o telefone será "
470"Se o código de acesso for digitado incorretamente, o telefone será "
467"restaurado aos padrões de fábrica e todos os dados pessoais serão apagados."
471"restaurado aos padrões de fábrica e todos os dados pessoais serão apagados."
468
472
469−#: qml/Greeter/NarrowView.qml:116
473+#: qml/Greeter/NarrowView.qml:129
470#, qt-format
474#, qt-format
471msgid "Enter %1"
475msgid "Enter %1"
472msgstr "Digite %1"
476msgstr "Digite %1"
473
477
474−#: qml/Greeter/NarrowView.qml:117
478+#: qml/Greeter/NarrowView.qml:130
475msgid "Enter passphrase"
479msgid "Enter passphrase"
476msgstr "Digite a frase secreta"
480msgstr "Digite a frase secreta"
477
481
478−#: qml/Greeter/NarrowView.qml:118
482+#: qml/Greeter/NarrowView.qml:131
479msgid "Enter passcode"
483msgid "Enter passcode"
480msgstr "Informe sua senha"
484msgstr "Informe sua senha"
481
485
482−#: qml/Greeter/NarrowView.qml:119
486+#: qml/Greeter/NarrowView.qml:135
483#, qt-format
487#, qt-format
484msgid "Sorry, incorrect %1"
488msgid "Sorry, incorrect %1"
485msgstr "Desculpe, %1 incorreto"
489msgstr "Desculpe, %1 incorreto"
486
490
487−#: qml/Greeter/NarrowView.qml:120
491+#: qml/Greeter/NarrowView.qml:136
488msgid "Sorry, incorrect passphrase"
492msgid "Sorry, incorrect passphrase"
489msgstr "Desculpe, senha incorreta"
493msgstr "Desculpe, senha incorreta"
490
494
491−#: qml/Greeter/NarrowView.qml:121
495+#: qml/Greeter/NarrowView.qml:137
492msgctxt "passphrase"
496msgctxt "passphrase"
493msgid "Please re-enter"
497msgid "Please re-enter"
494msgstr "Por favor, digite novamente"
498msgstr "Por favor, digite novamente"
495
499
496−#: qml/Greeter/NarrowView.qml:122
500+#: qml/Greeter/NarrowView.qml:138
497msgid "Sorry, incorrect passcode"
501msgid "Sorry, incorrect passcode"
498msgstr "Desculpe, senha incorreta"
502msgstr "Desculpe, senha incorreta"
499
503
po/ro.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-07-06 17:47+0000\n"
11"PO-Revision-Date: 2015-07-06 17:47+0000\n"
12"Last-Translator: Meriuță Cornel <meriutacornel@neacornel.eu>\n"
12"Last-Translator: Meriuță Cornel <meriutacornel@neacornel.eu>\n"
13"Language-Team: Romanian <ro@li.org>\n"
13"Language-Team: Romanian <ro@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 "
17"Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 "
18"== 0) && (n != 0))) ? 2: 1));\n"
18"== 0) && (n != 0))) ? 2: 1));\n"
19−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
20−"X-Generator: Launchpad (build 18097)\n"
20+"X-Generator: Launchpad (build 18111)\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -36,22 +36,22 @@ msgstr ""
36msgid "Unpin shortcut"
36msgid "Unpin shortcut"
37msgstr "Eliberează scurtătura"
37msgstr "Eliberează scurtătura"
38
38
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
40msgid "Device Locked"
40msgid "Device Locked"
41msgstr "Dispozitiv blocat"
41msgstr "Dispozitiv blocat"
42
42
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
44msgid "You have been locked out due to too many failed passphrase attempts."
44msgid "You have been locked out due to too many failed passphrase attempts."
45msgstr ""
45msgstr ""
46"Dispozitivul este blocat din cauza utilizării mai multor fraze parolă "
46"Dispozitivul este blocat din cauza utilizării mai multor fraze parolă "
47"greșite."
47"greșite."
48
48
49−#: qml/Components/DelayedLockscreen.qml:65
49+#: qml/Components/DelayedLockscreen.qml:66
50msgid "You have been locked out due to too many failed passcode attempts."
50msgid "You have been locked out due to too many failed passcode attempts."
51msgstr ""
51msgstr ""
52"Dispozitivul este blocat din cauza utilizării mai multor parole greșite."
52"Dispozitivul este blocat din cauza utilizării mai multor parole greșite."
53
53
54−#: qml/Components/DelayedLockscreen.qml:74
54+#: qml/Components/DelayedLockscreen.qml:75
55#, qt-format
55#, qt-format
56msgid "Please wait %1 minute and then try again…"
56msgid "Please wait %1 minute and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
57msgid_plural "Please wait %1 minutes and then try again…"
@@ -284,15 +284,15 @@ msgstr ""
284msgid "Closes the current window."
284msgid "Closes the current window."
285msgstr ""
285msgstr ""
286
286
287−#: qml/Components/Lockscreen.qml:231
287+#: qml/Components/Lockscreen.qml:239
288msgid "Return to Call"
288msgid "Return to Call"
289msgstr "Reveniți la funcția de apelare"
289msgstr "Reveniți la funcția de apelare"
290
290
291−#: qml/Components/Lockscreen.qml:231
291+#: qml/Components/Lockscreen.qml:239
292msgid "Emergency Call"
292msgid "Emergency Call"
293msgstr "Apel de urgență"
293msgstr "Apel de urgență"
294
294
295−#: qml/Components/Lockscreen.qml:263
295+#: qml/Components/Lockscreen.qml:271
296msgid "OK"
296msgid "OK"
297msgstr "În regulă"
297msgstr "În regulă"
298
298
@@ -429,10 +429,14 @@ msgid ""
429"touch pad to interact with the pointer."
429"touch pad to interact with the pointer."
430msgstr ""
430msgstr ""
431
431
432−#: qml/Greeter/CoverPage.qml:119
432+#: qml/Greeter/CoverPage.qml:127
433msgid "Unlock"
433msgid "Unlock"
434msgstr "Deblocare"
434msgstr "Deblocare"
435
435
436+#: qml/Greeter/Greeter.qml:536
437+msgid "Try again"
438+msgstr ""
439+
436#: qml/Greeter/LoginList.qml:259
440#: qml/Greeter/LoginList.qml:259
437msgid "Retry"
441msgid "Retry"
438msgstr "Reîncercați"
442msgstr "Reîncercați"
@@ -471,34 +475,34 @@ msgstr ""
471"configurările inițiale, ale fabricantului, iar toate datele personale vor fi "
475"configurările inițiale, ale fabricantului, iar toate datele personale vor fi "
472"șterse."
476"șterse."
473
477
474−#: qml/Greeter/NarrowView.qml:116
478+#: qml/Greeter/NarrowView.qml:129
475#, qt-format
479#, qt-format
476msgid "Enter %1"
480msgid "Enter %1"
477msgstr "Introducere %1"
481msgstr "Introducere %1"
478
482
479−#: qml/Greeter/NarrowView.qml:117
483+#: qml/Greeter/NarrowView.qml:130
480msgid "Enter passphrase"
484msgid "Enter passphrase"
481msgstr "Introduceți fraza parolă"
485msgstr "Introduceți fraza parolă"
482
486
483−#: qml/Greeter/NarrowView.qml:118
487+#: qml/Greeter/NarrowView.qml:131
484msgid "Enter passcode"
488msgid "Enter passcode"
485msgstr "Introduceți parola"
489msgstr "Introduceți parola"
486
490
487−#: qml/Greeter/NarrowView.qml:119
491+#: qml/Greeter/NarrowView.qml:135
488#, qt-format
492#, qt-format
489msgid "Sorry, incorrect %1"
493msgid "Sorry, incorrect %1"
490msgstr "%1 incorectă"
494msgstr "%1 incorectă"
491
495
492−#: qml/Greeter/NarrowView.qml:120
496+#: qml/Greeter/NarrowView.qml:136
493msgid "Sorry, incorrect passphrase"
497msgid "Sorry, incorrect passphrase"
494msgstr "Frază secretă incorectă"
498msgstr "Frază secretă incorectă"
495
499
496−#: qml/Greeter/NarrowView.qml:121
500+#: qml/Greeter/NarrowView.qml:137
497msgctxt "passphrase"
501msgctxt "passphrase"
498msgid "Please re-enter"
502msgid "Please re-enter"
499msgstr ""
503msgstr ""
500
504
501−#: qml/Greeter/NarrowView.qml:122
505+#: qml/Greeter/NarrowView.qml:138
502msgid "Sorry, incorrect passcode"
506msgid "Sorry, incorrect passcode"
503msgstr "Parolă incorectă"
507msgstr "Parolă incorectă"
504
508
po/ru.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-07-06 05:33+0000\n"
11"PO-Revision-Date: 2015-07-06 05:33+0000\n"
12"Last-Translator: ☠Jay ZDLin☠ <Unknown>\n"
12"Last-Translator: ☠Jay ZDLin☠ <Unknown>\n"
13"Language-Team: Russian <ru@li.org>\n"
13"Language-Team: Russian <ru@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
20−"X-Generator: Launchpad (build 18097)\n"
20+"X-Generator: Launchpad (build 18111)\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -36,23 +36,23 @@ msgstr "Завершить"
36msgid "Unpin shortcut"
36msgid "Unpin shortcut"
37msgstr "Открепить ярлык"
37msgstr "Открепить ярлык"
38
38
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
40msgid "Device Locked"
40msgid "Device Locked"
41msgstr "Устройство заблокировано"
41msgstr "Устройство заблокировано"
42
42
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
44msgid "You have been locked out due to too many failed passphrase attempts."
44msgid "You have been locked out due to too many failed passphrase attempts."
45msgstr ""
45msgstr ""
46"Вы были заблокированы из-за большого количества неудачных попыток ввода "
46"Вы были заблокированы из-за большого количества неудачных попыток ввода "
47"кодовой фразы."
47"кодовой фразы."
48
48
49−#: qml/Components/DelayedLockscreen.qml:65
49+#: qml/Components/DelayedLockscreen.qml:66
50msgid "You have been locked out due to too many failed passcode attempts."
50msgid "You have been locked out due to too many failed passcode attempts."
51msgstr ""
51msgstr ""
52"Вы были заблокированы из-за большого количества неудачных попыток ввода "
52"Вы были заблокированы из-за большого количества неудачных попыток ввода "
53"секретного кода."
53"секретного кода."
54
54
55−#: qml/Components/DelayedLockscreen.qml:74
55+#: qml/Components/DelayedLockscreen.qml:75
56#, qt-format
56#, qt-format
57msgid "Please wait %1 minute and then try again…"
57msgid "Please wait %1 minute and then try again…"
58msgid_plural "Please wait %1 minutes and then try again…"
58msgid_plural "Please wait %1 minutes and then try again…"
@@ -283,15 +283,15 @@ msgstr ""
283msgid "Closes the current window."
283msgid "Closes the current window."
284msgstr ""
284msgstr ""
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Return to Call"
287msgid "Return to Call"
288msgstr "Вернуться к вызову"
288msgstr "Вернуться к вызову"
289
289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291msgid "Emergency Call"
291msgid "Emergency Call"
292msgstr "Экстренный вызов"
292msgstr "Экстренный вызов"
293
293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295msgid "OK"
295msgid "OK"
296msgstr "ОК"
296msgstr "ОК"
297
297
@@ -430,10 +430,14 @@ msgstr ""
430"Ваше устройство подключено к внешнему дисплею. Используйте этот экран как "
430"Ваше устройство подключено к внешнему дисплею. Используйте этот экран как "
431"сенсорную панель для управления указателем."
431"сенсорную панель для управления указателем."
432
432
433−#: qml/Greeter/CoverPage.qml:119
433+#: qml/Greeter/CoverPage.qml:127
434msgid "Unlock"
434msgid "Unlock"
435msgstr "Разблокировать"
435msgstr "Разблокировать"
436
436
437+#: qml/Greeter/Greeter.qml:536
438+msgid "Try again"
439+msgstr ""
440+
437#: qml/Greeter/LoginList.qml:259
441#: qml/Greeter/LoginList.qml:259
438msgid "Retry"
442msgid "Retry"
439msgstr "Повторить"
443msgstr "Повторить"
@@ -470,34 +474,34 @@ msgstr ""
470"Если секретный код будет введен неверно, то телефон вернётся к заводским "
474"Если секретный код будет введен неверно, то телефон вернётся к заводским "
471"настройкам, а все личные данные будут удалены."
475"настройкам, а все личные данные будут удалены."
472
476
473−#: qml/Greeter/NarrowView.qml:116
477+#: qml/Greeter/NarrowView.qml:129
474#, qt-format
478#, qt-format
475msgid "Enter %1"
479msgid "Enter %1"
476msgstr "Введите %1"
480msgstr "Введите %1"
477
481
478−#: qml/Greeter/NarrowView.qml:117
482+#: qml/Greeter/NarrowView.qml:130
479msgid "Enter passphrase"
483msgid "Enter passphrase"
480msgstr "Введите кодовую фразу"
484msgstr "Введите кодовую фразу"
481
485
482−#: qml/Greeter/NarrowView.qml:118
486+#: qml/Greeter/NarrowView.qml:131
483msgid "Enter passcode"
487msgid "Enter passcode"
484msgstr "Введите секретный код"
488msgstr "Введите секретный код"
485
489
486−#: qml/Greeter/NarrowView.qml:119
490+#: qml/Greeter/NarrowView.qml:135
487#, qt-format
491#, qt-format
488msgid "Sorry, incorrect %1"
492msgid "Sorry, incorrect %1"
489msgstr "Некорректный ввод %1"
493msgstr "Некорректный ввод %1"
490
494
491−#: qml/Greeter/NarrowView.qml:120
495+#: qml/Greeter/NarrowView.qml:136
492msgid "Sorry, incorrect passphrase"
496msgid "Sorry, incorrect passphrase"
493msgstr "Введена неверная кодовая фраза"
497msgstr "Введена неверная кодовая фраза"
494
498
495−#: qml/Greeter/NarrowView.qml:121
499+#: qml/Greeter/NarrowView.qml:137
496msgctxt "passphrase"
500msgctxt "passphrase"
497msgid "Please re-enter"
501msgid "Please re-enter"
498msgstr "Повторите ввод"
502msgstr "Повторите ввод"
499
503
500−#: qml/Greeter/NarrowView.qml:122
504+#: qml/Greeter/NarrowView.qml:138
501msgid "Sorry, incorrect passcode"
505msgid "Sorry, incorrect passcode"
502msgstr "Секретный код введён неверно"
506msgstr "Секретный код введён неверно"
503
507
po/shn.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-11-10 12:09+0000\n"
11"PO-Revision-Date: 2015-11-10 12:09+0000\n"
12"Last-Translator: Rockworld <sumoisrock@gmail.com>\n"
12"Last-Translator: Rockworld <sumoisrock@gmail.com>\n"
13"Language-Team: Shan <shn@li.org>\n"
13"Language-Team: Shan <shn@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=(n == 1) ? 0 : 1;\n"
17"Plural-Forms: nplurals=2; plural=(n == 1) ? 0 : 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "ဢိုတ်း"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr ""
36msgstr ""
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr ""
40msgstr ""
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277msgid "Closes the current window."
277msgid "Closes the current window."
278msgstr ""
278msgstr ""
279
279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281msgid "Return to Call"
281msgid "Return to Call"
282msgstr ""
282msgstr ""
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Emergency Call"
285msgid "Emergency Call"
286msgstr ""
286msgstr ""
287
287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289msgid "OK"
289msgid "OK"
290msgstr ""
290msgstr ""
291
291
@@ -422,10 +422,14 @@ msgid ""
422"touch pad to interact with the pointer."
422"touch pad to interact with the pointer."
423msgstr ""
423msgstr ""
424
424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426msgid "Unlock"
426msgid "Unlock"
427msgstr ""
427msgstr ""
428
428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429#: qml/Greeter/LoginList.qml:259
433#: qml/Greeter/LoginList.qml:259
430msgid "Retry"
434msgid "Retry"
431msgstr ""
435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458"and all personal data will be deleted."
462"and all personal data will be deleted."
459msgstr ""
463msgstr ""
460
464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462#, qt-format
466#, qt-format
463msgid "Enter %1"
467msgid "Enter %1"
464msgstr ""
468msgstr ""
465
469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467msgid "Enter passphrase"
471msgid "Enter passphrase"
468msgstr ""
472msgstr ""
469
473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471msgid "Enter passcode"
475msgid "Enter passcode"
472msgstr ""
476msgstr ""
473
477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475#, qt-format
479#, qt-format
476msgid "Sorry, incorrect %1"
480msgid "Sorry, incorrect %1"
477msgstr ""
481msgstr ""
478
482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480msgid "Sorry, incorrect passphrase"
484msgid "Sorry, incorrect passphrase"
481msgstr ""
485msgstr ""
482
486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484msgctxt "passphrase"
488msgctxt "passphrase"
485msgid "Please re-enter"
489msgid "Please re-enter"
486msgstr ""
490msgstr ""
487
491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489msgid "Sorry, incorrect passcode"
493msgid "Sorry, incorrect passcode"
490msgstr ""
494msgstr ""
491
495
po/si.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2013-06-26 22:36+0000\n"
11"PO-Revision-Date: 2013-06-26 22:36+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Sinhalese <si@li.org>\n"
13"Language-Team: Sinhalese <si@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr ""
36msgstr ""
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr ""
40msgstr ""
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr ""
279msgid "Closes the current window."
279msgid "Closes the current window."
280msgstr ""
280msgstr ""
281
281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283msgid "Return to Call"
283msgid "Return to Call"
284msgstr ""
284msgstr ""
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Emergency Call"
287msgid "Emergency Call"
288msgstr "හදිසි ඇමතුම"
288msgstr "හදිසි ඇමතුම"
289
289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291msgid "OK"
291msgid "OK"
292msgstr ""
292msgstr ""
293
293
@@ -424,10 +424,14 @@ msgid ""
424"touch pad to interact with the pointer."
424"touch pad to interact with the pointer."
425msgstr ""
425msgstr ""
426
426
427−#: qml/Greeter/CoverPage.qml:119
427+#: qml/Greeter/CoverPage.qml:127
428msgid "Unlock"
428msgid "Unlock"
429msgstr ""
429msgstr ""
430
430
431+#: qml/Greeter/Greeter.qml:536
432+msgid "Try again"
433+msgstr ""
434+
431#: qml/Greeter/LoginList.qml:259
435#: qml/Greeter/LoginList.qml:259
432msgid "Retry"
436msgid "Retry"
433msgstr ""
437msgstr ""
@@ -460,34 +464,34 @@ msgid ""
460"and all personal data will be deleted."
464"and all personal data will be deleted."
461msgstr ""
465msgstr ""
462
466
463−#: qml/Greeter/NarrowView.qml:116
467+#: qml/Greeter/NarrowView.qml:129
464#, qt-format
468#, qt-format
465msgid "Enter %1"
469msgid "Enter %1"
466msgstr ""
470msgstr ""
467
471
468−#: qml/Greeter/NarrowView.qml:117
472+#: qml/Greeter/NarrowView.qml:130
469msgid "Enter passphrase"
473msgid "Enter passphrase"
470msgstr ""
474msgstr ""
471
475
472−#: qml/Greeter/NarrowView.qml:118
476+#: qml/Greeter/NarrowView.qml:131
473msgid "Enter passcode"
477msgid "Enter passcode"
474msgstr ""
478msgstr ""
475
479
476−#: qml/Greeter/NarrowView.qml:119
480+#: qml/Greeter/NarrowView.qml:135
477#, qt-format
481#, qt-format
478msgid "Sorry, incorrect %1"
482msgid "Sorry, incorrect %1"
479msgstr ""
483msgstr ""
480
484
481−#: qml/Greeter/NarrowView.qml:120
485+#: qml/Greeter/NarrowView.qml:136
482msgid "Sorry, incorrect passphrase"
486msgid "Sorry, incorrect passphrase"
483msgstr ""
487msgstr ""
484
488
485−#: qml/Greeter/NarrowView.qml:121
489+#: qml/Greeter/NarrowView.qml:137
486msgctxt "passphrase"
490msgctxt "passphrase"
487msgid "Please re-enter"
491msgid "Please re-enter"
488msgstr ""
492msgstr ""
489
493
490−#: qml/Greeter/NarrowView.qml:122
494+#: qml/Greeter/NarrowView.qml:138
491msgid "Sorry, incorrect passcode"
495msgid "Sorry, incorrect passcode"
492msgstr ""
496msgstr ""
493
497
po/sk.po+51−47
@@ -7,16 +7,16 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11−"PO-Revision-Date: 2016-05-02 10:43+0000\n"
11+"PO-Revision-Date: 2016-06-27 07:37+0000\n"
12"Last-Translator: P_E_T_O <Unknown>\n"
12"Last-Translator: P_E_T_O <Unknown>\n"
13"Language-Team: Slovak <sk@li.org>\n"
13"Language-Team: Slovak <sk@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
17"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"
18+"X-Launchpad-Export-Date: 2016-06-28 05:41+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18115)\n"
20"Language: sk\n"
20"Language: sk\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -36,23 +36,23 @@ msgstr "Ukončiť"
36msgid "Unpin shortcut"
36msgid "Unpin shortcut"
37msgstr "Odopnúť odkaz"
37msgstr "Odopnúť odkaz"
38
38
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
40msgid "Device Locked"
40msgid "Device Locked"
41msgstr "Zariadenie zamknuté"
41msgstr "Zariadenie zamknuté"
42
42
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
44msgid "You have been locked out due to too many failed passphrase attempts."
44msgid "You have been locked out due to too many failed passphrase attempts."
45msgstr ""
45msgstr ""
46"Boli ste zablokovaný z dôvodu príliš veľkého počtu neúspešných pokusov o "
46"Boli ste zablokovaný z dôvodu príliš veľkého počtu neúspešných pokusov o "
47"prístupovú frázu."
47"prístupovú frázu."
48
48
49−#: qml/Components/DelayedLockscreen.qml:65
49+#: qml/Components/DelayedLockscreen.qml:66
50msgid "You have been locked out due to too many failed passcode attempts."
50msgid "You have been locked out due to too many failed passcode attempts."
51msgstr ""
51msgstr ""
52"Boli ste zablokovaný z dôvodu príliš veľkého počtu neúspešných pokusov o "
52"Boli ste zablokovaný z dôvodu príliš veľkého počtu neúspešných pokusov o "
53"prístupové heslo."
53"prístupové heslo."
54
54
55−#: qml/Components/DelayedLockscreen.qml:74
55+#: qml/Components/DelayedLockscreen.qml:75
56#, qt-format
56#, qt-format
57msgid "Please wait %1 minute and then try again…"
57msgid "Please wait %1 minute and then try again…"
58msgid_plural "Please wait %1 minutes and then try again…"
58msgid_plural "Please wait %1 minutes and then try again…"
@@ -127,59 +127,59 @@ msgstr "Reštartovať"
127
127
128#: qml/Components/KeyboardShortcutsOverlay.qml:41
128#: qml/Components/KeyboardShortcutsOverlay.qml:41
129msgid "Keyboard Shortcuts"
129msgid "Keyboard Shortcuts"
130−msgstr ""
130+msgstr "Klávesové skratky"
131
131
132#: qml/Components/KeyboardShortcutsOverlay.qml:55
132#: qml/Components/KeyboardShortcutsOverlay.qml:55
133msgid "Unity 8"
133msgid "Unity 8"
134−msgstr ""
134+msgstr "Unity 8"
135
135
136#: qml/Components/KeyboardShortcutsOverlay.qml:62
136#: qml/Components/KeyboardShortcutsOverlay.qml:62
137msgid "PrtScr"
137msgid "PrtScr"
138−msgstr ""
138+msgstr "PrtScr"
139
139
140#: qml/Components/KeyboardShortcutsOverlay.qml:67
140#: qml/Components/KeyboardShortcutsOverlay.qml:67
141msgid "Takes a screenshot."
141msgid "Takes a screenshot."
142−msgstr ""
142+msgstr "Vytvorí snímku obrazovky."
143
143
144#: qml/Components/KeyboardShortcutsOverlay.qml:75
144#: qml/Components/KeyboardShortcutsOverlay.qml:75
145msgid "Alt + PrtScr"
145msgid "Alt + PrtScr"
146−msgstr ""
146+msgstr "Alt + PrtScr"
147
147
148#: qml/Components/KeyboardShortcutsOverlay.qml:80
148#: qml/Components/KeyboardShortcutsOverlay.qml:80
149msgid "Takes a screenshot of a window."
149msgid "Takes a screenshot of a window."
150−msgstr ""
150+msgstr "Vytvorí snímku okna."
151
151
152#: qml/Components/KeyboardShortcutsOverlay.qml:88
152#: qml/Components/KeyboardShortcutsOverlay.qml:88
153msgid "Super + Space"
153msgid "Super + Space"
154−msgstr ""
154+msgstr "Super + Space"
155
155
156#: qml/Components/KeyboardShortcutsOverlay.qml:93
156#: qml/Components/KeyboardShortcutsOverlay.qml:93
157msgid "Switches to next keyboard layout."
157msgid "Switches to next keyboard layout."
158−msgstr ""
158+msgstr "Prepne na ďalšie rozloženie klávesnice."
159
159
160#: qml/Components/KeyboardShortcutsOverlay.qml:101
160#: qml/Components/KeyboardShortcutsOverlay.qml:101
161msgid "Super + Shift + Space"
161msgid "Super + Shift + Space"
162−msgstr ""
162+msgstr "Super + Shift + Space"
163
163
164#: qml/Components/KeyboardShortcutsOverlay.qml:106
164#: qml/Components/KeyboardShortcutsOverlay.qml:106
165msgid "Switches to previous keyboard layout."
165msgid "Switches to previous keyboard layout."
166−msgstr ""
166+msgstr "Prepne na predošlé rozloženie klávesnice."
167
167
168#: qml/Components/KeyboardShortcutsOverlay.qml:118
168#: qml/Components/KeyboardShortcutsOverlay.qml:118
169msgid "Launcher"
169msgid "Launcher"
170−msgstr ""
170+msgstr "Launcher"
171
171
172#: qml/Components/KeyboardShortcutsOverlay.qml:125
172#: qml/Components/KeyboardShortcutsOverlay.qml:125
173msgid "Super (Hold)"
173msgid "Super (Hold)"
174−msgstr ""
174+msgstr "Super (Držať)"
175
175
176#: qml/Components/KeyboardShortcutsOverlay.qml:130
176#: qml/Components/KeyboardShortcutsOverlay.qml:130
177msgid "Opens the launcher, displays shortcuts."
177msgid "Opens the launcher, displays shortcuts."
178−msgstr ""
178+msgstr "Otvorí launcher, zobrazí skratky."
179
179
180#: qml/Components/KeyboardShortcutsOverlay.qml:138
180#: qml/Components/KeyboardShortcutsOverlay.qml:138
181msgid "Alt + F1"
181msgid "Alt + F1"
182−msgstr ""
182+msgstr "Alt + F1"
183
183
184#: qml/Components/KeyboardShortcutsOverlay.qml:143
184#: qml/Components/KeyboardShortcutsOverlay.qml:143
185msgid "Opens launcher keyboard navigation mode."
185msgid "Opens launcher keyboard navigation mode."
@@ -187,55 +187,55 @@ msgstr ""
187
187
188#: qml/Components/KeyboardShortcutsOverlay.qml:151
188#: qml/Components/KeyboardShortcutsOverlay.qml:151
189msgid "Super + Tab"
189msgid "Super + Tab"
190−msgstr ""
190+msgstr "Super + Tab"
191
191
192#: qml/Components/KeyboardShortcutsOverlay.qml:156
192#: qml/Components/KeyboardShortcutsOverlay.qml:156
193msgid "Switches applications via the launcher."
193msgid "Switches applications via the launcher."
194−msgstr ""
194+msgstr "Prepínanie aplikácií pomocou launchera."
195
195
196#: qml/Components/KeyboardShortcutsOverlay.qml:164
196#: qml/Components/KeyboardShortcutsOverlay.qml:164
197msgid "Super + 0 to 9"
197msgid "Super + 0 to 9"
198−msgstr ""
198+msgstr "Super + 0 do 9"
199
199
200#: qml/Components/KeyboardShortcutsOverlay.qml:169
200#: qml/Components/KeyboardShortcutsOverlay.qml:169
201msgid "Same as clicking on a launcher icon."
201msgid "Same as clicking on a launcher icon."
202−msgstr ""
202+msgstr "Rovnaké ako kliknutie na ikonu v launchery."
203
203
204#: qml/Components/KeyboardShortcutsOverlay.qml:181
204#: qml/Components/KeyboardShortcutsOverlay.qml:181
205msgid "Scopes"
205msgid "Scopes"
206−msgstr ""
206+msgstr "Scopes"
207
207
208#: qml/Components/KeyboardShortcutsOverlay.qml:188
208#: qml/Components/KeyboardShortcutsOverlay.qml:188
209msgid "Super (Tap)"
209msgid "Super (Tap)"
210−msgstr ""
210+msgstr "Super (Klik)"
211
211
212#: qml/Components/KeyboardShortcutsOverlay.qml:193
212#: qml/Components/KeyboardShortcutsOverlay.qml:193
213msgid "Opens the Scopes home."
213msgid "Opens the Scopes home."
214−msgstr ""
214+msgstr "Otvorí Scopes."
215
215
216#: qml/Components/KeyboardShortcutsOverlay.qml:209
216#: qml/Components/KeyboardShortcutsOverlay.qml:209
217msgid "Switching"
217msgid "Switching"
218−msgstr ""
218+msgstr "Prepínanie"
219
219
220#: qml/Components/KeyboardShortcutsOverlay.qml:216
220#: qml/Components/KeyboardShortcutsOverlay.qml:216
221msgid "Alt + Tab"
221msgid "Alt + Tab"
222−msgstr ""
222+msgstr "Alt + Tab"
223
223
224#: qml/Components/KeyboardShortcutsOverlay.qml:221
224#: qml/Components/KeyboardShortcutsOverlay.qml:221
225msgid "Switches between applications."
225msgid "Switches between applications."
226−msgstr ""
226+msgstr "Prepínanie medzi aplikáciami."
227
227
228#: qml/Components/KeyboardShortcutsOverlay.qml:229
228#: qml/Components/KeyboardShortcutsOverlay.qml:229
229msgid "Super + W"
229msgid "Super + W"
230−msgstr ""
230+msgstr "Super + W"
231
231
232#: qml/Components/KeyboardShortcutsOverlay.qml:234
232#: qml/Components/KeyboardShortcutsOverlay.qml:234
233msgid "Opens the desktop spread."
233msgid "Opens the desktop spread."
234−msgstr ""
234+msgstr "Otvorí rozloženie obrazoviek."
235
235
236#: qml/Components/KeyboardShortcutsOverlay.qml:242
236#: qml/Components/KeyboardShortcutsOverlay.qml:242
237msgid "Cursor Left or Right"
237msgid "Cursor Left or Right"
238−msgstr ""
238+msgstr "Ľavý alebo pravý kurzorový kláves"
239
239
240#: qml/Components/KeyboardShortcutsOverlay.qml:247
240#: qml/Components/KeyboardShortcutsOverlay.qml:247
241msgid "Moves the focus."
241msgid "Moves the focus."
@@ -243,7 +243,7 @@ msgstr ""
243
243
244#: qml/Components/KeyboardShortcutsOverlay.qml:259
244#: qml/Components/KeyboardShortcutsOverlay.qml:259
245msgid "Windows"
245msgid "Windows"
246−msgstr ""
246+msgstr "Okná"
247
247
248#: qml/Components/KeyboardShortcutsOverlay.qml:266
248#: qml/Components/KeyboardShortcutsOverlay.qml:266
249msgid "Ctrl + Super + D"
249msgid "Ctrl + Super + D"
@@ -285,15 +285,15 @@ msgstr ""
285msgid "Closes the current window."
285msgid "Closes the current window."
286msgstr ""
286msgstr ""
287
287
288−#: qml/Components/Lockscreen.qml:231
288+#: qml/Components/Lockscreen.qml:239
289msgid "Return to Call"
289msgid "Return to Call"
290msgstr "Návrat k hovoru"
290msgstr "Návrat k hovoru"
291
291
292−#: qml/Components/Lockscreen.qml:231
292+#: qml/Components/Lockscreen.qml:239
293msgid "Emergency Call"
293msgid "Emergency Call"
294msgstr "Tiesňový hovor"
294msgstr "Tiesňový hovor"
295
295
296−#: qml/Components/Lockscreen.qml:263
296+#: qml/Components/Lockscreen.qml:271
297msgid "OK"
297msgid "OK"
298msgstr "OK"
298msgstr "OK"
299
299
@@ -433,10 +433,14 @@ msgstr ""
433"Zariadenie je pripojené k externému displeju. Táto obrazovka slúži ako "
433"Zariadenie je pripojené k externému displeju. Táto obrazovka slúži ako "
434"dotyková plocha pre interakciu s ukazovateľom."
434"dotyková plocha pre interakciu s ukazovateľom."
435
435
436−#: qml/Greeter/CoverPage.qml:119
436+#: qml/Greeter/CoverPage.qml:127
437msgid "Unlock"
437msgid "Unlock"
438msgstr "Odomknúť"
438msgstr "Odomknúť"
439
439
440+#: qml/Greeter/Greeter.qml:536
441+msgid "Try again"
442+msgstr ""
443+
440#: qml/Greeter/LoginList.qml:259
444#: qml/Greeter/LoginList.qml:259
441msgid "Retry"
445msgid "Retry"
442msgstr "Skúsiť znova"
446msgstr "Skúsiť znova"
@@ -473,34 +477,34 @@ msgstr ""
473"Ak bude zle zadané heslo, váš telefón vykoná továrenský reset a všetky "
477"Ak bude zle zadané heslo, váš telefón vykoná továrenský reset a všetky "
474"osobné údaje budú vymazané."
478"osobné údaje budú vymazané."
475
479
476−#: qml/Greeter/NarrowView.qml:116
480+#: qml/Greeter/NarrowView.qml:129
477#, qt-format
481#, qt-format
478msgid "Enter %1"
482msgid "Enter %1"
479msgstr "Zadajte %1"
483msgstr "Zadajte %1"
480
484
481−#: qml/Greeter/NarrowView.qml:117
485+#: qml/Greeter/NarrowView.qml:130
482msgid "Enter passphrase"
486msgid "Enter passphrase"
483msgstr "Zadajte prístupovú frázu"
487msgstr "Zadajte prístupovú frázu"
484
488
485−#: qml/Greeter/NarrowView.qml:118
489+#: qml/Greeter/NarrowView.qml:131
486msgid "Enter passcode"
490msgid "Enter passcode"
487msgstr "Zadajte heslo"
491msgstr "Zadajte heslo"
488
492
489−#: qml/Greeter/NarrowView.qml:119
493+#: qml/Greeter/NarrowView.qml:135
490#, qt-format
494#, qt-format
491msgid "Sorry, incorrect %1"
495msgid "Sorry, incorrect %1"
492msgstr "Prepáčte, nesprávne %1"
496msgstr "Prepáčte, nesprávne %1"
493
497
494−#: qml/Greeter/NarrowView.qml:120
498+#: qml/Greeter/NarrowView.qml:136
495msgid "Sorry, incorrect passphrase"
499msgid "Sorry, incorrect passphrase"
496msgstr "Prepáčte, nesprávna prístupová fráza"
500msgstr "Prepáčte, nesprávna prístupová fráza"
497
501
498−#: qml/Greeter/NarrowView.qml:121
502+#: qml/Greeter/NarrowView.qml:137
499msgctxt "passphrase"
503msgctxt "passphrase"
500msgid "Please re-enter"
504msgid "Please re-enter"
501msgstr "Zadajte znova"
505msgstr "Zadajte znova"
502
506
503−#: qml/Greeter/NarrowView.qml:122
507+#: qml/Greeter/NarrowView.qml:138
504msgid "Sorry, incorrect passcode"
508msgid "Sorry, incorrect passcode"
505msgstr "Prepáčte, nesprávne heslo"
509msgstr "Prepáčte, nesprávne heslo"
506
510
po/sl.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2016-01-31 18:34+0000\n"
11"PO-Revision-Date: 2016-01-31 18:34+0000\n"
12"Last-Translator: Bernard Banko <Unknown>\n"
12"Last-Translator: Bernard Banko <Unknown>\n"
13"Language-Team: Slovenian <sl@li.org>\n"
13"Language-Team: Slovenian <sl@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || "
17"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || "
18"n%100==4 ? 3 : 0);\n"
18"n%100==4 ? 3 : 0);\n"
19−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
20−"X-Generator: Launchpad (build 18097)\n"
20+"X-Generator: Launchpad (build 18111)\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -36,19 +36,19 @@ msgstr "Končaj"
36msgid "Unpin shortcut"
36msgid "Unpin shortcut"
37msgstr "Odpni bližnjico"
37msgstr "Odpni bližnjico"
38
38
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
40msgid "Device Locked"
40msgid "Device Locked"
41msgstr "Naprava je zaklenjena"
41msgstr "Naprava je zaklenjena"
42
42
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
44msgid "You have been locked out due to too many failed passphrase attempts."
44msgid "You have been locked out due to too many failed passphrase attempts."
45msgstr "Telefon ste zaklenili zaradi preveč napačnih vnosov gesla."
45msgstr "Telefon ste zaklenili zaradi preveč napačnih vnosov gesla."
46
46
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
48msgid "You have been locked out due to too many failed passcode attempts."
48msgid "You have been locked out due to too many failed passcode attempts."
49msgstr "Telefon ste zaklenili zaradi preveč napačnih vnosov gesla."
49msgstr "Telefon ste zaklenili zaradi preveč napačnih vnosov gesla."
50
50
51−#: qml/Components/DelayedLockscreen.qml:74
51+#: qml/Components/DelayedLockscreen.qml:75
52#, qt-format
52#, qt-format
53msgid "Please wait %1 minute and then try again…"
53msgid "Please wait %1 minute and then try again…"
54msgid_plural "Please wait %1 minutes and then try again…"
54msgid_plural "Please wait %1 minutes and then try again…"
@@ -282,15 +282,15 @@ msgstr ""
282msgid "Closes the current window."
282msgid "Closes the current window."
283msgstr ""
283msgstr ""
284
284
285−#: qml/Components/Lockscreen.qml:231
285+#: qml/Components/Lockscreen.qml:239
286msgid "Return to Call"
286msgid "Return to Call"
287msgstr "Vrni se h klicu"
287msgstr "Vrni se h klicu"
288
288
289−#: qml/Components/Lockscreen.qml:231
289+#: qml/Components/Lockscreen.qml:239
290msgid "Emergency Call"
290msgid "Emergency Call"
291msgstr "Klic v sili"
291msgstr "Klic v sili"
292
292
293−#: qml/Components/Lockscreen.qml:263
293+#: qml/Components/Lockscreen.qml:271
294msgid "OK"
294msgid "OK"
295msgstr "V redu"
295msgstr "V redu"
296
296
@@ -431,10 +431,14 @@ msgstr ""
431"Vaša naprava je sedaj priključena na zunanji zaslon. S tem zaslonom pa lahko "
431"Vaša naprava je sedaj priključena na zunanji zaslon. S tem zaslonom pa lahko "
432"upravljate kazalko, kot da bi imeli sledilno ploščico."
432"upravljate kazalko, kot da bi imeli sledilno ploščico."
433
433
434−#: qml/Greeter/CoverPage.qml:119
434+#: qml/Greeter/CoverPage.qml:127
435msgid "Unlock"
435msgid "Unlock"
436msgstr "Odkleni"
436msgstr "Odkleni"
437
437
438+#: qml/Greeter/Greeter.qml:536
439+msgid "Try again"
440+msgstr ""
441+
438#: qml/Greeter/LoginList.qml:259
442#: qml/Greeter/LoginList.qml:259
439msgid "Retry"
443msgid "Retry"
440msgstr "Poskusi znova"
444msgstr "Poskusi znova"
@@ -471,34 +475,34 @@ msgstr ""
471"Če je vneseno nepravilno geslo, bo telefon ponastavljen na tovarniške "
475"Če je vneseno nepravilno geslo, bo telefon ponastavljen na tovarniške "
472"nastavitve ter vsi osebni podatki bodo izbrisani."
476"nastavitve ter vsi osebni podatki bodo izbrisani."
473
477
474−#: qml/Greeter/NarrowView.qml:116
478+#: qml/Greeter/NarrowView.qml:129
475#, qt-format
479#, qt-format
476msgid "Enter %1"
480msgid "Enter %1"
477msgstr "Vnesite %1"
481msgstr "Vnesite %1"
478
482
479−#: qml/Greeter/NarrowView.qml:117
483+#: qml/Greeter/NarrowView.qml:130
480msgid "Enter passphrase"
484msgid "Enter passphrase"
481msgstr "Vnesite šifrirno reklo"
485msgstr "Vnesite šifrirno reklo"
482
486
483−#: qml/Greeter/NarrowView.qml:118
487+#: qml/Greeter/NarrowView.qml:131
484msgid "Enter passcode"
488msgid "Enter passcode"
485msgstr "Vnesite geslo"
489msgstr "Vnesite geslo"
486
490
487−#: qml/Greeter/NarrowView.qml:119
491+#: qml/Greeter/NarrowView.qml:135
488#, qt-format
492#, qt-format
489msgid "Sorry, incorrect %1"
493msgid "Sorry, incorrect %1"
490msgstr "Oprostite, napačen %1"
494msgstr "Oprostite, napačen %1"
491
495
492−#: qml/Greeter/NarrowView.qml:120
496+#: qml/Greeter/NarrowView.qml:136
493msgid "Sorry, incorrect passphrase"
497msgid "Sorry, incorrect passphrase"
494msgstr "Oprostite, napačno šifrirno reklo"
498msgstr "Oprostite, napačno šifrirno reklo"
495
499
496−#: qml/Greeter/NarrowView.qml:121
500+#: qml/Greeter/NarrowView.qml:137
497msgctxt "passphrase"
501msgctxt "passphrase"
498msgid "Please re-enter"
502msgid "Please re-enter"
499msgstr "Ponovno vnesite"
503msgstr "Ponovno vnesite"
500
504
501−#: qml/Greeter/NarrowView.qml:122
505+#: qml/Greeter/NarrowView.qml:138
502msgid "Sorry, incorrect passcode"
506msgid "Sorry, incorrect passcode"
503msgstr "Nepravilno geslo"
507msgstr "Nepravilno geslo"
504
508
po/sq.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2016-04-21 06:03+0000\n"
11"PO-Revision-Date: 2016-04-21 06:03+0000\n"
12"Last-Translator: Indrit Bashkimi <indrit.bashkimi@gmail.com>\n"
12"Last-Translator: Indrit Bashkimi <indrit.bashkimi@gmail.com>\n"
13"Language-Team: sq\n"
13"Language-Team: sq\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:54+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:00+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20"Language: sq\n"
20"Language: sq\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -36,19 +36,19 @@ msgstr "Dil"
36msgid "Unpin shortcut"
36msgid "Unpin shortcut"
37msgstr ""
37msgstr ""
38
38
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
40msgid "Device Locked"
40msgid "Device Locked"
41msgstr "Pajisje e bllokuar"
41msgstr "Pajisje e bllokuar"
42
42
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
44msgid "You have been locked out due to too many failed passphrase attempts."
44msgid "You have been locked out due to too many failed passphrase attempts."
45msgstr ""
45msgstr ""
46
46
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
48msgid "You have been locked out due to too many failed passcode attempts."
48msgid "You have been locked out due to too many failed passcode attempts."
49msgstr ""
49msgstr ""
50
50
51−#: qml/Components/DelayedLockscreen.qml:74
51+#: qml/Components/DelayedLockscreen.qml:75
52#, qt-format
52#, qt-format
53msgid "Please wait %1 minute and then try again…"
53msgid "Please wait %1 minute and then try again…"
54msgid_plural "Please wait %1 minutes and then try again…"
54msgid_plural "Please wait %1 minutes and then try again…"
@@ -278,15 +278,15 @@ msgstr ""
278msgid "Closes the current window."
278msgid "Closes the current window."
279msgstr ""
279msgstr ""
280
280
281−#: qml/Components/Lockscreen.qml:231
281+#: qml/Components/Lockscreen.qml:239
282msgid "Return to Call"
282msgid "Return to Call"
283msgstr "Kthehu tek thirrja"
283msgstr "Kthehu tek thirrja"
284
284
285−#: qml/Components/Lockscreen.qml:231
285+#: qml/Components/Lockscreen.qml:239
286msgid "Emergency Call"
286msgid "Emergency Call"
287msgstr "Thirrje emergjence"
287msgstr "Thirrje emergjence"
288
288
289−#: qml/Components/Lockscreen.qml:263
289+#: qml/Components/Lockscreen.qml:271
290msgid "OK"
290msgid "OK"
291msgstr "OK"
291msgstr "OK"
292
292
@@ -423,10 +423,14 @@ msgid ""
423"touch pad to interact with the pointer."
423"touch pad to interact with the pointer."
424msgstr ""
424msgstr ""
425
425
426−#: qml/Greeter/CoverPage.qml:119
426+#: qml/Greeter/CoverPage.qml:127
427msgid "Unlock"
427msgid "Unlock"
428msgstr "Zhblloko"
428msgstr "Zhblloko"
429
429
430+#: qml/Greeter/Greeter.qml:536
431+msgid "Try again"
432+msgstr ""
433+
430#: qml/Greeter/LoginList.qml:259
434#: qml/Greeter/LoginList.qml:259
431msgid "Retry"
435msgid "Retry"
432msgstr "Riprovo"
436msgstr "Riprovo"
@@ -459,34 +463,34 @@ msgid ""
459"and all personal data will be deleted."
463"and all personal data will be deleted."
460msgstr ""
464msgstr ""
461
465
462−#: qml/Greeter/NarrowView.qml:116
466+#: qml/Greeter/NarrowView.qml:129
463#, qt-format
467#, qt-format
464msgid "Enter %1"
468msgid "Enter %1"
465msgstr "Shkruaj %1"
469msgstr "Shkruaj %1"
466
470
467−#: qml/Greeter/NarrowView.qml:117
471+#: qml/Greeter/NarrowView.qml:130
468msgid "Enter passphrase"
472msgid "Enter passphrase"
469msgstr ""
473msgstr ""
470
474
471−#: qml/Greeter/NarrowView.qml:118
475+#: qml/Greeter/NarrowView.qml:131
472msgid "Enter passcode"
476msgid "Enter passcode"
473msgstr ""
477msgstr ""
474
478
475−#: qml/Greeter/NarrowView.qml:119
479+#: qml/Greeter/NarrowView.qml:135
476#, qt-format
480#, qt-format
477msgid "Sorry, incorrect %1"
481msgid "Sorry, incorrect %1"
478msgstr "%1 e pasaktë"
482msgstr "%1 e pasaktë"
479
483
480−#: qml/Greeter/NarrowView.qml:120
484+#: qml/Greeter/NarrowView.qml:136
481msgid "Sorry, incorrect passphrase"
485msgid "Sorry, incorrect passphrase"
482msgstr ""
486msgstr ""
483
487
484−#: qml/Greeter/NarrowView.qml:121
488+#: qml/Greeter/NarrowView.qml:137
485msgctxt "passphrase"
489msgctxt "passphrase"
486msgid "Please re-enter"
490msgid "Please re-enter"
487msgstr "Shkruani përsëri"
491msgstr "Shkruani përsëri"
488
492
489−#: qml/Greeter/NarrowView.qml:122
493+#: qml/Greeter/NarrowView.qml:138
490msgid "Sorry, incorrect passcode"
494msgid "Sorry, incorrect passcode"
491msgstr ""
495msgstr ""
492
496
po/sr.po+22−18
@@ -8,7 +8,7 @@ msgid ""
8msgstr ""
8msgstr ""
9"Project-Id-Version: unity\n"
9"Project-Id-Version: unity\n"
10"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
11+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
12"PO-Revision-Date: 2016-05-04 19:50+0000\n"
12"PO-Revision-Date: 2016-05-04 19:50+0000\n"
13"Last-Translator: Bojan Bogdanović <Unknown>\n"
13"Last-Translator: Bojan Bogdanović <Unknown>\n"
14"Language-Team: српски <xfce4@xfce4.org>\n"
14"Language-Team: српски <xfce4@xfce4.org>\n"
@@ -17,8 +17,8 @@ msgstr ""
17"Content-Transfer-Encoding: 8bit\n"
17"Content-Transfer-Encoding: 8bit\n"
18"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
19"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
20−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
20+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
21−"X-Generator: Launchpad (build 18097)\n"
21+"X-Generator: Launchpad (build 18111)\n"
22"Language: sr\n"
22"Language: sr\n"
23
23
24#: plugins/IntegratedLightDM/Greeter.cpp:112
24#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -38,19 +38,19 @@ msgstr "Напусти"
38msgid "Unpin shortcut"
38msgid "Unpin shortcut"
39msgstr "Откачи пречицу"
39msgstr "Откачи пречицу"
40
40
41−#: qml/Components/DelayedLockscreen.qml:49
41+#: qml/Components/DelayedLockscreen.qml:50
42msgid "Device Locked"
42msgid "Device Locked"
43msgstr "Уређај је закључан"
43msgstr "Уређај је закључан"
44
44
45−#: qml/Components/DelayedLockscreen.qml:64
45+#: qml/Components/DelayedLockscreen.qml:65
46msgid "You have been locked out due to too many failed passphrase attempts."
46msgid "You have been locked out due to too many failed passphrase attempts."
47msgstr "Закључано је због превише погрешних покушаја уноса приступне фразе."
47msgstr "Закључано је због превише погрешних покушаја уноса приступне фразе."
48
48
49−#: qml/Components/DelayedLockscreen.qml:65
49+#: qml/Components/DelayedLockscreen.qml:66
50msgid "You have been locked out due to too many failed passcode attempts."
50msgid "You have been locked out due to too many failed passcode attempts."
51msgstr "Закључано је због превише погрешних покушаја уноса приступног кода."
51msgstr "Закључано је због превише погрешних покушаја уноса приступног кода."
52
52
53−#: qml/Components/DelayedLockscreen.qml:74
53+#: qml/Components/DelayedLockscreen.qml:75
54#, qt-format
54#, qt-format
55msgid "Please wait %1 minute and then try again…"
55msgid "Please wait %1 minute and then try again…"
56msgid_plural "Please wait %1 minutes and then try again…"
56msgid_plural "Please wait %1 minutes and then try again…"
@@ -283,15 +283,15 @@ msgstr ""
283msgid "Closes the current window."
283msgid "Closes the current window."
284msgstr ""
284msgstr ""
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Return to Call"
287msgid "Return to Call"
288msgstr "Врати се на позив"
288msgstr "Врати се на позив"
289
289
290−#: qml/Components/Lockscreen.qml:231
290+#: qml/Components/Lockscreen.qml:239
291msgid "Emergency Call"
291msgid "Emergency Call"
292msgstr "Хитан позив"
292msgstr "Хитан позив"
293
293
294−#: qml/Components/Lockscreen.qml:263
294+#: qml/Components/Lockscreen.qml:271
295msgid "OK"
295msgid "OK"
296msgstr "У реду"
296msgstr "У реду"
297
297
@@ -430,10 +430,14 @@ msgstr ""
430"Ваш уређај је сада повезан на спољни монитор. користите овај екран као "
430"Ваш уређај је сада повезан на спољни монитор. користите овај екран као "
431"додирну плочицу да покрећете показивач."
431"додирну плочицу да покрећете показивач."
432
432
433−#: qml/Greeter/CoverPage.qml:119
433+#: qml/Greeter/CoverPage.qml:127
434msgid "Unlock"
434msgid "Unlock"
435msgstr "Откључај"
435msgstr "Откључај"
436
436
437+#: qml/Greeter/Greeter.qml:536
438+msgid "Try again"
439+msgstr ""
440+
437#: qml/Greeter/LoginList.qml:259
441#: qml/Greeter/LoginList.qml:259
438msgid "Retry"
442msgid "Retry"
439msgstr "Покушај поново"
443msgstr "Покушај поново"
@@ -470,34 +474,34 @@ msgstr ""
470"Ако се унесе погрешан приступни код, ваш телефон ће се вратити на фабричка "
474"Ако се унесе погрешан приступни код, ваш телефон ће се вратити на фабричка "
471"подешавања и сви лични подаци биће обрисани."
475"подешавања и сви лични подаци биће обрисани."
472
476
473−#: qml/Greeter/NarrowView.qml:116
477+#: qml/Greeter/NarrowView.qml:129
474#, qt-format
478#, qt-format
475msgid "Enter %1"
479msgid "Enter %1"
476msgstr "Унеси %1"
480msgstr "Унеси %1"
477
481
478−#: qml/Greeter/NarrowView.qml:117
482+#: qml/Greeter/NarrowView.qml:130
479msgid "Enter passphrase"
483msgid "Enter passphrase"
480msgstr "Унесите приступну фразу"
484msgstr "Унесите приступну фразу"
481
485
482−#: qml/Greeter/NarrowView.qml:118
486+#: qml/Greeter/NarrowView.qml:131
483msgid "Enter passcode"
487msgid "Enter passcode"
484msgstr "Унесите приступни код"
488msgstr "Унесите приступни код"
485
489
486−#: qml/Greeter/NarrowView.qml:119
490+#: qml/Greeter/NarrowView.qml:135
487#, qt-format
491#, qt-format
488msgid "Sorry, incorrect %1"
492msgid "Sorry, incorrect %1"
489msgstr "Извините, погрешан %1"
493msgstr "Извините, погрешан %1"
490
494
491−#: qml/Greeter/NarrowView.qml:120
495+#: qml/Greeter/NarrowView.qml:136
492msgid "Sorry, incorrect passphrase"
496msgid "Sorry, incorrect passphrase"
493msgstr "Извините, погрешна приступна фраза"
497msgstr "Извините, погрешна приступна фраза"
494
498
495−#: qml/Greeter/NarrowView.qml:121
499+#: qml/Greeter/NarrowView.qml:137
496msgctxt "passphrase"
500msgctxt "passphrase"
497msgid "Please re-enter"
501msgid "Please re-enter"
498msgstr "Поново унесите"
502msgstr "Поново унесите"
499
503
500−#: qml/Greeter/NarrowView.qml:122
504+#: qml/Greeter/NarrowView.qml:138
501msgid "Sorry, incorrect passcode"
505msgid "Sorry, incorrect passcode"
502msgstr "Извините, погрешан приступни код"
506msgstr "Извините, погрешан приступни код"
503
507
po/sv.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2016-06-19 19:31+0000\n"
11"PO-Revision-Date: 2016-06-19 19:31+0000\n"
12"Last-Translator: Josef Andersson <Unknown>\n"
12"Last-Translator: Josef Andersson <Unknown>\n"
13"Language-Team: Swedish\n"
13"Language-Team: Swedish\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-20 06:12+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20"Language: sv\n"
20"Language: sv\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -36,19 +36,19 @@ msgstr "Avsluta"
36msgid "Unpin shortcut"
36msgid "Unpin shortcut"
37msgstr "Släpp genväg"
37msgstr "Släpp genväg"
38
38
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
40msgid "Device Locked"
40msgid "Device Locked"
41msgstr "Enhet låst"
41msgstr "Enhet låst"
42
42
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
44msgid "You have been locked out due to too many failed passphrase attempts."
44msgid "You have been locked out due to too many failed passphrase attempts."
45msgstr "Du har blivit utlåst efter för många misslyckade lösenfrasförsök."
45msgstr "Du har blivit utlåst efter för många misslyckade lösenfrasförsök."
46
46
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
48msgid "You have been locked out due to too many failed passcode attempts."
48msgid "You have been locked out due to too many failed passcode attempts."
49msgstr "Du har blivit utlåst efter för många misslyckade lösenkodsförsök."
49msgstr "Du har blivit utlåst efter för många misslyckade lösenkodsförsök."
50
50
51−#: qml/Components/DelayedLockscreen.qml:74
51+#: qml/Components/DelayedLockscreen.qml:75
52#, qt-format
52#, qt-format
53msgid "Please wait %1 minute and then try again…"
53msgid "Please wait %1 minute and then try again…"
54msgid_plural "Please wait %1 minutes and then try again…"
54msgid_plural "Please wait %1 minutes and then try again…"
@@ -280,15 +280,15 @@ msgstr "Alt + F4"
280msgid "Closes the current window."
280msgid "Closes the current window."
281msgstr "Stänger det aktuella fönstret."
281msgstr "Stänger det aktuella fönstret."
282
282
283−#: qml/Components/Lockscreen.qml:231
283+#: qml/Components/Lockscreen.qml:239
284msgid "Return to Call"
284msgid "Return to Call"
285msgstr "Tillbaka till samtal"
285msgstr "Tillbaka till samtal"
286
286
287−#: qml/Components/Lockscreen.qml:231
287+#: qml/Components/Lockscreen.qml:239
288msgid "Emergency Call"
288msgid "Emergency Call"
289msgstr "Nödsamtal"
289msgstr "Nödsamtal"
290
290
291−#: qml/Components/Lockscreen.qml:263
291+#: qml/Components/Lockscreen.qml:271
292msgid "OK"
292msgid "OK"
293msgstr "OK"
293msgstr "OK"
294
294
@@ -428,10 +428,14 @@ msgstr ""
428"Din enhet är nu ansluten till en extern display. Använd denna skärm som en "
428"Din enhet är nu ansluten till en extern display. Använd denna skärm som en "
429"styrplatta för att interagera med pekaren."
429"styrplatta för att interagera med pekaren."
430
430
431−#: qml/Greeter/CoverPage.qml:119
431+#: qml/Greeter/CoverPage.qml:127
432msgid "Unlock"
432msgid "Unlock"
433msgstr "Lås upp"
433msgstr "Lås upp"
434
434
435+#: qml/Greeter/Greeter.qml:536
436+msgid "Try again"
437+msgstr ""
438+
435#: qml/Greeter/LoginList.qml:259
439#: qml/Greeter/LoginList.qml:259
436msgid "Retry"
440msgid "Retry"
437msgstr "Försök igen"
441msgstr "Försök igen"
@@ -468,34 +472,34 @@ msgstr ""
468"Om lösenkoden anges felaktigt kommer telefonen att fabrikåterställas och all "
472"Om lösenkoden anges felaktigt kommer telefonen att fabrikåterställas och all "
469"personlig data kommer att tas bort."
473"personlig data kommer att tas bort."
470
474
471−#: qml/Greeter/NarrowView.qml:116
475+#: qml/Greeter/NarrowView.qml:129
472#, qt-format
476#, qt-format
473msgid "Enter %1"
477msgid "Enter %1"
474msgstr "Ange %1"
478msgstr "Ange %1"
475
479
476−#: qml/Greeter/NarrowView.qml:117
480+#: qml/Greeter/NarrowView.qml:130
477msgid "Enter passphrase"
481msgid "Enter passphrase"
478msgstr "Ange lösenfras"
482msgstr "Ange lösenfras"
479
483
480−#: qml/Greeter/NarrowView.qml:118
484+#: qml/Greeter/NarrowView.qml:131
481msgid "Enter passcode"
485msgid "Enter passcode"
482msgstr "Ange lösenkod"
486msgstr "Ange lösenkod"
483
487
484−#: qml/Greeter/NarrowView.qml:119
488+#: qml/Greeter/NarrowView.qml:135
485#, qt-format
489#, qt-format
486msgid "Sorry, incorrect %1"
490msgid "Sorry, incorrect %1"
487msgstr "Felaktig %1"
491msgstr "Felaktig %1"
488
492
489−#: qml/Greeter/NarrowView.qml:120
493+#: qml/Greeter/NarrowView.qml:136
490msgid "Sorry, incorrect passphrase"
494msgid "Sorry, incorrect passphrase"
491msgstr "Felaktig lösenfras"
495msgstr "Felaktig lösenfras"
492
496
493−#: qml/Greeter/NarrowView.qml:121
497+#: qml/Greeter/NarrowView.qml:137
494msgctxt "passphrase"
498msgctxt "passphrase"
495msgid "Please re-enter"
499msgid "Please re-enter"
496msgstr "Ange igen"
500msgstr "Ange igen"
497
501
498−#: qml/Greeter/NarrowView.qml:122
502+#: qml/Greeter/NarrowView.qml:138
499msgid "Sorry, incorrect passcode"
503msgid "Sorry, incorrect passcode"
500msgstr "Felaktig lösenkod"
504msgstr "Felaktig lösenkod"
501
505
po/sw.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-07-17 20:02+0000\n"
11"PO-Revision-Date: 2015-07-17 20:02+0000\n"
12"Last-Translator: Valentine <mwangi_valentino@yahoo.com>\n"
12"Last-Translator: Valentine <mwangi_valentino@yahoo.com>\n"
13"Language-Team: Swahili <sw@li.org>\n"
13"Language-Team: Swahili <sw@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,21 +35,21 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Toa njia ya mkato ya nambari ya siri"
36msgstr "Toa njia ya mkato ya nambari ya siri"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "kifaa kimefungwa"
40msgstr "kifaa kimefungwa"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45"Huwezi kulogi kwa sababu umenoa kubonyeza vizuri neno la siri mara nyingi."
45"Huwezi kulogi kwa sababu umenoa kubonyeza vizuri neno la siri mara nyingi."
46
46
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
48msgid "You have been locked out due to too many failed passcode attempts."
48msgid "You have been locked out due to too many failed passcode attempts."
49msgstr ""
49msgstr ""
50"Huwezi kulogi kwa sababu umenoa kubonyeza vizuri neno la siri mara nyingi."
50"Huwezi kulogi kwa sababu umenoa kubonyeza vizuri neno la siri mara nyingi."
51
51
52−#: qml/Components/DelayedLockscreen.qml:74
52+#: qml/Components/DelayedLockscreen.qml:75
53#, qt-format
53#, qt-format
54msgid "Please wait %1 minute and then try again…"
54msgid "Please wait %1 minute and then try again…"
55msgid_plural "Please wait %1 minutes and then try again…"
55msgid_plural "Please wait %1 minutes and then try again…"
@@ -279,15 +279,15 @@ msgstr ""
279msgid "Closes the current window."
279msgid "Closes the current window."
280msgstr ""
280msgstr ""
281
281
282−#: qml/Components/Lockscreen.qml:231
282+#: qml/Components/Lockscreen.qml:239
283msgid "Return to Call"
283msgid "Return to Call"
284msgstr "Rudi nyuma upige simu"
284msgstr "Rudi nyuma upige simu"
285
285
286−#: qml/Components/Lockscreen.qml:231
286+#: qml/Components/Lockscreen.qml:239
287msgid "Emergency Call"
287msgid "Emergency Call"
288msgstr "Simu ya dharura"
288msgstr "Simu ya dharura"
289
289
290−#: qml/Components/Lockscreen.qml:263
290+#: qml/Components/Lockscreen.qml:271
291msgid "OK"
291msgid "OK"
292msgstr "Sawa"
292msgstr "Sawa"
293
293
@@ -424,10 +424,14 @@ msgid ""
424"touch pad to interact with the pointer."
424"touch pad to interact with the pointer."
425msgstr ""
425msgstr ""
426
426
427−#: qml/Greeter/CoverPage.qml:119
427+#: qml/Greeter/CoverPage.qml:127
428msgid "Unlock"
428msgid "Unlock"
429msgstr "Fungua"
429msgstr "Fungua"
430
430
431+#: qml/Greeter/Greeter.qml:536
432+msgid "Try again"
433+msgstr ""
434+
431#: qml/Greeter/LoginList.qml:259
435#: qml/Greeter/LoginList.qml:259
432msgid "Retry"
436msgid "Retry"
433msgstr "Jaribu tena"
437msgstr "Jaribu tena"
@@ -464,34 +468,34 @@ msgstr ""
464"Kama utabonyeza neno la siri lisilofaa, simu yako itajiweka upya na data "
468"Kama utabonyeza neno la siri lisilofaa, simu yako itajiweka upya na data "
465"yako yote itafutwa."
469"yako yote itafutwa."
466
470
467−#: qml/Greeter/NarrowView.qml:116
471+#: qml/Greeter/NarrowView.qml:129
468#, qt-format
472#, qt-format
469msgid "Enter %1"
473msgid "Enter %1"
470msgstr "Bonyeza %1"
474msgstr "Bonyeza %1"
471
475
472−#: qml/Greeter/NarrowView.qml:117
476+#: qml/Greeter/NarrowView.qml:130
473msgid "Enter passphrase"
477msgid "Enter passphrase"
474msgstr "Bonyeza neno siri"
478msgstr "Bonyeza neno siri"
475
479
476−#: qml/Greeter/NarrowView.qml:118
480+#: qml/Greeter/NarrowView.qml:131
477msgid "Enter passcode"
481msgid "Enter passcode"
478msgstr "Bonyeza neno la siri"
482msgstr "Bonyeza neno la siri"
479
483
480−#: qml/Greeter/NarrowView.qml:119
484+#: qml/Greeter/NarrowView.qml:135
481#, qt-format
485#, qt-format
482msgid "Sorry, incorrect %1"
486msgid "Sorry, incorrect %1"
483msgstr "Samahani, %1 halidhihirishi"
487msgstr "Samahani, %1 halidhihirishi"
484
488
485−#: qml/Greeter/NarrowView.qml:120
489+#: qml/Greeter/NarrowView.qml:136
486msgid "Sorry, incorrect passphrase"
490msgid "Sorry, incorrect passphrase"
487msgstr "Samahani, neno la siri si hilo"
491msgstr "Samahani, neno la siri si hilo"
488
492
489−#: qml/Greeter/NarrowView.qml:121
493+#: qml/Greeter/NarrowView.qml:137
490msgctxt "passphrase"
494msgctxt "passphrase"
491msgid "Please re-enter"
495msgid "Please re-enter"
492msgstr ""
496msgstr ""
493
497
494−#: qml/Greeter/NarrowView.qml:122
498+#: qml/Greeter/NarrowView.qml:138
495msgid "Sorry, incorrect passcode"
499msgid "Sorry, incorrect passcode"
496msgstr "Samahani, neno la siri si hilo"
500msgstr "Samahani, neno la siri si hilo"
497
501
po/ta.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2013-10-24 11:36+0000\n"
11"PO-Revision-Date: 2013-10-24 11:36+0000\n"
12"Last-Translator: Arun Kumar - அருண் குமார் <thangam.arunx@gmail.com>\n"
12"Last-Translator: Arun Kumar - அருண் குமார் <thangam.arunx@gmail.com>\n"
13"Language-Team: Ubuntu Tamil Team/Free Tamil Computing/Thamizha\n"
13"Language-Team: Ubuntu Tamil Team/Free Tamil Computing/Thamizha\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20"Language: ta\n"
20"Language: ta\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -36,19 +36,19 @@ msgstr ""
36msgid "Unpin shortcut"
36msgid "Unpin shortcut"
37msgstr ""
37msgstr ""
38
38
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
40msgid "Device Locked"
40msgid "Device Locked"
41msgstr ""
41msgstr ""
42
42
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
44msgid "You have been locked out due to too many failed passphrase attempts."
44msgid "You have been locked out due to too many failed passphrase attempts."
45msgstr ""
45msgstr ""
46
46
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
48msgid "You have been locked out due to too many failed passcode attempts."
48msgid "You have been locked out due to too many failed passcode attempts."
49msgstr ""
49msgstr ""
50
50
51−#: qml/Components/DelayedLockscreen.qml:74
51+#: qml/Components/DelayedLockscreen.qml:75
52#, qt-format
52#, qt-format
53msgid "Please wait %1 minute and then try again…"
53msgid "Please wait %1 minute and then try again…"
54msgid_plural "Please wait %1 minutes and then try again…"
54msgid_plural "Please wait %1 minutes and then try again…"
@@ -278,15 +278,15 @@ msgstr ""
278msgid "Closes the current window."
278msgid "Closes the current window."
279msgstr ""
279msgstr ""
280
280
281−#: qml/Components/Lockscreen.qml:231
281+#: qml/Components/Lockscreen.qml:239
282msgid "Return to Call"
282msgid "Return to Call"
283msgstr ""
283msgstr ""
284
284
285−#: qml/Components/Lockscreen.qml:231
285+#: qml/Components/Lockscreen.qml:239
286msgid "Emergency Call"
286msgid "Emergency Call"
287msgstr "அவசர அழைப்பு"
287msgstr "அவசர அழைப்பு"
288
288
289−#: qml/Components/Lockscreen.qml:263
289+#: qml/Components/Lockscreen.qml:271
290msgid "OK"
290msgid "OK"
291msgstr ""
291msgstr ""
292
292
@@ -423,10 +423,14 @@ msgid ""
423"touch pad to interact with the pointer."
423"touch pad to interact with the pointer."
424msgstr ""
424msgstr ""
425
425
426−#: qml/Greeter/CoverPage.qml:119
426+#: qml/Greeter/CoverPage.qml:127
427msgid "Unlock"
427msgid "Unlock"
428msgstr ""
428msgstr ""
429
429
430+#: qml/Greeter/Greeter.qml:536
431+msgid "Try again"
432+msgstr ""
433+
430#: qml/Greeter/LoginList.qml:259
434#: qml/Greeter/LoginList.qml:259
431msgid "Retry"
435msgid "Retry"
432msgstr ""
436msgstr ""
@@ -459,34 +463,34 @@ msgid ""
459"and all personal data will be deleted."
463"and all personal data will be deleted."
460msgstr ""
464msgstr ""
461
465
462−#: qml/Greeter/NarrowView.qml:116
466+#: qml/Greeter/NarrowView.qml:129
463#, qt-format
467#, qt-format
464msgid "Enter %1"
468msgid "Enter %1"
465msgstr ""
469msgstr ""
466
470
467−#: qml/Greeter/NarrowView.qml:117
471+#: qml/Greeter/NarrowView.qml:130
468msgid "Enter passphrase"
472msgid "Enter passphrase"
469msgstr ""
473msgstr ""
470
474
471−#: qml/Greeter/NarrowView.qml:118
475+#: qml/Greeter/NarrowView.qml:131
472msgid "Enter passcode"
476msgid "Enter passcode"
473msgstr ""
477msgstr ""
474
478
475−#: qml/Greeter/NarrowView.qml:119
479+#: qml/Greeter/NarrowView.qml:135
476#, qt-format
480#, qt-format
477msgid "Sorry, incorrect %1"
481msgid "Sorry, incorrect %1"
478msgstr ""
482msgstr ""
479
483
480−#: qml/Greeter/NarrowView.qml:120
484+#: qml/Greeter/NarrowView.qml:136
481msgid "Sorry, incorrect passphrase"
485msgid "Sorry, incorrect passphrase"
482msgstr ""
486msgstr ""
483
487
484−#: qml/Greeter/NarrowView.qml:121
488+#: qml/Greeter/NarrowView.qml:137
485msgctxt "passphrase"
489msgctxt "passphrase"
486msgid "Please re-enter"
490msgid "Please re-enter"
487msgstr ""
491msgstr ""
488
492
489−#: qml/Greeter/NarrowView.qml:122
493+#: qml/Greeter/NarrowView.qml:138
490msgid "Sorry, incorrect passcode"
494msgid "Sorry, incorrect passcode"
491msgstr ""
495msgstr ""
492
496
po/te.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2014-07-19 10:04+0000\n"
11"PO-Revision-Date: 2014-07-19 10:04+0000\n"
12"Last-Translator: Praveen Illa <mail2ipn@gmail.com>\n"
12"Last-Translator: Praveen Illa <mail2ipn@gmail.com>\n"
13"Language-Team: Telugu <te@li.org>\n"
13"Language-Team: Telugu <te@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr ""
36msgstr ""
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr ""
40msgstr ""
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277msgid "Closes the current window."
277msgid "Closes the current window."
278msgstr ""
278msgstr ""
279
279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281msgid "Return to Call"
281msgid "Return to Call"
282msgstr ""
282msgstr ""
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Emergency Call"
285msgid "Emergency Call"
286msgstr "అత్యవసర పిలుపు"
286msgstr "అత్యవసర పిలుపు"
287
287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289msgid "OK"
289msgid "OK"
290msgstr "సరే"
290msgstr "సరే"
291
291
@@ -422,10 +422,14 @@ msgid ""
422"touch pad to interact with the pointer."
422"touch pad to interact with the pointer."
423msgstr ""
423msgstr ""
424
424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426msgid "Unlock"
426msgid "Unlock"
427msgstr ""
427msgstr ""
428
428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429#: qml/Greeter/LoginList.qml:259
433#: qml/Greeter/LoginList.qml:259
430msgid "Retry"
434msgid "Retry"
431msgstr ""
435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458"and all personal data will be deleted."
462"and all personal data will be deleted."
459msgstr ""
463msgstr ""
460
464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462#, qt-format
466#, qt-format
463msgid "Enter %1"
467msgid "Enter %1"
464msgstr ""
468msgstr ""
465
469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467msgid "Enter passphrase"
471msgid "Enter passphrase"
468msgstr ""
472msgstr ""
469
473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471msgid "Enter passcode"
475msgid "Enter passcode"
472msgstr ""
476msgstr ""
473
477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475#, qt-format
479#, qt-format
476msgid "Sorry, incorrect %1"
480msgid "Sorry, incorrect %1"
477msgstr ""
481msgstr ""
478
482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480msgid "Sorry, incorrect passphrase"
484msgid "Sorry, incorrect passphrase"
481msgstr ""
485msgstr ""
482
486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484msgctxt "passphrase"
488msgctxt "passphrase"
485msgid "Please re-enter"
489msgid "Please re-enter"
486msgstr ""
490msgstr ""
487
491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489msgid "Sorry, incorrect passcode"
493msgid "Sorry, incorrect passcode"
490msgstr ""
494msgstr ""
491
495
po/th.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2014-10-02 04:55+0000\n"
11"PO-Revision-Date: 2014-10-02 04:55+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Thai <th@li.org>\n"
13"Language-Team: Thai <th@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr ""
36msgstr ""
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr ""
40msgstr ""
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277msgid "Closes the current window."
277msgid "Closes the current window."
278msgstr ""
278msgstr ""
279
279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281msgid "Return to Call"
281msgid "Return to Call"
282msgstr ""
282msgstr ""
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Emergency Call"
285msgid "Emergency Call"
286msgstr ""
286msgstr ""
287
287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289msgid "OK"
289msgid "OK"
290msgstr ""
290msgstr ""
291
291
@@ -422,10 +422,14 @@ msgid ""
422"touch pad to interact with the pointer."
422"touch pad to interact with the pointer."
423msgstr ""
423msgstr ""
424
424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426msgid "Unlock"
426msgid "Unlock"
427msgstr ""
427msgstr ""
428
428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429#: qml/Greeter/LoginList.qml:259
433#: qml/Greeter/LoginList.qml:259
430msgid "Retry"
434msgid "Retry"
431msgstr ""
435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458"and all personal data will be deleted."
462"and all personal data will be deleted."
459msgstr ""
463msgstr ""
460
464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462#, qt-format
466#, qt-format
463msgid "Enter %1"
467msgid "Enter %1"
464msgstr ""
468msgstr ""
465
469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467msgid "Enter passphrase"
471msgid "Enter passphrase"
468msgstr ""
472msgstr ""
469
473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471msgid "Enter passcode"
475msgid "Enter passcode"
472msgstr ""
476msgstr ""
473
477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475#, qt-format
479#, qt-format
476msgid "Sorry, incorrect %1"
480msgid "Sorry, incorrect %1"
477msgstr ""
481msgstr ""
478
482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480msgid "Sorry, incorrect passphrase"
484msgid "Sorry, incorrect passphrase"
481msgstr ""
485msgstr ""
482
486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484msgctxt "passphrase"
488msgctxt "passphrase"
485msgid "Please re-enter"
489msgid "Please re-enter"
486msgstr ""
490msgstr ""
487
491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489msgid "Sorry, incorrect passcode"
493msgid "Sorry, incorrect passcode"
490msgstr ""
494msgstr ""
491
495
po/tr.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-03-22 15:56+0000\n"
11"PO-Revision-Date: 2015-03-22 15:56+0000\n"
12"Last-Translator: Arda Ünlü <aarda.uunlu@gmail.com>\n"
12"Last-Translator: Arda Ünlü <aarda.uunlu@gmail.com>\n"
13"Language-Team: Turkish <tr@li.org>\n"
13"Language-Team: Turkish <tr@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "Çıkış"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Kısayol iğnesini kaldır"
36msgstr "Kısayol iğnesini kaldır"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Cihaz Kilitli"
40msgstr "Cihaz Kilitli"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr "Çok sayıda parola hatası yaptığınız için kilitlendiniz."
44msgstr "Çok sayıda parola hatası yaptığınız için kilitlendiniz."
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr "Çok sayıda parola hatası yaptığınız için kilitlendiniz."
48msgstr "Çok sayıda parola hatası yaptığınız için kilitlendiniz."
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277msgid "Closes the current window."
277msgid "Closes the current window."
278msgstr ""
278msgstr ""
279
279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281msgid "Return to Call"
281msgid "Return to Call"
282msgstr "Çağrıya Dön"
282msgstr "Çağrıya Dön"
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Emergency Call"
285msgid "Emergency Call"
286msgstr "Acil Arama"
286msgstr "Acil Arama"
287
287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289msgid "OK"
289msgid "OK"
290msgstr "Tamam"
290msgstr "Tamam"
291
291
@@ -422,10 +422,14 @@ msgid ""
422"touch pad to interact with the pointer."
422"touch pad to interact with the pointer."
423msgstr ""
423msgstr ""
424
424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426msgid "Unlock"
426msgid "Unlock"
427msgstr "Kilidi Aç"
427msgstr "Kilidi Aç"
428
428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429#: qml/Greeter/LoginList.qml:259
433#: qml/Greeter/LoginList.qml:259
430msgid "Retry"
434msgid "Retry"
431msgstr "Tekrar Dene"
435msgstr "Tekrar Dene"
@@ -462,34 +466,34 @@ msgstr ""
462"Eğer hatalı parola girilirse, telefonunuz fabrika ayarlarına dönecek ve tüm "
466"Eğer hatalı parola girilirse, telefonunuz fabrika ayarlarına dönecek ve tüm "
463"kişisel verileriniz silinecek."
467"kişisel verileriniz silinecek."
464
468
465−#: qml/Greeter/NarrowView.qml:116
469+#: qml/Greeter/NarrowView.qml:129
466#, qt-format
470#, qt-format
467msgid "Enter %1"
471msgid "Enter %1"
468msgstr "%1 Girin"
472msgstr "%1 Girin"
469
473
470−#: qml/Greeter/NarrowView.qml:117
474+#: qml/Greeter/NarrowView.qml:130
471msgid "Enter passphrase"
475msgid "Enter passphrase"
472msgstr "Parolayı girin"
476msgstr "Parolayı girin"
473
477
474−#: qml/Greeter/NarrowView.qml:118
478+#: qml/Greeter/NarrowView.qml:131
475msgid "Enter passcode"
479msgid "Enter passcode"
476msgstr "Parolayı girin"
480msgstr "Parolayı girin"
477
481
478−#: qml/Greeter/NarrowView.qml:119
482+#: qml/Greeter/NarrowView.qml:135
479#, qt-format
483#, qt-format
480msgid "Sorry, incorrect %1"
484msgid "Sorry, incorrect %1"
481msgstr "Üzgünüm, hatalı %1"
485msgstr "Üzgünüm, hatalı %1"
482
486
483−#: qml/Greeter/NarrowView.qml:120
487+#: qml/Greeter/NarrowView.qml:136
484msgid "Sorry, incorrect passphrase"
488msgid "Sorry, incorrect passphrase"
485msgstr "Üzgünüm, hatalı parola"
489msgstr "Üzgünüm, hatalı parola"
486
490
487−#: qml/Greeter/NarrowView.qml:121
491+#: qml/Greeter/NarrowView.qml:137
488msgctxt "passphrase"
492msgctxt "passphrase"
489msgid "Please re-enter"
493msgid "Please re-enter"
490msgstr "Lütfen yeniden girin"
494msgstr "Lütfen yeniden girin"
491
495
492−#: qml/Greeter/NarrowView.qml:122
496+#: qml/Greeter/NarrowView.qml:138
493msgid "Sorry, incorrect passcode"
497msgid "Sorry, incorrect passcode"
494msgstr "Üzgünüm, hatalı parola"
498msgstr "Üzgünüm, hatalı parola"
495
499
po/ug.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-12-01 07:37+0000\n"
11"PO-Revision-Date: 2015-12-01 07:37+0000\n"
12"Last-Translator: Eltikin <eltikinuyghur@hotmail.com>\n"
12"Last-Translator: Eltikin <eltikinuyghur@hotmail.com>\n"
13"Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
13"Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "چېكىن"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "تېزلەتمىنى ئېلىۋەت"
36msgstr "تېزلەتمىنى ئېلىۋەت"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "ئۈسكۈنە قۇلۇپلانغان"
40msgstr "ئۈسكۈنە قۇلۇپلانغان"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr "خاتا ئىم جۈملىسى كۆپ قېتىم كىرگۈزۈلگەنلىكى ئۈچۈن قۇلۇپلاندى."
44msgstr "خاتا ئىم جۈملىسى كۆپ قېتىم كىرگۈزۈلگەنلىكى ئۈچۈن قۇلۇپلاندى."
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr "ھىساباتىڭز قۇلۇپلاندى.ئىم كىرگۈزۈشتە كۆپ قېتىم خاتالاشتىڭز."
48msgstr "ھىساباتىڭز قۇلۇپلاندى.ئىم كىرگۈزۈشتە كۆپ قېتىم خاتالاشتىڭز."
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -278,15 +278,15 @@ msgstr ""
278msgid "Closes the current window."
278msgid "Closes the current window."
279msgstr ""
279msgstr ""
280
280
281−#: qml/Components/Lockscreen.qml:231
281+#: qml/Components/Lockscreen.qml:239
282msgid "Return to Call"
282msgid "Return to Call"
283msgstr "سۆزلىشىشكە قايت"
283msgstr "سۆزلىشىشكە قايت"
284
284
285−#: qml/Components/Lockscreen.qml:231
285+#: qml/Components/Lockscreen.qml:239
286msgid "Emergency Call"
286msgid "Emergency Call"
287msgstr "جىددىي تېلېفون"
287msgstr "جىددىي تېلېفون"
288
288
289−#: qml/Components/Lockscreen.qml:263
289+#: qml/Components/Lockscreen.qml:271
290msgid "OK"
290msgid "OK"
291msgstr "تامام"
291msgstr "تامام"
292
292
@@ -423,10 +423,14 @@ msgid ""
423"touch pad to interact with the pointer."
423"touch pad to interact with the pointer."
424msgstr ""
424msgstr ""
425
425
426−#: qml/Greeter/CoverPage.qml:119
426+#: qml/Greeter/CoverPage.qml:127
427msgid "Unlock"
427msgid "Unlock"
428msgstr "قۇلۇپسىزلا"
428msgstr "قۇلۇپسىزلا"
429
429
430+#: qml/Greeter/Greeter.qml:536
431+msgid "Try again"
432+msgstr ""
433+
430#: qml/Greeter/LoginList.qml:259
434#: qml/Greeter/LoginList.qml:259
431msgid "Retry"
435msgid "Retry"
432msgstr "قايتا سىنا"
436msgstr "قايتا سىنا"
@@ -463,34 +467,34 @@ msgstr ""
463"ئەگەر ئىم كودى توغرا بولمىسا، تېلېفونىڭىز ئەسلىگە قايتۇرۇلۇپ، زاۋۇتتىن "
467"ئەگەر ئىم كودى توغرا بولمىسا، تېلېفونىڭىز ئەسلىگە قايتۇرۇلۇپ، زاۋۇتتىن "
464"چىققان ھالەتكە كېلىپ قالىدۇ. بارلىق مەزمۇنلار يوقىلىدۇ."
468"چىققان ھالەتكە كېلىپ قالىدۇ. بارلىق مەزمۇنلار يوقىلىدۇ."
465
469
466−#: qml/Greeter/NarrowView.qml:116
470+#: qml/Greeter/NarrowView.qml:129
467#, qt-format
471#, qt-format
468msgid "Enter %1"
472msgid "Enter %1"
469msgstr "%1 نى كىرگۈزۈڭ"
473msgstr "%1 نى كىرگۈزۈڭ"
470
474
471−#: qml/Greeter/NarrowView.qml:117
475+#: qml/Greeter/NarrowView.qml:130
472msgid "Enter passphrase"
476msgid "Enter passphrase"
473msgstr "ئىم كىرگۈزۈڭ"
477msgstr "ئىم كىرگۈزۈڭ"
474
478
475−#: qml/Greeter/NarrowView.qml:118
479+#: qml/Greeter/NarrowView.qml:131
476msgid "Enter passcode"
480msgid "Enter passcode"
477msgstr "ئىم كودى(passcode)نى كىرگۈزۈڭ"
481msgstr "ئىم كودى(passcode)نى كىرگۈزۈڭ"
478
482
479−#: qml/Greeter/NarrowView.qml:119
483+#: qml/Greeter/NarrowView.qml:135
480#, qt-format
484#, qt-format
481msgid "Sorry, incorrect %1"
485msgid "Sorry, incorrect %1"
482msgstr "كەچۈرۈڭ، %1 توغرا ئەمەس"
486msgstr "كەچۈرۈڭ، %1 توغرا ئەمەس"
483
487
484−#: qml/Greeter/NarrowView.qml:120
488+#: qml/Greeter/NarrowView.qml:136
485msgid "Sorry, incorrect passphrase"
489msgid "Sorry, incorrect passphrase"
486msgstr "كەچۈرۈڭ، ئىم توغرا ئەمەس"
490msgstr "كەچۈرۈڭ، ئىم توغرا ئەمەس"
487
491
488−#: qml/Greeter/NarrowView.qml:121
492+#: qml/Greeter/NarrowView.qml:137
489msgctxt "passphrase"
493msgctxt "passphrase"
490msgid "Please re-enter"
494msgid "Please re-enter"
491msgstr "قايتا كىرگۈزۈڭ"
495msgstr "قايتا كىرگۈزۈڭ"
492
496
493−#: qml/Greeter/NarrowView.qml:122
497+#: qml/Greeter/NarrowView.qml:138
494msgid "Sorry, incorrect passcode"
498msgid "Sorry, incorrect passcode"
495msgstr "كەچۈرۈڭ، ئىم توغرا ئەمەس"
499msgstr "كەچۈرۈڭ، ئىم توغرا ئەمەس"
496
500
po/uk.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2016-04-01 17:32+0000\n"
11"PO-Revision-Date: 2016-04-01 17:32+0000\n"
12"Last-Translator: Yuri Chornoivan <yurchor@gmail.com>\n"
12"Last-Translator: Yuri Chornoivan <yurchor@gmail.com>\n"
13"Language-Team: Ukrainian <uk@li.org>\n"
13"Language-Team: Ukrainian <uk@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
19+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
20−"X-Generator: Launchpad (build 18097)\n"
20+"X-Generator: Launchpad (build 18111)\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
23msgid "Password: "
23msgid "Password: "
@@ -36,23 +36,23 @@ msgstr "Вийти"
36msgid "Unpin shortcut"
36msgid "Unpin shortcut"
37msgstr "Розблокувати кнопку"
37msgstr "Розблокувати кнопку"
38
38
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
40msgid "Device Locked"
40msgid "Device Locked"
41msgstr "Пристрій заблоковано"
41msgstr "Пристрій заблоковано"
42
42
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
44msgid "You have been locked out due to too many failed passphrase attempts."
44msgid "You have been locked out due to too many failed passphrase attempts."
45msgstr ""
45msgstr ""
46"Ваш пристрій було заблоковано через перевищення граничної кількості спроб "
46"Ваш пристрій було заблоковано через перевищення граничної кількості спроб "
47"введення пароля."
47"введення пароля."
48
48
49−#: qml/Components/DelayedLockscreen.qml:65
49+#: qml/Components/DelayedLockscreen.qml:66
50msgid "You have been locked out due to too many failed passcode attempts."
50msgid "You have been locked out due to too many failed passcode attempts."
51msgstr ""
51msgstr ""
52"Ваш пристрій було заблоковано через перевищення граничної кількості спроб "
52"Ваш пристрій було заблоковано через перевищення граничної кількості спроб "
53"введення коду-пароля."
53"введення коду-пароля."
54
54
55−#: qml/Components/DelayedLockscreen.qml:74
55+#: qml/Components/DelayedLockscreen.qml:75
56#, qt-format
56#, qt-format
57msgid "Please wait %1 minute and then try again…"
57msgid "Please wait %1 minute and then try again…"
58msgid_plural "Please wait %1 minutes and then try again…"
58msgid_plural "Please wait %1 minutes and then try again…"
@@ -285,15 +285,15 @@ msgstr ""
285msgid "Closes the current window."
285msgid "Closes the current window."
286msgstr ""
286msgstr ""
287
287
288−#: qml/Components/Lockscreen.qml:231
288+#: qml/Components/Lockscreen.qml:239
289msgid "Return to Call"
289msgid "Return to Call"
290msgstr "Повернутися до дзвінка"
290msgstr "Повернутися до дзвінка"
291
291
292−#: qml/Components/Lockscreen.qml:231
292+#: qml/Components/Lockscreen.qml:239
293msgid "Emergency Call"
293msgid "Emergency Call"
294msgstr "Терміновий виклик"
294msgstr "Терміновий виклик"
295
295
296−#: qml/Components/Lockscreen.qml:263
296+#: qml/Components/Lockscreen.qml:271
297msgid "OK"
297msgid "OK"
298msgstr "Гаразд"
298msgstr "Гаразд"
299
299
@@ -434,10 +434,14 @@ msgstr ""
434"Ваш пристрій під’єднаний до зовнішнього дисплея. Використовуйте цей екран як "
434"Ваш пристрій під’єднаний до зовнішнього дисплея. Використовуйте цей екран як "
435"сенсорну панель для керування вказівником."
435"сенсорну панель для керування вказівником."
436
436
437−#: qml/Greeter/CoverPage.qml:119
437+#: qml/Greeter/CoverPage.qml:127
438msgid "Unlock"
438msgid "Unlock"
439msgstr "Розблокувати"
439msgstr "Розблокувати"
440
440
441+#: qml/Greeter/Greeter.qml:536
442+msgid "Try again"
443+msgstr ""
444+
441#: qml/Greeter/LoginList.qml:259
445#: qml/Greeter/LoginList.qml:259
442msgid "Retry"
446msgid "Retry"
443msgstr "Повторити"
447msgstr "Повторити"
@@ -474,34 +478,34 @@ msgstr ""
474"Якщо код-пароль буде вказано неправильно, телефон повернеться до початкового "
478"Якщо код-пароль буде вказано неправильно, телефон повернеться до початкового "
475"стану, усі особисті дані буде вилучено."
479"стану, усі особисті дані буде вилучено."
476
480
477−#: qml/Greeter/NarrowView.qml:116
481+#: qml/Greeter/NarrowView.qml:129
478#, qt-format
482#, qt-format
479msgid "Enter %1"
483msgid "Enter %1"
480msgstr "Введіть %1"
484msgstr "Введіть %1"
481
485
482−#: qml/Greeter/NarrowView.qml:117
486+#: qml/Greeter/NarrowView.qml:130
483msgid "Enter passphrase"
487msgid "Enter passphrase"
484msgstr "Введіть пароль"
488msgstr "Введіть пароль"
485
489
486−#: qml/Greeter/NarrowView.qml:118
490+#: qml/Greeter/NarrowView.qml:131
487msgid "Enter passcode"
491msgid "Enter passcode"
488msgstr "Введіть код"
492msgstr "Введіть код"
489
493
490−#: qml/Greeter/NarrowView.qml:119
494+#: qml/Greeter/NarrowView.qml:135
491#, qt-format
495#, qt-format
492msgid "Sorry, incorrect %1"
496msgid "Sorry, incorrect %1"
493msgstr "Вибачте, помилковий %1"
497msgstr "Вибачте, помилковий %1"
494
498
495−#: qml/Greeter/NarrowView.qml:120
499+#: qml/Greeter/NarrowView.qml:136
496msgid "Sorry, incorrect passphrase"
500msgid "Sorry, incorrect passphrase"
497msgstr "Вибачте, помилковий пароль"
501msgstr "Вибачте, помилковий пароль"
498
502
499−#: qml/Greeter/NarrowView.qml:121
503+#: qml/Greeter/NarrowView.qml:137
500msgctxt "passphrase"
504msgctxt "passphrase"
501msgid "Please re-enter"
505msgid "Please re-enter"
502msgstr "Введіть ще раз"
506msgstr "Введіть ще раз"
503
507
504−#: qml/Greeter/NarrowView.qml:122
508+#: qml/Greeter/NarrowView.qml:138
505msgid "Sorry, incorrect passcode"
509msgid "Sorry, incorrect passcode"
506msgstr "Вибачте, помилковий код-пароль"
510msgstr "Вибачте, помилковий код-пароль"
507
511
po/unity8.pot+52−34
@@ -8,7 +8,7 @@ msgid ""
8msgstr ""
8msgstr ""
9"Project-Id-Version: unity8\n"
9"Project-Id-Version: unity8\n"
10"Report-Msgid-Bugs-To: \n"
10"Report-Msgid-Bugs-To: \n"
11−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
11+"POT-Creation-Date: 2016-06-27 18:49+0000\n"
12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14"Language-Team: LANGUAGE <LL@li.org>\n"
14"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -35,19 +35,19 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr ""
36msgstr ""
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr ""
40msgstr ""
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,18 +277,28 @@ msgstr ""
277msgid "Closes the current window."
277msgid "Closes the current window."
278msgstr ""
278msgstr ""
279
279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281msgid "Return to Call"
281msgid "Return to Call"
282msgstr ""
282msgstr ""
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Emergency Call"
285msgid "Emergency Call"
286msgstr ""
286msgstr ""
287
287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289msgid "OK"
289msgid "OK"
290msgstr ""
290msgstr ""
291
291
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+
292#: qml/Components/ModeSwitchWarningDialog.qml:32
302#: qml/Components/ModeSwitchWarningDialog.qml:32
293msgid "Apps may have unsaved data:"
303msgid "Apps may have unsaved data:"
294msgstr ""
304msgstr ""
@@ -315,6 +325,10 @@ msgstr ""
315msgid "Close all"
325msgid "Close all"
316msgstr ""
326msgstr ""
317
327
328+#: qml/Components/SharingPicker.qml:54
329+msgid "Preview Share Item"
330+msgstr ""
331+
318#: qml/Dash/DashPageHeader.qml:333
332#: qml/Dash/DashPageHeader.qml:333
319msgctxt "Button: Open the Ubuntu Store"
333msgctxt "Button: Open the Ubuntu Store"
320msgid "Store"
334msgid "Store"
@@ -388,10 +402,6 @@ msgstr ""
388msgid "Add a review"
402msgid "Add a review"
389msgstr ""
403msgstr ""
390
404
391−#: qml/Dash/Previews/PreviewSharing.qml:66
392−msgid "Preview Share Item"
393−msgstr ""
394−
395#: qml/Dash/PullToRefreshScopeStyle.qml:55
405#: qml/Dash/PullToRefreshScopeStyle.qml:55
396msgid "Pull to refresh…"
406msgid "Pull to refresh…"
397msgstr ""
407msgstr ""
@@ -408,11 +418,11 @@ msgstr ""
408msgid "Manage"
418msgid "Manage"
409msgstr ""
419msgstr ""
410
420
411−#: qml/Dash/ScopesList.qml:101
421+#: qml/Dash/ScopesList.qml:102
412msgid "Home"
422msgid "Home"
413msgstr ""
423msgstr ""
414
424
415−#: qml/Dash/ScopesList.qml:102
425+#: qml/Dash/ScopesList.qml:103
416msgid "Also installed"
426msgid "Also installed"
417msgstr ""
427msgstr ""
418
428
@@ -422,10 +432,14 @@ msgid ""
422"touch pad to interact with the pointer."
432"touch pad to interact with the pointer."
423msgstr ""
433msgstr ""
424
434
425−#: qml/Greeter/CoverPage.qml:119
435+#: qml/Greeter/CoverPage.qml:127
426msgid "Unlock"
436msgid "Unlock"
427msgstr ""
437msgstr ""
428
438
439+#: qml/Greeter/Greeter.qml:539
440+msgid "Try again"
441+msgstr ""
442+
429#: qml/Greeter/LoginList.qml:259
443#: qml/Greeter/LoginList.qml:259
430msgid "Retry"
444msgid "Retry"
431msgstr ""
445msgstr ""
@@ -458,34 +472,34 @@ msgid ""
458"and all personal data will be deleted."
472"and all personal data will be deleted."
459msgstr ""
473msgstr ""
460
474
461−#: qml/Greeter/NarrowView.qml:116
475+#: qml/Greeter/NarrowView.qml:129
462#, qt-format
476#, qt-format
463msgid "Enter %1"
477msgid "Enter %1"
464msgstr ""
478msgstr ""
465
479
466−#: qml/Greeter/NarrowView.qml:117
480+#: qml/Greeter/NarrowView.qml:130
467msgid "Enter passphrase"
481msgid "Enter passphrase"
468msgstr ""
482msgstr ""
469
483
470−#: qml/Greeter/NarrowView.qml:118
484+#: qml/Greeter/NarrowView.qml:131
471msgid "Enter passcode"
485msgid "Enter passcode"
472msgstr ""
486msgstr ""
473
487
474−#: qml/Greeter/NarrowView.qml:119
488+#: qml/Greeter/NarrowView.qml:135
475#, qt-format
489#, qt-format
476msgid "Sorry, incorrect %1"
490msgid "Sorry, incorrect %1"
477msgstr ""
491msgstr ""
478
492
479−#: qml/Greeter/NarrowView.qml:120
493+#: qml/Greeter/NarrowView.qml:136
480msgid "Sorry, incorrect passphrase"
494msgid "Sorry, incorrect passphrase"
481msgstr ""
495msgstr ""
482
496
483−#: qml/Greeter/NarrowView.qml:121
497+#: qml/Greeter/NarrowView.qml:137
484msgctxt "passphrase"
498msgctxt "passphrase"
485msgid "Please re-enter"
499msgid "Please re-enter"
486msgstr ""
500msgstr ""
487
501
488−#: qml/Greeter/NarrowView.qml:122
502+#: qml/Greeter/NarrowView.qml:138
489msgid "Sorry, incorrect passcode"
503msgid "Sorry, incorrect passcode"
490msgstr ""
504msgstr ""
491
505
@@ -613,7 +627,7 @@ msgstr ""
613#: qml/Wizard/Pages/40-location.qml:271 qml/Wizard/Pages/50-timezone.qml:270
627#: qml/Wizard/Pages/40-location.qml:271 qml/Wizard/Pages/50-timezone.qml:270
614#: qml/Wizard/Pages/60-account.qml:65 qml/Wizard/Pages/70-passwd-type.qml:144
628#: qml/Wizard/Pages/60-account.qml:65 qml/Wizard/Pages/70-passwd-type.qml:144
615#: qml/Wizard/Pages/75-report-check.qml:84
629#: qml/Wizard/Pages/75-report-check.qml:84
616−#: qml/Wizard/Pages/passcode-desktop.qml:124
630+#: qml/Wizard/Pages/passcode-desktop.qml:141
617#: qml/Wizard/Pages/password-set.qml:141
631#: qml/Wizard/Pages/password-set.qml:141
618msgid "Next"
632msgid "Next"
619msgstr ""
633msgstr ""
@@ -765,7 +779,7 @@ msgid "Service Terms"
765msgstr ""
779msgstr ""
766
780
767#: qml/Wizard/Pages/passcode-confirm.qml:43
781#: qml/Wizard/Pages/passcode-confirm.qml:43
768−#: qml/Wizard/Pages/passcode-desktop.qml:80
782+#: qml/Wizard/Pages/passcode-desktop.qml:96
769msgid "Confirm passcode"
783msgid "Confirm passcode"
770msgstr ""
784msgstr ""
771
785
@@ -782,24 +796,24 @@ msgstr ""
782msgid "Lock Screen Passcode"
796msgid "Lock Screen Passcode"
783msgstr ""
797msgstr ""
784
798
785−#: qml/Wizard/Pages/passcode-desktop.qml:56
799+#: qml/Wizard/Pages/passcode-desktop.qml:60
786msgid "Enter 4 numbers to setup your passcode"
800msgid "Enter 4 numbers to setup your passcode"
787msgstr ""
801msgstr ""
788
802
789−#: qml/Wizard/Pages/passcode-desktop.qml:65
803+#: qml/Wizard/Pages/passcode-desktop.qml:76
790#: qml/Wizard/Pages/passcode-set.qml:54
804#: qml/Wizard/Pages/passcode-set.qml:54
791msgid "Choose passcode"
805msgid "Choose passcode"
792msgstr ""
806msgstr ""
793
807
794−#: qml/Wizard/Pages/passcode-desktop.qml:105
808+#: qml/Wizard/Pages/passcode-desktop.qml:126
795msgid "Passcode too short"
809msgid "Passcode too short"
796msgstr ""
810msgstr ""
797
811
798−#: qml/Wizard/Pages/passcode-desktop.qml:107
812+#: qml/Wizard/Pages/passcode-desktop.qml:128
799msgid "Passcodes match"
813msgid "Passcodes match"
800msgstr ""
814msgstr ""
801
815
802−#: qml/Wizard/Pages/passcode-desktop.qml:109
816+#: qml/Wizard/Pages/passcode-desktop.qml:130
803msgid "Passcodes do not match"
817msgid "Passcodes do not match"
804msgstr ""
818msgstr ""
805
819
@@ -848,25 +862,29 @@ msgid "To proceed with no SIM tap Skip."
848msgstr ""
862msgstr ""
849
863
850#: qml/Wizard/PasswordMeter.qml:87
864#: qml/Wizard/PasswordMeter.qml:87
851−msgid "Passwords match"
865+msgid "Password too short"
852msgstr ""
866msgstr ""
853
867
854#: qml/Wizard/PasswordMeter.qml:89
868#: qml/Wizard/PasswordMeter.qml:89
869+msgid "Passwords match"
870+msgstr ""
871+
872+#: qml/Wizard/PasswordMeter.qml:91
855msgid "Passwords do not match"
873msgid "Passwords do not match"
856msgstr ""
874msgstr ""
857
875
858−#: qml/Wizard/PasswordMeter.qml:93
876+#: qml/Wizard/PasswordMeter.qml:95
859msgid "Strong password"
877msgid "Strong password"
860msgstr ""
878msgstr ""
861
879
862−#: qml/Wizard/PasswordMeter.qml:95
880+#: qml/Wizard/PasswordMeter.qml:97
863msgid "Fair password"
881msgid "Fair password"
864msgstr ""
882msgstr ""
865
883
866−#: qml/Wizard/PasswordMeter.qml:97
884+#: qml/Wizard/PasswordMeter.qml:99
867msgid "Weak password"
885msgid "Weak password"
868msgstr ""
886msgstr ""
869
887
870−#: qml/Wizard/PasswordMeter.qml:99
888+#: qml/Wizard/PasswordMeter.qml:101
871msgid "Very weak password"
889msgid "Very weak password"
872msgstr ""
890msgstr ""
po/ur.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-05-05 03:12+0000\n"
11"PO-Revision-Date: 2015-05-05 03:12+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Urdu <ur@li.org>\n"
13"Language-Team: Urdu <ur@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr ""
36msgstr ""
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr ""
40msgstr ""
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277msgid "Closes the current window."
277msgid "Closes the current window."
278msgstr ""
278msgstr ""
279
279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281msgid "Return to Call"
281msgid "Return to Call"
282msgstr ""
282msgstr ""
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Emergency Call"
285msgid "Emergency Call"
286msgstr ""
286msgstr ""
287
287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289msgid "OK"
289msgid "OK"
290msgstr ""
290msgstr ""
291
291
@@ -422,10 +422,14 @@ msgid ""
422"touch pad to interact with the pointer."
422"touch pad to interact with the pointer."
423msgstr ""
423msgstr ""
424
424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426msgid "Unlock"
426msgid "Unlock"
427msgstr ""
427msgstr ""
428
428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429#: qml/Greeter/LoginList.qml:259
433#: qml/Greeter/LoginList.qml:259
430msgid "Retry"
434msgid "Retry"
431msgstr ""
435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458"and all personal data will be deleted."
462"and all personal data will be deleted."
459msgstr ""
463msgstr ""
460
464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462#, qt-format
466#, qt-format
463msgid "Enter %1"
467msgid "Enter %1"
464msgstr ""
468msgstr ""
465
469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467msgid "Enter passphrase"
471msgid "Enter passphrase"
468msgstr ""
472msgstr ""
469
473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471msgid "Enter passcode"
475msgid "Enter passcode"
472msgstr ""
476msgstr ""
473
477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475#, qt-format
479#, qt-format
476msgid "Sorry, incorrect %1"
480msgid "Sorry, incorrect %1"
477msgstr ""
481msgstr ""
478
482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480msgid "Sorry, incorrect passphrase"
484msgid "Sorry, incorrect passphrase"
481msgstr ""
485msgstr ""
482
486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484msgctxt "passphrase"
488msgctxt "passphrase"
485msgid "Please re-enter"
489msgid "Please re-enter"
486msgstr ""
490msgstr ""
487
491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489msgid "Sorry, incorrect passcode"
493msgid "Sorry, incorrect passcode"
490msgstr ""
494msgstr ""
491
495
po/uz.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-07-04 16:03+0000\n"
11"PO-Revision-Date: 2015-07-04 16:03+0000\n"
12"Last-Translator: Learner <muzaffar.habibullayev@yandex.ru>\n"
12"Last-Translator: Learner <muzaffar.habibullayev@yandex.ru>\n"
13"Language-Team: Uzbek <uz@li.org>\n"
13"Language-Team: Uzbek <uz@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr ""
36msgstr ""
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr ""
40msgstr ""
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277msgid "Closes the current window."
277msgid "Closes the current window."
278msgstr ""
278msgstr ""
279
279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281msgid "Return to Call"
281msgid "Return to Call"
282msgstr ""
282msgstr ""
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Emergency Call"
285msgid "Emergency Call"
286msgstr ""
286msgstr ""
287
287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289msgid "OK"
289msgid "OK"
290msgstr ""
290msgstr ""
291
291
@@ -422,10 +422,14 @@ msgid ""
422"touch pad to interact with the pointer."
422"touch pad to interact with the pointer."
423msgstr ""
423msgstr ""
424
424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426msgid "Unlock"
426msgid "Unlock"
427msgstr ""
427msgstr ""
428
428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429#: qml/Greeter/LoginList.qml:259
433#: qml/Greeter/LoginList.qml:259
430msgid "Retry"
434msgid "Retry"
431msgstr ""
435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458"and all personal data will be deleted."
462"and all personal data will be deleted."
459msgstr ""
463msgstr ""
460
464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462#, qt-format
466#, qt-format
463msgid "Enter %1"
467msgid "Enter %1"
464msgstr ""
468msgstr ""
465
469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467msgid "Enter passphrase"
471msgid "Enter passphrase"
468msgstr ""
472msgstr ""
469
473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471msgid "Enter passcode"
475msgid "Enter passcode"
472msgstr ""
476msgstr ""
473
477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475#, qt-format
479#, qt-format
476msgid "Sorry, incorrect %1"
480msgid "Sorry, incorrect %1"
477msgstr ""
481msgstr ""
478
482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480msgid "Sorry, incorrect passphrase"
484msgid "Sorry, incorrect passphrase"
481msgstr ""
485msgstr ""
482
486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484msgctxt "passphrase"
488msgctxt "passphrase"
485msgid "Please re-enter"
489msgid "Please re-enter"
486msgstr ""
490msgstr ""
487
491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489msgid "Sorry, incorrect passcode"
493msgid "Sorry, incorrect passcode"
490msgstr ""
494msgstr ""
491
495
po/vi.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2014-01-15 01:19+0000\n"
11"PO-Revision-Date: 2014-01-15 01:19+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Vietnamese <vi@li.org>\n"
13"Language-Team: Vietnamese <vi@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr ""
36msgstr ""
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr ""
40msgstr ""
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277msgid "Closes the current window."
277msgid "Closes the current window."
278msgstr ""
278msgstr ""
279
279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281msgid "Return to Call"
281msgid "Return to Call"
282msgstr ""
282msgstr ""
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Emergency Call"
285msgid "Emergency Call"
286msgstr ""
286msgstr ""
287
287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289msgid "OK"
289msgid "OK"
290msgstr ""
290msgstr ""
291
291
@@ -422,10 +422,14 @@ msgid ""
422"touch pad to interact with the pointer."
422"touch pad to interact with the pointer."
423msgstr ""
423msgstr ""
424
424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426msgid "Unlock"
426msgid "Unlock"
427msgstr ""
427msgstr ""
428
428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429#: qml/Greeter/LoginList.qml:259
433#: qml/Greeter/LoginList.qml:259
430msgid "Retry"
434msgid "Retry"
431msgstr ""
435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458"and all personal data will be deleted."
462"and all personal data will be deleted."
459msgstr ""
463msgstr ""
460
464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462#, qt-format
466#, qt-format
463msgid "Enter %1"
467msgid "Enter %1"
464msgstr ""
468msgstr ""
465
469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467msgid "Enter passphrase"
471msgid "Enter passphrase"
468msgstr ""
472msgstr ""
469
473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471msgid "Enter passcode"
475msgid "Enter passcode"
472msgstr ""
476msgstr ""
473
477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475#, qt-format
479#, qt-format
476msgid "Sorry, incorrect %1"
480msgid "Sorry, incorrect %1"
477msgstr ""
481msgstr ""
478
482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480msgid "Sorry, incorrect passphrase"
484msgid "Sorry, incorrect passphrase"
481msgstr ""
485msgstr ""
482
486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484msgctxt "passphrase"
488msgctxt "passphrase"
485msgid "Please re-enter"
489msgid "Please re-enter"
486msgstr ""
490msgstr ""
487
491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489msgid "Sorry, incorrect passcode"
493msgid "Sorry, incorrect passcode"
490msgstr ""
494msgstr ""
491
495
po/wo.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2015-10-29 11:16+0000\n"
11"PO-Revision-Date: 2015-10-29 11:16+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Wolof <wo@li.org>\n"
13"Language-Team: Wolof <wo@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "Génn"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "Dindi"
36msgstr "Dindi"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "Téye nañ jumtukaay"
40msgstr "Téye nañ jumtukaay"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr "Téye nañ la ndax danga duggal ay yoon kàddu-jàll bu baaxul."
44msgstr "Téye nañ la ndax danga duggal ay yoon kàddu-jàll bu baaxul."
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr "Téye nañ la ndax danga duggal ay yoon kàddu-jàll bu baaxul."
48msgstr "Téye nañ la ndax danga duggal ay yoon kàddu-jàll bu baaxul."
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277msgid "Closes the current window."
277msgid "Closes the current window."
278msgstr ""
278msgstr ""
279
279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281msgid "Return to Call"
281msgid "Return to Call"
282msgstr "Dellu ci woote bi"
282msgstr "Dellu ci woote bi"
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Emergency Call"
285msgid "Emergency Call"
286msgstr "Wooteb wallu"
286msgstr "Wooteb wallu"
287
287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289msgid "OK"
289msgid "OK"
290msgstr "OK"
290msgstr "OK"
291
291
@@ -422,10 +422,14 @@ msgid ""
422"touch pad to interact with the pointer."
422"touch pad to interact with the pointer."
423msgstr ""
423msgstr ""
424
424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426msgid "Unlock"
426msgid "Unlock"
427msgstr "Ubbi"
427msgstr "Ubbi"
428
428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429#: qml/Greeter/LoginList.qml:259
433#: qml/Greeter/LoginList.qml:259
430msgid "Retry"
434msgid "Retry"
431msgstr "Jéemaat"
435msgstr "Jéemaat"
@@ -462,34 +466,34 @@ msgstr ""
462"Su baatu-jàll bi dugg baaxul, sa wootekaay di nañ ko delloo nimu meloon ci "
466"Su baatu-jàll bi dugg baaxul, sa wootekaay di nañ ko delloo nimu meloon ci "
463"defaram te sa bépp njoxe di nañ ko far."
467"defaram te sa bépp njoxe di nañ ko far."
464
468
465−#: qml/Greeter/NarrowView.qml:116
469+#: qml/Greeter/NarrowView.qml:129
466#, qt-format
470#, qt-format
467msgid "Enter %1"
471msgid "Enter %1"
468msgstr "Bindal %1"
472msgstr "Bindal %1"
469
473
470−#: qml/Greeter/NarrowView.qml:117
474+#: qml/Greeter/NarrowView.qml:130
471msgid "Enter passphrase"
475msgid "Enter passphrase"
472msgstr "Duggal kàddu-jàll"
476msgstr "Duggal kàddu-jàll"
473
477
474−#: qml/Greeter/NarrowView.qml:118
478+#: qml/Greeter/NarrowView.qml:131
475msgid "Enter passcode"
479msgid "Enter passcode"
476msgstr "Duggal baatu-jàll"
480msgstr "Duggal baatu-jàll"
477
481
478−#: qml/Greeter/NarrowView.qml:119
482+#: qml/Greeter/NarrowView.qml:135
479#, qt-format
483#, qt-format
480msgid "Sorry, incorrect %1"
484msgid "Sorry, incorrect %1"
481msgstr "Jéggalu, %1 baaxul"
485msgstr "Jéggalu, %1 baaxul"
482
486
483−#: qml/Greeter/NarrowView.qml:120
487+#: qml/Greeter/NarrowView.qml:136
484msgid "Sorry, incorrect passphrase"
488msgid "Sorry, incorrect passphrase"
485msgstr "Jéggalu, kàddu-jàll gi baaxul"
489msgstr "Jéggalu, kàddu-jàll gi baaxul"
486
490
487−#: qml/Greeter/NarrowView.qml:121
491+#: qml/Greeter/NarrowView.qml:137
488msgctxt "passphrase"
492msgctxt "passphrase"
489msgid "Please re-enter"
493msgid "Please re-enter"
490msgstr "Di la ñaan nga duggalaat"
494msgstr "Di la ñaan nga duggalaat"
491
495
492−#: qml/Greeter/NarrowView.qml:122
496+#: qml/Greeter/NarrowView.qml:138
493msgid "Sorry, incorrect passcode"
497msgid "Sorry, incorrect passcode"
494msgstr "Jéggalu, baatu-jàll bi baaxul"
498msgstr "Jéggalu, baatu-jàll bi baaxul"
495
499
po/xh.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2013-09-28 13:20+0000\n"
11"PO-Revision-Date: 2013-09-28 13:20+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Xhosa <xh@li.org>\n"
13"Language-Team: Xhosa <xh@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr ""
36msgstr ""
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr ""
40msgstr ""
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277msgid "Closes the current window."
277msgid "Closes the current window."
278msgstr ""
278msgstr ""
279
279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281msgid "Return to Call"
281msgid "Return to Call"
282msgstr ""
282msgstr ""
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Emergency Call"
285msgid "Emergency Call"
286msgstr ""
286msgstr ""
287
287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289msgid "OK"
289msgid "OK"
290msgstr ""
290msgstr ""
291
291
@@ -422,10 +422,14 @@ msgid ""
422"touch pad to interact with the pointer."
422"touch pad to interact with the pointer."
423msgstr ""
423msgstr ""
424
424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426msgid "Unlock"
426msgid "Unlock"
427msgstr ""
427msgstr ""
428
428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429#: qml/Greeter/LoginList.qml:259
433#: qml/Greeter/LoginList.qml:259
430msgid "Retry"
434msgid "Retry"
431msgstr ""
435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458"and all personal data will be deleted."
462"and all personal data will be deleted."
459msgstr ""
463msgstr ""
460
464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462#, qt-format
466#, qt-format
463msgid "Enter %1"
467msgid "Enter %1"
464msgstr ""
468msgstr ""
465
469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467msgid "Enter passphrase"
471msgid "Enter passphrase"
468msgstr ""
472msgstr ""
469
473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471msgid "Enter passcode"
475msgid "Enter passcode"
472msgstr ""
476msgstr ""
473
477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475#, qt-format
479#, qt-format
476msgid "Sorry, incorrect %1"
480msgid "Sorry, incorrect %1"
477msgstr ""
481msgstr ""
478
482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480msgid "Sorry, incorrect passphrase"
484msgid "Sorry, incorrect passphrase"
481msgstr ""
485msgstr ""
482
486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484msgctxt "passphrase"
488msgctxt "passphrase"
485msgid "Please re-enter"
489msgid "Please re-enter"
486msgstr ""
490msgstr ""
487
491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489msgid "Sorry, incorrect passcode"
493msgid "Sorry, incorrect passcode"
490msgstr ""
494msgstr ""
491
495
po/zh_CN.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2016-04-13 06:27+0000\n"
11"PO-Revision-Date: 2016-04-13 06:27+0000\n"
12"Last-Translator: YunQiang Su <wzssyqa@gmail.com>\n"
12"Last-Translator: YunQiang Su <wzssyqa@gmail.com>\n"
13"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
13"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr "退出"
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "取消固定快捷方式"
36msgstr "取消固定快捷方式"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr "设备锁定"
40msgstr "设备锁定"
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr "您因太多失败的口令密语尝试而被锁定。"
44msgstr "您因太多失败的口令密语尝试而被锁定。"
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr "您因太多失败的密码尝试而被锁定。"
48msgstr "您因太多失败的密码尝试而被锁定。"
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -278,15 +278,15 @@ msgstr ""
278msgid "Closes the current window."
278msgid "Closes the current window."
279msgstr ""
279msgstr ""
280
280
281−#: qml/Components/Lockscreen.qml:231
281+#: qml/Components/Lockscreen.qml:239
282msgid "Return to Call"
282msgid "Return to Call"
283msgstr "回到呼叫"
283msgstr "回到呼叫"
284
284
285−#: qml/Components/Lockscreen.qml:231
285+#: qml/Components/Lockscreen.qml:239
286msgid "Emergency Call"
286msgid "Emergency Call"
287msgstr "紧急呼叫"
287msgstr "紧急呼叫"
288
288
289−#: qml/Components/Lockscreen.qml:263
289+#: qml/Components/Lockscreen.qml:271
290msgid "OK"
290msgid "OK"
291msgstr "确定"
291msgstr "确定"
292
292
@@ -423,10 +423,14 @@ msgid ""
423"touch pad to interact with the pointer."
423"touch pad to interact with the pointer."
424msgstr "你的设备现在已经连接到一个外部显示。将这个屏幕当作一块触控板使用来与指针互动。"
424msgstr "你的设备现在已经连接到一个外部显示。将这个屏幕当作一块触控板使用来与指针互动。"
425
425
426−#: qml/Greeter/CoverPage.qml:119
426+#: qml/Greeter/CoverPage.qml:127
427msgid "Unlock"
427msgid "Unlock"
428msgstr "解锁"
428msgstr "解锁"
429
429
430+#: qml/Greeter/Greeter.qml:536
431+msgid "Try again"
432+msgstr ""
433+
430#: qml/Greeter/LoginList.qml:259
434#: qml/Greeter/LoginList.qml:259
431msgid "Retry"
435msgid "Retry"
432msgstr "重试"
436msgstr "重试"
@@ -459,34 +463,34 @@ msgid ""
459"and all personal data will be deleted."
463"and all personal data will be deleted."
460msgstr "如果输入的密码不正确,您的手机将恢复到出厂设置并且所有的个人数据将被删除。"
464msgstr "如果输入的密码不正确,您的手机将恢复到出厂设置并且所有的个人数据将被删除。"
461
465
462−#: qml/Greeter/NarrowView.qml:116
466+#: qml/Greeter/NarrowView.qml:129
463#, qt-format
467#, qt-format
464msgid "Enter %1"
468msgid "Enter %1"
465msgstr "输入 %1"
469msgstr "输入 %1"
466
470
467−#: qml/Greeter/NarrowView.qml:117
471+#: qml/Greeter/NarrowView.qml:130
468msgid "Enter passphrase"
472msgid "Enter passphrase"
469msgstr "输入口令密语"
473msgstr "输入口令密语"
470
474
471−#: qml/Greeter/NarrowView.qml:118
475+#: qml/Greeter/NarrowView.qml:131
472msgid "Enter passcode"
476msgid "Enter passcode"
473msgstr "输入密码"
477msgstr "输入密码"
474
478
475−#: qml/Greeter/NarrowView.qml:119
479+#: qml/Greeter/NarrowView.qml:135
476#, qt-format
480#, qt-format
477msgid "Sorry, incorrect %1"
481msgid "Sorry, incorrect %1"
478msgstr "对不起,%1 不正确"
482msgstr "对不起,%1 不正确"
479
483
480−#: qml/Greeter/NarrowView.qml:120
484+#: qml/Greeter/NarrowView.qml:136
481msgid "Sorry, incorrect passphrase"
485msgid "Sorry, incorrect passphrase"
482msgstr "对不起,密语不正确"
486msgstr "对不起,密语不正确"
483
487
484−#: qml/Greeter/NarrowView.qml:121
488+#: qml/Greeter/NarrowView.qml:137
485msgctxt "passphrase"
489msgctxt "passphrase"
486msgid "Please re-enter"
490msgid "Please re-enter"
487msgstr "请重新输入"
491msgstr "请重新输入"
488
492
489−#: qml/Greeter/NarrowView.qml:122
493+#: qml/Greeter/NarrowView.qml:138
490msgid "Sorry, incorrect passcode"
494msgid "Sorry, incorrect passcode"
491msgstr "对不起,密码错误"
495msgstr "对不起,密码错误"
492
496
po/zh_HK.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2014-08-10 11:45+0000\n"
11"PO-Revision-Date: 2014-08-10 11:45+0000\n"
12"Last-Translator: Daniel Cheung <daniel.2345@hotmail.com>\n"
12"Last-Translator: Daniel Cheung <daniel.2345@hotmail.com>\n"
13"Language-Team: Chinese (Hong Kong) <zh_HK@li.org>\n"
13"Language-Team: Chinese (Hong Kong) <zh_HK@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20
20
21#: plugins/IntegratedLightDM/Greeter.cpp:112
21#: plugins/IntegratedLightDM/Greeter.cpp:112
22msgid "Password: "
22msgid "Password: "
@@ -35,19 +35,19 @@ msgstr ""
35msgid "Unpin shortcut"
35msgid "Unpin shortcut"
36msgstr "取消捷徑釘選"
36msgstr "取消捷徑釘選"
37
37
38−#: qml/Components/DelayedLockscreen.qml:49
38+#: qml/Components/DelayedLockscreen.qml:50
39msgid "Device Locked"
39msgid "Device Locked"
40msgstr ""
40msgstr ""
41
41
42−#: qml/Components/DelayedLockscreen.qml:64
42+#: qml/Components/DelayedLockscreen.qml:65
43msgid "You have been locked out due to too many failed passphrase attempts."
43msgid "You have been locked out due to too many failed passphrase attempts."
44msgstr ""
44msgstr ""
45
45
46−#: qml/Components/DelayedLockscreen.qml:65
46+#: qml/Components/DelayedLockscreen.qml:66
47msgid "You have been locked out due to too many failed passcode attempts."
47msgid "You have been locked out due to too many failed passcode attempts."
48msgstr ""
48msgstr ""
49
49
50−#: qml/Components/DelayedLockscreen.qml:74
50+#: qml/Components/DelayedLockscreen.qml:75
51#, qt-format
51#, qt-format
52msgid "Please wait %1 minute and then try again…"
52msgid "Please wait %1 minute and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
53msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277msgid "Closes the current window."
277msgid "Closes the current window."
278msgstr ""
278msgstr ""
279
279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281msgid "Return to Call"
281msgid "Return to Call"
282msgstr ""
282msgstr ""
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Emergency Call"
285msgid "Emergency Call"
286msgstr "緊急電話"
286msgstr "緊急電話"
287
287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289msgid "OK"
289msgid "OK"
290msgstr "確定"
290msgstr "確定"
291
291
@@ -422,10 +422,14 @@ msgid ""
422"touch pad to interact with the pointer."
422"touch pad to interact with the pointer."
423msgstr ""
423msgstr ""
424
424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426msgid "Unlock"
426msgid "Unlock"
427msgstr ""
427msgstr ""
428
428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429#: qml/Greeter/LoginList.qml:259
433#: qml/Greeter/LoginList.qml:259
430msgid "Retry"
434msgid "Retry"
431msgstr ""
435msgstr ""
@@ -458,34 +462,34 @@ msgid ""
458"and all personal data will be deleted."
462"and all personal data will be deleted."
459msgstr ""
463msgstr ""
460
464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462#, qt-format
466#, qt-format
463msgid "Enter %1"
467msgid "Enter %1"
464msgstr ""
468msgstr ""
465
469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467msgid "Enter passphrase"
471msgid "Enter passphrase"
468msgstr ""
472msgstr ""
469
473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471msgid "Enter passcode"
475msgid "Enter passcode"
472msgstr ""
476msgstr ""
473
477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475#, qt-format
479#, qt-format
476msgid "Sorry, incorrect %1"
480msgid "Sorry, incorrect %1"
477msgstr ""
481msgstr ""
478
482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480msgid "Sorry, incorrect passphrase"
484msgid "Sorry, incorrect passphrase"
481msgstr ""
485msgstr ""
482
486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484msgctxt "passphrase"
488msgctxt "passphrase"
485msgid "Please re-enter"
489msgid "Please re-enter"
486msgstr ""
490msgstr ""
487
491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489msgid "Sorry, incorrect passcode"
493msgid "Sorry, incorrect passcode"
490msgstr ""
494msgstr ""
491
495
po/zh_TW.po+22−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-06-17 01:22+0000\n"
10+"POT-Creation-Date: 2016-06-20 20:25+0000\n"
11"PO-Revision-Date: 2016-02-24 04:40+0000\n"
11"PO-Revision-Date: 2016-02-24 04:40+0000\n"
12"Last-Translator: Po-Hsu Lin <po-hsu.lin@canonical.com>\n"
12"Last-Translator: Po-Hsu Lin <po-hsu.lin@canonical.com>\n"
13"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
13"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-06-19 05:55+0000\n"
18+"X-Launchpad-Export-Date: 2016-06-26 06:01+0000\n"
19−"X-Generator: Launchpad (build 18097)\n"
19+"X-Generator: Launchpad (build 18111)\n"
20"Language: zh_TW\n"
20"Language: zh_TW\n"
21
21
22#: plugins/IntegratedLightDM/Greeter.cpp:112
22#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -36,19 +36,19 @@ msgstr "結束"
36msgid "Unpin shortcut"
36msgid "Unpin shortcut"
37msgstr "取消捷徑釘選"
37msgstr "取消捷徑釘選"
38
38
39−#: qml/Components/DelayedLockscreen.qml:49
39+#: qml/Components/DelayedLockscreen.qml:50
40msgid "Device Locked"
40msgid "Device Locked"
41msgstr "裝置已鎖定"
41msgstr "裝置已鎖定"
42
42
43−#: qml/Components/DelayedLockscreen.qml:64
43+#: qml/Components/DelayedLockscreen.qml:65
44msgid "You have been locked out due to too many failed passphrase attempts."
44msgid "You have been locked out due to too many failed passphrase attempts."
45msgstr "因為嘗試輸入太多次錯誤的密碼,裝置已經被鎖定。"
45msgstr "因為嘗試輸入太多次錯誤的密碼,裝置已經被鎖定。"
46
46
47−#: qml/Components/DelayedLockscreen.qml:65
47+#: qml/Components/DelayedLockscreen.qml:66
48msgid "You have been locked out due to too many failed passcode attempts."
48msgid "You have been locked out due to too many failed passcode attempts."
49msgstr "因為嘗試輸入太多次錯誤的密碼,裝置已經被鎖定。"
49msgstr "因為嘗試輸入太多次錯誤的密碼,裝置已經被鎖定。"
50
50
51−#: qml/Components/DelayedLockscreen.qml:74
51+#: qml/Components/DelayedLockscreen.qml:75
52#, qt-format
52#, qt-format
53msgid "Please wait %1 minute and then try again…"
53msgid "Please wait %1 minute and then try again…"
54msgid_plural "Please wait %1 minutes and then try again…"
54msgid_plural "Please wait %1 minutes and then try again…"
@@ -277,15 +277,15 @@ msgstr ""
277msgid "Closes the current window."
277msgid "Closes the current window."
278msgstr ""
278msgstr ""
279
279
280−#: qml/Components/Lockscreen.qml:231
280+#: qml/Components/Lockscreen.qml:239
281msgid "Return to Call"
281msgid "Return to Call"
282msgstr "返回通話"
282msgstr "返回通話"
283
283
284−#: qml/Components/Lockscreen.qml:231
284+#: qml/Components/Lockscreen.qml:239
285msgid "Emergency Call"
285msgid "Emergency Call"
286msgstr "緊急通話"
286msgstr "緊急通話"
287
287
288−#: qml/Components/Lockscreen.qml:263
288+#: qml/Components/Lockscreen.qml:271
289msgid "OK"
289msgid "OK"
290msgstr "確定"
290msgstr "確定"
291
291
@@ -422,10 +422,14 @@ msgid ""
422"touch pad to interact with the pointer."
422"touch pad to interact with the pointer."
423msgstr ""
423msgstr ""
424
424
425−#: qml/Greeter/CoverPage.qml:119
425+#: qml/Greeter/CoverPage.qml:127
426msgid "Unlock"
426msgid "Unlock"
427msgstr "解鎖"
427msgstr "解鎖"
428
428
429+#: qml/Greeter/Greeter.qml:536
430+msgid "Try again"
431+msgstr ""
432+
429#: qml/Greeter/LoginList.qml:259
433#: qml/Greeter/LoginList.qml:259
430msgid "Retry"
434msgid "Retry"
431msgstr "重試"
435msgstr "重試"
@@ -458,34 +462,34 @@ msgid ""
458"and all personal data will be deleted."
462"and all personal data will be deleted."
459msgstr "如輸入的通關碼不對,本電話會進行重設,所有個人資料都會刪除。"
463msgstr "如輸入的通關碼不對,本電話會進行重設,所有個人資料都會刪除。"
460
464
461−#: qml/Greeter/NarrowView.qml:116
465+#: qml/Greeter/NarrowView.qml:129
462#, qt-format
466#, qt-format
463msgid "Enter %1"
467msgid "Enter %1"
464msgstr "輸入 %1"
468msgstr "輸入 %1"
465
469
466−#: qml/Greeter/NarrowView.qml:117
470+#: qml/Greeter/NarrowView.qml:130
467msgid "Enter passphrase"
471msgid "Enter passphrase"
468msgstr "輸入密語"
472msgstr "輸入密語"
469
473
470−#: qml/Greeter/NarrowView.qml:118
474+#: qml/Greeter/NarrowView.qml:131
471msgid "Enter passcode"
475msgid "Enter passcode"
472msgstr "輸入通關碼"
476msgstr "輸入通關碼"
473
477
474−#: qml/Greeter/NarrowView.qml:119
478+#: qml/Greeter/NarrowView.qml:135
475#, qt-format
479#, qt-format
476msgid "Sorry, incorrect %1"
480msgid "Sorry, incorrect %1"
477msgstr "抱歉,%1不對"
481msgstr "抱歉,%1不對"
478
482
479−#: qml/Greeter/NarrowView.qml:120
483+#: qml/Greeter/NarrowView.qml:136
480msgid "Sorry, incorrect passphrase"
484msgid "Sorry, incorrect passphrase"
481msgstr "抱歉,密語不對"
485msgstr "抱歉,密語不對"
482
486
483−#: qml/Greeter/NarrowView.qml:121
487+#: qml/Greeter/NarrowView.qml:137
484msgctxt "passphrase"
488msgctxt "passphrase"
485msgid "Please re-enter"
489msgid "Please re-enter"
486msgstr "請再輸入"
490msgstr "請再輸入"
487
491
488−#: qml/Greeter/NarrowView.qml:122
492+#: qml/Greeter/NarrowView.qml:138
489msgid "Sorry, incorrect passcode"
493msgid "Sorry, incorrect passcode"
490msgstr "抱歉,通關碼不對"
494msgstr "抱歉,通關碼不對"
491
495
qml/Components/DelayedLockscreen.qml+1
@@ -28,6 +28,7 @@ Item {
28 signal cancel() // unused
28 signal cancel() // unused
29
29
30 function clear(playAnimation) {}
30 function clear(playAnimation) {}
31+ function showText(text) {}
31
32
32 Column {
33 Column {
33 anchors.left: parent.left
34 anchors.left: parent.left
qml/Components/LazyImage.qml+3−1
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013-2016 Canonical, Ltd.
3 *
3 *
4 * Authors:
4 * Authors:
5 * Michał Sawicz <michal.sawicz@canonical.com>
5 * Michał Sawicz <michal.sawicz@canonical.com>
@@ -29,6 +29,7 @@ Item {
29
29
30 property real initialWidth: scaleTo == "width" || scaleTo == "fit" ? width : units.gu(10)
30 property real initialWidth: scaleTo == "width" || scaleTo == "fit" ? width : units.gu(10)
31 property real initialHeight: scaleTo == "height" || scaleTo == "fit" ? height : units.gu(10)
31 property real initialHeight: scaleTo == "height" || scaleTo == "fit" ? height : units.gu(10)
32+ property real lastScaledDimension: scaleTo == "height" || scaleTo == "fit" ? width : height
32
33
33 property alias sourceSize: image.sourceSize
34 property alias sourceSize: image.sourceSize
34 property alias asynchronous: image.asynchronous
35 property alias asynchronous: image.asynchronous
@@ -168,6 +169,7 @@ Item {
168 easing.type: Easing.Linear; duration: UbuntuAnimation.SnapDuration
169 easing.type: Easing.Linear; duration: UbuntuAnimation.SnapDuration
169 }
170 }
170 }
171 }
172+ ScriptAction { script: { lastScaledDimension = scaleTo == "height" || scaleTo == "fit" ? root.width : root.height } }
171 }
173 }
172 },
174 },
173
175
qml/Components/ListItems/graphics/ListItemDividerHorizontal@18.png

Binary file not shown.

qml/Components/Lockscreen.qml+8
@@ -91,6 +91,14 @@ Showable {
91 popup.z = Number.MAX_VALUE
91 popup.z = Number.MAX_VALUE
92 }
92 }
93
93
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+
94 Rectangle {
102 Rectangle {
95 // In case background fails to load
103 // In case background fails to load
96 id: backgroundBackup
104 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 {
43 }
43 }
44 }
44 }
45
45
46+ function showText(text) {
47+ pinentryField.text = text;
48+ }
49+
46 Column {
50 Column {
47 id: shakeContainer
51 id: shakeContainer
48 anchors.horizontalCenter: parent.horizontalCenter
52 anchors.horizontalCenter: parent.horizontalCenter
qml/Components/PinLockscreen.qml+4
@@ -46,6 +46,10 @@ FocusScope {
46 }
46 }
47 }
47 }
48
48
49+ function showText(text) {
50+ pinentryField.text = text;
51+ }
52+
49 Keys.onPressed: {
53 Keys.onPressed: {
50 if (pinentryField.text.length == root.maxPinLength)
54 if (pinentryField.text.length == root.maxPinLength)
51 return;
55 return;
qml/Dash/Previews/PreviewSharing.qml → qml/Components/SharingPicker.qmlrenamed+2−14
@@ -20,8 +20,6 @@ import Ubuntu.Content 1.1
20
20
21Item {
21Item {
22 id: root
22 id: root
23− implicitHeight: button.height
24− implicitWidth: button.width
25
23
26 property var shareData
24 property var shareData
27 property alias active: peerPicker.active
25 property alias active: peerPicker.active
@@ -30,18 +28,8 @@ Item {
30 readonly property var url: shareData ? shareData["uri"] : ""
28 readonly property var url: shareData ? shareData["uri"] : ""
31 readonly property Item rootItem: QuickUtils.rootItem(root)
29 readonly property Item rootItem: QuickUtils.rootItem(root)
32
30
33− AbstractButton {
31+ function showPeerPicker() {
34− id: button
35− height: units.gu(4)
36− width: units.gu(4)
37− onClicked: peerPicker.visible = true
32+ 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− }
45 }
33 }
46
34
47 function createExportedItems(url) {
35 function createExportedItems(url) {
qml/Components/WindowControlButtons.qml+2
@@ -29,6 +29,7 @@ Row {
29 property bool active: false
29 property bool active: false
30 property bool windowIsMaximized: false
30 property bool windowIsMaximized: false
31 property bool closeButtonShown: true
31 property bool closeButtonShown: true
32+ property bool maximizeButtonShown: true
32 property bool overlayShown
33 property bool overlayShown
33
34
34 signal closeClicked()
35 signal closeClicked()
@@ -88,6 +89,7 @@ Row {
88 hoverEnabled: true
89 hoverEnabled: true
89 height: parent.height
90 height: parent.height
90 width: height
91 width: height
92+ visible: root.maximizeButtonShown
91 acceptedButtons: Qt.LeftButton | Qt.RightButton | Qt.MiddleButton
93 acceptedButtons: Qt.LeftButton | Qt.RightButton | Qt.MiddleButton
92 onClicked: {
94 onClicked: {
93 if (mouse.button == Qt.LeftButton) {
95 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 @@
15 */
15 */
16
16
17import QtQuick 2.4
17import QtQuick 2.4
18+import Ubuntu.Components 1.3
18import Dash 0.1
19import Dash 0.1
19
20
20/*!
21/*!
@@ -141,7 +142,7 @@ Item {
141 type:real \brief Height of the card's header.
142 type:real \brief Height of the card's header.
142 */
143 */
143 readonly property int headerHeight: cardLoader.item ? cardLoader.item.headerHeight : 0
144 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)
145
146
146 QtObject {
147 QtObject {
147 id: carouselTool
148 id: carouselTool
qml/Dash/DashApplication.qml+16−5
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2014,2015 Canonical, Ltd.
2+ * Copyright (C) 2014-2016 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
@@ -15,14 +15,25 @@
15 */
15 */
16
16
17import QtQuick 2.4
17import QtQuick 2.4
18+import QtQuick.Window 2.2
18import Ubuntu.Components 1.3
19import Ubuntu.Components 1.3
19import Ubuntu.Thumbnailer 0.1 // Register support for image://thumbnailer/ and image://albumart/
20import Ubuntu.Thumbnailer 0.1 // Register support for image://thumbnailer/ and image://albumart/
20
21
21−MainView {
22+Window {
22− implicitWidth: units.gu(40)
23+ visible: true
23− implicitHeight: units.gu(68)
24+ title: "Scopes" // Intentionally not translated
24
25
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 {
26 anchors.fill: parent
33 anchors.fill: parent
34+
35+ Dash {
36+ anchors.fill: parent
37+ }
27 }
38 }
28}
39}
qml/Dash/Previews/Preview.qml+16
@@ -37,12 +37,16 @@ Item {
37 //! \brief The ScopeStyle component.
37 //! \brief The ScopeStyle component.
38 property var scopeStyle: null
38 property var scopeStyle: null
39
39
40+ //! Should the orientation be locked
41+ property int orientationLockCount: 0
42+
40 clip: true
43 clip: true
41
44
42 Binding {
45 Binding {
43 target: previewModel
46 target: previewModel
44 property: "widgetColumnCount"
47 property: "widgetColumnCount"
45 value: row.columns
48 value: row.columns
49+ when: root.orientationLockCount === 0
46 }
50 }
47
51
48 MouseArea {
52 MouseArea {
@@ -110,6 +114,18 @@ Item {
110 column.forceLayout();
114 column.forceLayout();
111 column.positionViewAtIndex(index, ListView.Contain)
115 column.positionViewAtIndex(index, ListView.Contain)
112 }
116 }
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+ }
113 }
129 }
114 }
130 }
115 }
131 }
qml/Dash/Previews/PreviewImageGallery.qml+2
@@ -27,6 +27,8 @@ PreviewWidget {
27 id: root
27 id: root
28 implicitHeight: units.gu(22)
28 implicitHeight: units.gu(22)
29
29
30+ orientationLock: overlay.visible
31+
30 property Item rootItem: QuickUtils.rootItem(root)
32 property Item rootItem: QuickUtils.rootItem(root)
31
33
32 ListView {
34 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
19import "../../Components"
19import "../../Components"
20
20
21Rectangle {
21Rectangle {
22− property alias shareData: sharingWidget.shareData
22+ property alias shareData: sharingPicker.shareData
23
23
24 implicitHeight: units.gu(6)
24 implicitHeight: units.gu(6)
25 color: Qt.rgba(0, 0, 0, 0.8)
25 color: Qt.rgba(0, 0, 0, 0.8)
26− visible: sharingWidget.active
26+ visible: sharingPicker.active
27
27
28− PreviewSharing {
28+ Action {
29− id: sharingWidget
29+ id: sharingAction
30− objectName: "sharingWidget"
30+ iconName: "share"
31+ onTriggered: sharingPicker.showPeerPicker()
32+ }
33+
34+ AbstractButton {
35+ id: button
31 anchors {
36 anchors {
32 left: parent.left
37 left: parent.left
33 verticalCenter: parent.verticalCenter
38 verticalCenter: parent.verticalCenter
34 leftMargin: units.gu(1)
39 leftMargin: units.gu(1)
35 }
40 }
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"
36 }
56 }
37}
57}
qml/Dash/Previews/PreviewRatingEdit.qml+4−1
@@ -73,7 +73,10 @@ PreviewWidget {
73 ratingValue: widgetData["rating"]
73 ratingValue: widgetData["rating"]
74 reviewText: widgetData["review"]
74 reviewText: widgetData["review"]
75
75
76+ onTriggered: {
76− onTriggered: root.triggered(widgetId, actionId, data);
77+ root.triggered(widgetId, actionId, data);
78+ display.visible = true;
79+ }
77 onMakeSureVisible: root.makeSureVisible(item);
80 onMakeSureVisible: root.makeSureVisible(item);
78 }
81 }
79
82
qml/Dash/Previews/PreviewWidget.qml+3
@@ -31,6 +31,9 @@ Item {
31 //! Should the widget show in expanded mode (For those that support it)
31 //! Should the widget show in expanded mode (For those that support it)
32 property bool expanded: true
32 property bool expanded: true
33
33
34+ //! Should the orientation be locked
35+ property bool orientationLock: false
36+
34 //! Set margins width.
37 //! Set margins width.
35 property real widgetMargins: units.gu(1)
38 property real widgetMargins: units.gu(1)
36
39
qml/Dash/Previews/PreviewWidgetFactory.qml+11−1
@@ -37,6 +37,9 @@ Loader {
37 //! Should the widget show in expanded mode (For those that support it)
37 //! Should the widget show in expanded mode (For those that support it)
38 property bool expanded: widgetType !== "expandable" || widgetData["expanded"] === true
38 property bool expanded: widgetType !== "expandable" || widgetData["expanded"] === true
39
39
40+ //! Should the orientation be locked
41+ readonly property bool orientationLock: status === Loader.Ready ? item.orientationLock : false
42+
40 //! Set margins width.
43 //! Set margins width.
41 property real widgetMargins: status === Loader.Ready ? item.widgetMargins : units.gu(1)
44 property real widgetMargins: status === Loader.Ready ? item.widgetMargins : units.gu(1)
42
45
@@ -70,7 +73,14 @@ Loader {
70 case "reviews": return "PreviewRatingDisplay.qml";
73 case "reviews": return "PreviewRatingDisplay.qml";
71 case "table": return "PreviewTable.qml";
74 case "table": return "PreviewTable.qml";
72 case "text": return "PreviewTextSummary.qml";
75 case "text": return "PreviewTextSummary.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) {
73− case "video": return "PreviewVideoPlayback.qml";
80+ return "PreviewVideoPlayback.qml";
81+ }
82+ return "PreviewInlineVideo.qml";
83+ }
74 default: return "";
84 default: return "";
75 }
85 }
76 }
86 }
qml/Dash/Previews/PreviewZoomableImage.qml+1
@@ -31,6 +31,7 @@ PreviewWidget {
31 implicitHeight: lazyImage.height
31 implicitHeight: lazyImage.height
32
32
33 widgetMargins: -units.gu(1)
33 widgetMargins: -units.gu(1)
34+ orientationLock: overlay.visible
34
35
35 property Item rootItem: QuickUtils.rootItem(root)
36 property Item rootItem: QuickUtils.rootItem(root)
36
37
qml/Dash/ScopesList.qml+1
@@ -72,6 +72,7 @@ Item {
72 }
72 }
73
73
74 Flickable {
74 Flickable {
75+ objectName: "scopesListFlickable"
75 anchors {
76 anchors {
76 top: header.bottom
77 top: header.bottom
77 bottom: parent.bottom
78 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 {
41 hide();
41 hide();
42 }
42 }
43
43
44+ function showErrorMessage(msg) {
45+ d.errorMessage = msg;
46+ showLabelAnimation.start();
47+ errorMessageAnimation.start();
48+ }
49+
44 QtObject {
50 QtObject {
45 id: d
51 id: d
46 property bool forceRightOnNextHideAnimation: false
52 property bool forceRightOnNextHideAnimation: false
53+ property string errorMessage
47 }
54 }
48
55
49 prepareToHide: function () {
56 prepareToHide: function () {
@@ -111,15 +118,18 @@ Showable {
111
118
112 Label {
119 Label {
113 id: swipeHint
120 id: swipeHint
121+ objectName: "swipeHint"
114 property real baseOpacity: 0.5
122 property real baseOpacity: 0.5
115 opacity: 0.0
123 opacity: 0.0
116 anchors.horizontalCenter: parent.horizontalCenter
124 anchors.horizontalCenter: parent.horizontalCenter
117 anchors.bottom: parent.bottom
125 anchors.bottom: parent.bottom
118 anchors.bottomMargin: units.gu(5)
126 anchors.bottomMargin: units.gu(5)
119− text: "《 " + i18n.tr("Unlock") + " 》"
127+ text: "《 " + (d.errorMessage ? d.errorMessage : i18n.tr("Unlock")) + " 》"
120 color: "white"
128 color: "white"
121 font.weight: Font.Light
129 font.weight: Font.Light
122
130
131+ readonly property var opacityAnimation: showLabelAnimation // for testing
132+
123 SequentialAnimation on opacity {
133 SequentialAnimation on opacity {
124 id: showLabelAnimation
134 id: showLabelAnimation
125 running: false
135 running: false
@@ -136,9 +146,20 @@ Showable {
136 to: 0.0
146 to: 0.0
137 duration: UbuntuAnimation.SleepyDuration
147 duration: UbuntuAnimation.SleepyDuration
138 }
148 }
149+
150+ onRunningChanged: {
151+ if (!running)
152+ d.errorMessage = "";
153+ }
139 }
154 }
140 }
155 }
141
156
157+ WrongPasswordAnimation {
158+ id: errorMessageAnimation
159+ objectName: "errorMessageAnimation"
160+ target: swipeHint
161+ }
162+
142 DragHandle {
163 DragHandle {
143 id: dragHandle
164 id: dragHandle
144 objectName: "coverPageDragHandle"
165 objectName: "coverPageDragHandle"
qml/Greeter/Greeter.qml+101−5
@@ -16,7 +16,9 @@
16
16
17import QtQuick 2.4
17import QtQuick 2.4
18import AccountsService 0.1
18import AccountsService 0.1
19+import Biometryd 0.0
19import GSettings 1.0
20import GSettings 1.0
21+import Powerd 0.1
20import Ubuntu.Components 1.3
22import Ubuntu.Components 1.3
21import Ubuntu.SystemImage 0.1
23import Ubuntu.SystemImage 0.1
22import Unity.Launcher 0.1
24import Unity.Launcher 0.1
@@ -39,6 +41,8 @@ Showable {
39 readonly property bool active: required || hasLockedApp
41 readonly property bool active: required || hasLockedApp
40 readonly property bool fullyShown: loader.item ? loader.item.fullyShown : false
42 readonly property bool fullyShown: loader.item ? loader.item.fullyShown : false
41
43
44+ property bool allowFingerprint: true
45+
42 // True when the greeter is waiting for PAM or other setup process
46 // True when the greeter is waiting for PAM or other setup process
43 readonly property alias waiting: d.waiting
47 readonly property alias waiting: d.waiting
44
48
@@ -54,6 +58,7 @@ Showable {
54 property int maxFailedLogins: -1 // disabled by default for now, will enable via settings in future
58 property int maxFailedLogins: -1 // disabled by default for now, will enable via settings in future
55 property int failedLoginsDelayAttempts: 7 // number of failed logins
59 property int failedLoginsDelayAttempts: 7 // number of failed logins
56 property real failedLoginsDelayMinutes: 5 // minutes of forced waiting
60 property real failedLoginsDelayMinutes: 5 // minutes of forced waiting
61+ property int failedFingerprintLoginsDisableAttempts: 3 // number of failed fingerprint logins
57
62
58 readonly property bool animating: loader.item ? loader.item.animating : false
63 readonly property bool animating: loader.item ? loader.item.animating : false
59
64
@@ -62,6 +67,9 @@ Showable {
62 signal emergencyCall()
67 signal emergencyCall()
63
68
64 function forceShow() {
69 function forceShow() {
70+ if (!active) {
71+ d.isLockscreen = true;
72+ }
65 forcedUnlock = false;
73 forcedUnlock = false;
66 if (!required) {
74 if (!required) {
67 showNow(); // loader.onLoaded will select a user
75 showNow(); // loader.onLoaded will select a user
@@ -121,6 +129,11 @@ Showable {
121 readonly property int selectUserIndex: d.getUserIndex(LightDMService.greeter.selectUser)
129 readonly property int selectUserIndex: d.getUserIndex(LightDMService.greeter.selectUser)
122 property int currentIndex: Math.max(selectUserIndex, 0)
130 property int currentIndex: Math.max(selectUserIndex, 0)
123 property bool waiting
131 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
124
137
125 // We want 'launcherOffset' to animate down to zero. But not to animate
138 // We want 'launcherOffset' to animate down to zero. But not to animate
126 // while being dragged. So ideally we change this only when the user
139 // while being dragged. So ideally we change this only when the user
@@ -169,7 +182,7 @@ Showable {
169 if (LightDMService.greeter.startSessionSync()) {
182 if (LightDMService.greeter.startSessionSync()) {
170 sessionStarted();
183 sessionStarted();
171 if (loader.item) {
184 if (loader.item) {
172− loader.item.notifyAuthenticationSucceeded();
185+ loader.item.notifyAuthenticationSucceeded(false /* showFakePassword */);
173 }
186 }
174 } else if (loader.item) {
187 } else if (loader.item) {
175 loader.item.notifyAuthenticationFailed();
188 loader.item.notifyAuthenticationFailed();
@@ -188,7 +201,7 @@ Showable {
188 function checkForcedUnlock(hideNow) {
201 function checkForcedUnlock(hideNow) {
189 if (forcedUnlock && shown && loader.item) {
202 if (forcedUnlock && shown && loader.item) {
190 // pretend we were just authenticated
203 // pretend we were just authenticated
191− loader.item.notifyAuthenticationSucceeded();
204+ loader.item.notifyAuthenticationSucceeded(false /* showFakePassword */);
192 loader.item.hide();
205 loader.item.hide();
193 if (hideNow) {
206 if (hideNow) {
194 root.hideNow(); // skip hide animation
207 root.hideNow(); // skip hide animation
@@ -206,6 +219,17 @@ Showable {
206 onForcedUnlockChanged: d.checkForcedUnlock(false /* hideNow */)
219 onForcedUnlockChanged: d.checkForcedUnlock(false /* hideNow */)
207 Component.onCompleted: d.checkForcedUnlock(true /* hideNow */)
220 Component.onCompleted: d.checkForcedUnlock(true /* hideNow */)
208
221
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+
209 onRequiredChanged: {
233 onRequiredChanged: {
210 if (required) {
234 if (required) {
211 d.waiting = true;
235 d.waiting = true;
@@ -366,7 +390,7 @@ Showable {
366 Binding {
390 Binding {
367 target: loader.item
391 target: loader.item
368 property: "alphanumeric"
392 property: "alphanumeric"
369− value: AccountsService.passwordDisplayHint === AccountsService.Keyboard
393+ value: d.alphanumeric
370 }
394 }
371
395
372 Binding {
396 Binding {
@@ -425,7 +449,6 @@ Showable {
425 d.waiting = false;
449 d.waiting = false;
426
450
427 if (LightDMService.greeter.authenticated) {
451 if (LightDMService.greeter.authenticated) {
428− AccountsService.failedLogins = 0;
429 if (!LightDMService.greeter.promptless) {
452 if (!LightDMService.greeter.promptless) {
430 d.login();
453 d.login();
431 loader.item.hide();
454 loader.item.hide();
@@ -464,7 +487,10 @@ Showable {
464 Connections {
487 Connections {
465 target: DBusUnitySessionService
488 target: DBusUnitySessionService
466 onLockRequested: root.forceShow()
489 onLockRequested: root.forceShow()
490+ onUnlocked: {
467− onUnlocked: root.forcedUnlock = true
491+ root.forcedUnlock = true;
492+ root.hideNow();
493+ }
468 }
494 }
469
495
470 Binding {
496 Binding {
@@ -483,4 +509,74 @@ Showable {
483 target: i18n
509 target: i18n
484 onLanguageChanged: LightDMService.infographic.readyForDataChange()
510 onLanguageChanged: LightDMService.infographic.readyForDataChange()
485 }
511 }
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+ }
486}
582}
qml/Greeter/NarrowView.qml+18−2
@@ -65,15 +65,28 @@ FocusScope {
65 coverPage.hide();
65 coverPage.hide();
66 }
66 }
67
67
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+ }
69 lockscreen.hide();
74 lockscreen.hide();
70 }
75 }
71
76
72 function notifyAuthenticationFailed() {
77 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
73 lockscreen.clear(true);
85 lockscreen.clear(true);
74 }
86 }
75
87
76 function reset() {
88 function reset() {
89+ lockscreen.customError = "";
77 coverPage.show();
90 coverPage.show();
78 }
91 }
79
92
@@ -116,7 +129,10 @@ FocusScope {
116 infoText: promptText !== "" ? i18n.tr("Enter %1").arg(promptText) :
129 infoText: promptText !== "" ? i18n.tr("Enter %1").arg(promptText) :
117 alphaNumeric ? i18n.tr("Enter passphrase") :
130 alphaNumeric ? i18n.tr("Enter passphrase") :
118 i18n.tr("Enter passcode")
131 i18n.tr("Enter passcode")
132+
133+ property string customError
134+ errorText: customError !== "" ? customError :
119− errorText: promptText !== "" ? i18n.tr("Sorry, incorrect %1").arg(promptText) :
135+ promptText !== "" ? i18n.tr("Sorry, incorrect %1").arg(promptText) :
120 alphaNumeric ? i18n.tr("Sorry, incorrect passphrase") + "\n" +
136 alphaNumeric ? i18n.tr("Sorry, incorrect passphrase") + "\n" +
121 i18n.ctr("passphrase", "Please re-enter") :
137 i18n.ctr("passphrase", "Please re-enter") :
122 i18n.tr("Sorry, incorrect passcode")
138 i18n.tr("Sorry, incorrect passcode")
qml/Greeter/WideView.qml+5−1
@@ -59,7 +59,7 @@ FocusScope {
59 coverPage.hide();
59 coverPage.hide();
60 }
60 }
61
61
62− function notifyAuthenticationSucceeded() {
62+ function notifyAuthenticationSucceeded(showFakePassword) {
63 // Nothing needed
63 // Nothing needed
64 }
64 }
65
65
@@ -67,6 +67,10 @@ FocusScope {
67 loginList.showError();
67 loginList.showError();
68 }
68 }
69
69
70+ function showErrorMessage(msg) {
71+ coverPage.showErrorMessage(msg);
72+ }
73+
70 function reset() {
74 function reset() {
71 loginList.reset();
75 loginList.reset();
72 }
76 }
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 @@
1/*
1/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013-2016 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
@@ -69,7 +69,9 @@ Rectangle {
69 MouseArea {
69 MouseArea {
70 id: mouseEventEater
70 id: mouseEventEater
71 anchors.fill: parent
71 anchors.fill: parent
72+ acceptedButtons: Qt.AllButtons
72 hoverEnabled: true
73 hoverEnabled: true
74+ onWheel: wheel.accepted = true;
73 }
75 }
74
76
75 Column {
77 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 @@
19
19
20import QtQuick 2.4
20import QtQuick 2.4
21import Ubuntu.Components 1.3
21import Ubuntu.Components 1.3
22−import Ubuntu.Components.ListItems 1.3 as ListItem
23
22
24Rectangle {
23Rectangle {
25 color: theme.palette.normal.background
24 color: theme.palette.normal.background
@@ -37,6 +36,13 @@ Rectangle {
37 function reset() {
36 function reset() {
38 clear();
37 clear();
39 var component = Qt.createComponent("IndicatorsList.qml");
38 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+
40 var page = component.createObject(pages, {"profile": indicatorProfile});
46 var page = component.createObject(pages, {"profile": indicatorProfile});
41 push(page);
47 push(page);
42 }
48 }
qml/Panel/Indicators/client/IndicatorsList.qml+7
@@ -58,6 +58,13 @@ Page {
58
58
59 onClicked: {
59 onClicked: {
60 var new_page = Qt.createComponent("IndicatorRepresentation.qml");
60 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+
61 page.pageStack.push(new_page.createObject(pages), {"indicatorProperties" : model.indicatorProperties });
68 page.pageStack.push(new_page.createObject(pages), {"indicatorProperties" : model.indicatorProperties });
62 }
69 }
63 }
70 }
qml/Panel/IndicatorsMenu.qml+3−1
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2014 Canonical, Ltd.
2+ * Copyright (C) 2014-2016 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
@@ -80,6 +80,8 @@ Showable {
80 MouseArea {
80 MouseArea {
81 anchors.fill: parent
81 anchors.fill: parent
82 hoverEnabled: true
82 hoverEnabled: true
83+ acceptedButtons: Qt.AllButtons
84+ onWheel: wheel.accepted = true;
83 }
85 }
84
86
85 MenuContent {
87 MenuContent {
qml/Panel/graphics/rectangular_dropshadow@30.png

Binary file not shown.

qml/Rotation/HalfLoopRotationAnimation.qml+1−1
@@ -42,6 +42,6 @@ SequentialAnimation {
42 from: root.fromAngle; to: root.toAngle
42 from: root.fromAngle; to: root.toAngle
43 duration: rotationDuration; easing.type: rotationEasing
43 duration: rotationDuration; easing.type: rotationEasing
44 }
44 }
45− UpdateShellTransformations { info: root.info; shell: root.shell }
45+ UpdateShellTransformations { shell: root.shell; rotationAngle: root.toAngle }
46 ScriptAction { script: { info.transitioning = false; } }
46 ScriptAction { script: { info.transitioning = false; } }
47}
47}
qml/Rotation/ImmediateRotationAction.qml+1−1
@@ -25,7 +25,7 @@ SequentialAnimation {
25 root.info.transitioning = true;
25 root.info.transitioning = true;
26 } }
26 } }
27
27
28− UpdateShellTransformations { info: root.info; shell: root.shell }
28+ UpdateShellTransformations { shell: root.shell; rotationAngle: root.info.requestedOrientationAngle }
29
29
30 ScriptAction { script: {
30 ScriptAction { script: {
31 root.shell.updateFocusedAppOrientation();
31 root.shell.updateFocusedAppOrientation();
qml/Rotation/NinetyRotationAnimation.qml+1−1
@@ -78,7 +78,7 @@ SequentialAnimation {
78 duration: rotationDuration; easing.type: rotationEasing
78 duration: rotationDuration; easing.type: rotationEasing
79 }
79 }
80 }
80 }
81− UpdateShellTransformations { info: root.info; shell: root.shell }
81+ UpdateShellTransformations { shell: root.shell; rotationAngle: root.toAngle }
82 ScriptAction { script: {
82 ScriptAction { script: {
83 shellSnapshot.visible = false;
83 shellSnapshot.visible = false;
84 shellSnapshot.discard();
84 shellSnapshot.discard();
qml/Rotation/UpdateShellTransformations.qml+4−4
@@ -17,16 +17,16 @@
17import QtQuick 2.4
17import QtQuick 2.4
18
18
19ScriptAction {
19ScriptAction {
20− property var info
21 property var shell
20 property var shell
21+ property int rotationAngle
22
22
23 script: {
23 script: {
24− shell.orientationAngle = info.requestedOrientationAngle;
24+ shell.orientationAngle = rotationAngle;
25− shell.transformRotationAngle = info.requestedOrientationAngle;
25+ shell.transformRotationAngle = rotationAngle;
26
26
27 // They must all be bindings as orientedShell's size can change
27 // They must all be bindings as orientedShell's size can change
28
28
29− if (info.requestedOrientationAngle === 90 || info.requestedOrientationAngle === 270) {
29+ if (rotationAngle === 90 || rotationAngle === 270) {
30 shell.width = Qt.binding(function() { return orientedShell.height; });
30 shell.width = Qt.binding(function() { return orientedShell.height; });
31 shell.height = Qt.binding(function() { return orientedShell.width; });
31 shell.height = Qt.binding(function() { return orientedShell.width; });
32 } else {
32 } else {
qml/Shell.qml+3
@@ -428,6 +428,9 @@ StyledItem {
428 launcherOffset: launcher.progress
428 launcherOffset: launcher.progress
429 forcedUnlock: wizard.active || shell.mode === "full-shell"
429 forcedUnlock: wizard.active || shell.mode === "full-shell"
430 background: wallpaperResolver.background
430 background: wallpaperResolver.background
431+ allowFingerprint: !dialogs.hasActiveDialog &&
432+ !notifications.topmostIsFullscreen &&
433+ !panel.indicators.shown
431
434
432 // avoid overlapping with Launcher's edge drag area
435 // avoid overlapping with Launcher's edge drag area
433 // FIXME: Fix TouchRegistry & friends and remove this workaround
436 // FIXME: Fix TouchRegistry & friends and remove this workaround
qml/Stages/DecoratedWindow.qml+5−4
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2014-2015 Canonical, Ltd.
2+ * Copyright (C) 2014-2016 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
@@ -12,8 +12,6 @@
12 *
12 *
13 * You should have received a copy of the GNU General Public License
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors: Michael Zanetti <michael.zanetti@canonical.com>
17 */
15 */
18
16
19import QtQuick 2.4
17import QtQuick 2.4
@@ -31,6 +29,7 @@ FocusScope {
31 property alias active: decoration.active
29 property alias active: decoration.active
32 readonly property alias title: applicationWindow.title
30 readonly property alias title: applicationWindow.title
33 property alias fullscreen: applicationWindow.fullscreen
31 property alias fullscreen: applicationWindow.fullscreen
32+ property alias maximizeButtonShown: decoration.maximizeButtonShown
34
33
35 readonly property bool decorationShown: !fullscreen
34 readonly property bool decorationShown: !fullscreen
36 property bool highlightShown: false
35 property bool highlightShown: false
@@ -38,6 +37,7 @@ FocusScope {
38
37
39 property real requestedWidth
38 property real requestedWidth
40 property real requestedHeight
39 property real requestedHeight
40+
41 property alias surfaceOrientationAngle: applicationWindow.surfaceOrientationAngle
41 property alias surfaceOrientationAngle: applicationWindow.surfaceOrientationAngle
42 readonly property real visibleDecorationHeight: root.decorationShown ? decoration.height : 0
42 readonly property real visibleDecorationHeight: root.decorationShown ? decoration.height : 0
43 readonly property bool counterRotate: surfaceOrientationAngle != 0 && surfaceOrientationAngle != 180
43 readonly property bool counterRotate: surfaceOrientationAngle != 0 && surfaceOrientationAngle != 180
@@ -45,7 +45,8 @@ FocusScope {
45 readonly property int minimumWidth: !counterRotate ? applicationWindow.minimumWidth : applicationWindow.minimumHeight
45 readonly property int minimumWidth: !counterRotate ? applicationWindow.minimumWidth : applicationWindow.minimumHeight
46 readonly property int minimumHeight: visibleDecorationHeight + (!counterRotate ? applicationWindow.minimumHeight : applicationWindow.minimumWidth)
46 readonly property int minimumHeight: visibleDecorationHeight + (!counterRotate ? applicationWindow.minimumHeight : applicationWindow.minimumWidth)
47 readonly property int maximumWidth: !counterRotate ? applicationWindow.maximumWidth : applicationWindow.maximumHeight
47 readonly property int maximumWidth: !counterRotate ? applicationWindow.maximumWidth : applicationWindow.maximumHeight
48+ readonly property int maximumHeight: (root.decorationShown && applicationWindow.maximumHeight > 0 ? decoration.height : 0)
48− readonly property int maximumHeight: visibleDecorationHeight + (!counterRotate ? applicationWindow.maximumHeight : applicationWindow.maximumWidth)
49+ + (!counterRotate ? applicationWindow.maximumHeight : applicationWindow.maximumWidth)
49 readonly property int widthIncrement: !counterRotate ? applicationWindow.widthIncrement : applicationWindow.heightIncrement
50 readonly property int widthIncrement: !counterRotate ? applicationWindow.widthIncrement : applicationWindow.heightIncrement
50 readonly property int heightIncrement: !counterRotate ? applicationWindow.heightIncrement : applicationWindow.widthIncrement
51 readonly property int heightIncrement: !counterRotate ? applicationWindow.heightIncrement : applicationWindow.widthIncrement
51
52
qml/Stages/DesktopSpread.qml+2
@@ -132,6 +132,8 @@ FocusScope {
132 anchors.fill: parent
132 anchors.fill: parent
133 visible: spreadBackground.visible
133 visible: spreadBackground.visible
134 enabled: visible
134 enabled: visible
135+ acceptedButtons: Qt.AllButtons
136+ onWheel: wheel.accepted = true;
135 }
137 }
136
138
137 Item {
139 Item {
qml/Stages/DesktopStage.qml+19−2
@@ -263,8 +263,23 @@ AbstractStage {
263 }
263 }
264 }
264 }
265 z: normalZ
265 z: normalZ
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.
266− x: priv.focusedAppDelegate ? priv.focusedAppDelegate.x + units.gu(3) : (normalZ - 1) * units.gu(3)
268+ property real requestedX: 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)
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+ }
268
283
269 width: decoratedWindow.width
284 width: decoratedWindow.width
270 height: decoratedWindow.height
285 height: decoratedWindow.height
@@ -654,6 +669,8 @@ AbstractStage {
654 surface: model.surface
669 surface: model.surface
655 active: appDelegate.focus
670 active: appDelegate.focus
656 focus: true
671 focus: true
672+ maximizeButtonShown: (maximumWidth == 0 || maximumWidth >= appContainer.width) &&
673+ (maximumHeight == 0 || maximumHeight >= appContainer.height)
657 overlayShown: touchControls.overlayShown
674 overlayShown: touchControls.overlayShown
658
675
659 requestedWidth: appDelegate.requestedWidth
676 requestedWidth: appDelegate.requestedWidth
qml/Stages/TabletStage.qml+17−9
@@ -101,7 +101,7 @@ AbstractStage {
101 orientations |= Qt.LandscapeOrientation | Qt.InvertedLandscapeOrientation;
101 orientations |= Qt.LandscapeOrientation | Qt.InvertedLandscapeOrientation;
102 if (priv.sideStageItemId && !spreadView.surfaceDragging) {
102 if (priv.sideStageItemId && !spreadView.surfaceDragging) {
103 // If we have a sidestage app, support Portrait orientation
103 // 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
105 orientations |= Qt.PortraitOrientation|Qt.InvertedPortraitOrientation;
105 orientations |= Qt.PortraitOrientation|Qt.InvertedPortraitOrientation;
106 }
106 }
107 return orientations;
107 return orientations;
@@ -624,7 +624,7 @@ AbstractStage {
624 enabled: priv.sideStageEnabled
624 enabled: priv.sideStageEnabled
625
625
626 onDropped: {
626 onDropped: {
627− drop.source.spreadDelegate.stage = ApplicationInfoInterface.MainStage;
627+ drop.source.spreadDelegate.saveStage(ApplicationInfoInterface.MainStage);
628 drop.source.spreadDelegate.focus = true;
628 drop.source.spreadDelegate.focus = true;
629 }
629 }
630 keys: "SideStage"
630 keys: "SideStage"
@@ -679,7 +679,7 @@ AbstractStage {
679 }
679 }
680 onDropped: {
680 onDropped: {
681 if (drop.keys == "MainStage") {
681 if (drop.keys == "MainStage") {
682− drop.source.spreadDelegate.stage = ApplicationInfoInterface.SideStage;
682+ drop.source.spreadDelegate.saveStage(ApplicationInfoInterface.SideStage);
683 drop.source.spreadDelegate.focus = true;
683 drop.source.spreadDelegate.focus = true;
684 }
684 }
685 }
685 }
@@ -810,6 +810,11 @@ AbstractStage {
810 }
810 }
811 }
811 }
812
812
813+ function saveStage(newStage) {
814+ stage = newStage;
815+ WindowStateStorage.saveStage(application.appId, newStage);
816+ }
817+
813 // FIXME: A regular binding doesn't update any more after closing an app.
818 // FIXME: A regular binding doesn't update any more after closing an app.
814 // Using a Binding for now.
819 // Using a Binding for now.
815 Binding {
820 Binding {
@@ -843,15 +848,17 @@ AbstractStage {
843 refreshStage();
848 refreshStage();
844 _constructing = false;
849 _constructing = false;
845 }
850 }
846− Component.onDestruction: {
847− WindowStateStorage.saveStage(application.appId, stage);
848− }
849
851
850 function refreshStage() {
852 function refreshStage() {
851 var newStage = ApplicationInfoInterface.MainStage;
853 var newStage = ApplicationInfoInterface.MainStage;
852− if (priv.sideStageEnabled) {
854+ if (priv.sideStageEnabled) { // we're in lanscape rotation.
853− if (application && application.supportedOrientations & (Qt.PortraitOrientation|Qt.InvertedPortraitOrientation)) {
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+ }
854− newStage = WindowStateStorage.getStage(application.appId);
861+ newStage = WindowStateStorage.getStage(application.appId, defaultStage);
855 }
862 }
856 }
863 }
857
864
@@ -1085,6 +1092,7 @@ AbstractStage {
1085 // only accept opposite stage.
1092 // only accept opposite stage.
1086 Drag.keys: {
1093 Drag.keys: {
1087 if (!surface) return "Disabled";
1094 if (!surface) return "Disabled";
1095+ if (spreadDelegate.isDash) return "Disabled";
1088
1096
1089 if (spreadDelegate.stage === ApplicationInfo.MainStage) {
1097 if (spreadDelegate.stage === ApplicationInfo.MainStage) {
1090 if (spreadDelegate.application.supportedOrientations
1098 if (spreadDelegate.application.supportedOrientations
qml/Stages/WindowControlsOverlay.qml+2−2
@@ -94,8 +94,8 @@ Item {
94 function handlePositionChanged(mouseX, mouseY) {
94 function handlePositionChanged(mouseX, mouseY) {
95 if (priv.dragging) {
95 if (priv.dragging) {
96 var pos = mapToItem(root.target.parent, mouseX, mouseY);
96 var pos = mapToItem(root.target.parent, mouseX, mouseY);
97− root.target.x = Math.round(pos.x - priv.distanceX);
97+ root.target.requestedX = Math.round(pos.x - priv.distanceX);
98− root.target.y = Math.round(Math.max(pos.y - priv.distanceY, PanelState.panelHeight));
98+ root.target.requestedY = Math.round(Math.max(pos.y - priv.distanceY, PanelState.panelHeight));
99 }
99 }
100 }
100 }
101 }
101 }
qml/Stages/WindowDecoration.qml+13−6
@@ -26,18 +26,22 @@ MouseArea {
26
26
27 property Item target
27 property Item target
28 property alias title: titleLabel.text
28 property alias title: titleLabel.text
29+ property alias maximizeButtonShown: buttons.maximizeButtonShown
29 property bool active: false
30 property bool active: false
31+ acceptedButtons: Qt.AllButtons // prevent leaking unhandled mouse events
30 property alias overlayShown: buttons.overlayShown
32 property alias overlayShown: buttons.overlayShown
31
33
32− hoverEnabled: true
33−
34 signal closeClicked()
34 signal closeClicked()
35 signal minimizeClicked()
35 signal minimizeClicked()
36 signal maximizeClicked()
36 signal maximizeClicked()
37 signal maximizeHorizontallyClicked()
37 signal maximizeHorizontallyClicked()
38 signal maximizeVerticallyClicked()
38 signal maximizeVerticallyClicked()
39
39
40+ onDoubleClicked: {
41+ if (maximizeButtonShown && mouse.button == Qt.LeftButton) {
40− onDoubleClicked: root.maximizeClicked()
42+ root.maximizeClicked();
43+ }
44+ }
41
45
42 QtObject {
46 QtObject {
43 id: priv
47 id: priv
@@ -47,7 +51,7 @@ MouseArea {
47 }
51 }
48
52
49 onPressedChanged: {
53 onPressedChanged: {
50− if (pressed) {
54+ if (pressed && pressedButtons == Qt.LeftButton) {
51 var pos = mapToItem(root.target, mouseX, mouseY);
55 var pos = mapToItem(root.target, mouseX, mouseY);
52 priv.distanceX = pos.x;
56 priv.distanceX = pos.x;
53 priv.distanceY = pos.y;
57 priv.distanceY = pos.y;
@@ -65,11 +69,14 @@ MouseArea {
65 // Use integer coordinate values to ensure that target is left in a pixel-aligned
69 // Use integer coordinate values to ensure that target is left in a pixel-aligned
66 // position. Mouse movement could have subpixel precision, yielding a fractional
70 // position. Mouse movement could have subpixel precision, yielding a fractional
67 // mouse position.
71 // mouse position.
68− root.target.x = Math.round(pos.x - priv.distanceX);
72+ root.target.requestedX = Math.round(pos.x - priv.distanceX);
69− root.target.y = Math.round(Math.max(pos.y - priv.distanceY, PanelState.panelHeight));
73+ root.target.requestedY = Math.round(Math.max(pos.y - priv.distanceY, PanelState.panelHeight));
70 }
74 }
71 }
75 }
72
76
77+ // do not let unhandled wheel event pass thru the decoration
78+ onWheel: wheel.accepted = true;
79+
73 Rectangle {
80 Rectangle {
74 anchors.fill: parent
81 anchors.fill: parent
75 anchors.bottomMargin: -radius
82 anchors.bottomMargin: -radius
qml/Stages/WindowResizeArea.qml+11−11
@@ -55,8 +55,8 @@ MouseArea {
55
55
56 function updateNormalGeometry() {
56 function updateNormalGeometry() {
57 if (root.target.state == "normal") {
57 if (root.target.state == "normal") {
58− normalX = root.target.x
58+ normalX = root.target.requestedX
59− normalY = root.target.y
59+ normalY = root.target.requestedY
60 normalWidth = root.target.width
60 normalWidth = root.target.width
61 normalHeight = root.target.height
61 normalHeight = root.target.height
62 }
62 }
@@ -73,14 +73,14 @@ MouseArea {
73
73
74 function loadWindowState() {
74 function loadWindowState() {
75 var windowGeometry = windowStateStorage.getGeometry(root.windowId,
75 var windowGeometry = windowStateStorage.getGeometry(root.windowId,
76− Qt.rect(target.x, target.y, defaultWidth, defaultHeight));
76+ Qt.rect(target.requestedX, target.requestedY, defaultWidth, defaultHeight));
77
77
78 target.requestedWidth = Qt.binding(function() { return Math.min(Math.max(windowGeometry.width, d.minimumWidth), screenWidth - root.leftMargin); });
78 target.requestedWidth = Qt.binding(function() { return Math.min(Math.max(windowGeometry.width, d.minimumWidth), screenWidth - root.leftMargin); });
79 target.requestedHeight = Qt.binding(function() { return Math.min(Math.max(windowGeometry.height, d.minimumHeight),
79 target.requestedHeight = Qt.binding(function() { return Math.min(Math.max(windowGeometry.height, d.minimumHeight),
80 root.screenHeight - (target.fullscreen ? 0 : PanelState.panelHeight)); });
80 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),
82 (target.fullscreen ? 0 : root.leftMargin)); });
82 (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); });
84
84
85 var windowState = windowStateStorage.getState(root.windowId, WindowStateStorage.WindowStateNormal)
85 var windowState = windowStateStorage.getState(root.windowId, WindowStateStorage.WindowStateNormal)
86 switch (windowState) {
86 switch (windowState) {
@@ -258,8 +258,8 @@ MouseArea {
258 var pos = mapToItem(root.target.parent, mouseX, mouseY);
258 var pos = mapToItem(root.target.parent, mouseX, mouseY);
259 d.startMousePosX = pos.x;
259 d.startMousePosX = pos.x;
260 d.startMousePosY = pos.y;
260 d.startMousePosY = pos.y;
261− d.startX = target.x;
261+ d.startX = target.requestedX;
262− d.startY = target.y;
262+ d.startY = target.requestedY;
263 d.startWidth = target.width;
263 d.startWidth = target.width;
264 d.startHeight = target.height;
264 d.startHeight = target.height;
265 d.currentWidth = target.width;
265 d.currentWidth = target.width;
@@ -296,7 +296,7 @@ MouseArea {
296
296
297 if (d.leftBorder) {
297 if (d.leftBorder) {
298 var newTargetX = d.startX + deltaX;
298 var newTargetX = d.startX + deltaX;
299− var rightBorderX = target.x + target.width;
299+ var rightBorderX = target.requestedX + target.width;
300 if (rightBorderX > newTargetX + d.minimumWidth) {
300 if (rightBorderX > newTargetX + d.minimumWidth) {
301 if (rightBorderX < newTargetX + d.maximumWidth) {
301 if (rightBorderX < newTargetX + d.maximumWidth) {
302 target.requestedWidth = rightBorderX - newTargetX;
302 target.requestedWidth = rightBorderX - newTargetX;
@@ -322,7 +322,7 @@ MouseArea {
322
322
323 if (d.topBorder) {
323 if (d.topBorder) {
324 var newTargetY = Math.max(d.startY + deltaY, PanelState.panelHeight); // disallow resizing up past Panel
324 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;
326 if (bottomBorderY > newTargetY + d.minimumHeight) {
326 if (bottomBorderY > newTargetY + d.minimumHeight) {
327 if (bottomBorderY < newTargetY + d.maximumHeight) {
327 if (bottomBorderY < newTargetY + d.maximumHeight) {
328 target.requestedHeight = bottomBorderY - newTargetY;
328 target.requestedHeight = bottomBorderY - newTargetY;
@@ -351,13 +351,13 @@ MouseArea {
351 target: root.target
351 target: root.target
352 onWidthChanged: {
352 onWidthChanged: {
353 if (d.moveLeftBorder) {
353 if (d.moveLeftBorder) {
354− target.x += d.currentWidth - target.width;
354+ target.requestedX += d.currentWidth - target.width;
355 }
355 }
356 d.currentWidth = target.width;
356 d.currentWidth = target.width;
357 }
357 }
358 onHeightChanged: {
358 onHeightChanged: {
359 if (d.moveTopBorder) {
359 if (d.moveTopBorder) {
360− target.y += d.currentHeight - target.height;
360+ target.requestedY += d.currentHeight - target.height;
361 }
361 }
362 d.currentHeight = target.height;
362 d.currentHeight = target.height;
363 }
363 }
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 {
33 readonly property alias password: passwordField.text
33 readonly property alias password: passwordField.text
34 readonly property alias password2: password2Field.text
34 readonly property alias password2: password2Field.text
35
35
36− GridLayout {
36+ Flickable {
37 id: column
37 id: column
38− columns: 1
38+ clip: true
39− rows: 3
39+ flickableDirection: Flickable.VerticalFlick
40 anchors.fill: content
40 anchors.fill: content
41− anchors.leftMargin: leftMargin
41+ anchors.leftMargin: parent.leftMargin
42− anchors.rightMargin: rightMargin
42+ anchors.rightMargin: parent.rightMargin
43 anchors.topMargin: customMargin
43 anchors.topMargin: customMargin
44− rowSpacing: units.gu(3)
44+
45+ bottomMargin: Qt.inputMethod.keyboardRectangle.height - height - customMargin
46+
47+ Behavior on contentY { UbuntuNumberAnimation {} }
45
48
46 Label {
49 Label {
47 id: infoLabel
50 id: infoLabel
@@ -49,6 +52,7 @@ LocalComponents.Page {
49 anchors {
52 anchors {
50 left: parent.left
53 left: parent.left
51 right: parent.right
54 right: parent.right
55+ top: parent.top
52 }
56 }
53 wrapMode: Text.Wrap
57 wrapMode: Text.Wrap
54 font.weight: Font.Light
58 font.weight: Font.Light
@@ -57,6 +61,13 @@ LocalComponents.Page {
57 }
61 }
58
62
59 GridLayout {
63 GridLayout {
64+ anchors {
65+ left: parent.left
66+ right: parent.right
67+ top: infoLabel.bottom
68+ topMargin: units.gu(3)
69+ }
70+
60 columns: 2
71 columns: 2
61 columnSpacing: units.gu(2)
72 columnSpacing: units.gu(2)
62 rowSpacing: units.gu(2)
73 rowSpacing: units.gu(2)
@@ -74,6 +85,11 @@ LocalComponents.Page {
74 validator: RegExpValidator { regExp: /^\d{4}$/ }
85 validator: RegExpValidator { regExp: /^\d{4}$/ }
75 maximumLength: 4
86 maximumLength: 4
76 onAccepted: password2Field.forceActiveFocus()
87 onAccepted: password2Field.forceActiveFocus()
88+ onActiveFocusChanged: {
89+ if (activeFocus) {
90+ column.contentY = y
91+ }
92+ }
77 }
93 }
78
94
79 Label {
95 Label {
@@ -88,6 +104,11 @@ LocalComponents.Page {
88 inputMethodHints: Qt.ImhDigitsOnly
104 inputMethodHints: Qt.ImhDigitsOnly
89 validator: RegExpValidator { regExp: /^\d{4}$/ }
105 validator: RegExpValidator { regExp: /^\d{4}$/ }
90 maximumLength: 4
106 maximumLength: 4
107+ onActiveFocusChanged: {
108+ if (activeFocus) {
109+ column.contentY = y
110+ }
111+ }
91 }
112 }
92
113
93 Label {
114 Label {
@@ -112,10 +133,6 @@ LocalComponents.Page {
112 }
133 }
113 }
134 }
114 }
135 }
115−
116− Item { // spacer
117− Layout.fillHeight: true
118− }
119 }
136 }
120
137
121 Component {
138 Component {
qml/Wizard/PasswordMeter.qml+3−1
@@ -83,7 +83,9 @@ Item {
83 wrapMode: Text.Wrap
83 wrapMode: Text.Wrap
84 text: {
84 text: {
85 if (matching !== undefined) {
85 if (matching !== undefined) {
86+ if (password.length < 8)
87+ return i18n.tr("Password too short");
86− if (matching)
88+ else if (matching)
87 return i18n.tr("Passwords match");
89 return i18n.tr("Passwords match");
88 else if (!matching)
90 else if (!matching)
89 return i18n.tr("Passwords do not match");
91 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 @@
1pkg_check_modules(CONNECTIVITY REQUIRED connectivity-qt1)
1pkg_check_modules(CONNECTIVITY REQUIRED connectivity-qt1)
2
2
3include_directories(
3include_directories(
4+ SYSTEM
4 ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
5 ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
5 ${CONNECTIVITY_INCLUDE_DIRS}
6 ${CONNECTIVITY_INCLUDE_DIRS}
6)
7)
src/Dash/main.cpp+22−21
@@ -25,6 +25,7 @@
25#include <QCommandLineParser>
25#include <QCommandLineParser>
26#include <QLibrary>
26#include <QLibrary>
27#include <libintl.h>
27#include <libintl.h>
28+#include <QQmlApplicationEngine>
28
29
29#include <paths.h>
30#include <paths.h>
30#include "../qmldebuggerutils.h"
31#include "../qmldebuggerutils.h"
@@ -83,40 +84,40 @@ int main(int argc, const char *argv[])
83 bindtextdomain("unity8", translationDirectory().toUtf8().data());
84 bindtextdomain("unity8", translationDirectory().toUtf8().data());
84 textdomain("unity8");
85 textdomain("unity8");
85
86
86− QQuickView* view = new QQuickView();
87+ #ifdef UNITY8_ENABLE_TOUCH_EMULATION
87− view->setResizeMode(QQuickView::SizeRootObjectToView);
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
88
95
96+ QQmlApplicationEngine *engine = new QQmlApplicationEngine(application);
97+
98+ int initialWidth = -1;
99+ int initialHeight = -1;
89 if (parser.isSet(windowGeometryOption) &&
100 if (parser.isSet(windowGeometryOption) &&
90 parser.value(windowGeometryOption).split('x').size() == 2)
101 parser.value(windowGeometryOption).split('x').size() == 2)
91 {
102 {
92 QStringList geom = parser.value(windowGeometryOption).split('x');
103 QStringList geom = parser.value(windowGeometryOption).split('x');
93 QSize windowSize(geom.at(0).toInt(), geom.at(1).toInt());
104 QSize windowSize(geom.at(0).toInt(), geom.at(1).toInt());
94 if (windowSize.isValid()) {
105 if (windowSize.isValid()) {
95− view->setWidth(windowSize.width());
106+ initialWidth = windowSize.width();
96− view->setHeight(windowSize.height());
107+ initialHeight = windowSize.height();
97 }
108 }
98 }
109 }
99−
110+ engine->rootContext()->setContextProperty("initialWidth", initialWidth);
100− view->setTitle(QStringLiteral("Scopes"));
111+ engine->rootContext()->setContextProperty("initialHeight", initialHeight);
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
112
111 QUrl source(::qmlDirectory() + "/Dash/DashApplication.qml");
113 QUrl source(::qmlDirectory() + "/Dash/DashApplication.qml");
112− prependImportPaths(view->engine(), ::overrideImportPaths());
114+ prependImportPaths(engine, ::overrideImportPaths());
113− appendImportPaths(view->engine(), ::fallbackImportPaths());
115+ appendImportPaths(engine, ::fallbackImportPaths());
114
116
115 CachingNetworkManagerFactory *managerFactory = new CachingNetworkManagerFactory();
117 CachingNetworkManagerFactory *managerFactory = new CachingNetworkManagerFactory();
116− view->engine()->setNetworkAccessManagerFactory(managerFactory);
118+ engine->setNetworkAccessManagerFactory(managerFactory);
117
119
118− view->setSource(source);
120+ engine->load(source);
119− view->show();
120
121
121 UnixSignalHandler signalHandler([]{
122 UnixSignalHandler signalHandler([]{
122 QGuiApplication::exit(0);
123 QGuiApplication::exit(0);
@@ -125,7 +126,7 @@ int main(int argc, const char *argv[])
125
126
126 int result = application->exec();
127 int result = application->exec();
127
128
128− delete view;
129+ delete engine;
129
130
130 #ifdef UNITY8_ENABLE_TOUCH_EMULATION
131 #ifdef UNITY8_ENABLE_TOUCH_EMULATION
131 delete mouseTouchAdaptor;
132 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 @@
20
20
21AccountsService::AccountsService(QObject* parent)
21AccountsService::AccountsService(QObject* parent)
22 : QObject(parent),
22 : QObject(parent),
23+ m_enableFingerprintIdentification(true),
23 m_enableLauncherWhileLocked(true),
24 m_enableLauncherWhileLocked(true),
24 m_enableIndicatorsWhileLocked(true),
25 m_enableIndicatorsWhileLocked(true),
25 m_backgroundFile(qmlDirectory() + "/graphics/phone_background.jpg"),
26 m_backgroundFile(qmlDirectory() + "/graphics/phone_background.jpg"),
26 m_statsWelcomeScreen(true),
27 m_statsWelcomeScreen(true),
27 m_failedLogins(0),
28 m_failedLogins(0),
29+ m_failedFingerprintLogins(0),
28 m_demoEdges(false),
30 m_demoEdges(false),
29 m_demoEdgesCompleted(),
31 m_demoEdgesCompleted(),
30 m_hereEnabled(false),
32 m_hereEnabled(false),
@@ -74,6 +76,17 @@ void AccountsService::setDemoEdgesCompleted(const QStringList &demoEdgesComplete
74 Q_EMIT demoEdgesCompletedChanged();
76 Q_EMIT demoEdgesCompletedChanged();
75}
77}
76
78
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+
77bool AccountsService::enableLauncherWhileLocked() const
90bool AccountsService::enableLauncherWhileLocked() const
78{
91{
79 return m_enableLauncherWhileLocked;
92 return m_enableLauncherWhileLocked;
@@ -137,6 +150,17 @@ void AccountsService::setFailedLogins(uint failedLogins)
137 failedLoginsChanged();
150 failedLoginsChanged();
138}
151}
139
152
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+
140bool AccountsService::hereEnabled() const
164bool AccountsService::hereEnabled() const
141{
165{
142 return m_hereEnabled;
166 return m_hereEnabled;
tests/mocks/AccountsService/AccountsService.h+16
@@ -38,6 +38,10 @@ class AccountsService: public QObject
38 READ demoEdgesCompleted
38 READ demoEdgesCompleted
39 WRITE setDemoEdgesCompleted // only available in mock
39 WRITE setDemoEdgesCompleted // only available in mock
40 NOTIFY demoEdgesCompletedChanged)
40 NOTIFY demoEdgesCompletedChanged)
41+ Q_PROPERTY (bool enableFingerprintIdentification
42+ READ enableFingerprintIdentification
43+ WRITE setEnableFingerprintIdentification // only available in mock
44+ NOTIFY enableFingerprintIdentificationChanged)
41 Q_PROPERTY (bool enableLauncherWhileLocked
45 Q_PROPERTY (bool enableLauncherWhileLocked
42 READ enableLauncherWhileLocked
46 READ enableLauncherWhileLocked
43 WRITE setEnableLauncherWhileLocked // only available in mock
47 WRITE setEnableLauncherWhileLocked // only available in mock
@@ -61,6 +65,10 @@ class AccountsService: public QObject
61 READ failedLogins
65 READ failedLogins
62 WRITE setFailedLogins
66 WRITE setFailedLogins
63 NOTIFY failedLoginsChanged)
67 NOTIFY failedLoginsChanged)
68+ Q_PROPERTY (uint failedFingerprintLogins
69+ READ failedFingerprintLogins
70+ WRITE setFailedFingerprintLogins
71+ NOTIFY failedFingerprintLoginsChanged)
64 Q_PROPERTY(bool hereEnabled
72 Q_PROPERTY(bool hereEnabled
65 READ hereEnabled
73 READ hereEnabled
66 WRITE setHereEnabled
74 WRITE setHereEnabled
@@ -94,6 +102,8 @@ public:
94 QStringList demoEdgesCompleted() const;
102 QStringList demoEdgesCompleted() const;
95 void setDemoEdgesCompleted(const QStringList &demoEdges);
103 void setDemoEdgesCompleted(const QStringList &demoEdges);
96 Q_INVOKABLE void markDemoEdgeCompleted(const QString &edge);
104 Q_INVOKABLE void markDemoEdgeCompleted(const QString &edge);
105+ bool enableFingerprintIdentification() const;
106+ void setEnableFingerprintIdentification(bool enableFingerprintIdentification);
97 bool enableLauncherWhileLocked() const;
107 bool enableLauncherWhileLocked() const;
98 void setEnableLauncherWhileLocked(bool enableLauncherWhileLocked);
108 void setEnableLauncherWhileLocked(bool enableLauncherWhileLocked);
99 bool enableIndicatorsWhileLocked() const;
109 bool enableIndicatorsWhileLocked() const;
@@ -105,6 +115,8 @@ public:
105 PasswordDisplayHint passwordDisplayHint() const;
115 PasswordDisplayHint passwordDisplayHint() const;
106 uint failedLogins() const;
116 uint failedLogins() const;
107 void setFailedLogins(uint failedLogins);
117 void setFailedLogins(uint failedLogins);
118+ uint failedFingerprintLogins() const;
119+ void setFailedFingerprintLogins(uint failedFingerprintLogins);
108 bool hereEnabled() const;
120 bool hereEnabled() const;
109 void setHereEnabled(bool enabled);
121 void setHereEnabled(bool enabled);
110 QString hereLicensePath() const;
122 QString hereLicensePath() const;
@@ -121,12 +133,14 @@ Q_SIGNALS:
121 void userChanged();
133 void userChanged();
122 void demoEdgesChanged();
134 void demoEdgesChanged();
123 void demoEdgesCompletedChanged();
135 void demoEdgesCompletedChanged();
136+ void enableFingerprintIdentificationChanged();
124 void enableLauncherWhileLockedChanged();
137 void enableLauncherWhileLockedChanged();
125 void enableIndicatorsWhileLockedChanged();
138 void enableIndicatorsWhileLockedChanged();
126 void backgroundFileChanged();
139 void backgroundFileChanged();
127 void statsWelcomeScreenChanged();
140 void statsWelcomeScreenChanged();
128 void passwordDisplayHintChanged();
141 void passwordDisplayHintChanged();
129 void failedLoginsChanged();
142 void failedLoginsChanged();
143+ void failedFingerprintLoginsChanged();
130 void hereEnabledChanged();
144 void hereEnabledChanged();
131 void hereLicensePathChanged();
145 void hereLicensePathChanged();
132 void realNameChanged();
146 void realNameChanged();
@@ -134,12 +148,14 @@ Q_SIGNALS:
134 void keymapsChanged();
148 void keymapsChanged();
135
149
136private:
150private:
151+ bool m_enableFingerprintIdentification;
137 bool m_enableLauncherWhileLocked;
152 bool m_enableLauncherWhileLocked;
138 bool m_enableIndicatorsWhileLocked;
153 bool m_enableIndicatorsWhileLocked;
139 QString m_backgroundFile;
154 QString m_backgroundFile;
140 QString m_user;
155 QString m_user;
141 bool m_statsWelcomeScreen;
156 bool m_statsWelcomeScreen;
142 uint m_failedLogins;
157 uint m_failedLogins;
158+ uint m_failedFingerprintLogins;
143 bool m_demoEdges;
159 bool m_demoEdges;
144 QStringList m_demoEdgesCompleted;
160 QStringList m_demoEdgesCompleted;
145 bool m_hereEnabled;
161 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)
29endmacro()
29endmacro()
30
30
31add_subdirectory(AccountsService)
31add_subdirectory(AccountsService)
32+add_subdirectory(Biometryd)
32add_subdirectory(Cursor)
33add_subdirectory(Cursor)
33add_subdirectory(GSettings.1.0)
34add_subdirectory(GSettings.1.0)
34add_subdirectory(indicator-service)
35add_subdirectory(indicator-service)
tests/mocks/LightDM/IntegratedLightDM/liblightdm/UsersModel.cpp+4−1
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013-2016 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
@@ -46,6 +46,7 @@ UsersModel::UsersModel(QObject *parent) :
46 roles[SessionRole] = "session";
46 roles[SessionRole] = "session";
47 roles[HasMessagesRole] = "hasMessages";
47 roles[HasMessagesRole] = "hasMessages";
48 roles[ImagePathRole] = "imagePath";
48 roles[ImagePathRole] = "imagePath";
49+ roles[UidRole] = "uid";
49 setRoleNames(roles);
50 setRoleNames(roles);
50}
51}
51
52
@@ -95,6 +96,8 @@ QVariant UsersModel::data(const QModelIndex &index, int role) const
95 return d->entries[row].has_messages;
96 return d->entries[row].has_messages;
96 case UsersModel::ImagePathRole:
97 case UsersModel::ImagePathRole:
97 return "";
98 return "";
99+ case UsersModel::UidRole:
100+ return d->entries[row].uid;
98 default:
101 default:
99 return QVariant();
102 return QVariant();
100 }
103 }
tests/mocks/LightDM/IntegratedLightDM/liblightdm/UsersModel.h+2−1
@@ -50,7 +50,8 @@ public:
50 SessionRole,
50 SessionRole,
51 HasMessagesRole,
51 HasMessagesRole,
52 ImagePathRole,
52 ImagePathRole,
53− BackgroundPathRole
53+ BackgroundPathRole,
54+ UidRole
54 };
55 };
55
56
56 int rowCount(const QModelIndex &parent) const override;
57 int rowCount(const QModelIndex &parent) const override;
tests/mocks/LightDM/IntegratedLightDM/liblightdm/UsersModelPrivate.cpp+29−23
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2014 Canonical, Ltd.
2+ * Copyright (C) 2014-2016 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
@@ -47,6 +47,12 @@ void UsersModelPrivate::resetEntries()
47 resetEntries_full();
47 resetEntries_full();
48 }
48 }
49
49
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+
50 q->endResetModel();
56 q->endResetModel();
51}
57}
52
58
@@ -54,7 +60,7 @@ void UsersModelPrivate::resetEntries_single()
54{
60{
55 entries =
61 entries =
56 {
62 {
57− { "single", "Single User", 0, 0, false, false, 0, 0 },
63+ { "single", "Single User", 0, 0, false, false, 0, 0, 0 },
58 };
64 };
59}
65}
60
66
@@ -62,7 +68,7 @@ void UsersModelPrivate::resetEntries_singlePassphrase()
62{
68{
63 entries =
69 entries =
64 {
70 {
65− { "single", "Single User", 0, 0, false, false, 0, 0 },
71+ { "single", "Single User", 0, 0, false, false, 0, 0, 0 },
66 };
72 };
67}
73}
68
74
@@ -70,7 +76,7 @@ void UsersModelPrivate::resetEntries_singlePin()
70{
76{
71 entries =
77 entries =
72 {
78 {
73− { "has-pin", "Has PIN", 0, 0, false, false, 0, 0 },
79+ { "has-pin", "Has PIN", 0, 0, false, false, 0, 0, 0 },
74 };
80 };
75}
81}
76
82
@@ -78,26 +84,26 @@ void UsersModelPrivate::resetEntries_full()
78{
84{
79 entries =
85 entries =
80 {
86 {
81− { "has-password", "Has Password", 0, 0, false, false, 0, 0 },
87+ { "has-password", "Has Password", 0, 0, false, false, 0, 0, 0 },
82− { "has-pin", "Has PIN", 0, 0, false, false, 0, 0 },
88+ { "has-pin", "Has PIN", 0, 0, false, false, 0, 0, 0 },
83− { "different-prompt", "Different Prompt", 0, 0, false, false, 0, 0 },
89+ { "different-prompt", "Different Prompt", 0, 0, false, false, 0, 0, 0 },
84− { "no-password", "No Password", 0, 0, false, false, 0, 0 },
90+ { "no-password", "No Password", 0, 0, false, false, 0, 0, 0 },
85− { "auth-error", "Auth Error", 0, 0, false, false, 0, 0 },
91+ { "auth-error", "Auth Error", 0, 0, false, false, 0, 0, 0 },
86− { "two-factor", "Two Factor", 0, 0, false, false, 0, 0 },
92+ { "two-factor", "Two Factor", 0, 0, false, false, 0, 0, 0 },
87− { "info-prompt", "Info Prompt", 0, 0, false, false, 0, 0 },
93+ { "info-prompt", "Info Prompt", 0, 0, false, false, 0, 0, 0 },
88− { "html-info-prompt", "HTML Info Prompt", 0, 0, false, false, 0, 0 },
94+ { "html-info-prompt", "HTML Info Prompt", 0, 0, false, false, 0, 0, 0 },
89− { "long-info-prompt", "Long Info Prompt", 0, 0, false, false, 0, 0 },
95+ { "long-info-prompt", "Long Info Prompt", 0, 0, false, false, 0, 0, 0 },
90− { "wide-info-prompt", "Wide Info Prompt", 0, 0, false, false, 0, 0 },
96+ { "wide-info-prompt", "Wide Info Prompt", 0, 0, false, false, 0, 0, 0 },
91− { "multi-info-prompt", "Multi Info Prompt", 0, 0, false, false, 0, 0 },
97+ { "multi-info-prompt", "Multi Info Prompt", 0, 0, false, false, 0, 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 },
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 },
93− { "color-background", "Color Background", "#dd4814", 0, false, false, 0, 0 },
99+ { "color-background", "Color Background", "#dd4814", 0, false, false, 0, 0, 0 },
94 // white and black are a bit redundant, but useful for manually testing if UI is still readable
100 // 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 },
101+ { "white-background", "White Background", "#ffffff", 0, false, false, 0, 0, 0 },
96− { "black-background", "Black Background", "#000000", 0, false, false, 0, 0 },
102+ { "black-background", "Black Background", "#000000", 0, false, false, 0, 0, 0 },
97− { "no-background", "No Background", "", 0, false, false, 0, 0 },
103+ { "no-background", "No Background", "", 0, false, false, 0, 0, 0 },
98− { "unicode", "가나다라마", 0, 0, false, false, 0, 0 },
104+ { "unicode", "가나다라마", 0, 0, false, false, 0, 0, 0 },
99− { "no-response", "No Response", 0, 0, false, false, 0, 0 },
105+ { "no-response", "No Response", 0, 0, false, false, 0, 0, 0 },
100− { "empty-name", "", 0, 0, false, false, 0, 0 },
106+ { "empty-name", "", 0, 0, false, false, 0, 0, 0 },
101 };
107 };
102}
108}
103
109
tests/mocks/LightDM/IntegratedLightDM/liblightdm/UsersModelPrivate.h+2−1
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2014 Canonical, Ltd.
2+ * Copyright (C) 2014-2016 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
@@ -35,6 +35,7 @@ public:
35 bool has_messages;
35 bool has_messages;
36 QString session;
36 QString session;
37 QString infographic;
37 QString infographic;
38+ uid_t uid;
38};
39};
39
40
40class UsersModelPrivate
41class 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+
1add_library(QtMultimedia-qml MODULE
6add_library(QtMultimedia-qml MODULE
2 plugin.cpp
7 plugin.cpp
3− audio.cpp
8+ mediaplayer.cpp
9+ videooutput.cpp
4 declarativeplaylist.cpp
10 declarativeplaylist.cpp
5 )
11 )
6
12
7−qt5_use_modules(QtMultimedia-qml Qml)
13+qt5_use_modules(QtMultimedia-qml Qml Quick)
8
14
9add_unity8_mock(QtMultimedia 5.0 QtMultimedia TARGETS QtMultimedia-qml)
15add_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 @@
17 */
17 */
18
18
19#include "plugin.h"
19#include "plugin.h"
20−#include "audio.h"
20+#include "mediaplayer.h"
21#include "declarativeplaylist.h"
21#include "declarativeplaylist.h"
22+#include "videooutput.h"
22
23
23#include <QtQml/qqml.h>
24#include <QtQml/qqml.h>
24
25
25void MockQtMultimediaPlugin::registerTypes(const char *uri)
26void MockQtMultimediaPlugin::registerTypes(const char *uri)
26{
27{
27 Q_ASSERT(uri == QLatin1String("QtMultimedia"));
28 Q_ASSERT(uri == QLatin1String("QtMultimedia"));
28− qmlRegisterType<Audio>(uri, 5, 0, "Audio");
29+ qmlRegisterType<MediaPlayer>(uri, 5, 0, "Audio");
29− qmlRegisterType<Audio>(uri, 5, 0, "MediaPlayer");
30+ qmlRegisterType<MediaPlayer>(uri, 5, 0, "MediaPlayer");
31+ qmlRegisterType<VideoOutput>(uri, 5, 0, "VideoOutput");
32+
33+ qmlRegisterType<MediaDataSource>(uri, 5, 0, "MediaDataSource");
30 qmlRegisterType<DeclarativePlaylist>(uri, 5, 6, "Playlist");
34 qmlRegisterType<DeclarativePlaylist>(uri, 5, 6, "Playlist");
31}
35}
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()
302 application->setAppId("unity8-dash");
302 application->setAppId("unity8-dash");
303 application->setName("Unity 8 Mock Dash");
303 application->setName("Unity 8 Mock Dash");
304 application->setScreenshotId("unity8-dash");
304 application->setScreenshotId("unity8-dash");
305− application->setSupportedOrientations(Qt::PrimaryOrientation);
306 m_availableApplications.append(application);
305 m_availableApplications.append(application);
307
306
308 application = new ApplicationInfo(this);
307 application = new ApplicationInfo(this);
@@ -459,6 +458,12 @@ void ApplicationManager::buildListOfAvailableApplications()
459 application->setScreenshotId("libreoffice");
458 application->setScreenshotId("libreoffice");
460 application->setIsTouchApp(false);
459 application->setIsTouchApp(false);
461 m_availableApplications.append(application);
460 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);
462}
467}
463
468
464
469
tests/mocks/Unity/Application/UbuntuKeyboardInfo.cpp+1−1
@@ -21,7 +21,7 @@ UbuntuKeyboardInfo::UbuntuKeyboardInfo(QObject *parent)
21 m_x(0),
21 m_x(0),
22 m_y(0),
22 m_y(0),
23 m_width(200),
23 m_width(200),
24− m_height(200)
24+ m_height(0)
25{
25{
26}
26}
27
27
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
39 , m_searching(false)
39 , m_searching(false)
40 , m_favorite(favorite)
40 , m_favorite(favorite)
41 , m_isActive(false)
41 , m_isActive(false)
42+ , m_hasBeenActive(false)
42 , m_hasNavigation(true)
43 , m_hasNavigation(true)
43 , m_hasPrimaryFilter(true)
44 , m_hasPrimaryFilter(true)
44 , m_currentNavigationId("root")
45 , m_currentNavigationId("root")
@@ -108,7 +109,7 @@ bool Scope::favorite() const
108
109
109unity::shell::scopes::CategoriesInterface* Scope::categories() const
110unity::shell::scopes::CategoriesInterface* Scope::categories() const
110{
111{
111− return m_categories;
112+ return m_hasBeenActive ? m_categories : nullptr;
112}
113}
113
114
114unity::shell::scopes::SettingsModelInterface* Scope::settings() const
115unity::shell::scopes::SettingsModelInterface* Scope::settings() const
@@ -153,6 +154,10 @@ void Scope::setActive(const bool active)
153 m_isActive = active;
154 m_isActive = active;
154 Q_EMIT isActiveChanged();
155 Q_EMIT isActiveChanged();
155 }
156 }
157+ if (active && !m_hasBeenActive) {
158+ m_hasBeenActive = true;
159+ Q_EMIT categoriesChanged();
160+ }
156}
161}
157
162
158void Scope::setFavorite(const bool favorite)
163void Scope::setFavorite(const bool favorite)
tests/mocks/Unity/fake_scope.h+1
@@ -109,6 +109,7 @@ protected:
109 bool m_searching;
109 bool m_searching;
110 bool m_favorite;
110 bool m_favorite;
111 bool m_isActive;
111 bool m_isActive;
112+ bool m_hasBeenActive;
112 bool m_hasNavigation;
113 bool m_hasNavigation;
113 bool m_hasPrimaryFilter;
114 bool m_hasPrimaryFilter;
114 QString m_currentNavigationId;
115 QString m_currentNavigationId;
tests/mocks/Utils/CMakeLists.txt+5−1
@@ -1,10 +1,14 @@
1include_directories(
1include_directories(
2 ${CMAKE_CURRENT_SOURCE_DIR}
2 ${CMAKE_CURRENT_SOURCE_DIR}
3 ${CMAKE_CURRENT_BINARY_DIR}
3 ${CMAKE_CURRENT_BINARY_DIR}
4+ ${CMAKE_SOURCE_DIR}/plugins/Utils
5+)
6+
7+include_directories(
8+ SYSTEM
4 ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
9 ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
5 ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
10 ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
6 ${GIO_INCLUDE_DIRS}
11 ${GIO_INCLUDE_DIRS}
7− ${CMAKE_SOURCE_DIR}/plugins/Utils
8)
12)
9
13
10set(QMLPLUGIN_SRC
14set(QMLPLUGIN_SRC
tests/mocks/Utils/windowstatestorage.cpp+2−2
@@ -53,9 +53,9 @@ void WindowStateStorage::saveStage(const QString &appId, int stage)
53 Q_EMIT stageSaved(appId, stage);
53 Q_EMIT stageSaved(appId, stage);
54}
54}
55
55
56−int WindowStateStorage::getStage(const QString &appId) const
56+int WindowStateStorage::getStage(const QString &appId, int defaultValue) const
57{
57{
58− return m_stage.value(appId, unity::shell::application::ApplicationInfoInterface::MainStage);
58+ return m_stage.value(appId, defaultValue);
59}
59}
60
60
61void WindowStateStorage::clear()
61void WindowStateStorage::clear()
tests/mocks/Utils/windowstatestorage.h+1−1
@@ -48,7 +48,7 @@ public:
48 Q_INVOKABLE QRect getGeometry(const QString &windowId, const QRect &defaultValue);
48 Q_INVOKABLE QRect getGeometry(const QString &windowId, const QRect &defaultValue);
49
49
50 Q_INVOKABLE void saveStage(const QString &appId, int stage);
50 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;
52
52
53 // Only in the mock, to easily restore a fresh state
53 // Only in the mock, to easily restore a fresh state
54 Q_INVOKABLE void clear();
54 Q_INVOKABLE void clear();
tests/plugins/Dash/CMakeLists.txt+4
@@ -12,10 +12,14 @@ endif()
12
12
13
13
14include_directories(
14include_directories(
15+ SYSTEM
15 ${Qt5Qml_PRIVATE_INCLUDE_DIRS}
16 ${Qt5Qml_PRIVATE_INCLUDE_DIRS}
16 ${Qt5Quick_INCLUDE_DIRS}
17 ${Qt5Quick_INCLUDE_DIRS}
17 ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
18 ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
18 ${Qt5V8_PRIVATE_INCLUDE_DIR}
19 ${Qt5V8_PRIVATE_INCLUDE_DIR}
20+ )
21+
22+include_directories(
19 ${CMAKE_CURRENT_SOURCE_DIR}/../../../plugins/Dash
23 ${CMAKE_CURRENT_SOURCE_DIR}/../../../plugins/Dash
20 ${CMAKE_CURRENT_BINARY_DIR}
24 ${CMAKE_CURRENT_BINARY_DIR}
21 )
25 )
tests/plugins/Dash/horizontaljournaltest.cpp−3
@@ -23,10 +23,7 @@
23#include <QStringListModel>
23#include <QStringListModel>
24#include <QQmlContext>
24#include <QQmlContext>
25#include <QQmlEngine>
25#include <QQmlEngine>
26−#pragma GCC diagnostic push
27−#pragma GCC diagnostic ignored "-pedantic"
28#include <private/qquickitem_p.h>
26#include <private/qquickitem_p.h>
29−#pragma GCC diagnostic pop
30
27
31#include "horizontaljournal.h"
28#include "horizontaljournal.h"
32
29
tests/plugins/Dash/listviewwithpageheadersectionexternalmodeltest.cpp−3
@@ -22,12 +22,9 @@
22#include <QSignalSpy>
22#include <QSignalSpy>
23#include <QSortFilterProxyModel>
23#include <QSortFilterProxyModel>
24#include <QtTestGui>
24#include <QtTestGui>
25−#pragma GCC diagnostic push
26−#pragma GCC diagnostic ignored "-pedantic"
27#include <private/qqmllistmodel_p.h>
25#include <private/qqmllistmodel_p.h>
28#include <private/qquickanimation_p.h>
26#include <private/qquickanimation_p.h>
29#include <private/qquickitem_p.h>
27#include <private/qquickitem_p.h>
30−#pragma GCC diagnostic pop
31
28
32class StringListModel : public QAbstractListModel
29class StringListModel : public QAbstractListModel
33{
30{
tests/plugins/Dash/listviewwithpageheadersectiontest.cpp−3
@@ -21,12 +21,9 @@
21#include <QQuickView>
21#include <QQuickView>
22#include <QSignalSpy>
22#include <QSignalSpy>
23#include <QtTestGui>
23#include <QtTestGui>
24−#pragma GCC diagnostic push
25−#pragma GCC diagnostic ignored "-pedantic"
26#include <private/qqmllistmodel_p.h>
24#include <private/qqmllistmodel_p.h>
27#include <private/qquickanimation_p.h>
25#include <private/qquickanimation_p.h>
28#include <private/qquickitem_p.h>
26#include <private/qquickitem_p.h>
29−#pragma GCC diagnostic pop
30
27
31class ListViewWithPageHeaderTestSection : public QObject
28class ListViewWithPageHeaderTestSection : public QObject
32{
29{
tests/plugins/Dash/listviewwithpageheadertest.cpp−3
@@ -21,12 +21,9 @@
21#include <QQuickView>
21#include <QQuickView>
22#include <QSignalSpy>
22#include <QSignalSpy>
23#include <QtTestGui>
23#include <QtTestGui>
24−#pragma GCC diagnostic push
25−#pragma GCC diagnostic ignored "-pedantic"
26#include <private/qqmllistmodel_p.h>
24#include <private/qqmllistmodel_p.h>
27#include <private/qquickanimation_p.h>
25#include <private/qquickanimation_p.h>
28#include <private/qquickitem_p.h>
26#include <private/qquickitem_p.h>
29−#pragma GCC diagnostic pop
30
27
31#include <limits>
28#include <limits>
32
29
tests/plugins/Dash/organicgridtest.cpp−3
@@ -23,10 +23,7 @@
23#include <QStringListModel>
23#include <QStringListModel>
24#include <QQmlContext>
24#include <QQmlContext>
25#include <QQmlEngine>
25#include <QQmlEngine>
26−#pragma GCC diagnostic push
27−#pragma GCC diagnostic ignored "-pedantic"
28#include <private/qquickitem_p.h>
26#include <private/qquickitem_p.h>
29−#pragma GCC diagnostic pop
30
27
31#include "organicgrid.h"
28#include "organicgrid.h"
32
29
tests/plugins/Dash/verticaljournaltest.cpp−3
@@ -23,10 +23,7 @@
23#include <QStringListModel>
23#include <QStringListModel>
24#include <QQmlContext>
24#include <QQmlContext>
25#include <QQmlEngine>
25#include <QQmlEngine>
26−#pragma GCC diagnostic push
27−#pragma GCC diagnostic ignored "-pedantic"
28#include <private/qquickitem_p.h>
26#include <private/qquickitem_p.h>
29−#pragma GCC diagnostic pop
30
27
31#include "verticaljournal.h"
28#include "verticaljournal.h"
32
29
tests/plugins/Ubuntu/Gestures/CMakeLists.txt+3−2
@@ -4,14 +4,15 @@ pkg_check_modules(UBUNTUGESTURES REQUIRED UbuntuGestures)
4
4
5# DANGER! DANGER! Using Qt's private API!
5# DANGER! DANGER! Using Qt's private API!
6include_directories(
6include_directories(
7+ SYSTEM
7 ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
8 ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
9+ ${UBUNTUGESTURES_INCLUDE_DIRS}
10+ ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
8)
11)
9
12
10include_directories(
13include_directories(
11 ${CMAKE_SOURCE_DIR}/plugins/Ubuntu/Gestures
14 ${CMAKE_SOURCE_DIR}/plugins/Ubuntu/Gestures
12− ${UBUNTUGESTURES_INCLUDE_DIRS}
13 ${CMAKE_CURRENT_BINARY_DIR}
15 ${CMAKE_CURRENT_BINARY_DIR}
14− ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
15 )
16 )
16
17
17export_qmlfiles(UbuntuGesturesTest .)
18export_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+
1include_directories(
11include_directories(
2 ${CMAKE_CURRENT_BINARY_DIR}
12 ${CMAKE_CURRENT_BINARY_DIR}
3 ${CMAKE_SOURCE_DIR}/plugins/Unity/Session
13 ${CMAKE_SOURCE_DIR}/plugins/Unity/Session
@@ -9,6 +19,17 @@ add_definitions(-DSM_BUSNAME=sessionBus)
9add_definitions(-DSRCDIR="${CMAKE_CURRENT_SOURCE_DIR}")
19add_definitions(-DSRCDIR="${CMAKE_CURRENT_SOURCE_DIR}")
10add_definitions(-DSESSION_TESTING)
20add_definitions(-DSESSION_TESTING)
11
21
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+
12### SessionBackendTest
33### SessionBackendTest
13add_executable(sessionbackendtestExec
34add_executable(sessionbackendtestExec
14 sessionbackendtest.cpp
35 sessionbackendtest.cpp
@@ -21,6 +42,13 @@ target_link_libraries(sessionbackendtestExec
21qt5_use_modules(sessionbackendtestExec Test Core Qml DBus)
42qt5_use_modules(sessionbackendtestExec Test Core Qml DBus)
22
43
23add_unity8_unittest(SessionBackend dbus-test-runner
44add_unity8_unittest(SessionBackend dbus-test-runner
45+ ENVIRONMENT XDG_SESSION_PATH=/session
24 ARG_PREFIX "--parameter"
46 ARG_PREFIX "--parameter"
47+ ARGS
48+ --task $<TARGET_FILE:LightDMServer>
49+ --task-name server
50+ --ignore-return
25− ARGS --task $<TARGET_FILE:sessionbackendtestExec>
51+ --task $<TARGET_FILE:sessionbackendtestExec>
52+ --task-name client
53+ --wait-for org.freedesktop.DisplayManager
26)
54)
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:
61 QTest::newRow("Reboot") << "RequestReboot" << "RebootRequested(bool)";
61 QTest::newRow("Reboot") << "RequestReboot" << "RebootRequested(bool)";
62 QTest::newRow("Shutdown") << "RequestShutdown" << "ShutdownRequested(bool)";
62 QTest::newRow("Shutdown") << "RequestShutdown" << "ShutdownRequested(bool)";
63 QTest::newRow("PromptLock") << "PromptLock" << "LockRequested()";
63 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()
64 }
66 }
65
67
66 void testUnitySessionLogoutRequested() {
68 void testUnitySessionLogoutRequested() {
@@ -76,7 +78,7 @@ private Q_SLOTS:
76 QDBusReply<void> reply = dbusUnitySession->call(method);
78 QDBusReply<void> reply = dbusUnitySession->call(method);
77 QCOMPARE(reply.isValid(), true);
79 QCOMPARE(reply.isValid(), true);
78
80
79− QCOMPARE(spy.count(), 1);
81+ QTRY_COMPARE(spy.count(), 1);
80 }
82 }
81
83
82 void testGnomeSessionWrapper_data() {
84 void testGnomeSessionWrapper_data() {
@@ -122,6 +124,18 @@ private Q_SLOTS:
122 QCOMPARE(spy.count(), 1);
124 QCOMPARE(spy.count(), 1);
123 }
125 }
124
126
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+
125 void testUserName() {
139 void testUserName() {
126 DBusUnitySessionService dbusUnitySessionService;
140 DBusUnitySessionService dbusUnitySessionService;
127 QCoreApplication::processEvents(); // to let the service register on DBus
141 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)
12add_unity8_qmltest(Components DraggingArea)
12add_unity8_qmltest(Components DraggingArea)
13add_unity8_qmltest(Components LazyImage)
13add_unity8_qmltest(Components LazyImage)
14add_unity8_qmltest(Components Lockscreen)
14add_unity8_qmltest(Components Lockscreen)
15+add_unity8_qmltest(Components MediaServices)
15add_unity8_qmltest(Components ModeSwitchWarningDialog)
16add_unity8_qmltest(Components ModeSwitchWarningDialog)
16add_unity8_qmltest(Components PhysicalKeysMapper)
17add_unity8_qmltest(Components PhysicalKeysMapper)
17add_unity8_qmltest(Components Rating)
18add_unity8_qmltest(Components Rating)
18add_unity8_qmltest(Components ResponsiveGridView)
19add_unity8_qmltest(Components ResponsiveGridView)
19add_unity8_qmltest(Components ResponsiveVerticalJournal)
20add_unity8_qmltest(Components ResponsiveVerticalJournal)
21+add_unity8_qmltest(Components SharingPicker)
20add_unity8_qmltest(Components Showable)
22add_unity8_qmltest(Components Showable)
21add_unity8_qmltest(Components VirtualTouchPad)
23add_unity8_qmltest(Components VirtualTouchPad)
22add_unity8_qmltest(Components WallpaperResolver)
24add_unity8_qmltest(Components WallpaperResolver)
@@ -40,6 +42,7 @@ add_unity8_qmltest(Dash/Previews PreviewExpandable)
40add_unity8_qmltest(Dash/Previews PreviewHeader)
42add_unity8_qmltest(Dash/Previews PreviewHeader)
41add_unity8_qmltest(Dash/Previews PreviewIconActions)
43add_unity8_qmltest(Dash/Previews PreviewIconActions)
42add_unity8_qmltest(Dash/Previews PreviewImageGallery)
44add_unity8_qmltest(Dash/Previews PreviewImageGallery)
45+add_unity8_qmltest(Dash/Previews PreviewInlineVideo)
43add_unity8_qmltest(Dash/Previews PreviewMediaToolbar)
46add_unity8_qmltest(Dash/Previews PreviewMediaToolbar)
44add_unity8_qmltest(Dash/Previews PreviewPayments)
47add_unity8_qmltest(Dash/Previews PreviewPayments)
45add_unity8_qmltest(Dash/Previews PreviewProgress)
48add_unity8_qmltest(Dash/Previews PreviewProgress)
@@ -47,7 +50,6 @@ add_unity8_qmltest(Dash/Previews PreviewRatingDisplay)
47add_unity8_qmltest(Dash/Previews PreviewRatingDisplayCreationRanges)
50add_unity8_qmltest(Dash/Previews PreviewRatingDisplayCreationRanges)
48add_unity8_qmltest(Dash/Previews PreviewRatingEdit)
51add_unity8_qmltest(Dash/Previews PreviewRatingEdit)
49add_unity8_qmltest(Dash/Previews PreviewRatingInput)
52add_unity8_qmltest(Dash/Previews PreviewRatingInput)
50−add_unity8_qmltest(Dash/Previews PreviewSharing)
51add_unity8_qmltest(Dash/Previews PreviewTable)
53add_unity8_qmltest(Dash/Previews PreviewTable)
52add_unity8_qmltest(Dash/Previews PreviewTextSummary)
54add_unity8_qmltest(Dash/Previews PreviewTextSummary)
53add_unity8_qmltest(Dash/Previews PreviewVideoPlayback)
55add_unity8_qmltest(Dash/Previews PreviewVideoPlayback)
tests/qmltests/Components/CMakeLists.txt+5−1
@@ -6,8 +6,12 @@ pkg_check_modules(UBUNTUGESTURES REQUIRED UbuntuGestures)
6
6
7include_directories(
7include_directories(
8 ${CMAKE_SOURCE_DIR}/plugins/Ubuntu/Gestures
8 ${CMAKE_SOURCE_DIR}/plugins/Ubuntu/Gestures
9− ${UBUNTUGESTURES_INCLUDE_DIRS}
10 ${CMAKE_CURRENT_BINARY_DIR}
9 ${CMAKE_CURRENT_BINARY_DIR}
10+ )
11+
12+include_directories(
13+ SYSTEM
14+ ${UBUNTUGESTURES_INCLUDE_DIRS}
11 ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
15 ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
12 ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
16 ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
13 ${UBUNTUGESTURES_INCLUDEDIR}/UbuntuGestures/${UBUNTUGESTURES_VERSION}
17 ${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 {
173 function cleanup() {
173 function cleanup() {
174 lockscreen.clear(false);
174 lockscreen.clear(false);
175 delayMinutesTextField.text = "0"
175 delayMinutesTextField.text = "0"
176+ enteredLabel.text = "";
176
177
177 // Reset sizing
178 // Reset sizing
178 root.width = units.gu(80)
179 root.width = units.gu(80)
@@ -247,7 +248,6 @@ Rectangle {
247 }
248 }
248
249
249 function test_unlock(data) {
250 function test_unlock(data) {
250− enteredLabel.text = ""
251 minPinLengthTextField.text = data.minPinLength
251 minPinLengthTextField.text = data.minPinLength
252 maxPinLengthTextField.text = data.maxPinLength
252 maxPinLengthTextField.text = data.maxPinLength
253 pinPadCheckBox.checked = data.alphanumeric
253 pinPadCheckBox.checked = data.alphanumeric
@@ -462,6 +462,25 @@ Rectangle {
462 compare(label.text, "Device Locked")
462 compare(label.text, "Device Locked")
463 }
463 }
464
464
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+
465 function test_resize_data() {
484 function test_resize_data() {
466 return [
485 return [
467 { tag: "small", width: units.gu(40), height: units.gu(76) },
486 { 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 @@
17import QtQuick 2.4
17import QtQuick 2.4
18import QtTest 1.0
18import QtTest 1.0
19import Ubuntu.Components 1.3
19import Ubuntu.Components 1.3
20−import "../../../../qml/Dash/Previews"
20+import "../../../qml/Components"
21import Unity.Test 0.1 as UT
21import Unity.Test 0.1 as UT
22
22
23Rectangle {
23Rectangle {
@@ -40,33 +40,33 @@ Rectangle {
40 "content-type": "text"
40 "content-type": "text"
41 }
41 }
42
42
43− PreviewSharing {
43+ SharingPicker {
44− id: previewSharing
44+ id: sharingPicker
45 anchors { left: parent.left; bottom: parent.bottom; }
45 anchors { left: parent.left; bottom: parent.bottom; }
46 shareData: root.shareData
46 shareData: root.shareData
47 }
47 }
48
48
49 UT.UnityTestCase {
49 UT.UnityTestCase {
50− name: "PreviewSharingTest"
50+ name: "SharingPickerTest"
51 when: windowShown
51 when: windowShown
52
52
53− property Item peerPicker: findChild(previewSharing.rootItem, "peerPicker")
53+ property Item peerPicker: findChild(sharingPicker.rootItem, "peerPicker")
54
54
55 function cleanup() {
55 function cleanup() {
56 peerPicker.visible = false;
56 peerPicker.visible = false;
57 }
57 }
58
58
59 function test_open_picker() {
59 function test_open_picker() {
60− mouseClick(previewSharing);
60+ sharingPicker.showPeerPicker();
61 compare(peerPicker.visible, true);
61 compare(peerPicker.visible, true);
62 }
62 }
63
63
64 function test_createExportedItems() {
64 function test_createExportedItems() {
65− var exportedItems = previewSharing.createExportedItems(shareData["uri"]);
65+ var exportedItems = sharingPicker.createExportedItems(shareData["uri"]);
66 for (var i = 0; i < exportedItems.length; i++) {
66 for (var i = 0; i < exportedItems.length; i++) {
67 compare(exportedItems[i].url, shareData["uri"][i]);
67 compare(exportedItems[i].url, shareData["uri"][i]);
68 }
68 }
69− exportedItems = previewSharing.createExportedItems(shareDataString["uri"]);
69+ exportedItems = sharingPicker.createExportedItems(shareDataString["uri"]);
70 compare(exportedItems[0].url, shareDataString["uri"]);
70 compare(exportedItems[0].url, shareDataString["uri"]);
71 }
71 }
72 }
72 }
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 {
51 name: "PreviewMediaToolbarTest"
51 name: "PreviewMediaToolbarTest"
52 when: windowShown
52 when: windowShown
53
53
54− property Item sharingWidget: findChild(previewMediaToolbar, "sharingWidget")
54+ property Item sharingPicker: findChild(previewMediaToolbar, "sharingPicker")
55
55
56 function cleanup() {
56 function cleanup() {
57 previewMediaToolbar.shareData = root.shareData;
57 previewMediaToolbar.shareData = root.shareData;
@@ -60,10 +60,10 @@ Rectangle {
60 function test_visible() {
60 function test_visible() {
61 previewMediaToolbar.shareData = shareDataNoUri;
61 previewMediaToolbar.shareData = shareDataNoUri;
62 compare(previewMediaToolbar.visible, false);
62 compare(previewMediaToolbar.visible, false);
63− compare(sharingWidget.visible, false);
63+ compare(sharingPicker.visible, false);
64 previewMediaToolbar.shareData = shareData;
64 previewMediaToolbar.shareData = shareData;
65 compare(previewMediaToolbar.visible, true);
65 compare(previewMediaToolbar.visible, true);
66− compare(sharingWidget.visible, true);
66+ compare(sharingPicker.visible, true);
67 }
67 }
68 }
68 }
69}
69}
tests/qmltests/Dash/Previews/tst_PreviewRatingDisplayCreationRanges.qml+51−15
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright 2014,2015 Canonical Ltd.
2+ * Copyright 2014-2016 Canonical Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
@@ -42,6 +42,8 @@ Flickable {
42 parentFlickable: root
42 parentFlickable: root
43 }
43 }
44
44
45+ property int createdDelegates: 0
46+
45 Component.onCompleted: {
47 Component.onCompleted: {
46 for (var i = 0; i < 500; ++i) {
48 for (var i = 0; i < 500; ++i) {
47 widgetData500.reviews.push({ author: "Some dude", review: "Very cool app" + i });
49 widgetData500.reviews.push({ author: "Some dude", review: "Very cool app" + i });
@@ -49,37 +51,68 @@ Flickable {
49 factory.widgetData = widgetData500;
51 factory.widgetData = widgetData500;
50 }
52 }
51
53
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+
52 UT.UnityTestCase {
68 UT.UnityTestCase {
53− name: "PreviewRatingDisplayTest"
69+ name: "PreviewRatingDisplayCreationRangesTest"
54 when: windowShown
70 when: windowShown
55
71
56− function test_creation_speed() {
72+ function initTestCase() {
57− factory.parentFlickable = null;
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
58 factory.widgetData = reviewsEmpty;
80 factory.widgetData = reviewsEmpty;
59 waitForRendering(root);
81 waitForRendering(root);
60
82
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
62 factory.widgetData = widgetData500;
88 factory.widgetData = widgetData500;
63 waitForRendering(root);
89 waitForRendering(root);
64− var end = new Date().getTime();
65− var time500 = end - start;
66
90
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
67 factory.widgetData = reviewsEmpty;
99 factory.widgetData = reviewsEmpty;
68 waitForRendering(root);
100 waitForRendering(root);
69
101
102+ // set parentFlickable to enable the creation ranges code
70 factory.parentFlickable = root;
103 factory.parentFlickable = root;
71− start = new Date().getTime();
104+ root.createdDelegates = 0;
105+
106+ // Set the 500 reviews data
72 factory.widgetData = widgetData500;
107 factory.widgetData = widgetData500;
73 waitForRendering(root);
108 waitForRendering(root);
74− end = new Date().getTime();
75− var timeRanges500 = end - start;
76
109
77− // Measurements show it's usually like 20 times faster
110+ // Check we have only created a few delegates
78− // but we set the range at 8 times fast to make sure it's not an unstable test
111+ // For some reason xenial and yaketti we get 16 and on vivid 15 so
79− verify(timeRanges500 * 8 < time500);
112+ // settle for <= 20
80− }
113+ expectFailContinue("", "Should not create more than 20 delegates when using ranges");
114+ tryCompareFunction(function() { return root.createdDelegates > 20 }, true);
81
115
82− function test_check_indexes() {
83 // Check that item 499 isn't there on startup but if we scroll down
116 // Check that item 499 isn't there on startup but if we scroll down
84 // it will be there
117 // it will be there
85 var reviewItem499 = findChild(factory, "reviewItem499");
118 var reviewItem499 = findChild(factory, "reviewItem499");
@@ -89,6 +122,9 @@ Flickable {
89
122
90 var reviewItem499 = findChild(factory, "reviewItem499");
123 var reviewItem499 = findChild(factory, "reviewItem499");
91 verify(reviewItem499 !== null);
124 verify(reviewItem499 !== null);
125+
126+ // Check we have created 500 delegates
127+ compare(root.createdDelegates, 500);
92 }
128 }
93 }
129 }
94}
130}
tests/qmltests/Dash/Previews/tst_PreviewRatingEdit.qml+3
@@ -56,7 +56,9 @@ Rectangle {
56 verify(!reviewTextArea.visible)
56 verify(!reviewTextArea.visible)
57
57
58 var editButton = findChild(previewRatingEdit, "editButton");
58 var editButton = findChild(previewRatingEdit, "editButton");
59+ var display = findChild(previewRatingEdit, "display");
59 mouseClick(editButton);
60 mouseClick(editButton);
61+ tryCompare(display, "visible", false);
60 verify(!authorLabel.visible)
62 verify(!authorLabel.visible)
61 verify(reviewTextArea.visible)
63 verify(reviewTextArea.visible)
62
64
@@ -72,6 +74,7 @@ Rectangle {
72 var submitButton = findChild(previewRatingEdit, "submitButton")
74 var submitButton = findChild(previewRatingEdit, "submitButton")
73 mouseClick(submitButton);
75 mouseClick(submitButton);
74
76
77+ tryCompare(display, "visible", true);
75 compare(spy.count, 1);
78 compare(spy.count, 1);
76 var args = spy.signalArguments[0];
79 var args = spy.signalArguments[0];
77 compare(args[0], previewRatingEdit.widgetId);
80 compare(args[0], previewRatingEdit.widgetId);
tests/qmltests/Dash/Previews/tst_PreviewWidgetFactory.qml+17−16
@@ -75,26 +75,27 @@ Rectangle {
75
75
76 function test_mapping_data() {
76 function test_mapping_data() {
77 return [
77 return [
78− { tag: "Actions", type: "actions", source: "PreviewActions.qml", expanded: true },
78+ { tag: "Actions", data: { type: "actions" }, source: "PreviewActions.qml", expanded: true },
79− { tag: "Audio", type: "audio", source: "PreviewAudioPlayback.qml", expanded: true },
79+ { tag: "Audio", data: { type: "audio" }, source: "PreviewAudioPlayback.qml", expanded: true },
80− { tag: "Comment", type: "comment", source: "PreviewComment.qml", expanded: true },
80+ { tag: "Comment", data: { type: "comment" }, source: "PreviewComment.qml", expanded: true },
81− { tag: "Comment Input", type: "comment-input", source: "PreviewCommentInput.qml", expanded: true },
81+ { tag: "Comment Input", data: { type: "comment-input" }, source: "PreviewCommentInput.qml", expanded: true },
82− { tag: "Expandable", type: "expandable", source: "PreviewExpandable.qml", expanded: false },
82+ { tag: "Expandable", data: { type: "expandable" }, source: "PreviewExpandable.qml", expanded: false },
83− { tag: "Gallery", type: "gallery", source: "PreviewImageGallery.qml", expanded: true },
83+ { tag: "Gallery", data: { type: "gallery" }, source: "PreviewImageGallery.qml", expanded: true },
84− { tag: "Header", type: "header", source: "PreviewHeader.qml", expanded: true },
84+ { tag: "Header", data: { type: "header" }, source: "PreviewHeader.qml", expanded: true },
85− { tag: "Image", type: "image", source: "PreviewZoomableImage.qml", expanded: true },
85+ { tag: "Image", data: { type: "image" }, source: "PreviewZoomableImage.qml", expanded: true },
86− { tag: "Progress", type: "progress", source: "PreviewProgress.qml", expanded: true },
86+ { tag: "Progress", data: { type: "progress" }, source: "PreviewProgress.qml", expanded: true },
87− { tag: "Rating Input", type: "rating-input", source: "PreviewRatingInput.qml", expanded: true },
87+ { tag: "Rating Input", data: { type: "rating-input" }, source: "PreviewRatingInput.qml", expanded: true },
88− { tag: "Rating Display", type: "reviews", source: "PreviewRatingDisplay.qml", expanded: true },
88+ { tag: "Rating Display", data: { type: "reviews" }, source: "PreviewRatingDisplay.qml", expanded: true },
89− { tag: "Table", type: "table", source: "PreviewTable.qml", expanded: true },
89+ { tag: "Table", data: { type: "table" }, source: "PreviewTable.qml", expanded: true },
90− { tag: "Text", type: "text", source: "PreviewTextSummary.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 },
91− { tag: "Video", type: "video", source: "PreviewVideoPlayback.qml", expanded: true },
92+ { tag: "Video", data: { type: "video", source: "https://demo" }, source: "PreviewVideoPlayback.qml", expanded: true },
92 ];
93 ];
93 }
94 }
94
95
95 function test_mapping(data) {
96 function test_mapping(data) {
96− factory.widgetData = { type: data.type };
97+ factory.widgetData = data.data;
97− factory.widgetType = data.type;
98+ factory.widgetType = data.data.type;
98
99
99 verify((String(factory.source)).indexOf(data.source) != -1);
100 verify((String(factory.source)).indexOf(data.source) != -1);
100 compare(factory.item.expanded, data.expanded);
101 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 {
112 mouseClick(tile);
112 mouseClick(tile);
113 }
113 }
114
114
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+
115 function test_longNavigationFilterList() {
128 function test_longNavigationFilterList() {
116 // Select the scope with long navigation
129 // Select the scope with long navigation
117 dash.setCurrentScope("LongPrimaryNavigation")
130 dash.setCurrentScope("LongPrimaryNavigation")
@@ -121,6 +134,7 @@ Item {
121 var dashContentList = findChild(dashContent, "dashContentList")
134 var dashContentList = findChild(dashContent, "dashContentList")
122 var searchButton = findChild(dashContentList.currentItem, "search_button")
135 var searchButton = findChild(dashContentList.currentItem, "search_button")
123 var extraPanel = findChild(dashContentList.currentItem, "peExtraPanel")
136 var extraPanel = findChild(dashContentList.currentItem, "peExtraPanel")
137+ waitForRendering(extraPanel);
124 tryCompare(extraPanel, "visible", false)
138 tryCompare(extraPanel, "visible", false)
125
139
126 // Open the primaryNavigationFilter
140 // Open the primaryNavigationFilter
@@ -179,22 +193,16 @@ Item {
179 }
193 }
180
194
181 function test_manage_dash_clickscope_unfavoritable() {
195 function test_manage_dash_clickscope_unfavoritable() {
182− // Show the manage dash
196+ open_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);
191
197
192 // Click scope star area is not visible (i.e. can't be unfavorited)
198 // Click scope star area is not visible (i.e. can't be unfavorited)
199+ var favScopesListCategoryList = findChild(findChild(dash, "scopesListCategoryfavorites"), "scopesListCategoryInnerList");
193 var clickScope = findChild(favScopesListCategoryList, "delegateclickscope");
200 var clickScope = findChild(favScopesListCategoryList, "delegateclickscope");
194 var starArea = findChild(clickScope, "starArea");
201 var starArea = findChild(clickScope, "starArea");
195 compare(starArea.visible, false);
202 compare(starArea.visible, false);
196
203
197 // Go back
204 // Go back
205+ var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
198 var scopesList = findChild(dash, "scopesList");
206 var scopesList = findChild(dash, "scopesList");
199 var scopesListPageHeader = findChild(scopesList, "pageHeader");
207 var scopesListPageHeader = findChild(scopesList, "pageHeader");
200 var backButton = findChild(scopesListPageHeader, "innerPageHeader").leadingActionBar;
208 var backButton = findChild(scopesListPageHeader, "innerPageHeader").leadingActionBar;
@@ -203,20 +211,14 @@ Item {
203 }
211 }
204
212
205 function test_manage_dash_select_same_favorite() {
213 function test_manage_dash_select_same_favorite() {
206− // Show the manage dash
214+ open_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);
215
215
216 // Click in first item
216 // Click in first item
217+ var favScopesListCategoryList = findChild(findChild(dash, "scopesListCategoryfavorites"), "scopesListCategoryInnerList");
217 mouseClick(favScopesListCategoryList.currentItem);
218 mouseClick(favScopesListCategoryList.currentItem);
218
219
219 // Make sure animation went back
220 // Make sure animation went back
221+ var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
220 tryCompare(bottomEdgeController, "progress", 0);
222 tryCompare(bottomEdgeController, "progress", 0);
221
223
222 var dashContentList = findChild(dash, "dashContentList");
224 var dashContentList = findChild(dash, "dashContentList");
@@ -224,31 +226,25 @@ Item {
224 }
226 }
225
227
226 function test_manage_dash_select_different_favorite() {
228 function test_manage_dash_select_different_favorite() {
227− // Show the manage dash
229+ open_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);
236
230
237 // Click in second item
231 // Click in second item
232+ var favScopesListCategoryList = findChild(findChild(dash, "scopesListCategoryfavorites"), "scopesListCategoryInnerList");
238 favScopesListCategoryList.currentIndex = 1;
233 favScopesListCategoryList.currentIndex = 1;
239 mouseClick(favScopesListCategoryList.currentItem);
234 mouseClick(favScopesListCategoryList.currentItem);
240
235
241 // Make sure animation went back
236 // Make sure animation went back
237+ var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
242 tryCompare(bottomEdgeController, "progress", 0);
238 tryCompare(bottomEdgeController, "progress", 0);
243 var dashContentList = findChild(dash, "dashContentList");
239 var dashContentList = findChild(dash, "dashContentList");
244 compare(dashContentList.currentIndex, 1);
240 compare(dashContentList.currentIndex, 1);
245 }
241 }
246
242
247 function test_manage_dash_select_non_favorite() {
243 function test_manage_dash_select_non_favorite() {
248− // Show the manage dash
244+ open_manage_dash();
249− touchFlick(dash, dash.width / 2, dash.height - 1, dash.width / 2, units.gu(2));
245+
250− var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
246+ // Ensure non favorites are visible
251− tryCompare(bottomEdgeController, "progress", 1);
247+ flickToYEnd(findChild(dash,"scopesListFlickable"));
252
248
253 // Make sure stuff is loaded
249 // Make sure stuff is loaded
254 var nonfavScopesListCategory = findChild(dash, "scopesListCategoryother");
250 var nonfavScopesListCategory = findChild(dash, "scopesListCategoryother");
@@ -268,6 +264,7 @@ Item {
268 tryCompare(dashTempScopeItem, "visible", true);
264 tryCompare(dashTempScopeItem, "visible", true);
269
265
270 // Check the manage dash is gone
266 // Check the manage dash is gone
267+ var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
271 tryCompare(bottomEdgeController, "progress", 0);
268 tryCompare(bottomEdgeController, "progress", 0);
272
269
273 // Go back
270 // Go back
@@ -296,6 +293,7 @@ Item {
296 tryCompare(bottomEdgeController, "progress", 1);
293 tryCompare(bottomEdgeController, "progress", 1);
297
294
298 // Go back
295 // Go back
296+ var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
299 var scopesList = findChild(dash, "scopesList");
297 var scopesList = findChild(dash, "scopesList");
300 var scopesListPageHeader = findChild(scopesList, "pageHeader");
298 var scopesListPageHeader = findChild(scopesList, "pageHeader");
301 var backButton = findChild(scopesListPageHeader, "innerPageHeader").leadingActionBar;
299 var backButton = findChild(scopesListPageHeader, "innerPageHeader").leadingActionBar;
@@ -358,10 +356,7 @@ Item {
358 }
356 }
359
357
360 function test_manage_dash_store_no_favorites() {
358 function test_manage_dash_store_no_favorites() {
361− // Show the manage dash
359+ open_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);
365
360
366 // clear the favorite scopes
361 // clear the favorite scopes
367 scopes.clearFavorites();
362 scopes.clearFavorites();
@@ -379,6 +374,7 @@ Item {
379
374
380 spy.wait();
375 spy.wait();
381 compare(spy.signalArguments[0][0], "scope://com.canonical.scopes.clickstore");
376 compare(spy.signalArguments[0][0], "scope://com.canonical.scopes.clickstore");
377+ var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
382 tryCompare(bottomEdgeController, "progress", 0);
378 tryCompare(bottomEdgeController, "progress", 0);
383 }
379 }
384
380
@@ -387,17 +383,10 @@ Item {
387 compare(dashContentList.currentIndex, 0);
383 compare(dashContentList.currentIndex, 0);
388 compare(dashContentList.currentItem.scopeId, "MockScope1");
384 compare(dashContentList.currentItem.scopeId, "MockScope1");
389
385
390− // Show the manage dash
386+ open_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);
399
387
400 // Enter edit mode
388 // Enter edit mode
389+ var favScopesListCategoryList = findChild(findChild(dash, "scopesListCategoryfavorites"), "scopesListCategoryInnerList");
401 var scopesList = findChild(dash, "scopesList");
390 var scopesList = findChild(dash, "scopesList");
402 var clickScope = findChild(favScopesListCategoryList, "delegateclickscope");
391 var clickScope = findChild(favScopesListCategoryList, "delegateclickscope");
403 mousePress(clickScope);
392 mousePress(clickScope);
@@ -408,6 +397,7 @@ Item {
408 touchFlick(starArea, 0, 0, 0, -units.gu(10));
397 touchFlick(starArea, 0, 0, 0, -units.gu(10));
409
398
410 // Exit edit mode and go back
399 // Exit edit mode and go back
400+ var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
411 var scopesList = findChild(dash, "scopesList");
401 var scopesList = findChild(dash, "scopesList");
412 var scopesListPageHeader = findChild(scopesList, "pageHeader");
402 var scopesListPageHeader = findChild(scopesList, "pageHeader");
413 var backButton = findChild(scopesListPageHeader, "innerPageHeader").leadingActionBar;
403 var backButton = findChild(scopesListPageHeader, "innerPageHeader").leadingActionBar;
@@ -429,17 +419,10 @@ Item {
429 compare(dashContentList.currentIndex, 0);
419 compare(dashContentList.currentIndex, 0);
430 compare(dashContentList.currentItem.scopeId, "MockScope1");
420 compare(dashContentList.currentItem.scopeId, "MockScope1");
431
421
432− // Show the manage dash
422+ open_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);
441
423
442 // Enter edit mode
424 // Enter edit mode
425+ var favScopesListCategoryList = findChild(findChild(dash, "scopesListCategoryfavorites"), "scopesListCategoryInnerList");
443 var scopesList = findChild(dash, "scopesList");
426 var scopesList = findChild(dash, "scopesList");
444 var clickScope = findChild(favScopesListCategoryList, "delegateclickscope");
427 var clickScope = findChild(favScopesListCategoryList, "delegateclickscope");
445 mousePress(clickScope);
428 mousePress(clickScope);
@@ -459,6 +442,8 @@ Item {
459 mouseClick(backButton);
442 mouseClick(backButton);
460
443
461 // Click on third scope
444 // Click on third scope
445+ var favScopesListCategoryList = findChild(findChild(dash, "scopesListCategoryfavorites"), "scopesListCategoryInnerList");
446+ var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
462 var mockScope5 = findChild(favScopesListCategoryList, "delegateMockScope5");
447 var mockScope5 = findChild(favScopesListCategoryList, "delegateMockScope5");
463 waitForRendering(mockScope5)
448 waitForRendering(mockScope5)
464 mouseClick(mockScope5);
449 mouseClick(mockScope5);
@@ -472,14 +457,12 @@ Item {
472 compare(dashContentList.currentIndex, 0);
457 compare(dashContentList.currentIndex, 0);
473 compare(dashContentList.currentItem.scopeId, "MockScope1");
458 compare(dashContentList.currentItem.scopeId, "MockScope1");
474
459
475− // Show the manage dash
460+ open_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);
479
461
480 var dashCommunicatorService = findInvisibleChild(dash, "dashCommunicatorService");
462 var dashCommunicatorService = findInvisibleChild(dash, "dashCommunicatorService");
481 dashCommunicatorService.mockSetCurrentScope(1, true, false);
463 dashCommunicatorService.mockSetCurrentScope(1, true, false);
482
464
465+ var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
483 tryCompare(bottomEdgeController, "progress", 0);
466 tryCompare(bottomEdgeController, "progress", 0);
484 tryCompare(dashContentList, "currentIndex", 1)
467 tryCompare(dashContentList, "currentIndex", 1)
485 }
468 }
@@ -507,10 +490,10 @@ Item {
507 }
490 }
508
491
509 function test_close_temp_scope_preview_opening_scope() {
492 function test_close_temp_scope_preview_opening_scope() {
510− // Show the manage dash
493+ open_manage_dash();
511− touchFlick(dash, dash.width / 2, dash.height - 1, dash.width / 2, units.gu(2));
494+
512− var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
495+ // Ensure non favorite scopes are visible
513− tryCompare(bottomEdgeController, "progress", 1);
496+ flickToYEnd(findChild(dash, "scopesListFlickable"));
514
497
515 // Make sure stuff is loaded
498 // Make sure stuff is loaded
516 var nonfavScopesListCategory = findChild(dash, "scopesListCategoryother");
499 var nonfavScopesListCategory = findChild(dash, "scopesListCategoryother");
@@ -530,6 +513,7 @@ Item {
530 tryCompare(dashTempScopeItem, "visible", true);
513 tryCompare(dashTempScopeItem, "visible", true);
531
514
532 // Check the manage dash is gone
515 // Check the manage dash is gone
516+ var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
533 tryCompare(bottomEdgeController, "progress", 0);
517 tryCompare(bottomEdgeController, "progress", 0);
534
518
535 // Open preview
519 // Open preview
@@ -580,12 +564,10 @@ Item {
580 UriHandler.opened("scopes://clickscope");
564 UriHandler.opened("scopes://clickscope");
581 tryCompare(dashContentList, "currentIndex", 1);
565 tryCompare(dashContentList, "currentIndex", 1);
582
566
583− // Show the manage dash
567+ open_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);
587
568
588 // UriHandler changes to a scope and closes the manage scopes
569 // UriHandler changes to a scope and closes the manage scopes
570+ var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
589 UriHandler.opened("scopes://MockScope1");
571 UriHandler.opened("scopes://MockScope1");
590 tryCompare(dashContentList, "currentIndex", 0);
572 tryCompare(dashContentList, "currentIndex", 0);
591 tryCompare(bottomEdgeController, "progress", 0);
573 tryCompare(bottomEdgeController, "progress", 0);
@@ -603,11 +585,11 @@ Item {
603 tryCompare(dashContent, "subPageShown", false);
585 tryCompare(dashContent, "subPageShown", false);
604
586
605 // Go to a temp scope
587 // Go to a temp scope
606− touchFlick(dash, dash.width / 2, dash.height - 1, dash.width / 2, units.gu(2));
588+ open_manage_dash();
607− var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
589+
608− tryCompare(bottomEdgeController, "progress", 1);
609 var nonfavScopesListCategory = findChild(dash, "scopesListCategoryother");
590 var nonfavScopesListCategory = findChild(dash, "scopesListCategoryother");
610 var nonfavScopesListCategoryList = findChild(nonfavScopesListCategory, "scopesListCategoryInnerList");
591 var nonfavScopesListCategoryList = findChild(nonfavScopesListCategory, "scopesListCategoryInnerList");
592+ flickToYEnd(findChild(dash, "scopesListFlickable"));
611 tryCompare(nonfavScopesListCategoryList, "currentIndex", 0);
593 tryCompare(nonfavScopesListCategoryList, "currentIndex", 0);
612 mouseClick(nonfavScopesListCategoryList.currentItem);
594 mouseClick(nonfavScopesListCategoryList.currentItem);
613 var dashTempScopeItem = findChild(dash, "dashTempScopeItem");
595 var dashTempScopeItem = findChild(dash, "dashTempScopeItem");
@@ -666,12 +648,15 @@ Item {
666 function test_tempScopeItemXOnResize()
648 function test_tempScopeItemXOnResize()
667 {
649 {
668 // Go to a temp scope
650 // Go to a temp scope
669− touchFlick(dash, dash.width / 2, dash.height - 1, dash.width / 2, units.gu(2));
651+ open_manage_dash();
670− var bottomEdgeController = findInvisibleChild(dash, "bottomEdgeController");
652+
671− tryCompare(bottomEdgeController, "progress", 1);
672 var nonfavScopesListCategory = findChild(dash, "scopesListCategoryother");
653 var nonfavScopesListCategory = findChild(dash, "scopesListCategoryother");
673 var nonfavScopesListCategoryList = findChild(nonfavScopesListCategory, "scopesListCategoryInnerList");
654 var nonfavScopesListCategoryList = findChild(nonfavScopesListCategory, "scopesListCategoryInnerList");
655+ var scopesListFlickable = findChild(dash, "scopesListFlickable");
674 tryCompare(nonfavScopesListCategoryList, "currentIndex", 0);
656 tryCompare(nonfavScopesListCategoryList, "currentIndex", 0);
657+
658+ // Ensure the non-favorites, located at the bottom, are visible
659+ flickToYEnd(scopesListFlickable);
675 mouseClick(nonfavScopesListCategoryList.currentItem);
660 mouseClick(nonfavScopesListCategoryList.currentItem);
676 var dashTempScopeItem = findChild(dash, "dashTempScopeItem");
661 var dashTempScopeItem = findChild(dash, "dashTempScopeItem");
677 tryCompare(dashTempScopeItem, "x", 0);
662 tryCompare(dashTempScopeItem, "x", 0);
tests/qmltests/Dash/tst_DashContent.qml+7−1
@@ -70,7 +70,7 @@ Item {
70 function loadScopes() {
70 function loadScopes() {
71 scopeLoadedSpy.clear();
71 scopeLoadedSpy.clear();
72 scopesModel.load();
72 scopesModel.load();
73− tryCompare(scopeLoadedSpy, "count", 6, 15000);
73+ tryCompare(scopeLoadedSpy, "count", 8, 15000);
74 tryCompare(scopesModel, "loaded", true);
74 tryCompare(scopesModel, "loaded", true);
75 tryCompareFunction(function() {
75 tryCompareFunction(function() {
76 var mockScope1Loader = findChild(shell, "scopeLoader0");
76 var mockScope1Loader = findChild(shell, "scopeLoader0");
@@ -610,6 +610,12 @@ Item {
610 }
610 }
611
611
612 function test_noDelegateCreationDestructionOnMove() {
612 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+
613 // Our cards are of type AbstractButton as defined in CardCreator.js
619 // Our cards are of type AbstractButton as defined in CardCreator.js
614 // This gives also other things that are not cards but for our purpose it
620 // This gives also other things that are not cards but for our purpose it
615 // does not matter
621 // does not matter
tests/qmltests/Dash/tst_GenericScopeView.qml+7
@@ -76,6 +76,7 @@ Item {
76 tryCompare(scopes, "loaded", true);
76 tryCompare(scopes, "loaded", true);
77
77
78 genericScopeView.scope = scopes.getScope(2);
78 genericScopeView.scope = scopes.getScope(2);
79+ genericScopeView.isCurrent = true;
79 shell.width = units.gu(120);
80 shell.width = units.gu(120);
80 genericScopeView.categoryView.positionAtBeginning();
81 genericScopeView.categoryView.positionAtBeginning();
81 waitForRendering(genericScopeView.categoryView);
82 waitForRendering(genericScopeView.categoryView);
@@ -116,6 +117,7 @@ Item {
116 }
117 }
117
118
118 function test_isActive() {
119 function test_isActive() {
120+ genericScopeView.isCurrent = false
119 tryCompare(genericScopeView.scope, "isActive", false)
121 tryCompare(genericScopeView.scope, "isActive", false)
120 genericScopeView.isCurrent = true
122 genericScopeView.isCurrent = true
121 tryCompare(genericScopeView.scope, "isActive", true)
123 tryCompare(genericScopeView.scope, "isActive", true)
@@ -140,6 +142,7 @@ Item {
140 }
142 }
141
143
142 function test_searchQuery() {
144 function test_searchQuery() {
145+ genericScopeView.isCurrent = false
143 genericScopeView.scope = scopes.getScope(0);
146 genericScopeView.scope = scopes.getScope(0);
144 genericScopeView.scope.searchQuery = "test";
147 genericScopeView.scope.searchQuery = "test";
145 genericScopeView.scope = scopes.getScope(1);
148 genericScopeView.scope = scopes.getScope(1);
@@ -151,6 +154,7 @@ Item {
151 }
154 }
152
155
153 function test_changeScope() {
156 function test_changeScope() {
157+ genericScopeView.isCurrent = false;
154 genericScopeView.scope.searchQuery = "test"
158 genericScopeView.scope.searchQuery = "test"
155 var originalScopeId = genericScopeView.scope.id;
159 var originalScopeId = genericScopeView.scope.id;
156 genericScopeView.scope = scopes.getScope(originalScopeId + 1)
160 genericScopeView.scope = scopes.getScope(originalScopeId + 1)
@@ -458,6 +462,7 @@ Item {
458 function test_seeAllTwoCategoriesScenario1() {
462 function test_seeAllTwoCategoriesScenario1() {
459 mockScope.setId("mockScope");
463 mockScope.setId("mockScope");
460 mockScope.setName("Mock Scope");
464 mockScope.setName("Mock Scope");
465+ mockScope.isActive = true;
461 mockScope.categories.setCount(2);
466 mockScope.categories.setCount(2);
462 mockScope.categories.resultModel(0).setResultCount(50);
467 mockScope.categories.resultModel(0).setResultCount(50);
463 mockScope.categories.resultModel(1).setResultCount(25);
468 mockScope.categories.resultModel(1).setResultCount(25);
@@ -501,6 +506,7 @@ Item {
501 function test_seeAllTwoCategoriesScenario2() {
506 function test_seeAllTwoCategoriesScenario2() {
502 mockScope.setId("mockScope");
507 mockScope.setId("mockScope");
503 mockScope.setName("Mock Scope");
508 mockScope.setName("Mock Scope");
509+ mockScope.isActive = true;
504 mockScope.categories.setCount(2);
510 mockScope.categories.setCount(2);
505 mockScope.categories.resultModel(0).setResultCount(25);
511 mockScope.categories.resultModel(0).setResultCount(25);
506 mockScope.categories.resultModel(1).setResultCount(50);
512 mockScope.categories.resultModel(1).setResultCount(50);
@@ -629,6 +635,7 @@ Item {
629 var category0 = findChild(categoryListView, "dashCategory0");
635 var category0 = findChild(categoryListView, "dashCategory0");
630 waitForRendering(category0);
636 waitForRendering(category0);
631
637
638+ tryCompareFunction(function() { return category0.item != null; }, true);
632 var cardGrid = category0.item;
639 var cardGrid = category0.item;
633 compare(cardGrid.cardTool.template["non-interactive"], true);
640 compare(cardGrid.cardTool.template["non-interactive"], true);
634
641
tests/qmltests/Greeter/TestView.qml+10−4
@@ -33,10 +33,11 @@ Item {
33 property var infographicModel
33 property var infographicModel
34 readonly property bool fullyShown: _fullyShown
34 readonly property bool fullyShown: _fullyShown
35 readonly property bool required: _required
35 readonly property bool required: _required
36− readonly property bool animating: false
36+ readonly property bool animating: _animating
37
37
38 property bool _fullyShown: true
38 property bool _fullyShown: true
39 property bool _required: true
39 property bool _required: true
40+ property bool _animating: true
40
41
41 signal selected(int index)
42 signal selected(int index)
42 signal responded(string response)
43 signal responded(string response)
@@ -48,8 +49,9 @@ Item {
48 signal _showPromptCalled(string text, bool isSecret, bool isDefaultPrompt)
49 signal _showPromptCalled(string text, bool isSecret, bool isDefaultPrompt)
49 signal _showLastChanceCalled()
50 signal _showLastChanceCalled()
50 signal _hideCalled()
51 signal _hideCalled()
51− signal _notifyAuthenticationSucceededCalled()
52+ signal _notifyAuthenticationSucceededCalled(bool showFakePassword)
52 signal _notifyAuthenticationFailedCalled()
53 signal _notifyAuthenticationFailedCalled()
54+ signal _showErrorMessageCalled(string msg)
53 signal _resetCalled()
55 signal _resetCalled()
54 signal _tryToUnlockCalled(bool toTheRight)
56 signal _tryToUnlockCalled(bool toTheRight)
55
57
@@ -71,14 +73,18 @@ Item {
71 _fullyShown = false;
73 _fullyShown = false;
72 }
74 }
73
75
74− function notifyAuthenticationSucceeded() {
76+ function notifyAuthenticationSucceeded(showFakePassword) {
75− _notifyAuthenticationSucceededCalled();
77+ _notifyAuthenticationSucceededCalled(showFakePassword);
76 }
78 }
77
79
78 function notifyAuthenticationFailed() {
80 function notifyAuthenticationFailed() {
79 _notifyAuthenticationFailedCalled();
81 _notifyAuthenticationFailedCalled();
80 }
82 }
81
83
84+ function showErrorMessage(msg) {
85+ _showErrorMessageCalled(msg);
86+ }
87+
82 function reset() {
88 function reset() {
83 _resetCalled();
89 _resetCalled();
84 }
90 }
tests/qmltests/Greeter/tst_Greeter.qml+171
@@ -20,6 +20,7 @@ import ".."
20import "../../../qml/Greeter"
20import "../../../qml/Greeter"
21import Ubuntu.Components 1.3
21import Ubuntu.Components 1.3
22import AccountsService 0.1
22import AccountsService 0.1
23+import Biometryd 0.0
23import GSettings 1.0
24import GSettings 1.0
24import LightDM.IntegratedLightDM 0.1 as LightDM // This is the mock
25import LightDM.IntegratedLightDM 0.1 as LightDM // This is the mock
25import Unity.Test 0.1 as UT
26import Unity.Test 0.1 as UT
@@ -125,6 +126,12 @@ Item {
125 signalName: "_notifyAuthenticationFailedCalled"
126 signalName: "_notifyAuthenticationFailedCalled"
126 }
127 }
127
128
129+ SignalSpy {
130+ id: viewShowErrorMessageSpy
131+ target: testCase.view
132+ signalName: "_showErrorMessageCalled"
133+ }
134+
128 SignalSpy {
135 SignalSpy {
129 id: viewResetSpy
136 id: viewResetSpy
130 target: testCase.view
137 target: testCase.view
@@ -145,12 +152,16 @@ Item {
145 teaseSpy.clear();
152 teaseSpy.clear();
146 sessionStartedSpy.clear();
153 sessionStartedSpy.clear();
147 activeChangedSpy.clear();
154 activeChangedSpy.clear();
155+ Biometryd.available = true;
156+ AccountsService.enableFingerprintIdentification = true;
157+ AccountsService.failedFingerprintLogins = 0;
148 viewShowMessageSpy.clear();
158 viewShowMessageSpy.clear();
149 viewShowPromptSpy.clear();
159 viewShowPromptSpy.clear();
150 viewShowLastChanceSpy.clear();
160 viewShowLastChanceSpy.clear();
151 viewHideSpy.clear();
161 viewHideSpy.clear();
152 viewAuthenticationSucceededSpy.clear();
162 viewAuthenticationSucceededSpy.clear();
153 viewAuthenticationFailedSpy.clear();
163 viewAuthenticationFailedSpy.clear();
164+ viewShowErrorMessageSpy.clear();
154 viewResetSpy.clear();
165 viewResetSpy.clear();
155 viewTryToUnlockSpy.clear();
166 viewTryToUnlockSpy.clear();
156 resetLoader();
167 resetLoader();
@@ -201,6 +212,14 @@ Item {
201 compare(greeter.shown, false);
212 compare(greeter.shown, false);
202 }
213 }
203
214
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+
204 function test_unlockPass() {
223 function test_unlockPass() {
205 selectUser("has-password");
224 selectUser("has-password");
206 tryCompare(viewShowPromptSpy, "count", 1);
225 tryCompare(viewShowPromptSpy, "count", 1);
@@ -571,5 +590,157 @@ Item {
571 resetLoader();
590 resetLoader();
572 verifySelected(LightDM.Users.data(0, LightDM.UserRoles.NameRole));
591 verifySelected(LightDM.Users.data(0, LightDM.UserRoles.NameRole));
573 }
592 }
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+ }
574 }
745 }
575}
746}
tests/qmltests/Greeter/tst_NarrowView.qml+22−1
@@ -128,7 +128,7 @@ Item {
128 text: "Authenticated"
128 text: "Authenticated"
129 onClicked: {
129 onClicked: {
130 if (successCheckBox.checked) {
130 if (successCheckBox.checked) {
131− loader.item.notifyAuthenticationSucceeded();
131+ loader.item.notifyAuthenticationSucceeded(fakePasswordCheckBox.checked);
132 } else {
132 } else {
133 loader.item.notifyAuthenticationFailed();
133 loader.item.notifyAuthenticationFailed();
134 }
134 }
@@ -140,6 +140,12 @@ Item {
140 Label {
140 Label {
141 text: "success"
141 text: "success"
142 }
142 }
143+ CheckBox {
144+ id: fakePasswordCheckBox
145+ }
146+ Label {
147+ text: "fake password"
148+ }
143 }
149 }
144 Row {
150 Row {
145 Button {
151 Button {
@@ -529,5 +535,20 @@ Item {
529 mouseClick(coverPage, coverPage.width/2, coverPage.height - units.gu(2));
535 mouseClick(coverPage, coverPage.width/2, coverPage.height - units.gu(2));
530 verify(!coverPage.shown);
536 verify(!coverPage.shown);
531 }
537 }
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+ }
532 }
553 }
533}
554}
tests/qmltests/Greeter/tst_WideView.qml+1−1
@@ -170,7 +170,7 @@ StyledItem {
170 text: "Authenticated"
170 text: "Authenticated"
171 onClicked: {
171 onClicked: {
172 if (successCheckBox.checked) {
172 if (successCheckBox.checked) {
173− loader.item.notifyAuthenticationSucceeded();
173+ loader.item.notifyAuthenticationSucceeded(false);
174 } else {
174 } else {
175 loader.item.notifyAuthenticationFailed();
175 loader.item.notifyAuthenticationFailed();
176 }
176 }
tests/qmltests/Launcher/tst_Launcher.qml+23−3
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright 2013-2014 Canonical Ltd.
2+ * Copyright 2013-2016 Canonical Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
@@ -210,6 +210,11 @@ Rectangle {
210 target: LauncherModel
210 target: LauncherModel
211 }
211 }
212
212
213+ SignalSpy {
214+ id: clickThroughSpy
215+ target: clickThroughTester
216+ }
217+
213 Item {
218 Item {
214 id: fakeDismissTimer
219 id: fakeDismissTimer
215 property bool running: false
220 property bool running: false
@@ -231,6 +236,8 @@ Rectangle {
231
236
232 property Item launcher: launcherLoader.status === Loader.Ready ? launcherLoader.item : null
237 property Item launcher: launcherLoader.status === Loader.Ready ? launcherLoader.item : null
233 function cleanup() {
238 function cleanup() {
239+ signalSpy.clear();
240+ clickThroughSpy.clear();
234 launcherLoader.active = false;
241 launcherLoader.active = false;
235 // Loader.status might be Loader.Null and Loader.item might be null but the Loader
242 // Loader.status might be Loader.Null and Loader.item might be null but the Loader
236 // item might still be alive. So if we set Loader.active back to true
243 // item might still be alive. So if we set Loader.active back to true
@@ -925,7 +932,6 @@ Rectangle {
925
932
926 var quickListEntry = findChild(quickList, "quickListEntry" + data.index)
933 var quickListEntry = findChild(quickList, "quickListEntry" + data.index)
927
934
928− signalSpy.clear();
929 signalSpy.signalName = "quickListTriggered"
935 signalSpy.signalName = "quickListTriggered"
930
936
931 mouseClick(quickListEntry)
937 mouseClick(quickListEntry)
@@ -1218,7 +1224,6 @@ Rectangle {
1218 launcher.openForKeyboardNavigation();
1224 launcher.openForKeyboardNavigation();
1219 waitForRendering(launcher);
1225 waitForRendering(launcher);
1220
1226
1221− signalSpy.clear();
1222 signalSpy.signalName = "quickListTriggered"
1227 signalSpy.signalName = "quickListTriggered"
1223
1228
1224 keyClick(Qt.Key_Down); // Down to launcher item 0
1229 keyClick(Qt.Key_Down); // Down to launcher item 0
@@ -1311,5 +1316,20 @@ Rectangle {
1311 compare(surfacePipRepeater.model, Math.min(3, LauncherModel.get(i).surfaceCount))
1316 compare(surfacePipRepeater.model, Math.min(3, LauncherModel.get(i).surfaceCount))
1312 }
1317 }
1313 }
1318 }
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+ }
1314 }
1334 }
1315}
1335}
tests/qmltests/Panel/tst_IndicatorsMenu.qml+29−1
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright 2013-2014 Canonical Ltd.
2+ * Copyright 2013-2016 Canonical Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
@@ -27,6 +27,16 @@ IndicatorTest {
27 width: units.gu(80)
27 width: units.gu(80)
28 height: units.gu(71)
28 height: units.gu(71)
29
29
30+ SignalSpy {
31+ id: clickThroughSpy
32+ target: clickThroughTester
33+ }
34+
35+ MouseArea {
36+ id: clickThroughTester
37+ anchors.fill: root
38+ }
39+
30 RowLayout {
40 RowLayout {
31 anchors.fill: parent
41 anchors.fill: parent
32 anchors.margins: units.gu(1)
42 anchors.margins: units.gu(1)
@@ -112,6 +122,10 @@ IndicatorTest {
112 indicatorsMenu.verticalVelocityThreshold = 0.5
122 indicatorsMenu.verticalVelocityThreshold = 0.5
113 }
123 }
114
124
125+ function cleanup() {
126+ clickThroughSpy.clear();
127+ }
128+
115 function get_indicator_item(index) {
129 function get_indicator_item(index) {
116 var indicatorItem = findChild(indicatorsMenu, root.originalModelData[index]["identifier"] + "-panelItem");
130 var indicatorItem = findChild(indicatorsMenu, root.originalModelData[index]["identifier"] + "-panelItem");
117 verify(indicatorItem !== null);
131 verify(indicatorItem !== null);
@@ -257,5 +271,19 @@ IndicatorTest {
257
271
258 touchRelease(indicatorsMenu, nextItemMappedPositionX, indicatorsMenu.openedHeight / 3);
272 touchRelease(indicatorsMenu, nextItemMappedPositionX, indicatorsMenu.openedHeight / 3);
259 }
273 }
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+ }
260 }
288 }
261}
289}
tests/qmltests/Stages/tst_DesktopStage.qml+135
@@ -89,6 +89,13 @@ Item {
89 topLevelSurfaceList: topSurfaceList
89 topLevelSurfaceList: topSurfaceList
90 }
90 }
91 }
91 }
92+
93+ MouseArea {
94+ id: clickThroughTester
95+ anchors.fill: desktopStageLoader.item
96+ acceptedButtons: Qt.AllButtons
97+ hoverEnabled: true
98+ }
92 }
99 }
93
100
94 Rectangle {
101 Rectangle {
@@ -140,6 +147,11 @@ Item {
140 }
147 }
141 }
148 }
142
149
150+ SignalSpy {
151+ id: mouseEaterSpy
152+ target: clickThroughTester
153+ }
154+
143 UnityTestCase {
155 UnityTestCase {
144 id: testCase
156 id: testCase
145 name: "DesktopStage"
157 name: "DesktopStage"
@@ -179,6 +191,7 @@ Item {
179 desktopStageLoader.active = true;
191 desktopStageLoader.active = true;
180 tryCompare(desktopStageLoader, "status", Loader.Ready);
192 tryCompare(desktopStageLoader, "status", Loader.Ready);
181
193
194+ mouseEaterSpy.clear();
182 }
195 }
183
196
184 function waitUntilAppSurfaceShowsUp(surfaceId) {
197 function waitUntilAppSurfaceShowsUp(surfaceId) {
@@ -504,6 +517,33 @@ Item {
504 tryCompare(MirFocusController, "focusedSurface", null); // verify still no surface is focused
517 tryCompare(MirFocusController, "focusedSurface", null); // verify still no surface is focused
505 }
518 }
506
519
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+
507 function test_minimizeApplicationHidesSurface() {
547 function test_minimizeApplicationHidesSurface() {
508 compare(topSurfaceList.applicationAt(0).appId, "unity8-dash");
548 compare(topSurfaceList.applicationAt(0).appId, "unity8-dash");
509 var dashSurface = topSurfaceList.surfaceAt(0);
549 var dashSurface = topSurfaceList.surfaceAt(0);
@@ -677,5 +717,100 @@ Item {
677 var closeButton = findChild(dashAppDelegate, "closeWindowButton");
717 var closeButton = findChild(dashAppDelegate, "closeWindowButton");
678 tryCompare(closeButton, "visible", false);
718 tryCompare(closeButton, "visible", false);
679 }
719 }
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+ }
680 }
815 }
681}
816}
tests/qmltests/Stages/tst_TabletStage.qml+162−35
@@ -242,6 +242,48 @@ Rectangle {
242 appWindow.width * 0.1, -appWindow.height / 2);
242 appWindow.width * 0.1, -appWindow.height / 2);
243 }
243 }
244
244
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+
245 function test_tappingSwitchesFocusBetweenStages() {
287 function test_tappingSwitchesFocusBetweenStages() {
246 WindowStateStorage.saveStage(dialerCheckBox.appId, ApplicationInfoInterface.SideStage)
288 WindowStateStorage.saveStage(dialerCheckBox.appId, ApplicationInfoInterface.SideStage)
247
289
@@ -493,14 +535,36 @@ Rectangle {
493 function() { return sideStage.shown; });
535 function() { return sideStage.shown; });
494 }
536 }
495
537
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() {
497 return [
561 return [
498 { tag: "MainStage", stage: ApplicationInfoInterface.MainStage, mainStageAppId: "webbrowser-app", sideStageAppId: ""},
562 { tag: "MainStage", stage: ApplicationInfoInterface.MainStage, mainStageAppId: "webbrowser-app", sideStageAppId: ""},
499 { tag: "SideStage", stage: ApplicationInfoInterface.SideStage, mainStageAppId: "unity8-dash", sideStageAppId: "webbrowser-app" },
563 { tag: "SideStage", stage: ApplicationInfoInterface.SideStage, mainStageAppId: "unity8-dash", sideStageAppId: "webbrowser-app" },
500 ];
564 ];
501 }
565 }
502
566
503− function test_applicationLoadsInCorrectStage(data) {
567+ function test_applicationLoadsInSavedStage(data) {
504 WindowStateStorage.saveStage(webbrowserCheckBox.appId, data.stage)
568 WindowStateStorage.saveStage(webbrowserCheckBox.appId, data.stage)
505
569
506 var stagesPriv = findInvisibleChild(tabletStage, "stagesPriv");
570 var stagesPriv = findInvisibleChild(tabletStage, "stagesPriv");
@@ -519,13 +583,13 @@ Rectangle {
519
583
520 function test_applicationSavesLastStage_data() {
584 function test_applicationSavesLastStage_data() {
521 return [
585 return [
522− { tag: "MainStage", stage: ApplicationInfoInterface.MainStage},
586+ { tag: "MainStage", fromStage: ApplicationInfoInterface.MainStage, toStage: ApplicationInfoInterface.SideStage },
523− { tag: "SideStage", stage: ApplicationInfoInterface.SideStage},
587+ { tag: "SideStage", fromStage: ApplicationInfoInterface.SideStage, toStage: ApplicationInfoInterface.MainStage },
524 ];
588 ];
525 }
589 }
526
590
527 function test_applicationSavesLastStage(data) {
591 function test_applicationSavesLastStage(data) {
528− WindowStateStorage.saveStage(webbrowserCheckBox.appId, data.stage);
592+ WindowStateStorage.saveStage(webbrowserCheckBox.appId, data.fromStage);
529 stageSaver.clear();
593 stageSaver.clear();
530
594
531 var stagesPriv = findInvisibleChild(tabletStage, "stagesPriv");
595 var stagesPriv = findInvisibleChild(tabletStage, "stagesPriv");
@@ -538,11 +602,15 @@ Rectangle {
538 webbrowserCheckBox.checked = true;
602 webbrowserCheckBox.checked = true;
539 waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
603 waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
540
604
541− webbrowserCheckBox.checked = false;
605+ if (data.toStage === ApplicationInfoInterface.SideStage) {
606+ dragToSideStage(webbrowserSurfaceId);
607+ } else {
608+ dragToMainStage(webbrowserSurfaceId);
609+ }
542
610
543 tryCompare(stageSaver, "count", 1);
611 tryCompare(stageSaver, "count", 1);
544 compare(stageSaver.signalArguments[0][0], "webbrowser-app")
612 compare(stageSaver.signalArguments[0][0], "webbrowser-app")
545− compare(stageSaver.signalArguments[0][1], data.stage)
613+ compare(stageSaver.signalArguments[0][1], data.toStage)
546 }
614 }
547
615
548 function test_loadSideStageByDraggingFromMainStage() {
616 function test_loadSideStageByDraggingFromMainStage() {
@@ -555,21 +623,10 @@ Rectangle {
555 verify(appDelegate);
623 verify(appDelegate);
556 compare(appDelegate.stage, ApplicationInfoInterface.MainStage);
624 compare(appDelegate.stage, ApplicationInfoInterface.MainStage);
557
625
558− var pos = tabletStage.width - sideStage.width - (tabletStage.width - sideStage.width) / 2;
626+ dragToSideStage(webbrowserSurfaceId);
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− });
572
627
628+ var spreadView = findChild(tabletStageLoader, "spreadView")
629+ tryCompare(spreadView, "surfaceDragging", false);
573 tryCompare(appDelegate, "stage", ApplicationInfoInterface.SideStage);
630 tryCompare(appDelegate, "stage", ApplicationInfoInterface.SideStage);
574 }
631 }
575
632
@@ -584,20 +641,10 @@ Rectangle {
584 verify(appDelegate);
641 verify(appDelegate);
585 compare(appDelegate.stage, ApplicationInfoInterface.SideStage);
642 compare(appDelegate.stage, ApplicationInfoInterface.SideStage);
586
643
587− var pos = tabletStage.width - sideStage.width / 2;
644+ dragToMainStage(webbrowserSurfaceId);
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− });
600
645
646+ var spreadView = findChild(tabletStageLoader, "spreadView")
647+ tryCompare(spreadView, "surfaceDragging", false);
601 tryCompare(appDelegate, "stage", ApplicationInfoInterface.MainStage);
648 tryCompare(appDelegate, "stage", ApplicationInfoInterface.MainStage);
602 }
649 }
603
650
@@ -737,6 +784,22 @@ Rectangle {
737
784
738 tryCompare(appDelegate.surface, "activeFocus", true);
785 tryCompare(appDelegate.surface, "activeFocus", true);
739
786
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+
740 var pos = tabletStage.width - sideStage.width - (tabletStage.width - sideStage.width) / 2;
803 var pos = tabletStage.width - sideStage.width - (tabletStage.width - sideStage.width) / 2;
741 var end_pos = tabletStage.width - sideStage.width / 2;
804 var end_pos = tabletStage.width - sideStage.width / 2;
742
805
@@ -752,7 +815,71 @@ Rectangle {
752 pos >= end_pos;
815 pos >= end_pos;
753 });
816 });
754
817
818+ var spreadView = findChild(tabletStageLoader, "spreadView")
819+ tryCompare(spreadView, "surfaceDragging", false);
755− tryCompare(appDelegate.surface, "activeFocus", true);
820+ tryCompare(appDelegate, "stage", ApplicationInfoInterface.MainStage);
756 }
821 }
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+
757 }
884 }
758}
885}
tests/qmltests/Stages/tst_WindowResizeArea.qml+36−34
@@ -44,8 +44,10 @@ Item {
44 id: fakeWindow
44 id: fakeWindow
45 property alias resizeAreaMinWidth: windowResizeArea.minWidth
45 property alias resizeAreaMinWidth: windowResizeArea.minWidth
46 property alias resizeAreaMinHeight: windowResizeArea.minHeight
46 property alias resizeAreaMinHeight: windowResizeArea.minHeight
47− x: units.gu(20)
47+ x: requestedX
48+ y: requestedY
49+ property real requestedX: units.gu(20)
48− y: units.gu(20)
50+ property real requestedY: units.gu(20)
49 width: requestedWidth
51 width: requestedWidth
50 height: requestedHeight
52 height: requestedHeight
51 property real requestedWidth
53 property real requestedWidth
@@ -226,8 +228,8 @@ Item {
226 property var fakeWindow: windowLoader.item
228 property var fakeWindow: windowLoader.item
227
229
228 function init() {
230 function init() {
229− fakeWindow.x = units.gu(20)
231+ fakeWindow.requestedX = units.gu(20)
230− fakeWindow.y = units.gu(20)
232+ fakeWindow.requestedY = units.gu(20)
231 fakeWindow.requestedWidth = units.gu(20)
233 fakeWindow.requestedWidth = units.gu(20)
232 fakeWindow.requestedHeight = units.gu(20)
234 fakeWindow.requestedHeight = units.gu(20)
233 fakeWindow.resizeAreaMinWidth = units.gu(15);
235 fakeWindow.resizeAreaMinWidth = units.gu(15);
@@ -254,8 +256,8 @@ Item {
254 }
256 }
255
257
256 function test_resizeWindowRightBottom(data) {
258 function test_resizeWindowRightBottom(data) {
257− var initialWindowX = fakeWindow.x;
259+ var initialWindowX = fakeWindow.requestedX;
258− var initialWindowY = fakeWindow.y;
260+ var initialWindowY = fakeWindow.requestedY;
259 var initialWindowWidth = fakeWindow.width
261 var initialWindowWidth = fakeWindow.width
260 var initialWindowHeight = fakeWindow.height
262 var initialWindowHeight = fakeWindow.height
261
263
@@ -266,8 +268,8 @@ Item {
266 tryCompare(fakeWindow, "width", Math.max(initialWindowWidth + data.dx, fakeWindow.resizeAreaMinWidth));
268 tryCompare(fakeWindow, "width", Math.max(initialWindowWidth + data.dx, fakeWindow.resizeAreaMinWidth));
267 tryCompare(fakeWindow, "height", Math.max(initialWindowHeight + data.dy, fakeWindow.resizeAreaMinHeight));
269 tryCompare(fakeWindow, "height", Math.max(initialWindowHeight + data.dy, fakeWindow.resizeAreaMinHeight));
268
270
269− compare(fakeWindow.x, initialWindowX);
271+ compare(fakeWindow.requestedX, initialWindowX);
270− compare(fakeWindow.y, initialWindowY);
272+ compare(fakeWindow.requestedY, initialWindowY);
271 }
273 }
272
274
273 function test_resizeWindowLeftTop_data() {
275 function test_resizeWindowLeftTop_data() {
@@ -280,8 +282,8 @@ Item {
280 }
282 }
281
283
282 function test_resizeWindowLeftTop(data) {
284 function test_resizeWindowLeftTop(data) {
283− var initialWindowX = fakeWindow.x;
285+ var initialWindowX = fakeWindow.requestedX;
284− var initialWindowY = fakeWindow.y;
286+ var initialWindowY = fakeWindow.requestedY;
285 var initialWindowWidth = fakeWindow.width
287 var initialWindowWidth = fakeWindow.width
286 var initialWindowHeight = fakeWindow.height
288 var initialWindowHeight = fakeWindow.height
287
289
@@ -294,13 +296,13 @@ Item {
294
296
295 var maxMoveX = initialWindowWidth - fakeWindow.resizeAreaMinWidth;
297 var maxMoveX = initialWindowWidth - fakeWindow.resizeAreaMinWidth;
296 var maxMoveY = initialWindowHeight - fakeWindow.resizeAreaMinHeight;
298 var maxMoveY = initialWindowHeight - fakeWindow.resizeAreaMinHeight;
297− compare(fakeWindow.x, Math.min(initialWindowX + data.dx, initialWindowX + maxMoveX));
299+ compare(fakeWindow.requestedX, Math.min(initialWindowX + data.dx, initialWindowX + maxMoveX));
298− compare(fakeWindow.y, Math.min(initialWindowY + data.dy, initialWindowY + maxMoveY));
300+ compare(fakeWindow.requestedY, Math.min(initialWindowY + data.dy, initialWindowY + maxMoveY));
299 }
301 }
300
302
301 function test_saveRestoreSize() {
303 function test_saveRestoreSize() {
302− var initialWindowX = fakeWindow.x;
304+ var initialWindowX = fakeWindow.requestedX;
303− var initialWindowY = fakeWindow.y;
305+ var initialWindowY = fakeWindow.requestedY;
304 var initialWindowWidth = fakeWindow.width
306 var initialWindowWidth = fakeWindow.width
305 var initialWindowHeight = fakeWindow.height
307 var initialWindowHeight = fakeWindow.height
306
308
@@ -332,8 +334,8 @@ Item {
332 }
334 }
333
335
334 function test_resizeSmallerAndLarger(data) {
336 function test_resizeSmallerAndLarger(data) {
335− var initialWindowX = fakeWindow.x;
337+ var initialWindowX = fakeWindow.requestedX;
336− var initialWindowY = fakeWindow.y;
338+ var initialWindowY = fakeWindow.requestedY;
337 var initialWindowWidth = fakeWindow.width
339 var initialWindowWidth = fakeWindow.width
338 var initialWindowHeight = fakeWindow.height
340 var initialWindowHeight = fakeWindow.height
339
341
@@ -348,18 +350,18 @@ Item {
348 }
350 }
349
351
350 function test_saveRestoreMaximized() {
352 function test_saveRestoreMaximized() {
351− var initialWindowX = fakeWindow.x;
353+ var initialWindowX = fakeWindow.requestedX;
352− var initialWindowY = fakeWindow.y;
354+ var initialWindowY = fakeWindow.requestedY;
353
355
354 var moveDelta = units.gu(5);
356 var moveDelta = units.gu(5);
355
357
356− fakeWindow.x = initialWindowX + moveDelta
358+ fakeWindow.requestedX = initialWindowX + moveDelta
357− fakeWindow.y = initialWindowY + moveDelta
359+ fakeWindow.requestedY = initialWindowY + moveDelta
358
360
359 // Now change the state to maximized. The window should not keep updating the stored values
361 // Now change the state to maximized. The window should not keep updating the stored values
360 fakeWindow.maximize()
362 fakeWindow.maximize()
361− fakeWindow.x = 31415 // 0 is too risky to pass the test even when broken
363+ fakeWindow.requestedX = 31415 // 0 is too risky to pass the test even when broken
362− fakeWindow.y = 31415
364+ fakeWindow.requestedY = 31415
363
365
364 // This will destroy the window and recreate it
366 // This will destroy the window and recreate it
365 windowLoader.active = false;
367 windowLoader.active = false;
@@ -389,8 +391,8 @@ Item {
389 }
391 }
390
392
391 function test_restoreMovesIntoBounds(data) {
393 function test_restoreMovesIntoBounds(data) {
392− fakeWindow.x = data.x;
394+ fakeWindow.requestedX = data.x;
393− fakeWindow.y = data.y;
395+ fakeWindow.requestedY = data.y;
394 fakeWindow.width = data.w;
396 fakeWindow.width = data.w;
395 fakeWindow.height = data.h;
397 fakeWindow.height = data.h;
396 waitForRendering(root);
398 waitForRendering(root);
@@ -402,10 +404,10 @@ Item {
402 waitForRendering(root)
404 waitForRendering(root)
403
405
404 // Make sure it's again where we left it in normal state before destroying
406 // Make sure it's again where we left it in normal state before destroying
405− compare(fakeWindow.x >= 0, true)
407+ compare(fakeWindow.requestedX >= 0, true)
406− compare(fakeWindow.y >= PanelState.panelHeight, true)
408+ compare(fakeWindow.requestedY >= PanelState.panelHeight, true)
407− compare(fakeWindow.x + fakeWindow.width <= root.width, true)
409+ compare(fakeWindow.requestedX + fakeWindow.width <= root.width, true)
408− compare(fakeWindow.y + fakeWindow.height <= root.height, true)
410+ compare(fakeWindow.requestedY + fakeWindow.height <= root.height, true)
409
411
410 waitForRendering(root)
412 waitForRendering(root)
411 }
413 }
@@ -417,8 +419,8 @@ Item {
417 and height) increment value.
419 and height) increment value.
418 */
420 */
419 function test_sizeIncrement() {
421 function test_sizeIncrement() {
420− var initialWindowX = fakeWindow.x;
422+ var initialWindowX = fakeWindow.requestedX;
421− var initialWindowY = fakeWindow.y;
423+ var initialWindowY = fakeWindow.requestedY;
422 var initialWindowWidth = fakeWindow.width
424 var initialWindowWidth = fakeWindow.width
423 var initialWindowHeight = fakeWindow.height
425 var initialWindowHeight = fakeWindow.height
424
426
@@ -448,8 +450,8 @@ Item {
448 Tests that when dragging a window border you cannot make it bigger than its maximum size
450 Tests that when dragging a window border you cannot make it bigger than its maximum size
449 */
451 */
450 function test_maximumSize() {
452 function test_maximumSize() {
451− fakeWindow.x = units.gu(1);
453+ fakeWindow.requestedX = units.gu(1);
452− fakeWindow.y = units.gu(1);
454+ fakeWindow.requestedY = units.gu(1);
453 fakeWindow.resizeAreaMinWidth = 1; // so it does not interfere with anything
455 fakeWindow.resizeAreaMinWidth = 1; // so it does not interfere with anything
454 fakeWindow.resizeAreaMinHeight = 1; // so it does not interfere with anything
456 fakeWindow.resizeAreaMinHeight = 1; // so it does not interfere with anything
455 fakeWindow.requestedWidth = units.gu(10);
457 fakeWindow.requestedWidth = units.gu(10);
@@ -478,8 +480,8 @@ Item {
478 Tests that when dragging a window border you cannot make it smaller than its minimum size
480 Tests that when dragging a window border you cannot make it smaller than its minimum size
479 */
481 */
480 function test_minimumSize() {
482 function test_minimumSize() {
481− fakeWindow.x = units.gu(1);
483+ fakeWindow.requestedX = units.gu(1);
482− fakeWindow.y = units.gu(1);
484+ fakeWindow.requestedY = units.gu(1);
483 fakeWindow.resizeAreaMinWidth = 1; // so it does not interfere with anything
485 fakeWindow.resizeAreaMinWidth = 1; // so it does not interfere with anything
484 fakeWindow.resizeAreaMinHeight = 1; // so it does not interfere with anything
486 fakeWindow.resizeAreaMinHeight = 1; // so it does not interfere with anything
485 fakeWindow.requestedWidth = units.gu(20);
487 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 {
503 function test_appSupportingOnlyPrimaryOrientationMakesPhoneShellStayPut() {
503 function test_appSupportingOnlyPrimaryOrientationMakesPhoneShellStayPut() {
504 loadShell("mako");
504 loadShell("mako");
505
505
506− var spreadRepeater = findChild(shell, "spreadRepeater");
506+ var primarySurfaceId = topLevelSurfaceList.nextId;
507− verify(spreadRepeater);
507+ var primaryApp = ApplicationManager.startApplication("primary-oriented-app");
508−
508+ verify(primaryApp);
509− // unity8-dash supports only primary orientation and should be already running
509+ waitUntilAppWindowIsFullyLoaded(primarySurfaceId);
510− compare(spreadRepeater.count, 1);
510+
511− var dashDelegate = spreadRepeater.itemAt(0);
511+ var primaryAppWindow = findAppWindowForSurfaceId(primarySurfaceId);
512− var dashApp = dashDelegate.application;
512+ verify(primaryAppWindow)
513− verify(dashApp);
513+ var primaryDelegate = findChild(shell, "spreadDelegate_" + primarySurfaceId);
514− compare(dashApp.appId, "unity8-dash");
514+
515− var dashAppWindow = findChild(dashDelegate, "appWindow");
516− verify(dashAppWindow);
517− compare(dashDelegate.focus, true);
515+ compare(primaryDelegate.focus, true);
518− compare(dashApp.rotatesWindowContents, false);
516+ compare(primaryApp.rotatesWindowContents, false);
519− compare(dashApp.supportedOrientations, Qt.PrimaryOrientation);
517+ compare(primaryApp.supportedOrientations, Qt.PrimaryOrientation);
520− compare(dashApp.stage, ApplicationInfoInterface.MainStage);
518+ compare(primaryApp.stage, ApplicationInfoInterface.MainStage);
521−
519+
522− tryCompareFunction(function(){return dashDelegate.surface != null;}, true);
520+ tryCompareFunction(function(){return primaryDelegate.surface != null;}, true);
523− verify(checkAppSurfaceOrientation(dashAppWindow, dashApp, root.primaryOrientationAngle));
521+ verify(checkAppSurfaceOrientation(primaryAppWindow, primaryApp, root.primaryOrientationAngle));
524
522
525 compare(shell.transformRotationAngle, root.primaryOrientationAngle);
523 compare(shell.transformRotationAngle, root.primaryOrientationAngle);
526 rotateTo(90);
524 rotateTo(90);
527
525
528− verify(checkAppSurfaceOrientation(dashAppWindow, dashApp, root.primaryOrientationAngle));
526+ verify(checkAppSurfaceOrientation(primaryAppWindow, primaryApp, root.primaryOrientationAngle));
529 compare(shell.transformRotationAngle, root.primaryOrientationAngle);
527 compare(shell.transformRotationAngle, root.primaryOrientationAngle);
530
528
531 rotateTo(180);
529 rotateTo(180);
532
530
533− verify(checkAppSurfaceOrientation(dashAppWindow, dashApp, root.primaryOrientationAngle));
531+ verify(checkAppSurfaceOrientation(primaryAppWindow, primaryApp, root.primaryOrientationAngle));
534 compare(shell.transformRotationAngle, root.primaryOrientationAngle);
532 compare(shell.transformRotationAngle, root.primaryOrientationAngle);
535
533
536 rotateTo(270);
534 rotateTo(270);
537
535
538− verify(checkAppSurfaceOrientation(dashAppWindow, dashApp, root.primaryOrientationAngle));
536+ verify(checkAppSurfaceOrientation(primaryAppWindow, primaryApp, root.primaryOrientationAngle));
539 compare(shell.transformRotationAngle, root.primaryOrientationAngle);
537 compare(shell.transformRotationAngle, root.primaryOrientationAngle);
540 }
538 }
541
539
@@ -548,37 +546,39 @@ Rectangle {
548 function test_appSupportingOnlyPrimaryOrientationWillOnlyRotateInLandscape(data) {
546 function test_appSupportingOnlyPrimaryOrientationWillOnlyRotateInLandscape(data) {
549 loadShell(data.deviceName);
547 loadShell(data.deviceName);
550
548
551− compare(topLevelSurfaceList.applicationAt(0).appId, "unity8-dash");
549+ var primarySurfaceId = topLevelSurfaceList.nextId;
552− var dashSurfaceId = topLevelSurfaceList.idAt(0);
550+ var primaryApp = ApplicationManager.startApplication("primary-oriented-app");
553− var dashAppWindow = findAppWindowForSurfaceId(dashSurfaceId);
551+ verify(primaryApp);
552+ waitUntilAppWindowIsFullyLoaded(primarySurfaceId);
554
553
555− // unity8-dash supports only primary orientation and should be already running
554+ var primaryAppWindow = findAppWindowForSurfaceId(primarySurfaceId);
555+ verify(primaryAppWindow)
556
556
557− compare(ApplicationManager.focusedApplicationId, "unity8-dash");
557+ // primary-oriented-app supports only primary orientation
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);
563
558
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);
565
563
564+ tryCompareFunction(function(){return primaryApp.surfaceList.count > 0;}, true);
565+
566− tryCompareFunction(function(){return checkAppSurfaceOrientation(dashAppWindow, dashApp, root.primaryOrientationAngle)}, true);
566+ tryCompareFunction(function(){return checkAppSurfaceOrientation(primaryAppWindow, primaryApp, root.primaryOrientationAngle)}, true);
567 compare(shell.transformRotationAngle, root.primaryOrientationAngle);
567 compare(shell.transformRotationAngle, root.primaryOrientationAngle);
568
568
569 rotateTo(90);
569 rotateTo(90);
570
570
571− tryCompareFunction(function(){return checkAppSurfaceOrientation(dashAppWindow, dashApp, root.primaryOrientationAngle)}, true);
571+ tryCompareFunction(function(){return checkAppSurfaceOrientation(primaryAppWindow, primaryApp, root.primaryOrientationAngle)}, true);
572 compare(shell.transformRotationAngle, root.primaryOrientationAngle);
572 compare(shell.transformRotationAngle, root.primaryOrientationAngle);
573
573
574 rotateTo(180);
574 rotateTo(180);
575
575
576− tryCompareFunction(function(){return checkAppSurfaceOrientation(dashAppWindow, dashApp, root.primaryOrientationAngle + 180)}, true);
576+ tryCompareFunction(function(){return checkAppSurfaceOrientation(primaryAppWindow, primaryApp, root.primaryOrientationAngle + 180)}, true);
577 compare(shell.transformRotationAngle, root.primaryOrientationAngle + 180);
577 compare(shell.transformRotationAngle, root.primaryOrientationAngle + 180);
578
578
579 rotateTo(270);
579 rotateTo(270);
580
580
581− tryCompareFunction(function(){return checkAppSurfaceOrientation(dashAppWindow, dashApp, root.primaryOrientationAngle + 180)}, true);
581+ tryCompareFunction(function(){return checkAppSurfaceOrientation(primaryAppWindow, primaryApp, root.primaryOrientationAngle + 180)}, true);
582 compare(shell.transformRotationAngle, root.primaryOrientationAngle + 180);
582 compare(shell.transformRotationAngle, root.primaryOrientationAngle + 180);
583 }
583 }
584
584
@@ -816,12 +816,13 @@ Rectangle {
816 }
816 }
817
817
818 /*
818 /*
819+ - launch an app that only supports the primary orientation
819 - launch an app that supports all orientations, such as twitter-webapp
820 - launch an app that supports all orientations, such as twitter-webapp
820 - wait a bit until that app is considered to have finished initializing and is thus
821 - wait a bit until that app is considered to have finished initializing and is thus
821 ready to get resized/rotated
822 ready to get resized/rotated
822− - switch back to dash
823+ - switch back to previous app (only supporting primary
823 - rotate device to 90 degrees
824 - 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
825 doesn't support such orientation
826 doesn't support such orientation
826 - do a long right-edge drag to show the apps spread
827 - do a long right-edge drag to show the apps spread
827 - tap on twitter-webapp
828 - tap on twitter-webapp
@@ -838,6 +839,13 @@ Rectangle {
838 */
839 */
839 function test_greeterStaysAwayAfterRotation() {
840 function test_greeterStaysAwayAfterRotation() {
840 loadShell("mako");
841 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+
841 var twitterSurfaceId = topLevelSurfaceList.nextId;
849 var twitterSurfaceId = topLevelSurfaceList.nextId;
842 var twitterApp = ApplicationManager.startApplication("twitter-webapp");
850 var twitterApp = ApplicationManager.startApplication("twitter-webapp");
843 verify(twitterApp);
851 verify(twitterApp);
@@ -850,12 +858,11 @@ Rectangle {
850 waitUntilAppWindowIsFullyLoaded(twitterSurfaceId);
858 waitUntilAppWindowIsFullyLoaded(twitterSurfaceId);
851 waitUntilAppWindowCanRotate(twitterSurfaceId);
859 waitUntilAppWindowCanRotate(twitterSurfaceId);
852
860
853− // go back to unity8-dash
861+ // go back to primary-oriented-app
854 performEdgeSwipeToSwitchToPreviousApp();
862 performEdgeSwipeToSwitchToPreviousApp();
855
863
856 rotateTo(90);
864 rotateTo(90);
857 wait(1); // spin the event loop to let all bindings do their thing
865 wait(1); // spin the event loop to let all bindings do their thing
858− // should not rotat as unity8-dash doesn't support it
859 tryCompare(shell, "transformRotationAngle", 0);
866 tryCompare(shell, "transformRotationAngle", 0);
860
867
861 performEdgeSwipeToShowAppSpread();
868 performEdgeSwipeToShowAppSpread();
@@ -1257,7 +1264,7 @@ Rectangle {
1257 Regression test for https://bugs.launchpad.net/ubuntu/+source/unity8/+bug/1476757
1264 Regression test for https://bugs.launchpad.net/ubuntu/+source/unity8/+bug/1476757
1258
1265
1259 Steps:
1266 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)
1261 2- launch or switch to some other application
1268 2- launch or switch to some other application
1262 3- right-edge swipe to show the apps spread
1269 3- right-edge swipe to show the apps spread
1263 4- swipe up to close the current app (the one from step 2)
1270 4- swipe up to close the current app (the one from step 2)
@@ -1275,8 +1282,10 @@ Rectangle {
1275 function test_lockPhoneAfterClosingAppInSpreadThenUnlockAndRotate() {
1282 function test_lockPhoneAfterClosingAppInSpreadThenUnlockAndRotate() {
1276 loadShell("mako");
1283 loadShell("mako");
1277
1284
1278− compare(topLevelSurfaceList.applicationAt(0).appId, "unity8-dash");
1285+ var primarySurfaceId = topLevelSurfaceList.nextId;
1279− var dashSurfaceId = topLevelSurfaceList.idAt(0);
1286+ var primaryApp = ApplicationManager.startApplication("primary-oriented-app");
1287+ verify(primaryApp);
1288+ waitUntilAppWindowIsFullyLoaded(primarySurfaceId);
1280
1289
1281 var gmailSurfaceId = topLevelSurfaceList.nextId;
1290 var gmailSurfaceId = topLevelSurfaceList.nextId;
1282 var gmailApp = ApplicationManager.startApplication("gmail-webapp");
1291 var gmailApp = ApplicationManager.startApplication("gmail-webapp");
@@ -1298,7 +1307,7 @@ Rectangle {
1298
1307
1299 swipeAwayGreeter();
1308 swipeAwayGreeter();
1300
1309
1301− verify(isAppSurfaceFocused(dashSurfaceId))
1310+ verify(isAppSurfaceFocused(primarySurfaceId))
1302
1311
1303 signalSpy.clear();
1312 signalSpy.clear();
1304 signalSpy.target = shell;
1313 signalSpy.target = shell;
tests/qmltests/tst_Shell.qml+27
@@ -335,6 +335,33 @@ Rectangle {
335 }
335 }
336 }
336 }
337
337
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+ }
338 }
365 }
339 }
366 }
340 }
367 }
tests/utils/modules/Unity/Test/CMakeLists.txt+5−1
@@ -5,10 +5,14 @@ add_definitions(-DQT_NO_KEYWORDS)
5pkg_check_modules(UBUNTUGESTURES REQUIRED UbuntuGestures)
5pkg_check_modules(UBUNTUGESTURES REQUIRED UbuntuGestures)
6
6
7include_directories(
7include_directories(
8+ ${CMAKE_SOURCE_DIR}/src
9+)
10+
11+include_directories(
12+ SYSTEM
8 ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
13 ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
9 ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
14 ${Qt5Quick_PRIVATE_INCLUDE_DIRS}
10 ${UBUNTUGESTURES_INCLUDE_DIRS}
15 ${UBUNTUGESTURES_INCLUDE_DIRS}
11− ${CMAKE_SOURCE_DIR}/src
12)
16)
13
17
14set(UnityTestQML_SOURCES
18set(UnityTestQML_SOURCES