on xenial help sign in
rebased
bb2aa24Nick Dedekind
debian/changelog+49−1
@@ -7,11 +7,59 @@ unity8 (8.00) UNRELEASED; urgency=medium
7 application surfaces are added to the QML scene as items.
7 application surfaces are added to the QML scene as items.
8
8
9 [ Michael Zanetti ]
9 [ Michael Zanetti ]
10− * Rewrite phone right-edge spread code to use QtCompositor
10+ * Port phone right-edge spread code to use QtCompositor
11 * Add right-edge spread animation for tablet
11 * Add right-edge spread animation for tablet
12
12
13 -- Gerry Boland <gerry.boland@canonical.com> Thu, 10 Jul 2014 10:34:18 +0100
13 -- Gerry Boland <gerry.boland@canonical.com> Thu, 10 Jul 2014 10:34:18 +0100
14
14
15+unity8 (7.90+14.10.20140717.1-0ubuntu1) utopic; urgency=low
16+
17+ [ Michał Sawicz ]
18+ * Only generate .qmltypes files manually, no need to do it build-time.
19+ It didn't work when cross-compiling either, and required builders to
20+ have otherwise unnecessary environment.
21+ * Fix CardCreator test. It got broken with a merge that got landed
22+ along side of it.
23+
24+ [ Ying-Chun Liu ]
25+ * Add reboot/shutdown (LP: #1234062)
26+
27+ [ Albert Astals ]
28+ * Make the departments test more stable
29+
30+ [ Mirco Müller ]
31+ * Fixes gap at top of sim-unlock/fullscreen notification (point 1.),
32+ fixes blocking overlay if underlying UnityMenuModel vanishes from
33+ DBus (point 2.). The third bullet-point of the bug-report, lockup of
34+ shell-UI, could not be reproduced. (LP: #1308011)
35+
36+ [ Michael Terry ]
37+ * Expose a new greeter DBus property, IsActive, which tells apps and
38+ indicators when the integrated-greeter screen is active. Useful for
39+ switching UI modes when the screen is locked.
40+ * Allow the session to bring up the greeter/lockscreen over DBus. The
41+ emergency dialer will need this support in order to cancel bringing
42+ it up.
43+
44+ [ Michael Zanetti ]
45+ * Fixes gap at top of sim-unlock/fullscreen notification (point 1.),
46+ fixes blocking overlay if underlying UnityMenuModel vanishes from
47+ DBus (point 2.). The third bullet-point of the bug-report, lockup of
48+ shell-UI, could not be reproduced. (LP: #1308011)
49+
50+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Thu, 17 Jul 2014 09:38:20 +0000
51+
52+unity8 (7.90+14.10.20140714-0ubuntu1) utopic; urgency=low
53+
54+ [ Michał Sawicz ]
55+ * Activate all results in click scope by default. (LP: #1341262)
56+
57+ [ Mirco Müller ]
58+ * Added support for utilization of the ComboButton SDK-element for
59+ snap-decision notifications with many actions.
60+
61+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Mon, 14 Jul 2014 18:20:25 +0000
62+
15unity8 (7.90+14.10.20140709.2-0ubuntu1) utopic; urgency=low
63unity8 (7.90+14.10.20140709.2-0ubuntu1) utopic; urgency=low
16
64
17 [ Michal Hruby ]
65 [ Michal Hruby ]
debian/control+4−4
@@ -17,7 +17,7 @@ Build-Depends: cmake,
17 libhud-client2-dev,
17 libhud-client2-dev,
18 libpay1-dev,
18 libpay1-dev,
19 libpulse-dev,
19 libpulse-dev,
20− libqmenumodel-dev (>= 0.2.7),
20+ libqmenumodel-dev (>= 0.2.8),
21 libqt5xmlpatterns5-dev,
21 libqt5xmlpatterns5-dev,
22 libunity-api-dev (>= 7.85),
22 libunity-api-dev (>= 7.85),
23 libusermetricsoutput1-dev,
23 libusermetricsoutput1-dev,
@@ -51,7 +51,7 @@ Vcs-Browser: https://bazaar.launchpad.net/~unity-team/unity8/trunk
51
51
52Package: indicators-client
52Package: indicators-client
53Architecture: amd64 armhf i386
53Architecture: amd64 armhf i386
54−Depends: qmenumodel-qml (>= 0.2.7),
54+Depends: qmenumodel-qml (>= 0.2.8),
55 qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 0.1.49) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 0.1.49),
55 qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 0.1.49) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 0.1.49),
56 unity8 (= ${binary:Version}),
56 unity8 (= ${binary:Version}),
57 ${misc:Depends},
57 ${misc:Depends},
@@ -75,7 +75,7 @@ Provides: indicator-renderer,
75Depends: gsettings-desktop-schemas,
75Depends: gsettings-desktop-schemas,
76 libcap2-bin,
76 libcap2-bin,
77 libglib2.0-bin,
77 libglib2.0-bin,
78− qmenumodel-qml (>= 0.2.7),
78+ qmenumodel-qml (>= 0.2.8),
79 qml-module-qtquick-xmllistmodel,
79 qml-module-qtquick-xmllistmodel,
80 qtdeclarative5-gsettings1.0,
80 qtdeclarative5-gsettings1.0,
81 qtdeclarative5-qtmir-plugin (>= 0.4),
81 qtdeclarative5-qtmir-plugin (>= 0.4),
@@ -102,7 +102,7 @@ Package: unity8-common
102Architecture: all
102Architecture: all
103Depends: qtdeclarative5-ubuntu-thumbnailer0.1 | ubuntu-thumbnailer-impl,
103Depends: qtdeclarative5-ubuntu-thumbnailer0.1 | ubuntu-thumbnailer-impl,
104 qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 0.1.49) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 0.1.49),
104 qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 0.1.49) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 0.1.49),
105− qtdeclarative5-unity-notifications-plugin | unity-notifications-impl,
105+ qtdeclarative5-unity-notifications-plugin (>= 0.1.2) | unity-notifications-impl,
106 ubuntu-thumbnailer-impl-0,
106 ubuntu-thumbnailer-impl-0,
107 unity-application-impl-2,
107 unity-application-impl-2,
108 unity-notifications-impl-3,
108 unity-notifications-impl-3,
plugins/LightDM/CMakeLists.txt+1
@@ -15,6 +15,7 @@ include_directories(
15
15
16set(QMLPLUGIN_SRC
16set(QMLPLUGIN_SRC
17 ../Utils/qsortfilterproxymodelqml.cpp # FIXME evaluate a more generic approach for using other plugins
17 ../Utils/qsortfilterproxymodelqml.cpp # FIXME evaluate a more generic approach for using other plugins
18+ DBusGreeter.cpp
18 DBusGreeterList.cpp
19 DBusGreeterList.cpp
19 Greeter.cpp
20 Greeter.cpp
20 plugin.cpp
21 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:
25 explicit GreeterPrivate(Greeter *parent);
25 explicit GreeterPrivate(Greeter *parent);
26
26
27 QLightDM::Greeter *m_greeter;
27 QLightDM::Greeter *m_greeter;
28+ bool m_active;
28 bool wasPrompted;
29 bool wasPrompted;
29 bool promptless;
30 bool promptless;
30
31
@@ -38,6 +39,7 @@ private:
38
39
39GreeterPrivate::GreeterPrivate(Greeter* parent)
40GreeterPrivate::GreeterPrivate(Greeter* parent)
40 : m_greeter(new QLightDM::Greeter(parent)),
41 : m_greeter(new QLightDM::Greeter(parent)),
42+ m_active(false),
41 wasPrompted(false),
43 wasPrompted(false),
42 promptless(false),
44 promptless(false),
43 q_ptr(parent)
45 q_ptr(parent)
@@ -60,6 +62,21 @@ Greeter::Greeter(QObject* parent)
60 d->m_greeter->connectSync();
62 d->m_greeter->connectSync();
61}
63}
62
64
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+
63bool Greeter::isAuthenticated() const
80bool Greeter::isAuthenticated() const
64{
81{
65 Q_D(const Greeter);
82 Q_D(const Greeter);
plugins/LightDM/Greeter.h+5
@@ -34,6 +34,7 @@ class Greeter : public QObject
34{
34{
35 Q_OBJECT
35 Q_OBJECT
36
36
37+ Q_PROPERTY(bool active READ isActive WRITE setIsActive NOTIFY isActiveChanged)
37 Q_PROPERTY(bool authenticated READ isAuthenticated)
38 Q_PROPERTY(bool authenticated READ isAuthenticated)
38 Q_PROPERTY(QString authenticationUser READ authenticationUser NOTIFY authenticationUserChanged)
39 Q_PROPERTY(QString authenticationUser READ authenticationUser NOTIFY authenticationUserChanged)
39 Q_PROPERTY(bool promptless READ promptless NOTIFY promptlessChanged)
40 Q_PROPERTY(bool promptless READ promptless NOTIFY promptlessChanged)
@@ -41,6 +42,7 @@ class Greeter : public QObject
41public:
42public:
42 explicit Greeter(QObject* parent=0);
43 explicit Greeter(QObject* parent=0);
43
44
45+ bool isActive() const;
44 bool isAuthenticated() const;
46 bool isAuthenticated() const;
45 QString authenticationUser() const;
47 QString authenticationUser() const;
46 bool promptless() const;
48 bool promptless() const;
@@ -49,13 +51,16 @@ public Q_SLOTS:
49 void authenticate(const QString &username=QString());
51 void authenticate(const QString &username=QString());
50 void respond(const QString &response);
52 void respond(const QString &response);
51 bool startSessionSync(const QString &session=QString());
53 bool startSessionSync(const QString &session=QString());
54+ void setIsActive(bool isActive);
52
55
53Q_SIGNALS:
56Q_SIGNALS:
54 void showMessage(const QString &text, bool isError);
57 void showMessage(const QString &text, bool isError);
55 void showPrompt(const QString &text, bool isSecret);
58 void showPrompt(const QString &text, bool isSecret);
56 void authenticationComplete();
59 void authenticationComplete();
57 void authenticationUserChanged(const QString &user);
60 void authenticationUserChanged(const QString &user);
61+ void isActiveChanged();
58 void promptlessChanged();
62 void promptlessChanged();
63+ void showGreeter();
59
64
60 // This signal is emitted by external agents like indicators, and the UI
65 // This signal is emitted by external agents like indicators, and the UI
61 // should switch to this user if possible.
66 // should switch to this user if possible.
plugins/LightDM/plugin.cpp+3
@@ -18,6 +18,7 @@
18 */
18 */
19
19
20#include "plugin.h"
20#include "plugin.h"
21+#include "DBusGreeter.h"
21#include "DBusGreeterList.h"
22#include "DBusGreeterList.h"
22#include "Greeter.h"
23#include "Greeter.h"
23#include "UsersModel.h"
24#include "UsersModel.h"
@@ -39,6 +40,8 @@ static QObject *greeter_provider(QQmlEngine *engine, QJSEngine *scriptEngine)
39
40
40 Greeter *greeter = new Greeter();
41 Greeter *greeter = new Greeter();
41 QDBusConnection connection = QDBusConnection::sessionBus();
42 QDBusConnection connection = QDBusConnection::sessionBus();
43+ DBusGreeter *root = new DBusGreeter(greeter, connection, "/");
44+ connection.registerObject("/", root, QDBusConnection::ExportScriptableContents);
42 DBusGreeterList *list = new DBusGreeterList(greeter, connection, GREETER_LIST_DBUS_PATH);
45 DBusGreeterList *list = new DBusGreeterList(greeter, connection, GREETER_LIST_DBUS_PATH);
43 connection.registerObject(GREETER_LIST_DBUS_PATH, list, QDBusConnection::ExportScriptableContents);
46 connection.registerObject(GREETER_LIST_DBUS_PATH, list, QDBusConnection::ExportScriptableContents);
44 connection.registerService(GREETER_DBUS_SERVICE);
47 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 {
15 isSingleton: true
15 isSingleton: true
16 exportMetaObjectRevisions: [0]
16 exportMetaObjectRevisions: [0]
17 Enum {
17 Enum {
18− name: "DisplayFlag"
18+ name: "DisplayStateChangeReason"
19 values: {
19 values: {
20− "UseProximity": 1,
20+ "Unknown": 0,
21− "DisableAutoBrightness": 2,
21+ "Inactivity": 1,
22− "Bright": 4
22+ "PowerKey": 2,
23− }
23+ "Proximity": 3
24− }
25− Enum {
26− name: "DisplayFlags"
27− values: {
28− "UseProximity": 1,
29− "DisableAutoBrightness": 2,
30− "Bright": 4
31 }
24 }
32 }
25 }
33 Enum {
26 Enum {
@@ -40,7 +33,7 @@ Module {
40 Signal {
33 Signal {
41 name: "displayPowerStateChange"
34 name: "displayPowerStateChange"
42 Parameter { name: "status"; type: "int" }
35 Parameter { name: "status"; type: "int" }
43− Parameter { name: "flags"; type: "uint" }
36+ Parameter { name: "reason"; type: "int" }
44 }
37 }
45 }
38 }
46}
39}
plugins/Ubuntu/Gestures/Gestures.qmltypes+1
@@ -141,6 +141,7 @@ Module {
141 name: "touchSceneYChanged"
141 name: "touchSceneYChanged"
142 Parameter { name: "value"; type: "double" }
142 Parameter { name: "value"; type: "double" }
143 }
143 }
144+ Signal { name: "tapped" }
144 }
145 }
145 Component {
146 Component {
146 name: "PressedOutsideNotifier"
147 name: "PressedOutsideNotifier"
plugins/Unity/Session/dbusunitysessionservice.cpp+33
@@ -19,6 +19,7 @@
19
19
20// Qt
20// Qt
21#include <QDBusConnection>
21#include <QDBusConnection>
22+#include <QDBusInterface>
22
23
23DBusUnitySessionService::DBusUnitySessionService() : QObject()
24DBusUnitySessionService::DBusUnitySessionService() : QObject()
24{
25{
@@ -44,3 +45,35 @@ void DBusUnitySessionService::RequestLogout()
44{
45{
45 Q_EMIT logoutRequested(false);
46 Q_EMIT logoutRequested(false);
46}
47}
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:
46 */
46 */
47 void logoutRequested(bool have_inhibitors);
47 void logoutRequested(bool have_inhibitors);
48
48
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+
49 /**
70 /**
50 * logoutReady signal
71 * logoutReady signal
51 *
72 *
@@ -61,22 +82,58 @@ public Q_SLOTS:
61 * This method directly logout the system without user's confirmation.
82 * This method directly logout the system without user's confirmation.
62 * Ordinary applications should avoid calling this method. Please call
83 * Ordinary applications should avoid calling this method. Please call
63 * RequestLogout() to ask the user to decide logout or not.
84 * 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.
66 */
85 */
67 Q_SCRIPTABLE void Logout();
86 Q_SCRIPTABLE void Logout();
68
87
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+
69 /**
106 /**
70 * Issue a logout request.
107 * Issue a logout request.
71 *
108 *
72 * This method emit the logoutRequested signal to the shell with a boolean
109 * This method emit the logoutRequested signal to the shell with a boolean
73 * which indicates if there's any inhibitors. The shell should receive
110 * which indicates if there's any inhibitors. The shell should receive
74 * this signal and display a dialog to ask the user to confirm the logout
111 * 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
112+ * action. If confirmed, shell can call Logout() method to logout.
76− * and then logout
77 */
113 */
78 Q_SCRIPTABLE void RequestLogout();
114 Q_SCRIPTABLE void RequestLogout();
79
115
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+
80};
137};
81
138
82#endif // DBUSUNITYSESSIONSERVICE_H
139#endif // DBUSUNITYSESSIONSERVICE_H
plugins/Utils/CMakeLists.txt+1
@@ -15,6 +15,7 @@ set(QMLPLUGIN_SRC
15 qsortfilterproxymodelqml.cpp
15 qsortfilterproxymodelqml.cpp
16 timeformatter.cpp
16 timeformatter.cpp
17 unitymenumodelpaths.cpp
17 unitymenumodelpaths.cpp
18+ windowkeysfilter.cpp
18 easingcurve.cpp
19 easingcurve.cpp
19 plugin.cpp
20 plugin.cpp
20 )
21 )
plugins/Utils/plugin.cpp+2
@@ -30,6 +30,7 @@
30#include "qsortfilterproxymodelqml.h"
30#include "qsortfilterproxymodelqml.h"
31#include "timeformatter.h"
31#include "timeformatter.h"
32#include "unitymenumodelpaths.h"
32#include "unitymenumodelpaths.h"
33+#include "windowkeysfilter.h"
33#include "easingcurve.h"
34#include "easingcurve.h"
34
35
35void UtilsPlugin::registerTypes(const char *uri)
36void UtilsPlugin::registerTypes(const char *uri)
@@ -40,6 +41,7 @@ void UtilsPlugin::registerTypes(const char *uri)
40 qmlRegisterType<QSortFilterProxyModelQML>(uri, 0, 1, "SortFilterProxyModel");
41 qmlRegisterType<QSortFilterProxyModelQML>(uri, 0, 1, "SortFilterProxyModel");
41 qmlRegisterType<UnityMenuModelPaths>(uri, 0, 1, "UnityMenuModelPaths");
42 qmlRegisterType<UnityMenuModelPaths>(uri, 0, 1, "UnityMenuModelPaths");
42 qmlRegisterType<TimeFormatter>(uri, 0, 1, "TimeFormatter");
43 qmlRegisterType<TimeFormatter>(uri, 0, 1, "TimeFormatter");
44+ qmlRegisterType<WindowKeysFilter>(uri, 0, 1, "WindowKeysFilter");
43 qmlRegisterType<GDateTimeFormatter>(uri, 0, 1, "GDateTimeFormatter");
45 qmlRegisterType<GDateTimeFormatter>(uri, 0, 1, "GDateTimeFormatter");
44 qmlRegisterType<EasingCurve>(uri, 0, 1, "EasingCurve");
46 qmlRegisterType<EasingCurve>(uri, 0, 1, "EasingCurve");
45}
47}
plugins/Utils/windowkeysfilter.cppnew file+57
@@ -0,0 +1,57 @@
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+ * Author: Daniel d'Andrada <daniel.dandrada@canonical.com>
17+ */
18+
19+#include "windowkeysfilter.h"
20+
21+#include <QQuickWindow>
22+
23+WindowKeysFilter::WindowKeysFilter(QQuickItem *parent)
24+ : QQuickItem(parent)
25+{
26+ connect(this, &QQuickItem::windowChanged,
27+ this, &WindowKeysFilter::setupFilterOnWindow);
28+}
29+
30+bool WindowKeysFilter::eventFilter(QObject *watched, QEvent *event)
31+{
32+ Q_ASSERT(!m_filteredWindow.isNull());
33+ Q_ASSERT(watched == static_cast<QObject*>(m_filteredWindow.data()));
34+
35+ if (event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease) {
36+ // Let QML see this event and decide if it does not want it
37+ event->accept();
38+ QCoreApplication::sendEvent(this, event);
39+ return event->isAccepted();
40+ } else {
41+ // Not interested
42+ return false;
43+ }
44+}
45+
46+void WindowKeysFilter::setupFilterOnWindow(QQuickWindow *window)
47+{
48+ if (!m_filteredWindow.isNull()) {
49+ m_filteredWindow->removeEventFilter(this);
50+ m_filteredWindow.clear();
51+ }
52+
53+ if (window) {
54+ window->installEventFilter(this);
55+ m_filteredWindow = window;
56+ }
57+}
plugins/Utils/windowkeysfilter.hnew file+51
@@ -0,0 +1,51 @@
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+ * Author: Daniel d'Andrada <daniel.dandrada@canonical.com>
17+ */
18+
19+#ifndef UNITY_WINDOWKEYSFILTER_H
20+#define UNITY_WINDOWKEYSFILTER_H
21+
22+#include <QQuickItem>
23+#include <QPointer>
24+
25+/*
26+ Receives all key events that arrive in the QQuickWindow where this item is placed.
27+
28+ Rejected key events will be allowed to be processed normally by the QQuickWindow whereas
29+ accepted ones will be filtered out. Events are accepted by default, so make sure you reject
30+ the keys you're not interested in.
31+
32+ If more than one WindowKeysFilter exist in the same QML scene (and thus in the same QQuickWindow)
33+ they will be called in the order of creation, which can be tricky to assess. So the best practice
34+ is to have at most one WindowKeysFilter per QML scene.
35+ */
36+class WindowKeysFilter : public QQuickItem
37+{
38+ Q_OBJECT
39+public:
40+ WindowKeysFilter(QQuickItem *parent = 0);
41+
42+ bool eventFilter(QObject *watched, QEvent *event);
43+
44+private Q_SLOTS:
45+ void setupFilterOnWindow(QQuickWindow *window);
46+
47+private:
48+ QPointer<QQuickWindow> m_filteredWindow;
49+};
50+
51+#endif // UNITY_WINDOWKEYSFILTER_H
po/ast.po+11−11
@@ -8,23 +8,23 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-07-07 12:15+0100\n"
10"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"
12"Last-Translator: ivarela <ivarela@ubuntu.com>\n"
12"Last-Translator: ivarela <ivarela@ubuntu.com>\n"
13"Language-Team: Asturian <ast@li.org>\n"
13"Language-Team: Asturian <ast@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-16 07:27+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17112)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
22msgid "Pin shortcut"
22msgid "Pin shortcut"
23−msgstr ""
23+msgstr "Anclar"
24
24
25#: plugins/Unity/Launcher/launcheritem.cpp:73
25#: plugins/Unity/Launcher/launcheritem.cpp:73
26msgid "Unpin shortcut"
26msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "Desanclar"
28
28
29#: qml/Components/EdgeDemoOverlay.qml:151
29#: qml/Components/EdgeDemoOverlay.qml:151
30msgid "Skip intro"
30msgid "Skip intro"
@@ -171,27 +171,27 @@ msgstr "Escribi'l PIN de la SIM"
171
171
172#: qml/Panel/Indicators/MenuItemFactory.qml:583
172#: qml/Panel/Indicators/MenuItemFactory.qml:583
173msgid "In queue…"
173msgid "In queue…"
174−msgstr ""
174+msgstr "N'espera…"
175
175
176#: qml/Panel/Indicators/MenuItemFactory.qml:587
176#: qml/Panel/Indicators/MenuItemFactory.qml:587
177msgid "Downloading"
177msgid "Downloading"
178−msgstr ""
178+msgstr "Baxando"
179
179
180#: qml/Panel/Indicators/MenuItemFactory.qml:589
180#: qml/Panel/Indicators/MenuItemFactory.qml:589
181msgid "Paused, tap to resume"
181msgid "Paused, tap to resume"
182−msgstr ""
182+msgstr "Posáu, toca pa reanudar"
183
183
184#: qml/Panel/Indicators/MenuItemFactory.qml:591
184#: qml/Panel/Indicators/MenuItemFactory.qml:591
185msgid "Canceled"
185msgid "Canceled"
186−msgstr ""
186+msgstr "Encaboxáu"
187
187
188#: qml/Panel/Indicators/MenuItemFactory.qml:593
188#: qml/Panel/Indicators/MenuItemFactory.qml:593
189msgid "Finished"
189msgid "Finished"
190−msgstr ""
190+msgstr "Finó"
191
191
192#: qml/Panel/Indicators/MenuItemFactory.qml:595
192#: qml/Panel/Indicators/MenuItemFactory.qml:595
193msgid "Failed, tap to retry"
193msgid "Failed, tap to retry"
194−msgstr ""
194+msgstr "Falló, toca pa reintentar"
195
195
196#: qml/Panel/SearchIndicator.qml:27
196#: qml/Panel/SearchIndicator.qml:27
197msgid "Search"
197msgid "Search"
po/br.po+11−11
@@ -8,23 +8,23 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-07-07 12:15+0100\n"
10"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"
12"Last-Translator: Fohanno Thierry <thierry.fohanno@ofis-bzh.org>\n"
12"Last-Translator: Fohanno Thierry <thierry.fohanno@ofis-bzh.org>\n"
13"Language-Team: Breton <br@li.org>\n"
13"Language-Team: Breton <br@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-16 07:27+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17112)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
22msgid "Pin shortcut"
22msgid "Pin shortcut"
23−msgstr ""
23+msgstr "Spilhennañ ar verradenn"
24
24
25#: plugins/Unity/Launcher/launcheritem.cpp:73
25#: plugins/Unity/Launcher/launcheritem.cpp:73
26msgid "Unpin shortcut"
26msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "Dispilhennañ ar verradenn"
28
28
29#: qml/Components/EdgeDemoOverlay.qml:151
29#: qml/Components/EdgeDemoOverlay.qml:151
30msgid "Skip intro"
30msgid "Skip intro"
@@ -174,27 +174,27 @@ msgstr "Ebarzhit kod PIN ho kartenn SIM, mar plij"
174
174
175#: qml/Panel/Indicators/MenuItemFactory.qml:583
175#: qml/Panel/Indicators/MenuItemFactory.qml:583
176msgid "In queue…"
176msgid "In queue…"
177−msgstr ""
177+msgstr "El lostennad..."
178
178
179#: qml/Panel/Indicators/MenuItemFactory.qml:587
179#: qml/Panel/Indicators/MenuItemFactory.qml:587
180msgid "Downloading"
180msgid "Downloading"
181−msgstr ""
181+msgstr "O pellgargañ"
182
182
183#: qml/Panel/Indicators/MenuItemFactory.qml:589
183#: qml/Panel/Indicators/MenuItemFactory.qml:589
184msgid "Paused, tap to resume"
184msgid "Paused, tap to resume"
185−msgstr ""
185+msgstr "Ehanet, touchit evit adkregiñ"
186
186
187#: qml/Panel/Indicators/MenuItemFactory.qml:591
187#: qml/Panel/Indicators/MenuItemFactory.qml:591
188msgid "Canceled"
188msgid "Canceled"
189−msgstr ""
189+msgstr "Nullet"
190
190
191#: qml/Panel/Indicators/MenuItemFactory.qml:593
191#: qml/Panel/Indicators/MenuItemFactory.qml:593
192msgid "Finished"
192msgid "Finished"
193−msgstr ""
193+msgstr "Echu"
194
194
195#: qml/Panel/Indicators/MenuItemFactory.qml:595
195#: qml/Panel/Indicators/MenuItemFactory.qml:595
196msgid "Failed, tap to retry"
196msgid "Failed, tap to retry"
197−msgstr ""
197+msgstr "C'hwitet, touchit evit adkregiñ"
198
198
199#: qml/Panel/SearchIndicator.qml:27
199#: qml/Panel/SearchIndicator.qml:27
200msgid "Search"
200msgid "Search"
po/de.po+12−12
@@ -8,14 +8,14 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-07-07 12:15+0100\n"
10"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"
12"Last-Translator: Phillip Sz <Unknown>\n"
12"Last-Translator: Phillip Sz <Unknown>\n"
13"Language-Team: German <de@li.org>\n"
13"Language-Team: German <de@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-16 07:27+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17112)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -83,7 +83,7 @@ msgstr "Notruf"
83
83
84#: qml/Components/Lockscreen.qml:231
84#: qml/Components/Lockscreen.qml:231
85msgid "OK"
85msgid "OK"
86−msgstr ""
86+msgstr "OK"
87
87
88#: qml/Components/PageHeader.qml:366
88#: qml/Components/PageHeader.qml:366
89msgid "Recent searches"
89msgid "Recent searches"
@@ -100,11 +100,11 @@ msgstr "Hallo"
100
100
101#: qml/Components/PinLockscreen.qml:198
101#: qml/Components/PinLockscreen.qml:198
102msgid "CANCEL"
102msgid "CANCEL"
103−msgstr ""
103+msgstr "ABBRECHEN"
104
104
105#: qml/Components/PinLockscreen.qml:216
105#: qml/Components/PinLockscreen.qml:216
106msgid "DONE"
106msgid "DONE"
107−msgstr ""
107+msgstr "ERLEDIGT"
108
108
109#: qml/Components/SeeMore.qml:35
109#: qml/Components/SeeMore.qml:35
110msgid "See more"
110msgid "See more"
@@ -172,27 +172,27 @@ msgstr "Bitte die PIN der SIM eingeben"
172
172
173#: qml/Panel/Indicators/MenuItemFactory.qml:583
173#: qml/Panel/Indicators/MenuItemFactory.qml:583
174msgid "In queue…"
174msgid "In queue…"
175−msgstr ""
175+msgstr "In Warteschlange …"
176
176
177#: qml/Panel/Indicators/MenuItemFactory.qml:587
177#: qml/Panel/Indicators/MenuItemFactory.qml:587
178msgid "Downloading"
178msgid "Downloading"
179−msgstr ""
179+msgstr "Wird heruntergeladen"
180
180
181#: qml/Panel/Indicators/MenuItemFactory.qml:589
181#: qml/Panel/Indicators/MenuItemFactory.qml:589
182msgid "Paused, tap to resume"
182msgid "Paused, tap to resume"
183−msgstr ""
183+msgstr "Pausiert, tippen Sie zum fortsetzen"
184
184
185#: qml/Panel/Indicators/MenuItemFactory.qml:591
185#: qml/Panel/Indicators/MenuItemFactory.qml:591
186msgid "Canceled"
186msgid "Canceled"
187−msgstr ""
187+msgstr "Abgebrochen"
188
188
189#: qml/Panel/Indicators/MenuItemFactory.qml:593
189#: qml/Panel/Indicators/MenuItemFactory.qml:593
190msgid "Finished"
190msgid "Finished"
191−msgstr ""
191+msgstr "Erledigt"
192
192
193#: qml/Panel/Indicators/MenuItemFactory.qml:595
193#: qml/Panel/Indicators/MenuItemFactory.qml:595
194msgid "Failed, tap to retry"
194msgid "Failed, tap to retry"
195−msgstr ""
195+msgstr "Fehlgeschlagen, tippen Sie zum Wiederholen"
196
196
197#: qml/Panel/SearchIndicator.qml:27
197#: qml/Panel/SearchIndicator.qml:27
198msgid "Search"
198msgid "Search"
po/en_GB.po+17−17
@@ -8,23 +8,23 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-07-07 12:15+0100\n"
10"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2014-03-07 13:27+0000\n"
11+"PO-Revision-Date: 2014-07-10 10:59+0000\n"
12−"Last-Translator: Andi Chandler <Unknown>\n"
12+"Last-Translator: Alan Pope ㋛ <alan@ubuntu.com>\n"
13"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
13"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-11 06:15+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17111)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
22msgid "Pin shortcut"
22msgid "Pin shortcut"
23−msgstr ""
23+msgstr "Pin shortcut"
24
24
25#: plugins/Unity/Launcher/launcheritem.cpp:73
25#: plugins/Unity/Launcher/launcheritem.cpp:73
26msgid "Unpin shortcut"
26msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "Unpin shortcut"
28
28
29#: qml/Components/EdgeDemoOverlay.qml:151
29#: qml/Components/EdgeDemoOverlay.qml:151
30msgid "Skip intro"
30msgid "Skip intro"
@@ -80,7 +80,7 @@ msgstr "Emergency Call"
80
80
81#: qml/Components/Lockscreen.qml:231
81#: qml/Components/Lockscreen.qml:231
82msgid "OK"
82msgid "OK"
83−msgstr ""
83+msgstr "OK"
84
84
85#: qml/Components/PageHeader.qml:366
85#: qml/Components/PageHeader.qml:366
86msgid "Recent searches"
86msgid "Recent searches"
@@ -97,11 +97,11 @@ msgstr "Hello"
97
97
98#: qml/Components/PinLockscreen.qml:198
98#: qml/Components/PinLockscreen.qml:198
99msgid "CANCEL"
99msgid "CANCEL"
100−msgstr ""
100+msgstr "CANCEL"
101
101
102#: qml/Components/PinLockscreen.qml:216
102#: qml/Components/PinLockscreen.qml:216
103msgid "DONE"
103msgid "DONE"
104−msgstr ""
104+msgstr "DONE"
105
105
106#: qml/Components/SeeMore.qml:35
106#: qml/Components/SeeMore.qml:35
107msgid "See more"
107msgid "See more"
@@ -113,7 +113,7 @@ msgstr "See less"
113
113
114#: qml/Dash/DashApps.qml:37
114#: qml/Dash/DashApps.qml:37
115msgid "Recent"
115msgid "Recent"
116−msgstr ""
116+msgstr "Recent"
117
117
118#: qml/Dash/Previews/PreviewActionCombo.qml:34
118#: qml/Dash/Previews/PreviewActionCombo.qml:34
119msgid "More..."
119msgid "More..."
@@ -137,7 +137,7 @@ msgstr "Send"
137
137
138#: qml/Greeter/Greeter.qml:157
138#: qml/Greeter/Greeter.qml:157
139msgid "Swipe to unlock"
139msgid "Swipe to unlock"
140−msgstr ""
140+msgstr "Swipe to unlock"
141
141
142#: qml/Hud/HudParametrizedActionsPage.qml:132
142#: qml/Hud/HudParametrizedActionsPage.qml:132
143msgid "Confirm"
143msgid "Confirm"
@@ -169,27 +169,27 @@ msgstr "Please enter SIM PIN"
169
169
170#: qml/Panel/Indicators/MenuItemFactory.qml:583
170#: qml/Panel/Indicators/MenuItemFactory.qml:583
171msgid "In queue…"
171msgid "In queue…"
172−msgstr ""
172+msgstr "In queue…"
173
173
174#: qml/Panel/Indicators/MenuItemFactory.qml:587
174#: qml/Panel/Indicators/MenuItemFactory.qml:587
175msgid "Downloading"
175msgid "Downloading"
176−msgstr ""
176+msgstr "Downloading"
177
177
178#: qml/Panel/Indicators/MenuItemFactory.qml:589
178#: qml/Panel/Indicators/MenuItemFactory.qml:589
179msgid "Paused, tap to resume"
179msgid "Paused, tap to resume"
180−msgstr ""
180+msgstr "Paused, tap to resume"
181
181
182#: qml/Panel/Indicators/MenuItemFactory.qml:591
182#: qml/Panel/Indicators/MenuItemFactory.qml:591
183msgid "Canceled"
183msgid "Canceled"
184−msgstr ""
184+msgstr "Cancelled"
185
185
186#: qml/Panel/Indicators/MenuItemFactory.qml:593
186#: qml/Panel/Indicators/MenuItemFactory.qml:593
187msgid "Finished"
187msgid "Finished"
188−msgstr ""
188+msgstr "Finished"
189
189
190#: qml/Panel/Indicators/MenuItemFactory.qml:595
190#: qml/Panel/Indicators/MenuItemFactory.qml:595
191msgid "Failed, tap to retry"
191msgid "Failed, tap to retry"
192−msgstr ""
192+msgstr "Failed, tap to retry"
193
193
194#: qml/Panel/SearchIndicator.qml:27
194#: qml/Panel/SearchIndicator.qml:27
195msgid "Search"
195msgid "Search"
po/es.po+11−11
@@ -8,23 +8,23 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-07-07 12:15+0100\n"
10"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"
12"Last-Translator: Adolfo Jayme <fitoschido@gmail.com>\n"
12"Last-Translator: Adolfo Jayme <fitoschido@gmail.com>\n"
13"Language-Team: Spanish <es@li.org>\n"
13"Language-Team: Spanish <es@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-13 06:33+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17111)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
22msgid "Pin shortcut"
22msgid "Pin shortcut"
23−msgstr ""
23+msgstr "Anclar"
24
24
25#: plugins/Unity/Launcher/launcheritem.cpp:73
25#: plugins/Unity/Launcher/launcheritem.cpp:73
26msgid "Unpin shortcut"
26msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "Desanclar"
28
28
29#: qml/Components/EdgeDemoOverlay.qml:151
29#: qml/Components/EdgeDemoOverlay.qml:151
30msgid "Skip intro"
30msgid "Skip intro"
@@ -172,27 +172,27 @@ msgstr "Escriba el PIN de la SIM"
172
172
173#: qml/Panel/Indicators/MenuItemFactory.qml:583
173#: qml/Panel/Indicators/MenuItemFactory.qml:583
174msgid "In queue…"
174msgid "In queue…"
175−msgstr ""
175+msgstr "En espera…"
176
176
177#: qml/Panel/Indicators/MenuItemFactory.qml:587
177#: qml/Panel/Indicators/MenuItemFactory.qml:587
178msgid "Downloading"
178msgid "Downloading"
179−msgstr ""
179+msgstr "Descargando"
180
180
181#: qml/Panel/Indicators/MenuItemFactory.qml:589
181#: qml/Panel/Indicators/MenuItemFactory.qml:589
182msgid "Paused, tap to resume"
182msgid "Paused, tap to resume"
183−msgstr ""
183+msgstr "Pausado, toque para reanudar"
184
184
185#: qml/Panel/Indicators/MenuItemFactory.qml:591
185#: qml/Panel/Indicators/MenuItemFactory.qml:591
186msgid "Canceled"
186msgid "Canceled"
187−msgstr ""
187+msgstr "Cancelado"
188
188
189#: qml/Panel/Indicators/MenuItemFactory.qml:593
189#: qml/Panel/Indicators/MenuItemFactory.qml:593
190msgid "Finished"
190msgid "Finished"
191−msgstr ""
191+msgstr "Finalizado"
192
192
193#: qml/Panel/Indicators/MenuItemFactory.qml:595
193#: qml/Panel/Indicators/MenuItemFactory.qml:595
194msgid "Failed, tap to retry"
194msgid "Failed, tap to retry"
195−msgstr ""
195+msgstr "Falló, toque para reintentar"
196
196
197#: qml/Panel/SearchIndicator.qml:27
197#: qml/Panel/SearchIndicator.qml:27
198msgid "Search"
198msgid "Search"
po/eu.po+18−18
@@ -8,23 +8,23 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-07-07 12:15+0100\n"
10"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"
12"Last-Translator: Ibai Oihanguren Sala <Unknown>\n"
12"Last-Translator: Ibai Oihanguren Sala <Unknown>\n"
13"Language-Team: Basque <eu@li.org>\n"
13"Language-Team: Basque <eu@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-17 06:38+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17114)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
22msgid "Pin shortcut"
22msgid "Pin shortcut"
23−msgstr ""
23+msgstr "Ainguratu lasterbidea"
24
24
25#: plugins/Unity/Launcher/launcheritem.cpp:73
25#: plugins/Unity/Launcher/launcheritem.cpp:73
26msgid "Unpin shortcut"
26msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "Askatu lasterbidea"
28
28
29#: qml/Components/EdgeDemoOverlay.qml:151
29#: qml/Components/EdgeDemoOverlay.qml:151
30msgid "Skip intro"
30msgid "Skip intro"
@@ -52,7 +52,7 @@ msgstr "Itxi"
52
52
53#: qml/Components/EdgeDemo.qml:172
53#: qml/Components/EdgeDemo.qml:172
54msgid "Swipe up again to close the settings screen"
54msgid "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"
56
56
57#: qml/Components/EdgeDemo.qml:199
57#: qml/Components/EdgeDemo.qml:199
58msgid "Left edge"
58msgid "Left edge"
@@ -61,7 +61,7 @@ msgstr "Ezkerreko ertza"
61#: qml/Components/EdgeDemo.qml:200
61#: qml/Components/EdgeDemo.qml:200
62msgid "Swipe from the left to reveal the launcher for quick access to apps"
62msgid "Swipe from the left to reveal the launcher for quick access to apps"
63msgstr ""
63msgstr ""
64−"Arrastatu ezkerretik abiarazlea erakutsi eta aplikazioak eskura berehala "
64+"Pasatu hatza ezkerretik abiarazlea erakutsi eta aplikazioak eskura berehala "
65"izateko"
65"izateko"
66
66
67#: qml/Components/EdgeDemo.qml:227
67#: qml/Components/EdgeDemo.qml:227
@@ -74,7 +74,7 @@ msgid ""
74"phone<br><br>Tap on the screen to start"
74"phone<br><br>Tap on the screen to start"
75msgstr ""
75msgstr ""
76"Jadanik ezagutzen dituzu ertzetako keinuak, eta mugikorra erabiltzen has "
76"Jadanik ezagutzen dituzu ertzetako keinuak, eta mugikorra erabiltzen has "
77−"zaitezke<br><br>Ukitu pantaila hasteko"
77+"zaitezke<br><br>Sakatu pantailan hasteko"
78
78
79#: qml/Components/Lockscreen.qml:214
79#: qml/Components/Lockscreen.qml:214
80msgid "Emergency Call"
80msgid "Emergency Call"
@@ -82,7 +82,7 @@ msgstr "Larrialdi-deia"
82
82
83#: qml/Components/Lockscreen.qml:231
83#: qml/Components/Lockscreen.qml:231
84msgid "OK"
84msgid "OK"
85−msgstr ""
85+msgstr "Ados"
86
86
87#: qml/Components/PageHeader.qml:366
87#: qml/Components/PageHeader.qml:366
88msgid "Recent searches"
88msgid "Recent searches"
@@ -99,11 +99,11 @@ msgstr "Kaixo"
99
99
100#: qml/Components/PinLockscreen.qml:198
100#: qml/Components/PinLockscreen.qml:198
101msgid "CANCEL"
101msgid "CANCEL"
102−msgstr ""
102+msgstr "UTZI"
103
103
104#: qml/Components/PinLockscreen.qml:216
104#: qml/Components/PinLockscreen.qml:216
105msgid "DONE"
105msgid "DONE"
106−msgstr ""
106+msgstr "EGINDA"
107
107
108#: qml/Components/SeeMore.qml:35
108#: qml/Components/SeeMore.qml:35
109msgid "See more"
109msgid "See more"
@@ -139,7 +139,7 @@ msgstr "Bidali"
139
139
140#: qml/Greeter/Greeter.qml:157
140#: qml/Greeter/Greeter.qml:157
141msgid "Swipe to unlock"
141msgid "Swipe to unlock"
142−msgstr ""
142+msgstr "Pasatu hatza desblokeatzeko"
143
143
144#: qml/Hud/HudParametrizedActionsPage.qml:132
144#: qml/Hud/HudParametrizedActionsPage.qml:132
145msgid "Confirm"
145msgid "Confirm"
@@ -171,27 +171,27 @@ msgstr "Sartu SIMaren PINa"
171
171
172#: qml/Panel/Indicators/MenuItemFactory.qml:583
172#: qml/Panel/Indicators/MenuItemFactory.qml:583
173msgid "In queue…"
173msgid "In queue…"
174−msgstr ""
174+msgstr "Ilaran..."
175
175
176#: qml/Panel/Indicators/MenuItemFactory.qml:587
176#: qml/Panel/Indicators/MenuItemFactory.qml:587
177msgid "Downloading"
177msgid "Downloading"
178−msgstr ""
178+msgstr "Deskargatzen"
179
179
180#: qml/Panel/Indicators/MenuItemFactory.qml:589
180#: qml/Panel/Indicators/MenuItemFactory.qml:589
181msgid "Paused, tap to resume"
181msgid "Paused, tap to resume"
182−msgstr ""
182+msgstr "Pausatuta, sakatu jarraitzeko"
183
183
184#: qml/Panel/Indicators/MenuItemFactory.qml:591
184#: qml/Panel/Indicators/MenuItemFactory.qml:591
185msgid "Canceled"
185msgid "Canceled"
186−msgstr ""
186+msgstr "Utzita"
187
187
188#: qml/Panel/Indicators/MenuItemFactory.qml:593
188#: qml/Panel/Indicators/MenuItemFactory.qml:593
189msgid "Finished"
189msgid "Finished"
190−msgstr ""
190+msgstr "Amaituta"
191
191
192#: qml/Panel/Indicators/MenuItemFactory.qml:595
192#: qml/Panel/Indicators/MenuItemFactory.qml:595
193msgid "Failed, tap to retry"
193msgid "Failed, tap to retry"
194−msgstr ""
194+msgstr "Huts egin du, sakatu berriro saiatzeko"
195
195
196#: qml/Panel/SearchIndicator.qml:27
196#: qml/Panel/SearchIndicator.qml:27
197msgid "Search"
197msgid "Search"
po/fr.po+8−8
@@ -8,14 +8,14 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-07-07 12:15+0100\n"
10"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2014-07-09 17:53+0000\n"
11+"PO-Revision-Date: 2014-07-10 12:11+0000\n"
12−"Last-Translator: Sébastien Maes <nautilussebastien@gmail.com>\n"
12+"Last-Translator: Anne <anneonyme017@gmail.com>\n"
13"Language-Team: French <fr@li.org>\n"
13"Language-Team: French <fr@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-10 07:29+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-11 06:15+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17111)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -176,11 +176,11 @@ msgstr "Veuillez entrer le code PIN de votre carte SIM"
176
176
177#: qml/Panel/Indicators/MenuItemFactory.qml:583
177#: qml/Panel/Indicators/MenuItemFactory.qml:583
178msgid "In queue…"
178msgid "In queue…"
179−msgstr ""
179+msgstr "Dans la file d'attente..."
180
180
181#: qml/Panel/Indicators/MenuItemFactory.qml:587
181#: qml/Panel/Indicators/MenuItemFactory.qml:587
182msgid "Downloading"
182msgid "Downloading"
183−msgstr ""
183+msgstr "Téléchargement en cours"
184
184
185#: qml/Panel/Indicators/MenuItemFactory.qml:589
185#: qml/Panel/Indicators/MenuItemFactory.qml:589
186msgid "Paused, tap to resume"
186msgid "Paused, tap to resume"
@@ -188,11 +188,11 @@ msgstr "En pause, appuyez pour reprendre"
188
188
189#: qml/Panel/Indicators/MenuItemFactory.qml:591
189#: qml/Panel/Indicators/MenuItemFactory.qml:591
190msgid "Canceled"
190msgid "Canceled"
191−msgstr ""
191+msgstr "Annulé"
192
192
193#: qml/Panel/Indicators/MenuItemFactory.qml:593
193#: qml/Panel/Indicators/MenuItemFactory.qml:593
194msgid "Finished"
194msgid "Finished"
195−msgstr ""
195+msgstr "Terminé"
196
196
197#: qml/Panel/Indicators/MenuItemFactory.qml:595
197#: qml/Panel/Indicators/MenuItemFactory.qml:595
198msgid "Failed, tap to retry"
198msgid "Failed, tap to retry"
po/gd.po+18−17
@@ -2,29 +2,30 @@
2# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
2# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
3# This file is distributed under the same license as the unity8 package.
3# This file is distributed under the same license as the unity8 package.
4# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
4# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
5−#
5+# GunChleoc <fios@foramnagaidhlig.net>, 2014.
6msgid ""
6msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-07-07 12:15+0100\n"
10"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2014-05-17 21:08+0000\n"
11+"PO-Revision-Date: 2014-07-16 14:48+0000\n"
12−"Last-Translator: Akerbeltz <fios@akerbeltz.org>\n"
12+"Last-Translator: GunChleoc <Unknown>\n"
13−"Language-Team: Gaelic; Scottish <gd@li.org>\n"
13+"Language-Team: Fòram na Gàidhlig http://www.foramnagaidhlig.net\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-17 06:38+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17114)\n"
19+"Language: gd\n"
19
20
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
22#: plugins/Unity/Launcher/launcheritem.cpp:73
22msgid "Pin shortcut"
23msgid "Pin shortcut"
23−msgstr ""
24+msgstr "Prìnich ath-ghoirid"
24
25
25#: plugins/Unity/Launcher/launcheritem.cpp:73
26#: plugins/Unity/Launcher/launcheritem.cpp:73
26msgid "Unpin shortcut"
27msgid "Unpin shortcut"
27−msgstr ""
28+msgstr "Neo-phrìnich an ath-ghoirid"
28
29
29#: qml/Components/EdgeDemoOverlay.qml:151
30#: qml/Components/EdgeDemoOverlay.qml:151
30msgid "Skip intro"
31msgid "Skip intro"
@@ -86,7 +87,7 @@ msgstr "Gairm èiginn"
86
87
87#: qml/Components/Lockscreen.qml:231
88#: qml/Components/Lockscreen.qml:231
88msgid "OK"
89msgid "OK"
89−msgstr ""
90+msgstr "Ceart ma-hà"
90
91
91#: qml/Components/PageHeader.qml:366
92#: qml/Components/PageHeader.qml:366
92msgid "Recent searches"
93msgid "Recent searches"
@@ -103,11 +104,11 @@ msgstr "Shin thu"
103
104
104#: qml/Components/PinLockscreen.qml:198
105#: qml/Components/PinLockscreen.qml:198
105msgid "CANCEL"
106msgid "CANCEL"
106−msgstr ""
107+msgstr "SGUIR DHETH"
107
108
108#: qml/Components/PinLockscreen.qml:216
109#: qml/Components/PinLockscreen.qml:216
109msgid "DONE"
110msgid "DONE"
110−msgstr ""
111+msgstr "DÈANTA"
111
112
112#: qml/Components/SeeMore.qml:35
113#: qml/Components/SeeMore.qml:35
113msgid "See more"
114msgid "See more"
@@ -175,27 +176,27 @@ msgstr "Cuir a-steach SIM PIN"
175
176
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
177#: qml/Panel/Indicators/MenuItemFactory.qml:583
177msgid "In queue…"
178msgid "In queue…"
178−msgstr ""
179+msgstr "Air a' chiudha…"
179
180
180#: qml/Panel/Indicators/MenuItemFactory.qml:587
181#: qml/Panel/Indicators/MenuItemFactory.qml:587
181msgid "Downloading"
182msgid "Downloading"
182−msgstr ""
183+msgstr "'Ga luchdadh a-nuas"
183
184
184#: qml/Panel/Indicators/MenuItemFactory.qml:589
185#: qml/Panel/Indicators/MenuItemFactory.qml:589
185msgid "Paused, tap to resume"
186msgid "Paused, tap to resume"
186−msgstr ""
187+msgstr "'Na stad, thoir gnogag gus leantainn air"
187
188
188#: qml/Panel/Indicators/MenuItemFactory.qml:591
189#: qml/Panel/Indicators/MenuItemFactory.qml:591
189msgid "Canceled"
190msgid "Canceled"
190−msgstr ""
191+msgstr "Air a sgur dheth"
191
192
192#: qml/Panel/Indicators/MenuItemFactory.qml:593
193#: qml/Panel/Indicators/MenuItemFactory.qml:593
193msgid "Finished"
194msgid "Finished"
194−msgstr ""
195+msgstr "Coileanta"
195
196
196#: qml/Panel/Indicators/MenuItemFactory.qml:595
197#: qml/Panel/Indicators/MenuItemFactory.qml:595
197msgid "Failed, tap to retry"
198msgid "Failed, tap to retry"
198−msgstr ""
199+msgstr "Dh'fhàillig leis, thoir gnogag gus feuchainn a-rithist"
199
200
200#: qml/Panel/SearchIndicator.qml:27
201#: qml/Panel/SearchIndicator.qml:27
201msgid "Search"
202msgid "Search"
po/he.po+11−11
@@ -8,23 +8,23 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-07-07 12:15+0100\n"
10"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"
12"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
12"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
13"Language-Team: Hebrew <he@li.org>\n"
13"Language-Team: Hebrew <he@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-16 07:27+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17112)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
22msgid "Pin shortcut"
22msgid "Pin shortcut"
23−msgstr ""
23+msgstr "הצמדת קיצור דרך"
24
24
25#: plugins/Unity/Launcher/launcheritem.cpp:73
25#: plugins/Unity/Launcher/launcheritem.cpp:73
26msgid "Unpin shortcut"
26msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "הפרדת קיצור הדרך"
28
28
29#: qml/Components/EdgeDemoOverlay.qml:151
29#: qml/Components/EdgeDemoOverlay.qml:151
30msgid "Skip intro"
30msgid "Skip intro"
@@ -169,27 +169,27 @@ msgstr "נא להזין את קוד ה־<U+200F>SIM"
169
169
170#: qml/Panel/Indicators/MenuItemFactory.qml:583
170#: qml/Panel/Indicators/MenuItemFactory.qml:583
171msgid "In queue…"
171msgid "In queue…"
172−msgstr ""
172+msgstr "בתור…"
173
173
174#: qml/Panel/Indicators/MenuItemFactory.qml:587
174#: qml/Panel/Indicators/MenuItemFactory.qml:587
175msgid "Downloading"
175msgid "Downloading"
176−msgstr ""
176+msgstr "בהורדה"
177
177
178#: qml/Panel/Indicators/MenuItemFactory.qml:589
178#: qml/Panel/Indicators/MenuItemFactory.qml:589
179msgid "Paused, tap to resume"
179msgid "Paused, tap to resume"
180−msgstr ""
180+msgstr "מושהה, יש לגעת כדי להמשיך"
181
181
182#: qml/Panel/Indicators/MenuItemFactory.qml:591
182#: qml/Panel/Indicators/MenuItemFactory.qml:591
183msgid "Canceled"
183msgid "Canceled"
184−msgstr ""
184+msgstr "בוטל"
185
185
186#: qml/Panel/Indicators/MenuItemFactory.qml:593
186#: qml/Panel/Indicators/MenuItemFactory.qml:593
187msgid "Finished"
187msgid "Finished"
188−msgstr ""
188+msgstr "הושלם"
189
189
190#: qml/Panel/Indicators/MenuItemFactory.qml:595
190#: qml/Panel/Indicators/MenuItemFactory.qml:595
191msgid "Failed, tap to retry"
191msgid "Failed, tap to retry"
192−msgstr ""
192+msgstr "נכשל, יש לגעת כדי לנסות שוב"
193
193
194#: qml/Panel/SearchIndicator.qml:27
194#: qml/Panel/SearchIndicator.qml:27
195msgid "Search"
195msgid "Search"
po/km.po+14−14
@@ -8,23 +8,23 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-07-07 12:15+0100\n"
10"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"
12"Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>\n"
12"Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>\n"
13"Language-Team: Khmer <km@li.org>\n"
13"Language-Team: Khmer <km@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-17 06:38+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17114)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
22msgid "Pin shortcut"
22msgid "Pin shortcut"
23−msgstr ""
23+msgstr "ភ្ជាប់​ផ្លូវកាត់"
24
24
25#: plugins/Unity/Launcher/launcheritem.cpp:73
25#: plugins/Unity/Launcher/launcheritem.cpp:73
26msgid "Unpin shortcut"
26msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "មិន​ភ្ជាប់ផ្លូវកាត់"
28
28
29#: qml/Components/EdgeDemoOverlay.qml:151
29#: qml/Components/EdgeDemoOverlay.qml:151
30msgid "Skip intro"
30msgid "Skip intro"
@@ -82,7 +82,7 @@ msgstr "ការ​ហៅ​ពេល​អាសន្ន"
82
82
83#: qml/Components/Lockscreen.qml:231
83#: qml/Components/Lockscreen.qml:231
84msgid "OK"
84msgid "OK"
85−msgstr ""
85+msgstr "យល់ព្រម"
86
86
87#: qml/Components/PageHeader.qml:366
87#: qml/Components/PageHeader.qml:366
88msgid "Recent searches"
88msgid "Recent searches"
@@ -99,11 +99,11 @@ msgstr "សួស្តី"
99
99
100#: qml/Components/PinLockscreen.qml:198
100#: qml/Components/PinLockscreen.qml:198
101msgid "CANCEL"
101msgid "CANCEL"
102−msgstr ""
102+msgstr "បោះបង់"
103
103
104#: qml/Components/PinLockscreen.qml:216
104#: qml/Components/PinLockscreen.qml:216
105msgid "DONE"
105msgid "DONE"
106−msgstr ""
106+msgstr "រួចរាល់"
107
107
108#: qml/Components/SeeMore.qml:35
108#: qml/Components/SeeMore.qml:35
109msgid "See more"
109msgid "See more"
@@ -171,27 +171,27 @@ msgstr "បញ្ចូល​កូដ PIN របស់​ស៊ីមកាត"
171
171
172#: qml/Panel/Indicators/MenuItemFactory.qml:583
172#: qml/Panel/Indicators/MenuItemFactory.qml:583
173msgid "In queue…"
173msgid "In queue…"
174−msgstr ""
174+msgstr "ក្នុងជួរ…"
175
175
176#: qml/Panel/Indicators/MenuItemFactory.qml:587
176#: qml/Panel/Indicators/MenuItemFactory.qml:587
177msgid "Downloading"
177msgid "Downloading"
178−msgstr ""
178+msgstr "ទាញយក"
179
179
180#: qml/Panel/Indicators/MenuItemFactory.qml:589
180#: qml/Panel/Indicators/MenuItemFactory.qml:589
181msgid "Paused, tap to resume"
181msgid "Paused, tap to resume"
182−msgstr ""
182+msgstr "បាន​ផ្អាក, ប៉ះ ដើម្បីបន្ត"
183
183
184#: qml/Panel/Indicators/MenuItemFactory.qml:591
184#: qml/Panel/Indicators/MenuItemFactory.qml:591
185msgid "Canceled"
185msgid "Canceled"
186−msgstr ""
186+msgstr "បាន​បោះបង់"
187
187
188#: qml/Panel/Indicators/MenuItemFactory.qml:593
188#: qml/Panel/Indicators/MenuItemFactory.qml:593
189msgid "Finished"
189msgid "Finished"
190−msgstr ""
190+msgstr "បាន​បញ្ចប់"
191
191
192#: qml/Panel/Indicators/MenuItemFactory.qml:595
192#: qml/Panel/Indicators/MenuItemFactory.qml:595
193msgid "Failed, tap to retry"
193msgid "Failed, tap to retry"
194−msgstr ""
194+msgstr "បាន​បរាជ័យ ប៉ះ​ ដើម្បី​ព្យាយាម​ម្ដង​ទៀត"
195
195
196#: qml/Panel/SearchIndicator.qml:27
196#: qml/Panel/SearchIndicator.qml:27
197msgid "Search"
197msgid "Search"
po/ko.po+45−43
@@ -8,23 +8,23 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-07-07 12:15+0100\n"
10"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2013-10-10 07:04+0000\n"
11+"PO-Revision-Date: 2014-07-17 03:56+0000\n"
12−"Last-Translator: Kim Boram <boramism@gmail.com>\n"
12+"Last-Translator: MinSik CHO <Unknown>\n"
13"Language-Team: Korean <ko@li.org>\n"
13"Language-Team: Korean <ko@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-17 06:38+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17114)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
22msgid "Pin shortcut"
22msgid "Pin shortcut"
23−msgstr ""
23+msgstr "바로가기를 고정하기"
24
24
25#: plugins/Unity/Launcher/launcheritem.cpp:73
25#: plugins/Unity/Launcher/launcheritem.cpp:73
26msgid "Unpin shortcut"
26msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "바로가기를 고정 해제하기"
28
28
29#: qml/Components/EdgeDemoOverlay.qml:151
29#: qml/Components/EdgeDemoOverlay.qml:151
30msgid "Skip intro"
30msgid "Skip intro"
@@ -36,49 +36,51 @@ msgstr "오른쪽 끝"
36
36
37#: qml/Components/EdgeDemo.qml:114
37#: qml/Components/EdgeDemo.qml:114
38msgid "Try swiping from the right edge to unlock the phone"
38msgid "Try swiping from the right edge to unlock the phone"
39−msgstr ""
39+msgstr "휴대 전화를 잠금 해제하려면 오른쪽에서부터 끌어보세요."
40
40
41#: qml/Components/EdgeDemo.qml:145
41#: qml/Components/EdgeDemo.qml:145
42msgid "Top edge"
42msgid "Top edge"
43−msgstr ""
43+msgstr "윗쪽 끝"
44
44
45#: qml/Components/EdgeDemo.qml:146
45#: qml/Components/EdgeDemo.qml:146
46msgid "Try swiping from the top edge to access the indicators"
46msgid "Try swiping from the top edge to access the indicators"
47−msgstr ""
47+msgstr "알림을 보려면 위쪽에서 끌어보세요."
48
48
49#: qml/Components/EdgeDemo.qml:171
49#: qml/Components/EdgeDemo.qml:171
50msgid "Close"
50msgid "Close"
51−msgstr ""
51+msgstr "닫기"
52
52
53#: qml/Components/EdgeDemo.qml:172
53#: qml/Components/EdgeDemo.qml:172
54msgid "Swipe up again to close the settings screen"
54msgid "Swipe up again to close the settings screen"
55−msgstr ""
55+msgstr "환경설정 창을 닫으려면 위로 다시 끌어보세요."
56
56
57#: qml/Components/EdgeDemo.qml:199
57#: qml/Components/EdgeDemo.qml:199
58msgid "Left edge"
58msgid "Left edge"
59−msgstr ""
59+msgstr "왼쪽 끝"
60
60
61#: qml/Components/EdgeDemo.qml:200
61#: qml/Components/EdgeDemo.qml:200
62msgid "Swipe from the left to reveal the launcher for quick access to apps"
62msgid "Swipe from the left to reveal the launcher for quick access to apps"
63−msgstr ""
63+msgstr "애플리케이션을 빠르게 열기 위해 런처를 보려면 왼쪽에서 끌어보세요."
64
64
65#: qml/Components/EdgeDemo.qml:227
65#: qml/Components/EdgeDemo.qml:227
66msgid "Well done"
66msgid "Well done"
67−msgstr ""
67+msgstr "잘하셨습니다."
68
68
69#: qml/Components/EdgeDemo.qml:228
69#: qml/Components/EdgeDemo.qml:228
70msgid ""
70msgid ""
71"You have now mastered the edge gestures and can start using the "
71"You have now mastered the edge gestures and can start using the "
72"phone<br><br>Tap on the screen to start"
72"phone<br><br>Tap on the screen to start"
73msgstr ""
73msgstr ""
74+"여러분은 끝에서 끌어오기 제스쳐를 완벽히 익히셨기 때문에 휴대 전화를 사용하기 시작할 수 있습니다. <br><br> 스크린을 터치해서 "
75+"시작하세요."
74
76
75#: qml/Components/Lockscreen.qml:214
77#: qml/Components/Lockscreen.qml:214
76msgid "Emergency Call"
78msgid "Emergency Call"
77−msgstr ""
79+msgstr "긴급 통화"
78
80
79#: qml/Components/Lockscreen.qml:231
81#: qml/Components/Lockscreen.qml:231
80msgid "OK"
82msgid "OK"
81−msgstr ""
83+msgstr "확인"
82
84
83#: qml/Components/PageHeader.qml:366
85#: qml/Components/PageHeader.qml:366
84msgid "Recent searches"
86msgid "Recent searches"
@@ -87,107 +89,107 @@ msgstr "최근 검색"
87#: qml/Components/PassphraseLockscreen.qml:60
89#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
90#, qt-format
89msgid "Hello %1"
91msgid "Hello %1"
90−msgstr ""
92+msgstr "안녕하세요 %1"
91
93
92#: qml/Components/PassphraseLockscreen.qml:60
94#: qml/Components/PassphraseLockscreen.qml:60
93msgid "Hello"
95msgid "Hello"
94−msgstr ""
96+msgstr "안녕하세요"
95
97
96#: qml/Components/PinLockscreen.qml:198
98#: qml/Components/PinLockscreen.qml:198
97msgid "CANCEL"
99msgid "CANCEL"
98−msgstr ""
100+msgstr "취소"
99
101
100#: qml/Components/PinLockscreen.qml:216
102#: qml/Components/PinLockscreen.qml:216
101msgid "DONE"
103msgid "DONE"
102−msgstr ""
104+msgstr "완료"
103
105
104#: qml/Components/SeeMore.qml:35
106#: qml/Components/SeeMore.qml:35
105msgid "See more"
107msgid "See more"
106−msgstr ""
108+msgstr "더 보기"
107
109
108#: qml/Components/SeeMore.qml:58
110#: qml/Components/SeeMore.qml:58
109msgid "See less"
111msgid "See less"
110−msgstr ""
112+msgstr "간단히 표시하기"
111
113
112#: qml/Dash/DashApps.qml:37
114#: qml/Dash/DashApps.qml:37
113msgid "Recent"
115msgid "Recent"
114−msgstr ""
116+msgstr "최근"
115
117
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
118#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
119msgid "More..."
118−msgstr ""
120+msgstr "더 보기..."
119
121
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
122#: qml/Dash/Previews/PreviewActionCombo.qml:34
121msgid "Less..."
123msgid "Less..."
122−msgstr ""
124+msgstr "간단하게..."
123
125
124#: qml/Dash/Previews/PreviewRatingInput.qml:82
126#: qml/Dash/Previews/PreviewRatingInput.qml:82
125msgid "Rate this"
127msgid "Rate this"
126−msgstr ""
128+msgstr "이 애플리케이션 평가하기"
127
129
128#: qml/Dash/Previews/PreviewRatingInput.qml:128
130#: qml/Dash/Previews/PreviewRatingInput.qml:128
129msgid "Add a review"
131msgid "Add a review"
130−msgstr ""
132+msgstr "평가 제출하기"
131
133
132#: qml/Dash/Previews/PreviewRatingInput.qml:168
134#: qml/Dash/Previews/PreviewRatingInput.qml:168
133msgid "Send"
135msgid "Send"
134−msgstr ""
136+msgstr "보내기"
135
137
136#: qml/Greeter/Greeter.qml:157
138#: qml/Greeter/Greeter.qml:157
137msgid "Swipe to unlock"
139msgid "Swipe to unlock"
138−msgstr ""
140+msgstr "휴대전화를 잠금 해제하려면 움직이세요."
139
141
140#: qml/Hud/HudParametrizedActionsPage.qml:132
142#: qml/Hud/HudParametrizedActionsPage.qml:132
141msgid "Confirm"
143msgid "Confirm"
142−msgstr ""
144+msgstr "확인"
143
145
144#: qml/Hud/Hud.qml:61 qml/Hud/Hud.qml:99 qml/Hud/Hud.qml:372
146#: qml/Hud/Hud.qml:61 qml/Hud/Hud.qml:99 qml/Hud/Hud.qml:372
145msgid "Type or say a command"
147msgid "Type or say a command"
146−msgstr ""
148+msgstr "명령을 입력하거나 말하세요."
147
149
148#: qml/Hud/Hud.qml:84
150#: qml/Hud/Hud.qml:84
149msgid "Loading. Please Wait..."
151msgid "Loading. Please Wait..."
150−msgstr ""
152+msgstr "준비 중.. 잠시만 기다려 주세요..."
151
153
152#: qml/Hud/Hud.qml:89
154#: qml/Hud/Hud.qml:89
153msgid "Speak Now..."
155msgid "Speak Now..."
154−msgstr ""
156+msgstr "지금 말하세요..."
155
157
156#: qml/Hud/Hud.qml:94
158#: qml/Hud/Hud.qml:94
157msgid "Speaking..."
159msgid "Speaking..."
158−msgstr ""
160+msgstr "말하는 중..."
159
161
160#: qml/Notifications/NotificationMenuItemFactory.qml:91
162#: qml/Notifications/NotificationMenuItemFactory.qml:91
161msgid "Show password"
163msgid "Show password"
162−msgstr ""
164+msgstr "비밀 번호 보기"
163
165
164#: qml/Notifications/NotificationMenuItemFactory.qml:103
166#: qml/Notifications/NotificationMenuItemFactory.qml:103
165msgid "Please enter SIM PIN"
167msgid "Please enter SIM PIN"
166−msgstr ""
168+msgstr "심카드의 PIN 번호를 입력하세요."
167
169
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
170#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
171msgid "In queue…"
170−msgstr ""
172+msgstr "재생 중..."
171
173
172#: qml/Panel/Indicators/MenuItemFactory.qml:587
174#: qml/Panel/Indicators/MenuItemFactory.qml:587
173msgid "Downloading"
175msgid "Downloading"
174−msgstr ""
176+msgstr "다운로드 중"
175
177
176#: qml/Panel/Indicators/MenuItemFactory.qml:589
178#: qml/Panel/Indicators/MenuItemFactory.qml:589
177msgid "Paused, tap to resume"
179msgid "Paused, tap to resume"
178−msgstr ""
180+msgstr "일시 중지 되었습니다. 계속하려면 누르세요."
179
181
180#: qml/Panel/Indicators/MenuItemFactory.qml:591
182#: qml/Panel/Indicators/MenuItemFactory.qml:591
181msgid "Canceled"
183msgid "Canceled"
182−msgstr ""
184+msgstr "취소됨"
183
185
184#: qml/Panel/Indicators/MenuItemFactory.qml:593
186#: qml/Panel/Indicators/MenuItemFactory.qml:593
185msgid "Finished"
187msgid "Finished"
186−msgstr ""
188+msgstr "완료됨"
187
189
188#: qml/Panel/Indicators/MenuItemFactory.qml:595
190#: qml/Panel/Indicators/MenuItemFactory.qml:595
189msgid "Failed, tap to retry"
191msgid "Failed, tap to retry"
190−msgstr ""
192+msgstr "실패하였습니다. 재시도하려면 누르세요."
191
193
192#: qml/Panel/SearchIndicator.qml:27
194#: qml/Panel/SearchIndicator.qml:27
193msgid "Search"
195msgid "Search"
@@ -196,4 +198,4 @@ msgstr "검색"
196#: qml/Shell.qml:359
198#: qml/Shell.qml:359
197#, qt-format
199#, qt-format
198msgid "Please enter %1"
200msgid "Please enter %1"
199−msgstr ""
201+msgstr "%1 를 입력해주세요."
po/lv.po+6−6
@@ -8,14 +8,14 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-07-07 12:15+0100\n"
10"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"
12"Last-Translator: Jānis-Marks Gailis <jm-gailis@fai-vianet.fr>\n"
12"Last-Translator: Jānis-Marks Gailis <jm-gailis@fai-vianet.fr>\n"
13"Language-Team: Latvian <lv@li.org>\n"
13"Language-Team: Latvian <lv@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-16 07:27+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17112)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -78,7 +78,7 @@ msgstr "Neatliekamās Palīdzības zvans"
78
78
79#: qml/Components/Lockscreen.qml:231
79#: qml/Components/Lockscreen.qml:231
80msgid "OK"
80msgid "OK"
81−msgstr ""
81+msgstr "LABI"
82
82
83#: qml/Components/PageHeader.qml:366
83#: qml/Components/PageHeader.qml:366
84msgid "Recent searches"
84msgid "Recent searches"
@@ -95,11 +95,11 @@ msgstr "Sveiki"
95
95
96#: qml/Components/PinLockscreen.qml:198
96#: qml/Components/PinLockscreen.qml:198
97msgid "CANCEL"
97msgid "CANCEL"
98−msgstr ""
98+msgstr "ATCELT"
99
99
100#: qml/Components/PinLockscreen.qml:216
100#: qml/Components/PinLockscreen.qml:216
101msgid "DONE"
101msgid "DONE"
102−msgstr ""
102+msgstr "IZDARĪTS"
103
103
104#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
105msgid "See more"
105msgid "See more"
po/nb.po+11−11
@@ -8,23 +8,23 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-07-07 12:15+0100\n"
10"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"
12"Last-Translator: Åka Sikrom <Unknown>\n"
12"Last-Translator: Åka Sikrom <Unknown>\n"
13"Language-Team: Norwegian Bokmal <nb@li.org>\n"
13"Language-Team: Norwegian Bokmal <nb@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-12 06:58+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17111)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
22msgid "Pin shortcut"
22msgid "Pin shortcut"
23−msgstr ""
23+msgstr "Fest snarvei"
24
24
25#: plugins/Unity/Launcher/launcheritem.cpp:73
25#: plugins/Unity/Launcher/launcheritem.cpp:73
26msgid "Unpin shortcut"
26msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "Fjern snarvei"
28
28
29#: qml/Components/EdgeDemoOverlay.qml:151
29#: qml/Components/EdgeDemoOverlay.qml:151
30msgid "Skip intro"
30msgid "Skip intro"
@@ -169,27 +169,27 @@ msgstr "Skriv inn PIN-koden til SIM-kortet"
169
169
170#: qml/Panel/Indicators/MenuItemFactory.qml:583
170#: qml/Panel/Indicators/MenuItemFactory.qml:583
171msgid "In queue…"
171msgid "In queue…"
172−msgstr ""
172+msgstr "I kø …"
173
173
174#: qml/Panel/Indicators/MenuItemFactory.qml:587
174#: qml/Panel/Indicators/MenuItemFactory.qml:587
175msgid "Downloading"
175msgid "Downloading"
176−msgstr ""
176+msgstr "Laster ned"
177
177
178#: qml/Panel/Indicators/MenuItemFactory.qml:589
178#: qml/Panel/Indicators/MenuItemFactory.qml:589
179msgid "Paused, tap to resume"
179msgid "Paused, tap to resume"
180−msgstr ""
180+msgstr "Satt på pause (trykk for å fortsette)"
181
181
182#: qml/Panel/Indicators/MenuItemFactory.qml:591
182#: qml/Panel/Indicators/MenuItemFactory.qml:591
183msgid "Canceled"
183msgid "Canceled"
184−msgstr ""
184+msgstr "Avbrutt"
185
185
186#: qml/Panel/Indicators/MenuItemFactory.qml:593
186#: qml/Panel/Indicators/MenuItemFactory.qml:593
187msgid "Finished"
187msgid "Finished"
188−msgstr ""
188+msgstr "Ferdig"
189
189
190#: qml/Panel/Indicators/MenuItemFactory.qml:595
190#: qml/Panel/Indicators/MenuItemFactory.qml:595
191msgid "Failed, tap to retry"
191msgid "Failed, tap to retry"
192−msgstr ""
192+msgstr "Feilet. Trykk for å prøve på nytt"
193
193
194#: qml/Panel/SearchIndicator.qml:27
194#: qml/Panel/SearchIndicator.qml:27
195msgid "Search"
195msgid "Search"
po/nl.po+19−19
@@ -8,14 +8,14 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-07-07 12:15+0100\n"
10"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-15 14:11+0000\n"
12"Last-Translator: Hannie Dumoleyn <Unknown>\n"
12"Last-Translator: Hannie Dumoleyn <Unknown>\n"
13"Language-Team: Dutch <nl@li.org>\n"
13"Language-Team: Dutch <nl@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-16 07:27+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17112)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -78,7 +78,7 @@ msgstr "Noodoproep"
78
78
79#: qml/Components/Lockscreen.qml:231
79#: qml/Components/Lockscreen.qml:231
80msgid "OK"
80msgid "OK"
81−msgstr ""
81+msgstr "Ok"
82
82
83#: qml/Components/PageHeader.qml:366
83#: qml/Components/PageHeader.qml:366
84msgid "Recent searches"
84msgid "Recent searches"
@@ -95,31 +95,31 @@ msgstr "Hallo"
95
95
96#: qml/Components/PinLockscreen.qml:198
96#: qml/Components/PinLockscreen.qml:198
97msgid "CANCEL"
97msgid "CANCEL"
98−msgstr ""
98+msgstr "ANNULEREN"
99
99
100#: qml/Components/PinLockscreen.qml:216
100#: qml/Components/PinLockscreen.qml:216
101msgid "DONE"
101msgid "DONE"
102−msgstr ""
102+msgstr "KLAAR"
103
103
104#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
105msgid "See more"
105msgid "See more"
106−msgstr ""
106+msgstr "Meer zien"
107
107
108#: qml/Components/SeeMore.qml:58
108#: qml/Components/SeeMore.qml:58
109msgid "See less"
109msgid "See less"
110−msgstr ""
110+msgstr "Minder zien"
111
111
112#: qml/Dash/DashApps.qml:37
112#: qml/Dash/DashApps.qml:37
113msgid "Recent"
113msgid "Recent"
114−msgstr ""
114+msgstr "Recent"
115
115
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118−msgstr ""
118+msgstr "Meer…"
119
119
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
121msgid "Less..."
121msgid "Less..."
122−msgstr ""
122+msgstr "Minder…"
123
123
124#: qml/Dash/Previews/PreviewRatingInput.qml:82
124#: qml/Dash/Previews/PreviewRatingInput.qml:82
125msgid "Rate this"
125msgid "Rate this"
@@ -135,7 +135,7 @@ msgstr "Versturen"
135
135
136#: qml/Greeter/Greeter.qml:157
136#: qml/Greeter/Greeter.qml:157
137msgid "Swipe to unlock"
137msgid "Swipe to unlock"
138−msgstr ""
138+msgstr "Veeg om te ontgrendelen"
139
139
140#: qml/Hud/HudParametrizedActionsPage.qml:132
140#: qml/Hud/HudParametrizedActionsPage.qml:132
141msgid "Confirm"
141msgid "Confirm"
@@ -163,31 +163,31 @@ msgstr "Wachtwoord tonen"
163
163
164#: qml/Notifications/NotificationMenuItemFactory.qml:103
164#: qml/Notifications/NotificationMenuItemFactory.qml:103
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166−msgstr ""
166+msgstr "Voer SIM PIN in"
167
167
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
169msgid "In queue…"
170−msgstr ""
170+msgstr "In wachtrij…"
171
171
172#: qml/Panel/Indicators/MenuItemFactory.qml:587
172#: qml/Panel/Indicators/MenuItemFactory.qml:587
173msgid "Downloading"
173msgid "Downloading"
174−msgstr ""
174+msgstr "Aan het downloaden"
175
175
176#: qml/Panel/Indicators/MenuItemFactory.qml:589
176#: qml/Panel/Indicators/MenuItemFactory.qml:589
177msgid "Paused, tap to resume"
177msgid "Paused, tap to resume"
178−msgstr ""
178+msgstr "Gepauzeerd, tik om te hervatten"
179
179
180#: qml/Panel/Indicators/MenuItemFactory.qml:591
180#: qml/Panel/Indicators/MenuItemFactory.qml:591
181msgid "Canceled"
181msgid "Canceled"
182−msgstr ""
182+msgstr "Geannuleerd"
183
183
184#: qml/Panel/Indicators/MenuItemFactory.qml:593
184#: qml/Panel/Indicators/MenuItemFactory.qml:593
185msgid "Finished"
185msgid "Finished"
186−msgstr ""
186+msgstr "Klaar"
187
187
188#: qml/Panel/Indicators/MenuItemFactory.qml:595
188#: qml/Panel/Indicators/MenuItemFactory.qml:595
189msgid "Failed, tap to retry"
189msgid "Failed, tap to retry"
190−msgstr ""
190+msgstr "Mislukt, tik om het opnieuw te proberen"
191
191
192#: qml/Panel/SearchIndicator.qml:27
192#: qml/Panel/SearchIndicator.qml:27
193msgid "Search"
193msgid "Search"
po/pt_BR.po+8−8
@@ -8,14 +8,14 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-07-07 12:15+0100\n"
10"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11−"PO-Revision-Date: 2014-05-15 14:31+0000\n"
11+"PO-Revision-Date: 2014-07-17 05:46+0000\n"
12−"Last-Translator: Rafael Neri <Unknown>\n"
12+"Last-Translator: Tiago Hillebrandt <tiagohillebrandt@gmail.com>\n"
13"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
13"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-17 06:38+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17114)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -82,7 +82,7 @@ msgstr "Chamada de emergência"
82
82
83#: qml/Components/Lockscreen.qml:231
83#: qml/Components/Lockscreen.qml:231
84msgid "OK"
84msgid "OK"
85−msgstr ""
85+msgstr "OK"
86
86
87#: qml/Components/PageHeader.qml:366
87#: qml/Components/PageHeader.qml:366
88msgid "Recent searches"
88msgid "Recent searches"
@@ -99,7 +99,7 @@ msgstr "Olá"
99
99
100#: qml/Components/PinLockscreen.qml:198
100#: qml/Components/PinLockscreen.qml:198
101msgid "CANCEL"
101msgid "CANCEL"
102−msgstr ""
102+msgstr "CANCELAR"
103
103
104#: qml/Components/PinLockscreen.qml:216
104#: qml/Components/PinLockscreen.qml:216
105msgid "DONE"
105msgid "DONE"
@@ -175,7 +175,7 @@ msgstr ""
175
175
176#: qml/Panel/Indicators/MenuItemFactory.qml:587
176#: qml/Panel/Indicators/MenuItemFactory.qml:587
177msgid "Downloading"
177msgid "Downloading"
178−msgstr ""
178+msgstr "Baixando"
179
179
180#: qml/Panel/Indicators/MenuItemFactory.qml:589
180#: qml/Panel/Indicators/MenuItemFactory.qml:589
181msgid "Paused, tap to resume"
181msgid "Paused, tap to resume"
@@ -183,7 +183,7 @@ msgstr ""
183
183
184#: qml/Panel/Indicators/MenuItemFactory.qml:591
184#: qml/Panel/Indicators/MenuItemFactory.qml:591
185msgid "Canceled"
185msgid "Canceled"
186−msgstr ""
186+msgstr "Cancelado"
187
187
188#: qml/Panel/Indicators/MenuItemFactory.qml:593
188#: qml/Panel/Indicators/MenuItemFactory.qml:593
189msgid "Finished"
189msgid "Finished"
po/tr.po+14−14
@@ -8,23 +8,23 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-07-07 12:15+0100\n"
10"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"
12"Last-Translator: Volkan Gezer <Unknown>\n"
12"Last-Translator: Volkan Gezer <Unknown>\n"
13"Language-Team: Turkish <tr@li.org>\n"
13"Language-Team: Turkish <tr@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-17 06:38+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17114)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
22msgid "Pin shortcut"
22msgid "Pin shortcut"
23−msgstr ""
23+msgstr "Kısayolu iğnele"
24
24
25#: plugins/Unity/Launcher/launcheritem.cpp:73
25#: plugins/Unity/Launcher/launcheritem.cpp:73
26msgid "Unpin shortcut"
26msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "Kısayol iğnesini kaldır"
28
28
29#: qml/Components/EdgeDemoOverlay.qml:151
29#: qml/Components/EdgeDemoOverlay.qml:151
30msgid "Skip intro"
30msgid "Skip intro"
@@ -81,7 +81,7 @@ msgstr "Acil Arama"
81
81
82#: qml/Components/Lockscreen.qml:231
82#: qml/Components/Lockscreen.qml:231
83msgid "OK"
83msgid "OK"
84−msgstr ""
84+msgstr "Tamam"
85
85
86#: qml/Components/PageHeader.qml:366
86#: qml/Components/PageHeader.qml:366
87msgid "Recent searches"
87msgid "Recent searches"
@@ -98,11 +98,11 @@ msgstr "Merhaba"
98
98
99#: qml/Components/PinLockscreen.qml:198
99#: qml/Components/PinLockscreen.qml:198
100msgid "CANCEL"
100msgid "CANCEL"
101−msgstr ""
101+msgstr "İPTAL"
102
102
103#: qml/Components/PinLockscreen.qml:216
103#: qml/Components/PinLockscreen.qml:216
104msgid "DONE"
104msgid "DONE"
105−msgstr ""
105+msgstr "BİTTİ"
106
106
107#: qml/Components/SeeMore.qml:35
107#: qml/Components/SeeMore.qml:35
108msgid "See more"
108msgid "See more"
@@ -170,27 +170,27 @@ msgstr "Lütfen SIM PIN'inizi girin"
170
170
171#: qml/Panel/Indicators/MenuItemFactory.qml:583
171#: qml/Panel/Indicators/MenuItemFactory.qml:583
172msgid "In queue…"
172msgid "In queue…"
173−msgstr ""
173+msgstr "Beklemede..."
174
174
175#: qml/Panel/Indicators/MenuItemFactory.qml:587
175#: qml/Panel/Indicators/MenuItemFactory.qml:587
176msgid "Downloading"
176msgid "Downloading"
177−msgstr ""
177+msgstr "İndiriliyor"
178
178
179#: qml/Panel/Indicators/MenuItemFactory.qml:589
179#: qml/Panel/Indicators/MenuItemFactory.qml:589
180msgid "Paused, tap to resume"
180msgid "Paused, tap to resume"
181−msgstr ""
181+msgstr "Duraklatıldı, devam etmek için dokunun"
182
182
183#: qml/Panel/Indicators/MenuItemFactory.qml:591
183#: qml/Panel/Indicators/MenuItemFactory.qml:591
184msgid "Canceled"
184msgid "Canceled"
185−msgstr ""
185+msgstr "İptal edildi"
186
186
187#: qml/Panel/Indicators/MenuItemFactory.qml:593
187#: qml/Panel/Indicators/MenuItemFactory.qml:593
188msgid "Finished"
188msgid "Finished"
189−msgstr ""
189+msgstr "Bitti"
190
190
191#: qml/Panel/Indicators/MenuItemFactory.qml:595
191#: qml/Panel/Indicators/MenuItemFactory.qml:595
192msgid "Failed, tap to retry"
192msgid "Failed, tap to retry"
193−msgstr ""
193+msgstr "Başarısız, yeniden denemek için dokunun"
194
194
195#: qml/Panel/SearchIndicator.qml:27
195#: qml/Panel/SearchIndicator.qml:27
196msgid "Search"
196msgid "Search"
po/ug.po+4−4
@@ -8,14 +8,14 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-07-07 12:15+0100\n"
10"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-10 23:16+0000\n"
12"Last-Translator: Gheyret T.Kenji <Unknown>\n"
12"Last-Translator: Gheyret T.Kenji <Unknown>\n"
13"Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
13"Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-10 07:29+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-11 06:15+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17111)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -177,7 +177,7 @@ msgstr "چۈشۈرۈۋاتىدۇ"
177
177
178#: qml/Panel/Indicators/MenuItemFactory.qml:589
178#: qml/Panel/Indicators/MenuItemFactory.qml:589
179msgid "Paused, tap to resume"
179msgid "Paused, tap to resume"
180−msgstr ""
180+msgstr "توختىتىلغان، چەكسە داۋاملىشىدۇ"
181
181
182#: qml/Panel/Indicators/MenuItemFactory.qml:591
182#: qml/Panel/Indicators/MenuItemFactory.qml:591
183msgid "Canceled"
183msgid "Canceled"
po/uk.po+11−11
@@ -8,23 +8,23 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-07-07 12:15+0100\n"
10"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"
12"Last-Translator: Yuri Chornoivan <yurchor@gmail.com>\n"
12"Last-Translator: Yuri Chornoivan <yurchor@gmail.com>\n"
13"Language-Team: Ukrainian <uk@li.org>\n"
13"Language-Team: Ukrainian <uk@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-14 07:10+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17111)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
22msgid "Pin shortcut"
22msgid "Pin shortcut"
23−msgstr ""
23+msgstr "Заблокувати кнопку"
24
24
25#: plugins/Unity/Launcher/launcheritem.cpp:73
25#: plugins/Unity/Launcher/launcheritem.cpp:73
26msgid "Unpin shortcut"
26msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "Розблокувати кнопку"
28
28
29#: qml/Components/EdgeDemoOverlay.qml:151
29#: qml/Components/EdgeDemoOverlay.qml:151
30msgid "Skip intro"
30msgid "Skip intro"
@@ -172,27 +172,27 @@ msgstr "Введіть PIN-код SIM-картки"
172
172
173#: qml/Panel/Indicators/MenuItemFactory.qml:583
173#: qml/Panel/Indicators/MenuItemFactory.qml:583
174msgid "In queue…"
174msgid "In queue…"
175−msgstr ""
175+msgstr "У черзі…"
176
176
177#: qml/Panel/Indicators/MenuItemFactory.qml:587
177#: qml/Panel/Indicators/MenuItemFactory.qml:587
178msgid "Downloading"
178msgid "Downloading"
179−msgstr ""
179+msgstr "Отримуємо"
180
180
181#: qml/Panel/Indicators/MenuItemFactory.qml:589
181#: qml/Panel/Indicators/MenuItemFactory.qml:589
182msgid "Paused, tap to resume"
182msgid "Paused, tap to resume"
183−msgstr ""
183+msgstr "Призупинено, торкніться, щоб поновити"
184
184
185#: qml/Panel/Indicators/MenuItemFactory.qml:591
185#: qml/Panel/Indicators/MenuItemFactory.qml:591
186msgid "Canceled"
186msgid "Canceled"
187−msgstr ""
187+msgstr "Скасовано"
188
188
189#: qml/Panel/Indicators/MenuItemFactory.qml:593
189#: qml/Panel/Indicators/MenuItemFactory.qml:593
190msgid "Finished"
190msgid "Finished"
191−msgstr ""
191+msgstr "Завершено"
192
192
193#: qml/Panel/Indicators/MenuItemFactory.qml:595
193#: qml/Panel/Indicators/MenuItemFactory.qml:595
194msgid "Failed, tap to retry"
194msgid "Failed, tap to retry"
195−msgstr ""
195+msgstr "Помилка, торкніться, щоб повторити спробу"
196
196
197#: qml/Panel/SearchIndicator.qml:27
197#: qml/Panel/SearchIndicator.qml:27
198msgid "Search"
198msgid "Search"
qml/Components/PageHeader.qml+3−3
@@ -117,7 +117,7 @@ Item {
117 Flickable {
117 Flickable {
118 id: headerContainer
118 id: headerContainer
119 objectName: "headerContainer"
119 objectName: "headerContainer"
120− clip: contentY > 0 && contentY < height
120+ clip: openSearchAnimation.running
121 anchors { left: parent.left; top: parent.top; right: parent.right }
121 anchors { left: parent.left; top: parent.top; right: parent.right }
122 height: units.gu(6.5)
122 height: units.gu(6.5)
123 contentHeight: headersColumn.height
123 contentHeight: headersColumn.height
@@ -150,7 +150,7 @@ Item {
150 anchors { left: parent.left; right: parent.right }
150 anchors { left: parent.left; right: parent.right }
151 height: headerContainer.height
151 height: headerContainer.height
152 contentHeight: height
152 contentHeight: height
153− opacity: headerContainer.contentY < height ? 1 : 0 // setting visible false cause column to relayout
153+ opacity: headerContainer.clip || headerContainer.showSearch ? 1 : 0 // setting visible false cause column to relayout
154 separatorSource: ""
154 separatorSource: ""
155 // Required to keep PageHeadStyle noise down as it expects the Page's properties around.
155 // Required to keep PageHeadStyle noise down as it expects the Page's properties around.
156 property var styledItem: searchHeader
156 property var styledItem: searchHeader
@@ -225,7 +225,7 @@ Item {
225 anchors { left: parent.left; right: parent.right }
225 anchors { left: parent.left; right: parent.right }
226 height: headerContainer.height
226 height: headerContainer.height
227 contentHeight: height
227 contentHeight: height
228− opacity: headerContainer.contentY > 0 ? 1 : 0 // setting visible false cause column to relayout
228+ opacity: headerContainer.clip || !headerContainer.showSearch ? 1 : 0 // setting visible false cause column to relayout
229 separatorSource: ""
229 separatorSource: ""
230 textColor: root.scopeStyle ? root.scopeStyle.foreground : "grey"
230 textColor: root.scopeStyle ? root.scopeStyle.foreground : "grey"
231 property var styledItem: header
231 property var styledItem: header
qml/Dash/GenericScopeView.qml+1−1
@@ -193,7 +193,7 @@ FocusScope {
193 Connections {
193 Connections {
194 target: rendererLoader.item
194 target: rendererLoader.item
195 onClicked: {
195 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") {
197 // TODO Technically it is possible that calling activate() will make the scope emit
197 // TODO Technically it is possible that calling activate() will make the scope emit
198 // previewRequested so that we show a preview but there's no scope that does that yet
198 // previewRequested so that we show a preview but there's no scope that does that yet
199 // so it's not implemented
199 // so it's not implemented
qml/Notifications/Notification.qml+125−86
@@ -16,11 +16,13 @@
16
16
17import QtQuick 2.0
17import QtQuick 2.0
18import QtMultimedia 5.0
18import QtMultimedia 5.0
19−import Ubuntu.Components 0.1
19+import Ubuntu.Components 1.1
20import Unity.Notifications 1.0
20import Unity.Notifications 1.0
21import QMenuModel 0.1
21import QMenuModel 0.1
22import Utils 0.1
22import Utils 0.1
23
23
24+import Ubuntu.Components.ListItems 0.1 as ListItem
25+
24Item {
26Item {
25 id: notification
27 id: notification
26
28
@@ -34,11 +36,18 @@ Item {
34 property var hints
36 property var hints
35 property var notification
37 property var notification
36 property color color
38 property color color
37− property bool fullscreen
39+ property bool fullscreen: false
38 property int maxHeight
40 property int maxHeight
39 property int margins
41 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+ }
40
50
41− fullscreen: false
42 objectName: "background"
51 objectName: "background"
43 implicitHeight: type !== Notification.PlaceHolder ? (fullscreen ? maxHeight : contentColumn.height + contentColumn.spacing * 2) : 0
52 implicitHeight: type !== Notification.PlaceHolder ? (fullscreen ? maxHeight : contentColumn.height + contentColumn.spacing * 2) : 0
44
53
@@ -70,7 +79,7 @@ Item {
70 Audio {
79 Audio {
71 id: sound
80 id: sound
72 objectName: "sound"
81 objectName: "sound"
73− source: hints["suppress-sound"] != "" ? hints["sound-file"] : undefined
82+ source: hints["suppress-sound"] != "true" && hints["sound-file"] != undefined ? hints["sound-file"] : ""
74 }
83 }
75
84
76 onOpacityChanged: {
85 onOpacityChanged: {
@@ -149,9 +158,17 @@ Item {
149 UnityMenuModel {
158 UnityMenuModel {
150 id: unityMenuModel
159 id: unityMenuModel
151
160
161+ property string lastNameOwner: ""
162+
152 busName: paths.busName
163 busName: paths.busName
153 actions: paths.actions
164 actions: paths.actions
154 menuObjectPath: paths.menuObjectPath
165 menuObjectPath: paths.menuObjectPath
166+ onNameOwnerChanged: {
167+ if (lastNameOwner != "" && nameOwner == "" && notification.notification != undefined) {
168+ notification.notification.close()
169+ }
170+ lastNameOwner = nameOwner
171+ }
155 }
172 }
156
173
157 Behavior on implicitHeight {
174 Behavior on implicitHeight {
@@ -262,14 +279,18 @@ Item {
262 }
279 }
263
280
264 Column {
281 Column {
282+ id: dialogColumn
265 objectName: "dialogListView"
283 objectName: "dialogListView"
266 spacing: units.gu(2)
284 spacing: units.gu(2)
267
285
268 visible: count > 0
286 visible: count > 0
269
287
288+ anchors {
289+ left: parent.left
270− anchors.left: parent.left; anchors.right: parent.right
290+ right: parent.right
271− anchors.top: fullscreen ? parent.top : undefined
291+ top: fullscreen ? parent.top : undefined
272− anchors.bottom: fullscreen ? parent.bottom : undefined
292+ bottom: fullscreen ? parent.bottom : undefined
293+ }
273
294
274 Repeater {
295 Repeater {
275 model: unityMenuModel
296 model: unityMenuModel
@@ -277,7 +298,10 @@ Item {
277 NotificationMenuItemFactory {
298 NotificationMenuItemFactory {
278 id: menuItemFactory
299 id: menuItemFactory
279
300
280− anchors.left: parent.left; anchors.right: parent.right
301+ anchors {
302+ left: dialogColumn.left
303+ right: dialogColumn.right
304+ }
281
305
282 menuModel: unityMenuModel
306 menuModel: unityMenuModel
283 menuData: model
307 menuData: model
@@ -291,7 +315,7 @@ Item {
291 }
315 }
292 }
316 }
293
317
294− Item {
318+ Row {
295 id: buttonRow
319 id: buttonRow
296
320
297 objectName: "buttonRow"
321 objectName: "buttonRow"
@@ -300,70 +324,8 @@ Item {
300 right: parent.right
324 right: parent.right
301 }
325 }
302 visible: notification.type == Notification.SnapDecision && actionRepeater.count > 0
326 visible: notification.type == Notification.SnapDecision && actionRepeater.count > 0
303− height: units.gu(5)
327+ spacing: units.gu(1)
304−
328+ layoutDirection: Qt.RightToLeft
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
367
329
368 Repeater {
330 Repeater {
369 id: actionRepeater
331 id: actionRepeater
@@ -375,28 +337,105 @@ Item {
375 property string actionId: id
337 property string actionId: id
376 property string actionLabel: label
338 property string actionLabel: label
377
339
378− anchors {
379− left: parent.left
380− right: parent.right
381− }
382−
383 Component {
340 Component {
384 id: actionButton
341 id: actionButton
385
342
386 Button {
343 Button {
387 objectName: "button" + index
344 objectName: "button" + index
388− anchors {
345+ width: buttonRow.width / 2 - spacing
389− left: parent.left
390− right: parent.right
391− }
392−
393 text: loader.actionLabel
346 text: loader.actionLabel
394− height: units.gu(5)
347+ gradient: notification.hints["x-canonical-private-button-tint"] == "true" && index == 0 ? greenGradient : darkgreyGradient
395− gradient: UbuntuColors.greyGradient
396 onClicked: notification.notification.invokeAction(loader.actionId)
348 onClicked: notification.notification.invokeAction(loader.actionId)
397 }
349 }
398 }
350 }
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+ }
400 }
439 }
401 }
440 }
402 }
441 }
qml/Notifications/NotificationMenuItemFactory.qml+12−3
@@ -50,7 +50,10 @@ Loader {
50 Column {
50 Column {
51 spacing: units.gu(2)
51 spacing: units.gu(2)
52
52
53+ anchors {
54+ left: parent.left
53− anchors.left: parent.left; anchors.right: parent.right
55+ right: parent.right
56+ }
54
57
55 Component.onCompleted: {
58 Component.onCompleted: {
56 menuModel.loadExtendedAttributes(menuIndex, {"x-echo-mode-password": "bool"});
59 menuModel.loadExtendedAttributes(menuIndex, {"x-echo-mode-password": "bool"});
@@ -67,7 +70,10 @@ Loader {
67
70
68 // TODO using Qt.ImhNoPredictiveText here until lp #1291575 is fixed for ubuntu-ui-toolkit
71 // TODO using Qt.ImhNoPredictiveText here until lp #1291575 is fixed for ubuntu-ui-toolkit
69 inputMethodHints: Qt.ImhNoAutoUppercase | Qt.ImhNoPredictiveText
72 inputMethodHints: Qt.ImhNoAutoUppercase | Qt.ImhNoPredictiveText
73+ anchors {
74+ left: parent.left
70− anchors.left: parent.left; anchors.right: parent.right
75+ right: parent.right
76+ }
71 echoMode: checkBox.checked ? TextInput.Normal : TextInput.Password
77 echoMode: checkBox.checked ? TextInput.Normal : TextInput.Password
72 height: units.gu(5)
78 height: units.gu(5)
73 onTextChanged: {
79 onTextChanged: {
@@ -98,7 +104,10 @@ Loader {
98 id: pinLock
104 id: pinLock
99
105
100 Lockscreen {
106 Lockscreen {
107+ anchors {
108+ left: parent.left
101− anchors.left: parent.left; anchors.right: parent.right
109+ right: parent.right
110+ }
102 height: menuFactory.maxHeight
111 height: menuFactory.maxHeight
103 placeholderText: i18n.tr("Please enter SIM PIN")
112 placeholderText: i18n.tr("Please enter SIM PIN")
104 background: shell.background
113 background: shell.background
qml/Notifications/Notifications.qml+17−1
@@ -36,8 +36,11 @@ ListView {
36 filterRole: UnityNotifications.ModelInterface.RoleType
36 filterRole: UnityNotifications.ModelInterface.RoleType
37 filterRegExp: RegExp(UnityNotifications.Notification.SnapDecision)
37 filterRegExp: RegExp(UnityNotifications.Notification.SnapDecision)
38 }
38 }
39− spacing: delegate.fullscreen ? 0 : units.gu(.5)
40
39
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
41 currentIndex: (currentIndex < 1 && count > 1) ? 1 : -1
44 currentIndex: (currentIndex < 1 && count > 1) ? 1 : -1
42
45
43 delegate: Notification {
46 delegate: Notification {
@@ -61,6 +64,19 @@ ListView {
61 // make sure there's no opacity-difference between the several
64 // make sure there's no opacity-difference between the several
62 // elements in a notification
65 // elements in a notification
63 layer.enabled: add.running || remove.running || populate.running
66 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+ }
64 }
80 }
65
81
66 populate: Transition {
82 populate: Transition {
qml/Shell.qml+229−18
@@ -19,8 +19,10 @@ import AccountsService 0.1
19import GSettings 1.0
19import GSettings 1.0
20import Unity.Application 0.1
20import Unity.Application 0.1
21import Ubuntu.Components 0.1
21import Ubuntu.Components 0.1
22+import Ubuntu.Components.Popups 0.1
22import Ubuntu.Gestures 0.1
23import Ubuntu.Gestures 0.1
23import Unity.Launcher 0.1
24import Unity.Launcher 0.1
25+import Utils 0.1
24import LightDM 0.1 as LightDM
26import LightDM 0.1 as LightDM
25import Powerd 0.1
27import Powerd 0.1
26import SessionBroadcast 0.1
28import SessionBroadcast 0.1
@@ -34,7 +36,7 @@ import "Stages"
34import Unity.Notifications 1.0 as NotificationBackend
36import Unity.Notifications 1.0 as NotificationBackend
35import Unity.Session 0.1
37import Unity.Session 0.1
36
38
37−FocusScope {
39+Item {
38 id: shell
40 id: shell
39
41
40 // this is only here to select the width / height of the window if not running fullscreen
42 // this is only here to select the width / height of the window if not running fullscreen
@@ -85,8 +87,31 @@ FocusScope {
85 id: volumeControl
87 id: volumeControl
86 }
88 }
87
89
90+ WindowKeysFilter {
91+ // Handle but do not filter out volume keys
88− Keys.onVolumeUpPressed: volumeControl.volumeUp()
92+ Keys.onVolumeUpPressed: { volumeControl.volumeUp(); event.accepted = false; }
89− Keys.onVolumeDownPressed: volumeControl.volumeDown()
93+ Keys.onVolumeDownPressed: { volumeControl.volumeDown(); event.accepted = false; }
94+
95+ Keys.onPressed: {
96+ if (event.key == Qt.Key_PowerOff || event.key == Qt.Key_PowerDown) {
97+ if (!powerKeyTimer.running) {
98+ powerKeyTimer.start();
99+ }
100+ event.accepted = true;
101+ } else {
102+ event.accepted = false;
103+ }
104+ }
105+
106+ Keys.onReleased: {
107+ if (event.key == Qt.Key_PowerOff || event.key == Qt.Key_PowerDown) {
108+ powerKeyTimer.stop();
109+ event.accepted = true;
110+ } else {
111+ event.accepted = false;
112+ }
113+ }
114+ }
90
115
91 Item {
116 Item {
92 id: underlay
117 id: underlay
@@ -95,9 +120,6 @@ FocusScope {
95
120
96 // Whether the underlay is fully covered by opaque UI elements.
121 // Whether the underlay is fully covered by opaque UI elements.
97 property bool fullyCovered: panel.indicators.fullyOpened && shell.width <= panel.indicatorsMenuWidth
122 property bool fullyCovered: panel.indicators.fullyOpened && shell.width <= panel.indicatorsMenuWidth
98−
99− // NB! Application surfaces are stacked behind the shell one. So they can only be seen by the user
100− // through the translucent parts of the shell surface.
101 visible: !fullyCovered
123 visible: !fullyCovered
102
124
103 Image {
125 Image {
@@ -169,14 +191,23 @@ FocusScope {
169
191
170 visible: !fullyHidden && !ApplicationManager.empty
192 visible: !fullyHidden && !ApplicationManager.empty
171
193
194+ x: {
195+ if (shown) {
196+ if (locked) {
197+ return 0;
198+ }
199+ return launcher.progress;
200+ } else {
172− x: shown ? launcher.progress : stagesDragArea.progress
201+ return stagesDragArea.progress
202+ }
203+ }
173 Behavior on x { SmoothedAnimation { velocity: 600; duration: UbuntuAnimation.FastDuration } }
204 Behavior on x { SmoothedAnimation { velocity: 600; duration: UbuntuAnimation.FastDuration } }
174
205
175 property bool shown: false
206 property bool shown: false
176 onShownChanged: {
207 onShownChanged: {
177 if (shown) {
208 if (shown) {
178− if (ApplicationManager.topmostApplication) {
209+ if (ApplicationManager.count > 0) {
179− ApplicationManager.focusApplication(ApplicationManager.topmostApplication.appId);
210+ ApplicationManager.focusApplication(ApplicationManager.get(0).appId);
180 }
211 }
181 } else {
212 } else {
182 if (ApplicationManager.focusedApplicationId) {
213 if (ApplicationManager.focusedApplicationId) {
@@ -194,6 +225,8 @@ FocusScope {
194 property bool fullyShown: x == 0
225 property bool fullyShown: x == 0
195 property bool fullyHidden: x == width
226 property bool fullyHidden: x == width
196
227
228+ property bool locked: applicationsDisplayLoader.item ? applicationsDisplayLoader.item.locked : false
229+
197 // It might technically not be fullyShown but visually it just looks so.
230 // It might technically not be fullyShown but visually it just looks so.
198 property bool roughlyFullyShown: x >= 0 && x <= units.gu(1)
231 property bool roughlyFullyShown: x >= 0 && x <= units.gu(1)
199
232
@@ -230,7 +263,128 @@ FocusScope {
230 }
263 }
231 }
264 }
232
265
266+ property bool dialogShown: false
267+
268+ Component {
269+ id: logoutDialog
270+ Dialog {
271+ id: dialogueLogout
272+ title: "Logout"
273+ text: "Are you sure that you want to logout?"
274+ Button {
275+ text: "Cancel"
276+ onClicked: {
277+ PopupUtils.close(dialogueLogout);
278+ stages.dialogShown = false;
279+ }
280+ }
281+ Button {
282+ text: "Yes"
283+ onClicked: {
284+ DBusUnitySessionService.Logout();
285+ PopupUtils.close(dialogueLogout);
286+ stages.dialogShown = false;
287+ }
288+ }
289+ }
290+ }
291+
292+ Component {
293+ id: shutdownDialog
294+ Dialog {
295+ id: dialogueShutdown
296+ title: "Shutdown"
297+ text: "Are you sure that you want to shutdown?"
298+ Button {
299+ text: "Cancel"
300+ onClicked: {
301+ PopupUtils.close(dialogueShutdown);
302+ stages.dialogShown = false;
303+ }
304+ }
305+ Button {
306+ text: "Yes"
307+ onClicked: {
308+ dBusUnitySessionServiceConnection.closeAllApps();
309+ DBusUnitySessionService.Shutdown();
310+ PopupUtils.close(dialogueShutdown);
311+ stages.dialogShown = false;
312+ }
313+ }
314+ }
315+ }
316+
317+ Component {
318+ id: rebootDialog
319+ Dialog {
320+ id: dialogueReboot
321+ title: "Reboot"
322+ text: "Are you sure that you want to reboot?"
323+ Button {
324+ text: "Cancel"
325+ onClicked: {
326+ PopupUtils.close(dialogueReboot)
327+ stages.dialogShown = false;
328+ }
329+ }
330+ Button {
331+ text: "Yes"
332+ onClicked: {
333+ dBusUnitySessionServiceConnection.closeAllApps();
334+ DBusUnitySessionService.Reboot();
335+ PopupUtils.close(dialogueReboot);
336+ stages.dialogShown = false;
337+ }
338+ }
339+ }
340+ }
341+
342+ Component {
343+ id: powerDialog
344+ Dialog {
345+ id: dialoguePower
346+ title: "Power"
347+ text: i18n.tr("Are you sure you would like to turn power off?")
348+ Button {
349+ text: i18n.tr("Power off")
350+ onClicked: {
351+ dBusUnitySessionServiceConnection.closeAllApps();
352+ PopupUtils.close(dialoguePower);
353+ stages.dialogShown = false;
354+ shutdownFadeOutRectangle.enabled = true;
355+ shutdownFadeOutRectangle.visible = true;
356+ shutdownFadeOut.start();
357+ }
358+ }
359+ Button {
360+ text: i18n.tr("Restart")
361+ onClicked: {
362+ dBusUnitySessionServiceConnection.closeAllApps();
363+ DBusUnitySessionService.Reboot();
364+ PopupUtils.close(dialoguePower);
365+ stages.dialogShown = false;
366+ }
367+ }
368+ Button {
369+ text: i18n.tr("Cancel")
370+ onClicked: {
371+ PopupUtils.close(dialoguePower);
372+ stages.dialogShown = false;
373+ }
374+ }
375+ }
376+ }
377+
378+ function showPowerDialog() {
379+ if (!stages.dialogShown) {
380+ stages.dialogShown = true;
381+ PopupUtils.open(powerDialog);
382+ }
383+ }
384+
233 Connections {
385 Connections {
386+ id: dBusUnitySessionServiceConnection
387+ objectName: "dBusUnitySessionServiceConnection"
234 target: DBusUnitySessionService
388 target: DBusUnitySessionService
235
389
236 function closeAllApps() {
390 function closeAllApps() {
@@ -244,8 +398,27 @@ FocusScope {
244 }
398 }
245
399
246 onLogoutRequested: {
400 onLogoutRequested: {
401+ // Display a dialog to ask the user to confirm.
402+ if (!stages.dialogShown) {
403+ stages.dialogShown = true;
404+ PopupUtils.open(logoutDialog);
405+ }
406+ }
407+
408+ onShutdownRequested: {
247− // TODO: Display a dialog to ask the user to confirm.
409+ // Display a dialog to ask the user to confirm.
248− DBusUnitySessionService.Logout();
410+ if (!stages.dialogShown) {
411+ stages.dialogShown = true;
412+ PopupUtils.open(shutdownDialog);
413+ }
414+ }
415+
416+ onRebootRequested: {
417+ // Display a dialog to ask the user to confirm.
418+ if (!stages.dialogShown) {
419+ stages.dialogShown = true;
420+ PopupUtils.open(rebootDialog);
421+ }
249 }
422 }
250
423
251 onLogoutReady: {
424 onLogoutReady: {
@@ -274,14 +447,14 @@ FocusScope {
274 Binding {
447 Binding {
275 target: applicationsDisplayLoader.item
448 target: applicationsDisplayLoader.item
276 property: "interactive"
449 property: "interactive"
277− value: stages.roughlyFullyShown
450+ value: stages.roughlyFullyShown && !greeter.shown && !lockscreen.shown
278 }
451 }
279 }
452 }
280 }
453 }
281
454
282 InputMethod {
455 InputMethod {
283 id: inputMethod
456 id: inputMethod
284− anchors.fill: parent
457+ anchors { fill: parent; topMargin: panel.panelHeight }
285 z: notifications.useModal || panel.indicators.shown ? overlay.z + 1 : overlay.z - 1
458 z: notifications.useModal || panel.indicators.shown ? overlay.z + 1 : overlay.z - 1
286 }
459 }
287
460
@@ -337,6 +510,8 @@ FocusScope {
337 Connections {
510 Connections {
338 target: LightDM.Greeter
511 target: LightDM.Greeter
339
512
513+ onShowGreeter: greeter.show()
514+
340 onShowPrompt: {
515 onShowPrompt: {
341 if (LightDM.Users.count == 1) {
516 if (LightDM.Users.count == 1) {
342 // TODO: There's no better way for now to determine if its a PIN or a passphrase.
517 // TODO: There's no better way for now to determine if its a PIN or a passphrase.
@@ -362,6 +537,12 @@ FocusScope {
362 }
537 }
363 }
538 }
364
539
540+ Binding {
541+ target: LightDM.Greeter
542+ property: "active"
543+ value: greeter.shown || lockscreen.shown
544+ }
545+
365 Rectangle {
546 Rectangle {
366 anchors.fill: parent
547 anchors.fill: parent
367 color: "black"
548 color: "black"
@@ -401,6 +582,9 @@ FocusScope {
401 onShownChanged: {
582 onShownChanged: {
402 if (shown) {
583 if (shown) {
403 lockscreen.reset();
584 lockscreen.reset();
585+ if (!LightDM.Greeter.promptless) {
586+ lockscreen.show();
587+ }
404 // If there is only one user, we start authenticating with that one here.
588 // If there is only one user, we start authenticating with that one here.
405 // If there are more users, the Greeter will handle that
589 // If there are more users, the Greeter will handle that
406 if (LightDM.Users.count == 1) {
590 if (LightDM.Users.count == 1) {
@@ -477,8 +661,8 @@ FocusScope {
477 }
661 }
478
662
479 property bool topmostApplicationIsFullscreen:
663 property bool topmostApplicationIsFullscreen:
480− ApplicationManager.topmostApplication &&
664+ ApplicationManager.focusedApplicationId &&
481− ApplicationManager.topmostApplication.fullscreen
665+ ApplicationManager.findApplication(ApplicationManager.focusedApplicationId).fullscreen
482
666
483 fullscreenMode: stages.roughlyFullyShown && topmostApplicationIsFullscreen
667 fullscreenMode: stages.roughlyFullyShown && topmostApplicationIsFullscreen
484 && !greeter.shown && !lockscreen.shown
668 && !greeter.shown && !lockscreen.shown
@@ -565,9 +749,6 @@ FocusScope {
565 }
749 }
566 }
750 }
567
751
568− focus: true
569− onFocusChanged: if (!focus) forceActiveFocus();
570−
571 Binding {
752 Binding {
572 target: i18n
753 target: i18n
573 property: "domain"
754 property: "domain"
@@ -604,4 +785,34 @@ FocusScope {
604 target: SessionBroadcast
785 target: SessionBroadcast
605 onShowHome: showHome()
786 onShowHome: showHome()
606 }
787 }
788+
789+ Timer {
790+ id: powerKeyTimer
791+ interval: 2000
792+ repeat: false
793+ triggeredOnStart: false
794+
795+ onTriggered: {
796+ stages.showPowerDialog();
797+ }
798+ }
799+
800+ Rectangle {
801+ id: shutdownFadeOutRectangle
802+ enabled: false
803+ visible: false
804+ color: "black"
805+ anchors.fill: parent
806+ opacity: 0.0
807+ NumberAnimation on opacity {
808+ id: shutdownFadeOut
809+ from: 0.0
810+ to: 1.0
811+ onStopped: {
812+ if (shutdownFadeOutRectangle.enabled && shutdownFadeOutRectangle.visible) {
813+ DBusUnitySessionService.Shutdown();
814+ }
815+ }
816+ }
817+ }
607}
818}
qml/Stages/PhoneStage.qml+1−2
@@ -31,7 +31,7 @@ Item {
31
31
32 // State information propagated to the outside
32 // State information propagated to the outside
33 property bool fullscreen: priv.focusedApplication ? priv.focusedApplication.fullscreen : false
33 property bool fullscreen: priv.focusedApplication ? priv.focusedApplication.fullscreen : false
34− property bool locked: spreadView.visible
34+ property bool locked: spreadView.phase == 2
35
35
36 function select(appId) {
36 function select(appId) {
37 spreadView.snapTo(priv.indexOf(appId))
37 spreadView.snapTo(priv.indexOf(appId))
@@ -59,7 +59,6 @@ Item {
59 var application = priv.focusedApplication;
59 var application = priv.focusedApplication;
60 root.fullscreen = application.fullscreen;
60 root.fullscreen = application.fullscreen;
61 var appIndex = priv.indexOf(application.appId);
61 var appIndex = priv.indexOf(application.appId);
62− spreadRepeater.itemAt(appIndex).forceActiveFocus();
63 }
62 }
64 }
63 }
65
64
qml/Stages/SpreadDelegate.qml+11−6
@@ -35,12 +35,7 @@ Item {
35 signal clicked()
35 signal clicked()
36 signal closed()
36 signal closed()
37
37
38− onActiveFocusChanged: {
38+ Item {
39− if (activeFocus)
40− surfaceContainer.forceActiveFocus();
41− }
42−
43− FocusScope {
44 id: surfaceContainer
39 id: surfaceContainer
45 anchors.fill: parent
40 anchors.fill: parent
46 readonly property var surface: model.surface
41 readonly property var surface: model.surface
@@ -93,6 +88,16 @@ Item {
93 Connections {
88 Connections {
94 target: surface
89 target: surface
95 onStateChanged: surfaceContainer.checkFullscreen(surface);
90 onStateChanged: surfaceContainer.checkFullscreen(surface);
91+ // FIXME: I would rather not need to do this, but currently it doesn't get
92+ // active focus without it and I don't know why.
93+ onFocusChanged: forceSurfaceActiveFocusIfReady();
94+ onParentChanged: forceSurfaceActiveFocusIfReady();
95+ onEnabledChanged: forceSurfaceActiveFocusIfReady();
96+ function forceSurfaceActiveFocusIfReady() {
97+ if (surface.focus && surface.parent === surfaceContainer && surface.enabled) {
98+ surface.forceActiveFocus();
99+ }
100+ }
96 }
101 }
97
102
98 BorderImage {
103 BorderImage {
qml/Stages/TabletStage.qml+2−5
@@ -31,14 +31,11 @@ Item {
31 property bool moving: false
31 property bool moving: false
32 property int dragAreaWidth
32 property int dragAreaWidth
33 property real maximizedAppTopMargin
33 property real maximizedAppTopMargin
34+ property bool interactive
34
35
35 // State information propagated to the outside
36 // State information propagated to the outside
36− readonly property bool painting: true
37 property bool fullscreen: true
37 property bool fullscreen: true
38− property bool overlayMode: false
38+ property bool locked: spreadView.phase == 2
39− property bool interactive
40−
41− readonly property int overlayWidth: priv.overlayOverride ? 0 : spreadView.sideStageWidth
42
39
43 QtObject {
40 QtObject {
44 id: priv
41 id: priv
run_on_device.sh−2
@@ -103,8 +103,6 @@ run() {
103 ARGS="$ARGS -k"
103 ARGS="$ARGS -k"
104 fi
104 fi
105
105
106− exec_with_ssh "for i in `ubuntu-app-list`; do ubuntu-app-stop $i; done"
107−
108 exec_with_ssh "stop unity8"
106 exec_with_ssh "stop unity8"
109 exec_with_ssh "start maliit-server"
107 exec_with_ssh "start maliit-server"
110 exec_with_ssh "cd $CODE_DIR/ && ./run.sh $ARGS -- $RUN_OPTIONS"
108 exec_with_ssh "cd $CODE_DIR/ && ./run.sh $ARGS -- $RUN_OPTIONS"
tests/autopilot/unity8/shell/tests/test_notifications.py+10−13
@@ -178,11 +178,13 @@ class InteractiveNotificationBase(NotificationsBase):
178 ]
178 ]
179
179
180 actions = [
180 actions = [
181− ('action_accept', 'Accept'),
181+ ('action_accept', 'Hold + Answer'),
182− ('action_decline_1', 'Decline'),
182+ ('action_decline_1', 'End + Answer'),
183− ('action_decline_2', '"Can\'t talk now, what\'s up?"'),
183+ ('action_decline_2', 'Decline'),
184− ('action_decline_3', '"I call you back."'),
184+ ('action_decline_3', 'messages:I missed your call - can you call me now?'),
185− ('action_decline_4', 'Send custom message...'),
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'),
186 ]
188 ]
187
189
188 self._create_interactive_notification(
190 self._create_interactive_notification(
@@ -200,14 +202,9 @@ class InteractiveNotificationBase(NotificationsBase):
200 notification = get_notification()
202 notification = get_notification()
201 self._assert_notification(notification, summary, body, True, True, 1.0)
203 self._assert_notification(notification, summary, body, True, True, 1.0)
202 initial_height = notification.height
204 initial_height = notification.height
203− self.touch.tap_object(notification.select_single(objectName="button1"))
205+ self.touch.tap_object(notification.select_single(objectName="combobutton_dropdown"))
204− self.assertThat(
206+ self.assertThat(notification.select_single(objectName="button2").expanded, Eventually(Equals(True)))
205− notification.height,
207+ time.sleep(2)
206− Eventually(Equals(initial_height +
207− 3 * notification.select_single(
208− objectName="buttonColumn").spacing +
209− 3 * notification.select_single(
210− objectName="button4").height)))
211 self.touch.tap_object(notification.select_single(objectName="button4"))
208 self.touch.tap_object(notification.select_single(objectName="button4"))
212 self.assert_notification_action_id_was_called("action_decline_4")
209 self.assert_notification_action_id_was_called("action_decline_4")
213
210
tests/mocks/LightDM/CMakeLists.txt+1
@@ -18,6 +18,7 @@ include_directories(
18)
18)
19
19
20set(QMLPLUGIN_SRC
20set(QMLPLUGIN_SRC
21+ ${CMAKE_SOURCE_DIR}/plugins/LightDM/DBusGreeter.cpp
21 ${CMAKE_SOURCE_DIR}/plugins/LightDM/DBusGreeterList.cpp
22 ${CMAKE_SOURCE_DIR}/plugins/LightDM/DBusGreeterList.cpp
22 ${CMAKE_SOURCE_DIR}/plugins/LightDM/Greeter.cpp
23 ${CMAKE_SOURCE_DIR}/plugins/LightDM/Greeter.cpp
23 ${CMAKE_SOURCE_DIR}/plugins/LightDM/plugin.cpp
24 ${CMAKE_SOURCE_DIR}/plugins/LightDM/plugin.cpp
tests/mocks/Powerd/Powerd.qmltypes+6−13
@@ -15,19 +15,12 @@ Module {
15 isSingleton: true
15 isSingleton: true
16 exportMetaObjectRevisions: [0]
16 exportMetaObjectRevisions: [0]
17 Enum {
17 Enum {
18− name: "DisplayFlag"
18+ name: "DisplayStateChangeReason"
19 values: {
19 values: {
20− "UseProximity": 1,
20+ "Unknown": 0,
21− "DisableAutoBrightness": 2,
21+ "Inactivity": 1,
22− "Bright": 4
22+ "PowerKey": 2,
23− }
23+ "Proximity": 3
24− }
25− Enum {
26− name: "DisplayFlags"
27− values: {
28− "UseProximity": 1,
29− "DisableAutoBrightness": 2,
30− "Bright": 4
31 }
24 }
32 }
25 }
33 Enum {
26 Enum {
@@ -40,7 +33,7 @@ Module {
40 Signal {
33 Signal {
41 name: "displayPowerStateChange"
34 name: "displayPowerStateChange"
42 Parameter { name: "status"; type: "int" }
35 Parameter { name: "status"; type: "int" }
43− Parameter { name: "flags"; type: "uint" }
36+ Parameter { name: "reason"; type: "int" }
44 }
37 }
45 }
38 }
46}
39}
tests/mocks/Unity/Unity.qmltypes+10−2
@@ -89,6 +89,10 @@ Module {
89 name: "loadDepartment"
89 name: "loadDepartment"
90 Parameter { name: "id"; type: "string" }
90 Parameter { name: "id"; type: "string" }
91 }
91 }
92+ Method {
93+ name: "performQuery"
94+ Parameter { name: "query"; type: "string" }
95+ }
92 }
96 }
93 Component {
97 Component {
94 name: "Scopes"
98 name: "Scopes"
@@ -133,8 +137,8 @@ Module {
133 "RoleRawRendererTemplate": 3,
137 "RoleRawRendererTemplate": 3,
134 "RoleRenderer": 4,
138 "RoleRenderer": 4,
135 "RoleComponents": 5,
139 "RoleComponents": 5,
136− "RoleResults": 6,
140+ "RoleResults": 7,
137− "RoleCount": 7
141+ "RoleCount": 8
138 }
142 }
139 }
143 }
140 Method {
144 Method {
@@ -179,6 +183,9 @@ Module {
179 Component {
183 Component {
180 name: "unity::shell::scopes::PreviewModelInterface"
184 name: "unity::shell::scopes::PreviewModelInterface"
181 prototype: "QAbstractListModel"
185 prototype: "QAbstractListModel"
186+ exports: ["Unity/PreviewModel 0.2"]
187+ isCreatable: false
188+ exportMetaObjectRevisions: [0]
182 Enum {
189 Enum {
183 name: "Roles"
190 name: "Roles"
184 values: {
191 values: {
@@ -272,6 +279,7 @@ Module {
272 Property { name: "isActive"; type: "bool" }
279 Property { name: "isActive"; type: "bool" }
273 Property { name: "currentDepartmentId"; type: "string"; isReadonly: true }
280 Property { name: "currentDepartmentId"; type: "string"; isReadonly: true }
274 Property { name: "hasDepartments"; type: "bool"; isReadonly: true }
281 Property { name: "hasDepartments"; type: "bool"; isReadonly: true }
282+ Property { name: "customizations"; type: "QVariantMap"; isReadonly: true }
275 Signal { name: "showDash" }
283 Signal { name: "showDash" }
276 Signal { name: "hideDash" }
284 Signal { name: "hideDash" }
277 Signal {
285 Signal {
tests/plugins/Dash/cardcreator/6.res+1
@@ -5,6 +5,7 @@ AbstractButton {
5 property var cardData;
5 property var cardData;
6 property var artShapeBorderSource: undefined;
6 property var artShapeBorderSource: undefined;
7 property real fontScale: 1.0;
7 property real fontScale: 1.0;
8+ property var scopeStyle: null;
8 property int headerAlignment: Text.AlignLeft;
9 property int headerAlignment: Text.AlignLeft;
9 property int fixedHeaderHeight: -1;
10 property int fixedHeaderHeight: -1;
10 property size fixedArtShapeSize: Qt.size(-1, -1);
11 property size fixedArtShapeSize: Qt.size(-1, -1);
tests/plugins/LightDM/CMakeLists.txt+1−1
@@ -19,7 +19,7 @@ target_link_libraries(test-lightdm-dbus
19
19
20add_definitions(-DCURRENT_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}")
20add_definitions(-DCURRENT_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}")
21
21
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)
23add_dependencies(testLightDMDBus test-lightdm-dbus)
23add_dependencies(testLightDMDBus test-lightdm-dbus)
24
24
25add_dependencies(qmluitests testLightDMDBus)
25add_dependencies(qmluitests testLightDMDBus)
tests/plugins/LightDM/dbus.cpp+40
@@ -38,6 +38,13 @@ private Q_SLOTS:
38 // SIGNAL method, because QtDBus doesn't know about PropertiesChanged.
38 // SIGNAL method, because QtDBus doesn't know about PropertiesChanged.
39 // So we connect the hard way for the benefit of any tests that want
39 // So we connect the hard way for the benefit of any tests that want
40 // to watch.
40 // 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&)));
41 QDBusConnection::sessionBus().connect(
48 QDBusConnection::sessionBus().connect(
42 "com.canonical.UnityGreeter",
49 "com.canonical.UnityGreeter",
43 "/list",
50 "/list",
@@ -57,6 +64,12 @@ private Q_SLOTS:
57 view->show();
64 view->show();
58 QTest::qWaitForWindowExposed(view);
65 QTest::qWaitForWindowExposed(view);
59
66
67+ dbusMain = new QDBusInterface("com.canonical.UnityGreeter",
68+ "/",
69+ "com.canonical.UnityGreeter",
70+ QDBusConnection::sessionBus(), view);
71+ QVERIFY(dbusMain->isValid());
72+
60 dbusList = new QDBusInterface("com.canonical.UnityGreeter",
73 dbusList = new QDBusInterface("com.canonical.UnityGreeter",
61 "/list",
74 "/list",
62 "com.canonical.UnityGreeter.List",
75 "com.canonical.UnityGreeter.List",
@@ -155,9 +168,36 @@ private Q_SLOTS:
155 QVERIFY(arguments.at(1).toMap()["EntryIsLocked"] == false);
168 QVERIFY(arguments.at(1).toMap()["EntryIsLocked"] == false);
156 }
169 }
157
170
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+
158private:
197private:
159 QQuickView *view;
198 QQuickView *view;
160 Greeter *greeter;
199 Greeter *greeter;
200+ QDBusInterface *dbusMain;
161 QDBusInterface *dbusList;
201 QDBusInterface *dbusList;
162};
202};
163
203
tests/qmltests/Dash/tst_DashContent.qml+1
@@ -312,6 +312,7 @@ Item {
312 compare(allButton.visible, true);
312 compare(allButton.visible, true);
313 compare(backButton.visible, true);
313 compare(backButton.visible, true);
314
314
315+ tryCompare(departmentListView, "contentX", departmentList1.x);
315 waitForRendering(departmentListView);
316 waitForRendering(departmentListView);
316 mouseClick(allButton, 0, 0);
317 mouseClick(allButton, 0, 0);
317 compare(dashDepartments.showList, false);
318 compare(dashDepartments.showList, false);
tests/qmltests/Dash/tst_GenericScopeView.qml+4−4
@@ -56,7 +56,7 @@ Item {
56 property Item previewListView: findChild(genericScopeView, "previewListView")
56 property Item previewListView: findChild(genericScopeView, "previewListView")
57
57
58 function init() {
58 function init() {
59− genericScopeView.scope = scopes.getScope(2)
59+ genericScopeView.scope = scopes.getScope(1)
60 shell.width = units.gu(120)
60 shell.width = units.gu(120)
61 genericScopeView.categoryView.positionAtBeginning();
61 genericScopeView.categoryView.positionAtBeginning();
62 tryCompare(genericScopeView.categoryView, "contentY", 0)
62 tryCompare(genericScopeView.categoryView, "contentY", 0)
@@ -76,13 +76,13 @@ Item {
76
76
77 function test_showDash() {
77 function test_showDash() {
78 testCase.previewListView.open = true;
78 testCase.previewListView.open = true;
79− scopes.getScope(2).showDash();
79+ scopes.getScope(1).showDash();
80 tryCompare(testCase.previewListView, "open", false);
80 tryCompare(testCase.previewListView, "open", false);
81 }
81 }
82
82
83 function test_hideDash() {
83 function test_hideDash() {
84 testCase.previewListView.open = true;
84 testCase.previewListView.open = true;
85− scopes.getScope(2).hideDash();
85+ scopes.getScope(1).hideDash();
86 tryCompare(testCase.previewListView, "open", false);
86 tryCompare(testCase.previewListView, "open", false);
87 }
87 }
88
88
@@ -99,8 +99,8 @@ Item {
99
99
100 function test_changeScope() {
100 function test_changeScope() {
101 genericScopeView.scope.searchQuery = "test"
101 genericScopeView.scope.searchQuery = "test"
102− genericScopeView.scope = scopes.getScope(1)
103 genericScopeView.scope = scopes.getScope(2)
102 genericScopeView.scope = scopes.getScope(2)
103+ genericScopeView.scope = scopes.getScope(1)
104 tryCompare(genericScopeView.scope, "searchQuery", "test")
104 tryCompare(genericScopeView.scope, "searchQuery", "test")
105 }
105 }
106
106
tests/qmltests/Notifications/tst_Notifications.qml+18−23
@@ -72,8 +72,8 @@ Row {
72 actions: [{ id: "ok_id", label: "Ok"},
72 actions: [{ id: "ok_id", label: "Ok"},
73 { id: "cancel_id", label: "Cancel"},
73 { id: "cancel_id", label: "Cancel"},
74 { id: "notreally_id", label: "Not really"},
74 { id: "notreally_id", label: "Not really"},
75− { id: "noway_id", label: "No way"},
75+ { id: "noway_id", label: "messages:No way"},
76− { id: "nada_id", label: "Nada"}]
76+ { id: "nada_id", label: "messages:Nada"}]
77 }
77 }
78
78
79 mockModel.append(n)
79 mockModel.append(n)
@@ -237,8 +237,8 @@ Row {
237 actions: [{ id: "ok_id", label: "Ok"},
237 actions: [{ id: "ok_id", label: "Ok"},
238 { id: "cancel_id", label: "Cancel"},
238 { id: "cancel_id", label: "Cancel"},
239 { id: "notreally_id", label: "Not really"},
239 { id: "notreally_id", label: "Not really"},
240− { id: "noway_id", label: "No way"},
240+ { id: "noway_id", label: "messages:No way"},
241− { id: "nada_id", label: "Nada"}],
241+ { id: "nada_id", label: "messages:Nada"}],
242 summaryVisible: true,
242 summaryVisible: true,
243 bodyVisible: true,
243 bodyVisible: true,
244 iconVisible: true,
244 iconVisible: true,
@@ -456,32 +456,27 @@ Row {
456 actionSpy.clear()
456 actionSpy.clear()
457 waitForRendering(notification)
457 waitForRendering(notification)
458
458
459− // check if there's more than one negative choice
459+ // check if there's a ComboButton created due to more actions being passed
460 if (data.actions.length > 2) {
460 if (data.actions.length > 2) {
461− var initialHeight = notification.implicitHeight
461+ var comboButton = findChild(notification, "button2")
462+ tryCompareFunction(function() { return comboButton.expanded == false; }, true);
462
463
463 // click to expand
464 // click to expand
464− mouseClick(buttonCancel, buttonCancel.width / 2, buttonCancel.height / 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
465− var contentColumn = findChild(notification, "contentColumn")
468+ var choiceButton1 = findChild(notification, "button3")
466− var collapsedContentColumnHeight = contentColumn.height;
469+ tryCompareFunction(function() { mouseClick(choiceButton1, choiceButton1.width / 2, choiceButton1.height / 2); return actionSpy.signalArguments.length > 0; }, true);
467− // Waiting for the inner column to change height because buttons appear
470+ compare(actionSpy.signalArguments[0][0], data.actions[3]["id"], "got wrong id choice action 1")
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)
471 actionSpy.clear()
471 actionSpy.clear()
472
472
473− // test the additional buttons
473+ var choiceButton2 = findChild(notification, "button4")
474− for (var i = 2; i < data.actions.length; i++) {
474+ tryCompareFunction(function() { mouseClick(choiceButton2, choiceButton2.width / 2, choiceButton2.height / 2); return actionSpy.signalArguments.length > 0; }, true);
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")
475+ compare(actionSpy.signalArguments[0][0], data.actions[4]["id"], "got wrong id choice action 2")
479− actionSpy.clear()
476+ actionSpy.clear()
480− }
481
477
482 // click to collapse
478 // click to collapse
483− mouseClick(buttonCancel, buttonCancel.width / 2, buttonCancel.height / 2)
479+ //tryCompareFunction(function() { mouseClick(comboButton, comboButton.width - comboButton.__styleInstance.dropDownWidth / 2, comboButton.height / 2); return comboButton.expanded == false; }, true);
484− tryCompare(notification, "height", initialHeight)
485 } else {
480 } else {
486 mouseClick(buttonCancel, buttonCancel.width / 2, buttonCancel.height / 2)
481 mouseClick(buttonCancel, buttonCancel.width / 2, buttonCancel.height / 2)
487 compare(actionSpy.signalArguments[0][0], data.actions[1]["id"], "got wrong id for negative action")
482 compare(actionSpy.signalArguments[0][0], data.actions[1]["id"], "got wrong id for negative action")
tests/qmltests/tst_Shell.qml+8
@@ -20,6 +20,7 @@
20import QtQuick 2.0
20import QtQuick 2.0
21import QtTest 1.0
21import QtTest 1.0
22import GSettings 1.0
22import GSettings 1.0
23+import LightDM 0.1 as LightDM
23import Unity.Application 0.1
24import Unity.Application 0.1
24import Unity.Test 0.1 as UT
25import Unity.Test 0.1 as UT
25import Powerd 0.1
26import Powerd 0.1
@@ -520,5 +521,12 @@ Item {
520 tryCompare(greeter, "showProgress", 0)
521 tryCompare(greeter, "showProgress", 0)
521 waitUntilApplicationWindowIsFullyVisible()
522 waitUntilApplicationWindowIsFullyVisible()
522 }
523 }
524+
525+ function test_showGreeterDBusCall() {
526+ var greeter = findChild(shell, "greeter")
527+ tryCompare(greeter, "showProgress", 0)
528+ LightDM.Greeter.showGreeter()
529+ tryCompare(greeter, "showProgress", 1)
530+ }
523 }
531 }
524}
532}