on xenial help sign in
[ Albert Astals Cid ]

* Revert Session Screenshotter (LP: #1473476) [ Daniel d'Andrada ] * Dismiss the apps spread if greeter gets shown (LP: #1471609) [ Albert Astals Cid ] * Make the card sizes a bit dependant on the total of gu of the dash

commitc4508419fe2cbc16473cd197f74edbc7b52aee30 authorJosh Arenson <joshua.arenson@canonical.com> dateMon 13 Jul 2015, 17:28 (11 years ago) parent0b2476b23ac5ac
32 files changed+337−751
debian/changelog+17 debian/unity8-private.install−1 plugins/CMakeLists.txt−1 plugins/SessionGrabber/CMakeLists.txt−8 plugins/SessionGrabber/SessionGrabber.qmltypes−23 plugins/SessionGrabber/plugin.cpp−27 plugins/SessionGrabber/plugin.h−32 plugins/SessionGrabber/qmldir−3 plugins/SessionGrabber/sessiongrabber.cpp−135 plugins/SessionGrabber/sessiongrabber.h−85 po/en_AU.po+22−22 po/fa.po+19−22 po/he.po+76−76 po/pl.po+9−11 po/sv.po+22−22 po/sw.po+53−53 qml/Dash/CardTool.qml+15−6 qml/Dash/GenericScopeView.qml+7 qml/Shell.qml+1−1 qml/Stages/ApplicationWindow.qml+22−46 qml/Stages/PhoneStage.qml+16−1 qml/Stages/Splash.qml−2 qml/Stages/SpreadDelegate.qml−1 tests/plugins/CMakeLists.txt−1 tests/plugins/SessionGrabber/CMakeLists.txt−14 tests/plugins/SessionGrabber/sessiongrabbertest.cpp−79 tests/plugins/SessionGrabber/sessiongrabbertest.qml−22 tests/qmltests/Dash/tst_Card.qml+4−4 tests/qmltests/Dash/tst_CardTool.qml+8−8 tests/qmltests/Dash/tst_GenericScopeView.qml+1−1 tests/qmltests/Stages/tst_ApplicationWindow.qml−44 tests/qmltests/tst_OrientedShell.qml+45
debian/changelog+17
@@ -1,3 +1,20 @@
1+unity8 (8.10+15.10.20150713-0ubuntu1) wily; urgency=medium
2+
3+ [ Albert Astals Cid ]
4+ * Revert Session Screenshotter (LP: #1473476)
5+
6+ [ Daniel d'Andrada ]
7+ * Dismiss the apps spread if greeter gets shown (LP: #1471609)
8+
9+ -- CI Train Bot <ci-train-bot@canonical.com> Mon, 13 Jul 2015 14:17:20 +0000
10+
11+unity8 (8.10+15.10.20150708.2-0ubuntu1) wily; urgency=medium
12+
13+ [ Albert Astals Cid ]
14+ * Make the card sizes a bit dependant on the total of gu of the dash
15+
16+ -- CI Train Bot <ci-train-bot@canonical.com> Wed, 08 Jul 2015 15:01:41 +0000
17+
118unity8 (8.10+15.10.20150702.2-0ubuntu1) wily; urgency=medium
219
320 [ Albert Astals Cid ]
debian/unity8-private.install−1
@@ -8,7 +8,6 @@ usr/lib/*/unity8/qml/Lights
88usr/lib/*/unity8/qml/Powerd
99usr/lib/*/unity8/qml/ScreenGrabber
1010usr/lib/*/unity8/qml/SessionBroadcast
11−usr/lib/*/unity8/qml/SessionGrabber
1211usr/lib/*/unity8/qml/Ubuntu
1312usr/lib/*/unity8/qml/Unity
1413usr/lib/*/unity8/qml/Utils
plugins/CMakeLists.txt−1
@@ -18,7 +18,6 @@ add_subdirectory(Lights)
1818add_subdirectory(Dash)
1919add_subdirectory(Powerd)
2020add_subdirectory(SessionBroadcast)
21−add_subdirectory(SessionGrabber)
2221add_subdirectory(ScreenGrabber)
2322add_subdirectory(Ubuntu)
2423add_subdirectory(Unity)
plugins/SessionGrabber/CMakeLists.txtdeleted−8
@@ -1,8 +0,0 @@
1−include_directories(
2− ${CMAKE_CURRENT_BINARY_DIR}
3−)
4−
5−add_library(SessionGrabber-qml MODULE sessiongrabber.cpp plugin.cpp)
6−qt5_use_modules(SessionGrabber-qml Qml Gui Quick Concurrent)
7−
8−add_unity8_plugin(SessionGrabber 0.1 SessionGrabber TARGETS SessionGrabber-qml)
plugins/SessionGrabber/SessionGrabber.qmltypesdeleted−23
@@ -1,23 +0,0 @@
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 SessionGrabber 0.1 plugins'
8−
9−Module {
10− Component {
11− name: "SessionGrabber"
12− prototype: "QObject"
13− exports: ["SessionGrabber/SessionGrabber 0.1"]
14− exportMetaObjectRevisions: [0]
15− Property { name: "appId"; type: "string" }
16− Property { name: "path"; type: "string"; isReadonly: true }
17− Property { name: "target"; type: "QQuickItem"; isPointer: true }
18− Signal { name: "appIdChanged" }
19− Signal { name: "screenshotTaken" }
20− Method { name: "take" }
21− Method { name: "removeScreenshot" }
22− }
23−}
plugins/SessionGrabber/plugin.cppdeleted−27
@@ -1,27 +0,0 @@
1−/*
2− * Copyright (C) 2015 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− */
17−
18−#include "plugin.h"
19−#include "sessiongrabber.h"
20−
21−#include <QtQml/qqml.h>
22−
23−void SessionGrabberPlugin::registerTypes(const char *uri)
24−{
25− Q_ASSERT(uri == QLatin1String("SessionGrabber"));
26− qmlRegisterType<SessionGrabber>(uri, 0, 1, "SessionGrabber");
27−}
plugins/SessionGrabber/plugin.hdeleted−32
@@ -1,32 +0,0 @@
1−/*
2− * Copyright (C) 2015 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− */
17−
18−#ifndef SESSIONGRABBER_PLUGIN_H
19−#define SESSIONGRABBER_PLUGIN_H
20−
21−#include <QtQml/QQmlExtensionPlugin>
22−
23−class SessionGrabberPlugin : public QQmlExtensionPlugin
24−{
25− Q_OBJECT
26− Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
27−
28−public:
29− void registerTypes(const char *uri);
30−};
31−
32−#endif
plugins/SessionGrabber/qmldirdeleted−3
@@ -1,3 +0,0 @@
1−module SessionGrabber
2−plugin SessionGrabber-qml
3−typeinfo SessionGrabber.qmltypes
plugins/SessionGrabber/sessiongrabber.cppdeleted−135
@@ -1,135 +0,0 @@
1−/*
2− * Copyright (C) 2015 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− */
17−
18−#include "sessiongrabber.h"
19−
20−#include <QDebug>
21−#include <QQuickItem>
22−#include <QQuickItemGrabResult>
23−#include <QtConcurrent>
24−
25−static QString cacheFolder()
26−{
27− return QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + "/app_shots/";
28−}
29−
30−static QString cachePath(const QString &appId)
31−{
32− return cacheFolder() + appId + ".png";
33−}
34−
35−SessionGrabber::SessionGrabber(QObject *parent)
36− : QObject(parent)
37− , m_target(nullptr)
38− , m_watcher(nullptr)
39−{
40−}
41−
42−QString SessionGrabber::appId() const
43−{
44− return m_appId;
45−}
46−
47−void SessionGrabber::setAppId(const QString &appId)
48−{
49− if (appId != m_appId) {
50− m_appId = appId;
51− const QString path = cachePath(appId);
52− if (QFile::exists(path)) {
53− setPath(path);
54− }
55− }
56−}
57−
58−QQuickItem *SessionGrabber::target() const
59−{
60− return m_target;
61−}
62−
63−void SessionGrabber::setTarget(QQuickItem *target)
64−{
65− if (target != m_target) {
66− m_target = target;
67− Q_EMIT targetChanged();
68− }
69−}
70−
71−QString SessionGrabber::path() const
72−{
73− return m_path;
74−}
75−
76−void SessionGrabber::setPath(const QString &path)
77−{
78− if (path != m_path) {
79− m_path = path;
80− Q_EMIT pathChanged();
81− }
82−}
83−
84−static QString saveScreenshot(const QString &appId, const QSharedPointer<QQuickItemGrabResult> grabResult)
85−{
86− const QImage image = grabResult->image();
87− const QString cPath = cacheFolder();
88− QDir d;
89− d.mkpath(cPath);
90− const QString path = cachePath(appId);
91− if (image.save(path)) {
92− return path;
93− } else {
94− return QString();
95− }
96−}
97−
98−void SessionGrabber::grab()
99−{
100− if (!m_grabResult.isNull()) {
101− qWarning() << "Asked to grab a screenshot when there's one already being grabbed, ignoring";
102− return;
103− }
104−
105− if (m_target && !m_appId.isEmpty()) {
106− // grabToImage runs in a separate thread
107− m_grabResult = m_target->grabToImage();
108− connect(m_grabResult.data(), &QQuickItemGrabResult::ready, this, &SessionGrabber::grabReady);
109− } else {
110− qWarning() << "Can't grab screnshot: appId:" << m_appId << " target:" << m_target;
111− }
112−}
113−
114−void SessionGrabber::removeScreenshot()
115−{
116− const QString path = cachePath(m_appId);
117− QFile::remove(path);
118−}
119−
120−void SessionGrabber::grabReady()
121−{
122− QFuture<QString> f = QtConcurrent::run(saveScreenshot, m_appId, m_grabResult);
123− m_watcher = new QFutureWatcher<QString>(this);
124− m_watcher->setFuture(f);
125− connect(m_watcher, &QFutureWatcher<QString>::finished, this, &SessionGrabber::saveFinished);
126−}
127−
128−void SessionGrabber::saveFinished()
129−{
130− setPath(m_watcher->future().result());
131− delete m_watcher;
132− m_watcher = nullptr;
133− m_grabResult.clear();
134− Q_EMIT screenshotGrabbed();
135−}
plugins/SessionGrabber/sessiongrabber.hdeleted−85
@@ -1,85 +0,0 @@
1−/*
2− * Copyright (C) 2015 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− */
17−
18−#ifndef SESSIONGRABBER_H
19−#define SESSIONGRABBER_H
20−
21−#include <QObject>
22−#include <QSharedPointer>
23−#include <QFutureWatcher>
24−
25−class QQuickItem;
26−class QQuickItemGrabResult;
27−
28−/**
29− * SessionGrabber saves to disk screenshots of the given item.
30− * Images are saved into $HOME/.cache/app_shots/appId.png
31− * It also handles giving back the screenshot path if it already exists (e.g. because a reboot)
32− */
33−class SessionGrabber : public QObject
34−{
35− Q_OBJECT
36−
37− /// appId is the key of the screenshot name.
38− Q_PROPERTY(QString appId READ appId WRITE setAppId NOTIFY appIdChanged)
39−
40− /// path where the screenshot is saved, can be empty if no screenshot has been grabbed yet.
41− Q_PROPERTY(QString path READ path NOTIFY pathChanged)
42−
43− /// target item for the screenshot grabbing.
44− Q_PROPERTY(QQuickItem *target READ target WRITE setTarget NOTIFY targetChanged)
45−
46−public:
47− explicit SessionGrabber(QObject *parent = 0);
48−
49− QString appId() const;
50− void setAppId(const QString &appId);
51−
52− QQuickItem *target() const;
53− void setTarget(QQuickItem *target);
54−
55− QString path() const;
56−
57− /// Starts grabbing a screenshot. Emits screenshotGrabbed when ready.
58− Q_INVOKABLE void grab();
59−
60− /// Removes the existing screenshot
61− Q_INVOKABLE void removeScreenshot();
62−
63−Q_SIGNALS:
64− void appIdChanged();
65− void targetChanged();
66− void pathChanged();
67−
68− /// Signals screenshot grabbing has finished.
69− void screenshotGrabbed();
70−
71−private Q_SLOTS:
72− void grabReady();
73− void saveFinished();
74−
75−private:
76− void setPath(const QString &path);
77−
78− QString m_appId;
79− QString m_path;
80− QQuickItem *m_target;
81− QFutureWatcher<QString> *m_watcher;
82− QSharedPointer<QQuickItemGrabResult> m_grabResult;
83−};
84−
85−#endif
po/en_AU.po+22−22
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2015-06-22 12:00+0200\n"
11−"PO-Revision-Date: 2015-04-11 02:20+0000\n"
11+"PO-Revision-Date: 2015-07-12 07:17+0000\n"
1212"Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
1313"Language-Team: English (Australia) <en_AU@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-07-04 05:37+0000\n"
19−"X-Generator: Launchpad (build 17597)\n"
18+"X-Launchpad-Export-Date: 2015-07-13 05:36+0000\n"
19+"X-Generator: Launchpad (build 17620)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -37,14 +37,14 @@ msgstr "Unpin shortcut"
3737#. en_US example: "Yesterday\u2003%l:%M %p" --> "Yesterday 1:00 PM"
3838#: plugins/Utils/relativetimeformatter.cpp:157
3939msgid "Yesterday %l:%M %p"
40−msgstr ""
40+msgstr "Yesterday %l:%M %p"
4141
4242#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
4343#. This format string is used for showing, on a 12-hour clock, times that happened today.
4444#. en_US example: "%l:%M %p" --> "1:00 PM"
4545#: plugins/Utils/relativetimeformatter.cpp:164
4646msgid "%l:%M %p"
47−msgstr ""
47+msgstr "%l:%M %p"
4848
4949#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
5050#. This format string is used for showing, on a 12-hour clock, events/appointments that happen tomorrow.
@@ -52,7 +52,7 @@ msgstr ""
5252#. en_US example: "Tomorrow\u2003%l:%M %p" --> "Tomorrow 1:00 PM"
5353#: plugins/Utils/relativetimeformatter.cpp:172
5454msgid "Tomorrow %l:%M %p"
55−msgstr ""
55+msgstr "Tomorrow %l:%M %p"
5656
5757#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
5858#. This format string is used for showing, on a 12-hour clock, times that happened in the last week.
@@ -60,7 +60,7 @@ msgstr ""
6060#. en_US example: "%a\u2003%l:%M %p" --> "Fri 1:00 PM"
6161#: plugins/Utils/relativetimeformatter.cpp:181
6262msgid "%a %l:%M %p"
63−msgstr ""
63+msgstr "%a %l:%M %p"
6464
6565#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
6666#. This format string is used for showing, on a 12-hour clock, times that happened before a week from now.
@@ -69,7 +69,7 @@ msgstr ""
6969#. en_GB example: "%a %b %d\u2003%l:%M %p" --> "Fri 31 Oct 1:00 PM"
7070#: plugins/Utils/relativetimeformatter.cpp:190
7171msgid "%a %d %b %l:%M %p"
72−msgstr ""
72+msgstr "%a %b %d %l:%M %p"
7373
7474#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
7575#. This format string is used for showing, on a 24-hour clock, times that happen yesterday.
@@ -77,14 +77,14 @@ msgstr ""
7777#. en_US example: "Yesterday\u2003%l:%M %p" --> "Yesterday 13:00"
7878#: plugins/Utils/relativetimeformatter.cpp:201
7979msgid "Yesterday %H:%M"
80−msgstr ""
80+msgstr "Yesterday %H:%M"
8181
8282#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
8383#. This format string is used for showing, on a 24-hour clock, times that happened today.
8484#. en_US example: "%H:%M" --> "13:00"
8585#: plugins/Utils/relativetimeformatter.cpp:208
8686msgid "%H:%M"
87−msgstr ""
87+msgstr "%H:%M"
8888
8989#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
9090#. This format string is used for showing, on a 24-hour clock, events/appointments that happen tomorrow.
@@ -92,7 +92,7 @@ msgstr ""
9292#. en_US example: "Tomorrow\u2003%l:%M %p" --> "Tomorrow 13:00"
9393#: plugins/Utils/relativetimeformatter.cpp:216
9494msgid "Tomorrow %H:%M"
95−msgstr ""
95+msgstr "Tomorrow %H:%M"
9696
9797#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
9898#. This format string is used for showing, on a 24-hour clock, times that happened in the last week.
@@ -100,7 +100,7 @@ msgstr ""
100100#. en_US example: "%a\u2003%H:%M" --> "Fri 13:00"
101101#: plugins/Utils/relativetimeformatter.cpp:225
102102msgid "%a %H:%M"
103−msgstr ""
103+msgstr "%a %H:%M"
104104
105105#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
106106#. This format string is used for showing, on a 24-hour clock, times that happened before a week from now.
@@ -109,7 +109,7 @@ msgstr ""
109109#. en_GB example: "%a %b %d\u2003%H:%M" --> "Fri 31 Oct 13:00"
110110#: plugins/Utils/relativetimeformatter.cpp:234
111111msgid "%a %d %b %H:%M"
112−msgstr ""
112+msgstr "%a %b %d %H:%M"
113113
114114#: qml/Components/DelayedLockscreen.qml:49
115115msgid "Device Locked"
@@ -395,32 +395,32 @@ msgstr "Nothing is playing"
395395#, qt-format
396396msgid "%1 hour"
397397msgid_plural "%1 hours"
398−msgstr[0] ""
399−msgstr[1] ""
398+msgstr[0] "%1 hour"
399+msgstr[1] "%1 hours"
400400
401401#: qml/Panel/Indicators/MenuItemFactory.qml:772
402402#, qt-format
403403msgid "%1 minute"
404404msgid_plural "%1 minutes"
405−msgstr[0] ""
406−msgstr[1] ""
405+msgstr[0] "%1 minute"
406+msgstr[1] "%1 minutes"
407407
408408#: qml/Panel/Indicators/MenuItemFactory.qml:777
409409#, qt-format
410410msgid "%1 second"
411411msgid_plural "%1 seconds"
412−msgstr[0] ""
413−msgstr[1] ""
412+msgstr[0] "%1 second"
413+msgstr[1] "%1 seconds"
414414
415415#: qml/Panel/Indicators/MenuItemFactory.qml:780
416416msgid "0 seconds"
417−msgstr ""
417+msgstr "0 seconds"
418418
419419#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
420420#: qml/Panel/Indicators/MenuItemFactory.qml:782
421421#, qt-format
422422msgid "%1 remaining"
423−msgstr ""
423+msgstr "%1 remaining"
424424
425425#: qml/Panel/Indicators/MenuItemFactory.qml:788
426426msgid "In queue…"
@@ -482,7 +482,7 @@ msgstr "Tap here to continue."
482482
483483#: qml/Tutorial/TutorialContent.qml:81
484484msgid "Click here to finish."
485−msgstr ""
485+msgstr "Click here to finish."
486486
487487#: qml/Tutorial/TutorialLeftFinish.qml:24
488488msgid "These are the shortcuts to favorite apps"
po/fa.po+19−22
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2015-06-22 12:00+0200\n"
11−"PO-Revision-Date: 2015-04-10 03:18+0000\n"
11+"PO-Revision-Date: 2015-07-11 15:43+0000\n"
1212"Last-Translator: Danial Behzadi <dani.behzi@gmail.com>\n"
1313"Language-Team: Persian <fa@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2015-07-04 05:37+0000\n"
19−"X-Generator: Launchpad (build 17597)\n"
18+"X-Launchpad-Export-Date: 2015-07-12 04:55+0000\n"
19+"X-Generator: Launchpad (build 17620)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -37,14 +37,14 @@ msgstr "برداشتن سنجاق میانبر"
3737#. en_US example: "Yesterday\u2003%l:%M %p" --> "Yesterday 1:00 PM"
3838#: plugins/Utils/relativetimeformatter.cpp:157
3939msgid "Yesterday %l:%M %p"
40−msgstr ""
40+msgstr "دیروز %Ol:%OM %p"
4141
4242#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
4343#. This format string is used for showing, on a 12-hour clock, times that happened today.
4444#. en_US example: "%l:%M %p" --> "1:00 PM"
4545#: plugins/Utils/relativetimeformatter.cpp:164
4646msgid "%l:%M %p"
47−msgstr ""
47+msgstr "%Ol:%OM %p"
4848
4949#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
5050#. This format string is used for showing, on a 12-hour clock, events/appointments that happen tomorrow.
@@ -52,7 +52,7 @@ msgstr ""
5252#. en_US example: "Tomorrow\u2003%l:%M %p" --> "Tomorrow 1:00 PM"
5353#: plugins/Utils/relativetimeformatter.cpp:172
5454msgid "Tomorrow %l:%M %p"
55−msgstr ""
55+msgstr "فردا %Ol:%OM %p"
5656
5757#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
5858#. This format string is used for showing, on a 12-hour clock, times that happened in the last week.
@@ -60,7 +60,7 @@ msgstr ""
6060#. en_US example: "%a\u2003%l:%M %p" --> "Fri 1:00 PM"
6161#: plugins/Utils/relativetimeformatter.cpp:181
6262msgid "%a %l:%M %p"
63−msgstr ""
63+msgstr "%a %Ol:%OM %p"
6464
6565#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
6666#. This format string is used for showing, on a 12-hour clock, times that happened before a week from now.
@@ -69,7 +69,7 @@ msgstr ""
6969#. en_GB example: "%a %b %d\u2003%l:%M %p" --> "Fri 31 Oct 1:00 PM"
7070#: plugins/Utils/relativetimeformatter.cpp:190
7171msgid "%a %d %b %l:%M %p"
72−msgstr ""
72+msgstr "%a %d %b %Ol:%OM %p"
7373
7474#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
7575#. This format string is used for showing, on a 24-hour clock, times that happen yesterday.
@@ -77,14 +77,14 @@ msgstr ""
7777#. en_US example: "Yesterday\u2003%l:%M %p" --> "Yesterday 13:00"
7878#: plugins/Utils/relativetimeformatter.cpp:201
7979msgid "Yesterday %H:%M"
80−msgstr ""
80+msgstr "دیروز %OH:%OM"
8181
8282#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
8383#. This format string is used for showing, on a 24-hour clock, times that happened today.
8484#. en_US example: "%H:%M" --> "13:00"
8585#: plugins/Utils/relativetimeformatter.cpp:208
8686msgid "%H:%M"
87−msgstr ""
87+msgstr "%OH:%OM"
8888
8989#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
9090#. This format string is used for showing, on a 24-hour clock, events/appointments that happen tomorrow.
@@ -92,7 +92,7 @@ msgstr ""
9292#. en_US example: "Tomorrow\u2003%l:%M %p" --> "Tomorrow 13:00"
9393#: plugins/Utils/relativetimeformatter.cpp:216
9494msgid "Tomorrow %H:%M"
95−msgstr ""
95+msgstr "فردا %OH:%OM"
9696
9797#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
9898#. This format string is used for showing, on a 24-hour clock, times that happened in the last week.
@@ -100,7 +100,7 @@ msgstr ""
100100#. en_US example: "%a\u2003%H:%M" --> "Fri 13:00"
101101#: plugins/Utils/relativetimeformatter.cpp:225
102102msgid "%a %H:%M"
103−msgstr ""
103+msgstr "%a %OH:%OM"
104104
105105#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
106106#. This format string is used for showing, on a 24-hour clock, times that happened before a week from now.
@@ -109,7 +109,7 @@ msgstr ""
109109#. en_GB example: "%a %b %d\u2003%H:%M" --> "Fri 31 Oct 13:00"
110110#: plugins/Utils/relativetimeformatter.cpp:234
111111msgid "%a %d %b %H:%M"
112−msgstr ""
112+msgstr "%a %d %b %OH:%OM"
113113
114114#: qml/Components/DelayedLockscreen.qml:49
115115msgid "Device Locked"
@@ -395,32 +395,29 @@ msgstr "هیچ چیزی در حال پخش نیست"
395395#, qt-format
396396msgid "%1 hour"
397397msgid_plural "%1 hours"
398−msgstr[0] ""
399−msgstr[1] ""
398+msgstr[0] "%1 ساعت"
400399
401400#: qml/Panel/Indicators/MenuItemFactory.qml:772
402401#, qt-format
403402msgid "%1 minute"
404403msgid_plural "%1 minutes"
405−msgstr[0] ""
406−msgstr[1] ""
404+msgstr[0] "%1 دقیقه"
407405
408406#: qml/Panel/Indicators/MenuItemFactory.qml:777
409407#, qt-format
410408msgid "%1 second"
411409msgid_plural "%1 seconds"
412−msgstr[0] ""
413−msgstr[1] ""
410+msgstr[0] "%1 ثانیه"
414411
415412#: qml/Panel/Indicators/MenuItemFactory.qml:780
416413msgid "0 seconds"
417−msgstr ""
414+msgstr "۰ ثانیه"
418415
419416#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
420417#: qml/Panel/Indicators/MenuItemFactory.qml:782
421418#, qt-format
422419msgid "%1 remaining"
423−msgstr ""
420+msgstr "%1 مانده"
424421
425422#: qml/Panel/Indicators/MenuItemFactory.qml:788
426423msgid "In queue…"
@@ -482,7 +479,7 @@ msgstr "برای ادامه این‌جا را بزنید"
482479
483480#: qml/Tutorial/TutorialContent.qml:81
484481msgid "Click here to finish."
485−msgstr ""
482+msgstr "برای پایان اینجا کلیک کنید."
486483
487484#: qml/Tutorial/TutorialLeftFinish.qml:24
488485msgid "These are the shortcuts to favorite apps"
po/he.po+76−76
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2015-06-22 12:00+0200\n"
11−"PO-Revision-Date: 2014-08-23 14:19+0000\n"
11+"PO-Revision-Date: 2015-07-12 08:47+0000\n"
1212"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
1313"Language-Team: Hebrew <he@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-07-04 05:37+0000\n"
19−"X-Generator: Launchpad (build 17597)\n"
18+"X-Launchpad-Export-Date: 2015-07-13 05:36+0000\n"
19+"X-Generator: Launchpad (build 17620)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -113,11 +113,11 @@ msgstr ""
113113
114114#: qml/Components/DelayedLockscreen.qml:49
115115msgid "Device Locked"
116−msgstr ""
116+msgstr "ההתקן נעול"
117117
118118#: qml/Components/DelayedLockscreen.qml:64
119119msgid "You have been locked out due to too many failed passphrase attempts."
120−msgstr ""
120+msgstr "ננעלת מחוץ למערכת עקב ריבוי ניסיונות הזנת מילת צופן."
121121
122122#: qml/Components/DelayedLockscreen.qml:65
123123msgid "You have been locked out due to too many failed passcode attempts."
@@ -133,21 +133,21 @@ msgstr[1] ""
133133#: qml/Components/Dialogs.qml:69
134134msgctxt "Title: Lock/Log out dialog"
135135msgid "Log out"
136−msgstr ""
136+msgstr "יציאה"
137137
138138#: qml/Components/Dialogs.qml:70
139139msgid "Are you sure you want to log out?"
140−msgstr ""
140+msgstr "האם אכן לצאת מהמערכת?"
141141
142142#: qml/Components/Dialogs.qml:72
143143msgctxt "Button: Lock the system"
144144msgid "Lock"
145−msgstr ""
145+msgstr "נעילה"
146146
147147#: qml/Components/Dialogs.qml:79
148148msgctxt "Button: Log out from the system"
149149msgid "Log Out"
150−msgstr ""
150+msgstr "יציאה"
151151
152152#: qml/Components/Dialogs.qml:86 qml/Components/Dialogs.qml:117
153153#: qml/Components/Dialogs.qml:173
@@ -157,63 +157,63 @@ msgstr "ביטול"
157157#: qml/Components/Dialogs.qml:98
158158msgctxt "Title: Reboot/Shut down dialog"
159159msgid "Shut down"
160−msgstr ""
160+msgstr "כיבוי"
161161
162162#: qml/Components/Dialogs.qml:99
163163msgid "Are you sure you want to shut down?"
164−msgstr ""
164+msgstr "האם לכבות?"
165165
166166#: qml/Components/Dialogs.qml:101
167167msgctxt "Button: Reboot the system"
168168msgid "Reboot"
169−msgstr ""
169+msgstr "הפעלה מחדש"
170170
171171#: qml/Components/Dialogs.qml:109
172172msgctxt "Button: Shut down the system"
173173msgid "Shut down"
174−msgstr ""
174+msgstr "כיבוי"
175175
176176#: qml/Components/Dialogs.qml:129
177177msgctxt "Title: Reboot dialog"
178178msgid "Reboot"
179−msgstr ""
179+msgstr "הפעלה מחדש"
180180
181181#: qml/Components/Dialogs.qml:130
182182msgid "Are you sure you want to reboot?"
183−msgstr ""
183+msgstr "האם להפעיל מחדש?"
184184
185185#: qml/Components/Dialogs.qml:132
186186msgid "No"
187−msgstr ""
187+msgstr "לא"
188188
189189#: qml/Components/Dialogs.qml:138
190190msgid "Yes"
191−msgstr ""
191+msgstr "כן"
192192
193193#: qml/Components/Dialogs.qml:152
194194msgctxt "Title: Power off/Restart dialog"
195195msgid "Power"
196−msgstr ""
196+msgstr "צריכת חשמל"
197197
198198#: qml/Components/Dialogs.qml:153
199199msgid ""
200200"Are you sure you would like\n"
201201"to power off?"
202−msgstr ""
202+msgstr "האם לכבות?"
203203
204204#: qml/Components/Dialogs.qml:155
205205msgctxt "Button: Power off the system"
206206msgid "Power off"
207−msgstr ""
207+msgstr "כיבוי"
208208
209209#: qml/Components/Dialogs.qml:164
210210msgctxt "Button: Restart the system"
211211msgid "Restart"
212−msgstr ""
212+msgstr "הפעלה מחדש"
213213
214214#: qml/Components/Lockscreen.qml:245
215215msgid "Return to Call"
216−msgstr ""
216+msgstr "חזרה לשיחה"
217217
218218#: qml/Components/Lockscreen.qml:245
219219msgid "Emergency Call"
@@ -234,30 +234,30 @@ msgstr "להציג הכול"
234234#: qml/Dash/GenericScopeView.qml:594
235235msgctxt "Label: Hint for dash search line edit"
236236msgid "Search"
237−msgstr ""
237+msgstr "חיפוש"
238238
239239#: qml/Dash/PageHeader.qml:269
240240msgctxt "Button: Open the Ubuntu Store"
241241msgid "Store"
242−msgstr ""
242+msgstr "חנות"
243243
244244#: qml/Dash/PageHeader.qml:276
245245msgctxt "Button: Start a search in the current dash scope"
246246msgid "Search"
247−msgstr ""
247+msgstr "חיפוש"
248248
249249#: qml/Dash/PageHeader.qml:286
250250msgctxt "Button: Show the current dash scope settings"
251251msgid "Settings"
252−msgstr ""
252+msgstr "הגדרות"
253253
254254#: qml/Dash/PageHeader.qml:293
255255msgid "Remove from Favorites"
256−msgstr ""
256+msgstr "הסרה מהמועדפים"
257257
258258#: qml/Dash/PageHeader.qml:293
259259msgid "Add to Favorites"
260−msgstr ""
260+msgstr "הוספה למועדפים"
261261
262262#: qml/Dash/Previews/PreviewActionCombo.qml:35
263263msgid "More..."
@@ -281,23 +281,23 @@ msgstr "שליחה"
281281
282282#: qml/Dash/PullToRefreshScopeStyle.qml:55
283283msgid "Pull to refresh…"
284−msgstr ""
284+msgstr "יש למשוך כדי לרענן…"
285285
286286#: qml/Dash/PullToRefreshScopeStyle.qml:60
287287msgid "Release to refresh…"
288−msgstr ""
288+msgstr "יש לעזוב כדי לרענן…"
289289
290290#: qml/Dash/ScopeSettings/ScopeSettingBoolean.qml:43
291291msgid "Enable location data"
292−msgstr ""
292+msgstr "הפעלת נתוני מיקום"
293293
294294#: qml/Dash/ScopesList.qml:67
295295msgid "Manage"
296−msgstr ""
296+msgstr "ניהול"
297297
298298#: qml/Dash/ScopesList.qml:113
299299msgid "Home"
300−msgstr ""
300+msgstr "בית"
301301
302302#: qml/Dash/ScopesList.qml:114
303303msgid "Also installed"
@@ -305,15 +305,15 @@ msgstr ""
305305
306306#: qml/Greeter/CoverPage.qml:107
307307msgid "Unlock"
308−msgstr ""
308+msgstr "שחרור נעילה"
309309
310310#: qml/Greeter/LoginList.qml:236
311311msgid "Retry"
312−msgstr ""
312+msgstr "ניסיון חוזר"
313313
314314#: qml/Greeter/LoginList.qml:237
315315msgid "Tap to unlock"
316−msgstr ""
316+msgstr "יש לגעת כדי לשחרר נעילה"
317317
318318#: qml/Greeter/NarrowView.qml:53 qml/Wizard/Pages/passwd-confirm.qml:53
319319msgid "Sorry, incorrect passphrase."
@@ -346,7 +346,7 @@ msgstr ""
346346
347347#: qml/Greeter/NarrowView.qml:116 qml/Wizard/Pages/passwd-set.qml:60
348348msgid "Enter passphrase"
349−msgstr ""
349+msgstr "נא להזין מילת צופן"
350350
351351#: qml/Greeter/NarrowView.qml:117
352352msgid "Enter passcode"
@@ -443,11 +443,11 @@ msgstr "נכשל, יש לגעת כדי לנסות שוב"
443443#: qml/Panel/Indicators/MessageMenuItemFactory.qml:149
444444msgctxt "Label: Hint in message indicator line edit"
445445msgid "Reply"
446−msgstr ""
446+msgstr "להשיב"
447447
448448#: qml/Panel/Indicators/ModemInfoItem.qml:105
449449msgid "Unlock SIM"
450−msgstr ""
450+msgstr "שחרור נעילת ה־SIM"
451451
452452#: qml/Panel/Indicators/RoamingIndication.qml:27
453453msgid "Roaming"
@@ -455,28 +455,28 @@ msgstr "נדידה"
455455
456456#: qml/Tutorial/TutorialBottomFinish.qml:24
457457msgid "This action does different things for different apps"
458−msgstr ""
458+msgstr "פעולה זו עושה דברים שונים ליישומים שונים"
459459
460460#: qml/Tutorial/TutorialBottomFinish.qml:25
461461msgid "Tap here to finish."
462−msgstr ""
462+msgstr "יש לגעת כאן כדי לסיים."
463463
464464#: qml/Tutorial/TutorialBottom.qml:28
465465msgid "Open special menus"
466−msgstr ""
466+msgstr "פתיחת תפריטים מיוחדים"
467467
468468#: qml/Tutorial/TutorialBottom.qml:29
469469msgid "Swipe up from the bottom edge."
470−msgstr ""
470+msgstr "גרירה למעלה מהקצה התחתון."
471471
472472#: qml/Tutorial/TutorialContent.qml:81 qml/Tutorial/TutorialLeftFinish.qml:25
473473#: qml/Tutorial/TutorialRight.qml:144
474474msgid "Tap here to continue."
475−msgstr ""
475+msgstr "יש לגעת כאן כדי להמשיך."
476476
477477#: qml/Tutorial/TutorialContent.qml:81
478478msgid "Click here to finish."
479−msgstr ""
479+msgstr "יש ללחוץ כאן כדי לסיים."
480480
481481#: qml/Tutorial/TutorialLeftFinish.qml:24
482482msgid "These are the shortcuts to favorite apps"
@@ -484,7 +484,7 @@ msgstr ""
484484
485485#: qml/Tutorial/TutorialLeft.qml:26
486486msgid "Open the launcher"
487−msgstr ""
487+msgstr "פתיחת המשגר"
488488
489489#: qml/Tutorial/TutorialLeft.qml:27
490490msgid "Short swipe from the left edge."
@@ -496,11 +496,11 @@ msgstr ""
496496
497497#: qml/Tutorial/TutorialPage.qml:195
498498msgid "Try again."
499−msgstr ""
499+msgstr "נא לנסות שוב."
500500
501501#: qml/Tutorial/TutorialRight.qml:31
502502msgid "To view open apps"
503−msgstr ""
503+msgstr "לצפייה ביישומים הפתוחים"
504504
505505#: qml/Tutorial/TutorialRight.qml:32
506506msgid "Long swipe from the right edge."
@@ -508,7 +508,7 @@ msgstr ""
508508
509509#: qml/Tutorial/TutorialRight.qml:122
510510msgid "View all your running tasks."
511−msgstr ""
511+msgstr "צפייה בכל המשימות הפעילות שלך."
512512
513513#: qml/Wizard/Page.qml:89
514514msgctxt "Button: Go back one page in the Wizard"
@@ -517,31 +517,31 @@ msgstr ""
517517
518518#: qml/Wizard/Pages/here-terms.qml:27
519519msgid "Terms & Conditions"
520−msgstr ""
520+msgstr "תנאי שימוש"
521521
522522#: qml/Wizard/Pages/passwd-confirm.qml:49
523523msgid "Confirm passphrase"
524−msgstr ""
524+msgstr "אישור מילת הצופן"
525525
526526#: qml/Wizard/Pages/passwd-confirm.qml:50
527527msgid "Confirm passcode"
528−msgstr ""
528+msgstr "אישור קוד הצופן"
529529
530530#: qml/Wizard/Pages/passwd-confirm.qml:53
531531#: qml/Wizard/Pages/passwd-confirm.qml:54
532532msgid "Please try again."
533−msgstr ""
533+msgstr "נא לנסות שוב."
534534
535535#: qml/Wizard/Pages/passwd-confirm.qml:82 qml/Wizard/Pages/passwd-set.qml:90
536536#: qml/Wizard/Pages/10-welcome.qml:88 qml/Wizard/Pages/30-passwd-type.qml:128
537537#: qml/Wizard/Pages/40-wifi.qml:215 qml/Wizard/Pages/50-location.qml:131
538538#: qml/Wizard/Pages/60-reporting.qml:50
539539msgid "Continue"
540−msgstr ""
540+msgstr "להמשיך"
541541
542542#: qml/Wizard/Pages/passwd-set.qml:61
543543msgid "Choose your passcode"
544−msgstr ""
544+msgstr "בחירת קוד הצופן שלך"
545545
546546#: qml/Wizard/Pages/passwd-set.qml:68
547547msgid "Passphrase must be 4 characters long"
@@ -549,19 +549,19 @@ msgstr ""
549549
550550#: qml/Wizard/Pages/10-welcome.qml:27
551551msgid "Hi!"
552−msgstr ""
552+msgstr "שלום!"
553553
554554#: qml/Wizard/Pages/10-welcome.qml:44
555555msgid "Welcome to your Ubuntu phone."
556−msgstr ""
556+msgstr "ברוך בואך לטלפון האובונטו שלך."
557557
558558#: qml/Wizard/Pages/10-welcome.qml:52
559559msgid "Let’s get started."
560−msgstr ""
560+msgstr "קדימה, מתחילים."
561561
562562#: qml/Wizard/Pages/20-sim.qml:25
563563msgid "Add a SIM card and restart your device"
564−msgstr ""
564+msgstr "יש להוסיף כרטיס SIM ולהפעיל את ההתקן מחדש"
565565
566566#: qml/Wizard/Pages/20-sim.qml:59
567567msgid "Without it, you won’t be able to make calls or use text messaging."
@@ -569,7 +569,7 @@ msgstr ""
569569
570570#: qml/Wizard/Pages/20-sim.qml:73 qml/Wizard/Pages/40-wifi.qml:215
571571msgid "Skip"
572−msgstr ""
572+msgstr "דילוג"
573573
574574#: qml/Wizard/Pages/30-passwd-type.qml:39
575575msgid "Lock security"
@@ -582,48 +582,48 @@ msgstr ""
582582#: qml/Wizard/Pages/30-passwd-type.qml:97
583583msgctxt "Label: Type of security method"
584584msgid "Swipe"
585−msgstr ""
585+msgstr "החלקה"
586586
587587#: qml/Wizard/Pages/30-passwd-type.qml:98
588588msgctxt "Label: Description of security method"
589589msgid "No security"
590−msgstr ""
590+msgstr "אין אבטחה"
591591
592592#: qml/Wizard/Pages/30-passwd-type.qml:100
593593msgctxt "Label: Type of security method"
594594msgid "Passcode"
595−msgstr ""
595+msgstr "קוד צופן"
596596
597597#: qml/Wizard/Pages/30-passwd-type.qml:101
598598msgctxt "Label: Description of security method"
599599msgid "4 digits only"
600−msgstr ""
600+msgstr "4 ספרות בלבד"
601601
602602#: qml/Wizard/Pages/30-passwd-type.qml:103
603603msgctxt "Label: Type of security method"
604604msgid "Passphrase"
605−msgstr ""
605+msgstr "מילת צופן"
606606
607607#: qml/Wizard/Pages/30-passwd-type.qml:104
608608msgctxt "Label: Description of security method"
609609msgid "Numbers and letters"
610−msgstr ""
610+msgstr "מספרים ואותיות"
611611
612612#: qml/Wizard/Pages/40-wifi.qml:29
613613msgid "Connect to Wi‑Fi"
614−msgstr ""
614+msgstr "התחברות לרשת אלחוטית"
615615
616616#: qml/Wizard/Pages/40-wifi.qml:168
617617msgid "Available networks…"
618−msgstr ""
618+msgstr "רשתות זמינות…"
619619
620620#: qml/Wizard/Pages/40-wifi.qml:169
621621msgid "No available networks."
622−msgstr ""
622+msgstr "אין רשתות זמינות."
623623
624624#: qml/Wizard/Pages/50-location.qml:27
625625msgid "Location"
626−msgstr ""
626+msgstr "מיקום"
627627
628628#: qml/Wizard/Pages/50-location.qml:62
629629msgid "Let the phone detect your location:"
@@ -650,11 +650,11 @@ msgstr ""
650650
651651#: qml/Wizard/Pages/50-location.qml:124
652652msgid "You can change your mind later in <b>System Settings</b>."
653−msgstr ""
653+msgstr "ניתן לשנות את העדפותיך מאוחר יותר ב<b>הגדרות המערכת</b>."
654654
655655#: qml/Wizard/Pages/60-reporting.qml:24
656656msgid "Improving your experience"
657−msgstr ""
657+msgstr "שיפור החוויה שלך"
658658
659659#: qml/Wizard/Pages/60-reporting.qml:36
660660msgid ""
@@ -670,19 +670,19 @@ msgstr ""
670670
671671#: qml/Wizard/Pages/80-finished.qml:24
672672msgid "All done"
673−msgstr ""
673+msgstr "הכול בוצע"
674674
675675#: qml/Wizard/Pages/80-finished.qml:39
676676msgid "Nice work!"
677−msgstr ""
677+msgstr "כל הכבוד!"
678678
679679#: qml/Wizard/Pages/80-finished.qml:46
680680msgid "Your phone is now ready to use."
681−msgstr ""
681+msgstr "הטלפון שלך מוכן לשימוש."
682682
683683#: qml/Wizard/Pages/80-finished.qml:53
684684msgid "Finish"
685−msgstr ""
685+msgstr "סיום"
686686
687687#. Translators: This is the arrow for "Back" buttons
688688#: qml/Wizard/StackButton.qml:39
po/pl.po+9−11
@@ -8,16 +8,16 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2015-06-22 12:00+0200\n"
11−"PO-Revision-Date: 2015-07-04 21:24+0000\n"
12−"Last-Translator: GTriderXC <gtriderxc@yahoo.com>\n"
11+"PO-Revision-Date: 2015-07-12 09:46+0000\n"
12+"Last-Translator: Seweryn Opyd <Unknown>\n"
1313"Language-Team: Polish <pl@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
1818"|| n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2015-07-05 05:55+0000\n"
20−"X-Generator: Launchpad (build 17597)\n"
19+"X-Launchpad-Export-Date: 2015-07-13 05:36+0000\n"
20+"X-Generator: Launchpad (build 17620)\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -53,7 +53,7 @@ msgstr "%k:%M"
5353#. en_US example: "Tomorrow\u2003%l:%M %p" --> "Tomorrow 1:00 PM"
5454#: plugins/Utils/relativetimeformatter.cpp:172
5555msgid "Tomorrow %l:%M %p"
56−msgstr "Jutro %k:%M"
56+msgstr "Jutro %k:%M"
5757
5858#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
5959#. This format string is used for showing, on a 12-hour clock, times that happened in the last week.
@@ -70,7 +70,7 @@ msgstr "%a %k:%M"
7070#. en_GB example: "%a %b %d\u2003%l:%M %p" --> "Fri 31 Oct 1:00 PM"
7171#: plugins/Utils/relativetimeformatter.cpp:190
7272msgid "%a %d %b %l:%M %p"
73−msgstr "%a %d %b %k:%M"
73+msgstr "%a, %b %d %k:%M"
7474
7575#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
7676#. This format string is used for showing, on a 24-hour clock, times that happen yesterday.
@@ -78,7 +78,7 @@ msgstr "%a %d %b %k:%M"
7878#. en_US example: "Yesterday\u2003%l:%M %p" --> "Yesterday 13:00"
7979#: plugins/Utils/relativetimeformatter.cpp:201
8080msgid "Yesterday %H:%M"
81−msgstr "Wczoraj %H:%M"
81+msgstr "Wczoraj %H:%M"
8282
8383#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
8484#. This format string is used for showing, on a 24-hour clock, times that happened today.
@@ -110,7 +110,7 @@ msgstr "%a %H:%M"
110110#. en_GB example: "%a %b %d\u2003%H:%M" --> "Fri 31 Oct 13:00"
111111#: plugins/Utils/relativetimeformatter.cpp:234
112112msgid "%a %d %b %H:%M"
113−msgstr "%a %d %b %H:%M"
113+msgstr "%a, %b %d %H:%M"
114114
115115#: qml/Components/DelayedLockscreen.qml:49
116116msgid "Device Locked"
@@ -202,9 +202,7 @@ msgstr "Zasilanie"
202202msgid ""
203203"Are you sure you would like\n"
204204"to power off?"
205−msgstr ""
206−"Czy na pewno\n"
207−"wyłączyć?"
205+msgstr "Czy na pewno wyłączyć?"
208206
209207#: qml/Components/Dialogs.qml:155
210208msgctxt "Button: Power off the system"
po/sv.po+22−22
@@ -8,15 +8,15 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2015-06-22 12:00+0200\n"
11−"PO-Revision-Date: 2015-04-03 05:36+0000\n"
11+"PO-Revision-Date: 2015-07-12 22:17+0000\n"
1212"Last-Translator: Josef Andersson <Unknown>\n"
1313"Language-Team: Swedish\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-07-04 05:37+0000\n"
19−"X-Generator: Launchpad (build 17597)\n"
18+"X-Launchpad-Export-Date: 2015-07-13 05:36+0000\n"
19+"X-Generator: Launchpad (build 17620)\n"
2020"Language: sv\n"
2121
2222#: plugins/LightDM/Greeter.cpp:112
@@ -38,14 +38,14 @@ msgstr "Släpp genväg"
3838#. en_US example: "Yesterday\u2003%l:%M %p" --> "Yesterday 1:00 PM"
3939#: plugins/Utils/relativetimeformatter.cpp:157
4040msgid "Yesterday %l:%M %p"
41−msgstr ""
41+msgstr "Igår %l:%M %p"
4242
4343#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
4444#. This format string is used for showing, on a 12-hour clock, times that happened today.
4545#. en_US example: "%l:%M %p" --> "1:00 PM"
4646#: plugins/Utils/relativetimeformatter.cpp:164
4747msgid "%l:%M %p"
48−msgstr ""
48+msgstr "%l:%M %p"
4949
5050#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
5151#. This format string is used for showing, on a 12-hour clock, events/appointments that happen tomorrow.
@@ -53,7 +53,7 @@ msgstr ""
5353#. en_US example: "Tomorrow\u2003%l:%M %p" --> "Tomorrow 1:00 PM"
5454#: plugins/Utils/relativetimeformatter.cpp:172
5555msgid "Tomorrow %l:%M %p"
56−msgstr ""
56+msgstr "Imorgon %l:%M %p"
5757
5858#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
5959#. This format string is used for showing, on a 12-hour clock, times that happened in the last week.
@@ -61,7 +61,7 @@ msgstr ""
6161#. en_US example: "%a\u2003%l:%M %p" --> "Fri 1:00 PM"
6262#: plugins/Utils/relativetimeformatter.cpp:181
6363msgid "%a %l:%M %p"
64−msgstr ""
64+msgstr "%a %l:%M %p"
6565
6666#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
6767#. This format string is used for showing, on a 12-hour clock, times that happened before a week from now.
@@ -70,7 +70,7 @@ msgstr ""
7070#. en_GB example: "%a %b %d\u2003%l:%M %p" --> "Fri 31 Oct 1:00 PM"
7171#: plugins/Utils/relativetimeformatter.cpp:190
7272msgid "%a %d %b %l:%M %p"
73−msgstr ""
73+msgstr "%a %d %b %l:%M %p"
7474
7575#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
7676#. This format string is used for showing, on a 24-hour clock, times that happen yesterday.
@@ -78,14 +78,14 @@ msgstr ""
7878#. en_US example: "Yesterday\u2003%l:%M %p" --> "Yesterday 13:00"
7979#: plugins/Utils/relativetimeformatter.cpp:201
8080msgid "Yesterday %H:%M"
81−msgstr ""
81+msgstr "Igår %H:%M"
8282
8383#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
8484#. This format string is used for showing, on a 24-hour clock, times that happened today.
8585#. en_US example: "%H:%M" --> "13:00"
8686#: plugins/Utils/relativetimeformatter.cpp:208
8787msgid "%H:%M"
88−msgstr ""
88+msgstr "%H:%M"
8989
9090#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
9191#. This format string is used for showing, on a 24-hour clock, events/appointments that happen tomorrow.
@@ -93,7 +93,7 @@ msgstr ""
9393#. en_US example: "Tomorrow\u2003%l:%M %p" --> "Tomorrow 13:00"
9494#: plugins/Utils/relativetimeformatter.cpp:216
9595msgid "Tomorrow %H:%M"
96−msgstr ""
96+msgstr "Imorgon %H:%M"
9797
9898#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
9999#. This format string is used for showing, on a 24-hour clock, times that happened in the last week.
@@ -101,7 +101,7 @@ msgstr ""
101101#. en_US example: "%a\u2003%H:%M" --> "Fri 13:00"
102102#: plugins/Utils/relativetimeformatter.cpp:225
103103msgid "%a %H:%M"
104−msgstr ""
104+msgstr "%a %H:%M"
105105
106106#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
107107#. This format string is used for showing, on a 24-hour clock, times that happened before a week from now.
@@ -110,7 +110,7 @@ msgstr ""
110110#. en_GB example: "%a %b %d\u2003%H:%M" --> "Fri 31 Oct 13:00"
111111#: plugins/Utils/relativetimeformatter.cpp:234
112112msgid "%a %d %b %H:%M"
113−msgstr ""
113+msgstr "%a %d %b %H:%M"
114114
115115#: qml/Components/DelayedLockscreen.qml:49
116116msgid "Device Locked"
@@ -396,32 +396,32 @@ msgstr "Inget spelas"
396396#, qt-format
397397msgid "%1 hour"
398398msgid_plural "%1 hours"
399−msgstr[0] ""
400−msgstr[1] ""
399+msgstr[0] "%1 timme"
400+msgstr[1] "%1 timmar"
401401
402402#: qml/Panel/Indicators/MenuItemFactory.qml:772
403403#, qt-format
404404msgid "%1 minute"
405405msgid_plural "%1 minutes"
406−msgstr[0] ""
407−msgstr[1] ""
406+msgstr[0] "%1 minut"
407+msgstr[1] "%1 minuter"
408408
409409#: qml/Panel/Indicators/MenuItemFactory.qml:777
410410#, qt-format
411411msgid "%1 second"
412412msgid_plural "%1 seconds"
413−msgstr[0] ""
414−msgstr[1] ""
413+msgstr[0] "%1 sekund"
414+msgstr[1] "%1 sekunder"
415415
416416#: qml/Panel/Indicators/MenuItemFactory.qml:780
417417msgid "0 seconds"
418−msgstr ""
418+msgstr "0 sekunder"
419419
420420#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
421421#: qml/Panel/Indicators/MenuItemFactory.qml:782
422422#, qt-format
423423msgid "%1 remaining"
424−msgstr ""
424+msgstr "%1 återstår"
425425
426426#: qml/Panel/Indicators/MenuItemFactory.qml:788
427427msgid "In queue…"
@@ -483,7 +483,7 @@ msgstr "Tryck här för att fortsätta."
483483
484484#: qml/Tutorial/TutorialContent.qml:81
485485msgid "Click here to finish."
486−msgstr ""
486+msgstr "Klicka här för att slutföra."
487487
488488#: qml/Tutorial/TutorialLeftFinish.qml:24
489489msgid "These are the shortcuts to favorite apps"
po/sw.po+53−53
@@ -8,19 +8,19 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2015-06-22 12:00+0200\n"
11−"PO-Revision-Date: 2014-01-14 19:28+0000\n"
12−"Last-Translator: Damas <Unknown>\n"
11+"PO-Revision-Date: 2015-07-10 20:22+0000\n"
12+"Last-Translator: Valentine <mwangi_valentino@yahoo.com>\n"
1313"Language-Team: Swahili <sw@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2015-07-04 05:37+0000\n"
19−"X-Generator: Launchpad (build 17597)\n"
18+"X-Launchpad-Export-Date: 2015-07-11 05:33+0000\n"
19+"X-Generator: Launchpad (build 17620)\n"
2020
2121#: plugins/LightDM/Greeter.cpp:112
2222msgid "Password: "
23−msgstr ""
23+msgstr "Neno siri "
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:45
2626#: plugins/Unity/Launcher/launcheritem.cpp:100
@@ -37,14 +37,14 @@ msgstr ""
3737#. en_US example: "Yesterday\u2003%l:%M %p" --> "Yesterday 1:00 PM"
3838#: plugins/Utils/relativetimeformatter.cpp:157
3939msgid "Yesterday %l:%M %p"
40−msgstr ""
40+msgstr "Jana %l:%M %p"
4141
4242#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
4343#. This format string is used for showing, on a 12-hour clock, times that happened today.
4444#. en_US example: "%l:%M %p" --> "1:00 PM"
4545#: plugins/Utils/relativetimeformatter.cpp:164
4646msgid "%l:%M %p"
47−msgstr ""
47+msgstr "%l:%M %p"
4848
4949#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
5050#. This format string is used for showing, on a 12-hour clock, events/appointments that happen tomorrow.
@@ -52,7 +52,7 @@ msgstr ""
5252#. en_US example: "Tomorrow\u2003%l:%M %p" --> "Tomorrow 1:00 PM"
5353#: plugins/Utils/relativetimeformatter.cpp:172
5454msgid "Tomorrow %l:%M %p"
55−msgstr ""
55+msgstr "Kesho %l:%M %p"
5656
5757#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
5858#. This format string is used for showing, on a 12-hour clock, times that happened in the last week.
@@ -69,7 +69,7 @@ msgstr ""
6969#. en_GB example: "%a %b %d\u2003%l:%M %p" --> "Fri 31 Oct 1:00 PM"
7070#: plugins/Utils/relativetimeformatter.cpp:190
7171msgid "%a %d %b %l:%M %p"
72−msgstr ""
72+msgstr "%a %d %b %l:%M %p"
7373
7474#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
7575#. This format string is used for showing, on a 24-hour clock, times that happen yesterday.
@@ -77,14 +77,14 @@ msgstr ""
7777#. en_US example: "Yesterday\u2003%l:%M %p" --> "Yesterday 13:00"
7878#: plugins/Utils/relativetimeformatter.cpp:201
7979msgid "Yesterday %H:%M"
80−msgstr ""
80+msgstr "Jana %H:%M"
8181
8282#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
8383#. This format string is used for showing, on a 24-hour clock, times that happened today.
8484#. en_US example: "%H:%M" --> "13:00"
8585#: plugins/Utils/relativetimeformatter.cpp:208
8686msgid "%H:%M"
87−msgstr ""
87+msgstr "%H:%M"
8888
8989#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
9090#. This format string is used for showing, on a 24-hour clock, events/appointments that happen tomorrow.
@@ -92,7 +92,7 @@ msgstr ""
9292#. en_US example: "Tomorrow\u2003%l:%M %p" --> "Tomorrow 13:00"
9393#: plugins/Utils/relativetimeformatter.cpp:216
9494msgid "Tomorrow %H:%M"
95−msgstr ""
95+msgstr "Kesho %H:%M"
9696
9797#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
9898#. This format string is used for showing, on a 24-hour clock, times that happened in the last week.
@@ -100,7 +100,7 @@ msgstr ""
100100#. en_US example: "%a\u2003%H:%M" --> "Fri 13:00"
101101#: plugins/Utils/relativetimeformatter.cpp:225
102102msgid "%a %H:%M"
103−msgstr ""
103+msgstr "%a %H:%M"
104104
105105#. Translators, please edit/rearrange these strftime(3) tokens to suit your locale!
106106#. This format string is used for showing, on a 24-hour clock, times that happened before a week from now.
@@ -109,11 +109,11 @@ msgstr ""
109109#. en_GB example: "%a %b %d\u2003%H:%M" --> "Fri 31 Oct 13:00"
110110#: plugins/Utils/relativetimeformatter.cpp:234
111111msgid "%a %d %b %H:%M"
112−msgstr ""
112+msgstr "%a %d %b %H:%M"
113113
114114#: qml/Components/DelayedLockscreen.qml:49
115115msgid "Device Locked"
116−msgstr ""
116+msgstr "kifaa kimefungwa"
117117
118118#: qml/Components/DelayedLockscreen.qml:64
119119msgid "You have been locked out due to too many failed passphrase attempts."
@@ -127,68 +127,68 @@ msgstr ""
127127#, qt-format
128128msgid "Please wait %1 minute and then try again…"
129129msgid_plural "Please wait %1 minutes and then try again…"
130−msgstr[0] ""
131−msgstr[1] ""
130+msgstr[0] "Subiri dakika %1 halafu jaribu tena..."
131+msgstr[1] "Subiri dakika %1 halafu jaribu tena"
132132
133133#: qml/Components/Dialogs.qml:69
134134msgctxt "Title: Lock/Log out dialog"
135135msgid "Log out"
136−msgstr ""
136+msgstr "Logi nje"
137137
138138#: qml/Components/Dialogs.qml:70
139139msgid "Are you sure you want to log out?"
140−msgstr ""
140+msgstr "Una uhakika unataka kulogi nje?"
141141
142142#: qml/Components/Dialogs.qml:72
143143msgctxt "Button: Lock the system"
144144msgid "Lock"
145−msgstr ""
145+msgstr "Funga"
146146
147147#: qml/Components/Dialogs.qml:79
148148msgctxt "Button: Log out from the system"
149149msgid "Log Out"
150−msgstr ""
150+msgstr "Logi nje"
151151
152152#: qml/Components/Dialogs.qml:86 qml/Components/Dialogs.qml:117
153153#: qml/Components/Dialogs.qml:173
154154msgid "Cancel"
155−msgstr ""
155+msgstr "Ghairi"
156156
157157#: qml/Components/Dialogs.qml:98
158158msgctxt "Title: Reboot/Shut down dialog"
159159msgid "Shut down"
160−msgstr ""
160+msgstr "Zima"
161161
162162#: qml/Components/Dialogs.qml:99
163163msgid "Are you sure you want to shut down?"
164−msgstr ""
164+msgstr "Una uhakika unataka kuzima?"
165165
166166#: qml/Components/Dialogs.qml:101
167167msgctxt "Button: Reboot the system"
168168msgid "Reboot"
169−msgstr ""
169+msgstr "Washa tena"
170170
171171#: qml/Components/Dialogs.qml:109
172172msgctxt "Button: Shut down the system"
173173msgid "Shut down"
174−msgstr ""
174+msgstr "Zima"
175175
176176#: qml/Components/Dialogs.qml:129
177177msgctxt "Title: Reboot dialog"
178178msgid "Reboot"
179−msgstr ""
179+msgstr "Washa tena"
180180
181181#: qml/Components/Dialogs.qml:130
182182msgid "Are you sure you want to reboot?"
183−msgstr ""
183+msgstr "Una uhakika unataka kuzima halafu uwashe tena?"
184184
185185#: qml/Components/Dialogs.qml:132
186186msgid "No"
187−msgstr ""
187+msgstr "La"
188188
189189#: qml/Components/Dialogs.qml:138
190190msgid "Yes"
191−msgstr ""
191+msgstr "Ndio"
192192
193193#: qml/Components/Dialogs.qml:152
194194msgctxt "Title: Power off/Restart dialog"
@@ -199,17 +199,17 @@ msgstr ""
199199msgid ""
200200"Are you sure you would like\n"
201201"to power off?"
202−msgstr ""
202+msgstr "Una uhakika unataka kuzima?"
203203
204204#: qml/Components/Dialogs.qml:155
205205msgctxt "Button: Power off the system"
206206msgid "Power off"
207−msgstr ""
207+msgstr "Zima"
208208
209209#: qml/Components/Dialogs.qml:164
210210msgctxt "Button: Restart the system"
211211msgid "Restart"
212−msgstr ""
212+msgstr "Zima na uwashe"
213213
214214#: qml/Components/Lockscreen.qml:245
215215msgid "Return to Call"
@@ -217,55 +217,55 @@ msgstr ""
217217
218218#: qml/Components/Lockscreen.qml:245
219219msgid "Emergency Call"
220−msgstr ""
220+msgstr "Simu ya dharura"
221221
222222#: qml/Components/Lockscreen.qml:277
223223msgid "OK"
224−msgstr ""
224+msgstr "Sawa"
225225
226226#: qml/Dash/GenericScopeView.qml:532 qml/Dash/GenericScopeView.qml:690
227227msgid "See less"
228−msgstr ""
228+msgstr "Onyesha kidogo"
229229
230230#: qml/Dash/GenericScopeView.qml:532
231231msgid "See all"
232−msgstr ""
232+msgstr "Onyesha zote"
233233
234234#: qml/Dash/GenericScopeView.qml:594
235235msgctxt "Label: Hint for dash search line edit"
236236msgid "Search"
237−msgstr ""
237+msgstr "Tafuta"
238238
239239#: qml/Dash/PageHeader.qml:269
240240msgctxt "Button: Open the Ubuntu Store"
241241msgid "Store"
242−msgstr ""
242+msgstr "Duka"
243243
244244#: qml/Dash/PageHeader.qml:276
245245msgctxt "Button: Start a search in the current dash scope"
246246msgid "Search"
247−msgstr ""
247+msgstr "Tafuta"
248248
249249#: qml/Dash/PageHeader.qml:286
250250msgctxt "Button: Show the current dash scope settings"
251251msgid "Settings"
252−msgstr ""
252+msgstr "Mipangilio"
253253
254254#: qml/Dash/PageHeader.qml:293
255255msgid "Remove from Favorites"
256−msgstr ""
256+msgstr "Toa kutoka nilizopenda"
257257
258258#: qml/Dash/PageHeader.qml:293
259259msgid "Add to Favorites"
260−msgstr ""
260+msgstr "Ongeza kwenye nilizopenda"
261261
262262#: qml/Dash/Previews/PreviewActionCombo.qml:35
263263msgid "More..."
264−msgstr ""
264+msgstr "Zaidi..."
265265
266266#: qml/Dash/Previews/PreviewActionCombo.qml:35
267267msgid "Less..."
268−msgstr ""
268+msgstr "Kidogo..."
269269
270270#: qml/Dash/Previews/PreviewRatingInput.qml:84
271271msgid "Rate this"
@@ -289,15 +289,15 @@ msgstr ""
289289
290290#: qml/Dash/ScopeSettings/ScopeSettingBoolean.qml:43
291291msgid "Enable location data"
292−msgstr ""
292+msgstr "Eneza data ya eneo"
293293
294294#: qml/Dash/ScopesList.qml:67
295295msgid "Manage"
296−msgstr ""
296+msgstr "Amuru"
297297
298298#: qml/Dash/ScopesList.qml:113
299299msgid "Home"
300−msgstr ""
300+msgstr "Nyumbani"
301301
302302#: qml/Dash/ScopesList.qml:114
303303msgid "Also installed"
@@ -305,15 +305,15 @@ msgstr ""
305305
306306#: qml/Greeter/CoverPage.qml:107
307307msgid "Unlock"
308−msgstr ""
308+msgstr "Fungua"
309309
310310#: qml/Greeter/LoginList.qml:236
311311msgid "Retry"
312−msgstr ""
312+msgstr "Jaribu tena"
313313
314314#: qml/Greeter/LoginList.qml:237
315315msgid "Tap to unlock"
316−msgstr ""
316+msgstr "Gusa ufungue"
317317
318318#: qml/Greeter/NarrowView.qml:53 qml/Wizard/Pages/passwd-confirm.qml:53
319319msgid "Sorry, incorrect passphrase."
@@ -342,11 +342,11 @@ msgstr ""
342342#: qml/Greeter/NarrowView.qml:115
343343#, qt-format
344344msgid "Enter %1"
345−msgstr ""
345+msgstr "Bonyeza %1"
346346
347347#: qml/Greeter/NarrowView.qml:116 qml/Wizard/Pages/passwd-set.qml:60
348348msgid "Enter passphrase"
349−msgstr ""
349+msgstr "Bonyeza neno siri"
350350
351351#: qml/Greeter/NarrowView.qml:117
352352msgid "Enter passcode"
qml/Dash/CardTool.qml+15−6
@@ -80,16 +80,25 @@ Item {
8080
8181 If undefined, should use implicit width of the actual card.
8282 */
83− readonly property var cardWidth: {
83+ property var cardWidth: {
8484 switch (categoryLayout) {
8585 case "grid":
8686 case "vertical-journal":
87− if (template["card-layout"] === "horizontal") return units.gu(38);
88− switch (template["card-size"]) {
89− case "small": return units.gu(12);
90− case "large": return units.gu(38);
87+ var size = template["card-size"];
88+ if (template["card-layout"] === "horizontal") size = "large";
89+ switch (size) {
90+ case "small": {
91+ if (viewWidth <= units.gu(45)) return units.gu(12);
92+ else return units.gu(14);
93+ }
94+ case "large": {
95+ if (viewWidth >= units.gu(70)) return units.gu(42);
96+ else return viewWidth - units.gu(2);
97+ }
9198 }
92− return units.gu(18.5);
99+ if (viewWidth <= units.gu(45)) return units.gu(18);
100+ else if (viewWidth >= units.gu(70)) return units.gu(20);
101+ else return units.gu(23);
93102 case "carousel":
94103 case "horizontal-list":
95104 return carouselTool.minimumTileWidth;
qml/Dash/GenericScopeView.qml+7
@@ -332,6 +332,13 @@ FocusScope {
332332 updateRanges();
333333 if (scope && scope.id === "clickscope" && (categoryId === "predefined" || categoryId === "local")) {
334334 // Yeah, hackish :/
335+ if (scopeView.width > units.gu(45)) {
336+ if (scopeView.width >= units.gu(70)) {
337+ cardTool.cardWidth = units.gu(9);
338+ } else {
339+ cardTool.cardWidth = units.gu(10);
340+ }
341+ }
335342 cardTool.artShapeSize = Qt.size(units.gu(8), units.gu(7.5));
336343 }
337344 item.cardTool = cardTool;
qml/Shell.qml+1−1
@@ -305,7 +305,7 @@ Item {
305305 Binding {
306306 target: applicationsDisplayLoader.item
307307 property: "spreadEnabled"
308− value: tutorial.spreadEnabled && (!greeter || !greeter.hasLockedApp)
308+ value: tutorial.spreadEnabled && (!greeter || (!greeter.hasLockedApp && !greeter.shown))
309309 }
310310 Binding {
311311 target: applicationsDisplayLoader.item
qml/Stages/ApplicationWindow.qml+22−46
@@ -17,7 +17,6 @@
1717import QtQuick 2.0
1818import Ubuntu.Components 1.1
1919import Unity.Application 0.1
20−import SessionGrabber 0.1
2120
2221FocusScope {
2322 id: root
@@ -31,16 +30,11 @@ FocusScope {
3130 property QtObject application
3231 property int surfaceOrientationAngle
3332
34− function removeScreenshot() {
35− sessionGrabber.removeScreenshot();
36− }
37−
3833 QtObject {
3934 id: d
4035
4136 // helpers so that we don't have to check for the existence of an application everywhere
4237 // (in order to avoid breaking qml binding due to a javascript exception)
43− readonly property string appId: root.application ? root.application.appId : ""
4438 readonly property string name: root.application ? root.application.name : ""
4539 readonly property url icon: root.application ? root.application.icon : ""
4640 readonly property int applicationState: root.application ? root.application.state : -1
@@ -56,11 +50,11 @@ FocusScope {
5650 property bool hadSurface: sessionContainer.surfaceContainer.hadSurface
5751
5852 property bool needToTakeScreenshot:
59− sessionContainer.surface && d.surfaceInitialized
60− && (d.applicationState === ApplicationInfoInterface.Stopped || d.applicationState === ApplicationInfoInterface.Suspended)
53+ sessionContainer.surface && d.surfaceInitialized && screenshotImage.status === Image.Null
54+ && d.applicationState === ApplicationInfoInterface.Stopped
6155 onNeedToTakeScreenshotChanged: {
6256 if (needToTakeScreenshot) {
63− sessionGrabber.grab();
57+ screenshotImage.take();
6458 }
6559 }
6660
@@ -92,9 +86,27 @@ FocusScope {
9286 onTriggered: { if (stateGroup.state === "surface") { d.surfaceOldEnoughToBeResized = true; } }
9387 }
9488
89+ Image {
90+ id: screenshotImage
91+ objectName: "screenshotImage"
92+ source: d.defaultScreenshot
93+ anchors.fill: parent
94+ antialiasing: !root.interactive
95+
96+ function take() {
97+ // Format: "image://application/$APP_ID/$CURRENT_TIME_MS"
98+ // eg: "image://application/calculator-app/123456"
99+ var timeMs = new Date().getTime();
100+ source = "image://application/" + root.application.appId + "/" + timeMs;
101+ }
102+
103+ // Save memory by using a half-resolution (thus quarter size) screenshot
104+ sourceSize.width: root.width / 2
105+ sourceSize.height: root.height / 2
106+ }
107+
95108 Loader {
96109 id: splashLoader
97− objectName: "splashLoader"
98110 visible: active
99111 active: false
100112 anchors.fill: parent
@@ -108,46 +120,10 @@ FocusScope {
108120 backgroundColor: d.splashColor
109121 headerColor: d.splashColorHeader
110122 footerColor: d.splashColorFooter
111− activeSpinner: d.applicationState === ApplicationInfoInterface.Starting ||
112− d.applicationState === ApplicationInfoInterface.Running
113123 }
114124 }
115125 }
116126
117− Image {
118− id: screenshotImage
119− objectName: "screenshotImage"
120− source: sessionGrabber.path || d.defaultScreenshot
121− anchors.fill: parent
122− antialiasing: !root.interactive
123− cache: false
124− asynchronous: true
125−
126− // Save memory by using a half-resolution (thus quarter size) screenshot
127− sourceSize.width: root.width / 2
128− sourceSize.height: root.height / 2
129−
130− ActivityIndicator {
131− id: activityIndicator
132− anchors.centerIn: parent
133− visible: running
134− running: stateGroup.state == "screenshot" &&
135− (d.applicationState === ApplicationInfoInterface.Starting || d.applicationState === ApplicationInfoInterface.Running)
136− }
137− }
138−
139− SessionGrabber {
140− id: sessionGrabber
141− appId: d.appId
142− target: root
143−
144− onScreenshotGrabbed: {
145− // Need to reset to "" and back since it may be the same path with new content
146− screenshotImage.source = "";
147− screenshotImage.source = sessionGrabber.path;
148− }
149− }
150−
151127 SessionContainer {
152128 id: sessionContainer
153129 // A fake application might not even have a session property.
qml/Stages/PhoneStage.qml+16−1
@@ -51,6 +51,14 @@ Rectangle {
5151 spreadView.contentX = -spreadView.shift;
5252 }
5353 }
54+ onSpreadEnabledChanged: {
55+ if (!spreadEnabled) {
56+ // reset. go back to display the focused app
57+ spreadView.selectedIndex = -1;
58+ spreadView.phase = 0;
59+ spreadView.contentX = -spreadView.shift;
60+ }
61+ }
5462 function updateFocusedAppOrientation() {
5563 if (spreadRepeater.count > 0) {
5664 spreadRepeater.itemAt(0).matchShellOrientation();
@@ -281,7 +289,13 @@ Rectangle {
281289
282290 switch (phase) {
283291 case 0:
284− if (shiftedContentX > width * positionMarker2) {
292+ // the "spreadEnabled" part is because when code does "phase = 0; contentX = -shift" to
293+ // dismiss the spread because spreadEnabled went to false, for some reason, during tests,
294+ // Flickable might jump in and change contentX value back, causing the code below to do
295+ // "phase = 1" which will make the spread stay.
296+ // It sucks that we have no control whatsoever over whether or when Flickable animates its
297+ // contentX.
298+ if (root.spreadEnabled && shiftedContentX > width * positionMarker2) {
285299 phase = 1;
286300 }
287301 break;
@@ -456,6 +470,7 @@ Rectangle {
456470 enabled: root.spreadEnabled &&
457471 !spreadView.active &&
458472 !snapAnimation.running &&
473+ !spreadDragArea.pressed &&
459474 priv.animateX &&
460475 !root.beingResized
461476 UbuntuNumberAnimation {
qml/Stages/Splash.qml−2
@@ -31,7 +31,6 @@ Item {
3131 property url icon
3232 property alias title: header.title
3333 property alias showHeader: header.visible
34− property alias activeSpinner: activityIndicator.running
3534
3635 Ambiance.Palette {
3736 id: ambiancePalette
@@ -145,7 +144,6 @@ Item {
145144 }
146145
147146 ActivityIndicator {
148− id: activityIndicator
149147 anchors.centerIn: header.visible ? parent : undefined
150148 anchors.verticalCenterOffset: header.visible ? header.height / 2 : 0
151149
qml/Stages/SpreadDelegate.qml−1
@@ -397,7 +397,6 @@ FocusScope {
397397 if (!running) {
398398 dragArea.moving = false;
399399 if (requestClose) {
400− appWindow.removeScreenshot();
401400 root.closed();
402401 } else {
403402 dragArea.distance = 0;
tests/plugins/CMakeLists.txt−1
@@ -2,7 +2,6 @@ add_subdirectory(AccountsService)
22add_subdirectory(Greeter)
33add_subdirectory(IntegratedLightDM)
44add_subdirectory(Dash)
5−add_subdirectory(SessionGrabber)
65add_subdirectory(Ubuntu)
76add_subdirectory(Unity)
87add_subdirectory(Utils)
tests/plugins/SessionGrabber/CMakeLists.txtdeleted−14
@@ -1,14 +0,0 @@
1−add_executable(SessionGrabberTestExec
2− sessiongrabbertest.cpp
3− ${CMAKE_SOURCE_DIR}/plugins/SessionGrabber/sessiongrabber.cpp
4− )
5−qt5_use_modules(SessionGrabberTestExec Core Quick Test Concurrent)
6−
7−add_definitions(-DCURRENT_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}")
8−
9−include_directories(
10− ${CMAKE_CURRENT_BINARY_DIR}
11− ${CMAKE_SOURCE_DIR}/plugins/SessionGrabber
12− )
13−
14−add_unity8_uitest(SessionGrabber SessionGrabberTestExec)
tests/plugins/SessionGrabber/sessiongrabbertest.cppdeleted−79
@@ -1,79 +0,0 @@
1−/*
2− * Copyright (C) 2015 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 <QtTestGui>
18−#include <QQuickItem>
19−#include <QQuickView>
20−#include <QSignalSpy>
21−
22−#include "sessiongrabber.h"
23−
24−class SessionGrabberTest : public QObject
25−{
26− Q_OBJECT
27−
28−private Q_SLOTS:
29−
30− void init()
31− {
32− view = new QQuickView();
33− view->setSource(QUrl::fromLocalFile(CURRENT_SOURCE_DIR "/sessiongrabbertest.qml"));
34− view->show();
35− QTest::qWaitForWindowExposed(view);
36− }
37−
38− void testSessionGrabber()
39− {
40− SessionGrabber s;
41− s.setAppId("test-app-id");
42− s.setTarget(view->rootObject());
43− QSignalSpy spy(&s, &SessionGrabber::screenshotGrabbed);
44−
45− QVERIFY(!QFile::exists(s.path()));
46−
47− view->rootObject()->setProperty("color", "red");
48− s.grab();
49− spy.wait();
50−
51− QVERIFY(QFile::exists(s.path()));
52− QImage image(s.path());
53− QCOMPARE(image.pixel(0, 0), qRgb(255, 0, 0));
54−
55− view->rootObject()->setProperty("color", "blue");
56− s.grab();
57− spy.wait();
58−
59− QVERIFY(QFile::exists(s.path()));
60− image = QImage(s.path());
61− QCOMPARE(image.pixel(0, 0), qRgb(0, 0, 255));
62−
63− s.removeScreenshot();
64−
65− QVERIFY(!QFile::exists(s.path()));
66− }
67−
68− void cleanup()
69− {
70− delete view;
71− }
72−
73−private:
74− QQuickView *view;
75−};
76−
77−QTEST_MAIN(SessionGrabberTest)
78−
79−#include "sessiongrabbertest.moc"
tests/plugins/SessionGrabber/sessiongrabbertest.qmldeleted−22
@@ -1,22 +0,0 @@
1−/*
2− * Copyright (C) 2015 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.4
18−
19−Rectangle {
20− width: 100
21− height: 100
22−}
tests/qmltests/Dash/tst_Card.qml+4−4
@@ -112,7 +112,7 @@ Rectangle {
112112 id: cardTool
113113 template: Helpers.update(JSON.parse(Helpers.defaultLayout), Helpers.tryParse(layoutArea.text, layoutError))['template'];
114114 components: Helpers.update(JSON.parse(Helpers.defaultLayout), Helpers.tryParse(layoutArea.text, layoutError))['components'];
115− viewWidth: units.gu(48)
115+ viewWidth: units.gu(40)
116116 }
117117
118118 readonly property var card: loader.item
@@ -261,10 +261,10 @@ Rectangle {
261261
262262 function test_card_size_data() {
263263 return [
264− { tag: "Medium", width: units.gu(18.5), index: 0 },
264+ { tag: "Medium", width: units.gu(18), index: 0 },
265265 { tag: "Small", width: units.gu(12), index: 1 },
266266 { tag: "Large", width: units.gu(38), index: 2 },
267− { tag: "Wide", width: units.gu(18.5), index: 0 },
267+ { tag: "Wide", width: units.gu(18), index: 0 },
268268 { tag: "Horizontal", width: units.gu(38), index: 5 },
269269 // Make sure card ends with header when there's no summary
270270 { tag: "NoSummary", height: function() { var cardToolRow = findChild(cardTool, "outerRow");
@@ -296,7 +296,7 @@ Rectangle {
296296
297297 function test_art_size_data() {
298298 return [
299− { tag: "Medium", width: units.gu(18.5), fill: Image.PreserveAspectCrop, index: 0 },
299+ { tag: "Medium", width: units.gu(18), fill: Image.PreserveAspectCrop, index: 0 },
300300 { tag: "Small", width: units.gu(12), index: 1 },
301301 { tag: "Large", width: units.gu(38), index: 2 },
302302 { tag: "Wide", height: units.gu(19), size: "large", index: 3 },
tests/qmltests/Dash/tst_CardTool.qml+8−8
@@ -255,20 +255,20 @@ Rectangle {
255255
256256 function test_card_size_data() {
257257 return [
258− { tag: "Medium", width: units.gu(18.5), height: function() { return internalCard ? internalCard.height : 0 }, index: 0 },
259− { tag: "No art", width: units.gu(18.5), height: function() { return internalCard ? internalCard.height : 0 }, index: 1 },
260− { tag: "No summary", width: units.gu(18.5), height: function() { return internalCard ? internalCard.height : 0 }, index: 2 },
261− { tag: "Just header", width: units.gu(18.5), height: function() { return internalCard ? internalCard.height : 0 }, index: 3 },
262− { tag: "Just title", width: units.gu(18.5), height: function() { return internalCard ? internalCard.height : 0 }, index: 4 },
263− { tag: "Title and subtitle", width: units.gu(18.5), height: function() { return internalCard ? internalCard.height : 0 }, index: 5 },
264− { tag: "Title and mascot", width: units.gu(18.5), height: function() { return internalCard ? internalCard.height : 0 }, index: 6 },
258+ { tag: "Medium", width: units.gu(18), height: function() { return internalCard ? internalCard.height : 0 }, index: 0 },
259+ { tag: "No art", width: units.gu(18), height: function() { return internalCard ? internalCard.height : 0 }, index: 1 },
260+ { tag: "No summary", width: units.gu(18), height: function() { return internalCard ? internalCard.height : 0 }, index: 2 },
261+ { tag: "Just header", width: units.gu(18), height: function() { return internalCard ? internalCard.height : 0 }, index: 3 },
262+ { tag: "Just title", width: units.gu(18), height: function() { return internalCard ? internalCard.height : 0 }, index: 4 },
263+ { tag: "Title and subtitle", width: units.gu(18), height: function() { return internalCard ? internalCard.height : 0 }, index: 5 },
264+ { tag: "Title and mascot", width: units.gu(18), height: function() { return internalCard ? internalCard.height : 0 }, index: 6 },
265265 { tag: "Small", width: units.gu(12), height: function() { return internalCard ? internalCard.height : 0 }, index: 7 },
266266 { tag: "Large", width: units.gu(38), height: function() { return internalCard ? internalCard.height : 0 }, index: 8 },
267267 { tag: "Horizontal", width: units.gu(38), height: function() { return internalCard ? internalCard.height : 0 }, index: 9 },
268268 { tag: "OrganicGrid", width: undefined, height: undefined, index: 0, layout_index: 1},
269269 { tag: "Journal", width: undefined, height: units.gu(20), size: 20, index: 0, layout_index: 2 },
270270 { tag: "OversizedJournal", width: undefined, height: units.gu(18.5), size: 40, index: 0, layout_index: 2 },
271− { tag: "VerticalJournal", width: units.gu(18.5), height: undefined, index: 0, layout_index: 3 },
271+ { tag: "VerticalJournal", width: units.gu(18), height: undefined, index: 0, layout_index: 3 },
272272 { tag: "SmallCarousel", width: units.gu(18), height: units.gu(18), viewWidth: 30, index: 0, layout_index: 4},
273273 { tag: "MediumCarousel", width: units.gu(22), height: units.gu(22), viewWidth: 84, index: 0, layout_index: 4},
274274 { tag: "LargeCarousel", width: units.gu(26), height: units.gu(26), viewWidth: 140, index: 0, layout_index: 4},
tests/qmltests/Dash/tst_GenericScopeView.qml+1−1
@@ -88,7 +88,7 @@ Item {
8888 tryCompareFunction(function() {
8989 var category = findChild(genericScopeView, categoryName);
9090 if (category && category.y > 0 && category.y < genericScopeView.height) return true;
91− mouseFlick(genericScopeView, genericScopeView.width/2, genericScopeView.height,
91+ touchFlick(genericScopeView, genericScopeView.width/2, units.gu(20),
9292 genericScopeView.width/2, genericScopeView.y)
9393 tryCompare(categoryListView, "moving", false);
9494 return false;
tests/qmltests/Stages/tst_ApplicationWindow.qml−44
@@ -35,9 +35,6 @@ Rectangle {
3535 root.fakeApplication.manualSurfaceCreation = true;
3636 root.fakeApplication.setState(ApplicationInfoInterface.Starting);
3737 }
38− Component.onDestruction: {
39− applicationWindowLoader.item.removeScreenshot();
40− }
4138 property QtObject fakeApplication: null
4239 readonly property var fakeSession: fakeApplication ? fakeApplication.session : null
4340
@@ -334,40 +331,6 @@ Rectangle {
334331 tryCompare(screenshotImage, "status", Image.Null);
335332 }
336333
337− function test_suspendrestartApp() {
338− var screenshotImage = findChild(applicationWindowLoader.item, "screenshotImage");
339−
340− initSession();
341− setApplicationState(appRunning);
342− tryCompare(stateGroup, "state", "surface");
343− waitUntilTransitionsEnd();
344−
345− setApplicationState(appSuspended);
346−
347− cleanupSession();
348−
349− tryCompare(stateGroup, "state", "screenshot");
350− waitUntilTransitionsEnd();
351− tryCompare(fakeApplication, "session", null);
352−
353− // and restart it
354− setApplicationState(appStarting);
355−
356− waitUntilTransitionsEnd();
357− verify(stateGroup.state === "screenshot");
358− verify(fakeSession === null);
359−
360− setApplicationState(appRunning);
361−
362− waitUntilTransitionsEnd();
363− verify(stateGroup.state === "screenshot");
364−
365− initSession();
366−
367− tryCompare(stateGroup, "state", "surface");
368− tryCompare(screenshotImage, "status", Image.Null);
369− }
370−
371334 function test_appCrashed() {
372335 initSession();
373336 setApplicationState(appRunning);
@@ -445,12 +408,5 @@ Rectangle {
445408 applicationWindowLoader.item.interactive = true;
446409 compare(fakeSession.surface.activeFocus, true);
447410 }
448−
449− function test_no_spinner_if_stopped() {
450− setApplicationState(appStopped);
451− tryCompare(stateGroup, "state", "splashScreen");
452− var splashLoader = findChild(applicationWindowLoader.item, "splashLoader");
453− verify(!splashLoader.item.activeSpinner);
454− }
455411 }
456412}
tests/qmltests/tst_OrientedShell.qml+45
@@ -951,6 +951,51 @@ Rectangle {
951951 tryCompare(mockOskSettings, "stayHidden", false);
952952 }
953953
954+ /*
955+ Regression test for https://bugs.launchpad.net/ubuntu/+source/unity8/+bug/1471609
956+
957+ Steps:
958+ - Open an app which can rotate
959+ - Rotate the phone to landscape
960+ - Open the app spread
961+ - Press the power button while the app spread is open
962+ - Wait a bit and press power button again
963+
964+ Expected outcome:
965+ You see greeter in portrat (ie, primary orientation)
966+
967+ Actual outcome:
968+ You see greeter in landscape
969+
970+ Comments:
971+ Greeter supports only the primary orientation (portrait in phones) but
972+ the stage doesn't allow orientation changes while the apps spread is open,
973+ hence the bug.
974+ */
975+ function test_phoneWithSpreadInLandscapeWhenGreeterShowsUp() {
976+ loadShell("mako");
977+
978+ var gmailApp = ApplicationManager.startApplication("gmail-webapp");
979+ verify(gmailApp);
980+
981+ // ensure the mock gmail-webapp is as we expect
982+ compare(gmailApp.rotatesWindowContents, false);
983+ compare(gmailApp.supportedOrientations, Qt.PortraitOrientation | Qt.LandscapeOrientation
984+ | Qt.InvertedPortraitOrientation | Qt.InvertedLandscapeOrientation);
985+
986+ // wait until it's able to rotate
987+ tryCompare(shell, "orientationChangesEnabled", true);
988+
989+ rotateTo(90);
990+ tryCompare(shell, "transformRotationAngle", root.primaryOrientationAngle + 90);
991+
992+ performEdgeSwipeToShowAppSpread();
993+
994+ showGreeter();
995+
996+ tryCompare(shell, "transformRotationAngle", root.primaryOrientationAngle);
997+ }
998+
954999 // angle - rotation angle in degrees clockwise, relative to the primary orientation.
9551000 function rotateTo(angle) {
9561001 switch (angle) {