on xenial help sign in
Merge trunk
commit5b14cedffbb2d0d7426ecf0415f094ce9ecf08c8 authorMichał Sawicz <michal.sawicz@canonical.com> dateTue 22 Jul 2014, 00:31 (12 years ago) parent69219e4ffed20e
72 files changed+1674−750
data/unity8.conf+3 debian/changelog+70 debian/control+4−4 plugins/LightDM/CMakeLists.txt+1 plugins/LightDM/DBusGreeter.cpp+65 plugins/LightDM/DBusGreeter.h+55 plugins/LightDM/Greeter.cpp+17 plugins/LightDM/Greeter.h+5 plugins/LightDM/plugin.cpp+3 plugins/Lights/Lights.qmltypes+45 plugins/Powerd/Powerd.qmltypes+6−13 plugins/Ubuntu/Gestures/Gestures.qmltypes+1 plugins/Unity/Session/dbusunitysessionservice.cpp+33 plugins/Unity/Session/dbusunitysessionservice.h+61−4 po/am.po+18−18 po/ast.po+11−11 po/br.po+11−11 po/de.po+12−12 po/en_AU.po+24−22 po/en_GB.po+17−17 po/es.po+11−11 po/eu.po+18−18 po/fr.po+10−10 po/gd.po+18−17 po/gl.po+6−6 po/he.po+11−11 po/is.po+23−23 po/km.po+14−14 po/ko.po+45−43 po/lv.po+6−6 po/nb.po+11−11 po/nl.po+25−23 po/pl.po+14−14 po/pt.po+49−46 po/pt_BR.po+8−8 po/sv.po+34−32 po/te.po+36−36 po/tr.po+14−14 po/ug.po+5−5 po/uk.po+11−11 po/zh_TW.po+34−34 qml/Components/Lockscreen.qml+17−5 qml/Dash/GenericScopeView.qml+5−1 qml/Dash/PreviewListView.qml+1−3 qml/Greeter/Greeter.qml+1−1 qml/Notifications/Notification.qml+125−86 qml/Notifications/NotificationMenuItemFactory.qml+12−3 qml/Notifications/Notifications.qml+17−1 qml/Panel/Indicators.qml+1 qml/Panel/Indicators/MenuItemFactory.qml−6 qml/Panel/Indicators/MessageMenuItemFactory.qml−3 qml/Panel/Panel.qml−22 qml/Shell.qml+281−30 qml/Stages/PhoneStage.qml+13−1 tests/autopilot/unity8/shell/tests/test_notifications.py+10−13 tests/mocks/LightDM/CMakeLists.txt+1 tests/mocks/LightDM/single-pin/GreeterPrivate.cpp+1−9 tests/mocks/Powerd/Powerd.qmltypes+6−13 tests/mocks/QMenuModel/unitymenumodel.cpp+5 tests/mocks/QMenuModel/unitymenumodel.h+4 tests/mocks/Unity/Unity.qmltypes+10−2 tests/plugins/Dash/cardcreator/6.res+1 tests/plugins/LightDM/CMakeLists.txt+1−1 tests/plugins/LightDM/dbus.cpp+40 tests/qmltests/CMakeLists.txt+3−3 tests/qmltests/Dash/tst_DashContent.qml+1 tests/qmltests/Dash/tst_GenericScopeView.qml+4−4 tests/qmltests/Greeter/tst_Lockscreen.qml+1−1 tests/qmltests/Notifications/tst_Notifications.qml+18−23 tests/qmltests/Panel/tst_Panel.qml−14 tests/qmltests/tst_Shell.qml+27 tests/qmltests/tst_ShellWithPin.qml+203
data/unity8.conf+3
@@ -44,6 +44,8 @@ pre-start script
4444 rm "$MIR_SERVER_FILE"
4545 fi
4646
47+ initctl set-env --global MIR_SERVER_PROMPT_FILE=1
48+
4749 initctl emit scope-ui-starting
4850 initctl emit --no-wait indicator-services-start
4951end script
@@ -53,4 +55,5 @@ exec ${BINARY:-unity8} $ARGS
5355post-stop script
5456 initctl set-env --global MIR_SOCKET=$UNITY_MIR_SOCKET
5557 initctl unset-env --global UNITY_MIR_SOCKET
58+ initctl unset-env --global MIR_SERVER_PROMPT_FILE
5659end script
debian/changelog+70
@@ -1,3 +1,73 @@
1+unity8 (7.90+14.10.20140721.1-0ubuntu1) utopic; urgency=low
2+
3+ [ Michael Terry ]
4+ * Allow running the dialer-app in emergency mode when the screen is
5+ locked.
6+
7+ [ Michał Sawicz ]
8+ * Add missing nameOwner property to mock UnityMenuModel.
9+
10+ [ Albert Astals ]
11+ * Fix name, There's nothing called pageHeader in this file
12+
13+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Mon, 21 Jul 2014 14:57:08 +0000
14+
15+unity8 (7.90+14.10.20140717.3-0ubuntu1) utopic; urgency=low
16+
17+ [ Nick Dedekind ]
18+ * Added environment variable to upstart conf for mir trusted socket
19+ * Removed indicator menu dismissal on menu activation (LP: #1337771)
20+
21+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Thu, 17 Jul 2014 16:35:52 +0000
22+
23+unity8 (7.90+14.10.20140717.1-0ubuntu1) utopic; urgency=low
24+
25+ [ Michał Sawicz ]
26+ * Only generate .qmltypes files manually, no need to do it build-time.
27+ It didn't work when cross-compiling either, and required builders to
28+ have otherwise unnecessary environment.
29+ * Fix CardCreator test. It got broken with a merge that got landed
30+ along side of it.
31+
32+ [ Ying-Chun Liu ]
33+ * Add reboot/shutdown (LP: #1234062)
34+
35+ [ Albert Astals ]
36+ * Make the departments test more stable
37+
38+ [ Mirco Müller ]
39+ * Fixes gap at top of sim-unlock/fullscreen notification (point 1.),
40+ fixes blocking overlay if underlying UnityMenuModel vanishes from
41+ DBus (point 2.). The third bullet-point of the bug-report, lockup of
42+ shell-UI, could not be reproduced. (LP: #1308011)
43+
44+ [ Michael Terry ]
45+ * Expose a new greeter DBus property, IsActive, which tells apps and
46+ indicators when the integrated-greeter screen is active. Useful for
47+ switching UI modes when the screen is locked.
48+ * Allow the session to bring up the greeter/lockscreen over DBus. The
49+ emergency dialer will need this support in order to cancel bringing
50+ it up.
51+
52+ [ Michael Zanetti ]
53+ * Fixes gap at top of sim-unlock/fullscreen notification (point 1.),
54+ fixes blocking overlay if underlying UnityMenuModel vanishes from
55+ DBus (point 2.). The third bullet-point of the bug-report, lockup of
56+ shell-UI, could not be reproduced. (LP: #1308011)
57+
58+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Thu, 17 Jul 2014 09:38:20 +0000
59+
60+unity8 (7.90+14.10.20140714-0ubuntu1) utopic; urgency=low
61+
62+ [ Michał Sawicz ]
63+ * Activate all results in click scope by default. (LP: #1341262)
64+
65+ [ Mirco Müller ]
66+ * Added support for utilization of the ComboButton SDK-element for
67+ snap-decision notifications with many actions.
68+
69+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Mon, 14 Jul 2014 18:20:25 +0000
70+
171unity8 (7.90+14.10.20140709.2-0ubuntu1) utopic; urgency=low
272
373 [ Michal Hruby ]
debian/control+4−4
@@ -17,7 +17,7 @@ Build-Depends: cmake,
1717 libhud-client2-dev,
1818 libpay1-dev,
1919 libpulse-dev,
20− libqmenumodel-dev (>= 0.2.7),
20+ libqmenumodel-dev (>= 0.2.8),
2121 libqt5xmlpatterns5-dev,
2222 libunity-api-dev (>= 7.85),
2323 libunity-mir-dev,
@@ -52,7 +52,7 @@ Vcs-Browser: https://bazaar.launchpad.net/~unity-team/unity8/trunk
5252
5353Package: indicators-client
5454Architecture: amd64 armhf i386
55−Depends: qmenumodel-qml (>= 0.2.7),
55+Depends: qmenumodel-qml (>= 0.2.8),
5656 qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 0.1.49) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 0.1.49),
5757 unity8 (= ${binary:Version}),
5858 ${misc:Depends},
@@ -77,7 +77,7 @@ Depends: gsettings-desktop-schemas,
7777 libcap2-bin,
7878 libglib2.0-bin,
7979 libunity-mir1 (>= 0.4),
80− qmenumodel-qml (>= 0.2.7),
80+ qmenumodel-qml (>= 0.2.8),
8181 qml-module-qtquick-xmllistmodel,
8282 qtdeclarative5-gsettings1.0,
8383 qtdeclarative5-ubuntu-settings-components (>= 0.3),
@@ -103,7 +103,7 @@ Package: unity8-common
103103Architecture: all
104104Depends: qtdeclarative5-ubuntu-thumbnailer0.1 | ubuntu-thumbnailer-impl,
105105 qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 0.1.49) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 0.1.49),
106− qtdeclarative5-unity-notifications-plugin | unity-notifications-impl,
106+ qtdeclarative5-unity-notifications-plugin (>= 0.1.2) | unity-notifications-impl,
107107 ubuntu-thumbnailer-impl-0,
108108 unity-application-impl-2,
109109 unity-notifications-impl-3,
plugins/LightDM/CMakeLists.txt+1
@@ -15,6 +15,7 @@ include_directories(
1515
1616set(QMLPLUGIN_SRC
1717 ../Utils/qsortfilterproxymodelqml.cpp # FIXME evaluate a more generic approach for using other plugins
18+ DBusGreeter.cpp
1819 DBusGreeterList.cpp
1920 Greeter.cpp
2021 plugin.cpp
plugins/LightDM/DBusGreeter.cppnew file+65
@@ -0,0 +1,65 @@
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 "DBusGreeter.h"
18+#include "Greeter.h"
19+
20+#include <QDBusMessage>
21+#include <QStringList>
22+
23+DBusGreeter::DBusGreeter(Greeter *greeter, const QDBusConnection &connection, const QString &path)
24+ : QObject(greeter),
25+ m_greeter(greeter),
26+ m_connection(connection),
27+ m_path(path)
28+{
29+ connect(m_greeter, SIGNAL(isActiveChanged()), this, SLOT(isActiveChangedHandler()));
30+}
31+
32+bool DBusGreeter::isActive() const
33+{
34+ return m_greeter->isActive();
35+}
36+
37+void DBusGreeter::ShowGreeter()
38+{
39+ return Q_EMIT m_greeter->showGreeter();
40+}
41+
42+void DBusGreeter::isActiveChangedHandler()
43+{
44+ notifyPropertyChanged("IsActive", isActive());
45+ Q_EMIT isActiveChanged();
46+}
47+
48+// Manually emit a PropertiesChanged signal over DBus, because QtDBus
49+// doesn't do it for us on Q_PROPERTIES, oddly enough.
50+void DBusGreeter::notifyPropertyChanged(const QString& propertyName, const QVariant &value)
51+{
52+ QDBusMessage message;
53+ QVariantMap changedProps;
54+
55+ changedProps.insert(propertyName, value);
56+
57+ message = QDBusMessage::createSignal(m_path,
58+ "org.freedesktop.DBus.Properties",
59+ "PropertiesChanged");
60+ message << "com.canonical.UnityGreeter";
61+ message << changedProps;
62+ message << QStringList();
63+
64+ m_connection.send(message);
65+}
plugins/LightDM/DBusGreeter.hnew file+55
@@ -0,0 +1,55 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#ifndef UNITY_DBUSGREETER_H
18+#define UNITY_DBUSGREETER_H
19+
20+#include <QDBusConnection>
21+#include <QObject>
22+
23+class Greeter;
24+class QDBusInterface;
25+
26+/** This is an internal class used to talk with the indicators.
27+ */
28+
29+class DBusGreeter : public QObject
30+{
31+ Q_OBJECT
32+ Q_CLASSINFO("D-Bus Interface", "com.canonical.UnityGreeter")
33+
34+ Q_PROPERTY(bool IsActive READ isActive NOTIFY isActiveChanged) // since 14.10
35+
36+public:
37+ explicit DBusGreeter(Greeter *greeter, const QDBusConnection &connection, const QString &path);
38+
39+ bool isActive() const;
40+ Q_SCRIPTABLE void ShowGreeter(); // temporary, until we split the greeter again
41+
42+Q_SIGNALS:
43+ void isActiveChanged();
44+
45+private Q_SLOTS:
46+ void isActiveChangedHandler();
47+ void notifyPropertyChanged(const QString &propertyName, const QVariant &value);
48+
49+private:
50+ Greeter *m_greeter;
51+ QDBusConnection m_connection;
52+ QString m_path;
53+};
54+
55+#endif
plugins/LightDM/Greeter.cpp+17
@@ -25,6 +25,7 @@ public:
2525 explicit GreeterPrivate(Greeter *parent);
2626
2727 QLightDM::Greeter *m_greeter;
28+ bool m_active;
2829 bool wasPrompted;
2930 bool promptless;
3031
@@ -38,6 +39,7 @@ private:
3839
3940GreeterPrivate::GreeterPrivate(Greeter* parent)
4041 : m_greeter(new QLightDM::Greeter(parent)),
42+ m_active(false),
4143 wasPrompted(false),
4244 promptless(false),
4345 q_ptr(parent)
@@ -60,6 +62,21 @@ Greeter::Greeter(QObject* parent)
6062 d->m_greeter->connectSync();
6163}
6264
65+bool Greeter::isActive() const
66+{
67+ Q_D(const Greeter);
68+ return d->m_active;
69+}
70+
71+void Greeter::setIsActive(bool active)
72+{
73+ Q_D(Greeter);
74+ if (d->m_active != active) {
75+ d->m_active = active;
76+ Q_EMIT isActiveChanged();
77+ }
78+}
79+
6380bool Greeter::isAuthenticated() const
6481{
6582 Q_D(const Greeter);
plugins/LightDM/Greeter.h+5
@@ -34,6 +34,7 @@ class Greeter : public QObject
3434{
3535 Q_OBJECT
3636
37+ Q_PROPERTY(bool active READ isActive WRITE setIsActive NOTIFY isActiveChanged)
3738 Q_PROPERTY(bool authenticated READ isAuthenticated)
3839 Q_PROPERTY(QString authenticationUser READ authenticationUser NOTIFY authenticationUserChanged)
3940 Q_PROPERTY(bool promptless READ promptless NOTIFY promptlessChanged)
@@ -41,6 +42,7 @@ class Greeter : public QObject
4142public:
4243 explicit Greeter(QObject* parent=0);
4344
45+ bool isActive() const;
4446 bool isAuthenticated() const;
4547 QString authenticationUser() const;
4648 bool promptless() const;
@@ -49,13 +51,16 @@ public Q_SLOTS:
4951 void authenticate(const QString &username=QString());
5052 void respond(const QString &response);
5153 bool startSessionSync(const QString &session=QString());
54+ void setIsActive(bool isActive);
5255
5356Q_SIGNALS:
5457 void showMessage(const QString &text, bool isError);
5558 void showPrompt(const QString &text, bool isSecret);
5659 void authenticationComplete();
5760 void authenticationUserChanged(const QString &user);
61+ void isActiveChanged();
5862 void promptlessChanged();
63+ void showGreeter();
5964
6065 // This signal is emitted by external agents like indicators, and the UI
6166 // should switch to this user if possible.
plugins/LightDM/plugin.cpp+3
@@ -18,6 +18,7 @@
1818 */
1919
2020#include "plugin.h"
21+#include "DBusGreeter.h"
2122#include "DBusGreeterList.h"
2223#include "Greeter.h"
2324#include "UsersModel.h"
@@ -39,6 +40,8 @@ static QObject *greeter_provider(QQmlEngine *engine, QJSEngine *scriptEngine)
3940
4041 Greeter *greeter = new Greeter();
4142 QDBusConnection connection = QDBusConnection::sessionBus();
43+ DBusGreeter *root = new DBusGreeter(greeter, connection, "/");
44+ connection.registerObject("/", root, QDBusConnection::ExportScriptableContents);
4245 DBusGreeterList *list = new DBusGreeterList(greeter, connection, GREETER_LIST_DBUS_PATH);
4346 connection.registerObject(GREETER_LIST_DBUS_PATH, list, QDBusConnection::ExportScriptableContents);
4447 connection.registerService(GREETER_DBUS_SERVICE);
plugins/Lights/Lights.qmltypesnew file+45
@@ -0,0 +1,45 @@
1+import QtQuick.tooling 1.1
2+
3+// This file describes the plugin-supplied types contained in the library.
4+// It is used for QML tooling purposes only.
5+//
6+// This file was auto-generated by:
7+// 'qmlplugindump -notrelocatable Lights 0.1 plugins'
8+
9+Module {
10+ Component {
11+ name: "Lights"
12+ prototype: "QObject"
13+ exports: ["Lights/Lights 0.1"]
14+ isCreatable: false
15+ isSingleton: true
16+ exportMetaObjectRevisions: [0]
17+ Enum {
18+ name: "State"
19+ values: {
20+ "Off": 0,
21+ "On": 1
22+ }
23+ }
24+ Property { name: "state"; type: "State" }
25+ Property { name: "color"; type: "QColor" }
26+ Property { name: "onMillisec"; type: "int" }
27+ Property { name: "offMillisec"; type: "int" }
28+ Signal {
29+ name: "stateChanged"
30+ Parameter { name: "newState"; type: "State" }
31+ }
32+ Signal {
33+ name: "colorChanged"
34+ Parameter { name: "color"; type: "QColor" }
35+ }
36+ Signal {
37+ name: "onMillisecChanged"
38+ Parameter { name: "onMs"; type: "int" }
39+ }
40+ Signal {
41+ name: "offMillisecChanged"
42+ Parameter { name: "offMs"; type: "int" }
43+ }
44+ }
45+}
plugins/Powerd/Powerd.qmltypes+6−13
@@ -15,19 +15,12 @@ Module {
1515 isSingleton: true
1616 exportMetaObjectRevisions: [0]
1717 Enum {
18− name: "DisplayFlag"
18+ name: "DisplayStateChangeReason"
1919 values: {
20− "UseProximity": 1,
21− "DisableAutoBrightness": 2,
22− "Bright": 4
23− }
24− }
25− Enum {
26− name: "DisplayFlags"
27− values: {
28− "UseProximity": 1,
29− "DisableAutoBrightness": 2,
30− "Bright": 4
20+ "Unknown": 0,
21+ "Inactivity": 1,
22+ "PowerKey": 2,
23+ "Proximity": 3
3124 }
3225 }
3326 Enum {
@@ -40,7 +33,7 @@ Module {
4033 Signal {
4134 name: "displayPowerStateChange"
4235 Parameter { name: "status"; type: "int" }
43− Parameter { name: "flags"; type: "uint" }
36+ Parameter { name: "reason"; type: "int" }
4437 }
4538 }
4639}
plugins/Ubuntu/Gestures/Gestures.qmltypes+1
@@ -141,6 +141,7 @@ Module {
141141 name: "touchSceneYChanged"
142142 Parameter { name: "value"; type: "double" }
143143 }
144+ Signal { name: "tapped" }
144145 }
145146 Component {
146147 name: "PressedOutsideNotifier"
plugins/Unity/Session/dbusunitysessionservice.cpp+33
@@ -19,6 +19,7 @@
1919
2020// Qt
2121#include <QDBusConnection>
22+#include <QDBusInterface>
2223
2324DBusUnitySessionService::DBusUnitySessionService() : QObject()
2425{
@@ -44,3 +45,35 @@ void DBusUnitySessionService::RequestLogout()
4445{
4546 Q_EMIT logoutRequested(false);
4647}
48+
49+void DBusUnitySessionService::Reboot()
50+{
51+ QDBusConnection connection = QDBusConnection::systemBus();
52+ QDBusInterface iface1 ("org.freedesktop.login1",
53+ "/org/freedesktop/login1",
54+ "org.freedesktop.login1.Manager",
55+ connection);
56+
57+ iface1.call("Reboot", false);
58+}
59+
60+void DBusUnitySessionService::RequestReboot()
61+{
62+ Q_EMIT rebootRequested(false);
63+}
64+
65+void DBusUnitySessionService::Shutdown()
66+{
67+ QDBusConnection connection = QDBusConnection::systemBus();
68+ QDBusInterface iface1 ("org.freedesktop.login1",
69+ "/org/freedesktop/login1",
70+ "org.freedesktop.login1.Manager",
71+ connection);
72+
73+ iface1.call("PowerOff", false);
74+}
75+
76+void DBusUnitySessionService::RequestShutdown()
77+{
78+ Q_EMIT shutdownRequested(false);
79+}
plugins/Unity/Session/dbusunitysessionservice.h+61−4
@@ -46,6 +46,27 @@ Q_SIGNALS:
4646 */
4747 void logoutRequested(bool have_inhibitors);
4848
49+ /**
50+ * rebootRequested signal
51+ *
52+ * This signal is emitted when some applications request the system to
53+ * reboot.
54+ * @param have_inhibitors if there are any special running applications
55+ * which inhibit the reboot.
56+ */
57+ void rebootRequested(bool have_inhibitors);
58+
59+ /**
60+ * shutdownRequested signal
61+ *
62+ * This signal is emitted when some applications request the system to
63+ * shutdown.
64+ * @param have_inhibitors if there are any special running applications
65+ * which inhibit the shutdown.
66+ */
67+ void shutdownRequested(bool have_inhibitors);
68+
69+
4970 /**
5071 * logoutReady signal
5172 *
@@ -61,22 +82,58 @@ public Q_SLOTS:
6182 * This method directly logout the system without user's confirmation.
6283 * Ordinary applications should avoid calling this method. Please call
6384 * RequestLogout() to ask the user to decide logout or not.
64− * This method will stop all the running applications and then signal
65− * logoutReady when all the apps stopped.
6685 */
6786 Q_SCRIPTABLE void Logout();
6887
88+ /**
89+ * Reboot the system.
90+ *
91+ * This method directly reboot the system without user's confirmation.
92+ * Ordinary applications should avoid calling this method. Please call
93+ * RequestReboot() to ask the user to decide reboot or not.
94+ */
95+ Q_SCRIPTABLE void Reboot();
96+
97+ /**
98+ * Shutdown the system.
99+ *
100+ * This method directly shutdown the system without user's confirmation.
101+ * Ordinary applications should avoid calling this method. Please call
102+ * RequestShutdown() to ask the user to decide shutdown or not.
103+ */
104+ Q_SCRIPTABLE void Shutdown();
105+
69106 /**
70107 * Issue a logout request.
71108 *
72109 * This method emit the logoutRequested signal to the shell with a boolean
73110 * which indicates if there's any inhibitors. The shell should receive
74111 * this signal and display a dialog to ask the user to confirm the logout
75− * action. If confirmed, shell can call Logout() method to kill the apps
76− * and then logout
112+ * action. If confirmed, shell can call Logout() method to logout.
77113 */
78114 Q_SCRIPTABLE void RequestLogout();
79115
116+ /**
117+ * Issue a reboot request.
118+ *
119+ * This method emit the rebootRequested signal to the shell with a boolean
120+ * which indicates if there's any inhibitors. The shell should receive
121+ * this signal and display a dialog to ask the user to confirm the reboot
122+ * action. If confirmed, shell can call Reboot() method to reboot
123+ */
124+ Q_SCRIPTABLE void RequestReboot();
125+
126+ /**
127+ * Issue a shutdown request.
128+ *
129+ * This method emit the shutdownRequested signal to the shell with a
130+ * boolean which indicates if there's any inhibitors.
131+ * The shell should receive
132+ * this signal and display a dialog to ask the user to confirm the reboot
133+ * action. If confirmed, shell can call Shutdown() method to reboot
134+ */
135+ Q_SCRIPTABLE void RequestShutdown();
136+
80137};
81138
82139#endif // DBUSUNITYSESSIONSERVICE_H
po/am.po+18−18
@@ -8,23 +8,23 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2014-01-18 19:28+0000\n"
11+"PO-Revision-Date: 2014-07-20 18:16+0000\n"
1212"Last-Translator: samson <Unknown>\n"
1313"Language-Team: Amharic <am@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
17+"X-Launchpad-Export-Date: 2014-07-21 07:05+0000\n"
18+"X-Generator: Launchpad (build 17114)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
2222msgid "Pin shortcut"
23−msgstr ""
23+msgstr "አቋራጭ ማጣበቂያ"
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
2626msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "አቋራጭ መለያያ"
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -74,15 +74,15 @@ msgstr ""
7474
7575#: qml/Components/Lockscreen.qml:214
7676msgid "Emergency Call"
77−msgstr ""
77+msgstr "የ ድንገተኛ ጥሪ"
7878
7979#: qml/Components/Lockscreen.qml:231
8080msgid "OK"
81−msgstr ""
81+msgstr "እሺ"
8282
8383#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
85−msgstr ""
85+msgstr "በቅርብ የፈለጉዋቸው"
8686
8787#: qml/Components/PassphraseLockscreen.qml:60
8888#, qt-format
@@ -95,31 +95,31 @@ msgstr "ሰላም"
9595
9696#: qml/Components/PinLockscreen.qml:198
9797msgid "CANCEL"
98−msgstr ""
98+msgstr "መሰረዣ"
9999
100100#: qml/Components/PinLockscreen.qml:216
101101msgid "DONE"
102−msgstr ""
102+msgstr "ጨርሷል"
103103
104104#: qml/Components/SeeMore.qml:35
105105msgid "See more"
106−msgstr ""
106+msgstr "ተጨማሪ መመልከቻ"
107107
108108#: qml/Components/SeeMore.qml:58
109109msgid "See less"
110−msgstr ""
110+msgstr "አነስተኛ መመልከቻ"
111111
112112#: qml/Dash/DashApps.qml:37
113113msgid "Recent"
114−msgstr ""
114+msgstr "የቅርብ ጊዜ"
115115
116116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117117msgid "More..."
118−msgstr ""
118+msgstr "ተጨማሪ..."
119119
120120#: qml/Dash/Previews/PreviewActionCombo.qml:34
121121msgid "Less..."
122−msgstr ""
122+msgstr "አነስተኛ..."
123123
124124#: qml/Dash/Previews/PreviewRatingInput.qml:82
125125msgid "Rate this"
@@ -171,7 +171,7 @@ msgstr ""
171171
172172#: qml/Panel/Indicators/MenuItemFactory.qml:587
173173msgid "Downloading"
174−msgstr ""
174+msgstr "በማውረድ ላይ"
175175
176176#: qml/Panel/Indicators/MenuItemFactory.qml:589
177177msgid "Paused, tap to resume"
@@ -179,11 +179,11 @@ msgstr ""
179179
180180#: qml/Panel/Indicators/MenuItemFactory.qml:591
181181msgid "Canceled"
182−msgstr ""
182+msgstr "ተሰርዟል"
183183
184184#: qml/Panel/Indicators/MenuItemFactory.qml:593
185185msgid "Finished"
186−msgstr ""
186+msgstr "ጨርሷል"
187187
188188#: qml/Panel/Indicators/MenuItemFactory.qml:595
189189msgid "Failed, tap to retry"
po/ast.po+11−11
@@ -8,23 +8,23 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2014-07-04 15:29+0000\n"
11+"PO-Revision-Date: 2014-07-15 16:32+0000\n"
1212"Last-Translator: ivarela <ivarela@ubuntu.com>\n"
1313"Language-Team: Asturian <ast@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
17+"X-Launchpad-Export-Date: 2014-07-16 07:27+0000\n"
18+"X-Generator: Launchpad (build 17112)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
2222msgid "Pin shortcut"
23−msgstr ""
23+msgstr "Anclar"
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
2626msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "Desanclar"
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -171,27 +171,27 @@ msgstr "Escribi'l PIN de la SIM"
171171
172172#: qml/Panel/Indicators/MenuItemFactory.qml:583
173173msgid "In queue…"
174−msgstr ""
174+msgstr "N'espera…"
175175
176176#: qml/Panel/Indicators/MenuItemFactory.qml:587
177177msgid "Downloading"
178−msgstr ""
178+msgstr "Baxando"
179179
180180#: qml/Panel/Indicators/MenuItemFactory.qml:589
181181msgid "Paused, tap to resume"
182−msgstr ""
182+msgstr "Posáu, toca pa reanudar"
183183
184184#: qml/Panel/Indicators/MenuItemFactory.qml:591
185185msgid "Canceled"
186−msgstr ""
186+msgstr "Encaboxáu"
187187
188188#: qml/Panel/Indicators/MenuItemFactory.qml:593
189189msgid "Finished"
190−msgstr ""
190+msgstr "Finó"
191191
192192#: qml/Panel/Indicators/MenuItemFactory.qml:595
193193msgid "Failed, tap to retry"
194−msgstr ""
194+msgstr "Falló, toca pa reintentar"
195195
196196#: qml/Panel/SearchIndicator.qml:27
197197msgid "Search"
po/br.po+11−11
@@ -8,23 +8,23 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2014-06-16 11:41+0000\n"
11+"PO-Revision-Date: 2014-07-15 06:44+0000\n"
1212"Last-Translator: Fohanno Thierry <thierry.fohanno@ofis-bzh.org>\n"
1313"Language-Team: Breton <br@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
17+"X-Launchpad-Export-Date: 2014-07-16 07:27+0000\n"
18+"X-Generator: Launchpad (build 17112)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
2222msgid "Pin shortcut"
23−msgstr ""
23+msgstr "Spilhennañ ar verradenn"
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
2626msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "Dispilhennañ ar verradenn"
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -174,27 +174,27 @@ msgstr "Ebarzhit kod PIN ho kartenn SIM, mar plij"
174174
175175#: qml/Panel/Indicators/MenuItemFactory.qml:583
176176msgid "In queue…"
177−msgstr ""
177+msgstr "El lostennad..."
178178
179179#: qml/Panel/Indicators/MenuItemFactory.qml:587
180180msgid "Downloading"
181−msgstr ""
181+msgstr "O pellgargañ"
182182
183183#: qml/Panel/Indicators/MenuItemFactory.qml:589
184184msgid "Paused, tap to resume"
185−msgstr ""
185+msgstr "Ehanet, touchit evit adkregiñ"
186186
187187#: qml/Panel/Indicators/MenuItemFactory.qml:591
188188msgid "Canceled"
189−msgstr ""
189+msgstr "Nullet"
190190
191191#: qml/Panel/Indicators/MenuItemFactory.qml:593
192192msgid "Finished"
193−msgstr ""
193+msgstr "Echu"
194194
195195#: qml/Panel/Indicators/MenuItemFactory.qml:595
196196msgid "Failed, tap to retry"
197−msgstr ""
197+msgstr "C'hwitet, touchit evit adkregiñ"
198198
199199#: qml/Panel/SearchIndicator.qml:27
200200msgid "Search"
po/de.po+12−12
@@ -8,14 +8,14 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2014-06-06 19:34+0000\n"
11+"PO-Revision-Date: 2014-07-15 13:20+0000\n"
1212"Last-Translator: Phillip Sz <Unknown>\n"
1313"Language-Team: German <de@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
17+"X-Launchpad-Export-Date: 2014-07-16 07:27+0000\n"
18+"X-Generator: Launchpad (build 17112)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -83,7 +83,7 @@ msgstr "Notruf"
8383
8484#: qml/Components/Lockscreen.qml:231
8585msgid "OK"
86−msgstr ""
86+msgstr "OK"
8787
8888#: qml/Components/PageHeader.qml:366
8989msgid "Recent searches"
@@ -100,11 +100,11 @@ msgstr "Hallo"
100100
101101#: qml/Components/PinLockscreen.qml:198
102102msgid "CANCEL"
103−msgstr ""
103+msgstr "ABBRECHEN"
104104
105105#: qml/Components/PinLockscreen.qml:216
106106msgid "DONE"
107−msgstr ""
107+msgstr "ERLEDIGT"
108108
109109#: qml/Components/SeeMore.qml:35
110110msgid "See more"
@@ -172,27 +172,27 @@ msgstr "Bitte die PIN der SIM eingeben"
172172
173173#: qml/Panel/Indicators/MenuItemFactory.qml:583
174174msgid "In queue…"
175−msgstr ""
175+msgstr "In Warteschlange …"
176176
177177#: qml/Panel/Indicators/MenuItemFactory.qml:587
178178msgid "Downloading"
179−msgstr ""
179+msgstr "Wird heruntergeladen"
180180
181181#: qml/Panel/Indicators/MenuItemFactory.qml:589
182182msgid "Paused, tap to resume"
183−msgstr ""
183+msgstr "Pausiert, tippen Sie zum fortsetzen"
184184
185185#: qml/Panel/Indicators/MenuItemFactory.qml:591
186186msgid "Canceled"
187−msgstr ""
187+msgstr "Abgebrochen"
188188
189189#: qml/Panel/Indicators/MenuItemFactory.qml:593
190190msgid "Finished"
191−msgstr ""
191+msgstr "Erledigt"
192192
193193#: qml/Panel/Indicators/MenuItemFactory.qml:595
194194msgid "Failed, tap to retry"
195−msgstr ""
195+msgstr "Fehlgeschlagen, tippen Sie zum Wiederholen"
196196
197197#: qml/Panel/SearchIndicator.qml:27
198198msgid "Search"
po/en_AU.po+24−22
@@ -8,23 +8,23 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2013-09-28 07:46+0000\n"
11+"PO-Revision-Date: 2014-07-18 10:38+0000\n"
1212"Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
1313"Language-Team: English (Australia) <en_AU@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
17+"X-Launchpad-Export-Date: 2014-07-19 06:19+0000\n"
18+"X-Generator: Launchpad (build 17114)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
2222msgid "Pin shortcut"
23−msgstr ""
23+msgstr "Pin shortcut"
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
2626msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "Unpin shortcut"
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -71,6 +71,8 @@ msgid ""
7171"You have now mastered the edge gestures and can start using the "
7272"phone<br><br>Tap on the screen to start"
7373msgstr ""
74+"You have now mastered the edge gestures and can start using the "
75+"phone<br><br>Tap on the screen to start"
7476
7577#: qml/Components/Lockscreen.qml:214
7678msgid "Emergency Call"
@@ -78,7 +80,7 @@ msgstr "Emergency Call"
7880
7981#: qml/Components/Lockscreen.qml:231
8082msgid "OK"
81−msgstr ""
83+msgstr "OK"
8284
8385#: qml/Components/PageHeader.qml:366
8486msgid "Recent searches"
@@ -95,31 +97,31 @@ msgstr "Hello"
9597
9698#: qml/Components/PinLockscreen.qml:198
9799msgid "CANCEL"
98−msgstr ""
100+msgstr "CANCEL"
99101
100102#: qml/Components/PinLockscreen.qml:216
101103msgid "DONE"
102−msgstr ""
104+msgstr "DONE"
103105
104106#: qml/Components/SeeMore.qml:35
105107msgid "See more"
106−msgstr ""
108+msgstr "See more"
107109
108110#: qml/Components/SeeMore.qml:58
109111msgid "See less"
110−msgstr ""
112+msgstr "See less"
111113
112114#: qml/Dash/DashApps.qml:37
113115msgid "Recent"
114−msgstr ""
116+msgstr "Recent"
115117
116118#: qml/Dash/Previews/PreviewActionCombo.qml:34
117119msgid "More..."
118−msgstr ""
120+msgstr "More..."
119121
120122#: qml/Dash/Previews/PreviewActionCombo.qml:34
121123msgid "Less..."
122−msgstr ""
124+msgstr "Less..."
123125
124126#: qml/Dash/Previews/PreviewRatingInput.qml:82
125127msgid "Rate this"
@@ -135,7 +137,7 @@ msgstr "Send"
135137
136138#: qml/Greeter/Greeter.qml:157
137139msgid "Swipe to unlock"
138−msgstr ""
140+msgstr "Swipe to unlock"
139141
140142#: qml/Hud/HudParametrizedActionsPage.qml:132
141143msgid "Confirm"
@@ -159,35 +161,35 @@ msgstr "Speaking..."
159161
160162#: qml/Notifications/NotificationMenuItemFactory.qml:91
161163msgid "Show password"
162−msgstr ""
164+msgstr "Show password"
163165
164166#: qml/Notifications/NotificationMenuItemFactory.qml:103
165167msgid "Please enter SIM PIN"
166−msgstr ""
168+msgstr "Please enter SIM PIN"
167169
168170#: qml/Panel/Indicators/MenuItemFactory.qml:583
169171msgid "In queue…"
170−msgstr ""
172+msgstr "In queue…"
171173
172174#: qml/Panel/Indicators/MenuItemFactory.qml:587
173175msgid "Downloading"
174−msgstr ""
176+msgstr "Downloading"
175177
176178#: qml/Panel/Indicators/MenuItemFactory.qml:589
177179msgid "Paused, tap to resume"
178−msgstr ""
180+msgstr "Paused, tap to resume"
179181
180182#: qml/Panel/Indicators/MenuItemFactory.qml:591
181183msgid "Canceled"
182−msgstr ""
184+msgstr "Cancelled"
183185
184186#: qml/Panel/Indicators/MenuItemFactory.qml:593
185187msgid "Finished"
186−msgstr ""
188+msgstr "Finished"
187189
188190#: qml/Panel/Indicators/MenuItemFactory.qml:595
189191msgid "Failed, tap to retry"
190−msgstr ""
192+msgstr "Failed, tap to retry"
191193
192194#: qml/Panel/SearchIndicator.qml:27
193195msgid "Search"
po/en_GB.po+17−17
@@ -8,23 +8,23 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2014-03-07 13:27+0000\n"
12−"Last-Translator: Andi Chandler <Unknown>\n"
11+"PO-Revision-Date: 2014-07-10 10:59+0000\n"
12+"Last-Translator: Alan Pope ㋛ <alan@ubuntu.com>\n"
1313"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
17+"X-Launchpad-Export-Date: 2014-07-11 06:15+0000\n"
18+"X-Generator: Launchpad (build 17111)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
2222msgid "Pin shortcut"
23−msgstr ""
23+msgstr "Pin shortcut"
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
2626msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "Unpin shortcut"
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -80,7 +80,7 @@ msgstr "Emergency Call"
8080
8181#: qml/Components/Lockscreen.qml:231
8282msgid "OK"
83−msgstr ""
83+msgstr "OK"
8484
8585#: qml/Components/PageHeader.qml:366
8686msgid "Recent searches"
@@ -97,11 +97,11 @@ msgstr "Hello"
9797
9898#: qml/Components/PinLockscreen.qml:198
9999msgid "CANCEL"
100−msgstr ""
100+msgstr "CANCEL"
101101
102102#: qml/Components/PinLockscreen.qml:216
103103msgid "DONE"
104−msgstr ""
104+msgstr "DONE"
105105
106106#: qml/Components/SeeMore.qml:35
107107msgid "See more"
@@ -113,7 +113,7 @@ msgstr "See less"
113113
114114#: qml/Dash/DashApps.qml:37
115115msgid "Recent"
116−msgstr ""
116+msgstr "Recent"
117117
118118#: qml/Dash/Previews/PreviewActionCombo.qml:34
119119msgid "More..."
@@ -137,7 +137,7 @@ msgstr "Send"
137137
138138#: qml/Greeter/Greeter.qml:157
139139msgid "Swipe to unlock"
140−msgstr ""
140+msgstr "Swipe to unlock"
141141
142142#: qml/Hud/HudParametrizedActionsPage.qml:132
143143msgid "Confirm"
@@ -169,27 +169,27 @@ msgstr "Please enter SIM PIN"
169169
170170#: qml/Panel/Indicators/MenuItemFactory.qml:583
171171msgid "In queue…"
172−msgstr ""
172+msgstr "In queue…"
173173
174174#: qml/Panel/Indicators/MenuItemFactory.qml:587
175175msgid "Downloading"
176−msgstr ""
176+msgstr "Downloading"
177177
178178#: qml/Panel/Indicators/MenuItemFactory.qml:589
179179msgid "Paused, tap to resume"
180−msgstr ""
180+msgstr "Paused, tap to resume"
181181
182182#: qml/Panel/Indicators/MenuItemFactory.qml:591
183183msgid "Canceled"
184−msgstr ""
184+msgstr "Cancelled"
185185
186186#: qml/Panel/Indicators/MenuItemFactory.qml:593
187187msgid "Finished"
188−msgstr ""
188+msgstr "Finished"
189189
190190#: qml/Panel/Indicators/MenuItemFactory.qml:595
191191msgid "Failed, tap to retry"
192−msgstr ""
192+msgstr "Failed, tap to retry"
193193
194194#: qml/Panel/SearchIndicator.qml:27
195195msgid "Search"
po/es.po+11−11
@@ -8,23 +8,23 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2014-06-26 03:08+0000\n"
11+"PO-Revision-Date: 2014-07-12 05:24+0000\n"
1212"Last-Translator: Adolfo Jayme <fitoschido@gmail.com>\n"
1313"Language-Team: Spanish <es@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
17+"X-Launchpad-Export-Date: 2014-07-13 06:33+0000\n"
18+"X-Generator: Launchpad (build 17111)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
2222msgid "Pin shortcut"
23−msgstr ""
23+msgstr "Anclar"
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
2626msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "Desanclar"
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -172,27 +172,27 @@ msgstr "Escriba el PIN de la SIM"
172172
173173#: qml/Panel/Indicators/MenuItemFactory.qml:583
174174msgid "In queue…"
175−msgstr ""
175+msgstr "En espera…"
176176
177177#: qml/Panel/Indicators/MenuItemFactory.qml:587
178178msgid "Downloading"
179−msgstr ""
179+msgstr "Descargando"
180180
181181#: qml/Panel/Indicators/MenuItemFactory.qml:589
182182msgid "Paused, tap to resume"
183−msgstr ""
183+msgstr "Pausado, toque para reanudar"
184184
185185#: qml/Panel/Indicators/MenuItemFactory.qml:591
186186msgid "Canceled"
187−msgstr ""
187+msgstr "Cancelado"
188188
189189#: qml/Panel/Indicators/MenuItemFactory.qml:593
190190msgid "Finished"
191−msgstr ""
191+msgstr "Finalizado"
192192
193193#: qml/Panel/Indicators/MenuItemFactory.qml:595
194194msgid "Failed, tap to retry"
195−msgstr ""
195+msgstr "Falló, toque para reintentar"
196196
197197#: qml/Panel/SearchIndicator.qml:27
198198msgid "Search"
po/eu.po+18−18
@@ -8,23 +8,23 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2014-03-30 12:44+0000\n"
11+"PO-Revision-Date: 2014-07-16 18:11+0000\n"
1212"Last-Translator: Ibai Oihanguren Sala <Unknown>\n"
1313"Language-Team: Basque <eu@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
17+"X-Launchpad-Export-Date: 2014-07-17 06:38+0000\n"
18+"X-Generator: Launchpad (build 17114)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
2222msgid "Pin shortcut"
23−msgstr ""
23+msgstr "Ainguratu lasterbidea"
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
2626msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "Askatu lasterbidea"
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -52,7 +52,7 @@ msgstr "Itxi"
5252
5353#: qml/Components/EdgeDemo.qml:172
5454msgid "Swipe up again to close the settings screen"
55−msgstr "Arrastatu gora berriro ezarpenen leihoa ixteko"
55+msgstr "Pasatu hatza gora berriro ezarpenen leihoa ixteko"
5656
5757#: qml/Components/EdgeDemo.qml:199
5858msgid "Left edge"
@@ -61,7 +61,7 @@ msgstr "Ezkerreko ertza"
6161#: qml/Components/EdgeDemo.qml:200
6262msgid "Swipe from the left to reveal the launcher for quick access to apps"
6363msgstr ""
64−"Arrastatu ezkerretik abiarazlea erakutsi eta aplikazioak eskura berehala "
64+"Pasatu hatza ezkerretik abiarazlea erakutsi eta aplikazioak eskura berehala "
6565"izateko"
6666
6767#: qml/Components/EdgeDemo.qml:227
@@ -74,7 +74,7 @@ msgid ""
7474"phone<br><br>Tap on the screen to start"
7575msgstr ""
7676"Jadanik ezagutzen dituzu ertzetako keinuak, eta mugikorra erabiltzen has "
77−"zaitezke<br><br>Ukitu pantaila hasteko"
77+"zaitezke<br><br>Sakatu pantailan hasteko"
7878
7979#: qml/Components/Lockscreen.qml:214
8080msgid "Emergency Call"
@@ -82,7 +82,7 @@ msgstr "Larrialdi-deia"
8282
8383#: qml/Components/Lockscreen.qml:231
8484msgid "OK"
85−msgstr ""
85+msgstr "Ados"
8686
8787#: qml/Components/PageHeader.qml:366
8888msgid "Recent searches"
@@ -99,11 +99,11 @@ msgstr "Kaixo"
9999
100100#: qml/Components/PinLockscreen.qml:198
101101msgid "CANCEL"
102−msgstr ""
102+msgstr "UTZI"
103103
104104#: qml/Components/PinLockscreen.qml:216
105105msgid "DONE"
106−msgstr ""
106+msgstr "EGINDA"
107107
108108#: qml/Components/SeeMore.qml:35
109109msgid "See more"
@@ -139,7 +139,7 @@ msgstr "Bidali"
139139
140140#: qml/Greeter/Greeter.qml:157
141141msgid "Swipe to unlock"
142−msgstr ""
142+msgstr "Pasatu hatza desblokeatzeko"
143143
144144#: qml/Hud/HudParametrizedActionsPage.qml:132
145145msgid "Confirm"
@@ -171,27 +171,27 @@ msgstr "Sartu SIMaren PINa"
171171
172172#: qml/Panel/Indicators/MenuItemFactory.qml:583
173173msgid "In queue…"
174−msgstr ""
174+msgstr "Ilaran..."
175175
176176#: qml/Panel/Indicators/MenuItemFactory.qml:587
177177msgid "Downloading"
178−msgstr ""
178+msgstr "Deskargatzen"
179179
180180#: qml/Panel/Indicators/MenuItemFactory.qml:589
181181msgid "Paused, tap to resume"
182−msgstr ""
182+msgstr "Pausatuta, sakatu jarraitzeko"
183183
184184#: qml/Panel/Indicators/MenuItemFactory.qml:591
185185msgid "Canceled"
186−msgstr ""
186+msgstr "Utzita"
187187
188188#: qml/Panel/Indicators/MenuItemFactory.qml:593
189189msgid "Finished"
190−msgstr ""
190+msgstr "Amaituta"
191191
192192#: qml/Panel/Indicators/MenuItemFactory.qml:595
193193msgid "Failed, tap to retry"
194−msgstr ""
194+msgstr "Huts egin du, sakatu berriro saiatzeko"
195195
196196#: qml/Panel/SearchIndicator.qml:27
197197msgid "Search"
po/fr.po+10−10
@@ -8,14 +8,14 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2014-07-09 17:53+0000\n"
12−"Last-Translator: Sébastien Maes <nautilussebastien@gmail.com>\n"
11+"PO-Revision-Date: 2014-07-18 18:31+0000\n"
12+"Last-Translator: Nicolas Delvaux <Unknown>\n"
1313"Language-Team: French <fr@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-10 07:29+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
17+"X-Launchpad-Export-Date: 2014-07-19 06:19+0000\n"
18+"X-Generator: Launchpad (build 17114)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -108,7 +108,7 @@ msgstr "ANNULER"
108108
109109#: qml/Components/PinLockscreen.qml:216
110110msgid "DONE"
111−msgstr "TERMINÉ"
111+msgstr "VALIDER"
112112
113113#: qml/Components/SeeMore.qml:35
114114msgid "See more"
@@ -172,15 +172,15 @@ msgstr "Afficher le mot de passe"
172172
173173#: qml/Notifications/NotificationMenuItemFactory.qml:103
174174msgid "Please enter SIM PIN"
175−msgstr "Veuillez entrer le code PIN de votre carte SIM"
175+msgstr "Entrez le code PIN"
176176
177177#: qml/Panel/Indicators/MenuItemFactory.qml:583
178178msgid "In queue…"
179−msgstr ""
179+msgstr "Dans la file d'attente..."
180180
181181#: qml/Panel/Indicators/MenuItemFactory.qml:587
182182msgid "Downloading"
183−msgstr ""
183+msgstr "Téléchargement en cours"
184184
185185#: qml/Panel/Indicators/MenuItemFactory.qml:589
186186msgid "Paused, tap to resume"
@@ -188,11 +188,11 @@ msgstr "En pause, appuyez pour reprendre"
188188
189189#: qml/Panel/Indicators/MenuItemFactory.qml:591
190190msgid "Canceled"
191−msgstr ""
191+msgstr "Annulé"
192192
193193#: qml/Panel/Indicators/MenuItemFactory.qml:593
194194msgid "Finished"
195−msgstr ""
195+msgstr "Terminé"
196196
197197#: qml/Panel/Indicators/MenuItemFactory.qml:595
198198msgid "Failed, tap to retry"
po/gd.po+18−17
@@ -2,29 +2,30 @@
22# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
33# This file is distributed under the same license as the unity8 package.
44# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
5−#
5+# GunChleoc <fios@foramnagaidhlig.net>, 2014.
66msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2014-05-17 21:08+0000\n"
12−"Last-Translator: Akerbeltz <fios@akerbeltz.org>\n"
13−"Language-Team: Gaelic; Scottish <gd@li.org>\n"
11+"PO-Revision-Date: 2014-07-16 14:48+0000\n"
12+"Last-Translator: GunChleoc <Unknown>\n"
13+"Language-Team: Fòram na Gàidhlig http://www.foramnagaidhlig.net\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
17+"X-Launchpad-Export-Date: 2014-07-17 06:38+0000\n"
18+"X-Generator: Launchpad (build 17114)\n"
19+"Language: gd\n"
1920
2021#: plugins/Unity/Launcher/launcheritem.cpp:43
2122#: plugins/Unity/Launcher/launcheritem.cpp:73
2223msgid "Pin shortcut"
23−msgstr ""
24+msgstr "Prìnich ath-ghoirid"
2425
2526#: plugins/Unity/Launcher/launcheritem.cpp:73
2627msgid "Unpin shortcut"
27−msgstr ""
28+msgstr "Neo-phrìnich an ath-ghoirid"
2829
2930#: qml/Components/EdgeDemoOverlay.qml:151
3031msgid "Skip intro"
@@ -86,7 +87,7 @@ msgstr "Gairm èiginn"
8687
8788#: qml/Components/Lockscreen.qml:231
8889msgid "OK"
89−msgstr ""
90+msgstr "Ceart ma-hà"
9091
9192#: qml/Components/PageHeader.qml:366
9293msgid "Recent searches"
@@ -103,11 +104,11 @@ msgstr "Shin thu"
103104
104105#: qml/Components/PinLockscreen.qml:198
105106msgid "CANCEL"
106−msgstr ""
107+msgstr "SGUIR DHETH"
107108
108109#: qml/Components/PinLockscreen.qml:216
109110msgid "DONE"
110−msgstr ""
111+msgstr "DÈANTA"
111112
112113#: qml/Components/SeeMore.qml:35
113114msgid "See more"
@@ -175,27 +176,27 @@ msgstr "Cuir a-steach SIM PIN"
175176
176177#: qml/Panel/Indicators/MenuItemFactory.qml:583
177178msgid "In queue…"
178−msgstr ""
179+msgstr "Air a' chiudha…"
179180
180181#: qml/Panel/Indicators/MenuItemFactory.qml:587
181182msgid "Downloading"
182−msgstr ""
183+msgstr "'Ga luchdadh a-nuas"
183184
184185#: qml/Panel/Indicators/MenuItemFactory.qml:589
185186msgid "Paused, tap to resume"
186−msgstr ""
187+msgstr "'Na stad, thoir gnogag gus leantainn air"
187188
188189#: qml/Panel/Indicators/MenuItemFactory.qml:591
189190msgid "Canceled"
190−msgstr ""
191+msgstr "Air a sgur dheth"
191192
192193#: qml/Panel/Indicators/MenuItemFactory.qml:593
193194msgid "Finished"
194−msgstr ""
195+msgstr "Coileanta"
195196
196197#: qml/Panel/Indicators/MenuItemFactory.qml:595
197198msgid "Failed, tap to retry"
198−msgstr ""
199+msgstr "Dh'fhàillig leis, thoir gnogag gus feuchainn a-rithist"
199200
200201#: qml/Panel/SearchIndicator.qml:27
201202msgid "Search"
po/gl.po+6−6
@@ -8,23 +8,23 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2014-07-09 12:17+0000\n"
11+"PO-Revision-Date: 2014-07-19 17:04+0000\n"
1212"Last-Translator: Marcos Lans <Unknown>\n"
1313"Language-Team: Galician <gl@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-10 07:29+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
17+"X-Launchpad-Export-Date: 2014-07-20 06:18+0000\n"
18+"X-Generator: Launchpad (build 17114)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
2222msgid "Pin shortcut"
23−msgstr "Pegar o atallo"
23+msgstr "Fixar o atallo"
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
2626msgid "Unpin shortcut"
27−msgstr "Despegar o atallo"
27+msgstr "Eliminar o atallo"
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -52,7 +52,7 @@ msgstr "Pechar"
5252
5353#: qml/Components/EdgeDemo.qml:172
5454msgid "Swipe up again to close the settings screen"
55−msgstr "Esvare o dedo cara a arriba para pechar os axustes"
55+msgstr "Esvare o dedo de novo cara a arriba para pechar os axustes"
5656
5757#: qml/Components/EdgeDemo.qml:199
5858msgid "Left edge"
po/he.po+11−11
@@ -8,23 +8,23 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2014-06-09 07:49+0000\n"
11+"PO-Revision-Date: 2014-07-15 13:20+0000\n"
1212"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
1313"Language-Team: Hebrew <he@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
17+"X-Launchpad-Export-Date: 2014-07-16 07:27+0000\n"
18+"X-Generator: Launchpad (build 17112)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
2222msgid "Pin shortcut"
23−msgstr ""
23+msgstr "הצמדת קיצור דרך"
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
2626msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "הפרדת קיצור הדרך"
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -169,27 +169,27 @@ msgstr "נא להזין את קוד ה־<U+200F>SIM"
169169
170170#: qml/Panel/Indicators/MenuItemFactory.qml:583
171171msgid "In queue…"
172−msgstr ""
172+msgstr "בתור…"
173173
174174#: qml/Panel/Indicators/MenuItemFactory.qml:587
175175msgid "Downloading"
176−msgstr ""
176+msgstr "בהורדה"
177177
178178#: qml/Panel/Indicators/MenuItemFactory.qml:589
179179msgid "Paused, tap to resume"
180−msgstr ""
180+msgstr "מושהה, יש לגעת כדי להמשיך"
181181
182182#: qml/Panel/Indicators/MenuItemFactory.qml:591
183183msgid "Canceled"
184−msgstr ""
184+msgstr "בוטל"
185185
186186#: qml/Panel/Indicators/MenuItemFactory.qml:593
187187msgid "Finished"
188−msgstr ""
188+msgstr "הושלם"
189189
190190#: qml/Panel/Indicators/MenuItemFactory.qml:595
191191msgid "Failed, tap to retry"
192−msgstr ""
192+msgstr "נכשל, יש לגעת כדי לנסות שוב"
193193
194194#: qml/Panel/SearchIndicator.qml:27
195195msgid "Search"
po/is.po+23−23
@@ -8,14 +8,14 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2013-09-18 16:22+0000\n"
12−"Last-Translator: Andri Thorlacius <Unknown>\n"
11+"PO-Revision-Date: 2014-07-18 11:20+0000\n"
12+"Last-Translator: Sveinn í Felli <sv1@fellsnet.is>\n"
1313"Language-Team: Icelandic <is@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
17+"X-Launchpad-Export-Date: 2014-07-19 06:19+0000\n"
18+"X-Generator: Launchpad (build 17114)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -45,7 +45,7 @@ msgstr "Efri brún"
4545
4646#: qml/Components/EdgeDemo.qml:146
4747msgid "Try swiping from the top edge to access the indicators"
48−msgstr ""
48+msgstr "Reyndu að renna frá toppi til að fá aðgang að tilkynningum"
4949
5050#: qml/Components/EdgeDemo.qml:171
5151msgid "Close"
@@ -53,7 +53,7 @@ msgstr "Loka"
5353
5454#: qml/Components/EdgeDemo.qml:172
5555msgid "Swipe up again to close the settings screen"
56−msgstr ""
56+msgstr "Renndu upp til að loka stillingum"
5757
5858#: qml/Components/EdgeDemo.qml:199
5959msgid "Left edge"
@@ -61,7 +61,7 @@ msgstr "Vinstri brún"
6161
6262#: qml/Components/EdgeDemo.qml:200
6363msgid "Swipe from the left to reveal the launcher for quick access to apps"
64−msgstr ""
64+msgstr "Renndu frá vinstri til að afhjúpa flýtiræsi forrita"
6565
6666#: qml/Components/EdgeDemo.qml:227
6767msgid "Well done"
@@ -79,7 +79,7 @@ msgstr "Neyðarsímtal"
7979
8080#: qml/Components/Lockscreen.qml:231
8181msgid "OK"
82−msgstr ""
82+msgstr "Í lagi"
8383
8484#: qml/Components/PageHeader.qml:366
8585msgid "Recent searches"
@@ -96,31 +96,31 @@ msgstr "Hæ"
9696
9797#: qml/Components/PinLockscreen.qml:198
9898msgid "CANCEL"
99−msgstr ""
99+msgstr "HÆTTA VIÐ"
100100
101101#: qml/Components/PinLockscreen.qml:216
102102msgid "DONE"
103−msgstr ""
103+msgstr "BÚIÐ"
104104
105105#: qml/Components/SeeMore.qml:35
106106msgid "See more"
107−msgstr ""
107+msgstr "Sjá meira"
108108
109109#: qml/Components/SeeMore.qml:58
110110msgid "See less"
111−msgstr ""
111+msgstr "Sjá minna"
112112
113113#: qml/Dash/DashApps.qml:37
114114msgid "Recent"
115−msgstr ""
115+msgstr "Nýlegt"
116116
117117#: qml/Dash/Previews/PreviewActionCombo.qml:34
118118msgid "More..."
119−msgstr ""
119+msgstr "Meira..."
120120
121121#: qml/Dash/Previews/PreviewActionCombo.qml:34
122122msgid "Less..."
123−msgstr ""
123+msgstr "Minna..."
124124
125125#: qml/Dash/Previews/PreviewRatingInput.qml:82
126126msgid "Rate this"
@@ -136,7 +136,7 @@ msgstr "Senda"
136136
137137#: qml/Greeter/Greeter.qml:157
138138msgid "Swipe to unlock"
139−msgstr ""
139+msgstr "Strjóka til að aflæsa"
140140
141141#: qml/Hud/HudParametrizedActionsPage.qml:132
142142msgid "Confirm"
@@ -160,19 +160,19 @@ msgstr "Tala..."
160160
161161#: qml/Notifications/NotificationMenuItemFactory.qml:91
162162msgid "Show password"
163−msgstr ""
163+msgstr "Birta lykilorð"
164164
165165#: qml/Notifications/NotificationMenuItemFactory.qml:103
166166msgid "Please enter SIM PIN"
167−msgstr ""
167+msgstr "Settu inn PIN fyrir SIM"
168168
169169#: qml/Panel/Indicators/MenuItemFactory.qml:583
170170msgid "In queue…"
171−msgstr ""
171+msgstr "Í biðröð..."
172172
173173#: qml/Panel/Indicators/MenuItemFactory.qml:587
174174msgid "Downloading"
175−msgstr ""
175+msgstr "Sæki"
176176
177177#: qml/Panel/Indicators/MenuItemFactory.qml:589
178178msgid "Paused, tap to resume"
@@ -180,11 +180,11 @@ msgstr ""
180180
181181#: qml/Panel/Indicators/MenuItemFactory.qml:591
182182msgid "Canceled"
183−msgstr ""
183+msgstr "Hætt við"
184184
185185#: qml/Panel/Indicators/MenuItemFactory.qml:593
186186msgid "Finished"
187−msgstr ""
187+msgstr "Lokið"
188188
189189#: qml/Panel/Indicators/MenuItemFactory.qml:595
190190msgid "Failed, tap to retry"
@@ -197,4 +197,4 @@ msgstr "Leita"
197197#: qml/Shell.qml:359
198198#, qt-format
199199msgid "Please enter %1"
200−msgstr ""
200+msgstr "Settu inn %1"
po/km.po+14−14
@@ -8,23 +8,23 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2014-05-19 01:42+0000\n"
11+"PO-Revision-Date: 2014-07-16 01:37+0000\n"
1212"Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>\n"
1313"Language-Team: Khmer <km@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
17+"X-Launchpad-Export-Date: 2014-07-17 06:38+0000\n"
18+"X-Generator: Launchpad (build 17114)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
2222msgid "Pin shortcut"
23−msgstr ""
23+msgstr "ភ្ជាប់​ផ្លូវកាត់"
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
2626msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "មិន​ភ្ជាប់ផ្លូវកាត់"
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -82,7 +82,7 @@ msgstr "ការ​ហៅ​ពេល​អាសន្ន"
8282
8383#: qml/Components/Lockscreen.qml:231
8484msgid "OK"
85−msgstr ""
85+msgstr "យល់ព្រម"
8686
8787#: qml/Components/PageHeader.qml:366
8888msgid "Recent searches"
@@ -99,11 +99,11 @@ msgstr "សួស្តី"
9999
100100#: qml/Components/PinLockscreen.qml:198
101101msgid "CANCEL"
102−msgstr ""
102+msgstr "បោះបង់"
103103
104104#: qml/Components/PinLockscreen.qml:216
105105msgid "DONE"
106−msgstr ""
106+msgstr "រួចរាល់"
107107
108108#: qml/Components/SeeMore.qml:35
109109msgid "See more"
@@ -171,27 +171,27 @@ msgstr "បញ្ចូល​កូដ PIN របស់​ស៊ីមកាត"
171171
172172#: qml/Panel/Indicators/MenuItemFactory.qml:583
173173msgid "In queue…"
174−msgstr ""
174+msgstr "ក្នុងជួរ…"
175175
176176#: qml/Panel/Indicators/MenuItemFactory.qml:587
177177msgid "Downloading"
178−msgstr ""
178+msgstr "ទាញយក"
179179
180180#: qml/Panel/Indicators/MenuItemFactory.qml:589
181181msgid "Paused, tap to resume"
182−msgstr ""
182+msgstr "បាន​ផ្អាក, ប៉ះ ដើម្បីបន្ត"
183183
184184#: qml/Panel/Indicators/MenuItemFactory.qml:591
185185msgid "Canceled"
186−msgstr ""
186+msgstr "បាន​បោះបង់"
187187
188188#: qml/Panel/Indicators/MenuItemFactory.qml:593
189189msgid "Finished"
190−msgstr ""
190+msgstr "បាន​បញ្ចប់"
191191
192192#: qml/Panel/Indicators/MenuItemFactory.qml:595
193193msgid "Failed, tap to retry"
194−msgstr ""
194+msgstr "បាន​បរាជ័យ ប៉ះ​ ដើម្បី​ព្យាយាម​ម្ដង​ទៀត"
195195
196196#: qml/Panel/SearchIndicator.qml:27
197197msgid "Search"
po/ko.po+45−43
@@ -8,23 +8,23 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2013-10-10 07:04+0000\n"
12−"Last-Translator: Kim Boram <boramism@gmail.com>\n"
11+"PO-Revision-Date: 2014-07-17 03:56+0000\n"
12+"Last-Translator: MinSik CHO <Unknown>\n"
1313"Language-Team: Korean <ko@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
17+"X-Launchpad-Export-Date: 2014-07-18 05:28+0000\n"
18+"X-Generator: Launchpad (build 17114)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
2222msgid "Pin shortcut"
23−msgstr ""
23+msgstr "바로가기를 고정하기"
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
2626msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "바로가기를 고정 해제하기"
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -36,49 +36,51 @@ msgstr "오른쪽 끝"
3636
3737#: qml/Components/EdgeDemo.qml:114
3838msgid "Try swiping from the right edge to unlock the phone"
39−msgstr ""
39+msgstr "휴대 전화를 잠금 해제하려면 오른쪽에서부터 끌어보세요."
4040
4141#: qml/Components/EdgeDemo.qml:145
4242msgid "Top edge"
43−msgstr ""
43+msgstr "윗쪽 끝"
4444
4545#: qml/Components/EdgeDemo.qml:146
4646msgid "Try swiping from the top edge to access the indicators"
47−msgstr ""
47+msgstr "알림을 보려면 위쪽에서 끌어보세요."
4848
4949#: qml/Components/EdgeDemo.qml:171
5050msgid "Close"
51−msgstr ""
51+msgstr "닫기"
5252
5353#: qml/Components/EdgeDemo.qml:172
5454msgid "Swipe up again to close the settings screen"
55−msgstr ""
55+msgstr "환경설정 창을 닫으려면 위로 다시 끌어보세요."
5656
5757#: qml/Components/EdgeDemo.qml:199
5858msgid "Left edge"
59−msgstr ""
59+msgstr "왼쪽 끝"
6060
6161#: qml/Components/EdgeDemo.qml:200
6262msgid "Swipe from the left to reveal the launcher for quick access to apps"
63−msgstr ""
63+msgstr "애플리케이션을 빠르게 열기 위해 런처를 보려면 왼쪽에서 끌어보세요."
6464
6565#: qml/Components/EdgeDemo.qml:227
6666msgid "Well done"
67−msgstr ""
67+msgstr "잘하셨습니다."
6868
6969#: qml/Components/EdgeDemo.qml:228
7070msgid ""
7171"You have now mastered the edge gestures and can start using the "
7272"phone<br><br>Tap on the screen to start"
7373msgstr ""
74+"여러분은 끝에서 끌어오기 제스쳐를 완벽히 익히셨기 때문에 휴대 전화를 사용하기 시작할 수 있습니다. <br><br> 스크린을 터치해서 "
75+"시작하세요."
7476
7577#: qml/Components/Lockscreen.qml:214
7678msgid "Emergency Call"
77−msgstr ""
79+msgstr "긴급 통화"
7880
7981#: qml/Components/Lockscreen.qml:231
8082msgid "OK"
81−msgstr ""
83+msgstr "확인"
8284
8385#: qml/Components/PageHeader.qml:366
8486msgid "Recent searches"
@@ -87,107 +89,107 @@ msgstr "최근 검색"
8789#: qml/Components/PassphraseLockscreen.qml:60
8890#, qt-format
8991msgid "Hello %1"
90−msgstr ""
92+msgstr "안녕하세요 %1"
9193
9294#: qml/Components/PassphraseLockscreen.qml:60
9395msgid "Hello"
94−msgstr ""
96+msgstr "안녕하세요"
9597
9698#: qml/Components/PinLockscreen.qml:198
9799msgid "CANCEL"
98−msgstr ""
100+msgstr "취소"
99101
100102#: qml/Components/PinLockscreen.qml:216
101103msgid "DONE"
102−msgstr ""
104+msgstr "완료"
103105
104106#: qml/Components/SeeMore.qml:35
105107msgid "See more"
106−msgstr ""
108+msgstr "더 보기"
107109
108110#: qml/Components/SeeMore.qml:58
109111msgid "See less"
110−msgstr ""
112+msgstr "간단히 표시하기"
111113
112114#: qml/Dash/DashApps.qml:37
113115msgid "Recent"
114−msgstr ""
116+msgstr "최근"
115117
116118#: qml/Dash/Previews/PreviewActionCombo.qml:34
117119msgid "More..."
118−msgstr ""
120+msgstr "더 보기..."
119121
120122#: qml/Dash/Previews/PreviewActionCombo.qml:34
121123msgid "Less..."
122−msgstr ""
124+msgstr "간단하게..."
123125
124126#: qml/Dash/Previews/PreviewRatingInput.qml:82
125127msgid "Rate this"
126−msgstr ""
128+msgstr "이 애플리케이션 평가하기"
127129
128130#: qml/Dash/Previews/PreviewRatingInput.qml:128
129131msgid "Add a review"
130−msgstr ""
132+msgstr "평가 제출하기"
131133
132134#: qml/Dash/Previews/PreviewRatingInput.qml:168
133135msgid "Send"
134−msgstr ""
136+msgstr "보내기"
135137
136138#: qml/Greeter/Greeter.qml:157
137139msgid "Swipe to unlock"
138−msgstr ""
140+msgstr "휴대전화를 잠금 해제하려면 움직이세요."
139141
140142#: qml/Hud/HudParametrizedActionsPage.qml:132
141143msgid "Confirm"
142−msgstr ""
144+msgstr "확인"
143145
144146#: qml/Hud/Hud.qml:61 qml/Hud/Hud.qml:99 qml/Hud/Hud.qml:372
145147msgid "Type or say a command"
146−msgstr ""
148+msgstr "명령을 입력하거나 말하세요."
147149
148150#: qml/Hud/Hud.qml:84
149151msgid "Loading. Please Wait..."
150−msgstr ""
152+msgstr "준비 중.. 잠시만 기다려 주세요..."
151153
152154#: qml/Hud/Hud.qml:89
153155msgid "Speak Now..."
154−msgstr ""
156+msgstr "지금 말하세요..."
155157
156158#: qml/Hud/Hud.qml:94
157159msgid "Speaking..."
158−msgstr ""
160+msgstr "말하는 중..."
159161
160162#: qml/Notifications/NotificationMenuItemFactory.qml:91
161163msgid "Show password"
162−msgstr ""
164+msgstr "비밀 번호 보기"
163165
164166#: qml/Notifications/NotificationMenuItemFactory.qml:103
165167msgid "Please enter SIM PIN"
166−msgstr ""
168+msgstr "심카드의 PIN 번호를 입력하세요."
167169
168170#: qml/Panel/Indicators/MenuItemFactory.qml:583
169171msgid "In queue…"
170−msgstr ""
172+msgstr "재생 중..."
171173
172174#: qml/Panel/Indicators/MenuItemFactory.qml:587
173175msgid "Downloading"
174−msgstr ""
176+msgstr "다운로드 중"
175177
176178#: qml/Panel/Indicators/MenuItemFactory.qml:589
177179msgid "Paused, tap to resume"
178−msgstr ""
180+msgstr "일시 중지 되었습니다. 계속하려면 누르세요."
179181
180182#: qml/Panel/Indicators/MenuItemFactory.qml:591
181183msgid "Canceled"
182−msgstr ""
184+msgstr "취소됨"
183185
184186#: qml/Panel/Indicators/MenuItemFactory.qml:593
185187msgid "Finished"
186−msgstr ""
188+msgstr "완료됨"
187189
188190#: qml/Panel/Indicators/MenuItemFactory.qml:595
189191msgid "Failed, tap to retry"
190−msgstr ""
192+msgstr "실패하였습니다. 재시도하려면 누르세요."
191193
192194#: qml/Panel/SearchIndicator.qml:27
193195msgid "Search"
@@ -196,4 +198,4 @@ msgstr "검색"
196198#: qml/Shell.qml:359
197199#, qt-format
198200msgid "Please enter %1"
199−msgstr ""
201+msgstr "%1 를 입력해주세요."
po/lv.po+6−6
@@ -8,14 +8,14 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2014-05-31 14:54+0000\n"
11+"PO-Revision-Date: 2014-07-15 12:13+0000\n"
1212"Last-Translator: Jānis-Marks Gailis <jm-gailis@fai-vianet.fr>\n"
1313"Language-Team: Latvian <lv@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
17+"X-Launchpad-Export-Date: 2014-07-16 07:27+0000\n"
18+"X-Generator: Launchpad (build 17112)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -78,7 +78,7 @@ msgstr "Neatliekamās Palīdzības zvans"
7878
7979#: qml/Components/Lockscreen.qml:231
8080msgid "OK"
81−msgstr ""
81+msgstr "LABI"
8282
8383#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
@@ -95,11 +95,11 @@ msgstr "Sveiki"
9595
9696#: qml/Components/PinLockscreen.qml:198
9797msgid "CANCEL"
98−msgstr ""
98+msgstr "ATCELT"
9999
100100#: qml/Components/PinLockscreen.qml:216
101101msgid "DONE"
102−msgstr ""
102+msgstr "IZDARĪTS"
103103
104104#: qml/Components/SeeMore.qml:35
105105msgid "See more"
po/nb.po+11−11
@@ -8,23 +8,23 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2014-06-11 06:36+0000\n"
11+"PO-Revision-Date: 2014-07-11 07:01+0000\n"
1212"Last-Translator: Åka Sikrom <Unknown>\n"
1313"Language-Team: Norwegian Bokmal <nb@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
17+"X-Launchpad-Export-Date: 2014-07-12 06:58+0000\n"
18+"X-Generator: Launchpad (build 17111)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
2222msgid "Pin shortcut"
23−msgstr ""
23+msgstr "Fest snarvei"
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
2626msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "Fjern snarvei"
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -169,27 +169,27 @@ msgstr "Skriv inn PIN-koden til SIM-kortet"
169169
170170#: qml/Panel/Indicators/MenuItemFactory.qml:583
171171msgid "In queue…"
172−msgstr ""
172+msgstr "I kø …"
173173
174174#: qml/Panel/Indicators/MenuItemFactory.qml:587
175175msgid "Downloading"
176−msgstr ""
176+msgstr "Laster ned"
177177
178178#: qml/Panel/Indicators/MenuItemFactory.qml:589
179179msgid "Paused, tap to resume"
180−msgstr ""
180+msgstr "Satt på pause (trykk for å fortsette)"
181181
182182#: qml/Panel/Indicators/MenuItemFactory.qml:591
183183msgid "Canceled"
184−msgstr ""
184+msgstr "Avbrutt"
185185
186186#: qml/Panel/Indicators/MenuItemFactory.qml:593
187187msgid "Finished"
188−msgstr ""
188+msgstr "Ferdig"
189189
190190#: qml/Panel/Indicators/MenuItemFactory.qml:595
191191msgid "Failed, tap to retry"
192−msgstr ""
192+msgstr "Feilet. Trykk for å prøve på nytt"
193193
194194#: qml/Panel/SearchIndicator.qml:27
195195msgid "Search"
po/nl.po+25−23
@@ -8,23 +8,23 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2014-01-15 16:42+0000\n"
11+"PO-Revision-Date: 2014-07-20 17:25+0000\n"
1212"Last-Translator: Hannie Dumoleyn <Unknown>\n"
1313"Language-Team: Dutch <nl@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
17+"X-Launchpad-Export-Date: 2014-07-21 07:05+0000\n"
18+"X-Generator: Launchpad (build 17114)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
2222msgid "Pin shortcut"
23−msgstr ""
23+msgstr "Snelkoppeling vastzetten"
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
2626msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "Snelkoppeling losmaken"
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -36,7 +36,7 @@ msgstr "Rechterrand"
3636
3737#: qml/Components/EdgeDemo.qml:114
3838msgid "Try swiping from the right edge to unlock the phone"
39−msgstr ""
39+msgstr "Veeg vanuit de rechterrand om het scherm te ontgrendelen"
4040
4141#: qml/Components/EdgeDemo.qml:145
4242msgid "Top edge"
@@ -44,7 +44,7 @@ msgstr "Bovenrand"
4444
4545#: qml/Components/EdgeDemo.qml:146
4646msgid "Try swiping from the top edge to access the indicators"
47−msgstr ""
47+msgstr "Veeg vanuit de bovenrand om de indicatoren te bekijken"
4848
4949#: qml/Components/EdgeDemo.qml:171
5050msgid "Close"
@@ -71,6 +71,8 @@ msgid ""
7171"You have now mastered the edge gestures and can start using the "
7272"phone<br><br>Tap on the screen to start"
7373msgstr ""
74+"Nu u de bewegingen vanuit de randen onder de knie heeft, kunt u beginnen met "
75+"het gebruiken van de telefoon<br><br>Tik op het scherm om te beginnen"
7476
7577#: qml/Components/Lockscreen.qml:214
7678msgid "Emergency Call"
@@ -78,7 +80,7 @@ msgstr "Noodoproep"
7880
7981#: qml/Components/Lockscreen.qml:231
8082msgid "OK"
81−msgstr ""
83+msgstr "Ok"
8284
8385#: qml/Components/PageHeader.qml:366
8486msgid "Recent searches"
@@ -95,31 +97,31 @@ msgstr "Hallo"
9597
9698#: qml/Components/PinLockscreen.qml:198
9799msgid "CANCEL"
98−msgstr ""
100+msgstr "ANNULEREN"
99101
100102#: qml/Components/PinLockscreen.qml:216
101103msgid "DONE"
102−msgstr ""
104+msgstr "KLAAR"
103105
104106#: qml/Components/SeeMore.qml:35
105107msgid "See more"
106−msgstr ""
108+msgstr "Meer zien"
107109
108110#: qml/Components/SeeMore.qml:58
109111msgid "See less"
110−msgstr ""
112+msgstr "Minder zien"
111113
112114#: qml/Dash/DashApps.qml:37
113115msgid "Recent"
114−msgstr ""
116+msgstr "Recent"
115117
116118#: qml/Dash/Previews/PreviewActionCombo.qml:34
117119msgid "More..."
118−msgstr ""
120+msgstr "Meer…"
119121
120122#: qml/Dash/Previews/PreviewActionCombo.qml:34
121123msgid "Less..."
122−msgstr ""
124+msgstr "Minder…"
123125
124126#: qml/Dash/Previews/PreviewRatingInput.qml:82
125127msgid "Rate this"
@@ -135,7 +137,7 @@ msgstr "Versturen"
135137
136138#: qml/Greeter/Greeter.qml:157
137139msgid "Swipe to unlock"
138−msgstr ""
140+msgstr "Veeg om te ontgrendelen"
139141
140142#: qml/Hud/HudParametrizedActionsPage.qml:132
141143msgid "Confirm"
@@ -163,31 +165,31 @@ msgstr "Wachtwoord tonen"
163165
164166#: qml/Notifications/NotificationMenuItemFactory.qml:103
165167msgid "Please enter SIM PIN"
166−msgstr ""
168+msgstr "Voer SIM-pincode in"
167169
168170#: qml/Panel/Indicators/MenuItemFactory.qml:583
169171msgid "In queue…"
170−msgstr ""
172+msgstr "In wachtrij…"
171173
172174#: qml/Panel/Indicators/MenuItemFactory.qml:587
173175msgid "Downloading"
174−msgstr ""
176+msgstr "Aan het downloaden"
175177
176178#: qml/Panel/Indicators/MenuItemFactory.qml:589
177179msgid "Paused, tap to resume"
178−msgstr ""
180+msgstr "Gepauzeerd, tik om te hervatten"
179181
180182#: qml/Panel/Indicators/MenuItemFactory.qml:591
181183msgid "Canceled"
182−msgstr ""
184+msgstr "Geannuleerd"
183185
184186#: qml/Panel/Indicators/MenuItemFactory.qml:593
185187msgid "Finished"
186−msgstr ""
188+msgstr "Klaar"
187189
188190#: qml/Panel/Indicators/MenuItemFactory.qml:595
189191msgid "Failed, tap to retry"
190−msgstr ""
192+msgstr "Mislukt, tik om het opnieuw te proberen"
191193
192194#: qml/Panel/SearchIndicator.qml:27
193195msgid "Search"
po/pl.po+14−14
@@ -8,23 +8,23 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2014-05-27 15:20+0000\n"
11+"PO-Revision-Date: 2014-07-19 14:10+0000\n"
1212"Last-Translator: GTriderXC <gtriderxc@yahoo.com>\n"
1313"Language-Team: Polish <pl@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
17+"X-Launchpad-Export-Date: 2014-07-20 06:18+0000\n"
18+"X-Generator: Launchpad (build 17114)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
2222msgid "Pin shortcut"
23−msgstr ""
23+msgstr "Przypnij skrót"
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
2626msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "Odepnij skrót"
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -82,7 +82,7 @@ msgstr "Telefon ratunkowy"
8282
8383#: qml/Components/Lockscreen.qml:231
8484msgid "OK"
85−msgstr ""
85+msgstr "OK"
8686
8787#: qml/Components/PageHeader.qml:366
8888msgid "Recent searches"
@@ -99,11 +99,11 @@ msgstr "Witaj"
9999
100100#: qml/Components/PinLockscreen.qml:198
101101msgid "CANCEL"
102−msgstr ""
102+msgstr "ANULUJ"
103103
104104#: qml/Components/PinLockscreen.qml:216
105105msgid "DONE"
106−msgstr ""
106+msgstr "ZROBIONE"
107107
108108#: qml/Components/SeeMore.qml:35
109109msgid "See more"
@@ -171,27 +171,27 @@ msgstr "Wprowadź kod PIN karty SIM"
171171
172172#: qml/Panel/Indicators/MenuItemFactory.qml:583
173173msgid "In queue…"
174−msgstr ""
174+msgstr "W kolejce..."
175175
176176#: qml/Panel/Indicators/MenuItemFactory.qml:587
177177msgid "Downloading"
178−msgstr ""
178+msgstr "Pobieranie"
179179
180180#: qml/Panel/Indicators/MenuItemFactory.qml:589
181181msgid "Paused, tap to resume"
182−msgstr ""
182+msgstr "Wstrzymano, kliknij by wznowić"
183183
184184#: qml/Panel/Indicators/MenuItemFactory.qml:591
185185msgid "Canceled"
186−msgstr ""
186+msgstr "Anulowano"
187187
188188#: qml/Panel/Indicators/MenuItemFactory.qml:593
189189msgid "Finished"
190−msgstr ""
190+msgstr "Zakończono"
191191
192192#: qml/Panel/Indicators/MenuItemFactory.qml:595
193193msgid "Failed, tap to retry"
194−msgstr ""
194+msgstr "Błąd, kliknij aby powtórzyć"
195195
196196#: qml/Panel/SearchIndicator.qml:27
197197msgid "Search"
po/pt.po+49−46
@@ -8,192 +8,195 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2014-01-14 19:18+0000\n"
12−"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
11+"PO-Revision-Date: 2014-07-18 22:56+0000\n"
12+"Last-Translator: Hugo Cardoso <hugocardoso94@gmail.com>\n"
1313"Language-Team: Portuguese <pt@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
17+"X-Launchpad-Export-Date: 2014-07-19 06:19+0000\n"
18+"X-Generator: Launchpad (build 17114)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
2222msgid "Pin shortcut"
23−msgstr ""
23+msgstr "Afixar atalho"
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
2626msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "Remover atalho"
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
31−msgstr ""
31+msgstr "Saltar introdução"
3232
3333#: qml/Components/EdgeDemo.qml:113
3434msgid "Right edge"
35−msgstr ""
35+msgstr "Limite direito"
3636
3737#: qml/Components/EdgeDemo.qml:114
3838msgid "Try swiping from the right edge to unlock the phone"
39−msgstr ""
39+msgstr "Tente deslizar do limite direito para desbloquear o telefone"
4040
4141#: qml/Components/EdgeDemo.qml:145
4242msgid "Top edge"
43−msgstr ""
43+msgstr "Limite superior"
4444
4545#: qml/Components/EdgeDemo.qml:146
4646msgid "Try swiping from the top edge to access the indicators"
47−msgstr ""
47+msgstr "Tente deslizar do topo para aceder aos indicadores"
4848
4949#: qml/Components/EdgeDemo.qml:171
5050msgid "Close"
51−msgstr ""
51+msgstr "Fechar"
5252
5353#: qml/Components/EdgeDemo.qml:172
5454msgid "Swipe up again to close the settings screen"
55−msgstr ""
55+msgstr "Deslize de novo para cima para fechar o ecrã de definições"
5656
5757#: qml/Components/EdgeDemo.qml:199
5858msgid "Left edge"
59−msgstr ""
59+msgstr "Limite esquerdo"
6060
6161#: qml/Components/EdgeDemo.qml:200
6262msgid "Swipe from the left to reveal the launcher for quick access to apps"
6363msgstr ""
64+"Deslize da esquerda para mostrar o lançador para acesso rápido às aplicações"
6465
6566#: qml/Components/EdgeDemo.qml:227
6667msgid "Well done"
67−msgstr ""
68+msgstr "Muito bem"
6869
6970#: qml/Components/EdgeDemo.qml:228
7071msgid ""
7172"You have now mastered the edge gestures and can start using the "
7273"phone<br><br>Tap on the screen to start"
7374msgstr ""
75+"Já domina os gestos dos limites e pode começar a usar o "
76+"telefone<br><br>Toque no ecrã para começar"
7477
7578#: qml/Components/Lockscreen.qml:214
7679msgid "Emergency Call"
77−msgstr ""
80+msgstr "Chamada de emergência"
7881
7982#: qml/Components/Lockscreen.qml:231
8083msgid "OK"
81−msgstr ""
84+msgstr "OK"
8285
8386#: qml/Components/PageHeader.qml:366
8487msgid "Recent searches"
85−msgstr ""
88+msgstr "Pesquisas recentes"
8689
8790#: qml/Components/PassphraseLockscreen.qml:60
8891#, qt-format
8992msgid "Hello %1"
90−msgstr ""
93+msgstr "Olá %1"
9194
9295#: qml/Components/PassphraseLockscreen.qml:60
9396msgid "Hello"
94−msgstr ""
97+msgstr "Olá"
9598
9699#: qml/Components/PinLockscreen.qml:198
97100msgid "CANCEL"
98−msgstr ""
101+msgstr "CANCELAR"
99102
100103#: qml/Components/PinLockscreen.qml:216
101104msgid "DONE"
102−msgstr ""
105+msgstr "FEITO"
103106
104107#: qml/Components/SeeMore.qml:35
105108msgid "See more"
106−msgstr ""
109+msgstr "Ver mais"
107110
108111#: qml/Components/SeeMore.qml:58
109112msgid "See less"
110−msgstr ""
113+msgstr "Ver menos"
111114
112115#: qml/Dash/DashApps.qml:37
113116msgid "Recent"
114−msgstr ""
117+msgstr "Recentes"
115118
116119#: qml/Dash/Previews/PreviewActionCombo.qml:34
117120msgid "More..."
118−msgstr ""
121+msgstr "Mais..."
119122
120123#: qml/Dash/Previews/PreviewActionCombo.qml:34
121124msgid "Less..."
122−msgstr ""
125+msgstr "Menos..."
123126
124127#: qml/Dash/Previews/PreviewRatingInput.qml:82
125128msgid "Rate this"
126−msgstr ""
129+msgstr "Classifique isto"
127130
128131#: qml/Dash/Previews/PreviewRatingInput.qml:128
129132msgid "Add a review"
130−msgstr ""
133+msgstr "Adicione uma crítica"
131134
132135#: qml/Dash/Previews/PreviewRatingInput.qml:168
133136msgid "Send"
134−msgstr ""
137+msgstr "Enviar"
135138
136139#: qml/Greeter/Greeter.qml:157
137140msgid "Swipe to unlock"
138−msgstr ""
141+msgstr "Deslize para desbloquear"
139142
140143#: qml/Hud/HudParametrizedActionsPage.qml:132
141144msgid "Confirm"
142−msgstr ""
145+msgstr "Confirmar"
143146
144147#: qml/Hud/Hud.qml:61 qml/Hud/Hud.qml:99 qml/Hud/Hud.qml:372
145148msgid "Type or say a command"
146−msgstr ""
149+msgstr "Digite ou diga um comando"
147150
148151#: qml/Hud/Hud.qml:84
149152msgid "Loading. Please Wait..."
150−msgstr ""
153+msgstr "A carregar. Aguarde por favor..."
151154
152155#: qml/Hud/Hud.qml:89
153156msgid "Speak Now..."
154−msgstr ""
157+msgstr "Fale agora..."
155158
156159#: qml/Hud/Hud.qml:94
157160msgid "Speaking..."
158−msgstr ""
161+msgstr "A falar..."
159162
160163#: qml/Notifications/NotificationMenuItemFactory.qml:91
161164msgid "Show password"
162−msgstr ""
165+msgstr "Mostrar palavra-passe"
163166
164167#: qml/Notifications/NotificationMenuItemFactory.qml:103
165168msgid "Please enter SIM PIN"
166−msgstr ""
169+msgstr "Por favor insira o PIN"
167170
168171#: qml/Panel/Indicators/MenuItemFactory.qml:583
169172msgid "In queue…"
170−msgstr ""
173+msgstr "Em fila..."
171174
172175#: qml/Panel/Indicators/MenuItemFactory.qml:587
173176msgid "Downloading"
174−msgstr ""
177+msgstr "A transferir"
175178
176179#: qml/Panel/Indicators/MenuItemFactory.qml:589
177180msgid "Paused, tap to resume"
178−msgstr ""
181+msgstr "Parado, toque para continuar"
179182
180183#: qml/Panel/Indicators/MenuItemFactory.qml:591
181184msgid "Canceled"
182−msgstr ""
185+msgstr "Cancelado"
183186
184187#: qml/Panel/Indicators/MenuItemFactory.qml:593
185188msgid "Finished"
186−msgstr ""
189+msgstr "Concluído"
187190
188191#: qml/Panel/Indicators/MenuItemFactory.qml:595
189192msgid "Failed, tap to retry"
190−msgstr ""
193+msgstr "Falhou, toque para repetir"
191194
192195#: qml/Panel/SearchIndicator.qml:27
193196msgid "Search"
194−msgstr ""
197+msgstr "Procurar"
195198
196199#: qml/Shell.qml:359
197200#, qt-format
198201msgid "Please enter %1"
199−msgstr ""
202+msgstr "Por favor, introduza %1"
po/pt_BR.po+8−8
@@ -8,14 +8,14 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2014-05-15 14:31+0000\n"
12−"Last-Translator: Rafael Neri <Unknown>\n"
11+"PO-Revision-Date: 2014-07-17 05:46+0000\n"
12+"Last-Translator: Tiago Hillebrandt <tiagohillebrandt@gmail.com>\n"
1313"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
17+"X-Launchpad-Export-Date: 2014-07-18 05:28+0000\n"
18+"X-Generator: Launchpad (build 17114)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -82,7 +82,7 @@ msgstr "Chamada de emergência"
8282
8383#: qml/Components/Lockscreen.qml:231
8484msgid "OK"
85−msgstr ""
85+msgstr "OK"
8686
8787#: qml/Components/PageHeader.qml:366
8888msgid "Recent searches"
@@ -99,7 +99,7 @@ msgstr "Olá"
9999
100100#: qml/Components/PinLockscreen.qml:198
101101msgid "CANCEL"
102−msgstr ""
102+msgstr "CANCELAR"
103103
104104#: qml/Components/PinLockscreen.qml:216
105105msgid "DONE"
@@ -175,7 +175,7 @@ msgstr ""
175175
176176#: qml/Panel/Indicators/MenuItemFactory.qml:587
177177msgid "Downloading"
178−msgstr ""
178+msgstr "Baixando"
179179
180180#: qml/Panel/Indicators/MenuItemFactory.qml:589
181181msgid "Paused, tap to resume"
@@ -183,7 +183,7 @@ msgstr ""
183183
184184#: qml/Panel/Indicators/MenuItemFactory.qml:591
185185msgid "Canceled"
186−msgstr ""
186+msgstr "Cancelado"
187187
188188#: qml/Panel/Indicators/MenuItemFactory.qml:593
189189msgid "Finished"
po/sv.po+34−32
@@ -8,27 +8,27 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2014-06-07 19:14+0000\n"
12−"Last-Translator: mikasjoman <Unknown>\n"
11+"PO-Revision-Date: 2014-07-20 19:14+0000\n"
12+"Last-Translator: Gunnar Hjalmarsson <Unknown>\n"
1313"Language-Team: Swedish <sv@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
17+"X-Launchpad-Export-Date: 2014-07-21 07:05+0000\n"
18+"X-Generator: Launchpad (build 17114)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
2222msgid "Pin shortcut"
23−msgstr ""
23+msgstr "Fäst genväg"
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
2626msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "Släpp genväg"
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
31−msgstr ""
31+msgstr "Skippa intro"
3232
3333#: qml/Components/EdgeDemo.qml:113
3434msgid "Right edge"
@@ -44,7 +44,7 @@ msgstr "Överkant"
4444
4545#: qml/Components/EdgeDemo.qml:146
4646msgid "Try swiping from the top edge to access the indicators"
47−msgstr ""
47+msgstr "Svep från överkanten för att komma åt indikatorerna"
4848
4949#: qml/Components/EdgeDemo.qml:171
5050msgid "Close"
@@ -52,7 +52,7 @@ msgstr "Stäng"
5252
5353#: qml/Components/EdgeDemo.qml:172
5454msgid "Swipe up again to close the settings screen"
55−msgstr ""
55+msgstr "Svep upp igen för att stänga inställningsfönstret"
5656
5757#: qml/Components/EdgeDemo.qml:199
5858msgid "Left edge"
@@ -60,17 +60,19 @@ msgstr "Vänsterkant"
6060
6161#: qml/Components/EdgeDemo.qml:200
6262msgid "Swipe from the left to reveal the launcher for quick access to apps"
63−msgstr ""
63+msgstr "Svep från vänster för att visa programstartaren"
6464
6565#: qml/Components/EdgeDemo.qml:227
6666msgid "Well done"
67−msgstr ""
67+msgstr "Bra gjort"
6868
6969#: qml/Components/EdgeDemo.qml:228
7070msgid ""
7171"You have now mastered the edge gestures and can start using the "
7272"phone<br><br>Tap on the screen to start"
7373msgstr ""
74+"Du har nu bemästrat kantgesterna och kan börja använda telefonen<br><br>Peka "
75+"på skärmen för att starta"
7476
7577#: qml/Components/Lockscreen.qml:214
7678msgid "Emergency Call"
@@ -78,52 +80,52 @@ msgstr "Nödsamtal"
7880
7981#: qml/Components/Lockscreen.qml:231
8082msgid "OK"
81−msgstr ""
83+msgstr "Ok"
8284
8385#: qml/Components/PageHeader.qml:366
8486msgid "Recent searches"
85−msgstr ""
87+msgstr "Senaste sökningar"
8688
8789#: qml/Components/PassphraseLockscreen.qml:60
8890#, qt-format
8991msgid "Hello %1"
90−msgstr ""
92+msgstr "Hej %1"
9193
9294#: qml/Components/PassphraseLockscreen.qml:60
9395msgid "Hello"
94−msgstr ""
96+msgstr "Hej"
9597
9698#: qml/Components/PinLockscreen.qml:198
9799msgid "CANCEL"
98−msgstr ""
100+msgstr "AVBRYT"
99101
100102#: qml/Components/PinLockscreen.qml:216
101103msgid "DONE"
102−msgstr ""
104+msgstr "KLAR"
103105
104106#: qml/Components/SeeMore.qml:35
105107msgid "See more"
106−msgstr ""
108+msgstr "Se mer"
107109
108110#: qml/Components/SeeMore.qml:58
109111msgid "See less"
110−msgstr ""
112+msgstr "Se mindre"
111113
112114#: qml/Dash/DashApps.qml:37
113115msgid "Recent"
114−msgstr ""
116+msgstr "Senaste"
115117
116118#: qml/Dash/Previews/PreviewActionCombo.qml:34
117119msgid "More..."
118−msgstr ""
120+msgstr "Mer..."
119121
120122#: qml/Dash/Previews/PreviewActionCombo.qml:34
121123msgid "Less..."
122−msgstr ""
124+msgstr "Mindre..."
123125
124126#: qml/Dash/Previews/PreviewRatingInput.qml:82
125127msgid "Rate this"
126−msgstr ""
128+msgstr "Betygsätt detta"
127129
128130#: qml/Dash/Previews/PreviewRatingInput.qml:128
129131msgid "Add a review"
@@ -131,11 +133,11 @@ msgstr "Lägg till en recension"
131133
132134#: qml/Dash/Previews/PreviewRatingInput.qml:168
133135msgid "Send"
134−msgstr ""
136+msgstr "Skicka"
135137
136138#: qml/Greeter/Greeter.qml:157
137139msgid "Swipe to unlock"
138−msgstr ""
140+msgstr "Svep för att låsa upp"
139141
140142#: qml/Hud/HudParametrizedActionsPage.qml:132
141143msgid "Confirm"
@@ -163,31 +165,31 @@ msgstr "Visa lösenord"
163165
164166#: qml/Notifications/NotificationMenuItemFactory.qml:103
165167msgid "Please enter SIM PIN"
166−msgstr ""
168+msgstr "Ange SIM PIN-kod"
167169
168170#: qml/Panel/Indicators/MenuItemFactory.qml:583
169171msgid "In queue…"
170−msgstr ""
172+msgstr "I kö..."
171173
172174#: qml/Panel/Indicators/MenuItemFactory.qml:587
173175msgid "Downloading"
174−msgstr ""
176+msgstr "Hämtar"
175177
176178#: qml/Panel/Indicators/MenuItemFactory.qml:589
177179msgid "Paused, tap to resume"
178−msgstr ""
180+msgstr "Pausad, peka för att fortsätta"
179181
180182#: qml/Panel/Indicators/MenuItemFactory.qml:591
181183msgid "Canceled"
182−msgstr ""
184+msgstr "Avbröt"
183185
184186#: qml/Panel/Indicators/MenuItemFactory.qml:593
185187msgid "Finished"
186−msgstr ""
188+msgstr "Klart"
187189
188190#: qml/Panel/Indicators/MenuItemFactory.qml:595
189191msgid "Failed, tap to retry"
190−msgstr ""
192+msgstr "Misslyckades, peka för att försöka igen"
191193
192194#: qml/Panel/SearchIndicator.qml:27
193195msgid "Search"
po/te.po+36−36
@@ -8,14 +8,14 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2013-06-27 09:57+0000\n"
12−"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
11+"PO-Revision-Date: 2014-07-19 10:04+0000\n"
12+"Last-Translator: Praveen Illa <mail2ipn@gmail.com>\n"
1313"Language-Team: Telugu <te@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
17+"X-Launchpad-Export-Date: 2014-07-20 06:18+0000\n"
18+"X-Generator: Launchpad (build 17114)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -28,19 +28,19 @@ msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
31−msgstr ""
31+msgstr "పరిచయాన్ని దాటవేయి"
3232
3333#: qml/Components/EdgeDemo.qml:113
3434msgid "Right edge"
35−msgstr ""
35+msgstr "కుడి అంచు"
3636
3737#: qml/Components/EdgeDemo.qml:114
3838msgid "Try swiping from the right edge to unlock the phone"
39−msgstr ""
39+msgstr "ఫోను తాళంతీయుటకు కుడి అంచు నుండి స్వైప్ చేయ ప్రయత్నించండి"
4040
4141#: qml/Components/EdgeDemo.qml:145
4242msgid "Top edge"
43−msgstr ""
43+msgstr "పై అంచు"
4444
4545#: qml/Components/EdgeDemo.qml:146
4646msgid "Try swiping from the top edge to access the indicators"
@@ -48,15 +48,15 @@ msgstr ""
4848
4949#: qml/Components/EdgeDemo.qml:171
5050msgid "Close"
51−msgstr ""
51+msgstr "మూసివేయి"
5252
5353#: qml/Components/EdgeDemo.qml:172
5454msgid "Swipe up again to close the settings screen"
55−msgstr ""
55+msgstr "అమరికల తెరను మూసివేయుటకు మరలా పైకి స్వైప్ చేయండి"
5656
5757#: qml/Components/EdgeDemo.qml:199
5858msgid "Left edge"
59−msgstr ""
59+msgstr "ఎడమ అంచు"
6060
6161#: qml/Components/EdgeDemo.qml:200
6262msgid "Swipe from the left to reveal the launcher for quick access to apps"
@@ -64,7 +64,7 @@ msgstr ""
6464
6565#: qml/Components/EdgeDemo.qml:227
6666msgid "Well done"
67−msgstr ""
67+msgstr "బాగా చేశారు"
6868
6969#: qml/Components/EdgeDemo.qml:228
7070msgid ""
@@ -74,36 +74,36 @@ msgstr ""
7474
7575#: qml/Components/Lockscreen.qml:214
7676msgid "Emergency Call"
77−msgstr ""
77+msgstr "అత్యవసర పిలుపు"
7878
7979#: qml/Components/Lockscreen.qml:231
8080msgid "OK"
81−msgstr ""
81+msgstr "సరే"
8282
8383#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
85−msgstr ""
85+msgstr "ఇటీవలి వెతుకులాటలు"
8686
8787#: qml/Components/PassphraseLockscreen.qml:60
8888#, qt-format
8989msgid "Hello %1"
90−msgstr ""
90+msgstr "హలో %1"
9191
9292#: qml/Components/PassphraseLockscreen.qml:60
9393msgid "Hello"
94−msgstr ""
94+msgstr "హలో"
9595
9696#: qml/Components/PinLockscreen.qml:198
9797msgid "CANCEL"
98−msgstr ""
98+msgstr "రద్దుచేయి"
9999
100100#: qml/Components/PinLockscreen.qml:216
101101msgid "DONE"
102−msgstr ""
102+msgstr "పూర్తయ్యింది"
103103
104104#: qml/Components/SeeMore.qml:35
105105msgid "See more"
106−msgstr ""
106+msgstr "మరింత చూడండి"
107107
108108#: qml/Components/SeeMore.qml:58
109109msgid "See less"
@@ -111,11 +111,11 @@ msgstr ""
111111
112112#: qml/Dash/DashApps.qml:37
113113msgid "Recent"
114−msgstr ""
114+msgstr "ఇటీవలివి"
115115
116116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117117msgid "More..."
118−msgstr ""
118+msgstr "మరిన్ని..."
119119
120120#: qml/Dash/Previews/PreviewActionCombo.qml:34
121121msgid "Less..."
@@ -127,19 +127,19 @@ msgstr ""
127127
128128#: qml/Dash/Previews/PreviewRatingInput.qml:128
129129msgid "Add a review"
130−msgstr ""
130+msgstr "ఒక సమీక్షను వ్రాయండి"
131131
132132#: qml/Dash/Previews/PreviewRatingInput.qml:168
133133msgid "Send"
134−msgstr ""
134+msgstr "పంపు"
135135
136136#: qml/Greeter/Greeter.qml:157
137137msgid "Swipe to unlock"
138−msgstr ""
138+msgstr "తాళంతీయుటకు గీకండి"
139139
140140#: qml/Hud/HudParametrizedActionsPage.qml:132
141141msgid "Confirm"
142−msgstr ""
142+msgstr "నిర్ధారించండి"
143143
144144#: qml/Hud/Hud.qml:61 qml/Hud/Hud.qml:99 qml/Hud/Hud.qml:372
145145msgid "Type or say a command"
@@ -147,23 +147,23 @@ msgstr ""
147147
148148#: qml/Hud/Hud.qml:84
149149msgid "Loading. Please Wait..."
150−msgstr ""
150+msgstr "లోడవుతోంది. దయచేసి వేచివుండండి..."
151151
152152#: qml/Hud/Hud.qml:89
153153msgid "Speak Now..."
154−msgstr ""
154+msgstr "ఇప్పుడు మాట్లాడండి..."
155155
156156#: qml/Hud/Hud.qml:94
157157msgid "Speaking..."
158−msgstr ""
158+msgstr "మాట్లాడుతున్నారు..."
159159
160160#: qml/Notifications/NotificationMenuItemFactory.qml:91
161161msgid "Show password"
162−msgstr ""
162+msgstr "సంకేతపదాన్ని చూపించు"
163163
164164#: qml/Notifications/NotificationMenuItemFactory.qml:103
165165msgid "Please enter SIM PIN"
166−msgstr ""
166+msgstr "దయచేసి సిమ్ పిన్ ఇవ్వండి"
167167
168168#: qml/Panel/Indicators/MenuItemFactory.qml:583
169169msgid "In queue…"
@@ -171,7 +171,7 @@ msgstr ""
171171
172172#: qml/Panel/Indicators/MenuItemFactory.qml:587
173173msgid "Downloading"
174−msgstr ""
174+msgstr "దింపుకుంటున్నది"
175175
176176#: qml/Panel/Indicators/MenuItemFactory.qml:589
177177msgid "Paused, tap to resume"
@@ -179,11 +179,11 @@ msgstr ""
179179
180180#: qml/Panel/Indicators/MenuItemFactory.qml:591
181181msgid "Canceled"
182−msgstr ""
182+msgstr "రద్దుచేయబడింది"
183183
184184#: qml/Panel/Indicators/MenuItemFactory.qml:593
185185msgid "Finished"
186−msgstr ""
186+msgstr "పూర్తయింది"
187187
188188#: qml/Panel/Indicators/MenuItemFactory.qml:595
189189msgid "Failed, tap to retry"
@@ -191,9 +191,9 @@ msgstr ""
191191
192192#: qml/Panel/SearchIndicator.qml:27
193193msgid "Search"
194−msgstr ""
194+msgstr "వెతుకు"
195195
196196#: qml/Shell.qml:359
197197#, qt-format
198198msgid "Please enter %1"
199−msgstr ""
199+msgstr "దయచేసి %1 ప్రవేశపెట్టండి"
po/tr.po+14−14
@@ -8,23 +8,23 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2014-05-19 12:52+0000\n"
11+"PO-Revision-Date: 2014-07-16 17:58+0000\n"
1212"Last-Translator: Volkan Gezer <Unknown>\n"
1313"Language-Team: Turkish <tr@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
17+"X-Launchpad-Export-Date: 2014-07-17 06:38+0000\n"
18+"X-Generator: Launchpad (build 17114)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
2222msgid "Pin shortcut"
23−msgstr ""
23+msgstr "Kısayolu iğnele"
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
2626msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "Kısayol iğnesini kaldır"
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -81,7 +81,7 @@ msgstr "Acil Arama"
8181
8282#: qml/Components/Lockscreen.qml:231
8383msgid "OK"
84−msgstr ""
84+msgstr "Tamam"
8585
8686#: qml/Components/PageHeader.qml:366
8787msgid "Recent searches"
@@ -98,11 +98,11 @@ msgstr "Merhaba"
9898
9999#: qml/Components/PinLockscreen.qml:198
100100msgid "CANCEL"
101−msgstr ""
101+msgstr "İPTAL"
102102
103103#: qml/Components/PinLockscreen.qml:216
104104msgid "DONE"
105−msgstr ""
105+msgstr "BİTTİ"
106106
107107#: qml/Components/SeeMore.qml:35
108108msgid "See more"
@@ -170,27 +170,27 @@ msgstr "Lütfen SIM PIN'inizi girin"
170170
171171#: qml/Panel/Indicators/MenuItemFactory.qml:583
172172msgid "In queue…"
173−msgstr ""
173+msgstr "Beklemede..."
174174
175175#: qml/Panel/Indicators/MenuItemFactory.qml:587
176176msgid "Downloading"
177−msgstr ""
177+msgstr "İndiriliyor"
178178
179179#: qml/Panel/Indicators/MenuItemFactory.qml:589
180180msgid "Paused, tap to resume"
181−msgstr ""
181+msgstr "Duraklatıldı, devam etmek için dokunun"
182182
183183#: qml/Panel/Indicators/MenuItemFactory.qml:591
184184msgid "Canceled"
185−msgstr ""
185+msgstr "İptal edildi"
186186
187187#: qml/Panel/Indicators/MenuItemFactory.qml:593
188188msgid "Finished"
189−msgstr ""
189+msgstr "Bitti"
190190
191191#: qml/Panel/Indicators/MenuItemFactory.qml:595
192192msgid "Failed, tap to retry"
193−msgstr ""
193+msgstr "Başarısız, yeniden denemek için dokunun"
194194
195195#: qml/Panel/SearchIndicator.qml:27
196196msgid "Search"
po/ug.po+5−5
@@ -8,14 +8,14 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2014-07-09 23:27+0000\n"
11+"PO-Revision-Date: 2014-07-21 02:30+0000\n"
1212"Last-Translator: Gheyret T.Kenji <Unknown>\n"
1313"Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-10 07:29+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
17+"X-Launchpad-Export-Date: 2014-07-21 07:05+0000\n"
18+"X-Generator: Launchpad (build 17114)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -169,7 +169,7 @@ msgstr "سىم(SIM) كارتىڭىزنىڭ PIN نومۇرىنى كىرگۈزۈڭ
169169
170170#: qml/Panel/Indicators/MenuItemFactory.qml:583
171171msgid "In queue…"
172−msgstr ""
172+msgstr "قاتاردا…"
173173
174174#: qml/Panel/Indicators/MenuItemFactory.qml:587
175175msgid "Downloading"
@@ -177,7 +177,7 @@ msgstr "چۈشۈرۈۋاتىدۇ"
177177
178178#: qml/Panel/Indicators/MenuItemFactory.qml:589
179179msgid "Paused, tap to resume"
180−msgstr ""
180+msgstr "توختىتىلغان، چەكسە داۋاملىشىدۇ"
181181
182182#: qml/Panel/Indicators/MenuItemFactory.qml:591
183183msgid "Canceled"
po/uk.po+11−11
@@ -8,23 +8,23 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2014-06-08 19:09+0000\n"
11+"PO-Revision-Date: 2014-07-13 17:03+0000\n"
1212"Last-Translator: Yuri Chornoivan <yurchor@gmail.com>\n"
1313"Language-Team: Ukrainian <uk@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
17+"X-Launchpad-Export-Date: 2014-07-14 07:10+0000\n"
18+"X-Generator: Launchpad (build 17111)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
2222msgid "Pin shortcut"
23−msgstr ""
23+msgstr "Заблокувати кнопку"
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
2626msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "Розблокувати кнопку"
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -172,27 +172,27 @@ msgstr "Введіть PIN-код SIM-картки"
172172
173173#: qml/Panel/Indicators/MenuItemFactory.qml:583
174174msgid "In queue…"
175−msgstr ""
175+msgstr "У черзі…"
176176
177177#: qml/Panel/Indicators/MenuItemFactory.qml:587
178178msgid "Downloading"
179−msgstr ""
179+msgstr "Отримуємо"
180180
181181#: qml/Panel/Indicators/MenuItemFactory.qml:589
182182msgid "Paused, tap to resume"
183−msgstr ""
183+msgstr "Призупинено, торкніться, щоб поновити"
184184
185185#: qml/Panel/Indicators/MenuItemFactory.qml:591
186186msgid "Canceled"
187−msgstr ""
187+msgstr "Скасовано"
188188
189189#: qml/Panel/Indicators/MenuItemFactory.qml:593
190190msgid "Finished"
191−msgstr ""
191+msgstr "Завершено"
192192
193193#: qml/Panel/Indicators/MenuItemFactory.qml:595
194194msgid "Failed, tap to retry"
195−msgstr ""
195+msgstr "Помилка, торкніться, щоб повторити спробу"
196196
197197#: qml/Panel/SearchIndicator.qml:27
198198msgid "Search"
po/zh_TW.po+34−34
@@ -8,23 +8,23 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2014-01-16 06:04+0000\n"
11+"PO-Revision-Date: 2014-07-18 10:14+0000\n"
1212"Last-Translator: Henry Yang <henry9846@hotmail.com>\n"
1313"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
17+"X-Launchpad-Export-Date: 2014-07-19 06:19+0000\n"
18+"X-Generator: Launchpad (build 17114)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
2222msgid "Pin shortcut"
23−msgstr ""
23+msgstr "釘住捷徑"
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
2626msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "取消捷徑釘選"
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -32,19 +32,19 @@ msgstr "略過導覽"
3232
3333#: qml/Components/EdgeDemo.qml:113
3434msgid "Right edge"
35−msgstr "右方邊界"
35+msgstr "右側邊緣"
3636
3737#: qml/Components/EdgeDemo.qml:114
3838msgid "Try swiping from the right edge to unlock the phone"
39−msgstr "向左滑動以解鎖手機"
39+msgstr "從螢幕右緣向左滑動解鎖手機"
4040
4141#: qml/Components/EdgeDemo.qml:145
4242msgid "Top edge"
43−msgstr "頂部邊界"
43+msgstr "上方邊緣"
4444
4545#: qml/Components/EdgeDemo.qml:146
4646msgid "Try swiping from the top edge to access the indicators"
47−msgstr "向下滑動以開啟指引"
47+msgstr "從螢幕上緣向下滑動打開指示器"
4848
4949#: qml/Components/EdgeDemo.qml:171
5050msgid "Close"
@@ -52,33 +52,33 @@ msgstr "關閉"
5252
5353#: qml/Components/EdgeDemo.qml:172
5454msgid "Swipe up again to close the settings screen"
55−msgstr "再次向上滑動以關財設定頁面"
55+msgstr "再次向上滑動關閉設定畫面"
5656
5757#: qml/Components/EdgeDemo.qml:199
5858msgid "Left edge"
59−msgstr "左方邊界"
59+msgstr "左方邊緣"
6060
6161#: qml/Components/EdgeDemo.qml:200
6262msgid "Swipe from the left to reveal the launcher for quick access to apps"
63−msgstr ""
63+msgstr "從螢幕左緣向右滑動揭開啟動器可快速存取程式"
6464
6565#: qml/Components/EdgeDemo.qml:227
6666msgid "Well done"
67−msgstr ""
67+msgstr "做得好"
6868
6969#: qml/Components/EdgeDemo.qml:228
7070msgid ""
7171"You have now mastered the edge gestures and can start using the "
7272"phone<br><br>Tap on the screen to start"
73−msgstr ""
73+msgstr "您現在已熟練邊緣手勢,可以開始使用手機了<br><br>輕觸螢幕開始使用"
7474
7575#: qml/Components/Lockscreen.qml:214
7676msgid "Emergency Call"
77−msgstr "緊急連絡"
77+msgstr "緊急通話"
7878
7979#: qml/Components/Lockscreen.qml:231
8080msgid "OK"
81−msgstr ""
81+msgstr "確定"
8282
8383#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
@@ -95,39 +95,39 @@ msgstr "您好"
9595
9696#: qml/Components/PinLockscreen.qml:198
9797msgid "CANCEL"
98−msgstr ""
98+msgstr "取消"
9999
100100#: qml/Components/PinLockscreen.qml:216
101101msgid "DONE"
102−msgstr ""
102+msgstr "完成"
103103
104104#: qml/Components/SeeMore.qml:35
105105msgid "See more"
106−msgstr ""
106+msgstr "查看更多"
107107
108108#: qml/Components/SeeMore.qml:58
109109msgid "See less"
110−msgstr ""
110+msgstr "縮減查看"
111111
112112#: qml/Dash/DashApps.qml:37
113113msgid "Recent"
114−msgstr ""
114+msgstr "最近"
115115
116116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117117msgid "More..."
118−msgstr ""
118+msgstr "更多…"
119119
120120#: qml/Dash/Previews/PreviewActionCombo.qml:34
121121msgid "Less..."
122−msgstr ""
122+msgstr "縮減…"
123123
124124#: qml/Dash/Previews/PreviewRatingInput.qml:82
125125msgid "Rate this"
126−msgstr "對此評比"
126+msgstr "給予評等"
127127
128128#: qml/Dash/Previews/PreviewRatingInput.qml:128
129129msgid "Add a review"
130−msgstr "新增回覆"
130+msgstr "新增評論"
131131
132132#: qml/Dash/Previews/PreviewRatingInput.qml:168
133133msgid "Send"
@@ -135,7 +135,7 @@ msgstr "發送"
135135
136136#: qml/Greeter/Greeter.qml:157
137137msgid "Swipe to unlock"
138−msgstr ""
138+msgstr "滑開解除鎖定"
139139
140140#: qml/Hud/HudParametrizedActionsPage.qml:132
141141msgid "Confirm"
@@ -163,31 +163,31 @@ msgstr "顯示密碼"
163163
164164#: qml/Notifications/NotificationMenuItemFactory.qml:103
165165msgid "Please enter SIM PIN"
166−msgstr ""
166+msgstr "請輸入 SIM 卡 PIN 碼"
167167
168168#: qml/Panel/Indicators/MenuItemFactory.qml:583
169169msgid "In queue…"
170−msgstr ""
170+msgstr "佇列中…"
171171
172172#: qml/Panel/Indicators/MenuItemFactory.qml:587
173173msgid "Downloading"
174−msgstr ""
174+msgstr "下載中"
175175
176176#: qml/Panel/Indicators/MenuItemFactory.qml:589
177177msgid "Paused, tap to resume"
178−msgstr ""
178+msgstr "已暫停,輕觸可繼續"
179179
180180#: qml/Panel/Indicators/MenuItemFactory.qml:591
181181msgid "Canceled"
182−msgstr ""
182+msgstr "已取消"
183183
184184#: qml/Panel/Indicators/MenuItemFactory.qml:593
185185msgid "Finished"
186−msgstr ""
186+msgstr "已完成"
187187
188188#: qml/Panel/Indicators/MenuItemFactory.qml:595
189189msgid "Failed, tap to retry"
190−msgstr ""
190+msgstr "失敗,輕觸可重試"
191191
192192#: qml/Panel/SearchIndicator.qml:27
193193msgid "Search"
@@ -196,4 +196,4 @@ msgstr "搜尋"
196196#: qml/Shell.qml:359
197197#, qt-format
198198msgid "Please enter %1"
199−msgstr ""
199+msgstr "請輸入 %1"
qml/Components/Lockscreen.qml+17−5
@@ -186,6 +186,17 @@ Showable {
186186 }
187187
188188 Column {
189+ id: emergencyCallColumn
190+
191+ // FIXME: We *should* show emergency dialer if there is a SIM present,
192+ // regardless of whether the side stage is enabled. But right now,
193+ // the assumption is that narrow screens are phones which have SIMs
194+ // and wider screens are tablets which don't. When we do allow this
195+ // on devices with a side stage and a SIM, work should be done to
196+ // ensure that the main stage is disabled while the dialer is present
197+ // in the side stage.
198+ visible: !shell.sideStageEnabled
199+
189200 anchors {
190201 left: parent.left
191202 bottom: parent.bottom
@@ -203,11 +214,6 @@ Showable {
203214 name: "phone-app-call-symbolic"
204215 color: "#f3f3e7"
205216 opacity: 0.6
206−
207− MouseArea {
208− anchors.fill: parent
209− onClicked: root.emergencyCall()
210− }
211217 }
212218
213219 Label {
@@ -219,6 +225,12 @@ Showable {
219225 }
220226 }
221227
228+ MouseArea {
229+ anchors.fill: emergencyCallColumn
230+ onClicked: root.emergencyCall()
231+ enabled: emergencyCallColumn.visible
232+ }
233+
222234 Component {
223235 id: infoPopupComponent
224236 Dialog {
qml/Dash/GenericScopeView.qml+5−1
@@ -193,7 +193,7 @@ FocusScope {
193193 Connections {
194194 target: rendererLoader.item
195195 onClicked: {
196− if (scopeView.scope.id === "scopes" || (scopeView.scope.id == "clickscope" && (categoryId == "local" || categoryId == "store"))) {
196+ if (scopeView.scope.id === "scopes" || scopeView.scope.id == "clickscope") {
197197 // TODO Technically it is possible that calling activate() will make the scope emit
198198 // previewRequested so that we show a preview but there's no scope that does that yet
199199 // so it's not implemented
@@ -361,6 +361,10 @@ FocusScope {
361361 width: parent.width
362362 height: parent.height
363363 anchors.left: categoryView.right
364+
365+ onOpenChanged: {
366+ pageHeader.unfocus();
367+ }
364368 }
365369
366370}
qml/Dash/PreviewListView.qml+1−3
@@ -73,9 +73,7 @@ Item {
7373 property bool open: false
7474
7575 onOpenChanged: {
76− if (open) {
77− pageHeader.unfocus();
78− } else {
76+ if (!open) {
7977 // Cancel any pending preview requests or actions
8078 if (previewListView.currentItem && previewListView.currentItem.previewData !== undefined) {
8179 previewListView.currentItem.previewData.cancelAction();
qml/Greeter/Greeter.qml+1−1
@@ -70,7 +70,7 @@ Showable {
7070 DraggingArea {
7171 id: dragHandle
7272 anchors.fill: parent
73− enabled: greeter.narrowMode || !greeter.locked
73+ enabled: (greeter.narrowMode || !greeter.locked) && greeter.enabled
7474 orientation: Qt.Horizontal
7575 propagateComposedEvents: true
7676
qml/Notifications/Notification.qml+125−86
@@ -16,11 +16,13 @@
1616
1717import QtQuick 2.0
1818import QtMultimedia 5.0
19−import Ubuntu.Components 0.1
19+import Ubuntu.Components 1.1
2020import Unity.Notifications 1.0
2121import QMenuModel 0.1
2222import Utils 0.1
2323
24+import Ubuntu.Components.ListItems 0.1 as ListItem
25+
2426Item {
2527 id: notification
2628
@@ -34,11 +36,18 @@ Item {
3436 property var hints
3537 property var notification
3638 property color color
37− property bool fullscreen
39+ property bool fullscreen: false
3840 property int maxHeight
3941 property int margins
42+ property Gradient greenGradient : Gradient {
43+ GradientStop { position: 0.0; color: "#3fb24f" }
44+ GradientStop { position: 1.0; color: "#3fb24f" }
45+ }
46+ property Gradient darkgreyGradient: Gradient {
47+ GradientStop { position: 0.0; color: "#4d4745" }
48+ GradientStop { position: 1.0; color: "#4d4745" }
49+ }
4050
41− fullscreen: false
4251 objectName: "background"
4352 implicitHeight: type !== Notification.PlaceHolder ? (fullscreen ? maxHeight : contentColumn.height + contentColumn.spacing * 2) : 0
4453
@@ -70,7 +79,7 @@ Item {
7079 Audio {
7180 id: sound
7281 objectName: "sound"
73− source: hints["suppress-sound"] != "" ? hints["sound-file"] : undefined
82+ source: hints["suppress-sound"] != "true" && hints["sound-file"] != undefined ? hints["sound-file"] : ""
7483 }
7584
7685 onOpacityChanged: {
@@ -149,9 +158,17 @@ Item {
149158 UnityMenuModel {
150159 id: unityMenuModel
151160
161+ property string lastNameOwner: ""
162+
152163 busName: paths.busName
153164 actions: paths.actions
154165 menuObjectPath: paths.menuObjectPath
166+ onNameOwnerChanged: {
167+ if (lastNameOwner != "" && nameOwner == "" && notification.notification != undefined) {
168+ notification.notification.close()
169+ }
170+ lastNameOwner = nameOwner
171+ }
155172 }
156173
157174 Behavior on implicitHeight {
@@ -262,14 +279,18 @@ Item {
262279 }
263280
264281 Column {
282+ id: dialogColumn
265283 objectName: "dialogListView"
266284 spacing: units.gu(2)
267285
268286 visible: count > 0
269287
270− anchors.left: parent.left; anchors.right: parent.right
271− anchors.top: fullscreen ? parent.top : undefined
272− anchors.bottom: fullscreen ? parent.bottom : undefined
288+ anchors {
289+ left: parent.left
290+ right: parent.right
291+ top: fullscreen ? parent.top : undefined
292+ bottom: fullscreen ? parent.bottom : undefined
293+ }
273294
274295 Repeater {
275296 model: unityMenuModel
@@ -277,7 +298,10 @@ Item {
277298 NotificationMenuItemFactory {
278299 id: menuItemFactory
279300
280− anchors.left: parent.left; anchors.right: parent.right
301+ anchors {
302+ left: dialogColumn.left
303+ right: dialogColumn.right
304+ }
281305
282306 menuModel: unityMenuModel
283307 menuData: model
@@ -291,7 +315,7 @@ Item {
291315 }
292316 }
293317
294− Item {
318+ Row {
295319 id: buttonRow
296320
297321 objectName: "buttonRow"
@@ -300,70 +324,8 @@ Item {
300324 right: parent.right
301325 }
302326 visible: notification.type == Notification.SnapDecision && actionRepeater.count > 0
303− height: units.gu(5)
304−
305− property real buttonWidth: (width - contentColumn.spacing) / 2
306− property bool expanded
307−
308− Button {
309− id: leftButton
310−
311− objectName: "button1"
312− width: parent.expanded ? parent.width : parent.buttonWidth
313− anchors {
314− top: parent.top
315− bottom: parent.bottom
316− }
317− text: notification.type == Notification.SnapDecision && actionRepeater.count >= 2 ? actionRepeater.itemAt(1).actionLabel : ""
318− gradient: UbuntuColors.greyGradient
319− onClicked: {
320− if (actionRepeater.count > 2) {
321− buttonRow.expanded = !buttonRow.expanded
322− } else {
323− notification.notification.invokeAction(actionRepeater.itemAt(1).actionId)
324− }
325− }
326−
327− Behavior on width {
328− UbuntuNumberAnimation {
329− duration: UbuntuAnimation.SnapDuration
330− }
331− }
332− }
333−
334− Button {
335− id: rightButton
336−
337− objectName: "button0"
338− anchors {
339− left: leftButton.right
340− leftMargin: contentColumn.spacing
341− right: parent.right
342− }
343− text: notification.type == Notification.SnapDecision && actionRepeater.count >= 1 ? actionRepeater.itemAt(0).actionLabel : ""
344− anchors {
345− top: parent.top
346− bottom: parent.bottom
347− }
348− gradient: notification.hints["x-canonical-private-button-tint"] == "true" ? UbuntuColors.orangeGradient : UbuntuColors.greyGradient
349− visible: width > 0
350− onClicked: notification.notification.invokeAction(actionRepeater.itemAt(0).actionId)
351− }
352− }
353−
354− Column {
355− objectName: "buttonColumn"
356− spacing: contentColumn.spacing
357− anchors {
358− left: parent.left
359− right: parent.right
360− }
361−
362− // calculate initial position before Column takes over
363− y: buttonRow.y + buttonRow.height + contentColumn.spacing
364−
365− visible: notification.type == Notification.SnapDecision && buttonRow.expanded
366− height: buttonRow.expanded ? implicitHeight : 0
327+ spacing: units.gu(1)
328+ layoutDirection: Qt.RightToLeft
367329
368330 Repeater {
369331 id: actionRepeater
@@ -375,28 +337,105 @@ Item {
375337 property string actionId: id
376338 property string actionLabel: label
377339
378− anchors {
379− left: parent.left
380− right: parent.right
381− }
382−
383340 Component {
384341 id: actionButton
385342
386343 Button {
387344 objectName: "button" + index
388− anchors {
389− left: parent.left
390− right: parent.right
391− }
392−
345+ width: buttonRow.width / 2 - spacing
393346 text: loader.actionLabel
394− height: units.gu(5)
395− gradient: UbuntuColors.greyGradient
347+ gradient: notification.hints["x-canonical-private-button-tint"] == "true" && index == 0 ? greenGradient : darkgreyGradient
396348 onClicked: notification.notification.invokeAction(loader.actionId)
397349 }
398350 }
399− sourceComponent: (index == 0 || index == 1) ? undefined : actionButton
351+ sourceComponent: (index == 0 || index == 1) ? actionButton : undefined
352+ }
353+ }
354+ }
355+
356+ ComboButton {
357+ id: comboButton
358+
359+ objectName: "button2"
360+ width: parent.width
361+ visible: notification.type == Notification.SnapDecision && actionRepeater.count > 3
362+ gradient: darkgreyGradient
363+ onClicked: notification.notification.invokeAction(comboRepeater.itemAt(2).actionId)
364+ expanded: false
365+ expandedHeight: (comboRepeater.count - 2) * units.gu(4) + units.gu(.5)
366+ comboList: Flickable {
367+ // this has to be wrapped inside a flickable
368+ // to work around a feature/bug? of the
369+ // ComboButton SDK-element, making a regular
370+ // unwrapped Column item flickable
371+ // see LP: #1332590
372+ interactive: false
373+ Column {
374+ Repeater {
375+ id: comboRepeater
376+
377+ onVisibleChanged: {
378+ comboButton.text = comboRepeater.itemAt(2).actionLabel
379+ }
380+
381+ model: notification.actions
382+ delegate: Loader {
383+ id: comboLoader
384+
385+ asynchronous: true
386+ visible: status == Loader.Ready
387+ property string actionId: id
388+ property string actionLabel: label
389+ readonly property var splitLabel: actionLabel.match(/(^([-a-z0-9]+):)?(.*)$/)
390+ Component {
391+ id: comboEntry
392+
393+ MouseArea {
394+ id: comboInputArea
395+
396+ objectName: "button" + index
397+ width: comboButton.width
398+ height: comboIcon.height + units.gu(2)
399+
400+ onClicked: {
401+ notification.notification.invokeAction(actionId)
402+ }
403+
404+ ListItem.ThinDivider {
405+ visible: index > 3
406+ }
407+
408+ Icon {
409+ id: comboIcon
410+
411+ anchors {
412+ left: parent.left
413+ leftMargin: units.gu(.5)
414+ verticalCenter: parent.verticalCenter
415+ }
416+ width: units.gu(2)
417+ height: units.gu(2)
418+ color: "white"
419+ name: splitLabel[2]
420+ }
421+
422+ Label {
423+ id: comboLabel
424+
425+ anchors {
426+ left: comboIcon.right
427+ leftMargin: units.gu(1)
428+ verticalCenter: comboIcon.verticalCenter
429+ }
430+ fontSize: "small"
431+ color: "white"
432+ text: splitLabel[3]
433+ }
434+ }
435+ }
436+ sourceComponent: (index > 2) ? comboEntry : undefined
437+ }
438+ }
400439 }
401440 }
402441 }
qml/Notifications/NotificationMenuItemFactory.qml+12−3
@@ -50,7 +50,10 @@ Loader {
5050 Column {
5151 spacing: units.gu(2)
5252
53− anchors.left: parent.left; anchors.right: parent.right
53+ anchors {
54+ left: parent.left
55+ right: parent.right
56+ }
5457
5558 Component.onCompleted: {
5659 menuModel.loadExtendedAttributes(menuIndex, {"x-echo-mode-password": "bool"});
@@ -67,7 +70,10 @@ Loader {
6770
6871 // TODO using Qt.ImhNoPredictiveText here until lp #1291575 is fixed for ubuntu-ui-toolkit
6972 inputMethodHints: Qt.ImhNoAutoUppercase | Qt.ImhNoPredictiveText
70− anchors.left: parent.left; anchors.right: parent.right
73+ anchors {
74+ left: parent.left
75+ right: parent.right
76+ }
7177 echoMode: checkBox.checked ? TextInput.Normal : TextInput.Password
7278 height: units.gu(5)
7379 onTextChanged: {
@@ -98,7 +104,10 @@ Loader {
98104 id: pinLock
99105
100106 Lockscreen {
101− anchors.left: parent.left; anchors.right: parent.right
107+ anchors {
108+ left: parent.left
109+ right: parent.right
110+ }
102111 height: menuFactory.maxHeight
103112 placeholderText: i18n.tr("Please enter SIM PIN")
104113 background: shell.background
qml/Notifications/Notifications.qml+17−1
@@ -36,8 +36,11 @@ ListView {
3636 filterRole: UnityNotifications.ModelInterface.RoleType
3737 filterRegExp: RegExp(UnityNotifications.Notification.SnapDecision)
3838 }
39− spacing: delegate.fullscreen ? 0 : units.gu(.5)
4039
40+ property bool topmostIsFullscreen: false
41+ spacing: topmostIsFullscreen ? 0 : units.gu(.5)
42+
43+ // FIXME: This doesn't make any sense and results in a binding loop
4144 currentIndex: (currentIndex < 1 && count > 1) ? 1 : -1
4245
4346 delegate: Notification {
@@ -61,6 +64,19 @@ ListView {
6164 // make sure there's no opacity-difference between the several
6265 // elements in a notification
6366 layer.enabled: add.running || remove.running || populate.running
67+
68+ Component.onCompleted: {
69+ if (index == 1) {
70+ notificationList.topmostIsFullscreen = fullscreen
71+ }
72+ }
73+
74+ onFullscreenChanged: {
75+ // index 1 because 0 is the PlaceHolder...
76+ if (index == 1) {
77+ notificationList.topmostIsFullscreen = fullscreen
78+ }
79+ }
6480 }
6581
6682 populate: Transition {
qml/Panel/Indicators.qml+1
@@ -262,6 +262,7 @@ Showable {
262262 indicators.calculateCurrentItem(touchX, false);
263263 } else {
264264 indicators.state = "commit";
265+ indicatorRow.currentItemOffset = 0;
265266 }
266267 }
267268
qml/Panel/Indicators/MenuItemFactory.qml−6
@@ -140,7 +140,6 @@ Item {
140140
141141 onTriggered: {
142142 menuModel.activate(menuIndex);
143− shell.hideIndicatorMenu(UbuntuAnimation.FastDuration);
144143 }
145144 }
146145 }
@@ -186,7 +185,6 @@ Item {
186185
187186 onTriggered: {
188187 menuModel.activate(menuIndex);
189− shell.hideIndicatorMenu(UbuntuAnimation.BriskDuration);
190188 }
191189 }
192190 }
@@ -205,7 +203,6 @@ Item {
205203
206204 onTriggered: {
207205 menuModel.activate(menuIndex);
208− shell.hideIndicatorMenu(UbuntuAnimation.BriskDuration);
209206 }
210207 }
211208 }
@@ -226,7 +223,6 @@ Item {
226223
227224 onTriggered: {
228225 menuModel.activate(menuIndex);
229− shell.hideIndicatorMenu(UbuntuAnimation.BriskDuration);
230226 }
231227 }
232228 }
@@ -367,7 +363,6 @@ Item {
367363 }
368364 onTriggered: {
369365 menuModel.activate(menuIndex);
370− shell.hideIndicatorMenu(UbuntuAnimation.BriskDuration);
371366 }
372367
373368 function loadAttributes() {
@@ -412,7 +407,6 @@ Item {
412407 }
413408 onClicked: {
414409 menuModel.activate(menuIndex, true);
415− shell.hideIndicatorMenu(UbuntuAnimation.FastDuration);
416410 }
417411 onDismissed: {
418412 menuModel.activate(menuIndex, false);
qml/Panel/Indicators/MessageMenuItemFactory.qml−3
@@ -95,7 +95,6 @@ Item {
9595
9696 onAppActivated: {
9797 menuModel.activate(menuIndex, true);
98− shell.hideIndicatorMenu(UbuntuAnimation.FastDuration);
9998 }
10099 onDismissed: {
101100 menuModel.activate(menuIndex, false);
@@ -144,7 +143,6 @@ Item {
144143
145144 onAppActivated: {
146145 menuModel.activate(menuIndex, true);
147− shell.hideIndicatorMenu(UbuntuAnimation.FastDuration);
148146 }
149147 onDismissed: {
150148 menuModel.activate(menuIndex, false);
@@ -204,7 +202,6 @@ Item {
204202
205203 onAppActivated: {
206204 menuModel.activate(menuIndex, true);
207− shell.hideIndicatorMenu(UbuntuAnimation.FastDuration);
208205 }
209206 onDismissed: {
210207 menuModel.activate(menuIndex, false);
qml/Panel/Panel.qml−22
@@ -27,28 +27,6 @@ Item {
2727 property alias callHint: __callHint
2828 property bool fullscreenMode: false
2929
30− function hideIndicatorMenu(delay) {
31− if (delay !== undefined) {
32− hideTimer.interval = delay;
33− hideTimer.start();
34− } else {
35− indicators.hide();
36− }
37− }
38−
39− Timer {
40− id: hideTimer
41− running: false
42− onTriggered: {
43− indicators.hide();
44− }
45− }
46−
47− Connections {
48− target: indicators
49− onShownChanged: hideTimer.stop()
50− }
51−
5230 Rectangle {
5331 id: darkenedArea
5432 property real darkenedOpacity: 0.6
qml/Shell.qml+281−30
@@ -19,6 +19,7 @@ import AccountsService 0.1
1919import GSettings 1.0
2020import Unity.Application 0.1
2121import Ubuntu.Components 0.1
22+import Ubuntu.Components.Popups 0.1
2223import Ubuntu.Gestures 0.1
2324import Unity.Launcher 0.1
2425import LightDM 0.1 as LightDM
@@ -136,7 +137,7 @@ FocusScope {
136137 id: dash
137138 objectName: "dash"
138139
139− available: !greeter.shown && !lockscreen.shown
140+ available: !LightDM.Greeter.active
140141 hides: [stages, launcher, panel.indicators]
141142 shown: disappearingAnimationProgress !== 1.0 && greeterWrapper.showProgress !== 1.0
142143 enabled: disappearingAnimationProgress === 0.0 && greeterWrapper.showProgress === 0.0 && edgeDemo.dashEnabled
@@ -199,7 +200,7 @@ FocusScope {
199200
200201 x: {
201202 if (shown) {
202− if (overlayMode || locked) {
203+ if (overlayMode || locked || greeter.fakeActiveForApp !== "") {
203204 return 0;
204205 }
205206 return launcher.progress
@@ -244,10 +245,17 @@ FocusScope {
244245 target: ApplicationManager
245246
246247 onFocusRequested: {
248+ if (greeter.fakeActiveForApp !== "" && greeter.fakeActiveForApp !== appId) {
249+ lockscreen.show();
250+ }
251+ greeter.hide();
247252 stages.show(true);
248253 }
249254
250255 onFocusedApplicationIdChanged: {
256+ if (greeter.fakeActiveForApp !== "" && greeter.fakeActiveForApp !== ApplicationManager.focusedApplicationId) {
257+ lockscreen.show();
258+ }
251259 if (ApplicationManager.focusedApplicationId.length > 0) {
252260 stages.show(false);
253261 } else {
@@ -268,7 +276,128 @@ FocusScope {
268276 }
269277 }
270278
279+ property bool dialogShown: false
280+
281+ Component {
282+ id: logoutDialog
283+ Dialog {
284+ id: dialogueLogout
285+ title: "Logout"
286+ text: "Are you sure that you want to logout?"
287+ Button {
288+ text: "Cancel"
289+ onClicked: {
290+ PopupUtils.close(dialogueLogout);
291+ stages.dialogShown = false;
292+ }
293+ }
294+ Button {
295+ text: "Yes"
296+ onClicked: {
297+ DBusUnitySessionService.Logout();
298+ PopupUtils.close(dialogueLogout);
299+ stages.dialogShown = false;
300+ }
301+ }
302+ }
303+ }
304+
305+ Component {
306+ id: shutdownDialog
307+ Dialog {
308+ id: dialogueShutdown
309+ title: "Shutdown"
310+ text: "Are you sure that you want to shutdown?"
311+ Button {
312+ text: "Cancel"
313+ onClicked: {
314+ PopupUtils.close(dialogueShutdown);
315+ stages.dialogShown = false;
316+ }
317+ }
318+ Button {
319+ text: "Yes"
320+ onClicked: {
321+ dBusUnitySessionServiceConnection.closeAllApps();
322+ DBusUnitySessionService.Shutdown();
323+ PopupUtils.close(dialogueShutdown);
324+ stages.dialogShown = false;
325+ }
326+ }
327+ }
328+ }
329+
330+ Component {
331+ id: rebootDialog
332+ Dialog {
333+ id: dialogueReboot
334+ title: "Reboot"
335+ text: "Are you sure that you want to reboot?"
336+ Button {
337+ text: "Cancel"
338+ onClicked: {
339+ PopupUtils.close(dialogueReboot)
340+ stages.dialogShown = false;
341+ }
342+ }
343+ Button {
344+ text: "Yes"
345+ onClicked: {
346+ dBusUnitySessionServiceConnection.closeAllApps();
347+ DBusUnitySessionService.Reboot();
348+ PopupUtils.close(dialogueReboot);
349+ stages.dialogShown = false;
350+ }
351+ }
352+ }
353+ }
354+
355+ Component {
356+ id: powerDialog
357+ Dialog {
358+ id: dialoguePower
359+ title: "Power"
360+ text: i18n.tr("Are you sure you would like to turn power off?")
361+ Button {
362+ text: i18n.tr("Power off")
363+ onClicked: {
364+ dBusUnitySessionServiceConnection.closeAllApps();
365+ PopupUtils.close(dialoguePower);
366+ stages.dialogShown = false;
367+ shutdownFadeOutRectangle.enabled = true;
368+ shutdownFadeOutRectangle.visible = true;
369+ shutdownFadeOut.start();
370+ }
371+ }
372+ Button {
373+ text: i18n.tr("Restart")
374+ onClicked: {
375+ dBusUnitySessionServiceConnection.closeAllApps();
376+ DBusUnitySessionService.Reboot();
377+ PopupUtils.close(dialoguePower);
378+ stages.dialogShown = false;
379+ }
380+ }
381+ Button {
382+ text: i18n.tr("Cancel")
383+ onClicked: {
384+ PopupUtils.close(dialoguePower);
385+ stages.dialogShown = false;
386+ }
387+ }
388+ }
389+ }
390+
391+ function showPowerDialog() {
392+ if (!stages.dialogShown) {
393+ stages.dialogShown = true;
394+ PopupUtils.open(powerDialog);
395+ }
396+ }
397+
271398 Connections {
399+ id: dBusUnitySessionServiceConnection
400+ objectName: "dBusUnitySessionServiceConnection"
272401 target: DBusUnitySessionService
273402
274403 function closeAllApps() {
@@ -282,8 +411,27 @@ FocusScope {
282411 }
283412
284413 onLogoutRequested: {
285− // TODO: Display a dialog to ask the user to confirm.
286− DBusUnitySessionService.Logout();
414+ // Display a dialog to ask the user to confirm.
415+ if (!stages.dialogShown) {
416+ stages.dialogShown = true;
417+ PopupUtils.open(logoutDialog);
418+ }
419+ }
420+
421+ onShutdownRequested: {
422+ // Display a dialog to ask the user to confirm.
423+ if (!stages.dialogShown) {
424+ stages.dialogShown = true;
425+ PopupUtils.open(shutdownDialog);
426+ }
427+ }
428+
429+ onRebootRequested: {
430+ // Display a dialog to ask the user to confirm.
431+ if (!stages.dialogShown) {
432+ stages.dialogShown = true;
433+ PopupUtils.open(rebootDialog);
434+ }
287435 }
288436
289437 onLogoutReady: {
@@ -298,6 +446,11 @@ FocusScope {
298446
299447 source: shell.sideStageEnabled ? "Stages/StageWithSideStage.qml" : "Stages/PhoneStage.qml"
300448
449+ Binding {
450+ target: applicationsDisplayLoader.item
451+ property: "objectName"
452+ value: "stage"
453+ }
301454 Binding {
302455 target: applicationsDisplayLoader.item
303456 property: "moving"
@@ -313,6 +466,11 @@ FocusScope {
313466 property: "dragAreaWidth"
314467 value: shell.edgeSize
315468 }
469+ Binding {
470+ target: applicationsDisplayLoader.item
471+ property: "spreadEnabled"
472+ value: greeter.fakeActiveForApp === "" // to support emergency dialer hack
473+ }
316474 }
317475 }
318476
@@ -337,6 +495,13 @@ FocusScope {
337495
338496 onEntered: LightDM.Greeter.respond(passphrase);
339497 onCancel: greeter.show()
498+ onEmergencyCall: {
499+ greeter.fakeActiveForApp = "dialer-app"
500+ shell.activateApplication("dialer-app")
501+ lockscreen.hide()
502+ }
503+
504+ onShownChanged: if (shown) greeter.fakeActiveForApp = ""
340505
341506 Component.onCompleted: {
342507 if (LightDM.Users.count == 1) {
@@ -348,6 +513,8 @@ FocusScope {
348513 Connections {
349514 target: LightDM.Greeter
350515
516+ onShowGreeter: greeter.show()
517+
351518 onShowPrompt: {
352519 if (LightDM.Users.count == 1) {
353520 // TODO: There's no better way for now to determine if its a PIN or a passphrase.
@@ -367,12 +534,19 @@ FocusScope {
367534 }
368535 if (LightDM.Greeter.authenticated) {
369536 lockscreen.hide();
537+ greeter.login();
370538 } else {
371539 lockscreen.clear(true);
372540 }
373541 }
374542 }
375543
544+ Binding {
545+ target: LightDM.Greeter
546+ property: "active"
547+ value: greeter.shown || lockscreen.shown || greeter.fakeActiveForApp != ""
548+ }
549+
376550 Rectangle {
377551 anchors.fill: parent
378552 color: "black"
@@ -393,11 +567,16 @@ FocusScope {
393567 }
394568
395569 readonly property real showProgress: MathUtils.clamp((1 - x/width) + greeter.showProgress - 1, 0, 1)
570+ onShowProgressChanged: if (LightDM.Greeter.promptless && showProgress === 0) greeter.login()
396571
397572 Greeter {
398573 id: greeter
399574 objectName: "greeter"
400575
576+ signal sessionStarted() // helpful for tests
577+
578+ property string fakeActiveForApp: ""
579+
401580 available: true
402581 hides: [launcher, panel.indicators]
403582 shown: true
@@ -409,14 +588,28 @@ FocusScope {
409588
410589 dragHandleWidth: shell.edgeSize
411590
591+ function login() {
592+ enabled = false;
593+ LightDM.Greeter.startSessionSync();
594+ sessionStarted();
595+ greeter.hide();
596+ lockscreen.hide();
597+ launcher.hide();
598+ enabled = true;
599+ }
600+
412601 onShownChanged: {
413602 if (shown) {
414603 lockscreen.reset();
604+ if (!LightDM.Greeter.promptless) {
605+ lockscreen.show();
606+ }
415607 // If there is only one user, we start authenticating with that one here.
416608 // If there are more users, the Greeter will handle that
417609 if (LightDM.Users.count == 1) {
418610 LightDM.Greeter.authenticate(LightDM.Users.data(0, LightDM.UserRoles.NameRole));
419611 }
612+ greeter.fakeActiveForApp = "";
420613 greeter.forceActiveFocus();
421614 }
422615 }
@@ -466,14 +659,38 @@ FocusScope {
466659 }
467660
468661 function showHome() {
469− var animate = !greeter.shown && !stages.shown
470− greeter.hide()
662+ if (edgeDemo.running) {
663+ return
664+ }
665+
666+ if (LightDM.Greeter.active) {
667+ if (!LightDM.Greeter.promptless) {
668+ lockscreen.show()
669+ }
670+ greeter.hide()
671+ }
672+
673+ var animate = !LightDM.Greeter.active && !stages.shown
471674 dash.setCurrentScope("clickscope", animate, false)
472675 stages.hide()
473676 }
474677
475− function hideIndicatorMenu(delay) {
476− panel.hideIndicatorMenu(delay);
678+ function showDash() {
679+ if (LightDM.Greeter.active && !LightDM.Greeter.promptless) {
680+ return;
681+ }
682+
683+ if (stages.shown && !stages.overlayMode && !stages.locked) {
684+ stages.hide();
685+ launcher.fadeOut();
686+ } else {
687+ launcher.switchToNextState("visible");
688+ }
689+
690+ if (greeter.shown) {
691+ greeter.hideRight();
692+ launcher.fadeOut();
693+ }
477694 }
478695
479696 Item {
@@ -483,17 +700,18 @@ FocusScope {
483700
484701 Panel {
485702 id: panel
703+ objectName: "panel"
486704 anchors.fill: parent //because this draws indicator menus
487705 indicators {
488706 hides: [launcher]
489− available: edgeDemo.panelEnabled
707+ available: edgeDemo.panelEnabled && greeter.fakeActiveForApp === ""
490708 contentEnabled: edgeDemo.panelContentEnabled
491709 width: parent.width > units.gu(60) ? units.gu(40) : parent.width
492710 panelHeight: units.gu(3)
493711 }
494712 property string focusedAppId: ApplicationManager.focusedApplicationId
495713 property var focusedApplication: ApplicationManager.findApplication(focusedAppId)
496− fullscreenMode: focusedApplication && stages.fullscreen && !greeter.shown && !lockscreen.shown
714+ fullscreenMode: (focusedApplication && stages.fullscreen && !LightDM.Greeter.active) || greeter.fakeActiveForApp !== ""
497715
498716 InputFilterArea {
499717 anchors {
@@ -518,6 +736,7 @@ FocusScope {
518736
519737 Launcher {
520738 id: launcher
739+ objectName: "launcher"
521740
522741 readonly property bool dashSwipe: progress > 0
523742
@@ -525,29 +744,15 @@ FocusScope {
525744 anchors.bottom: parent.bottom
526745 width: parent.width
527746 dragAreaWidth: shell.edgeSize
528− available: edgeDemo.launcherEnabled
529−
530− onShowDashHome: {
531− if (edgeDemo.running)
532− return;
533−
534− showHome()
535− }
536− onDash: {
537− if (stages.shown && !stages.overlayMode && !stages.locked) {
538− stages.hide();
539− launcher.fadeOut();
540− } else {
541− launcher.switchToNextState("visible");
542− }
747+ available: edgeDemo.launcherEnabled && greeter.fakeActiveForApp === ""
543748
544− if (greeter.shown) {
545− greeter.hideRight();
546− launcher.fadeOut();
547− }
548− }
749+ onShowDashHome: showHome()
750+ onDash: showDash()
549751 onDashSwipeChanged: if (dashSwipe && stages.shown) dash.setCurrentScope("clickscope", false, true)
550752 onLauncherApplicationSelected: {
753+ if (greeter.fakeActiveForApp !== "") {
754+ lockscreen.show()
755+ }
551756 if (!edgeDemo.running)
552757 shell.activateApplication(appId)
553758 }
@@ -679,4 +884,50 @@ FocusScope {
679884 target: SessionBroadcast
680885 onShowHome: showHome()
681886 }
887+
888+ Keys.onPressed: {
889+ if (event.key == Qt.Key_PowerOff || event.key == Qt.Key_PowerDown) {
890+ if (!powerKeyTimer.running) {
891+ powerKeyTimer.start();
892+ }
893+ event.accepted = true;
894+ }
895+ }
896+
897+ Keys.onReleased: {
898+ if (event.key == Qt.Key_PowerOff || event.key == Qt.Key_PowerDown) {
899+ powerKeyTimer.stop();
900+ event.accepted = true;
901+ }
902+ }
903+
904+ Timer {
905+ id: powerKeyTimer
906+ interval: 2000
907+ repeat: false
908+ triggeredOnStart: false
909+
910+ onTriggered: {
911+ stages.showPowerDialog();
912+ }
913+ }
914+
915+ Rectangle {
916+ id: shutdownFadeOutRectangle
917+ enabled: false
918+ visible: false
919+ color: "black"
920+ anchors.fill: parent
921+ opacity: 0.0
922+ NumberAnimation on opacity {
923+ id: shutdownFadeOut
924+ from: 0.0
925+ to: 1.0
926+ onStopped: {
927+ if (shutdownFadeOutRectangle.enabled && shutdownFadeOutRectangle.visible) {
928+ DBusUnitySessionService.Shutdown();
929+ }
930+ }
931+ }
932+ }
682933}
qml/Stages/PhoneStage.qml+13−1
@@ -18,6 +18,7 @@ import QtQuick 2.0
1818import Ubuntu.Components 0.1
1919import Ubuntu.Gestures 0.1
2020import Unity.Application 0.1
21+import LightDM 0.1 as LightDM
2122import Utils 0.1
2223import "../Components"
2324
@@ -33,6 +34,7 @@ Item {
3334 readonly property bool painting: mainScreenshotImage.visible || fadeInScreenshotImage.visible || appSplash.visible || spreadView.visible
3435 property bool fullscreen: priv.focusedApplication ? priv.focusedApplication.fullscreen : false
3536 property bool locked: spreadView.visible
37+ property bool spreadEnabled: true
3638
3739 // Not used for PhoneStage, only useful for SideStage and similar
3840 property bool overlayMode: false
@@ -131,6 +133,11 @@ Item {
131133 mainScreenshotImage.visible = true;
132134 } else if (priv.secondApplicationStarting && priv.waitingForScreenshot) {
133135 applicationSwitchingAnimation.start();
136+ if (LightDM.Greeter.active && !LightDM.Greeter.promptless) {
137+ // When greeter is up, no fancy animations, since user may
138+ // glimpse an app they shouldn't
139+ applicationSwitchingAnimation.complete();
140+ }
134141 }
135142 waitingForScreenshot = false;
136143 }
@@ -145,6 +152,11 @@ Item {
145152 priv.newFocusedAppId = appId;
146153 root.fullscreen = ApplicationManager.findApplication(appId).fullscreen;
147154 applicationSwitchingAnimation.start();
155+ if (LightDM.Greeter.active && !LightDM.Greeter.promptless) {
156+ // When greeter is up, no fancy animations, since user may
157+ // glimpse an app they shouldn't
158+ applicationSwitchingAnimation.complete();
159+ }
148160 } else {
149161 ApplicationManager.focusApplication(appId);
150162 }
@@ -244,7 +256,7 @@ Item {
244256 EdgeDragArea {
245257 id: spreadDragArea
246258 direction: Direction.Leftwards
247− enabled: ApplicationManager.count > 1 && spreadView.phase != 2
259+ enabled: ApplicationManager.count > 1 && spreadView.phase != 2 && root.spreadEnabled
248260
249261 anchors { top: parent.top; right: parent.right; bottom: parent.bottom }
250262 width: root.dragAreaWidth
tests/autopilot/unity8/shell/tests/test_notifications.py+10−13
@@ -178,11 +178,13 @@ class InteractiveNotificationBase(NotificationsBase):
178178 ]
179179
180180 actions = [
181− ('action_accept', 'Accept'),
182− ('action_decline_1', 'Decline'),
183− ('action_decline_2', '"Can\'t talk now, what\'s up?"'),
184− ('action_decline_3', '"I call you back."'),
185− ('action_decline_4', 'Send custom message...'),
181+ ('action_accept', 'Hold + Answer'),
182+ ('action_decline_1', 'End + Answer'),
183+ ('action_decline_2', 'Decline'),
184+ ('action_decline_3', 'messages:I missed your call - can you call me now?'),
185+ ('action_decline_4', 'messages:I\'m running late. I\'m on my way.'),
186+ ('action_decline_5', 'messages:I\'m busy at the moment. I\'ll call later.'),
187+ ('action_decline_6', 'edit:Custom'),
186188 ]
187189
188190 self._create_interactive_notification(
@@ -200,14 +202,9 @@ class InteractiveNotificationBase(NotificationsBase):
200202 notification = get_notification()
201203 self._assert_notification(notification, summary, body, True, True, 1.0)
202204 initial_height = notification.height
203− self.touch.tap_object(notification.select_single(objectName="button1"))
204− self.assertThat(
205− notification.height,
206− Eventually(Equals(initial_height +
207− 3 * notification.select_single(
208− objectName="buttonColumn").spacing +
209− 3 * notification.select_single(
210− objectName="button4").height)))
205+ self.touch.tap_object(notification.select_single(objectName="combobutton_dropdown"))
206+ self.assertThat(notification.select_single(objectName="button2").expanded, Eventually(Equals(True)))
207+ time.sleep(2)
211208 self.touch.tap_object(notification.select_single(objectName="button4"))
212209 self.assert_notification_action_id_was_called("action_decline_4")
213210
tests/mocks/LightDM/CMakeLists.txt+1
@@ -18,6 +18,7 @@ include_directories(
1818)
1919
2020set(QMLPLUGIN_SRC
21+ ${CMAKE_SOURCE_DIR}/plugins/LightDM/DBusGreeter.cpp
2122 ${CMAKE_SOURCE_DIR}/plugins/LightDM/DBusGreeterList.cpp
2223 ${CMAKE_SOURCE_DIR}/plugins/LightDM/Greeter.cpp
2324 ${CMAKE_SOURCE_DIR}/plugins/LightDM/plugin.cpp
tests/mocks/LightDM/single-pin/GreeterPrivate.cpp+1−9
@@ -19,8 +19,6 @@
1919#include "../Greeter.h"
2020#include "../GreeterPrivate.h"
2121
22−#include <QDebug>
23−
2422namespace QLightDM
2523{
2624
@@ -34,19 +32,13 @@ GreeterPrivate::GreeterPrivate(Greeter* parent)
3432void GreeterPrivate::handleAuthenticate()
3533{
3634 Q_Q(Greeter);
37−
38− qDebug() << "handleAuthentication called!" << authenticationUser;
39−
40− Q_EMIT q->showPrompt("PIN:", Greeter::PromptTypeSecret);
35+ Q_EMIT q->showPrompt("PIN", Greeter::PromptTypeSecret);
4136}
4237
4338void GreeterPrivate::handleRespond(const QString &response)
4439{
4540 Q_Q(Greeter);
46−
47−
4841 authenticated = (response == "1234");
49− qDebug() << "responding" << response << authenticated;
5042 Q_EMIT q->authenticationComplete();
5143}
5244
tests/mocks/Powerd/Powerd.qmltypes+6−13
@@ -15,19 +15,12 @@ Module {
1515 isSingleton: true
1616 exportMetaObjectRevisions: [0]
1717 Enum {
18− name: "DisplayFlag"
18+ name: "DisplayStateChangeReason"
1919 values: {
20− "UseProximity": 1,
21− "DisableAutoBrightness": 2,
22− "Bright": 4
23− }
24− }
25− Enum {
26− name: "DisplayFlags"
27− values: {
28− "UseProximity": 1,
29− "DisableAutoBrightness": 2,
30− "Bright": 4
20+ "Unknown": 0,
21+ "Inactivity": 1,
22+ "PowerKey": 2,
23+ "Proximity": 3
3124 }
3225 }
3326 Enum {
@@ -40,7 +33,7 @@ Module {
4033 Signal {
4134 name: "displayPowerStateChange"
4235 Parameter { name: "status"; type: "int" }
43− Parameter { name: "flags"; type: "uint" }
36+ Parameter { name: "reason"; type: "int" }
4437 }
4538 }
4639}
tests/mocks/QMenuModel/unitymenumodel.cpp+5
@@ -126,6 +126,11 @@ void UnityMenuModel::setActionStateParser(ActionStateParser*)
126126{
127127}
128128
129+QString UnityMenuModel::nameOwner() const
130+{
131+ return QString("");
132+}
133+
129134int UnityMenuModel::rowCount(const QModelIndex&) const
130135{
131136 return m_modelData.count();
tests/mocks/QMenuModel/unitymenumodel.h+4
@@ -32,6 +32,7 @@ class Q_DECL_EXPORT UnityMenuModel : public QAbstractListModel
3232 Q_PROPERTY(QVariantMap actions READ actions WRITE setActions NOTIFY actionsChanged)
3333 Q_PROPERTY(QByteArray menuObjectPath READ menuObjectPath WRITE setMenuObjectPath NOTIFY menuObjectPathChanged)
3434 Q_PROPERTY(ActionStateParser* actionStateParser READ actionStateParser WRITE setActionStateParser NOTIFY actionStateParserChanged)
35+ Q_PROPERTY(QString nameOwner READ nameOwner NOTIFY nameOwnerChanged)
3536
3637public:
3738 UnityMenuModel(QObject *parent = NULL);
@@ -56,6 +57,8 @@ public:
5657 ActionStateParser* actionStateParser() const;
5758 void setActionStateParser(ActionStateParser* actionStateParser);
5859
60+ QString nameOwner() const;
61+
5962 int rowCount(const QModelIndex &parent = QModelIndex()) const;
6063 int columnCount(const QModelIndex &parent = QModelIndex()) const;
6164 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
@@ -79,6 +82,7 @@ Q_SIGNALS:
7982 void menuObjectPathChanged();
8083 void actionStateParserChanged();
8184 void modelDataChanged();
85+ void nameOwnerChanged();
8286
8387private:
8488 QVariantMap rowData(int row) const;
tests/mocks/Unity/Unity.qmltypes+10−2
@@ -89,6 +89,10 @@ Module {
8989 name: "loadDepartment"
9090 Parameter { name: "id"; type: "string" }
9191 }
92+ Method {
93+ name: "performQuery"
94+ Parameter { name: "query"; type: "string" }
95+ }
9296 }
9397 Component {
9498 name: "Scopes"
@@ -133,8 +137,8 @@ Module {
133137 "RoleRawRendererTemplate": 3,
134138 "RoleRenderer": 4,
135139 "RoleComponents": 5,
136− "RoleResults": 6,
137− "RoleCount": 7
140+ "RoleResults": 7,
141+ "RoleCount": 8
138142 }
139143 }
140144 Method {
@@ -179,6 +183,9 @@ Module {
179183 Component {
180184 name: "unity::shell::scopes::PreviewModelInterface"
181185 prototype: "QAbstractListModel"
186+ exports: ["Unity/PreviewModel 0.2"]
187+ isCreatable: false
188+ exportMetaObjectRevisions: [0]
182189 Enum {
183190 name: "Roles"
184191 values: {
@@ -272,6 +279,7 @@ Module {
272279 Property { name: "isActive"; type: "bool" }
273280 Property { name: "currentDepartmentId"; type: "string"; isReadonly: true }
274281 Property { name: "hasDepartments"; type: "bool"; isReadonly: true }
282+ Property { name: "customizations"; type: "QVariantMap"; isReadonly: true }
275283 Signal { name: "showDash" }
276284 Signal { name: "hideDash" }
277285 Signal {
tests/plugins/Dash/cardcreator/6.res+1
@@ -5,6 +5,7 @@ AbstractButton {
55 property var cardData;
66 property var artShapeBorderSource: undefined;
77 property real fontScale: 1.0;
8+ property var scopeStyle: null;
89 property int headerAlignment: Text.AlignLeft;
910 property int fixedHeaderHeight: -1;
1011 property size fixedArtShapeSize: Qt.size(-1, -1);
tests/plugins/LightDM/CMakeLists.txt+1−1
@@ -19,7 +19,7 @@ target_link_libraries(test-lightdm-dbus
1919
2020add_definitions(-DCURRENT_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}")
2121
22−add_custom_target(testLightDMDBus dbus-launch env QML2_IMPORT_PATH=${CMAKE_BINARY_DIR}/tests/mocks LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/LightDM/full ${CMAKE_CURRENT_BINARY_DIR}/test-lightdm-dbus)
22+add_custom_target(testLightDMDBus xvfb-run --server-args "-screen 0 1024x768x24" --auto-servernum dbus-launch env QML2_IMPORT_PATH=${CMAKE_BINARY_DIR}/tests/mocks LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/LightDM/full ${CMAKE_CURRENT_BINARY_DIR}/test-lightdm-dbus)
2323add_dependencies(testLightDMDBus test-lightdm-dbus)
2424
2525add_dependencies(qmluitests testLightDMDBus)
tests/plugins/LightDM/dbus.cpp+40
@@ -38,6 +38,13 @@ private Q_SLOTS:
3838 // SIGNAL method, because QtDBus doesn't know about PropertiesChanged.
3939 // So we connect the hard way for the benefit of any tests that want
4040 // to watch.
41+ QDBusConnection::sessionBus().connect(
42+ "com.canonical.UnityGreeter",
43+ "/",
44+ "org.freedesktop.DBus.Properties",
45+ "PropertiesChanged",
46+ this,
47+ SIGNAL(PropertiesChangedRelay(const QString&, const QVariantMap&, const QStringList&)));
4148 QDBusConnection::sessionBus().connect(
4249 "com.canonical.UnityGreeter",
4350 "/list",
@@ -57,6 +64,12 @@ private Q_SLOTS:
5764 view->show();
5865 QTest::qWaitForWindowExposed(view);
5966
67+ dbusMain = new QDBusInterface("com.canonical.UnityGreeter",
68+ "/",
69+ "com.canonical.UnityGreeter",
70+ QDBusConnection::sessionBus(), view);
71+ QVERIFY(dbusMain->isValid());
72+
6073 dbusList = new QDBusInterface("com.canonical.UnityGreeter",
6174 "/list",
6275 "com.canonical.UnityGreeter.List",
@@ -155,9 +168,36 @@ private Q_SLOTS:
155168 QVERIFY(arguments.at(1).toMap()["EntryIsLocked"] == false);
156169 }
157170
171+ void testIsActive()
172+ {
173+ QVERIFY(!greeter->isActive());
174+ QVERIFY(!dbusMain->property("IsActive").toBool());
175+
176+ QSignalSpy spy(this, SIGNAL(PropertiesChangedRelay(QString, QVariantMap, QStringList)));
177+ greeter->setIsActive(true);
178+ spy.wait();
179+
180+ QVERIFY(greeter->isActive());
181+ QVERIFY(dbusMain->property("IsActive").toBool());
182+
183+ QCOMPARE(spy.count(), 1);
184+ QList<QVariant> arguments = spy.takeFirst();
185+ QCOMPARE(arguments.at(0).toString(), QString("com.canonical.UnityGreeter"));
186+ QVERIFY(arguments.at(1).toMap().contains("IsActive"));
187+ QVERIFY(arguments.at(1).toMap()["IsActive"].toBool());
188+ }
189+
190+ void testShowGreeter()
191+ {
192+ // Just confirm the call exists and doesn't fail
193+ QDBusReply<void> reply = dbusMain->call("ShowGreeter");
194+ QVERIFY(reply.isValid());
195+ }
196+
158197private:
159198 QQuickView *view;
160199 Greeter *greeter;
200+ QDBusInterface *dbusMain;
161201 QDBusInterface *dbusList;
162202};
163203
tests/qmltests/CMakeLists.txt+3−3
@@ -19,8 +19,8 @@ set(qmltest_DEFAULT_TARGETS qmluitests)
1919set(qmltest_DEFAULT_NO_ADD_TEST TRUE)
2020set(qmltest_DEFAULT_PROPERTIES ENVIRONMENT "LC_ALL=C")
2121
22−add_qml_test(. Shell IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks
23− ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/LightDM/single")
22+add_qml_test(. Shell ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/LightDM/single")
23+add_qml_test(. ShellWithPin ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/LightDM/single-pin")
2424add_qml_test(Components Carousel)
2525add_qml_test(Components DraggingArea)
2626add_qml_test(Components EdgeDemoOverlay)
@@ -75,4 +75,4 @@ add_qml_test(Panel/Indicators DefaultIndicatorPage ENVIRONMENT "LD_LIBRARY_PATH=
7575# These MenuItemFactory tests need the test/mocks/ to come before plugins/
7676add_qml_test(Panel/Indicators MenuItemFactory IMPORT_PATHS ${CMAKE_BINARY_DIR}/tests/mocks ${qmltest_DEFAULT_IMPORT_PATHS})
7777add_qml_test(Panel/Indicators MessageMenuItemFactory IMPORT_PATHS ${CMAKE_BINARY_DIR}/tests/mocks ${qmltest_DEFAULT_IMPORT_PATHS})
78−add_qml_test(Stages PhoneStage)
78+add_qml_test(Stages PhoneStage ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics:${CMAKE_BINARY_DIR}/tests/mocks/LightDM/single")
tests/qmltests/Dash/tst_DashContent.qml+1
@@ -312,6 +312,7 @@ Item {
312312 compare(allButton.visible, true);
313313 compare(backButton.visible, true);
314314
315+ tryCompare(departmentListView, "contentX", departmentList1.x);
315316 waitForRendering(departmentListView);
316317 mouseClick(allButton, 0, 0);
317318 compare(dashDepartments.showList, false);
tests/qmltests/Dash/tst_GenericScopeView.qml+4−4
@@ -56,7 +56,7 @@ Item {
5656 property Item previewListView: findChild(genericScopeView, "previewListView")
5757
5858 function init() {
59− genericScopeView.scope = scopes.getScope(2)
59+ genericScopeView.scope = scopes.getScope(1)
6060 shell.width = units.gu(120)
6161 genericScopeView.categoryView.positionAtBeginning();
6262 tryCompare(genericScopeView.categoryView, "contentY", 0)
@@ -76,13 +76,13 @@ Item {
7676
7777 function test_showDash() {
7878 testCase.previewListView.open = true;
79− scopes.getScope(2).showDash();
79+ scopes.getScope(1).showDash();
8080 tryCompare(testCase.previewListView, "open", false);
8181 }
8282
8383 function test_hideDash() {
8484 testCase.previewListView.open = true;
85− scopes.getScope(2).hideDash();
85+ scopes.getScope(1).hideDash();
8686 tryCompare(testCase.previewListView, "open", false);
8787 }
8888
@@ -99,8 +99,8 @@ Item {
9999
100100 function test_changeScope() {
101101 genericScopeView.scope.searchQuery = "test"
102− genericScopeView.scope = scopes.getScope(1)
103102 genericScopeView.scope = scopes.getScope(2)
103+ genericScopeView.scope = scopes.getScope(1)
104104 tryCompare(genericScopeView.scope, "searchQuery", "test")
105105 }
106106
tests/qmltests/Greeter/tst_Lockscreen.qml+1−1
@@ -57,7 +57,7 @@ Rectangle {
5757 target: LightDM.Greeter
5858
5959 onShowPrompt: {
60− if (text.indexOf("PIN") >= 0) {
60+ if (text === "PIN") {
6161 pinPadCheckBox.checked = false
6262 } else {
6363 pinPadCheckBox.checked = true
tests/qmltests/Notifications/tst_Notifications.qml+18−23
@@ -72,8 +72,8 @@ Row {
7272 actions: [{ id: "ok_id", label: "Ok"},
7373 { id: "cancel_id", label: "Cancel"},
7474 { id: "notreally_id", label: "Not really"},
75− { id: "noway_id", label: "No way"},
76− { id: "nada_id", label: "Nada"}]
75+ { id: "noway_id", label: "messages:No way"},
76+ { id: "nada_id", label: "messages:Nada"}]
7777 }
7878
7979 mockModel.append(n)
@@ -237,8 +237,8 @@ Row {
237237 actions: [{ id: "ok_id", label: "Ok"},
238238 { id: "cancel_id", label: "Cancel"},
239239 { id: "notreally_id", label: "Not really"},
240− { id: "noway_id", label: "No way"},
241− { id: "nada_id", label: "Nada"}],
240+ { id: "noway_id", label: "messages:No way"},
241+ { id: "nada_id", label: "messages:Nada"}],
242242 summaryVisible: true,
243243 bodyVisible: true,
244244 iconVisible: true,
@@ -456,32 +456,27 @@ Row {
456456 actionSpy.clear()
457457 waitForRendering(notification)
458458
459− // check if there's more than one negative choice
459+ // check if there's a ComboButton created due to more actions being passed
460460 if (data.actions.length > 2) {
461− var initialHeight = notification.implicitHeight
461+ var comboButton = findChild(notification, "button2")
462+ tryCompareFunction(function() { return comboButton.expanded == false; }, true);
462463
463464 // click to expand
464− mouseClick(buttonCancel, buttonCancel.width / 2, buttonCancel.height / 2)
465− var contentColumn = findChild(notification, "contentColumn")
466− var collapsedContentColumnHeight = contentColumn.height;
467− // Waiting for the inner column to change height because buttons appear
468− tryCompareFunction(function() { return collapsedContentColumnHeight != contentColumn.height; }, true);
469− // Waiting for notification to reach its target size
470− tryCompare(notification, "height", contentColumn.height + contentColumn.spacing * 2)
465+ tryCompareFunction(function() { mouseClick(comboButton, comboButton.width - comboButton.__styleInstance.dropDownWidth / 2, comboButton.height / 2); return comboButton.expanded == true; }, true);
466+
467+ // try clicking on choices in expanded comboList
468+ var choiceButton1 = findChild(notification, "button3")
469+ tryCompareFunction(function() { mouseClick(choiceButton1, choiceButton1.width / 2, choiceButton1.height / 2); return actionSpy.signalArguments.length > 0; }, true);
470+ compare(actionSpy.signalArguments[0][0], data.actions[3]["id"], "got wrong id choice action 1")
471471 actionSpy.clear()
472472
473− // test the additional buttons
474− for (var i = 2; i < data.actions.length; i++) {
475− var buttonColumn = findChild(notification, "buttonColumn")
476− var button = findChild(buttonColumn, "button" + i)
477− mouseClick(button, button.width / 2, button.height / 2)
478− compare(actionSpy.signalArguments[0][0], data.actions[i]["id"], "got wrong id for additional negative action")
479− actionSpy.clear()
480− }
473+ var choiceButton2 = findChild(notification, "button4")
474+ tryCompareFunction(function() { mouseClick(choiceButton2, choiceButton2.width / 2, choiceButton2.height / 2); return actionSpy.signalArguments.length > 0; }, true);
475+ compare(actionSpy.signalArguments[0][0], data.actions[4]["id"], "got wrong id choice action 2")
476+ actionSpy.clear()
481477
482478 // click to collapse
483− mouseClick(buttonCancel, buttonCancel.width / 2, buttonCancel.height / 2)
484− tryCompare(notification, "height", initialHeight)
479+ //tryCompareFunction(function() { mouseClick(comboButton, comboButton.width - comboButton.__styleInstance.dropDownWidth / 2, comboButton.height / 2); return comboButton.expanded == false; }, true);
485480 } else {
486481 mouseClick(buttonCancel, buttonCancel.width / 2, buttonCancel.height / 2)
487482 compare(actionSpy.signalArguments[0][0], data.actions[1]["id"], "got wrong id for negative action")
tests/qmltests/Panel/tst_Panel.qml−14
@@ -333,19 +333,5 @@ Item {
333333
334334 compare(indicatorRow.currentItem, indicatorItemFirst, "First indicator should still be the current item");
335335 }
336−
337− function test_hideIndicatorMenu_data() {
338− return [ {tag: "no-delay", delay: undefined },
339− {tag: "delayed", delay: 200 }
340− ];
341− }
342−
343− function test_hideIndicatorMenu(data) {
344− panel.indicators.show();
345− compare(panel.indicators.shown, true);
346−
347− panel.hideIndicatorMenu(data.delay);
348− tryCompare(panel.indicators, "shown", false);
349− }
350336 }
351337}
tests/qmltests/tst_Shell.qml+27
@@ -20,6 +20,7 @@
2020import QtQuick 2.0
2121import QtTest 1.0
2222import GSettings 1.0
23+import LightDM 0.1 as LightDM
2324import Unity.Application 0.1
2425import Unity.Test 0.1 as UT
2526import Powerd 0.1
@@ -50,6 +51,11 @@ Item {
5051 id: shell
5152 }
5253
54+ SignalSpy {
55+ id: sessionSpy
56+ signalName: "sessionStarted"
57+ }
58+
5359 UT.UnityTestCase {
5460 name: "Shell"
5561 when: windowShown
@@ -91,6 +97,8 @@ Item {
9197 verify(ok);
9298
9399 swipeAwayGreeter();
100+
101+ sessionSpy.target = findChild(shell, "greeter")
94102 }
95103
96104 function cleanup() {
@@ -520,5 +528,24 @@ Item {
520528 tryCompare(greeter, "showProgress", 0)
521529 waitUntilApplicationWindowIsFullyVisible()
522530 }
531+
532+ function test_showGreeterDBusCall() {
533+ var greeter = findChild(shell, "greeter")
534+ tryCompare(greeter, "showProgress", 0)
535+ LightDM.Greeter.showGreeter()
536+ tryCompare(greeter, "showProgress", 1)
537+ }
538+
539+ function test_login() {
540+ sessionSpy.clear()
541+
542+ var greeter = findChild(shell, "greeter")
543+ greeter.show()
544+ tryCompare(greeter, "showProgress", 1)
545+
546+ tryCompare(sessionSpy, "count", 0)
547+ swipeAwayGreeter()
548+ tryCompare(sessionSpy, "count", 1)
549+ }
523550 }
524551}
tests/qmltests/tst_ShellWithPin.qmlnew file+203
@@ -0,0 +1,203 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.0
18+import QtTest 1.0
19+import GSettings 1.0
20+import LightDM 0.1 as LightDM
21+import Unity.Application 0.1
22+import Unity.Test 0.1 as UT
23+import Powerd 0.1
24+
25+import "../../qml"
26+
27+Item {
28+ width: shell.width
29+ height: shell.height
30+
31+ QtObject {
32+ id: applicationArguments
33+
34+ function hasGeometry() {
35+ return false;
36+ }
37+
38+ function width() {
39+ return 0;
40+ }
41+
42+ function height() {
43+ return 0;
44+ }
45+ }
46+
47+ Shell {
48+ id: shell
49+ }
50+
51+ SignalSpy {
52+ id: sessionSpy
53+ signalName: "sessionStarted"
54+ }
55+
56+ UT.UnityTestCase {
57+ name: "ShellWithPin"
58+ when: windowShown
59+
60+ function initTestCase() {
61+ var ok = false;
62+ var attempts = 0;
63+ var maxAttempts = 1000;
64+
65+ // Qt loads a qml scene asynchronously. So early on, some findChild() calls made in
66+ // tests may fail because the desired child item wasn't loaded yet.
67+ // Thus here we try to ensure the scene has been fully loaded before proceeding with the tests.
68+ // As I couldn't find an API in QQuickView & friends to tell me that the scene is 100% loaded
69+ // (all items instantiated, etc), I resort to checking the existence of some key items until
70+ // repeatedly until they're all there.
71+ do {
72+ var dashContentList = findChild(shell, "dashContentList");
73+ waitForRendering(dashContentList);
74+ var homeLoader = findChild(dashContentList, "clickscope loader");
75+ ok = homeLoader !== null
76+ && homeLoader.item !== undefined;
77+
78+ var greeter = findChild(shell, "greeter");
79+ ok &= greeter !== null;
80+
81+ var launcherPanel = findChild(shell, "launcherPanel");
82+ ok &= launcherPanel !== null;
83+
84+ attempts++;
85+ if (!ok) {
86+ console.log("Attempt " + attempts + " failed. Waiting a bit before trying again.");
87+ // wait a bit before retrying
88+ wait(100);
89+ } else {
90+ console.log("All seem fine after " + attempts + " attempts.");
91+ }
92+ } while (!ok && attempts <= maxAttempts);
93+
94+ verify(ok);
95+
96+ sessionSpy.target = findChild(shell, "greeter")
97+ }
98+
99+ function init() {
100+ swipeAwayGreeter()
101+ }
102+
103+ function cleanup() {
104+ LightDM.Greeter.showGreeter()
105+ var greeter = findChild(shell, "greeter")
106+ tryCompare(greeter, "showProgress", 1)
107+
108+ // kill all (fake) running apps
109+ killApps()
110+ }
111+
112+ function killApps() {
113+ while (ApplicationManager.count > 0) {
114+ ApplicationManager.stopApplication(ApplicationManager.get(0).appId)
115+ }
116+ compare(ApplicationManager.count, 0)
117+ }
118+
119+ function swipeAwayGreeter() {
120+ var greeter = findChild(shell, "greeter");
121+ tryCompare(greeter, "showProgress", 1);
122+
123+ var touchX = shell.width - (shell.edgeSize / 2);
124+ var touchY = shell.height / 2;
125+ touchFlick(shell, touchX, touchY, shell.width * 0.1, touchY);
126+
127+ // wait until the animation has finished
128+ tryCompare(greeter, "showProgress", 0);
129+
130+ // and for pin to be ready
131+ var lockscreen = findChild(shell, "lockscreen");
132+ var pinPadLoader = findChild(lockscreen, "pinPadLoader");
133+ tryCompare(pinPadLoader, "status", Loader.Ready)
134+ waitForRendering(lockscreen)
135+ }
136+
137+ function enterPin(pin) {
138+ var inputField = findChild(shell, "pinentryField")
139+ for (var i = 0; i < pin.length; ++i) {
140+ var character = pin.charAt(i)
141+ var button = findChild(shell, "pinPadButton" + character)
142+ mouseClick(button, units.gu(1), units.gu(1))
143+ }
144+ }
145+
146+ function test_login() {
147+ tryCompare(sessionSpy, "count", 0)
148+ enterPin("1234")
149+ tryCompare(sessionSpy, "count", 1)
150+ }
151+
152+ function test_emergencyCall() {
153+ var greeter = findChild(shell, "greeter")
154+ var lockscreen = findChild(shell, "lockscreen")
155+ var emergencyButton = findChild(lockscreen, "emergencyCallIcon")
156+ var panel = findChild(shell, "panel")
157+ var indicators = findChild(shell, "indicators")
158+ var launcher = findChild(shell, "launcher")
159+ var stage = findChild(shell, "stage")
160+
161+ mouseClick(emergencyButton, units.gu(1), units.gu(1))
162+
163+ tryCompare(greeter, "fakeActiveForApp", "dialer-app")
164+ tryCompare(lockscreen, "shown", false)
165+ tryCompare(panel, "fullscreenMode", true)
166+ tryCompare(indicators, "available", false)
167+ tryCompare(launcher, "available", false)
168+ tryCompare(stage, "spreadEnabled", false)
169+
170+ // Cancel emergency mode, and go back to normal
171+ waitForRendering(greeter)
172+ LightDM.Greeter.showGreeter()
173+
174+ tryCompare(greeter, "shown", true)
175+ tryCompare(greeter, "fakeActiveForApp", "")
176+ tryCompare(lockscreen, "shown", true)
177+ tryCompare(panel, "fullscreenMode", false)
178+ tryCompare(indicators, "available", true)
179+ tryCompare(launcher, "available", true)
180+ tryCompare(stage, "spreadEnabled", true)
181+ }
182+
183+ function test_emergencyCallCrash() {
184+ var lockscreen = findChild(shell, "lockscreen")
185+ var emergencyButton = findChild(lockscreen, "emergencyCallIcon")
186+ mouseClick(emergencyButton, units.gu(1), units.gu(1))
187+
188+ tryCompare(lockscreen, "shown", false)
189+ killApps() // kill dialer-app, as if it crashed
190+ tryCompare(lockscreen, "shown", true)
191+ }
192+
193+ function test_emergencyCallAppLaunch() {
194+ var lockscreen = findChild(shell, "lockscreen")
195+ var emergencyButton = findChild(lockscreen, "emergencyCallIcon")
196+ mouseClick(emergencyButton, units.gu(1), units.gu(1))
197+
198+ tryCompare(lockscreen, "shown", false)
199+ ApplicationManager.startApplication("gallery-app", ApplicationManager.NoFlag)
200+ tryCompare(lockscreen, "shown", true)
201+ }
202+ }
203+}