on xenial help sign in
Merged trunk
46055c6Brian Douglass
CMakeLists.txt+1−1
@@ -63,7 +63,7 @@ pkg_check_modules(GIO REQUIRED gio-2.0>=2.32)
63pkg_check_modules(GLIB REQUIRED glib-2.0>=2.32)
63pkg_check_modules(GLIB REQUIRED glib-2.0>=2.32)
64pkg_check_modules(QMENUMODEL REQUIRED qmenumodel)
64pkg_check_modules(QMENUMODEL REQUIRED qmenumodel)
65pkg_check_modules(GD3 REQUIRED gnome-desktop-3.0)
65pkg_check_modules(GD3 REQUIRED gnome-desktop-3.0)
66−
66+pkg_check_modules(UAL REQUIRED ubuntu-app-launch-2)
67pkg_check_modules(UBUNTUGESTURES REQUIRED UbuntuGestures)
67pkg_check_modules(UBUNTUGESTURES REQUIRED UbuntuGestures)
68
68
69### Check UbuntuGestures private headers. No pkg-config (.pc) file is provided for them
69### Check UbuntuGestures private headers. No pkg-config (.pc) file is provided for them
debian/changelog+31
@@ -1,3 +1,34 @@
1+unity8 (8.14+17.04.20161024-0ubuntu1) zesty; urgency=medium
2+
3+ [ Albert Astals Cid ]
4+ * Make PreviewProgress be thicker again (LP: #1629382)
5+ * tst_PreviewZoomableImage: Wait for LazyImage transitions on init()
6+ (LP: #1630136)
7+
8+ [ Andrea Azzarone ]
9+ * Remove UbuntuShapeForItem and replace its use with the more standard
10+ Ubuntu.Components.UbuntuShape.
11+
12+ [ Lukáš Tinkl ]
13+ * Restore the double tap decoration to maximize feature (LP: #1627281)
14+ * Hide the cursor for fullscreen apps after 3 seconds of inactivity
15+ * Implement moving windows by Alt + left mouse button
16+
17+ [ Marco Trevisan (Treviño) ]
18+ * MenuItemFactory: use more features from SlotsLayout based settings
19+ components
20+
21+ [ Michael Terry ]
22+ * Grab launcher icon information from ubuntu-app-launch, not directly
23+ from desktop files.
24+ * Adjust root paths if we're running inside a snap. (LP: #1629009)
25+
26+ [ Michael Zanetti ]
27+ * Merge all Stages into one single codebase. Apply new spread visuals.
28+ (LP: #1489517, #1603914, #1635800)
29+
30+ -- Michael Zanetti <michael.zanetti@canonical.com> Mon, 24 Oct 2016 11:37:28 +0000
31+
1unity8 (8.14+16.10.20160922-0ubuntu2) yakkety; urgency=medium
32unity8 (8.14+16.10.20160922-0ubuntu2) yakkety; urgency=medium
2
33
3 * debian/control:
34 * debian/control:
debian/control+2−1
@@ -32,6 +32,7 @@ Build-Depends: cmake,
32 libqt5svg5-dev,
32 libqt5svg5-dev,
33 libqt5xmlpatterns5-dev,
33 libqt5xmlpatterns5-dev,
34 libsystemsettings-dev,
34 libsystemsettings-dev,
35+ libubuntu-app-launch2-dev,
35 libubuntu-download-manager-common-dev,
36 libubuntu-download-manager-common-dev,
36 libubuntugestures5-dev (>= 1.3.2030),
37 libubuntugestures5-dev (>= 1.3.2030),
37 libubuntugestures5-private-dev (>= 1.3.2030),
38 libubuntugestures5-private-dev (>= 1.3.2030),
@@ -64,7 +65,7 @@ Build-Depends: cmake,
64 qtdeclarative5-dev-tools,
65 qtdeclarative5-dev-tools,
65 qtdeclarative5-private-dev (>= 5.4),
66 qtdeclarative5-private-dev (>= 5.4),
66 qtdeclarative5-ubuntu-content1,
67 qtdeclarative5-ubuntu-content1,
67− qtdeclarative5-ubuntu-settings-components (>= 0.7),
68+ qtdeclarative5-ubuntu-settings-components (>= 0.10),
68 ttf-ubuntu-font-family,
69 ttf-ubuntu-font-family,
69Standards-Version: 3.9.4
70Standards-Version: 3.9.4
70Homepage: http://launchpad.net/unity
71Homepage: http://launchpad.net/unity
debian/unity8.install+1−1
@@ -16,7 +16,7 @@ usr/share/unity8/DeviceConfiguration.qml
16usr/share/unity8/OrientedShell.qml
16usr/share/unity8/OrientedShell.qml
17usr/share/unity8/DisabledScreenNotice.qml
17usr/share/unity8/DisabledScreenNotice.qml
18usr/share/unity8/Shell.qml
18usr/share/unity8/Shell.qml
19−usr/share/unity8/Stages
19+usr/share/unity8/Stage
20usr/share/unity8/Tutorial
20usr/share/unity8/Tutorial
21usr/share/unity8/Wizard
21usr/share/unity8/Wizard
22usr/share/url-dispatcher/urls/unity8-dash.url-dispatcher
22usr/share/url-dispatcher/urls/unity8-dash.url-dispatcher
include/paths.h.in+34−25
@@ -1,8 +1,5 @@
1/*
1/*
2− * Copyright (C) 2012 Canonical, Ltd.
2+ * Copyright (C) 2012-2016 Canonical, Ltd.
3− *
4− * Authors:
5− * Ugo Riboni <ugo.riboni@canonical.com>
6 *
3 *
7 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
@@ -17,8 +14,7 @@
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
15 */
19
16
20−#ifndef PATHS_H
17+#pragma once
21−#define PATHS_H
22
18
23// Qt
19// Qt
24#include <QtCore/QCoreApplication>
20#include <QtCore/QCoreApplication>
@@ -27,10 +23,25 @@
27#include <QtQml/QQmlEngine>
23#include <QtQml/QQmlEngine>
28#include <QStandardPaths>
24#include <QStandardPaths>
29
25
26+inline QString installRoot() {
27+ static QString installRoot;
28+ static bool installRootSet = false;
29+ if (!installRootSet) {
30+ QString snapRoot = QFile::decodeName(qgetenv("SNAP"));
31+ if (!snapRoot.isEmpty() && QCoreApplication::applicationDirPath() ==
32+ QDir(snapRoot + QStringLiteral("@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_BINDIR@")).canonicalPath()) {
33+ installRoot = snapRoot;
34+ } else if (QCoreApplication::applicationDirPath() ==
35+ QDir(QStringLiteral("@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_BINDIR@")).canonicalPath()) {
36+ installRoot = QStringLiteral("");
37+ }
38+ installRootSet = true;
39+ }
40+ return installRoot;
41+}
42+
30inline bool isRunningInstalled() {
43inline bool isRunningInstalled() {
31− static bool installed = (QCoreApplication::applicationDirPath() ==
44+ return !installRoot().isNull();
32− QDir(QStringLiteral("@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_BINDIR@")).canonicalPath());
33− return installed;
34}
45}
35
46
36inline QString buildDirectory() {
47inline QString buildDirectory() {
@@ -45,24 +56,24 @@ inline QString sourceDirectory() {
45
56
46inline QString translationDirectory() {
57inline QString translationDirectory() {
47 if (isRunningInstalled()) {
58 if (isRunningInstalled()) {
48− return QStringLiteral("@CMAKE_INSTALL_PREFIX@/share/locale");
59+ return installRoot() + QStringLiteral("@CMAKE_INSTALL_PREFIX@/share/locale");
49 } else {
60 } else {
50− return QString(buildDirectory() + "/po/locale");
61+ return buildDirectory() + QStringLiteral("/po/locale");
51 }
62 }
52}
63}
53
64
54inline QString qmlDirectory() {
65inline QString qmlDirectory() {
55 if (isRunningInstalled()) {
66 if (isRunningInstalled()) {
56− return QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_APP_DIR@/");
67+ return installRoot() + QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_APP_DIR@/");
57 } else {
68 } else {
58− return QString(sourceDirectory() + "/qml");
69+ return sourceDirectory() + QStringLiteral("/qml");
59 }
70 }
60}
71}
61
72
62inline QStringList overrideImportPaths() {
73inline QStringList overrideImportPaths() {
63 QStringList paths;
74 QStringList paths;
64 if (!isRunningInstalled()) {
75 if (!isRunningInstalled()) {
65− paths << QString(buildDirectory() + "/plugins");
76+ paths << buildDirectory() + QStringLiteral("/plugins");
66 }
77 }
67 return paths;
78 return paths;
68}
79}
@@ -70,9 +81,9 @@ inline QStringList overrideImportPaths() {
70inline QStringList nonMirImportPaths() {
81inline QStringList nonMirImportPaths() {
71 QStringList paths;
82 QStringList paths;
72 if (isRunningInstalled()) {
83 if (isRunningInstalled()) {
73− paths << QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/nonmirplugins");
84+ paths << installRoot() + QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/nonmirplugins");
74 } else {
85 } else {
75− paths << QString(buildDirectory() + "/nonmirplugins");
86+ paths << buildDirectory() + QStringLiteral("/nonmirplugins");
76 }
87 }
77 return paths;
88 return paths;
78}
89}
@@ -80,23 +91,23 @@ inline QStringList nonMirImportPaths() {
80inline QStringList fallbackImportPaths() {
91inline QStringList fallbackImportPaths() {
81 QStringList paths;
92 QStringList paths;
82 if (isRunningInstalled()) {
93 if (isRunningInstalled()) {
83− paths << QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@");
94+ paths << installRoot() + QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@");
84− paths << QStringLiteral("@USS_PRIVATE_PLUGINDIR@");
95+ paths << installRoot() + QStringLiteral("@USS_PRIVATE_PLUGINDIR@");
85− paths << QStringLiteral("@SHELL_PLUGINDIR@");
96+ paths << installRoot() + QStringLiteral("@SHELL_PLUGINDIR@");
86− paths << QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/mocks");
97+ paths << installRoot() + QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/mocks");
87 } else {
98 } else {
88 paths << QStringLiteral("@USS_PRIVATE_PLUGINDIR@");
99 paths << QStringLiteral("@USS_PRIVATE_PLUGINDIR@");
89 paths << QStringLiteral("@SHELL_PLUGINDIR@");
100 paths << QStringLiteral("@SHELL_PLUGINDIR@");
90− paths << QString(buildDirectory() + "/tests/mocks");
101+ paths << buildDirectory() + QStringLiteral("/tests/mocks");
91 }
102 }
92 return paths;
103 return paths;
93}
104}
94
105
95inline QString mockPluginsDir() {
106inline QString mockPluginsDir() {
96 if (isRunningInstalled()) {
107 if (isRunningInstalled()) {
97− return QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/mocks");
108+ return installRoot() + QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/mocks");
98 } else {
109 } else {
99− return QString(buildDirectory() + "/tests/mocks");
110+ return buildDirectory() + QStringLiteral("/tests/mocks");
100 }
111 }
101}
112}
102
113
@@ -137,5 +148,3 @@ inline void appendImportPaths(QQmlEngine *engine, const QStringList &paths)
137 }
148 }
138 engine->setImportPathList(importPathList);
149 engine->setImportPathList(importPathList);
139}
150}
140−
141−#endif
plugins/Ubuntu/Gestures/TouchGate.cpp+4−1
@@ -61,7 +61,10 @@ void TouchGate::touchEvent(QTouchEvent *event)
61 const QTouchEvent::TouchPoint &touchPoint = touchPoints[i];
61 const QTouchEvent::TouchPoint &touchPoint = touchPoints[i];
62
62
63 if (touchPoint.state() == Qt::TouchPointPressed) {
63 if (touchPoint.state() == Qt::TouchPointPressed) {
64+// FIXME: This assert triggers frequently in make trySomething. We have verified
65+// that it's a bug in the mouse to touch conversion of the test environment
66+// and not in the actual product. Still, it probably should be cleaned up eventually.
64− Q_ASSERT(!m_touchInfoMap.contains(touchPoint.id()));
67+// Q_ASSERT(!m_touchInfoMap.contains(touchPoint.id()));
65 m_touchInfoMap[touchPoint.id()].ownership = OwnershipRequested;
68 m_touchInfoMap[touchPoint.id()].ownership = OwnershipRequested;
66 m_touchInfoMap[touchPoint.id()].ended = false;
69 m_touchInfoMap[touchPoint.id()].ended = false;
67 TouchRegistry::instance()->requestTouchOwnership(touchPoint.id(), this);
70 TouchRegistry::instance()->requestTouchOwnership(touchPoint.id(), this);
plugins/Unity/Launcher/CMakeLists.txt+8−3
@@ -6,11 +6,16 @@ add_definitions(-DSM_BUSNAME=systemBus)
6include_directories(
6include_directories(
7 ${CMAKE_CURRENT_SOURCE_DIR}
7 ${CMAKE_CURRENT_SOURCE_DIR}
8 ${CMAKE_SOURCE_DIR}/plugins/AccountsService
8 ${CMAKE_SOURCE_DIR}/plugins/AccountsService
9− ${GSETTINGS_QT_INCLUDE_DIRS}
10− ${GLIB_INCLUDE_DIRS}
11 ${libunity8-private_SOURCE_DIR}
9 ${libunity8-private_SOURCE_DIR}
12)
10)
13
11
12+include_directories(
13+ SYSTEM
14+ ${GSETTINGS_QT_INCLUDE_DIRS}
15+ ${GLIB_INCLUDE_DIRS}
16+ ${UAL_INCLUDE_DIRS}
17+ )
18+
14set(QMLLAUNCHERPLUGIN_SRC
19set(QMLLAUNCHERPLUGIN_SRC
15 plugin.cpp
20 plugin.cpp
16 launchermodel.cpp
21 launchermodel.cpp
@@ -19,7 +24,6 @@ set(QMLLAUNCHERPLUGIN_SRC
19 quicklistentry.cpp
24 quicklistentry.cpp
20 dbusinterface.cpp
25 dbusinterface.cpp
21 gsettings.cpp
26 gsettings.cpp
22− desktopfilehandler.cpp
23 asadapter.cpp
27 asadapter.cpp
24 ${CMAKE_SOURCE_DIR}/plugins/AccountsService/AccountsServiceDBusAdaptor.cpp
28 ${CMAKE_SOURCE_DIR}/plugins/AccountsService/AccountsServiceDBusAdaptor.cpp
25 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationManagerInterface.h
29 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationManagerInterface.h
@@ -38,6 +42,7 @@ target_link_libraries(UnityLauncher-qml
38 unity8-private
42 unity8-private
39 ${GSETTINGS_QT_LDFLAGS}
43 ${GSETTINGS_QT_LDFLAGS}
40 ${GLIB_LIBRARIES}
44 ${GLIB_LIBRARIES}
45+ ${UAL_LIBRARIES}
41 )
46 )
42
47
43qt5_use_modules(UnityLauncher-qml DBus Qml Gui)
48qt5_use_modules(UnityLauncher-qml DBus Qml Gui)
plugins/Unity/Launcher/desktopfilehandler.cppdeleted−155
@@ -1,155 +0,0 @@
1−/*
2− * Copyright 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 Lesser 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 Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Michael Zanetti <michael.zanetti@canonical.com>
18− */
19−
20−#include "desktopfilehandler.h"
21−
22−#include <QStringList>
23−#include <QStandardPaths>
24−#include <QDir>
25−#include <QSettings>
26−#include <QLocale>
27−
28−#include <libintl.h>
29−
30−DesktopFileHandler::DesktopFileHandler(const QString &appId, QObject *parent):
31− QObject(parent),
32− m_appId(appId)
33−{
34− load();
35−}
36−
37−QString DesktopFileHandler::appId() const
38−{
39− return m_appId;
40−}
41−
42−void DesktopFileHandler::setAppId(const QString &appId)
43−{
44− if (m_appId != appId) {
45− m_appId = appId;
46− load();
47− }
48−}
49−
50−QString DesktopFileHandler::filename() const
51−{
52− return m_filename;
53−}
54−
55−bool DesktopFileHandler::isValid() const
56−{
57− return !m_filename.isEmpty();
58−}
59−
60−void DesktopFileHandler::load()
61−{
62− m_filename.clear();
63−
64− if (m_appId.isEmpty()) {
65− return;
66− }
67−
68− int dashPos = -1;
69− QString helper = m_appId;
70−
71− QStringList searchDirs = QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation);
72−#ifdef LAUNCHER_TESTING
73− searchDirs << QStringLiteral(".");
74−#endif
75−
76− QString path;
77− do {
78− if (dashPos != -1) {
79− helper.replace(dashPos, 1, '/');
80− }
81−
82− if (helper.contains('/')) {
83− path += helper.split('/').at(0) + '/';
84− helper.remove(QRegExp("^" + path));
85− }
86−
87− Q_FOREACH(const QString &searchDirName, searchDirs) {
88− QDir searchDir(searchDirName + "/" + path);
89− const QString desktop = QStringLiteral("*.desktop");
90− Q_FOREACH(const QString &desktopFile, searchDir.entryList(QStringList() << desktop)) {
91− if (desktopFile.startsWith(helper)) {
92− QFileInfo fileInfo(searchDir, desktopFile);
93− m_filename = fileInfo.absoluteFilePath();
94− return;
95− }
96− }
97− }
98−
99− dashPos = helper.indexOf('-');
100− } while (dashPos != -1);
101−}
102−
103−QString DesktopFileHandler::displayName() const
104−{
105− if (!isValid()) {
106− return QString();
107− }
108−
109− QSettings settings(m_filename, QSettings::IniFormat);
110− settings.setIniCodec("UTF-8");
111− settings.beginGroup(QStringLiteral("Desktop Entry"));
112−
113− // First try to find Name[xx_YY] and Name[xx] in .desktop file
114− const QString locale = QLocale().name();
115− const QStringList splitLocale = locale.split(QLatin1Char('_'));
116− const QString shortLocale = splitLocale.first();
117−
118− if (locale != shortLocale && settings.contains(QStringLiteral("Name[%1]").arg(locale))) {
119− return settings.value(QStringLiteral("Name[%1]").arg(locale)).toString();
120− }
121−
122− if (settings.contains(QStringLiteral("Name[%1]").arg(shortLocale))) {
123− return settings.value(QStringLiteral("Name[%1]").arg(shortLocale)).toString();
124− }
125−
126− // No translation found in desktop file. Get the untranslated one and have a go with gettext.
127− QString displayName = settings.value(QStringLiteral("Name")).toString();
128−
129− if (settings.contains(QStringLiteral("X-Ubuntu-Gettext-Domain"))) {
130− const QString domain = settings.value(QStringLiteral("X-Ubuntu-Gettext-Domain")).toString();
131− return dgettext(domain.toUtf8().constData(), displayName.toUtf8().constData());
132− }
133−
134− return displayName;
135−}
136−
137−QString DesktopFileHandler::icon() const
138−{
139− if (!isValid()) {
140− return QString();
141− }
142−
143− QSettings settings(m_filename, QSettings::IniFormat);
144− settings.setIniCodec("UTF-8");
145− settings.beginGroup(QStringLiteral("Desktop Entry"));
146− QString iconString = settings.value(QStringLiteral("Icon")).toString();
147− QString pathString = settings.value(QStringLiteral("Path")).toString();
148−
149− if (QFileInfo::exists(iconString)) {
150− return QFileInfo(iconString).absoluteFilePath();
151− } else if (QFileInfo::exists(pathString + '/' + iconString)) {
152− return pathString + '/' + iconString;
153− }
154− return "image://theme/" + iconString;
155−}
plugins/Unity/Launcher/desktopfilehandler.hdeleted−56
@@ -1,56 +0,0 @@
1−/*
2− * Copyright 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 Lesser 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 Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Michael Zanetti <michael.zanetti@canonical.com>
18− */
19−
20−#ifndef DESKTOPFILEHANDLER_H
21−#define DESKTOPFILEHANDLER_H
22−
23−#include <QObject>
24−
25−/**
26− * When an object of this class is created or whenever setAppId(appId) is called,
27− * this will search for a .desktop file matching the give appId. If a file is
28− * found, isValid() will return true and the other methods return the contents
29− * of the .desktop file.
30− *
31− * Note that this class will consider the user's locale and do a best effort
32− * to return localized values.
33− */
34−
35−class DesktopFileHandler: public QObject
36−{
37− Q_OBJECT
38−public:
39− DesktopFileHandler(const QString &appId = QString(), QObject *parent = nullptr);
40−
41− QString appId() const;
42− void setAppId(const QString &appId);
43−
44− bool isValid() const;
45− QString filename() const;
46− QString displayName() const;
47− QString icon() const;
48−
49−private:
50− void load();
51−
52− QString m_appId;
53− QString m_filename;
54−};
55−
56−#endif
plugins/Unity/Launcher/launchermodel.cpp+53−26
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright 2013-2014 Canonical Ltd.
2+ * Copyright 2013-2016 Canonical Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License as published by
5 * it under the terms of the GNU Lesser General Public License as published by
@@ -12,24 +12,25 @@
12 *
12 *
13 * You should have received a copy of the GNU Lesser General Public License
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Michael Zanetti <michael.zanetti@canonical.com>
18 */
15 */
19
16
20#include "launchermodel.h"
17#include "launchermodel.h"
21#include "launcheritem.h"
18#include "launcheritem.h"
22#include "gsettings.h"
19#include "gsettings.h"
23−#include "desktopfilehandler.h"
24#include "dbusinterface.h"
20#include "dbusinterface.h"
25#include "asadapter.h"
21#include "asadapter.h"
26
22
23+#include <ubuntu-app-launch/appid.h>
24+#include <ubuntu-app-launch/application.h>
25+#include <ubuntu-app-launch/registry.h>
27#include <unity/shell/application/ApplicationInfoInterface.h>
26#include <unity/shell/application/ApplicationInfoInterface.h>
28#include <unity/shell/application/MirSurfaceListInterface.h>
27#include <unity/shell/application/MirSurfaceListInterface.h>
29
28
30#include <QDesktopServices>
29#include <QDesktopServices>
31#include <QDebug>
30#include <QDebug>
32
31
32+namespace ual = ubuntu::app_launch;
33+
33using namespace unity::shell::application;
34using namespace unity::shell::application;
34
35
35LauncherModel::LauncherModel(QObject *parent):
36LauncherModel::LauncherModel(QObject *parent):
@@ -37,7 +38,8 @@ LauncherModel::LauncherModel(QObject *parent):
37 m_settings(new GSettings(this)),
38 m_settings(new GSettings(this)),
38 m_dbusIface(new DBusInterface(this)),
39 m_dbusIface(new DBusInterface(this)),
39 m_asAdapter(new ASAdapter()),
40 m_asAdapter(new ASAdapter()),
40− m_appManager(nullptr)
41+ m_appManager(nullptr),
42+ m_ualRegistry(std::make_shared<ual::Registry>())
41{
43{
42 connect(m_dbusIface, &DBusInterface::countChanged, this, &LauncherModel::countChanged);
44 connect(m_dbusIface, &DBusInterface::countChanged, this, &LauncherModel::countChanged);
43 connect(m_dbusIface, &DBusInterface::countVisibleChanged, this, &LauncherModel::countVisibleChanged);
45 connect(m_dbusIface, &DBusInterface::countVisibleChanged, this, &LauncherModel::countVisibleChanged);
@@ -157,16 +159,16 @@ void LauncherModel::pin(const QString &appId, int index)
157 index = m_list.count();
159 index = m_list.count();
158 }
160 }
159
161
160− DesktopFileHandler desktopFile(appId);
162+ auto appInfo = getApplicationInfo(appId);
161− if (!desktopFile.isValid()) {
163+ if (!appInfo.valid) {
162− qWarning() << "Can't pin this application, there is no .desktop file available.";
164+ qWarning() << "Can't pin application, appId not found:" << appId;
163 return;
165 return;
164 }
166 }
165
167
166 beginInsertRows(QModelIndex(), index, index);
168 beginInsertRows(QModelIndex(), index, index);
167 LauncherItem *item = new LauncherItem(appId,
169 LauncherItem *item = new LauncherItem(appId,
168− desktopFile.displayName(),
170+ appInfo.name,
169− desktopFile.icon(),
171+ appInfo.icon,
170 this);
172 this);
171 item->setPinned(true);
173 item->setPinned(true);
172 m_list.insert(index, item);
174 m_list.insert(index, item);
@@ -333,6 +335,32 @@ int LauncherModel::findApplication(const QString &appId)
333 return -1;
335 return -1;
334}
336}
335
337
338+LauncherModel::AppInfo LauncherModel::getApplicationInfo(const QString &appId)
339+{
340+ AppInfo info;
341+
342+ ual::AppID ualAppId = ual::AppID::find(m_ualRegistry, appId.toStdString());
343+ if (ualAppId.empty()) {
344+ return info;
345+ }
346+
347+ std::shared_ptr<ual::Application> ualApp;
348+ try
349+ {
350+ ualApp = ual::Application::create(ualAppId, m_ualRegistry);
351+ }
352+ catch (std::runtime_error &e)
353+ {
354+ qWarning() << "Couldn't find application info for" << appId << "-" << e.what();
355+ return info;
356+ }
357+
358+ info.valid = true;
359+ info.name = QString::fromStdString(ualApp->info()->name());
360+ info.icon = QString::fromStdString(ualApp->info()->iconPath());
361+ return info;
362+}
363+
336void LauncherModel::progressChanged(const QString &appId, int progress)
364void LauncherModel::progressChanged(const QString &appId, int progress)
337{
365{
338 const int idx = findApplication(appId);
366 const int idx = findApplication(appId);
@@ -380,11 +408,11 @@ void LauncherModel::countVisibleChanged(const QString &appId, bool countVisible)
380 }
408 }
381 } else {
409 } else {
382 // Need to create a new LauncherItem and show the highlight
410 // Need to create a new LauncherItem and show the highlight
383− DesktopFileHandler desktopFile(appId);
411+ auto appInfo = getApplicationInfo(appId);
384− if (countVisible && desktopFile.isValid()) {
412+ if (countVisible && appInfo.valid) {
385 LauncherItem *item = new LauncherItem(appId,
413 LauncherItem *item = new LauncherItem(appId,
386− desktopFile.displayName(),
414+ appInfo.name,
387− desktopFile.icon(),
415+ appInfo.icon,
388 this);
416 this);
389 item->setCountVisible(true);
417 item->setCountVisible(true);
390 beginInsertRows(QModelIndex(), m_list.count(), m_list.count());
418 beginInsertRows(QModelIndex(), m_list.count(), m_list.count());
@@ -400,28 +428,28 @@ void LauncherModel::refresh()
400 // First walk through all the existing items and see if we need to remove something
428 // First walk through all the existing items and see if we need to remove something
401 QList<LauncherItem*> toBeRemoved;
429 QList<LauncherItem*> toBeRemoved;
402 Q_FOREACH (LauncherItem* item, m_list) {
430 Q_FOREACH (LauncherItem* item, m_list) {
403− DesktopFileHandler desktopFile(item->appId());
431+ auto appInfo = getApplicationInfo(item->appId());
404− if (!desktopFile.isValid()) {
432+ if (!appInfo.valid) {
405− // Desktop file not available for this app => drop it!
433+ // Application no longer available => drop it!
406 toBeRemoved << item;
434 toBeRemoved << item;
407 } else if (!m_settings->storedApplications().contains(item->appId())) {
435 } else if (!m_settings->storedApplications().contains(item->appId())) {
408 // Item not in settings any more => drop it!
436 // Item not in settings any more => drop it!
409 toBeRemoved << item;
437 toBeRemoved << item;
410 } else {
438 } else {
411 int idx = m_list.indexOf(item);
439 int idx = m_list.indexOf(item);
412− item->setName(desktopFile.displayName());
440+ item->setName(appInfo.name);
413 item->setPinned(item->pinned()); // update pinned text if needed
441 item->setPinned(item->pinned()); // update pinned text if needed
414 item->setRunning(item->running());
442 item->setRunning(item->running());
415 Q_EMIT dataChanged(index(idx), index(idx), {RoleName, RoleRunning});
443 Q_EMIT dataChanged(index(idx), index(idx), {RoleName, RoleRunning});
416
444
417 const QString oldIcon = item->icon();
445 const QString oldIcon = item->icon();
418− if (oldIcon == desktopFile.icon()) { // same icon file, perhaps different contents, simulate changing the icon name to force reload
446+ if (oldIcon == appInfo.icon) { // same icon file, perhaps different contents, simulate changing the icon name to force reload
419 item->setIcon(QString());
447 item->setIcon(QString());
420 Q_EMIT dataChanged(index(idx), index(idx), {RoleIcon});
448 Q_EMIT dataChanged(index(idx), index(idx), {RoleIcon});
421 }
449 }
422
450
423 // now set the icon for real
451 // now set the icon for real
424− item->setIcon(desktopFile.icon());
452+ item->setIcon(appInfo.icon);
425 Q_EMIT dataChanged(index(idx), index(idx), {RoleIcon});
453 Q_EMIT dataChanged(index(idx), index(idx), {RoleIcon});
426 }
454 }
427 }
455 }
@@ -452,15 +480,14 @@ void LauncherModel::refresh()
452 if (itemIndex == -1) {
480 if (itemIndex == -1) {
453 // Need to add it. Just add it into the addedIndex to keep same ordering as the list
481 // Need to add it. Just add it into the addedIndex to keep same ordering as the list
454 // in the settings.
482 // in the settings.
455− DesktopFileHandler desktopFile(entry);
483+ auto appInfo = getApplicationInfo(entry);
456− if (!desktopFile.isValid()) {
484+ if (!appInfo.valid) {
457− qWarning() << "Couldn't find a .desktop file for" << entry << ". Skipping...";
458 continue;
485 continue;
459 }
486 }
460
487
461 LauncherItem *item = new LauncherItem(entry,
488 LauncherItem *item = new LauncherItem(entry,
462− desktopFile.displayName(),
489+ appInfo.name,
463− desktopFile.icon(),
490+ appInfo.icon,
464 this);
491 this);
465 item->setPinned(true);
492 item->setPinned(true);
466 beginInsertRows(QModelIndex(), addedIndex, addedIndex);
493 beginInsertRows(QModelIndex(), addedIndex, addedIndex);
plugins/Unity/Launcher/launchermodel.h+17−8
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright 2013-2014 Canonical Ltd.
2+ * Copyright 2013-2016 Canonical Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License as published by
5 * it under the terms of the GNU Lesser General Public License as published by
@@ -12,14 +12,11 @@
12 *
12 *
13 * You should have received a copy of the GNU Lesser General Public License
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Michael Zanetti <michael.zanetti@canonical.com>
18 */
15 */
19
16
20−#ifndef LAUNCHERMODEL_H
17+#pragma once
21−#define LAUNCHERMODEL_H
22
18
19+#include <memory>
23#include <unity/shell/launcher/LauncherModelInterface.h>
20#include <unity/shell/launcher/LauncherModelInterface.h>
24#include <unity/shell/application/ApplicationManagerInterface.h>
21#include <unity/shell/application/ApplicationManagerInterface.h>
25
22
@@ -30,6 +27,12 @@ class GSettings;
30class DBusInterface;
27class DBusInterface;
31class ASAdapter;
28class ASAdapter;
32
29
30+namespace ubuntu {
31+ namespace app_launch {
32+ class Registry;
33+ }
34+}
35+
33using namespace unity::shell::launcher;
36using namespace unity::shell::launcher;
34using namespace unity::shell::application;
37using namespace unity::shell::application;
35
38
@@ -70,6 +73,13 @@ private:
70
73
71 void unpin(const QString &appId);
74 void unpin(const QString &appId);
72
75
76+ struct AppInfo {
77+ bool valid = false;
78+ QString name;
79+ QString icon;
80+ };
81+ AppInfo getApplicationInfo(const QString &appId);
82+
73private Q_SLOTS:
83private Q_SLOTS:
74 void countChanged(const QString &appId, int count);
84 void countChanged(const QString &appId, int count);
75 void countVisibleChanged(const QString &appId, bool count);
85 void countVisibleChanged(const QString &appId, bool count);
@@ -88,8 +98,7 @@ private:
88 ASAdapter *m_asAdapter;
98 ASAdapter *m_asAdapter;
89
99
90 ApplicationManagerInterface *m_appManager;
100 ApplicationManagerInterface *m_appManager;
101+ std::shared_ptr<ubuntu::app_launch::Registry> m_ualRegistry;
91
102
92 friend class LauncherModelTest;
103 friend class LauncherModelTest;
93};
104};
94−
95−#endif // LAUNCHERMODEL_H
plugins/WindowManager/TopLevelSurfaceList.cpp−5
@@ -133,11 +133,6 @@ void TopLevelSurfaceList::appendSurfaceHelper(MirSurfaceInterface *surface, Appl
133
133
134void TopLevelSurfaceList::connectSurface(MirSurfaceInterface *surface)
134void TopLevelSurfaceList::connectSurface(MirSurfaceInterface *surface)
135{
135{
136− connect(surface, &MirSurfaceInterface::focusedChanged, this, [this, surface](bool focused){
137− if (focused) {
138− this->raise(surface);
139− }
140− });
141 connect(surface, &MirSurfaceInterface::liveChanged, this, [this, surface](bool live){
136 connect(surface, &MirSurfaceInterface::liveChanged, this, [this, surface](bool live){
142 if (!live) {
137 if (!live) {
143 onSurfaceDied(surface);
138 onSurfaceDied(surface);
po/aa.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-02-12 10:18+0000\n"
11"PO-Revision-Date: 2016-02-12 10:18+0000\n"
12"Last-Translator: Charif AYFARAH <ayfarah@ymail.com>\n"
12"Last-Translator: Charif AYFARAH <ayfarah@ymail.com>\n"
13"Language-Team: Afar <aa@li.org>\n"
13"Language-Team: Afar <aa@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:03+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:53+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -477,62 +477,62 @@ msgstr ""
477msgid "Conference"
477msgid "Conference"
478msgstr "Koboxu"
478msgstr "Koboxu"
479
479
480−#: qml/Panel/Indicators/MenuItemFactory.qml:762
480+#: qml/Panel/Indicators/MenuItemFactory.qml:788
481msgid "Nothing is playing"
481msgid "Nothing is playing"
482msgstr ""
482msgstr ""
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:891
484+#: qml/Panel/Indicators/MenuItemFactory.qml:916
485#, qt-format
485#, qt-format
486msgid "%1 hour"
486msgid "%1 hour"
487msgid_plural "%1 hours"
487msgid_plural "%1 hours"
488msgstr[0] "%1 saaqata"
488msgstr[0] "%1 saaqata"
489msgstr[1] "%1 saaqata"
489msgstr[1] "%1 saaqata"
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:895
491+#: qml/Panel/Indicators/MenuItemFactory.qml:920
492#, qt-format
492#, qt-format
493msgid "%1 minute"
493msgid "%1 minute"
494msgid_plural "%1 minutes"
494msgid_plural "%1 minutes"
495msgstr[0] "%1 miniti"
495msgstr[0] "%1 miniti"
496msgstr[1] "%1 miniti"
496msgstr[1] "%1 miniti"
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:900
498+#: qml/Panel/Indicators/MenuItemFactory.qml:925
499#, qt-format
499#, qt-format
500msgid "%1 second"
500msgid "%1 second"
501msgid_plural "%1 seconds"
501msgid_plural "%1 seconds"
502msgstr[0] "%1 nammayye"
502msgstr[0] "%1 nammayye"
503msgstr[1] "%1 nammayye"
503msgstr[1] "%1 nammayye"
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:903
505+#: qml/Panel/Indicators/MenuItemFactory.qml:928
506msgid "0 seconds"
506msgid "0 seconds"
507msgstr "0 nammayye"
507msgstr "0 nammayye"
508
508
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
510−#: qml/Panel/Indicators/MenuItemFactory.qml:905
510+#: qml/Panel/Indicators/MenuItemFactory.qml:930
511#, qt-format
511#, qt-format
512msgid "%1 remaining"
512msgid "%1 remaining"
513msgstr "%1 raaqe"
513msgstr "%1 raaqe"
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:911
515+#: qml/Panel/Indicators/MenuItemFactory.qml:936
516msgid "In queue…"
516msgid "In queue…"
517msgstr ""
517msgstr ""
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:915
519+#: qml/Panel/Indicators/MenuItemFactory.qml:940
520msgid "Downloading"
520msgid "Downloading"
521msgstr "Qulluumah"
521msgstr "Qulluumah"
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:917
523+#: qml/Panel/Indicators/MenuItemFactory.qml:942
524msgid "Paused, tap to resume"
524msgid "Paused, tap to resume"
525msgstr ""
525msgstr ""
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:919
527+#: qml/Panel/Indicators/MenuItemFactory.qml:944
528msgid "Canceled"
528msgid "Canceled"
529msgstr "Bayteh"
529msgstr "Bayteh"
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:921
531+#: qml/Panel/Indicators/MenuItemFactory.qml:946
532msgid "Finished"
532msgid "Finished"
533msgstr "Duudumteh"
533msgstr "Duudumteh"
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:923
535+#: qml/Panel/Indicators/MenuItemFactory.qml:948
536msgid "Failed, tap to retry"
536msgid "Failed, tap to retry"
537msgstr ""
537msgstr ""
538
538
@@ -552,7 +552,7 @@ msgctxt "Button: Call back on phone"
552msgid "Call back"
552msgid "Call back"
553msgstr ""
553msgstr ""
554
554
555−#: qml/Stages/SideStage.qml:76
555+#: qml/Stage/SideStage.qml:76
556msgid "Drag using 3 fingers any application from one window to the other"
556msgid "Drag using 3 fingers any application from one window to the other"
557msgstr ""
557msgstr ""
558
558
po/am.po+18−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-08-13 14:45+0000\n"
11"PO-Revision-Date: 2016-08-13 14:45+0000\n"
12"Last-Translator: samson <Unknown>\n"
12"Last-Translator: samson <Unknown>\n"
13"Language-Team: Amharic <am@li.org>\n"
13"Language-Team: Amharic <am@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:03+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:53+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -461,11 +461,11 @@ msgstr "መግቢያ"
461
461
462#: qml/Greeter/NarrowView.qml:252
462#: qml/Greeter/NarrowView.qml:252
463msgid "Emergency"
463msgid "Emergency"
464−msgstr ""
464+msgstr "ድንገተኛ"
465
465
466#: qml/Greeter/SessionsList.qml:122
466#: qml/Greeter/SessionsList.qml:122
467msgid "Select desktop environment"
467msgid "Select desktop environment"
468−msgstr ""
468+msgstr "የ ዴስክቶፕ አይነት ይምረጡ"
469
469
470#: qml/Notifications/NotificationMenuItemFactory.qml:124
470#: qml/Notifications/NotificationMenuItemFactory.qml:124
471msgid "Show password"
471msgid "Show password"
@@ -479,62 +479,62 @@ msgstr "ወደ ጥሪው ለመመለስ መታ ያድርጉ..."
479msgid "Conference"
479msgid "Conference"
480msgstr "ስብሰባ"
480msgstr "ስብሰባ"
481
481
482−#: qml/Panel/Indicators/MenuItemFactory.qml:762
482+#: qml/Panel/Indicators/MenuItemFactory.qml:788
483msgid "Nothing is playing"
483msgid "Nothing is playing"
484msgstr "ምንም አይጫወትም"
484msgstr "ምንም አይጫወትም"
485
485
486−#: qml/Panel/Indicators/MenuItemFactory.qml:891
486+#: qml/Panel/Indicators/MenuItemFactory.qml:916
487#, qt-format
487#, qt-format
488msgid "%1 hour"
488msgid "%1 hour"
489msgid_plural "%1 hours"
489msgid_plural "%1 hours"
490msgstr[0] "%1 ሰአት"
490msgstr[0] "%1 ሰአት"
491msgstr[1] "%1 ሰአቶች"
491msgstr[1] "%1 ሰአቶች"
492
492
493−#: qml/Panel/Indicators/MenuItemFactory.qml:895
493+#: qml/Panel/Indicators/MenuItemFactory.qml:920
494#, qt-format
494#, qt-format
495msgid "%1 minute"
495msgid "%1 minute"
496msgid_plural "%1 minutes"
496msgid_plural "%1 minutes"
497msgstr[0] "%1 ደቂቃ"
497msgstr[0] "%1 ደቂቃ"
498msgstr[1] "%1 ደቂቃዎች"
498msgstr[1] "%1 ደቂቃዎች"
499
499
500−#: qml/Panel/Indicators/MenuItemFactory.qml:900
500+#: qml/Panel/Indicators/MenuItemFactory.qml:925
501#, qt-format
501#, qt-format
502msgid "%1 second"
502msgid "%1 second"
503msgid_plural "%1 seconds"
503msgid_plural "%1 seconds"
504msgstr[0] "%1 ሰከንድ"
504msgstr[0] "%1 ሰከንድ"
505msgstr[1] "%1 ሰከንዶች"
505msgstr[1] "%1 ሰከንዶች"
506
506
507−#: qml/Panel/Indicators/MenuItemFactory.qml:903
507+#: qml/Panel/Indicators/MenuItemFactory.qml:928
508msgid "0 seconds"
508msgid "0 seconds"
509msgstr "0 ሰከንዶች"
509msgstr "0 ሰከንዶች"
510
510
511#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
511#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
512−#: qml/Panel/Indicators/MenuItemFactory.qml:905
512+#: qml/Panel/Indicators/MenuItemFactory.qml:930
513#, qt-format
513#, qt-format
514msgid "%1 remaining"
514msgid "%1 remaining"
515msgstr "%1 የቀረው"
515msgstr "%1 የቀረው"
516
516
517−#: qml/Panel/Indicators/MenuItemFactory.qml:911
517+#: qml/Panel/Indicators/MenuItemFactory.qml:936
518msgid "In queue…"
518msgid "In queue…"
519msgstr "ወረፋ በመጠበቅ ላይ…"
519msgstr "ወረፋ በመጠበቅ ላይ…"
520
520
521−#: qml/Panel/Indicators/MenuItemFactory.qml:915
521+#: qml/Panel/Indicators/MenuItemFactory.qml:940
522msgid "Downloading"
522msgid "Downloading"
523msgstr "በማውረድ ላይ"
523msgstr "በማውረድ ላይ"
524
524
525−#: qml/Panel/Indicators/MenuItemFactory.qml:917
525+#: qml/Panel/Indicators/MenuItemFactory.qml:942
526msgid "Paused, tap to resume"
526msgid "Paused, tap to resume"
527msgstr "ማስቆሚያ: ለመቀጠል መታ ያድርጉ"
527msgstr "ማስቆሚያ: ለመቀጠል መታ ያድርጉ"
528
528
529−#: qml/Panel/Indicators/MenuItemFactory.qml:919
529+#: qml/Panel/Indicators/MenuItemFactory.qml:944
530msgid "Canceled"
530msgid "Canceled"
531msgstr "ተሰርዟል"
531msgstr "ተሰርዟል"
532
532
533−#: qml/Panel/Indicators/MenuItemFactory.qml:921
533+#: qml/Panel/Indicators/MenuItemFactory.qml:946
534msgid "Finished"
534msgid "Finished"
535msgstr "ጨርሷል"
535msgstr "ጨርሷል"
536
536
537−#: qml/Panel/Indicators/MenuItemFactory.qml:923
537+#: qml/Panel/Indicators/MenuItemFactory.qml:948
538msgid "Failed, tap to retry"
538msgid "Failed, tap to retry"
539msgstr "አልተቻለም: እንደገና ለመሞከር መታ ያድርጉ"
539msgstr "አልተቻለም: እንደገና ለመሞከር መታ ያድርጉ"
540
540
@@ -554,7 +554,7 @@ msgctxt "Button: Call back on phone"
554msgid "Call back"
554msgid "Call back"
555msgstr "መልሶ መደወያ"
555msgstr "መልሶ መደወያ"
556
556
557−#: qml/Stages/SideStage.qml:76
557+#: qml/Stage/SideStage.qml:76
558msgid "Drag using 3 fingers any application from one window to the other"
558msgid "Drag using 3 fingers any application from one window to the other"
559msgstr "መጎተቻ 3 ጣቶች በ መጠቀም ማንኛውንም መተግበሪያ ከ አንድ መስኮት ወደ ሌላ"
559msgstr "መጎተቻ 3 ጣቶች በ መጠቀም ማንኛውንም መተግበሪያ ከ አንድ መስኮት ወደ ሌላ"
560
560
po/ar.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2015-07-29 09:41+0000\n"
11"PO-Revision-Date: 2015-07-29 09:41+0000\n"
12"Last-Translator: Ibrahim Saed <ibraheem5000@gmail.com>\n"
12"Last-Translator: Ibrahim Saed <ibraheem5000@gmail.com>\n"
13"Language-Team: Arabic <ar@li.org>\n"
13"Language-Team: Arabic <ar@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n % 100 >= "
17"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n % 100 >= "
18"3 && n % 100 <= 10 ? 3 : n % 100 >= 11 && n % 100 <= 99 ? 4 : 5;\n"
18"3 && n % 100 <= 10 ? 3 : n % 100 >= 11 && n % 100 <= 99 ? 4 : 5;\n"
19−"X-Launchpad-Export-Date: 2016-09-27 07:03+0000\n"
19+"X-Launchpad-Export-Date: 2016-10-28 05:53+0000\n"
20−"X-Generator: Launchpad (build 18204)\n"
20+"X-Generator: Launchpad (build 18246)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:123
22#: plugins/LightDM/Greeter.cpp:123
23msgid "Password: "
23msgid "Password: "
@@ -486,11 +486,11 @@ msgstr "انقر للعودة إلى المكالمة..."
486msgid "Conference"
486msgid "Conference"
487msgstr "مؤتمر"
487msgstr "مؤتمر"
488
488
489−#: qml/Panel/Indicators/MenuItemFactory.qml:762
489+#: qml/Panel/Indicators/MenuItemFactory.qml:788
490msgid "Nothing is playing"
490msgid "Nothing is playing"
491msgstr "لا شيء مُشغّل"
491msgstr "لا شيء مُشغّل"
492
492
493−#: qml/Panel/Indicators/MenuItemFactory.qml:891
493+#: qml/Panel/Indicators/MenuItemFactory.qml:916
494#, qt-format
494#, qt-format
495msgid "%1 hour"
495msgid "%1 hour"
496msgid_plural "%1 hours"
496msgid_plural "%1 hours"
@@ -501,7 +501,7 @@ msgstr[3] "%1 ساعات"
501msgstr[4] "%1 ساعة"
501msgstr[4] "%1 ساعة"
502msgstr[5] "%1 ساعة"
502msgstr[5] "%1 ساعة"
503
503
504−#: qml/Panel/Indicators/MenuItemFactory.qml:895
504+#: qml/Panel/Indicators/MenuItemFactory.qml:920
505#, qt-format
505#, qt-format
506msgid "%1 minute"
506msgid "%1 minute"
507msgid_plural "%1 minutes"
507msgid_plural "%1 minutes"
@@ -512,7 +512,7 @@ msgstr[3] "%1 دقائق"
512msgstr[4] "%1 دقيقة"
512msgstr[4] "%1 دقيقة"
513msgstr[5] "%1 دقيقة"
513msgstr[5] "%1 دقيقة"
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:900
515+#: qml/Panel/Indicators/MenuItemFactory.qml:925
516#, qt-format
516#, qt-format
517msgid "%1 second"
517msgid "%1 second"
518msgid_plural "%1 seconds"
518msgid_plural "%1 seconds"
@@ -523,37 +523,37 @@ msgstr[3] "%1 ثوان"
523msgstr[4] "%1 ثانية"
523msgstr[4] "%1 ثانية"
524msgstr[5] "%1 ثانية"
524msgstr[5] "%1 ثانية"
525
525
526−#: qml/Panel/Indicators/MenuItemFactory.qml:903
526+#: qml/Panel/Indicators/MenuItemFactory.qml:928
527msgid "0 seconds"
527msgid "0 seconds"
528msgstr "أقل من ثانية"
528msgstr "أقل من ثانية"
529
529
530#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
530#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
531−#: qml/Panel/Indicators/MenuItemFactory.qml:905
531+#: qml/Panel/Indicators/MenuItemFactory.qml:930
532#, qt-format
532#, qt-format
533msgid "%1 remaining"
533msgid "%1 remaining"
534msgstr "باق %1"
534msgstr "باق %1"
535
535
536−#: qml/Panel/Indicators/MenuItemFactory.qml:911
536+#: qml/Panel/Indicators/MenuItemFactory.qml:936
537msgid "In queue…"
537msgid "In queue…"
538msgstr "في الانتظار..."
538msgstr "في الانتظار..."
539
539
540−#: qml/Panel/Indicators/MenuItemFactory.qml:915
540+#: qml/Panel/Indicators/MenuItemFactory.qml:940
541msgid "Downloading"
541msgid "Downloading"
542msgstr "التنزيل"
542msgstr "التنزيل"
543
543
544−#: qml/Panel/Indicators/MenuItemFactory.qml:917
544+#: qml/Panel/Indicators/MenuItemFactory.qml:942
545msgid "Paused, tap to resume"
545msgid "Paused, tap to resume"
546msgstr "مُلبث، انقر للاستئناف"
546msgstr "مُلبث، انقر للاستئناف"
547
547
548−#: qml/Panel/Indicators/MenuItemFactory.qml:919
548+#: qml/Panel/Indicators/MenuItemFactory.qml:944
549msgid "Canceled"
549msgid "Canceled"
550msgstr "تم إلغائه"
550msgstr "تم إلغائه"
551
551
552−#: qml/Panel/Indicators/MenuItemFactory.qml:921
552+#: qml/Panel/Indicators/MenuItemFactory.qml:946
553msgid "Finished"
553msgid "Finished"
554msgstr "انتهى"
554msgstr "انتهى"
555
555
556−#: qml/Panel/Indicators/MenuItemFactory.qml:923
556+#: qml/Panel/Indicators/MenuItemFactory.qml:948
557msgid "Failed, tap to retry"
557msgid "Failed, tap to retry"
558msgstr "فشل، انقل لإعادة المحاولة"
558msgstr "فشل، انقل لإعادة المحاولة"
559
559
@@ -573,7 +573,7 @@ msgctxt "Button: Call back on phone"
573msgid "Call back"
573msgid "Call back"
574msgstr ""
574msgstr ""
575
575
576−#: qml/Stages/SideStage.qml:76
576+#: qml/Stage/SideStage.qml:76
577msgid "Drag using 3 fingers any application from one window to the other"
577msgid "Drag using 3 fingers any application from one window to the other"
578msgstr ""
578msgstr ""
579
579
po/ast.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-09-28 13:40+0000\n"
11"PO-Revision-Date: 2016-09-28 13:40+0000\n"
12"Last-Translator: Xuacu Saturio <xuacusk8@gmail.com>\n"
12"Last-Translator: Xuacu Saturio <xuacusk8@gmail.com>\n"
13"Language-Team: Asturian <ast@li.org>\n"
13"Language-Team: Asturian <ast@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-29 06:45+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:53+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -482,62 +482,62 @@ msgstr "Toca pa tornar a la llamada..."
482msgid "Conference"
482msgid "Conference"
483msgstr "Conferencia"
483msgstr "Conferencia"
484
484
485−#: qml/Panel/Indicators/MenuItemFactory.qml:762
485+#: qml/Panel/Indicators/MenuItemFactory.qml:788
486msgid "Nothing is playing"
486msgid "Nothing is playing"
487msgstr "Nun ta reproduciéndose nada"
487msgstr "Nun ta reproduciéndose nada"
488
488
489−#: qml/Panel/Indicators/MenuItemFactory.qml:891
489+#: qml/Panel/Indicators/MenuItemFactory.qml:916
490#, qt-format
490#, qt-format
491msgid "%1 hour"
491msgid "%1 hour"
492msgid_plural "%1 hours"
492msgid_plural "%1 hours"
493msgstr[0] "%1 hora"
493msgstr[0] "%1 hora"
494msgstr[1] "%1 hores"
494msgstr[1] "%1 hores"
495
495
496−#: qml/Panel/Indicators/MenuItemFactory.qml:895
496+#: qml/Panel/Indicators/MenuItemFactory.qml:920
497#, qt-format
497#, qt-format
498msgid "%1 minute"
498msgid "%1 minute"
499msgid_plural "%1 minutes"
499msgid_plural "%1 minutes"
500msgstr[0] "%1 minutu"
500msgstr[0] "%1 minutu"
501msgstr[1] "%1 minutos"
501msgstr[1] "%1 minutos"
502
502
503−#: qml/Panel/Indicators/MenuItemFactory.qml:900
503+#: qml/Panel/Indicators/MenuItemFactory.qml:925
504#, qt-format
504#, qt-format
505msgid "%1 second"
505msgid "%1 second"
506msgid_plural "%1 seconds"
506msgid_plural "%1 seconds"
507msgstr[0] "%1 segundu"
507msgstr[0] "%1 segundu"
508msgstr[1] "%1 segundos"
508msgstr[1] "%1 segundos"
509
509
510−#: qml/Panel/Indicators/MenuItemFactory.qml:903
510+#: qml/Panel/Indicators/MenuItemFactory.qml:928
511msgid "0 seconds"
511msgid "0 seconds"
512msgstr "0 segundos"
512msgstr "0 segundos"
513
513
514#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
514#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
515−#: qml/Panel/Indicators/MenuItemFactory.qml:905
515+#: qml/Panel/Indicators/MenuItemFactory.qml:930
516#, qt-format
516#, qt-format
517msgid "%1 remaining"
517msgid "%1 remaining"
518msgstr "Queden %1"
518msgstr "Queden %1"
519
519
520−#: qml/Panel/Indicators/MenuItemFactory.qml:911
520+#: qml/Panel/Indicators/MenuItemFactory.qml:936
521msgid "In queue…"
521msgid "In queue…"
522msgstr "Na cola..."
522msgstr "Na cola..."
523
523
524−#: qml/Panel/Indicators/MenuItemFactory.qml:915
524+#: qml/Panel/Indicators/MenuItemFactory.qml:940
525msgid "Downloading"
525msgid "Downloading"
526msgstr "Baxando"
526msgstr "Baxando"
527
527
528−#: qml/Panel/Indicators/MenuItemFactory.qml:917
528+#: qml/Panel/Indicators/MenuItemFactory.qml:942
529msgid "Paused, tap to resume"
529msgid "Paused, tap to resume"
530msgstr "Posáu, toca pa reanudar"
530msgstr "Posáu, toca pa reanudar"
531
531
532−#: qml/Panel/Indicators/MenuItemFactory.qml:919
532+#: qml/Panel/Indicators/MenuItemFactory.qml:944
533msgid "Canceled"
533msgid "Canceled"
534msgstr "Encaboxáu"
534msgstr "Encaboxáu"
535
535
536−#: qml/Panel/Indicators/MenuItemFactory.qml:921
536+#: qml/Panel/Indicators/MenuItemFactory.qml:946
537msgid "Finished"
537msgid "Finished"
538msgstr "Finó"
538msgstr "Finó"
539
539
540−#: qml/Panel/Indicators/MenuItemFactory.qml:923
540+#: qml/Panel/Indicators/MenuItemFactory.qml:948
541msgid "Failed, tap to retry"
541msgid "Failed, tap to retry"
542msgstr "Falló, toca pa reintentar"
542msgstr "Falló, toca pa reintentar"
543
543
@@ -557,7 +557,7 @@ msgctxt "Button: Call back on phone"
557msgid "Call back"
557msgid "Call back"
558msgstr "Devolver llamada"
558msgstr "Devolver llamada"
559
559
560−#: qml/Stages/SideStage.qml:76
560+#: qml/Stage/SideStage.qml:76
561msgid "Drag using 3 fingers any application from one window to the other"
561msgid "Drag using 3 fingers any application from one window to the other"
562msgstr "Abasnar cualquier aplicación d'una ventana a otra usando 3 deos"
562msgstr "Abasnar cualquier aplicación d'una ventana a otra usando 3 deos"
563
563
po/az.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2014-09-03 16:39+0000\n"
11"PO-Revision-Date: 2014-09-03 16:39+0000\n"
12"Last-Translator: Nicat Məmmədov <n1c4t97@gmail.com>\n"
12"Last-Translator: Nicat Məmmədov <n1c4t97@gmail.com>\n"
13"Language-Team: Azerbaijani <az@li.org>\n"
13"Language-Team: Azerbaijani <az@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:03+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:53+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -477,62 +477,62 @@ msgstr "Zəngə qayıtmaq üçün toxunun..."
477msgid "Conference"
477msgid "Conference"
478msgstr "Konfrans"
478msgstr "Konfrans"
479
479
480−#: qml/Panel/Indicators/MenuItemFactory.qml:762
480+#: qml/Panel/Indicators/MenuItemFactory.qml:788
481msgid "Nothing is playing"
481msgid "Nothing is playing"
482msgstr ""
482msgstr ""
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:891
484+#: qml/Panel/Indicators/MenuItemFactory.qml:916
485#, qt-format
485#, qt-format
486msgid "%1 hour"
486msgid "%1 hour"
487msgid_plural "%1 hours"
487msgid_plural "%1 hours"
488msgstr[0] ""
488msgstr[0] ""
489msgstr[1] ""
489msgstr[1] ""
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:895
491+#: qml/Panel/Indicators/MenuItemFactory.qml:920
492#, qt-format
492#, qt-format
493msgid "%1 minute"
493msgid "%1 minute"
494msgid_plural "%1 minutes"
494msgid_plural "%1 minutes"
495msgstr[0] ""
495msgstr[0] ""
496msgstr[1] ""
496msgstr[1] ""
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:900
498+#: qml/Panel/Indicators/MenuItemFactory.qml:925
499#, qt-format
499#, qt-format
500msgid "%1 second"
500msgid "%1 second"
501msgid_plural "%1 seconds"
501msgid_plural "%1 seconds"
502msgstr[0] ""
502msgstr[0] ""
503msgstr[1] ""
503msgstr[1] ""
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:903
505+#: qml/Panel/Indicators/MenuItemFactory.qml:928
506msgid "0 seconds"
506msgid "0 seconds"
507msgstr ""
507msgstr ""
508
508
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
510−#: qml/Panel/Indicators/MenuItemFactory.qml:905
510+#: qml/Panel/Indicators/MenuItemFactory.qml:930
511#, qt-format
511#, qt-format
512msgid "%1 remaining"
512msgid "%1 remaining"
513msgstr ""
513msgstr ""
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:911
515+#: qml/Panel/Indicators/MenuItemFactory.qml:936
516msgid "In queue…"
516msgid "In queue…"
517msgstr "Növbədədir..."
517msgstr "Növbədədir..."
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:915
519+#: qml/Panel/Indicators/MenuItemFactory.qml:940
520msgid "Downloading"
520msgid "Downloading"
521msgstr "Endirilir"
521msgstr "Endirilir"
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:917
523+#: qml/Panel/Indicators/MenuItemFactory.qml:942
524msgid "Paused, tap to resume"
524msgid "Paused, tap to resume"
525msgstr "Dayandırıldı. Davam etmək üçün toxunun"
525msgstr "Dayandırıldı. Davam etmək üçün toxunun"
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:919
527+#: qml/Panel/Indicators/MenuItemFactory.qml:944
528msgid "Canceled"
528msgid "Canceled"
529msgstr "İmtina edildi"
529msgstr "İmtina edildi"
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:921
531+#: qml/Panel/Indicators/MenuItemFactory.qml:946
532msgid "Finished"
532msgid "Finished"
533msgstr "Bitdi"
533msgstr "Bitdi"
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:923
535+#: qml/Panel/Indicators/MenuItemFactory.qml:948
536msgid "Failed, tap to retry"
536msgid "Failed, tap to retry"
537msgstr "Alınmadı. Yenidәn cәhd etmək üçün toxunun"
537msgstr "Alınmadı. Yenidәn cәhd etmək üçün toxunun"
538
538
@@ -552,7 +552,7 @@ msgctxt "Button: Call back on phone"
552msgid "Call back"
552msgid "Call back"
553msgstr ""
553msgstr ""
554
554
555−#: qml/Stages/SideStage.qml:76
555+#: qml/Stage/SideStage.qml:76
556msgid "Drag using 3 fingers any application from one window to the other"
556msgid "Drag using 3 fingers any application from one window to the other"
557msgstr ""
557msgstr ""
558
558
po/be.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2015-12-13 13:12+0000\n"
11"PO-Revision-Date: 2015-12-13 13:12+0000\n"
12"Last-Translator: Mikhail_SaTuRn <mikhail_saturn@tut.by>\n"
12"Last-Translator: Mikhail_SaTuRn <mikhail_saturn@tut.by>\n"
13"Language-Team: Belarusian <be@li.org>\n"
13"Language-Team: Belarusian <be@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
17"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
19−"X-Launchpad-Export-Date: 2016-09-27 07:03+0000\n"
19+"X-Launchpad-Export-Date: 2016-10-28 05:53+0000\n"
20−"X-Generator: Launchpad (build 18204)\n"
20+"X-Generator: Launchpad (build 18246)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:123
22#: plugins/LightDM/Greeter.cpp:123
23msgid "Password: "
23msgid "Password: "
@@ -484,11 +484,11 @@ msgstr "Націсніце, каб вярнуцца да выкліку..."
484msgid "Conference"
484msgid "Conference"
485msgstr "Канферэнцыя"
485msgstr "Канферэнцыя"
486
486
487−#: qml/Panel/Indicators/MenuItemFactory.qml:762
487+#: qml/Panel/Indicators/MenuItemFactory.qml:788
488msgid "Nothing is playing"
488msgid "Nothing is playing"
489msgstr "Нічога не грае"
489msgstr "Нічога не грае"
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:891
491+#: qml/Panel/Indicators/MenuItemFactory.qml:916
492#, qt-format
492#, qt-format
493msgid "%1 hour"
493msgid "%1 hour"
494msgid_plural "%1 hours"
494msgid_plural "%1 hours"
@@ -496,7 +496,7 @@ msgstr[0] "%1 гадзіна"
496msgstr[1] "%1 гадзіны"
496msgstr[1] "%1 гадзіны"
497msgstr[2] "%1 гадзінаў"
497msgstr[2] "%1 гадзінаў"
498
498
499−#: qml/Panel/Indicators/MenuItemFactory.qml:895
499+#: qml/Panel/Indicators/MenuItemFactory.qml:920
500#, qt-format
500#, qt-format
501msgid "%1 minute"
501msgid "%1 minute"
502msgid_plural "%1 minutes"
502msgid_plural "%1 minutes"
@@ -504,7 +504,7 @@ msgstr[0] "%1 хвіліна"
504msgstr[1] "%1 хвіліны"
504msgstr[1] "%1 хвіліны"
505msgstr[2] "%1 хвілінаў"
505msgstr[2] "%1 хвілінаў"
506
506
507−#: qml/Panel/Indicators/MenuItemFactory.qml:900
507+#: qml/Panel/Indicators/MenuItemFactory.qml:925
508#, qt-format
508#, qt-format
509msgid "%1 second"
509msgid "%1 second"
510msgid_plural "%1 seconds"
510msgid_plural "%1 seconds"
@@ -512,37 +512,37 @@ msgstr[0] "%1 секунда"
512msgstr[1] "%1 секунды"
512msgstr[1] "%1 секунды"
513msgstr[2] "%1 секундаў"
513msgstr[2] "%1 секундаў"
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:903
515+#: qml/Panel/Indicators/MenuItemFactory.qml:928
516msgid "0 seconds"
516msgid "0 seconds"
517msgstr "0 секунд"
517msgstr "0 секунд"
518
518
519#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
519#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
520−#: qml/Panel/Indicators/MenuItemFactory.qml:905
520+#: qml/Panel/Indicators/MenuItemFactory.qml:930
521#, qt-format
521#, qt-format
522msgid "%1 remaining"
522msgid "%1 remaining"
523msgstr "%1 засталося"
523msgstr "%1 засталося"
524
524
525−#: qml/Panel/Indicators/MenuItemFactory.qml:911
525+#: qml/Panel/Indicators/MenuItemFactory.qml:936
526msgid "In queue…"
526msgid "In queue…"
527msgstr "У чарзе..."
527msgstr "У чарзе..."
528
528
529−#: qml/Panel/Indicators/MenuItemFactory.qml:915
529+#: qml/Panel/Indicators/MenuItemFactory.qml:940
530msgid "Downloading"
530msgid "Downloading"
531msgstr "Запампоўка"
531msgstr "Запампоўка"
532
532
533−#: qml/Panel/Indicators/MenuItemFactory.qml:917
533+#: qml/Panel/Indicators/MenuItemFactory.qml:942
534msgid "Paused, tap to resume"
534msgid "Paused, tap to resume"
535msgstr "Прыпынена, націсніце для працягу"
535msgstr "Прыпынена, націсніце для працягу"
536
536
537−#: qml/Panel/Indicators/MenuItemFactory.qml:919
537+#: qml/Panel/Indicators/MenuItemFactory.qml:944
538msgid "Canceled"
538msgid "Canceled"
539msgstr "Скасавана"
539msgstr "Скасавана"
540
540
541−#: qml/Panel/Indicators/MenuItemFactory.qml:921
541+#: qml/Panel/Indicators/MenuItemFactory.qml:946
542msgid "Finished"
542msgid "Finished"
543msgstr "Скончана"
543msgstr "Скончана"
544
544
545−#: qml/Panel/Indicators/MenuItemFactory.qml:923
545+#: qml/Panel/Indicators/MenuItemFactory.qml:948
546msgid "Failed, tap to retry"
546msgid "Failed, tap to retry"
547msgstr "Не атрымалася, націсніце, каб паўтарыць спробу"
547msgstr "Не атрымалася, націсніце, каб паўтарыць спробу"
548
548
@@ -562,7 +562,7 @@ msgctxt "Button: Call back on phone"
562msgid "Call back"
562msgid "Call back"
563msgstr "Патэлефанаваць"
563msgstr "Патэлефанаваць"
564
564
565−#: qml/Stages/SideStage.qml:76
565+#: qml/Stage/SideStage.qml:76
566msgid "Drag using 3 fingers any application from one window to the other"
566msgid "Drag using 3 fingers any application from one window to the other"
567msgstr ""
567msgstr ""
568
568
po/bg.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2015-04-12 14:43+0000\n"
11"PO-Revision-Date: 2015-04-12 14:43+0000\n"
12"Last-Translator: George Karavasilev <kokoto-java@ubuntu.com>\n"
12"Last-Translator: George Karavasilev <kokoto-java@ubuntu.com>\n"
13"Language-Team: Bulgarian <bg@li.org>\n"
13"Language-Team: Bulgarian <bg@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:03+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:53+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -479,62 +479,62 @@ msgstr ""
479msgid "Conference"
479msgid "Conference"
480msgstr ""
480msgstr ""
481
481
482−#: qml/Panel/Indicators/MenuItemFactory.qml:762
482+#: qml/Panel/Indicators/MenuItemFactory.qml:788
483msgid "Nothing is playing"
483msgid "Nothing is playing"
484msgstr ""
484msgstr ""
485
485
486−#: qml/Panel/Indicators/MenuItemFactory.qml:891
486+#: qml/Panel/Indicators/MenuItemFactory.qml:916
487#, qt-format
487#, qt-format
488msgid "%1 hour"
488msgid "%1 hour"
489msgid_plural "%1 hours"
489msgid_plural "%1 hours"
490msgstr[0] ""
490msgstr[0] ""
491msgstr[1] ""
491msgstr[1] ""
492
492
493−#: qml/Panel/Indicators/MenuItemFactory.qml:895
493+#: qml/Panel/Indicators/MenuItemFactory.qml:920
494#, qt-format
494#, qt-format
495msgid "%1 minute"
495msgid "%1 minute"
496msgid_plural "%1 minutes"
496msgid_plural "%1 minutes"
497msgstr[0] ""
497msgstr[0] ""
498msgstr[1] ""
498msgstr[1] ""
499
499
500−#: qml/Panel/Indicators/MenuItemFactory.qml:900
500+#: qml/Panel/Indicators/MenuItemFactory.qml:925
501#, qt-format
501#, qt-format
502msgid "%1 second"
502msgid "%1 second"
503msgid_plural "%1 seconds"
503msgid_plural "%1 seconds"
504msgstr[0] ""
504msgstr[0] ""
505msgstr[1] ""
505msgstr[1] ""
506
506
507−#: qml/Panel/Indicators/MenuItemFactory.qml:903
507+#: qml/Panel/Indicators/MenuItemFactory.qml:928
508msgid "0 seconds"
508msgid "0 seconds"
509msgstr ""
509msgstr ""
510
510
511#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
511#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
512−#: qml/Panel/Indicators/MenuItemFactory.qml:905
512+#: qml/Panel/Indicators/MenuItemFactory.qml:930
513#, qt-format
513#, qt-format
514msgid "%1 remaining"
514msgid "%1 remaining"
515msgstr ""
515msgstr ""
516
516
517−#: qml/Panel/Indicators/MenuItemFactory.qml:911
517+#: qml/Panel/Indicators/MenuItemFactory.qml:936
518msgid "In queue…"
518msgid "In queue…"
519msgstr ""
519msgstr ""
520
520
521−#: qml/Panel/Indicators/MenuItemFactory.qml:915
521+#: qml/Panel/Indicators/MenuItemFactory.qml:940
522msgid "Downloading"
522msgid "Downloading"
523msgstr ""
523msgstr ""
524
524
525−#: qml/Panel/Indicators/MenuItemFactory.qml:917
525+#: qml/Panel/Indicators/MenuItemFactory.qml:942
526msgid "Paused, tap to resume"
526msgid "Paused, tap to resume"
527msgstr ""
527msgstr ""
528
528
529−#: qml/Panel/Indicators/MenuItemFactory.qml:919
529+#: qml/Panel/Indicators/MenuItemFactory.qml:944
530msgid "Canceled"
530msgid "Canceled"
531msgstr ""
531msgstr ""
532
532
533−#: qml/Panel/Indicators/MenuItemFactory.qml:921
533+#: qml/Panel/Indicators/MenuItemFactory.qml:946
534msgid "Finished"
534msgid "Finished"
535msgstr ""
535msgstr ""
536
536
537−#: qml/Panel/Indicators/MenuItemFactory.qml:923
537+#: qml/Panel/Indicators/MenuItemFactory.qml:948
538msgid "Failed, tap to retry"
538msgid "Failed, tap to retry"
539msgstr ""
539msgstr ""
540
540
@@ -554,7 +554,7 @@ msgctxt "Button: Call back on phone"
554msgid "Call back"
554msgid "Call back"
555msgstr ""
555msgstr ""
556
556
557−#: qml/Stages/SideStage.qml:76
557+#: qml/Stage/SideStage.qml:76
558msgid "Drag using 3 fingers any application from one window to the other"
558msgid "Drag using 3 fingers any application from one window to the other"
559msgstr ""
559msgstr ""
560
560
po/bn.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2015-11-27 19:38+0000\n"
11"PO-Revision-Date: 2015-11-27 19:38+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Bengali <bn@li.org>\n"
13"Language-Team: Bengali <bn@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:03+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:53+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -479,62 +479,62 @@ msgstr "কলে ফিরে যেতে চাপ দিন..."
479msgid "Conference"
479msgid "Conference"
480msgstr "কনফারেন্স"
480msgstr "কনফারেন্স"
481
481
482−#: qml/Panel/Indicators/MenuItemFactory.qml:762
482+#: qml/Panel/Indicators/MenuItemFactory.qml:788
483msgid "Nothing is playing"
483msgid "Nothing is playing"
484msgstr "কোন কিছু বাজছে না।"
484msgstr "কোন কিছু বাজছে না।"
485
485
486−#: qml/Panel/Indicators/MenuItemFactory.qml:891
486+#: qml/Panel/Indicators/MenuItemFactory.qml:916
487#, qt-format
487#, qt-format
488msgid "%1 hour"
488msgid "%1 hour"
489msgid_plural "%1 hours"
489msgid_plural "%1 hours"
490msgstr[0] "%1 ঘণ্টা"
490msgstr[0] "%1 ঘণ্টা"
491msgstr[1] "%1 ঘণ্টা"
491msgstr[1] "%1 ঘণ্টা"
492
492
493−#: qml/Panel/Indicators/MenuItemFactory.qml:895
493+#: qml/Panel/Indicators/MenuItemFactory.qml:920
494#, qt-format
494#, qt-format
495msgid "%1 minute"
495msgid "%1 minute"
496msgid_plural "%1 minutes"
496msgid_plural "%1 minutes"
497msgstr[0] "%1 মিনিট"
497msgstr[0] "%1 মিনিট"
498msgstr[1] "%1 মিনিট"
498msgstr[1] "%1 মিনিট"
499
499
500−#: qml/Panel/Indicators/MenuItemFactory.qml:900
500+#: qml/Panel/Indicators/MenuItemFactory.qml:925
501#, qt-format
501#, qt-format
502msgid "%1 second"
502msgid "%1 second"
503msgid_plural "%1 seconds"
503msgid_plural "%1 seconds"
504msgstr[0] "%1 সেকেন্ড"
504msgstr[0] "%1 সেকেন্ড"
505msgstr[1] "%1 সেকেন্ড"
505msgstr[1] "%1 সেকেন্ড"
506
506
507−#: qml/Panel/Indicators/MenuItemFactory.qml:903
507+#: qml/Panel/Indicators/MenuItemFactory.qml:928
508msgid "0 seconds"
508msgid "0 seconds"
509msgstr "0 সেকেন্ড"
509msgstr "0 সেকেন্ড"
510
510
511#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
511#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
512−#: qml/Panel/Indicators/MenuItemFactory.qml:905
512+#: qml/Panel/Indicators/MenuItemFactory.qml:930
513#, qt-format
513#, qt-format
514msgid "%1 remaining"
514msgid "%1 remaining"
515msgstr "%1 বাকি"
515msgstr "%1 বাকি"
516
516
517−#: qml/Panel/Indicators/MenuItemFactory.qml:911
517+#: qml/Panel/Indicators/MenuItemFactory.qml:936
518msgid "In queue…"
518msgid "In queue…"
519msgstr "অপেক্ষায় রয়েছে..."
519msgstr "অপেক্ষায় রয়েছে..."
520
520
521−#: qml/Panel/Indicators/MenuItemFactory.qml:915
521+#: qml/Panel/Indicators/MenuItemFactory.qml:940
522msgid "Downloading"
522msgid "Downloading"
523msgstr "ডাউনলোড হচ্ছে"
523msgstr "ডাউনলোড হচ্ছে"
524
524
525−#: qml/Panel/Indicators/MenuItemFactory.qml:917
525+#: qml/Panel/Indicators/MenuItemFactory.qml:942
526msgid "Paused, tap to resume"
526msgid "Paused, tap to resume"
527msgstr "থামানো, শুরু করতে চাপ দিন"
527msgstr "থামানো, শুরু করতে চাপ দিন"
528
528
529−#: qml/Panel/Indicators/MenuItemFactory.qml:919
529+#: qml/Panel/Indicators/MenuItemFactory.qml:944
530msgid "Canceled"
530msgid "Canceled"
531msgstr "বাতিল হয়েছে"
531msgstr "বাতিল হয়েছে"
532
532
533−#: qml/Panel/Indicators/MenuItemFactory.qml:921
533+#: qml/Panel/Indicators/MenuItemFactory.qml:946
534msgid "Finished"
534msgid "Finished"
535msgstr "শেষ"
535msgstr "শেষ"
536
536
537−#: qml/Panel/Indicators/MenuItemFactory.qml:923
537+#: qml/Panel/Indicators/MenuItemFactory.qml:948
538msgid "Failed, tap to retry"
538msgid "Failed, tap to retry"
539msgstr "ব্যার্থ হয়েছে, পুনরায় চেষ্টা করতে চাপ দিন"
539msgstr "ব্যার্থ হয়েছে, পুনরায় চেষ্টা করতে চাপ দিন"
540
540
@@ -554,7 +554,7 @@ msgctxt "Button: Call back on phone"
554msgid "Call back"
554msgid "Call back"
555msgstr "কল ব্যাক"
555msgstr "কল ব্যাক"
556
556
557−#: qml/Stages/SideStage.qml:76
557+#: qml/Stage/SideStage.qml:76
558msgid "Drag using 3 fingers any application from one window to the other"
558msgid "Drag using 3 fingers any application from one window to the other"
559msgstr ""
559msgstr ""
560
560
po/br.po+22−22
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-08-29 11:37+0000\n"
11"PO-Revision-Date: 2016-08-29 11:37+0000\n"
12"Last-Translator: Fohanno Thierry <thierry.fohanno@ofis-bzh.org>\n"
12"Last-Translator: Fohanno Thierry <thierry.fohanno@ofis-bzh.org>\n"
13"Language-Team: Breton <br@li.org>\n"
13"Language-Team: Breton <br@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:03+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:53+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -151,11 +151,11 @@ msgstr ""
151
151
152#: qml/Components/KeyboardShortcutsOverlay.qml:130
152#: qml/Components/KeyboardShortcutsOverlay.qml:130
153msgid "Opens the launcher, displays shortcuts."
153msgid "Opens the launcher, displays shortcuts."
154−msgstr ""
154+msgstr "Digeriñ al lañser, diskouez ar berradurioù"
155
155
156#: qml/Components/KeyboardShortcutsOverlay.qml:138
156#: qml/Components/KeyboardShortcutsOverlay.qml:138
157msgid "Alt + F1"
157msgid "Alt + F1"
158−msgstr ""
158+msgstr "Erl + F1"
159
159
160#: qml/Components/KeyboardShortcutsOverlay.qml:143
160#: qml/Components/KeyboardShortcutsOverlay.qml:143
161msgid "Opens launcher keyboard navigation mode."
161msgid "Opens launcher keyboard navigation mode."
@@ -191,11 +191,11 @@ msgstr "Digeriñ pajenn degemer ar c'hefluskerioù enklask."
191
191
192#: qml/Components/KeyboardShortcutsOverlay.qml:209
192#: qml/Components/KeyboardShortcutsOverlay.qml:209
193msgid "Switching"
193msgid "Switching"
194−msgstr ""
194+msgstr "Cheñch"
195
195
196#: qml/Components/KeyboardShortcutsOverlay.qml:216
196#: qml/Components/KeyboardShortcutsOverlay.qml:216
197msgid "Alt + Tab"
197msgid "Alt + Tab"
198−msgstr ""
198+msgstr "Erl + Taolenn"
199
199
200#: qml/Components/KeyboardShortcutsOverlay.qml:221
200#: qml/Components/KeyboardShortcutsOverlay.qml:221
201msgid "Switches between applications."
201msgid "Switches between applications."
@@ -219,7 +219,7 @@ msgstr ""
219
219
220#: qml/Components/KeyboardShortcutsOverlay.qml:259
220#: qml/Components/KeyboardShortcutsOverlay.qml:259
221msgid "Windows"
221msgid "Windows"
222−msgstr ""
222+msgstr "Windows"
223
223
224#: qml/Components/KeyboardShortcutsOverlay.qml:266
224#: qml/Components/KeyboardShortcutsOverlay.qml:266
225msgid "Ctrl + Super + D"
225msgid "Ctrl + Super + D"
@@ -255,7 +255,7 @@ msgstr ""
255
255
256#: qml/Components/KeyboardShortcutsOverlay.qml:318
256#: qml/Components/KeyboardShortcutsOverlay.qml:318
257msgid "Alt + F4"
257msgid "Alt + F4"
258−msgstr ""
258+msgstr "Erl + F4"
259
259
260#: qml/Components/KeyboardShortcutsOverlay.qml:323
260#: qml/Components/KeyboardShortcutsOverlay.qml:323
261msgid "Closes the current window."
261msgid "Closes the current window."
@@ -486,62 +486,62 @@ msgstr "Touchit evit distreiñ d'ar bellgomzadenn..."
486msgid "Conference"
486msgid "Conference"
487msgstr "Kendiviz"
487msgstr "Kendiviz"
488
488
489−#: qml/Panel/Indicators/MenuItemFactory.qml:762
489+#: qml/Panel/Indicators/MenuItemFactory.qml:788
490msgid "Nothing is playing"
490msgid "Nothing is playing"
491msgstr "Ne lenner netra bremañ"
491msgstr "Ne lenner netra bremañ"
492
492
493−#: qml/Panel/Indicators/MenuItemFactory.qml:891
493+#: qml/Panel/Indicators/MenuItemFactory.qml:916
494#, qt-format
494#, qt-format
495msgid "%1 hour"
495msgid "%1 hour"
496msgid_plural "%1 hours"
496msgid_plural "%1 hours"
497msgstr[0] "%1 eur"
497msgstr[0] "%1 eur"
498msgstr[1] "%1 eur"
498msgstr[1] "%1 eur"
499
499
500−#: qml/Panel/Indicators/MenuItemFactory.qml:895
500+#: qml/Panel/Indicators/MenuItemFactory.qml:920
501#, qt-format
501#, qt-format
502msgid "%1 minute"
502msgid "%1 minute"
503msgid_plural "%1 minutes"
503msgid_plural "%1 minutes"
504msgstr[0] "%1 vunutenn"
504msgstr[0] "%1 vunutenn"
505msgstr[1] "%1 vunutenn"
505msgstr[1] "%1 vunutenn"
506
506
507−#: qml/Panel/Indicators/MenuItemFactory.qml:900
507+#: qml/Panel/Indicators/MenuItemFactory.qml:925
508#, qt-format
508#, qt-format
509msgid "%1 second"
509msgid "%1 second"
510msgid_plural "%1 seconds"
510msgid_plural "%1 seconds"
511msgstr[0] "%1 eilenn"
511msgstr[0] "%1 eilenn"
512msgstr[1] "%1 eilenn"
512msgstr[1] "%1 eilenn"
513
513
514−#: qml/Panel/Indicators/MenuItemFactory.qml:903
514+#: qml/Panel/Indicators/MenuItemFactory.qml:928
515msgid "0 seconds"
515msgid "0 seconds"
516msgstr "0 eilenn"
516msgstr "0 eilenn"
517
517
518#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
518#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
519−#: qml/Panel/Indicators/MenuItemFactory.qml:905
519+#: qml/Panel/Indicators/MenuItemFactory.qml:930
520#, qt-format
520#, qt-format
521msgid "%1 remaining"
521msgid "%1 remaining"
522msgstr "%1 o chom"
522msgstr "%1 o chom"
523
523
524−#: qml/Panel/Indicators/MenuItemFactory.qml:911
524+#: qml/Panel/Indicators/MenuItemFactory.qml:936
525msgid "In queue…"
525msgid "In queue…"
526msgstr "El lostennad..."
526msgstr "El lostennad..."
527
527
528−#: qml/Panel/Indicators/MenuItemFactory.qml:915
528+#: qml/Panel/Indicators/MenuItemFactory.qml:940
529msgid "Downloading"
529msgid "Downloading"
530msgstr "O pellgargañ"
530msgstr "O pellgargañ"
531
531
532−#: qml/Panel/Indicators/MenuItemFactory.qml:917
532+#: qml/Panel/Indicators/MenuItemFactory.qml:942
533msgid "Paused, tap to resume"
533msgid "Paused, tap to resume"
534msgstr "Ehanet, touchit evit adkregiñ"
534msgstr "Ehanet, touchit evit adkregiñ"
535
535
536−#: qml/Panel/Indicators/MenuItemFactory.qml:919
536+#: qml/Panel/Indicators/MenuItemFactory.qml:944
537msgid "Canceled"
537msgid "Canceled"
538msgstr "Nullet"
538msgstr "Nullet"
539
539
540−#: qml/Panel/Indicators/MenuItemFactory.qml:921
540+#: qml/Panel/Indicators/MenuItemFactory.qml:946
541msgid "Finished"
541msgid "Finished"
542msgstr "Echu"
542msgstr "Echu"
543
543
544−#: qml/Panel/Indicators/MenuItemFactory.qml:923
544+#: qml/Panel/Indicators/MenuItemFactory.qml:948
545msgid "Failed, tap to retry"
545msgid "Failed, tap to retry"
546msgstr "C'hwitet, touchit evit adkregiñ"
546msgstr "C'hwitet, touchit evit adkregiñ"
547
547
@@ -561,7 +561,7 @@ msgctxt "Button: Call back on phone"
561msgid "Call back"
561msgid "Call back"
562msgstr "Gervel en-dro"
562msgstr "Gervel en-dro"
563
563
564−#: qml/Stages/SideStage.qml:76
564+#: qml/Stage/SideStage.qml:76
565msgid "Drag using 3 fingers any application from one window to the other"
565msgid "Drag using 3 fingers any application from one window to the other"
566msgstr ""
566msgstr ""
567
567
po/bs.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2015-12-01 20:06+0000\n"
11"PO-Revision-Date: 2015-12-01 20:06+0000\n"
12"Last-Translator: Kenan Gutić <Unknown>\n"
12"Last-Translator: Kenan Gutić <Unknown>\n"
13"Language-Team: Bosnian <bs@li.org>\n"
13"Language-Team: Bosnian <bs@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-09-27 07:03+0000\n"
19+"X-Launchpad-Export-Date: 2016-10-28 05:53+0000\n"
20−"X-Generator: Launchpad (build 18204)\n"
20+"X-Generator: Launchpad (build 18246)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:123
22#: plugins/LightDM/Greeter.cpp:123
23msgid "Password: "
23msgid "Password: "
@@ -483,11 +483,11 @@ msgstr "Kucnite da uzvratite poziv..."
483msgid "Conference"
483msgid "Conference"
484msgstr "Savjetovanje"
484msgstr "Savjetovanje"
485
485
486−#: qml/Panel/Indicators/MenuItemFactory.qml:762
486+#: qml/Panel/Indicators/MenuItemFactory.qml:788
487msgid "Nothing is playing"
487msgid "Nothing is playing"
488msgstr "Ništa nije pokrenuto"
488msgstr "Ništa nije pokrenuto"
489
489
490−#: qml/Panel/Indicators/MenuItemFactory.qml:891
490+#: qml/Panel/Indicators/MenuItemFactory.qml:916
491#, qt-format
491#, qt-format
492msgid "%1 hour"
492msgid "%1 hour"
493msgid_plural "%1 hours"
493msgid_plural "%1 hours"
@@ -495,7 +495,7 @@ msgstr[0] "%1 sat"
495msgstr[1] "%1 sata"
495msgstr[1] "%1 sata"
496msgstr[2] "%1 sati"
496msgstr[2] "%1 sati"
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:895
498+#: qml/Panel/Indicators/MenuItemFactory.qml:920
499#, qt-format
499#, qt-format
500msgid "%1 minute"
500msgid "%1 minute"
501msgid_plural "%1 minutes"
501msgid_plural "%1 minutes"
@@ -503,7 +503,7 @@ msgstr[0] "%1 minut"
503msgstr[1] "%1 minuta"
503msgstr[1] "%1 minuta"
504msgstr[2] "%1 minuta"
504msgstr[2] "%1 minuta"
505
505
506−#: qml/Panel/Indicators/MenuItemFactory.qml:900
506+#: qml/Panel/Indicators/MenuItemFactory.qml:925
507#, qt-format
507#, qt-format
508msgid "%1 second"
508msgid "%1 second"
509msgid_plural "%1 seconds"
509msgid_plural "%1 seconds"
@@ -511,37 +511,37 @@ msgstr[0] "%1 sekunda"
511msgstr[1] "%1 sekunde"
511msgstr[1] "%1 sekunde"
512msgstr[2] "%1 sekundi"
512msgstr[2] "%1 sekundi"
513
513
514−#: qml/Panel/Indicators/MenuItemFactory.qml:903
514+#: qml/Panel/Indicators/MenuItemFactory.qml:928
515msgid "0 seconds"
515msgid "0 seconds"
516msgstr "0 sekundi"
516msgstr "0 sekundi"
517
517
518#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
518#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
519−#: qml/Panel/Indicators/MenuItemFactory.qml:905
519+#: qml/Panel/Indicators/MenuItemFactory.qml:930
520#, qt-format
520#, qt-format
521msgid "%1 remaining"
521msgid "%1 remaining"
522msgstr "%1 preostalo"
522msgstr "%1 preostalo"
523
523
524−#: qml/Panel/Indicators/MenuItemFactory.qml:911
524+#: qml/Panel/Indicators/MenuItemFactory.qml:936
525msgid "In queue…"
525msgid "In queue…"
526msgstr "U red..."
526msgstr "U red..."
527
527
528−#: qml/Panel/Indicators/MenuItemFactory.qml:915
528+#: qml/Panel/Indicators/MenuItemFactory.qml:940
529msgid "Downloading"
529msgid "Downloading"
530msgstr "Preuzimanje"
530msgstr "Preuzimanje"
531
531
532−#: qml/Panel/Indicators/MenuItemFactory.qml:917
532+#: qml/Panel/Indicators/MenuItemFactory.qml:942
533msgid "Paused, tap to resume"
533msgid "Paused, tap to resume"
534msgstr "Pauzirano, kucnuti za nastavak"
534msgstr "Pauzirano, kucnuti za nastavak"
535
535
536−#: qml/Panel/Indicators/MenuItemFactory.qml:919
536+#: qml/Panel/Indicators/MenuItemFactory.qml:944
537msgid "Canceled"
537msgid "Canceled"
538msgstr "Otkazano"
538msgstr "Otkazano"
539
539
540−#: qml/Panel/Indicators/MenuItemFactory.qml:921
540+#: qml/Panel/Indicators/MenuItemFactory.qml:946
541msgid "Finished"
541msgid "Finished"
542msgstr "Završeno"
542msgstr "Završeno"
543
543
544−#: qml/Panel/Indicators/MenuItemFactory.qml:923
544+#: qml/Panel/Indicators/MenuItemFactory.qml:948
545msgid "Failed, tap to retry"
545msgid "Failed, tap to retry"
546msgstr "Neuspjelo, kucnuti za ponavljanje"
546msgstr "Neuspjelo, kucnuti za ponavljanje"
547
547
@@ -561,7 +561,7 @@ msgctxt "Button: Call back on phone"
561msgid "Call back"
561msgid "Call back"
562msgstr "Uzvrati poziv"
562msgstr "Uzvrati poziv"
563
563
564−#: qml/Stages/SideStage.qml:76
564+#: qml/Stage/SideStage.qml:76
565msgid "Drag using 3 fingers any application from one window to the other"
565msgid "Drag using 3 fingers any application from one window to the other"
566msgstr ""
566msgstr ""
567
567
po/ca.po+18−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-09-27 06:51+0000\n"
11"PO-Revision-Date: 2016-09-27 06:51+0000\n"
12"Last-Translator: Walter Garcia-Fontes <walter.garcia@upf.edu>\n"
12"Last-Translator: Walter Garcia-Fontes <walter.garcia@upf.edu>\n"
13"Language-Team: Catalan <ca@li.org>\n"
13"Language-Team: Catalan <ca@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-28 06:57+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:53+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -469,11 +469,11 @@ msgstr "Inici de sessió"
469
469
470#: qml/Greeter/NarrowView.qml:252
470#: qml/Greeter/NarrowView.qml:252
471msgid "Emergency"
471msgid "Emergency"
472−msgstr ""
472+msgstr "Emergència"
473
473
474#: qml/Greeter/SessionsList.qml:122
474#: qml/Greeter/SessionsList.qml:122
475msgid "Select desktop environment"
475msgid "Select desktop environment"
476−msgstr ""
476+msgstr "Seleccioneu l'entorn d'escriptori"
477
477
478#: qml/Notifications/NotificationMenuItemFactory.qml:124
478#: qml/Notifications/NotificationMenuItemFactory.qml:124
479msgid "Show password"
479msgid "Show password"
@@ -487,62 +487,62 @@ msgstr "Feu un toc per tornar a la trucada..."
487msgid "Conference"
487msgid "Conference"
488msgstr "Conferència"
488msgstr "Conferència"
489
489
490−#: qml/Panel/Indicators/MenuItemFactory.qml:762
490+#: qml/Panel/Indicators/MenuItemFactory.qml:788
491msgid "Nothing is playing"
491msgid "Nothing is playing"
492msgstr "No s'està reproduint res"
492msgstr "No s'està reproduint res"
493
493
494−#: qml/Panel/Indicators/MenuItemFactory.qml:891
494+#: qml/Panel/Indicators/MenuItemFactory.qml:916
495#, qt-format
495#, qt-format
496msgid "%1 hour"
496msgid "%1 hour"
497msgid_plural "%1 hours"
497msgid_plural "%1 hours"
498msgstr[0] "%1 hora"
498msgstr[0] "%1 hora"
499msgstr[1] "%1 hores"
499msgstr[1] "%1 hores"
500
500
501−#: qml/Panel/Indicators/MenuItemFactory.qml:895
501+#: qml/Panel/Indicators/MenuItemFactory.qml:920
502#, qt-format
502#, qt-format
503msgid "%1 minute"
503msgid "%1 minute"
504msgid_plural "%1 minutes"
504msgid_plural "%1 minutes"
505msgstr[0] "%1 minut"
505msgstr[0] "%1 minut"
506msgstr[1] "%1 minuts"
506msgstr[1] "%1 minuts"
507
507
508−#: qml/Panel/Indicators/MenuItemFactory.qml:900
508+#: qml/Panel/Indicators/MenuItemFactory.qml:925
509#, qt-format
509#, qt-format
510msgid "%1 second"
510msgid "%1 second"
511msgid_plural "%1 seconds"
511msgid_plural "%1 seconds"
512msgstr[0] "%1 segon"
512msgstr[0] "%1 segon"
513msgstr[1] "%1 segons"
513msgstr[1] "%1 segons"
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:903
515+#: qml/Panel/Indicators/MenuItemFactory.qml:928
516msgid "0 seconds"
516msgid "0 seconds"
517msgstr "0 segons"
517msgstr "0 segons"
518
518
519#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
519#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
520−#: qml/Panel/Indicators/MenuItemFactory.qml:905
520+#: qml/Panel/Indicators/MenuItemFactory.qml:930
521#, qt-format
521#, qt-format
522msgid "%1 remaining"
522msgid "%1 remaining"
523msgstr "Resta %1"
523msgstr "Resta %1"
524
524
525−#: qml/Panel/Indicators/MenuItemFactory.qml:911
525+#: qml/Panel/Indicators/MenuItemFactory.qml:936
526msgid "In queue…"
526msgid "In queue…"
527msgstr "A la cua..."
527msgstr "A la cua..."
528
528
529−#: qml/Panel/Indicators/MenuItemFactory.qml:915
529+#: qml/Panel/Indicators/MenuItemFactory.qml:940
530msgid "Downloading"
530msgid "Downloading"
531msgstr "S'està baixant"
531msgstr "S'està baixant"
532
532
533−#: qml/Panel/Indicators/MenuItemFactory.qml:917
533+#: qml/Panel/Indicators/MenuItemFactory.qml:942
534msgid "Paused, tap to resume"
534msgid "Paused, tap to resume"
535msgstr "En pausa, feu un toc per continuar"
535msgstr "En pausa, feu un toc per continuar"
536
536
537−#: qml/Panel/Indicators/MenuItemFactory.qml:919
537+#: qml/Panel/Indicators/MenuItemFactory.qml:944
538msgid "Canceled"
538msgid "Canceled"
539msgstr "S'ha cancel·lat"
539msgstr "S'ha cancel·lat"
540
540
541−#: qml/Panel/Indicators/MenuItemFactory.qml:921
541+#: qml/Panel/Indicators/MenuItemFactory.qml:946
542msgid "Finished"
542msgid "Finished"
543msgstr "S'ha finalitzat"
543msgstr "S'ha finalitzat"
544
544
545−#: qml/Panel/Indicators/MenuItemFactory.qml:923
545+#: qml/Panel/Indicators/MenuItemFactory.qml:948
546msgid "Failed, tap to retry"
546msgid "Failed, tap to retry"
547msgstr "Ha fallat, feu un toc per tornar-ho a intentar"
547msgstr "Ha fallat, feu un toc per tornar-ho a intentar"
548
548
@@ -562,7 +562,7 @@ msgctxt "Button: Call back on phone"
562msgid "Call back"
562msgid "Call back"
563msgstr "Retorna la trucada"
563msgstr "Retorna la trucada"
564
564
565−#: qml/Stages/SideStage.qml:76
565+#: qml/Stage/SideStage.qml:76
566msgid "Drag using 3 fingers any application from one window to the other"
566msgid "Drag using 3 fingers any application from one window to the other"
567msgstr ""
567msgstr ""
568"Arrossegueu usant 3 dits qualsevol aplicació d'una finestra a una altra"
568"Arrossegueu usant 3 dits qualsevol aplicació d'una finestra a una altra"
po/ca@valencia.po+17−17
@@ -7,16 +7,16 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2015-02-22 15:22+0000\n"
11"PO-Revision-Date: 2015-02-22 15:22+0000\n"
12−"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
12+"Last-Translator: David Planella <david.planella@gmail.com>\n"
13"Language-Team: Catalan <ca@li.org>\n"
13"Language-Team: Catalan <ca@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:55+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -483,62 +483,62 @@ msgstr "Feu un toc per tornar a la cridada..."
483msgid "Conference"
483msgid "Conference"
484msgstr "Conferència"
484msgstr "Conferència"
485
485
486−#: qml/Panel/Indicators/MenuItemFactory.qml:762
486+#: qml/Panel/Indicators/MenuItemFactory.qml:788
487msgid "Nothing is playing"
487msgid "Nothing is playing"
488msgstr "No s'està reproduint res"
488msgstr "No s'està reproduint res"
489
489
490−#: qml/Panel/Indicators/MenuItemFactory.qml:891
490+#: qml/Panel/Indicators/MenuItemFactory.qml:916
491#, qt-format
491#, qt-format
492msgid "%1 hour"
492msgid "%1 hour"
493msgid_plural "%1 hours"
493msgid_plural "%1 hours"
494msgstr[0] ""
494msgstr[0] ""
495msgstr[1] ""
495msgstr[1] ""
496
496
497−#: qml/Panel/Indicators/MenuItemFactory.qml:895
497+#: qml/Panel/Indicators/MenuItemFactory.qml:920
498#, qt-format
498#, qt-format
499msgid "%1 minute"
499msgid "%1 minute"
500msgid_plural "%1 minutes"
500msgid_plural "%1 minutes"
501msgstr[0] ""
501msgstr[0] ""
502msgstr[1] ""
502msgstr[1] ""
503
503
504−#: qml/Panel/Indicators/MenuItemFactory.qml:900
504+#: qml/Panel/Indicators/MenuItemFactory.qml:925
505#, qt-format
505#, qt-format
506msgid "%1 second"
506msgid "%1 second"
507msgid_plural "%1 seconds"
507msgid_plural "%1 seconds"
508msgstr[0] ""
508msgstr[0] ""
509msgstr[1] ""
509msgstr[1] ""
510
510
511−#: qml/Panel/Indicators/MenuItemFactory.qml:903
511+#: qml/Panel/Indicators/MenuItemFactory.qml:928
512msgid "0 seconds"
512msgid "0 seconds"
513msgstr ""
513msgstr ""
514
514
515#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
515#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
516−#: qml/Panel/Indicators/MenuItemFactory.qml:905
516+#: qml/Panel/Indicators/MenuItemFactory.qml:930
517#, qt-format
517#, qt-format
518msgid "%1 remaining"
518msgid "%1 remaining"
519msgstr ""
519msgstr ""
520
520
521−#: qml/Panel/Indicators/MenuItemFactory.qml:911
521+#: qml/Panel/Indicators/MenuItemFactory.qml:936
522msgid "In queue…"
522msgid "In queue…"
523msgstr "A la cua..."
523msgstr "A la cua..."
524
524
525−#: qml/Panel/Indicators/MenuItemFactory.qml:915
525+#: qml/Panel/Indicators/MenuItemFactory.qml:940
526msgid "Downloading"
526msgid "Downloading"
527msgstr "S'està baixant"
527msgstr "S'està baixant"
528
528
529−#: qml/Panel/Indicators/MenuItemFactory.qml:917
529+#: qml/Panel/Indicators/MenuItemFactory.qml:942
530msgid "Paused, tap to resume"
530msgid "Paused, tap to resume"
531msgstr "En pausa, feu un toc per continuar"
531msgstr "En pausa, feu un toc per continuar"
532
532
533−#: qml/Panel/Indicators/MenuItemFactory.qml:919
533+#: qml/Panel/Indicators/MenuItemFactory.qml:944
534msgid "Canceled"
534msgid "Canceled"
535msgstr "S'ha cancel·lat"
535msgstr "S'ha cancel·lat"
536
536
537−#: qml/Panel/Indicators/MenuItemFactory.qml:921
537+#: qml/Panel/Indicators/MenuItemFactory.qml:946
538msgid "Finished"
538msgid "Finished"
539msgstr "S'ha finalitzat"
539msgstr "S'ha finalitzat"
540
540
541−#: qml/Panel/Indicators/MenuItemFactory.qml:923
541+#: qml/Panel/Indicators/MenuItemFactory.qml:948
542msgid "Failed, tap to retry"
542msgid "Failed, tap to retry"
543msgstr "Ha fallat, feu un toc per tornar-ho a intentar"
543msgstr "Ha fallat, feu un toc per tornar-ho a intentar"
544
544
@@ -558,7 +558,7 @@ msgctxt "Button: Call back on phone"
558msgid "Call back"
558msgid "Call back"
559msgstr ""
559msgstr ""
560
560
561−#: qml/Stages/SideStage.qml:76
561+#: qml/Stage/SideStage.qml:76
562msgid "Drag using 3 fingers any application from one window to the other"
562msgid "Drag using 3 fingers any application from one window to the other"
563msgstr ""
563msgstr ""
564
564
po/ce.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2015-02-15 04:01+0000\n"
11"PO-Revision-Date: 2015-02-15 04:01+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Chechen <ce@li.org>\n"
13"Language-Team: Chechen <ce@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:03+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:53+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -477,62 +477,62 @@ msgstr ""
477msgid "Conference"
477msgid "Conference"
478msgstr ""
478msgstr ""
479
479
480−#: qml/Panel/Indicators/MenuItemFactory.qml:762
480+#: qml/Panel/Indicators/MenuItemFactory.qml:788
481msgid "Nothing is playing"
481msgid "Nothing is playing"
482msgstr ""
482msgstr ""
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:891
484+#: qml/Panel/Indicators/MenuItemFactory.qml:916
485#, qt-format
485#, qt-format
486msgid "%1 hour"
486msgid "%1 hour"
487msgid_plural "%1 hours"
487msgid_plural "%1 hours"
488msgstr[0] ""
488msgstr[0] ""
489msgstr[1] ""
489msgstr[1] ""
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:895
491+#: qml/Panel/Indicators/MenuItemFactory.qml:920
492#, qt-format
492#, qt-format
493msgid "%1 minute"
493msgid "%1 minute"
494msgid_plural "%1 minutes"
494msgid_plural "%1 minutes"
495msgstr[0] ""
495msgstr[0] ""
496msgstr[1] ""
496msgstr[1] ""
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:900
498+#: qml/Panel/Indicators/MenuItemFactory.qml:925
499#, qt-format
499#, qt-format
500msgid "%1 second"
500msgid "%1 second"
501msgid_plural "%1 seconds"
501msgid_plural "%1 seconds"
502msgstr[0] ""
502msgstr[0] ""
503msgstr[1] ""
503msgstr[1] ""
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:903
505+#: qml/Panel/Indicators/MenuItemFactory.qml:928
506msgid "0 seconds"
506msgid "0 seconds"
507msgstr ""
507msgstr ""
508
508
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
510−#: qml/Panel/Indicators/MenuItemFactory.qml:905
510+#: qml/Panel/Indicators/MenuItemFactory.qml:930
511#, qt-format
511#, qt-format
512msgid "%1 remaining"
512msgid "%1 remaining"
513msgstr ""
513msgstr ""
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:911
515+#: qml/Panel/Indicators/MenuItemFactory.qml:936
516msgid "In queue…"
516msgid "In queue…"
517msgstr ""
517msgstr ""
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:915
519+#: qml/Panel/Indicators/MenuItemFactory.qml:940
520msgid "Downloading"
520msgid "Downloading"
521msgstr ""
521msgstr ""
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:917
523+#: qml/Panel/Indicators/MenuItemFactory.qml:942
524msgid "Paused, tap to resume"
524msgid "Paused, tap to resume"
525msgstr ""
525msgstr ""
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:919
527+#: qml/Panel/Indicators/MenuItemFactory.qml:944
528msgid "Canceled"
528msgid "Canceled"
529msgstr ""
529msgstr ""
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:921
531+#: qml/Panel/Indicators/MenuItemFactory.qml:946
532msgid "Finished"
532msgid "Finished"
533msgstr ""
533msgstr ""
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:923
535+#: qml/Panel/Indicators/MenuItemFactory.qml:948
536msgid "Failed, tap to retry"
536msgid "Failed, tap to retry"
537msgstr ""
537msgstr ""
538
538
@@ -552,7 +552,7 @@ msgctxt "Button: Call back on phone"
552msgid "Call back"
552msgid "Call back"
553msgstr ""
553msgstr ""
554
554
555−#: qml/Stages/SideStage.qml:76
555+#: qml/Stage/SideStage.qml:76
556msgid "Drag using 3 fingers any application from one window to the other"
556msgid "Drag using 3 fingers any application from one window to the other"
557msgstr ""
557msgstr ""
558
558
po/ckb.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2014-01-21 11:05+0000\n"
11"PO-Revision-Date: 2014-01-21 11:05+0000\n"
12"Last-Translator: Aras <aras.noori@gmail.com>\n"
12"Last-Translator: Aras <aras.noori@gmail.com>\n"
13"Language-Team: Kurdish (Sorani) <ckb@li.org>\n"
13"Language-Team: Kurdish (Sorani) <ckb@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:55+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -477,62 +477,62 @@ msgstr ""
477msgid "Conference"
477msgid "Conference"
478msgstr ""
478msgstr ""
479
479
480−#: qml/Panel/Indicators/MenuItemFactory.qml:762
480+#: qml/Panel/Indicators/MenuItemFactory.qml:788
481msgid "Nothing is playing"
481msgid "Nothing is playing"
482msgstr ""
482msgstr ""
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:891
484+#: qml/Panel/Indicators/MenuItemFactory.qml:916
485#, qt-format
485#, qt-format
486msgid "%1 hour"
486msgid "%1 hour"
487msgid_plural "%1 hours"
487msgid_plural "%1 hours"
488msgstr[0] ""
488msgstr[0] ""
489msgstr[1] ""
489msgstr[1] ""
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:895
491+#: qml/Panel/Indicators/MenuItemFactory.qml:920
492#, qt-format
492#, qt-format
493msgid "%1 minute"
493msgid "%1 minute"
494msgid_plural "%1 minutes"
494msgid_plural "%1 minutes"
495msgstr[0] ""
495msgstr[0] ""
496msgstr[1] ""
496msgstr[1] ""
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:900
498+#: qml/Panel/Indicators/MenuItemFactory.qml:925
499#, qt-format
499#, qt-format
500msgid "%1 second"
500msgid "%1 second"
501msgid_plural "%1 seconds"
501msgid_plural "%1 seconds"
502msgstr[0] ""
502msgstr[0] ""
503msgstr[1] ""
503msgstr[1] ""
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:903
505+#: qml/Panel/Indicators/MenuItemFactory.qml:928
506msgid "0 seconds"
506msgid "0 seconds"
507msgstr ""
507msgstr ""
508
508
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
510−#: qml/Panel/Indicators/MenuItemFactory.qml:905
510+#: qml/Panel/Indicators/MenuItemFactory.qml:930
511#, qt-format
511#, qt-format
512msgid "%1 remaining"
512msgid "%1 remaining"
513msgstr ""
513msgstr ""
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:911
515+#: qml/Panel/Indicators/MenuItemFactory.qml:936
516msgid "In queue…"
516msgid "In queue…"
517msgstr ""
517msgstr ""
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:915
519+#: qml/Panel/Indicators/MenuItemFactory.qml:940
520msgid "Downloading"
520msgid "Downloading"
521msgstr ""
521msgstr ""
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:917
523+#: qml/Panel/Indicators/MenuItemFactory.qml:942
524msgid "Paused, tap to resume"
524msgid "Paused, tap to resume"
525msgstr ""
525msgstr ""
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:919
527+#: qml/Panel/Indicators/MenuItemFactory.qml:944
528msgid "Canceled"
528msgid "Canceled"
529msgstr ""
529msgstr ""
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:921
531+#: qml/Panel/Indicators/MenuItemFactory.qml:946
532msgid "Finished"
532msgid "Finished"
533msgstr ""
533msgstr ""
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:923
535+#: qml/Panel/Indicators/MenuItemFactory.qml:948
536msgid "Failed, tap to retry"
536msgid "Failed, tap to retry"
537msgstr ""
537msgstr ""
538
538
@@ -552,7 +552,7 @@ msgctxt "Button: Call back on phone"
552msgid "Call back"
552msgid "Call back"
553msgstr ""
553msgstr ""
554
554
555−#: qml/Stages/SideStage.qml:76
555+#: qml/Stage/SideStage.qml:76
556msgid "Drag using 3 fingers any application from one window to the other"
556msgid "Drag using 3 fingers any application from one window to the other"
557msgstr ""
557msgstr ""
558
558
po/co.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-05-24 10:40+0000\n"
11"PO-Revision-Date: 2016-05-24 10:40+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Corsican <co@li.org>\n"
13"Language-Team: Corsican <co@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:03+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:53+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -487,62 +487,62 @@ msgstr "Tuccà per riturnà à a chjamata..."
487msgid "Conference"
487msgid "Conference"
488msgstr "Cunferenza"
488msgstr "Cunferenza"
489
489
490−#: qml/Panel/Indicators/MenuItemFactory.qml:762
490+#: qml/Panel/Indicators/MenuItemFactory.qml:788
491msgid "Nothing is playing"
491msgid "Nothing is playing"
492msgstr "Nunda in ripruduzione..."
492msgstr "Nunda in ripruduzione..."
493
493
494−#: qml/Panel/Indicators/MenuItemFactory.qml:891
494+#: qml/Panel/Indicators/MenuItemFactory.qml:916
495#, qt-format
495#, qt-format
496msgid "%1 hour"
496msgid "%1 hour"
497msgid_plural "%1 hours"
497msgid_plural "%1 hours"
498msgstr[0] "%1 ora"
498msgstr[0] "%1 ora"
499msgstr[1] "%1 ore"
499msgstr[1] "%1 ore"
500
500
501−#: qml/Panel/Indicators/MenuItemFactory.qml:895
501+#: qml/Panel/Indicators/MenuItemFactory.qml:920
502#, qt-format
502#, qt-format
503msgid "%1 minute"
503msgid "%1 minute"
504msgid_plural "%1 minutes"
504msgid_plural "%1 minutes"
505msgstr[0] "%1 minutu"
505msgstr[0] "%1 minutu"
506msgstr[1] "%1 minuti"
506msgstr[1] "%1 minuti"
507
507
508−#: qml/Panel/Indicators/MenuItemFactory.qml:900
508+#: qml/Panel/Indicators/MenuItemFactory.qml:925
509#, qt-format
509#, qt-format
510msgid "%1 second"
510msgid "%1 second"
511msgid_plural "%1 seconds"
511msgid_plural "%1 seconds"
512msgstr[0] "%1 seconda"
512msgstr[0] "%1 seconda"
513msgstr[1] "%1 seconde"
513msgstr[1] "%1 seconde"
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:903
515+#: qml/Panel/Indicators/MenuItemFactory.qml:928
516msgid "0 seconds"
516msgid "0 seconds"
517msgstr "0 seconde"
517msgstr "0 seconde"
518
518
519#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
519#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
520−#: qml/Panel/Indicators/MenuItemFactory.qml:905
520+#: qml/Panel/Indicators/MenuItemFactory.qml:930
521#, qt-format
521#, qt-format
522msgid "%1 remaining"
522msgid "%1 remaining"
523msgstr "%1 rimanente"
523msgstr "%1 rimanente"
524
524
525−#: qml/Panel/Indicators/MenuItemFactory.qml:911
525+#: qml/Panel/Indicators/MenuItemFactory.qml:936
526msgid "In queue…"
526msgid "In queue…"
527msgstr "In coda..."
527msgstr "In coda..."
528
528
529−#: qml/Panel/Indicators/MenuItemFactory.qml:915
529+#: qml/Panel/Indicators/MenuItemFactory.qml:940
530msgid "Downloading"
530msgid "Downloading"
531msgstr "Scaricamentu..."
531msgstr "Scaricamentu..."
532
532
533−#: qml/Panel/Indicators/MenuItemFactory.qml:917
533+#: qml/Panel/Indicators/MenuItemFactory.qml:942
534msgid "Paused, tap to resume"
534msgid "Paused, tap to resume"
535msgstr "In sosta, tuccà pè riprende"
535msgstr "In sosta, tuccà pè riprende"
536
536
537−#: qml/Panel/Indicators/MenuItemFactory.qml:919
537+#: qml/Panel/Indicators/MenuItemFactory.qml:944
538msgid "Canceled"
538msgid "Canceled"
539msgstr "Annullatu"
539msgstr "Annullatu"
540
540
541−#: qml/Panel/Indicators/MenuItemFactory.qml:921
541+#: qml/Panel/Indicators/MenuItemFactory.qml:946
542msgid "Finished"
542msgid "Finished"
543msgstr "Cumpletu"
543msgstr "Cumpletu"
544
544
545−#: qml/Panel/Indicators/MenuItemFactory.qml:923
545+#: qml/Panel/Indicators/MenuItemFactory.qml:948
546msgid "Failed, tap to retry"
546msgid "Failed, tap to retry"
547msgstr "Fallatu, tocca per turnà à pruvà"
547msgstr "Fallatu, tocca per turnà à pruvà"
548
548
@@ -562,7 +562,7 @@ msgctxt "Button: Call back on phone"
562msgid "Call back"
562msgid "Call back"
563msgstr "Richjamà"
563msgstr "Richjamà"
564
564
565−#: qml/Stages/SideStage.qml:76
565+#: qml/Stage/SideStage.qml:76
566msgid "Drag using 3 fingers any application from one window to the other"
566msgid "Drag using 3 fingers any application from one window to the other"
567msgstr ""
567msgstr ""
568"Trascinà cù 3 dite qualichissia applicazione da una finestra à un'antra"
568"Trascinà cù 3 dite qualichissia applicazione da una finestra à un'antra"
po/cs.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2015-07-07 10:44+0000\n"
11"PO-Revision-Date: 2015-07-07 10:44+0000\n"
12"Last-Translator: Vojtěch Daněk <vdanek@outlook.com>\n"
12"Last-Translator: Vojtěch Daněk <vdanek@outlook.com>\n"
13"Language-Team: Czech <cs@li.org>\n"
13"Language-Team: Czech <cs@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
17"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:03+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:53+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20"Language: cs\n"
20"Language: cs\n"
21
21
22#: plugins/LightDM/Greeter.cpp:123
22#: plugins/LightDM/Greeter.cpp:123
@@ -483,11 +483,11 @@ msgstr "Klepnutím se vrátíte k hovoru..."
483msgid "Conference"
483msgid "Conference"
484msgstr "Konferenční hovor"
484msgstr "Konferenční hovor"
485
485
486−#: qml/Panel/Indicators/MenuItemFactory.qml:762
486+#: qml/Panel/Indicators/MenuItemFactory.qml:788
487msgid "Nothing is playing"
487msgid "Nothing is playing"
488msgstr "Nic se nepřehrává"
488msgstr "Nic se nepřehrává"
489
489
490−#: qml/Panel/Indicators/MenuItemFactory.qml:891
490+#: qml/Panel/Indicators/MenuItemFactory.qml:916
491#, qt-format
491#, qt-format
492msgid "%1 hour"
492msgid "%1 hour"
493msgid_plural "%1 hours"
493msgid_plural "%1 hours"
@@ -495,7 +495,7 @@ msgstr[0] "%1 hodina"
495msgstr[1] "%1 hodiny"
495msgstr[1] "%1 hodiny"
496msgstr[2] "%1 hodin"
496msgstr[2] "%1 hodin"
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:895
498+#: qml/Panel/Indicators/MenuItemFactory.qml:920
499#, qt-format
499#, qt-format
500msgid "%1 minute"
500msgid "%1 minute"
501msgid_plural "%1 minutes"
501msgid_plural "%1 minutes"
@@ -503,7 +503,7 @@ msgstr[0] "%1 minuta"
503msgstr[1] "%1 minuty"
503msgstr[1] "%1 minuty"
504msgstr[2] "%1 minut"
504msgstr[2] "%1 minut"
505
505
506−#: qml/Panel/Indicators/MenuItemFactory.qml:900
506+#: qml/Panel/Indicators/MenuItemFactory.qml:925
507#, qt-format
507#, qt-format
508msgid "%1 second"
508msgid "%1 second"
509msgid_plural "%1 seconds"
509msgid_plural "%1 seconds"
@@ -511,37 +511,37 @@ msgstr[0] "%1 sekunda"
511msgstr[1] "%1 sekundy"
511msgstr[1] "%1 sekundy"
512msgstr[2] "%1 sekund"
512msgstr[2] "%1 sekund"
513
513
514−#: qml/Panel/Indicators/MenuItemFactory.qml:903
514+#: qml/Panel/Indicators/MenuItemFactory.qml:928
515msgid "0 seconds"
515msgid "0 seconds"
516msgstr "0 sekund"
516msgstr "0 sekund"
517
517
518#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
518#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
519−#: qml/Panel/Indicators/MenuItemFactory.qml:905
519+#: qml/Panel/Indicators/MenuItemFactory.qml:930
520#, qt-format
520#, qt-format
521msgid "%1 remaining"
521msgid "%1 remaining"
522msgstr "Zbývá %1"
522msgstr "Zbývá %1"
523
523
524−#: qml/Panel/Indicators/MenuItemFactory.qml:911
524+#: qml/Panel/Indicators/MenuItemFactory.qml:936
525msgid "In queue…"
525msgid "In queue…"
526msgstr "Ve frontě..."
526msgstr "Ve frontě..."
527
527
528−#: qml/Panel/Indicators/MenuItemFactory.qml:915
528+#: qml/Panel/Indicators/MenuItemFactory.qml:940
529msgid "Downloading"
529msgid "Downloading"
530msgstr "Stahování"
530msgstr "Stahování"
531
531
532−#: qml/Panel/Indicators/MenuItemFactory.qml:917
532+#: qml/Panel/Indicators/MenuItemFactory.qml:942
533msgid "Paused, tap to resume"
533msgid "Paused, tap to resume"
534msgstr "Pauza, pro pokračování klepněte"
534msgstr "Pauza, pro pokračování klepněte"
535
535
536−#: qml/Panel/Indicators/MenuItemFactory.qml:919
536+#: qml/Panel/Indicators/MenuItemFactory.qml:944
537msgid "Canceled"
537msgid "Canceled"
538msgstr "Zrušeno"
538msgstr "Zrušeno"
539
539
540−#: qml/Panel/Indicators/MenuItemFactory.qml:921
540+#: qml/Panel/Indicators/MenuItemFactory.qml:946
541msgid "Finished"
541msgid "Finished"
542msgstr "Dokončeno"
542msgstr "Dokončeno"
543
543
544−#: qml/Panel/Indicators/MenuItemFactory.qml:923
544+#: qml/Panel/Indicators/MenuItemFactory.qml:948
545msgid "Failed, tap to retry"
545msgid "Failed, tap to retry"
546msgstr "Nezdařilo se, opakujte klepnutím"
546msgstr "Nezdařilo se, opakujte klepnutím"
547
547
@@ -561,7 +561,7 @@ msgctxt "Button: Call back on phone"
561msgid "Call back"
561msgid "Call back"
562msgstr ""
562msgstr ""
563
563
564−#: qml/Stages/SideStage.qml:76
564+#: qml/Stage/SideStage.qml:76
565msgid "Drag using 3 fingers any application from one window to the other"
565msgid "Drag using 3 fingers any application from one window to the other"
566msgstr ""
566msgstr ""
567
567
po/cy.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2015-07-31 13:21+0000\n"
11"PO-Revision-Date: 2015-07-31 13:21+0000\n"
12"Last-Translator: Owen Llywelyn <owen.llywelyn@gmail.com>\n"
12"Last-Translator: Owen Llywelyn <owen.llywelyn@gmail.com>\n"
13"Language-Team: Welsh <cy@li.org>\n"
13"Language-Team: Welsh <cy@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=4; plural=n==1 ? 0 : n==2 ? 1 : (n != 8 && n != 11) ? "
17"Plural-Forms: nplurals=4; plural=n==1 ? 0 : n==2 ? 1 : (n != 8 && n != 11) ? "
18"2 : 3;\n"
18"2 : 3;\n"
19−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
19+"X-Launchpad-Export-Date: 2016-10-28 05:55+0000\n"
20−"X-Generator: Launchpad (build 18204)\n"
20+"X-Generator: Launchpad (build 18246)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:123
22#: plugins/LightDM/Greeter.cpp:123
23msgid "Password: "
23msgid "Password: "
@@ -484,11 +484,11 @@ msgstr "Tapiwch i ffonio nôl"
484msgid "Conference"
484msgid "Conference"
485msgstr "Cydalwad"
485msgstr "Cydalwad"
486
486
487−#: qml/Panel/Indicators/MenuItemFactory.qml:762
487+#: qml/Panel/Indicators/MenuItemFactory.qml:788
488msgid "Nothing is playing"
488msgid "Nothing is playing"
489msgstr "Dim byd yn chwarae"
489msgstr "Dim byd yn chwarae"
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:891
491+#: qml/Panel/Indicators/MenuItemFactory.qml:916
492#, qt-format
492#, qt-format
493msgid "%1 hour"
493msgid "%1 hour"
494msgid_plural "%1 hours"
494msgid_plural "%1 hours"
@@ -497,7 +497,7 @@ msgstr[1] "%1 awr"
497msgstr[2] "%1 awr"
497msgstr[2] "%1 awr"
498msgstr[3] "%1 awr"
498msgstr[3] "%1 awr"
499
499
500−#: qml/Panel/Indicators/MenuItemFactory.qml:895
500+#: qml/Panel/Indicators/MenuItemFactory.qml:920
501#, qt-format
501#, qt-format
502msgid "%1 minute"
502msgid "%1 minute"
503msgid_plural "%1 minutes"
503msgid_plural "%1 minutes"
@@ -506,7 +506,7 @@ msgstr[1] "%1 munud"
506msgstr[2] "%1 munud"
506msgstr[2] "%1 munud"
507msgstr[3] "%1 munud"
507msgstr[3] "%1 munud"
508
508
509−#: qml/Panel/Indicators/MenuItemFactory.qml:900
509+#: qml/Panel/Indicators/MenuItemFactory.qml:925
510#, qt-format
510#, qt-format
511msgid "%1 second"
511msgid "%1 second"
512msgid_plural "%1 seconds"
512msgid_plural "%1 seconds"
@@ -515,37 +515,37 @@ msgstr[1] "%1 eiliad"
515msgstr[2] "%1 eiliad"
515msgstr[2] "%1 eiliad"
516msgstr[3] "%1 eiliad"
516msgstr[3] "%1 eiliad"
517
517
518−#: qml/Panel/Indicators/MenuItemFactory.qml:903
518+#: qml/Panel/Indicators/MenuItemFactory.qml:928
519msgid "0 seconds"
519msgid "0 seconds"
520msgstr "0 eiliad"
520msgstr "0 eiliad"
521
521
522#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
522#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
523−#: qml/Panel/Indicators/MenuItemFactory.qml:905
523+#: qml/Panel/Indicators/MenuItemFactory.qml:930
524#, qt-format
524#, qt-format
525msgid "%1 remaining"
525msgid "%1 remaining"
526msgstr "%1 yn weddill"
526msgstr "%1 yn weddill"
527
527
528−#: qml/Panel/Indicators/MenuItemFactory.qml:911
528+#: qml/Panel/Indicators/MenuItemFactory.qml:936
529msgid "In queue…"
529msgid "In queue…"
530msgstr "Mewn ciw..."
530msgstr "Mewn ciw..."
531
531
532−#: qml/Panel/Indicators/MenuItemFactory.qml:915
532+#: qml/Panel/Indicators/MenuItemFactory.qml:940
533msgid "Downloading"
533msgid "Downloading"
534msgstr "Yn llwytho i lawr"
534msgstr "Yn llwytho i lawr"
535
535
536−#: qml/Panel/Indicators/MenuItemFactory.qml:917
536+#: qml/Panel/Indicators/MenuItemFactory.qml:942
537msgid "Paused, tap to resume"
537msgid "Paused, tap to resume"
538msgstr "Seibiwyd, tapiwch i ailafael ynddi"
538msgstr "Seibiwyd, tapiwch i ailafael ynddi"
539
539
540−#: qml/Panel/Indicators/MenuItemFactory.qml:919
540+#: qml/Panel/Indicators/MenuItemFactory.qml:944
541msgid "Canceled"
541msgid "Canceled"
542msgstr "Diddymwyd"
542msgstr "Diddymwyd"
543
543
544−#: qml/Panel/Indicators/MenuItemFactory.qml:921
544+#: qml/Panel/Indicators/MenuItemFactory.qml:946
545msgid "Finished"
545msgid "Finished"
546msgstr "Wedi gorffen"
546msgstr "Wedi gorffen"
547
547
548−#: qml/Panel/Indicators/MenuItemFactory.qml:923
548+#: qml/Panel/Indicators/MenuItemFactory.qml:948
549msgid "Failed, tap to retry"
549msgid "Failed, tap to retry"
550msgstr "Methwyd, tapiwch i geisio eto"
550msgstr "Methwyd, tapiwch i geisio eto"
551
551
@@ -565,7 +565,7 @@ msgctxt "Button: Call back on phone"
565msgid "Call back"
565msgid "Call back"
566msgstr ""
566msgstr ""
567
567
568−#: qml/Stages/SideStage.qml:76
568+#: qml/Stage/SideStage.qml:76
569msgid "Drag using 3 fingers any application from one window to the other"
569msgid "Drag using 3 fingers any application from one window to the other"
570msgstr ""
570msgstr ""
571
571
po/da.po+16−16
@@ -8,7 +8,7 @@ msgid ""
8msgstr ""
8msgstr ""
9"Project-Id-Version: unity8\n"
9"Project-Id-Version: unity8\n"
10"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
11+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
12"PO-Revision-Date: 2015-07-06 12:05+0000\n"
12"PO-Revision-Date: 2015-07-06 12:05+0000\n"
13"Last-Translator: Folmer Fredslund <Unknown>\n"
13"Last-Translator: Folmer Fredslund <Unknown>\n"
14"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
14"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Type: text/plain; charset=UTF-8\n"
17"Content-Transfer-Encoding: 8bit\n"
17"Content-Transfer-Encoding: 8bit\n"
18"Plural-Forms: nplurals=2; plural=n != 1;\n"
18"Plural-Forms: nplurals=2; plural=n != 1;\n"
19−"X-Launchpad-Export-Date: 2016-09-27 07:03+0000\n"
19+"X-Launchpad-Export-Date: 2016-10-28 05:53+0000\n"
20−"X-Generator: Launchpad (build 18204)\n"
20+"X-Generator: Launchpad (build 18246)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:123
22#: plugins/LightDM/Greeter.cpp:123
23msgid "Password: "
23msgid "Password: "
@@ -484,62 +484,62 @@ msgstr "Tryk for at vende tilbage til opkaldet..."
484msgid "Conference"
484msgid "Conference"
485msgstr "Konference"
485msgstr "Konference"
486
486
487−#: qml/Panel/Indicators/MenuItemFactory.qml:762
487+#: qml/Panel/Indicators/MenuItemFactory.qml:788
488msgid "Nothing is playing"
488msgid "Nothing is playing"
489msgstr "Intet afspilles"
489msgstr "Intet afspilles"
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:891
491+#: qml/Panel/Indicators/MenuItemFactory.qml:916
492#, qt-format
492#, qt-format
493msgid "%1 hour"
493msgid "%1 hour"
494msgid_plural "%1 hours"
494msgid_plural "%1 hours"
495msgstr[0] "%1 time"
495msgstr[0] "%1 time"
496msgstr[1] "%1 timer"
496msgstr[1] "%1 timer"
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:895
498+#: qml/Panel/Indicators/MenuItemFactory.qml:920
499#, qt-format
499#, qt-format
500msgid "%1 minute"
500msgid "%1 minute"
501msgid_plural "%1 minutes"
501msgid_plural "%1 minutes"
502msgstr[0] "%1 minut"
502msgstr[0] "%1 minut"
503msgstr[1] "%1 minutter"
503msgstr[1] "%1 minutter"
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:900
505+#: qml/Panel/Indicators/MenuItemFactory.qml:925
506#, qt-format
506#, qt-format
507msgid "%1 second"
507msgid "%1 second"
508msgid_plural "%1 seconds"
508msgid_plural "%1 seconds"
509msgstr[0] "%1 sekund"
509msgstr[0] "%1 sekund"
510msgstr[1] "%1 sekunder"
510msgstr[1] "%1 sekunder"
511
511
512−#: qml/Panel/Indicators/MenuItemFactory.qml:903
512+#: qml/Panel/Indicators/MenuItemFactory.qml:928
513msgid "0 seconds"
513msgid "0 seconds"
514msgstr "0 sekunder"
514msgstr "0 sekunder"
515
515
516#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
516#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
517−#: qml/Panel/Indicators/MenuItemFactory.qml:905
517+#: qml/Panel/Indicators/MenuItemFactory.qml:930
518#, qt-format
518#, qt-format
519msgid "%1 remaining"
519msgid "%1 remaining"
520msgstr "%1 tilbage"
520msgstr "%1 tilbage"
521
521
522−#: qml/Panel/Indicators/MenuItemFactory.qml:911
522+#: qml/Panel/Indicators/MenuItemFactory.qml:936
523msgid "In queue…"
523msgid "In queue…"
524msgstr "I kø…"
524msgstr "I kø…"
525
525
526−#: qml/Panel/Indicators/MenuItemFactory.qml:915
526+#: qml/Panel/Indicators/MenuItemFactory.qml:940
527msgid "Downloading"
527msgid "Downloading"
528msgstr "Henter"
528msgstr "Henter"
529
529
530−#: qml/Panel/Indicators/MenuItemFactory.qml:917
530+#: qml/Panel/Indicators/MenuItemFactory.qml:942
531msgid "Paused, tap to resume"
531msgid "Paused, tap to resume"
532msgstr "På pause - tryk for at fortsætte"
532msgstr "På pause - tryk for at fortsætte"
533
533
534−#: qml/Panel/Indicators/MenuItemFactory.qml:919
534+#: qml/Panel/Indicators/MenuItemFactory.qml:944
535msgid "Canceled"
535msgid "Canceled"
536msgstr "Annulleret"
536msgstr "Annulleret"
537
537
538−#: qml/Panel/Indicators/MenuItemFactory.qml:921
538+#: qml/Panel/Indicators/MenuItemFactory.qml:946
539msgid "Finished"
539msgid "Finished"
540msgstr "Færdig"
540msgstr "Færdig"
541
541
542−#: qml/Panel/Indicators/MenuItemFactory.qml:923
542+#: qml/Panel/Indicators/MenuItemFactory.qml:948
543msgid "Failed, tap to retry"
543msgid "Failed, tap to retry"
544msgstr "Mislykkedes - tryk for at prøve igen"
544msgstr "Mislykkedes - tryk for at prøve igen"
545
545
@@ -559,7 +559,7 @@ msgctxt "Button: Call back on phone"
559msgid "Call back"
559msgid "Call back"
560msgstr ""
560msgstr ""
561
561
562−#: qml/Stages/SideStage.qml:76
562+#: qml/Stage/SideStage.qml:76
563msgid "Drag using 3 fingers any application from one window to the other"
563msgid "Drag using 3 fingers any application from one window to the other"
564msgstr ""
564msgstr ""
565
565
po/de.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-09-29 12:06+0000\n"
11"PO-Revision-Date: 2016-09-29 12:06+0000\n"
12"Last-Translator: Matthias Seidel <matthias.seidel@hamburg.de>\n"
12"Last-Translator: Matthias Seidel <matthias.seidel@hamburg.de>\n"
13"Language-Team: German <de@li.org>\n"
13"Language-Team: German <de@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-30 06:18+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:53+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -487,62 +487,62 @@ msgstr "Tippen, um zum Anruf zurückzugehen …"
487msgid "Conference"
487msgid "Conference"
488msgstr "Konferenz"
488msgstr "Konferenz"
489
489
490−#: qml/Panel/Indicators/MenuItemFactory.qml:762
490+#: qml/Panel/Indicators/MenuItemFactory.qml:788
491msgid "Nothing is playing"
491msgid "Nothing is playing"
492msgstr "Nichts wird abgespielt"
492msgstr "Nichts wird abgespielt"
493
493
494−#: qml/Panel/Indicators/MenuItemFactory.qml:891
494+#: qml/Panel/Indicators/MenuItemFactory.qml:916
495#, qt-format
495#, qt-format
496msgid "%1 hour"
496msgid "%1 hour"
497msgid_plural "%1 hours"
497msgid_plural "%1 hours"
498msgstr[0] "%1 Stunde"
498msgstr[0] "%1 Stunde"
499msgstr[1] "%1 Stunden"
499msgstr[1] "%1 Stunden"
500
500
501−#: qml/Panel/Indicators/MenuItemFactory.qml:895
501+#: qml/Panel/Indicators/MenuItemFactory.qml:920
502#, qt-format
502#, qt-format
503msgid "%1 minute"
503msgid "%1 minute"
504msgid_plural "%1 minutes"
504msgid_plural "%1 minutes"
505msgstr[0] "%1 Minute"
505msgstr[0] "%1 Minute"
506msgstr[1] "%1 Minuten"
506msgstr[1] "%1 Minuten"
507
507
508−#: qml/Panel/Indicators/MenuItemFactory.qml:900
508+#: qml/Panel/Indicators/MenuItemFactory.qml:925
509#, qt-format
509#, qt-format
510msgid "%1 second"
510msgid "%1 second"
511msgid_plural "%1 seconds"
511msgid_plural "%1 seconds"
512msgstr[0] "%1 Sekunde"
512msgstr[0] "%1 Sekunde"
513msgstr[1] "%1 Sekunden"
513msgstr[1] "%1 Sekunden"
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:903
515+#: qml/Panel/Indicators/MenuItemFactory.qml:928
516msgid "0 seconds"
516msgid "0 seconds"
517msgstr "0 Sekunden"
517msgstr "0 Sekunden"
518
518
519#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
519#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
520−#: qml/Panel/Indicators/MenuItemFactory.qml:905
520+#: qml/Panel/Indicators/MenuItemFactory.qml:930
521#, qt-format
521#, qt-format
522msgid "%1 remaining"
522msgid "%1 remaining"
523msgstr "%1 verbleibend"
523msgstr "%1 verbleibend"
524
524
525−#: qml/Panel/Indicators/MenuItemFactory.qml:911
525+#: qml/Panel/Indicators/MenuItemFactory.qml:936
526msgid "In queue…"
526msgid "In queue…"
527msgstr "In Warteschlange …"
527msgstr "In Warteschlange …"
528
528
529−#: qml/Panel/Indicators/MenuItemFactory.qml:915
529+#: qml/Panel/Indicators/MenuItemFactory.qml:940
530msgid "Downloading"
530msgid "Downloading"
531msgstr "Wird heruntergeladen"
531msgstr "Wird heruntergeladen"
532
532
533−#: qml/Panel/Indicators/MenuItemFactory.qml:917
533+#: qml/Panel/Indicators/MenuItemFactory.qml:942
534msgid "Paused, tap to resume"
534msgid "Paused, tap to resume"
535msgstr "Pausiert, tippen zum Fortsetzen"
535msgstr "Pausiert, tippen zum Fortsetzen"
536
536
537−#: qml/Panel/Indicators/MenuItemFactory.qml:919
537+#: qml/Panel/Indicators/MenuItemFactory.qml:944
538msgid "Canceled"
538msgid "Canceled"
539msgstr "Abgebrochen"
539msgstr "Abgebrochen"
540
540
541−#: qml/Panel/Indicators/MenuItemFactory.qml:921
541+#: qml/Panel/Indicators/MenuItemFactory.qml:946
542msgid "Finished"
542msgid "Finished"
543msgstr "Erledigt"
543msgstr "Erledigt"
544
544
545−#: qml/Panel/Indicators/MenuItemFactory.qml:923
545+#: qml/Panel/Indicators/MenuItemFactory.qml:948
546msgid "Failed, tap to retry"
546msgid "Failed, tap to retry"
547msgstr "Fehlgeschlagen, tippen zum Wiederholen"
547msgstr "Fehlgeschlagen, tippen zum Wiederholen"
548
548
@@ -562,7 +562,7 @@ msgctxt "Button: Call back on phone"
562msgid "Call back"
562msgid "Call back"
563msgstr "Zurückrufen"
563msgstr "Zurückrufen"
564
564
565−#: qml/Stages/SideStage.qml:76
565+#: qml/Stage/SideStage.qml:76
566msgid "Drag using 3 fingers any application from one window to the other"
566msgid "Drag using 3 fingers any application from one window to the other"
567msgstr "Eine Anwendung mit 3 Fingern von einem Fenster zum anderen ziehen"
567msgstr "Eine Anwendung mit 3 Fingern von einem Fenster zum anderen ziehen"
568
568
po/el.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-04-25 16:24+0000\n"
11"PO-Revision-Date: 2016-04-25 16:24+0000\n"
12"Last-Translator: Aggelos Arnaoutis <angelosarn@hotmail.com>\n"
12"Last-Translator: Aggelos Arnaoutis <angelosarn@hotmail.com>\n"
13"Language-Team: Greek <el@li.org>\n"
13"Language-Team: Greek <el@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:04+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -487,62 +487,62 @@ msgstr "Πατήστε για να γυρίσετε στην κλήση..."
487msgid "Conference"
487msgid "Conference"
488msgstr "Συνδιάσκεψη"
488msgstr "Συνδιάσκεψη"
489
489
490−#: qml/Panel/Indicators/MenuItemFactory.qml:762
490+#: qml/Panel/Indicators/MenuItemFactory.qml:788
491msgid "Nothing is playing"
491msgid "Nothing is playing"
492msgstr "Δεν αναπαράγεται τίποτα"
492msgstr "Δεν αναπαράγεται τίποτα"
493
493
494−#: qml/Panel/Indicators/MenuItemFactory.qml:891
494+#: qml/Panel/Indicators/MenuItemFactory.qml:916
495#, qt-format
495#, qt-format
496msgid "%1 hour"
496msgid "%1 hour"
497msgid_plural "%1 hours"
497msgid_plural "%1 hours"
498msgstr[0] "%1 ώρα"
498msgstr[0] "%1 ώρα"
499msgstr[1] "%1 ώρες"
499msgstr[1] "%1 ώρες"
500
500
501−#: qml/Panel/Indicators/MenuItemFactory.qml:895
501+#: qml/Panel/Indicators/MenuItemFactory.qml:920
502#, qt-format
502#, qt-format
503msgid "%1 minute"
503msgid "%1 minute"
504msgid_plural "%1 minutes"
504msgid_plural "%1 minutes"
505msgstr[0] "%1 λεπτό"
505msgstr[0] "%1 λεπτό"
506msgstr[1] "%1 λεπτά"
506msgstr[1] "%1 λεπτά"
507
507
508−#: qml/Panel/Indicators/MenuItemFactory.qml:900
508+#: qml/Panel/Indicators/MenuItemFactory.qml:925
509#, qt-format
509#, qt-format
510msgid "%1 second"
510msgid "%1 second"
511msgid_plural "%1 seconds"
511msgid_plural "%1 seconds"
512msgstr[0] "%1 δευτερόλεπτο"
512msgstr[0] "%1 δευτερόλεπτο"
513msgstr[1] "%1 δευτερόλεπτα"
513msgstr[1] "%1 δευτερόλεπτα"
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:903
515+#: qml/Panel/Indicators/MenuItemFactory.qml:928
516msgid "0 seconds"
516msgid "0 seconds"
517msgstr "0 δευτερόλεπτα"
517msgstr "0 δευτερόλεπτα"
518
518
519#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
519#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
520−#: qml/Panel/Indicators/MenuItemFactory.qml:905
520+#: qml/Panel/Indicators/MenuItemFactory.qml:930
521#, qt-format
521#, qt-format
522msgid "%1 remaining"
522msgid "%1 remaining"
523msgstr "%1 απομένουν"
523msgstr "%1 απομένουν"
524
524
525−#: qml/Panel/Indicators/MenuItemFactory.qml:911
525+#: qml/Panel/Indicators/MenuItemFactory.qml:936
526msgid "In queue…"
526msgid "In queue…"
527msgstr "Στην ουρά..."
527msgstr "Στην ουρά..."
528
528
529−#: qml/Panel/Indicators/MenuItemFactory.qml:915
529+#: qml/Panel/Indicators/MenuItemFactory.qml:940
530msgid "Downloading"
530msgid "Downloading"
531msgstr "Λήψη σε εξέλιξη"
531msgstr "Λήψη σε εξέλιξη"
532
532
533−#: qml/Panel/Indicators/MenuItemFactory.qml:917
533+#: qml/Panel/Indicators/MenuItemFactory.qml:942
534msgid "Paused, tap to resume"
534msgid "Paused, tap to resume"
535msgstr "Σταματημένο, αγγίξτε για συνέχιση"
535msgstr "Σταματημένο, αγγίξτε για συνέχιση"
536
536
537−#: qml/Panel/Indicators/MenuItemFactory.qml:919
537+#: qml/Panel/Indicators/MenuItemFactory.qml:944
538msgid "Canceled"
538msgid "Canceled"
539msgstr "Ακυρώθηκε"
539msgstr "Ακυρώθηκε"
540
540
541−#: qml/Panel/Indicators/MenuItemFactory.qml:921
541+#: qml/Panel/Indicators/MenuItemFactory.qml:946
542msgid "Finished"
542msgid "Finished"
543msgstr "Ολοκληρώθηκε"
543msgstr "Ολοκληρώθηκε"
544
544
545−#: qml/Panel/Indicators/MenuItemFactory.qml:923
545+#: qml/Panel/Indicators/MenuItemFactory.qml:948
546msgid "Failed, tap to retry"
546msgid "Failed, tap to retry"
547msgstr "Αποτυχία, πατήστε για να ξαναπροσπαθήσετε"
547msgstr "Αποτυχία, πατήστε για να ξαναπροσπαθήσετε"
548
548
@@ -562,7 +562,7 @@ msgctxt "Button: Call back on phone"
562msgid "Call back"
562msgid "Call back"
563msgstr "Επανάκληση"
563msgstr "Επανάκληση"
564
564
565−#: qml/Stages/SideStage.qml:76
565+#: qml/Stage/SideStage.qml:76
566msgid "Drag using 3 fingers any application from one window to the other"
566msgid "Drag using 3 fingers any application from one window to the other"
567msgstr ""
567msgstr ""
568"Σύρετε με την χρήση των 3 δακτύλων οποιαδήποτε εφαρμογή από ένα παράθυρο σε "
568"Σύρετε με την χρήση των 3 δακτύλων οποιαδήποτε εφαρμογή από ένα παράθυρο σε "
po/en_AU.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-03-27 10:09+0000\n"
11"PO-Revision-Date: 2016-03-27 10:09+0000\n"
12"Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
12"Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
13"Language-Team: English (Australia) <en_AU@li.org>\n"
13"Language-Team: English (Australia) <en_AU@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:55+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -481,62 +481,62 @@ msgstr "Tap to return to call..."
481msgid "Conference"
481msgid "Conference"
482msgstr "Conference"
482msgstr "Conference"
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:762
484+#: qml/Panel/Indicators/MenuItemFactory.qml:788
485msgid "Nothing is playing"
485msgid "Nothing is playing"
486msgstr "Nothing is playing"
486msgstr "Nothing is playing"
487
487
488−#: qml/Panel/Indicators/MenuItemFactory.qml:891
488+#: qml/Panel/Indicators/MenuItemFactory.qml:916
489#, qt-format
489#, qt-format
490msgid "%1 hour"
490msgid "%1 hour"
491msgid_plural "%1 hours"
491msgid_plural "%1 hours"
492msgstr[0] "%1 hour"
492msgstr[0] "%1 hour"
493msgstr[1] "%1 hours"
493msgstr[1] "%1 hours"
494
494
495−#: qml/Panel/Indicators/MenuItemFactory.qml:895
495+#: qml/Panel/Indicators/MenuItemFactory.qml:920
496#, qt-format
496#, qt-format
497msgid "%1 minute"
497msgid "%1 minute"
498msgid_plural "%1 minutes"
498msgid_plural "%1 minutes"
499msgstr[0] "%1 minute"
499msgstr[0] "%1 minute"
500msgstr[1] "%1 minutes"
500msgstr[1] "%1 minutes"
501
501
502−#: qml/Panel/Indicators/MenuItemFactory.qml:900
502+#: qml/Panel/Indicators/MenuItemFactory.qml:925
503#, qt-format
503#, qt-format
504msgid "%1 second"
504msgid "%1 second"
505msgid_plural "%1 seconds"
505msgid_plural "%1 seconds"
506msgstr[0] "%1 second"
506msgstr[0] "%1 second"
507msgstr[1] "%1 seconds"
507msgstr[1] "%1 seconds"
508
508
509−#: qml/Panel/Indicators/MenuItemFactory.qml:903
509+#: qml/Panel/Indicators/MenuItemFactory.qml:928
510msgid "0 seconds"
510msgid "0 seconds"
511msgstr "0 seconds"
511msgstr "0 seconds"
512
512
513#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
513#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
514−#: qml/Panel/Indicators/MenuItemFactory.qml:905
514+#: qml/Panel/Indicators/MenuItemFactory.qml:930
515#, qt-format
515#, qt-format
516msgid "%1 remaining"
516msgid "%1 remaining"
517msgstr "%1 remaining"
517msgstr "%1 remaining"
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:911
519+#: qml/Panel/Indicators/MenuItemFactory.qml:936
520msgid "In queue…"
520msgid "In queue…"
521msgstr "In queue…"
521msgstr "In queue…"
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:915
523+#: qml/Panel/Indicators/MenuItemFactory.qml:940
524msgid "Downloading"
524msgid "Downloading"
525msgstr "Downloading"
525msgstr "Downloading"
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:917
527+#: qml/Panel/Indicators/MenuItemFactory.qml:942
528msgid "Paused, tap to resume"
528msgid "Paused, tap to resume"
529msgstr "Paused, tap to resume"
529msgstr "Paused, tap to resume"
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:919
531+#: qml/Panel/Indicators/MenuItemFactory.qml:944
532msgid "Canceled"
532msgid "Canceled"
533msgstr "Cancelled"
533msgstr "Cancelled"
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:921
535+#: qml/Panel/Indicators/MenuItemFactory.qml:946
536msgid "Finished"
536msgid "Finished"
537msgstr "Finished"
537msgstr "Finished"
538
538
539−#: qml/Panel/Indicators/MenuItemFactory.qml:923
539+#: qml/Panel/Indicators/MenuItemFactory.qml:948
540msgid "Failed, tap to retry"
540msgid "Failed, tap to retry"
541msgstr "Failed, tap to retry"
541msgstr "Failed, tap to retry"
542
542
@@ -556,7 +556,7 @@ msgctxt "Button: Call back on phone"
556msgid "Call back"
556msgid "Call back"
557msgstr "Call back"
557msgstr "Call back"
558
558
559−#: qml/Stages/SideStage.qml:76
559+#: qml/Stage/SideStage.qml:76
560msgid "Drag using 3 fingers any application from one window to the other"
560msgid "Drag using 3 fingers any application from one window to the other"
561msgstr "Drag using 3 fingers any application from one window to the other"
561msgstr "Drag using 3 fingers any application from one window to the other"
562
562
po/en_GB.po+71−69
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-07-05 00:37+0000\n"
11"PO-Revision-Date: 2016-07-05 00:37+0000\n"
12"Last-Translator: Andi Chandler <Unknown>\n"
12"Last-Translator: Andi Chandler <Unknown>\n"
13"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
13"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:55+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -131,135 +131,135 @@ msgstr "Super + Space"
131
131
132#: qml/Components/KeyboardShortcutsOverlay.qml:93
132#: qml/Components/KeyboardShortcutsOverlay.qml:93
133msgid "Switches to next keyboard layout."
133msgid "Switches to next keyboard layout."
134−msgstr ""
134+msgstr "Switches to next keyboard layout."
135
135
136#: qml/Components/KeyboardShortcutsOverlay.qml:101
136#: qml/Components/KeyboardShortcutsOverlay.qml:101
137msgid "Super + Shift + Space"
137msgid "Super + Shift + Space"
138−msgstr ""
138+msgstr "Super + Shift + Space"
139
139
140#: qml/Components/KeyboardShortcutsOverlay.qml:106
140#: qml/Components/KeyboardShortcutsOverlay.qml:106
141msgid "Switches to previous keyboard layout."
141msgid "Switches to previous keyboard layout."
142−msgstr ""
142+msgstr "Switches to previous keyboard layout."
143
143
144#: qml/Components/KeyboardShortcutsOverlay.qml:118
144#: qml/Components/KeyboardShortcutsOverlay.qml:118
145msgid "Launcher"
145msgid "Launcher"
146−msgstr ""
146+msgstr "Launcher"
147
147
148#: qml/Components/KeyboardShortcutsOverlay.qml:125
148#: qml/Components/KeyboardShortcutsOverlay.qml:125
149msgid "Super (Hold)"
149msgid "Super (Hold)"
150−msgstr ""
150+msgstr "Super (Hold)"
151
151
152#: qml/Components/KeyboardShortcutsOverlay.qml:130
152#: qml/Components/KeyboardShortcutsOverlay.qml:130
153msgid "Opens the launcher, displays shortcuts."
153msgid "Opens the launcher, displays shortcuts."
154−msgstr ""
154+msgstr "Opens the launcher, displays shortcuts."
155
155
156#: qml/Components/KeyboardShortcutsOverlay.qml:138
156#: qml/Components/KeyboardShortcutsOverlay.qml:138
157msgid "Alt + F1"
157msgid "Alt + F1"
158−msgstr ""
158+msgstr "Alt + F1"
159
159
160#: qml/Components/KeyboardShortcutsOverlay.qml:143
160#: qml/Components/KeyboardShortcutsOverlay.qml:143
161msgid "Opens launcher keyboard navigation mode."
161msgid "Opens launcher keyboard navigation mode."
162−msgstr ""
162+msgstr "Opens launcher keyboard navigation mode."
163
163
164#: qml/Components/KeyboardShortcutsOverlay.qml:151
164#: qml/Components/KeyboardShortcutsOverlay.qml:151
165msgid "Super + Tab"
165msgid "Super + Tab"
166−msgstr ""
166+msgstr "Super + Tab"
167
167
168#: qml/Components/KeyboardShortcutsOverlay.qml:156
168#: qml/Components/KeyboardShortcutsOverlay.qml:156
169msgid "Switches applications via the launcher."
169msgid "Switches applications via the launcher."
170−msgstr ""
170+msgstr "Switches applications via the launcher."
171
171
172#: qml/Components/KeyboardShortcutsOverlay.qml:164
172#: qml/Components/KeyboardShortcutsOverlay.qml:164
173msgid "Super + 0 to 9"
173msgid "Super + 0 to 9"
174−msgstr ""
174+msgstr "Super + 0 to 9"
175
175
176#: qml/Components/KeyboardShortcutsOverlay.qml:169
176#: qml/Components/KeyboardShortcutsOverlay.qml:169
177msgid "Same as clicking on a launcher icon."
177msgid "Same as clicking on a launcher icon."
178−msgstr ""
178+msgstr "Same as clicking on a launcher icon."
179
179
180#: qml/Components/KeyboardShortcutsOverlay.qml:181
180#: qml/Components/KeyboardShortcutsOverlay.qml:181
181msgid "Scopes"
181msgid "Scopes"
182−msgstr ""
182+msgstr "Scopes"
183
183
184#: qml/Components/KeyboardShortcutsOverlay.qml:188
184#: qml/Components/KeyboardShortcutsOverlay.qml:188
185msgid "Super (Tap)"
185msgid "Super (Tap)"
186−msgstr ""
186+msgstr "Super (Tap)"
187
187
188#: qml/Components/KeyboardShortcutsOverlay.qml:193
188#: qml/Components/KeyboardShortcutsOverlay.qml:193
189msgid "Opens the Scopes home."
189msgid "Opens the Scopes home."
190−msgstr ""
190+msgstr "Opens the Scopes' home."
191
191
192#: qml/Components/KeyboardShortcutsOverlay.qml:209
192#: qml/Components/KeyboardShortcutsOverlay.qml:209
193msgid "Switching"
193msgid "Switching"
194−msgstr ""
194+msgstr "Switching"
195
195
196#: qml/Components/KeyboardShortcutsOverlay.qml:216
196#: qml/Components/KeyboardShortcutsOverlay.qml:216
197msgid "Alt + Tab"
197msgid "Alt + Tab"
198−msgstr ""
198+msgstr "Alt + Tab"
199
199
200#: qml/Components/KeyboardShortcutsOverlay.qml:221
200#: qml/Components/KeyboardShortcutsOverlay.qml:221
201msgid "Switches between applications."
201msgid "Switches between applications."
202−msgstr ""
202+msgstr "Switches between applications."
203
203
204#: qml/Components/KeyboardShortcutsOverlay.qml:229
204#: qml/Components/KeyboardShortcutsOverlay.qml:229
205msgid "Super + W"
205msgid "Super + W"
206−msgstr ""
206+msgstr "Super + W"
207
207
208#: qml/Components/KeyboardShortcutsOverlay.qml:234
208#: qml/Components/KeyboardShortcutsOverlay.qml:234
209msgid "Opens the desktop spread."
209msgid "Opens the desktop spread."
210−msgstr ""
210+msgstr "Opens the desktop spread."
211
211
212#: qml/Components/KeyboardShortcutsOverlay.qml:242
212#: qml/Components/KeyboardShortcutsOverlay.qml:242
213msgid "Cursor Left or Right"
213msgid "Cursor Left or Right"
214−msgstr ""
214+msgstr "Cursor Left or Right"
215
215
216#: qml/Components/KeyboardShortcutsOverlay.qml:247
216#: qml/Components/KeyboardShortcutsOverlay.qml:247
217msgid "Moves the focus."
217msgid "Moves the focus."
218−msgstr ""
218+msgstr "Moves the focus."
219
219
220#: qml/Components/KeyboardShortcutsOverlay.qml:259
220#: qml/Components/KeyboardShortcutsOverlay.qml:259
221msgid "Windows"
221msgid "Windows"
222−msgstr ""
222+msgstr "Windows"
223
223
224#: qml/Components/KeyboardShortcutsOverlay.qml:266
224#: qml/Components/KeyboardShortcutsOverlay.qml:266
225msgid "Ctrl + Super + D"
225msgid "Ctrl + Super + D"
226−msgstr ""
226+msgstr "Ctrl + Super + D"
227
227
228#: qml/Components/KeyboardShortcutsOverlay.qml:271
228#: qml/Components/KeyboardShortcutsOverlay.qml:271
229msgid "Minimizes all windows."
229msgid "Minimizes all windows."
230−msgstr ""
230+msgstr "Minimises all windows."
231
231
232#: qml/Components/KeyboardShortcutsOverlay.qml:279
232#: qml/Components/KeyboardShortcutsOverlay.qml:279
233msgid "Ctrl + Super + Up"
233msgid "Ctrl + Super + Up"
234−msgstr ""
234+msgstr "Ctrl + Super + Up"
235
235
236#: qml/Components/KeyboardShortcutsOverlay.qml:284
236#: qml/Components/KeyboardShortcutsOverlay.qml:284
237msgid "Maximizes the current window."
237msgid "Maximizes the current window."
238−msgstr ""
238+msgstr "Maximises the current window."
239
239
240#: qml/Components/KeyboardShortcutsOverlay.qml:292
240#: qml/Components/KeyboardShortcutsOverlay.qml:292
241msgid "Ctrl + Super + Down"
241msgid "Ctrl + Super + Down"
242−msgstr ""
242+msgstr "Ctrl + Super + Down"
243
243
244#: qml/Components/KeyboardShortcutsOverlay.qml:297
244#: qml/Components/KeyboardShortcutsOverlay.qml:297
245msgid "Minimizes or restores the current window."
245msgid "Minimizes or restores the current window."
246−msgstr ""
246+msgstr "Minimises or restores the current window."
247
247
248#: qml/Components/KeyboardShortcutsOverlay.qml:305
248#: qml/Components/KeyboardShortcutsOverlay.qml:305
249msgid "Ctrl + Super + Left or Right"
249msgid "Ctrl + Super + Left or Right"
250−msgstr ""
250+msgstr "Ctrl + Super + Left or Right"
251
251
252#: qml/Components/KeyboardShortcutsOverlay.qml:310
252#: qml/Components/KeyboardShortcutsOverlay.qml:310
253msgid "Semi-maximizes the current window."
253msgid "Semi-maximizes the current window."
254−msgstr ""
254+msgstr "Semi-maximises the current window."
255
255
256#: qml/Components/KeyboardShortcutsOverlay.qml:318
256#: qml/Components/KeyboardShortcutsOverlay.qml:318
257msgid "Alt + F4"
257msgid "Alt + F4"
258−msgstr ""
258+msgstr "Alt + F4"
259
259
260#: qml/Components/KeyboardShortcutsOverlay.qml:323
260#: qml/Components/KeyboardShortcutsOverlay.qml:323
261msgid "Closes the current window."
261msgid "Closes the current window."
262−msgstr ""
262+msgstr "Closes the current window."
263
263
264#: qml/Components/Lockscreen.qml:212 qml/Greeter/NarrowView.qml:252
264#: qml/Components/Lockscreen.qml:212 qml/Greeter/NarrowView.qml:252
265msgid "Return to Call"
265msgid "Return to Call"
@@ -276,12 +276,12 @@ msgstr "OK"
276#: qml/Components/MediaServices/VideoPlayerControls.qml:44
276#: qml/Components/MediaServices/VideoPlayerControls.qml:44
277#, qt-format
277#, qt-format
278msgid "%1:%2:%3"
278msgid "%1:%2:%3"
279−msgstr ""
279+msgstr "%1:%2:%3"
280
280
281#: qml/Components/MediaServices/VideoPlayerControls.qml:49
281#: qml/Components/MediaServices/VideoPlayerControls.qml:49
282#, qt-format
282#, qt-format
283msgid "%1:%2"
283msgid "%1:%2"
284−msgstr ""
284+msgstr "%1:%2"
285
285
286#: qml/Components/ModeSwitchWarningDialog.qml:32
286#: qml/Components/ModeSwitchWarningDialog.qml:32
287msgid "Apps may have unsaved data:"
287msgid "Apps may have unsaved data:"
@@ -443,15 +443,15 @@ msgstr[1] "Please wait %1 minutes and then try again…"
443
443
444#: qml/Greeter/Greeter.qml:596
444#: qml/Greeter/Greeter.qml:596
445msgid "Try again"
445msgid "Try again"
446−msgstr ""
446+msgstr "Try again"
447
447
448#: qml/Greeter/LoginList.qml:70
448#: qml/Greeter/LoginList.qml:70
449msgid "Passphrase"
449msgid "Passphrase"
450−msgstr ""
450+msgstr "Passphrase"
451
451
452#: qml/Greeter/LoginList.qml:71
452#: qml/Greeter/LoginList.qml:71
453msgid "Passcode"
453msgid "Passcode"
454−msgstr ""
454+msgstr "Passcode"
455
455
456#: qml/Greeter/LoginList.qml:98
456#: qml/Greeter/LoginList.qml:98
457msgid "Retry"
457msgid "Retry"
@@ -459,15 +459,15 @@ msgstr "Retry"
459
459
460#: qml/Greeter/LoginList.qml:99
460#: qml/Greeter/LoginList.qml:99
461msgid "Log In"
461msgid "Log In"
462−msgstr ""
462+msgstr "Log In"
463
463
464#: qml/Greeter/NarrowView.qml:252
464#: qml/Greeter/NarrowView.qml:252
465msgid "Emergency"
465msgid "Emergency"
466−msgstr ""
466+msgstr "Emergency"
467
467
468#: qml/Greeter/SessionsList.qml:122
468#: qml/Greeter/SessionsList.qml:122
469msgid "Select desktop environment"
469msgid "Select desktop environment"
470−msgstr ""
470+msgstr "Select desktop environment"
471
471
472#: qml/Notifications/NotificationMenuItemFactory.qml:124
472#: qml/Notifications/NotificationMenuItemFactory.qml:124
473msgid "Show password"
473msgid "Show password"
@@ -481,62 +481,62 @@ msgstr "Tap to return to call..."
481msgid "Conference"
481msgid "Conference"
482msgstr "Conference"
482msgstr "Conference"
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:762
484+#: qml/Panel/Indicators/MenuItemFactory.qml:788
485msgid "Nothing is playing"
485msgid "Nothing is playing"
486msgstr "Nothing is playing"
486msgstr "Nothing is playing"
487
487
488−#: qml/Panel/Indicators/MenuItemFactory.qml:891
488+#: qml/Panel/Indicators/MenuItemFactory.qml:916
489#, qt-format
489#, qt-format
490msgid "%1 hour"
490msgid "%1 hour"
491msgid_plural "%1 hours"
491msgid_plural "%1 hours"
492msgstr[0] "%1 hour"
492msgstr[0] "%1 hour"
493msgstr[1] "%1 hours"
493msgstr[1] "%1 hours"
494
494
495−#: qml/Panel/Indicators/MenuItemFactory.qml:895
495+#: qml/Panel/Indicators/MenuItemFactory.qml:920
496#, qt-format
496#, qt-format
497msgid "%1 minute"
497msgid "%1 minute"
498msgid_plural "%1 minutes"
498msgid_plural "%1 minutes"
499msgstr[0] "%1 minute"
499msgstr[0] "%1 minute"
500msgstr[1] "%1 minutes"
500msgstr[1] "%1 minutes"
501
501
502−#: qml/Panel/Indicators/MenuItemFactory.qml:900
502+#: qml/Panel/Indicators/MenuItemFactory.qml:925
503#, qt-format
503#, qt-format
504msgid "%1 second"
504msgid "%1 second"
505msgid_plural "%1 seconds"
505msgid_plural "%1 seconds"
506msgstr[0] "%1 second"
506msgstr[0] "%1 second"
507msgstr[1] "%1 seconds"
507msgstr[1] "%1 seconds"
508
508
509−#: qml/Panel/Indicators/MenuItemFactory.qml:903
509+#: qml/Panel/Indicators/MenuItemFactory.qml:928
510msgid "0 seconds"
510msgid "0 seconds"
511msgstr "0 seconds"
511msgstr "0 seconds"
512
512
513#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
513#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
514−#: qml/Panel/Indicators/MenuItemFactory.qml:905
514+#: qml/Panel/Indicators/MenuItemFactory.qml:930
515#, qt-format
515#, qt-format
516msgid "%1 remaining"
516msgid "%1 remaining"
517msgstr "%1 remaining"
517msgstr "%1 remaining"
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:911
519+#: qml/Panel/Indicators/MenuItemFactory.qml:936
520msgid "In queue…"
520msgid "In queue…"
521msgstr "In queue…"
521msgstr "In queue…"
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:915
523+#: qml/Panel/Indicators/MenuItemFactory.qml:940
524msgid "Downloading"
524msgid "Downloading"
525msgstr "Downloading"
525msgstr "Downloading"
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:917
527+#: qml/Panel/Indicators/MenuItemFactory.qml:942
528msgid "Paused, tap to resume"
528msgid "Paused, tap to resume"
529msgstr "Paused, tap to resume"
529msgstr "Paused, tap to resume"
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:919
531+#: qml/Panel/Indicators/MenuItemFactory.qml:944
532msgid "Canceled"
532msgid "Canceled"
533msgstr "Cancelled"
533msgstr "Cancelled"
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:921
535+#: qml/Panel/Indicators/MenuItemFactory.qml:946
536msgid "Finished"
536msgid "Finished"
537msgstr "Finished"
537msgstr "Finished"
538
538
539−#: qml/Panel/Indicators/MenuItemFactory.qml:923
539+#: qml/Panel/Indicators/MenuItemFactory.qml:948
540msgid "Failed, tap to retry"
540msgid "Failed, tap to retry"
541msgstr "Failed, tap to retry"
541msgstr "Failed, tap to retry"
542
542
@@ -556,7 +556,7 @@ msgctxt "Button: Call back on phone"
556msgid "Call back"
556msgid "Call back"
557msgstr "Call back"
557msgstr "Call back"
558
558
559−#: qml/Stages/SideStage.qml:76
559+#: qml/Stage/SideStage.qml:76
560msgid "Drag using 3 fingers any application from one window to the other"
560msgid "Drag using 3 fingers any application from one window to the other"
561msgstr "Drag using 3 fingers any application from one window to the other"
561msgstr "Drag using 3 fingers any application from one window to the other"
562
562
@@ -566,7 +566,7 @@ msgstr "Long swipe from the left edge to open the Today scope"
566
566
567#: qml/Tutorial/TutorialLeft.qml:47
567#: qml/Tutorial/TutorialLeft.qml:47
568msgid "Short swipe from the left edge to open the launcher"
568msgid "Short swipe from the left edge to open the launcher"
569−msgstr ""
569+msgstr "Short swipe from the left edge to open the launcher"
570
570
571#: qml/Tutorial/TutorialRight.qml:55
571#: qml/Tutorial/TutorialRight.qml:55
572msgid "Push your mouse against the right edge to view your open apps"
572msgid "Push your mouse against the right edge to view your open apps"
@@ -574,11 +574,11 @@ msgstr "Push your mouse against the right edge to view your open apps"
574
574
575#: qml/Tutorial/TutorialRight.qml:56
575#: qml/Tutorial/TutorialRight.qml:56
576msgid "Swipe from the right edge to view your open apps"
576msgid "Swipe from the right edge to view your open apps"
577−msgstr ""
577+msgstr "Swipe from the right edge to view your open apps"
578
578
579#: qml/Tutorial/TutorialTop.qml:53
579#: qml/Tutorial/TutorialTop.qml:53
580msgid "Swipe from the top edge to access notifications and quick settings"
580msgid "Swipe from the top edge to access notifications and quick settings"
581−msgstr ""
581+msgstr "Swipe from the top edge to access notifications and quick settings"
582
582
583#: qml/Wizard/Page.qml:54
583#: qml/Wizard/Page.qml:54
584msgctxt "Button: Go back one page in the Wizard"
584msgctxt "Button: Go back one page in the Wizard"
@@ -601,15 +601,15 @@ msgstr "Next"
601
601
602#: qml/Wizard/Pages/20-keyboard.qml:31
602#: qml/Wizard/Pages/20-keyboard.qml:31
603msgid "Select Keyboard"
603msgid "Select Keyboard"
604−msgstr ""
604+msgstr "Select Keyboard"
605
605
606#: qml/Wizard/Pages/20-keyboard.qml:71
606#: qml/Wizard/Pages/20-keyboard.qml:71
607msgid "Keyboard language"
607msgid "Keyboard language"
608−msgstr ""
608+msgstr "Keyboard language"
609
609
610#: qml/Wizard/Pages/20-keyboard.qml:93
610#: qml/Wizard/Pages/20-keyboard.qml:93
611msgid "Keyboard layout"
611msgid "Keyboard layout"
612−msgstr ""
612+msgstr "Keyboard layout"
613
613
614#: qml/Wizard/Pages/20-keyboard.qml:152 qml/Wizard/Pages/30-wifi.qml:207
614#: qml/Wizard/Pages/20-keyboard.qml:152 qml/Wizard/Pages/30-wifi.qml:207
615#: qml/Wizard/Pages/60-account.qml:65 qml/Wizard/Pages/77-system-update.qml:152
615#: qml/Wizard/Pages/60-account.qml:65 qml/Wizard/Pages/77-system-update.qml:152
@@ -720,32 +720,34 @@ msgstr "Privacy policy"
720
720
721#: qml/Wizard/Pages/77-system-update.qml:28
721#: qml/Wizard/Pages/77-system-update.qml:28
722msgid "Update Device"
722msgid "Update Device"
723−msgstr ""
723+msgstr "Update Device"
724
724
725#: qml/Wizard/Pages/77-system-update.qml:55
725#: qml/Wizard/Pages/77-system-update.qml:55
726msgid ""
726msgid ""
727"There is a system update available and ready to install. Afterwards, the "
727"There is a system update available and ready to install. Afterwards, the "
728"device will automatically restart."
728"device will automatically restart."
729msgstr ""
729msgstr ""
730+"There is a system update available and ready to install. Afterwards, the "
731+"device will automatically restart."
730
732
731#: qml/Wizard/Pages/77-system-update.qml:76
733#: qml/Wizard/Pages/77-system-update.qml:76
732msgctxt "string identifying name of the update"
734msgctxt "string identifying name of the update"
733msgid "Ubuntu system"
735msgid "Ubuntu system"
734−msgstr ""
736+msgstr "Ubuntu system"
735
737
736#: qml/Wizard/Pages/77-system-update.qml:83
738#: qml/Wizard/Pages/77-system-update.qml:83
737#, qt-format
739#, qt-format
738msgctxt "version of the system update"
740msgctxt "version of the system update"
739msgid "Version %1"
741msgid "Version %1"
740−msgstr ""
742+msgstr "Version %1"
741
743
742#: qml/Wizard/Pages/77-system-update.qml:102
744#: qml/Wizard/Pages/77-system-update.qml:102
743msgid "This could take a few minutes..."
745msgid "This could take a few minutes..."
744−msgstr ""
746+msgstr "This could take a few minutes..."
745
747
746#: qml/Wizard/Pages/77-system-update.qml:116
748#: qml/Wizard/Pages/77-system-update.qml:116
747msgid "Install and restart now"
749msgid "Install and restart now"
748−msgstr ""
750+msgstr "Install and restart now"
749
751
750#: qml/Wizard/Pages/80-finished.qml:89
752#: qml/Wizard/Pages/80-finished.qml:89
751msgid "Welcome to Ubuntu"
753msgid "Welcome to Ubuntu"
@@ -879,7 +881,7 @@ msgstr "To proceed with no SIM tap Skip."
879
881
880#: qml/Wizard/PasswordMeter.qml:87
882#: qml/Wizard/PasswordMeter.qml:87
881msgid "Password too short"
883msgid "Password too short"
882−msgstr ""
884+msgstr "Password too short"
883
885
884#: qml/Wizard/PasswordMeter.qml:89
886#: qml/Wizard/PasswordMeter.qml:89
885msgid "Passwords match"
887msgid "Passwords match"
po/eo.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2015-06-06 23:37+0000\n"
11"PO-Revision-Date: 2015-06-06 23:37+0000\n"
12"Last-Translator: Eliovir <Unknown>\n"
12"Last-Translator: Eliovir <Unknown>\n"
13"Language-Team: Esperanto <eo@li.org>\n"
13"Language-Team: Esperanto <eo@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:03+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:53+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -477,62 +477,62 @@ msgstr ""
477msgid "Conference"
477msgid "Conference"
478msgstr ""
478msgstr ""
479
479
480−#: qml/Panel/Indicators/MenuItemFactory.qml:762
480+#: qml/Panel/Indicators/MenuItemFactory.qml:788
481msgid "Nothing is playing"
481msgid "Nothing is playing"
482msgstr ""
482msgstr ""
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:891
484+#: qml/Panel/Indicators/MenuItemFactory.qml:916
485#, qt-format
485#, qt-format
486msgid "%1 hour"
486msgid "%1 hour"
487msgid_plural "%1 hours"
487msgid_plural "%1 hours"
488msgstr[0] "%1 horo"
488msgstr[0] "%1 horo"
489msgstr[1] "%1 horoj"
489msgstr[1] "%1 horoj"
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:895
491+#: qml/Panel/Indicators/MenuItemFactory.qml:920
492#, qt-format
492#, qt-format
493msgid "%1 minute"
493msgid "%1 minute"
494msgid_plural "%1 minutes"
494msgid_plural "%1 minutes"
495msgstr[0] "%1 minuto"
495msgstr[0] "%1 minuto"
496msgstr[1] "%1 minutoj"
496msgstr[1] "%1 minutoj"
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:900
498+#: qml/Panel/Indicators/MenuItemFactory.qml:925
499#, qt-format
499#, qt-format
500msgid "%1 second"
500msgid "%1 second"
501msgid_plural "%1 seconds"
501msgid_plural "%1 seconds"
502msgstr[0] "%1 sekundo"
502msgstr[0] "%1 sekundo"
503msgstr[1] "%1 sekundoj"
503msgstr[1] "%1 sekundoj"
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:903
505+#: qml/Panel/Indicators/MenuItemFactory.qml:928
506msgid "0 seconds"
506msgid "0 seconds"
507msgstr "0 sekundoj"
507msgstr "0 sekundoj"
508
508
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
510−#: qml/Panel/Indicators/MenuItemFactory.qml:905
510+#: qml/Panel/Indicators/MenuItemFactory.qml:930
511#, qt-format
511#, qt-format
512msgid "%1 remaining"
512msgid "%1 remaining"
513msgstr "%1 restas"
513msgstr "%1 restas"
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:911
515+#: qml/Panel/Indicators/MenuItemFactory.qml:936
516msgid "In queue…"
516msgid "In queue…"
517msgstr ""
517msgstr ""
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:915
519+#: qml/Panel/Indicators/MenuItemFactory.qml:940
520msgid "Downloading"
520msgid "Downloading"
521msgstr ""
521msgstr ""
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:917
523+#: qml/Panel/Indicators/MenuItemFactory.qml:942
524msgid "Paused, tap to resume"
524msgid "Paused, tap to resume"
525msgstr ""
525msgstr ""
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:919
527+#: qml/Panel/Indicators/MenuItemFactory.qml:944
528msgid "Canceled"
528msgid "Canceled"
529msgstr "Nuligita"
529msgstr "Nuligita"
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:921
531+#: qml/Panel/Indicators/MenuItemFactory.qml:946
532msgid "Finished"
532msgid "Finished"
533msgstr "Finita"
533msgstr "Finita"
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:923
535+#: qml/Panel/Indicators/MenuItemFactory.qml:948
536msgid "Failed, tap to retry"
536msgid "Failed, tap to retry"
537msgstr ""
537msgstr ""
538
538
@@ -552,7 +552,7 @@ msgctxt "Button: Call back on phone"
552msgid "Call back"
552msgid "Call back"
553msgstr ""
553msgstr ""
554
554
555−#: qml/Stages/SideStage.qml:76
555+#: qml/Stage/SideStage.qml:76
556msgid "Drag using 3 fingers any application from one window to the other"
556msgid "Drag using 3 fingers any application from one window to the other"
557msgstr ""
557msgstr ""
558
558
po/es.po+18−18
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-03-25 12:02+0000\n"
11"PO-Revision-Date: 2016-03-25 12:02+0000\n"
12"Last-Translator: Adolfo Jayme <fitoschido@gmail.com>\n"
12"Last-Translator: Adolfo Jayme <fitoschido@gmail.com>\n"
13"Language-Team: Spanish <es@li.org>\n"
13"Language-Team: Spanish <es@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -468,11 +468,11 @@ msgstr "Iniciar sesión"
468
468
469#: qml/Greeter/NarrowView.qml:252
469#: qml/Greeter/NarrowView.qml:252
470msgid "Emergency"
470msgid "Emergency"
471−msgstr ""
471+msgstr "Emergencia"
472
472
473#: qml/Greeter/SessionsList.qml:122
473#: qml/Greeter/SessionsList.qml:122
474msgid "Select desktop environment"
474msgid "Select desktop environment"
475−msgstr ""
475+msgstr "Seleccionar entorno de escritorio"
476
476
477#: qml/Notifications/NotificationMenuItemFactory.qml:124
477#: qml/Notifications/NotificationMenuItemFactory.qml:124
478msgid "Show password"
478msgid "Show password"
@@ -486,62 +486,62 @@ msgstr "Toque para volver a la llamada…"
486msgid "Conference"
486msgid "Conference"
487msgstr "Conferencia"
487msgstr "Conferencia"
488
488
489−#: qml/Panel/Indicators/MenuItemFactory.qml:762
489+#: qml/Panel/Indicators/MenuItemFactory.qml:788
490msgid "Nothing is playing"
490msgid "Nothing is playing"
491msgstr "Ningún contenido en reproducción"
491msgstr "Ningún contenido en reproducción"
492
492
493−#: qml/Panel/Indicators/MenuItemFactory.qml:891
493+#: qml/Panel/Indicators/MenuItemFactory.qml:916
494#, qt-format
494#, qt-format
495msgid "%1 hour"
495msgid "%1 hour"
496msgid_plural "%1 hours"
496msgid_plural "%1 hours"
497msgstr[0] "%1 hora"
497msgstr[0] "%1 hora"
498msgstr[1] "%1 horas"
498msgstr[1] "%1 horas"
499
499
500−#: qml/Panel/Indicators/MenuItemFactory.qml:895
500+#: qml/Panel/Indicators/MenuItemFactory.qml:920
501#, qt-format
501#, qt-format
502msgid "%1 minute"
502msgid "%1 minute"
503msgid_plural "%1 minutes"
503msgid_plural "%1 minutes"
504msgstr[0] "%1 minuto"
504msgstr[0] "%1 minuto"
505msgstr[1] "%1 minutos"
505msgstr[1] "%1 minutos"
506
506
507−#: qml/Panel/Indicators/MenuItemFactory.qml:900
507+#: qml/Panel/Indicators/MenuItemFactory.qml:925
508#, qt-format
508#, qt-format
509msgid "%1 second"
509msgid "%1 second"
510msgid_plural "%1 seconds"
510msgid_plural "%1 seconds"
511msgstr[0] "%1 segundo"
511msgstr[0] "%1 segundo"
512msgstr[1] "%1 segundos"
512msgstr[1] "%1 segundos"
513
513
514−#: qml/Panel/Indicators/MenuItemFactory.qml:903
514+#: qml/Panel/Indicators/MenuItemFactory.qml:928
515msgid "0 seconds"
515msgid "0 seconds"
516msgstr "0 segundos"
516msgstr "0 segundos"
517
517
518#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
518#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
519−#: qml/Panel/Indicators/MenuItemFactory.qml:905
519+#: qml/Panel/Indicators/MenuItemFactory.qml:930
520#, qt-format
520#, qt-format
521msgid "%1 remaining"
521msgid "%1 remaining"
522msgstr "%1 restante(s)"
522msgstr "%1 restante(s)"
523
523
524−#: qml/Panel/Indicators/MenuItemFactory.qml:911
524+#: qml/Panel/Indicators/MenuItemFactory.qml:936
525msgid "In queue…"
525msgid "In queue…"
526msgstr "En espera…"
526msgstr "En espera…"
527
527
528−#: qml/Panel/Indicators/MenuItemFactory.qml:915
528+#: qml/Panel/Indicators/MenuItemFactory.qml:940
529msgid "Downloading"
529msgid "Downloading"
530msgstr "Descargando"
530msgstr "Descargando"
531
531
532−#: qml/Panel/Indicators/MenuItemFactory.qml:917
532+#: qml/Panel/Indicators/MenuItemFactory.qml:942
533msgid "Paused, tap to resume"
533msgid "Paused, tap to resume"
534msgstr "Pausado, toque para reanudar"
534msgstr "Pausado, toque para reanudar"
535
535
536−#: qml/Panel/Indicators/MenuItemFactory.qml:919
536+#: qml/Panel/Indicators/MenuItemFactory.qml:944
537msgid "Canceled"
537msgid "Canceled"
538msgstr "Cancelado"
538msgstr "Cancelado"
539
539
540−#: qml/Panel/Indicators/MenuItemFactory.qml:921
540+#: qml/Panel/Indicators/MenuItemFactory.qml:946
541msgid "Finished"
541msgid "Finished"
542msgstr "Finalizado"
542msgstr "Finalizado"
543
543
544−#: qml/Panel/Indicators/MenuItemFactory.qml:923
544+#: qml/Panel/Indicators/MenuItemFactory.qml:948
545msgid "Failed, tap to retry"
545msgid "Failed, tap to retry"
546msgstr "Falló, toque para reintentar"
546msgstr "Falló, toque para reintentar"
547
547
@@ -561,7 +561,7 @@ msgctxt "Button: Call back on phone"
561msgid "Call back"
561msgid "Call back"
562msgstr "Devolver llamada"
562msgstr "Devolver llamada"
563
563
564−#: qml/Stages/SideStage.qml:76
564+#: qml/Stage/SideStage.qml:76
565msgid "Drag using 3 fingers any application from one window to the other"
565msgid "Drag using 3 fingers any application from one window to the other"
566msgstr ""
566msgstr ""
567"Arrastrar con tres dedos cualquier aplicación desde una ventana a la otra"
567"Arrastrar con tres dedos cualquier aplicación desde una ventana a la otra"
po/eu.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2015-07-13 23:29+0000\n"
11"PO-Revision-Date: 2015-07-13 23:29+0000\n"
12"Last-Translator: Ibai Oihanguren Sala <Unknown>\n"
12"Last-Translator: Ibai Oihanguren Sala <Unknown>\n"
13"Language-Team: Basque <eu@li.org>\n"
13"Language-Team: Basque <eu@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:03+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:53+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -480,62 +480,62 @@ msgstr "Sakatu deira itzultzeko..."
480msgid "Conference"
480msgid "Conference"
481msgstr "Konferentzia"
481msgstr "Konferentzia"
482
482
483−#: qml/Panel/Indicators/MenuItemFactory.qml:762
483+#: qml/Panel/Indicators/MenuItemFactory.qml:788
484msgid "Nothing is playing"
484msgid "Nothing is playing"
485msgstr "Ez dago ezer erreproduzitzen"
485msgstr "Ez dago ezer erreproduzitzen"
486
486
487−#: qml/Panel/Indicators/MenuItemFactory.qml:891
487+#: qml/Panel/Indicators/MenuItemFactory.qml:916
488#, qt-format
488#, qt-format
489msgid "%1 hour"
489msgid "%1 hour"
490msgid_plural "%1 hours"
490msgid_plural "%1 hours"
491msgstr[0] "ordu %1"
491msgstr[0] "ordu %1"
492msgstr[1] "%1 ordu"
492msgstr[1] "%1 ordu"
493
493
494−#: qml/Panel/Indicators/MenuItemFactory.qml:895
494+#: qml/Panel/Indicators/MenuItemFactory.qml:920
495#, qt-format
495#, qt-format
496msgid "%1 minute"
496msgid "%1 minute"
497msgid_plural "%1 minutes"
497msgid_plural "%1 minutes"
498msgstr[0] "minutu %1"
498msgstr[0] "minutu %1"
499msgstr[1] "%1 minutu"
499msgstr[1] "%1 minutu"
500
500
501−#: qml/Panel/Indicators/MenuItemFactory.qml:900
501+#: qml/Panel/Indicators/MenuItemFactory.qml:925
502#, qt-format
502#, qt-format
503msgid "%1 second"
503msgid "%1 second"
504msgid_plural "%1 seconds"
504msgid_plural "%1 seconds"
505msgstr[0] "segundo %1"
505msgstr[0] "segundo %1"
506msgstr[1] "%1 segundo"
506msgstr[1] "%1 segundo"
507
507
508−#: qml/Panel/Indicators/MenuItemFactory.qml:903
508+#: qml/Panel/Indicators/MenuItemFactory.qml:928
509msgid "0 seconds"
509msgid "0 seconds"
510msgstr "0 segundo"
510msgstr "0 segundo"
511
511
512#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
512#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
513−#: qml/Panel/Indicators/MenuItemFactory.qml:905
513+#: qml/Panel/Indicators/MenuItemFactory.qml:930
514#, qt-format
514#, qt-format
515msgid "%1 remaining"
515msgid "%1 remaining"
516msgstr "%1 faltan"
516msgstr "%1 faltan"
517
517
518−#: qml/Panel/Indicators/MenuItemFactory.qml:911
518+#: qml/Panel/Indicators/MenuItemFactory.qml:936
519msgid "In queue…"
519msgid "In queue…"
520msgstr "Ilaran..."
520msgstr "Ilaran..."
521
521
522−#: qml/Panel/Indicators/MenuItemFactory.qml:915
522+#: qml/Panel/Indicators/MenuItemFactory.qml:940
523msgid "Downloading"
523msgid "Downloading"
524msgstr "Deskargatzen"
524msgstr "Deskargatzen"
525
525
526−#: qml/Panel/Indicators/MenuItemFactory.qml:917
526+#: qml/Panel/Indicators/MenuItemFactory.qml:942
527msgid "Paused, tap to resume"
527msgid "Paused, tap to resume"
528msgstr "Pausatuta, sakatu jarraitzeko"
528msgstr "Pausatuta, sakatu jarraitzeko"
529
529
530−#: qml/Panel/Indicators/MenuItemFactory.qml:919
530+#: qml/Panel/Indicators/MenuItemFactory.qml:944
531msgid "Canceled"
531msgid "Canceled"
532msgstr "Utzita"
532msgstr "Utzita"
533
533
534−#: qml/Panel/Indicators/MenuItemFactory.qml:921
534+#: qml/Panel/Indicators/MenuItemFactory.qml:946
535msgid "Finished"
535msgid "Finished"
536msgstr "Amaituta"
536msgstr "Amaituta"
537
537
538−#: qml/Panel/Indicators/MenuItemFactory.qml:923
538+#: qml/Panel/Indicators/MenuItemFactory.qml:948
539msgid "Failed, tap to retry"
539msgid "Failed, tap to retry"
540msgstr "Huts egin du, sakatu berriro saiatzeko"
540msgstr "Huts egin du, sakatu berriro saiatzeko"
541
541
@@ -555,7 +555,7 @@ msgctxt "Button: Call back on phone"
555msgid "Call back"
555msgid "Call back"
556msgstr ""
556msgstr ""
557
557
558−#: qml/Stages/SideStage.qml:76
558+#: qml/Stage/SideStage.qml:76
559msgid "Drag using 3 fingers any application from one window to the other"
559msgid "Drag using 3 fingers any application from one window to the other"
560msgstr ""
560msgstr ""
561
561
po/fa.po+31−29
@@ -7,16 +7,16 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11−"PO-Revision-Date: 2016-07-09 07:27+0000\n"
11+"PO-Revision-Date: 2016-10-18 07:03+0000\n"
12"Last-Translator: Danial Behzadi <dani.behzi@gmail.com>\n"
12"Last-Translator: Danial Behzadi <dani.behzi@gmail.com>\n"
13"Language-Team: Persian <fa@li.org>\n"
13"Language-Team: Persian <fa@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:04+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -448,11 +448,11 @@ msgstr "تلاش دوباره"
448
448
449#: qml/Greeter/LoginList.qml:70
449#: qml/Greeter/LoginList.qml:70
450msgid "Passphrase"
450msgid "Passphrase"
451−msgstr ""
451+msgstr "عبارت‌عبور"
452
452
453#: qml/Greeter/LoginList.qml:71
453#: qml/Greeter/LoginList.qml:71
454msgid "Passcode"
454msgid "Passcode"
455−msgstr ""
455+msgstr "رمزعبور"
456
456
457#: qml/Greeter/LoginList.qml:98
457#: qml/Greeter/LoginList.qml:98
458msgid "Retry"
458msgid "Retry"
@@ -464,11 +464,11 @@ msgstr "ورود"
464
464
465#: qml/Greeter/NarrowView.qml:252
465#: qml/Greeter/NarrowView.qml:252
466msgid "Emergency"
466msgid "Emergency"
467−msgstr ""
467+msgstr "اضطراری"
468
468
469#: qml/Greeter/SessionsList.qml:122
469#: qml/Greeter/SessionsList.qml:122
470msgid "Select desktop environment"
470msgid "Select desktop environment"
471−msgstr ""
471+msgstr "گزینش محیط میزکار"
472
472
473#: qml/Notifications/NotificationMenuItemFactory.qml:124
473#: qml/Notifications/NotificationMenuItemFactory.qml:124
474msgid "Show password"
474msgid "Show password"
@@ -482,59 +482,59 @@ msgstr "برای بازگشت به تماس ضربه بزنید…"
482msgid "Conference"
482msgid "Conference"
483msgstr "کنفرانس"
483msgstr "کنفرانس"
484
484
485−#: qml/Panel/Indicators/MenuItemFactory.qml:762
485+#: qml/Panel/Indicators/MenuItemFactory.qml:788
486msgid "Nothing is playing"
486msgid "Nothing is playing"
487msgstr "هیچ چیزی در حال پخش نیست"
487msgstr "هیچ چیزی در حال پخش نیست"
488
488
489−#: qml/Panel/Indicators/MenuItemFactory.qml:891
489+#: qml/Panel/Indicators/MenuItemFactory.qml:916
490#, qt-format
490#, qt-format
491msgid "%1 hour"
491msgid "%1 hour"
492msgid_plural "%1 hours"
492msgid_plural "%1 hours"
493msgstr[0] "%1 ساعت"
493msgstr[0] "%1 ساعت"
494
494
495−#: qml/Panel/Indicators/MenuItemFactory.qml:895
495+#: qml/Panel/Indicators/MenuItemFactory.qml:920
496#, qt-format
496#, qt-format
497msgid "%1 minute"
497msgid "%1 minute"
498msgid_plural "%1 minutes"
498msgid_plural "%1 minutes"
499msgstr[0] "%1 دقیقه"
499msgstr[0] "%1 دقیقه"
500
500
501−#: qml/Panel/Indicators/MenuItemFactory.qml:900
501+#: qml/Panel/Indicators/MenuItemFactory.qml:925
502#, qt-format
502#, qt-format
503msgid "%1 second"
503msgid "%1 second"
504msgid_plural "%1 seconds"
504msgid_plural "%1 seconds"
505msgstr[0] "%1 ثانیه"
505msgstr[0] "%1 ثانیه"
506
506
507−#: qml/Panel/Indicators/MenuItemFactory.qml:903
507+#: qml/Panel/Indicators/MenuItemFactory.qml:928
508msgid "0 seconds"
508msgid "0 seconds"
509msgstr "۰ ثانیه"
509msgstr "۰ ثانیه"
510
510
511#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
511#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
512−#: qml/Panel/Indicators/MenuItemFactory.qml:905
512+#: qml/Panel/Indicators/MenuItemFactory.qml:930
513#, qt-format
513#, qt-format
514msgid "%1 remaining"
514msgid "%1 remaining"
515msgstr "%1 مانده"
515msgstr "%1 مانده"
516
516
517−#: qml/Panel/Indicators/MenuItemFactory.qml:911
517+#: qml/Panel/Indicators/MenuItemFactory.qml:936
518msgid "In queue…"
518msgid "In queue…"
519msgstr "در صف…"
519msgstr "در صف…"
520
520
521−#: qml/Panel/Indicators/MenuItemFactory.qml:915
521+#: qml/Panel/Indicators/MenuItemFactory.qml:940
522msgid "Downloading"
522msgid "Downloading"
523msgstr "در حال بارگیری"
523msgstr "در حال بارگیری"
524
524
525−#: qml/Panel/Indicators/MenuItemFactory.qml:917
525+#: qml/Panel/Indicators/MenuItemFactory.qml:942
526msgid "Paused, tap to resume"
526msgid "Paused, tap to resume"
527msgstr "مکث شد، برای از سر گیری ضربه بزنید"
527msgstr "مکث شد، برای از سر گیری ضربه بزنید"
528
528
529−#: qml/Panel/Indicators/MenuItemFactory.qml:919
529+#: qml/Panel/Indicators/MenuItemFactory.qml:944
530msgid "Canceled"
530msgid "Canceled"
531msgstr "لغو شد"
531msgstr "لغو شد"
532
532
533−#: qml/Panel/Indicators/MenuItemFactory.qml:921
533+#: qml/Panel/Indicators/MenuItemFactory.qml:946
534msgid "Finished"
534msgid "Finished"
535msgstr "پایان یافت"
535msgstr "پایان یافت"
536
536
537−#: qml/Panel/Indicators/MenuItemFactory.qml:923
537+#: qml/Panel/Indicators/MenuItemFactory.qml:948
538msgid "Failed, tap to retry"
538msgid "Failed, tap to retry"
539msgstr "شکست خورد، برای تلاش دوباره ضربه بزنید"
539msgstr "شکست خورد، برای تلاش دوباره ضربه بزنید"
540
540
@@ -554,7 +554,7 @@ msgctxt "Button: Call back on phone"
554msgid "Call back"
554msgid "Call back"
555msgstr "پاسخ تماس"
555msgstr "پاسخ تماس"
556
556
557−#: qml/Stages/SideStage.qml:76
557+#: qml/Stage/SideStage.qml:76
558msgid "Drag using 3 fingers any application from one window to the other"
558msgid "Drag using 3 fingers any application from one window to the other"
559msgstr "هر پنجره‌ای را با کشیدن سه‌انگشت از پنجره‌ای به ینجرهٔ دیگر ببرید"
559msgstr "هر پنجره‌ای را با کشیدن سه‌انگشت از پنجره‌ای به ینجرهٔ دیگر ببرید"
560
560
@@ -600,15 +600,15 @@ msgstr "بعدی"
600
600
601#: qml/Wizard/Pages/20-keyboard.qml:31
601#: qml/Wizard/Pages/20-keyboard.qml:31
602msgid "Select Keyboard"
602msgid "Select Keyboard"
603−msgstr ""
603+msgstr "گزینش صفحه‌کلید"
604
604
605#: qml/Wizard/Pages/20-keyboard.qml:71
605#: qml/Wizard/Pages/20-keyboard.qml:71
606msgid "Keyboard language"
606msgid "Keyboard language"
607−msgstr ""
607+msgstr "زبان صفحه‌کلید"
608
608
609#: qml/Wizard/Pages/20-keyboard.qml:93
609#: qml/Wizard/Pages/20-keyboard.qml:93
610msgid "Keyboard layout"
610msgid "Keyboard layout"
611−msgstr ""
611+msgstr "چینش صفحه‌کلید"
612
612
613#: qml/Wizard/Pages/20-keyboard.qml:152 qml/Wizard/Pages/30-wifi.qml:207
613#: qml/Wizard/Pages/20-keyboard.qml:152 qml/Wizard/Pages/30-wifi.qml:207
614#: qml/Wizard/Pages/60-account.qml:65 qml/Wizard/Pages/77-system-update.qml:152
614#: qml/Wizard/Pages/60-account.qml:65 qml/Wizard/Pages/77-system-update.qml:152
@@ -719,32 +719,34 @@ msgstr "سیاست محرمانگی"
719
719
720#: qml/Wizard/Pages/77-system-update.qml:28
720#: qml/Wizard/Pages/77-system-update.qml:28
721msgid "Update Device"
721msgid "Update Device"
722−msgstr ""
722+msgstr "به‌روز رسانی افزاره"
723
723
724#: qml/Wizard/Pages/77-system-update.qml:55
724#: qml/Wizard/Pages/77-system-update.qml:55
725msgid ""
725msgid ""
726"There is a system update available and ready to install. Afterwards, the "
726"There is a system update available and ready to install. Afterwards, the "
727"device will automatically restart."
727"device will automatically restart."
728msgstr ""
728msgstr ""
729+"یک به‌روز رسانی سامانه‌ای موجود و آمادهٔ نصب است. پس از آن، دستگاه به صورت "
730+"خودکار خاموش و روشن می‌شود."
729
731
730#: qml/Wizard/Pages/77-system-update.qml:76
732#: qml/Wizard/Pages/77-system-update.qml:76
731msgctxt "string identifying name of the update"
733msgctxt "string identifying name of the update"
732msgid "Ubuntu system"
734msgid "Ubuntu system"
733−msgstr ""
735+msgstr "سامانهٔ اوبونتو"
734
736
735#: qml/Wizard/Pages/77-system-update.qml:83
737#: qml/Wizard/Pages/77-system-update.qml:83
736#, qt-format
738#, qt-format
737msgctxt "version of the system update"
739msgctxt "version of the system update"
738msgid "Version %1"
740msgid "Version %1"
739−msgstr ""
741+msgstr "نگارش %1"
740
742
741#: qml/Wizard/Pages/77-system-update.qml:102
743#: qml/Wizard/Pages/77-system-update.qml:102
742msgid "This could take a few minutes..."
744msgid "This could take a few minutes..."
743−msgstr ""
745+msgstr "ممکن است چند دقیقه طول بکشد"
744
746
745#: qml/Wizard/Pages/77-system-update.qml:116
747#: qml/Wizard/Pages/77-system-update.qml:116
746msgid "Install and restart now"
748msgid "Install and restart now"
747−msgstr ""
749+msgstr "هم‌اکنون نصب و خاموش و روشن شود"
748
750
749#: qml/Wizard/Pages/80-finished.qml:89
751#: qml/Wizard/Pages/80-finished.qml:89
750msgid "Welcome to Ubuntu"
752msgid "Welcome to Ubuntu"
po/fi.po+17−17
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2015-07-04 18:32+0000\n"
11"PO-Revision-Date: 2015-07-04 18:32+0000\n"
12"Last-Translator: Jiri Grönroos <Unknown>\n"
12"Last-Translator: Jiri Grönroos <Unknown>\n"
13"Language-Team: Finnish <fi@li.org>\n"
13"Language-Team: Finnish <fi@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:03+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:53+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -467,7 +467,7 @@ msgstr "Kirjaudu sisään"
467
467
468#: qml/Greeter/NarrowView.qml:252
468#: qml/Greeter/NarrowView.qml:252
469msgid "Emergency"
469msgid "Emergency"
470−msgstr ""
470+msgstr "Hätätila"
471
471
472#: qml/Greeter/SessionsList.qml:122
472#: qml/Greeter/SessionsList.qml:122
473msgid "Select desktop environment"
473msgid "Select desktop environment"
@@ -485,62 +485,62 @@ msgstr "Napauta palataksesi puheluun..."
485msgid "Conference"
485msgid "Conference"
486msgstr "Ryhmäpuhelu"
486msgstr "Ryhmäpuhelu"
487
487
488−#: qml/Panel/Indicators/MenuItemFactory.qml:762
488+#: qml/Panel/Indicators/MenuItemFactory.qml:788
489msgid "Nothing is playing"
489msgid "Nothing is playing"
490msgstr "Mitään ei toisteta juuri nyt"
490msgstr "Mitään ei toisteta juuri nyt"
491
491
492−#: qml/Panel/Indicators/MenuItemFactory.qml:891
492+#: qml/Panel/Indicators/MenuItemFactory.qml:916
493#, qt-format
493#, qt-format
494msgid "%1 hour"
494msgid "%1 hour"
495msgid_plural "%1 hours"
495msgid_plural "%1 hours"
496msgstr[0] "%1 tunti"
496msgstr[0] "%1 tunti"
497msgstr[1] "%1 tuntia"
497msgstr[1] "%1 tuntia"
498
498
499−#: qml/Panel/Indicators/MenuItemFactory.qml:895
499+#: qml/Panel/Indicators/MenuItemFactory.qml:920
500#, qt-format
500#, qt-format
501msgid "%1 minute"
501msgid "%1 minute"
502msgid_plural "%1 minutes"
502msgid_plural "%1 minutes"
503msgstr[0] "%1 minuutti"
503msgstr[0] "%1 minuutti"
504msgstr[1] "%1 minuuttia"
504msgstr[1] "%1 minuuttia"
505
505
506−#: qml/Panel/Indicators/MenuItemFactory.qml:900
506+#: qml/Panel/Indicators/MenuItemFactory.qml:925
507#, qt-format
507#, qt-format
508msgid "%1 second"
508msgid "%1 second"
509msgid_plural "%1 seconds"
509msgid_plural "%1 seconds"
510msgstr[0] "%1 sekunti"
510msgstr[0] "%1 sekunti"
511msgstr[1] "%1 sekuntia"
511msgstr[1] "%1 sekuntia"
512
512
513−#: qml/Panel/Indicators/MenuItemFactory.qml:903
513+#: qml/Panel/Indicators/MenuItemFactory.qml:928
514msgid "0 seconds"
514msgid "0 seconds"
515msgstr "0 sekuntia"
515msgstr "0 sekuntia"
516
516
517#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
517#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
518−#: qml/Panel/Indicators/MenuItemFactory.qml:905
518+#: qml/Panel/Indicators/MenuItemFactory.qml:930
519#, qt-format
519#, qt-format
520msgid "%1 remaining"
520msgid "%1 remaining"
521msgstr "%1 jäljellä"
521msgstr "%1 jäljellä"
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:911
523+#: qml/Panel/Indicators/MenuItemFactory.qml:936
524msgid "In queue…"
524msgid "In queue…"
525msgstr "Jonossa…"
525msgstr "Jonossa…"
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:915
527+#: qml/Panel/Indicators/MenuItemFactory.qml:940
528msgid "Downloading"
528msgid "Downloading"
529msgstr "Ladataan"
529msgstr "Ladataan"
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:917
531+#: qml/Panel/Indicators/MenuItemFactory.qml:942
532msgid "Paused, tap to resume"
532msgid "Paused, tap to resume"
533msgstr "Keskeytetty, napauta palauttaaksesi"
533msgstr "Keskeytetty, napauta palauttaaksesi"
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:919
535+#: qml/Panel/Indicators/MenuItemFactory.qml:944
536msgid "Canceled"
536msgid "Canceled"
537msgstr "Peruttu"
537msgstr "Peruttu"
538
538
539−#: qml/Panel/Indicators/MenuItemFactory.qml:921
539+#: qml/Panel/Indicators/MenuItemFactory.qml:946
540msgid "Finished"
540msgid "Finished"
541msgstr "Valmistunut"
541msgstr "Valmistunut"
542
542
543−#: qml/Panel/Indicators/MenuItemFactory.qml:923
543+#: qml/Panel/Indicators/MenuItemFactory.qml:948
544msgid "Failed, tap to retry"
544msgid "Failed, tap to retry"
545msgstr "Epäonnistunut, napauta yrittääksesi uudelleen"
545msgstr "Epäonnistunut, napauta yrittääksesi uudelleen"
546
546
@@ -560,7 +560,7 @@ msgctxt "Button: Call back on phone"
560msgid "Call back"
560msgid "Call back"
561msgstr "Soita takaisin"
561msgstr "Soita takaisin"
562
562
563−#: qml/Stages/SideStage.qml:76
563+#: qml/Stage/SideStage.qml:76
564msgid "Drag using 3 fingers any application from one window to the other"
564msgid "Drag using 3 fingers any application from one window to the other"
565msgstr "Vedä kolmea sormea käyttäen mikä tahansa sovellus ikkunasta toiseen"
565msgstr "Vedä kolmea sormea käyttäen mikä tahansa sovellus ikkunasta toiseen"
566
566
po/fo.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2014-01-14 20:08+0000\n"
11"PO-Revision-Date: 2014-01-14 20:08+0000\n"
12"Last-Translator: Jógvan Olsen <jo@jebster.net>\n"
12"Last-Translator: Jógvan Olsen <jo@jebster.net>\n"
13"Language-Team: Faroese <fo@li.org>\n"
13"Language-Team: Faroese <fo@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:03+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:53+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -481,62 +481,62 @@ msgstr ""
481msgid "Conference"
481msgid "Conference"
482msgstr ""
482msgstr ""
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:762
484+#: qml/Panel/Indicators/MenuItemFactory.qml:788
485msgid "Nothing is playing"
485msgid "Nothing is playing"
486msgstr "Einki spælir"
486msgstr "Einki spælir"
487
487
488−#: qml/Panel/Indicators/MenuItemFactory.qml:891
488+#: qml/Panel/Indicators/MenuItemFactory.qml:916
489#, qt-format
489#, qt-format
490msgid "%1 hour"
490msgid "%1 hour"
491msgid_plural "%1 hours"
491msgid_plural "%1 hours"
492msgstr[0] "%1 tími"
492msgstr[0] "%1 tími"
493msgstr[1] "%1 tímar"
493msgstr[1] "%1 tímar"
494
494
495−#: qml/Panel/Indicators/MenuItemFactory.qml:895
495+#: qml/Panel/Indicators/MenuItemFactory.qml:920
496#, qt-format
496#, qt-format
497msgid "%1 minute"
497msgid "%1 minute"
498msgid_plural "%1 minutes"
498msgid_plural "%1 minutes"
499msgstr[0] "%1 minuttur"
499msgstr[0] "%1 minuttur"
500msgstr[1] "%1 minuttir"
500msgstr[1] "%1 minuttir"
501
501
502−#: qml/Panel/Indicators/MenuItemFactory.qml:900
502+#: qml/Panel/Indicators/MenuItemFactory.qml:925
503#, qt-format
503#, qt-format
504msgid "%1 second"
504msgid "%1 second"
505msgid_plural "%1 seconds"
505msgid_plural "%1 seconds"
506msgstr[0] "%1 sekund"
506msgstr[0] "%1 sekund"
507msgstr[1] "%1 sekund"
507msgstr[1] "%1 sekund"
508
508
509−#: qml/Panel/Indicators/MenuItemFactory.qml:903
509+#: qml/Panel/Indicators/MenuItemFactory.qml:928
510msgid "0 seconds"
510msgid "0 seconds"
511msgstr "0 sekund"
511msgstr "0 sekund"
512
512
513#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
513#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
514−#: qml/Panel/Indicators/MenuItemFactory.qml:905
514+#: qml/Panel/Indicators/MenuItemFactory.qml:930
515#, qt-format
515#, qt-format
516msgid "%1 remaining"
516msgid "%1 remaining"
517msgstr "%1 eftir"
517msgstr "%1 eftir"
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:911
519+#: qml/Panel/Indicators/MenuItemFactory.qml:936
520msgid "In queue…"
520msgid "In queue…"
521msgstr "Á rað..."
521msgstr "Á rað..."
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:915
523+#: qml/Panel/Indicators/MenuItemFactory.qml:940
524msgid "Downloading"
524msgid "Downloading"
525msgstr "Tekur niður"
525msgstr "Tekur niður"
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:917
527+#: qml/Panel/Indicators/MenuItemFactory.qml:942
528msgid "Paused, tap to resume"
528msgid "Paused, tap to resume"
529msgstr ""
529msgstr ""
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:919
531+#: qml/Panel/Indicators/MenuItemFactory.qml:944
532msgid "Canceled"
532msgid "Canceled"
533msgstr ""
533msgstr ""
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:921
535+#: qml/Panel/Indicators/MenuItemFactory.qml:946
536msgid "Finished"
536msgid "Finished"
537msgstr "Liðugt"
537msgstr "Liðugt"
538
538
539−#: qml/Panel/Indicators/MenuItemFactory.qml:923
539+#: qml/Panel/Indicators/MenuItemFactory.qml:948
540msgid "Failed, tap to retry"
540msgid "Failed, tap to retry"
541msgstr ""
541msgstr ""
542
542
@@ -556,7 +556,7 @@ msgctxt "Button: Call back on phone"
556msgid "Call back"
556msgid "Call back"
557msgstr "Ring aftur"
557msgstr "Ring aftur"
558
558
559−#: qml/Stages/SideStage.qml:76
559+#: qml/Stage/SideStage.qml:76
560msgid "Drag using 3 fingers any application from one window to the other"
560msgid "Drag using 3 fingers any application from one window to the other"
561msgstr ""
561msgstr ""
562
562
po/fr.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-10-02 08:06+0000\n"
11"PO-Revision-Date: 2016-10-02 08:06+0000\n"
12"Last-Translator: Olivier Febwin <febwin@free.fr>\n"
12"Last-Translator: Olivier Febwin <febwin@free.fr>\n"
13"Language-Team: French <fr@li.org>\n"
13"Language-Team: French <fr@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2016-10-03 06:18+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:53+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -489,62 +489,62 @@ msgstr "Appuyez pour revenir à l'appel..."
489msgid "Conference"
489msgid "Conference"
490msgstr "Conférence"
490msgstr "Conférence"
491
491
492−#: qml/Panel/Indicators/MenuItemFactory.qml:762
492+#: qml/Panel/Indicators/MenuItemFactory.qml:788
493msgid "Nothing is playing"
493msgid "Nothing is playing"
494msgstr "Rien n'est en cours de lecture"
494msgstr "Rien n'est en cours de lecture"
495
495
496−#: qml/Panel/Indicators/MenuItemFactory.qml:891
496+#: qml/Panel/Indicators/MenuItemFactory.qml:916
497#, qt-format
497#, qt-format
498msgid "%1 hour"
498msgid "%1 hour"
499msgid_plural "%1 hours"
499msgid_plural "%1 hours"
500msgstr[0] "%1 heure"
500msgstr[0] "%1 heure"
501msgstr[1] "%1 heures"
501msgstr[1] "%1 heures"
502
502
503−#: qml/Panel/Indicators/MenuItemFactory.qml:895
503+#: qml/Panel/Indicators/MenuItemFactory.qml:920
504#, qt-format
504#, qt-format
505msgid "%1 minute"
505msgid "%1 minute"
506msgid_plural "%1 minutes"
506msgid_plural "%1 minutes"
507msgstr[0] "%1 minute"
507msgstr[0] "%1 minute"
508msgstr[1] "%1 minutes"
508msgstr[1] "%1 minutes"
509
509
510−#: qml/Panel/Indicators/MenuItemFactory.qml:900
510+#: qml/Panel/Indicators/MenuItemFactory.qml:925
511#, qt-format
511#, qt-format
512msgid "%1 second"
512msgid "%1 second"
513msgid_plural "%1 seconds"
513msgid_plural "%1 seconds"
514msgstr[0] "%1 seconde"
514msgstr[0] "%1 seconde"
515msgstr[1] "%1 secondes"
515msgstr[1] "%1 secondes"
516
516
517−#: qml/Panel/Indicators/MenuItemFactory.qml:903
517+#: qml/Panel/Indicators/MenuItemFactory.qml:928
518msgid "0 seconds"
518msgid "0 seconds"
519msgstr "0 seconde"
519msgstr "0 seconde"
520
520
521#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
521#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
522−#: qml/Panel/Indicators/MenuItemFactory.qml:905
522+#: qml/Panel/Indicators/MenuItemFactory.qml:930
523#, qt-format
523#, qt-format
524msgid "%1 remaining"
524msgid "%1 remaining"
525msgstr "Il reste %1"
525msgstr "Il reste %1"
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:911
527+#: qml/Panel/Indicators/MenuItemFactory.qml:936
528msgid "In queue…"
528msgid "In queue…"
529msgstr "Dans la file d'attente..."
529msgstr "Dans la file d'attente..."
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:915
531+#: qml/Panel/Indicators/MenuItemFactory.qml:940
532msgid "Downloading"
532msgid "Downloading"
533msgstr "Téléchargement en cours"
533msgstr "Téléchargement en cours"
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:917
535+#: qml/Panel/Indicators/MenuItemFactory.qml:942
536msgid "Paused, tap to resume"
536msgid "Paused, tap to resume"
537msgstr "En pause, appuyez pour reprendre"
537msgstr "En pause, appuyez pour reprendre"
538
538
539−#: qml/Panel/Indicators/MenuItemFactory.qml:919
539+#: qml/Panel/Indicators/MenuItemFactory.qml:944
540msgid "Canceled"
540msgid "Canceled"
541msgstr "Annulé"
541msgstr "Annulé"
542
542
543−#: qml/Panel/Indicators/MenuItemFactory.qml:921
543+#: qml/Panel/Indicators/MenuItemFactory.qml:946
544msgid "Finished"
544msgid "Finished"
545msgstr "Terminé"
545msgstr "Terminé"
546
546
547−#: qml/Panel/Indicators/MenuItemFactory.qml:923
547+#: qml/Panel/Indicators/MenuItemFactory.qml:948
548msgid "Failed, tap to retry"
548msgid "Failed, tap to retry"
549msgstr "Échec, appuyez pour réessayer"
549msgstr "Échec, appuyez pour réessayer"
550
550
@@ -564,7 +564,7 @@ msgctxt "Button: Call back on phone"
564msgid "Call back"
564msgid "Call back"
565msgstr "Rappeler"
565msgstr "Rappeler"
566
566
567−#: qml/Stages/SideStage.qml:76
567+#: qml/Stage/SideStage.qml:76
568msgid "Drag using 3 fingers any application from one window to the other"
568msgid "Drag using 3 fingers any application from one window to the other"
569msgstr ""
569msgstr ""
570"Faites glisser avec 3 doigts n'importe quelle application d'une fenêtre à "
570"Faites glisser avec 3 doigts n'importe quelle application d'une fenêtre à "
po/ga.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-01-25 11:33+0000\n"
11"PO-Revision-Date: 2016-01-25 11:33+0000\n"
12"Last-Translator: Joshua Kiley <Unknown>\n"
12"Last-Translator: Joshua Kiley <Unknown>\n"
13"Language-Team: Irish <ga@li.org>\n"
13"Language-Team: Irish <ga@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n==2 ? 1 : 2;\n"
17"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n==2 ? 1 : 2;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:03+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:53+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -478,11 +478,11 @@ msgstr "Tapáil chun filleadh ar an nglaoch..."
478msgid "Conference"
478msgid "Conference"
479msgstr "Glaoch comhdhála"
479msgstr "Glaoch comhdhála"
480
480
481−#: qml/Panel/Indicators/MenuItemFactory.qml:762
481+#: qml/Panel/Indicators/MenuItemFactory.qml:788
482msgid "Nothing is playing"
482msgid "Nothing is playing"
483msgstr "Tada á chasadh"
483msgstr "Tada á chasadh"
484
484
485−#: qml/Panel/Indicators/MenuItemFactory.qml:891
485+#: qml/Panel/Indicators/MenuItemFactory.qml:916
486#, qt-format
486#, qt-format
487msgid "%1 hour"
487msgid "%1 hour"
488msgid_plural "%1 hours"
488msgid_plural "%1 hours"
@@ -490,7 +490,7 @@ msgstr[0] "%1 uair"
490msgstr[1] "%1 uair"
490msgstr[1] "%1 uair"
491msgstr[2] "%1 uair"
491msgstr[2] "%1 uair"
492
492
493−#: qml/Panel/Indicators/MenuItemFactory.qml:895
493+#: qml/Panel/Indicators/MenuItemFactory.qml:920
494#, qt-format
494#, qt-format
495msgid "%1 minute"
495msgid "%1 minute"
496msgid_plural "%1 minutes"
496msgid_plural "%1 minutes"
@@ -498,7 +498,7 @@ msgstr[0] "%1 nóiméad"
498msgstr[1] "%1 nóiméad"
498msgstr[1] "%1 nóiméad"
499msgstr[2] "%1 nóiméad"
499msgstr[2] "%1 nóiméad"
500
500
501−#: qml/Panel/Indicators/MenuItemFactory.qml:900
501+#: qml/Panel/Indicators/MenuItemFactory.qml:925
502#, qt-format
502#, qt-format
503msgid "%1 second"
503msgid "%1 second"
504msgid_plural "%1 seconds"
504msgid_plural "%1 seconds"
@@ -506,37 +506,37 @@ msgstr[0] "%1 soicind"
506msgstr[1] "%1 soicind"
506msgstr[1] "%1 soicind"
507msgstr[2] "%1 soicind"
507msgstr[2] "%1 soicind"
508
508
509−#: qml/Panel/Indicators/MenuItemFactory.qml:903
509+#: qml/Panel/Indicators/MenuItemFactory.qml:928
510msgid "0 seconds"
510msgid "0 seconds"
511msgstr "%1 soicind"
511msgstr "%1 soicind"
512
512
513#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
513#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
514−#: qml/Panel/Indicators/MenuItemFactory.qml:905
514+#: qml/Panel/Indicators/MenuItemFactory.qml:930
515#, qt-format
515#, qt-format
516msgid "%1 remaining"
516msgid "%1 remaining"
517msgstr ""
517msgstr ""
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:911
519+#: qml/Panel/Indicators/MenuItemFactory.qml:936
520msgid "In queue…"
520msgid "In queue…"
521msgstr "Ag fanacht a scuaine..."
521msgstr "Ag fanacht a scuaine..."
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:915
523+#: qml/Panel/Indicators/MenuItemFactory.qml:940
524msgid "Downloading"
524msgid "Downloading"
525msgstr "Íoslódáil"
525msgstr "Íoslódáil"
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:917
527+#: qml/Panel/Indicators/MenuItemFactory.qml:942
528msgid "Paused, tap to resume"
528msgid "Paused, tap to resume"
529msgstr "Sos, tapáill chun leanúint ar aghaidhdh"
529msgstr "Sos, tapáill chun leanúint ar aghaidhdh"
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:919
531+#: qml/Panel/Indicators/MenuItemFactory.qml:944
532msgid "Canceled"
532msgid "Canceled"
533msgstr "Curtha Ar Ceal"
533msgstr "Curtha Ar Ceal"
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:921
535+#: qml/Panel/Indicators/MenuItemFactory.qml:946
536msgid "Finished"
536msgid "Finished"
537msgstr "Críochnaithe"
537msgstr "Críochnaithe"
538
538
539−#: qml/Panel/Indicators/MenuItemFactory.qml:923
539+#: qml/Panel/Indicators/MenuItemFactory.qml:948
540msgid "Failed, tap to retry"
540msgid "Failed, tap to retry"
541msgstr "Tá teipthe ort, tapáil chun triail eile a bhaint as"
541msgstr "Tá teipthe ort, tapáil chun triail eile a bhaint as"
542
542
@@ -556,7 +556,7 @@ msgctxt "Button: Call back on phone"
556msgid "Call back"
556msgid "Call back"
557msgstr "Glaoch Ar Ais"
557msgstr "Glaoch Ar Ais"
558
558
559−#: qml/Stages/SideStage.qml:76
559+#: qml/Stage/SideStage.qml:76
560msgid "Drag using 3 fingers any application from one window to the other"
560msgid "Drag using 3 fingers any application from one window to the other"
561msgstr ""
561msgstr ""
562
562
po/gd.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-04-08 18:34+0000\n"
11"PO-Revision-Date: 2016-04-08 18:34+0000\n"
12"Last-Translator: Akerbeltz <fios@akerbeltz.org>\n"
12"Last-Translator: Akerbeltz <fios@akerbeltz.org>\n"
13"Language-Team: Fòram na Gàidhlig\n"
13"Language-Team: Fòram na Gàidhlig\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : "
17"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : "
18"(n > 2 && n < 20) ? 2 : 3;\n"
18"(n > 2 && n < 20) ? 2 : 3;\n"
19−"X-Launchpad-Export-Date: 2016-09-27 07:03+0000\n"
19+"X-Launchpad-Export-Date: 2016-10-28 05:53+0000\n"
20−"X-Generator: Launchpad (build 18204)\n"
20+"X-Generator: Launchpad (build 18246)\n"
21"Language: gd\n"
21"Language: gd\n"
22
22
23#: plugins/LightDM/Greeter.cpp:123
23#: plugins/LightDM/Greeter.cpp:123
@@ -492,11 +492,11 @@ msgstr "Gnog gus tilleadh dhan ghairm..."
492msgid "Conference"
492msgid "Conference"
493msgstr "Gairm co-labhairt"
493msgstr "Gairm co-labhairt"
494
494
495−#: qml/Panel/Indicators/MenuItemFactory.qml:762
495+#: qml/Panel/Indicators/MenuItemFactory.qml:788
496msgid "Nothing is playing"
496msgid "Nothing is playing"
497msgstr "Chan eil dad 'ga chluich"
497msgstr "Chan eil dad 'ga chluich"
498
498
499−#: qml/Panel/Indicators/MenuItemFactory.qml:891
499+#: qml/Panel/Indicators/MenuItemFactory.qml:916
500#, qt-format
500#, qt-format
501msgid "%1 hour"
501msgid "%1 hour"
502msgid_plural "%1 hours"
502msgid_plural "%1 hours"
@@ -505,7 +505,7 @@ msgstr[1] "%1 uair a thìde"
505msgstr[2] "%1 uairean a thìde"
505msgstr[2] "%1 uairean a thìde"
506msgstr[3] "%1 uair a thìde"
506msgstr[3] "%1 uair a thìde"
507
507
508−#: qml/Panel/Indicators/MenuItemFactory.qml:895
508+#: qml/Panel/Indicators/MenuItemFactory.qml:920
509#, qt-format
509#, qt-format
510msgid "%1 minute"
510msgid "%1 minute"
511msgid_plural "%1 minutes"
511msgid_plural "%1 minutes"
@@ -514,7 +514,7 @@ msgstr[1] "%1 mhionaid"
514msgstr[2] "%1 mionaidean"
514msgstr[2] "%1 mionaidean"
515msgstr[3] "%1 mionaid"
515msgstr[3] "%1 mionaid"
516
516
517−#: qml/Panel/Indicators/MenuItemFactory.qml:900
517+#: qml/Panel/Indicators/MenuItemFactory.qml:925
518#, qt-format
518#, qt-format
519msgid "%1 second"
519msgid "%1 second"
520msgid_plural "%1 seconds"
520msgid_plural "%1 seconds"
@@ -523,37 +523,37 @@ msgstr[1] "%1 dhiog"
523msgstr[2] "%1 diogan"
523msgstr[2] "%1 diogan"
524msgstr[3] "%1 diog"
524msgstr[3] "%1 diog"
525
525
526−#: qml/Panel/Indicators/MenuItemFactory.qml:903
526+#: qml/Panel/Indicators/MenuItemFactory.qml:928
527msgid "0 seconds"
527msgid "0 seconds"
528msgstr "0 diog"
528msgstr "0 diog"
529
529
530#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
530#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
531−#: qml/Panel/Indicators/MenuItemFactory.qml:905
531+#: qml/Panel/Indicators/MenuItemFactory.qml:930
532#, qt-format
532#, qt-format
533msgid "%1 remaining"
533msgid "%1 remaining"
534msgstr "%1 air fhàgail"
534msgstr "%1 air fhàgail"
535
535
536−#: qml/Panel/Indicators/MenuItemFactory.qml:911
536+#: qml/Panel/Indicators/MenuItemFactory.qml:936
537msgid "In queue…"
537msgid "In queue…"
538msgstr "Air a' chiudha…"
538msgstr "Air a' chiudha…"
539
539
540−#: qml/Panel/Indicators/MenuItemFactory.qml:915
540+#: qml/Panel/Indicators/MenuItemFactory.qml:940
541msgid "Downloading"
541msgid "Downloading"
542msgstr "'Ga luchdadh a-nuas"
542msgstr "'Ga luchdadh a-nuas"
543
543
544−#: qml/Panel/Indicators/MenuItemFactory.qml:917
544+#: qml/Panel/Indicators/MenuItemFactory.qml:942
545msgid "Paused, tap to resume"
545msgid "Paused, tap to resume"
546msgstr "'Na stad, thoir gnogag gus leantainn air"
546msgstr "'Na stad, thoir gnogag gus leantainn air"
547
547
548−#: qml/Panel/Indicators/MenuItemFactory.qml:919
548+#: qml/Panel/Indicators/MenuItemFactory.qml:944
549msgid "Canceled"
549msgid "Canceled"
550msgstr "Air a sgur dheth"
550msgstr "Air a sgur dheth"
551
551
552−#: qml/Panel/Indicators/MenuItemFactory.qml:921
552+#: qml/Panel/Indicators/MenuItemFactory.qml:946
553msgid "Finished"
553msgid "Finished"
554msgstr "Coileanta"
554msgstr "Coileanta"
555
555
556−#: qml/Panel/Indicators/MenuItemFactory.qml:923
556+#: qml/Panel/Indicators/MenuItemFactory.qml:948
557msgid "Failed, tap to retry"
557msgid "Failed, tap to retry"
558msgstr "Dh'fhàillig leis, thoir gnogag gus feuchainn a-rithist"
558msgstr "Dh'fhàillig leis, thoir gnogag gus feuchainn a-rithist"
559
559
@@ -573,7 +573,7 @@ msgctxt "Button: Call back on phone"
573msgid "Call back"
573msgid "Call back"
574msgstr "Fònaig air ais"
574msgstr "Fònaig air ais"
575
575
576−#: qml/Stages/SideStage.qml:76
576+#: qml/Stage/SideStage.qml:76
577msgid "Drag using 3 fingers any application from one window to the other"
577msgid "Drag using 3 fingers any application from one window to the other"
578msgstr ""
578msgstr ""
579"Dèan slaodadh le trì corragan gus aplacaid a shlaodadh o uinneag gu uinneag "
579"Dèan slaodadh le trì corragan gus aplacaid a shlaodadh o uinneag gu uinneag "
po/gl.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-01-15 14:56+0000\n"
11"PO-Revision-Date: 2016-01-15 14:56+0000\n"
12"Last-Translator: Marcos Lans <Unknown>\n"
12"Last-Translator: Marcos Lans <Unknown>\n"
13"Language-Team: Galician <gl@li.org>\n"
13"Language-Team: Galician <gl@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:04+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -481,62 +481,62 @@ msgstr "Toque para volver á chamada..."
481msgid "Conference"
481msgid "Conference"
482msgstr "Conferencia"
482msgstr "Conferencia"
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:762
484+#: qml/Panel/Indicators/MenuItemFactory.qml:788
485msgid "Nothing is playing"
485msgid "Nothing is playing"
486msgstr "Non hai nada en reprodución"
486msgstr "Non hai nada en reprodución"
487
487
488−#: qml/Panel/Indicators/MenuItemFactory.qml:891
488+#: qml/Panel/Indicators/MenuItemFactory.qml:916
489#, qt-format
489#, qt-format
490msgid "%1 hour"
490msgid "%1 hour"
491msgid_plural "%1 hours"
491msgid_plural "%1 hours"
492msgstr[0] "%1 hora"
492msgstr[0] "%1 hora"
493msgstr[1] "%1 horas"
493msgstr[1] "%1 horas"
494
494
495−#: qml/Panel/Indicators/MenuItemFactory.qml:895
495+#: qml/Panel/Indicators/MenuItemFactory.qml:920
496#, qt-format
496#, qt-format
497msgid "%1 minute"
497msgid "%1 minute"
498msgid_plural "%1 minutes"
498msgid_plural "%1 minutes"
499msgstr[0] "%1 minuto"
499msgstr[0] "%1 minuto"
500msgstr[1] "%1 minutos"
500msgstr[1] "%1 minutos"
501
501
502−#: qml/Panel/Indicators/MenuItemFactory.qml:900
502+#: qml/Panel/Indicators/MenuItemFactory.qml:925
503#, qt-format
503#, qt-format
504msgid "%1 second"
504msgid "%1 second"
505msgid_plural "%1 seconds"
505msgid_plural "%1 seconds"
506msgstr[0] "%1 segundo"
506msgstr[0] "%1 segundo"
507msgstr[1] "%1 segundos"
507msgstr[1] "%1 segundos"
508
508
509−#: qml/Panel/Indicators/MenuItemFactory.qml:903
509+#: qml/Panel/Indicators/MenuItemFactory.qml:928
510msgid "0 seconds"
510msgid "0 seconds"
511msgstr "0 segundos"
511msgstr "0 segundos"
512
512
513#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
513#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
514−#: qml/Panel/Indicators/MenuItemFactory.qml:905
514+#: qml/Panel/Indicators/MenuItemFactory.qml:930
515#, qt-format
515#, qt-format
516msgid "%1 remaining"
516msgid "%1 remaining"
517msgstr "Faltan %1"
517msgstr "Faltan %1"
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:911
519+#: qml/Panel/Indicators/MenuItemFactory.qml:936
520msgid "In queue…"
520msgid "In queue…"
521msgstr "Na cola..."
521msgstr "Na cola..."
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:915
523+#: qml/Panel/Indicators/MenuItemFactory.qml:940
524msgid "Downloading"
524msgid "Downloading"
525msgstr "Descargando"
525msgstr "Descargando"
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:917
527+#: qml/Panel/Indicators/MenuItemFactory.qml:942
528msgid "Paused, tap to resume"
528msgid "Paused, tap to resume"
529msgstr "Detido, toque para continuar"
529msgstr "Detido, toque para continuar"
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:919
531+#: qml/Panel/Indicators/MenuItemFactory.qml:944
532msgid "Canceled"
532msgid "Canceled"
533msgstr "Cancelado"
533msgstr "Cancelado"
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:921
535+#: qml/Panel/Indicators/MenuItemFactory.qml:946
536msgid "Finished"
536msgid "Finished"
537msgstr "Rematado"
537msgstr "Rematado"
538
538
539−#: qml/Panel/Indicators/MenuItemFactory.qml:923
539+#: qml/Panel/Indicators/MenuItemFactory.qml:948
540msgid "Failed, tap to retry"
540msgid "Failed, tap to retry"
541msgstr "Produciuse un fallo, toque para reintentalo"
541msgstr "Produciuse un fallo, toque para reintentalo"
542
542
@@ -556,7 +556,7 @@ msgctxt "Button: Call back on phone"
556msgid "Call back"
556msgid "Call back"
557msgstr "Chamar de volta"
557msgstr "Chamar de volta"
558
558
559−#: qml/Stages/SideStage.qml:76
559+#: qml/Stage/SideStage.qml:76
560msgid "Drag using 3 fingers any application from one window to the other"
560msgid "Drag using 3 fingers any application from one window to the other"
561msgstr "Arrastre con 3 dedos calquera aplicativo dunha xanela á outra"
561msgstr "Arrastre con 3 dedos calquera aplicativo dunha xanela á outra"
562
562
po/gv.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2015-04-02 14:24+0000\n"
11"PO-Revision-Date: 2015-04-02 14:24+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Manx <gv@li.org>\n"
13"Language-Team: Manx <gv@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : (n == 2 ? 1 : 2);\n"
17"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : (n == 2 ? 1 : 2);\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:04+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -484,62 +484,62 @@ msgstr ""
484msgid "Conference"
484msgid "Conference"
485msgstr ""
485msgstr ""
486
486
487−#: qml/Panel/Indicators/MenuItemFactory.qml:762
487+#: qml/Panel/Indicators/MenuItemFactory.qml:788
488msgid "Nothing is playing"
488msgid "Nothing is playing"
489msgstr ""
489msgstr ""
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:891
491+#: qml/Panel/Indicators/MenuItemFactory.qml:916
492#, qt-format
492#, qt-format
493msgid "%1 hour"
493msgid "%1 hour"
494msgid_plural "%1 hours"
494msgid_plural "%1 hours"
495msgstr[0] ""
495msgstr[0] ""
496msgstr[1] ""
496msgstr[1] ""
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:895
498+#: qml/Panel/Indicators/MenuItemFactory.qml:920
499#, qt-format
499#, qt-format
500msgid "%1 minute"
500msgid "%1 minute"
501msgid_plural "%1 minutes"
501msgid_plural "%1 minutes"
502msgstr[0] ""
502msgstr[0] ""
503msgstr[1] ""
503msgstr[1] ""
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:900
505+#: qml/Panel/Indicators/MenuItemFactory.qml:925
506#, qt-format
506#, qt-format
507msgid "%1 second"
507msgid "%1 second"
508msgid_plural "%1 seconds"
508msgid_plural "%1 seconds"
509msgstr[0] ""
509msgstr[0] ""
510msgstr[1] ""
510msgstr[1] ""
511
511
512−#: qml/Panel/Indicators/MenuItemFactory.qml:903
512+#: qml/Panel/Indicators/MenuItemFactory.qml:928
513msgid "0 seconds"
513msgid "0 seconds"
514msgstr ""
514msgstr ""
515
515
516#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
516#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
517−#: qml/Panel/Indicators/MenuItemFactory.qml:905
517+#: qml/Panel/Indicators/MenuItemFactory.qml:930
518#, qt-format
518#, qt-format
519msgid "%1 remaining"
519msgid "%1 remaining"
520msgstr ""
520msgstr ""
521
521
522−#: qml/Panel/Indicators/MenuItemFactory.qml:911
522+#: qml/Panel/Indicators/MenuItemFactory.qml:936
523msgid "In queue…"
523msgid "In queue…"
524msgstr ""
524msgstr ""
525
525
526−#: qml/Panel/Indicators/MenuItemFactory.qml:915
526+#: qml/Panel/Indicators/MenuItemFactory.qml:940
527msgid "Downloading"
527msgid "Downloading"
528msgstr ""
528msgstr ""
529
529
530−#: qml/Panel/Indicators/MenuItemFactory.qml:917
530+#: qml/Panel/Indicators/MenuItemFactory.qml:942
531msgid "Paused, tap to resume"
531msgid "Paused, tap to resume"
532msgstr ""
532msgstr ""
533
533
534−#: qml/Panel/Indicators/MenuItemFactory.qml:919
534+#: qml/Panel/Indicators/MenuItemFactory.qml:944
535msgid "Canceled"
535msgid "Canceled"
536msgstr ""
536msgstr ""
537
537
538−#: qml/Panel/Indicators/MenuItemFactory.qml:921
538+#: qml/Panel/Indicators/MenuItemFactory.qml:946
539msgid "Finished"
539msgid "Finished"
540msgstr ""
540msgstr ""
541
541
542−#: qml/Panel/Indicators/MenuItemFactory.qml:923
542+#: qml/Panel/Indicators/MenuItemFactory.qml:948
543msgid "Failed, tap to retry"
543msgid "Failed, tap to retry"
544msgstr ""
544msgstr ""
545
545
@@ -559,7 +559,7 @@ msgctxt "Button: Call back on phone"
559msgid "Call back"
559msgid "Call back"
560msgstr ""
560msgstr ""
561
561
562−#: qml/Stages/SideStage.qml:76
562+#: qml/Stage/SideStage.qml:76
563msgid "Drag using 3 fingers any application from one window to the other"
563msgid "Drag using 3 fingers any application from one window to the other"
564msgstr ""
564msgstr ""
565
565
po/he.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2015-07-12 08:47+0000\n"
11"PO-Revision-Date: 2015-07-12 08:47+0000\n"
12"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
12"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
13"Language-Team: Hebrew <he@li.org>\n"
13"Language-Team: Hebrew <he@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:04+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -477,62 +477,62 @@ msgstr "יש לגעת כדי להחזיר שיחה…"
477msgid "Conference"
477msgid "Conference"
478msgstr "ועידה"
478msgstr "ועידה"
479
479
480−#: qml/Panel/Indicators/MenuItemFactory.qml:762
480+#: qml/Panel/Indicators/MenuItemFactory.qml:788
481msgid "Nothing is playing"
481msgid "Nothing is playing"
482msgstr ""
482msgstr ""
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:891
484+#: qml/Panel/Indicators/MenuItemFactory.qml:916
485#, qt-format
485#, qt-format
486msgid "%1 hour"
486msgid "%1 hour"
487msgid_plural "%1 hours"
487msgid_plural "%1 hours"
488msgstr[0] ""
488msgstr[0] ""
489msgstr[1] ""
489msgstr[1] ""
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:895
491+#: qml/Panel/Indicators/MenuItemFactory.qml:920
492#, qt-format
492#, qt-format
493msgid "%1 minute"
493msgid "%1 minute"
494msgid_plural "%1 minutes"
494msgid_plural "%1 minutes"
495msgstr[0] ""
495msgstr[0] ""
496msgstr[1] ""
496msgstr[1] ""
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:900
498+#: qml/Panel/Indicators/MenuItemFactory.qml:925
499#, qt-format
499#, qt-format
500msgid "%1 second"
500msgid "%1 second"
501msgid_plural "%1 seconds"
501msgid_plural "%1 seconds"
502msgstr[0] ""
502msgstr[0] ""
503msgstr[1] ""
503msgstr[1] ""
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:903
505+#: qml/Panel/Indicators/MenuItemFactory.qml:928
506msgid "0 seconds"
506msgid "0 seconds"
507msgstr ""
507msgstr ""
508
508
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
510−#: qml/Panel/Indicators/MenuItemFactory.qml:905
510+#: qml/Panel/Indicators/MenuItemFactory.qml:930
511#, qt-format
511#, qt-format
512msgid "%1 remaining"
512msgid "%1 remaining"
513msgstr ""
513msgstr ""
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:911
515+#: qml/Panel/Indicators/MenuItemFactory.qml:936
516msgid "In queue…"
516msgid "In queue…"
517msgstr "בתור…"
517msgstr "בתור…"
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:915
519+#: qml/Panel/Indicators/MenuItemFactory.qml:940
520msgid "Downloading"
520msgid "Downloading"
521msgstr "בהורדה"
521msgstr "בהורדה"
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:917
523+#: qml/Panel/Indicators/MenuItemFactory.qml:942
524msgid "Paused, tap to resume"
524msgid "Paused, tap to resume"
525msgstr "מושהה, יש לגעת כדי להמשיך"
525msgstr "מושהה, יש לגעת כדי להמשיך"
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:919
527+#: qml/Panel/Indicators/MenuItemFactory.qml:944
528msgid "Canceled"
528msgid "Canceled"
529msgstr "בוטל"
529msgstr "בוטל"
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:921
531+#: qml/Panel/Indicators/MenuItemFactory.qml:946
532msgid "Finished"
532msgid "Finished"
533msgstr "הושלם"
533msgstr "הושלם"
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:923
535+#: qml/Panel/Indicators/MenuItemFactory.qml:948
536msgid "Failed, tap to retry"
536msgid "Failed, tap to retry"
537msgstr "נכשל, יש לגעת כדי לנסות שוב"
537msgstr "נכשל, יש לגעת כדי לנסות שוב"
538
538
@@ -552,7 +552,7 @@ msgctxt "Button: Call back on phone"
552msgid "Call back"
552msgid "Call back"
553msgstr ""
553msgstr ""
554
554
555−#: qml/Stages/SideStage.qml:76
555+#: qml/Stage/SideStage.qml:76
556msgid "Drag using 3 fingers any application from one window to the other"
556msgid "Drag using 3 fingers any application from one window to the other"
557msgstr ""
557msgstr ""
558
558
po/hi.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2014-01-15 01:49+0000\n"
11"PO-Revision-Date: 2014-01-15 01:49+0000\n"
12"Last-Translator: Siddhanathan Shanmugam <Unknown>\n"
12"Last-Translator: Siddhanathan Shanmugam <Unknown>\n"
13"Language-Team: Hindi <hi@li.org>\n"
13"Language-Team: Hindi <hi@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:04+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -477,62 +477,62 @@ msgstr ""
477msgid "Conference"
477msgid "Conference"
478msgstr ""
478msgstr ""
479
479
480−#: qml/Panel/Indicators/MenuItemFactory.qml:762
480+#: qml/Panel/Indicators/MenuItemFactory.qml:788
481msgid "Nothing is playing"
481msgid "Nothing is playing"
482msgstr ""
482msgstr ""
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:891
484+#: qml/Panel/Indicators/MenuItemFactory.qml:916
485#, qt-format
485#, qt-format
486msgid "%1 hour"
486msgid "%1 hour"
487msgid_plural "%1 hours"
487msgid_plural "%1 hours"
488msgstr[0] ""
488msgstr[0] ""
489msgstr[1] ""
489msgstr[1] ""
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:895
491+#: qml/Panel/Indicators/MenuItemFactory.qml:920
492#, qt-format
492#, qt-format
493msgid "%1 minute"
493msgid "%1 minute"
494msgid_plural "%1 minutes"
494msgid_plural "%1 minutes"
495msgstr[0] ""
495msgstr[0] ""
496msgstr[1] ""
496msgstr[1] ""
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:900
498+#: qml/Panel/Indicators/MenuItemFactory.qml:925
499#, qt-format
499#, qt-format
500msgid "%1 second"
500msgid "%1 second"
501msgid_plural "%1 seconds"
501msgid_plural "%1 seconds"
502msgstr[0] ""
502msgstr[0] ""
503msgstr[1] ""
503msgstr[1] ""
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:903
505+#: qml/Panel/Indicators/MenuItemFactory.qml:928
506msgid "0 seconds"
506msgid "0 seconds"
507msgstr ""
507msgstr ""
508
508
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
510−#: qml/Panel/Indicators/MenuItemFactory.qml:905
510+#: qml/Panel/Indicators/MenuItemFactory.qml:930
511#, qt-format
511#, qt-format
512msgid "%1 remaining"
512msgid "%1 remaining"
513msgstr ""
513msgstr ""
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:911
515+#: qml/Panel/Indicators/MenuItemFactory.qml:936
516msgid "In queue…"
516msgid "In queue…"
517msgstr ""
517msgstr ""
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:915
519+#: qml/Panel/Indicators/MenuItemFactory.qml:940
520msgid "Downloading"
520msgid "Downloading"
521msgstr ""
521msgstr ""
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:917
523+#: qml/Panel/Indicators/MenuItemFactory.qml:942
524msgid "Paused, tap to resume"
524msgid "Paused, tap to resume"
525msgstr ""
525msgstr ""
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:919
527+#: qml/Panel/Indicators/MenuItemFactory.qml:944
528msgid "Canceled"
528msgid "Canceled"
529msgstr ""
529msgstr ""
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:921
531+#: qml/Panel/Indicators/MenuItemFactory.qml:946
532msgid "Finished"
532msgid "Finished"
533msgstr ""
533msgstr ""
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:923
535+#: qml/Panel/Indicators/MenuItemFactory.qml:948
536msgid "Failed, tap to retry"
536msgid "Failed, tap to retry"
537msgstr ""
537msgstr ""
538
538
@@ -552,7 +552,7 @@ msgctxt "Button: Call back on phone"
552msgid "Call back"
552msgid "Call back"
553msgstr ""
553msgstr ""
554
554
555−#: qml/Stages/SideStage.qml:76
555+#: qml/Stage/SideStage.qml:76
556msgid "Drag using 3 fingers any application from one window to the other"
556msgid "Drag using 3 fingers any application from one window to the other"
557msgstr ""
557msgstr ""
558
558
po/hr.po+17−17
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-05-04 17:52+0000\n"
11"PO-Revision-Date: 2016-05-04 17:52+0000\n"
12"Last-Translator: gogo <trebelnik2@gmail.com>\n"
12"Last-Translator: gogo <trebelnik2@gmail.com>\n"
13"Language-Team: Croatian <hr@li.org>\n"
13"Language-Team: Croatian <hr@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
19+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
20−"X-Generator: Launchpad (build 18204)\n"
20+"X-Generator: Launchpad (build 18246)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:123
22#: plugins/LightDM/Greeter.cpp:123
23msgid "Password: "
23msgid "Password: "
@@ -467,7 +467,7 @@ msgstr "Prijavi se"
467
467
468#: qml/Greeter/NarrowView.qml:252
468#: qml/Greeter/NarrowView.qml:252
469msgid "Emergency"
469msgid "Emergency"
470−msgstr ""
470+msgstr "Hitno"
471
471
472#: qml/Greeter/SessionsList.qml:122
472#: qml/Greeter/SessionsList.qml:122
473msgid "Select desktop environment"
473msgid "Select desktop environment"
@@ -485,11 +485,11 @@ msgstr "Dodirni za povratak pozivu..."
485msgid "Conference"
485msgid "Conference"
486msgstr "Konferencija"
486msgstr "Konferencija"
487
487
488−#: qml/Panel/Indicators/MenuItemFactory.qml:762
488+#: qml/Panel/Indicators/MenuItemFactory.qml:788
489msgid "Nothing is playing"
489msgid "Nothing is playing"
490msgstr "Ništa se ne reproducira"
490msgstr "Ništa se ne reproducira"
491
491
492−#: qml/Panel/Indicators/MenuItemFactory.qml:891
492+#: qml/Panel/Indicators/MenuItemFactory.qml:916
493#, qt-format
493#, qt-format
494msgid "%1 hour"
494msgid "%1 hour"
495msgid_plural "%1 hours"
495msgid_plural "%1 hours"
@@ -497,7 +497,7 @@ msgstr[0] "%1 sat"
497msgstr[1] "%1 sata"
497msgstr[1] "%1 sata"
498msgstr[2] "%1 sati"
498msgstr[2] "%1 sati"
499
499
500−#: qml/Panel/Indicators/MenuItemFactory.qml:895
500+#: qml/Panel/Indicators/MenuItemFactory.qml:920
501#, qt-format
501#, qt-format
502msgid "%1 minute"
502msgid "%1 minute"
503msgid_plural "%1 minutes"
503msgid_plural "%1 minutes"
@@ -505,7 +505,7 @@ msgstr[0] "%1 minuta"
505msgstr[1] "%1 minute"
505msgstr[1] "%1 minute"
506msgstr[2] "%1 minuta"
506msgstr[2] "%1 minuta"
507
507
508−#: qml/Panel/Indicators/MenuItemFactory.qml:900
508+#: qml/Panel/Indicators/MenuItemFactory.qml:925
509#, qt-format
509#, qt-format
510msgid "%1 second"
510msgid "%1 second"
511msgid_plural "%1 seconds"
511msgid_plural "%1 seconds"
@@ -513,37 +513,37 @@ msgstr[0] "%1 sekunda"
513msgstr[1] "%1 sekunde"
513msgstr[1] "%1 sekunde"
514msgstr[2] "%1 sekundi"
514msgstr[2] "%1 sekundi"
515
515
516−#: qml/Panel/Indicators/MenuItemFactory.qml:903
516+#: qml/Panel/Indicators/MenuItemFactory.qml:928
517msgid "0 seconds"
517msgid "0 seconds"
518msgstr "0 sekundi"
518msgstr "0 sekundi"
519
519
520#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
520#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
521−#: qml/Panel/Indicators/MenuItemFactory.qml:905
521+#: qml/Panel/Indicators/MenuItemFactory.qml:930
522#, qt-format
522#, qt-format
523msgid "%1 remaining"
523msgid "%1 remaining"
524msgstr "%1 preostalo"
524msgstr "%1 preostalo"
525
525
526−#: qml/Panel/Indicators/MenuItemFactory.qml:911
526+#: qml/Panel/Indicators/MenuItemFactory.qml:936
527msgid "In queue…"
527msgid "In queue…"
528msgstr "Na čekanju..."
528msgstr "Na čekanju..."
529
529
530−#: qml/Panel/Indicators/MenuItemFactory.qml:915
530+#: qml/Panel/Indicators/MenuItemFactory.qml:940
531msgid "Downloading"
531msgid "Downloading"
532msgstr "Preuzimanje"
532msgstr "Preuzimanje"
533
533
534−#: qml/Panel/Indicators/MenuItemFactory.qml:917
534+#: qml/Panel/Indicators/MenuItemFactory.qml:942
535msgid "Paused, tap to resume"
535msgid "Paused, tap to resume"
536msgstr "Pauzirano, dodirni za nastavak"
536msgstr "Pauzirano, dodirni za nastavak"
537
537
538−#: qml/Panel/Indicators/MenuItemFactory.qml:919
538+#: qml/Panel/Indicators/MenuItemFactory.qml:944
539msgid "Canceled"
539msgid "Canceled"
540msgstr "Prekinuto"
540msgstr "Prekinuto"
541
541
542−#: qml/Panel/Indicators/MenuItemFactory.qml:921
542+#: qml/Panel/Indicators/MenuItemFactory.qml:946
543msgid "Finished"
543msgid "Finished"
544msgstr "Završeno"
544msgstr "Završeno"
545
545
546−#: qml/Panel/Indicators/MenuItemFactory.qml:923
546+#: qml/Panel/Indicators/MenuItemFactory.qml:948
547msgid "Failed, tap to retry"
547msgid "Failed, tap to retry"
548msgstr "Neuspjelo, dodirni za ponovni pokušaj"
548msgstr "Neuspjelo, dodirni za ponovni pokušaj"
549
549
@@ -563,7 +563,7 @@ msgctxt "Button: Call back on phone"
563msgid "Call back"
563msgid "Call back"
564msgstr "Uzvrati poziv"
564msgstr "Uzvrati poziv"
565
565
566−#: qml/Stages/SideStage.qml:76
566+#: qml/Stage/SideStage.qml:76
567msgid "Drag using 3 fingers any application from one window to the other"
567msgid "Drag using 3 fingers any application from one window to the other"
568msgstr ""
568msgstr ""
569"Povucite pomoću 3 prsta bilo koju aplikaciju iz jednog prozora u drugi"
569"Povucite pomoću 3 prsta bilo koju aplikaciju iz jednog prozora u drugi"
po/hu.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-08-17 10:53+0000\n"
11"PO-Revision-Date: 2016-08-17 10:53+0000\n"
12"Last-Translator: Richard Somlói <ricsipontaz@gmail.com>\n"
12"Last-Translator: Richard Somlói <ricsipontaz@gmail.com>\n"
13"Language-Team: Hungarian <hu@li.org>\n"
13"Language-Team: Hungarian <hu@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:04+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -483,62 +483,62 @@ msgstr "Ide koppintva visszatérhet a híváshoz"
483msgid "Conference"
483msgid "Conference"
484msgstr "Konferencia"
484msgstr "Konferencia"
485
485
486−#: qml/Panel/Indicators/MenuItemFactory.qml:762
486+#: qml/Panel/Indicators/MenuItemFactory.qml:788
487msgid "Nothing is playing"
487msgid "Nothing is playing"
488msgstr "Nincs lejátszás"
488msgstr "Nincs lejátszás"
489
489
490−#: qml/Panel/Indicators/MenuItemFactory.qml:891
490+#: qml/Panel/Indicators/MenuItemFactory.qml:916
491#, qt-format
491#, qt-format
492msgid "%1 hour"
492msgid "%1 hour"
493msgid_plural "%1 hours"
493msgid_plural "%1 hours"
494msgstr[0] "%1 óra"
494msgstr[0] "%1 óra"
495msgstr[1] "%1 óra"
495msgstr[1] "%1 óra"
496
496
497−#: qml/Panel/Indicators/MenuItemFactory.qml:895
497+#: qml/Panel/Indicators/MenuItemFactory.qml:920
498#, qt-format
498#, qt-format
499msgid "%1 minute"
499msgid "%1 minute"
500msgid_plural "%1 minutes"
500msgid_plural "%1 minutes"
501msgstr[0] "%1 perc"
501msgstr[0] "%1 perc"
502msgstr[1] "%1 perc"
502msgstr[1] "%1 perc"
503
503
504−#: qml/Panel/Indicators/MenuItemFactory.qml:900
504+#: qml/Panel/Indicators/MenuItemFactory.qml:925
505#, qt-format
505#, qt-format
506msgid "%1 second"
506msgid "%1 second"
507msgid_plural "%1 seconds"
507msgid_plural "%1 seconds"
508msgstr[0] "%1 másodperc"
508msgstr[0] "%1 másodperc"
509msgstr[1] "%1 másodperc"
509msgstr[1] "%1 másodperc"
510
510
511−#: qml/Panel/Indicators/MenuItemFactory.qml:903
511+#: qml/Panel/Indicators/MenuItemFactory.qml:928
512msgid "0 seconds"
512msgid "0 seconds"
513msgstr "0 másodperc"
513msgstr "0 másodperc"
514
514
515#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
515#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
516−#: qml/Panel/Indicators/MenuItemFactory.qml:905
516+#: qml/Panel/Indicators/MenuItemFactory.qml:930
517#, qt-format
517#, qt-format
518msgid "%1 remaining"
518msgid "%1 remaining"
519msgstr "%1 van hátra"
519msgstr "%1 van hátra"
520
520
521−#: qml/Panel/Indicators/MenuItemFactory.qml:911
521+#: qml/Panel/Indicators/MenuItemFactory.qml:936
522msgid "In queue…"
522msgid "In queue…"
523msgstr "Sorban…"
523msgstr "Sorban…"
524
524
525−#: qml/Panel/Indicators/MenuItemFactory.qml:915
525+#: qml/Panel/Indicators/MenuItemFactory.qml:940
526msgid "Downloading"
526msgid "Downloading"
527msgstr "Letöltés"
527msgstr "Letöltés"
528
528
529−#: qml/Panel/Indicators/MenuItemFactory.qml:917
529+#: qml/Panel/Indicators/MenuItemFactory.qml:942
530msgid "Paused, tap to resume"
530msgid "Paused, tap to resume"
531msgstr "Szüneteltetve, koppintson a folytatáshoz"
531msgstr "Szüneteltetve, koppintson a folytatáshoz"
532
532
533−#: qml/Panel/Indicators/MenuItemFactory.qml:919
533+#: qml/Panel/Indicators/MenuItemFactory.qml:944
534msgid "Canceled"
534msgid "Canceled"
535msgstr "Megszakítva"
535msgstr "Megszakítva"
536
536
537−#: qml/Panel/Indicators/MenuItemFactory.qml:921
537+#: qml/Panel/Indicators/MenuItemFactory.qml:946
538msgid "Finished"
538msgid "Finished"
539msgstr "Befejeződött"
539msgstr "Befejeződött"
540
540
541−#: qml/Panel/Indicators/MenuItemFactory.qml:923
541+#: qml/Panel/Indicators/MenuItemFactory.qml:948
542msgid "Failed, tap to retry"
542msgid "Failed, tap to retry"
543msgstr "Sikertelen, koppintson az újrapróbáláshoz"
543msgstr "Sikertelen, koppintson az újrapróbáláshoz"
544
544
@@ -558,7 +558,7 @@ msgctxt "Button: Call back on phone"
558msgid "Call back"
558msgid "Call back"
559msgstr "Visszahívás"
559msgstr "Visszahívás"
560
560
561−#: qml/Stages/SideStage.qml:76
561+#: qml/Stage/SideStage.qml:76
562msgid "Drag using 3 fingers any application from one window to the other"
562msgid "Drag using 3 fingers any application from one window to the other"
563msgstr ""
563msgstr ""
564"Az alkalmazások 3 ujjal megragadva húzhatóak egyik ablakból a másikba"
564"Az alkalmazások 3 ujjal megragadva húzhatóak egyik ablakból a másikba"
po/hy.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2014-10-28 06:34+0000\n"
11"PO-Revision-Date: 2014-10-28 06:34+0000\n"
12"Last-Translator: Vahan Harutyunyan <Unknown>\n"
12"Last-Translator: Vahan Harutyunyan <Unknown>\n"
13"Language-Team: Armenian <hy@li.org>\n"
13"Language-Team: Armenian <hy@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:03+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:53+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -481,62 +481,62 @@ msgstr ""
481msgid "Conference"
481msgid "Conference"
482msgstr ""
482msgstr ""
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:762
484+#: qml/Panel/Indicators/MenuItemFactory.qml:788
485msgid "Nothing is playing"
485msgid "Nothing is playing"
486msgstr ""
486msgstr ""
487
487
488−#: qml/Panel/Indicators/MenuItemFactory.qml:891
488+#: qml/Panel/Indicators/MenuItemFactory.qml:916
489#, qt-format
489#, qt-format
490msgid "%1 hour"
490msgid "%1 hour"
491msgid_plural "%1 hours"
491msgid_plural "%1 hours"
492msgstr[0] ""
492msgstr[0] ""
493msgstr[1] ""
493msgstr[1] ""
494
494
495−#: qml/Panel/Indicators/MenuItemFactory.qml:895
495+#: qml/Panel/Indicators/MenuItemFactory.qml:920
496#, qt-format
496#, qt-format
497msgid "%1 minute"
497msgid "%1 minute"
498msgid_plural "%1 minutes"
498msgid_plural "%1 minutes"
499msgstr[0] ""
499msgstr[0] ""
500msgstr[1] ""
500msgstr[1] ""
501
501
502−#: qml/Panel/Indicators/MenuItemFactory.qml:900
502+#: qml/Panel/Indicators/MenuItemFactory.qml:925
503#, qt-format
503#, qt-format
504msgid "%1 second"
504msgid "%1 second"
505msgid_plural "%1 seconds"
505msgid_plural "%1 seconds"
506msgstr[0] ""
506msgstr[0] ""
507msgstr[1] ""
507msgstr[1] ""
508
508
509−#: qml/Panel/Indicators/MenuItemFactory.qml:903
509+#: qml/Panel/Indicators/MenuItemFactory.qml:928
510msgid "0 seconds"
510msgid "0 seconds"
511msgstr ""
511msgstr ""
512
512
513#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
513#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
514−#: qml/Panel/Indicators/MenuItemFactory.qml:905
514+#: qml/Panel/Indicators/MenuItemFactory.qml:930
515#, qt-format
515#, qt-format
516msgid "%1 remaining"
516msgid "%1 remaining"
517msgstr ""
517msgstr ""
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:911
519+#: qml/Panel/Indicators/MenuItemFactory.qml:936
520msgid "In queue…"
520msgid "In queue…"
521msgstr "Հերթում..."
521msgstr "Հերթում..."
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:915
523+#: qml/Panel/Indicators/MenuItemFactory.qml:940
524msgid "Downloading"
524msgid "Downloading"
525msgstr "Ներբեռնում"
525msgstr "Ներբեռնում"
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:917
527+#: qml/Panel/Indicators/MenuItemFactory.qml:942
528msgid "Paused, tap to resume"
528msgid "Paused, tap to resume"
529msgstr ""
529msgstr ""
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:919
531+#: qml/Panel/Indicators/MenuItemFactory.qml:944
532msgid "Canceled"
532msgid "Canceled"
533msgstr "Չեղյալ է համարված"
533msgstr "Չեղյալ է համարված"
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:921
535+#: qml/Panel/Indicators/MenuItemFactory.qml:946
536msgid "Finished"
536msgid "Finished"
537msgstr "Ավարտված է"
537msgstr "Ավարտված է"
538
538
539−#: qml/Panel/Indicators/MenuItemFactory.qml:923
539+#: qml/Panel/Indicators/MenuItemFactory.qml:948
540msgid "Failed, tap to retry"
540msgid "Failed, tap to retry"
541msgstr ""
541msgstr ""
542
542
@@ -556,7 +556,7 @@ msgctxt "Button: Call back on phone"
556msgid "Call back"
556msgid "Call back"
557msgstr ""
557msgstr ""
558
558
559−#: qml/Stages/SideStage.qml:76
559+#: qml/Stage/SideStage.qml:76
560msgid "Drag using 3 fingers any application from one window to the other"
560msgid "Drag using 3 fingers any application from one window to the other"
561msgstr ""
561msgstr ""
562
562
po/ia.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2015-08-25 19:31+0000\n"
11"PO-Revision-Date: 2015-08-25 19:31+0000\n"
12"Last-Translator: karm <melo@carmu.com>\n"
12"Last-Translator: karm <melo@carmu.com>\n"
13"Language-Team: Interlingua <ia@li.org>\n"
13"Language-Team: Interlingua <ia@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:04+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -483,62 +483,62 @@ msgstr "Colpar pro retornar al appello..."
483msgid "Conference"
483msgid "Conference"
484msgstr "Conferentia"
484msgstr "Conferentia"
485
485
486−#: qml/Panel/Indicators/MenuItemFactory.qml:762
486+#: qml/Panel/Indicators/MenuItemFactory.qml:788
487msgid "Nothing is playing"
487msgid "Nothing is playing"
488msgstr "Nil es jocante"
488msgstr "Nil es jocante"
489
489
490−#: qml/Panel/Indicators/MenuItemFactory.qml:891
490+#: qml/Panel/Indicators/MenuItemFactory.qml:916
491#, qt-format
491#, qt-format
492msgid "%1 hour"
492msgid "%1 hour"
493msgid_plural "%1 hours"
493msgid_plural "%1 hours"
494msgstr[0] "%1 hora"
494msgstr[0] "%1 hora"
495msgstr[1] "%1 horas"
495msgstr[1] "%1 horas"
496
496
497−#: qml/Panel/Indicators/MenuItemFactory.qml:895
497+#: qml/Panel/Indicators/MenuItemFactory.qml:920
498#, qt-format
498#, qt-format
499msgid "%1 minute"
499msgid "%1 minute"
500msgid_plural "%1 minutes"
500msgid_plural "%1 minutes"
501msgstr[0] "%1 minuta"
501msgstr[0] "%1 minuta"
502msgstr[1] "%1 minutas"
502msgstr[1] "%1 minutas"
503
503
504−#: qml/Panel/Indicators/MenuItemFactory.qml:900
504+#: qml/Panel/Indicators/MenuItemFactory.qml:925
505#, qt-format
505#, qt-format
506msgid "%1 second"
506msgid "%1 second"
507msgid_plural "%1 seconds"
507msgid_plural "%1 seconds"
508msgstr[0] "%1 secunda"
508msgstr[0] "%1 secunda"
509msgstr[1] "%1 secundas"
509msgstr[1] "%1 secundas"
510
510
511−#: qml/Panel/Indicators/MenuItemFactory.qml:903
511+#: qml/Panel/Indicators/MenuItemFactory.qml:928
512msgid "0 seconds"
512msgid "0 seconds"
513msgstr "0 secundas"
513msgstr "0 secundas"
514
514
515#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
515#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
516−#: qml/Panel/Indicators/MenuItemFactory.qml:905
516+#: qml/Panel/Indicators/MenuItemFactory.qml:930
517#, qt-format
517#, qt-format
518msgid "%1 remaining"
518msgid "%1 remaining"
519msgstr "%1 restante"
519msgstr "%1 restante"
520
520
521−#: qml/Panel/Indicators/MenuItemFactory.qml:911
521+#: qml/Panel/Indicators/MenuItemFactory.qml:936
522msgid "In queue…"
522msgid "In queue…"
523msgstr "In cauda…"
523msgstr "In cauda…"
524
524
525−#: qml/Panel/Indicators/MenuItemFactory.qml:915
525+#: qml/Panel/Indicators/MenuItemFactory.qml:940
526msgid "Downloading"
526msgid "Downloading"
527msgstr "Discargante"
527msgstr "Discargante"
528
528
529−#: qml/Panel/Indicators/MenuItemFactory.qml:917
529+#: qml/Panel/Indicators/MenuItemFactory.qml:942
530msgid "Paused, tap to resume"
530msgid "Paused, tap to resume"
531msgstr "In pausa, colpar pro reprender"
531msgstr "In pausa, colpar pro reprender"
532
532
533−#: qml/Panel/Indicators/MenuItemFactory.qml:919
533+#: qml/Panel/Indicators/MenuItemFactory.qml:944
534msgid "Canceled"
534msgid "Canceled"
535msgstr "Cancellate"
535msgstr "Cancellate"
536
536
537−#: qml/Panel/Indicators/MenuItemFactory.qml:921
537+#: qml/Panel/Indicators/MenuItemFactory.qml:946
538msgid "Finished"
538msgid "Finished"
539msgstr "Finite"
539msgstr "Finite"
540
540
541−#: qml/Panel/Indicators/MenuItemFactory.qml:923
541+#: qml/Panel/Indicators/MenuItemFactory.qml:948
542msgid "Failed, tap to retry"
542msgid "Failed, tap to retry"
543msgstr "Fallite, colpar pro re-provar"
543msgstr "Fallite, colpar pro re-provar"
544
544
@@ -558,7 +558,7 @@ msgctxt "Button: Call back on phone"
558msgid "Call back"
558msgid "Call back"
559msgstr "Appellar retro"
559msgstr "Appellar retro"
560
560
561−#: qml/Stages/SideStage.qml:76
561+#: qml/Stage/SideStage.qml:76
562msgid "Drag using 3 fingers any application from one window to the other"
562msgid "Drag using 3 fingers any application from one window to the other"
563msgstr "Tirar per 3 digitos qualcunque application ab un fenestra al altere"
563msgstr "Tirar per 3 digitos qualcunque application ab un fenestra al altere"
564
564
po/id.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2013-06-26 22:35+0000\n"
11"PO-Revision-Date: 2013-06-26 22:35+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Indonesian <id@li.org>\n"
13"Language-Team: Indonesian <id@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:04+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -480,62 +480,62 @@ msgstr "Ketuk untuk kembali ke panggilan..."
480msgid "Conference"
480msgid "Conference"
481msgstr "Konferensi"
481msgstr "Konferensi"
482
482
483−#: qml/Panel/Indicators/MenuItemFactory.qml:762
483+#: qml/Panel/Indicators/MenuItemFactory.qml:788
484msgid "Nothing is playing"
484msgid "Nothing is playing"
485msgstr "Tak ada yang sedang diputar"
485msgstr "Tak ada yang sedang diputar"
486
486
487−#: qml/Panel/Indicators/MenuItemFactory.qml:891
487+#: qml/Panel/Indicators/MenuItemFactory.qml:916
488#, qt-format
488#, qt-format
489msgid "%1 hour"
489msgid "%1 hour"
490msgid_plural "%1 hours"
490msgid_plural "%1 hours"
491msgstr[0] ""
491msgstr[0] ""
492msgstr[1] ""
492msgstr[1] ""
493
493
494−#: qml/Panel/Indicators/MenuItemFactory.qml:895
494+#: qml/Panel/Indicators/MenuItemFactory.qml:920
495#, qt-format
495#, qt-format
496msgid "%1 minute"
496msgid "%1 minute"
497msgid_plural "%1 minutes"
497msgid_plural "%1 minutes"
498msgstr[0] ""
498msgstr[0] ""
499msgstr[1] ""
499msgstr[1] ""
500
500
501−#: qml/Panel/Indicators/MenuItemFactory.qml:900
501+#: qml/Panel/Indicators/MenuItemFactory.qml:925
502#, qt-format
502#, qt-format
503msgid "%1 second"
503msgid "%1 second"
504msgid_plural "%1 seconds"
504msgid_plural "%1 seconds"
505msgstr[0] ""
505msgstr[0] ""
506msgstr[1] ""
506msgstr[1] ""
507
507
508−#: qml/Panel/Indicators/MenuItemFactory.qml:903
508+#: qml/Panel/Indicators/MenuItemFactory.qml:928
509msgid "0 seconds"
509msgid "0 seconds"
510msgstr ""
510msgstr ""
511
511
512#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
512#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
513−#: qml/Panel/Indicators/MenuItemFactory.qml:905
513+#: qml/Panel/Indicators/MenuItemFactory.qml:930
514#, qt-format
514#, qt-format
515msgid "%1 remaining"
515msgid "%1 remaining"
516msgstr ""
516msgstr ""
517
517
518−#: qml/Panel/Indicators/MenuItemFactory.qml:911
518+#: qml/Panel/Indicators/MenuItemFactory.qml:936
519msgid "In queue…"
519msgid "In queue…"
520msgstr "Dalam antrian..."
520msgstr "Dalam antrian..."
521
521
522−#: qml/Panel/Indicators/MenuItemFactory.qml:915
522+#: qml/Panel/Indicators/MenuItemFactory.qml:940
523msgid "Downloading"
523msgid "Downloading"
524msgstr "Sedang mengunduh"
524msgstr "Sedang mengunduh"
525
525
526−#: qml/Panel/Indicators/MenuItemFactory.qml:917
526+#: qml/Panel/Indicators/MenuItemFactory.qml:942
527msgid "Paused, tap to resume"
527msgid "Paused, tap to resume"
528msgstr "Jeda, ketuk untuk melanjutkan"
528msgstr "Jeda, ketuk untuk melanjutkan"
529
529
530−#: qml/Panel/Indicators/MenuItemFactory.qml:919
530+#: qml/Panel/Indicators/MenuItemFactory.qml:944
531msgid "Canceled"
531msgid "Canceled"
532msgstr "Dibatalkan"
532msgstr "Dibatalkan"
533
533
534−#: qml/Panel/Indicators/MenuItemFactory.qml:921
534+#: qml/Panel/Indicators/MenuItemFactory.qml:946
535msgid "Finished"
535msgid "Finished"
536msgstr "Selesai"
536msgstr "Selesai"
537
537
538−#: qml/Panel/Indicators/MenuItemFactory.qml:923
538+#: qml/Panel/Indicators/MenuItemFactory.qml:948
539msgid "Failed, tap to retry"
539msgid "Failed, tap to retry"
540msgstr "Gagal, ketuk untuk mencoba ulang"
540msgstr "Gagal, ketuk untuk mencoba ulang"
541
541
@@ -555,7 +555,7 @@ msgctxt "Button: Call back on phone"
555msgid "Call back"
555msgid "Call back"
556msgstr ""
556msgstr ""
557
557
558−#: qml/Stages/SideStage.qml:76
558+#: qml/Stage/SideStage.qml:76
559msgid "Drag using 3 fingers any application from one window to the other"
559msgid "Drag using 3 fingers any application from one window to the other"
560msgstr ""
560msgstr ""
561
561
po/is.po+16−16
@@ -9,7 +9,7 @@ msgid ""
9msgstr ""
9msgstr ""
10"Project-Id-Version: po_unity8-is\n"
10"Project-Id-Version: po_unity8-is\n"
11"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
12−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
12+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
13"PO-Revision-Date: 2014-11-13 09:32+0000\n"
13"PO-Revision-Date: 2014-11-13 09:32+0000\n"
14"Last-Translator: Sveinn í Felli <sv1@fellsnet.is>\n"
14"Last-Translator: Sveinn í Felli <sv1@fellsnet.is>\n"
15"Language-Team: Icelandic <translation-team-is@lists.sourceforge.net>\n"
15"Language-Team: Icelandic <translation-team-is@lists.sourceforge.net>\n"
@@ -17,8 +17,8 @@ msgstr ""
17"Content-Type: text/plain; charset=UTF-8\n"
17"Content-Type: text/plain; charset=UTF-8\n"
18"Content-Transfer-Encoding: 8bit\n"
18"Content-Transfer-Encoding: 8bit\n"
19"Plural-Forms: nplurals=2; plural=n != 1;\n"
19"Plural-Forms: nplurals=2; plural=n != 1;\n"
20−"X-Launchpad-Export-Date: 2016-09-27 07:04+0000\n"
20+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
21−"X-Generator: Launchpad (build 18204)\n"
21+"X-Generator: Launchpad (build 18246)\n"
22"Language: is\n"
22"Language: is\n"
23
23
24#: plugins/LightDM/Greeter.cpp:123
24#: plugins/LightDM/Greeter.cpp:123
@@ -486,62 +486,62 @@ msgstr "Slá til að svara símtali..."
486msgid "Conference"
486msgid "Conference"
487msgstr "Ráðstefna"
487msgstr "Ráðstefna"
488
488
489−#: qml/Panel/Indicators/MenuItemFactory.qml:762
489+#: qml/Panel/Indicators/MenuItemFactory.qml:788
490msgid "Nothing is playing"
490msgid "Nothing is playing"
491msgstr "Ekkert er í afspilun"
491msgstr "Ekkert er í afspilun"
492
492
493−#: qml/Panel/Indicators/MenuItemFactory.qml:891
493+#: qml/Panel/Indicators/MenuItemFactory.qml:916
494#, qt-format
494#, qt-format
495msgid "%1 hour"
495msgid "%1 hour"
496msgid_plural "%1 hours"
496msgid_plural "%1 hours"
497msgstr[0] ""
497msgstr[0] ""
498msgstr[1] ""
498msgstr[1] ""
499
499
500−#: qml/Panel/Indicators/MenuItemFactory.qml:895
500+#: qml/Panel/Indicators/MenuItemFactory.qml:920
501#, qt-format
501#, qt-format
502msgid "%1 minute"
502msgid "%1 minute"
503msgid_plural "%1 minutes"
503msgid_plural "%1 minutes"
504msgstr[0] ""
504msgstr[0] ""
505msgstr[1] ""
505msgstr[1] ""
506
506
507−#: qml/Panel/Indicators/MenuItemFactory.qml:900
507+#: qml/Panel/Indicators/MenuItemFactory.qml:925
508#, qt-format
508#, qt-format
509msgid "%1 second"
509msgid "%1 second"
510msgid_plural "%1 seconds"
510msgid_plural "%1 seconds"
511msgstr[0] ""
511msgstr[0] ""
512msgstr[1] ""
512msgstr[1] ""
513
513
514−#: qml/Panel/Indicators/MenuItemFactory.qml:903
514+#: qml/Panel/Indicators/MenuItemFactory.qml:928
515msgid "0 seconds"
515msgid "0 seconds"
516msgstr ""
516msgstr ""
517
517
518#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
518#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
519−#: qml/Panel/Indicators/MenuItemFactory.qml:905
519+#: qml/Panel/Indicators/MenuItemFactory.qml:930
520#, qt-format
520#, qt-format
521msgid "%1 remaining"
521msgid "%1 remaining"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Panel/Indicators/MenuItemFactory.qml:911
524+#: qml/Panel/Indicators/MenuItemFactory.qml:936
525msgid "In queue…"
525msgid "In queue…"
526msgstr "Í biðröð..."
526msgstr "Í biðröð..."
527
527
528−#: qml/Panel/Indicators/MenuItemFactory.qml:915
528+#: qml/Panel/Indicators/MenuItemFactory.qml:940
529msgid "Downloading"
529msgid "Downloading"
530msgstr "Sæki"
530msgstr "Sæki"
531
531
532−#: qml/Panel/Indicators/MenuItemFactory.qml:917
532+#: qml/Panel/Indicators/MenuItemFactory.qml:942
533msgid "Paused, tap to resume"
533msgid "Paused, tap to resume"
534msgstr "Í bið, sláðu létt til að halda áfram"
534msgstr "Í bið, sláðu létt til að halda áfram"
535
535
536−#: qml/Panel/Indicators/MenuItemFactory.qml:919
536+#: qml/Panel/Indicators/MenuItemFactory.qml:944
537msgid "Canceled"
537msgid "Canceled"
538msgstr "Hætt við"
538msgstr "Hætt við"
539
539
540−#: qml/Panel/Indicators/MenuItemFactory.qml:921
540+#: qml/Panel/Indicators/MenuItemFactory.qml:946
541msgid "Finished"
541msgid "Finished"
542msgstr "Lokið"
542msgstr "Lokið"
543
543
544−#: qml/Panel/Indicators/MenuItemFactory.qml:923
544+#: qml/Panel/Indicators/MenuItemFactory.qml:948
545msgid "Failed, tap to retry"
545msgid "Failed, tap to retry"
546msgstr "Mistókst, sláðu létt til að reyna aftur"
546msgstr "Mistókst, sláðu létt til að reyna aftur"
547
547
@@ -561,7 +561,7 @@ msgctxt "Button: Call back on phone"
561msgid "Call back"
561msgid "Call back"
562msgstr ""
562msgstr ""
563
563
564−#: qml/Stages/SideStage.qml:76
564+#: qml/Stage/SideStage.qml:76
565msgid "Drag using 3 fingers any application from one window to the other"
565msgid "Drag using 3 fingers any application from one window to the other"
566msgstr ""
566msgstr ""
567
567
po/it.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-09-11 10:40+0000\n"
11"PO-Revision-Date: 2016-09-11 10:40+0000\n"
12"Last-Translator: Claudio Arseni <claudio.arseni@gmail.com>\n"
12"Last-Translator: Claudio Arseni <claudio.arseni@gmail.com>\n"
13"Language-Team: Italian <it@li.org>\n"
13"Language-Team: Italian <it@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:04+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -487,62 +487,62 @@ msgstr "Tocca per tornare alla chiamata..."
487msgid "Conference"
487msgid "Conference"
488msgstr "Conferenza"
488msgstr "Conferenza"
489
489
490−#: qml/Panel/Indicators/MenuItemFactory.qml:762
490+#: qml/Panel/Indicators/MenuItemFactory.qml:788
491msgid "Nothing is playing"
491msgid "Nothing is playing"
492msgstr "Niente in riproduzione"
492msgstr "Niente in riproduzione"
493
493
494−#: qml/Panel/Indicators/MenuItemFactory.qml:891
494+#: qml/Panel/Indicators/MenuItemFactory.qml:916
495#, qt-format
495#, qt-format
496msgid "%1 hour"
496msgid "%1 hour"
497msgid_plural "%1 hours"
497msgid_plural "%1 hours"
498msgstr[0] "%1 ora"
498msgstr[0] "%1 ora"
499msgstr[1] "%1 ore"
499msgstr[1] "%1 ore"
500
500
501−#: qml/Panel/Indicators/MenuItemFactory.qml:895
501+#: qml/Panel/Indicators/MenuItemFactory.qml:920
502#, qt-format
502#, qt-format
503msgid "%1 minute"
503msgid "%1 minute"
504msgid_plural "%1 minutes"
504msgid_plural "%1 minutes"
505msgstr[0] "%1 minuto"
505msgstr[0] "%1 minuto"
506msgstr[1] "%1 minuti"
506msgstr[1] "%1 minuti"
507
507
508−#: qml/Panel/Indicators/MenuItemFactory.qml:900
508+#: qml/Panel/Indicators/MenuItemFactory.qml:925
509#, qt-format
509#, qt-format
510msgid "%1 second"
510msgid "%1 second"
511msgid_plural "%1 seconds"
511msgid_plural "%1 seconds"
512msgstr[0] "%1 secondo"
512msgstr[0] "%1 secondo"
513msgstr[1] "%1 secondi"
513msgstr[1] "%1 secondi"
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:903
515+#: qml/Panel/Indicators/MenuItemFactory.qml:928
516msgid "0 seconds"
516msgid "0 seconds"
517msgstr "0 secondi"
517msgstr "0 secondi"
518
518
519#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
519#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
520−#: qml/Panel/Indicators/MenuItemFactory.qml:905
520+#: qml/Panel/Indicators/MenuItemFactory.qml:930
521#, qt-format
521#, qt-format
522msgid "%1 remaining"
522msgid "%1 remaining"
523msgstr "Tempo residuo: %1"
523msgstr "Tempo residuo: %1"
524
524
525−#: qml/Panel/Indicators/MenuItemFactory.qml:911
525+#: qml/Panel/Indicators/MenuItemFactory.qml:936
526msgid "In queue…"
526msgid "In queue…"
527msgstr "In coda..."
527msgstr "In coda..."
528
528
529−#: qml/Panel/Indicators/MenuItemFactory.qml:915
529+#: qml/Panel/Indicators/MenuItemFactory.qml:940
530msgid "Downloading"
530msgid "Downloading"
531msgstr "Scaricamento in corso"
531msgstr "Scaricamento in corso"
532
532
533−#: qml/Panel/Indicators/MenuItemFactory.qml:917
533+#: qml/Panel/Indicators/MenuItemFactory.qml:942
534msgid "Paused, tap to resume"
534msgid "Paused, tap to resume"
535msgstr "In pausa. Tocca per riprendere"
535msgstr "In pausa. Tocca per riprendere"
536
536
537−#: qml/Panel/Indicators/MenuItemFactory.qml:919
537+#: qml/Panel/Indicators/MenuItemFactory.qml:944
538msgid "Canceled"
538msgid "Canceled"
539msgstr "Annullato"
539msgstr "Annullato"
540
540
541−#: qml/Panel/Indicators/MenuItemFactory.qml:921
541+#: qml/Panel/Indicators/MenuItemFactory.qml:946
542msgid "Finished"
542msgid "Finished"
543msgstr "Completato"
543msgstr "Completato"
544
544
545−#: qml/Panel/Indicators/MenuItemFactory.qml:923
545+#: qml/Panel/Indicators/MenuItemFactory.qml:948
546msgid "Failed, tap to retry"
546msgid "Failed, tap to retry"
547msgstr "Non riuscito. Tocca per riprovare"
547msgstr "Non riuscito. Tocca per riprovare"
548
548
@@ -562,7 +562,7 @@ msgctxt "Button: Call back on phone"
562msgid "Call back"
562msgid "Call back"
563msgstr "Richiama"
563msgstr "Richiama"
564
564
565−#: qml/Stages/SideStage.qml:76
565+#: qml/Stage/SideStage.qml:76
566msgid "Drag using 3 fingers any application from one window to the other"
566msgid "Drag using 3 fingers any application from one window to the other"
567msgstr ""
567msgstr ""
568"Trascinare con 3 dita qualsiasi applicazione da una finestra all'altra"
568"Trascinare con 3 dita qualsiasi applicazione da una finestra all'altra"
po/ja.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2015-10-05 10:05+0000\n"
11"PO-Revision-Date: 2015-10-05 10:05+0000\n"
12"Last-Translator: Kentaro Kazuhama <Unknown>\n"
12"Last-Translator: Kentaro Kazuhama <Unknown>\n"
13"Language-Team: Japanese <ja@li.org>\n"
13"Language-Team: Japanese <ja@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:04+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -476,62 +476,62 @@ msgstr "タップすると通話に戻ります..."
476msgid "Conference"
476msgid "Conference"
477msgstr "グループ通話"
477msgstr "グループ通話"
478
478
479−#: qml/Panel/Indicators/MenuItemFactory.qml:762
479+#: qml/Panel/Indicators/MenuItemFactory.qml:788
480msgid "Nothing is playing"
480msgid "Nothing is playing"
481msgstr "再生するものがありません"
481msgstr "再生するものがありません"
482
482
483−#: qml/Panel/Indicators/MenuItemFactory.qml:891
483+#: qml/Panel/Indicators/MenuItemFactory.qml:916
484#, qt-format
484#, qt-format
485msgid "%1 hour"
485msgid "%1 hour"
486msgid_plural "%1 hours"
486msgid_plural "%1 hours"
487msgstr[0] ""
487msgstr[0] ""
488msgstr[1] ""
488msgstr[1] ""
489
489
490−#: qml/Panel/Indicators/MenuItemFactory.qml:895
490+#: qml/Panel/Indicators/MenuItemFactory.qml:920
491#, qt-format
491#, qt-format
492msgid "%1 minute"
492msgid "%1 minute"
493msgid_plural "%1 minutes"
493msgid_plural "%1 minutes"
494msgstr[0] ""
494msgstr[0] ""
495msgstr[1] ""
495msgstr[1] ""
496
496
497−#: qml/Panel/Indicators/MenuItemFactory.qml:900
497+#: qml/Panel/Indicators/MenuItemFactory.qml:925
498#, qt-format
498#, qt-format
499msgid "%1 second"
499msgid "%1 second"
500msgid_plural "%1 seconds"
500msgid_plural "%1 seconds"
501msgstr[0] ""
501msgstr[0] ""
502msgstr[1] ""
502msgstr[1] ""
503
503
504−#: qml/Panel/Indicators/MenuItemFactory.qml:903
504+#: qml/Panel/Indicators/MenuItemFactory.qml:928
505msgid "0 seconds"
505msgid "0 seconds"
506msgstr ""
506msgstr ""
507
507
508#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
508#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
509−#: qml/Panel/Indicators/MenuItemFactory.qml:905
509+#: qml/Panel/Indicators/MenuItemFactory.qml:930
510#, qt-format
510#, qt-format
511msgid "%1 remaining"
511msgid "%1 remaining"
512msgstr ""
512msgstr ""
513
513
514−#: qml/Panel/Indicators/MenuItemFactory.qml:911
514+#: qml/Panel/Indicators/MenuItemFactory.qml:936
515msgid "In queue…"
515msgid "In queue…"
516msgstr "開始待ち..."
516msgstr "開始待ち..."
517
517
518−#: qml/Panel/Indicators/MenuItemFactory.qml:915
518+#: qml/Panel/Indicators/MenuItemFactory.qml:940
519msgid "Downloading"
519msgid "Downloading"
520msgstr "ダウンロード中"
520msgstr "ダウンロード中"
521
521
522−#: qml/Panel/Indicators/MenuItemFactory.qml:917
522+#: qml/Panel/Indicators/MenuItemFactory.qml:942
523msgid "Paused, tap to resume"
523msgid "Paused, tap to resume"
524msgstr "停止中、再開するにはタップしてください"
524msgstr "停止中、再開するにはタップしてください"
525
525
526−#: qml/Panel/Indicators/MenuItemFactory.qml:919
526+#: qml/Panel/Indicators/MenuItemFactory.qml:944
527msgid "Canceled"
527msgid "Canceled"
528msgstr "中止しました"
528msgstr "中止しました"
529
529
530−#: qml/Panel/Indicators/MenuItemFactory.qml:921
530+#: qml/Panel/Indicators/MenuItemFactory.qml:946
531msgid "Finished"
531msgid "Finished"
532msgstr "完了しました"
532msgstr "完了しました"
533
533
534−#: qml/Panel/Indicators/MenuItemFactory.qml:923
534+#: qml/Panel/Indicators/MenuItemFactory.qml:948
535msgid "Failed, tap to retry"
535msgid "Failed, tap to retry"
536msgstr "失敗しました、再試行するにはタップしてください"
536msgstr "失敗しました、再試行するにはタップしてください"
537
537
@@ -551,7 +551,7 @@ msgctxt "Button: Call back on phone"
551msgid "Call back"
551msgid "Call back"
552msgstr ""
552msgstr ""
553
553
554−#: qml/Stages/SideStage.qml:76
554+#: qml/Stage/SideStage.qml:76
555msgid "Drag using 3 fingers any application from one window to the other"
555msgid "Drag using 3 fingers any application from one window to the other"
556msgstr ""
556msgstr ""
557
557
po/km.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2014-08-20 02:48+0000\n"
11"PO-Revision-Date: 2014-08-20 02:48+0000\n"
12"Last-Translator: Sophea Sok <sksophea@gmail.com>\n"
12"Last-Translator: Sophea Sok <sksophea@gmail.com>\n"
13"Language-Team: Khmer <km@li.org>\n"
13"Language-Team: Khmer <km@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:04+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -479,59 +479,59 @@ msgstr "ប៉ះ​ដើម្បី​ត្រឡប់​ទៅ​ការ
479msgid "Conference"
479msgid "Conference"
480msgstr "សន្និសីទ"
480msgstr "សន្និសីទ"
481
481
482−#: qml/Panel/Indicators/MenuItemFactory.qml:762
482+#: qml/Panel/Indicators/MenuItemFactory.qml:788
483msgid "Nothing is playing"
483msgid "Nothing is playing"
484msgstr ""
484msgstr ""
485
485
486−#: qml/Panel/Indicators/MenuItemFactory.qml:891
486+#: qml/Panel/Indicators/MenuItemFactory.qml:916
487#, qt-format
487#, qt-format
488msgid "%1 hour"
488msgid "%1 hour"
489msgid_plural "%1 hours"
489msgid_plural "%1 hours"
490msgstr[0] "%1 ម៉ោង"
490msgstr[0] "%1 ម៉ោង"
491
491
492−#: qml/Panel/Indicators/MenuItemFactory.qml:895
492+#: qml/Panel/Indicators/MenuItemFactory.qml:920
493#, qt-format
493#, qt-format
494msgid "%1 minute"
494msgid "%1 minute"
495msgid_plural "%1 minutes"
495msgid_plural "%1 minutes"
496msgstr[0] "%1 នាទី"
496msgstr[0] "%1 នាទី"
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:900
498+#: qml/Panel/Indicators/MenuItemFactory.qml:925
499#, qt-format
499#, qt-format
500msgid "%1 second"
500msgid "%1 second"
501msgid_plural "%1 seconds"
501msgid_plural "%1 seconds"
502msgstr[0] "%1 វិនាទី"
502msgstr[0] "%1 វិនាទី"
503
503
504−#: qml/Panel/Indicators/MenuItemFactory.qml:903
504+#: qml/Panel/Indicators/MenuItemFactory.qml:928
505msgid "0 seconds"
505msgid "0 seconds"
506msgstr "០ វិនាទី"
506msgstr "០ វិនាទី"
507
507
508#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
508#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
509−#: qml/Panel/Indicators/MenuItemFactory.qml:905
509+#: qml/Panel/Indicators/MenuItemFactory.qml:930
510#, qt-format
510#, qt-format
511msgid "%1 remaining"
511msgid "%1 remaining"
512msgstr "នៅ​សល់ %1"
512msgstr "នៅ​សល់ %1"
513
513
514−#: qml/Panel/Indicators/MenuItemFactory.qml:911
514+#: qml/Panel/Indicators/MenuItemFactory.qml:936
515msgid "In queue…"
515msgid "In queue…"
516msgstr "ក្នុងជួរ…"
516msgstr "ក្នុងជួរ…"
517
517
518−#: qml/Panel/Indicators/MenuItemFactory.qml:915
518+#: qml/Panel/Indicators/MenuItemFactory.qml:940
519msgid "Downloading"
519msgid "Downloading"
520msgstr "ទាញយក"
520msgstr "ទាញយក"
521
521
522−#: qml/Panel/Indicators/MenuItemFactory.qml:917
522+#: qml/Panel/Indicators/MenuItemFactory.qml:942
523msgid "Paused, tap to resume"
523msgid "Paused, tap to resume"
524msgstr "បាន​ផ្អាក, ប៉ះ ដើម្បីបន្ត"
524msgstr "បាន​ផ្អាក, ប៉ះ ដើម្បីបន្ត"
525
525
526−#: qml/Panel/Indicators/MenuItemFactory.qml:919
526+#: qml/Panel/Indicators/MenuItemFactory.qml:944
527msgid "Canceled"
527msgid "Canceled"
528msgstr "បាន​បោះបង់"
528msgstr "បាន​បោះបង់"
529
529
530−#: qml/Panel/Indicators/MenuItemFactory.qml:921
530+#: qml/Panel/Indicators/MenuItemFactory.qml:946
531msgid "Finished"
531msgid "Finished"
532msgstr "បាន​បញ្ចប់"
532msgstr "បាន​បញ្ចប់"
533
533
534−#: qml/Panel/Indicators/MenuItemFactory.qml:923
534+#: qml/Panel/Indicators/MenuItemFactory.qml:948
535msgid "Failed, tap to retry"
535msgid "Failed, tap to retry"
536msgstr "បាន​បរាជ័យ ប៉ះ​ ដើម្បី​ព្យាយាម​ម្ដង​ទៀត"
536msgstr "បាន​បរាជ័យ ប៉ះ​ ដើម្បី​ព្យាយាម​ម្ដង​ទៀត"
537
537
@@ -551,7 +551,7 @@ msgctxt "Button: Call back on phone"
551msgid "Call back"
551msgid "Call back"
552msgstr "ហៅ​មកវិញ"
552msgstr "ហៅ​មកវិញ"
553
553
554−#: qml/Stages/SideStage.qml:76
554+#: qml/Stage/SideStage.qml:76
555msgid "Drag using 3 fingers any application from one window to the other"
555msgid "Drag using 3 fingers any application from one window to the other"
556msgstr ""
556msgstr ""
557
557
po/kn.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2013-06-27 05:43+0000\n"
11"PO-Revision-Date: 2013-06-27 05:43+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Kannada <kn@li.org>\n"
13"Language-Team: Kannada <kn@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:04+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -477,62 +477,62 @@ msgstr ""
477msgid "Conference"
477msgid "Conference"
478msgstr ""
478msgstr ""
479
479
480−#: qml/Panel/Indicators/MenuItemFactory.qml:762
480+#: qml/Panel/Indicators/MenuItemFactory.qml:788
481msgid "Nothing is playing"
481msgid "Nothing is playing"
482msgstr ""
482msgstr ""
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:891
484+#: qml/Panel/Indicators/MenuItemFactory.qml:916
485#, qt-format
485#, qt-format
486msgid "%1 hour"
486msgid "%1 hour"
487msgid_plural "%1 hours"
487msgid_plural "%1 hours"
488msgstr[0] ""
488msgstr[0] ""
489msgstr[1] ""
489msgstr[1] ""
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:895
491+#: qml/Panel/Indicators/MenuItemFactory.qml:920
492#, qt-format
492#, qt-format
493msgid "%1 minute"
493msgid "%1 minute"
494msgid_plural "%1 minutes"
494msgid_plural "%1 minutes"
495msgstr[0] ""
495msgstr[0] ""
496msgstr[1] ""
496msgstr[1] ""
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:900
498+#: qml/Panel/Indicators/MenuItemFactory.qml:925
499#, qt-format
499#, qt-format
500msgid "%1 second"
500msgid "%1 second"
501msgid_plural "%1 seconds"
501msgid_plural "%1 seconds"
502msgstr[0] ""
502msgstr[0] ""
503msgstr[1] ""
503msgstr[1] ""
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:903
505+#: qml/Panel/Indicators/MenuItemFactory.qml:928
506msgid "0 seconds"
506msgid "0 seconds"
507msgstr ""
507msgstr ""
508
508
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
510−#: qml/Panel/Indicators/MenuItemFactory.qml:905
510+#: qml/Panel/Indicators/MenuItemFactory.qml:930
511#, qt-format
511#, qt-format
512msgid "%1 remaining"
512msgid "%1 remaining"
513msgstr ""
513msgstr ""
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:911
515+#: qml/Panel/Indicators/MenuItemFactory.qml:936
516msgid "In queue…"
516msgid "In queue…"
517msgstr ""
517msgstr ""
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:915
519+#: qml/Panel/Indicators/MenuItemFactory.qml:940
520msgid "Downloading"
520msgid "Downloading"
521msgstr ""
521msgstr ""
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:917
523+#: qml/Panel/Indicators/MenuItemFactory.qml:942
524msgid "Paused, tap to resume"
524msgid "Paused, tap to resume"
525msgstr ""
525msgstr ""
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:919
527+#: qml/Panel/Indicators/MenuItemFactory.qml:944
528msgid "Canceled"
528msgid "Canceled"
529msgstr ""
529msgstr ""
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:921
531+#: qml/Panel/Indicators/MenuItemFactory.qml:946
532msgid "Finished"
532msgid "Finished"
533msgstr ""
533msgstr ""
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:923
535+#: qml/Panel/Indicators/MenuItemFactory.qml:948
536msgid "Failed, tap to retry"
536msgid "Failed, tap to retry"
537msgstr ""
537msgstr ""
538
538
@@ -552,7 +552,7 @@ msgctxt "Button: Call back on phone"
552msgid "Call back"
552msgid "Call back"
553msgstr ""
553msgstr ""
554
554
555−#: qml/Stages/SideStage.qml:76
555+#: qml/Stage/SideStage.qml:76
556msgid "Drag using 3 fingers any application from one window to the other"
556msgid "Drag using 3 fingers any application from one window to the other"
557msgstr ""
557msgstr ""
558
558
po/ko.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2014-08-19 13:02+0000\n"
11"PO-Revision-Date: 2014-08-19 13:02+0000\n"
12"Last-Translator: MinSik CHO <Unknown>\n"
12"Last-Translator: MinSik CHO <Unknown>\n"
13"Language-Team: Korean <ko@li.org>\n"
13"Language-Team: Korean <ko@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:04+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -476,59 +476,59 @@ msgstr "다시 통화하려면 두드려주십시오."
476msgid "Conference"
476msgid "Conference"
477msgstr "회의"
477msgstr "회의"
478
478
479−#: qml/Panel/Indicators/MenuItemFactory.qml:762
479+#: qml/Panel/Indicators/MenuItemFactory.qml:788
480msgid "Nothing is playing"
480msgid "Nothing is playing"
481msgstr "연주하는 항목 없음"
481msgstr "연주하는 항목 없음"
482
482
483−#: qml/Panel/Indicators/MenuItemFactory.qml:891
483+#: qml/Panel/Indicators/MenuItemFactory.qml:916
484#, qt-format
484#, qt-format
485msgid "%1 hour"
485msgid "%1 hour"
486msgid_plural "%1 hours"
486msgid_plural "%1 hours"
487msgstr[0] "%1시간"
487msgstr[0] "%1시간"
488
488
489−#: qml/Panel/Indicators/MenuItemFactory.qml:895
489+#: qml/Panel/Indicators/MenuItemFactory.qml:920
490#, qt-format
490#, qt-format
491msgid "%1 minute"
491msgid "%1 minute"
492msgid_plural "%1 minutes"
492msgid_plural "%1 minutes"
493msgstr[0] "%1분"
493msgstr[0] "%1분"
494
494
495−#: qml/Panel/Indicators/MenuItemFactory.qml:900
495+#: qml/Panel/Indicators/MenuItemFactory.qml:925
496#, qt-format
496#, qt-format
497msgid "%1 second"
497msgid "%1 second"
498msgid_plural "%1 seconds"
498msgid_plural "%1 seconds"
499msgstr[0] "%1초"
499msgstr[0] "%1초"
500
500
501−#: qml/Panel/Indicators/MenuItemFactory.qml:903
501+#: qml/Panel/Indicators/MenuItemFactory.qml:928
502msgid "0 seconds"
502msgid "0 seconds"
503msgstr "0초"
503msgstr "0초"
504
504
505#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
505#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
506−#: qml/Panel/Indicators/MenuItemFactory.qml:905
506+#: qml/Panel/Indicators/MenuItemFactory.qml:930
507#, qt-format
507#, qt-format
508msgid "%1 remaining"
508msgid "%1 remaining"
509msgstr "%1 남음"
509msgstr "%1 남음"
510
510
511−#: qml/Panel/Indicators/MenuItemFactory.qml:911
511+#: qml/Panel/Indicators/MenuItemFactory.qml:936
512msgid "In queue…"
512msgid "In queue…"
513msgstr "대기 중..."
513msgstr "대기 중..."
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:915
515+#: qml/Panel/Indicators/MenuItemFactory.qml:940
516msgid "Downloading"
516msgid "Downloading"
517msgstr "다운로드 중"
517msgstr "다운로드 중"
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:917
519+#: qml/Panel/Indicators/MenuItemFactory.qml:942
520msgid "Paused, tap to resume"
520msgid "Paused, tap to resume"
521msgstr "일시 중지하였습니다. 계속하려면 두드려주십시오."
521msgstr "일시 중지하였습니다. 계속하려면 두드려주십시오."
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:919
523+#: qml/Panel/Indicators/MenuItemFactory.qml:944
524msgid "Canceled"
524msgid "Canceled"
525msgstr "취소함"
525msgstr "취소함"
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:921
527+#: qml/Panel/Indicators/MenuItemFactory.qml:946
528msgid "Finished"
528msgid "Finished"
529msgstr "완료함"
529msgstr "완료함"
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:923
531+#: qml/Panel/Indicators/MenuItemFactory.qml:948
532msgid "Failed, tap to retry"
532msgid "Failed, tap to retry"
533msgstr "실패, 두드리면 다시 시도합니다."
533msgstr "실패, 두드리면 다시 시도합니다."
534
534
@@ -548,7 +548,7 @@ msgctxt "Button: Call back on phone"
548msgid "Call back"
548msgid "Call back"
549msgstr "부재중 번호로 전화"
549msgstr "부재중 번호로 전화"
550
550
551−#: qml/Stages/SideStage.qml:76
551+#: qml/Stage/SideStage.qml:76
552msgid "Drag using 3 fingers any application from one window to the other"
552msgid "Drag using 3 fingers any application from one window to the other"
553msgstr ""
553msgstr ""
554
554
po/ku.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2014-09-10 13:14+0000\n"
11"PO-Revision-Date: 2014-09-10 13:14+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Kurdish <ku@li.org>\n"
13"Language-Team: Kurdish <ku@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:04+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -479,62 +479,62 @@ msgstr "Ji bo vegerî lêgerînê bipelîne..."
479msgid "Conference"
479msgid "Conference"
480msgstr "Konferans"
480msgstr "Konferans"
481
481
482−#: qml/Panel/Indicators/MenuItemFactory.qml:762
482+#: qml/Panel/Indicators/MenuItemFactory.qml:788
483msgid "Nothing is playing"
483msgid "Nothing is playing"
484msgstr ""
484msgstr ""
485
485
486−#: qml/Panel/Indicators/MenuItemFactory.qml:891
486+#: qml/Panel/Indicators/MenuItemFactory.qml:916
487#, qt-format
487#, qt-format
488msgid "%1 hour"
488msgid "%1 hour"
489msgid_plural "%1 hours"
489msgid_plural "%1 hours"
490msgstr[0] ""
490msgstr[0] ""
491msgstr[1] ""
491msgstr[1] ""
492
492
493−#: qml/Panel/Indicators/MenuItemFactory.qml:895
493+#: qml/Panel/Indicators/MenuItemFactory.qml:920
494#, qt-format
494#, qt-format
495msgid "%1 minute"
495msgid "%1 minute"
496msgid_plural "%1 minutes"
496msgid_plural "%1 minutes"
497msgstr[0] ""
497msgstr[0] ""
498msgstr[1] ""
498msgstr[1] ""
499
499
500−#: qml/Panel/Indicators/MenuItemFactory.qml:900
500+#: qml/Panel/Indicators/MenuItemFactory.qml:925
501#, qt-format
501#, qt-format
502msgid "%1 second"
502msgid "%1 second"
503msgid_plural "%1 seconds"
503msgid_plural "%1 seconds"
504msgstr[0] ""
504msgstr[0] ""
505msgstr[1] ""
505msgstr[1] ""
506
506
507−#: qml/Panel/Indicators/MenuItemFactory.qml:903
507+#: qml/Panel/Indicators/MenuItemFactory.qml:928
508msgid "0 seconds"
508msgid "0 seconds"
509msgstr ""
509msgstr ""
510
510
511#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
511#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
512−#: qml/Panel/Indicators/MenuItemFactory.qml:905
512+#: qml/Panel/Indicators/MenuItemFactory.qml:930
513#, qt-format
513#, qt-format
514msgid "%1 remaining"
514msgid "%1 remaining"
515msgstr ""
515msgstr ""
516
516
517−#: qml/Panel/Indicators/MenuItemFactory.qml:911
517+#: qml/Panel/Indicators/MenuItemFactory.qml:936
518msgid "In queue…"
518msgid "In queue…"
519msgstr "Li bendê ye..."
519msgstr "Li bendê ye..."
520
520
521−#: qml/Panel/Indicators/MenuItemFactory.qml:915
521+#: qml/Panel/Indicators/MenuItemFactory.qml:940
522msgid "Downloading"
522msgid "Downloading"
523msgstr "Jêbar dibe..."
523msgstr "Jêbar dibe..."
524
524
525−#: qml/Panel/Indicators/MenuItemFactory.qml:917
525+#: qml/Panel/Indicators/MenuItemFactory.qml:942
526msgid "Paused, tap to resume"
526msgid "Paused, tap to resume"
527msgstr "Hat rawestandin, ji bo dewam bike bipelîne"
527msgstr "Hat rawestandin, ji bo dewam bike bipelîne"
528
528
529−#: qml/Panel/Indicators/MenuItemFactory.qml:919
529+#: qml/Panel/Indicators/MenuItemFactory.qml:944
530msgid "Canceled"
530msgid "Canceled"
531msgstr "Hat betalkirin"
531msgstr "Hat betalkirin"
532
532
533−#: qml/Panel/Indicators/MenuItemFactory.qml:921
533+#: qml/Panel/Indicators/MenuItemFactory.qml:946
534msgid "Finished"
534msgid "Finished"
535msgstr "Qediya"
535msgstr "Qediya"
536
536
537−#: qml/Panel/Indicators/MenuItemFactory.qml:923
537+#: qml/Panel/Indicators/MenuItemFactory.qml:948
538msgid "Failed, tap to retry"
538msgid "Failed, tap to retry"
539msgstr "Bi ser neket, ji bo dewam bike bipelîne"
539msgstr "Bi ser neket, ji bo dewam bike bipelîne"
540
540
@@ -554,7 +554,7 @@ msgctxt "Button: Call back on phone"
554msgid "Call back"
554msgid "Call back"
555msgstr ""
555msgstr ""
556
556
557−#: qml/Stages/SideStage.qml:76
557+#: qml/Stage/SideStage.qml:76
558msgid "Drag using 3 fingers any application from one window to the other"
558msgid "Drag using 3 fingers any application from one window to the other"
559msgstr ""
559msgstr ""
560
560
po/ky.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2013-06-27 06:17+0000\n"
11"PO-Revision-Date: 2013-06-27 06:17+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Kirghiz <ky@li.org>\n"
13"Language-Team: Kirghiz <ky@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:04+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -477,62 +477,62 @@ msgstr ""
477msgid "Conference"
477msgid "Conference"
478msgstr ""
478msgstr ""
479
479
480−#: qml/Panel/Indicators/MenuItemFactory.qml:762
480+#: qml/Panel/Indicators/MenuItemFactory.qml:788
481msgid "Nothing is playing"
481msgid "Nothing is playing"
482msgstr ""
482msgstr ""
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:891
484+#: qml/Panel/Indicators/MenuItemFactory.qml:916
485#, qt-format
485#, qt-format
486msgid "%1 hour"
486msgid "%1 hour"
487msgid_plural "%1 hours"
487msgid_plural "%1 hours"
488msgstr[0] ""
488msgstr[0] ""
489msgstr[1] ""
489msgstr[1] ""
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:895
491+#: qml/Panel/Indicators/MenuItemFactory.qml:920
492#, qt-format
492#, qt-format
493msgid "%1 minute"
493msgid "%1 minute"
494msgid_plural "%1 minutes"
494msgid_plural "%1 minutes"
495msgstr[0] ""
495msgstr[0] ""
496msgstr[1] ""
496msgstr[1] ""
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:900
498+#: qml/Panel/Indicators/MenuItemFactory.qml:925
499#, qt-format
499#, qt-format
500msgid "%1 second"
500msgid "%1 second"
501msgid_plural "%1 seconds"
501msgid_plural "%1 seconds"
502msgstr[0] ""
502msgstr[0] ""
503msgstr[1] ""
503msgstr[1] ""
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:903
505+#: qml/Panel/Indicators/MenuItemFactory.qml:928
506msgid "0 seconds"
506msgid "0 seconds"
507msgstr ""
507msgstr ""
508
508
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
510−#: qml/Panel/Indicators/MenuItemFactory.qml:905
510+#: qml/Panel/Indicators/MenuItemFactory.qml:930
511#, qt-format
511#, qt-format
512msgid "%1 remaining"
512msgid "%1 remaining"
513msgstr ""
513msgstr ""
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:911
515+#: qml/Panel/Indicators/MenuItemFactory.qml:936
516msgid "In queue…"
516msgid "In queue…"
517msgstr ""
517msgstr ""
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:915
519+#: qml/Panel/Indicators/MenuItemFactory.qml:940
520msgid "Downloading"
520msgid "Downloading"
521msgstr ""
521msgstr ""
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:917
523+#: qml/Panel/Indicators/MenuItemFactory.qml:942
524msgid "Paused, tap to resume"
524msgid "Paused, tap to resume"
525msgstr ""
525msgstr ""
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:919
527+#: qml/Panel/Indicators/MenuItemFactory.qml:944
528msgid "Canceled"
528msgid "Canceled"
529msgstr ""
529msgstr ""
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:921
531+#: qml/Panel/Indicators/MenuItemFactory.qml:946
532msgid "Finished"
532msgid "Finished"
533msgstr ""
533msgstr ""
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:923
535+#: qml/Panel/Indicators/MenuItemFactory.qml:948
536msgid "Failed, tap to retry"
536msgid "Failed, tap to retry"
537msgstr ""
537msgstr ""
538
538
@@ -552,7 +552,7 @@ msgctxt "Button: Call back on phone"
552msgid "Call back"
552msgid "Call back"
553msgstr ""
553msgstr ""
554
554
555−#: qml/Stages/SideStage.qml:76
555+#: qml/Stage/SideStage.qml:76
556msgid "Drag using 3 fingers any application from one window to the other"
556msgid "Drag using 3 fingers any application from one window to the other"
557msgstr ""
557msgstr ""
558
558
po/lo.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2013-10-02 10:00+0000\n"
11"PO-Revision-Date: 2013-10-02 10:00+0000\n"
12"Last-Translator: Anousak <anousak@gmail.com>\n"
12"Last-Translator: Anousak <anousak@gmail.com>\n"
13"Language-Team: Lao <lo@li.org>\n"
13"Language-Team: Lao <lo@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:04+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -477,62 +477,62 @@ msgstr ""
477msgid "Conference"
477msgid "Conference"
478msgstr ""
478msgstr ""
479
479
480−#: qml/Panel/Indicators/MenuItemFactory.qml:762
480+#: qml/Panel/Indicators/MenuItemFactory.qml:788
481msgid "Nothing is playing"
481msgid "Nothing is playing"
482msgstr ""
482msgstr ""
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:891
484+#: qml/Panel/Indicators/MenuItemFactory.qml:916
485#, qt-format
485#, qt-format
486msgid "%1 hour"
486msgid "%1 hour"
487msgid_plural "%1 hours"
487msgid_plural "%1 hours"
488msgstr[0] ""
488msgstr[0] ""
489msgstr[1] ""
489msgstr[1] ""
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:895
491+#: qml/Panel/Indicators/MenuItemFactory.qml:920
492#, qt-format
492#, qt-format
493msgid "%1 minute"
493msgid "%1 minute"
494msgid_plural "%1 minutes"
494msgid_plural "%1 minutes"
495msgstr[0] ""
495msgstr[0] ""
496msgstr[1] ""
496msgstr[1] ""
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:900
498+#: qml/Panel/Indicators/MenuItemFactory.qml:925
499#, qt-format
499#, qt-format
500msgid "%1 second"
500msgid "%1 second"
501msgid_plural "%1 seconds"
501msgid_plural "%1 seconds"
502msgstr[0] ""
502msgstr[0] ""
503msgstr[1] ""
503msgstr[1] ""
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:903
505+#: qml/Panel/Indicators/MenuItemFactory.qml:928
506msgid "0 seconds"
506msgid "0 seconds"
507msgstr ""
507msgstr ""
508
508
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
510−#: qml/Panel/Indicators/MenuItemFactory.qml:905
510+#: qml/Panel/Indicators/MenuItemFactory.qml:930
511#, qt-format
511#, qt-format
512msgid "%1 remaining"
512msgid "%1 remaining"
513msgstr ""
513msgstr ""
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:911
515+#: qml/Panel/Indicators/MenuItemFactory.qml:936
516msgid "In queue…"
516msgid "In queue…"
517msgstr ""
517msgstr ""
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:915
519+#: qml/Panel/Indicators/MenuItemFactory.qml:940
520msgid "Downloading"
520msgid "Downloading"
521msgstr ""
521msgstr ""
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:917
523+#: qml/Panel/Indicators/MenuItemFactory.qml:942
524msgid "Paused, tap to resume"
524msgid "Paused, tap to resume"
525msgstr ""
525msgstr ""
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:919
527+#: qml/Panel/Indicators/MenuItemFactory.qml:944
528msgid "Canceled"
528msgid "Canceled"
529msgstr ""
529msgstr ""
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:921
531+#: qml/Panel/Indicators/MenuItemFactory.qml:946
532msgid "Finished"
532msgid "Finished"
533msgstr ""
533msgstr ""
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:923
535+#: qml/Panel/Indicators/MenuItemFactory.qml:948
536msgid "Failed, tap to retry"
536msgid "Failed, tap to retry"
537msgstr ""
537msgstr ""
538
538
@@ -552,7 +552,7 @@ msgctxt "Button: Call back on phone"
552msgid "Call back"
552msgid "Call back"
553msgstr ""
553msgstr ""
554
554
555−#: qml/Stages/SideStage.qml:76
555+#: qml/Stage/SideStage.qml:76
556msgid "Drag using 3 fingers any application from one window to the other"
556msgid "Drag using 3 fingers any application from one window to the other"
557msgstr ""
557msgstr ""
558
558
po/lt.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2014-05-19 17:15+0000\n"
11"PO-Revision-Date: 2014-05-19 17:15+0000\n"
12"Last-Translator: Mantas Kriaučiūnas <mantas@akl.lt>\n"
12"Last-Translator: Mantas Kriaučiūnas <mantas@akl.lt>\n"
13"Language-Team: Lithuanian <lt@li.org>\n"
13"Language-Team: Lithuanian <lt@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"(n%100<10 || n%100>=20) ? 1 : 2;\n"
18"(n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-09-27 07:04+0000\n"
19+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
20−"X-Generator: Launchpad (build 18204)\n"
20+"X-Generator: Launchpad (build 18246)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:123
22#: plugins/LightDM/Greeter.cpp:123
23msgid "Password: "
23msgid "Password: "
@@ -478,62 +478,62 @@ msgstr ""
478msgid "Conference"
478msgid "Conference"
479msgstr ""
479msgstr ""
480
480
481−#: qml/Panel/Indicators/MenuItemFactory.qml:762
481+#: qml/Panel/Indicators/MenuItemFactory.qml:788
482msgid "Nothing is playing"
482msgid "Nothing is playing"
483msgstr ""
483msgstr ""
484
484
485−#: qml/Panel/Indicators/MenuItemFactory.qml:891
485+#: qml/Panel/Indicators/MenuItemFactory.qml:916
486#, qt-format
486#, qt-format
487msgid "%1 hour"
487msgid "%1 hour"
488msgid_plural "%1 hours"
488msgid_plural "%1 hours"
489msgstr[0] ""
489msgstr[0] ""
490msgstr[1] ""
490msgstr[1] ""
491
491
492−#: qml/Panel/Indicators/MenuItemFactory.qml:895
492+#: qml/Panel/Indicators/MenuItemFactory.qml:920
493#, qt-format
493#, qt-format
494msgid "%1 minute"
494msgid "%1 minute"
495msgid_plural "%1 minutes"
495msgid_plural "%1 minutes"
496msgstr[0] ""
496msgstr[0] ""
497msgstr[1] ""
497msgstr[1] ""
498
498
499−#: qml/Panel/Indicators/MenuItemFactory.qml:900
499+#: qml/Panel/Indicators/MenuItemFactory.qml:925
500#, qt-format
500#, qt-format
501msgid "%1 second"
501msgid "%1 second"
502msgid_plural "%1 seconds"
502msgid_plural "%1 seconds"
503msgstr[0] ""
503msgstr[0] ""
504msgstr[1] ""
504msgstr[1] ""
505
505
506−#: qml/Panel/Indicators/MenuItemFactory.qml:903
506+#: qml/Panel/Indicators/MenuItemFactory.qml:928
507msgid "0 seconds"
507msgid "0 seconds"
508msgstr ""
508msgstr ""
509
509
510#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
510#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
511−#: qml/Panel/Indicators/MenuItemFactory.qml:905
511+#: qml/Panel/Indicators/MenuItemFactory.qml:930
512#, qt-format
512#, qt-format
513msgid "%1 remaining"
513msgid "%1 remaining"
514msgstr ""
514msgstr ""
515
515
516−#: qml/Panel/Indicators/MenuItemFactory.qml:911
516+#: qml/Panel/Indicators/MenuItemFactory.qml:936
517msgid "In queue…"
517msgid "In queue…"
518msgstr ""
518msgstr ""
519
519
520−#: qml/Panel/Indicators/MenuItemFactory.qml:915
520+#: qml/Panel/Indicators/MenuItemFactory.qml:940
521msgid "Downloading"
521msgid "Downloading"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Panel/Indicators/MenuItemFactory.qml:917
524+#: qml/Panel/Indicators/MenuItemFactory.qml:942
525msgid "Paused, tap to resume"
525msgid "Paused, tap to resume"
526msgstr ""
526msgstr ""
527
527
528−#: qml/Panel/Indicators/MenuItemFactory.qml:919
528+#: qml/Panel/Indicators/MenuItemFactory.qml:944
529msgid "Canceled"
529msgid "Canceled"
530msgstr ""
530msgstr ""
531
531
532−#: qml/Panel/Indicators/MenuItemFactory.qml:921
532+#: qml/Panel/Indicators/MenuItemFactory.qml:946
533msgid "Finished"
533msgid "Finished"
534msgstr ""
534msgstr ""
535
535
536−#: qml/Panel/Indicators/MenuItemFactory.qml:923
536+#: qml/Panel/Indicators/MenuItemFactory.qml:948
537msgid "Failed, tap to retry"
537msgid "Failed, tap to retry"
538msgstr ""
538msgstr ""
539
539
@@ -553,7 +553,7 @@ msgctxt "Button: Call back on phone"
553msgid "Call back"
553msgid "Call back"
554msgstr ""
554msgstr ""
555
555
556−#: qml/Stages/SideStage.qml:76
556+#: qml/Stage/SideStage.qml:76
557msgid "Drag using 3 fingers any application from one window to the other"
557msgid "Drag using 3 fingers any application from one window to the other"
558msgstr ""
558msgstr ""
559
559
po/lv.po+16−16
@@ -8,7 +8,7 @@ msgid ""
8msgstr ""
8msgstr ""
9"Project-Id-Version: unity\n"
9"Project-Id-Version: unity\n"
10"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
11+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
12"PO-Revision-Date: 2015-11-22 19:13+0000\n"
12"PO-Revision-Date: 2015-11-22 19:13+0000\n"
13"Last-Translator: Klavs Anson <anson.klavs@gmail.com>\n"
13"Last-Translator: Klavs Anson <anson.klavs@gmail.com>\n"
14"Language-Team: Latvian <lata-l10n@googlegroups.com>\n"
14"Language-Team: Latvian <lata-l10n@googlegroups.com>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Type: text/plain; charset=UTF-8\n"
17"Content-Transfer-Encoding: 8bit\n"
17"Content-Transfer-Encoding: 8bit\n"
18"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n"
18"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-09-27 07:04+0000\n"
19+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
20−"X-Generator: Launchpad (build 18204)\n"
20+"X-Generator: Launchpad (build 18246)\n"
21"Language: lv\n"
21"Language: lv\n"
22
22
23#: plugins/LightDM/Greeter.cpp:123
23#: plugins/LightDM/Greeter.cpp:123
@@ -482,11 +482,11 @@ msgstr "Uzsitiet, lai atzvanītu..."
482msgid "Conference"
482msgid "Conference"
483msgstr "Konference"
483msgstr "Konference"
484
484
485−#: qml/Panel/Indicators/MenuItemFactory.qml:762
485+#: qml/Panel/Indicators/MenuItemFactory.qml:788
486msgid "Nothing is playing"
486msgid "Nothing is playing"
487msgstr "Nekas netiek atskaņots"
487msgstr "Nekas netiek atskaņots"
488
488
489−#: qml/Panel/Indicators/MenuItemFactory.qml:891
489+#: qml/Panel/Indicators/MenuItemFactory.qml:916
490#, qt-format
490#, qt-format
491msgid "%1 hour"
491msgid "%1 hour"
492msgid_plural "%1 hours"
492msgid_plural "%1 hours"
@@ -494,7 +494,7 @@ msgstr[0] "%1 stunda"
494msgstr[1] "%1 stundas"
494msgstr[1] "%1 stundas"
495msgstr[2] "%1 stundu"
495msgstr[2] "%1 stundu"
496
496
497−#: qml/Panel/Indicators/MenuItemFactory.qml:895
497+#: qml/Panel/Indicators/MenuItemFactory.qml:920
498#, qt-format
498#, qt-format
499msgid "%1 minute"
499msgid "%1 minute"
500msgid_plural "%1 minutes"
500msgid_plural "%1 minutes"
@@ -502,7 +502,7 @@ msgstr[0] "%1 minūte"
502msgstr[1] "%1 minūtes"
502msgstr[1] "%1 minūtes"
503msgstr[2] "%1 minūšu"
503msgstr[2] "%1 minūšu"
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:900
505+#: qml/Panel/Indicators/MenuItemFactory.qml:925
506#, qt-format
506#, qt-format
507msgid "%1 second"
507msgid "%1 second"
508msgid_plural "%1 seconds"
508msgid_plural "%1 seconds"
@@ -510,37 +510,37 @@ msgstr[0] "%1 sekunde"
510msgstr[1] "%1 sekundes"
510msgstr[1] "%1 sekundes"
511msgstr[2] "%1 sekunžu"
511msgstr[2] "%1 sekunžu"
512
512
513−#: qml/Panel/Indicators/MenuItemFactory.qml:903
513+#: qml/Panel/Indicators/MenuItemFactory.qml:928
514msgid "0 seconds"
514msgid "0 seconds"
515msgstr "0 sekunžu"
515msgstr "0 sekunžu"
516
516
517#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
517#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
518−#: qml/Panel/Indicators/MenuItemFactory.qml:905
518+#: qml/Panel/Indicators/MenuItemFactory.qml:930
519#, qt-format
519#, qt-format
520msgid "%1 remaining"
520msgid "%1 remaining"
521msgstr "Atlicis: %1"
521msgstr "Atlicis: %1"
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:911
523+#: qml/Panel/Indicators/MenuItemFactory.qml:936
524msgid "In queue…"
524msgid "In queue…"
525msgstr "Rindā..."
525msgstr "Rindā..."
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:915
527+#: qml/Panel/Indicators/MenuItemFactory.qml:940
528msgid "Downloading"
528msgid "Downloading"
529msgstr "Lejupielādē"
529msgstr "Lejupielādē"
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:917
531+#: qml/Panel/Indicators/MenuItemFactory.qml:942
532msgid "Paused, tap to resume"
532msgid "Paused, tap to resume"
533msgstr "Pauzēts, uzsitiet, lai turpinātu"
533msgstr "Pauzēts, uzsitiet, lai turpinātu"
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:919
535+#: qml/Panel/Indicators/MenuItemFactory.qml:944
536msgid "Canceled"
536msgid "Canceled"
537msgstr "Atcelts"
537msgstr "Atcelts"
538
538
539−#: qml/Panel/Indicators/MenuItemFactory.qml:921
539+#: qml/Panel/Indicators/MenuItemFactory.qml:946
540msgid "Finished"
540msgid "Finished"
541msgstr "Pabeigts"
541msgstr "Pabeigts"
542
542
543−#: qml/Panel/Indicators/MenuItemFactory.qml:923
543+#: qml/Panel/Indicators/MenuItemFactory.qml:948
544msgid "Failed, tap to retry"
544msgid "Failed, tap to retry"
545msgstr "Neizdevās, uzsitiet, lai mēģinātu vēlreiz"
545msgstr "Neizdevās, uzsitiet, lai mēģinātu vēlreiz"
546
546
@@ -560,7 +560,7 @@ msgctxt "Button: Call back on phone"
560msgid "Call back"
560msgid "Call back"
561msgstr "Atzvanīt"
561msgstr "Atzvanīt"
562
562
563−#: qml/Stages/SideStage.qml:76
563+#: qml/Stage/SideStage.qml:76
564msgid "Drag using 3 fingers any application from one window to the other"
564msgid "Drag using 3 fingers any application from one window to the other"
565msgstr ""
565msgstr ""
566
566
po/ml.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2013-11-23 11:44+0000\n"
11"PO-Revision-Date: 2013-11-23 11:44+0000\n"
12"Last-Translator: ST Alfas <Unknown>\n"
12"Last-Translator: ST Alfas <Unknown>\n"
13"Language-Team: Malayalam <ml@li.org>\n"
13"Language-Team: Malayalam <ml@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:04+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -477,62 +477,62 @@ msgstr ""
477msgid "Conference"
477msgid "Conference"
478msgstr ""
478msgstr ""
479
479
480−#: qml/Panel/Indicators/MenuItemFactory.qml:762
480+#: qml/Panel/Indicators/MenuItemFactory.qml:788
481msgid "Nothing is playing"
481msgid "Nothing is playing"
482msgstr ""
482msgstr ""
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:891
484+#: qml/Panel/Indicators/MenuItemFactory.qml:916
485#, qt-format
485#, qt-format
486msgid "%1 hour"
486msgid "%1 hour"
487msgid_plural "%1 hours"
487msgid_plural "%1 hours"
488msgstr[0] ""
488msgstr[0] ""
489msgstr[1] ""
489msgstr[1] ""
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:895
491+#: qml/Panel/Indicators/MenuItemFactory.qml:920
492#, qt-format
492#, qt-format
493msgid "%1 minute"
493msgid "%1 minute"
494msgid_plural "%1 minutes"
494msgid_plural "%1 minutes"
495msgstr[0] ""
495msgstr[0] ""
496msgstr[1] ""
496msgstr[1] ""
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:900
498+#: qml/Panel/Indicators/MenuItemFactory.qml:925
499#, qt-format
499#, qt-format
500msgid "%1 second"
500msgid "%1 second"
501msgid_plural "%1 seconds"
501msgid_plural "%1 seconds"
502msgstr[0] ""
502msgstr[0] ""
503msgstr[1] ""
503msgstr[1] ""
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:903
505+#: qml/Panel/Indicators/MenuItemFactory.qml:928
506msgid "0 seconds"
506msgid "0 seconds"
507msgstr ""
507msgstr ""
508
508
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
510−#: qml/Panel/Indicators/MenuItemFactory.qml:905
510+#: qml/Panel/Indicators/MenuItemFactory.qml:930
511#, qt-format
511#, qt-format
512msgid "%1 remaining"
512msgid "%1 remaining"
513msgstr ""
513msgstr ""
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:911
515+#: qml/Panel/Indicators/MenuItemFactory.qml:936
516msgid "In queue…"
516msgid "In queue…"
517msgstr ""
517msgstr ""
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:915
519+#: qml/Panel/Indicators/MenuItemFactory.qml:940
520msgid "Downloading"
520msgid "Downloading"
521msgstr ""
521msgstr ""
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:917
523+#: qml/Panel/Indicators/MenuItemFactory.qml:942
524msgid "Paused, tap to resume"
524msgid "Paused, tap to resume"
525msgstr ""
525msgstr ""
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:919
527+#: qml/Panel/Indicators/MenuItemFactory.qml:944
528msgid "Canceled"
528msgid "Canceled"
529msgstr ""
529msgstr ""
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:921
531+#: qml/Panel/Indicators/MenuItemFactory.qml:946
532msgid "Finished"
532msgid "Finished"
533msgstr ""
533msgstr ""
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:923
535+#: qml/Panel/Indicators/MenuItemFactory.qml:948
536msgid "Failed, tap to retry"
536msgid "Failed, tap to retry"
537msgstr ""
537msgstr ""
538
538
@@ -552,7 +552,7 @@ msgctxt "Button: Call back on phone"
552msgid "Call back"
552msgid "Call back"
553msgstr ""
553msgstr ""
554
554
555−#: qml/Stages/SideStage.qml:76
555+#: qml/Stage/SideStage.qml:76
556msgid "Drag using 3 fingers any application from one window to the other"
556msgid "Drag using 3 fingers any application from one window to the other"
557msgstr ""
557msgstr ""
558
558
po/mr.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2014-01-14 19:54+0000\n"
11"PO-Revision-Date: 2014-01-14 19:54+0000\n"
12"Last-Translator: Rohan Deshmukh <Unknown>\n"
12"Last-Translator: Rohan Deshmukh <Unknown>\n"
13"Language-Team: Marathi <mr@li.org>\n"
13"Language-Team: Marathi <mr@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:04+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -477,62 +477,62 @@ msgstr ""
477msgid "Conference"
477msgid "Conference"
478msgstr ""
478msgstr ""
479
479
480−#: qml/Panel/Indicators/MenuItemFactory.qml:762
480+#: qml/Panel/Indicators/MenuItemFactory.qml:788
481msgid "Nothing is playing"
481msgid "Nothing is playing"
482msgstr ""
482msgstr ""
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:891
484+#: qml/Panel/Indicators/MenuItemFactory.qml:916
485#, qt-format
485#, qt-format
486msgid "%1 hour"
486msgid "%1 hour"
487msgid_plural "%1 hours"
487msgid_plural "%1 hours"
488msgstr[0] ""
488msgstr[0] ""
489msgstr[1] ""
489msgstr[1] ""
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:895
491+#: qml/Panel/Indicators/MenuItemFactory.qml:920
492#, qt-format
492#, qt-format
493msgid "%1 minute"
493msgid "%1 minute"
494msgid_plural "%1 minutes"
494msgid_plural "%1 minutes"
495msgstr[0] ""
495msgstr[0] ""
496msgstr[1] ""
496msgstr[1] ""
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:900
498+#: qml/Panel/Indicators/MenuItemFactory.qml:925
499#, qt-format
499#, qt-format
500msgid "%1 second"
500msgid "%1 second"
501msgid_plural "%1 seconds"
501msgid_plural "%1 seconds"
502msgstr[0] ""
502msgstr[0] ""
503msgstr[1] ""
503msgstr[1] ""
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:903
505+#: qml/Panel/Indicators/MenuItemFactory.qml:928
506msgid "0 seconds"
506msgid "0 seconds"
507msgstr ""
507msgstr ""
508
508
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
510−#: qml/Panel/Indicators/MenuItemFactory.qml:905
510+#: qml/Panel/Indicators/MenuItemFactory.qml:930
511#, qt-format
511#, qt-format
512msgid "%1 remaining"
512msgid "%1 remaining"
513msgstr ""
513msgstr ""
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:911
515+#: qml/Panel/Indicators/MenuItemFactory.qml:936
516msgid "In queue…"
516msgid "In queue…"
517msgstr ""
517msgstr ""
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:915
519+#: qml/Panel/Indicators/MenuItemFactory.qml:940
520msgid "Downloading"
520msgid "Downloading"
521msgstr ""
521msgstr ""
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:917
523+#: qml/Panel/Indicators/MenuItemFactory.qml:942
524msgid "Paused, tap to resume"
524msgid "Paused, tap to resume"
525msgstr ""
525msgstr ""
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:919
527+#: qml/Panel/Indicators/MenuItemFactory.qml:944
528msgid "Canceled"
528msgid "Canceled"
529msgstr ""
529msgstr ""
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:921
531+#: qml/Panel/Indicators/MenuItemFactory.qml:946
532msgid "Finished"
532msgid "Finished"
533msgstr ""
533msgstr ""
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:923
535+#: qml/Panel/Indicators/MenuItemFactory.qml:948
536msgid "Failed, tap to retry"
536msgid "Failed, tap to retry"
537msgstr ""
537msgstr ""
538
538
@@ -552,7 +552,7 @@ msgctxt "Button: Call back on phone"
552msgid "Call back"
552msgid "Call back"
553msgstr ""
553msgstr ""
554
554
555−#: qml/Stages/SideStage.qml:76
555+#: qml/Stage/SideStage.qml:76
556msgid "Drag using 3 fingers any application from one window to the other"
556msgid "Drag using 3 fingers any application from one window to the other"
557msgstr ""
557msgstr ""
558
558
po/ms.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-05-24 01:36+0000\n"
11"PO-Revision-Date: 2016-05-24 01:36+0000\n"
12"Last-Translator: abuyop <Unknown>\n"
12"Last-Translator: abuyop <Unknown>\n"
13"Language-Team: Malay <ms@li.org>\n"
13"Language-Team: Malay <ms@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:04+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -481,62 +481,62 @@ msgstr "Ketuk untuk kembali memanggil..."
481msgid "Conference"
481msgid "Conference"
482msgstr "Sidang"
482msgstr "Sidang"
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:762
484+#: qml/Panel/Indicators/MenuItemFactory.qml:788
485msgid "Nothing is playing"
485msgid "Nothing is playing"
486msgstr "Tiada apa hendak dimainkan"
486msgstr "Tiada apa hendak dimainkan"
487
487
488−#: qml/Panel/Indicators/MenuItemFactory.qml:891
488+#: qml/Panel/Indicators/MenuItemFactory.qml:916
489#, qt-format
489#, qt-format
490msgid "%1 hour"
490msgid "%1 hour"
491msgid_plural "%1 hours"
491msgid_plural "%1 hours"
492msgstr[0] "%1 jam"
492msgstr[0] "%1 jam"
493msgstr[1] "%1 jam"
493msgstr[1] "%1 jam"
494
494
495−#: qml/Panel/Indicators/MenuItemFactory.qml:895
495+#: qml/Panel/Indicators/MenuItemFactory.qml:920
496#, qt-format
496#, qt-format
497msgid "%1 minute"
497msgid "%1 minute"
498msgid_plural "%1 minutes"
498msgid_plural "%1 minutes"
499msgstr[0] "%1 minit"
499msgstr[0] "%1 minit"
500msgstr[1] "%1 minit"
500msgstr[1] "%1 minit"
501
501
502−#: qml/Panel/Indicators/MenuItemFactory.qml:900
502+#: qml/Panel/Indicators/MenuItemFactory.qml:925
503#, qt-format
503#, qt-format
504msgid "%1 second"
504msgid "%1 second"
505msgid_plural "%1 seconds"
505msgid_plural "%1 seconds"
506msgstr[0] "%1 saat"
506msgstr[0] "%1 saat"
507msgstr[1] "%1 saat"
507msgstr[1] "%1 saat"
508
508
509−#: qml/Panel/Indicators/MenuItemFactory.qml:903
509+#: qml/Panel/Indicators/MenuItemFactory.qml:928
510msgid "0 seconds"
510msgid "0 seconds"
511msgstr "0 saat"
511msgstr "0 saat"
512
512
513#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
513#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
514−#: qml/Panel/Indicators/MenuItemFactory.qml:905
514+#: qml/Panel/Indicators/MenuItemFactory.qml:930
515#, qt-format
515#, qt-format
516msgid "%1 remaining"
516msgid "%1 remaining"
517msgstr "%1 berbaki"
517msgstr "%1 berbaki"
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:911
519+#: qml/Panel/Indicators/MenuItemFactory.qml:936
520msgid "In queue…"
520msgid "In queue…"
521msgstr "Dalam baris gilir..."
521msgstr "Dalam baris gilir..."
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:915
523+#: qml/Panel/Indicators/MenuItemFactory.qml:940
524msgid "Downloading"
524msgid "Downloading"
525msgstr "Memuat turun"
525msgstr "Memuat turun"
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:917
527+#: qml/Panel/Indicators/MenuItemFactory.qml:942
528msgid "Paused, tap to resume"
528msgid "Paused, tap to resume"
529msgstr "Dijeda, ketik untuk sambung semula"
529msgstr "Dijeda, ketik untuk sambung semula"
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:919
531+#: qml/Panel/Indicators/MenuItemFactory.qml:944
532msgid "Canceled"
532msgid "Canceled"
533msgstr "Dibatalkan"
533msgstr "Dibatalkan"
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:921
535+#: qml/Panel/Indicators/MenuItemFactory.qml:946
536msgid "Finished"
536msgid "Finished"
537msgstr "Selesai"
537msgstr "Selesai"
538
538
539−#: qml/Panel/Indicators/MenuItemFactory.qml:923
539+#: qml/Panel/Indicators/MenuItemFactory.qml:948
540msgid "Failed, tap to retry"
540msgid "Failed, tap to retry"
541msgstr "Gagal, ketik untuk cuba lagi"
541msgstr "Gagal, ketik untuk cuba lagi"
542
542
@@ -556,7 +556,7 @@ msgctxt "Button: Call back on phone"
556msgid "Call back"
556msgid "Call back"
557msgstr "Panggilan semula"
557msgstr "Panggilan semula"
558
558
559−#: qml/Stages/SideStage.qml:76
559+#: qml/Stage/SideStage.qml:76
560msgid "Drag using 3 fingers any application from one window to the other"
560msgid "Drag using 3 fingers any application from one window to the other"
561msgstr ""
561msgstr ""
562"Seret menggunakan 3 jari pada mana-mana aplik dari satu tetingkap ke "
562"Seret menggunakan 3 jari pada mana-mana aplik dari satu tetingkap ke "
po/my.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2013-12-12 11:12+0000\n"
11"PO-Revision-Date: 2013-12-12 11:12+0000\n"
12"Last-Translator: Pyae Sone <Unknown>\n"
12"Last-Translator: Pyae Sone <Unknown>\n"
13"Language-Team: Burmese <my@li.org>\n"
13"Language-Team: Burmese <my@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:03+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:53+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -477,62 +477,62 @@ msgstr ""
477msgid "Conference"
477msgid "Conference"
478msgstr ""
478msgstr ""
479
479
480−#: qml/Panel/Indicators/MenuItemFactory.qml:762
480+#: qml/Panel/Indicators/MenuItemFactory.qml:788
481msgid "Nothing is playing"
481msgid "Nothing is playing"
482msgstr ""
482msgstr ""
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:891
484+#: qml/Panel/Indicators/MenuItemFactory.qml:916
485#, qt-format
485#, qt-format
486msgid "%1 hour"
486msgid "%1 hour"
487msgid_plural "%1 hours"
487msgid_plural "%1 hours"
488msgstr[0] ""
488msgstr[0] ""
489msgstr[1] ""
489msgstr[1] ""
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:895
491+#: qml/Panel/Indicators/MenuItemFactory.qml:920
492#, qt-format
492#, qt-format
493msgid "%1 minute"
493msgid "%1 minute"
494msgid_plural "%1 minutes"
494msgid_plural "%1 minutes"
495msgstr[0] ""
495msgstr[0] ""
496msgstr[1] ""
496msgstr[1] ""
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:900
498+#: qml/Panel/Indicators/MenuItemFactory.qml:925
499#, qt-format
499#, qt-format
500msgid "%1 second"
500msgid "%1 second"
501msgid_plural "%1 seconds"
501msgid_plural "%1 seconds"
502msgstr[0] ""
502msgstr[0] ""
503msgstr[1] ""
503msgstr[1] ""
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:903
505+#: qml/Panel/Indicators/MenuItemFactory.qml:928
506msgid "0 seconds"
506msgid "0 seconds"
507msgstr ""
507msgstr ""
508
508
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
510−#: qml/Panel/Indicators/MenuItemFactory.qml:905
510+#: qml/Panel/Indicators/MenuItemFactory.qml:930
511#, qt-format
511#, qt-format
512msgid "%1 remaining"
512msgid "%1 remaining"
513msgstr ""
513msgstr ""
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:911
515+#: qml/Panel/Indicators/MenuItemFactory.qml:936
516msgid "In queue…"
516msgid "In queue…"
517msgstr ""
517msgstr ""
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:915
519+#: qml/Panel/Indicators/MenuItemFactory.qml:940
520msgid "Downloading"
520msgid "Downloading"
521msgstr "ဒေါင်းလုပ်ချနေသည်"
521msgstr "ဒေါင်းလုပ်ချနေသည်"
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:917
523+#: qml/Panel/Indicators/MenuItemFactory.qml:942
524msgid "Paused, tap to resume"
524msgid "Paused, tap to resume"
525msgstr ""
525msgstr ""
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:919
527+#: qml/Panel/Indicators/MenuItemFactory.qml:944
528msgid "Canceled"
528msgid "Canceled"
529msgstr "ပယ်ဖျက်မည်။"
529msgstr "ပယ်ဖျက်မည်။"
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:921
531+#: qml/Panel/Indicators/MenuItemFactory.qml:946
532msgid "Finished"
532msgid "Finished"
533msgstr "ပြီးစီးသည်"
533msgstr "ပြီးစီးသည်"
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:923
535+#: qml/Panel/Indicators/MenuItemFactory.qml:948
536msgid "Failed, tap to retry"
536msgid "Failed, tap to retry"
537msgstr ""
537msgstr ""
538
538
@@ -552,7 +552,7 @@ msgctxt "Button: Call back on phone"
552msgid "Call back"
552msgid "Call back"
553msgstr ""
553msgstr ""
554
554
555−#: qml/Stages/SideStage.qml:76
555+#: qml/Stage/SideStage.qml:76
556msgid "Drag using 3 fingers any application from one window to the other"
556msgid "Drag using 3 fingers any application from one window to the other"
557msgstr ""
557msgstr ""
558
558
po/nb.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-06-21 10:21+0000\n"
11"PO-Revision-Date: 2016-06-21 10:21+0000\n"
12"Last-Translator: Åka Sikrom <Unknown>\n"
12"Last-Translator: Åka Sikrom <Unknown>\n"
13"Language-Team: Norwegian Bokmal <nb@li.org>\n"
13"Language-Team: Norwegian Bokmal <nb@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:04+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -485,62 +485,62 @@ msgstr "Trykk for å gå tilbake til anrop …"
485msgid "Conference"
485msgid "Conference"
486msgstr "Konferanse"
486msgstr "Konferanse"
487
487
488−#: qml/Panel/Indicators/MenuItemFactory.qml:762
488+#: qml/Panel/Indicators/MenuItemFactory.qml:788
489msgid "Nothing is playing"
489msgid "Nothing is playing"
490msgstr "Ingenting spilles nå"
490msgstr "Ingenting spilles nå"
491
491
492−#: qml/Panel/Indicators/MenuItemFactory.qml:891
492+#: qml/Panel/Indicators/MenuItemFactory.qml:916
493#, qt-format
493#, qt-format
494msgid "%1 hour"
494msgid "%1 hour"
495msgid_plural "%1 hours"
495msgid_plural "%1 hours"
496msgstr[0] "%1 time"
496msgstr[0] "%1 time"
497msgstr[1] "%1 timer"
497msgstr[1] "%1 timer"
498
498
499−#: qml/Panel/Indicators/MenuItemFactory.qml:895
499+#: qml/Panel/Indicators/MenuItemFactory.qml:920
500#, qt-format
500#, qt-format
501msgid "%1 minute"
501msgid "%1 minute"
502msgid_plural "%1 minutes"
502msgid_plural "%1 minutes"
503msgstr[0] "%1 minutt"
503msgstr[0] "%1 minutt"
504msgstr[1] "%1 minutter"
504msgstr[1] "%1 minutter"
505
505
506−#: qml/Panel/Indicators/MenuItemFactory.qml:900
506+#: qml/Panel/Indicators/MenuItemFactory.qml:925
507#, qt-format
507#, qt-format
508msgid "%1 second"
508msgid "%1 second"
509msgid_plural "%1 seconds"
509msgid_plural "%1 seconds"
510msgstr[0] "%1 sekund"
510msgstr[0] "%1 sekund"
511msgstr[1] "%1 sekunder"
511msgstr[1] "%1 sekunder"
512
512
513−#: qml/Panel/Indicators/MenuItemFactory.qml:903
513+#: qml/Panel/Indicators/MenuItemFactory.qml:928
514msgid "0 seconds"
514msgid "0 seconds"
515msgstr "0 sekunder"
515msgstr "0 sekunder"
516
516
517#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
517#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
518−#: qml/Panel/Indicators/MenuItemFactory.qml:905
518+#: qml/Panel/Indicators/MenuItemFactory.qml:930
519#, qt-format
519#, qt-format
520msgid "%1 remaining"
520msgid "%1 remaining"
521msgstr "%1 gjenstår"
521msgstr "%1 gjenstår"
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:911
523+#: qml/Panel/Indicators/MenuItemFactory.qml:936
524msgid "In queue…"
524msgid "In queue…"
525msgstr "I kø …"
525msgstr "I kø …"
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:915
527+#: qml/Panel/Indicators/MenuItemFactory.qml:940
528msgid "Downloading"
528msgid "Downloading"
529msgstr "Laster ned"
529msgstr "Laster ned"
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:917
531+#: qml/Panel/Indicators/MenuItemFactory.qml:942
532msgid "Paused, tap to resume"
532msgid "Paused, tap to resume"
533msgstr "Satt på pause (trykk for å fortsette)"
533msgstr "Satt på pause (trykk for å fortsette)"
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:919
535+#: qml/Panel/Indicators/MenuItemFactory.qml:944
536msgid "Canceled"
536msgid "Canceled"
537msgstr "Avbrutt"
537msgstr "Avbrutt"
538
538
539−#: qml/Panel/Indicators/MenuItemFactory.qml:921
539+#: qml/Panel/Indicators/MenuItemFactory.qml:946
540msgid "Finished"
540msgid "Finished"
541msgstr "Ferdig"
541msgstr "Ferdig"
542
542
543−#: qml/Panel/Indicators/MenuItemFactory.qml:923
543+#: qml/Panel/Indicators/MenuItemFactory.qml:948
544msgid "Failed, tap to retry"
544msgid "Failed, tap to retry"
545msgstr "Feilet. Trykk for å prøve på nytt"
545msgstr "Feilet. Trykk for å prøve på nytt"
546
546
@@ -560,7 +560,7 @@ msgctxt "Button: Call back on phone"
560msgid "Call back"
560msgid "Call back"
561msgstr "Ring tilbake"
561msgstr "Ring tilbake"
562
562
563−#: qml/Stages/SideStage.qml:76
563+#: qml/Stage/SideStage.qml:76
564msgid "Drag using 3 fingers any application from one window to the other"
564msgid "Drag using 3 fingers any application from one window to the other"
565msgstr "Dra et program fra et vindu til et annet med 3 fingre"
565msgstr "Dra et program fra et vindu til et annet med 3 fingre"
566
566
po/ne.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2015-12-06 15:11+0000\n"
11"PO-Revision-Date: 2015-12-06 15:11+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Nepali <ne@li.org>\n"
13"Language-Team: Nepali <ne@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:04+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -477,62 +477,62 @@ msgstr ""
477msgid "Conference"
477msgid "Conference"
478msgstr ""
478msgstr ""
479
479
480−#: qml/Panel/Indicators/MenuItemFactory.qml:762
480+#: qml/Panel/Indicators/MenuItemFactory.qml:788
481msgid "Nothing is playing"
481msgid "Nothing is playing"
482msgstr ""
482msgstr ""
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:891
484+#: qml/Panel/Indicators/MenuItemFactory.qml:916
485#, qt-format
485#, qt-format
486msgid "%1 hour"
486msgid "%1 hour"
487msgid_plural "%1 hours"
487msgid_plural "%1 hours"
488msgstr[0] ""
488msgstr[0] ""
489msgstr[1] ""
489msgstr[1] ""
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:895
491+#: qml/Panel/Indicators/MenuItemFactory.qml:920
492#, qt-format
492#, qt-format
493msgid "%1 minute"
493msgid "%1 minute"
494msgid_plural "%1 minutes"
494msgid_plural "%1 minutes"
495msgstr[0] ""
495msgstr[0] ""
496msgstr[1] ""
496msgstr[1] ""
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:900
498+#: qml/Panel/Indicators/MenuItemFactory.qml:925
499#, qt-format
499#, qt-format
500msgid "%1 second"
500msgid "%1 second"
501msgid_plural "%1 seconds"
501msgid_plural "%1 seconds"
502msgstr[0] ""
502msgstr[0] ""
503msgstr[1] ""
503msgstr[1] ""
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:903
505+#: qml/Panel/Indicators/MenuItemFactory.qml:928
506msgid "0 seconds"
506msgid "0 seconds"
507msgstr ""
507msgstr ""
508
508
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
510−#: qml/Panel/Indicators/MenuItemFactory.qml:905
510+#: qml/Panel/Indicators/MenuItemFactory.qml:930
511#, qt-format
511#, qt-format
512msgid "%1 remaining"
512msgid "%1 remaining"
513msgstr ""
513msgstr ""
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:911
515+#: qml/Panel/Indicators/MenuItemFactory.qml:936
516msgid "In queue…"
516msgid "In queue…"
517msgstr ""
517msgstr ""
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:915
519+#: qml/Panel/Indicators/MenuItemFactory.qml:940
520msgid "Downloading"
520msgid "Downloading"
521msgstr ""
521msgstr ""
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:917
523+#: qml/Panel/Indicators/MenuItemFactory.qml:942
524msgid "Paused, tap to resume"
524msgid "Paused, tap to resume"
525msgstr ""
525msgstr ""
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:919
527+#: qml/Panel/Indicators/MenuItemFactory.qml:944
528msgid "Canceled"
528msgid "Canceled"
529msgstr ""
529msgstr ""
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:921
531+#: qml/Panel/Indicators/MenuItemFactory.qml:946
532msgid "Finished"
532msgid "Finished"
533msgstr ""
533msgstr ""
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:923
535+#: qml/Panel/Indicators/MenuItemFactory.qml:948
536msgid "Failed, tap to retry"
536msgid "Failed, tap to retry"
537msgstr ""
537msgstr ""
538
538
@@ -552,7 +552,7 @@ msgctxt "Button: Call back on phone"
552msgid "Call back"
552msgid "Call back"
553msgstr ""
553msgstr ""
554
554
555−#: qml/Stages/SideStage.qml:76
555+#: qml/Stage/SideStage.qml:76
556msgid "Drag using 3 fingers any application from one window to the other"
556msgid "Drag using 3 fingers any application from one window to the other"
557msgstr ""
557msgstr ""
558
558
po/nl.po+125−111
@@ -7,16 +7,16 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11−"PO-Revision-Date: 2015-07-07 07:14+0000\n"
11+"PO-Revision-Date: 2016-10-17 15:59+0000\n"
12−"Last-Translator: Hannie Dumoleyn <Unknown>\n"
12+"Last-Translator: Martijn Grootenboer <martijn.1987@live.nl>\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"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:03+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:53+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -103,163 +103,163 @@ msgstr "Herstarten"
103
103
104#: qml/Components/KeyboardShortcutsOverlay.qml:41
104#: qml/Components/KeyboardShortcutsOverlay.qml:41
105msgid "Keyboard Shortcuts"
105msgid "Keyboard Shortcuts"
106−msgstr ""
106+msgstr "Sneltoetsen"
107
107
108#: qml/Components/KeyboardShortcutsOverlay.qml:55
108#: qml/Components/KeyboardShortcutsOverlay.qml:55
109msgid "Unity 8"
109msgid "Unity 8"
110−msgstr ""
110+msgstr "Unity 8"
111
111
112#: qml/Components/KeyboardShortcutsOverlay.qml:62
112#: qml/Components/KeyboardShortcutsOverlay.qml:62
113msgid "PrtScr"
113msgid "PrtScr"
114−msgstr ""
114+msgstr "PrtScr"
115
115
116#: qml/Components/KeyboardShortcutsOverlay.qml:67
116#: qml/Components/KeyboardShortcutsOverlay.qml:67
117msgid "Takes a screenshot."
117msgid "Takes a screenshot."
118−msgstr ""
118+msgstr "Maakt een schermafdruk."
119
119
120#: qml/Components/KeyboardShortcutsOverlay.qml:75
120#: qml/Components/KeyboardShortcutsOverlay.qml:75
121msgid "Alt + PrtScr"
121msgid "Alt + PrtScr"
122−msgstr ""
122+msgstr "Alt + PrtScr"
123
123
124#: qml/Components/KeyboardShortcutsOverlay.qml:80
124#: qml/Components/KeyboardShortcutsOverlay.qml:80
125msgid "Takes a screenshot of a window."
125msgid "Takes a screenshot of a window."
126−msgstr ""
126+msgstr "Maakt een schermafdruk van een venster."
127
127
128#: qml/Components/KeyboardShortcutsOverlay.qml:88
128#: qml/Components/KeyboardShortcutsOverlay.qml:88
129msgid "Super + Space"
129msgid "Super + Space"
130−msgstr ""
130+msgstr "Super + Spatiebalk"
131
131
132#: qml/Components/KeyboardShortcutsOverlay.qml:93
132#: qml/Components/KeyboardShortcutsOverlay.qml:93
133msgid "Switches to next keyboard layout."
133msgid "Switches to next keyboard layout."
134−msgstr ""
134+msgstr "Schakelt naar volgende toetsenbordindeling."
135
135
136#: qml/Components/KeyboardShortcutsOverlay.qml:101
136#: qml/Components/KeyboardShortcutsOverlay.qml:101
137msgid "Super + Shift + Space"
137msgid "Super + Shift + Space"
138−msgstr ""
138+msgstr "Super + Shift + Spatiebalk"
139
139
140#: qml/Components/KeyboardShortcutsOverlay.qml:106
140#: qml/Components/KeyboardShortcutsOverlay.qml:106
141msgid "Switches to previous keyboard layout."
141msgid "Switches to previous keyboard layout."
142−msgstr ""
142+msgstr "Schakelt naar vorige toetsenbordindeling."
143
143
144#: qml/Components/KeyboardShortcutsOverlay.qml:118
144#: qml/Components/KeyboardShortcutsOverlay.qml:118
145msgid "Launcher"
145msgid "Launcher"
146−msgstr ""
146+msgstr "De Starter"
147
147
148#: qml/Components/KeyboardShortcutsOverlay.qml:125
148#: qml/Components/KeyboardShortcutsOverlay.qml:125
149msgid "Super (Hold)"
149msgid "Super (Hold)"
150−msgstr ""
150+msgstr "Super (Vasthouden)"
151
151
152#: qml/Components/KeyboardShortcutsOverlay.qml:130
152#: qml/Components/KeyboardShortcutsOverlay.qml:130
153msgid "Opens the launcher, displays shortcuts."
153msgid "Opens the launcher, displays shortcuts."
154−msgstr ""
154+msgstr "Opent de Starter; toont sneltoetsnen."
155
155
156#: qml/Components/KeyboardShortcutsOverlay.qml:138
156#: qml/Components/KeyboardShortcutsOverlay.qml:138
157msgid "Alt + F1"
157msgid "Alt + F1"
158−msgstr ""
158+msgstr "Alt + F1"
159
159
160#: qml/Components/KeyboardShortcutsOverlay.qml:143
160#: qml/Components/KeyboardShortcutsOverlay.qml:143
161msgid "Opens launcher keyboard navigation mode."
161msgid "Opens launcher keyboard navigation mode."
162−msgstr ""
162+msgstr "Opent toetsenbordnavigatiemodus van Starter."
163
163
164#: qml/Components/KeyboardShortcutsOverlay.qml:151
164#: qml/Components/KeyboardShortcutsOverlay.qml:151
165msgid "Super + Tab"
165msgid "Super + Tab"
166−msgstr ""
166+msgstr "Super + Tab"
167
167
168#: qml/Components/KeyboardShortcutsOverlay.qml:156
168#: qml/Components/KeyboardShortcutsOverlay.qml:156
169msgid "Switches applications via the launcher."
169msgid "Switches applications via the launcher."
170−msgstr ""
170+msgstr "Wisselt toepassingen via de Starter."
171
171
172#: qml/Components/KeyboardShortcutsOverlay.qml:164
172#: qml/Components/KeyboardShortcutsOverlay.qml:164
173msgid "Super + 0 to 9"
173msgid "Super + 0 to 9"
174−msgstr ""
174+msgstr "Super + 0 tot 9"
175
175
176#: qml/Components/KeyboardShortcutsOverlay.qml:169
176#: qml/Components/KeyboardShortcutsOverlay.qml:169
177msgid "Same as clicking on a launcher icon."
177msgid "Same as clicking on a launcher icon."
178−msgstr ""
178+msgstr "Hetzelfde als klikken op een pictogram in de Starter."
179
179
180#: qml/Components/KeyboardShortcutsOverlay.qml:181
180#: qml/Components/KeyboardShortcutsOverlay.qml:181
181msgid "Scopes"
181msgid "Scopes"
182−msgstr ""
182+msgstr "Scopes"
183
183
184#: qml/Components/KeyboardShortcutsOverlay.qml:188
184#: qml/Components/KeyboardShortcutsOverlay.qml:188
185msgid "Super (Tap)"
185msgid "Super (Tap)"
186−msgstr ""
186+msgstr "Super (Tikken)"
187
187
188#: qml/Components/KeyboardShortcutsOverlay.qml:193
188#: qml/Components/KeyboardShortcutsOverlay.qml:193
189msgid "Opens the Scopes home."
189msgid "Opens the Scopes home."
190−msgstr ""
190+msgstr "Opent Scopes-startpagina."
191
191
192#: qml/Components/KeyboardShortcutsOverlay.qml:209
192#: qml/Components/KeyboardShortcutsOverlay.qml:209
193msgid "Switching"
193msgid "Switching"
194−msgstr ""
194+msgstr "Wisselen"
195
195
196#: qml/Components/KeyboardShortcutsOverlay.qml:216
196#: qml/Components/KeyboardShortcutsOverlay.qml:216
197msgid "Alt + Tab"
197msgid "Alt + Tab"
198−msgstr ""
198+msgstr "Alt + Tab"
199
199
200#: qml/Components/KeyboardShortcutsOverlay.qml:221
200#: qml/Components/KeyboardShortcutsOverlay.qml:221
201msgid "Switches between applications."
201msgid "Switches between applications."
202−msgstr ""
202+msgstr "Wisselt tussen toepassingen."
203
203
204#: qml/Components/KeyboardShortcutsOverlay.qml:229
204#: qml/Components/KeyboardShortcutsOverlay.qml:229
205msgid "Super + W"
205msgid "Super + W"
206−msgstr ""
206+msgstr "Super + W"
207
207
208#: qml/Components/KeyboardShortcutsOverlay.qml:234
208#: qml/Components/KeyboardShortcutsOverlay.qml:234
209msgid "Opens the desktop spread."
209msgid "Opens the desktop spread."
210−msgstr ""
210+msgstr "Opent bureaubladspreiding."
211
211
212#: qml/Components/KeyboardShortcutsOverlay.qml:242
212#: qml/Components/KeyboardShortcutsOverlay.qml:242
213msgid "Cursor Left or Right"
213msgid "Cursor Left or Right"
214−msgstr ""
214+msgstr "Pijltoets links of rechts"
215
215
216#: qml/Components/KeyboardShortcutsOverlay.qml:247
216#: qml/Components/KeyboardShortcutsOverlay.qml:247
217msgid "Moves the focus."
217msgid "Moves the focus."
218−msgstr ""
218+msgstr "Verplaatst de focus."
219
219
220#: qml/Components/KeyboardShortcutsOverlay.qml:259
220#: qml/Components/KeyboardShortcutsOverlay.qml:259
221msgid "Windows"
221msgid "Windows"
222−msgstr ""
222+msgstr "Vensters"
223
223
224#: qml/Components/KeyboardShortcutsOverlay.qml:266
224#: qml/Components/KeyboardShortcutsOverlay.qml:266
225msgid "Ctrl + Super + D"
225msgid "Ctrl + Super + D"
226−msgstr ""
226+msgstr "Ctrl + Super + D"
227
227
228#: qml/Components/KeyboardShortcutsOverlay.qml:271
228#: qml/Components/KeyboardShortcutsOverlay.qml:271
229msgid "Minimizes all windows."
229msgid "Minimizes all windows."
230−msgstr ""
230+msgstr "Minimaliseert alle vensters."
231
231
232#: qml/Components/KeyboardShortcutsOverlay.qml:279
232#: qml/Components/KeyboardShortcutsOverlay.qml:279
233msgid "Ctrl + Super + Up"
233msgid "Ctrl + Super + Up"
234−msgstr ""
234+msgstr "Ctrl + Super + Pijl omhoog"
235
235
236#: qml/Components/KeyboardShortcutsOverlay.qml:284
236#: qml/Components/KeyboardShortcutsOverlay.qml:284
237msgid "Maximizes the current window."
237msgid "Maximizes the current window."
238−msgstr ""
238+msgstr "Maximaliseert het huidige venster."
239
239
240#: qml/Components/KeyboardShortcutsOverlay.qml:292
240#: qml/Components/KeyboardShortcutsOverlay.qml:292
241msgid "Ctrl + Super + Down"
241msgid "Ctrl + Super + Down"
242−msgstr ""
242+msgstr "Ctrl + Super + Pijl omlaag"
243
243
244#: qml/Components/KeyboardShortcutsOverlay.qml:297
244#: qml/Components/KeyboardShortcutsOverlay.qml:297
245msgid "Minimizes or restores the current window."
245msgid "Minimizes or restores the current window."
246−msgstr ""
246+msgstr "Maximaliseert of herstelt het huidige venster."
247
247
248#: qml/Components/KeyboardShortcutsOverlay.qml:305
248#: qml/Components/KeyboardShortcutsOverlay.qml:305
249msgid "Ctrl + Super + Left or Right"
249msgid "Ctrl + Super + Left or Right"
250−msgstr ""
250+msgstr "Ctrl + Super + Pijl links of rechts"
251
251
252#: qml/Components/KeyboardShortcutsOverlay.qml:310
252#: qml/Components/KeyboardShortcutsOverlay.qml:310
253msgid "Semi-maximizes the current window."
253msgid "Semi-maximizes the current window."
254−msgstr ""
254+msgstr "Plaatst het venster links of rechts."
255
255
256#: qml/Components/KeyboardShortcutsOverlay.qml:318
256#: qml/Components/KeyboardShortcutsOverlay.qml:318
257msgid "Alt + F4"
257msgid "Alt + F4"
258−msgstr ""
258+msgstr "Alt + F4"
259
259
260#: qml/Components/KeyboardShortcutsOverlay.qml:323
260#: qml/Components/KeyboardShortcutsOverlay.qml:323
261msgid "Closes the current window."
261msgid "Closes the current window."
262−msgstr ""
262+msgstr "Sluit het huidige venster."
263
263
264#: qml/Components/Lockscreen.qml:212 qml/Greeter/NarrowView.qml:252
264#: qml/Components/Lockscreen.qml:212 qml/Greeter/NarrowView.qml:252
265msgid "Return to Call"
265msgid "Return to Call"
@@ -276,12 +276,12 @@ msgstr "Ok"
276#: qml/Components/MediaServices/VideoPlayerControls.qml:44
276#: qml/Components/MediaServices/VideoPlayerControls.qml:44
277#, qt-format
277#, qt-format
278msgid "%1:%2:%3"
278msgid "%1:%2:%3"
279−msgstr ""
279+msgstr "%1:%2:%3"
280
280
281#: qml/Components/MediaServices/VideoPlayerControls.qml:49
281#: qml/Components/MediaServices/VideoPlayerControls.qml:49
282#, qt-format
282#, qt-format
283msgid "%1:%2"
283msgid "%1:%2"
284−msgstr ""
284+msgstr "%1:%2"
285
285
286#: qml/Components/ModeSwitchWarningDialog.qml:32
286#: qml/Components/ModeSwitchWarningDialog.qml:32
287msgid "Apps may have unsaved data:"
287msgid "Apps may have unsaved data:"
@@ -349,11 +349,11 @@ msgstr "Herstellen"
349
349
350#: qml/Dash/GenericScopeView.qml:586 qml/Dash/GenericScopeView.qml:782
350#: qml/Dash/GenericScopeView.qml:586 qml/Dash/GenericScopeView.qml:782
351msgid "Show less"
351msgid "Show less"
352−msgstr ""
352+msgstr "Minder weergeven"
353
353
354#: qml/Dash/GenericScopeView.qml:586
354#: qml/Dash/GenericScopeView.qml:586
355msgid "Show all"
355msgid "Show all"
356−msgstr ""
356+msgstr "Alles weergeven"
357
357
358#: qml/Dash/GenericScopeView.qml:643
358#: qml/Dash/GenericScopeView.qml:643
359msgctxt "Label: Hint for dash search line edit"
359msgctxt "Label: Hint for dash search line edit"
@@ -450,15 +450,15 @@ msgstr[1] "Wacht a.u.b. %1 minuten en probeer het dan opnieuw…"
450
450
451#: qml/Greeter/Greeter.qml:596
451#: qml/Greeter/Greeter.qml:596
452msgid "Try again"
452msgid "Try again"
453−msgstr ""
453+msgstr "Probeer het opnieuw"
454
454
455#: qml/Greeter/LoginList.qml:70
455#: qml/Greeter/LoginList.qml:70
456msgid "Passphrase"
456msgid "Passphrase"
457−msgstr ""
457+msgstr "Wachtwoordzin"
458
458
459#: qml/Greeter/LoginList.qml:71
459#: qml/Greeter/LoginList.qml:71
460msgid "Passcode"
460msgid "Passcode"
461−msgstr ""
461+msgstr "Toegangscode"
462
462
463#: qml/Greeter/LoginList.qml:98
463#: qml/Greeter/LoginList.qml:98
464msgid "Retry"
464msgid "Retry"
@@ -466,15 +466,15 @@ msgstr "Opnieuw proberen"
466
466
467#: qml/Greeter/LoginList.qml:99
467#: qml/Greeter/LoginList.qml:99
468msgid "Log In"
468msgid "Log In"
469−msgstr ""
469+msgstr "Aanmelden"
470
470
471#: qml/Greeter/NarrowView.qml:252
471#: qml/Greeter/NarrowView.qml:252
472msgid "Emergency"
472msgid "Emergency"
473−msgstr ""
473+msgstr "Noodgeval"
474
474
475#: qml/Greeter/SessionsList.qml:122
475#: qml/Greeter/SessionsList.qml:122
476msgid "Select desktop environment"
476msgid "Select desktop environment"
477−msgstr ""
477+msgstr "Bureaubladomgeving selecteren"
478
478
479#: qml/Notifications/NotificationMenuItemFactory.qml:124
479#: qml/Notifications/NotificationMenuItemFactory.qml:124
480msgid "Show password"
480msgid "Show password"
@@ -488,62 +488,62 @@ msgstr "Tik om terug te gaan naar gesprek…"
488msgid "Conference"
488msgid "Conference"
489msgstr "Groepsgesprek"
489msgstr "Groepsgesprek"
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:762
491+#: qml/Panel/Indicators/MenuItemFactory.qml:788
492msgid "Nothing is playing"
492msgid "Nothing is playing"
493msgstr "Er wordt niets afgespeeld"
493msgstr "Er wordt niets afgespeeld"
494
494
495−#: qml/Panel/Indicators/MenuItemFactory.qml:891
495+#: qml/Panel/Indicators/MenuItemFactory.qml:916
496#, qt-format
496#, qt-format
497msgid "%1 hour"
497msgid "%1 hour"
498msgid_plural "%1 hours"
498msgid_plural "%1 hours"
499msgstr[0] "%1 uur"
499msgstr[0] "%1 uur"
500msgstr[1] "%1 uren"
500msgstr[1] "%1 uren"
501
501
502−#: qml/Panel/Indicators/MenuItemFactory.qml:895
502+#: qml/Panel/Indicators/MenuItemFactory.qml:920
503#, qt-format
503#, qt-format
504msgid "%1 minute"
504msgid "%1 minute"
505msgid_plural "%1 minutes"
505msgid_plural "%1 minutes"
506msgstr[0] "%1 minuut"
506msgstr[0] "%1 minuut"
507msgstr[1] "%1 minuten"
507msgstr[1] "%1 minuten"
508
508
509−#: qml/Panel/Indicators/MenuItemFactory.qml:900
509+#: qml/Panel/Indicators/MenuItemFactory.qml:925
510#, qt-format
510#, qt-format
511msgid "%1 second"
511msgid "%1 second"
512msgid_plural "%1 seconds"
512msgid_plural "%1 seconds"
513msgstr[0] "%1 seconde"
513msgstr[0] "%1 seconde"
514msgstr[1] "%1 seconden"
514msgstr[1] "%1 seconden"
515
515
516−#: qml/Panel/Indicators/MenuItemFactory.qml:903
516+#: qml/Panel/Indicators/MenuItemFactory.qml:928
517msgid "0 seconds"
517msgid "0 seconds"
518msgstr "0 seconden"
518msgstr "0 seconden"
519
519
520#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
520#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
521−#: qml/Panel/Indicators/MenuItemFactory.qml:905
521+#: qml/Panel/Indicators/MenuItemFactory.qml:930
522#, qt-format
522#, qt-format
523msgid "%1 remaining"
523msgid "%1 remaining"
524msgstr "%1 resterend"
524msgstr "%1 resterend"
525
525
526−#: qml/Panel/Indicators/MenuItemFactory.qml:911
526+#: qml/Panel/Indicators/MenuItemFactory.qml:936
527msgid "In queue…"
527msgid "In queue…"
528msgstr "In wachtrij…"
528msgstr "In wachtrij…"
529
529
530−#: qml/Panel/Indicators/MenuItemFactory.qml:915
530+#: qml/Panel/Indicators/MenuItemFactory.qml:940
531msgid "Downloading"
531msgid "Downloading"
532msgstr "Aan het downloaden"
532msgstr "Aan het downloaden"
533
533
534−#: qml/Panel/Indicators/MenuItemFactory.qml:917
534+#: qml/Panel/Indicators/MenuItemFactory.qml:942
535msgid "Paused, tap to resume"
535msgid "Paused, tap to resume"
536msgstr "Gepauzeerd, tik om te hervatten"
536msgstr "Gepauzeerd, tik om te hervatten"
537
537
538−#: qml/Panel/Indicators/MenuItemFactory.qml:919
538+#: qml/Panel/Indicators/MenuItemFactory.qml:944
539msgid "Canceled"
539msgid "Canceled"
540msgstr "Geannuleerd"
540msgstr "Geannuleerd"
541
541
542−#: qml/Panel/Indicators/MenuItemFactory.qml:921
542+#: qml/Panel/Indicators/MenuItemFactory.qml:946
543msgid "Finished"
543msgid "Finished"
544msgstr "Klaar"
544msgstr "Klaar"
545
545
546−#: qml/Panel/Indicators/MenuItemFactory.qml:923
546+#: qml/Panel/Indicators/MenuItemFactory.qml:948
547msgid "Failed, tap to retry"
547msgid "Failed, tap to retry"
548msgstr "Mislukt, tik om het opnieuw te proberen"
548msgstr "Mislukt, tik om het opnieuw te proberen"
549
549
@@ -563,7 +563,7 @@ msgctxt "Button: Call back on phone"
563msgid "Call back"
563msgid "Call back"
564msgstr "Terugbellen"
564msgstr "Terugbellen"
565
565
566−#: qml/Stages/SideStage.qml:76
566+#: qml/Stage/SideStage.qml:76
567msgid "Drag using 3 fingers any application from one window to the other"
567msgid "Drag using 3 fingers any application from one window to the other"
568msgstr ""
568msgstr ""
569"Een toepassing met 3 vingers slepen van het ene venster naar het andere"
569"Een toepassing met 3 vingers slepen van het ene venster naar het andere"
@@ -574,19 +574,21 @@ msgstr "Lang vanaf de linkerkant vegen om de Vandaag-scope te openen"
574
574
575#: qml/Tutorial/TutorialLeft.qml:47
575#: qml/Tutorial/TutorialLeft.qml:47
576msgid "Short swipe from the left edge to open the launcher"
576msgid "Short swipe from the left edge to open the launcher"
577−msgstr ""
577+msgstr "Veeg kort vanaf de linkerrand om de Starter te openen"
578
578
579#: qml/Tutorial/TutorialRight.qml:55
579#: qml/Tutorial/TutorialRight.qml:55
580msgid "Push your mouse against the right edge to view your open apps"
580msgid "Push your mouse against the right edge to view your open apps"
581−msgstr ""
581+msgstr "Duw uw muis tegen de rechterrand om geopende apps te zien"
582
582
583#: qml/Tutorial/TutorialRight.qml:56
583#: qml/Tutorial/TutorialRight.qml:56
584msgid "Swipe from the right edge to view your open apps"
584msgid "Swipe from the right edge to view your open apps"
585−msgstr ""
585+msgstr "Veeg vanaf de rechterrand om geopende apps te zien"
586
586
587#: qml/Tutorial/TutorialTop.qml:53
587#: qml/Tutorial/TutorialTop.qml:53
588msgid "Swipe from the top edge to access notifications and quick settings"
588msgid "Swipe from the top edge to access notifications and quick settings"
589msgstr ""
589msgstr ""
590+"Veeg van de bovenrand om toegang te krijgen tot notificaties en snelle "
591+"instellingen"
590
592
591#: qml/Wizard/Page.qml:54
593#: qml/Wizard/Page.qml:54
592msgctxt "Button: Go back one page in the Wizard"
594msgctxt "Button: Go back one page in the Wizard"
@@ -595,7 +597,7 @@ msgstr "Terug"
595
597
596#: qml/Wizard/Pages/10-welcome.qml:28
598#: qml/Wizard/Pages/10-welcome.qml:28
597msgid "Language"
599msgid "Language"
598−msgstr ""
600+msgstr "Taal"
599
601
600#: qml/Wizard/Pages/10-welcome.qml:173 qml/Wizard/Pages/20-keyboard.qml:152
602#: qml/Wizard/Pages/10-welcome.qml:173 qml/Wizard/Pages/20-keyboard.qml:152
601#: qml/Wizard/Pages/30-wifi.qml:207 qml/Wizard/Pages/40-location.qml:271
603#: qml/Wizard/Pages/30-wifi.qml:207 qml/Wizard/Pages/40-location.qml:271
@@ -605,19 +607,19 @@ msgstr ""
605#: qml/Wizard/Pages/passcode-desktop.qml:142
607#: qml/Wizard/Pages/passcode-desktop.qml:142
606#: qml/Wizard/Pages/password-set.qml:142
608#: qml/Wizard/Pages/password-set.qml:142
607msgid "Next"
609msgid "Next"
608−msgstr ""
610+msgstr "Volgende"
609
611
610#: qml/Wizard/Pages/20-keyboard.qml:31
612#: qml/Wizard/Pages/20-keyboard.qml:31
611msgid "Select Keyboard"
613msgid "Select Keyboard"
612−msgstr ""
614+msgstr "Toetsenbord selecteren"
613
615
614#: qml/Wizard/Pages/20-keyboard.qml:71
616#: qml/Wizard/Pages/20-keyboard.qml:71
615msgid "Keyboard language"
617msgid "Keyboard language"
616−msgstr ""
618+msgstr "Taal toetsenbord"
617
619
618#: qml/Wizard/Pages/20-keyboard.qml:93
620#: qml/Wizard/Pages/20-keyboard.qml:93
619msgid "Keyboard layout"
621msgid "Keyboard layout"
620−msgstr ""
622+msgstr "Toetsenbordindeling"
621
623
622#: qml/Wizard/Pages/20-keyboard.qml:152 qml/Wizard/Pages/30-wifi.qml:207
624#: qml/Wizard/Pages/20-keyboard.qml:152 qml/Wizard/Pages/30-wifi.qml:207
623#: qml/Wizard/Pages/60-account.qml:65 qml/Wizard/Pages/77-system-update.qml:152
625#: qml/Wizard/Pages/60-account.qml:65 qml/Wizard/Pages/77-system-update.qml:152
@@ -631,139 +633,144 @@ msgstr "Verbinden met Wifi"
631
633
632#: qml/Wizard/Pages/30-wifi.qml:132
634#: qml/Wizard/Pages/30-wifi.qml:132
633msgid "Connected"
635msgid "Connected"
634−msgstr ""
636+msgstr "Verbonden"
635
637
636#: qml/Wizard/Pages/30-wifi.qml:165
638#: qml/Wizard/Pages/30-wifi.qml:165
637msgid "Available Wi-Fi networks"
639msgid "Available Wi-Fi networks"
638−msgstr ""
640+msgstr "Beschikbare wifi-netwerken"
639
641
640#: qml/Wizard/Pages/30-wifi.qml:166
642#: qml/Wizard/Pages/30-wifi.qml:166
641msgid "No available Wi-Fi networks"
643msgid "No available Wi-Fi networks"
642−msgstr ""
644+msgstr "Geen wifi-netwerken beschikbaar"
643
645
644#: qml/Wizard/Pages/40-location.qml:27
646#: qml/Wizard/Pages/40-location.qml:27
645msgid "Location Services"
647msgid "Location Services"
646−msgstr ""
648+msgstr "Locatie Diensten"
647
649
648#: qml/Wizard/Pages/40-location.qml:83
650#: qml/Wizard/Pages/40-location.qml:83
649msgid ""
651msgid ""
650"Use GPS, Wi-Fi hotspots and mobile network anonymously to detect location "
652"Use GPS, Wi-Fi hotspots and mobile network anonymously to detect location "
651"(recommended)"
653"(recommended)"
652msgstr ""
654msgstr ""
655+"Maak anoniem gebruik van GPS, wifi-hotspots en het mobiele netwerk om uw "
656+"locatie te bepalen (aanbevolen)"
653
657
654#: qml/Wizard/Pages/40-location.qml:105
658#: qml/Wizard/Pages/40-location.qml:105
655#, qt-format
659#, qt-format
656msgid "By selecting this option you agree to the Nokia HERE %1."
660msgid "By selecting this option you agree to the Nokia HERE %1."
657−msgstr ""
661+msgstr "Door deze optie te selecteren gaat u akkoord met de Nokia HERE %1."
658
662
659#: qml/Wizard/Pages/40-location.qml:106
663#: qml/Wizard/Pages/40-location.qml:106
660msgctxt "part of: Nokia HERE terms and conditions"
664msgctxt "part of: Nokia HERE terms and conditions"
661msgid "terms and conditions"
665msgid "terms and conditions"
662−msgstr ""
666+msgstr "voorwaarden voor gebruik"
663
667
664#: qml/Wizard/Pages/40-location.qml:160
668#: qml/Wizard/Pages/40-location.qml:160
665msgid "GPS only"
669msgid "GPS only"
666−msgstr ""
670+msgstr "Alleen GPS"
667
671
668#: qml/Wizard/Pages/40-location.qml:214
672#: qml/Wizard/Pages/40-location.qml:214
669msgid "Don't use my location"
673msgid "Don't use my location"
670−msgstr ""
674+msgstr "Mijn locatie niet gebruiken"
671
675
672#: qml/Wizard/Pages/40-location.qml:260
676#: qml/Wizard/Pages/40-location.qml:260
673msgid "You can change it later in System Settings."
677msgid "You can change it later in System Settings."
674−msgstr ""
678+msgstr "U kunt het later aanpassen in Systeeminstellingen"
675
679
676#: qml/Wizard/Pages/50-timezone.qml:30
680#: qml/Wizard/Pages/50-timezone.qml:30
677msgid "Time Zone"
681msgid "Time Zone"
678−msgstr ""
682+msgstr "Tijdzone"
679
683
680#: qml/Wizard/Pages/50-timezone.qml:182
684#: qml/Wizard/Pages/50-timezone.qml:182
681msgid "Enter your city"
685msgid "Enter your city"
682−msgstr ""
686+msgstr "Uw stad invoeren"
683
687
684#: qml/Wizard/Pages/60-account.qml:24
688#: qml/Wizard/Pages/60-account.qml:24
685msgid "Personalize Your Device"
689msgid "Personalize Your Device"
686−msgstr ""
690+msgstr "Uw apparaat personaliseren"
687
691
688#: qml/Wizard/Pages/60-account.qml:48
692#: qml/Wizard/Pages/60-account.qml:48
689msgid "Preferred Name"
693msgid "Preferred Name"
690−msgstr ""
694+msgstr "Gebruikersnaam"
691
695
692#: qml/Wizard/Pages/70-passwd-type.qml:40
696#: qml/Wizard/Pages/70-passwd-type.qml:40
693msgid "Lock Screen"
697msgid "Lock Screen"
694−msgstr ""
698+msgstr "Schermvergrendeling"
695
699
696#: qml/Wizard/Pages/70-passwd-type.qml:102
700#: qml/Wizard/Pages/70-passwd-type.qml:102
697msgctxt "Label: Type of security method"
701msgctxt "Label: Type of security method"
698msgid "Create new password"
702msgid "Create new password"
699−msgstr ""
703+msgstr "Een nieuw wachtwoord aanmaken"
700
704
701#: qml/Wizard/Pages/70-passwd-type.qml:104
705#: qml/Wizard/Pages/70-passwd-type.qml:104
702msgctxt "Label: Type of security method"
706msgctxt "Label: Type of security method"
703msgid "Create passcode (numbers only)"
707msgid "Create passcode (numbers only)"
704−msgstr ""
708+msgstr "PIN-code (alleen nummers) aanmaken"
705
709
706#: qml/Wizard/Pages/70-passwd-type.qml:106
710#: qml/Wizard/Pages/70-passwd-type.qml:106
707msgctxt "Label: Type of security method"
711msgctxt "Label: Type of security method"
708msgid "No lock code"
712msgid "No lock code"
709−msgstr ""
713+msgstr "Geen vergrendelcode"
710
714
711#: qml/Wizard/Pages/75-report-check.qml:26 qml/Wizard/Pages/here-terms.qml:108
715#: qml/Wizard/Pages/75-report-check.qml:26 qml/Wizard/Pages/here-terms.qml:108
712msgid "Privacy Policy"
716msgid "Privacy Policy"
713−msgstr ""
717+msgstr "Privacybeleid"
714
718
715#: qml/Wizard/Pages/75-report-check.qml:26
719#: qml/Wizard/Pages/75-report-check.qml:26
716msgid "Help Us Improve"
720msgid "Help Us Improve"
717−msgstr ""
721+msgstr "Help ons verbeteren"
718
722
719#: qml/Wizard/Pages/75-report-check.qml:59
723#: qml/Wizard/Pages/75-report-check.qml:59
720msgid "Improve system performance by sending us crashes and error reports."
724msgid "Improve system performance by sending us crashes and error reports."
721msgstr ""
725msgstr ""
726+"Verbeteren van systeemprestaties door ons crash- en foutrapportages te sturen"
722
727
723#: qml/Wizard/Pages/75-report-check.qml:60
728#: qml/Wizard/Pages/75-report-check.qml:60
724msgid "Privacy policy"
729msgid "Privacy policy"
725−msgstr ""
730+msgstr "Privacybeleid"
726
731
727#: qml/Wizard/Pages/77-system-update.qml:28
732#: qml/Wizard/Pages/77-system-update.qml:28
728msgid "Update Device"
733msgid "Update Device"
729−msgstr ""
734+msgstr "Apparaat bijwerken"
730
735
731#: qml/Wizard/Pages/77-system-update.qml:55
736#: qml/Wizard/Pages/77-system-update.qml:55
732msgid ""
737msgid ""
733"There is a system update available and ready to install. Afterwards, the "
738"There is a system update available and ready to install. Afterwards, the "
734"device will automatically restart."
739"device will automatically restart."
735msgstr ""
740msgstr ""
741+"Er is een systeemupdate beschikbaar en klaar om geïnstalleerd te worden. "
742+"Daarna zal het apparaat automatisch opnieuw starten."
736
743
737#: qml/Wizard/Pages/77-system-update.qml:76
744#: qml/Wizard/Pages/77-system-update.qml:76
738msgctxt "string identifying name of the update"
745msgctxt "string identifying name of the update"
739msgid "Ubuntu system"
746msgid "Ubuntu system"
740−msgstr ""
747+msgstr "Ubuntu-systeem"
741
748
742#: qml/Wizard/Pages/77-system-update.qml:83
749#: qml/Wizard/Pages/77-system-update.qml:83
743#, qt-format
750#, qt-format
744msgctxt "version of the system update"
751msgctxt "version of the system update"
745msgid "Version %1"
752msgid "Version %1"
746−msgstr ""
753+msgstr "Versie %1"
747
754
748#: qml/Wizard/Pages/77-system-update.qml:102
755#: qml/Wizard/Pages/77-system-update.qml:102
749msgid "This could take a few minutes..."
756msgid "This could take a few minutes..."
750−msgstr ""
757+msgstr "Dit kan enkele minuten duren…"
751
758
752#: qml/Wizard/Pages/77-system-update.qml:116
759#: qml/Wizard/Pages/77-system-update.qml:116
753msgid "Install and restart now"
760msgid "Install and restart now"
754−msgstr ""
761+msgstr "Nu installeren en herstarten"
755
762
756#: qml/Wizard/Pages/80-finished.qml:89
763#: qml/Wizard/Pages/80-finished.qml:89
757msgid "Welcome to Ubuntu"
764msgid "Welcome to Ubuntu"
758−msgstr ""
765+msgstr "Welkom bij Ubuntu"
759
766
760#: qml/Wizard/Pages/80-finished.qml:104
767#: qml/Wizard/Pages/80-finished.qml:104
761msgid "You are ready to use your device now"
768msgid "You are ready to use your device now"
762−msgstr ""
769+msgstr "U bent klaar om uw apparaat te gebruiken"
763
770
764#: qml/Wizard/Pages/80-finished.qml:124
771#: qml/Wizard/Pages/80-finished.qml:124
765msgid "Get Started"
772msgid "Get Started"
766−msgstr ""
773+msgstr "Aan de slag"
767
774
768#: qml/Wizard/Pages/here-terms.qml:25
775#: qml/Wizard/Pages/here-terms.qml:25
769msgid "Terms & Conditions"
776msgid "Terms & Conditions"
@@ -772,6 +779,7 @@ msgstr "Algemene voorwaarden"
772#: qml/Wizard/Pages/here-terms.qml:69
779#: qml/Wizard/Pages/here-terms.qml:69
773msgid "Your device uses positioning technologies provided by HERE."
780msgid "Your device uses positioning technologies provided by HERE."
774msgstr ""
781msgstr ""
782+"Uw apparaat maakt gebruik van technologieën voor plaatsbepaling van HERE."
775
783
776#: qml/Wizard/Pages/here-terms.qml:81
784#: qml/Wizard/Pages/here-terms.qml:81
777msgid ""
785msgid ""
@@ -779,21 +787,27 @@ msgid ""
779"collects information about nearby cell towers and Wi-Fi hotspots around your "
787"collects information about nearby cell towers and Wi-Fi hotspots around your "
780"current location whenever your position is being found."
788"current location whenever your position is being found."
781msgstr ""
789msgstr ""
790+"Om u plaatsbepalingsdiensten te leveren en deze te verbeteren, zal HERE "
791+"informatie verzamelen over GSM-masten in de buurt en wifi-hotspots rond uw "
792+"huidige locatie wanneer uw huidige positie gevonden is."
782
793
783#: qml/Wizard/Pages/here-terms.qml:93
794#: qml/Wizard/Pages/here-terms.qml:93
784msgid ""
795msgid ""
785"The information collected is used to analyze the service and to improve the "
796"The information collected is used to analyze the service and to improve the "
786"use of service, but not to identify you personally."
797"use of service, but not to identify you personally."
787msgstr ""
798msgstr ""
799+"De informatie die wordt verzameld zal gebruikt worden om de dienst te "
800+"analyseren en om het gebruik van de dienst te verbeteren, maar niet om u "
801+"persoonlijk te identificeren."
788
802
789#: qml/Wizard/Pages/here-terms.qml:106
803#: qml/Wizard/Pages/here-terms.qml:106
790#, qt-format
804#, qt-format
791msgid "By continuing, you agree to the HERE platform %1 and %2."
805msgid "By continuing, you agree to the HERE platform %1 and %2."
792−msgstr ""
806+msgstr "Als u doorgaat, gaat u akkoord met het HERE platform %1 en %2"
793
807
794#: qml/Wizard/Pages/here-terms.qml:107
808#: qml/Wizard/Pages/here-terms.qml:107
795msgid "Service Terms"
809msgid "Service Terms"
796−msgstr ""
810+msgstr "Dienstvoorwaarden"
797
811
798#: qml/Wizard/Pages/passcode-confirm.qml:43
812#: qml/Wizard/Pages/passcode-confirm.qml:43
799#: qml/Wizard/Pages/passcode-desktop.qml:97
813#: qml/Wizard/Pages/passcode-desktop.qml:97
@@ -802,25 +816,25 @@ msgstr "Toegangscode bevestigen"
802
816
803#: qml/Wizard/Pages/passcode-confirm.qml:45
817#: qml/Wizard/Pages/passcode-confirm.qml:45
804msgid "Incorrect passcode."
818msgid "Incorrect passcode."
805−msgstr ""
819+msgstr "Onjuiste PIN-code"
806
820
807#: qml/Wizard/Pages/passcode-confirm.qml:45
821#: qml/Wizard/Pages/passcode-confirm.qml:45
808msgctxt "Enter the passcode again"
822msgctxt "Enter the passcode again"
809msgid "Please re-enter."
823msgid "Please re-enter."
810−msgstr ""
824+msgstr "Voer uw PIN opnieuw in."
811
825
812#: qml/Wizard/Pages/passcode-desktop.qml:31
826#: qml/Wizard/Pages/passcode-desktop.qml:31
813msgid "Lock Screen Passcode"
827msgid "Lock Screen Passcode"
814−msgstr ""
828+msgstr "PIN-code schermvergrendeling"
815
829
816#: qml/Wizard/Pages/passcode-desktop.qml:61
830#: qml/Wizard/Pages/passcode-desktop.qml:61
817msgid "Enter 4 numbers to setup your passcode"
831msgid "Enter 4 numbers to setup your passcode"
818−msgstr ""
832+msgstr "Voer 4 cijfers is om uw PIN-code in te stellen"
819
833
820#: qml/Wizard/Pages/passcode-desktop.qml:77
834#: qml/Wizard/Pages/passcode-desktop.qml:77
821#: qml/Wizard/Pages/passcode-set.qml:54
835#: qml/Wizard/Pages/passcode-set.qml:54
822msgid "Choose passcode"
836msgid "Choose passcode"
823−msgstr ""
837+msgstr "Kies uw PIN-code"
824
838
825#: qml/Wizard/Pages/passcode-desktop.qml:127
839#: qml/Wizard/Pages/passcode-desktop.qml:127
826msgid "Passcode too short"
840msgid "Passcode too short"
po/nn.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2015-05-12 11:32+0000\n"
11"PO-Revision-Date: 2015-05-12 11:32+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Norwegian Nynorsk <nn@li.org>\n"
13"Language-Team: Norwegian Nynorsk <nn@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:04+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -477,62 +477,62 @@ msgstr ""
477msgid "Conference"
477msgid "Conference"
478msgstr ""
478msgstr ""
479
479
480−#: qml/Panel/Indicators/MenuItemFactory.qml:762
480+#: qml/Panel/Indicators/MenuItemFactory.qml:788
481msgid "Nothing is playing"
481msgid "Nothing is playing"
482msgstr ""
482msgstr ""
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:891
484+#: qml/Panel/Indicators/MenuItemFactory.qml:916
485#, qt-format
485#, qt-format
486msgid "%1 hour"
486msgid "%1 hour"
487msgid_plural "%1 hours"
487msgid_plural "%1 hours"
488msgstr[0] ""
488msgstr[0] ""
489msgstr[1] ""
489msgstr[1] ""
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:895
491+#: qml/Panel/Indicators/MenuItemFactory.qml:920
492#, qt-format
492#, qt-format
493msgid "%1 minute"
493msgid "%1 minute"
494msgid_plural "%1 minutes"
494msgid_plural "%1 minutes"
495msgstr[0] ""
495msgstr[0] ""
496msgstr[1] ""
496msgstr[1] ""
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:900
498+#: qml/Panel/Indicators/MenuItemFactory.qml:925
499#, qt-format
499#, qt-format
500msgid "%1 second"
500msgid "%1 second"
501msgid_plural "%1 seconds"
501msgid_plural "%1 seconds"
502msgstr[0] ""
502msgstr[0] ""
503msgstr[1] ""
503msgstr[1] ""
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:903
505+#: qml/Panel/Indicators/MenuItemFactory.qml:928
506msgid "0 seconds"
506msgid "0 seconds"
507msgstr ""
507msgstr ""
508
508
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
510−#: qml/Panel/Indicators/MenuItemFactory.qml:905
510+#: qml/Panel/Indicators/MenuItemFactory.qml:930
511#, qt-format
511#, qt-format
512msgid "%1 remaining"
512msgid "%1 remaining"
513msgstr ""
513msgstr ""
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:911
515+#: qml/Panel/Indicators/MenuItemFactory.qml:936
516msgid "In queue…"
516msgid "In queue…"
517msgstr ""
517msgstr ""
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:915
519+#: qml/Panel/Indicators/MenuItemFactory.qml:940
520msgid "Downloading"
520msgid "Downloading"
521msgstr ""
521msgstr ""
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:917
523+#: qml/Panel/Indicators/MenuItemFactory.qml:942
524msgid "Paused, tap to resume"
524msgid "Paused, tap to resume"
525msgstr ""
525msgstr ""
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:919
527+#: qml/Panel/Indicators/MenuItemFactory.qml:944
528msgid "Canceled"
528msgid "Canceled"
529msgstr ""
529msgstr ""
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:921
531+#: qml/Panel/Indicators/MenuItemFactory.qml:946
532msgid "Finished"
532msgid "Finished"
533msgstr ""
533msgstr ""
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:923
535+#: qml/Panel/Indicators/MenuItemFactory.qml:948
536msgid "Failed, tap to retry"
536msgid "Failed, tap to retry"
537msgstr ""
537msgstr ""
538
538
@@ -552,7 +552,7 @@ msgctxt "Button: Call back on phone"
552msgid "Call back"
552msgid "Call back"
553msgstr ""
553msgstr ""
554
554
555−#: qml/Stages/SideStage.qml:76
555+#: qml/Stage/SideStage.qml:76
556msgid "Drag using 3 fingers any application from one window to the other"
556msgid "Drag using 3 fingers any application from one window to the other"
557msgstr ""
557msgstr ""
558
558
po/oc.po+18−18
@@ -7,16 +7,16 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11−"PO-Revision-Date: 2016-10-07 15:21+0000\n"
11+"PO-Revision-Date: 2016-10-27 13:43+0000\n"
12"Last-Translator: Cédric VALMARY (Tot en òc) <cvalmary@yahoo.fr>\n"
12"Last-Translator: Cédric VALMARY (Tot en òc) <cvalmary@yahoo.fr>\n"
13"Language-Team: Occitan (post 1500) <oc@li.org>\n"
13"Language-Team: Occitan (post 1500) <oc@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2016-10-08 06:48+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18227)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -488,62 +488,62 @@ msgstr "Quichatz per tornar a l'apèl..."
488msgid "Conference"
488msgid "Conference"
489msgstr "Conferéncia"
489msgstr "Conferéncia"
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:762
491+#: qml/Panel/Indicators/MenuItemFactory.qml:788
492msgid "Nothing is playing"
492msgid "Nothing is playing"
493msgstr "Res es pas en cors de lectura"
493msgstr "Res es pas en cors de lectura"
494
494
495−#: qml/Panel/Indicators/MenuItemFactory.qml:891
495+#: qml/Panel/Indicators/MenuItemFactory.qml:916
496#, qt-format
496#, qt-format
497msgid "%1 hour"
497msgid "%1 hour"
498msgid_plural "%1 hours"
498msgid_plural "%1 hours"
499msgstr[0] "%1 ora"
499msgstr[0] "%1 ora"
500msgstr[1] "%1 oras"
500msgstr[1] "%1 oras"
501
501
502−#: qml/Panel/Indicators/MenuItemFactory.qml:895
502+#: qml/Panel/Indicators/MenuItemFactory.qml:920
503#, qt-format
503#, qt-format
504msgid "%1 minute"
504msgid "%1 minute"
505msgid_plural "%1 minutes"
505msgid_plural "%1 minutes"
506msgstr[0] "%1 minuta"
506msgstr[0] "%1 minuta"
507msgstr[1] "%1 minutas"
507msgstr[1] "%1 minutas"
508
508
509−#: qml/Panel/Indicators/MenuItemFactory.qml:900
509+#: qml/Panel/Indicators/MenuItemFactory.qml:925
510#, qt-format
510#, qt-format
511msgid "%1 second"
511msgid "%1 second"
512msgid_plural "%1 seconds"
512msgid_plural "%1 seconds"
513msgstr[0] "%1 segonda"
513msgstr[0] "%1 segonda"
514msgstr[1] "%1 segondas"
514msgstr[1] "%1 segondas"
515
515
516−#: qml/Panel/Indicators/MenuItemFactory.qml:903
516+#: qml/Panel/Indicators/MenuItemFactory.qml:928
517msgid "0 seconds"
517msgid "0 seconds"
518msgstr "0 segonda"
518msgstr "0 segonda"
519
519
520#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
520#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
521−#: qml/Panel/Indicators/MenuItemFactory.qml:905
521+#: qml/Panel/Indicators/MenuItemFactory.qml:930
522#, qt-format
522#, qt-format
523msgid "%1 remaining"
523msgid "%1 remaining"
524msgstr "Demòra %1"
524msgstr "Demòra %1"
525
525
526−#: qml/Panel/Indicators/MenuItemFactory.qml:911
526+#: qml/Panel/Indicators/MenuItemFactory.qml:936
527msgid "In queue…"
527msgid "In queue…"
528msgstr "Dins la fila d'espèra..."
528msgstr "Dins la fila d'espèra..."
529
529
530−#: qml/Panel/Indicators/MenuItemFactory.qml:915
530+#: qml/Panel/Indicators/MenuItemFactory.qml:940
531msgid "Downloading"
531msgid "Downloading"
532msgstr "Telecargament en cors"
532msgstr "Telecargament en cors"
533
533
534−#: qml/Panel/Indicators/MenuItemFactory.qml:917
534+#: qml/Panel/Indicators/MenuItemFactory.qml:942
535msgid "Paused, tap to resume"
535msgid "Paused, tap to resume"
536msgstr "En pausa, quichatz per reprene"
536msgstr "En pausa, quichatz per reprene"
537
537
538−#: qml/Panel/Indicators/MenuItemFactory.qml:919
538+#: qml/Panel/Indicators/MenuItemFactory.qml:944
539msgid "Canceled"
539msgid "Canceled"
540msgstr "Anullat"
540msgstr "Anullat"
541
541
542−#: qml/Panel/Indicators/MenuItemFactory.qml:921
542+#: qml/Panel/Indicators/MenuItemFactory.qml:946
543msgid "Finished"
543msgid "Finished"
544msgstr "Acabat"
544msgstr "Acabat"
545
545
546−#: qml/Panel/Indicators/MenuItemFactory.qml:923
546+#: qml/Panel/Indicators/MenuItemFactory.qml:948
547msgid "Failed, tap to retry"
547msgid "Failed, tap to retry"
548msgstr "Fracàs, quichatz per reensajar"
548msgstr "Fracàs, quichatz per reensajar"
549
549
@@ -563,7 +563,7 @@ msgctxt "Button: Call back on phone"
563msgid "Call back"
563msgid "Call back"
564msgstr "Rapelar"
564msgstr "Rapelar"
565
565
566−#: qml/Stages/SideStage.qml:76
566+#: qml/Stage/SideStage.qml:76
567msgid "Drag using 3 fingers any application from one window to the other"
567msgid "Drag using 3 fingers any application from one window to the other"
568msgstr ""
568msgstr ""
569"Fasètz lisar amb 3 dets quina aplicacion que siá d'una fenèstra a l'autra"
569"Fasètz lisar amb 3 dets quina aplicacion que siá d'una fenèstra a l'autra"
@@ -632,7 +632,7 @@ msgstr "Passar"
632
632
633#: qml/Wizard/Pages/30-wifi.qml:31
633#: qml/Wizard/Pages/30-wifi.qml:31
634msgid "Connect to Wi‑Fi"
634msgid "Connect to Wi‑Fi"
635−msgstr "Se connecter al Wi-Fi"
635+msgstr "Se connectar al Wi-Fi"
636
636
637#: qml/Wizard/Pages/30-wifi.qml:132
637#: qml/Wizard/Pages/30-wifi.qml:132
638msgid "Connected"
638msgid "Connected"
po/or.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2015-03-21 05:28+0000\n"
11"PO-Revision-Date: 2015-03-21 05:28+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Oriya <or@li.org>\n"
13"Language-Team: Oriya <or@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n!=1;\n"
17"Plural-Forms: nplurals=2; plural=n!=1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:04+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -477,62 +477,62 @@ msgstr ""
477msgid "Conference"
477msgid "Conference"
478msgstr ""
478msgstr ""
479
479
480−#: qml/Panel/Indicators/MenuItemFactory.qml:762
480+#: qml/Panel/Indicators/MenuItemFactory.qml:788
481msgid "Nothing is playing"
481msgid "Nothing is playing"
482msgstr ""
482msgstr ""
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:891
484+#: qml/Panel/Indicators/MenuItemFactory.qml:916
485#, qt-format
485#, qt-format
486msgid "%1 hour"
486msgid "%1 hour"
487msgid_plural "%1 hours"
487msgid_plural "%1 hours"
488msgstr[0] ""
488msgstr[0] ""
489msgstr[1] ""
489msgstr[1] ""
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:895
491+#: qml/Panel/Indicators/MenuItemFactory.qml:920
492#, qt-format
492#, qt-format
493msgid "%1 minute"
493msgid "%1 minute"
494msgid_plural "%1 minutes"
494msgid_plural "%1 minutes"
495msgstr[0] ""
495msgstr[0] ""
496msgstr[1] ""
496msgstr[1] ""
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:900
498+#: qml/Panel/Indicators/MenuItemFactory.qml:925
499#, qt-format
499#, qt-format
500msgid "%1 second"
500msgid "%1 second"
501msgid_plural "%1 seconds"
501msgid_plural "%1 seconds"
502msgstr[0] ""
502msgstr[0] ""
503msgstr[1] ""
503msgstr[1] ""
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:903
505+#: qml/Panel/Indicators/MenuItemFactory.qml:928
506msgid "0 seconds"
506msgid "0 seconds"
507msgstr ""
507msgstr ""
508
508
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
510−#: qml/Panel/Indicators/MenuItemFactory.qml:905
510+#: qml/Panel/Indicators/MenuItemFactory.qml:930
511#, qt-format
511#, qt-format
512msgid "%1 remaining"
512msgid "%1 remaining"
513msgstr ""
513msgstr ""
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:911
515+#: qml/Panel/Indicators/MenuItemFactory.qml:936
516msgid "In queue…"
516msgid "In queue…"
517msgstr ""
517msgstr ""
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:915
519+#: qml/Panel/Indicators/MenuItemFactory.qml:940
520msgid "Downloading"
520msgid "Downloading"
521msgstr ""
521msgstr ""
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:917
523+#: qml/Panel/Indicators/MenuItemFactory.qml:942
524msgid "Paused, tap to resume"
524msgid "Paused, tap to resume"
525msgstr ""
525msgstr ""
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:919
527+#: qml/Panel/Indicators/MenuItemFactory.qml:944
528msgid "Canceled"
528msgid "Canceled"
529msgstr ""
529msgstr ""
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:921
531+#: qml/Panel/Indicators/MenuItemFactory.qml:946
532msgid "Finished"
532msgid "Finished"
533msgstr ""
533msgstr ""
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:923
535+#: qml/Panel/Indicators/MenuItemFactory.qml:948
536msgid "Failed, tap to retry"
536msgid "Failed, tap to retry"
537msgstr ""
537msgstr ""
538
538
@@ -552,7 +552,7 @@ msgctxt "Button: Call back on phone"
552msgid "Call back"
552msgid "Call back"
553msgstr ""
553msgstr ""
554
554
555−#: qml/Stages/SideStage.qml:76
555+#: qml/Stage/SideStage.qml:76
556msgid "Drag using 3 fingers any application from one window to the other"
556msgid "Drag using 3 fingers any application from one window to the other"
557msgstr ""
557msgstr ""
558
558
po/pa.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2015-04-24 04:29+0000\n"
11"PO-Revision-Date: 2015-04-24 04:29+0000\n"
12"Last-Translator: Gursharnjit_Singh <ubuntuser13@gmail.com>\n"
12"Last-Translator: Gursharnjit_Singh <ubuntuser13@gmail.com>\n"
13"Language-Team: Punjabi <pa@li.org>\n"
13"Language-Team: Punjabi <pa@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:04+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -479,62 +479,62 @@ msgstr "ਕਾਲ ਤੇ ਵਾਪਸ ਜਾਣ ਲਈ ਛੁਹੋ..."
479msgid "Conference"
479msgid "Conference"
480msgstr "ਕਨਫਰੰਸ"
480msgstr "ਕਨਫਰੰਸ"
481
481
482−#: qml/Panel/Indicators/MenuItemFactory.qml:762
482+#: qml/Panel/Indicators/MenuItemFactory.qml:788
483msgid "Nothing is playing"
483msgid "Nothing is playing"
484msgstr "ਕੁੱਝ ਨਹੀਂ ਚੱਲ ਰਿਹਾ"
484msgstr "ਕੁੱਝ ਨਹੀਂ ਚੱਲ ਰਿਹਾ"
485
485
486−#: qml/Panel/Indicators/MenuItemFactory.qml:891
486+#: qml/Panel/Indicators/MenuItemFactory.qml:916
487#, qt-format
487#, qt-format
488msgid "%1 hour"
488msgid "%1 hour"
489msgid_plural "%1 hours"
489msgid_plural "%1 hours"
490msgstr[0] ""
490msgstr[0] ""
491msgstr[1] ""
491msgstr[1] ""
492
492
493−#: qml/Panel/Indicators/MenuItemFactory.qml:895
493+#: qml/Panel/Indicators/MenuItemFactory.qml:920
494#, qt-format
494#, qt-format
495msgid "%1 minute"
495msgid "%1 minute"
496msgid_plural "%1 minutes"
496msgid_plural "%1 minutes"
497msgstr[0] ""
497msgstr[0] ""
498msgstr[1] ""
498msgstr[1] ""
499
499
500−#: qml/Panel/Indicators/MenuItemFactory.qml:900
500+#: qml/Panel/Indicators/MenuItemFactory.qml:925
501#, qt-format
501#, qt-format
502msgid "%1 second"
502msgid "%1 second"
503msgid_plural "%1 seconds"
503msgid_plural "%1 seconds"
504msgstr[0] ""
504msgstr[0] ""
505msgstr[1] ""
505msgstr[1] ""
506
506
507−#: qml/Panel/Indicators/MenuItemFactory.qml:903
507+#: qml/Panel/Indicators/MenuItemFactory.qml:928
508msgid "0 seconds"
508msgid "0 seconds"
509msgstr ""
509msgstr ""
510
510
511#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
511#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
512−#: qml/Panel/Indicators/MenuItemFactory.qml:905
512+#: qml/Panel/Indicators/MenuItemFactory.qml:930
513#, qt-format
513#, qt-format
514msgid "%1 remaining"
514msgid "%1 remaining"
515msgstr ""
515msgstr ""
516
516
517−#: qml/Panel/Indicators/MenuItemFactory.qml:911
517+#: qml/Panel/Indicators/MenuItemFactory.qml:936
518msgid "In queue…"
518msgid "In queue…"
519msgstr "ਕਤਾਰ ਵਿੱਚ..."
519msgstr "ਕਤਾਰ ਵਿੱਚ..."
520
520
521−#: qml/Panel/Indicators/MenuItemFactory.qml:915
521+#: qml/Panel/Indicators/MenuItemFactory.qml:940
522msgid "Downloading"
522msgid "Downloading"
523msgstr "ਡਾਊਨਲੋਡ ਕਰ ਰਿਹਾ"
523msgstr "ਡਾਊਨਲੋਡ ਕਰ ਰਿਹਾ"
524
524
525−#: qml/Panel/Indicators/MenuItemFactory.qml:917
525+#: qml/Panel/Indicators/MenuItemFactory.qml:942
526msgid "Paused, tap to resume"
526msgid "Paused, tap to resume"
527msgstr "ਵਿਰਾਮ, ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਛੂਹੋ"
527msgstr "ਵਿਰਾਮ, ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਛੂਹੋ"
528
528
529−#: qml/Panel/Indicators/MenuItemFactory.qml:919
529+#: qml/Panel/Indicators/MenuItemFactory.qml:944
530msgid "Canceled"
530msgid "Canceled"
531msgstr "ਰੱਦ ਕੀਤਾ"
531msgstr "ਰੱਦ ਕੀਤਾ"
532
532
533−#: qml/Panel/Indicators/MenuItemFactory.qml:921
533+#: qml/Panel/Indicators/MenuItemFactory.qml:946
534msgid "Finished"
534msgid "Finished"
535msgstr "ਮੁਕੰਮਲ"
535msgstr "ਮੁਕੰਮਲ"
536
536
537−#: qml/Panel/Indicators/MenuItemFactory.qml:923
537+#: qml/Panel/Indicators/MenuItemFactory.qml:948
538msgid "Failed, tap to retry"
538msgid "Failed, tap to retry"
539msgstr "ਫ਼ੇਲ੍ਹ ਹੋਇਆ, ਮੁੜ-ਕੋਸ਼ਿਸ ਲਈ ਛੂਹੋ"
539msgstr "ਫ਼ੇਲ੍ਹ ਹੋਇਆ, ਮੁੜ-ਕੋਸ਼ਿਸ ਲਈ ਛੂਹੋ"
540
540
@@ -554,7 +554,7 @@ msgctxt "Button: Call back on phone"
554msgid "Call back"
554msgid "Call back"
555msgstr ""
555msgstr ""
556
556
557−#: qml/Stages/SideStage.qml:76
557+#: qml/Stage/SideStage.qml:76
558msgid "Drag using 3 fingers any application from one window to the other"
558msgid "Drag using 3 fingers any application from one window to the other"
559msgstr ""
559msgstr ""
560
560
po/pl.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-06-22 13:51+0000\n"
11"PO-Revision-Date: 2016-06-22 13:51+0000\n"
12"Last-Translator: Krzysztof Tataradziński <Unknown>\n"
12"Last-Translator: Krzysztof Tataradziński <Unknown>\n"
13"Language-Team: Polish <pl@li.org>\n"
13"Language-Team: Polish <pl@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
17"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
18"|| n%100>=20) ? 1 : 2;\n"
18"|| n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-09-27 07:04+0000\n"
19+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
20−"X-Generator: Launchpad (build 18204)\n"
20+"X-Generator: Launchpad (build 18246)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:123
22#: plugins/LightDM/Greeter.cpp:123
23msgid "Password: "
23msgid "Password: "
@@ -482,11 +482,11 @@ msgstr "Dotknij aby powrócić do połączenia..."
482msgid "Conference"
482msgid "Conference"
483msgstr "Konferencja"
483msgstr "Konferencja"
484
484
485−#: qml/Panel/Indicators/MenuItemFactory.qml:762
485+#: qml/Panel/Indicators/MenuItemFactory.qml:788
486msgid "Nothing is playing"
486msgid "Nothing is playing"
487msgstr "Nic nie jest odtwarzane"
487msgstr "Nic nie jest odtwarzane"
488
488
489−#: qml/Panel/Indicators/MenuItemFactory.qml:891
489+#: qml/Panel/Indicators/MenuItemFactory.qml:916
490#, qt-format
490#, qt-format
491msgid "%1 hour"
491msgid "%1 hour"
492msgid_plural "%1 hours"
492msgid_plural "%1 hours"
@@ -494,7 +494,7 @@ msgstr[0] "%1 godzina"
494msgstr[1] "%1 godziny"
494msgstr[1] "%1 godziny"
495msgstr[2] "%1 godzin"
495msgstr[2] "%1 godzin"
496
496
497−#: qml/Panel/Indicators/MenuItemFactory.qml:895
497+#: qml/Panel/Indicators/MenuItemFactory.qml:920
498#, qt-format
498#, qt-format
499msgid "%1 minute"
499msgid "%1 minute"
500msgid_plural "%1 minutes"
500msgid_plural "%1 minutes"
@@ -502,7 +502,7 @@ msgstr[0] "%1 minuta"
502msgstr[1] "%1 minuty"
502msgstr[1] "%1 minuty"
503msgstr[2] "%1 minut"
503msgstr[2] "%1 minut"
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:900
505+#: qml/Panel/Indicators/MenuItemFactory.qml:925
506#, qt-format
506#, qt-format
507msgid "%1 second"
507msgid "%1 second"
508msgid_plural "%1 seconds"
508msgid_plural "%1 seconds"
@@ -510,37 +510,37 @@ msgstr[0] "%1 sekunda"
510msgstr[1] "%1 sekundy"
510msgstr[1] "%1 sekundy"
511msgstr[2] "%1 sekund"
511msgstr[2] "%1 sekund"
512
512
513−#: qml/Panel/Indicators/MenuItemFactory.qml:903
513+#: qml/Panel/Indicators/MenuItemFactory.qml:928
514msgid "0 seconds"
514msgid "0 seconds"
515msgstr "0 sekund"
515msgstr "0 sekund"
516
516
517#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
517#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
518−#: qml/Panel/Indicators/MenuItemFactory.qml:905
518+#: qml/Panel/Indicators/MenuItemFactory.qml:930
519#, qt-format
519#, qt-format
520msgid "%1 remaining"
520msgid "%1 remaining"
521msgstr "Pozostało: %1"
521msgstr "Pozostało: %1"
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:911
523+#: qml/Panel/Indicators/MenuItemFactory.qml:936
524msgid "In queue…"
524msgid "In queue…"
525msgstr "W kolejce..."
525msgstr "W kolejce..."
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:915
527+#: qml/Panel/Indicators/MenuItemFactory.qml:940
528msgid "Downloading"
528msgid "Downloading"
529msgstr "Pobieranie"
529msgstr "Pobieranie"
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:917
531+#: qml/Panel/Indicators/MenuItemFactory.qml:942
532msgid "Paused, tap to resume"
532msgid "Paused, tap to resume"
533msgstr "Wstrzymano, kliknij by wznowić"
533msgstr "Wstrzymano, kliknij by wznowić"
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:919
535+#: qml/Panel/Indicators/MenuItemFactory.qml:944
536msgid "Canceled"
536msgid "Canceled"
537msgstr "Anulowano"
537msgstr "Anulowano"
538
538
539−#: qml/Panel/Indicators/MenuItemFactory.qml:921
539+#: qml/Panel/Indicators/MenuItemFactory.qml:946
540msgid "Finished"
540msgid "Finished"
541msgstr "Zakończono"
541msgstr "Zakończono"
542
542
543−#: qml/Panel/Indicators/MenuItemFactory.qml:923
543+#: qml/Panel/Indicators/MenuItemFactory.qml:948
544msgid "Failed, tap to retry"
544msgid "Failed, tap to retry"
545msgstr "Błąd, kliknij aby powtórzyć"
545msgstr "Błąd, kliknij aby powtórzyć"
546
546
@@ -560,7 +560,7 @@ msgctxt "Button: Call back on phone"
560msgid "Call back"
560msgid "Call back"
561msgstr "Oddzwoń"
561msgstr "Oddzwoń"
562
562
563−#: qml/Stages/SideStage.qml:76
563+#: qml/Stage/SideStage.qml:76
564msgid "Drag using 3 fingers any application from one window to the other"
564msgid "Drag using 3 fingers any application from one window to the other"
565msgstr ""
565msgstr ""
566"Przeciągnij 3 palcami jakąkolwiek aplikację z jednego okna do drugiego"
566"Przeciągnij 3 palcami jakąkolwiek aplikację z jednego okna do drugiego"
po/pt.po+20−20
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-06-20 11:37+0000\n"
11"PO-Revision-Date: 2016-06-20 11:37+0000\n"
12"Last-Translator: Ivo Xavier <ivoxavier.8@gmail.com>\n"
12"Last-Translator: Ivo Xavier <ivoxavier.8@gmail.com>\n"
13"Language-Team: Portuguese <pt@li.org>\n"
13"Language-Team: Portuguese <pt@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -38,7 +38,7 @@ msgstr "Remover atalho"
38#: qml/Components/Dialogs.qml:149
38#: qml/Components/Dialogs.qml:149
39msgctxt "Title: Lock/Log out dialog"
39msgctxt "Title: Lock/Log out dialog"
40msgid "Log out"
40msgid "Log out"
41−msgstr "Terminar sessão"
41+msgstr "Terminar a sessão"
42
42
43#: qml/Components/Dialogs.qml:150
43#: qml/Components/Dialogs.qml:150
44msgid "Are you sure you want to log out?"
44msgid "Are you sure you want to log out?"
@@ -52,7 +52,7 @@ msgstr "Bloquear"
52#: qml/Components/Dialogs.qml:159
52#: qml/Components/Dialogs.qml:159
53msgctxt "Button: Log out from the system"
53msgctxt "Button: Log out from the system"
54msgid "Log Out"
54msgid "Log Out"
55−msgstr "Terminar sessão"
55+msgstr "Terminar a sessão"
56
56
57#: qml/Components/Dialogs.qml:166 qml/Components/Dialogs.qml:222
57#: qml/Components/Dialogs.qml:166 qml/Components/Dialogs.qml:222
58#: qml/Dash/DashPageHeader.qml:324 qml/Greeter/NarrowView.qml:232
58#: qml/Dash/DashPageHeader.qml:324 qml/Greeter/NarrowView.qml:232
@@ -167,7 +167,7 @@ msgstr "Super + Tab"
167
167
168#: qml/Components/KeyboardShortcutsOverlay.qml:156
168#: qml/Components/KeyboardShortcutsOverlay.qml:156
169msgid "Switches applications via the launcher."
169msgid "Switches applications via the launcher."
170−msgstr "Trocas de aplicações através do Launcher."
170+msgstr "Muda aplicações através do Launcher."
171
171
172#: qml/Components/KeyboardShortcutsOverlay.qml:164
172#: qml/Components/KeyboardShortcutsOverlay.qml:164
173msgid "Super + 0 to 9"
173msgid "Super + 0 to 9"
@@ -199,7 +199,7 @@ msgstr "Alt + Tab"
199
199
200#: qml/Components/KeyboardShortcutsOverlay.qml:221
200#: qml/Components/KeyboardShortcutsOverlay.qml:221
201msgid "Switches between applications."
201msgid "Switches between applications."
202−msgstr "Alternar entre apps."
202+msgstr "Alternar entre aplicações."
203
203
204#: qml/Components/KeyboardShortcutsOverlay.qml:229
204#: qml/Components/KeyboardShortcutsOverlay.qml:229
205msgid "Super + W"
205msgid "Super + W"
@@ -486,62 +486,62 @@ msgstr "Toque para voltar à chamada..."
486msgid "Conference"
486msgid "Conference"
487msgstr "Conferência"
487msgstr "Conferência"
488
488
489−#: qml/Panel/Indicators/MenuItemFactory.qml:762
489+#: qml/Panel/Indicators/MenuItemFactory.qml:788
490msgid "Nothing is playing"
490msgid "Nothing is playing"
491msgstr "Nada está a ser tocado"
491msgstr "Nada está a ser tocado"
492
492
493−#: qml/Panel/Indicators/MenuItemFactory.qml:891
493+#: qml/Panel/Indicators/MenuItemFactory.qml:916
494#, qt-format
494#, qt-format
495msgid "%1 hour"
495msgid "%1 hour"
496msgid_plural "%1 hours"
496msgid_plural "%1 hours"
497msgstr[0] "%1 hora"
497msgstr[0] "%1 hora"
498msgstr[1] "%1 horas"
498msgstr[1] "%1 horas"
499
499
500−#: qml/Panel/Indicators/MenuItemFactory.qml:895
500+#: qml/Panel/Indicators/MenuItemFactory.qml:920
501#, qt-format
501#, qt-format
502msgid "%1 minute"
502msgid "%1 minute"
503msgid_plural "%1 minutes"
503msgid_plural "%1 minutes"
504msgstr[0] "%1 minuto"
504msgstr[0] "%1 minuto"
505msgstr[1] "%1 minutos"
505msgstr[1] "%1 minutos"
506
506
507−#: qml/Panel/Indicators/MenuItemFactory.qml:900
507+#: qml/Panel/Indicators/MenuItemFactory.qml:925
508#, qt-format
508#, qt-format
509msgid "%1 second"
509msgid "%1 second"
510msgid_plural "%1 seconds"
510msgid_plural "%1 seconds"
511msgstr[0] "%1 segundo"
511msgstr[0] "%1 segundo"
512msgstr[1] "%1 segundos"
512msgstr[1] "%1 segundos"
513
513
514−#: qml/Panel/Indicators/MenuItemFactory.qml:903
514+#: qml/Panel/Indicators/MenuItemFactory.qml:928
515msgid "0 seconds"
515msgid "0 seconds"
516msgstr "0 segundos"
516msgstr "0 segundos"
517
517
518#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
518#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
519−#: qml/Panel/Indicators/MenuItemFactory.qml:905
519+#: qml/Panel/Indicators/MenuItemFactory.qml:930
520#, qt-format
520#, qt-format
521msgid "%1 remaining"
521msgid "%1 remaining"
522msgstr "Falta %1"
522msgstr "Falta %1"
523
523
524−#: qml/Panel/Indicators/MenuItemFactory.qml:911
524+#: qml/Panel/Indicators/MenuItemFactory.qml:936
525msgid "In queue…"
525msgid "In queue…"
526msgstr "Em fila..."
526msgstr "Em fila..."
527
527
528−#: qml/Panel/Indicators/MenuItemFactory.qml:915
528+#: qml/Panel/Indicators/MenuItemFactory.qml:940
529msgid "Downloading"
529msgid "Downloading"
530msgstr "A transferir"
530msgstr "A transferir"
531
531
532−#: qml/Panel/Indicators/MenuItemFactory.qml:917
532+#: qml/Panel/Indicators/MenuItemFactory.qml:942
533msgid "Paused, tap to resume"
533msgid "Paused, tap to resume"
534msgstr "Parado, toque para continuar"
534msgstr "Parado, toque para continuar"
535
535
536−#: qml/Panel/Indicators/MenuItemFactory.qml:919
536+#: qml/Panel/Indicators/MenuItemFactory.qml:944
537msgid "Canceled"
537msgid "Canceled"
538msgstr "Cancelado"
538msgstr "Cancelado"
539
539
540−#: qml/Panel/Indicators/MenuItemFactory.qml:921
540+#: qml/Panel/Indicators/MenuItemFactory.qml:946
541msgid "Finished"
541msgid "Finished"
542msgstr "Concluído"
542msgstr "Concluído"
543
543
544−#: qml/Panel/Indicators/MenuItemFactory.qml:923
544+#: qml/Panel/Indicators/MenuItemFactory.qml:948
545msgid "Failed, tap to retry"
545msgid "Failed, tap to retry"
546msgstr "Falhou, toque para repetir"
546msgstr "Falhou, toque para repetir"
547
547
@@ -561,7 +561,7 @@ msgctxt "Button: Call back on phone"
561msgid "Call back"
561msgid "Call back"
562msgstr "Ligar de volta"
562msgstr "Ligar de volta"
563
563
564−#: qml/Stages/SideStage.qml:76
564+#: qml/Stage/SideStage.qml:76
565msgid "Drag using 3 fingers any application from one window to the other"
565msgid "Drag using 3 fingers any application from one window to the other"
566msgstr "Arraste qualquer app usando três dedos de uma janela para outra"
566msgstr "Arraste qualquer app usando três dedos de uma janela para outra"
567
567
po/pt_BR.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2015-08-05 04:40+0000\n"
11"PO-Revision-Date: 2015-08-05 04:40+0000\n"
12"Last-Translator: Julio Alexander Sieg <julio.sieg@gmail.com>\n"
12"Last-Translator: Julio Alexander Sieg <julio.sieg@gmail.com>\n"
13"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
13"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:55+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -481,62 +481,62 @@ msgstr "Toque para retornar para a chamada..."
481msgid "Conference"
481msgid "Conference"
482msgstr "Conferência"
482msgstr "Conferência"
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:762
484+#: qml/Panel/Indicators/MenuItemFactory.qml:788
485msgid "Nothing is playing"
485msgid "Nothing is playing"
486msgstr "Nada está tocando"
486msgstr "Nada está tocando"
487
487
488−#: qml/Panel/Indicators/MenuItemFactory.qml:891
488+#: qml/Panel/Indicators/MenuItemFactory.qml:916
489#, qt-format
489#, qt-format
490msgid "%1 hour"
490msgid "%1 hour"
491msgid_plural "%1 hours"
491msgid_plural "%1 hours"
492msgstr[0] "%1 hora"
492msgstr[0] "%1 hora"
493msgstr[1] "%1 horas"
493msgstr[1] "%1 horas"
494
494
495−#: qml/Panel/Indicators/MenuItemFactory.qml:895
495+#: qml/Panel/Indicators/MenuItemFactory.qml:920
496#, qt-format
496#, qt-format
497msgid "%1 minute"
497msgid "%1 minute"
498msgid_plural "%1 minutes"
498msgid_plural "%1 minutes"
499msgstr[0] "%1 minuto"
499msgstr[0] "%1 minuto"
500msgstr[1] "%1 minutos"
500msgstr[1] "%1 minutos"
501
501
502−#: qml/Panel/Indicators/MenuItemFactory.qml:900
502+#: qml/Panel/Indicators/MenuItemFactory.qml:925
503#, qt-format
503#, qt-format
504msgid "%1 second"
504msgid "%1 second"
505msgid_plural "%1 seconds"
505msgid_plural "%1 seconds"
506msgstr[0] "%1 segundo"
506msgstr[0] "%1 segundo"
507msgstr[1] "%1 segundos"
507msgstr[1] "%1 segundos"
508
508
509−#: qml/Panel/Indicators/MenuItemFactory.qml:903
509+#: qml/Panel/Indicators/MenuItemFactory.qml:928
510msgid "0 seconds"
510msgid "0 seconds"
511msgstr "0 segundo"
511msgstr "0 segundo"
512
512
513#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
513#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
514−#: qml/Panel/Indicators/MenuItemFactory.qml:905
514+#: qml/Panel/Indicators/MenuItemFactory.qml:930
515#, qt-format
515#, qt-format
516msgid "%1 remaining"
516msgid "%1 remaining"
517msgstr "%1 restantes"
517msgstr "%1 restantes"
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:911
519+#: qml/Panel/Indicators/MenuItemFactory.qml:936
520msgid "In queue…"
520msgid "In queue…"
521msgstr "Em fila..."
521msgstr "Em fila..."
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:915
523+#: qml/Panel/Indicators/MenuItemFactory.qml:940
524msgid "Downloading"
524msgid "Downloading"
525msgstr "Baixando"
525msgstr "Baixando"
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:917
527+#: qml/Panel/Indicators/MenuItemFactory.qml:942
528msgid "Paused, tap to resume"
528msgid "Paused, tap to resume"
529msgstr "Em pausa, toque para continuar"
529msgstr "Em pausa, toque para continuar"
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:919
531+#: qml/Panel/Indicators/MenuItemFactory.qml:944
532msgid "Canceled"
532msgid "Canceled"
533msgstr "Cancelado"
533msgstr "Cancelado"
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:921
535+#: qml/Panel/Indicators/MenuItemFactory.qml:946
536msgid "Finished"
536msgid "Finished"
537msgstr "Finalizado"
537msgstr "Finalizado"
538
538
539−#: qml/Panel/Indicators/MenuItemFactory.qml:923
539+#: qml/Panel/Indicators/MenuItemFactory.qml:948
540msgid "Failed, tap to retry"
540msgid "Failed, tap to retry"
541msgstr "Falhou, toque para tentar novamente"
541msgstr "Falhou, toque para tentar novamente"
542
542
@@ -556,7 +556,7 @@ msgctxt "Button: Call back on phone"
556msgid "Call back"
556msgid "Call back"
557msgstr "Retornar chamada"
557msgstr "Retornar chamada"
558
558
559−#: qml/Stages/SideStage.qml:76
559+#: qml/Stage/SideStage.qml:76
560msgid "Drag using 3 fingers any application from one window to the other"
560msgid "Drag using 3 fingers any application from one window to the other"
561msgstr ""
561msgstr ""
562
562
po/ro.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2015-07-06 17:47+0000\n"
11"PO-Revision-Date: 2015-07-06 17:47+0000\n"
12"Last-Translator: Meriuță Cornel <meriutacornel@neacornel.eu>\n"
12"Last-Translator: Meriuță Cornel <meriutacornel@neacornel.eu>\n"
13"Language-Team: Romanian <ro@li.org>\n"
13"Language-Team: Romanian <ro@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 "
17"Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 "
18"== 0) && (n != 0))) ? 2: 1));\n"
18"== 0) && (n != 0))) ? 2: 1));\n"
19−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
19+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
20−"X-Generator: Launchpad (build 18204)\n"
20+"X-Generator: Launchpad (build 18246)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:123
22#: plugins/LightDM/Greeter.cpp:123
23msgid "Password: "
23msgid "Password: "
@@ -484,11 +484,11 @@ msgstr "Atingeți pentru a vă întoarce la convorbire..."
484msgid "Conference"
484msgid "Conference"
485msgstr "Conferință"
485msgstr "Conferință"
486
486
487−#: qml/Panel/Indicators/MenuItemFactory.qml:762
487+#: qml/Panel/Indicators/MenuItemFactory.qml:788
488msgid "Nothing is playing"
488msgid "Nothing is playing"
489msgstr "Nu se redă nimic"
489msgstr "Nu se redă nimic"
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:891
491+#: qml/Panel/Indicators/MenuItemFactory.qml:916
492#, qt-format
492#, qt-format
493msgid "%1 hour"
493msgid "%1 hour"
494msgid_plural "%1 hours"
494msgid_plural "%1 hours"
@@ -496,7 +496,7 @@ msgstr[0] "%1 oră"
496msgstr[1] "%1 ore"
496msgstr[1] "%1 ore"
497msgstr[2] "%1 de ore"
497msgstr[2] "%1 de ore"
498
498
499−#: qml/Panel/Indicators/MenuItemFactory.qml:895
499+#: qml/Panel/Indicators/MenuItemFactory.qml:920
500#, qt-format
500#, qt-format
501msgid "%1 minute"
501msgid "%1 minute"
502msgid_plural "%1 minutes"
502msgid_plural "%1 minutes"
@@ -504,7 +504,7 @@ msgstr[0] "%1 minut"
504msgstr[1] "%1 minute"
504msgstr[1] "%1 minute"
505msgstr[2] "%1 de minute"
505msgstr[2] "%1 de minute"
506
506
507−#: qml/Panel/Indicators/MenuItemFactory.qml:900
507+#: qml/Panel/Indicators/MenuItemFactory.qml:925
508#, qt-format
508#, qt-format
509msgid "%1 second"
509msgid "%1 second"
510msgid_plural "%1 seconds"
510msgid_plural "%1 seconds"
@@ -512,37 +512,37 @@ msgstr[0] "%1 secundă"
512msgstr[1] "%1 secunde"
512msgstr[1] "%1 secunde"
513msgstr[2] "%1 de secunde"
513msgstr[2] "%1 de secunde"
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:903
515+#: qml/Panel/Indicators/MenuItemFactory.qml:928
516msgid "0 seconds"
516msgid "0 seconds"
517msgstr "0 secunde"
517msgstr "0 secunde"
518
518
519#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
519#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
520−#: qml/Panel/Indicators/MenuItemFactory.qml:905
520+#: qml/Panel/Indicators/MenuItemFactory.qml:930
521#, qt-format
521#, qt-format
522msgid "%1 remaining"
522msgid "%1 remaining"
523msgstr "%1 rămase"
523msgstr "%1 rămase"
524
524
525−#: qml/Panel/Indicators/MenuItemFactory.qml:911
525+#: qml/Panel/Indicators/MenuItemFactory.qml:936
526msgid "In queue…"
526msgid "In queue…"
527msgstr "În așteptare..."
527msgstr "În așteptare..."
528
528
529−#: qml/Panel/Indicators/MenuItemFactory.qml:915
529+#: qml/Panel/Indicators/MenuItemFactory.qml:940
530msgid "Downloading"
530msgid "Downloading"
531msgstr "Se descarcă"
531msgstr "Se descarcă"
532
532
533−#: qml/Panel/Indicators/MenuItemFactory.qml:917
533+#: qml/Panel/Indicators/MenuItemFactory.qml:942
534msgid "Paused, tap to resume"
534msgid "Paused, tap to resume"
535msgstr "În pauză, atingeți pentru a relua"
535msgstr "În pauză, atingeți pentru a relua"
536
536
537−#: qml/Panel/Indicators/MenuItemFactory.qml:919
537+#: qml/Panel/Indicators/MenuItemFactory.qml:944
538msgid "Canceled"
538msgid "Canceled"
539msgstr "Anulată"
539msgstr "Anulată"
540
540
541−#: qml/Panel/Indicators/MenuItemFactory.qml:921
541+#: qml/Panel/Indicators/MenuItemFactory.qml:946
542msgid "Finished"
542msgid "Finished"
543msgstr "Finalizată"
543msgstr "Finalizată"
544
544
545−#: qml/Panel/Indicators/MenuItemFactory.qml:923
545+#: qml/Panel/Indicators/MenuItemFactory.qml:948
546msgid "Failed, tap to retry"
546msgid "Failed, tap to retry"
547msgstr "Eșec, atingeți pentru a încerca din nou"
547msgstr "Eșec, atingeți pentru a încerca din nou"
548
548
@@ -562,7 +562,7 @@ msgctxt "Button: Call back on phone"
562msgid "Call back"
562msgid "Call back"
563msgstr ""
563msgstr ""
564
564
565−#: qml/Stages/SideStage.qml:76
565+#: qml/Stage/SideStage.qml:76
566msgid "Drag using 3 fingers any application from one window to the other"
566msgid "Drag using 3 fingers any application from one window to the other"
567msgstr ""
567msgstr ""
568
568
po/ru.po+17−17
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2015-07-06 05:33+0000\n"
11"PO-Revision-Date: 2015-07-06 05:33+0000\n"
12"Last-Translator: ☠Jay ZDLin☠ <Unknown>\n"
12"Last-Translator: ☠Jay ZDLin☠ <Unknown>\n"
13"Language-Team: Russian <ru@li.org>\n"
13"Language-Team: Russian <ru@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
19+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
20−"X-Generator: Launchpad (build 18204)\n"
20+"X-Generator: Launchpad (build 18246)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:123
22#: plugins/LightDM/Greeter.cpp:123
23msgid "Password: "
23msgid "Password: "
@@ -280,7 +280,7 @@ msgstr "%1:%2:%3"
280#: qml/Components/MediaServices/VideoPlayerControls.qml:49
280#: qml/Components/MediaServices/VideoPlayerControls.qml:49
281#, qt-format
281#, qt-format
282msgid "%1:%2"
282msgid "%1:%2"
283−msgstr ""
283+msgstr "%1:%2"
284
284
285#: qml/Components/ModeSwitchWarningDialog.qml:32
285#: qml/Components/ModeSwitchWarningDialog.qml:32
286msgid "Apps may have unsaved data:"
286msgid "Apps may have unsaved data:"
@@ -485,11 +485,11 @@ msgstr "Нажмите для возврата к вызову..."
485msgid "Conference"
485msgid "Conference"
486msgstr "Конференция"
486msgstr "Конференция"
487
487
488−#: qml/Panel/Indicators/MenuItemFactory.qml:762
488+#: qml/Panel/Indicators/MenuItemFactory.qml:788
489msgid "Nothing is playing"
489msgid "Nothing is playing"
490msgstr "Ничего не воспроизводится"
490msgstr "Ничего не воспроизводится"
491
491
492−#: qml/Panel/Indicators/MenuItemFactory.qml:891
492+#: qml/Panel/Indicators/MenuItemFactory.qml:916
493#, qt-format
493#, qt-format
494msgid "%1 hour"
494msgid "%1 hour"
495msgid_plural "%1 hours"
495msgid_plural "%1 hours"
@@ -497,7 +497,7 @@ msgstr[0] "%1 час"
497msgstr[1] "%1 часа"
497msgstr[1] "%1 часа"
498msgstr[2] "%1 часов"
498msgstr[2] "%1 часов"
499
499
500−#: qml/Panel/Indicators/MenuItemFactory.qml:895
500+#: qml/Panel/Indicators/MenuItemFactory.qml:920
501#, qt-format
501#, qt-format
502msgid "%1 minute"
502msgid "%1 minute"
503msgid_plural "%1 minutes"
503msgid_plural "%1 minutes"
@@ -505,7 +505,7 @@ msgstr[0] "%1 минута"
505msgstr[1] "%1 минуты"
505msgstr[1] "%1 минуты"
506msgstr[2] "%1 минут"
506msgstr[2] "%1 минут"
507
507
508−#: qml/Panel/Indicators/MenuItemFactory.qml:900
508+#: qml/Panel/Indicators/MenuItemFactory.qml:925
509#, qt-format
509#, qt-format
510msgid "%1 second"
510msgid "%1 second"
511msgid_plural "%1 seconds"
511msgid_plural "%1 seconds"
@@ -513,37 +513,37 @@ msgstr[0] "%1 секунда"
513msgstr[1] "%1 секунды"
513msgstr[1] "%1 секунды"
514msgstr[2] "%1 секунд"
514msgstr[2] "%1 секунд"
515
515
516−#: qml/Panel/Indicators/MenuItemFactory.qml:903
516+#: qml/Panel/Indicators/MenuItemFactory.qml:928
517msgid "0 seconds"
517msgid "0 seconds"
518msgstr "0 секунд"
518msgstr "0 секунд"
519
519
520#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
520#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
521−#: qml/Panel/Indicators/MenuItemFactory.qml:905
521+#: qml/Panel/Indicators/MenuItemFactory.qml:930
522#, qt-format
522#, qt-format
523msgid "%1 remaining"
523msgid "%1 remaining"
524msgstr "Осталось %1"
524msgstr "Осталось %1"
525
525
526−#: qml/Panel/Indicators/MenuItemFactory.qml:911
526+#: qml/Panel/Indicators/MenuItemFactory.qml:936
527msgid "In queue…"
527msgid "In queue…"
528msgstr "В очереди..."
528msgstr "В очереди..."
529
529
530−#: qml/Panel/Indicators/MenuItemFactory.qml:915
530+#: qml/Panel/Indicators/MenuItemFactory.qml:940
531msgid "Downloading"
531msgid "Downloading"
532msgstr "Загрузка"
532msgstr "Загрузка"
533
533
534−#: qml/Panel/Indicators/MenuItemFactory.qml:917
534+#: qml/Panel/Indicators/MenuItemFactory.qml:942
535msgid "Paused, tap to resume"
535msgid "Paused, tap to resume"
536msgstr "Приостановлено, нажмите для возобновления"
536msgstr "Приостановлено, нажмите для возобновления"
537
537
538−#: qml/Panel/Indicators/MenuItemFactory.qml:919
538+#: qml/Panel/Indicators/MenuItemFactory.qml:944
539msgid "Canceled"
539msgid "Canceled"
540msgstr "Отменено"
540msgstr "Отменено"
541
541
542−#: qml/Panel/Indicators/MenuItemFactory.qml:921
542+#: qml/Panel/Indicators/MenuItemFactory.qml:946
543msgid "Finished"
543msgid "Finished"
544msgstr "Завершено"
544msgstr "Завершено"
545
545
546−#: qml/Panel/Indicators/MenuItemFactory.qml:923
546+#: qml/Panel/Indicators/MenuItemFactory.qml:948
547msgid "Failed, tap to retry"
547msgid "Failed, tap to retry"
548msgstr "Сбой, нажмите для повтора"
548msgstr "Сбой, нажмите для повтора"
549
549
@@ -563,7 +563,7 @@ msgctxt "Button: Call back on phone"
563msgid "Call back"
563msgid "Call back"
564msgstr "Позвонить"
564msgstr "Позвонить"
565
565
566−#: qml/Stages/SideStage.qml:76
566+#: qml/Stage/SideStage.qml:76
567msgid "Drag using 3 fingers any application from one window to the other"
567msgid "Drag using 3 fingers any application from one window to the other"
568msgstr "Передвигайте любое приложение с помощью трёх пальцев"
568msgstr "Передвигайте любое приложение с помощью трёх пальцев"
569
569
po/shn.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2015-11-10 12:09+0000\n"
11"PO-Revision-Date: 2015-11-10 12:09+0000\n"
12"Last-Translator: Rockworld <sumoisrock@gmail.com>\n"
12"Last-Translator: Rockworld <sumoisrock@gmail.com>\n"
13"Language-Team: Shan <shn@li.org>\n"
13"Language-Team: Shan <shn@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=(n == 1) ? 0 : 1;\n"
17"Plural-Forms: nplurals=2; plural=(n == 1) ? 0 : 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -477,62 +477,62 @@ msgstr ""
477msgid "Conference"
477msgid "Conference"
478msgstr ""
478msgstr ""
479
479
480−#: qml/Panel/Indicators/MenuItemFactory.qml:762
480+#: qml/Panel/Indicators/MenuItemFactory.qml:788
481msgid "Nothing is playing"
481msgid "Nothing is playing"
482msgstr ""
482msgstr ""
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:891
484+#: qml/Panel/Indicators/MenuItemFactory.qml:916
485#, qt-format
485#, qt-format
486msgid "%1 hour"
486msgid "%1 hour"
487msgid_plural "%1 hours"
487msgid_plural "%1 hours"
488msgstr[0] ""
488msgstr[0] ""
489msgstr[1] ""
489msgstr[1] ""
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:895
491+#: qml/Panel/Indicators/MenuItemFactory.qml:920
492#, qt-format
492#, qt-format
493msgid "%1 minute"
493msgid "%1 minute"
494msgid_plural "%1 minutes"
494msgid_plural "%1 minutes"
495msgstr[0] ""
495msgstr[0] ""
496msgstr[1] ""
496msgstr[1] ""
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:900
498+#: qml/Panel/Indicators/MenuItemFactory.qml:925
499#, qt-format
499#, qt-format
500msgid "%1 second"
500msgid "%1 second"
501msgid_plural "%1 seconds"
501msgid_plural "%1 seconds"
502msgstr[0] ""
502msgstr[0] ""
503msgstr[1] ""
503msgstr[1] ""
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:903
505+#: qml/Panel/Indicators/MenuItemFactory.qml:928
506msgid "0 seconds"
506msgid "0 seconds"
507msgstr ""
507msgstr ""
508
508
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
510−#: qml/Panel/Indicators/MenuItemFactory.qml:905
510+#: qml/Panel/Indicators/MenuItemFactory.qml:930
511#, qt-format
511#, qt-format
512msgid "%1 remaining"
512msgid "%1 remaining"
513msgstr ""
513msgstr ""
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:911
515+#: qml/Panel/Indicators/MenuItemFactory.qml:936
516msgid "In queue…"
516msgid "In queue…"
517msgstr ""
517msgstr ""
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:915
519+#: qml/Panel/Indicators/MenuItemFactory.qml:940
520msgid "Downloading"
520msgid "Downloading"
521msgstr ""
521msgstr ""
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:917
523+#: qml/Panel/Indicators/MenuItemFactory.qml:942
524msgid "Paused, tap to resume"
524msgid "Paused, tap to resume"
525msgstr ""
525msgstr ""
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:919
527+#: qml/Panel/Indicators/MenuItemFactory.qml:944
528msgid "Canceled"
528msgid "Canceled"
529msgstr ""
529msgstr ""
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:921
531+#: qml/Panel/Indicators/MenuItemFactory.qml:946
532msgid "Finished"
532msgid "Finished"
533msgstr ""
533msgstr ""
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:923
535+#: qml/Panel/Indicators/MenuItemFactory.qml:948
536msgid "Failed, tap to retry"
536msgid "Failed, tap to retry"
537msgstr ""
537msgstr ""
538
538
@@ -552,7 +552,7 @@ msgctxt "Button: Call back on phone"
552msgid "Call back"
552msgid "Call back"
553msgstr ""
553msgstr ""
554
554
555−#: qml/Stages/SideStage.qml:76
555+#: qml/Stage/SideStage.qml:76
556msgid "Drag using 3 fingers any application from one window to the other"
556msgid "Drag using 3 fingers any application from one window to the other"
557msgstr ""
557msgstr ""
558
558
po/si.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2013-06-26 22:36+0000\n"
11"PO-Revision-Date: 2013-06-26 22:36+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Sinhalese <si@li.org>\n"
13"Language-Team: Sinhalese <si@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -479,62 +479,62 @@ msgstr ""
479msgid "Conference"
479msgid "Conference"
480msgstr ""
480msgstr ""
481
481
482−#: qml/Panel/Indicators/MenuItemFactory.qml:762
482+#: qml/Panel/Indicators/MenuItemFactory.qml:788
483msgid "Nothing is playing"
483msgid "Nothing is playing"
484msgstr ""
484msgstr ""
485
485
486−#: qml/Panel/Indicators/MenuItemFactory.qml:891
486+#: qml/Panel/Indicators/MenuItemFactory.qml:916
487#, qt-format
487#, qt-format
488msgid "%1 hour"
488msgid "%1 hour"
489msgid_plural "%1 hours"
489msgid_plural "%1 hours"
490msgstr[0] ""
490msgstr[0] ""
491msgstr[1] ""
491msgstr[1] ""
492
492
493−#: qml/Panel/Indicators/MenuItemFactory.qml:895
493+#: qml/Panel/Indicators/MenuItemFactory.qml:920
494#, qt-format
494#, qt-format
495msgid "%1 minute"
495msgid "%1 minute"
496msgid_plural "%1 minutes"
496msgid_plural "%1 minutes"
497msgstr[0] ""
497msgstr[0] ""
498msgstr[1] ""
498msgstr[1] ""
499
499
500−#: qml/Panel/Indicators/MenuItemFactory.qml:900
500+#: qml/Panel/Indicators/MenuItemFactory.qml:925
501#, qt-format
501#, qt-format
502msgid "%1 second"
502msgid "%1 second"
503msgid_plural "%1 seconds"
503msgid_plural "%1 seconds"
504msgstr[0] ""
504msgstr[0] ""
505msgstr[1] ""
505msgstr[1] ""
506
506
507−#: qml/Panel/Indicators/MenuItemFactory.qml:903
507+#: qml/Panel/Indicators/MenuItemFactory.qml:928
508msgid "0 seconds"
508msgid "0 seconds"
509msgstr ""
509msgstr ""
510
510
511#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
511#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
512−#: qml/Panel/Indicators/MenuItemFactory.qml:905
512+#: qml/Panel/Indicators/MenuItemFactory.qml:930
513#, qt-format
513#, qt-format
514msgid "%1 remaining"
514msgid "%1 remaining"
515msgstr ""
515msgstr ""
516
516
517−#: qml/Panel/Indicators/MenuItemFactory.qml:911
517+#: qml/Panel/Indicators/MenuItemFactory.qml:936
518msgid "In queue…"
518msgid "In queue…"
519msgstr ""
519msgstr ""
520
520
521−#: qml/Panel/Indicators/MenuItemFactory.qml:915
521+#: qml/Panel/Indicators/MenuItemFactory.qml:940
522msgid "Downloading"
522msgid "Downloading"
523msgstr ""
523msgstr ""
524
524
525−#: qml/Panel/Indicators/MenuItemFactory.qml:917
525+#: qml/Panel/Indicators/MenuItemFactory.qml:942
526msgid "Paused, tap to resume"
526msgid "Paused, tap to resume"
527msgstr ""
527msgstr ""
528
528
529−#: qml/Panel/Indicators/MenuItemFactory.qml:919
529+#: qml/Panel/Indicators/MenuItemFactory.qml:944
530msgid "Canceled"
530msgid "Canceled"
531msgstr ""
531msgstr ""
532
532
533−#: qml/Panel/Indicators/MenuItemFactory.qml:921
533+#: qml/Panel/Indicators/MenuItemFactory.qml:946
534msgid "Finished"
534msgid "Finished"
535msgstr ""
535msgstr ""
536
536
537−#: qml/Panel/Indicators/MenuItemFactory.qml:923
537+#: qml/Panel/Indicators/MenuItemFactory.qml:948
538msgid "Failed, tap to retry"
538msgid "Failed, tap to retry"
539msgstr ""
539msgstr ""
540
540
@@ -554,7 +554,7 @@ msgctxt "Button: Call back on phone"
554msgid "Call back"
554msgid "Call back"
555msgstr ""
555msgstr ""
556
556
557−#: qml/Stages/SideStage.qml:76
557+#: qml/Stage/SideStage.qml:76
558msgid "Drag using 3 fingers any application from one window to the other"
558msgid "Drag using 3 fingers any application from one window to the other"
559msgstr ""
559msgstr ""
560
560
po/sk.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-09-28 04:43+0000\n"
11"PO-Revision-Date: 2016-09-28 04:43+0000\n"
12"Last-Translator: P_E_T_O <Unknown>\n"
12"Last-Translator: P_E_T_O <Unknown>\n"
13"Language-Team: Slovak <sk@li.org>\n"
13"Language-Team: Slovak <sk@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
17"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
18−"X-Launchpad-Export-Date: 2016-09-29 06:45+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20"Language: sk\n"
20"Language: sk\n"
21
21
22#: plugins/LightDM/Greeter.cpp:123
22#: plugins/LightDM/Greeter.cpp:123
@@ -488,11 +488,11 @@ msgstr "Kliknúť pre návrat k hovoru..."
488msgid "Conference"
488msgid "Conference"
489msgstr "Konferencia"
489msgstr "Konferencia"
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:762
491+#: qml/Panel/Indicators/MenuItemFactory.qml:788
492msgid "Nothing is playing"
492msgid "Nothing is playing"
493msgstr "Nič nehrá"
493msgstr "Nič nehrá"
494
494
495−#: qml/Panel/Indicators/MenuItemFactory.qml:891
495+#: qml/Panel/Indicators/MenuItemFactory.qml:916
496#, qt-format
496#, qt-format
497msgid "%1 hour"
497msgid "%1 hour"
498msgid_plural "%1 hours"
498msgid_plural "%1 hours"
@@ -500,7 +500,7 @@ msgstr[0] "%1 hodín"
500msgstr[1] "%1 hodina"
500msgstr[1] "%1 hodina"
501msgstr[2] "%1 hodiny"
501msgstr[2] "%1 hodiny"
502
502
503−#: qml/Panel/Indicators/MenuItemFactory.qml:895
503+#: qml/Panel/Indicators/MenuItemFactory.qml:920
504#, qt-format
504#, qt-format
505msgid "%1 minute"
505msgid "%1 minute"
506msgid_plural "%1 minutes"
506msgid_plural "%1 minutes"
@@ -508,7 +508,7 @@ msgstr[0] "%1 minút"
508msgstr[1] "%1 minúta"
508msgstr[1] "%1 minúta"
509msgstr[2] "%1 minúty"
509msgstr[2] "%1 minúty"
510
510
511−#: qml/Panel/Indicators/MenuItemFactory.qml:900
511+#: qml/Panel/Indicators/MenuItemFactory.qml:925
512#, qt-format
512#, qt-format
513msgid "%1 second"
513msgid "%1 second"
514msgid_plural "%1 seconds"
514msgid_plural "%1 seconds"
@@ -516,37 +516,37 @@ msgstr[0] "%1 sekúnd"
516msgstr[1] "%1 sekunda"
516msgstr[1] "%1 sekunda"
517msgstr[2] "%1 sekundy"
517msgstr[2] "%1 sekundy"
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:903
519+#: qml/Panel/Indicators/MenuItemFactory.qml:928
520msgid "0 seconds"
520msgid "0 seconds"
521msgstr "0 sekúnd"
521msgstr "0 sekúnd"
522
522
523#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
523#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
524−#: qml/Panel/Indicators/MenuItemFactory.qml:905
524+#: qml/Panel/Indicators/MenuItemFactory.qml:930
525#, qt-format
525#, qt-format
526msgid "%1 remaining"
526msgid "%1 remaining"
527msgstr "Zostáva %1"
527msgstr "Zostáva %1"
528
528
529−#: qml/Panel/Indicators/MenuItemFactory.qml:911
529+#: qml/Panel/Indicators/MenuItemFactory.qml:936
530msgid "In queue…"
530msgid "In queue…"
531msgstr "V poradí..."
531msgstr "V poradí..."
532
532
533−#: qml/Panel/Indicators/MenuItemFactory.qml:915
533+#: qml/Panel/Indicators/MenuItemFactory.qml:940
534msgid "Downloading"
534msgid "Downloading"
535msgstr "Sťahuje sa"
535msgstr "Sťahuje sa"
536
536
537−#: qml/Panel/Indicators/MenuItemFactory.qml:917
537+#: qml/Panel/Indicators/MenuItemFactory.qml:942
538msgid "Paused, tap to resume"
538msgid "Paused, tap to resume"
539msgstr "Pauza, kliknúť pre pokračovanie"
539msgstr "Pauza, kliknúť pre pokračovanie"
540
540
541−#: qml/Panel/Indicators/MenuItemFactory.qml:919
541+#: qml/Panel/Indicators/MenuItemFactory.qml:944
542msgid "Canceled"
542msgid "Canceled"
543msgstr "Zrušené"
543msgstr "Zrušené"
544
544
545−#: qml/Panel/Indicators/MenuItemFactory.qml:921
545+#: qml/Panel/Indicators/MenuItemFactory.qml:946
546msgid "Finished"
546msgid "Finished"
547msgstr "Ukončené"
547msgstr "Ukončené"
548
548
549−#: qml/Panel/Indicators/MenuItemFactory.qml:923
549+#: qml/Panel/Indicators/MenuItemFactory.qml:948
550msgid "Failed, tap to retry"
550msgid "Failed, tap to retry"
551msgstr "Zlyhanie, kliknúť pre zopakovanie"
551msgstr "Zlyhanie, kliknúť pre zopakovanie"
552
552
@@ -566,7 +566,7 @@ msgctxt "Button: Call back on phone"
566msgid "Call back"
566msgid "Call back"
567msgstr "Zavolať naspäť"
567msgstr "Zavolať naspäť"
568
568
569−#: qml/Stages/SideStage.qml:76
569+#: qml/Stage/SideStage.qml:76
570msgid "Drag using 3 fingers any application from one window to the other"
570msgid "Drag using 3 fingers any application from one window to the other"
571msgstr ""
571msgstr ""
572"Potiahnite pomocou 3 prstov ľubovoľnú aplikáciu z jedného okna do druhého"
572"Potiahnite pomocou 3 prstov ľubovoľnú aplikáciu z jedného okna do druhého"
po/sl.po+41−41
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-01-31 18:34+0000\n"
11"PO-Revision-Date: 2016-01-31 18:34+0000\n"
12"Last-Translator: Bernard Banko <Unknown>\n"
12"Last-Translator: Bernard Banko <Unknown>\n"
13"Language-Team: Slovenian <sl@li.org>\n"
13"Language-Team: Slovenian <sl@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || "
17"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || "
18"n%100==4 ? 3 : 0);\n"
18"n%100==4 ? 3 : 0);\n"
19−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
19+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
20−"X-Generator: Launchpad (build 18204)\n"
20+"X-Generator: Launchpad (build 18246)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:123
22#: plugins/LightDM/Greeter.cpp:123
23msgid "Password: "
23msgid "Password: "
@@ -104,27 +104,27 @@ msgstr "Ponovno zaženi"
104
104
105#: qml/Components/KeyboardShortcutsOverlay.qml:41
105#: qml/Components/KeyboardShortcutsOverlay.qml:41
106msgid "Keyboard Shortcuts"
106msgid "Keyboard Shortcuts"
107−msgstr ""
107+msgstr "Tipkovne bližnjice"
108
108
109#: qml/Components/KeyboardShortcutsOverlay.qml:55
109#: qml/Components/KeyboardShortcutsOverlay.qml:55
110msgid "Unity 8"
110msgid "Unity 8"
111−msgstr ""
111+msgstr "Unity 8"
112
112
113#: qml/Components/KeyboardShortcutsOverlay.qml:62
113#: qml/Components/KeyboardShortcutsOverlay.qml:62
114msgid "PrtScr"
114msgid "PrtScr"
115−msgstr ""
115+msgstr "PrtScr"
116
116
117#: qml/Components/KeyboardShortcutsOverlay.qml:67
117#: qml/Components/KeyboardShortcutsOverlay.qml:67
118msgid "Takes a screenshot."
118msgid "Takes a screenshot."
119−msgstr ""
119+msgstr "Zajame zaslonsko sliko."
120
120
121#: qml/Components/KeyboardShortcutsOverlay.qml:75
121#: qml/Components/KeyboardShortcutsOverlay.qml:75
122msgid "Alt + PrtScr"
122msgid "Alt + PrtScr"
123−msgstr ""
123+msgstr "Alt + PrtScr"
124
124
125#: qml/Components/KeyboardShortcutsOverlay.qml:80
125#: qml/Components/KeyboardShortcutsOverlay.qml:80
126msgid "Takes a screenshot of a window."
126msgid "Takes a screenshot of a window."
127−msgstr ""
127+msgstr "Zajame zaslonsko sliko okna."
128
128
129#: qml/Components/KeyboardShortcutsOverlay.qml:88
129#: qml/Components/KeyboardShortcutsOverlay.qml:88
130msgid "Super + Space"
130msgid "Super + Space"
@@ -144,7 +144,7 @@ msgstr ""
144
144
145#: qml/Components/KeyboardShortcutsOverlay.qml:118
145#: qml/Components/KeyboardShortcutsOverlay.qml:118
146msgid "Launcher"
146msgid "Launcher"
147−msgstr ""
147+msgstr "Zaganjalnik"
148
148
149#: qml/Components/KeyboardShortcutsOverlay.qml:125
149#: qml/Components/KeyboardShortcutsOverlay.qml:125
150msgid "Super (Hold)"
150msgid "Super (Hold)"
@@ -180,7 +180,7 @@ msgstr ""
180
180
181#: qml/Components/KeyboardShortcutsOverlay.qml:181
181#: qml/Components/KeyboardShortcutsOverlay.qml:181
182msgid "Scopes"
182msgid "Scopes"
183−msgstr ""
183+msgstr "Viri"
184
184
185#: qml/Components/KeyboardShortcutsOverlay.qml:188
185#: qml/Components/KeyboardShortcutsOverlay.qml:188
186msgid "Super (Tap)"
186msgid "Super (Tap)"
@@ -200,7 +200,7 @@ msgstr ""
200
200
201#: qml/Components/KeyboardShortcutsOverlay.qml:221
201#: qml/Components/KeyboardShortcutsOverlay.qml:221
202msgid "Switches between applications."
202msgid "Switches between applications."
203−msgstr ""
203+msgstr "Preklopi med programi."
204
204
205#: qml/Components/KeyboardShortcutsOverlay.qml:229
205#: qml/Components/KeyboardShortcutsOverlay.qml:229
206msgid "Super + W"
206msgid "Super + W"
@@ -212,15 +212,15 @@ msgstr ""
212
212
213#: qml/Components/KeyboardShortcutsOverlay.qml:242
213#: qml/Components/KeyboardShortcutsOverlay.qml:242
214msgid "Cursor Left or Right"
214msgid "Cursor Left or Right"
215−msgstr ""
215+msgstr "Puščica levo ali desno"
216
216
217#: qml/Components/KeyboardShortcutsOverlay.qml:247
217#: qml/Components/KeyboardShortcutsOverlay.qml:247
218msgid "Moves the focus."
218msgid "Moves the focus."
219−msgstr ""
219+msgstr "Premakne žarišče."
220
220
221#: qml/Components/KeyboardShortcutsOverlay.qml:259
221#: qml/Components/KeyboardShortcutsOverlay.qml:259
222msgid "Windows"
222msgid "Windows"
223−msgstr ""
223+msgstr "Okna"
224
224
225#: qml/Components/KeyboardShortcutsOverlay.qml:266
225#: qml/Components/KeyboardShortcutsOverlay.qml:266
226msgid "Ctrl + Super + D"
226msgid "Ctrl + Super + D"
@@ -256,11 +256,11 @@ msgstr ""
256
256
257#: qml/Components/KeyboardShortcutsOverlay.qml:318
257#: qml/Components/KeyboardShortcutsOverlay.qml:318
258msgid "Alt + F4"
258msgid "Alt + F4"
259−msgstr ""
259+msgstr "Alt + F4"
260
260
261#: qml/Components/KeyboardShortcutsOverlay.qml:323
261#: qml/Components/KeyboardShortcutsOverlay.qml:323
262msgid "Closes the current window."
262msgid "Closes the current window."
263−msgstr ""
263+msgstr "Zapre trenutno okno."
264
264
265#: qml/Components/Lockscreen.qml:212 qml/Greeter/NarrowView.qml:252
265#: qml/Components/Lockscreen.qml:212 qml/Greeter/NarrowView.qml:252
266msgid "Return to Call"
266msgid "Return to Call"
@@ -277,12 +277,12 @@ msgstr "V redu"
277#: qml/Components/MediaServices/VideoPlayerControls.qml:44
277#: qml/Components/MediaServices/VideoPlayerControls.qml:44
278#, qt-format
278#, qt-format
279msgid "%1:%2:%3"
279msgid "%1:%2:%3"
280−msgstr ""
280+msgstr "%1:%2:%3"
281
281
282#: qml/Components/MediaServices/VideoPlayerControls.qml:49
282#: qml/Components/MediaServices/VideoPlayerControls.qml:49
283#, qt-format
283#, qt-format
284msgid "%1:%2"
284msgid "%1:%2"
285−msgstr ""
285+msgstr "%1:%2"
286
286
287#: qml/Components/ModeSwitchWarningDialog.qml:32
287#: qml/Components/ModeSwitchWarningDialog.qml:32
288msgid "Apps may have unsaved data:"
288msgid "Apps may have unsaved data:"
@@ -448,7 +448,7 @@ msgstr[3] "Počakajte %1 minute ter poskusite ponovno ..."
448
448
449#: qml/Greeter/Greeter.qml:596
449#: qml/Greeter/Greeter.qml:596
450msgid "Try again"
450msgid "Try again"
451−msgstr ""
451+msgstr "Poskusite znova"
452
452
453#: qml/Greeter/LoginList.qml:70
453#: qml/Greeter/LoginList.qml:70
454msgid "Passphrase"
454msgid "Passphrase"
@@ -464,7 +464,7 @@ msgstr "Poskusi znova"
464
464
465#: qml/Greeter/LoginList.qml:99
465#: qml/Greeter/LoginList.qml:99
466msgid "Log In"
466msgid "Log In"
467−msgstr ""
467+msgstr "Prijava"
468
468
469#: qml/Greeter/NarrowView.qml:252
469#: qml/Greeter/NarrowView.qml:252
470msgid "Emergency"
470msgid "Emergency"
@@ -472,7 +472,7 @@ msgstr ""
472
472
473#: qml/Greeter/SessionsList.qml:122
473#: qml/Greeter/SessionsList.qml:122
474msgid "Select desktop environment"
474msgid "Select desktop environment"
475−msgstr ""
475+msgstr "Izberite namizno okolje"
476
476
477#: qml/Notifications/NotificationMenuItemFactory.qml:124
477#: qml/Notifications/NotificationMenuItemFactory.qml:124
478msgid "Show password"
478msgid "Show password"
@@ -486,11 +486,11 @@ msgstr "Tapnite za vrnitev v klic ..."
486msgid "Conference"
486msgid "Conference"
487msgstr "Konferenca"
487msgstr "Konferenca"
488
488
489−#: qml/Panel/Indicators/MenuItemFactory.qml:762
489+#: qml/Panel/Indicators/MenuItemFactory.qml:788
490msgid "Nothing is playing"
490msgid "Nothing is playing"
491msgstr "Nič se ne predvaja"
491msgstr "Nič se ne predvaja"
492
492
493−#: qml/Panel/Indicators/MenuItemFactory.qml:891
493+#: qml/Panel/Indicators/MenuItemFactory.qml:916
494#, qt-format
494#, qt-format
495msgid "%1 hour"
495msgid "%1 hour"
496msgid_plural "%1 hours"
496msgid_plural "%1 hours"
@@ -499,7 +499,7 @@ msgstr[1] "%1 ura"
499msgstr[2] "%1 uri"
499msgstr[2] "%1 uri"
500msgstr[3] "%1 ure"
500msgstr[3] "%1 ure"
501
501
502−#: qml/Panel/Indicators/MenuItemFactory.qml:895
502+#: qml/Panel/Indicators/MenuItemFactory.qml:920
503#, qt-format
503#, qt-format
504msgid "%1 minute"
504msgid "%1 minute"
505msgid_plural "%1 minutes"
505msgid_plural "%1 minutes"
@@ -508,7 +508,7 @@ msgstr[1] "%1 minuta"
508msgstr[2] "%1 minuti"
508msgstr[2] "%1 minuti"
509msgstr[3] "%1 minute"
509msgstr[3] "%1 minute"
510
510
511−#: qml/Panel/Indicators/MenuItemFactory.qml:900
511+#: qml/Panel/Indicators/MenuItemFactory.qml:925
512#, qt-format
512#, qt-format
513msgid "%1 second"
513msgid "%1 second"
514msgid_plural "%1 seconds"
514msgid_plural "%1 seconds"
@@ -517,37 +517,37 @@ msgstr[1] "%1 sekunda"
517msgstr[2] "%1 sekundi"
517msgstr[2] "%1 sekundi"
518msgstr[3] "%1 sekunde"
518msgstr[3] "%1 sekunde"
519
519
520−#: qml/Panel/Indicators/MenuItemFactory.qml:903
520+#: qml/Panel/Indicators/MenuItemFactory.qml:928
521msgid "0 seconds"
521msgid "0 seconds"
522msgstr "0 sekund"
522msgstr "0 sekund"
523
523
524#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
524#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
525−#: qml/Panel/Indicators/MenuItemFactory.qml:905
525+#: qml/Panel/Indicators/MenuItemFactory.qml:930
526#, qt-format
526#, qt-format
527msgid "%1 remaining"
527msgid "%1 remaining"
528msgstr "Preostalo %1"
528msgstr "Preostalo %1"
529
529
530−#: qml/Panel/Indicators/MenuItemFactory.qml:911
530+#: qml/Panel/Indicators/MenuItemFactory.qml:936
531msgid "In queue…"
531msgid "In queue…"
532msgstr "V vrsti ..."
532msgstr "V vrsti ..."
533
533
534−#: qml/Panel/Indicators/MenuItemFactory.qml:915
534+#: qml/Panel/Indicators/MenuItemFactory.qml:940
535msgid "Downloading"
535msgid "Downloading"
536msgstr "Prejemanje"
536msgstr "Prejemanje"
537
537
538−#: qml/Panel/Indicators/MenuItemFactory.qml:917
538+#: qml/Panel/Indicators/MenuItemFactory.qml:942
539msgid "Paused, tap to resume"
539msgid "Paused, tap to resume"
540msgstr "Premor, tapnite za nadaljevanje"
540msgstr "Premor, tapnite za nadaljevanje"
541
541
542−#: qml/Panel/Indicators/MenuItemFactory.qml:919
542+#: qml/Panel/Indicators/MenuItemFactory.qml:944
543msgid "Canceled"
543msgid "Canceled"
544msgstr "Preklicano"
544msgstr "Preklicano"
545
545
546−#: qml/Panel/Indicators/MenuItemFactory.qml:921
546+#: qml/Panel/Indicators/MenuItemFactory.qml:946
547msgid "Finished"
547msgid "Finished"
548msgstr "Končano"
548msgstr "Končano"
549
549
550−#: qml/Panel/Indicators/MenuItemFactory.qml:923
550+#: qml/Panel/Indicators/MenuItemFactory.qml:948
551msgid "Failed, tap to retry"
551msgid "Failed, tap to retry"
552msgstr "Spodletelo, tapnite za ponovni poskus"
552msgstr "Spodletelo, tapnite za ponovni poskus"
553
553
@@ -567,7 +567,7 @@ msgctxt "Button: Call back on phone"
567msgid "Call back"
567msgid "Call back"
568msgstr "Pokliči nazaj"
568msgstr "Pokliči nazaj"
569
569
570−#: qml/Stages/SideStage.qml:76
570+#: qml/Stage/SideStage.qml:76
571msgid "Drag using 3 fingers any application from one window to the other"
571msgid "Drag using 3 fingers any application from one window to the other"
572msgstr "S tremi prsti povlecite program iz enega v drugo okno"
572msgstr "S tremi prsti povlecite program iz enega v drugo okno"
573
573
@@ -620,7 +620,7 @@ msgstr ""
620
620
621#: qml/Wizard/Pages/20-keyboard.qml:93
621#: qml/Wizard/Pages/20-keyboard.qml:93
622msgid "Keyboard layout"
622msgid "Keyboard layout"
623−msgstr ""
623+msgstr "Razporeditev tipk"
624
624
625#: qml/Wizard/Pages/20-keyboard.qml:152 qml/Wizard/Pages/30-wifi.qml:207
625#: qml/Wizard/Pages/20-keyboard.qml:152 qml/Wizard/Pages/30-wifi.qml:207
626#: qml/Wizard/Pages/60-account.qml:65 qml/Wizard/Pages/77-system-update.qml:152
626#: qml/Wizard/Pages/60-account.qml:65 qml/Wizard/Pages/77-system-update.qml:152
@@ -731,7 +731,7 @@ msgstr "Pravila zasebnosti"
731
731
732#: qml/Wizard/Pages/77-system-update.qml:28
732#: qml/Wizard/Pages/77-system-update.qml:28
733msgid "Update Device"
733msgid "Update Device"
734−msgstr ""
734+msgstr "Posodobi napravo"
735
735
736#: qml/Wizard/Pages/77-system-update.qml:55
736#: qml/Wizard/Pages/77-system-update.qml:55
737msgid ""
737msgid ""
@@ -742,21 +742,21 @@ msgstr ""
742#: qml/Wizard/Pages/77-system-update.qml:76
742#: qml/Wizard/Pages/77-system-update.qml:76
743msgctxt "string identifying name of the update"
743msgctxt "string identifying name of the update"
744msgid "Ubuntu system"
744msgid "Ubuntu system"
745−msgstr ""
745+msgstr "Sistem Ubuntu"
746
746
747#: qml/Wizard/Pages/77-system-update.qml:83
747#: qml/Wizard/Pages/77-system-update.qml:83
748#, qt-format
748#, qt-format
749msgctxt "version of the system update"
749msgctxt "version of the system update"
750msgid "Version %1"
750msgid "Version %1"
751−msgstr ""
751+msgstr "Različica %1"
752
752
753#: qml/Wizard/Pages/77-system-update.qml:102
753#: qml/Wizard/Pages/77-system-update.qml:102
754msgid "This could take a few minutes..."
754msgid "This could take a few minutes..."
755−msgstr ""
755+msgstr "To lahko traja nekaj minut ..."
756
756
757#: qml/Wizard/Pages/77-system-update.qml:116
757#: qml/Wizard/Pages/77-system-update.qml:116
758msgid "Install and restart now"
758msgid "Install and restart now"
759−msgstr ""
759+msgstr "Sedaj namesti in ponovno zaženi"
760
760
761#: qml/Wizard/Pages/80-finished.qml:89
761#: qml/Wizard/Pages/80-finished.qml:89
762msgid "Welcome to Ubuntu"
762msgid "Welcome to Ubuntu"
po/sq.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-04-21 06:03+0000\n"
11"PO-Revision-Date: 2016-04-21 06:03+0000\n"
12"Last-Translator: Indrit Bashkimi <indrit.bashkimi@gmail.com>\n"
12"Last-Translator: Indrit Bashkimi <indrit.bashkimi@gmail.com>\n"
13"Language-Team: sq\n"
13"Language-Team: sq\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:03+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:53+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20"Language: sq\n"
20"Language: sq\n"
21
21
22#: plugins/LightDM/Greeter.cpp:123
22#: plugins/LightDM/Greeter.cpp:123
@@ -478,62 +478,62 @@ msgstr ""
478msgid "Conference"
478msgid "Conference"
479msgstr "Konferencë"
479msgstr "Konferencë"
480
480
481−#: qml/Panel/Indicators/MenuItemFactory.qml:762
481+#: qml/Panel/Indicators/MenuItemFactory.qml:788
482msgid "Nothing is playing"
482msgid "Nothing is playing"
483msgstr ""
483msgstr ""
484
484
485−#: qml/Panel/Indicators/MenuItemFactory.qml:891
485+#: qml/Panel/Indicators/MenuItemFactory.qml:916
486#, qt-format
486#, qt-format
487msgid "%1 hour"
487msgid "%1 hour"
488msgid_plural "%1 hours"
488msgid_plural "%1 hours"
489msgstr[0] "%1 orë"
489msgstr[0] "%1 orë"
490msgstr[1] "%1 orë"
490msgstr[1] "%1 orë"
491
491
492−#: qml/Panel/Indicators/MenuItemFactory.qml:895
492+#: qml/Panel/Indicators/MenuItemFactory.qml:920
493#, qt-format
493#, qt-format
494msgid "%1 minute"
494msgid "%1 minute"
495msgid_plural "%1 minutes"
495msgid_plural "%1 minutes"
496msgstr[0] "%1 minutë"
496msgstr[0] "%1 minutë"
497msgstr[1] "%1 minuta"
497msgstr[1] "%1 minuta"
498
498
499−#: qml/Panel/Indicators/MenuItemFactory.qml:900
499+#: qml/Panel/Indicators/MenuItemFactory.qml:925
500#, qt-format
500#, qt-format
501msgid "%1 second"
501msgid "%1 second"
502msgid_plural "%1 seconds"
502msgid_plural "%1 seconds"
503msgstr[0] "%1 sekondë"
503msgstr[0] "%1 sekondë"
504msgstr[1] "%1 sekonda"
504msgstr[1] "%1 sekonda"
505
505
506−#: qml/Panel/Indicators/MenuItemFactory.qml:903
506+#: qml/Panel/Indicators/MenuItemFactory.qml:928
507msgid "0 seconds"
507msgid "0 seconds"
508msgstr "0 sekonda"
508msgstr "0 sekonda"
509
509
510#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
510#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
511−#: qml/Panel/Indicators/MenuItemFactory.qml:905
511+#: qml/Panel/Indicators/MenuItemFactory.qml:930
512#, qt-format
512#, qt-format
513msgid "%1 remaining"
513msgid "%1 remaining"
514msgstr "Koha e mbetur: %1"
514msgstr "Koha e mbetur: %1"
515
515
516−#: qml/Panel/Indicators/MenuItemFactory.qml:911
516+#: qml/Panel/Indicators/MenuItemFactory.qml:936
517msgid "In queue…"
517msgid "In queue…"
518msgstr "Në pritje…"
518msgstr "Në pritje…"
519
519
520−#: qml/Panel/Indicators/MenuItemFactory.qml:915
520+#: qml/Panel/Indicators/MenuItemFactory.qml:940
521msgid "Downloading"
521msgid "Downloading"
522msgstr "Duke shkarkuar"
522msgstr "Duke shkarkuar"
523
523
524−#: qml/Panel/Indicators/MenuItemFactory.qml:917
524+#: qml/Panel/Indicators/MenuItemFactory.qml:942
525msgid "Paused, tap to resume"
525msgid "Paused, tap to resume"
526msgstr ""
526msgstr ""
527
527
528−#: qml/Panel/Indicators/MenuItemFactory.qml:919
528+#: qml/Panel/Indicators/MenuItemFactory.qml:944
529msgid "Canceled"
529msgid "Canceled"
530msgstr "Anulluar"
530msgstr "Anulluar"
531
531
532−#: qml/Panel/Indicators/MenuItemFactory.qml:921
532+#: qml/Panel/Indicators/MenuItemFactory.qml:946
533msgid "Finished"
533msgid "Finished"
534msgstr "Përfunduar"
534msgstr "Përfunduar"
535
535
536−#: qml/Panel/Indicators/MenuItemFactory.qml:923
536+#: qml/Panel/Indicators/MenuItemFactory.qml:948
537msgid "Failed, tap to retry"
537msgid "Failed, tap to retry"
538msgstr "Dështoi, preke për ta riprovuar"
538msgstr "Dështoi, preke për ta riprovuar"
539
539
@@ -553,7 +553,7 @@ msgctxt "Button: Call back on phone"
553msgid "Call back"
553msgid "Call back"
554msgstr ""
554msgstr ""
555
555
556−#: qml/Stages/SideStage.qml:76
556+#: qml/Stage/SideStage.qml:76
557msgid "Drag using 3 fingers any application from one window to the other"
557msgid "Drag using 3 fingers any application from one window to the other"
558msgstr ""
558msgstr ""
559
559
po/sr.po+16−16
@@ -8,7 +8,7 @@ msgid ""
8msgstr ""
8msgstr ""
9"Project-Id-Version: unity\n"
9"Project-Id-Version: unity\n"
10"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
11+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
12"PO-Revision-Date: 2016-08-22 20:43+0000\n"
12"PO-Revision-Date: 2016-08-22 20:43+0000\n"
13"Last-Translator: Bojan Bogdanović <Unknown>\n"
13"Last-Translator: Bojan Bogdanović <Unknown>\n"
14"Language-Team: српски <xfce4@xfce4.org>\n"
14"Language-Team: српски <xfce4@xfce4.org>\n"
@@ -17,8 +17,8 @@ msgstr ""
17"Content-Transfer-Encoding: 8bit\n"
17"Content-Transfer-Encoding: 8bit\n"
18"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
19"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
20−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
20+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
21−"X-Generator: Launchpad (build 18204)\n"
21+"X-Generator: Launchpad (build 18246)\n"
22"Language: sr\n"
22"Language: sr\n"
23
23
24#: plugins/LightDM/Greeter.cpp:123
24#: plugins/LightDM/Greeter.cpp:123
@@ -485,11 +485,11 @@ msgstr "Лупните да се вратите на позив..."
485msgid "Conference"
485msgid "Conference"
486msgstr "Конференција"
486msgstr "Конференција"
487
487
488−#: qml/Panel/Indicators/MenuItemFactory.qml:762
488+#: qml/Panel/Indicators/MenuItemFactory.qml:788
489msgid "Nothing is playing"
489msgid "Nothing is playing"
490msgstr "Ништа се не пушта"
490msgstr "Ништа се не пушта"
491
491
492−#: qml/Panel/Indicators/MenuItemFactory.qml:891
492+#: qml/Panel/Indicators/MenuItemFactory.qml:916
493#, qt-format
493#, qt-format
494msgid "%1 hour"
494msgid "%1 hour"
495msgid_plural "%1 hours"
495msgid_plural "%1 hours"
@@ -497,7 +497,7 @@ msgstr[0] "%1 сат"
497msgstr[1] "%1 сата"
497msgstr[1] "%1 сата"
498msgstr[2] "%1 сати"
498msgstr[2] "%1 сати"
499
499
500−#: qml/Panel/Indicators/MenuItemFactory.qml:895
500+#: qml/Panel/Indicators/MenuItemFactory.qml:920
501#, qt-format
501#, qt-format
502msgid "%1 minute"
502msgid "%1 minute"
503msgid_plural "%1 minutes"
503msgid_plural "%1 minutes"
@@ -505,7 +505,7 @@ msgstr[0] "%1 минут"
505msgstr[1] "%1 минута"
505msgstr[1] "%1 минута"
506msgstr[2] "%1 минута"
506msgstr[2] "%1 минута"
507
507
508−#: qml/Panel/Indicators/MenuItemFactory.qml:900
508+#: qml/Panel/Indicators/MenuItemFactory.qml:925
509#, qt-format
509#, qt-format
510msgid "%1 second"
510msgid "%1 second"
511msgid_plural "%1 seconds"
511msgid_plural "%1 seconds"
@@ -513,37 +513,37 @@ msgstr[0] "%1 секунда"
513msgstr[1] "%1 секунде"
513msgstr[1] "%1 секунде"
514msgstr[2] "%1 секунди"
514msgstr[2] "%1 секунди"
515
515
516−#: qml/Panel/Indicators/MenuItemFactory.qml:903
516+#: qml/Panel/Indicators/MenuItemFactory.qml:928
517msgid "0 seconds"
517msgid "0 seconds"
518msgstr "0 секунде"
518msgstr "0 секунде"
519
519
520#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
520#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
521−#: qml/Panel/Indicators/MenuItemFactory.qml:905
521+#: qml/Panel/Indicators/MenuItemFactory.qml:930
522#, qt-format
522#, qt-format
523msgid "%1 remaining"
523msgid "%1 remaining"
524msgstr "Преостаје %1"
524msgstr "Преостаје %1"
525
525
526−#: qml/Panel/Indicators/MenuItemFactory.qml:911
526+#: qml/Panel/Indicators/MenuItemFactory.qml:936
527msgid "In queue…"
527msgid "In queue…"
528msgstr "Заказано…"
528msgstr "Заказано…"
529
529
530−#: qml/Panel/Indicators/MenuItemFactory.qml:915
530+#: qml/Panel/Indicators/MenuItemFactory.qml:940
531msgid "Downloading"
531msgid "Downloading"
532msgstr "Преузимање"
532msgstr "Преузимање"
533
533
534−#: qml/Panel/Indicators/MenuItemFactory.qml:917
534+#: qml/Panel/Indicators/MenuItemFactory.qml:942
535msgid "Paused, tap to resume"
535msgid "Paused, tap to resume"
536msgstr "Заустављено, лупните да наставите"
536msgstr "Заустављено, лупните да наставите"
537
537
538−#: qml/Panel/Indicators/MenuItemFactory.qml:919
538+#: qml/Panel/Indicators/MenuItemFactory.qml:944
539msgid "Canceled"
539msgid "Canceled"
540msgstr "Отказано"
540msgstr "Отказано"
541
541
542−#: qml/Panel/Indicators/MenuItemFactory.qml:921
542+#: qml/Panel/Indicators/MenuItemFactory.qml:946
543msgid "Finished"
543msgid "Finished"
544msgstr "Завршено"
544msgstr "Завршено"
545
545
546−#: qml/Panel/Indicators/MenuItemFactory.qml:923
546+#: qml/Panel/Indicators/MenuItemFactory.qml:948
547msgid "Failed, tap to retry"
547msgid "Failed, tap to retry"
548msgstr "Неуспело, лупните да покушате поново"
548msgstr "Неуспело, лупните да покушате поново"
549
549
@@ -563,7 +563,7 @@ msgctxt "Button: Call back on phone"
563msgid "Call back"
563msgid "Call back"
564msgstr "Позови назад"
564msgstr "Позови назад"
565
565
566−#: qml/Stages/SideStage.qml:76
566+#: qml/Stage/SideStage.qml:76
567msgid "Drag using 3 fingers any application from one window to the other"
567msgid "Drag using 3 fingers any application from one window to the other"
568msgstr ""
568msgstr ""
569"Превуците користећи 3 прста било који програм са једног у други прозор"
569"Превуците користећи 3 прста било који програм са једног у други прозор"
po/sv.po+34−32
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-06-19 19:31+0000\n"
11"PO-Revision-Date: 2016-06-19 19:31+0000\n"
12"Last-Translator: Josef Andersson <Unknown>\n"
12"Last-Translator: Josef Andersson <Unknown>\n"
13"Language-Team: Swedish\n"
13"Language-Team: Swedish\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20"Language: sv\n"
20"Language: sv\n"
21
21
22#: plugins/LightDM/Greeter.cpp:123
22#: plugins/LightDM/Greeter.cpp:123
@@ -277,12 +277,12 @@ msgstr "OK"
277#: qml/Components/MediaServices/VideoPlayerControls.qml:44
277#: qml/Components/MediaServices/VideoPlayerControls.qml:44
278#, qt-format
278#, qt-format
279msgid "%1:%2:%3"
279msgid "%1:%2:%3"
280−msgstr ""
280+msgstr "%1:%2:%3"
281
281
282#: qml/Components/MediaServices/VideoPlayerControls.qml:49
282#: qml/Components/MediaServices/VideoPlayerControls.qml:49
283#, qt-format
283#, qt-format
284msgid "%1:%2"
284msgid "%1:%2"
285−msgstr ""
285+msgstr "%1:%2"
286
286
287#: qml/Components/ModeSwitchWarningDialog.qml:32
287#: qml/Components/ModeSwitchWarningDialog.qml:32
288msgid "Apps may have unsaved data:"
288msgid "Apps may have unsaved data:"
@@ -445,15 +445,15 @@ msgstr[1] "Vänta %1 minuter och prova sedan igen…"
445
445
446#: qml/Greeter/Greeter.qml:596
446#: qml/Greeter/Greeter.qml:596
447msgid "Try again"
447msgid "Try again"
448−msgstr ""
448+msgstr "Försök igen"
449
449
450#: qml/Greeter/LoginList.qml:70
450#: qml/Greeter/LoginList.qml:70
451msgid "Passphrase"
451msgid "Passphrase"
452−msgstr ""
452+msgstr "Lösenfras"
453
453
454#: qml/Greeter/LoginList.qml:71
454#: qml/Greeter/LoginList.qml:71
455msgid "Passcode"
455msgid "Passcode"
456−msgstr ""
456+msgstr "Lösenkod"
457
457
458#: qml/Greeter/LoginList.qml:98
458#: qml/Greeter/LoginList.qml:98
459msgid "Retry"
459msgid "Retry"
@@ -465,11 +465,11 @@ msgstr "Logga in"
465
465
466#: qml/Greeter/NarrowView.qml:252
466#: qml/Greeter/NarrowView.qml:252
467msgid "Emergency"
467msgid "Emergency"
468−msgstr ""
468+msgstr "Nödläge"
469
469
470#: qml/Greeter/SessionsList.qml:122
470#: qml/Greeter/SessionsList.qml:122
471msgid "Select desktop environment"
471msgid "Select desktop environment"
472−msgstr ""
472+msgstr "Välj skrivbordsmiljö"
473
473
474#: qml/Notifications/NotificationMenuItemFactory.qml:124
474#: qml/Notifications/NotificationMenuItemFactory.qml:124
475msgid "Show password"
475msgid "Show password"
@@ -483,62 +483,62 @@ msgstr "Tryck för att återgå till samtal…"
483msgid "Conference"
483msgid "Conference"
484msgstr "Konferens"
484msgstr "Konferens"
485
485
486−#: qml/Panel/Indicators/MenuItemFactory.qml:762
486+#: qml/Panel/Indicators/MenuItemFactory.qml:788
487msgid "Nothing is playing"
487msgid "Nothing is playing"
488msgstr "Inget spelas"
488msgstr "Inget spelas"
489
489
490−#: qml/Panel/Indicators/MenuItemFactory.qml:891
490+#: qml/Panel/Indicators/MenuItemFactory.qml:916
491#, qt-format
491#, qt-format
492msgid "%1 hour"
492msgid "%1 hour"
493msgid_plural "%1 hours"
493msgid_plural "%1 hours"
494msgstr[0] "%1 timme"
494msgstr[0] "%1 timme"
495msgstr[1] "%1 timmar"
495msgstr[1] "%1 timmar"
496
496
497−#: qml/Panel/Indicators/MenuItemFactory.qml:895
497+#: qml/Panel/Indicators/MenuItemFactory.qml:920
498#, qt-format
498#, qt-format
499msgid "%1 minute"
499msgid "%1 minute"
500msgid_plural "%1 minutes"
500msgid_plural "%1 minutes"
501msgstr[0] "%1 minut"
501msgstr[0] "%1 minut"
502msgstr[1] "%1 minuter"
502msgstr[1] "%1 minuter"
503
503
504−#: qml/Panel/Indicators/MenuItemFactory.qml:900
504+#: qml/Panel/Indicators/MenuItemFactory.qml:925
505#, qt-format
505#, qt-format
506msgid "%1 second"
506msgid "%1 second"
507msgid_plural "%1 seconds"
507msgid_plural "%1 seconds"
508msgstr[0] "%1 sekund"
508msgstr[0] "%1 sekund"
509msgstr[1] "%1 sekunder"
509msgstr[1] "%1 sekunder"
510
510
511−#: qml/Panel/Indicators/MenuItemFactory.qml:903
511+#: qml/Panel/Indicators/MenuItemFactory.qml:928
512msgid "0 seconds"
512msgid "0 seconds"
513msgstr "0 sekunder"
513msgstr "0 sekunder"
514
514
515#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
515#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
516−#: qml/Panel/Indicators/MenuItemFactory.qml:905
516+#: qml/Panel/Indicators/MenuItemFactory.qml:930
517#, qt-format
517#, qt-format
518msgid "%1 remaining"
518msgid "%1 remaining"
519msgstr "%1 återstår"
519msgstr "%1 återstår"
520
520
521−#: qml/Panel/Indicators/MenuItemFactory.qml:911
521+#: qml/Panel/Indicators/MenuItemFactory.qml:936
522msgid "In queue…"
522msgid "In queue…"
523msgstr "I kö…"
523msgstr "I kö…"
524
524
525−#: qml/Panel/Indicators/MenuItemFactory.qml:915
525+#: qml/Panel/Indicators/MenuItemFactory.qml:940
526msgid "Downloading"
526msgid "Downloading"
527msgstr "Hämtar"
527msgstr "Hämtar"
528
528
529−#: qml/Panel/Indicators/MenuItemFactory.qml:917
529+#: qml/Panel/Indicators/MenuItemFactory.qml:942
530msgid "Paused, tap to resume"
530msgid "Paused, tap to resume"
531msgstr "Pausad, tryck för att fortsätta"
531msgstr "Pausad, tryck för att fortsätta"
532
532
533−#: qml/Panel/Indicators/MenuItemFactory.qml:919
533+#: qml/Panel/Indicators/MenuItemFactory.qml:944
534msgid "Canceled"
534msgid "Canceled"
535msgstr "Avbröt"
535msgstr "Avbröt"
536
536
537−#: qml/Panel/Indicators/MenuItemFactory.qml:921
537+#: qml/Panel/Indicators/MenuItemFactory.qml:946
538msgid "Finished"
538msgid "Finished"
539msgstr "Klart"
539msgstr "Klart"
540
540
541−#: qml/Panel/Indicators/MenuItemFactory.qml:923
541+#: qml/Panel/Indicators/MenuItemFactory.qml:948
542msgid "Failed, tap to retry"
542msgid "Failed, tap to retry"
543msgstr "Misslyckades, tryck för att försöka igen"
543msgstr "Misslyckades, tryck för att försöka igen"
544
544
@@ -558,7 +558,7 @@ msgctxt "Button: Call back on phone"
558msgid "Call back"
558msgid "Call back"
559msgstr "Ring upp"
559msgstr "Ring upp"
560
560
561−#: qml/Stages/SideStage.qml:76
561+#: qml/Stage/SideStage.qml:76
562msgid "Drag using 3 fingers any application from one window to the other"
562msgid "Drag using 3 fingers any application from one window to the other"
563msgstr "Dra ett program från ett fönster till det andra med tre fingrar"
563msgstr "Dra ett program från ett fönster till det andra med tre fingrar"
564
564
@@ -604,15 +604,15 @@ msgstr "Nästa"
604
604
605#: qml/Wizard/Pages/20-keyboard.qml:31
605#: qml/Wizard/Pages/20-keyboard.qml:31
606msgid "Select Keyboard"
606msgid "Select Keyboard"
607−msgstr ""
607+msgstr "Välj tangentbord"
608
608
609#: qml/Wizard/Pages/20-keyboard.qml:71
609#: qml/Wizard/Pages/20-keyboard.qml:71
610msgid "Keyboard language"
610msgid "Keyboard language"
611−msgstr ""
611+msgstr "Tangentbordsspråk"
612
612
613#: qml/Wizard/Pages/20-keyboard.qml:93
613#: qml/Wizard/Pages/20-keyboard.qml:93
614msgid "Keyboard layout"
614msgid "Keyboard layout"
615−msgstr ""
615+msgstr "Tangentbordslayout"
616
616
617#: qml/Wizard/Pages/20-keyboard.qml:152 qml/Wizard/Pages/30-wifi.qml:207
617#: qml/Wizard/Pages/20-keyboard.qml:152 qml/Wizard/Pages/30-wifi.qml:207
618#: qml/Wizard/Pages/60-account.qml:65 qml/Wizard/Pages/77-system-update.qml:152
618#: qml/Wizard/Pages/60-account.qml:65 qml/Wizard/Pages/77-system-update.qml:152
@@ -723,32 +723,34 @@ msgstr "Sekretesspolicy"
723
723
724#: qml/Wizard/Pages/77-system-update.qml:28
724#: qml/Wizard/Pages/77-system-update.qml:28
725msgid "Update Device"
725msgid "Update Device"
726−msgstr ""
726+msgstr "Uppdatera enhet"
727
727
728#: qml/Wizard/Pages/77-system-update.qml:55
728#: qml/Wizard/Pages/77-system-update.qml:55
729msgid ""
729msgid ""
730"There is a system update available and ready to install. Afterwards, the "
730"There is a system update available and ready to install. Afterwards, the "
731"device will automatically restart."
731"device will automatically restart."
732msgstr ""
732msgstr ""
733+"En systemuppdatering är tillgänglig och redo för installation. Efteråt "
734+"kommer enheten att startas om automatiskt."
733
735
734#: qml/Wizard/Pages/77-system-update.qml:76
736#: qml/Wizard/Pages/77-system-update.qml:76
735msgctxt "string identifying name of the update"
737msgctxt "string identifying name of the update"
736msgid "Ubuntu system"
738msgid "Ubuntu system"
737−msgstr ""
739+msgstr "Ubuntusystem"
738
740
739#: qml/Wizard/Pages/77-system-update.qml:83
741#: qml/Wizard/Pages/77-system-update.qml:83
740#, qt-format
742#, qt-format
741msgctxt "version of the system update"
743msgctxt "version of the system update"
742msgid "Version %1"
744msgid "Version %1"
743−msgstr ""
745+msgstr "Version %1"
744
746
745#: qml/Wizard/Pages/77-system-update.qml:102
747#: qml/Wizard/Pages/77-system-update.qml:102
746msgid "This could take a few minutes..."
748msgid "This could take a few minutes..."
747−msgstr ""
749+msgstr "Det här kan ta några minuter..."
748
750
749#: qml/Wizard/Pages/77-system-update.qml:116
751#: qml/Wizard/Pages/77-system-update.qml:116
750msgid "Install and restart now"
752msgid "Install and restart now"
751−msgstr ""
753+msgstr "Installera och starta om nu"
752
754
753#: qml/Wizard/Pages/80-finished.qml:89
755#: qml/Wizard/Pages/80-finished.qml:89
754msgid "Welcome to Ubuntu"
756msgid "Welcome to Ubuntu"
@@ -884,7 +886,7 @@ msgstr "För att fortsätta utan SIM-kort, tryck Hoppa över."
884
886
885#: qml/Wizard/PasswordMeter.qml:87
887#: qml/Wizard/PasswordMeter.qml:87
886msgid "Password too short"
888msgid "Password too short"
887−msgstr ""
889+msgstr "Lösenordet för kort"
888
890
889#: qml/Wizard/PasswordMeter.qml:89
891#: qml/Wizard/PasswordMeter.qml:89
890msgid "Passwords match"
892msgid "Passwords match"
po/sw.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2015-07-17 20:02+0000\n"
11"PO-Revision-Date: 2015-07-17 20:02+0000\n"
12"Last-Translator: Valentine <mwangi_valentino@yahoo.com>\n"
12"Last-Translator: Valentine <mwangi_valentino@yahoo.com>\n"
13"Language-Team: Swahili <sw@li.org>\n"
13"Language-Team: Swahili <sw@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -479,62 +479,62 @@ msgstr "Gusa urudi ili upige simu"
479msgid "Conference"
479msgid "Conference"
480msgstr "Mkutano"
480msgstr "Mkutano"
481
481
482−#: qml/Panel/Indicators/MenuItemFactory.qml:762
482+#: qml/Panel/Indicators/MenuItemFactory.qml:788
483msgid "Nothing is playing"
483msgid "Nothing is playing"
484msgstr "Hakuna linalocheza"
484msgstr "Hakuna linalocheza"
485
485
486−#: qml/Panel/Indicators/MenuItemFactory.qml:891
486+#: qml/Panel/Indicators/MenuItemFactory.qml:916
487#, qt-format
487#, qt-format
488msgid "%1 hour"
488msgid "%1 hour"
489msgid_plural "%1 hours"
489msgid_plural "%1 hours"
490msgstr[0] "Saa %1"
490msgstr[0] "Saa %1"
491msgstr[1] "Mass %1"
491msgstr[1] "Mass %1"
492
492
493−#: qml/Panel/Indicators/MenuItemFactory.qml:895
493+#: qml/Panel/Indicators/MenuItemFactory.qml:920
494#, qt-format
494#, qt-format
495msgid "%1 minute"
495msgid "%1 minute"
496msgid_plural "%1 minutes"
496msgid_plural "%1 minutes"
497msgstr[0] "Dakika %1"
497msgstr[0] "Dakika %1"
498msgstr[1] "Dakika %1"
498msgstr[1] "Dakika %1"
499
499
500−#: qml/Panel/Indicators/MenuItemFactory.qml:900
500+#: qml/Panel/Indicators/MenuItemFactory.qml:925
501#, qt-format
501#, qt-format
502msgid "%1 second"
502msgid "%1 second"
503msgid_plural "%1 seconds"
503msgid_plural "%1 seconds"
504msgstr[0] "Sekunde %1"
504msgstr[0] "Sekunde %1"
505msgstr[1] "Sekunde %1"
505msgstr[1] "Sekunde %1"
506
506
507−#: qml/Panel/Indicators/MenuItemFactory.qml:903
507+#: qml/Panel/Indicators/MenuItemFactory.qml:928
508msgid "0 seconds"
508msgid "0 seconds"
509msgstr "sekunde 0"
509msgstr "sekunde 0"
510
510
511#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
511#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
512−#: qml/Panel/Indicators/MenuItemFactory.qml:905
512+#: qml/Panel/Indicators/MenuItemFactory.qml:930
513#, qt-format
513#, qt-format
514msgid "%1 remaining"
514msgid "%1 remaining"
515msgstr "%1 imebaki"
515msgstr "%1 imebaki"
516
516
517−#: qml/Panel/Indicators/MenuItemFactory.qml:911
517+#: qml/Panel/Indicators/MenuItemFactory.qml:936
518msgid "In queue…"
518msgid "In queue…"
519msgstr "Kwenye foleni"
519msgstr "Kwenye foleni"
520
520
521−#: qml/Panel/Indicators/MenuItemFactory.qml:915
521+#: qml/Panel/Indicators/MenuItemFactory.qml:940
522msgid "Downloading"
522msgid "Downloading"
523msgstr ""
523msgstr ""
524
524
525−#: qml/Panel/Indicators/MenuItemFactory.qml:917
525+#: qml/Panel/Indicators/MenuItemFactory.qml:942
526msgid "Paused, tap to resume"
526msgid "Paused, tap to resume"
527msgstr "Imepumzishwa, gusa uendelee"
527msgstr "Imepumzishwa, gusa uendelee"
528
528
529−#: qml/Panel/Indicators/MenuItemFactory.qml:919
529+#: qml/Panel/Indicators/MenuItemFactory.qml:944
530msgid "Canceled"
530msgid "Canceled"
531msgstr "Imeghairishwa"
531msgstr "Imeghairishwa"
532
532
533−#: qml/Panel/Indicators/MenuItemFactory.qml:921
533+#: qml/Panel/Indicators/MenuItemFactory.qml:946
534msgid "Finished"
534msgid "Finished"
535msgstr "Imemaliza"
535msgstr "Imemaliza"
536
536
537−#: qml/Panel/Indicators/MenuItemFactory.qml:923
537+#: qml/Panel/Indicators/MenuItemFactory.qml:948
538msgid "Failed, tap to retry"
538msgid "Failed, tap to retry"
539msgstr "Imefeli, gusa urudie"
539msgstr "Imefeli, gusa urudie"
540
540
@@ -554,7 +554,7 @@ msgctxt "Button: Call back on phone"
554msgid "Call back"
554msgid "Call back"
555msgstr ""
555msgstr ""
556
556
557−#: qml/Stages/SideStage.qml:76
557+#: qml/Stage/SideStage.qml:76
558msgid "Drag using 3 fingers any application from one window to the other"
558msgid "Drag using 3 fingers any application from one window to the other"
559msgstr ""
559msgstr ""
560
560
po/ta.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2013-10-24 11:36+0000\n"
11"PO-Revision-Date: 2013-10-24 11:36+0000\n"
12"Last-Translator: Arun Kumar - அருண் குமார் <thangam.arunx@gmail.com>\n"
12"Last-Translator: Arun Kumar - அருண் குமார் <thangam.arunx@gmail.com>\n"
13"Language-Team: Ubuntu Tamil Team/Free Tamil Computing/Thamizha\n"
13"Language-Team: Ubuntu Tamil Team/Free Tamil Computing/Thamizha\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20"Language: ta\n"
20"Language: ta\n"
21
21
22#: plugins/LightDM/Greeter.cpp:123
22#: plugins/LightDM/Greeter.cpp:123
@@ -478,62 +478,62 @@ msgstr ""
478msgid "Conference"
478msgid "Conference"
479msgstr ""
479msgstr ""
480
480
481−#: qml/Panel/Indicators/MenuItemFactory.qml:762
481+#: qml/Panel/Indicators/MenuItemFactory.qml:788
482msgid "Nothing is playing"
482msgid "Nothing is playing"
483msgstr ""
483msgstr ""
484
484
485−#: qml/Panel/Indicators/MenuItemFactory.qml:891
485+#: qml/Panel/Indicators/MenuItemFactory.qml:916
486#, qt-format
486#, qt-format
487msgid "%1 hour"
487msgid "%1 hour"
488msgid_plural "%1 hours"
488msgid_plural "%1 hours"
489msgstr[0] ""
489msgstr[0] ""
490msgstr[1] ""
490msgstr[1] ""
491
491
492−#: qml/Panel/Indicators/MenuItemFactory.qml:895
492+#: qml/Panel/Indicators/MenuItemFactory.qml:920
493#, qt-format
493#, qt-format
494msgid "%1 minute"
494msgid "%1 minute"
495msgid_plural "%1 minutes"
495msgid_plural "%1 minutes"
496msgstr[0] ""
496msgstr[0] ""
497msgstr[1] ""
497msgstr[1] ""
498
498
499−#: qml/Panel/Indicators/MenuItemFactory.qml:900
499+#: qml/Panel/Indicators/MenuItemFactory.qml:925
500#, qt-format
500#, qt-format
501msgid "%1 second"
501msgid "%1 second"
502msgid_plural "%1 seconds"
502msgid_plural "%1 seconds"
503msgstr[0] ""
503msgstr[0] ""
504msgstr[1] ""
504msgstr[1] ""
505
505
506−#: qml/Panel/Indicators/MenuItemFactory.qml:903
506+#: qml/Panel/Indicators/MenuItemFactory.qml:928
507msgid "0 seconds"
507msgid "0 seconds"
508msgstr ""
508msgstr ""
509
509
510#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
510#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
511−#: qml/Panel/Indicators/MenuItemFactory.qml:905
511+#: qml/Panel/Indicators/MenuItemFactory.qml:930
512#, qt-format
512#, qt-format
513msgid "%1 remaining"
513msgid "%1 remaining"
514msgstr ""
514msgstr ""
515
515
516−#: qml/Panel/Indicators/MenuItemFactory.qml:911
516+#: qml/Panel/Indicators/MenuItemFactory.qml:936
517msgid "In queue…"
517msgid "In queue…"
518msgstr ""
518msgstr ""
519
519
520−#: qml/Panel/Indicators/MenuItemFactory.qml:915
520+#: qml/Panel/Indicators/MenuItemFactory.qml:940
521msgid "Downloading"
521msgid "Downloading"
522msgstr ""
522msgstr ""
523
523
524−#: qml/Panel/Indicators/MenuItemFactory.qml:917
524+#: qml/Panel/Indicators/MenuItemFactory.qml:942
525msgid "Paused, tap to resume"
525msgid "Paused, tap to resume"
526msgstr ""
526msgstr ""
527
527
528−#: qml/Panel/Indicators/MenuItemFactory.qml:919
528+#: qml/Panel/Indicators/MenuItemFactory.qml:944
529msgid "Canceled"
529msgid "Canceled"
530msgstr ""
530msgstr ""
531
531
532−#: qml/Panel/Indicators/MenuItemFactory.qml:921
532+#: qml/Panel/Indicators/MenuItemFactory.qml:946
533msgid "Finished"
533msgid "Finished"
534msgstr ""
534msgstr ""
535
535
536−#: qml/Panel/Indicators/MenuItemFactory.qml:923
536+#: qml/Panel/Indicators/MenuItemFactory.qml:948
537msgid "Failed, tap to retry"
537msgid "Failed, tap to retry"
538msgstr ""
538msgstr ""
539
539
@@ -553,7 +553,7 @@ msgctxt "Button: Call back on phone"
553msgid "Call back"
553msgid "Call back"
554msgstr ""
554msgstr ""
555
555
556−#: qml/Stages/SideStage.qml:76
556+#: qml/Stage/SideStage.qml:76
557msgid "Drag using 3 fingers any application from one window to the other"
557msgid "Drag using 3 fingers any application from one window to the other"
558msgstr ""
558msgstr ""
559
559
po/te.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2014-07-19 10:04+0000\n"
11"PO-Revision-Date: 2014-07-19 10:04+0000\n"
12"Last-Translator: Praveen Illa <mail2ipn@gmail.com>\n"
12"Last-Translator: Praveen Illa <mail2ipn@gmail.com>\n"
13"Language-Team: Telugu <te@li.org>\n"
13"Language-Team: Telugu <te@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:54+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -477,62 +477,62 @@ msgstr ""
477msgid "Conference"
477msgid "Conference"
478msgstr ""
478msgstr ""
479
479
480−#: qml/Panel/Indicators/MenuItemFactory.qml:762
480+#: qml/Panel/Indicators/MenuItemFactory.qml:788
481msgid "Nothing is playing"
481msgid "Nothing is playing"
482msgstr ""
482msgstr ""
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:891
484+#: qml/Panel/Indicators/MenuItemFactory.qml:916
485#, qt-format
485#, qt-format
486msgid "%1 hour"
486msgid "%1 hour"
487msgid_plural "%1 hours"
487msgid_plural "%1 hours"
488msgstr[0] ""
488msgstr[0] ""
489msgstr[1] ""
489msgstr[1] ""
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:895
491+#: qml/Panel/Indicators/MenuItemFactory.qml:920
492#, qt-format
492#, qt-format
493msgid "%1 minute"
493msgid "%1 minute"
494msgid_plural "%1 minutes"
494msgid_plural "%1 minutes"
495msgstr[0] ""
495msgstr[0] ""
496msgstr[1] ""
496msgstr[1] ""
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:900
498+#: qml/Panel/Indicators/MenuItemFactory.qml:925
499#, qt-format
499#, qt-format
500msgid "%1 second"
500msgid "%1 second"
501msgid_plural "%1 seconds"
501msgid_plural "%1 seconds"
502msgstr[0] ""
502msgstr[0] ""
503msgstr[1] ""
503msgstr[1] ""
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:903
505+#: qml/Panel/Indicators/MenuItemFactory.qml:928
506msgid "0 seconds"
506msgid "0 seconds"
507msgstr ""
507msgstr ""
508
508
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
510−#: qml/Panel/Indicators/MenuItemFactory.qml:905
510+#: qml/Panel/Indicators/MenuItemFactory.qml:930
511#, qt-format
511#, qt-format
512msgid "%1 remaining"
512msgid "%1 remaining"
513msgstr ""
513msgstr ""
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:911
515+#: qml/Panel/Indicators/MenuItemFactory.qml:936
516msgid "In queue…"
516msgid "In queue…"
517msgstr ""
517msgstr ""
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:915
519+#: qml/Panel/Indicators/MenuItemFactory.qml:940
520msgid "Downloading"
520msgid "Downloading"
521msgstr "దింపుకుంటున్నది"
521msgstr "దింపుకుంటున్నది"
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:917
523+#: qml/Panel/Indicators/MenuItemFactory.qml:942
524msgid "Paused, tap to resume"
524msgid "Paused, tap to resume"
525msgstr ""
525msgstr ""
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:919
527+#: qml/Panel/Indicators/MenuItemFactory.qml:944
528msgid "Canceled"
528msgid "Canceled"
529msgstr "రద్దుచేయబడింది"
529msgstr "రద్దుచేయబడింది"
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:921
531+#: qml/Panel/Indicators/MenuItemFactory.qml:946
532msgid "Finished"
532msgid "Finished"
533msgstr "పూర్తయింది"
533msgstr "పూర్తయింది"
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:923
535+#: qml/Panel/Indicators/MenuItemFactory.qml:948
536msgid "Failed, tap to retry"
536msgid "Failed, tap to retry"
537msgstr ""
537msgstr ""
538
538
@@ -552,7 +552,7 @@ msgctxt "Button: Call back on phone"
552msgid "Call back"
552msgid "Call back"
553msgstr ""
553msgstr ""
554
554
555−#: qml/Stages/SideStage.qml:76
555+#: qml/Stage/SideStage.qml:76
556msgid "Drag using 3 fingers any application from one window to the other"
556msgid "Drag using 3 fingers any application from one window to the other"
557msgstr ""
557msgstr ""
558
558
po/th.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2014-10-02 04:55+0000\n"
11"PO-Revision-Date: 2014-10-02 04:55+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Thai <th@li.org>\n"
13"Language-Team: Thai <th@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:55+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -477,62 +477,62 @@ msgstr ""
477msgid "Conference"
477msgid "Conference"
478msgstr ""
478msgstr ""
479
479
480−#: qml/Panel/Indicators/MenuItemFactory.qml:762
480+#: qml/Panel/Indicators/MenuItemFactory.qml:788
481msgid "Nothing is playing"
481msgid "Nothing is playing"
482msgstr ""
482msgstr ""
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:891
484+#: qml/Panel/Indicators/MenuItemFactory.qml:916
485#, qt-format
485#, qt-format
486msgid "%1 hour"
486msgid "%1 hour"
487msgid_plural "%1 hours"
487msgid_plural "%1 hours"
488msgstr[0] ""
488msgstr[0] ""
489msgstr[1] ""
489msgstr[1] ""
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:895
491+#: qml/Panel/Indicators/MenuItemFactory.qml:920
492#, qt-format
492#, qt-format
493msgid "%1 minute"
493msgid "%1 minute"
494msgid_plural "%1 minutes"
494msgid_plural "%1 minutes"
495msgstr[0] ""
495msgstr[0] ""
496msgstr[1] ""
496msgstr[1] ""
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:900
498+#: qml/Panel/Indicators/MenuItemFactory.qml:925
499#, qt-format
499#, qt-format
500msgid "%1 second"
500msgid "%1 second"
501msgid_plural "%1 seconds"
501msgid_plural "%1 seconds"
502msgstr[0] ""
502msgstr[0] ""
503msgstr[1] ""
503msgstr[1] ""
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:903
505+#: qml/Panel/Indicators/MenuItemFactory.qml:928
506msgid "0 seconds"
506msgid "0 seconds"
507msgstr ""
507msgstr ""
508
508
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
510−#: qml/Panel/Indicators/MenuItemFactory.qml:905
510+#: qml/Panel/Indicators/MenuItemFactory.qml:930
511#, qt-format
511#, qt-format
512msgid "%1 remaining"
512msgid "%1 remaining"
513msgstr ""
513msgstr ""
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:911
515+#: qml/Panel/Indicators/MenuItemFactory.qml:936
516msgid "In queue…"
516msgid "In queue…"
517msgstr ""
517msgstr ""
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:915
519+#: qml/Panel/Indicators/MenuItemFactory.qml:940
520msgid "Downloading"
520msgid "Downloading"
521msgstr ""
521msgstr ""
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:917
523+#: qml/Panel/Indicators/MenuItemFactory.qml:942
524msgid "Paused, tap to resume"
524msgid "Paused, tap to resume"
525msgstr ""
525msgstr ""
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:919
527+#: qml/Panel/Indicators/MenuItemFactory.qml:944
528msgid "Canceled"
528msgid "Canceled"
529msgstr ""
529msgstr ""
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:921
531+#: qml/Panel/Indicators/MenuItemFactory.qml:946
532msgid "Finished"
532msgid "Finished"
533msgstr ""
533msgstr ""
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:923
535+#: qml/Panel/Indicators/MenuItemFactory.qml:948
536msgid "Failed, tap to retry"
536msgid "Failed, tap to retry"
537msgstr ""
537msgstr ""
538
538
@@ -552,7 +552,7 @@ msgctxt "Button: Call back on phone"
552msgid "Call back"
552msgid "Call back"
553msgstr ""
553msgstr ""
554
554
555−#: qml/Stages/SideStage.qml:76
555+#: qml/Stage/SideStage.qml:76
556msgid "Drag using 3 fingers any application from one window to the other"
556msgid "Drag using 3 fingers any application from one window to the other"
557msgstr ""
557msgstr ""
558
558
po/tr.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2015-03-22 15:56+0000\n"
11"PO-Revision-Date: 2015-03-22 15:56+0000\n"
12"Last-Translator: Arda Ünlü <aarda.uunlu@gmail.com>\n"
12"Last-Translator: Arda Ünlü <aarda.uunlu@gmail.com>\n"
13"Language-Team: Turkish <tr@li.org>\n"
13"Language-Team: Turkish <tr@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:55+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -481,62 +481,62 @@ msgstr "Çağrıya dönmek için dokunun..."
481msgid "Conference"
481msgid "Conference"
482msgstr "Konferans"
482msgstr "Konferans"
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:762
484+#: qml/Panel/Indicators/MenuItemFactory.qml:788
485msgid "Nothing is playing"
485msgid "Nothing is playing"
486msgstr "Hiçbir şey çalmıyor"
486msgstr "Hiçbir şey çalmıyor"
487
487
488−#: qml/Panel/Indicators/MenuItemFactory.qml:891
488+#: qml/Panel/Indicators/MenuItemFactory.qml:916
489#, qt-format
489#, qt-format
490msgid "%1 hour"
490msgid "%1 hour"
491msgid_plural "%1 hours"
491msgid_plural "%1 hours"
492msgstr[0] "%1 saat"
492msgstr[0] "%1 saat"
493msgstr[1] "%1 saat"
493msgstr[1] "%1 saat"
494
494
495−#: qml/Panel/Indicators/MenuItemFactory.qml:895
495+#: qml/Panel/Indicators/MenuItemFactory.qml:920
496#, qt-format
496#, qt-format
497msgid "%1 minute"
497msgid "%1 minute"
498msgid_plural "%1 minutes"
498msgid_plural "%1 minutes"
499msgstr[0] "%1 dakika"
499msgstr[0] "%1 dakika"
500msgstr[1] "%1 dakika"
500msgstr[1] "%1 dakika"
501
501
502−#: qml/Panel/Indicators/MenuItemFactory.qml:900
502+#: qml/Panel/Indicators/MenuItemFactory.qml:925
503#, qt-format
503#, qt-format
504msgid "%1 second"
504msgid "%1 second"
505msgid_plural "%1 seconds"
505msgid_plural "%1 seconds"
506msgstr[0] "%1 saniye"
506msgstr[0] "%1 saniye"
507msgstr[1] "%1 saniye"
507msgstr[1] "%1 saniye"
508
508
509−#: qml/Panel/Indicators/MenuItemFactory.qml:903
509+#: qml/Panel/Indicators/MenuItemFactory.qml:928
510msgid "0 seconds"
510msgid "0 seconds"
511msgstr "0 saniye"
511msgstr "0 saniye"
512
512
513#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
513#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
514−#: qml/Panel/Indicators/MenuItemFactory.qml:905
514+#: qml/Panel/Indicators/MenuItemFactory.qml:930
515#, qt-format
515#, qt-format
516msgid "%1 remaining"
516msgid "%1 remaining"
517msgstr "%1 kaldı"
517msgstr "%1 kaldı"
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:911
519+#: qml/Panel/Indicators/MenuItemFactory.qml:936
520msgid "In queue…"
520msgid "In queue…"
521msgstr "Beklemede..."
521msgstr "Beklemede..."
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:915
523+#: qml/Panel/Indicators/MenuItemFactory.qml:940
524msgid "Downloading"
524msgid "Downloading"
525msgstr "İndiriliyor"
525msgstr "İndiriliyor"
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:917
527+#: qml/Panel/Indicators/MenuItemFactory.qml:942
528msgid "Paused, tap to resume"
528msgid "Paused, tap to resume"
529msgstr "Duraklatıldı, devam etmek için dokunun"
529msgstr "Duraklatıldı, devam etmek için dokunun"
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:919
531+#: qml/Panel/Indicators/MenuItemFactory.qml:944
532msgid "Canceled"
532msgid "Canceled"
533msgstr "İptal edildi"
533msgstr "İptal edildi"
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:921
535+#: qml/Panel/Indicators/MenuItemFactory.qml:946
536msgid "Finished"
536msgid "Finished"
537msgstr "Bitti"
537msgstr "Bitti"
538
538
539−#: qml/Panel/Indicators/MenuItemFactory.qml:923
539+#: qml/Panel/Indicators/MenuItemFactory.qml:948
540msgid "Failed, tap to retry"
540msgid "Failed, tap to retry"
541msgstr "Başarısız, yeniden denemek için dokunun"
541msgstr "Başarısız, yeniden denemek için dokunun"
542
542
@@ -556,7 +556,7 @@ msgctxt "Button: Call back on phone"
556msgid "Call back"
556msgid "Call back"
557msgstr "Geri ara"
557msgstr "Geri ara"
558
558
559−#: qml/Stages/SideStage.qml:76
559+#: qml/Stage/SideStage.qml:76
560msgid "Drag using 3 fingers any application from one window to the other"
560msgid "Drag using 3 fingers any application from one window to the other"
561msgstr ""
561msgstr ""
562"Diğer bir pencereden herhangi bir uygulamayı 3 parmağınızı kullanarak "
562"Diğer bir pencereden herhangi bir uygulamayı 3 parmağınızı kullanarak "
po/ug.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-07-03 13:56+0000\n"
11"PO-Revision-Date: 2016-07-03 13:56+0000\n"
12"Last-Translator: Eltikin <eltikinuyghur@hotmail.com>\n"
12"Last-Translator: Eltikin <eltikinuyghur@hotmail.com>\n"
13"Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
13"Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:55+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -478,59 +478,59 @@ msgstr "سۆزلىشىشكە قايتىش ئۈچۈن چېكىڭ…"
478msgid "Conference"
478msgid "Conference"
479msgstr "يىغىن"
479msgstr "يىغىن"
480
480
481−#: qml/Panel/Indicators/MenuItemFactory.qml:762
481+#: qml/Panel/Indicators/MenuItemFactory.qml:788
482msgid "Nothing is playing"
482msgid "Nothing is playing"
483msgstr "ھېچ نېمە قويۇلمايۋاتىدۇ"
483msgstr "ھېچ نېمە قويۇلمايۋاتىدۇ"
484
484
485−#: qml/Panel/Indicators/MenuItemFactory.qml:891
485+#: qml/Panel/Indicators/MenuItemFactory.qml:916
486#, qt-format
486#, qt-format
487msgid "%1 hour"
487msgid "%1 hour"
488msgid_plural "%1 hours"
488msgid_plural "%1 hours"
489msgstr[0] "%1 سائەت"
489msgstr[0] "%1 سائەت"
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:895
491+#: qml/Panel/Indicators/MenuItemFactory.qml:920
492#, qt-format
492#, qt-format
493msgid "%1 minute"
493msgid "%1 minute"
494msgid_plural "%1 minutes"
494msgid_plural "%1 minutes"
495msgstr[0] "%1 مىنۇت"
495msgstr[0] "%1 مىنۇت"
496
496
497−#: qml/Panel/Indicators/MenuItemFactory.qml:900
497+#: qml/Panel/Indicators/MenuItemFactory.qml:925
498#, qt-format
498#, qt-format
499msgid "%1 second"
499msgid "%1 second"
500msgid_plural "%1 seconds"
500msgid_plural "%1 seconds"
501msgstr[0] "%1 سېكۇنت"
501msgstr[0] "%1 سېكۇنت"
502
502
503−#: qml/Panel/Indicators/MenuItemFactory.qml:903
503+#: qml/Panel/Indicators/MenuItemFactory.qml:928
504msgid "0 seconds"
504msgid "0 seconds"
505msgstr "0 سېكۇنت"
505msgstr "0 سېكۇنت"
506
506
507#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
507#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
508−#: qml/Panel/Indicators/MenuItemFactory.qml:905
508+#: qml/Panel/Indicators/MenuItemFactory.qml:930
509#, qt-format
509#, qt-format
510msgid "%1 remaining"
510msgid "%1 remaining"
511msgstr "%1 قالدۇقى"
511msgstr "%1 قالدۇقى"
512
512
513−#: qml/Panel/Indicators/MenuItemFactory.qml:911
513+#: qml/Panel/Indicators/MenuItemFactory.qml:936
514msgid "In queue…"
514msgid "In queue…"
515msgstr "قاتاردا…"
515msgstr "قاتاردا…"
516
516
517−#: qml/Panel/Indicators/MenuItemFactory.qml:915
517+#: qml/Panel/Indicators/MenuItemFactory.qml:940
518msgid "Downloading"
518msgid "Downloading"
519msgstr "چۈشۈرۈۋاتىدۇ"
519msgstr "چۈشۈرۈۋاتىدۇ"
520
520
521−#: qml/Panel/Indicators/MenuItemFactory.qml:917
521+#: qml/Panel/Indicators/MenuItemFactory.qml:942
522msgid "Paused, tap to resume"
522msgid "Paused, tap to resume"
523msgstr "توختىتىلغان، چەكسە داۋاملىشىدۇ"
523msgstr "توختىتىلغان، چەكسە داۋاملىشىدۇ"
524
524
525−#: qml/Panel/Indicators/MenuItemFactory.qml:919
525+#: qml/Panel/Indicators/MenuItemFactory.qml:944
526msgid "Canceled"
526msgid "Canceled"
527msgstr "قالدۇرۇۋېتىلدى"
527msgstr "قالدۇرۇۋېتىلدى"
528
528
529−#: qml/Panel/Indicators/MenuItemFactory.qml:921
529+#: qml/Panel/Indicators/MenuItemFactory.qml:946
530msgid "Finished"
530msgid "Finished"
531msgstr "تاماملاندى"
531msgstr "تاماملاندى"
532
532
533−#: qml/Panel/Indicators/MenuItemFactory.qml:923
533+#: qml/Panel/Indicators/MenuItemFactory.qml:948
534msgid "Failed, tap to retry"
534msgid "Failed, tap to retry"
535msgstr "مەغلۇپ بولدى، چېكىپ قايتا سىناڭ"
535msgstr "مەغلۇپ بولدى، چېكىپ قايتا سىناڭ"
536
536
@@ -550,7 +550,7 @@ msgctxt "Button: Call back on phone"
550msgid "Call back"
550msgid "Call back"
551msgstr "تىلفۇن ئۇرلىۋاتىدۇ"
551msgstr "تىلفۇن ئۇرلىۋاتىدۇ"
552
552
553−#: qml/Stages/SideStage.qml:76
553+#: qml/Stage/SideStage.qml:76
554msgid "Drag using 3 fingers any application from one window to the other"
554msgid "Drag using 3 fingers any application from one window to the other"
555msgstr ""
555msgstr ""
556
556
po/uk.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-04-01 17:32+0000\n"
11"PO-Revision-Date: 2016-04-01 17:32+0000\n"
12"Last-Translator: Yuri Chornoivan <yurchor@gmail.com>\n"
12"Last-Translator: Yuri Chornoivan <yurchor@gmail.com>\n"
13"Language-Team: Ukrainian <uk@li.org>\n"
13"Language-Team: Ukrainian <uk@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
19+"X-Launchpad-Export-Date: 2016-10-28 05:55+0000\n"
20−"X-Generator: Launchpad (build 18204)\n"
20+"X-Generator: Launchpad (build 18246)\n"
21
21
22#: plugins/LightDM/Greeter.cpp:123
22#: plugins/LightDM/Greeter.cpp:123
23msgid "Password: "
23msgid "Password: "
@@ -489,11 +489,11 @@ msgstr "Торкніться, щоб повернутися до дзвінка
489msgid "Conference"
489msgid "Conference"
490msgstr "Конференція"
490msgstr "Конференція"
491
491
492−#: qml/Panel/Indicators/MenuItemFactory.qml:762
492+#: qml/Panel/Indicators/MenuItemFactory.qml:788
493msgid "Nothing is playing"
493msgid "Nothing is playing"
494msgstr "Нічого не відтворюється"
494msgstr "Нічого не відтворюється"
495
495
496−#: qml/Panel/Indicators/MenuItemFactory.qml:891
496+#: qml/Panel/Indicators/MenuItemFactory.qml:916
497#, qt-format
497#, qt-format
498msgid "%1 hour"
498msgid "%1 hour"
499msgid_plural "%1 hours"
499msgid_plural "%1 hours"
@@ -501,7 +501,7 @@ msgstr[0] "%1 година"
501msgstr[1] "%1 години"
501msgstr[1] "%1 години"
502msgstr[2] "%1 годин"
502msgstr[2] "%1 годин"
503
503
504−#: qml/Panel/Indicators/MenuItemFactory.qml:895
504+#: qml/Panel/Indicators/MenuItemFactory.qml:920
505#, qt-format
505#, qt-format
506msgid "%1 minute"
506msgid "%1 minute"
507msgid_plural "%1 minutes"
507msgid_plural "%1 minutes"
@@ -509,7 +509,7 @@ msgstr[0] "%1 хвилина"
509msgstr[1] "%1 хвилини"
509msgstr[1] "%1 хвилини"
510msgstr[2] "%1 хвилин"
510msgstr[2] "%1 хвилин"
511
511
512−#: qml/Panel/Indicators/MenuItemFactory.qml:900
512+#: qml/Panel/Indicators/MenuItemFactory.qml:925
513#, qt-format
513#, qt-format
514msgid "%1 second"
514msgid "%1 second"
515msgid_plural "%1 seconds"
515msgid_plural "%1 seconds"
@@ -517,37 +517,37 @@ msgstr[0] "%1 секунда"
517msgstr[1] "%1 секунди"
517msgstr[1] "%1 секунди"
518msgstr[2] "%1 секунд"
518msgstr[2] "%1 секунд"
519
519
520−#: qml/Panel/Indicators/MenuItemFactory.qml:903
520+#: qml/Panel/Indicators/MenuItemFactory.qml:928
521msgid "0 seconds"
521msgid "0 seconds"
522msgstr "0 секунд"
522msgstr "0 секунд"
523
523
524#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
524#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
525−#: qml/Panel/Indicators/MenuItemFactory.qml:905
525+#: qml/Panel/Indicators/MenuItemFactory.qml:930
526#, qt-format
526#, qt-format
527msgid "%1 remaining"
527msgid "%1 remaining"
528msgstr "Залишилося %1"
528msgstr "Залишилося %1"
529
529
530−#: qml/Panel/Indicators/MenuItemFactory.qml:911
530+#: qml/Panel/Indicators/MenuItemFactory.qml:936
531msgid "In queue…"
531msgid "In queue…"
532msgstr "У черзі…"
532msgstr "У черзі…"
533
533
534−#: qml/Panel/Indicators/MenuItemFactory.qml:915
534+#: qml/Panel/Indicators/MenuItemFactory.qml:940
535msgid "Downloading"
535msgid "Downloading"
536msgstr "Отримуємо"
536msgstr "Отримуємо"
537
537
538−#: qml/Panel/Indicators/MenuItemFactory.qml:917
538+#: qml/Panel/Indicators/MenuItemFactory.qml:942
539msgid "Paused, tap to resume"
539msgid "Paused, tap to resume"
540msgstr "Призупинено, торкніться, щоб поновити"
540msgstr "Призупинено, торкніться, щоб поновити"
541
541
542−#: qml/Panel/Indicators/MenuItemFactory.qml:919
542+#: qml/Panel/Indicators/MenuItemFactory.qml:944
543msgid "Canceled"
543msgid "Canceled"
544msgstr "Скасовано"
544msgstr "Скасовано"
545
545
546−#: qml/Panel/Indicators/MenuItemFactory.qml:921
546+#: qml/Panel/Indicators/MenuItemFactory.qml:946
547msgid "Finished"
547msgid "Finished"
548msgstr "Завершено"
548msgstr "Завершено"
549
549
550−#: qml/Panel/Indicators/MenuItemFactory.qml:923
550+#: qml/Panel/Indicators/MenuItemFactory.qml:948
551msgid "Failed, tap to retry"
551msgid "Failed, tap to retry"
552msgstr "Помилка, торкніться, щоб повторити спробу"
552msgstr "Помилка, торкніться, щоб повторити спробу"
553
553
@@ -567,7 +567,7 @@ msgctxt "Button: Call back on phone"
567msgid "Call back"
567msgid "Call back"
568msgstr "Зворотний виклик"
568msgstr "Зворотний виклик"
569
569
570−#: qml/Stages/SideStage.qml:76
570+#: qml/Stage/SideStage.qml:76
571msgid "Drag using 3 fingers any application from one window to the other"
571msgid "Drag using 3 fingers any application from one window to the other"
572msgstr "Пересувайте будь-який додаток за допомогою трьох пальців"
572msgstr "Пересувайте будь-який додаток за допомогою трьох пальців"
573
573
po/unity8.pot+14−14
@@ -8,7 +8,7 @@ msgid ""
8msgstr ""
8msgstr ""
9"Project-Id-Version: unity8\n"
9"Project-Id-Version: unity8\n"
10"Report-Msgid-Bugs-To: \n"
10"Report-Msgid-Bugs-To: \n"
11−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
11+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14"Language-Team: LANGUAGE <LL@li.org>\n"
14"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -477,62 +477,62 @@ msgstr ""
477msgid "Conference"
477msgid "Conference"
478msgstr ""
478msgstr ""
479
479
480−#: qml/Panel/Indicators/MenuItemFactory.qml:762
480+#: qml/Panel/Indicators/MenuItemFactory.qml:788
481msgid "Nothing is playing"
481msgid "Nothing is playing"
482msgstr ""
482msgstr ""
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:891
484+#: qml/Panel/Indicators/MenuItemFactory.qml:916
485#, qt-format
485#, qt-format
486msgid "%1 hour"
486msgid "%1 hour"
487msgid_plural "%1 hours"
487msgid_plural "%1 hours"
488msgstr[0] ""
488msgstr[0] ""
489msgstr[1] ""
489msgstr[1] ""
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:895
491+#: qml/Panel/Indicators/MenuItemFactory.qml:920
492#, qt-format
492#, qt-format
493msgid "%1 minute"
493msgid "%1 minute"
494msgid_plural "%1 minutes"
494msgid_plural "%1 minutes"
495msgstr[0] ""
495msgstr[0] ""
496msgstr[1] ""
496msgstr[1] ""
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:900
498+#: qml/Panel/Indicators/MenuItemFactory.qml:925
499#, qt-format
499#, qt-format
500msgid "%1 second"
500msgid "%1 second"
501msgid_plural "%1 seconds"
501msgid_plural "%1 seconds"
502msgstr[0] ""
502msgstr[0] ""
503msgstr[1] ""
503msgstr[1] ""
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:903
505+#: qml/Panel/Indicators/MenuItemFactory.qml:928
506msgid "0 seconds"
506msgid "0 seconds"
507msgstr ""
507msgstr ""
508
508
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
510−#: qml/Panel/Indicators/MenuItemFactory.qml:905
510+#: qml/Panel/Indicators/MenuItemFactory.qml:930
511#, qt-format
511#, qt-format
512msgid "%1 remaining"
512msgid "%1 remaining"
513msgstr ""
513msgstr ""
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:911
515+#: qml/Panel/Indicators/MenuItemFactory.qml:936
516msgid "In queue…"
516msgid "In queue…"
517msgstr ""
517msgstr ""
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:915
519+#: qml/Panel/Indicators/MenuItemFactory.qml:940
520msgid "Downloading"
520msgid "Downloading"
521msgstr ""
521msgstr ""
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:917
523+#: qml/Panel/Indicators/MenuItemFactory.qml:942
524msgid "Paused, tap to resume"
524msgid "Paused, tap to resume"
525msgstr ""
525msgstr ""
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:919
527+#: qml/Panel/Indicators/MenuItemFactory.qml:944
528msgid "Canceled"
528msgid "Canceled"
529msgstr ""
529msgstr ""
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:921
531+#: qml/Panel/Indicators/MenuItemFactory.qml:946
532msgid "Finished"
532msgid "Finished"
533msgstr ""
533msgstr ""
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:923
535+#: qml/Panel/Indicators/MenuItemFactory.qml:948
536msgid "Failed, tap to retry"
536msgid "Failed, tap to retry"
537msgstr ""
537msgstr ""
538
538
@@ -552,7 +552,7 @@ msgctxt "Button: Call back on phone"
552msgid "Call back"
552msgid "Call back"
553msgstr ""
553msgstr ""
554
554
555−#: qml/Stages/SideStage.qml:76
555+#: qml/Stage/SideStage.qml:76
556msgid "Drag using 3 fingers any application from one window to the other"
556msgid "Drag using 3 fingers any application from one window to the other"
557msgstr ""
557msgstr ""
558
558
po/ur.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2015-05-05 03:12+0000\n"
11"PO-Revision-Date: 2015-05-05 03:12+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Urdu <ur@li.org>\n"
13"Language-Team: Urdu <ur@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:55+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -477,62 +477,62 @@ msgstr ""
477msgid "Conference"
477msgid "Conference"
478msgstr ""
478msgstr ""
479
479
480−#: qml/Panel/Indicators/MenuItemFactory.qml:762
480+#: qml/Panel/Indicators/MenuItemFactory.qml:788
481msgid "Nothing is playing"
481msgid "Nothing is playing"
482msgstr ""
482msgstr ""
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:891
484+#: qml/Panel/Indicators/MenuItemFactory.qml:916
485#, qt-format
485#, qt-format
486msgid "%1 hour"
486msgid "%1 hour"
487msgid_plural "%1 hours"
487msgid_plural "%1 hours"
488msgstr[0] ""
488msgstr[0] ""
489msgstr[1] ""
489msgstr[1] ""
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:895
491+#: qml/Panel/Indicators/MenuItemFactory.qml:920
492#, qt-format
492#, qt-format
493msgid "%1 minute"
493msgid "%1 minute"
494msgid_plural "%1 minutes"
494msgid_plural "%1 minutes"
495msgstr[0] ""
495msgstr[0] ""
496msgstr[1] ""
496msgstr[1] ""
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:900
498+#: qml/Panel/Indicators/MenuItemFactory.qml:925
499#, qt-format
499#, qt-format
500msgid "%1 second"
500msgid "%1 second"
501msgid_plural "%1 seconds"
501msgid_plural "%1 seconds"
502msgstr[0] ""
502msgstr[0] ""
503msgstr[1] ""
503msgstr[1] ""
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:903
505+#: qml/Panel/Indicators/MenuItemFactory.qml:928
506msgid "0 seconds"
506msgid "0 seconds"
507msgstr ""
507msgstr ""
508
508
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
510−#: qml/Panel/Indicators/MenuItemFactory.qml:905
510+#: qml/Panel/Indicators/MenuItemFactory.qml:930
511#, qt-format
511#, qt-format
512msgid "%1 remaining"
512msgid "%1 remaining"
513msgstr ""
513msgstr ""
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:911
515+#: qml/Panel/Indicators/MenuItemFactory.qml:936
516msgid "In queue…"
516msgid "In queue…"
517msgstr ""
517msgstr ""
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:915
519+#: qml/Panel/Indicators/MenuItemFactory.qml:940
520msgid "Downloading"
520msgid "Downloading"
521msgstr ""
521msgstr ""
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:917
523+#: qml/Panel/Indicators/MenuItemFactory.qml:942
524msgid "Paused, tap to resume"
524msgid "Paused, tap to resume"
525msgstr ""
525msgstr ""
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:919
527+#: qml/Panel/Indicators/MenuItemFactory.qml:944
528msgid "Canceled"
528msgid "Canceled"
529msgstr ""
529msgstr ""
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:921
531+#: qml/Panel/Indicators/MenuItemFactory.qml:946
532msgid "Finished"
532msgid "Finished"
533msgstr ""
533msgstr ""
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:923
535+#: qml/Panel/Indicators/MenuItemFactory.qml:948
536msgid "Failed, tap to retry"
536msgid "Failed, tap to retry"
537msgstr ""
537msgstr ""
538
538
@@ -552,7 +552,7 @@ msgctxt "Button: Call back on phone"
552msgid "Call back"
552msgid "Call back"
553msgstr ""
553msgstr ""
554
554
555−#: qml/Stages/SideStage.qml:76
555+#: qml/Stage/SideStage.qml:76
556msgid "Drag using 3 fingers any application from one window to the other"
556msgid "Drag using 3 fingers any application from one window to the other"
557msgstr ""
557msgstr ""
558
558
po/uz.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2015-07-04 16:03+0000\n"
11"PO-Revision-Date: 2015-07-04 16:03+0000\n"
12"Last-Translator: Learner <muzaffar.habibullayev@yandex.ru>\n"
12"Last-Translator: Learner <muzaffar.habibullayev@yandex.ru>\n"
13"Language-Team: Uzbek <uz@li.org>\n"
13"Language-Team: Uzbek <uz@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:55+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -477,62 +477,62 @@ msgstr ""
477msgid "Conference"
477msgid "Conference"
478msgstr ""
478msgstr ""
479
479
480−#: qml/Panel/Indicators/MenuItemFactory.qml:762
480+#: qml/Panel/Indicators/MenuItemFactory.qml:788
481msgid "Nothing is playing"
481msgid "Nothing is playing"
482msgstr ""
482msgstr ""
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:891
484+#: qml/Panel/Indicators/MenuItemFactory.qml:916
485#, qt-format
485#, qt-format
486msgid "%1 hour"
486msgid "%1 hour"
487msgid_plural "%1 hours"
487msgid_plural "%1 hours"
488msgstr[0] ""
488msgstr[0] ""
489msgstr[1] ""
489msgstr[1] ""
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:895
491+#: qml/Panel/Indicators/MenuItemFactory.qml:920
492#, qt-format
492#, qt-format
493msgid "%1 minute"
493msgid "%1 minute"
494msgid_plural "%1 minutes"
494msgid_plural "%1 minutes"
495msgstr[0] ""
495msgstr[0] ""
496msgstr[1] ""
496msgstr[1] ""
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:900
498+#: qml/Panel/Indicators/MenuItemFactory.qml:925
499#, qt-format
499#, qt-format
500msgid "%1 second"
500msgid "%1 second"
501msgid_plural "%1 seconds"
501msgid_plural "%1 seconds"
502msgstr[0] ""
502msgstr[0] ""
503msgstr[1] ""
503msgstr[1] ""
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:903
505+#: qml/Panel/Indicators/MenuItemFactory.qml:928
506msgid "0 seconds"
506msgid "0 seconds"
507msgstr ""
507msgstr ""
508
508
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
510−#: qml/Panel/Indicators/MenuItemFactory.qml:905
510+#: qml/Panel/Indicators/MenuItemFactory.qml:930
511#, qt-format
511#, qt-format
512msgid "%1 remaining"
512msgid "%1 remaining"
513msgstr ""
513msgstr ""
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:911
515+#: qml/Panel/Indicators/MenuItemFactory.qml:936
516msgid "In queue…"
516msgid "In queue…"
517msgstr ""
517msgstr ""
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:915
519+#: qml/Panel/Indicators/MenuItemFactory.qml:940
520msgid "Downloading"
520msgid "Downloading"
521msgstr ""
521msgstr ""
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:917
523+#: qml/Panel/Indicators/MenuItemFactory.qml:942
524msgid "Paused, tap to resume"
524msgid "Paused, tap to resume"
525msgstr ""
525msgstr ""
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:919
527+#: qml/Panel/Indicators/MenuItemFactory.qml:944
528msgid "Canceled"
528msgid "Canceled"
529msgstr ""
529msgstr ""
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:921
531+#: qml/Panel/Indicators/MenuItemFactory.qml:946
532msgid "Finished"
532msgid "Finished"
533msgstr ""
533msgstr ""
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:923
535+#: qml/Panel/Indicators/MenuItemFactory.qml:948
536msgid "Failed, tap to retry"
536msgid "Failed, tap to retry"
537msgstr ""
537msgstr ""
538
538
@@ -552,7 +552,7 @@ msgctxt "Button: Call back on phone"
552msgid "Call back"
552msgid "Call back"
553msgstr ""
553msgstr ""
554
554
555−#: qml/Stages/SideStage.qml:76
555+#: qml/Stage/SideStage.qml:76
556msgid "Drag using 3 fingers any application from one window to the other"
556msgid "Drag using 3 fingers any application from one window to the other"
557msgstr ""
557msgstr ""
558
558
po/vi.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2014-01-15 01:19+0000\n"
11"PO-Revision-Date: 2014-01-15 01:19+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Vietnamese <vi@li.org>\n"
13"Language-Team: Vietnamese <vi@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:55+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -477,62 +477,62 @@ msgstr ""
477msgid "Conference"
477msgid "Conference"
478msgstr ""
478msgstr ""
479
479
480−#: qml/Panel/Indicators/MenuItemFactory.qml:762
480+#: qml/Panel/Indicators/MenuItemFactory.qml:788
481msgid "Nothing is playing"
481msgid "Nothing is playing"
482msgstr ""
482msgstr ""
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:891
484+#: qml/Panel/Indicators/MenuItemFactory.qml:916
485#, qt-format
485#, qt-format
486msgid "%1 hour"
486msgid "%1 hour"
487msgid_plural "%1 hours"
487msgid_plural "%1 hours"
488msgstr[0] ""
488msgstr[0] ""
489msgstr[1] ""
489msgstr[1] ""
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:895
491+#: qml/Panel/Indicators/MenuItemFactory.qml:920
492#, qt-format
492#, qt-format
493msgid "%1 minute"
493msgid "%1 minute"
494msgid_plural "%1 minutes"
494msgid_plural "%1 minutes"
495msgstr[0] ""
495msgstr[0] ""
496msgstr[1] ""
496msgstr[1] ""
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:900
498+#: qml/Panel/Indicators/MenuItemFactory.qml:925
499#, qt-format
499#, qt-format
500msgid "%1 second"
500msgid "%1 second"
501msgid_plural "%1 seconds"
501msgid_plural "%1 seconds"
502msgstr[0] ""
502msgstr[0] ""
503msgstr[1] ""
503msgstr[1] ""
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:903
505+#: qml/Panel/Indicators/MenuItemFactory.qml:928
506msgid "0 seconds"
506msgid "0 seconds"
507msgstr ""
507msgstr ""
508
508
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
510−#: qml/Panel/Indicators/MenuItemFactory.qml:905
510+#: qml/Panel/Indicators/MenuItemFactory.qml:930
511#, qt-format
511#, qt-format
512msgid "%1 remaining"
512msgid "%1 remaining"
513msgstr ""
513msgstr ""
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:911
515+#: qml/Panel/Indicators/MenuItemFactory.qml:936
516msgid "In queue…"
516msgid "In queue…"
517msgstr ""
517msgstr ""
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:915
519+#: qml/Panel/Indicators/MenuItemFactory.qml:940
520msgid "Downloading"
520msgid "Downloading"
521msgstr ""
521msgstr ""
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:917
523+#: qml/Panel/Indicators/MenuItemFactory.qml:942
524msgid "Paused, tap to resume"
524msgid "Paused, tap to resume"
525msgstr ""
525msgstr ""
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:919
527+#: qml/Panel/Indicators/MenuItemFactory.qml:944
528msgid "Canceled"
528msgid "Canceled"
529msgstr ""
529msgstr ""
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:921
531+#: qml/Panel/Indicators/MenuItemFactory.qml:946
532msgid "Finished"
532msgid "Finished"
533msgstr ""
533msgstr ""
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:923
535+#: qml/Panel/Indicators/MenuItemFactory.qml:948
536msgid "Failed, tap to retry"
536msgid "Failed, tap to retry"
537msgstr ""
537msgstr ""
538
538
@@ -552,7 +552,7 @@ msgctxt "Button: Call back on phone"
552msgid "Call back"
552msgid "Call back"
553msgstr ""
553msgstr ""
554
554
555−#: qml/Stages/SideStage.qml:76
555+#: qml/Stage/SideStage.qml:76
556msgid "Drag using 3 fingers any application from one window to the other"
556msgid "Drag using 3 fingers any application from one window to the other"
557msgstr ""
557msgstr ""
558
558
po/wo.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2015-10-29 11:16+0000\n"
11"PO-Revision-Date: 2015-10-29 11:16+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Wolof <wo@li.org>\n"
13"Language-Team: Wolof <wo@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:55+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -477,62 +477,62 @@ msgstr "Bësal ngir dello ci woote bi..."
477msgid "Conference"
477msgid "Conference"
478msgstr "Wax ci kaw"
478msgstr "Wax ci kaw"
479
479
480−#: qml/Panel/Indicators/MenuItemFactory.qml:762
480+#: qml/Panel/Indicators/MenuItemFactory.qml:788
481msgid "Nothing is playing"
481msgid "Nothing is playing"
482msgstr "Dara dawul"
482msgstr "Dara dawul"
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:891
484+#: qml/Panel/Indicators/MenuItemFactory.qml:916
485#, qt-format
485#, qt-format
486msgid "%1 hour"
486msgid "%1 hour"
487msgid_plural "%1 hours"
487msgid_plural "%1 hours"
488msgstr[0] "%1 waxtu"
488msgstr[0] "%1 waxtu"
489msgstr[1] "%1 waxtu"
489msgstr[1] "%1 waxtu"
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:895
491+#: qml/Panel/Indicators/MenuItemFactory.qml:920
492#, qt-format
492#, qt-format
493msgid "%1 minute"
493msgid "%1 minute"
494msgid_plural "%1 minutes"
494msgid_plural "%1 minutes"
495msgstr[0] "%1 simili"
495msgstr[0] "%1 simili"
496msgstr[1] "%1 simili"
496msgstr[1] "%1 simili"
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:900
498+#: qml/Panel/Indicators/MenuItemFactory.qml:925
499#, qt-format
499#, qt-format
500msgid "%1 second"
500msgid "%1 second"
501msgid_plural "%1 seconds"
501msgid_plural "%1 seconds"
502msgstr[0] "%1 saa"
502msgstr[0] "%1 saa"
503msgstr[1] "%1 saa"
503msgstr[1] "%1 saa"
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:903
505+#: qml/Panel/Indicators/MenuItemFactory.qml:928
506msgid "0 seconds"
506msgid "0 seconds"
507msgstr "0 saa"
507msgstr "0 saa"
508
508
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
510−#: qml/Panel/Indicators/MenuItemFactory.qml:905
510+#: qml/Panel/Indicators/MenuItemFactory.qml:930
511#, qt-format
511#, qt-format
512msgid "%1 remaining"
512msgid "%1 remaining"
513msgstr "%1 moo des"
513msgstr "%1 moo des"
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:911
515+#: qml/Panel/Indicators/MenuItemFactory.qml:936
516msgid "In queue…"
516msgid "In queue…"
517msgstr "ci xaaruwaay bi..."
517msgstr "ci xaaruwaay bi..."
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:915
519+#: qml/Panel/Indicators/MenuItemFactory.qml:940
520msgid "Downloading"
520msgid "Downloading"
521msgstr "Yebbi"
521msgstr "Yebbi"
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:917
523+#: qml/Panel/Indicators/MenuItemFactory.qml:942
524msgid "Paused, tap to resume"
524msgid "Paused, tap to resume"
525msgstr "Dafa taxaw, bësal ngir tàmbaliwaat"
525msgstr "Dafa taxaw, bësal ngir tàmbaliwaat"
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:919
527+#: qml/Panel/Indicators/MenuItemFactory.qml:944
528msgid "Canceled"
528msgid "Canceled"
529msgstr "Neenalees"
529msgstr "Neenalees"
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:921
531+#: qml/Panel/Indicators/MenuItemFactory.qml:946
532msgid "Finished"
532msgid "Finished"
533msgstr "Jeexalees"
533msgstr "Jeexalees"
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:923
535+#: qml/Panel/Indicators/MenuItemFactory.qml:948
536msgid "Failed, tap to retry"
536msgid "Failed, tap to retry"
537msgstr "Antoodi, bësal ngir jéemaat"
537msgstr "Antoodi, bësal ngir jéemaat"
538
538
@@ -552,7 +552,7 @@ msgctxt "Button: Call back on phone"
552msgid "Call back"
552msgid "Call back"
553msgstr ""
553msgstr ""
554
554
555−#: qml/Stages/SideStage.qml:76
555+#: qml/Stage/SideStage.qml:76
556msgid "Drag using 3 fingers any application from one window to the other"
556msgid "Drag using 3 fingers any application from one window to the other"
557msgstr ""
557msgstr ""
558
558
po/xh.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2013-09-28 13:20+0000\n"
11"PO-Revision-Date: 2013-09-28 13:20+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Xhosa <xh@li.org>\n"
13"Language-Team: Xhosa <xh@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:55+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -477,62 +477,62 @@ msgstr ""
477msgid "Conference"
477msgid "Conference"
478msgstr ""
478msgstr ""
479
479
480−#: qml/Panel/Indicators/MenuItemFactory.qml:762
480+#: qml/Panel/Indicators/MenuItemFactory.qml:788
481msgid "Nothing is playing"
481msgid "Nothing is playing"
482msgstr ""
482msgstr ""
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:891
484+#: qml/Panel/Indicators/MenuItemFactory.qml:916
485#, qt-format
485#, qt-format
486msgid "%1 hour"
486msgid "%1 hour"
487msgid_plural "%1 hours"
487msgid_plural "%1 hours"
488msgstr[0] ""
488msgstr[0] ""
489msgstr[1] ""
489msgstr[1] ""
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:895
491+#: qml/Panel/Indicators/MenuItemFactory.qml:920
492#, qt-format
492#, qt-format
493msgid "%1 minute"
493msgid "%1 minute"
494msgid_plural "%1 minutes"
494msgid_plural "%1 minutes"
495msgstr[0] ""
495msgstr[0] ""
496msgstr[1] ""
496msgstr[1] ""
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:900
498+#: qml/Panel/Indicators/MenuItemFactory.qml:925
499#, qt-format
499#, qt-format
500msgid "%1 second"
500msgid "%1 second"
501msgid_plural "%1 seconds"
501msgid_plural "%1 seconds"
502msgstr[0] ""
502msgstr[0] ""
503msgstr[1] ""
503msgstr[1] ""
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:903
505+#: qml/Panel/Indicators/MenuItemFactory.qml:928
506msgid "0 seconds"
506msgid "0 seconds"
507msgstr ""
507msgstr ""
508
508
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
510−#: qml/Panel/Indicators/MenuItemFactory.qml:905
510+#: qml/Panel/Indicators/MenuItemFactory.qml:930
511#, qt-format
511#, qt-format
512msgid "%1 remaining"
512msgid "%1 remaining"
513msgstr ""
513msgstr ""
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:911
515+#: qml/Panel/Indicators/MenuItemFactory.qml:936
516msgid "In queue…"
516msgid "In queue…"
517msgstr ""
517msgstr ""
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:915
519+#: qml/Panel/Indicators/MenuItemFactory.qml:940
520msgid "Downloading"
520msgid "Downloading"
521msgstr ""
521msgstr ""
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:917
523+#: qml/Panel/Indicators/MenuItemFactory.qml:942
524msgid "Paused, tap to resume"
524msgid "Paused, tap to resume"
525msgstr ""
525msgstr ""
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:919
527+#: qml/Panel/Indicators/MenuItemFactory.qml:944
528msgid "Canceled"
528msgid "Canceled"
529msgstr ""
529msgstr ""
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:921
531+#: qml/Panel/Indicators/MenuItemFactory.qml:946
532msgid "Finished"
532msgid "Finished"
533msgstr ""
533msgstr ""
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:923
535+#: qml/Panel/Indicators/MenuItemFactory.qml:948
536msgid "Failed, tap to retry"
536msgid "Failed, tap to retry"
537msgstr ""
537msgstr ""
538
538
@@ -552,7 +552,7 @@ msgctxt "Button: Call back on phone"
552msgid "Call back"
552msgid "Call back"
553msgstr ""
553msgstr ""
554
554
555−#: qml/Stages/SideStage.qml:76
555+#: qml/Stage/SideStage.qml:76
556msgid "Drag using 3 fingers any application from one window to the other"
556msgid "Drag using 3 fingers any application from one window to the other"
557msgstr ""
557msgstr ""
558
558
po/zh_CN.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-04-13 06:27+0000\n"
11"PO-Revision-Date: 2016-04-13 06:27+0000\n"
12"Last-Translator: YunQiang Su <wzssyqa@gmail.com>\n"
12"Last-Translator: YunQiang Su <wzssyqa@gmail.com>\n"
13"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
13"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:55+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -478,59 +478,59 @@ msgstr "点击回到通话..."
478msgid "Conference"
478msgid "Conference"
479msgstr "会议"
479msgstr "会议"
480
480
481−#: qml/Panel/Indicators/MenuItemFactory.qml:762
481+#: qml/Panel/Indicators/MenuItemFactory.qml:788
482msgid "Nothing is playing"
482msgid "Nothing is playing"
483msgstr "无正在播放的项目"
483msgstr "无正在播放的项目"
484
484
485−#: qml/Panel/Indicators/MenuItemFactory.qml:891
485+#: qml/Panel/Indicators/MenuItemFactory.qml:916
486#, qt-format
486#, qt-format
487msgid "%1 hour"
487msgid "%1 hour"
488msgid_plural "%1 hours"
488msgid_plural "%1 hours"
489msgstr[0] "%1 小时"
489msgstr[0] "%1 小时"
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:895
491+#: qml/Panel/Indicators/MenuItemFactory.qml:920
492#, qt-format
492#, qt-format
493msgid "%1 minute"
493msgid "%1 minute"
494msgid_plural "%1 minutes"
494msgid_plural "%1 minutes"
495msgstr[0] "%1 分钟"
495msgstr[0] "%1 分钟"
496
496
497−#: qml/Panel/Indicators/MenuItemFactory.qml:900
497+#: qml/Panel/Indicators/MenuItemFactory.qml:925
498#, qt-format
498#, qt-format
499msgid "%1 second"
499msgid "%1 second"
500msgid_plural "%1 seconds"
500msgid_plural "%1 seconds"
501msgstr[0] "%1 秒"
501msgstr[0] "%1 秒"
502
502
503−#: qml/Panel/Indicators/MenuItemFactory.qml:903
503+#: qml/Panel/Indicators/MenuItemFactory.qml:928
504msgid "0 seconds"
504msgid "0 seconds"
505msgstr "0 秒"
505msgstr "0 秒"
506
506
507#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
507#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
508−#: qml/Panel/Indicators/MenuItemFactory.qml:905
508+#: qml/Panel/Indicators/MenuItemFactory.qml:930
509#, qt-format
509#, qt-format
510msgid "%1 remaining"
510msgid "%1 remaining"
511msgstr "剩余 %1"
511msgstr "剩余 %1"
512
512
513−#: qml/Panel/Indicators/MenuItemFactory.qml:911
513+#: qml/Panel/Indicators/MenuItemFactory.qml:936
514msgid "In queue…"
514msgid "In queue…"
515msgstr "排队中..."
515msgstr "排队中..."
516
516
517−#: qml/Panel/Indicators/MenuItemFactory.qml:915
517+#: qml/Panel/Indicators/MenuItemFactory.qml:940
518msgid "Downloading"
518msgid "Downloading"
519msgstr "正在下载"
519msgstr "正在下载"
520
520
521−#: qml/Panel/Indicators/MenuItemFactory.qml:917
521+#: qml/Panel/Indicators/MenuItemFactory.qml:942
522msgid "Paused, tap to resume"
522msgid "Paused, tap to resume"
523msgstr "已暂停,点击继续"
523msgstr "已暂停,点击继续"
524
524
525−#: qml/Panel/Indicators/MenuItemFactory.qml:919
525+#: qml/Panel/Indicators/MenuItemFactory.qml:944
526msgid "Canceled"
526msgid "Canceled"
527msgstr "已取消"
527msgstr "已取消"
528
528
529−#: qml/Panel/Indicators/MenuItemFactory.qml:921
529+#: qml/Panel/Indicators/MenuItemFactory.qml:946
530msgid "Finished"
530msgid "Finished"
531msgstr "已完成"
531msgstr "已完成"
532
532
533−#: qml/Panel/Indicators/MenuItemFactory.qml:923
533+#: qml/Panel/Indicators/MenuItemFactory.qml:948
534msgid "Failed, tap to retry"
534msgid "Failed, tap to retry"
535msgstr "下载失败,请点击重试"
535msgstr "下载失败,请点击重试"
536
536
@@ -550,7 +550,7 @@ msgctxt "Button: Call back on phone"
550msgid "Call back"
550msgid "Call back"
551msgstr "回电"
551msgstr "回电"
552
552
553−#: qml/Stages/SideStage.qml:76
553+#: qml/Stage/SideStage.qml:76
554msgid "Drag using 3 fingers any application from one window to the other"
554msgid "Drag using 3 fingers any application from one window to the other"
555msgstr "使用三指将任何应用从一个窗口拖拽至另一个"
555msgstr "使用三指将任何应用从一个窗口拖拽至另一个"
556
556
po/zh_HK.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2014-08-10 11:45+0000\n"
11"PO-Revision-Date: 2014-08-10 11:45+0000\n"
12"Last-Translator: Daniel Cheung <daniel.2345@hotmail.com>\n"
12"Last-Translator: Daniel Cheung <daniel.2345@hotmail.com>\n"
13"Language-Team: Chinese (Hong Kong) <zh_HK@li.org>\n"
13"Language-Team: Chinese (Hong Kong) <zh_HK@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:55+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20
20
21#: plugins/LightDM/Greeter.cpp:123
21#: plugins/LightDM/Greeter.cpp:123
22msgid "Password: "
22msgid "Password: "
@@ -477,62 +477,62 @@ msgstr "輕觸可返回通話…"
477msgid "Conference"
477msgid "Conference"
478msgstr "會議"
478msgstr "會議"
479
479
480−#: qml/Panel/Indicators/MenuItemFactory.qml:762
480+#: qml/Panel/Indicators/MenuItemFactory.qml:788
481msgid "Nothing is playing"
481msgid "Nothing is playing"
482msgstr ""
482msgstr ""
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:891
484+#: qml/Panel/Indicators/MenuItemFactory.qml:916
485#, qt-format
485#, qt-format
486msgid "%1 hour"
486msgid "%1 hour"
487msgid_plural "%1 hours"
487msgid_plural "%1 hours"
488msgstr[0] ""
488msgstr[0] ""
489msgstr[1] ""
489msgstr[1] ""
490
490
491−#: qml/Panel/Indicators/MenuItemFactory.qml:895
491+#: qml/Panel/Indicators/MenuItemFactory.qml:920
492#, qt-format
492#, qt-format
493msgid "%1 minute"
493msgid "%1 minute"
494msgid_plural "%1 minutes"
494msgid_plural "%1 minutes"
495msgstr[0] ""
495msgstr[0] ""
496msgstr[1] ""
496msgstr[1] ""
497
497
498−#: qml/Panel/Indicators/MenuItemFactory.qml:900
498+#: qml/Panel/Indicators/MenuItemFactory.qml:925
499#, qt-format
499#, qt-format
500msgid "%1 second"
500msgid "%1 second"
501msgid_plural "%1 seconds"
501msgid_plural "%1 seconds"
502msgstr[0] ""
502msgstr[0] ""
503msgstr[1] ""
503msgstr[1] ""
504
504
505−#: qml/Panel/Indicators/MenuItemFactory.qml:903
505+#: qml/Panel/Indicators/MenuItemFactory.qml:928
506msgid "0 seconds"
506msgid "0 seconds"
507msgstr ""
507msgstr ""
508
508
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
509#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
510−#: qml/Panel/Indicators/MenuItemFactory.qml:905
510+#: qml/Panel/Indicators/MenuItemFactory.qml:930
511#, qt-format
511#, qt-format
512msgid "%1 remaining"
512msgid "%1 remaining"
513msgstr ""
513msgstr ""
514
514
515−#: qml/Panel/Indicators/MenuItemFactory.qml:911
515+#: qml/Panel/Indicators/MenuItemFactory.qml:936
516msgid "In queue…"
516msgid "In queue…"
517msgstr "佇列中…"
517msgstr "佇列中…"
518
518
519−#: qml/Panel/Indicators/MenuItemFactory.qml:915
519+#: qml/Panel/Indicators/MenuItemFactory.qml:940
520msgid "Downloading"
520msgid "Downloading"
521msgstr "下載中"
521msgstr "下載中"
522
522
523−#: qml/Panel/Indicators/MenuItemFactory.qml:917
523+#: qml/Panel/Indicators/MenuItemFactory.qml:942
524msgid "Paused, tap to resume"
524msgid "Paused, tap to resume"
525msgstr "已暫停,輕觸以繼續"
525msgstr "已暫停,輕觸以繼續"
526
526
527−#: qml/Panel/Indicators/MenuItemFactory.qml:919
527+#: qml/Panel/Indicators/MenuItemFactory.qml:944
528msgid "Canceled"
528msgid "Canceled"
529msgstr "已取消"
529msgstr "已取消"
530
530
531−#: qml/Panel/Indicators/MenuItemFactory.qml:921
531+#: qml/Panel/Indicators/MenuItemFactory.qml:946
532msgid "Finished"
532msgid "Finished"
533msgstr "已完成"
533msgstr "已完成"
534
534
535−#: qml/Panel/Indicators/MenuItemFactory.qml:923
535+#: qml/Panel/Indicators/MenuItemFactory.qml:948
536msgid "Failed, tap to retry"
536msgid "Failed, tap to retry"
537msgstr "失敗,輕觸以重試"
537msgstr "失敗,輕觸以重試"
538
538
@@ -552,7 +552,7 @@ msgctxt "Button: Call back on phone"
552msgid "Call back"
552msgid "Call back"
553msgstr ""
553msgstr ""
554
554
555−#: qml/Stages/SideStage.qml:76
555+#: qml/Stage/SideStage.qml:76
556msgid "Drag using 3 fingers any application from one window to the other"
556msgid "Drag using 3 fingers any application from one window to the other"
557msgstr ""
557msgstr ""
558
558
po/zh_TW.po+16−16
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-09-22 07:46+0000\n"
10+"POT-Creation-Date: 2016-10-24 11:37+0000\n"
11"PO-Revision-Date: 2016-02-24 04:40+0000\n"
11"PO-Revision-Date: 2016-02-24 04:40+0000\n"
12"Last-Translator: Po-Hsu Lin <po-hsu.lin@canonical.com>\n"
12"Last-Translator: Po-Hsu Lin <po-hsu.lin@canonical.com>\n"
13"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
13"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-09-27 07:05+0000\n"
18+"X-Launchpad-Export-Date: 2016-10-28 05:55+0000\n"
19−"X-Generator: Launchpad (build 18204)\n"
19+"X-Generator: Launchpad (build 18246)\n"
20"Language: zh_TW\n"
20"Language: zh_TW\n"
21
21
22#: plugins/LightDM/Greeter.cpp:123
22#: plugins/LightDM/Greeter.cpp:123
@@ -477,59 +477,59 @@ msgstr "點按可返回通話…"
477msgid "Conference"
477msgid "Conference"
478msgstr "會議"
478msgstr "會議"
479
479
480−#: qml/Panel/Indicators/MenuItemFactory.qml:762
480+#: qml/Panel/Indicators/MenuItemFactory.qml:788
481msgid "Nothing is playing"
481msgid "Nothing is playing"
482msgstr "無影音播放中"
482msgstr "無影音播放中"
483
483
484−#: qml/Panel/Indicators/MenuItemFactory.qml:891
484+#: qml/Panel/Indicators/MenuItemFactory.qml:916
485#, qt-format
485#, qt-format
486msgid "%1 hour"
486msgid "%1 hour"
487msgid_plural "%1 hours"
487msgid_plural "%1 hours"
488msgstr[0] "%1 小時"
488msgstr[0] "%1 小時"
489
489
490−#: qml/Panel/Indicators/MenuItemFactory.qml:895
490+#: qml/Panel/Indicators/MenuItemFactory.qml:920
491#, qt-format
491#, qt-format
492msgid "%1 minute"
492msgid "%1 minute"
493msgid_plural "%1 minutes"
493msgid_plural "%1 minutes"
494msgstr[0] "%1 分鐘"
494msgstr[0] "%1 分鐘"
495
495
496−#: qml/Panel/Indicators/MenuItemFactory.qml:900
496+#: qml/Panel/Indicators/MenuItemFactory.qml:925
497#, qt-format
497#, qt-format
498msgid "%1 second"
498msgid "%1 second"
499msgid_plural "%1 seconds"
499msgid_plural "%1 seconds"
500msgstr[0] "%1 秒鐘"
500msgstr[0] "%1 秒鐘"
501
501
502−#: qml/Panel/Indicators/MenuItemFactory.qml:903
502+#: qml/Panel/Indicators/MenuItemFactory.qml:928
503msgid "0 seconds"
503msgid "0 seconds"
504msgstr "0 秒鐘"
504msgstr "0 秒鐘"
505
505
506#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
506#. Translators: String like "1 hour, 2 minutes, 3 seconds remaining"
507−#: qml/Panel/Indicators/MenuItemFactory.qml:905
507+#: qml/Panel/Indicators/MenuItemFactory.qml:930
508#, qt-format
508#, qt-format
509msgid "%1 remaining"
509msgid "%1 remaining"
510msgstr "還剩下 %1"
510msgstr "還剩下 %1"
511
511
512−#: qml/Panel/Indicators/MenuItemFactory.qml:911
512+#: qml/Panel/Indicators/MenuItemFactory.qml:936
513msgid "In queue…"
513msgid "In queue…"
514msgstr "佇列中…"
514msgstr "佇列中…"
515
515
516−#: qml/Panel/Indicators/MenuItemFactory.qml:915
516+#: qml/Panel/Indicators/MenuItemFactory.qml:940
517msgid "Downloading"
517msgid "Downloading"
518msgstr "下載中"
518msgstr "下載中"
519
519
520−#: qml/Panel/Indicators/MenuItemFactory.qml:917
520+#: qml/Panel/Indicators/MenuItemFactory.qml:942
521msgid "Paused, tap to resume"
521msgid "Paused, tap to resume"
522msgstr "已暫停,點按可繼續"
522msgstr "已暫停,點按可繼續"
523
523
524−#: qml/Panel/Indicators/MenuItemFactory.qml:919
524+#: qml/Panel/Indicators/MenuItemFactory.qml:944
525msgid "Canceled"
525msgid "Canceled"
526msgstr "已取消"
526msgstr "已取消"
527
527
528−#: qml/Panel/Indicators/MenuItemFactory.qml:921
528+#: qml/Panel/Indicators/MenuItemFactory.qml:946
529msgid "Finished"
529msgid "Finished"
530msgstr "已完成"
530msgstr "已完成"
531
531
532−#: qml/Panel/Indicators/MenuItemFactory.qml:923
532+#: qml/Panel/Indicators/MenuItemFactory.qml:948
533msgid "Failed, tap to retry"
533msgid "Failed, tap to retry"
534msgstr "失敗,點按可重試"
534msgstr "失敗,點按可重試"
535
535
@@ -549,7 +549,7 @@ msgctxt "Button: Call back on phone"
549msgid "Call back"
549msgid "Call back"
550msgstr "回撥"
550msgstr "回撥"
551
551
552−#: qml/Stages/SideStage.qml:76
552+#: qml/Stage/SideStage.qml:76
553msgid "Drag using 3 fingers any application from one window to the other"
553msgid "Drag using 3 fingers any application from one window to the other"
554msgstr ""
554msgstr ""
555
555
qml/CMakeLists.txt+1−1
@@ -12,7 +12,7 @@ set(QML_DIRS
12 Launcher
12 Launcher
13 Notifications
13 Notifications
14 Panel
14 Panel
15− Stages
15+ Stage
16 Rotation
16 Rotation
17 Tutorial
17 Tutorial
18 Wizard
18 Wizard
qml/Components/EdgeBarrier.qml+2
@@ -29,6 +29,8 @@ Item {
29 // Supported values are: Qt.LeftEdge, Qt.RightEdge
29 // Supported values are: Qt.LeftEdge, Qt.RightEdge
30 property int edge: Qt.LeftEdge
30 property int edge: Qt.LeftEdge
31
31
32+ readonly property alias progress: controller.progress
33+
32 property Item target: parent
34 property Item target: parent
33 function push(amount) { controller.push(amount); }
35 function push(amount) { controller.push(amount); }
34 signal passed()
36 signal passed()
qml/Components/FloatingFlickable.qml+3
@@ -35,6 +35,9 @@ Item {
35 property alias contentX: flickable.contentX
35 property alias contentX: flickable.contentX
36 property alias contentY: flickable.contentY
36 property alias contentY: flickable.contentY
37 property alias direction: swipeArea.direction
37 property alias direction: swipeArea.direction
38+ property alias leftMargin: flickable.leftMargin
39+ property alias rightMargin: flickable.rightMargin
40+ property alias dragging: flickable.dragging
38
41
39 MouseEventGenerator {
42 MouseEventGenerator {
40 id: mouseEventGenerator
43 id: mouseEventGenerator
qml/Components/InputMethod.qml+1−1
@@ -21,7 +21,7 @@ import Ubuntu.Gestures 0.1
21Item {
21Item {
22 id: root
22 id: root
23
23
24− readonly property rect visibleRect: surfaceItem.surface ? surfaceItem.surface.inputBounds : Qt.rect(0, 0, 0, 0)
24+ readonly property rect visibleRect: surfaceItem.surface && visible ? surfaceItem.surface.inputBounds : Qt.rect(0, 0, 0, 0)
25
25
26 MirSurfaceItem {
26 MirSurfaceItem {
27 id: surfaceItem
27 id: surfaceItem
qml/Components/UbuntuShapeForItem.qmldeleted−47
@@ -1,47 +0,0 @@
1−/*
2− * Copyright (C) 2012 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.4
18−import Ubuntu.Components 1.3
19−
20−/* FIXME: This component is duplicating the UbuntuShape from the SDK, but shapes more
21− * general (Item-based) components. This ability should be incorporated into the SDK's
22− * UbuntuShape so this file can be removed.
23− * Bug: https://bugs.launchpad.net/tavastia/+bug/1089595
24− */
25−
26−Item {
27− id: root
28−
29− property alias radius: shape.radius
30− property alias image: source.sourceItem
31− property alias aspect: shape.aspect
32−
33− ShaderEffectSource {
34− id: source
35− anchors.centerIn: parent // Placed under shape, so it's hidden
36− width: 1
37− height: 1
38− hideSource: true
39− }
40−
41− Shape {
42− id: shape
43− image: source
44−
45− anchors.fill: parent
46− }
47−}
qml/Dash/Previews/PreviewProgress.qml+1−2
@@ -37,8 +37,7 @@ PreviewWidget {
37 anchors.right: parent.right
37 anchors.right: parent.right
38 value: 0
38 value: 0
39 maximumValue: 100
39 maximumValue: 100
40− implicitHeight: units.gu(4)
40+ height: units.gu(4)
41− height: parent.height
42 width: (root.width - units.gu(1)) / 2
41 width: (root.width - units.gu(1)) / 2
43
42
44 property var source: widgetData["source"]
43 property var source: widgetData["source"]
qml/Greeter/LoginAreaContainer.qml+1−1
@@ -26,7 +26,7 @@ Item {
26 rightMargin: -units.gu(1.5)
26 rightMargin: -units.gu(1.5)
27 bottomMargin: -units.gu(1.5)
27 bottomMargin: -units.gu(1.5)
28 }
28 }
29− source: "../Stages/graphics/dropshadow2gu.sci"
29+ source: "../graphics/dropshadow2gu.sci"
30 opacity: 0.35
30 opacity: 0.35
31 }
31 }
32
32
qml/Launcher/LauncherPanel.qml+5−2
@@ -632,7 +632,7 @@ Rectangle {
632 }
632 }
633 }
633 }
634
634
635− UbuntuShapeForItem {
635+ UbuntuShape {
636 id: quickListShape
636 id: quickListShape
637 objectName: "quickListShape"
637 objectName: "quickListShape"
638 anchors.fill: quickList
638 anchors.fill: quickList
@@ -645,7 +645,10 @@ Rectangle {
645 UbuntuNumberAnimation {}
645 UbuntuNumberAnimation {}
646 }
646 }
647
647
648+ source: ShaderEffectSource {
648− image: quickList
649+ sourceItem: quickList
650+ hideSource: true
651+ }
649
652
650 Image {
653 Image {
651 anchors {
654 anchors {
qml/Notifications/Notification.qml+1−1
@@ -143,7 +143,7 @@ StyledItem {
143 fill: contents
143 fill: contents
144 margins: shapedBack.visible ? -units.gu(1) : -units.gu(1.5)
144 margins: shapedBack.visible ? -units.gu(1) : -units.gu(1.5)
145 }
145 }
146− source: "../Stages/graphics/dropshadow2gu.sci"
146+ source: "../graphics/dropshadow2gu.sci"
147 opacity: notification.opacity * 0.5
147 opacity: notification.opacity * 0.5
148 enabled: !fullscreen
148 enabled: !fullscreen
149 }
149 }
qml/Panel/Indicators/MenuItemFactory.qml+98−146
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright 2013,2015 Canonical Ltd.
2+ * Copyright 2013-2016 Canonical Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License as published by
5 * it under the terms of the GNU Lesser General Public License as published by
@@ -31,7 +31,8 @@ Item {
31 property var rootModel: null
31 property var rootModel: null
32 property var menuModel: null
32 property var menuModel: null
33
33
34− property var _map: {
34+ property var _userMap: null
35+ readonly property var _typeToComponent: {
35 "default": {
36 "default": {
36 "unity.widgets.systemsettings.tablet.volumecontrol" : sliderMenu,
37 "unity.widgets.systemsettings.tablet.volumecontrol" : sliderMenu,
37 "unity.widgets.systemsettings.tablet.switch" : switchMenu,
38 "unity.widgets.systemsettings.tablet.switch" : switchMenu,
@@ -69,11 +70,62 @@ Item {
69 "indicator.guest-menu-item": Platform.isPC ? userMenuItem : null,
70 "indicator.guest-menu-item": Platform.isPC ? userMenuItem : null,
70 "com.canonical.indicator.switch": Math.min(Screen.width, Screen.height) > units.gu(60) ? switchMenu : null // Desktop mode switch
71 "com.canonical.indicator.switch": Math.min(Screen.width, Screen.height) > units.gu(60) ? switchMenu : null // Desktop mode switch
71 },
72 },
72− "indicator-messages" : {
73+ "indicator-messages": {
73− "com.canonical.indicator.button" : messagesButtonMenu
74+ "com.canonical.indicator.button": messagesButtonMenu
74 }
75 }
75 }
76 }
76
77
78+ readonly property var _action_filter_map: {
79+ "indicator-session": {
80+ "indicator.logout": Platform.isPC ? undefined : null,
81+ "indicator.suspend": Platform.isPC ? undefined : null,
82+ "indicator.hibernate": Platform.isPC ? undefined : null,
83+ "indicator.reboot": Platform.isPC ? undefined : null
84+ },
85+ "indicator-keyboard": {
86+ "indicator.map": null,
87+ "indicator.chart": null
88+ }
89+ }
90+
91+ function getComponentForIndicatorEntryType(indicator, type) {
92+ var component = undefined;
93+ var map = _userMap || _typeToComponent
94+ var indicatorComponents = map[indicator];
95+
96+ if (type === undefined || type === "") {
97+ return component
98+ }
99+
100+ if (indicatorComponents !== undefined) {
101+ component = indicatorComponents[type];
102+ }
103+
104+ if (component === undefined) {
105+ component = map["default"][type];
106+ }
107+
108+ if (component === undefined) {
109+ console.debug("Don't know how to make " + modelData.type + " for " + indicator);
110+ }
111+
112+ return component
113+ }
114+
115+ function getComponentForIndicatorEntryAction(indicator, action) {
116+ var component = undefined;
117+ var indicatorFilter = _action_filter_map[indicator]
118+
119+ if (action === undefined || action === "") {
120+ return component
121+ }
122+
123+ if (indicatorFilter !== undefined) {
124+ component = indicatorFilter[action];
125+ }
126+ return component
127+ }
128+
77 function getExtendedProperty(object, propertyName, defaultValue) {
129 function getExtendedProperty(object, propertyName, defaultValue) {
78 if (object && object.hasOwnProperty(propertyName)) {
130 if (object && object.hasOwnProperty(propertyName)) {
79 return object[propertyName];
131 return object[propertyName];
@@ -102,7 +154,6 @@ Item {
102 property var serverValue: getExtendedProperty(menuData, "actionState", undefined)
154 property var serverValue: getExtendedProperty(menuData, "actionState", undefined)
103
155
104 text: menuData && menuData.label || ""
156 text: menuData && menuData.label || ""
105− iconSource: menuData && menuData.icon || ""
106 minIcon: getExtendedProperty(extendedData, "minIcon", "")
157 minIcon: getExtendedProperty(extendedData, "minIcon", "")
107 maxIcon: getExtendedProperty(extendedData, "maxIcon", "")
158 maxIcon: getExtendedProperty(extendedData, "maxIcon", "")
108
159
@@ -182,29 +233,20 @@ Item {
182 Component {
233 Component {
183 id: messagesButtonMenu;
234 id: messagesButtonMenu;
184
235
185− Item {
236+ Menus.BaseLayoutMenu {
186 objectName: "messagesButtonMenu"
237 objectName: "messagesButtonMenu"
187 property QtObject menuData: null
238 property QtObject menuData: null
188 property var menuModel: menuFactory.menuModel
239 property var menuModel: menuFactory.menuModel
189 property int menuIndex: -1
240 property int menuIndex: -1
190
241
191− implicitHeight: units.gu(5)
242+ highlightWhenPressed: false
192 enabled: menuData && menuData.sensitive || false
243 enabled: menuData && menuData.sensitive || false
244+ text: menuData && menuData.label || ""
245+ title.color: theme.palette.selected.backgroundText
246+ title.horizontalAlignment: Text.AlignHCenter
247+ title.font.bold: true
193
248
194− Label {
195− id: buttonMenuLabel
196− text: menuData && menuData.label || ""
197− anchors.centerIn: parent
198− font.bold: true
199− }
200−
201− MouseArea {
202− anchors {
203− fill: buttonMenuLabel
204− margins: units.gu(-1)
205− }
206− onClicked: menuModel.activate(menuIndex);
249+ onClicked: menuModel.activate(menuIndex);
207− }
208 }
250 }
209 }
251 }
210
252
@@ -233,11 +275,6 @@ Item {
233 iconSource: menuData && menuData.icon || ""
275 iconSource: menuData && menuData.icon || ""
234 value : menuData && menuData.actionState || 0.0
276 value : menuData && menuData.actionState || 0.0
235 enabled: menuData && menuData.sensitive || false
277 enabled: menuData && menuData.sensitive || false
236− // FIXME: Because of this bug, setting it to the theme foreground color (white)
237− // currently doesn't work. Let's hack it to be "close enough"
238− // https://bugs.launchpad.net/ubuntu/+source/ubuntu-ui-toolkit/+bug/1555784
239− foregroundColor: "#fffffe"
240− highlightWhenPressed: false
241 }
278 }
242 }
279 }
243
280
@@ -257,52 +294,41 @@ Item {
257 onTriggered: {
294 onTriggered: {
258 menuModel.activate(menuIndex);
295 menuModel.activate(menuIndex);
259 }
296 }
260−
261− // FIXME : At the moment, the indicators aren't using
262− // com.canonical.indicators.link for settings menu. Need to fudge it.
263− property bool settingsMenu: menuData && menuData.action.indexOf("settings") > -1 || false
264− backColor: settingsMenu ? Qt.rgba(1,1,1,0.07) : "transparent"
265− component: settingsMenu ? buttonForSettings : undefined
266− Component {
267− id: buttonForSettings
268− Icon {
269− name: "settings"
270− height: units.gu(3)
271− width: height
272− color: theme.palette.normal.backgroundText
273− }
274− }
275 }
297 }
276 }
298 }
277
299
278 Component {
300 Component {
279 id: linkMenu;
301 id: linkMenu;
280
302
281− Menus.StandardMenu {
303+ Menus.BaseLayoutMenu {
282 objectName: "linkMenu"
304 objectName: "linkMenu"
283 property QtObject menuData: null
305 property QtObject menuData: null
284 property int menuIndex: -1
306 property int menuIndex: -1
285
307
286 text: menuData && menuData.label || ""
308 text: menuData && menuData.label || ""
287− iconSource: menuData && menuData.icon || ""
288 enabled: menuData && menuData.sensitive || false
309 enabled: menuData && menuData.sensitive || false
310+ backColor: Qt.rgba(1,1,1,0.07)
289 highlightWhenPressed: false
311 highlightWhenPressed: false
290
312
291 onTriggered: {
313 onTriggered: {
292 menuModel.activate(menuIndex);
314 menuModel.activate(menuIndex);
293 }
315 }
294
316
295− backColor: Qt.rgba(1,1,1,0.07)
296−
297− component: menuData.icon ? icon : undefined
298− Component {
299− id: icon
300− Icon {
317+ slots: Icon {
318+ source: {
319+ if (menuData) {
301− source: menuData.icon
320+ if (menuData.icon && menuData.icon != "") {
302− height: units.gu(3)
321+ return menuData.icon
303− width: height
322+ } else if (menuData.action.indexOf("settings") > -1) {
304− color: theme.palette.normal.backgroundText
323+ return "image://theme/settings"
324+ }
325+ }
326+ return ""
305 }
327 }
328+ height: units.gu(3)
329+ width: height
330+ color: theme.palette.normal.backgroundText
331+ SlotsLayout.position: SlotsLayout.Trailing
306 }
332 }
307 }
333 }
308 }
334 }
@@ -769,7 +795,6 @@ Item {
769 state: getExtendedProperty(actionState, "state", "")
795 state: getExtendedProperty(actionState, "state", "")
770 enabled: menuData && menuData.sensitive || false
796 enabled: menuData && menuData.sensitive || false
771 highlightWhenPressed: false
797 highlightWhenPressed: false
772− showDivider: false
773
798
774 onTriggered: {
799 onTriggered: {
775 model.activate(modelIndex);
800 model.activate(modelIndex);
@@ -972,116 +997,43 @@ Item {
972 menuModel.loadExtendedAttributes(menuIndex, {'x-canonical-extra-label': 'string'});
997 menuModel.loadExtendedAttributes(menuIndex, {'x-canonical-extra-label': 'string'});
973 }
998 }
974
999
975− component: Component {
976− Button {
1000+ slots: Button {
977− objectName: "buttonSectionMenuControl"
1001+ objectName: "buttonSectionMenuControl"
978− text: getExtendedProperty(extendedData, "xCanonicalExtraLabel", "")
1002+ text: getExtendedProperty(extendedData, "xCanonicalExtraLabel", "")
979
1003
980− onClicked: {
1004+ onClicked: {
981− menuModel.activate(menuIndex);
1005+ menuModel.activate(menuIndex);
982− }
983 }
1006 }
984 }
1007 }
985 }
1008 }
986 }
1009 }
987
1010
988− Component {
989− id: keymapMenu;
990−
991− // FIXME this should use a "radio button" menu, once we have it in the SDK
992− ListItems.Empty {
993− id: checkItem
994− objectName: "keymapMenu"
995− property QtObject menuData: null
996− property int menuIndex: -1
997− readonly property bool serverChecked: menuData && menuData.isToggled || false
998−
999− enabled: menuData && menuData.sensitive || false
1000− highlightWhenPressed: false
1001− __acceptEvents: !serverChecked
1002−
1003− CheckBox {
1004− id: checkbox
1005− __acceptEvents: !checkItem.serverChecked
1006− anchors {
1007− left: parent.left
1008− leftMargin: checkItem.__contentsMargins
1009− verticalCenter: parent.verticalCenter
1010− }
1011− }
1012−
1013− ServerPropertySynchroniser {
1014− objectName: "sync"
1015− syncTimeout: Utils.Constants.indicatorValueTimeout
1016−
1017− serverTarget: checkItem
1018− serverProperty: "serverChecked"
1019− userTarget: checkbox
1020− userProperty: "checked"
1021−
1022− onSyncTriggered: {
1023− menuModel.activate(checkItem.menuIndex);
1024− }
1025− }
1026−
1027− Label {
1028− id: label
1029− anchors {
1030− left: checkbox.right
1031− leftMargin: checkItem.__contentsMargins
1032− right: parent.right
1033− rightMargin: checkItem.__contentsMargins
1034− verticalCenter: parent.verticalCenter
1035− }
1036− elide: Text.ElideRight
1037− text: checkItem.menuData && checkItem.menuData.label || ""
1038− }
1039−
1040− onClicked: menuModel.activate(menuIndex);
1041− }
1042− }
1043−
1044 function load(modelData, context) {
1011 function load(modelData, context) {
1045− // tweak indicator-session items
1012+ if (context && context.indexOf("fake-") == 0) {
1046− if (context === "indicator-session") {
1013+ context = context.substring("fake-".length)
1047− if ((modelData.action === "indicator.logout" || modelData.action === "indicator.suspend" || modelData.action === "indicator.hibernate" ||
1048− modelData.action === "indicator.reboot")
1049− && !Platform.isPC) {
1050− return null; // logout, suspend and hibernate hidden on devices
1051− }
1052 }
1014 }
1053
1015
1054− // specialize for indicator-keyboard
1016+ var component = getComponentForIndicatorEntryAction(context, modelData.action)
1055− if (context === "indicator-keyboard") {
1017+ if (component !== undefined) {
1056− if (modelData.isRadio) {
1018+ return component
1057− return keymapMenu;
1058− } else if (modelData.action === "indicator.map" || modelData.action === "indicator.chart") {
1059− return null; // map and chart not available
1060− }
1061 }
1019 }
1062
1020
1063− if (modelData.type !== undefined && modelData.type !== "") {
1021+ component = getComponentForIndicatorEntryType(context, modelData.type)
1064− var component = undefined;
1065−
1066− var contextComponents = _map[context];
1067− if (contextComponents !== undefined) {
1068− component = contextComponents[modelData.type];
1069− }
1070−
1071− if (component === undefined) {
1072− component = _map["default"][modelData.type];
1073− }
1074− if (component !== undefined) {
1022+ if (component !== undefined) {
1075− return component;
1023+ return component;
1076− }
1077− console.debug("Don't know how to make " + modelData.type + " for " + context);
1078 }
1024 }
1025+
1079 if (modelData.isCheck || modelData.isRadio) {
1026 if (modelData.isCheck || modelData.isRadio) {
1080 return checkableMenu;
1027 return checkableMenu;
1081 }
1028 }
1082 if (modelData.isSeparator) {
1029 if (modelData.isSeparator) {
1083 return separatorMenu;
1030 return separatorMenu;
1084 }
1031 }
1032+ if (modelData.action !== undefined && modelData.action.indexOf("settings") > -1) {
1033+ // FIXME : At the moment, the indicators aren't using
1034+ // com.canonical.indicators.link for settings menu. Need to fudge it.
1035+ return linkMenu;
1036+ }
1085 return standardMenu;
1037 return standardMenu;
1086 }
1038 }
1087}
1039}
qml/Rotation/RotationStates.qml−6
@@ -121,12 +121,6 @@ StateGroup {
121 }
121 }
122 }
122 }
123
123
124− property var shellBeingResized: Binding {
125− target: root.shell
126− property: "beingResized"
127− value: d.transitioning
128− }
129−
130 readonly property int fullAnimation: 0
124 readonly property int fullAnimation: 0
131 readonly property int indicatorsBarAnimation: 1
125 readonly property int indicatorsBarAnimation: 1
132 readonly property int noAnimation: 2
126 readonly property int noAnimation: 2
qml/Shell.qml+62−165
@@ -35,7 +35,7 @@ import "Launcher"
35import "Panel"
35import "Panel"
36import "Components"
36import "Components"
37import "Notifications"
37import "Notifications"
38−import "Stages"
38+import "Stage"
39import "Tutorial"
39import "Tutorial"
40import "Wizard"
40import "Wizard"
41import Unity.Notifications 1.0 as NotificationBackend
41import Unity.Notifications 1.0 as NotificationBackend
@@ -58,24 +58,22 @@ StyledItem {
58 property real nativeWidth
58 property real nativeWidth
59 property real nativeHeight
59 property real nativeHeight
60 property alias indicatorAreaShowProgress: panel.indicatorAreaShowProgress
60 property alias indicatorAreaShowProgress: panel.indicatorAreaShowProgress
61− property bool beingResized
62 property string usageScenario: "phone" // supported values: "phone", "tablet" or "desktop"
61 property string usageScenario: "phone" // supported values: "phone", "tablet" or "desktop"
63 property string mode: "full-greeter"
62 property string mode: "full-greeter"
64 property alias oskEnabled: inputMethod.enabled
63 property alias oskEnabled: inputMethod.enabled
65 function updateFocusedAppOrientation() {
64 function updateFocusedAppOrientation() {
66− applicationsDisplayLoader.item.updateFocusedAppOrientation();
65+ stage.updateFocusedAppOrientation();
67 }
66 }
68 function updateFocusedAppOrientationAnimated() {
67 function updateFocusedAppOrientationAnimated() {
69− applicationsDisplayLoader.item.updateFocusedAppOrientationAnimated();
68+ stage.updateFocusedAppOrientationAnimated();
70 }
69 }
71 property bool hasMouse: false
70 property bool hasMouse: false
72
71
73 // to be read from outside
72 // to be read from outside
74− readonly property int mainAppWindowOrientationAngle:
73+ readonly property int mainAppWindowOrientationAngle: stage.mainAppWindowOrientationAngle
75− applicationsDisplayLoader.item ? applicationsDisplayLoader.item.mainAppWindowOrientationAngle : 0
76
74
77 readonly property bool orientationChangesEnabled: panel.indicators.fullyClosed
75 readonly property bool orientationChangesEnabled: panel.indicators.fullyClosed
78− && (applicationsDisplayLoader.item && applicationsDisplayLoader.item.orientationChangesEnabled)
76+ && stage.orientationChangesEnabled
79 && (!greeter || !greeter.animating)
77 && (!greeter || !greeter.animating)
80
78
81 readonly property bool showingGreeter: greeter && greeter.shown
79 readonly property bool showingGreeter: greeter && greeter.shown
@@ -89,19 +87,13 @@ StyledItem {
89 return Qt.PrimaryOrientation;
87 return Qt.PrimaryOrientation;
90 } else if (showingGreeter || notifications.topmostIsFullscreen) {
88 } else if (showingGreeter || notifications.topmostIsFullscreen) {
91 return Qt.PrimaryOrientation;
89 return Qt.PrimaryOrientation;
92− } else if (applicationsDisplayLoader.item) {
93− return shell.orientations.map(applicationsDisplayLoader.item.supportedOrientations);
94 } else {
90 } else {
95− // we just don't care
91+ return shell.orientations.map(stage.supportedOrientations);
96− return Qt.PortraitOrientation
97− | Qt.LandscapeOrientation
98− | Qt.InvertedPortraitOrientation
99− | Qt.InvertedLandscapeOrientation;
100 }
92 }
101 }
93 }
102
94
103− readonly property var mainApp:
95+ readonly property var mainApp: stage.mainApp
104− applicationsDisplayLoader.item ? applicationsDisplayLoader.item.mainApp : null
96+
105 onMainAppChanged: {
97 onMainAppChanged: {
106 if (mainApp) {
98 if (mainApp) {
107 _onMainAppChanged(mainApp.appId);
99 _onMainAppChanged(mainApp.appId);
@@ -278,154 +270,50 @@ StyledItem {
278 applicationsModel: ApplicationManager
270 applicationsModel: ApplicationManager
279 }
271 }
280
272
281− Loader {
273+ Stage {
282− id: applicationsDisplayLoader
274+ id: stage
283− objectName: "applicationsDisplayLoader"
275+ objectName: "stage"
284 anchors.fill: parent
276 anchors.fill: parent
277+ focus: true
278+
279+ dragAreaWidth: shell.edgeSize
280+ background: wallpaperResolver.background
281+ leftEdgeDragProgress: !greeter || greeter.locked || !tutorial.launcherLongSwipeEnabled ? 0 :
282+ Math.max(0, (launcher.dragDistance * (stage.width - launcher.panelWidth) / stage.width) - launcher.panelWidth)
285
283
286− // When we have a locked app, we only want to show that one app.
284+ applicationManager: ApplicationManager
287− // FIXME: do this in a less traumatic way. We currently only allow
285+ topLevelSurfaceList: topLevelSurfaceList
288− // locked apps in phone mode (see FIXME in Lockscreen component in
286+ inputMethodRect: inputMethod.visibleRect
289− // this same file). When that changes, we need to do something
290− // nicer here. But this code is currently just to prevent a
291− // theoretical attack where user enters lockedApp mode, then makes
292− // the screen larger (maybe connects to monitor) and tries to enter
293− // tablet mode.
294
287
295 property string usageScenario: shell.usageScenario === "phone" || greeter.hasLockedApp
288 property string usageScenario: shell.usageScenario === "phone" || greeter.hasLockedApp
296− ? "phone"
289+ ? "phone"
297− : shell.usageScenario
290+ : shell.usageScenario
298− readonly property string qmlComponent: {
291+
299− if (applicationsDisplayLoader.usageScenario === "phone") {
292+ mode: usageScenario == "phone" ? "staged"
300− return "Stages/PhoneStage.qml";
301− } else if (applicationsDisplayLoader.usageScenario === "tablet") {
293+ : usageScenario == "tablet" ? "stagedWithSideStage"
302− return "Stages/TabletStage.qml";
294+ : "windowed"
303− } else {
304− return "Stages/DesktopStage.qml";
305− }
306− }
307− // TODO: Ensure the current stage is destroyed before the new one gets loaded.
308− // Currently the new one will get loaded while the old is still hanging
309− // around for a bit, which might lead to conflicts where both stages
310− // change the model simultaneously.
311− onQmlComponentChanged: {
312− if (item) item.stageAboutToBeUnloaded();
313− source = qmlComponent;
314− }
315
295
296+ shellOrientation: shell.orientation
297+ shellOrientationAngle: shell.orientationAngle
298+ orientations: shell.orientations
299+ nativeWidth: shell.nativeWidth
300+ nativeHeight: shell.nativeHeight
301+
316− property bool interactive: (!greeter || !greeter.shown)
302+ interactive: (!greeter || !greeter.shown)
317 && panel.indicators.fullyClosed
303 && panel.indicators.fullyClosed
318 && launcher.progress == 0
304 && launcher.progress == 0
319 && !notifications.useModal
305 && !notifications.useModal
320
306
321 onInteractiveChanged: { if (interactive) { focus = true; } }
307 onInteractiveChanged: { if (interactive) { focus = true; } }
322
308
323− Binding {
324− target: applicationsDisplayLoader.item
325− property: "focus"
326− value: true
327− }
328− Binding {
329− target: applicationsDisplayLoader.item
330− property: "objectName"
331− value: "stage"
332− }
333− Binding {
334− target: applicationsDisplayLoader.item
335− property: "dragAreaWidth"
336− value: shell.edgeSize
337− }
338− Binding {
339− target: applicationsDisplayLoader.item
340− property: "maximizedAppTopMargin"
341− // Not just using panel.panelHeight as that changes depending on the focused app.
342− value: panel.indicators.minimizedPanelHeight
343− }
344− Binding {
345− target: applicationsDisplayLoader.item
346− property: "interactive"
347− value: applicationsDisplayLoader.interactive
348− }
349− Binding {
350− target: applicationsDisplayLoader.item
351− property: "spreadEnabled"
352− value: tutorial.spreadEnabled && (!greeter || (!greeter.hasLockedApp && !greeter.shown))
353− }
354− Binding {
355− target: applicationsDisplayLoader.item
356− property: "inverseProgress"
357− value: !greeter || greeter.locked || !tutorial.launcherLongSwipeEnabled ? 0 : launcher.progress
358− }
359− Binding {
360− target: applicationsDisplayLoader.item
361− property: "shellOrientationAngle"
362− value: shell.orientationAngle
363− }
364− Binding {
365− target: applicationsDisplayLoader.item
366− property: "shellOrientation"
367− value: shell.orientation
368− }
369− Binding {
370− target: applicationsDisplayLoader.item
371− property: "orientations"
372− value: shell.orientations
373− }
374− Binding {
375− target: applicationsDisplayLoader.item
376− property: "background"
377− value: wallpaperResolver.cachedBackground
378− }
379− Binding {
380− target: applicationsDisplayLoader.item
381− property: "nativeWidth"
382− value: shell.nativeWidth
383− }
384− Binding {
385− target: applicationsDisplayLoader.item
386− property: "nativeHeight"
387− value: shell.nativeHeight
388− }
389− Binding {
390− target: applicationsDisplayLoader.item
391− property: "beingResized"
392− value: shell.beingResized
393− }
394− Binding {
395− target: applicationsDisplayLoader.item
396− property: "keepDashRunning"
397− value: launcher.shown || launcher.dashSwipe
398− }
399− Binding {
400− target: applicationsDisplayLoader.item
401− property: "suspended"
402− value: greeter.shown
403− }
404− Binding {
405− target: applicationsDisplayLoader.item
406− property: "altTabPressed"
407− value: physicalKeysMapper.altTabPressed
408− }
409− Binding {
410− target: applicationsDisplayLoader.item
411− property: "leftMargin"
412− value: shell.usageScenario == "desktop" && !settings.autohideLauncher ? launcher.panelWidth: 0
309+ leftMargin: shell.usageScenario == "desktop" && !settings.autohideLauncher ? launcher.panelWidth: 0
413− }
310+ suspended: greeter.shown
414− Binding {
311+ keepDashRunning: launcher.shown || launcher.dashSwipe
415− target: applicationsDisplayLoader.item
312+ altTabPressed: physicalKeysMapper.altTabPressed
416− property: "applicationManager"
313+ oskEnabled: shell.oskEnabled
417− value: ApplicationManager
314+
418− }
315+ // TODO: This is not implemented yet in the new stage...
419− Binding {
316+ spreadEnabled: tutorial.spreadEnabled && (!greeter || (!greeter.hasLockedApp && !greeter.shown))
420− target: applicationsDisplayLoader.item
421− property: "topLevelSurfaceList"
422− value: topLevelSurfaceList
423− }
424− Binding {
425− target: applicationsDisplayLoader.item
426− property: "oskEnabled"
427− value: shell.oskEnabled
428− }
429 }
317 }
430 }
318 }
431
319
@@ -442,6 +330,7 @@ StyledItem {
442
330
443 Loader {
331 Loader {
444 id: greeterLoader
332 id: greeterLoader
333+ objectName: "greeterLoader"
445 anchors.fill: parent
334 anchors.fill: parent
446 anchors.topMargin: panel.panelHeight
335 anchors.topMargin: panel.panelHeight
447 sourceComponent: shell.mode != "shell" ? integratedGreeter :
336 sourceComponent: shell.mode != "shell" ? integratedGreeter :
@@ -651,7 +540,7 @@ StyledItem {
651 }
540 }
652 onFocusChanged: {
541 onFocusChanged: {
653 if (!focus) {
542 if (!focus) {
654− applicationsDisplayLoader.focus = true;
543+ stage.focus = true;
655 }
544 }
656 }
545 }
657
546
@@ -707,12 +596,12 @@ StyledItem {
707 delayed: dialogs.hasActiveDialog || notifications.hasNotification ||
596 delayed: dialogs.hasActiveDialog || notifications.hasNotification ||
708 inputMethod.visible ||
597 inputMethod.visible ||
709 (launcher.shown && !launcher.lockedVisible) ||
598 (launcher.shown && !launcher.lockedVisible) ||
710− panel.indicators.shown || stage.dragProgress > 0
599+ panel.indicators.shown || stage.rightEdgeDragProgress > 0
711 usageScenario: shell.usageScenario
600 usageScenario: shell.usageScenario
712 lastInputTimestamp: inputFilter.lastInputTimestamp
601 lastInputTimestamp: inputFilter.lastInputTimestamp
713 launcher: launcher
602 launcher: launcher
714 panel: panel
603 panel: panel
715− stage: applicationsDisplayLoader.item
604+ stage: stage
716 }
605 }
717
606
718 Wizard {
607 Wizard {
@@ -803,19 +692,27 @@ StyledItem {
803 z: dialogs.z + 10
692 z: dialogs.z + 10
804 GlobalShortcut { shortcut: Qt.Key_Print; onTriggered: itemGrabber.capture(shell) }
693 GlobalShortcut { shortcut: Qt.Key_Print; onTriggered: itemGrabber.capture(shell) }
805 Connections {
694 Connections {
806− target: applicationsDisplayLoader.item
695+ target: stage
807 ignoreUnknownSignals: true
696 ignoreUnknownSignals: true
808 onItemSnapshotRequested: itemGrabber.capture(item)
697 onItemSnapshotRequested: itemGrabber.capture(item)
809 }
698 }
810 }
699 }
811
700
701+ Timer {
702+ id: cursorHidingTimer
703+ interval: 3000
704+ running: panel.focusedSurfaceIsFullscreen && cursor.opacity > 0
705+ onTriggered: cursor.opacity = 0;
706+ }
707+
812 Cursor {
708 Cursor {
813 id: cursor
709 id: cursor
710+ objectName: "cursor"
814 visible: shell.hasMouse
711 visible: shell.hasMouse
815 z: itemGrabber.z + 1
712 z: itemGrabber.z + 1
816 topBoundaryOffset: panel.panelHeight
713 topBoundaryOffset: panel.panelHeight
817
714
818− confiningItem: applicationsDisplayLoader.item ? applicationsDisplayLoader.item.itemConfiningMouseCursor : null
715+ confiningItem: stage.itemConfiningMouseCursor
819
716
820 property bool mouseNeverMoved: true
717 property bool mouseNeverMoved: true
821 Binding {
718 Binding {
@@ -829,10 +726,9 @@ StyledItem {
829
726
830 height: units.gu(3)
727 height: units.gu(3)
831
728
832− readonly property var previewRectangle: applicationsDisplayLoader.item && applicationsDisplayLoader.item.previewRectangle &&
729+ readonly property var previewRectangle: stage.previewRectangle.target &&
833− applicationsDisplayLoader.item.previewRectangle.target &&
834− applicationsDisplayLoader.item.previewRectangle.target.dragging ?
730+ stage.previewRectangle.target.dragging ?
835− applicationsDisplayLoader.item.previewRectangle : null
731+ stage.previewRectangle : null
836
732
837 onPushedLeftBoundary: {
733 onPushedLeftBoundary: {
838 if (buttons === Qt.NoButton) {
734 if (buttons === Qt.NoButton) {
@@ -843,9 +739,8 @@ StyledItem {
843 }
739 }
844
740
845 onPushedRightBoundary: {
741 onPushedRightBoundary: {
846− if (buttons === Qt.NoButton && applicationsDisplayLoader.item
742+ if (buttons === Qt.NoButton) {
847− && applicationsDisplayLoader.item.pushRightEdge) {
848− applicationsDisplayLoader.item.pushRightEdge(amount);
743+ stage.pushRightEdge(amount);
849 } else if (buttons === Qt.LeftButton && previewRectangle && previewRectangle.target.canBeMaximizedLeftRight) {
744 } else if (buttons === Qt.LeftButton && previewRectangle && previewRectangle.target.canBeMaximizedLeftRight) {
850 previewRectangle.maximizeRight(amount);
745 previewRectangle.maximizeRight(amount);
851 }
746 }
@@ -886,6 +781,8 @@ StyledItem {
886 mouseNeverMoved = false;
781 mouseNeverMoved = false;
887 cursor.opacity = 1;
782 cursor.opacity = 1;
888 }
783 }
784+
785+ Behavior on opacity { UbuntuNumberAnimation {} }
889 }
786 }
890
787
891 // non-visual object
788 // non-visual object
qml/Stages/AbstractStage.qml → qml/Stage/AbstractStage.qmlrenamed

The content is the same.

qml/Stages/ApplicationWindow.qml → qml/Stage/ApplicationWindow.qmlrenamed+13−37
@@ -20,8 +20,8 @@ import Unity.Application 0.1
20
20
21FocusScope {
21FocusScope {
22 id: root
22 id: root
23− implicitWidth: surfaceContainer.implicitWidth
23+ implicitWidth: requestedWidth
24− implicitHeight: surfaceContainer.implicitHeight
24+ implicitHeight: requestedHeight
25
25
26 // to be read from outside
26 // to be read from outside
27 property alias interactive: surfaceContainer.interactive
27 property alias interactive: surfaceContainer.interactive
@@ -29,22 +29,10 @@ FocusScope {
29 readonly property string title: surface && surface.name !== "" ? surface.name : d.name
29 readonly property string title: surface && surface.name !== "" ? surface.name : d.name
30 readonly property QtObject focusedSurface: d.focusedSurface.surface
30 readonly property QtObject focusedSurface: d.focusedSurface.surface
31
31
32− // overridable from outside
33− property bool fullscreen: {
34− if (surface) {
35− return surface.state === Mir.FullscreenState;
36− } else if (application) {
37− return application.fullscreen;
38− } else {
39− return false;
40− }
41− }
42−
43 // to be set from outside
32 // to be set from outside
44 property QtObject surface
33 property QtObject surface
45 property QtObject application
34 property QtObject application
46 property int surfaceOrientationAngle
35 property int surfaceOrientationAngle
47− property alias resizeSurface: surfaceContainer.resizeSurface
48 property int requestedWidth: -1
36 property int requestedWidth: -1
49 property int requestedHeight: -1
37 property int requestedHeight: -1
50 property real splashRotation: 0
38 property real splashRotation: 0
@@ -156,6 +144,9 @@ FocusScope {
156 id: screenshotImage
144 id: screenshotImage
157 objectName: "screenshotImage"
145 objectName: "screenshotImage"
158 anchors.fill: parent
146 anchors.fill: parent
147+ fillMode: Image.PreserveAspectCrop
148+ horizontalAlignment: Image.AlignLeft
149+ verticalAlignment: Image.AlignTop
159 antialiasing: !root.interactive
150 antialiasing: !root.interactive
160 z: 1
151 z: 1
161
152
@@ -197,6 +188,7 @@ FocusScope {
197
188
198 SurfaceContainer {
189 SurfaceContainer {
199 id: surfaceContainer
190 id: surfaceContainer
191+ anchors.fill: parent
200 z: splashLoader.z + 1
192 z: splashLoader.z + 1
201 requestedWidth: root.requestedWidth
193 requestedWidth: root.requestedWidth
202 requestedHeight: root.requestedHeight
194 requestedHeight: root.requestedHeight
@@ -220,6 +212,8 @@ FocusScope {
220 surface: model.surface
212 surface: model.surface
221 width: root.width
213 width: root.width
222 height: root.height
214 height: root.height
215+ requestedWidth: root.requestedWidth
216+ requestedHeight: root.requestedHeight
223 isPromptSurface: true
217 isPromptSurface: true
224 z: surfaceContainer.z + (promptSurfacesRepeater.count - index)
218 z: surfaceContainer.z + (promptSurfacesRepeater.count - index)
225 property int index: model.index
219 property int index: model.index
@@ -239,28 +233,6 @@ FocusScope {
239 property Item first: null
233 property Item first: null
240 }
234 }
241
235
242− // SurfaceContainer size drives ApplicationWindow size
243− Binding {
244− target: root; property: "width"
245− value: stateGroup.state === "surface" ? surfaceContainer.width : root.requestedWidth
246− when: root.requestedWidth >= 0
247− }
248− Binding {
249− target: root; property: "height"
250− value: stateGroup.state === "surface" ? surfaceContainer.height : root.requestedHeight
251− when: root.requestedHeight >= 0
252− }
253−
254− // ApplicationWindow size drives SurfaceContainer size
255− Binding {
256− target: surfaceContainer; property: "width"; value: root.width
257− when: root.requestedWidth < 0
258− }
259− Binding {
260− target: surfaceContainer; property: "height"; value: root.height
261− when: root.requestedHeight < 0
262− }
263−
264 StateGroup {
236 StateGroup {
265 id: stateGroup
237 id: stateGroup
266 objectName: "applicationWindowStateGroup"
238 objectName: "applicationWindowStateGroup"
@@ -287,6 +259,11 @@ FocusScope {
287 (d.liveSurface ||
259 (d.liveSurface ||
288 (d.applicationState !== ApplicationInfoInterface.Running
260 (d.applicationState !== ApplicationInfoInterface.Running
289 && screenshotImage.status !== Image.Ready))
261 && screenshotImage.status !== Image.Ready))
262+ PropertyChanges {
263+ target: root
264+ implicitWidth: surfaceContainer.implicitWidth
265+ implicitHeight: surfaceContainer.implicitHeight
266+ }
290 },
267 },
291 State {
268 State {
292 name: "screenshot"
269 name: "screenshot"
@@ -424,5 +401,4 @@ FocusScope {
424 }
401 }
425 ]
402 ]
426 }
403 }
427−
428}
404}
qml/Stage/DecoratedWindow.qmlnew file+266
@@ -0,0 +1,266 @@
1+/*
2+ * Copyright (C) 2014-2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+import Ubuntu.Components 1.3
19+import Unity.Application 0.1
20+import "Spread/MathUtils.js" as MathUtils
21+
22+FocusScope {
23+ id: root
24+
25+ // The DecoratedWindow takes requestedWidth/requestedHeight and asks its surface to be resized to that
26+ // (minus the window decoration size in case hasDecoration and showDecoration are true)
27+ // The surface might not be able to resize to the requested values. It will return its actual size
28+ // in implicitWidth/implicitHeight.
29+
30+ property alias application: applicationWindow.application
31+ property alias surface: applicationWindow.surface
32+ readonly property alias focusedSurface: applicationWindow.focusedSurface
33+ property alias active: decoration.active
34+ readonly property alias title: applicationWindow.title
35+ property alias maximizeButtonShown: decoration.maximizeButtonShown
36+ property alias interactive: applicationWindow.interactive
37+ readonly property alias orientationChangesEnabled: applicationWindow.orientationChangesEnabled
38+
39+ // Changing this will actually add/remove a decoration, meaning, requestedHeight will take the decoration into account.
40+ property bool hasDecoration: true
41+ // This will temporarily show/hide the decoration without actually changing the surface's dimensions
42+ property real showDecoration: 1
43+ property bool animateDecoration: false
44+ property bool showHighlight: false
45+ property int highlightSize: units.gu(1)
46+ property real shadowOpacity: 0
47+ property bool darkening: false
48+
49+ property real requestedWidth
50+ property real requestedHeight
51+ property real scaleToPreviewProgress: 0
52+ property int scaleToPreviewSize: units.gu(30)
53+
54+ property alias surfaceOrientationAngle: applicationWindow.surfaceOrientationAngle
55+ readonly property real decorationHeight: Math.min(d.visibleDecorationHeight, d.requestedDecorationHeight)
56+ readonly property bool counterRotate: surfaceOrientationAngle != 0 && surfaceOrientationAngle != 180
57+
58+ readonly property int minimumWidth: !counterRotate ? applicationWindow.minimumWidth : applicationWindow.minimumHeight
59+ readonly property int minimumHeight: decorationHeight + (!counterRotate ? applicationWindow.minimumHeight : applicationWindow.minimumWidth)
60+ readonly property int maximumWidth: !counterRotate ? applicationWindow.maximumWidth : applicationWindow.maximumHeight
61+ readonly property int maximumHeight: (root.decorationShown && applicationWindow.maximumHeight > 0 ? decoration.height : 0)
62+ + (!counterRotate ? applicationWindow.maximumHeight : applicationWindow.maximumWidth)
63+ readonly property int widthIncrement: !counterRotate ? applicationWindow.widthIncrement : applicationWindow.heightIncrement
64+ readonly property int heightIncrement: !counterRotate ? applicationWindow.heightIncrement : applicationWindow.widthIncrement
65+
66+ property alias overlayShown: decoration.overlayShown
67+ property alias stageWidth: moveHandler.stageWidth
68+ property alias stageHeight: moveHandler.stageHeight
69+ readonly property alias dragging: moveHandler.dragging
70+
71+ readonly property Item clientAreaItem: applicationWindow
72+
73+ signal closeClicked()
74+ signal maximizeClicked()
75+ signal maximizeHorizontallyClicked()
76+ signal maximizeVerticallyClicked()
77+ signal minimizeClicked()
78+ signal decorationPressed()
79+ signal decorationReleased()
80+
81+ QtObject {
82+ id: d
83+ property int requestedDecorationHeight: root.hasDecoration ? decoration.height : 0
84+ Behavior on requestedDecorationHeight { enabled: root.animateDecoration; UbuntuNumberAnimation { } }
85+
86+ property int visibleDecorationHeight: root.hasDecoration ? root.showDecoration * decoration.height : 0
87+ Behavior on visibleDecorationHeight { enabled: root.animateDecoration; UbuntuNumberAnimation { } }
88+ }
89+
90+ StateGroup {
91+ states: [
92+ State {
93+ name: "normal"; when: root.scaleToPreviewProgress <= 0 && root.application.state === ApplicationInfoInterface.Running
94+ PropertyChanges {
95+ target: root
96+ implicitWidth: counterRotate ? applicationWindow.implicitHeight : applicationWindow.implicitWidth
97+ implicitHeight: root.decorationHeight + (counterRotate ? applicationWindow.implicitWidth: applicationWindow.implicitHeight)
98+ }
99+ },
100+ State {
101+ name: "normalSuspended"; when: root.scaleToPreviewProgress <= 0 && root.application.state !== ApplicationInfoInterface.Running
102+ extend: "normal"
103+ PropertyChanges {
104+ target: root
105+ implicitWidth: counterRotate ? applicationWindow.requestedHeight : applicationWindow.requestedWidth
106+ implicitHeight: root.decorationHeight + (counterRotate ? applicationWindow.requestedWidth: applicationWindow.requestedHeight)
107+ }
108+ },
109+ State {
110+ name: "preview"; when: root.scaleToPreviewProgress > 0
111+ PropertyChanges {
112+ target: root
113+ implicitWidth: MathUtils.linearAnimation(0, 1, applicationWindow.oldRequestedWidth, root.scaleToPreviewSize, root.scaleToPreviewProgress)
114+ implicitHeight: MathUtils.linearAnimation(0, 1, applicationWindow.oldRequestedHeight, root.scaleToPreviewSize, root.scaleToPreviewProgress)
115+ }
116+ PropertyChanges {
117+ target: applicationWindow;
118+ requestedWidth: applicationWindow.oldRequestedWidth
119+ requestedHeight: applicationWindow.oldRequestedHeight
120+ width: MathUtils.linearAnimation(0, 1, applicationWindow.oldRequestedWidth, applicationWindow.minSize, root.scaleToPreviewProgress)
121+ height: MathUtils.linearAnimation(0, 1, applicationWindow.oldRequestedHeight, applicationWindow.minSize, root.scaleToPreviewProgress)
122+ itemScale: root.implicitWidth / width
123+ }
124+ }
125+ ]
126+ }
127+
128+ Rectangle {
129+ id: selectionHighlight
130+ objectName: "selectionHighlight"
131+ anchors.fill: parent
132+ anchors.margins: -root.highlightSize
133+ color: "white"
134+ opacity: showHighlight ? 0.55 : 0
135+ visible: opacity > 0
136+ }
137+
138+ BorderImage {
139+ id: dropShadow
140+ anchors {
141+ left: parent.left; top: parent.top; right: parent.right
142+ margins: active ? -units.gu(2) : -units.gu(1.5)
143+ }
144+ height: Math.min(applicationWindow.implicitHeight, applicationWindow.height) * applicationWindow.itemScale
145+ + root.decorationHeight * Math.min(1, root.showDecoration) + (active ? units.gu(4) : units.gu(3))
146+ source: "../graphics/dropshadow2gu.sci"
147+ opacity: root.shadowOpacity
148+ }
149+
150+ WindowDecoration {
151+ id: decoration
152+ target: root.parent || null
153+ objectName: "appWindowDecoration"
154+ anchors { left: parent.left; top: parent.top; right: parent.right }
155+ height: units.gu(3)
156+ width: root.width
157+ title: applicationWindow.title
158+ opacity: root.hasDecoration ? Math.min(1, root.showDecoration) : 0
159+
160+ Behavior on opacity { UbuntuNumberAnimation { } }
161+
162+ onCloseClicked: root.closeClicked();
163+ onMaximizeClicked: { root.decorationPressed(); root.maximizeClicked(); }
164+ onMaximizeHorizontallyClicked: { root.decorationPressed(); root.maximizeHorizontallyClicked(); }
165+ onMaximizeVerticallyClicked: { root.decorationPressed(); root.maximizeVerticallyClicked(); }
166+ onMinimizeClicked: root.minimizeClicked();
167+ onPressed: root.decorationPressed();
168+
169+ onPressedChanged: moveHandler.handlePressedChanged(pressed, pressedButtons, mouseX, mouseY)
170+ onPositionChanged: moveHandler.handlePositionChanged(mouse)
171+ onReleased: {
172+ root.decorationReleased();
173+ moveHandler.handleReleased();
174+ }
175+ }
176+
177+ MoveHandler {
178+ id: moveHandler
179+ objectName: "moveHandler"
180+ target: root.parent
181+ buttonsWidth: decoration.buttonsWidth
182+ }
183+
184+ ApplicationWindow {
185+ id: applicationWindow
186+ objectName: "appWindow"
187+ anchors.left: parent.left
188+ anchors.top: parent.top
189+ anchors.topMargin: root.decorationHeight * Math.min(1, root.showDecoration)
190+ width: implicitWidth
191+ height: implicitHeight
192+ requestedHeight: !counterRotate ? root.requestedHeight - d.requestedDecorationHeight : root.requestedWidth
193+ requestedWidth: !counterRotate ? root.requestedWidth : root.requestedHeight - d.requestedDecorationHeight
194+ property int oldRequestedWidth: requestedWidth
195+ property int oldRequestedHeight: requestedHeight
196+ onRequestedWidthChanged: oldRequestedWidth = requestedWidth
197+ onRequestedHeightChanged: oldRequestedHeight = requestedHeight
198+ focus: true
199+
200+ property real itemScale: 1
201+ property real minSize: Math.min(root.scaleToPreviewSize, Math.min(requestedHeight, Math.min(requestedWidth, Math.min(implicitHeight, implicitWidth))))
202+
203+ transform: [
204+ Rotation {
205+ id: rotationTransform
206+ readonly property int rotationAngle: applicationWindow.application &&
207+ applicationWindow.application.rotatesWindowContents
208+ ? ((360 - applicationWindow.surfaceOrientationAngle) % 360) : 0
209+ origin.x: {
210+ if (rotationAngle == 90) return applicationWindow.height / 2;
211+ else if (rotationAngle == 270) return applicationWindow.width / 2;
212+ else if (rotationAngle == 180) return applicationWindow.width / 2;
213+ else return 0;
214+ }
215+ origin.y: {
216+ if (rotationAngle == 90) return applicationWindow.height / 2;
217+ else if (rotationAngle == 270) return applicationWindow.width / 2;
218+ else if (rotationAngle == 180) return applicationWindow.height / 2;
219+ else return 0;
220+ }
221+ angle: rotationAngle
222+ },
223+ Scale {
224+ xScale: applicationWindow.itemScale
225+ yScale: applicationWindow.itemScale
226+ }
227+ ]
228+ }
229+
230+ MouseArea {
231+ anchors.fill: applicationWindow
232+ acceptedButtons: Qt.LeftButton
233+ property bool dragging: false
234+ cursorShape: undefined // don't interfere with the cursor shape set by the underlying MirSurfaceItem
235+ onPressed: {
236+ if (mouse.button == Qt.LeftButton && mouse.modifiers == Qt.AltModifier) {
237+ root.decorationPressed(); // to raise it
238+ moveHandler.handlePressedChanged(true, Qt.LeftButton, mouse.x, mouse.y);
239+ dragging = true;
240+ mouse.accepted = true;
241+ } else {
242+ mouse.accepted = false;
243+ }
244+ }
245+ onPositionChanged: {
246+ if (dragging) {
247+ moveHandler.handlePositionChanged(mouse);
248+ }
249+ }
250+ onReleased: {
251+ if (dragging) {
252+ moveHandler.handlePressedChanged(false, Qt.LeftButton);
253+ root.decorationReleased(); // commits the fake preview max rectangle
254+ moveHandler.handleReleased();
255+ dragging = false;
256+ }
257+ }
258+ }
259+
260+ Rectangle {
261+ anchors.fill: parent
262+ color: "black"
263+ opacity: root.darkening && !root.showHighlight ? 0.05 : 0
264+ Behavior on opacity { UbuntuNumberAnimation { duration: UbuntuAnimation.SnapDuration } }
265+ }
266+}
qml/Stages/DesktopSpread.qml → qml/Stage/DesktopSpread.qmlrenamed

The content is the same.

qml/Stages/DesktopSpreadDelegate.qml → qml/Stage/DesktopSpreadDelegate.qmlrenamed

The content is the same.

qml/Stages/FakeMaximizeDelegate.qml → qml/Stage/FakeMaximizeDelegate.qmlrenamed

The content is the same.

qml/Stages/MainViewStyle.qml → qml/Stage/MainViewStyle.qmlrenamed

The content is the same.

qml/Stages/MoveHandler.qml → qml/Stage/MoveHandler.qmlrenamed+4−3
@@ -103,7 +103,8 @@ QtObject {
103 if (priv.dragging) {
103 if (priv.dragging) {
104 Mir.cursorName = "grabbing";
104 Mir.cursorName = "grabbing";
105
105
106− if (target.anyMaximized) { // restore from maximized when dragging away from edges/corners
106+ // restore from maximized when dragging away from edges/corners; guard against inadvertent changes when going into maximized state
107+ if (target.anyMaximized && !target.windowedTransitionRunning) {
107 priv.progress = 0;
108 priv.progress = 0;
108 target.restore(false, WindowStateStorage.WindowStateNormal);
109 target.restore(false, WindowStateStorage.WindowStateNormal);
109 }
110 }
@@ -112,8 +113,8 @@ QtObject {
112 // Use integer coordinate values to ensure that target is left in a pixel-aligned
113 // Use integer coordinate values to ensure that target is left in a pixel-aligned
113 // position. Mouse movement could have subpixel precision, yielding a fractional
114 // position. Mouse movement could have subpixel precision, yielding a fractional
114 // mouse position.
115 // mouse position.
115− target.requestedX = Math.round(pos.x - priv.distanceX);
116+ target.windowedX = Math.round(pos.x - priv.distanceX);
116− target.requestedY = Math.round(Math.max(pos.y - priv.distanceY, PanelState.panelHeight));
117+ target.windowedY = Math.round(Math.max(pos.y - priv.distanceY, PanelState.panelHeight));
117
118
118 if (sensingPoints) { // edge/corner detection when dragging via the touch overlay
119 if (sensingPoints) { // edge/corner detection when dragging via the touch overlay
119 if (sensingPoints.topLeft.x < priv.triggerArea && sensingPoints.topLeft.y < PanelState.panelHeight + priv.triggerArea
120 if (sensingPoints.topLeft.x < priv.triggerArea && sensingPoints.topLeft.y < PanelState.panelHeight + priv.triggerArea
qml/Stages/OrientationChangeAnimation.qml → qml/Stage/OrientationChangeAnimation.qmlrenamed

The content is the same.

qml/Stages/PhoneStage.qml → qml/Stage/PhoneStage.qmlrenamed

The content is the same.

qml/Stages/PromptSurfaceAnimations.qml → qml/Stage/PromptSurfaceAnimations.qmlrenamed+2−3
@@ -43,7 +43,7 @@ StateGroup {
43 SequentialAnimation {
43 SequentialAnimation {
44 // clip so we don't go out of parent's bounds during spread
44 // clip so we don't go out of parent's bounds during spread
45 PropertyAction { target: root.container.parent; property: "clip"; value: true }
45 PropertyAction { target: root.container.parent; property: "clip"; value: true }
46− UbuntuNumberAnimation { target: root.surfaceItem; property: "y"; to: root.container.height
46+ UbuntuNumberAnimation { target: root.surfaceItem; property: "anchors.topMargin"; to: root.container.height
47 duration: UbuntuAnimation.BriskDuration }
47 duration: UbuntuAnimation.BriskDuration }
48 PropertyAction { target: root.surfaceItem; property: "visible"; value: false }
48 PropertyAction { target: root.surfaceItem; property: "visible"; value: false }
49 PropertyAction { target: container.parent; property: "clip"; value: false }
49 PropertyAction { target: container.parent; property: "clip"; value: false }
@@ -61,11 +61,10 @@ StateGroup {
61 // clip so we don't go out of parent's bounds during spread
61 // clip so we don't go out of parent's bounds during spread
62 PropertyAction { target: root.container.parent; property: "clip"; value: true }
62 PropertyAction { target: root.container.parent; property: "clip"; value: true }
63 ScriptAction { script: {
63 ScriptAction { script: {
64− root.surfaceItem.y = root.container.height;
65 root.surfaceItem.visible = true;
64 root.surfaceItem.visible = true;
66 } }
65 } }
67 UbuntuNumberAnimation {
66 UbuntuNumberAnimation {
68− target: root.surfaceItem; property: "y"; to: 0
67+ target: root.surfaceItem; property: "anchors.topMargin"; from: root.container.height; to: 0
69 duration: UbuntuAnimation.BriskDuration
68 duration: UbuntuAnimation.BriskDuration
70 }
69 }
71 PropertyAction { target: container.parent; property: "clip"; value: false }
70 PropertyAction { target: container.parent; property: "clip"; value: false }
qml/Stages/ResizeGrip.qml → qml/Stage/ResizeGrip.qmlrenamed

The content is the same.

qml/Stages/SideStage.qml → qml/Stage/SideStage.qmlrenamed

The content is the same.

qml/Stages/Splash.qml → qml/Stage/Splash.qmlrenamed

The content is the same.

qml/Stage/Spread/BezierCurve.qmlnew file+45
@@ -0,0 +1,45 @@
1+/*
2+ * Copyright (C) 2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+import Ubuntu.Components 1.3
19+import QtQuick.Window 2.2
20+import 'cubic-bezier.js' as Bezier
21+import 'KeySpline.js' as KeySpline
22+
23+Item {
24+ id: root
25+
26+ property var controlPoint1: {'x':0, 'y':0}
27+ property var controlPoint2: {'x':0, 'y':0}
28+ property var controlPoint3: {'x':0.58, 'y':1}
29+ property var controlPoint4: {'x':1, 'y':1}
30+
31+ function getValues(t) {
32+ if (t<0) t=0
33+ else if (t>1)t=1
34+
35+ return Bezier.getBezier(t, controlPoint1, controlPoint2, controlPoint3, controlPoint4)
36+ }
37+
38+ function getYFromX(x) {
39+ var spline = new KeySpline.keySpline(controlPoint2.x, controlPoint2.y, controlPoint3.x, controlPoint3.y)
40+ if (x<0) x=0
41+ else if (x>1)x=1
42+
43+ return spline.get(x)
44+ }
45+}
qml/Stage/Spread/KeySpline.jsnew file+66
@@ -0,0 +1,66 @@
1+/** MIT License
2+ *
3+ * KeySpline - use bezier curve for transition easing function
4+ * Copyright (c) 2012 Gaetan Renaudeau <renaudeau.gaetan@gmail.com>
5+ *
6+ * Permission is hereby granted, free of charge, to any person obtaining a
7+ * copy of this software and associated documentation files (the "Software"),
8+ * to deal in the Software without restriction, including without limitation
9+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
10+ * and/or sell copies of the Software, and to permit persons to whom the
11+ * Software is furnished to do so, subject to the following conditions:
12+ *
13+ * The above copyright notice and this permission notice shall be included in
14+ * all copies or substantial portions of the Software.
15+ *
16+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22+ * DEALINGS IN THE SOFTWARE.
23+ */
24+/**
25+* KeySpline - use bezier curve for transition easing function
26+* is inspired from Firefox's nsSMILKeySpline.cpp
27+* Usage:
28+* var spline = new KeySpline(0.25, 0.1, 0.25, 1.0)
29+* spline.get(x) => returns the easing value | x must be in [0, 1] range
30+*/
31+
32+.pragma library
33+
34+function keySpline (mX1, mY1, mX2, mY2) {
35+
36+ this.get = function(aX) {
37+ if (mX1 == mY1 && mX2 == mY2) return aX; // linear
38+ return CalcBezier(GetTForX(aX), mY1, mY2);
39+ }
40+
41+ function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }
42+ function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }
43+ function C(aA1) { return 3.0 * aA1; }
44+
45+ // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.
46+ function CalcBezier(aT, aA1, aA2) {
47+ return ((A(aA1, aA2)*aT + B(aA1, aA2))*aT + C(aA1))*aT;
48+ }
49+
50+ // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.
51+ function GetSlope(aT, aA1, aA2) {
52+ return 3.0 * A(aA1, aA2)*aT*aT + 2.0 * B(aA1, aA2) * aT + C(aA1);
53+ }
54+
55+ function GetTForX(aX) {
56+ // Newton raphson iteration
57+ var aGuessT = aX;
58+ for (var i = 0; i < 4; ++i) {
59+ var currentSlope = GetSlope(aGuessT, mX1, mX2);
60+ if (currentSlope == 0.0) return aGuessT;
61+ var currentX = CalcBezier(aGuessT, mX1, mX2) - aX;
62+ aGuessT -= currentX / currentSlope;
63+ }
64+ return aGuessT;
65+ }
66+}
qml/Stage/Spread/MathUtils.jsnew file+95
@@ -0,0 +1,95 @@
1+/*
2+ * Copyright (C) 2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+.pragma library
18+
19+/**
20+ * From processing.js: https://raw.githubusercontent.com/processing-js/processing-js/v1.4.8/processing.js
21+ *
22+ * Re-map a number from one range to another. In the example above, the number
23+ * '25' is converted from a value in the range 0..100 into a value that
24+ * ranges from the left edge (0) to the right edge (width) of the screen.
25+ * Numbers outside the range are not clamped to 0 and 1, because out-of-range
26+ * values are often intentional and useful.
27+ *
28+ * @param {Number} value The incoming value to be converted
29+ * @param {Number} istart Lower bound of the value's current range
30+ * @param {Number} istop Upper bound of the value's current range
31+ * @param {Number} ostart Lower bound of the value's target range
32+ * @param {Number} ostop Upper bound of the value's target range
33+ *
34+ * @returns {Number}
35+ */
36+function map(value, istart, istop, ostart, ostop) {
37+ return ostart + (ostop - ostart) * ((value - istart) / (istop - istart))
38+}
39+
40+/**
41+ * Return a value which is always between `min` and `max`
42+ *
43+ * @param {Number} value The current value
44+ * @param {Number} min The minimum value
45+ * @param {Number} max The maximum value
46+ *
47+ * @returns {Number}
48+ */
49+function clamp(value, min, max) {
50+ if (value < min) return min
51+ if (value > max) return max
52+ return value
53+}
54+
55+// calculates the distance from the middle of one rect to middle of other rect
56+function rectDistance(rect1, rect2) {
57+ return pointDistance(Qt.point(rect1.x + rect1.width / 2, rect1.y + rect1.height / 2),
58+ Qt.point(rect2.x + rect2.width / 2, rect2.y + rect2.height / 2))
59+}
60+
61+// calculates the distance between two points
62+function pointDistance(point1, point2) {
63+ return Math.sqrt(Math.pow(point1.x - point2.x, 2) +
64+ Math.pow(point1.y - point2.y, 2)
65+ )
66+}
67+
68+// from http://stackoverflow.com/questions/14616829/java-method-to-find-the-rectangle-that-is-the-intersection-of-two-rectangles-usi
69+function intersectionRect(r1, r2) {
70+ var xmin = Math.max(r1.x, r2.x);
71+ var xmax1 = r1.x + r1.width;
72+ var xmax2 = r2.x + r2.width;
73+ var xmax = Math.min(xmax1, xmax2);
74+ var out = {x:0, y:0, width:0, height:0}
75+ if (xmax > xmin) {
76+ var ymin = Math.max(r1.y, r2.y);
77+ var ymax1 = r1.y + r1.height;
78+ var ymax2 = r2.y + r2.height;
79+ var ymax = Math.min(ymax1, ymax2);
80+ if (ymax > ymin) {
81+ out.x = xmin;
82+ out.y = ymin;
83+ out.width = xmax - xmin;
84+ out.height = ymax - ymin;
85+ }
86+ }
87+ return out;
88+}
89+
90+function easeOutCubic(t) { return (--t)*t*t+1 }
91+
92+function linearAnimation(startProgress, endProgress, startValue, endValue, progress) {
93+ // progress : progressDiff = value : valueDiff => value = progress * valueDiff / progressDiff
94+ return (progress - startProgress) * (endValue - startValue) / (endProgress - startProgress) + startValue;
95+}
qml/Stage/Spread/OpacityMask.qmlnew file+82
@@ -0,0 +1,82 @@
1+/*
2+ * Copyright (C) 2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+
19+Item {
20+ id: root
21+ anchors.fill: sourceItem
22+ anchors.margins: -units.gu(2)
23+ visible: sourceItem !== null
24+
25+ property var sourceItem: null
26+ property int maskX: 0
27+ property int maskY: 0
28+ property int maskWidth: 0
29+ property int maskHeight: 0
30+
31+ property real opacityValue: 1
32+
33+ Item {
34+ id: opacityMask
35+ anchors.fill: parent
36+
37+ Rectangle {
38+ id: clipRect
39+ color: "black"
40+ x: root.maskX - root.anchors.margins
41+ y: root.maskY - root.anchors.margins
42+ width: root.maskWidth
43+ height: root.maskHeight
44+ opacity: 1 - root.opacityValue
45+ }
46+ }
47+
48+ ShaderEffect {
49+ id: opacityEffect
50+ anchors.fill: parent
51+
52+ property variant source: ShaderEffectSource {
53+ id: shaderEffectSource
54+ sourceItem: root.sourceItem
55+ sourceRect: root.sourceItem ? Qt.rect(sourceItem.x + root.anchors.margins,
56+ sourceItem.y + root.anchors.margins,
57+ sourceItem.width - root.anchors.margins * 2,
58+ sourceItem.height - root.anchors.margins * 2)
59+ : Qt.rect(0,0,0,0)
60+ hideSource: true
61+ }
62+
63+ property var mask: ShaderEffectSource {
64+ sourceItem: opacityMask
65+ hideSource: true
66+ }
67+
68+ fragmentShader: "
69+ varying highp vec2 qt_TexCoord0;
70+ uniform sampler2D source;
71+ uniform sampler2D mask;
72+ void main(void)
73+ {
74+ highp vec4 sourceColor = texture2D(source, qt_TexCoord0);
75+ highp vec4 maskColor = texture2D(mask, qt_TexCoord0);
76+
77+ sourceColor *= 1.0 - maskColor.a;
78+
79+ gl_FragColor = sourceColor;
80+ }"
81+ }
82+}
qml/Stage/Spread/Spread.qmlnew file+162
@@ -0,0 +1,162 @@
1+/*
2+ * Copyright (C) 2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+import Ubuntu.Components 1.3
19+import "MathUtils.js" as MathUtils
20+
21+Item {
22+ id: root
23+
24+ // Information about the environment
25+ property int highlightedIndex: -1
26+ property var model: null
27+ property int leftMargin: 0
28+ property var spreadFlickable
29+
30+ // some config options
31+ property real contentMargin: 0.16 * root.height
32+ property real contentTopMargin: contentMargin
33+ property real contentBottomMargin: 0.35 * contentMargin
34+ property real windowTitleTopMargin: 3/4 * (contentTopMargin - windowTitle.height)
35+ property int stackItemCount: 3
36+ property real leftRotationAngle: 22
37+ property real rightRotationAngle: 32
38+ property real leftStackScale: .82
39+ property real rightStackScale: 1
40+ property real rightEdgeBreakPoint: Math.min(units.gu(40) / root.width, .35)
41+
42+ signal leaveSpread()
43+
44+ // Calculated stuff
45+ readonly property int totalItemCount: model.count
46+ readonly property real leftStackXPos: 0.03 * root.width + leftMargin
47+ readonly property real rightStackXPos: root.width - 1.5 * leftStackXPos + leftMargin
48+
49+ readonly property real stackHeight: spreadItemHeight - appInfoHeight
50+ readonly property real stackWidth: Math.min(leftStackXPos/3, units.gu(1.5))
51+
52+ readonly property real spreadWidth: rightStackXPos - leftStackXPos
53+ readonly property real spreadHeight: root.height
54+ readonly property real spreadItemHeight: spreadHeight - contentTopMargin - contentBottomMargin
55+ readonly property real spreadItemWidth: stackHeight
56+
57+ readonly property real dynamicLeftRotationAngle: leftRotationAngle * rotationAngleFactor
58+ readonly property real dynamicRightRotationAngle: rightRotationAngle * rotationAngleFactor
59+
60+ readonly property real appInfoHeight: {
61+ var screenHeightReferencePoint = 40 // ref screen height in gu
62+ var valueAtReferencePoint = 0.17 // of screen height at the reference point
63+ var appInfoHeightValueChange = -0.0014 // units / gu
64+ var minAppInfoHeight = 0.08
65+ var maxAppInfoHeight = 0.2
66+ var screenHeightInGU = root.height / units.gu(1) // screenHeight in gu
67+
68+ return MathUtils.clamp(valueAtReferencePoint + appInfoHeightValueChange * (screenHeightInGU - screenHeightReferencePoint), minAppInfoHeight, maxAppInfoHeight) * root.height
69+ }
70+
71+ property real rotationAngleFactor: {
72+ var spreadHeightReferencePoint = 28 // reference spread height in gu
73+ var valueAtReferencePoint = 1.3
74+ var rotationAngleValueChange = -0.008 // units / gu
75+ var minRotationAngleFactor = 0.6
76+ var maxRotationAngleFactor = 1.5
77+ var spreadHeightInGU = spreadHeight / units.gu(1)
78+
79+ return MathUtils.clamp(valueAtReferencePoint + rotationAngleValueChange * (spreadHeightInGU - spreadHeightReferencePoint), minRotationAngleFactor, maxRotationAngleFactor)
80+ }
81+ readonly property real itemOverlap: {
82+ var spreadAspectRatioReferencePoint = 1.0 // ref screen height in gu
83+ var valueAtReferencePoint = 0.74 // of screen height at the reference point
84+ var itemOverlapValueChange = -0.068
85+ var minOverlap = 0.55
86+ var maxOverlap = 0.82
87+ var spreadAspectRatio = spreadWidth / stackHeight // spread stack aspect ratio (app info not included)
88+
89+ return MathUtils.clamp(valueAtReferencePoint + itemOverlapValueChange * (spreadAspectRatio - spreadAspectRatioReferencePoint), minOverlap, maxOverlap)
90+ }
91+
92+ readonly property real visibleItemCount: (spreadWidth / spreadItemWidth) / (1 - itemOverlap)
93+
94+ readonly property real spreadTotalWidth: totalItemCount * spreadWidth / visibleItemCount
95+
96+ readonly property real centeringOffset: Math.max(spreadWidth - spreadTotalWidth ,0) / (2 * spreadWidth)
97+
98+
99+ readonly property var curve: BezierCurve {
100+ controlPoint2: {'x': 0.19, 'y': 0.00}
101+ controlPoint3: {'x': 0.91, 'y': 1.00}
102+ }
103+
104+ Label {
105+ id: windowTitle
106+
107+ width: Math.min(implicitWidth, 0.5*root.width)
108+ elide: Qt.ElideMiddle
109+ anchors.horizontalCenter: parent.horizontalCenter
110+ y: windowTitleTopMargin
111+ readonly property var highlightedSurface: root.model ? root.model.surfaceAt(root.highlightedIndex) : null
112+ readonly property var highlightedApp: root.model ? root.model.applicationAt(root.highlightedIndex) : null
113+ text: root.highlightedIndex >= 0 && highlightedSurface && highlightedSurface.name != "" ? highlightedSurface.name :
114+ highlightedApp ? highlightedApp.name : ""
115+ fontSize: root.height < units.gu(85) ? 'medium' : 'large'
116+ color: "white"
117+ opacity: root.highlightedIndex >= 0 ? 1 : 0
118+ Behavior on opacity { UbuntuNumberAnimation { } }
119+ }
120+
121+ Keys.onPressed: {
122+ switch (event.key) {
123+ case Qt.Key_Left:
124+ case Qt.Key_Backtab:
125+ selectPrevious(event.isAutoRepeat)
126+ event.accepted = true;
127+ break;
128+ case Qt.Key_Right:
129+ case Qt.Key_Tab:
130+ selectNext(event.isAutoRepeat)
131+ event.accepted = true;
132+ break;
133+ case Qt.Key_Escape:
134+ highlightedIndex = -1
135+ // Falling through intentionally
136+ case Qt.Key_Enter:
137+ case Qt.Key_Return:
138+ case Qt.Key_Space:
139+ root.leaveSpread();
140+ event.accepted = true;
141+ }
142+ }
143+
144+
145+ function selectNext(isAutoRepeat) {
146+ if (isAutoRepeat && highlightedIndex >= totalItemCount -1) {
147+ return; // AutoRepeat is not allowed to wrap around
148+ }
149+
150+ highlightedIndex = (highlightedIndex + 1) % totalItemCount;
151+ spreadFlickable.snap(highlightedIndex)
152+ }
153+
154+ function selectPrevious(isAutoRepeat) {
155+ if (isAutoRepeat && highlightedIndex == 0) {
156+ return; // AutoRepeat is not allowed to wrap around
157+ }
158+
159+ highlightedIndex = highlightedIndex - 1 >= 0 ? highlightedIndex - 1 : totalItemCount - 1;
160+ spreadFlickable.snap(highlightedIndex)
161+ }
162+}
qml/Stage/Spread/SpreadDelegateInputArea.qmlnew file+183
@@ -0,0 +1,183 @@
1+/*
2+ * Copyright (C) 2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+import Ubuntu.Components 1.3
19+import Ubuntu.Gestures 0.1
20+import "../../Components"
21+
22+Item {
23+ id: root
24+
25+ property bool closeable: true
26+ readonly property real minSpeedToClose: units.gu(40)
27+ property bool zeroVelocityCounts: false
28+
29+ readonly property alias distance: d.distance
30+
31+ signal clicked()
32+ signal close()
33+
34+ QtObject {
35+ id: d
36+ property real distance: 0
37+ property bool moving: false
38+ property var dragEvents: []
39+ property real dragVelocity: 0
40+ property int threshold: units.gu(2)
41+
42+ // Can be replaced with a fake implementation during tests
43+ // property var __getCurrentTimeMs: function () { return new Date().getTime() }
44+ property var __dateTime: new function() {
45+ this.getCurrentTimeMs = function() {return new Date().getTime()}
46+ }
47+
48+ function pushDragEvent(event) {
49+ var currentTime = __dateTime.getCurrentTimeMs()
50+ dragEvents.push([currentTime, event.x - event.startX, event.y - event.startY, getEventSpeed(currentTime, event)])
51+ cullOldDragEvents(currentTime)
52+ updateSpeed()
53+ }
54+
55+ function cullOldDragEvents(currentTime) {
56+ // cull events older than 50 ms but always keep the latest 2 events
57+ for (var numberOfCulledEvents = 0; numberOfCulledEvents < dragEvents.length-2; numberOfCulledEvents++) {
58+ // dragEvents[numberOfCulledEvents][0] is the dragTime
59+ if (currentTime - dragEvents[numberOfCulledEvents][0] <= 50) break
60+ }
61+
62+ dragEvents.splice(0, numberOfCulledEvents)
63+ }
64+
65+ function updateSpeed() {
66+ var totalSpeed = 0
67+ for (var i = 0; i < dragEvents.length; i++) {
68+ totalSpeed += dragEvents[i][3]
69+ }
70+
71+ if (zeroVelocityCounts || Math.abs(totalSpeed) > 0.001) {
72+ dragVelocity = totalSpeed / dragEvents.length * 1000
73+ }
74+ }
75+
76+ function getEventSpeed(currentTime, event) {
77+ if (dragEvents.length != 0) {
78+ var lastDrag = dragEvents[dragEvents.length-1]
79+ var duration = Math.max(1, currentTime - lastDrag[0])
80+ return (event.y - event.startY - lastDrag[2]) / duration
81+ } else {
82+ return 0
83+ }
84+ }
85+ }
86+
87+ // Event eater
88+ MouseArea {
89+ anchors.fill: parent
90+ onClicked: root.clicked()
91+ onWheel: wheel.accepted = true
92+ }
93+
94+ MultiPointTouchArea {
95+ anchors.fill: parent
96+ mouseEnabled: false
97+ maximumTouchPoints: 1
98+ property int offset: 0
99+
100+ touchPoints: [
101+ TouchPoint {
102+ id: tp
103+ }
104+ ]
105+
106+ onCanceled: {
107+ d.moving = false
108+ animation.animate("center");
109+ }
110+
111+ onTouchUpdated: {
112+ if (!d.moving) {
113+ if (Math.abs(tp.startY - tp.y) > d.threshold) {
114+ d.moving = true;
115+ d.dragEvents = []
116+ offset = tp.y - tp.startY;
117+ } else {
118+ return;
119+ }
120+ }
121+
122+ d.distance = tp.y - tp.startY - offset
123+ d.pushDragEvent(tp);
124+ }
125+
126+ onReleased: {
127+ if (!d.moving) {
128+ root.clicked()
129+ }
130+
131+ if (!root.closeable) {
132+ animation.animate("center")
133+ return;
134+ }
135+
136+ var touchPoint = touchPoints[0];
137+
138+ if ((d.dragVelocity < -root.minSpeedToClose && d.distance < -units.gu(8)) || d.distance < -root.height / 2) {
139+ animation.animate("up")
140+ } else if ((d.dragVelocity > root.minSpeedToClose && d.distance > units.gu(8)) || d.distance > root.height / 2) {
141+ animation.animate("down")
142+ } else {
143+ animation.animate("center")
144+ }
145+ }
146+ }
147+
148+ UbuntuNumberAnimation {
149+ id: animation
150+ objectName: "closeAnimation"
151+ target: d
152+ property: "distance"
153+ property bool requestClose: false
154+
155+ function animate(direction) {
156+ animation.from = dragArea.distance;
157+ switch (direction) {
158+ case "up":
159+ animation.to = -root.height * 1.5;
160+ requestClose = true;
161+ break;
162+ case "down":
163+ animation.to = root.height * 1.5;
164+ requestClose = true;
165+ break;
166+ default:
167+ animation.to = 0
168+ }
169+ animation.start();
170+ }
171+
172+ onRunningChanged: {
173+ if (!running) {
174+ d.moving = false;
175+ if (requestClose) {
176+ root.close();
177+ } else {
178+ d.distance = 0;
179+ }
180+ }
181+ }
182+ }
183+}
qml/Stage/Spread/SpreadMaths.qmlnew file+78
@@ -0,0 +1,78 @@
1+/*
2+ * Copyright (C) 2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+import Ubuntu.Components 1.3
19+import Utils 0.1
20+import "MathUtils.js" as MathUtils
21+
22+Item {
23+ id: root
24+ anchors { left: parent.left; top: parent.top; margins: units.gu(1) }
25+
26+ // Information about the environment
27+ property Item flickable: null
28+ property Spread spread: null
29+ property int itemIndex: 0
30+
31+ // Internal
32+ property real spreadPosition: itemIndex/spread.visibleItemCount - flickable.contentX/spread.spreadWidth // 0 -> left stack, 1 -> right stack
33+ property real leftStackingProgress: MathUtils.clamp(MathUtils.map(spreadPosition, 0, -spread.stackItemCount/spread.visibleItemCount , 0, 1), 0, 1)
34+ property real rightStackingProgress: MathUtils.clamp(MathUtils.map(spreadPosition, 1, 1 + spread.stackItemCount/spread.visibleItemCount , 0, 1), 0, 1)
35+ property real stackingX: (MathUtils.easeOutCubic(rightStackingProgress) - MathUtils.easeOutCubic(leftStackingProgress)) * spread.stackWidth
36+
37+
38+ QtObject {
39+ id: d
40+ property real spreadScale: MathUtils.clamp(
41+ MathUtils.map(spreadPosition, 0, 1, spread.leftStackScale, spread.rightStackScale),
42+ spread.leftStackScale, spread.rightStackScale)
43+
44+ property real selectedScale: (spread.highlightedIndex == itemIndex ? 1.01 : 1)
45+ Behavior on selectedScale { UbuntuNumberAnimation { duration: UbuntuAnimation.SnapDuration } }
46+
47+ }
48+
49+ // Output
50+ readonly property int targetX: spread.leftStackXPos +
51+ spread.spreadWidth * spread.curve.getYFromX(spreadPosition + spread.centeringOffset) +
52+ stackingX
53+
54+ readonly property int targetY: spread.contentTopMargin
55+
56+ readonly property real targetAngle: MathUtils.clamp(
57+ MathUtils.map(targetX, spread.leftStackXPos, spread.rightStackXPos, spread.dynamicLeftRotationAngle, spread.dynamicRightRotationAngle),
58+ Math.min(spread.dynamicLeftRotationAngle, spread.dynamicRightRotationAngle), Math.max(spread.dynamicLeftRotationAngle, spread.dynamicRightRotationAngle))
59+
60+
61+ readonly property real targetScale: d.spreadScale * d.selectedScale
62+
63+ readonly property real shadowOpacity: 0.2 * (1 - rightStackingProgress) * (1 - leftStackingProgress)
64+
65+
66+ readonly property real closeIconOffset: (targetScale - 1) * (-spread.stackHeight / 2)
67+
68+ readonly property real tileInfoOpacity: Math.min(MathUtils.clamp(MathUtils.map(leftStackingProgress, 0 , 1/(spread.stackItemCount*3), 1, 0), 0 , 1),
69+ MathUtils.clamp(MathUtils.map(spreadPosition, 0.9 , 1, 1, 0), 0 , 1)) /** MathUtils.map(curvedSwitcherProgress, 0.7, 0.9, 0, 1)*/
70+
71+ readonly property bool itemVisible: {
72+ var leftStackHidden = spreadPosition < -(spread.stackItemCount + 1)/spread.visibleItemCount
73+ // don't hide the rightmost
74+ var rightStackHidden = (spreadPosition > 1 + (spread.stackItemCount)/spread.visibleItemCount) && itemIndex !== spread.totalItemCount - 1
75+ return !leftStackHidden && !rightStackHidden
76+ }
77+
78+}
qml/Stage/Spread/StagedRightEdgeMaths.qmlnew file+174
@@ -0,0 +1,174 @@
1+/*
2+ * Copyright (C) 2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+import Ubuntu.Components 1.3
19+import Unity.Application 0.1
20+import "MathUtils.js" as MathUtils
21+
22+QtObject {
23+ id: root
24+
25+ // Input
26+ property int itemIndex: 0
27+ property real progress: 0
28+ property int sceneWidth: 0
29+ property int sideStageWidth: 0
30+ property int sceneHeight: 0
31+ property int targetX: 0
32+ property int startY: 0
33+ property int targetY: 0
34+ property real startAngle: 30
35+ property real targetAngle: 0
36+ property int targetHeight: 0
37+ property real startScale: 1.3
38+ property real targetScale: 0
39+ property real breakPoint: units.gu(15) / sceneWidth
40+
41+ property bool isMainStageApp: false
42+ property bool isSideStageApp: false
43+ property bool sideStageOpen: false
44+ property int nextInStack: 0
45+ property int shuffledZ: 0
46+
47+
48+ // Config
49+ property int tileDistance: units.gu(10)
50+
51+ // Output
52+
53+ readonly property real scaleToPreviewProgress: {
54+ return progress < breakPoint ? 0 : MathUtils.clamp(MathUtils.linearAnimation(breakPoint, 1, 0, 1, progress), 0, 1)
55+ }
56+ readonly property int animatedWidth: {
57+ return progress < breakPoint ? root.sceneHeight : MathUtils.linearAnimation(breakPoint, 1, root.sceneWidth, targetHeight, progress)
58+ }
59+
60+ readonly property int animatedHeight: {
61+ return progress < breakPoint ? root.sceneHeight : MathUtils.linearAnimation(breakPoint, 1, root.sceneHeight, targetHeight, progress)
62+ }
63+
64+
65+ readonly property int animatedX: {
66+ var nextStage = appRepeater.itemAt(nextInStack) ? appRepeater.itemAt(nextInStack).stage : ApplicationInfoInterface.MainStage;
67+
68+ var startX = 0;
69+ if (isMainStageApp) {
70+ if (progress < breakPoint) {
71+ if (nextStage == ApplicationInfoInterface.MainStage) {
72+ return MathUtils.linearAnimation(0, breakPoint, 0, -units.gu(4), progress);
73+ } else {
74+ return 0;
75+ }
76+ } else {
77+ if (nextStage == ApplicationInfoInterface.MainStage) {
78+ return MathUtils.linearAnimation(breakPoint, 1, -units.gu(4), targetX, progress);
79+ } else {
80+ return MathUtils.linearAnimation(breakPoint, 1, 0, targetX, progress);
81+ }
82+ }
83+ } else if (isSideStageApp) {
84+ startX = sceneWidth - sideStageWidth;
85+ } else if (itemIndex == nextInStack && itemIndex <= 2 && priv.sideStageDelegate && nextStage == ApplicationInfoInterface.MainStage) {
86+ startX = sceneWidth - sideStageWidth;
87+ } else {
88+ var stageCount = (priv.mainStageDelegate ? 1 : 0) + (priv.sideStageDelegate ? 1 : 0)
89+ startX = sceneWidth + Math.max(0, itemIndex - stageCount - 1) * tileDistance;
90+ }
91+
92+ if (itemIndex == nextInStack) {
93+ if (progress < breakPoint) {
94+ return MathUtils.linearAnimation(0, breakPoint, startX, startX * (1 - breakPoint), progress)
95+ }
96+ return MathUtils.linearAnimation(breakPoint, 1, startX * (1 - breakPoint), targetX, progress)
97+ }
98+
99+ if (progress < breakPoint) {
100+ return startX;
101+ }
102+
103+ return MathUtils.linearAnimation(breakPoint, 1, startX, targetX, progress)
104+
105+ }
106+
107+ readonly property int animatedY: progress < breakPoint ? startY : MathUtils.linearAnimation(breakPoint, 1, startY, targetY, progress)
108+
109+ readonly property int animatedZ: {
110+ if (progress < breakPoint + (1 - breakPoint) / 2) {
111+ return shuffledZ
112+ }
113+ return itemIndex;
114+ }
115+
116+ readonly property real animatedAngle: {
117+ var nextStage = appRepeater.itemAt(nextInStack) ? appRepeater.itemAt(nextInStack).stage : ApplicationInfoInterface.MainStage;
118+
119+ var startAngle = 0;
120+ if (isMainStageApp) {
121+ startAngle = 0;
122+ } else if (isSideStageApp) {
123+ startAngle = 0;
124+ } else {
125+ if (stage == ApplicationInfoInterface.SideStage && itemIndex == nextInStack && !sideStageOpen) {
126+ startAngle = 0;
127+ } else {
128+ startAngle = root.startAngle;
129+ }
130+ }
131+
132+ if ((itemIndex == nextInStack)
133+ || (isMainStageApp && nextStage === ApplicationInfoInterface.MainStage)
134+ || (isSideStageApp && nextStage === ApplicationInfoInterface.SideStage)) {
135+ return MathUtils.linearAnimation(0, 1, startAngle, targetAngle, progress);
136+ }
137+
138+ if (progress < breakPoint) {
139+ return 0;
140+ }
141+ return MathUtils.linearAnimation(breakPoint, 1, startAngle, targetAngle, progress);
142+ }
143+
144+ readonly property real animatedScale: {
145+ var pullingInSideStage = itemIndex == nextInStack && stage == ApplicationInfoInterface.SideStage && !sideStageOpen;
146+
147+ var startScale = 1;
148+ if (isMainStageApp) {
149+ startScale = 1;
150+ } else if (isSideStageApp) {
151+ startScale = 1;
152+ } else {
153+ if (pullingInSideStage) {
154+ startScale = 1
155+ } else {
156+ startScale = root.startScale;
157+ }
158+ }
159+
160+ if (progress < breakPoint) {
161+ if (itemIndex == nextInStack && (sideStageOpen || stage == ApplicationInfoInterface.MainStage)) {
162+ return MathUtils.linearAnimation(0, 1, startScale, targetScale, progress);
163+ }
164+ return startScale;
165+ }
166+ if (itemIndex == nextInStack) {
167+ return MathUtils.linearAnimation(0, 1, startScale, targetScale, progress)
168+ }
169+
170+ return MathUtils.linearAnimation(breakPoint, 1, startScale, targetScale, progress)
171+ }
172+
173+ readonly property bool itemVisible: true //animatedX < sceneWidth
174+}
qml/Stage/Spread/WindowedRightEdgeMaths.qmlnew file+81
@@ -0,0 +1,81 @@
1+/*
2+ * Copyright (C) 2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+import Ubuntu.Components 1.3
19+import Unity.Application 0.1
20+import "MathUtils.js" as MathUtils
21+
22+QtObject {
23+ id: root
24+
25+ // Input
26+ property int itemIndex: 0
27+ property int normalZ: 0
28+ property real progress: 0
29+ property int startWidth: 0
30+ property int startHeight: 0
31+ property int startX: 0
32+ property int targetX: 0
33+ property int startY: 0
34+ property int targetY: 0
35+// property real startAngle: 40
36+ property real targetAngle: 0
37+ property int targetHeight: 0
38+ property real targetScale: 0
39+
40+ // Config
41+ property real breakPoint: 0.4
42+
43+ // Output
44+
45+ readonly property real scaleToPreviewProgress: {
46+ return progress < breakPoint ? 0 : MathUtils.clamp(MathUtils.linearAnimation(breakPoint, 1, 0, 1, progress), 0, 1)
47+ }
48+ readonly property int animatedWidth: {
49+ return progress < breakPoint ? root.startWidth : MathUtils.linearAnimation(breakPoint, 1, root.startWidth, targetHeight, progress)
50+ }
51+
52+ readonly property int animatedHeight: {
53+ return progress < breakPoint ? root.startHeight : MathUtils.linearAnimation(breakPoint, 1, root.startHeight, targetHeight, progress)
54+ }
55+
56+ readonly property int animatedX: {
57+ if (progress < breakPoint) {
58+ return startX;
59+ }
60+ return MathUtils.linearAnimation(breakPoint, 1, startX, targetX, progress)
61+ }
62+
63+ readonly property int animatedY: progress < breakPoint ? startY : MathUtils.linearAnimation(breakPoint, 1, startY, targetY, progress)
64+
65+ readonly property real animatedAngle: progress < breakPoint ? 0 : MathUtils.linearAnimation(breakPoint, 1, 0, targetAngle, progress);
66+
67+ readonly property real decorationHeight: progress < breakPoint ? 1 : MathUtils.linearAnimation(breakPoint, 1, 1, 0, progress);
68+
69+ readonly property int animatedZ: {
70+ if (progress < breakPoint + (1 - breakPoint) / 2) {
71+ return itemIndex == 1 ? normalZ + 2 : normalZ
72+ }
73+ return itemIndex
74+ }
75+
76+ readonly property real opacityMask: itemIndex == 1 ? MathUtils.linearAnimation(0, breakPoint, 0, 1, progress) : 1
77+
78+ readonly property real animatedScale: progress < breakPoint ? 1 : MathUtils.linearAnimation(breakPoint, 1, 1, targetScale, progress)
79+
80+// readonly property bool itemVisible: true //animatedX < sceneWidth
81+}
qml/Stage/Spread/cubic-bezier.jsnew file+39
@@ -0,0 +1,39 @@
1+/*
2+ * Copyright (C) 2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+//====================================\\
18+// 13thParallel.org Beziér Curve Code \\
19+// by Dan Pupius (www.pupius.net) \\
20+//====================================\\
21+
22+
23+var coord = function (x,y) {
24+ if(!x) var x=0;
25+ if(!y) var y=0;
26+ return {x: x, y: y};
27+}
28+
29+function B4(t) { return t*t*t }
30+function B3(t) { return 3*t*t*(1-t) }
31+function B2(t) { return 3*t*(1-t)*(1-t) }
32+function B1(t) { return (1-t)*(1-t)*(1-t) }
33+
34+var getBezier = function(percent,C1,C2,C3,C4) {
35+ var pos = new coord();
36+ pos.x = C1.x*B1(percent) + C2.x*B2(percent) + C3.x*B3(percent) + C4.x*B4(percent);
37+ pos.y = C1.y*B1(percent) + C2.y*B2(percent) + C3.y*B3(percent) + C4.y*B4(percent);
38+ return pos;
39+}
qml/Stages/SpreadDelegate.qml → qml/Stage/SpreadDelegate.qmlrenamed

The content is the same.

qml/Stages/SpreadMaths.qml → qml/Stage/SpreadMaths.qmlrenamed

The content is the same.

qml/Stage/Stage.qmlnew file+1883
@@ -0,0 +1,1883 @@
1+/*
2+ * Copyright (C) 2014-2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+import Ubuntu.Components 1.3
19+import Unity.Application 0.1
20+import "../Components/PanelState"
21+import "../Components"
22+import Utils 0.1
23+import Ubuntu.Gestures 0.1
24+import GlobalShortcut 1.0
25+import GSettings 1.0
26+import "Spread"
27+import "Spread/MathUtils.js" as MathUtils
28+
29+FocusScope {
30+ id: root
31+ anchors.fill: parent
32+
33+ property QtObject applicationManager
34+ property QtObject topLevelSurfaceList
35+ property bool altTabPressed
36+ property url background
37+ property int dragAreaWidth
38+ property bool interactive
39+ property bool keepDashRunning: true
40+ property real nativeHeight
41+ property real nativeWidth
42+ property QtObject orientations
43+ property int shellOrientation
44+ property int shellOrientationAngle
45+ property bool spreadEnabled: true // If false, animations and right edge will be disabled
46+ property bool suspended
47+ property int leftMargin: 0
48+ property bool oskEnabled: false
49+ property rect inputMethodRect
50+
51+ // Configuration
52+ property string mode: "staged"
53+ property real leftEdgeDragProgress: 0
54+
55+ // Used by the tutorial code
56+ readonly property bool spreadShown: state == "spread"
57+ readonly property real rightEdgeDragProgress: rightEdgeDragArea.progress // How far left the stage has been dragged
58+
59+ // used by the snap windows (edge maximize) feature
60+ readonly property alias previewRectangle: fakeRectangle
61+
62+ readonly property var mainApp: priv.focusedAppDelegate ? priv.focusedAppDelegate.application : null
63+
64+ // application windows never rotate independently
65+ property int mainAppWindowOrientationAngle: shellOrientationAngle
66+
67+ property bool orientationChangesEnabled: priv.focusedAppDelegate && priv.focusedAppDelegate.orientationChangesEnabled
68+
69+ property int supportedOrientations: {
70+ if (mainApp) {
71+ switch (mode) {
72+ case "staged":
73+ return mainApp.supportedOrientations;
74+ case "stagedWithSideStage":
75+ var orientations = mainApp.supportedOrientations;
76+ orientations |= Qt.LandscapeOrientation | Qt.InvertedLandscapeOrientation;
77+ if (priv.sideStageItemId) {
78+ // If we have a sidestage app, support Portrait orientation
79+ // so that it will switch the sidestage app to mainstage on rotate to portrait
80+ orientations |= Qt.PortraitOrientation|Qt.InvertedPortraitOrientation;
81+ }
82+ return orientations;
83+ }
84+ }
85+
86+ return Qt.PortraitOrientation |
87+ Qt.LandscapeOrientation |
88+ Qt.InvertedPortraitOrientation |
89+ Qt.InvertedLandscapeOrientation;
90+ }
91+
92+
93+ onAltTabPressedChanged: priv.goneToSpread = altTabPressed
94+
95+ property Item itemConfiningMouseCursor: !spreadShown && priv.focusedAppDelegate && priv.focusedAppDelegate.surface &&
96+ priv.focusedAppDelegate.surface.confinesMousePointer ?
97+ priv.focusedAppDelegate.clientAreaItem : null;
98+
99+ signal itemSnapshotRequested(Item item)
100+
101+ // functions to be called from outside
102+ function updateFocusedAppOrientation() { /* TODO */ }
103+ function updateFocusedAppOrientationAnimated() { /* TODO */}
104+ function pushRightEdge(amount) {
105+ edgeBarrier.push(amount);
106+ }
107+
108+ onSpreadEnabledChanged: {
109+ if (!spreadEnabled && root.state == "spread") {
110+ priv.goneToSpread = false;
111+ }
112+ }
113+
114+ GSettings {
115+ id: lifecycleExceptions
116+ schema.id: "com.canonical.qtmir"
117+ }
118+
119+ function isExemptFromLifecycle(appId) {
120+ var shortAppId = appId.split('_')[0];
121+ for (var i = 0; i < lifecycleExceptions.lifecycleExemptAppids.length; i++) {
122+ if (shortAppId === lifecycleExceptions.lifecycleExemptAppids[i]) {
123+ return true;
124+ }
125+ }
126+ return false;
127+ }
128+
129+ GlobalShortcut {
130+ id: closeFocusedShortcut
131+ shortcut: Qt.AltModifier|Qt.Key_F4
132+ onTriggered: {
133+ if (priv.focusedAppDelegate && !priv.focusedAppDelegate.isDash) {
134+ priv.focusedAppDelegate.close();
135+ }
136+ }
137+ }
138+
139+ GlobalShortcut {
140+ id: showSpreadShortcut
141+ shortcut: Qt.MetaModifier|Qt.Key_W
142+ onTriggered: priv.goneToSpread = true
143+ }
144+
145+ GlobalShortcut {
146+ id: minimizeAllShortcut
147+ shortcut: Qt.MetaModifier|Qt.ControlModifier|Qt.Key_D
148+ onTriggered: priv.minimizeAllWindows()
149+ active: root.state == "windowed"
150+ }
151+
152+ GlobalShortcut {
153+ id: maximizeWindowShortcut
154+ shortcut: Qt.MetaModifier|Qt.ControlModifier|Qt.Key_Up
155+ onTriggered: priv.focusedAppDelegate.maximize()
156+ active: root.state == "windowed" && priv.focusedAppDelegate && priv.focusedAppDelegate.canBeMaximized
157+ }
158+
159+ GlobalShortcut {
160+ id: maximizeWindowLeftShortcut
161+ shortcut: Qt.MetaModifier|Qt.ControlModifier|Qt.Key_Left
162+ onTriggered: priv.focusedAppDelegate.maximizeLeft()
163+ active: root.state == "windowed" && priv.focusedAppDelegate && priv.focusedAppDelegate.canBeMaximizedLeftRight
164+ }
165+
166+ GlobalShortcut {
167+ id: maximizeWindowRightShortcut
168+ shortcut: Qt.MetaModifier|Qt.ControlModifier|Qt.Key_Right
169+ onTriggered: priv.focusedAppDelegate.maximizeRight()
170+ active: root.state == "windowed" && priv.focusedAppDelegate && priv.focusedAppDelegate.canBeMaximizedLeftRight
171+ }
172+
173+ GlobalShortcut {
174+ id: minimizeRestoreShortcut
175+ shortcut: Qt.MetaModifier|Qt.ControlModifier|Qt.Key_Down
176+ onTriggered: priv.focusedAppDelegate.anyMaximized
177+ ? priv.focusedAppDelegate.restoreFromMaximized() : priv.focusedAppDelegate.minimize()
178+ active: root.state == "windowed" && priv.focusedAppDelegate
179+ }
180+
181+ GlobalShortcut {
182+ shortcut: Qt.AltModifier|Qt.Key_Print
183+ onTriggered: root.itemSnapshotRequested(priv.focusedAppDelegate)
184+ active: priv.focusedAppDelegate !== null
185+ }
186+
187+ QtObject {
188+ id: priv
189+ objectName: "DesktopStagePrivate"
190+
191+ property var focusedAppDelegate: null
192+ property var foregroundMaximizedAppDelegate: null // for stuff like drop shadow and focusing maximized app by clicking panel
193+
194+ property bool goneToSpread: false
195+ property int closingIndex: -1
196+ property int animationDuration: UbuntuAnimation.FastDuration
197+
198+ function updateForegroundMaximizedApp() {
199+ var found = false;
200+ for (var i = 0; i < appRepeater.count && !found; i++) {
201+ var item = appRepeater.itemAt(i);
202+ if (item && item.visuallyMaximized) {
203+ foregroundMaximizedAppDelegate = item;
204+ found = true;
205+ }
206+ }
207+ if (!found) {
208+ foregroundMaximizedAppDelegate = null;
209+ }
210+ }
211+
212+ function minimizeAllWindows() {
213+ for (var i = 0; i < appRepeater.count; i++) {
214+ var appDelegate = appRepeater.itemAt(i);
215+ if (appDelegate && !appDelegate.minimized) {
216+ appDelegate.minimize();
217+ }
218+ }
219+ }
220+
221+ function focusNext() {
222+ for (var i = 0; i < appRepeater.count; i++) {
223+ var appDelegate = appRepeater.itemAt(i);
224+ if (appDelegate && !appDelegate.minimized) {
225+ appDelegate.focus = true;
226+ return;
227+ }
228+ }
229+ }
230+
231+ readonly property bool sideStageEnabled: root.mode === "stagedWithSideStage" &&
232+ (root.shellOrientation == Qt.LandscapeOrientation ||
233+ root.shellOrientation == Qt.InvertedLandscapeOrientation)
234+
235+ property var mainStageDelegate: null
236+ property var sideStageDelegate: null
237+ property int mainStageItemId: 0
238+ property int sideStageItemId: 0
239+ property string mainStageAppId: ""
240+ property string sideStageAppId: ""
241+
242+ onSideStageDelegateChanged: {
243+ if (!sideStageDelegate) {
244+ sideStage.hide();
245+ }
246+ }
247+
248+ function updateMainAndSideStageIndexes() {
249+ if (root.mode != "stagedWithSideStage") {
250+ priv.sideStageDelegate = null;
251+ priv.sideStageItemId = 0;
252+ priv.sideStageAppId = "";
253+ priv.mainStageDelegate = appRepeater.itemAt(0);
254+ priv.mainStageAppId = topLevelSurfaceList.idAt(0);
255+ priv.mainStageAppId = topLevelSurfaceList.applicationAt(0) ? topLevelSurfaceList.applicationAt(0).appId : ""
256+ return;
257+ }
258+
259+ var choseMainStage = false;
260+ var choseSideStage = false;
261+
262+ if (!root.topLevelSurfaceList)
263+ return;
264+
265+ for (var i = 0; i < appRepeater.count && (!choseMainStage || !choseSideStage); ++i) {
266+ var appDelegate = appRepeater.itemAt(i);
267+ if (!appDelegate) {
268+ // This might happen during startup phase... If the delegate appears and claims focus
269+ // things are updated and appRepeater.itemAt(x) still returns null while appRepeater.count >= x
270+ // Lets just skip it, on startup it will be generated at a later point too...
271+ continue;
272+ }
273+ if (sideStage.shown && appDelegate.stage == ApplicationInfoInterface.SideStage
274+ && !choseSideStage) {
275+ priv.sideStageDelegate = appDelegate
276+ priv.sideStageItemId = root.topLevelSurfaceList.idAt(i);
277+ priv.sideStageAppId = root.topLevelSurfaceList.applicationAt(i).appId;
278+ choseSideStage = true;
279+ } else if (!choseMainStage && appDelegate.stage == ApplicationInfoInterface.MainStage) {
280+ priv.mainStageDelegate = appDelegate;
281+ priv.mainStageItemId = root.topLevelSurfaceList.idAt(i);
282+ priv.mainStageAppId = root.topLevelSurfaceList.applicationAt(i).appId;
283+ choseMainStage = true;
284+ }
285+ }
286+ if (!choseMainStage && priv.mainStageDelegate) {
287+ priv.mainStageDelegate = null;
288+ priv.mainStageItemId = 0;
289+ priv.mainStageAppId = "";
290+ }
291+ if (!choseSideStage && priv.sideStageDelegate) {
292+ priv.sideStageDelegate = null;
293+ priv.sideStageItemId = 0;
294+ priv.sideStageAppId = "";
295+ }
296+ }
297+
298+ property int nextInStack: {
299+ var mainStageIndex = priv.mainStageDelegate ? priv.mainStageDelegate.itemIndex : -1;
300+ var sideStageIndex = priv.sideStageDelegate ? priv.sideStageDelegate.itemIndex : -1;
301+ if (sideStageIndex == -1) {
302+ return topLevelSurfaceList.count > 1 ? 1 : -1;
303+ }
304+ if (mainStageIndex == 0 || sideStageIndex == 0) {
305+ if (mainStageIndex == 1 || sideStageIndex == 1) {
306+ return topLevelSurfaceList.count > 2 ? 2 : -1;
307+ }
308+ return 1;
309+ }
310+ return -1;
311+ }
312+
313+ readonly property real virtualKeyboardHeight: root.inputMethodRect.height
314+ }
315+
316+ Component.onCompleted: priv.updateMainAndSideStageIndexes();
317+
318+ Connections {
319+ target: PanelState
320+ onCloseClicked: { if (priv.focusedAppDelegate) { priv.focusedAppDelegate.close(); } }
321+ onMinimizeClicked: { if (priv.focusedAppDelegate) { priv.focusedAppDelegate.minimize(); } }
322+ onRestoreClicked: { if (priv.focusedAppDelegate) { priv.focusedAppDelegate.restoreFromMaximized(); } }
323+ }
324+
325+ Binding {
326+ target: PanelState
327+ property: "buttonsVisible"
328+ value: priv.focusedAppDelegate !== null && priv.focusedAppDelegate.maximized // FIXME for Locally integrated menus
329+ }
330+
331+ Binding {
332+ target: PanelState
333+ property: "title"
334+ value: {
335+ if (priv.focusedAppDelegate !== null) {
336+ if (priv.focusedAppDelegate.maximized)
337+ return priv.focusedAppDelegate.title
338+ else
339+ return priv.focusedAppDelegate.appName
340+ }
341+ return ""
342+ }
343+ when: priv.focusedAppDelegate
344+ }
345+
346+ Binding {
347+ target: PanelState
348+ property: "dropShadow"
349+ value: priv.focusedAppDelegate && !priv.focusedAppDelegate.maximized && priv.foregroundMaximizedAppDelegate !== null && mode == "windowed"
350+ }
351+
352+ Binding {
353+ target: PanelState
354+ property: "closeButtonShown"
355+ value: priv.focusedAppDelegate && priv.focusedAppDelegate.maximized && !priv.focusedAppDelegate.isDash
356+ }
357+
358+ Component.onDestruction: {
359+ PanelState.title = "";
360+ PanelState.buttonsVisible = false;
361+ PanelState.dropShadow = false;
362+ }
363+
364+ Instantiator {
365+ model: root.applicationManager
366+ delegate: QtObject {
367+ property var stateBinding: Binding {
368+ readonly property bool isDash: model.application ? model.application.appId == "unity8-dash" : false
369+ target: model.application
370+ property: "requestedState"
371+
372+ // TODO: figure out some lifecycle policy, like suspending minimized apps
373+ // or something if running windowed.
374+ // TODO: If the device has a dozen suspended apps because it was running
375+ // in staged mode, when it switches to Windowed mode it will suddenly
376+ // resume all those apps at once. We might want to avoid that.
377+ value: root.mode === "windowed"
378+ || (isDash && root.keepDashRunning)
379+ || (!root.suspended && model.application && priv.focusedAppDelegate &&
380+ (priv.focusedAppDelegate.appId === model.application.appId ||
381+ priv.mainStageAppId === model.application.appId ||
382+ priv.sideStageAppId === model.application.appId))
383+ ? ApplicationInfoInterface.RequestedRunning
384+ : ApplicationInfoInterface.RequestedSuspended
385+ }
386+
387+ property var lifecycleBinding: Binding {
388+ target: model.application
389+ property: "exemptFromLifecycle"
390+ value: model.application
391+ ? (!model.application.isTouchApp || isExemptFromLifecycle(model.application.appId))
392+ : false
393+ }
394+ }
395+ }
396+
397+ Binding {
398+ target: MirFocusController
399+ property: "focusedSurface"
400+ value: priv.focusedAppDelegate ? priv.focusedAppDelegate.focusedSurface : null
401+ when: !appRepeater.startingUp && root.parent
402+ }
403+
404+ states: [
405+ State {
406+ name: "spread"; when: priv.goneToSpread
407+ PropertyChanges { target: floatingFlickable; enabled: true }
408+ PropertyChanges { target: spreadItem; focus: true }
409+ PropertyChanges { target: hoverMouseArea; enabled: true }
410+ PropertyChanges { target: rightEdgeDragArea; enabled: false }
411+ PropertyChanges { target: cancelSpreadMouseArea; enabled: true }
412+ },
413+ State {
414+ name: "stagedRightEdge"; when: (rightEdgeDragArea.dragging || edgeBarrier.progress > 0) && root.mode == "staged"
415+ },
416+ State {
417+ name: "sideStagedRightEdge"; when: (rightEdgeDragArea.dragging || edgeBarrier.progress > 0) && root.mode == "stagedWithSideStage"
418+ PropertyChanges {
419+ target: sideStage
420+ opacity: priv.sideStageDelegate.x === sideStage.x ? 1 : 0
421+ visible: true
422+ }
423+ },
424+ State {
425+ name: "windowedRightEdge"; when: (rightEdgeDragArea.dragging || edgeBarrier.progress > 0) && root.mode == "windowed"
426+ },
427+ State {
428+ name: "staged"; when: root.mode === "staged"
429+ },
430+ State {
431+ name: "stagedWithSideStage"; when: root.mode === "stagedWithSideStage"
432+ PropertyChanges { target: triGestureArea; enabled: true }
433+ PropertyChanges { target: sideStage; visible: true }
434+ },
435+ State {
436+ name: "windowed"; when: root.mode === "windowed"
437+ }
438+ ]
439+ transitions: [
440+ Transition {
441+ from: "stagedRightEdge,sideStagedRightEdge,windowedRightEdge"; to: "spread"
442+ PropertyAction { target: spreadItem; property: "highlightedIndex"; value: -1 }
443+ },
444+ Transition {
445+ to: "spread"
446+ PropertyAction { target: spreadItem; property: "highlightedIndex"; value: appRepeater.count > 1 ? 1 : 0 }
447+ PropertyAction { target: floatingFlickable; property: "contentX"; value: 0 }
448+ },
449+ Transition {
450+ from: "spread"
451+ SequentialAnimation {
452+ ScriptAction {
453+ script: {
454+ var item = appRepeater.itemAt(Math.max(0, spreadItem.highlightedIndex));
455+ if (item.stage == ApplicationInfoInterface.SideStage && !sideStage.shown) {
456+ sideStage.show();
457+ }
458+ item.playFocusAnimation();
459+ }
460+ }
461+ PropertyAction { target: spreadItem; property: "highlightedIndex"; value: -1 }
462+ }
463+ },
464+ Transition {
465+ to: "stagedRightEdge"
466+ PropertyAction { target: floatingFlickable; property: "contentX"; value: 0 }
467+ },
468+ Transition {
469+ to: "stagedWithSideStage"
470+ ScriptAction { script: priv.updateMainAndSideStageIndexes(); }
471+ }
472+
473+ ]
474+
475+ MouseArea {
476+ id: cancelSpreadMouseArea
477+ anchors.fill: parent
478+ enabled: false
479+ onClicked: priv.goneToSpread = false
480+ }
481+
482+ FocusScope {
483+ id: appContainer
484+ objectName: "appContainer"
485+ anchors.fill: parent
486+ focus: true
487+
488+ Wallpaper {
489+ id: wallpaper
490+ anchors.fill: parent
491+ source: root.background
492+ // Make sure it's the lowest item. Due to the left edge drag we sometimes need
493+ // to put the dash at -1 and we don't want it behind the Wallpaper
494+ z: -2
495+ }
496+
497+ Spread {
498+ id: spreadItem
499+ objectName: "spreadItem"
500+ anchors.fill: appContainer
501+ leftMargin: root.leftMargin
502+ model: root.topLevelSurfaceList
503+ spreadFlickable: floatingFlickable
504+ z: 10
505+
506+ onLeaveSpread: {
507+ priv.goneToSpread = false;
508+ }
509+ }
510+
511+ Connections {
512+ target: root.topLevelSurfaceList
513+ onListChanged: priv.updateMainAndSideStageIndexes()
514+ }
515+
516+
517+ DropArea {
518+ objectName: "MainStageDropArea"
519+ anchors {
520+ left: parent.left
521+ top: parent.top
522+ bottom: parent.bottom
523+ }
524+ width: appContainer.width - sideStage.width
525+ enabled: sideStage.enabled
526+
527+ onDropped: {
528+ drop.source.appDelegate.saveStage(ApplicationInfoInterface.MainStage);
529+ drop.source.appDelegate.focus = true;
530+ }
531+ keys: "SideStage"
532+ }
533+
534+ SideStage {
535+ id: sideStage
536+ objectName: "sideStage"
537+ shown: false
538+ height: appContainer.height
539+ x: appContainer.width - width
540+ visible: false
541+ Behavior on opacity { UbuntuNumberAnimation {} }
542+ z: {
543+ if (!priv.mainStageItemId) return 0;
544+
545+ if (priv.sideStageItemId && priv.nextInStack > 0) {
546+
547+ // Due the order in which bindings are evaluated, this might be triggered while shuffling
548+ // the list and index doesn't yet match with itemIndex (even though itemIndex: index)
549+ // Let's walk the list and compare itemIndex to make sure we have the correct one.
550+ var nextDelegateInStack = -1;
551+ for (var i = 0; i < appRepeater.count; i++) {
552+ if (appRepeater.itemAt(i).itemIndex == priv.nextInStack) {
553+ nextDelegateInStack = appRepeater.itemAt(i);
554+ break;
555+ }
556+ }
557+
558+ if (nextDelegateInStack.stage === ApplicationInfoInterface.MainStage) {
559+ // if the next app in stack is a main stage app, put the sidestage on top of it.
560+ return 2;
561+ }
562+ return 1;
563+ }
564+
565+ return 1;
566+ }
567+
568+ onShownChanged: {
569+ if (!shown && priv.mainStageDelegate) {
570+ priv.mainStageDelegate.claimFocus();
571+ }
572+ }
573+
574+ DropArea {
575+ id: sideStageDropArea
576+ objectName: "SideStageDropArea"
577+ anchors.fill: parent
578+
579+ property bool dropAllowed: true
580+
581+ onEntered: {
582+ dropAllowed = drag.keys != "Disabled";
583+ }
584+ onExited: {
585+ dropAllowed = true;
586+ }
587+ onDropped: {
588+ if (drop.keys == "MainStage") {
589+ drop.source.appDelegate.saveStage(ApplicationInfoInterface.SideStage);
590+ drop.source.appDelegate.focus = true;
591+ }
592+ }
593+ drag {
594+ onSourceChanged: {
595+ if (!sideStageDropArea.drag.source) {
596+ dropAllowed = true;
597+ }
598+ }
599+ }
600+ }
601+ }
602+
603+ TopLevelSurfaceRepeater {
604+ id: appRepeater
605+ model: topLevelSurfaceList
606+ objectName: "appRepeater"
607+
608+ delegate: FocusScope {
609+ id: appDelegate
610+ objectName: "appDelegate_" + model.id
611+ property int itemIndex: index // We need this from outside the repeater
612+ // z might be overriden in some cases by effects, but we need z ordering
613+ // to calculate occlusion detection
614+ property int normalZ: topLevelSurfaceList.count - index
615+ onNormalZChanged: {
616+ if (visuallyMaximized) {
617+ priv.updateForegroundMaximizedApp();
618+ }
619+ }
620+ z: normalZ
621+
622+ // Normally we want x/y where we request it to be. Width/height of our delegate will
623+ // match what the actual surface size is.
624+ // Don't write to those, they will be set by states
625+ x: requestedX
626+ y: requestedY
627+ width: decoratedWindow.implicitWidth
628+ height: decoratedWindow.implicitHeight
629+
630+ // requestedX/Y/width/height is what we ask the actual surface to be.
631+ // Do not write to those, they will be set by states
632+ property real requestedX: windowedX
633+ property real requestedY: windowedY
634+ property real requestedWidth: windowedWidth
635+ property real requestedHeight: windowedHeight
636+
637+ // In those are for windowed mode. Those values basically store the window's properties
638+ // when having a floating window. If you want to move/resize a window in normal mode, this is what you want to write to.
639+ property real windowedX
640+ property real windowedY
641+ property real windowedWidth
642+ property real windowedHeight
643+
644+ // unlike windowedX/Y, this is the last known grab position before being pushed against edges/corners
645+ // when restoring, the window should return to these, not to the place where it was dropped near the edge
646+ property real restoredX
647+ property real restoredY
648+
649+ Binding {
650+ target: appDelegate
651+ property: "y"
652+ value: appDelegate.requestedY -
653+ Math.min(appDelegate.requestedY - PanelState.panelHeight,
654+ Math.max(0, priv.virtualKeyboardHeight - (appContainer.height - (appDelegate.requestedY + appDelegate.height))))
655+ when: root.oskEnabled && appDelegate.focus && (appDelegate.state == "normal" || appDelegate.state == "restored")
656+ && root.inputMethodRect.height > 0
657+
658+ }
659+
660+ Behavior on x { id: xBehavior; enabled: priv.closingIndex >= 0; UbuntuNumberAnimation { onRunningChanged: if (!running) priv.closingIndex = -1} }
661+
662+ Connections {
663+ target: root
664+ onShellOrientationAngleChanged: {
665+ // at this point decoratedWindow.surfaceOrientationAngle is the old shellOrientationAngle
666+ if (application && application.rotatesWindowContents) {
667+ if (root.state == "windowed") {
668+ var angleDiff = decoratedWindow.surfaceOrientationAngle - shellOrientationAngle;
669+ angleDiff = (360 + angleDiff) % 360;
670+ if (angleDiff === 90 || angleDiff === 270) {
671+ var aux = decoratedWindow.requestedHeight;
672+ decoratedWindow.requestedHeight = decoratedWindow.requestedWidth + decoratedWindow.decorationHeight;
673+ decoratedWindow.requestedWidth = aux - decoratedWindow.decorationHeight;
674+ }
675+ }
676+ decoratedWindow.surfaceOrientationAngle = shellOrientationAngle;
677+ } else {
678+ decoratedWindow.surfaceOrientationAngle = 0;
679+ }
680+ }
681+ }
682+ Connections {
683+ target: priv
684+ onSideStageEnabledChanged: refreshStage()
685+ }
686+
687+ readonly property alias application: decoratedWindow.application
688+ readonly property alias minimumWidth: decoratedWindow.minimumWidth
689+ readonly property alias minimumHeight: decoratedWindow.minimumHeight
690+ readonly property alias maximumWidth: decoratedWindow.maximumWidth
691+ readonly property alias maximumHeight: decoratedWindow.maximumHeight
692+ readonly property alias widthIncrement: decoratedWindow.widthIncrement
693+ readonly property alias heightIncrement: decoratedWindow.heightIncrement
694+
695+ readonly property bool maximized: windowState === WindowStateStorage.WindowStateMaximized
696+ readonly property bool maximizedLeft: windowState === WindowStateStorage.WindowStateMaximizedLeft
697+ readonly property bool maximizedRight: windowState === WindowStateStorage.WindowStateMaximizedRight
698+ readonly property bool maximizedHorizontally: windowState === WindowStateStorage.WindowStateMaximizedHorizontally
699+ readonly property bool maximizedVertically: windowState === WindowStateStorage.WindowStateMaximizedVertically
700+ readonly property bool maximizedTopLeft: windowState === WindowStateStorage.WindowStateMaximizedTopLeft
701+ readonly property bool maximizedTopRight: windowState === WindowStateStorage.WindowStateMaximizedTopRight
702+ readonly property bool maximizedBottomLeft: windowState === WindowStateStorage.WindowStateMaximizedBottomLeft
703+ readonly property bool maximizedBottomRight: windowState === WindowStateStorage.WindowStateMaximizedBottomRight
704+ readonly property bool anyMaximized: maximized || maximizedLeft || maximizedRight || maximizedHorizontally || maximizedVertically ||
705+ maximizedTopLeft || maximizedTopRight || maximizedBottomLeft || maximizedBottomRight
706+
707+ readonly property bool minimized: windowState & WindowStateStorage.WindowStateMinimized
708+ readonly property bool fullscreen: surface ? surface.state === Mir.FullscreenState : application.fullscreen
709+
710+ readonly property bool canBeMaximized: canBeMaximizedHorizontally && canBeMaximizedVertically
711+ readonly property bool canBeMaximizedLeftRight: (maximumWidth == 0 || maximumWidth >= appContainer.width/2) &&
712+ (maximumHeight == 0 || maximumHeight >= appContainer.height)
713+ readonly property bool canBeCornerMaximized: (maximumWidth == 0 || maximumWidth >= appContainer.width/2) &&
714+ (maximumHeight == 0 || maximumHeight >= appContainer.height/2)
715+ readonly property bool canBeMaximizedHorizontally: maximumWidth == 0 || maximumWidth >= appContainer.width
716+ readonly property bool canBeMaximizedVertically: maximumHeight == 0 || maximumHeight >= appContainer.height
717+ readonly property alias orientationChangesEnabled: decoratedWindow.orientationChangesEnabled
718+
719+ property int windowState: WindowStateStorage.WindowStateNormal
720+ property bool animationsEnabled: true
721+ property alias title: decoratedWindow.title
722+ readonly property string appName: model.application ? model.application.name : ""
723+ property bool visuallyMaximized: false
724+ property bool visuallyMinimized: false
725+ readonly property alias windowedTransitionRunning: windowedTransition.running
726+
727+ property int stage: ApplicationInfoInterface.MainStage
728+ function saveStage(newStage) {
729+ appDelegate.stage = newStage;
730+ WindowStateStorage.saveStage(appId, newStage);
731+ priv.updateMainAndSideStageIndexes()
732+ }
733+
734+ readonly property var surface: model.surface
735+ readonly property alias resizeArea: resizeArea
736+ readonly property alias focusedSurface: decoratedWindow.focusedSurface
737+ readonly property bool dragging: touchControls.overlayShown ? touchControls.dragging : decoratedWindow.dragging
738+
739+ readonly property string appId: model.application.appId
740+ readonly property bool isDash: appId == "unity8-dash"
741+ readonly property alias clientAreaItem: decoratedWindow.clientAreaItem
742+
743+ function claimFocus() {
744+ if (root.state == "spread") {
745+ spreadItem.highlightedIndex = index
746+ priv.goneToSpread = false;
747+ }
748+ if (root.mode == "stagedWithSideStage") {
749+ if (appDelegate.stage == ApplicationInfoInterface.SideStage && !sideStage.shown) {
750+ sideStage.show();
751+ }
752+ priv.updateMainAndSideStageIndexes();
753+ }
754+
755+ if (root.mode == "windowed") {
756+ appDelegate.restore(true /* animated */, appDelegate.windowState);
757+ } else {
758+ appDelegate.focus = true;
759+ }
760+ }
761+ Connections {
762+ target: model.surface
763+ onFocusRequested: {
764+ claimFocus();
765+ }
766+ }
767+ Connections {
768+ target: model.application
769+ onFocusRequested: {
770+ if (!model.surface) {
771+ // when an app has no surfaces, we assume there's only one entry representing it:
772+ // this delegate.
773+ claimFocus();
774+ } else {
775+ // if the application has surfaces, focus request should be at surface-level.
776+ }
777+ }
778+ }
779+
780+ onFocusChanged: {
781+ if (appRepeater.startingUp)
782+ return;
783+
784+ if (focus) {
785+ topLevelSurfaceList.raiseId(model.id);
786+ priv.focusedAppDelegate = appDelegate;
787+ } else if (!focus && priv.focusedAppDelegate === appDelegate && root.state != "spread") {
788+ priv.focusedAppDelegate = null;
789+ // FIXME: No idea why the Binding{} doens't update when focusedAppDelegate turns null
790+ MirFocusController.focusedSurface = null;
791+ }
792+ }
793+ Component.onCompleted: {
794+ if (application && application.rotatesWindowContents) {
795+ decoratedWindow.surfaceOrientationAngle = shellOrientationAngle;
796+ } else {
797+ decoratedWindow.surfaceOrientationAngle = 0;
798+ }
799+
800+ // First, cascade the newly created window, relative to the currently/old focused window.
801+ windowedX = priv.focusedAppDelegate ? priv.focusedAppDelegate.windowedX + units.gu(3) : (normalZ - 1) * units.gu(3)
802+ windowedY = priv.focusedAppDelegate ? priv.focusedAppDelegate.windowedY + units.gu(3) : normalZ * units.gu(3)
803+ // Now load any saved state. This needs to happen *after* the cascading!
804+ resizeArea.loadWindowState();
805+
806+ // NB: We're differentiating if this delegate was created in response to a new entry in the model
807+ // or if the Repeater is just populating itself with delegates to match the model it received.
808+ if (!appRepeater.startingUp) {
809+ // a top level window is always the focused one when it first appears, unfocusing
810+ // any preexisting one
811+ if (root.state == "spread") {
812+ spreadItem.highlightedIndex = index;
813+ }
814+ claimFocus();
815+ }
816+
817+ refreshStage();
818+ _constructing = false;
819+ }
820+ Component.onDestruction: {
821+ if (!root.parent) {
822+ // This stage is about to be destroyed. Don't mess up with the model at this point
823+ return;
824+ }
825+
826+ if (visuallyMaximized) {
827+ priv.updateForegroundMaximizedApp();
828+ }
829+
830+ if (focus) {
831+ // focus some other window
832+ for (var i = 0; i < appRepeater.count; i++) {
833+ var appDelegate = appRepeater.itemAt(i);
834+ if (appDelegate && !appDelegate.minimized && i != index) {
835+ appDelegate.focus = true;
836+ return;
837+ }
838+ }
839+ }
840+ }
841+
842+ onVisuallyMaximizedChanged: priv.updateForegroundMaximizedApp()
843+
844+ property bool _constructing: true;
845+ onStageChanged: {
846+ if (!_constructing) {
847+ priv.updateMainAndSideStageIndexes();
848+ }
849+ }
850+
851+ visible: (
852+ !visuallyMinimized
853+ && !greeter.fullyShown
854+ && (priv.foregroundMaximizedAppDelegate === null || priv.foregroundMaximizedAppDelegate.normalZ <= z)
855+ )
856+ || appDelegate.fullscreen
857+ || focusAnimation.running || rightEdgeFocusAnimation.running || hidingAnimation.running
858+
859+ function close() {
860+ model.surface.close();
861+ }
862+
863+ function maximize(animated) {
864+ animationsEnabled = (animated === undefined) || animated;
865+ windowState = WindowStateStorage.WindowStateMaximized;
866+ }
867+ function maximizeLeft(animated) {
868+ animationsEnabled = (animated === undefined) || animated;
869+ windowState = WindowStateStorage.WindowStateMaximizedLeft;
870+ }
871+ function maximizeRight(animated) {
872+ animationsEnabled = (animated === undefined) || animated;
873+ windowState = WindowStateStorage.WindowStateMaximizedRight;
874+ }
875+ function maximizeHorizontally(animated) {
876+ animationsEnabled = (animated === undefined) || animated;
877+ windowState = WindowStateStorage.WindowStateMaximizedHorizontally;
878+ }
879+ function maximizeVertically(animated) {
880+ animationsEnabled = (animated === undefined) || animated;
881+ windowState = WindowStateStorage.WindowStateMaximizedVertically;
882+ }
883+ function maximizeTopLeft(animated) {
884+ animationsEnabled = (animated === undefined) || animated;
885+ windowState = WindowStateStorage.WindowStateMaximizedTopLeft;
886+ }
887+ function maximizeTopRight(animated) {
888+ animationsEnabled = (animated === undefined) || animated;
889+ windowState = WindowStateStorage.WindowStateMaximizedTopRight;
890+ }
891+ function maximizeBottomLeft(animated) {
892+ animationsEnabled = (animated === undefined) || animated;
893+ windowState = WindowStateStorage.WindowStateMaximizedBottomLeft;
894+ }
895+ function maximizeBottomRight(animated) {
896+ animationsEnabled = (animated === undefined) || animated;
897+ windowState = WindowStateStorage.WindowStateMaximizedBottomRight;
898+ }
899+ function minimize(animated) {
900+ animationsEnabled = (animated === undefined) || animated;
901+ windowState |= WindowStateStorage.WindowStateMinimized; // add the minimized bit
902+ }
903+ function restoreFromMaximized(animated) {
904+ animationsEnabled = (animated === undefined) || animated;
905+ windowState = WindowStateStorage.WindowStateRestored;
906+ }
907+ function restore(animated,state) {
908+ animationsEnabled = (animated === undefined) || animated;
909+ windowState = state || WindowStateStorage.WindowStateRestored;
910+ windowState &= ~WindowStateStorage.WindowStateMinimized; // clear the minimized bit
911+ focus = true;
912+ }
913+
914+ function playFocusAnimation() {
915+ if (state == "stagedRightEdge") {
916+ // TODO: Can we drop this if and find something that always works?
917+ if (root.mode == "staged") {
918+ rightEdgeFocusAnimation.targetX = 0
919+ rightEdgeFocusAnimation.start()
920+ } else if (root.mode == "stagedWithSideStage") {
921+ rightEdgeFocusAnimation.targetX = appDelegate.stage == ApplicationInfoInterface.SideStage ? sideStage.x : 0
922+ rightEdgeFocusAnimation.start()
923+ }
924+ } else if (state == "windowedRightEdge" || state == "windowed") {
925+ claimFocus();
926+ } else {
927+ focusAnimation.start()
928+ }
929+ }
930+ function playHidingAnimation() {
931+ if (state != "windowedRightEdge") {
932+ hidingAnimation.start()
933+ }
934+ }
935+
936+ function refreshStage() {
937+ var newStage = ApplicationInfoInterface.MainStage;
938+ if (priv.sideStageEnabled) { // we're in lanscape rotation.
939+ if (!isDash && application && application.supportedOrientations & (Qt.PortraitOrientation|Qt.InvertedPortraitOrientation)) {
940+ var defaultStage = ApplicationInfoInterface.SideStage; // if application supports portrait, it defaults to sidestage.
941+ if (application.supportedOrientations & (Qt.LandscapeOrientation|Qt.InvertedLandscapeOrientation)) {
942+ // if it supports lanscape, it defaults to mainstage.
943+ defaultStage = ApplicationInfoInterface.MainStage;
944+ }
945+ newStage = WindowStateStorage.getStage(application.appId, defaultStage);
946+ }
947+ }
948+
949+ stage = newStage;
950+ if (focus && stage == ApplicationInfoInterface.SideStage && !sideStage.shown) {
951+ sideStage.show();
952+ }
953+ }
954+
955+ UbuntuNumberAnimation {
956+ id: focusAnimation
957+ target: appDelegate
958+ property: "scale"
959+ from: 0.98
960+ to: 1
961+ duration: UbuntuAnimation.SnapDuration
962+ onStarted: {
963+ topLevelSurfaceList.raiseId(model.id);
964+ }
965+ onStopped: {
966+ appDelegate.claimFocus();
967+ }
968+ }
969+ ParallelAnimation {
970+ id: rightEdgeFocusAnimation
971+ property int targetX: 0
972+ UbuntuNumberAnimation { target: appDelegate; properties: "x"; to: rightEdgeFocusAnimation.targetX; duration: priv.animationDuration }
973+ UbuntuNumberAnimation { target: decoratedWindow; properties: "angle"; to: 0; duration: priv.animationDuration }
974+ UbuntuNumberAnimation { target: decoratedWindow; properties: "itemScale"; to: 1; duration: priv.animationDuration }
975+ onStopped: {
976+ appDelegate.focus = true
977+ }
978+ }
979+ ParallelAnimation {
980+ id: hidingAnimation
981+ UbuntuNumberAnimation { target: appDelegate; property: "opacity"; to: 0; duration: priv.animationDuration }
982+ onStopped: appDelegate.opacity = 1
983+ }
984+
985+ SpreadMaths {
986+ id: spreadMaths
987+ spread: spreadItem
988+ itemIndex: index
989+ flickable: floatingFlickable
990+ }
991+ StageMaths {
992+ id: stageMaths
993+ sceneWidth: root.width
994+ stage: appDelegate.stage
995+ thisDelegate: appDelegate
996+ mainStageDelegate: priv.mainStageDelegate
997+ sideStageDelegate: priv.sideStageDelegate
998+ sideStageWidth: sideStage.panelWidth
999+ sideStageX: sideStage.x
1000+ itemIndex: appDelegate.itemIndex
1001+ nextInStack: priv.nextInStack
1002+ leftEdgeDragProgress: root.leftEdgeDragProgress
1003+ }
1004+
1005+ StagedRightEdgeMaths {
1006+ id: stagedRightEdgeMaths
1007+ sceneWidth: appContainer.width - root.leftMargin
1008+ sceneHeight: appContainer.height
1009+ isMainStageApp: priv.mainStageDelegate == appDelegate
1010+ isSideStageApp: priv.sideStageDelegate == appDelegate
1011+ sideStageWidth: sideStage.width
1012+ sideStageOpen: sideStage.shown
1013+ itemIndex: index
1014+ nextInStack: priv.nextInStack
1015+ progress: 0
1016+ targetHeight: spreadItem.stackHeight
1017+ targetX: spreadMaths.targetX
1018+ startY: appDelegate.fullscreen ? 0 : PanelState.panelHeight
1019+ targetY: spreadMaths.targetY
1020+ targetAngle: spreadMaths.targetAngle
1021+ targetScale: spreadMaths.targetScale
1022+ shuffledZ: stageMaths.itemZ
1023+ breakPoint: spreadItem.rightEdgeBreakPoint
1024+ }
1025+
1026+ WindowedRightEdgeMaths {
1027+ id: windowedRightEdgeMaths
1028+ itemIndex: index
1029+ startWidth: appDelegate.requestedWidth
1030+ startHeight: appDelegate.requestedHeight
1031+ targetHeight: spreadItem.stackHeight
1032+ targetX: spreadMaths.targetX
1033+ targetY: spreadMaths.targetY
1034+ normalZ: appDelegate.normalZ
1035+ targetAngle: spreadMaths.targetAngle
1036+ targetScale: spreadMaths.targetScale
1037+ breakPoint: spreadItem.rightEdgeBreakPoint
1038+ }
1039+
1040+ states: [
1041+ State {
1042+ name: "spread"; when: root.state == "spread"
1043+ PropertyChanges {
1044+ target: decoratedWindow;
1045+ showDecoration: false;
1046+ angle: spreadMaths.targetAngle
1047+ itemScale: spreadMaths.targetScale
1048+ scaleToPreviewSize: spreadItem.stackHeight
1049+ scaleToPreviewProgress: 1
1050+ hasDecoration: root.mode === "windowed"
1051+ shadowOpacity: spreadMaths.shadowOpacity
1052+ showHighlight: spreadItem.highlightedIndex === index
1053+ darkening: spreadItem.highlightedIndex >= 0
1054+ anchors.topMargin: dragArea.distance
1055+ }
1056+ PropertyChanges {
1057+ target: appDelegate
1058+ x: spreadMaths.targetX
1059+ y: spreadMaths.targetY
1060+ z: index
1061+ height: spreadItem.spreadItemHeight
1062+ requestedWidth: decoratedWindow.oldRequestedWidth
1063+ requestedHeight: decoratedWindow.oldRequestedHeight
1064+ visible: spreadMaths.itemVisible
1065+ }
1066+ PropertyChanges { target: dragArea; enabled: true }
1067+ PropertyChanges { target: windowInfoItem; opacity: spreadMaths.tileInfoOpacity; visible: spreadMaths.itemVisible }
1068+ },
1069+ State {
1070+ name: "stagedRightEdge"
1071+ when: (root.mode == "staged" || root.mode == "stagedWithSideStage") && (root.state == "sideStagedRightEdge" || root.state == "stagedRightEdge" || rightEdgeFocusAnimation.running || hidingAnimation.running)
1072+ PropertyChanges {
1073+ target: stagedRightEdgeMaths
1074+ progress: Math.max(edgeBarrier.progress, rightEdgeDragArea.draggedProgress)
1075+ }
1076+ PropertyChanges {
1077+ target: appDelegate
1078+ x: stagedRightEdgeMaths.animatedX
1079+ y: stagedRightEdgeMaths.animatedY
1080+ z: stagedRightEdgeMaths.animatedZ
1081+ height: stagedRightEdgeMaths.animatedHeight
1082+ requestedWidth: decoratedWindow.oldRequestedWidth
1083+ requestedHeight: decoratedWindow.oldRequestedHeight
1084+ visible: appDelegate.x < root.width
1085+ }
1086+ PropertyChanges {
1087+ target: decoratedWindow
1088+ hasDecoration: false
1089+ angle: stagedRightEdgeMaths.animatedAngle
1090+ itemScale: stagedRightEdgeMaths.animatedScale
1091+ scaleToPreviewSize: spreadItem.stackHeight
1092+ scaleToPreviewProgress: stagedRightEdgeMaths.scaleToPreviewProgress
1093+ shadowOpacity: .3
1094+ }
1095+ },
1096+ State {
1097+ name: "windowedRightEdge"
1098+ when: root.mode == "windowed" && (root.state == "windowedRightEdge" || rightEdgeFocusAnimation.running || hidingAnimation.running || edgeBarrier.progress > 0)
1099+ PropertyChanges {
1100+ target: windowedRightEdgeMaths
1101+ progress: Math.max(rightEdgeDragArea.progress, edgeBarrier.progress)
1102+ }
1103+ PropertyChanges {
1104+ target: appDelegate
1105+ x: windowedRightEdgeMaths.animatedX
1106+ y: windowedRightEdgeMaths.animatedY
1107+ z: windowedRightEdgeMaths.animatedZ
1108+ height: stagedRightEdgeMaths.animatedHeight
1109+ requestedWidth: decoratedWindow.oldRequestedWidth
1110+ requestedHeight: decoratedWindow.oldRequestedHeight
1111+ }
1112+ PropertyChanges {
1113+ target: decoratedWindow
1114+ showDecoration: windowedRightEdgeMaths.decorationHeight
1115+ angle: windowedRightEdgeMaths.animatedAngle
1116+ itemScale: windowedRightEdgeMaths.animatedScale
1117+ scaleToPreviewSize: spreadItem.stackHeight
1118+ scaleToPreviewProgress: windowedRightEdgeMaths.scaleToPreviewProgress
1119+ shadowOpacity: .3
1120+ }
1121+ PropertyChanges {
1122+ target: opacityEffect;
1123+ opacityValue: windowedRightEdgeMaths.opacityMask
1124+ sourceItem: windowedRightEdgeMaths.opacityMask < 1 ? decoratedWindow : null
1125+ }
1126+ },
1127+ State {
1128+ name: "staged"; when: root.state == "staged"
1129+ PropertyChanges {
1130+ target: appDelegate
1131+ x: stageMaths.itemX
1132+ y: appDelegate.fullscreen ? 0 : PanelState.panelHeight
1133+ requestedWidth: appContainer.width
1134+ requestedHeight: appDelegate.fullscreen ? appContainer.height : appContainer.height - PanelState.panelHeight
1135+ visuallyMaximized: true
1136+ visible: appDelegate.x < root.width
1137+ }
1138+ PropertyChanges {
1139+ target: decoratedWindow
1140+ hasDecoration: false
1141+ }
1142+ PropertyChanges {
1143+ target: resizeArea
1144+ enabled: false
1145+ }
1146+ PropertyChanges {
1147+ target: stageMaths
1148+ animateX: !focusAnimation.running && itemIndex !== spreadItem.highlightedIndex
1149+ }
1150+ },
1151+ State {
1152+ name: "stagedWithSideStage"; when: root.state == "stagedWithSideStage"
1153+ PropertyChanges {
1154+ target: stageMaths
1155+ itemIndex: index
1156+ }
1157+ PropertyChanges {
1158+ target: appDelegate
1159+ x: stageMaths.itemX
1160+ y: appDelegate.fullscreen ? 0 : PanelState.panelHeight
1161+ z: stageMaths.itemZ
1162+ requestedWidth: stageMaths.itemWidth
1163+ requestedHeight: appDelegate.fullscreen ? appContainer.height : appContainer.height - PanelState.panelHeight
1164+ visuallyMaximized: true
1165+ visible: appDelegate.x < root.width
1166+ }
1167+ PropertyChanges {
1168+ target: decoratedWindow
1169+ hasDecoration: false
1170+ }
1171+ PropertyChanges {
1172+ target: resizeArea
1173+ enabled: false
1174+ }
1175+ },
1176+ State {
1177+ name: "maximized"; when: appDelegate.maximized && !appDelegate.minimized
1178+ PropertyChanges {
1179+ target: appDelegate;
1180+ requestedX: root.leftMargin;
1181+ requestedY: 0;
1182+ visuallyMinimized: false;
1183+ visuallyMaximized: true
1184+ requestedWidth: appContainer.width - root.leftMargin;
1185+ requestedHeight: appContainer.height;
1186+ }
1187+ PropertyChanges { target: touchControls; enabled: true }
1188+ },
1189+ State {
1190+ name: "fullscreen"; when: appDelegate.fullscreen && !appDelegate.minimized
1191+ PropertyChanges {
1192+ target: appDelegate;
1193+ requestedX: 0
1194+ requestedY: 0
1195+ requestedWidth: appContainer.width;
1196+ requestedHeight: appContainer.height;
1197+ }
1198+ PropertyChanges { target: decoratedWindow; hasDecoration: false }
1199+ },
1200+ State {
1201+ name: "normal";
1202+ when: appDelegate.windowState == WindowStateStorage.WindowStateNormal
1203+ PropertyChanges {
1204+ target: appDelegate
1205+ visuallyMinimized: false
1206+ visuallyMaximized: false
1207+ }
1208+ PropertyChanges { target: touchControls; enabled: true }
1209+ PropertyChanges { target: resizeArea; enabled: true }
1210+ PropertyChanges { target: decoratedWindow; shadowOpacity: .3}
1211+ },
1212+ State {
1213+ name: "restored";
1214+ when: appDelegate.windowState == WindowStateStorage.WindowStateRestored
1215+ extend: "normal"
1216+ PropertyChanges {
1217+ target: appDelegate;
1218+ windowedX: restoredX;
1219+ windowedY: restoredY;
1220+ }
1221+ },
1222+ State {
1223+ name: "semiMaximized"
1224+ PropertyChanges { target: touchControls; enabled: true }
1225+ PropertyChanges { target: resizeArea; enabled: true }
1226+ PropertyChanges { target: decoratedWindow; shadowOpacity: .3 }
1227+ },
1228+ State {
1229+ name: "maximizedLeft"; when: appDelegate.maximizedLeft && !appDelegate.minimized
1230+ extend: "semiMaximized"
1231+ PropertyChanges {
1232+ target: appDelegate
1233+ windowedX: root.leftMargin
1234+ windowedY: PanelState.panelHeight
1235+ windowedWidth: (appContainer.width - root.leftMargin)/2
1236+ windowedHeight: appContainer.height - PanelState.panelHeight
1237+ }
1238+ },
1239+ State {
1240+ name: "maximizedRight"; when: appDelegate.maximizedRight && !appDelegate.minimized
1241+ extend: "maximizedLeft"
1242+ PropertyChanges {
1243+ target: appDelegate;
1244+ windowedX: (appContainer.width + root.leftMargin)/2
1245+ }
1246+ },
1247+ State {
1248+ name: "maximizedTopLeft"; when: appDelegate.maximizedTopLeft && !appDelegate.minimized
1249+ extend: "semiMaximized"
1250+ PropertyChanges {
1251+ target: appDelegate
1252+ windowedX: root.leftMargin
1253+ windowedY: PanelState.panelHeight
1254+ windowedWidth: (appContainer.width - root.leftMargin)/2
1255+ windowedHeight: (appContainer.height - PanelState.panelHeight)/2
1256+ }
1257+ },
1258+ State {
1259+ name: "maximizedTopRight"; when: appDelegate.maximizedTopRight && !appDelegate.minimized
1260+ extend: "maximizedTopLeft"
1261+ PropertyChanges {
1262+ target: appDelegate
1263+ windowedX: (appContainer.width + root.leftMargin)/2
1264+ }
1265+ },
1266+ State {
1267+ name: "maximizedBottomLeft"; when: appDelegate.maximizedBottomLeft && !appDelegate.minimized
1268+ extend: "semiMaximized"
1269+ PropertyChanges {
1270+ target: appDelegate
1271+ windowedX: root.leftMargin
1272+ windowedY: (appContainer.height + PanelState.panelHeight)/2
1273+ windowedWidth: (appContainer.width - root.leftMargin)/2
1274+ windowedHeight: appContainer.height/2
1275+ }
1276+ },
1277+ State {
1278+ name: "maximizedBottomRight"; when: appDelegate.maximizedBottomRight && !appDelegate.minimized
1279+ extend: "maximizedBottomLeft"
1280+ PropertyChanges {
1281+ target: appDelegate
1282+ windowedX: (appContainer.width + root.leftMargin)/2
1283+ }
1284+ },
1285+ State {
1286+ name: "maximizedHorizontally"; when: appDelegate.maximizedHorizontally && !appDelegate.minimized
1287+ extend: "semiMaximized"
1288+ PropertyChanges { target: appDelegate; requestedX: root.leftMargin; requestedY: windowedY;
1289+ requestedWidth: appContainer.width - root.leftMargin; requestedHeight: appDelegate.windowedHeight }
1290+ },
1291+ State {
1292+ name: "maximizedVertically"; when: appDelegate.maximizedVertically && !appDelegate.minimized
1293+ extend: "semiMaximized"
1294+ PropertyChanges { target: appDelegate; requestedX: windowedX; requestedY: PanelState.panelHeight;
1295+ requestedWidth: appDelegate.windowedWidth; requestedHeight: appContainer.height - PanelState.panelHeight }
1296+ },
1297+ State {
1298+ name: "minimized"; when: appDelegate.minimized
1299+ PropertyChanges {
1300+ target: appDelegate
1301+ requestedX: -appDelegate.width / 2
1302+ scale: units.gu(5) / appDelegate.width
1303+ opacity: 0;
1304+ visuallyMinimized: true
1305+ visuallyMaximized: false
1306+ }
1307+ }
1308+ ]
1309+ transitions: [
1310+ Transition {
1311+ from: "staged,stagedWithSideStage"; to: "normal"
1312+ enabled: appDelegate.animationsEnabled
1313+ PropertyAction { target: appDelegate; properties: "visuallyMinimized,visuallyMaximized" }
1314+ UbuntuNumberAnimation { target: appDelegate; properties: "x,y,requestedX,requestedY,opacity,requestedWidth,requestedHeight,scale"; duration: priv.animationDuration }
1315+ },
1316+ Transition {
1317+ from: "normal,restored,maximized,maximizedHorizontally,maximizedVertically,maximizedLeft,maximizedRight,maximizedTopLeft,maximizedBottomLeft,maximizedTopRight,maximizedBottomRight";
1318+ to: "staged,stagedWithSideStage"
1319+ UbuntuNumberAnimation { target: appDelegate; properties: "x,y,requestedX,requestedY,requestedWidth,requestedHeight"; duration: priv.animationDuration}
1320+ },
1321+ Transition {
1322+ from: "maximized,maximizedHorizontally,maximizedVertically,maximizedLeft,maximizedRight,maximizedTopLeft,maximizedBottomLeft,maximizedTopRight,maximizedBottomRight,minimized";
1323+ to: "normal,restored"
1324+ enabled: appDelegate.animationsEnabled
1325+ PropertyAction { target: appDelegate; properties: "visuallyMinimized,visuallyMaximized" }
1326+ UbuntuNumberAnimation { target: appDelegate; properties: "requestedX,requestedY,windowedX,windowedY,requestedWidth,requestedHeight,windowedWidth,windowedHeight,scale";
1327+ duration: priv.animationDuration }
1328+ },
1329+ Transition {
1330+ to: "minimized"
1331+ enabled: appDelegate.animationsEnabled
1332+ PropertyAction { target: appDelegate; property: "visuallyMaximized" }
1333+ SequentialAnimation {
1334+ UbuntuNumberAnimation { target: appDelegate; properties: "requestedX,requestedY,opacity,scale,requestedWidth,requestedHeight" }
1335+ PropertyAction { target: appDelegate; property: "visuallyMinimized" }
1336+ ScriptAction {
1337+ script: {
1338+ if (appDelegate.minimized) {
1339+ appDelegate.focus = false;
1340+ priv.focusNext();
1341+ }
1342+ }
1343+ }
1344+ }
1345+ },
1346+ Transition {
1347+ to: "spread"
1348+ // DecoratedWindow wants the scaleToPreviewSize set before enabling scaleToPreview
1349+ PropertyAction { target: appDelegate; properties: "z,visible" }
1350+ PropertyAction { target: decoratedWindow; property: "scaleToPreviewSize" }
1351+ UbuntuNumberAnimation { target: appDelegate; properties: "x,y,height"; duration: priv.animationDuration }
1352+ UbuntuNumberAnimation { target: decoratedWindow; properties: "width,height,itemScale,angle,scaleToPreviewProgress"; duration: priv.animationDuration }
1353+ },
1354+ Transition {
1355+ from: "normal,staged"; to: "stagedWithSideStage"
1356+ UbuntuNumberAnimation { target: appDelegate; properties: "x,y"; duration: priv.animationDuration }
1357+ UbuntuNumberAnimation { target: appDelegate; properties: "requestedWidth,requestedHeight"; duration: priv.animationDuration }
1358+ },
1359+ Transition {
1360+ to: "windowedRightEdge"
1361+ ScriptAction {
1362+ script: {
1363+ windowedRightEdgeMaths.startX = appDelegate.requestedX
1364+ windowedRightEdgeMaths.startY = appDelegate.requestedY
1365+
1366+ if (index == 1) {
1367+ var thisRect = { x: appDelegate.windowedX, y: appDelegate.windowedY, width: appDelegate.requestedWidth, height: appDelegate.requestedHeight }
1368+ var otherDelegate = appRepeater.itemAt(0);
1369+ var otherRect = { x: otherDelegate.windowedX, y: otherDelegate.windowedY, width: otherDelegate.requestedWidth, height: otherDelegate.requestedHeight }
1370+ var intersectionRect = MathUtils.intersectionRect(thisRect, otherRect)
1371+ var mappedInterSectionRect = appDelegate.mapFromItem(root, intersectionRect.x, intersectionRect.y)
1372+ opacityEffect.maskX = mappedInterSectionRect.x
1373+ opacityEffect.maskY = mappedInterSectionRect.y
1374+ opacityEffect.maskWidth = intersectionRect.width
1375+ opacityEffect.maskHeight = intersectionRect.height
1376+ }
1377+ }
1378+ }
1379+ },
1380+ Transition {
1381+ from: "stagedRightEdge"; to: "staged"
1382+ enabled: rightEdgeDragArea.cancelled // only transition back to state if the gesture was cancelled, in the other cases we play the focusAnimations.
1383+ SequentialAnimation {
1384+ ParallelAnimation {
1385+ UbuntuNumberAnimation { target: appDelegate; properties: "x,y,height,width,scale"; duration: priv.animationDuration }
1386+ UbuntuNumberAnimation { target: decoratedWindow; properties: "width,height,itemScale,angle,scaleToPreviewProgress"; duration: priv.animationDuration }
1387+ }
1388+ // We need to release scaleToPreviewSize at last
1389+ PropertyAction { target: decoratedWindow; property: "scaleToPreviewSize" }
1390+ PropertyAction { target: appDelegate; property: "visible" }
1391+ }
1392+ },
1393+ Transition {
1394+ id: windowedTransition
1395+ from: "normal,restored,maximized,maximizedLeft,maximizedRight,maximizedTop,maximizedBottom,maximizedTopLeft,maximizedTopRight,maximizedBottomLeft,maximizedBottomRight,maximizedHorizontally,maximizedVertically,fullscreen"
1396+ to: "normal,restored,maximized,maximizedLeft,maximizedRight,maximizedTop,maximizedBottom,maximizedTopLeft,maximizedTopRight,maximizedBottomLeft,maximizedBottomRight,maximizedHorizontally,maximizedVertically,fullscreen"
1397+ enabled: appDelegate.animationsEnabled
1398+ SequentialAnimation {
1399+ PropertyAction { target: appDelegate; property: "visuallyMinimized" }
1400+ UbuntuNumberAnimation { target: appDelegate; properties: "requestedX,requestedY,windowedX,windowedY,opacity,scale,requestedWidth,requestedHeight,windowedWidth,windowedHeight";
1401+ duration: priv.animationDuration }
1402+ PropertyAction { target: appDelegate; property: "visuallyMaximized" }
1403+ ScriptAction { script: { fakeRectangle.stop(); } }
1404+ }
1405+ }
1406+ ]
1407+
1408+ Binding {
1409+ target: PanelState
1410+ property: "buttonsAlwaysVisible"
1411+ value: appDelegate && appDelegate.maximized && touchControls.overlayShown
1412+ }
1413+
1414+ WindowResizeArea {
1415+ id: resizeArea
1416+ objectName: "windowResizeArea"
1417+
1418+ // workaround so that it chooses the correct resize borders when you drag from a corner ResizeGrip
1419+ anchors.margins: touchControls.overlayShown ? borderThickness/2 : -borderThickness
1420+
1421+ target: appDelegate
1422+ minWidth: units.gu(10)
1423+ minHeight: units.gu(10)
1424+ borderThickness: units.gu(2)
1425+ windowId: model.application.appId // FIXME: Change this to point to windowId once we have such a thing
1426+ screenWidth: appContainer.width
1427+ screenHeight: appContainer.height
1428+ leftMargin: root.leftMargin
1429+ enabled: false
1430+ visible: enabled
1431+
1432+ onPressed: {
1433+ appDelegate.focus = true;
1434+ }
1435+
1436+ Component.onDestruction: {
1437+ saveWindowState();
1438+ }
1439+ }
1440+
1441+ DecoratedWindow {
1442+ id: decoratedWindow
1443+ objectName: "decoratedWindow"
1444+ anchors.left: appDelegate.left
1445+ anchors.top: appDelegate.top
1446+ application: model.application
1447+ surface: model.surface
1448+ active: appDelegate.focus
1449+ focus: true
1450+ interactive: root.interactive
1451+ showDecoration: 1
1452+ maximizeButtonShown: appDelegate.canBeMaximized
1453+ overlayShown: touchControls.overlayShown
1454+ width: implicitWidth
1455+ height: implicitHeight
1456+ highlightSize: windowInfoItem.iconMargin / 2
1457+ stageWidth: appContainer.width
1458+ stageHeight: appContainer.height
1459+
1460+ requestedWidth: appDelegate.requestedWidth
1461+ requestedHeight: appDelegate.requestedHeight
1462+
1463+ property int oldRequestedWidth: -1
1464+ property int oldRequestedHeight: -1
1465+
1466+ onRequestedWidthChanged: oldRequestedWidth = requestedWidth
1467+ onRequestedHeightChanged: oldRequestedHeight = requestedHeight
1468+
1469+ onCloseClicked: { appDelegate.close(); }
1470+ onMaximizeClicked: appDelegate.anyMaximized ? appDelegate.restoreFromMaximized() : appDelegate.maximize();
1471+ onMaximizeHorizontallyClicked: appDelegate.maximizedHorizontally ? appDelegate.restoreFromMaximized() : appDelegate.maximizeHorizontally()
1472+ onMaximizeVerticallyClicked: appDelegate.maximizedVertically ? appDelegate.restoreFromMaximized() : appDelegate.maximizeVertically()
1473+ onMinimizeClicked: appDelegate.minimize()
1474+ onDecorationPressed: { appDelegate.focus = true; }
1475+ onDecorationReleased: fakeRectangle.commit();
1476+
1477+ property real angle: 0
1478+ property real itemScale: 1
1479+ transform: [
1480+ Scale {
1481+ origin.x: 0
1482+ origin.y: decoratedWindow.implicitHeight / 2
1483+ xScale: decoratedWindow.itemScale
1484+ yScale: decoratedWindow.itemScale
1485+ },
1486+ Rotation {
1487+ origin { x: 0; y: (decoratedWindow.height / 2) }
1488+ axis { x: 0; y: 1; z: 0 }
1489+ angle: decoratedWindow.angle
1490+ }
1491+ ]
1492+ }
1493+
1494+ OpacityMask {
1495+ id: opacityEffect
1496+ anchors.fill: decoratedWindow
1497+ }
1498+
1499+ WindowControlsOverlay {
1500+ id: touchControls
1501+ target: appDelegate
1502+ enabled: false
1503+ visible: enabled
1504+ stageWidth: appContainer.width
1505+ stageHeight: appContainer.height
1506+
1507+ onFakeMaximizeAnimationRequested: if (!appDelegate.maximized) fakeRectangle.maximize(amount, true)
1508+ onFakeMaximizeLeftAnimationRequested: if (!appDelegate.maximizedLeft) fakeRectangle.maximizeLeft(amount, true)
1509+ onFakeMaximizeRightAnimationRequested: if (!appDelegate.maximizedRight) fakeRectangle.maximizeRight(amount, true)
1510+ onFakeMaximizeTopLeftAnimationRequested: if (!appDelegate.maximizedTopLeft) fakeRectangle.maximizeTopLeft(amount, true);
1511+ onFakeMaximizeTopRightAnimationRequested: if (!appDelegate.maximizedTopRight) fakeRectangle.maximizeTopRight(amount, true);
1512+ onFakeMaximizeBottomLeftAnimationRequested: if (!appDelegate.maximizedBottomLeft) fakeRectangle.maximizeBottomLeft(amount, true);
1513+ onFakeMaximizeBottomRightAnimationRequested: if (!appDelegate.maximizedBottomRight) fakeRectangle.maximizeBottomRight(amount, true);
1514+ onStopFakeAnimation: fakeRectangle.stop();
1515+ onDragReleased: fakeRectangle.commit();
1516+ }
1517+
1518+ WindowedFullscreenPolicy {
1519+ id: windowedFullscreenPolicy
1520+ active: root.mode == "windowed"
1521+ surface: model.surface
1522+ }
1523+ StagedFullscreenPolicy {
1524+ id: stagedFullscreenPolicy
1525+ active: root.mode == "staged" || root.mode == "stagedWithSideStage"
1526+ surface: model.surface
1527+ }
1528+
1529+ SpreadDelegateInputArea {
1530+ id: dragArea
1531+ objectName: "dragArea"
1532+ anchors.fill: decoratedWindow
1533+ enabled: false
1534+ closeable: !appDelegate.isDash
1535+
1536+ onClicked: {
1537+ spreadItem.highlightedIndex = index;
1538+ if (distance == 0) {
1539+ priv.goneToSpread = false;
1540+ }
1541+ }
1542+ onClose: {
1543+ priv.closingIndex = index
1544+ if (model.surface) { // could be stopped by OOM
1545+ model.surface.close()
1546+ } else if (model.application) {
1547+ root.applicationManager.stopApplication(model.application.appId);
1548+ }
1549+ }
1550+ }
1551+
1552+ WindowInfoItem {
1553+ id: windowInfoItem
1554+ objectName: "windowInfoItem"
1555+ anchors { left: parent.left; top: decoratedWindow.bottom; topMargin: units.gu(1) }
1556+ title: model.application.name
1557+ iconSource: model.application.icon
1558+ height: spreadItem.appInfoHeight
1559+ opacity: 0
1560+ z: 1
1561+ visible: opacity > 0
1562+ maxWidth: {
1563+ var nextApp = appRepeater.itemAt(index + 1);
1564+ if (nextApp) {
1565+ return nextApp.x - appDelegate.x - units.gu(1)
1566+ }
1567+ return appDelegate.width;
1568+ }
1569+
1570+ onClicked: {
1571+ spreadItem.highlightedIndex = index;
1572+ priv.goneToSpread = false;
1573+ }
1574+ }
1575+
1576+ Image {
1577+ id: closeImage
1578+ anchors { left: parent.left; top: parent.top; leftMargin: -height / 2; topMargin: -height / 2 + spreadMaths.closeIconOffset }
1579+ source: "graphics/window-close.svg"
1580+ readonly property var mousePos: hoverMouseArea.mapToItem(appDelegate, hoverMouseArea.mouseX, hoverMouseArea.mouseY)
1581+ visible: !appDelegate.isDash && dragArea.distance == 0
1582+ && index == spreadItem.highlightedIndex
1583+ && mousePos.y < (decoratedWindow.height / 3)
1584+ && mousePos.y > -units.gu(4)
1585+ && mousePos.x > -units.gu(4)
1586+ && mousePos.x < (decoratedWindow.width * 2 / 3)
1587+ height: units.gu(2)
1588+ width: height
1589+ sourceSize.width: width
1590+ sourceSize.height: height
1591+
1592+ MouseArea {
1593+ id: closeMouseArea
1594+ objectName: "closeMouseArea"
1595+ anchors.fill: closeImage
1596+ anchors.margins: -units.gu(2)
1597+ onClicked: {
1598+ priv.closingIndex = index;
1599+ appDelegate.close();
1600+ }
1601+ }
1602+ }
1603+ }
1604+ }
1605+ }
1606+
1607+ FakeMaximizeDelegate {
1608+ id: fakeRectangle
1609+ target: priv.focusedAppDelegate
1610+ leftMargin: root.leftMargin
1611+ appContainerWidth: appContainer.width
1612+ appContainerHeight: appContainer.height
1613+ }
1614+
1615+ EdgeBarrier {
1616+ id: edgeBarrier
1617+
1618+ // NB: it does its own positioning according to the specified edge
1619+ edge: Qt.RightEdge
1620+
1621+ onPassed: priv.goneToSpread = true;
1622+
1623+ material: Component {
1624+ Item {
1625+ Rectangle {
1626+ width: parent.height
1627+ height: parent.width
1628+ rotation: 90
1629+ anchors.centerIn: parent
1630+ gradient: Gradient {
1631+ GradientStop { position: 0.0; color: Qt.rgba(0.16,0.16,0.16,0.5)}
1632+ GradientStop { position: 1.0; color: Qt.rgba(0.16,0.16,0.16,0)}
1633+ }
1634+ }
1635+ }
1636+ }
1637+ }
1638+
1639+ MouseArea {
1640+ id: hoverMouseArea
1641+ objectName: "hoverMouseArea"
1642+ anchors.fill: appContainer
1643+ propagateComposedEvents: true
1644+ hoverEnabled: true
1645+ enabled: false
1646+ visible: enabled
1647+
1648+ property int scrollAreaWidth: width / 3
1649+ property bool progressiveScrollingEnabled: false
1650+
1651+ onMouseXChanged: {
1652+ mouse.accepted = false
1653+
1654+ if (hoverMouseArea.pressed) {
1655+ return;
1656+ }
1657+
1658+ // Find the hovered item and mark it active
1659+ var mapped = mapToItem(appContainer, hoverMouseArea.mouseX, hoverMouseArea.mouseY)
1660+ var itemUnder = appContainer.childAt(mapped.x, mapped.y)
1661+ if (itemUnder) {
1662+ mapped = mapToItem(itemUnder, hoverMouseArea.mouseX, hoverMouseArea.mouseY)
1663+ var delegateChild = itemUnder.childAt(mapped.x, mapped.y)
1664+ if (delegateChild && (delegateChild.objectName === "dragArea" || delegateChild.objectName === "windowInfoItem")) {
1665+ spreadItem.highlightedIndex = appRepeater.indexOf(itemUnder)
1666+ }
1667+ }
1668+
1669+ if (floatingFlickable.contentWidth > floatingFlickable.width) {
1670+ var margins = floatingFlickable.width * 0.05;
1671+
1672+ if (!progressiveScrollingEnabled && mouseX < floatingFlickable.width - scrollAreaWidth) {
1673+ progressiveScrollingEnabled = true
1674+ }
1675+
1676+ // do we need to scroll?
1677+ if (mouseX < scrollAreaWidth + margins) {
1678+ var progress = Math.min(1, (scrollAreaWidth + margins - mouseX) / (scrollAreaWidth - margins));
1679+ var contentX = (1 - progress) * (floatingFlickable.contentWidth - floatingFlickable.width)
1680+ floatingFlickable.contentX = Math.max(0, Math.min(floatingFlickable.contentX, contentX))
1681+ }
1682+ if (mouseX > floatingFlickable.width - scrollAreaWidth && progressiveScrollingEnabled) {
1683+ var progress = Math.min(1, (mouseX - (floatingFlickable.width - scrollAreaWidth)) / (scrollAreaWidth - margins))
1684+ var contentX = progress * (floatingFlickable.contentWidth - floatingFlickable.width)
1685+ floatingFlickable.contentX = Math.min(floatingFlickable.contentWidth - floatingFlickable.width, Math.max(floatingFlickable.contentX, contentX))
1686+ }
1687+ }
1688+ }
1689+
1690+ onPressed: mouse.accepted = false
1691+ }
1692+
1693+ FloatingFlickable {
1694+ id: floatingFlickable
1695+ objectName: "spreadFlickable"
1696+ anchors.fill: appContainer
1697+ enabled: false
1698+ contentWidth: spreadItem.spreadTotalWidth
1699+
1700+ function snap(toIndex) {
1701+ var delegate = appRepeater.itemAt(toIndex)
1702+ var targetContentX = floatingFlickable.contentWidth / spreadItem.totalItemCount * toIndex;
1703+ if (targetContentX - floatingFlickable.contentX > spreadItem.rightStackXPos - (spreadItem.spreadItemWidth / 2)) {
1704+ var offset = (spreadItem.rightStackXPos - (spreadItem.spreadItemWidth / 2)) - (targetContentX - floatingFlickable.contentX)
1705+ snapAnimation.to = floatingFlickable.contentX - offset;
1706+ snapAnimation.start();
1707+ } else if (targetContentX - floatingFlickable.contentX < spreadItem.leftStackXPos + units.gu(1)) {
1708+ var offset = (spreadItem.leftStackXPos + units.gu(1)) - (targetContentX - floatingFlickable.contentX);
1709+ snapAnimation.to = floatingFlickable.contentX - offset;
1710+ snapAnimation.start();
1711+ }
1712+ }
1713+ UbuntuNumberAnimation {id: snapAnimation; target: floatingFlickable; property: "contentX"}
1714+ }
1715+
1716+ PropertyAnimation {
1717+ id: shortRightEdgeSwipeAnimation
1718+ property: "x"
1719+ to: 0
1720+ duration: priv.animationDuration
1721+ }
1722+
1723+ SwipeArea {
1724+ id: rightEdgeDragArea
1725+ objectName: "rightEdgeDragArea"
1726+ direction: Direction.Leftwards
1727+ anchors { top: parent.top; right: parent.right; bottom: parent.bottom }
1728+ width: root.dragAreaWidth
1729+
1730+ property var gesturePoints: []
1731+ property bool cancelled: false
1732+
1733+ property real progress: dragging ? -touchPosition.x / root.width : 0
1734+ onProgressChanged: {
1735+ if (dragging) {
1736+ draggedProgress = progress;
1737+ }
1738+ }
1739+
1740+ property real draggedProgress: 0
1741+
1742+ onTouchPositionChanged: {
1743+ gesturePoints.push(touchPosition.x);
1744+ if (gesturePoints.length > 10) {
1745+ gesturePoints.splice(0, gesturePoints.length - 10)
1746+ }
1747+ }
1748+
1749+ onDraggingChanged: {
1750+ if (dragging) {
1751+ // A potential edge-drag gesture has started. Start recording it
1752+ gesturePoints = [];
1753+ cancelled = false;
1754+ draggedProgress = 0;
1755+ } else {
1756+ // Ok. The user released. Did he drag far enough to go to full spread?
1757+ if (gesturePoints[gesturePoints.length - 1] < -spreadItem.rightEdgeBreakPoint * spreadItem.width ) {
1758+
1759+ // He dragged far enough, but if the last movement was a flick to the right again, he wants to cancel the spread again.
1760+ var oneWayFlickToRight = true;
1761+ var smallestX = gesturePoints[0]-1;
1762+ for (var i = 0; i < gesturePoints.length; i++) {
1763+ if (gesturePoints[i] <= smallestX) {
1764+ oneWayFlickToRight = false;
1765+ break;
1766+ }
1767+ smallestX = gesturePoints[i];
1768+ }
1769+
1770+ if (!oneWayFlickToRight) {
1771+ // Ok, the user made it, let's go to spread!
1772+ priv.goneToSpread = true;
1773+ } else {
1774+ cancelled = true;
1775+ }
1776+ } else {
1777+ // Ok, the user didn't drag far enough to cross the breakPoint
1778+ // Find out if it was a one-way movement to the left, in which case we just switch directly to next app.
1779+ var oneWayFlick = true;
1780+ var smallestX = rightEdgeDragArea.width;
1781+ for (var i = 0; i < gesturePoints.length; i++) {
1782+ if (gesturePoints[i] >= smallestX) {
1783+ oneWayFlick = false;
1784+ break;
1785+ }
1786+ smallestX = gesturePoints[i];
1787+ }
1788+
1789+ if (appRepeater.count > 1 &&
1790+ (oneWayFlick && rightEdgeDragArea.distance > units.gu(2) || rightEdgeDragArea.distance > spreadItem.rightEdgeBreakPoint * spreadItem.width)) {
1791+ var nextStage = appRepeater.itemAt(priv.nextInStack).stage
1792+ for (var i = 0; i < appRepeater.count; i++) {
1793+ if (i != priv.nextInStack && appRepeater.itemAt(i).stage == nextStage) {
1794+ appRepeater.itemAt(i).playHidingAnimation()
1795+ break;
1796+ }
1797+ }
1798+ appRepeater.itemAt(priv.nextInStack).playFocusAnimation()
1799+ if (appRepeater.itemAt(priv.nextInStack).stage == ApplicationInfoInterface.SideStage && !sideStage.shown) {
1800+ sideStage.show();
1801+ }
1802+
1803+ } else {
1804+ cancelled = true;
1805+ }
1806+
1807+ gesturePoints = [];
1808+ }
1809+ }
1810+ }
1811+ }
1812+
1813+ TabletSideStageTouchGesture {
1814+ id: triGestureArea
1815+ objectName: "triGestureArea"
1816+ anchors.fill: parent
1817+ enabled: false
1818+ property Item appDelegate
1819+
1820+ dragComponent: dragComponent
1821+ dragComponentProperties: { "appDelegate": appDelegate }
1822+
1823+ onPressed: {
1824+ function matchDelegate(obj) { return String(obj.objectName).indexOf("appDelegate") >= 0; }
1825+
1826+ var delegateAtCenter = Functions.itemAt(appContainer, x, y, matchDelegate);
1827+ if (!delegateAtCenter) return;
1828+
1829+ appDelegate = delegateAtCenter;
1830+ }
1831+
1832+ onClicked: {
1833+ if (sideStage.shown) {
1834+ sideStage.hide();
1835+ } else {
1836+ sideStage.show();
1837+ priv.updateMainAndSideStageIndexes()
1838+ }
1839+ }
1840+
1841+ onDragStarted: {
1842+ // If we're dragging to the sidestage.
1843+ if (!sideStage.shown) {
1844+ sideStage.show();
1845+ }
1846+ }
1847+
1848+ Component {
1849+ id: dragComponent
1850+ SurfaceContainer {
1851+ property Item appDelegate
1852+
1853+ surface: appDelegate ? appDelegate.surface : null
1854+
1855+ consumesInput: false
1856+ interactive: false
1857+ focus: false
1858+ requestedWidth: appDelegate.requestedWidth
1859+ requestedHeight: appDelegate.requestedHeight
1860+
1861+ width: units.gu(40)
1862+ height: units.gu(40)
1863+
1864+ Drag.hotSpot.x: width/2
1865+ Drag.hotSpot.y: height/2
1866+ // only accept opposite stage.
1867+ Drag.keys: {
1868+ if (!surface) return "Disabled";
1869+ if (appDelegate.isDash) return "Disabled";
1870+
1871+ if (appDelegate.stage === ApplicationInfo.MainStage) {
1872+ if (appDelegate.application.supportedOrientations
1873+ & (Qt.PortraitOrientation|Qt.InvertedPortraitOrientation)) {
1874+ return "MainStage";
1875+ }
1876+ return "Disabled";
1877+ }
1878+ return "SideStage";
1879+ }
1880+ }
1881+ }
1882+ }
1883+}
qml/Stage/StageMaths.qmlnew file+79
@@ -0,0 +1,79 @@
1+import QtQuick 2.4
2+import Unity.Application 0.1
3+import Ubuntu.Components 1.3
4+
5+QtObject {
6+ id: root
7+
8+ // input
9+ property int itemIndex: 0
10+ property int nextInStack: 0
11+ property int sceneWidth: 0
12+ property int sideStageWidth: 0
13+ property int sideStageX: sceneWidth
14+ property bool animateX: false
15+ property int leftEdgeDragProgress: 0
16+
17+ property int stage: ApplicationInfoInterface.MainStage
18+ property var thisDelegate: null
19+ property var mainStageDelegate: null
20+ property var sideStageDelegate: null
21+
22+ // output
23+
24+ // We need to shuffle z ordering a bit in order to keep side stage apps above main stage apps.
25+ // We don't want to really reorder them in the model because that allows us to keep track
26+ // of the last focused order.
27+ readonly property int itemZ: {
28+ // only shuffle when we've got a main and side stage
29+ if (thisDelegate.isDash && thisDelegate != mainStageDelegate && leftEdgeDragProgress > 0) {
30+ return -1; // Keep the dash behind all other apps for the left edge gesture
31+ }
32+
33+ if (!sideStageDelegate) return itemIndex;
34+
35+ // don't shuffle indexes greater than "actives or next"
36+ if (itemIndex > 2) return itemIndex;
37+
38+ if (thisDelegate == mainStageDelegate) {
39+ // Active main stage always at 0
40+ return 0;
41+ }
42+
43+ if (nextInStack > 0) {
44+ var stageOfNextInStack = appRepeater.itemAt(nextInStack).stage;
45+
46+ if (itemIndex === nextInStack) {
47+ // this is the next app in stack.
48+
49+ if (stage === ApplicationInfoInterface.SideStage) {
50+ // if the next app in stack is a sidestage app, it must order on top of other side stage app
51+ return Math.min(2, topLevelSurfaceList.count-1);
52+ }
53+ return 1;
54+ }
55+ if (stageOfNextInStack === ApplicationInfoInterface.SideStage) {
56+ // if the next app in stack is a sidestage app, it must order on top of other side stage app
57+ return 1;
58+ }
59+ return Math.min(2, topLevelSurfaceList.count-1);
60+ }
61+ return Math.min(index+1, topLevelSurfaceList.count-1);
62+ }
63+
64+
65+ property int itemX: {
66+ if (mainStageDelegate == thisDelegate) {
67+ return thisDelegate.isDash ? 0 : leftEdgeDragProgress;
68+ }
69+ if (sideStageDelegate == thisDelegate) {
70+ return sideStageX;
71+ }
72+ return thisDelegate.isDash && leftEdgeDragProgress > 0 ? 0 : sceneWidth;
73+ }
74+ Behavior on itemX { enabled: root.animateX; UbuntuNumberAnimation {} }
75+
76+ readonly property int itemWidth: stage == ApplicationInfoInterface.MainStage ?
77+ sideStageDelegate != null ? sideStageX : sceneWidth :
78+ stage == ApplicationInfoInterface.SideStage ? sideStageWidth : sceneWidth
79+}
qml/Stages/StagedFullscreenPolicy.qml → qml/Stage/StagedFullscreenPolicy.qmlrenamed

The content is the same.

qml/Stages/SurfaceContainer.qml → qml/Stage/SurfaceContainer.qmlrenamed+5−52
@@ -23,6 +23,8 @@ import Unity.Application 0.1 // for MirSurfaceItem
23FocusScope {
23FocusScope {
24 id: root
24 id: root
25 objectName: "surfaceContainer"
25 objectName: "surfaceContainer"
26+ implicitWidth: surfaceItem.implicitWidth
27+ implicitHeight: surfaceItem.implicitHeight
26
28
27 // Must be set from outside
29 // Must be set from outside
28 property var surface: null
30 property var surface: null
@@ -32,7 +34,6 @@ FocusScope {
32 property int requestedHeight: -1
34 property int requestedHeight: -1
33 property bool interactive
35 property bool interactive
34 property int surfaceOrientationAngle: 0
36 property int surfaceOrientationAngle: 0
35− property bool resizeSurface: true
36 property bool isPromptSurface: false
37 property bool isPromptSurface: false
37 // FIME - dont export, use interactive property. Need to fix qtmir to handle consumesInputChanged
38 // FIME - dont export, use interactive property. Need to fix qtmir to handle consumesInputChanged
38 // to update surface activeFocus. See mock MirSurfaceItem.
39 // to update surface activeFocus. See mock MirSurfaceItem.
@@ -58,35 +59,15 @@ FocusScope {
58 MirSurfaceItem {
59 MirSurfaceItem {
59 id: surfaceItem
60 id: surfaceItem
60 objectName: "surfaceItem"
61 objectName: "surfaceItem"
62+ anchors.fill: parent
61
63
62 focus: true
64 focus: true
63
65
64 fillMode: MirSurfaceItem.PadOrCrop
66 fillMode: MirSurfaceItem.PadOrCrop
65 consumesInput: true
67 consumesInput: true
66
68
67− surfaceWidth: {
68− if (root.resizeSurface) {
69− if (root.requestedWidth >= 0) {
69+ surfaceWidth: root.requestedWidth
70− return root.requestedWidth;
71− } else {
72− return width;
73− }
74− } else {
75− return -1;
76− }
77− }
78−
79− surfaceHeight: {
80− if (root.resizeSurface) {
81− if (root.requestedHeight >= 0) {
70+ surfaceHeight: root.requestedHeight
82− return root.requestedHeight;
83− } else {
84− return height;
85− }
86− } else {
87− return -1;
88− }
89− }
90
71
91 enabled: root.interactive
72 enabled: root.interactive
92 antialiasing: !root.interactive
73 antialiasing: !root.interactive
@@ -99,34 +80,6 @@ FocusScope {
99 enabled: surfaceItem.enabled
80 enabled: surfaceItem.enabled
100 }
81 }
101
82
102− // MirSurface size drives SurfaceContainer size
103− Binding {
104− target: surfaceItem; property: "width"; value: root.surface ? root.surface.size.width : 0
105− when: root.requestedWidth >= 0 && root.surface
106− }
107− Binding {
108− target: surfaceItem; property: "height"; value: root.surface ? root.surface.size.height : 0
109− when: root.requestedHeight >= 0 && root.surface
110− }
111− Binding {
112− target: root; property: "width"; value: surfaceItem.width
113− when: root.requestedWidth >= 0
114− }
115− Binding {
116− target: root; property: "height"; value: surfaceItem.height
117− when: root.requestedHeight >= 0
118− }
119−
120− // SurfaceContainer size drives MirSurface size
121− Binding {
122− target: surfaceItem; property: "width"; value: root.width
123− when: root.requestedWidth < 0
124− }
125− Binding {
126− target: surfaceItem; property: "height"; value: root.height
127− when: root.requestedHeight < 0
128− }
129−
130 Loader {
83 Loader {
131 id: animationsLoader
84 id: animationsLoader
132 objectName: "animationsLoader"
85 objectName: "animationsLoader"
qml/Stages/TabletSideStageTouchGesture.qml → qml/Stage/TabletSideStageTouchGesture.qmlrenamed

The content is the same.

qml/Stages/TabletStage.qml → qml/Stage/TabletStage.qmlrenamed

The content is the same.

qml/Stages/TopLevelSurfaceRepeater.qml → qml/Stage/TopLevelSurfaceRepeater.qmlrenamed+9
@@ -55,4 +55,13 @@ Repeater {
55 startingUp = false;
55 startingUp = false;
56 }
56 }
57 }
57 }
58+
59+ function indexOf(delegateItem) {
60+ for (var i = 0; i < count; i++) {
61+ if (itemAt(i) === delegateItem) {
62+ return i;
63+ }
64+ }
65+ return -1;
66+ }
58}
67}
qml/Stages/TransformedSpreadDelegate.qml → qml/Stage/TransformedSpreadDelegate.qmlrenamed

The content is the same.

qml/Stages/TransformedTabletSpreadDelegate.qml → qml/Stage/TransformedTabletSpreadDelegate.qmlrenamed

The content is the same.

qml/Stages/WindowControlsOverlay.qml → qml/Stage/WindowControlsOverlay.qmlrenamed

The content is the same.

qml/Stages/WindowDecoration.qml → qml/Stage/WindowDecoration.qmlrenamed+1−1
@@ -79,7 +79,7 @@ MouseArea {
79 onMaximizeClicked: root.maximizeClicked();
79 onMaximizeClicked: root.maximizeClicked();
80 onMaximizeHorizontallyClicked: if (root.target.canBeMaximizedHorizontally) root.maximizeHorizontallyClicked();
80 onMaximizeHorizontallyClicked: if (root.target.canBeMaximizedHorizontally) root.maximizeHorizontallyClicked();
81 onMaximizeVerticallyClicked: if (root.target.canBeMaximizedVertically) root.maximizeVerticallyClicked();
81 onMaximizeVerticallyClicked: if (root.target.canBeMaximizedVertically) root.maximizeVerticallyClicked();
82− closeButtonShown: root.target.application.appId !== "unity8-dash"
82+ closeButtonShown: root.target.appId !== "unity8-dash"
83 }
83 }
84
84
85 Label {
85 Label {
qml/Stage/WindowInfoItem.qmlnew file+53
@@ -0,0 +1,53 @@
1+import QtQuick 2.4
2+import Ubuntu.Components 1.3
3+
4+Item {
5+ id: root
6+ implicitWidth: Math.max(iconShape.width, titleLabel.width)
7+ implicitHeight: iconShape.height + titleLabel.height + labelMargin + iconMargin
8+ property alias title: titleLabel.text
9+ property alias iconSource: icon.source
10+
11+ property real iconHeight: (height - titleLabel.height) * 0.65
12+ property real iconMargin: (height - titleLabel.height) * 0.25
13+ property real labelMargin: (height - titleLabel.height) * 0.1
14+ property int maxWidth: units.gu(10)
15+
16+ signal clicked()
17+
18+ ProportionalShape {
19+ id: iconShape
20+ anchors {
21+ top: parent.top
22+ topMargin: iconMargin
23+ left: parent.left
24+ }
25+ height: iconHeight
26+ borderSource: "undefined"
27+ aspect: UbuntuShape.Flat
28+ source: Image {
29+ id: icon
30+ sourceSize.width: iconShape.width
31+ sourceSize.height: iconShape.height
32+ cache: false // see lpbug#1543290 why no cache
33+ }
34+ }
35+
36+ MouseArea {
37+ anchors.fill: iconShape
38+ onClicked: root.clicked()
39+ }
40+
41+ Label {
42+ id: titleLabel
43+ anchors {
44+ left: iconShape.left
45+ top: iconShape.bottom
46+ topMargin: labelMargin
47+ }
48+ width: root.maxWidth
49+ fontSize: 'small'
50+ color: 'white'
51+ elide: Label.ElideRight
52+ }
53+}
qml/Stages/WindowResizeArea.qml → qml/Stage/WindowResizeArea.qmlrenamed+32−31
@@ -75,14 +75,15 @@ MouseArea {
75
75
76 function loadWindowState() {
76 function loadWindowState() {
77 var windowGeometry = windowStateStorage.getGeometry(root.windowId,
77 var windowGeometry = windowStateStorage.getGeometry(root.windowId,
78− Qt.rect(target.requestedX, target.requestedY, defaultWidth, defaultHeight));
78+ Qt.rect(target.windowedX, target.windowedY, defaultWidth, defaultHeight));
79
79
80+
80− target.requestedWidth = Qt.binding(function() { return Math.min(Math.max(windowGeometry.width, d.minimumWidth), screenWidth - root.leftMargin); });
81+ target.windowedWidth = Qt.binding(function() { return Math.min(Math.max(windowGeometry.width, d.minimumWidth), screenWidth - root.leftMargin); });
81− target.requestedHeight = Qt.binding(function() { return Math.min(Math.max(windowGeometry.height, d.minimumHeight),
82+ target.windowedHeight = Qt.binding(function() { return Math.min(Math.max(windowGeometry.height, d.minimumHeight),
82 root.screenHeight - (target.fullscreen ? 0 : PanelState.panelHeight)); });
83 root.screenHeight - (target.fullscreen ? 0 : PanelState.panelHeight)); });
83− target.requestedX = Qt.binding(function() { return Math.max(Math.min(windowGeometry.x, root.screenWidth - root.leftMargin - target.requestedWidth),
84+ target.windowedX = Qt.binding(function() { return Math.max(Math.min(windowGeometry.x, root.screenWidth - root.leftMargin - target.windowedWidth),
84 (target.fullscreen ? 0 : root.leftMargin)); });
85 (target.fullscreen ? 0 : root.leftMargin)); });
85− target.requestedY = Qt.binding(function() { return Math.max(Math.min(windowGeometry.y, root.screenHeight - target.requestedHeight), PanelState.panelHeight); });
86+ target.windowedY = Qt.binding(function() { return Math.max(Math.min(windowGeometry.y, root.screenHeight - target.windowedHeight), PanelState.panelHeight); });
86
87
87 var windowState = windowStateStorage.getState(root.windowId, WindowStateStorage.WindowStateNormal)
88 var windowState = windowStateStorage.getState(root.windowId, WindowStateStorage.WindowStateNormal)
88 target.restore(false /* animated */, windowState);
89 target.restore(false /* animated */, windowState);
@@ -111,28 +112,28 @@ MouseArea {
111
112
112 readonly property int minimumWidth: root.target ? Math.max(root.minWidth, root.target.minimumWidth) : root.minWidth
113 readonly property int minimumWidth: root.target ? Math.max(root.minWidth, root.target.minimumWidth) : root.minWidth
113 onMinimumWidthChanged: {
114 onMinimumWidthChanged: {
114− if (target.requestedWidth < minimumWidth) {
115+ if (target.windowedWidth < minimumWidth) {
115− target.requestedWidth = minimumWidth;
116+ target.windowedWidth = minimumWidth;
116 }
117 }
117 }
118 }
118 readonly property int minimumHeight: root.target ? Math.max(root.minHeight, root.target.minimumHeight) : root.minHeight
119 readonly property int minimumHeight: root.target ? Math.max(root.minHeight, root.target.minimumHeight) : root.minHeight
119 onMinimumHeightChanged: {
120 onMinimumHeightChanged: {
120− if (target.requestedHeight < minimumHeight) {
121+ if (target.windowedHeight < minimumHeight) {
121− target.requestedHeight = minimumHeight;
122+ target.windowedHeight = minimumHeight;
122 }
123 }
123 }
124 }
124 readonly property int maximumWidth: root.target && root.target.maximumWidth >= minimumWidth && root.target.maximumWidth > 0
125 readonly property int maximumWidth: root.target && root.target.maximumWidth >= minimumWidth && root.target.maximumWidth > 0
125 ? root.target.maximumWidth : maxSafeInt
126 ? root.target.maximumWidth : maxSafeInt
126 onMaximumWidthChanged: {
127 onMaximumWidthChanged: {
127− if (target.requestedWidth > maximumWidth) {
128+ if (target.windowedWidth > maximumWidth) {
128− target.requestedWidth = maximumWidth;
129+ target.windowedWidth = maximumWidth;
129 }
130 }
130 }
131 }
131 readonly property int maximumHeight: root.target && root.target.maximumHeight >= minimumHeight && root.target.maximumHeight > 0
132 readonly property int maximumHeight: root.target && root.target.maximumHeight >= minimumHeight && root.target.maximumHeight > 0
132 ? root.target.maximumHeight : maxSafeInt
133 ? root.target.maximumHeight : maxSafeInt
133 onMaximumHeightChanged: {
134 onMaximumHeightChanged: {
134− if (target.requestedHeight > maximumHeight) {
135+ if (target.windowedHeight > maximumHeight) {
135− target.requestedHeight = maximumHeight;
136+ target.windowedHeight = maximumHeight;
136 }
137 }
137 }
138 }
138 readonly property int widthIncrement: {
139 readonly property int widthIncrement: {
@@ -247,8 +248,8 @@ MouseArea {
247 var pos = mapToItem(root.target.parent, mouseX, mouseY);
248 var pos = mapToItem(root.target.parent, mouseX, mouseY);
248 d.startMousePosX = pos.x;
249 d.startMousePosX = pos.x;
249 d.startMousePosY = pos.y;
250 d.startMousePosY = pos.y;
250− d.startX = target.requestedX;
251+ d.startX = target.windowedX;
251− d.startY = target.requestedY;
252+ d.startY = target.windowedY;
252 d.startWidth = target.width;
253 d.startWidth = target.width;
253 d.startHeight = target.height;
254 d.startHeight = target.height;
254 d.currentWidth = target.width;
255 d.currentWidth = target.width;
@@ -285,53 +286,53 @@ MouseArea {
285
286
286 if (d.leftBorder) {
287 if (d.leftBorder) {
287 var newTargetX = d.startX + deltaX;
288 var newTargetX = d.startX + deltaX;
288− var rightBorderX = target.requestedX + target.width;
289+ var rightBorderX = target.windowedX + target.width;
289 if (rightBorderX > newTargetX + d.minimumWidth) {
290 if (rightBorderX > newTargetX + d.minimumWidth) {
290 if (rightBorderX < newTargetX + d.maximumWidth) {
291 if (rightBorderX < newTargetX + d.maximumWidth) {
291− target.requestedWidth = rightBorderX - newTargetX;
292+ target.windowedWidth = rightBorderX - newTargetX;
292 } else {
293 } else {
293− target.requestedWidth = d.maximumWidth;
294+ target.windowedWidth = d.maximumWidth;
294 }
295 }
295 } else {
296 } else {
296− target.requestedWidth = d.minimumWidth;
297+ target.windowedWidth = d.minimumWidth;
297 }
298 }
298
299
299 } else if (d.rightBorder) {
300 } else if (d.rightBorder) {
300 var newWidth = d.startWidth + deltaX;
301 var newWidth = d.startWidth + deltaX;
301 if (newWidth > d.minimumWidth) {
302 if (newWidth > d.minimumWidth) {
302 if (newWidth < d.maximumWidth) {
303 if (newWidth < d.maximumWidth) {
303− target.requestedWidth = newWidth;
304+ target.windowedWidth = newWidth;
304 } else {
305 } else {
305− target.requestedWidth = d.maximumWidth;
306+ target.windowedWidth = d.maximumWidth;
306 }
307 }
307 } else {
308 } else {
308− target.requestedWidth = d.minimumWidth;
309+ target.windowedWidth = d.minimumWidth;
309 }
310 }
310 }
311 }
311
312
312 if (d.topBorder) {
313 if (d.topBorder) {
313 var newTargetY = Math.max(d.startY + deltaY, PanelState.panelHeight); // disallow resizing up past Panel
314 var newTargetY = Math.max(d.startY + deltaY, PanelState.panelHeight); // disallow resizing up past Panel
314− var bottomBorderY = target.requestedY + target.height;
315+ var bottomBorderY = target.windowedY + target.height;
315 if (bottomBorderY > newTargetY + d.minimumHeight) {
316 if (bottomBorderY > newTargetY + d.minimumHeight) {
316 if (bottomBorderY < newTargetY + d.maximumHeight) {
317 if (bottomBorderY < newTargetY + d.maximumHeight) {
317− target.requestedHeight = bottomBorderY - newTargetY;
318+ target.windowedHeight = bottomBorderY - newTargetY;
318 } else {
319 } else {
319− target.requestedHeight = d.maximumHeight;
320+ target.windowedHeight = d.maximumHeight;
320 }
321 }
321 } else {
322 } else {
322− target.requestedHeight = d.minimumHeight;
323+ target.windowedHeight = d.minimumHeight;
323 }
324 }
324
325
325 } else if (d.bottomBorder) {
326 } else if (d.bottomBorder) {
326 var newHeight = d.startHeight + deltaY;
327 var newHeight = d.startHeight + deltaY;
327 if (newHeight > d.minimumHeight) {
328 if (newHeight > d.minimumHeight) {
328 if (newHeight < d.maximumHeight) {
329 if (newHeight < d.maximumHeight) {
329− target.requestedHeight = newHeight;
330+ target.windowedHeight = newHeight;
330 } else {
331 } else {
331− target.requestedHeight = d.maximumHeight;
332+ target.windowedHeight = d.maximumHeight;
332 }
333 }
333 } else {
334 } else {
334− target.requestedHeight = d.minimumHeight;
335+ target.windowedHeight = d.minimumHeight;
335 }
336 }
336 }
337 }
337 }
338 }
@@ -340,13 +341,13 @@ MouseArea {
340 target: root.target
341 target: root.target
341 onWidthChanged: {
342 onWidthChanged: {
342 if (d.moveLeftBorder) {
343 if (d.moveLeftBorder) {
343− target.requestedX += d.currentWidth - target.width;
344+ target.windowedX += d.currentWidth - target.width;
344 }
345 }
345 d.currentWidth = target.width;
346 d.currentWidth = target.width;
346 }
347 }
347 onHeightChanged: {
348 onHeightChanged: {
348 if (d.moveTopBorder) {
349 if (d.moveTopBorder) {
349− target.requestedY += d.currentHeight - target.height;
350+ target.windowedY += d.currentHeight - target.height;
350 }
351 }
351 d.currentHeight = target.height;
352 d.currentHeight = target.height;
352 }
353 }
qml/Stages/WindowedFullscreenPolicy.qml → qml/Stage/WindowedFullscreenPolicy.qmlrenamed

The content is the same.

qml/Stages/graphics/PageHeaderBaseDividerBottom@18.png → qml/Stage/graphics/PageHeaderBaseDividerBottom@18.pngrenamed

Binary file not shown.

qml/Stages/graphics/PageHeaderBaseDividerLight@18.png → qml/Stage/graphics/PageHeaderBaseDividerLight@18.pngrenamed

Binary file not shown.

qml/Stages/graphics/PageHeaderBaseDividerLight@18.sci → qml/Stage/graphics/PageHeaderBaseDividerLight@18.scirenamed

The content is the same.

qml/Stages/graphics/arrows-centre.png → qml/Stage/graphics/arrows-centre.pngrenamed

Binary file not shown.

qml/Stages/graphics/arrows.png → qml/Stage/graphics/arrows.pngrenamed

Binary file not shown.

qml/Stages/graphics/sidestage_drag.svg → qml/Stage/graphics/sidestage_drag.svgrenamed

The content is the same.

qml/Stages/graphics/sidestage_handle@20.png → qml/Stage/graphics/sidestage_handle@20.pngrenamed

Binary file not shown.

qml/Stages/graphics/sidestage_handle@20.sci → qml/Stage/graphics/sidestage_handle@20.scirenamed

The content is the same.

qml/Stages/graphics/sidestage_open.svg → qml/Stage/graphics/sidestage_open.svgrenamed

The content is the same.

qml/Stages/graphics/window-close.svg → qml/Stage/graphics/window-close.svgrenamed

The content is the same.

qml/Stages/DecoratedWindow.qmldeleted−157
@@ -1,157 +0,0 @@
1−/*
2− * Copyright (C) 2014-2016 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.4
18−import Ubuntu.Components 1.3
19−import Unity.Application 0.1
20−
21−FocusScope {
22− id: root
23−
24− width: !counterRotate ? applicationWindow.width : applicationWindow.height
25− height: visibleDecorationHeight + (!counterRotate ? applicationWindow.height : applicationWindow.width)
26−
27− property alias application: applicationWindow.application
28− property alias surface: applicationWindow.surface
29− readonly property alias focusedSurface: applicationWindow.focusedSurface
30− property alias active: decoration.active
31− readonly property alias title: applicationWindow.title
32− property alias fullscreen: applicationWindow.fullscreen
33− property alias maximizeButtonShown: decoration.maximizeButtonShown
34−
35− readonly property bool decorationShown: !fullscreen
36− property bool highlightShown: false
37− property real shadowOpacity: 1
38−
39− property real requestedWidth
40− property real requestedHeight
41−
42− property alias surfaceOrientationAngle: applicationWindow.surfaceOrientationAngle
43− readonly property real visibleDecorationHeight: root.decorationShown ? decoration.height : 0
44− readonly property bool counterRotate: surfaceOrientationAngle != 0 && surfaceOrientationAngle != 180
45−
46− readonly property int minimumWidth: !counterRotate ? applicationWindow.minimumWidth : applicationWindow.minimumHeight
47− readonly property int minimumHeight: visibleDecorationHeight + (!counterRotate ? applicationWindow.minimumHeight : applicationWindow.minimumWidth)
48− readonly property int maximumWidth: !counterRotate ? applicationWindow.maximumWidth : applicationWindow.maximumHeight
49− readonly property int maximumHeight: (root.decorationShown && applicationWindow.maximumHeight > 0 ? decoration.height : 0)
50− + (!counterRotate ? applicationWindow.maximumHeight : applicationWindow.maximumWidth)
51− readonly property int widthIncrement: !counterRotate ? applicationWindow.widthIncrement : applicationWindow.heightIncrement
52− readonly property int heightIncrement: !counterRotate ? applicationWindow.heightIncrement : applicationWindow.widthIncrement
53−
54− property alias overlayShown: decoration.overlayShown
55− property alias stageWidth: moveHandler.stageWidth
56− property alias stageHeight: moveHandler.stageHeight
57− readonly property alias dragging: moveHandler.dragging
58−
59− readonly property Item clientAreaItem: applicationWindow
60−
61− signal closeClicked()
62− signal maximizeClicked()
63− signal maximizeHorizontallyClicked()
64− signal maximizeVerticallyClicked()
65− signal minimizeClicked()
66− signal decorationPressed()
67− signal decorationReleased()
68−
69− Rectangle {
70− id: selectionHighlight
71− anchors.fill: parent
72− anchors.margins: -units.gu(1)
73− color: "white"
74− opacity: highlightShown ? 0.15 : 0
75− }
76−
77− Rectangle {
78− anchors { left: selectionHighlight.left; right: selectionHighlight.right; bottom: selectionHighlight.bottom; }
79− height: units.dp(2)
80− color: theme.palette.normal.focus
81− visible: highlightShown
82− }
83−
84− BorderImage {
85− anchors {
86− fill: root
87− margins: active ? -units.gu(2) : -units.gu(1.5)
88− }
89− source: "graphics/dropshadow2gu.sci"
90− opacity: root.shadowOpacity * .3
91− visible: !fullscreen
92− }
93−
94− WindowDecoration {
95− id: decoration
96− target: root.parent
97− objectName: "appWindowDecoration"
98− anchors { left: parent.left; top: parent.top; right: parent.right }
99− height: units.gu(3)
100− width: root.width
101− title: applicationWindow.title
102− visible: root.decorationShown
103−
104− onCloseClicked: root.closeClicked();
105− onMaximizeClicked: { root.decorationPressed(); root.maximizeClicked(); }
106− onMaximizeHorizontallyClicked: { root.decorationPressed(); root.maximizeHorizontallyClicked(); }
107− onMaximizeVerticallyClicked: { root.decorationPressed(); root.maximizeVerticallyClicked(); }
108− onMinimizeClicked: root.minimizeClicked();
109− onPressed: root.decorationPressed();
110−
111− onPressedChanged: moveHandler.handlePressedChanged(pressed, pressedButtons, mouseX, mouseY)
112− onPositionChanged: moveHandler.handlePositionChanged(mouse)
113− onReleased: {
114− root.decorationReleased();
115− moveHandler.handleReleased();
116− }
117− }
118−
119− MoveHandler {
120− id: moveHandler
121− objectName: "moveHandler"
122− target: root.parent
123− buttonsWidth: decoration.buttonsWidth
124− }
125−
126− ApplicationWindow {
127− id: applicationWindow
128− objectName: "appWindow"
129− anchors.top: parent.top
130− anchors.topMargin: decoration.height
131− anchors.left: parent.left
132− readonly property real requestedHeightMinusDecoration: root.requestedHeight - root.visibleDecorationHeight
133− requestedHeight: !counterRotate ? requestedHeightMinusDecoration : root.requestedWidth
134− requestedWidth: !counterRotate ? root.requestedWidth : requestedHeightMinusDecoration
135− interactive: true
136− focus: true
137−
138− transform: Rotation {
139− readonly property int rotationAngle: applicationWindow.application &&
140− applicationWindow.application.rotatesWindowContents
141− ? ((360 - applicationWindow.surfaceOrientationAngle) % 360) : 0
142− origin.x: {
143− if (rotationAngle == 90) return applicationWindow.height / 2;
144− else if (rotationAngle == 270) return applicationWindow.width / 2;
145− else if (rotationAngle == 180) return applicationWindow.width / 2;
146− else return 0;
147− }
148− origin.y: {
149− if (rotationAngle == 90) return applicationWindow.height / 2;
150− else if (rotationAngle == 270) return applicationWindow.width / 2;
151− else if (rotationAngle == 180) return applicationWindow.height / 2;
152− else return 0;
153− }
154− angle: rotationAngle
155− }
156− }
157−}
qml/Stages/DesktopStage.qmldeleted−825
@@ -1,825 +0,0 @@
1−/*
2− * Copyright (C) 2014-2016 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.4
18−import Ubuntu.Components 1.3
19−import Unity.Application 0.1
20−import "../Components/PanelState"
21−import "../Components"
22−import Utils 0.1
23−import Ubuntu.Gestures 0.1
24−import GlobalShortcut 1.0
25−
26−AbstractStage {
27− id: root
28− anchors.fill: parent
29− paintBackground: false
30−
31− // functions to be called from outside
32− function updateFocusedAppOrientation() { /* TODO */ }
33− function updateFocusedAppOrientationAnimated() { /* TODO */}
34− function pushRightEdge(amount) {
35− if (spread.state === "") {
36− edgeBarrier.push(amount);
37− }
38− }
39− function closeFocusedDelegate() {
40− if (priv.focusedAppDelegate && !priv.focusedAppDelegate.isDash) {
41− priv.focusedAppDelegate.close();
42− }
43− }
44−
45− // Used by TutorialRight
46− property bool spreadShown: spread.state == "altTab"
47−
48− // used by the snap windows (edge maximize) feature
49− readonly property alias previewRectangle: fakeRectangle
50−
51− mainApp: priv.focusedAppDelegate ? priv.focusedAppDelegate.application : null
52−
53− // application windows never rotate independently
54− mainAppWindowOrientationAngle: shellOrientationAngle
55−
56− orientationChangesEnabled: true
57−
58−
59− itemConfiningMouseCursor: !spreadShown && priv.focusedAppDelegate && priv.focusedAppDelegate.surface &&
60− priv.focusedAppDelegate.surface.confinesMousePointer ?
61− priv.focusedAppDelegate.clientAreaItem : null;
62−
63− GlobalShortcut {
64− id: showSpreadShortcut
65− shortcut: Qt.MetaModifier|Qt.Key_W
66− onTriggered: spread.state = "altTab"
67− }
68−
69− GlobalShortcut {
70− id: minimizeAllShortcut
71− shortcut: Qt.MetaModifier|Qt.ControlModifier|Qt.Key_D
72− onTriggered: priv.minimizeAllWindows()
73− }
74−
75− GlobalShortcut {
76− id: maximizeWindowShortcut
77− shortcut: Qt.MetaModifier|Qt.ControlModifier|Qt.Key_Up
78− onTriggered: priv.focusedAppDelegate.maximize()
79− active: priv.focusedAppDelegate !== null && priv.focusedAppDelegate.canBeMaximized
80− }
81−
82− GlobalShortcut {
83− id: maximizeWindowLeftShortcut
84− shortcut: Qt.MetaModifier|Qt.ControlModifier|Qt.Key_Left
85− onTriggered: priv.focusedAppDelegate.maximizeLeft()
86− active: priv.focusedAppDelegate !== null && priv.focusedAppDelegate.canBeMaximizedLeftRight
87− }
88−
89− GlobalShortcut {
90− id: maximizeWindowRightShortcut
91− shortcut: Qt.MetaModifier|Qt.ControlModifier|Qt.Key_Right
92− onTriggered: priv.focusedAppDelegate.maximizeRight()
93− active: priv.focusedAppDelegate !== null && priv.focusedAppDelegate.canBeMaximizedLeftRight
94− }
95−
96− GlobalShortcut {
97− id: minimizeRestoreShortcut
98− shortcut: Qt.MetaModifier|Qt.ControlModifier|Qt.Key_Down
99− onTriggered: priv.focusedAppDelegate.anyMaximized
100− ? priv.focusedAppDelegate.restoreFromMaximized() : priv.focusedAppDelegate.minimize()
101− active: priv.focusedAppDelegate !== null
102− }
103−
104− GlobalShortcut {
105− shortcut: Qt.AltModifier|Qt.Key_Print
106− onTriggered: root.itemSnapshotRequested(priv.focusedAppDelegate)
107− active: priv.focusedAppDelegate !== null
108− }
109−
110− Connections {
111− target: root.topLevelSurfaceList
112− onCountChanged: {
113− if (spread.state == "altTab") {
114− spread.cancel();
115− }
116− }
117− }
118−
119− QtObject {
120− id: priv
121− objectName: "DesktopStagePrivate"
122−
123− property var focusedAppDelegate: null
124− onFocusedAppDelegateChanged: {
125− if (spread.state == "altTab") {
126− spread.state = "";
127− }
128− }
129−
130− property var foregroundMaximizedAppDelegate: null // for stuff like drop shadow and focusing maximized app by clicking panel
131−
132− function updateForegroundMaximizedApp() {
133− var found = false;
134− for (var i = 0; i < appRepeater.count && !found; i++) {
135− var item = appRepeater.itemAt(i);
136− if (item && item.visuallyMaximized) {
137− foregroundMaximizedAppDelegate = item;
138− found = true;
139− }
140− }
141− if (!found) {
142− foregroundMaximizedAppDelegate = null;
143− }
144− }
145−
146− function minimizeAllWindows() {
147− for (var i = 0; i < appRepeater.count; i++) {
148− var appDelegate = appRepeater.itemAt(i);
149− if (appDelegate && !appDelegate.minimized) {
150− appDelegate.minimize();
151− }
152− }
153− }
154−
155− function focusNext() {
156− for (var i = 0; i < appRepeater.count; i++) {
157− var appDelegate = appRepeater.itemAt(i);
158− if (appDelegate && !appDelegate.minimized) {
159− appDelegate.focus = true;
160− return;
161− }
162− }
163− }
164−
165− readonly property real virtualKeyboardHeight: SurfaceManager.inputMethodSurface
166− ? SurfaceManager.inputMethodSurface.inputBounds.height
167− : 0
168− }
169−
170− Connections {
171− target: PanelState
172− onCloseClicked: { if (priv.focusedAppDelegate) { priv.focusedAppDelegate.close(); } }
173− onMinimizeClicked: { if (priv.focusedAppDelegate) { priv.focusedAppDelegate.minimize(); } }
174− onRestoreClicked: { if (priv.focusedAppDelegate) { priv.focusedAppDelegate.restoreFromMaximized(); } }
175− }
176−
177− Binding {
178− target: PanelState
179− property: "buttonsVisible"
180− value: priv.focusedAppDelegate !== null && priv.focusedAppDelegate.maximized // FIXME for Locally integrated menus
181− && spread.state == ""
182− }
183−
184− Binding {
185− target: PanelState
186− property: "title"
187− value: {
188− if (priv.focusedAppDelegate !== null && spread.state == "") {
189− if (priv.focusedAppDelegate.maximized)
190− return priv.focusedAppDelegate.title
191− else
192− return priv.focusedAppDelegate.appName
193− }
194− return ""
195− }
196− when: priv.focusedAppDelegate
197− }
198−
199− Binding {
200− target: PanelState
201− property: "dropShadow"
202− value: priv.focusedAppDelegate && !priv.focusedAppDelegate.maximized && priv.foregroundMaximizedAppDelegate !== null
203− }
204−
205− Binding {
206− target: PanelState
207− property: "closeButtonShown"
208− value: priv.focusedAppDelegate && priv.focusedAppDelegate.maximized && !priv.focusedAppDelegate.isDash
209− }
210−
211− Component.onDestruction: {
212− PanelState.title = "";
213− PanelState.buttonsVisible = false;
214− PanelState.dropShadow = false;
215− }
216−
217− Instantiator {
218− model: root.applicationManager
219− delegate: Binding {
220− target: model.application
221− property: "requestedState"
222−
223− // TODO: figure out some lifecycle policy, like suspending minimized apps
224− // if running on a tablet or something.
225− // TODO: If the device has a dozen suspended apps because it was running
226− // in staged mode, when it switches to Windowed mode it will suddenly
227− // resume all those apps at once. We might want to avoid that.
228− value: ApplicationInfoInterface.RequestedRunning // Always running for now
229− }
230− }
231−
232− Binding {
233− target: MirFocusController
234− property: "focusedSurface"
235− value: priv.focusedAppDelegate ? priv.focusedAppDelegate.focusedSurface : null
236− when: !appRepeater.startingUp && root.parent
237− }
238−
239− FocusScope {
240− id: appContainer
241− objectName: "appContainer"
242− anchors.fill: parent
243− focus: spread.state !== "altTab"
244−
245− Wallpaper {
246− id: wallpaper
247− anchors.fill: parent
248− source: root.background
249− }
250−
251− TopLevelSurfaceRepeater {
252− id: appRepeater
253− model: topLevelSurfaceList
254− objectName: "appRepeater"
255−
256− delegate: FocusScope {
257− id: appDelegate
258− objectName: "appDelegate_" + model.id
259− // z might be overriden in some cases by effects, but we need z ordering
260− // to calculate occlusion detection
261− property int normalZ: topLevelSurfaceList.count - index
262− onNormalZChanged: {
263− if (visuallyMaximized) {
264− priv.updateForegroundMaximizedApp();
265− }
266− }
267− z: normalZ
268− x: requestedX // may be overridden in some states. Do not directly write to this.
269− y: requestedY // may be overridden in some states. Do not directly write to this.
270− property real requestedX: priv.focusedAppDelegate ? priv.focusedAppDelegate.x + units.gu(3) : (normalZ - 1) * units.gu(3)
271− property real requestedY: priv.focusedAppDelegate ? priv.focusedAppDelegate.y + units.gu(3) : normalZ * units.gu(3)
272−
273− Binding {
274− target: appDelegate
275− property: "y"
276− value: appDelegate.requestedY -
277− Math.min(appDelegate.requestedY - PanelState.panelHeight,
278− Math.max(0, priv.virtualKeyboardHeight - (appContainer.height - (appDelegate.requestedY + appDelegate.height))))
279− when: root.oskEnabled && appDelegate.focus && (appDelegate.state == "normal" || appDelegate.state == "restored")
280− && SurfaceManager.inputMethodSurface
281− && SurfaceManager.inputMethodSurface.state != Mir.HiddenState
282− && SurfaceManager.inputMethodSurface.state != Mir.MinimizedState
283−
284− }
285−
286− width: decoratedWindow.width
287− height: decoratedWindow.height
288−
289− Connections {
290− target: root
291− onShellOrientationAngleChanged: {
292− // at this point decoratedWindow.surfaceOrientationAngle is the old shellOrientationAngle
293− if (application && application.rotatesWindowContents) {
294− if (state == "normal" || state == "restored") {
295− var angleDiff = decoratedWindow.surfaceOrientationAngle - shellOrientationAngle;
296− angleDiff = (360 + angleDiff) % 360;
297− if (angleDiff === 90 || angleDiff === 270) {
298− var aux = decoratedWindow.requestedHeight;
299− decoratedWindow.requestedHeight = decoratedWindow.requestedWidth + decoratedWindow.visibleDecorationHeight;
300− decoratedWindow.requestedWidth = aux - decoratedWindow.visibleDecorationHeight;
301− }
302− }
303− decoratedWindow.surfaceOrientationAngle = shellOrientationAngle;
304− } else {
305− decoratedWindow.surfaceOrientationAngle = 0;
306− }
307− }
308− }
309−
310− readonly property alias application: decoratedWindow.application
311− readonly property alias minimumWidth: decoratedWindow.minimumWidth
312− readonly property alias minimumHeight: decoratedWindow.minimumHeight
313− readonly property alias maximumWidth: decoratedWindow.maximumWidth
314− readonly property alias maximumHeight: decoratedWindow.maximumHeight
315− readonly property alias widthIncrement: decoratedWindow.widthIncrement
316− readonly property alias heightIncrement: decoratedWindow.heightIncrement
317− property int requestedWidth: -1
318− property int requestedHeight: -1
319−
320− readonly property bool maximized: windowState === WindowStateStorage.WindowStateMaximized
321− readonly property bool maximizedLeft: windowState === WindowStateStorage.WindowStateMaximizedLeft
322− readonly property bool maximizedRight: windowState === WindowStateStorage.WindowStateMaximizedRight
323− readonly property bool maximizedHorizontally: windowState === WindowStateStorage.WindowStateMaximizedHorizontally
324− readonly property bool maximizedVertically: windowState === WindowStateStorage.WindowStateMaximizedVertically
325− readonly property bool maximizedTopLeft: windowState === WindowStateStorage.WindowStateMaximizedTopLeft
326− readonly property bool maximizedTopRight: windowState === WindowStateStorage.WindowStateMaximizedTopRight
327− readonly property bool maximizedBottomLeft: windowState === WindowStateStorage.WindowStateMaximizedBottomLeft
328− readonly property bool maximizedBottomRight: windowState === WindowStateStorage.WindowStateMaximizedBottomRight
329− readonly property bool anyMaximized: maximized || maximizedLeft || maximizedRight || maximizedHorizontally || maximizedVertically ||
330− maximizedTopLeft || maximizedTopRight || maximizedBottomLeft || maximizedBottomRight
331−
332− readonly property bool minimized: windowState & WindowStateStorage.WindowStateMinimized
333− readonly property alias fullscreen: decoratedWindow.fullscreen
334−
335− readonly property bool canBeMaximized: canBeMaximizedHorizontally && canBeMaximizedVertically
336− readonly property bool canBeMaximizedLeftRight: (maximumWidth == 0 || maximumWidth >= appContainer.width/2) &&
337− (maximumHeight == 0 || maximumHeight >= appContainer.height)
338− readonly property bool canBeCornerMaximized: (maximumWidth == 0 || maximumWidth >= appContainer.width/2) &&
339− (maximumHeight == 0 || maximumHeight >= appContainer.height/2)
340− readonly property bool canBeMaximizedHorizontally: maximumWidth == 0 || maximumWidth >= appContainer.width
341− readonly property bool canBeMaximizedVertically: maximumHeight == 0 || maximumHeight >= appContainer.height
342−
343− property int windowState: WindowStateStorage.WindowStateNormal
344− property bool animationsEnabled: true
345− property alias title: decoratedWindow.title
346− readonly property string appName: model.application ? model.application.name : ""
347− property bool visuallyMaximized: false
348− property bool visuallyMinimized: false
349−
350− readonly property var surface: model.surface
351− readonly property alias resizeArea: resizeArea
352− readonly property alias focusedSurface: decoratedWindow.focusedSurface
353− readonly property bool dragging: touchControls.overlayShown ? touchControls.dragging : decoratedWindow.dragging
354−
355− readonly property bool isDash: model.application.appId == "unity8-dash"
356− readonly property alias clientAreaItem: decoratedWindow.clientAreaItem
357−
358− function claimFocus() {
359− if (spread.state == "altTab") {
360− spread.cancel();
361− }
362− appDelegate.restore(true /* animated */, appDelegate.windowState);
363− }
364− Connections {
365− target: model.surface
366− onFocusRequested: claimFocus();
367− }
368− Connections {
369− target: model.application
370− onFocusRequested: {
371− if (!model.surface) {
372− // when an app has no surfaces, we assume there's only one entry representing it:
373− // this delegate.
374− claimFocus();
375− } else {
376− // if the application has surfaces, focus request should be at surface-level.
377− }
378− }
379− }
380−
381− onFocusChanged: {
382− if (appRepeater.startingUp)
383− return;
384−
385− if (focus) {
386− // If we're orphan (!parent) it means this stage is no longer the current one
387− // and will be deleted shortly. So we should no longer have a say over the model
388− if (root.parent) {
389− topLevelSurfaceList.raiseId(model.id);
390− }
391−
392− priv.focusedAppDelegate = appDelegate;
393− } else if (!focus && priv.focusedAppDelegate === appDelegate) {
394− priv.focusedAppDelegate = null;
395− // FIXME: No idea why the Binding{} doens't update when focusedAppDelegate turns null
396− MirFocusController.focusedSurface = null;
397− }
398− }
399− Component.onCompleted: {
400− if (application && application.rotatesWindowContents) {
401− decoratedWindow.surfaceOrientationAngle = shellOrientationAngle;
402− } else {
403− decoratedWindow.surfaceOrientationAngle = 0;
404− }
405−
406− // NB: We're differentiating if this delegate was created in response to a new entry in the model
407− // or if the Repeater is just populating itself with delegates to match the model it received.
408− if (!appRepeater.startingUp) {
409− // a top level window is always the focused one when it first appears, unfocusing
410− // any preexisting one
411− focus = true;
412− }
413− }
414− Component.onDestruction: {
415− if (!root.parent) {
416− // This stage is about to be destroyed. Don't mess up with the model at this point
417− return;
418− }
419−
420− if (visuallyMaximized) {
421− priv.updateForegroundMaximizedApp();
422− }
423−
424− if (focus) {
425− // focus some other window
426− for (var i = 0; i < appRepeater.count; i++) {
427− var appDelegate = appRepeater.itemAt(i);
428− if (appDelegate && !appDelegate.minimized && i != index) {
429− appDelegate.focus = true;
430− return;
431− }
432− }
433− }
434− }
435−
436− onVisuallyMaximizedChanged: priv.updateForegroundMaximizedApp()
437−
438− visible: (
439− !visuallyMinimized
440− && !greeter.fullyShown
441− && (priv.foregroundMaximizedAppDelegate === null || priv.foregroundMaximizedAppDelegate.normalZ <= z)
442− )
443− || decoratedWindow.fullscreen
444− || (spread.state == "altTab" && index === spread.highlightedIndex)
445−
446− function close() {
447− model.surface.close();
448− }
449−
450− function maximize(animated) {
451− animationsEnabled = (animated === undefined) || animated;
452− windowState = WindowStateStorage.WindowStateMaximized;
453− }
454− function maximizeLeft(animated) {
455− animationsEnabled = (animated === undefined) || animated;
456− windowState = WindowStateStorage.WindowStateMaximizedLeft;
457− }
458− function maximizeRight(animated) {
459− animationsEnabled = (animated === undefined) || animated;
460− windowState = WindowStateStorage.WindowStateMaximizedRight;
461− }
462− function maximizeHorizontally(animated) {
463− animationsEnabled = (animated === undefined) || animated;
464− windowState = WindowStateStorage.WindowStateMaximizedHorizontally;
465− }
466− function maximizeVertically(animated) {
467− animationsEnabled = (animated === undefined) || animated;
468− windowState = WindowStateStorage.WindowStateMaximizedVertically;
469− }
470− function maximizeTopLeft(animated) {
471− animationsEnabled = (animated === undefined) || animated;
472− windowState = WindowStateStorage.WindowStateMaximizedTopLeft;
473− }
474− function maximizeTopRight(animated) {
475− animationsEnabled = (animated === undefined) || animated;
476− windowState = WindowStateStorage.WindowStateMaximizedTopRight;
477− }
478− function maximizeBottomLeft(animated) {
479− animationsEnabled = (animated === undefined) || animated;
480− windowState = WindowStateStorage.WindowStateMaximizedBottomLeft;
481− }
482− function maximizeBottomRight(animated) {
483− animationsEnabled = (animated === undefined) || animated;
484− windowState = WindowStateStorage.WindowStateMaximizedBottomRight;
485− }
486− function minimize(animated) {
487− animationsEnabled = (animated === undefined) || animated;
488− windowState |= WindowStateStorage.WindowStateMinimized; // add the minimized bit
489− }
490− function restoreFromMaximized(animated) {
491− animationsEnabled = (animated === undefined) || animated;
492− windowState = WindowStateStorage.WindowStateRestored;
493− }
494− function restore(animated,state) {
495− animationsEnabled = (animated === undefined) || animated;
496− windowState = state || WindowStateStorage.WindowStateRestored;
497− windowState &= ~WindowStateStorage.WindowStateMinimized; // clear the minimized bit
498− focus = true;
499− }
500−
501− function playFocusAnimation() {
502− focusAnimation.start()
503− }
504−
505− UbuntuNumberAnimation {
506− id: focusAnimation
507− target: appDelegate
508− property: "scale"
509− from: 0.98
510− to: 1
511− duration: UbuntuAnimation.SnapDuration
512− }
513−
514− // unlike requestedX/Y, this is the last known grab position before being pushed against edges/corners
515− // when restoring, the window should return to these, not to the place where it was dropped near the edge
516− property real restoredX
517− property real restoredY
518−
519− states: [
520− State {
521− name: "fullscreen"; when: appDelegate.fullscreen && !appDelegate.minimized
522− PropertyChanges {
523− target: appDelegate;
524− x: rotation == 0 ? 0 : (parent.width - width) / 2 + (shellOrientationAngle == 90 ? -PanelState.panelHeight : PanelState.panelHeight)
525− y: rotation == 0 ? -PanelState.panelHeight : (parent.height - height) / 2
526− requestedWidth: appContainer.width;
527− requestedHeight: appContainer.height;
528− }
529− },
530− State {
531− name: "normal";
532− when: appDelegate.windowState == WindowStateStorage.WindowStateNormal
533− PropertyChanges {
534− target: appDelegate;
535− visuallyMinimized: false;
536− visuallyMaximized: false
537− }
538− },
539− State {
540− name: "restored";
541− when: appDelegate.windowState == WindowStateStorage.WindowStateRestored
542− extend: "normal"
543− PropertyChanges {
544− target: appDelegate;
545− requestedX: restoredX;
546− requestedY: restoredY;
547− }
548− },
549− State {
550− name: "maximized"; when: appDelegate.maximized && !appDelegate.minimized
551− PropertyChanges {
552− target: appDelegate;
553− requestedX: root.leftMargin;
554− requestedY: 0;
555− requestedWidth: appContainer.width - root.leftMargin;
556− requestedHeight: appContainer.height;
557− visuallyMinimized: false;
558− visuallyMaximized: true
559− }
560− },
561− State {
562− name: "maximizedLeft"; when: appDelegate.maximizedLeft && !appDelegate.minimized
563− PropertyChanges {
564− target: appDelegate
565− requestedX: root.leftMargin
566− requestedY: PanelState.panelHeight
567− requestedWidth: (appContainer.width - root.leftMargin)/2
568− requestedHeight: appContainer.height - PanelState.panelHeight
569− }
570− },
571− State {
572− name: "maximizedRight"; when: appDelegate.maximizedRight && !appDelegate.minimized
573− extend: "maximizedLeft"
574− PropertyChanges {
575− target: appDelegate;
576− requestedX: (appContainer.width + root.leftMargin)/2
577− }
578− },
579− State {
580− name: "maximizedTopLeft"; when: appDelegate.maximizedTopLeft && !appDelegate.minimized
581− PropertyChanges {
582− target: appDelegate
583− requestedX: root.leftMargin
584− requestedY: PanelState.panelHeight
585− requestedWidth: (appContainer.width - root.leftMargin)/2
586− requestedHeight: (appContainer.height - PanelState.panelHeight)/2
587− }
588− },
589− State {
590− name: "maximizedTopRight"; when: appDelegate.maximizedTopRight && !appDelegate.minimized
591− extend: "maximizedTopLeft"
592− PropertyChanges {
593− target: appDelegate
594− requestedX: (appContainer.width + root.leftMargin)/2
595− }
596− },
597− State {
598− name: "maximizedBottomLeft"; when: appDelegate.maximizedBottomLeft && !appDelegate.minimized
599− PropertyChanges {
600− target: appDelegate
601− requestedX: root.leftMargin
602− requestedY: (appContainer.height + PanelState.panelHeight)/2
603− requestedWidth: (appContainer.width - root.leftMargin)/2
604− requestedHeight: appContainer.height/2
605− }
606− },
607− State {
608− name: "maximizedBottomRight"; when: appDelegate.maximizedBottomRight && !appDelegate.minimized
609− extend: "maximizedBottomLeft"
610− PropertyChanges {
611− target: appDelegate
612− requestedX: (appContainer.width + root.leftMargin)/2
613− }
614− },
615− State {
616− name: "maximizedHorizontally"; when: appDelegate.maximizedHorizontally && !appDelegate.minimized
617− PropertyChanges { target: appDelegate; requestedX: root.leftMargin; requestedY: requestedY; requestedWidth: appContainer.width - root.leftMargin }
618− },
619− State {
620− name: "maximizedVertically"; when: appDelegate.maximizedVertically && !appDelegate.minimized
621− PropertyChanges { target: appDelegate; requestedX: requestedX; requestedY: PanelState.panelHeight; requestedHeight: appContainer.height - PanelState.panelHeight }
622− },
623− State {
624− name: "minimized"; when: appDelegate.minimized
625− PropertyChanges {
626− target: appDelegate;
627− requestedX: -appDelegate.width / 2;
628− scale: units.gu(5) / appDelegate.width;
629− opacity: 0;
630− visuallyMinimized: true;
631− visuallyMaximized: false
632− }
633− }
634− ]
635− transitions: [
636− Transition {
637− to: "normal,restored"
638− enabled: appDelegate.animationsEnabled
639− PropertyAction { target: appDelegate; properties: "visuallyMinimized,visuallyMaximized" }
640− UbuntuNumberAnimation { target: appDelegate; properties: "requestedX,requestedY,opacity,scale,requestedWidth,requestedHeight" }
641− },
642− Transition {
643− to: "minimized"
644− enabled: appDelegate.animationsEnabled
645− PropertyAction { target: appDelegate; property: "visuallyMaximized" }
646− SequentialAnimation {
647− UbuntuNumberAnimation { target: appDelegate; properties: "requestedX,requestedY,opacity,scale,requestedWidth,requestedHeight" }
648− PropertyAction { target: appDelegate; property: "visuallyMinimized" }
649− ScriptAction {
650− script: {
651− if (appDelegate.minimized) {
652− appDelegate.focus = false;
653− priv.focusNext();
654− }
655− }
656− }
657− }
658− },
659− Transition {
660− to: "*" //maximized and fullscreen
661− enabled: appDelegate.animationsEnabled
662− PropertyAction { target: appDelegate; property: "visuallyMinimized" }
663− SequentialAnimation {
664− UbuntuNumberAnimation { target: appDelegate; properties: "requestedX,requestedY,opacity,scale,requestedWidth,requestedHeight" }
665− PropertyAction { target: appDelegate; property: "visuallyMaximized" }
666− ScriptAction { script: { fakeRectangle.stop(); } }
667− }
668− }
669− ]
670−
671− Binding {
672− id: previewBinding
673− target: appDelegate
674− property: "z"
675− value: topLevelSurfaceList.count + 1
676− when: index == spread.highlightedIndex && spread.ready
677− }
678−
679− Binding {
680− target: PanelState
681− property: "buttonsAlwaysVisible"
682− value: appDelegate && appDelegate.maximized && touchControls.overlayShown
683− }
684−
685− WindowResizeArea {
686− id: resizeArea
687− objectName: "windowResizeArea"
688−
689− // workaround so that it chooses the correct resize borders when you drag from a corner ResizeGrip
690− anchors.margins: touchControls.overlayShown ? borderThickness/2 : -borderThickness
691−
692− target: appDelegate
693− minWidth: units.gu(10)
694− minHeight: units.gu(10)
695− borderThickness: units.gu(2)
696− windowId: model.application.appId // FIXME: Change this to point to windowId once we have such a thing
697− screenWidth: appContainer.width
698− screenHeight: appContainer.height
699− leftMargin: root.leftMargin
700−
701− onPressed: { appDelegate.focus = true; }
702−
703− Component.onCompleted: {
704− loadWindowState();
705− }
706−
707− property bool saveStateOnDestruction: true
708− Connections {
709− target: root
710− onStageAboutToBeUnloaded: {
711− resizeArea.saveWindowState();
712− resizeArea.saveStateOnDestruction = false;
713− fullscreenPolicy.active = false;
714− }
715− }
716− Component.onDestruction: {
717− if (saveStateOnDestruction) {
718− saveWindowState();
719− }
720− }
721− }
722−
723− DecoratedWindow {
724− id: decoratedWindow
725− objectName: "decoratedWindow"
726− anchors.left: appDelegate.left
727− anchors.top: appDelegate.top
728− application: model.application
729− surface: model.surface
730− active: appDelegate.focus
731− focus: true
732− maximizeButtonShown: appDelegate.canBeMaximized
733− overlayShown: touchControls.overlayShown
734− stageWidth: appContainer.width
735− stageHeight: appContainer.height
736−
737− requestedWidth: appDelegate.requestedWidth
738− requestedHeight: appDelegate.requestedHeight
739−
740− onCloseClicked: { appDelegate.close(); }
741− onMaximizeClicked: appDelegate.anyMaximized ? appDelegate.restoreFromMaximized() : appDelegate.maximize();
742− onMaximizeHorizontallyClicked: appDelegate.maximizedHorizontally ? appDelegate.restoreFromMaximized() : appDelegate.maximizeHorizontally()
743− onMaximizeVerticallyClicked: appDelegate.maximizedVertically ? appDelegate.restoreFromMaximized() : appDelegate.maximizeVertically()
744− onMinimizeClicked: appDelegate.minimize()
745− onDecorationPressed: { appDelegate.focus = true; }
746− onDecorationReleased: fakeRectangle.commit();
747− }
748−
749− WindowControlsOverlay {
750− id: touchControls
751− target: appDelegate
752− stageWidth: appContainer.width
753− stageHeight: appContainer.height
754−
755− onFakeMaximizeAnimationRequested: if (!appDelegate.maximized) fakeRectangle.maximize(amount, true)
756− onFakeMaximizeLeftAnimationRequested: if (!appDelegate.maximizedLeft) fakeRectangle.maximizeLeft(amount, true)
757− onFakeMaximizeRightAnimationRequested: if (!appDelegate.maximizedRight) fakeRectangle.maximizeRight(amount, true)
758− onFakeMaximizeTopLeftAnimationRequested: if (!appDelegate.maximizedTopLeft) fakeRectangle.maximizeTopLeft(amount, true);
759− onFakeMaximizeTopRightAnimationRequested: if (!appDelegate.maximizedTopRight) fakeRectangle.maximizeTopRight(amount, true);
760− onFakeMaximizeBottomLeftAnimationRequested: if (!appDelegate.maximizedBottomLeft) fakeRectangle.maximizeBottomLeft(amount, true);
761− onFakeMaximizeBottomRightAnimationRequested: if (!appDelegate.maximizedBottomRight) fakeRectangle.maximizeBottomRight(amount, true);
762− onStopFakeAnimation: fakeRectangle.stop();
763− onDragReleased: fakeRectangle.commit();
764− }
765−
766− WindowedFullscreenPolicy {
767− id: fullscreenPolicy
768− active: true
769− surface: model.surface
770− }
771− }
772− }
773− }
774−
775− FakeMaximizeDelegate {
776− id: fakeRectangle
777− target: priv.focusedAppDelegate
778− leftMargin: root.leftMargin
779− appContainerWidth: appContainer.width
780− appContainerHeight: appContainer.height
781− }
782−
783− EdgeBarrier {
784− id: edgeBarrier
785−
786− // NB: it does its own positioning according to the specified edge
787− edge: Qt.RightEdge
788−
789− onPassed: { spread.show(); }
790− material: Component {
791− Item {
792− Rectangle {
793− width: parent.height
794− height: parent.width
795− rotation: 90
796− anchors.centerIn: parent
797− gradient: Gradient {
798− GradientStop { position: 0.0; color: Qt.rgba(0.16,0.16,0.16,0.5)}
799− GradientStop { position: 1.0; color: Qt.rgba(0.16,0.16,0.16,0)}
800− }
801− }
802− }
803− }
804− }
805−
806− SwipeArea {
807− direction: Direction.Leftwards
808− anchors { top: parent.top; right: parent.right; bottom: parent.bottom }
809− width: units.gu(1)
810− onDraggingChanged: { if (dragging) { spread.show(); } }
811− }
812−
813− DesktopSpread {
814− id: spread
815− objectName: "spread"
816− anchors.fill: appContainer
817− workspace: appContainer
818− focus: state == "altTab"
819− altTabPressed: root.altTabPressed
820−
821− onPlayFocusAnimation: {
822− appRepeater.itemAt(index).playFocusAnimation();
823− }
824− }
825−}
qml/Tutorial/TutorialRight.qml+1−1
@@ -24,7 +24,7 @@ TutorialPage {
24 property string usageScenario
24 property string usageScenario
25
25
26 // When on phone or tablet, fade out as the drag progresses
26 // When on phone or tablet, fade out as the drag progresses
27− opacityOverride: usageScenario === "desktop" ? 1 : 1 - stage.dragProgress * 2
27+ opacityOverride: usageScenario === "desktop" ? 1 : 1 - stage.rightEdgeDragProgress * 2
28
28
29 // Else on desktop, fade out when the spread is shown
29 // Else on desktop, fade out when the spread is shown
30 Connections {
30 Connections {
qml/Stages/graphics/dropshadow2gu@30.png → qml/graphics/dropshadow2gu@30.pngrenamed

Binary file not shown.

qml/Stages/graphics/dropshadow2gu@30.sci → qml/graphics/dropshadow2gu@30.scirenamed

The content is the same.

tests/graphics/applicationIcons/dash.png → tests/graphics/applicationIcons/dash@18.pngrenamed

Binary file not shown.

tests/mocks/Cursor/Cursor.qml+2
@@ -29,4 +29,6 @@ Item {
29 signal pushedBottomRightCorner(real amount, int buttons)
29 signal pushedBottomRightCorner(real amount, int buttons)
30 signal pushStopped()
30 signal pushStopped()
31 signal mouseMoved()
31 signal mouseMoved()
32+
33+ onMouseMoved: opacity = 1;
32}
34}
tests/mocks/Unity/Application/ApplicationInfo.cpp+2−2
@@ -79,7 +79,7 @@ void ApplicationInfo::createSurface()
79{
79{
80 if (state() == ApplicationInfo::Stopped) { return; }
80 if (state() == ApplicationInfo::Stopped) { return; }
81
81
82− QString surfaceName = name();
82+ QString surfaceName = name() + "s window title";
83 if (m_surfaceList->count() > 0) {
83 if (m_surfaceList->count() > 0) {
84 surfaceName.append(QString(" %1").arg(m_surfaceList->count()+1));
84 surfaceName.append(QString(" %1").arg(m_surfaceList->count()+1));
85 }
85 }
@@ -138,7 +138,7 @@ void ApplicationInfo::createSurface()
138
138
139void ApplicationInfo::setIconId(const QString &iconId)
139void ApplicationInfo::setIconId(const QString &iconId)
140{
140{
141− setIcon(QString("../../graphics/applicationIcons/%2@18.png")
141+ setIcon(QString(sourceDirectory() + "/tests/graphics/applicationIcons/%2@18.png")
142 .arg(iconId));
142 .arg(iconId));
143}
143}
144
144
tests/mocks/Unity/Application/ApplicationManager.cpp+2
@@ -295,6 +295,7 @@ void ApplicationManager::buildListOfAvailableApplications()
295 application->setAppId("unity8-dash");
295 application->setAppId("unity8-dash");
296 application->setName("Unity 8 Mock Dash");
296 application->setName("Unity 8 Mock Dash");
297 application->setScreenshotId("unity8-dash");
297 application->setScreenshotId("unity8-dash");
298+ application->setIconId("dash");
298 m_availableApplications.append(application);
299 m_availableApplications.append(application);
299
300
300 application = new ApplicationInfo(this);
301 application = new ApplicationInfo(this);
@@ -403,6 +404,7 @@ void ApplicationManager::buildListOfAvailableApplications()
403 application->setAppId("notes-app");
404 application->setAppId("notes-app");
404 application->setName("Notepad");
405 application->setName("Notepad");
405 application->setIconId("notepad");
406 application->setIconId("notepad");
407+// application->setStage(ApplicationInfoInterface::SideStage);
406 m_availableApplications.append(application);
408 m_availableApplications.append(application);
407
409
408 application = new ApplicationInfo(this);
410 application = new ApplicationInfo(this);
tests/mocks/Unity/Application/MirSurface.cpp+1
@@ -256,6 +256,7 @@ void MirSurface::updateVisibility()
256
256
257 m_visible = newVisible;
257 m_visible = newVisible;
258 Q_EMIT visibleChanged(m_visible);
258 Q_EMIT visibleChanged(m_visible);
259+ updateInputBoundsAfterResize();
259 }
260 }
260}
261}
261
262
tests/mocks/Unity/Application/MirSurfaceItem.cpp+13
@@ -60,9 +60,13 @@ MirSurfaceItem::MirSurfaceItem(QQuickItem *parent)
60
60
61 connect(this, &QQuickItem::activeFocusChanged, this, &MirSurfaceItem::updateMirSurfaceActiveFocus);
61 connect(this, &QQuickItem::activeFocusChanged, this, &MirSurfaceItem::updateMirSurfaceActiveFocus);
62 connect(this, &QQuickItem::visibleChanged, this, &MirSurfaceItem::updateMirSurfaceVisibility);
62 connect(this, &QQuickItem::visibleChanged, this, &MirSurfaceItem::updateMirSurfaceVisibility);
63+
63 connect(this, &MirSurfaceItem::consumesInputChanged, this, [this]() {
64 connect(this, &MirSurfaceItem::consumesInputChanged, this, [this]() {
64 updateMirSurfaceActiveFocus(hasActiveFocus());
65 updateMirSurfaceActiveFocus(hasActiveFocus());
65 });
66 });
67+
68+ // We're just clipping contents in the mock. The real QtMir would copy only relevant buffer instead
69+ setClip(true);
66}
70}
67
71
68MirSurfaceItem::~MirSurfaceItem()
72MirSurfaceItem::~MirSurfaceItem()
@@ -181,6 +185,9 @@ void MirSurfaceItem::createQmlContentItem()
181 m_qmlItem = qobject_cast<QQuickItem*>(m_qmlContentComponent->create());
185 m_qmlItem = qobject_cast<QQuickItem*>(m_qmlContentComponent->create());
182 m_qmlItem->setParentItem(this);
186 m_qmlItem->setParentItem(this);
183
187
188+ m_qmlItem->setWidth(m_surfaceWidth);
189+ m_qmlItem->setHeight(m_surfaceHeight);
190+
184 setImplicitWidth(m_qmlItem->implicitWidth());
191 setImplicitWidth(m_qmlItem->implicitWidth());
185 setImplicitHeight(m_qmlItem->implicitHeight());
192 setImplicitHeight(m_qmlItem->implicitHeight());
186
193
@@ -350,6 +357,7 @@ int MirSurfaceItem::surfaceWidth() const
350
357
351void MirSurfaceItem::setSurfaceWidth(int value)
358void MirSurfaceItem::setSurfaceWidth(int value)
352{
359{
360+// qDebug() << "setSurfaceWidth called" << value;
353 if (value != -1 && m_surfaceWidth != value) {
361 if (value != -1 && m_surfaceWidth != value) {
354 m_surfaceWidth = value;
362 m_surfaceWidth = value;
355 Q_EMIT surfaceWidthChanged(m_surfaceWidth);
363 Q_EMIT surfaceWidthChanged(m_surfaceWidth);
@@ -375,6 +383,11 @@ void MirSurfaceItem::updateSurfaceSize()
375{
383{
376 if (m_qmlSurface && m_surfaceWidth > 0 && m_surfaceHeight > 0) {
384 if (m_qmlSurface && m_surfaceWidth > 0 && m_surfaceHeight > 0) {
377 m_qmlSurface->resize(m_surfaceWidth, m_surfaceHeight);
385 m_qmlSurface->resize(m_surfaceWidth, m_surfaceHeight);
386+ if (m_qmlItem) {
387+ m_qmlItem->setWidth(m_surfaceWidth);
388+ m_qmlItem->setHeight(m_surfaceHeight);
389+ }
390+ setImplicitSize(m_surfaceWidth, m_surfaceHeight);
378 }
391 }
379}
392}
380
393
tests/mocks/Unity/Application/MirSurfaceListModel.cpp−1
@@ -84,7 +84,6 @@ void MirSurfaceListModel::prependSurface(MirSurface *surface)
84
84
85void MirSurfaceListModel::connectSurface(MirSurface *surface)
85void MirSurfaceListModel::connectSurface(MirSurface *surface)
86{
86{
87− connect(surface, &MirSurface::raiseRequested, this, [this, surface](){ this->raise(surface); });
88 connect(surface, &QObject::destroyed, this, [this, surface](){ this->removeSurface(surface); });
87 connect(surface, &QObject::destroyed, this, [this, surface](){ this->removeSurface(surface); });
89}
88}
90
89
tests/mocks/Unity/Application/VirtualKeyboard.cpp+9−7
@@ -39,13 +39,15 @@ void VirtualKeyboard::updateInputBoundsAfterResize()
39{
39{
40 int width = this->width();
40 int width = this->width();
41
41
42− int height;
42+ int height = 0;
43+ if (visible()) {
43− if (this->width() > this->height()) {
44+ if (this->width() > this->height()) {
44− // landscape
45+ // landscape
45− height = this->height() * 0.4;
46+ height = this->height() * 0.4;
46− } else {
47+ } else {
47− // portrait
48+ // portrait
48− height = this->width() * 0.6;
49+ height = this->width() * 0.6;
50+ }
49 }
51 }
50
52
51 int x = 0;
53 int x = 0;
tests/mocks/Unity/Application/resources/MirSurfaceItem.qml+2−5
@@ -20,11 +20,8 @@ Rectangle {
20 id: root
20 id: root
21 color: "pink"
21 color: "pink"
22
22
23− implicitWidth: units.gu(40)
23+ implicitWidth: width
24− implicitHeight: units.gu(70)
24+ implicitHeight: height
25−
26− width: parent ? parent.width : implicitWidth
27− height: parent ? parent.height : implicitHeight
28
25
29 property alias screenshotSource: screenshotImage.source
26 property alias screenshotSource: screenshotImage.source
30 property int orientationAngle
27 property int orientationAngle
tests/mocks/Unity/Indicators/IndicatorsModel.qml+1−1
@@ -124,7 +124,7 @@ Indicators.FakeIndicatorsModel {
124
124
125 Indicators.UnityMenuModelCache.setCachedModelData("/com/canonical/indicators/fake0",
125 Indicators.UnityMenuModelCache.setCachedModelData("/com/canonical/indicators/fake0",
126 getUnityMenuModelData("indicator-keyboard",
126 getUnityMenuModelData("indicator-keyboard",
127− "Czech (F)",
127+ "English (F)",
128 "",
128 "",
129 [ "image://theme/input-keyboard-symbolic" ]));
129 [ "image://theme/input-keyboard-symbolic" ]));
130 Indicators.UnityMenuModelCache.setCachedModelData("/com/canonical/indicators/fake1",
130 Indicators.UnityMenuModelCache.setCachedModelData("/com/canonical/indicators/fake1",
tests/mocks/Unity/Indicators/fakeindicatorsmodeldata.js+220−32
@@ -30,7 +30,7 @@ var fakeMenuData = {
30 "type": "com.canonical.indicator.messages.messageitem",
30 "type": "com.canonical.indicator.messages.messageitem",
31 "ext": {
31 "ext": {
32 "icon": "file:///usr/share/ubuntu/settings/system/icons/settings-system-update.svg",
32 "icon": "file:///usr/share/ubuntu/settings/system/icons/settings-system-update.svg",
33− "xCanonicalAppIcon": "file:///usr/share/ubuntu/settings/system/system-settings.png",
33+ "xCanonicalAppIcon": "image://theme/system-settings",
34 "xCanonicalMessageActions": null,
34 "xCanonicalMessageActions": null,
35 "xCanonicalText": "Tap to open the system updater.",
35 "xCanonicalText": "Tap to open the system updater.",
36 "xCanonicalTime": ((new Date).getTime() - 350 * 1000) * 1000,
36 "xCanonicalTime": ((new Date).getTime() - 350 * 1000) * 1000,
@@ -47,12 +47,12 @@ var fakeMenuData = {
47 "action": "indicator.telephony-service-sms.msg.MSG_ID",
47 "action": "indicator.telephony-service-sms.msg.MSG_ID",
48 "actionState": {},
48 "actionState": {},
49 "ext": {},
49 "ext": {},
50− "icon": "file:///usr/share/telephony-service/assets/avatar-default@18.png",
50+ "icon": Qt.resolvedUrl("../../../../../tests/graphics/avatars/funky@12.png"),
51 "type": "com.canonical.indicator.messages.messageitem",
51 "type": "com.canonical.indicator.messages.messageitem",
52 "ext": {
52 "ext": {
53− "icon": "file:///usr/share/telephony-service/assets/avatar-default@18.png",
53+ "icon": Qt.resolvedUrl("../../../../../tests/graphics/avatars/funky@12.png"),
54− "xCanonicalAppIcon": "image://theme/telephony-service-message",
54+ "xCanonicalAppIcon": Qt.resolvedUrl("../../../../../tests/graphics/applicationIcons/messages-app@18.png"),
55− "xCanonicalMessageActions": "",
55+ "xCanonicalMessageActions": [ { "parameter-type": "s" } ],
56 "xCanonicalText": "This is a message sent to an awesome Ubuntu phone.",
56 "xCanonicalText": "This is a message sent to an awesome Ubuntu phone.",
57 "xCanonicalTime": ((new Date).getTime() - 35 * 1000) * 1000
57 "xCanonicalTime": ((new Date).getTime() - 35 * 1000) * 1000
58 },
58 },
@@ -64,6 +64,25 @@ var fakeMenuData = {
64 "sensitive": true
64 "sensitive": true
65 }
65 }
66 },
66 },
67+ {
68+ "rowData": {
69+ "label": "+39441234567 - [SIM 2]",
70+ "sensitive": true,
71+ "isSeparator": false,
72+ "icon": "image://theme/missed-call",
73+ "type": "com.canonical.indicator.messages.messageitem",
74+ "ext": {
75+ "xCanonicalMessageActions": [ { "parameter-type": "_s" } ],
76+ "xCanonicalText": "1 Missed call.",
77+ "xCanonicalTime": ((new Date).getTime() - 350 * 1000) * 1000,
78+ },
79+ "action": "indicator.telephony-service-missed-call.call.CALL_ID",
80+ "actionState": {},
81+ "isCheck": false,
82+ "isRadio": false,
83+ "isToggled": false,
84+ }
85+ },
67 {
86 {
68 "rowData": {
87 "rowData": {
69 "action": "indicator.remove-all",
88 "action": "indicator.remove-all",
@@ -337,34 +356,72 @@ var fakeMenuData = {
337 "type": "com.canonical.indicator.root"
356 "type": "com.canonical.indicator.root"
338 },
357 },
339 "submenu": [
358 "submenu": [
340− {
359+ {
360+ "rowData": {
361+ "label": "Charge Level",
362+ "sensitive": false,
363+ "isSeparator": false,
364+ "icon": "",
365+ "type": "com.canonical.indicator.progress",
366+ "ext": {},
367+ "action": "indicator.battery-level",
368+ "actionState": "100",
369+ "isCheck": false,
370+ "isRadio": false,
371+ "isToggled": false
372+ }
373+ },
374+ {
375+
376+ "rowData": {
377+ "label": "",
378+ "sensitive": true,
379+ "isSeparator": true,
380+ "icon": "",
381+ "type": "",
382+ "ext": {},
383+ "action": "",
384+ "actionState": "",
385+ "isCheck": false,
386+ "isRadio": false,
387+ "isToggled": false
388+ }
389+ },
390+ {
391+
392+ "rowData": {
393+ "label": "",
394+ "sensitive": true,
395+ "isSeparator": false,
396+ "icon": "",
397+ "type": "com.canonical.unity.slider",
398+ "ext": {
399+ "maxIcon": "image://theme/display-brightness-max",
400+ "maxValue": "1",
401+ "minIcon": "image://theme/display-brightness-min",
402+ "minValue": "0",
403+ },
404+ "action": "indicator.brightness",
405+ "actionState": "0.212244897959184",
406+ "isCheck": false,
407+ "isRadio": false,
408+ "isToggled": false
409+ }
410+ },
411+ {
412+
341 "rowData": {
413 "rowData": {
342− "action": "indicator.activate-statistics",
414+ "label": "Auto-brightness",
343− "actionState": {},
344− "ext": {},
345− "icon": "image://theme/battery-full-charged-symbolic",
346− "isCheck": false,
347− "isRadio": false,
348− "isSeparator": false,
349− "isToggled": false,
350− "label": "Battery (full charged)",
351 "sensitive": true,
415 "sensitive": true,
416+ "isSeparator": false,
417+ "icon": "",
352− "type": "com.canonical.indicator.basic"
418+ "type": "com.canonical.indicator.switch",
353− }
354− },
355− {
356− "rowData": {
357− "action": "indicator.activate-statistics",
358− "actionState": {},
359 "ext": {},
419 "ext": {},
360− "icon": "image://theme/battery-100",
420+ "action": "indicator.auto-brightness",
421+ "actionState": false,
361− "isCheck": false,
422+ "isCheck": true,
362 "isRadio": false,
423 "isRadio": false,
363− "isSeparator": false,
364− "isToggled": false,
424+ "isToggled": false
365− "label": "Battery",
366− "sensitive": true,
367− "type": "com.canonical.indicator.basic"
368 }
425 }
369 },
426 },
370 {
427 {
@@ -555,7 +612,6 @@ var fakeMenuData = {
555 }
612 }
556 ],
613 ],
557
614
558−
559 "fake-indicator-datetime": [
615 "fake-indicator-datetime": [
560 {
616 {
561 "rowData": {
617 "rowData": {
@@ -591,6 +647,25 @@ var fakeMenuData = {
591 "type": ""
647 "type": ""
592 }
648 }
593 },
649 },
650+ {
651+ "rowData": {
652+ "action": "indicator.calendar",
653+ "actionState": {
654+ "appointment-days": "",
655+ "calendar-day": (new Date).getTime() / 1000,
656+ "show-week-numbers": false,
657+ },
658+ "ext": {},
659+ "icon": "image://theme/calendar",
660+ "isCheck": false,
661+ "isRadio": true,
662+ "isSeparator": false,
663+ "isToggled": false,
664+ "label": "[calendar]",
665+ "sensitive": true,
666+ "type": "com.canonical.indicator.calendar"
667+ }
668+ },
594 {
669 {
595 "rowData": {
670 "rowData": {
596 "action": "",
671 "action": "",
@@ -727,7 +802,6 @@ var fakeMenuData = {
727 }
802 }
728 ],
803 ],
729
804
730−
731 "fake-indicator-files": [
805 "fake-indicator-files": [
732 {
806 {
733 "rowData": {
807 "rowData": {
@@ -1102,5 +1176,119 @@ var fakeMenuData = {
1102 }
1176 }
1103 ]
1177 ]
1104 }
1178 }
1105− ]
1179+ ],
1180+
1181+ "indicator-keyboard": [
1182+ {
1183+ "rowData": {
1184+ "action": "indicator.indicator",
1185+ "actionState": {
1186+ "icons": [],
1187+ "label": "",
1188+ "title": "English (USA, QWERTY)",
1189+ "visible": true
1190+ },
1191+ "icon": "",
1192+ "isCheck": false,
1193+ "isRadio": false,
1194+ "isSeparator": false,
1195+ "isToggled": false,
1196+ "label": "",
1197+ "sensitive": true,
1198+ "type": "com.canonical.indicator.root"
1199+ },
1200+ "submenu": [
1201+ {
1202+ "rowData": {
1203+ "label": "České (QWERTY)",
1204+ "sensitive": true,
1205+ "isSeparator": false,
1206+ "icon": "image://theme/indicator-keyboard-Cs",
1207+ "type": "",
1208+ "ext": {},
1209+ "action": "indicator.current",
1210+ "actionState": 0,
1211+ "isCheck": false,
1212+ "isRadio": true,
1213+ "isToggled": false
1214+ }
1215+ },
1216+ {
1217+ "rowData": {
1218+ "label": "Italiana (QWERTY)",
1219+ "sensitive": true,
1220+ "isSeparator": false,
1221+ "icon": "image://theme/indicator-keyboard-It",
1222+ "type": "",
1223+ "ext": {},
1224+ "action": "indicator.current",
1225+ "actionState": 0,
1226+ "isCheck": false,
1227+ "isRadio": true,
1228+ "isToggled": false
1229+ }
1230+ },
1231+ {
1232+ "rowData": {
1233+ "label": "English (USA)",
1234+ "sensitive": true,
1235+ "isSeparator": false,
1236+ "icon": "image://theme/indicator-keyboard-En",
1237+ "type": "",
1238+ "ext": {},
1239+ "action": "indicator.current",
1240+ "actionState": 0,
1241+ "isCheck": false,
1242+ "isRadio": true,
1243+ "isToggled": true
1244+ }
1245+ },
1246+ {
1247+ "rowData": {
1248+ "label": "",
1249+ "sensitive": true,
1250+ "isSeparator": true,
1251+ "icon": "",
1252+ "type": "",
1253+ "ext": {},
1254+ "action": "",
1255+ "actionState": "",
1256+ "isCheck": false,
1257+ "isRadio": false,
1258+ "isToggled": false
1259+ }
1260+ },
1261+ {
1262+ "rowData": {
1263+ "label": "Character Map",
1264+ "sensitive": true,
1265+ "isSeparator": false,
1266+ "icon": "",
1267+ "type": "",
1268+ "ext": {},
1269+ "action": "indicator.map",
1270+ "actionState": "",
1271+ "isCheck": false,
1272+ "isRadio": false,
1273+ "isToggled": false
1274+ }
1275+ },
1276+ {
1277+ "rowData": {
1278+ "label": "Keyboard layout",
1279+ "sensitive": true,
1280+ "isSeparator": false,
1281+ "icon": "",
1282+ "type": "",
1283+ "ext": {},
1284+ "action": "indicator.key-map.settings",
1285+ "actionState": "",
1286+ "isCheck": false,
1287+ "isRadio": false,
1288+ "isToggled": false
1289+ }
1290+ }
1291+ ]
1292+ }
1293+ ],
1106}
1294}
tests/plugins/Greeter/Unity/Launcher/CMakeLists.txt−1
@@ -10,7 +10,6 @@ include_directories(
10
10
11add_definitions(-DSM_BUSNAME=sessionBus)
11add_definitions(-DSM_BUSNAME=sessionBus)
12add_definitions(-DSRCDIR="${CMAKE_CURRENT_SOURCE_DIR}")
12add_definitions(-DSRCDIR="${CMAKE_CURRENT_SOURCE_DIR}")
13−add_definitions(-DLAUNCHER_TESTING)
14
13
15### LauncherModelASTest
14### LauncherModelASTest
16add_executable(launchermodelastestExec
15add_executable(launchermodelastestExec
tests/plugins/Unity/Launcher/CMakeLists.txt+12−20
@@ -6,14 +6,18 @@ include_directories(
6 ${CMAKE_CURRENT_BINARY_DIR}
6 ${CMAKE_CURRENT_BINARY_DIR}
7 ${CMAKE_SOURCE_DIR}/plugins/AccountsService
7 ${CMAKE_SOURCE_DIR}/plugins/AccountsService
8 ${CMAKE_SOURCE_DIR}/plugins/Unity/Launcher
8 ${CMAKE_SOURCE_DIR}/plugins/Unity/Launcher
9+ ${libunity8-private_SOURCE_DIR}
10+ )
11+
12+include_directories(
13+ SYSTEM
9 ${GSETTINGS_QT_INCLUDE_DIRS}
14 ${GSETTINGS_QT_INCLUDE_DIRS}
10 ${GLIB_INCLUDE_DIRS}
15 ${GLIB_INCLUDE_DIRS}
11− ${libunity8-private_SOURCE_DIR}
16+ ${UAL_INCLUDE_DIRS}
12 )
17 )
13
18
14add_definitions(-DSM_BUSNAME=sessionBus)
19add_definitions(-DSM_BUSNAME=sessionBus)
15add_definitions(-DSRCDIR="${CMAKE_CURRENT_SOURCE_DIR}")
20add_definitions(-DSRCDIR="${CMAKE_CURRENT_SOURCE_DIR}")
16−add_definitions(-DLAUNCHER_TESTING)
17
21
18### LauncherModelTest
22### LauncherModelTest
19add_executable(launchermodeltestExec
23add_executable(launchermodeltestExec
@@ -25,7 +29,6 @@ add_executable(launchermodeltestExec
25 ${CMAKE_SOURCE_DIR}/plugins/Unity/Launcher/launcheritem.cpp
29 ${CMAKE_SOURCE_DIR}/plugins/Unity/Launcher/launcheritem.cpp
26 ${CMAKE_SOURCE_DIR}/plugins/Unity/Launcher/quicklistmodel.cpp
30 ${CMAKE_SOURCE_DIR}/plugins/Unity/Launcher/quicklistmodel.cpp
27 ${CMAKE_SOURCE_DIR}/plugins/Unity/Launcher/dbusinterface.cpp
31 ${CMAKE_SOURCE_DIR}/plugins/Unity/Launcher/dbusinterface.cpp
28− ${CMAKE_SOURCE_DIR}/plugins/Unity/Launcher/desktopfilehandler.cpp
29 ${CMAKE_SOURCE_DIR}/plugins/Unity/Launcher/quicklistentry.cpp
32 ${CMAKE_SOURCE_DIR}/plugins/Unity/Launcher/quicklistentry.cpp
30 ${LAUNCHER_API_INCLUDEDIR}/unity/shell/launcher/LauncherItemInterface.h
33 ${LAUNCHER_API_INCLUDEDIR}/unity/shell/launcher/LauncherItemInterface.h
31 ${LAUNCHER_API_INCLUDEDIR}/unity/shell/launcher/LauncherModelInterface.h
34 ${LAUNCHER_API_INCLUDEDIR}/unity/shell/launcher/LauncherModelInterface.h
@@ -37,11 +40,13 @@ target_link_libraries(launchermodeltestExec
37 unity8-private
40 unity8-private
38 ${GSETTINGS_QT_LDFLAGS}
41 ${GSETTINGS_QT_LDFLAGS}
39 ${GLIB_LIBRARIES}
42 ${GLIB_LIBRARIES}
43+ ${UAL_LIBRARIES}
40 )
44 )
41add_dependencies(launchermodeltestExec mock-server)
45add_dependencies(launchermodeltestExec mock-server)
42qt5_use_modules(launchermodeltestExec Test Core DBus Xml Gui)
46qt5_use_modules(launchermodeltestExec Test Core DBus Xml Gui)
43
47
44add_unity8_unittest(LauncherModel dbus-test-runner
48add_unity8_unittest(LauncherModel dbus-test-runner
49+ ENVIRONMENT "XDG_DATA_HOME=${CMAKE_CURRENT_BINARY_DIR}"
45 ARG_PREFIX "--parameter"
50 ARG_PREFIX "--parameter"
46 ARGS
51 ARGS
47 --task $<TARGET_FILE:mock-server>
52 --task $<TARGET_FILE:mock-server>
@@ -50,20 +55,7 @@ add_unity8_unittest(LauncherModel dbus-test-runner
50 --wait-for org.freedesktop.Accounts
55 --wait-for org.freedesktop.Accounts
51)
56)
52
57
53−# copy .desktop files into build directory for shadow builds
58+# copy sample application files into build directory for shadow builds
54−file(GLOB DESKTOP_FILES *.desktop)
59+file(COPY applications
55−
56−foreach(DESKTOP_FILE ${DESKTOP_FILES})
57− file(COPY "${DESKTOP_FILE}"
58− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
60+ DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
59− )
61+ )
60−endforeach()
61−
62−# copy .svg files into build directory for shadow builds
63−file(GLOB DESKTOP_FILES *.svg)
64−
65−foreach(DESKTOP_FILE ${DESKTOP_FILES})
66− file(COPY "${DESKTOP_FILE}"
67− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
68− )
69−endforeach()
tests/plugins/Unity/Launcher/abs-icon.desktop → tests/plugins/Unity/Launcher/applications/abs-icon.desktoprenamed+1
@@ -1,3 +1,4 @@
1[Desktop Entry]
1[Desktop Entry]
2+Type=Application
2Name=Absolute Icon
3Name=Absolute Icon
3Icon=/path/to/icon.png
4Icon=/path/to/icon.png
tests/plugins/Unity/Launcher/click-icon.desktop → tests/plugins/Unity/Launcher/applications/click-icon.desktoprenamed+1
@@ -1,4 +1,5 @@
1[Desktop Entry]
1[Desktop Entry]
2+Type=Application
2Name=Click Package Icon
3Name=Click Package Icon
3Icon=click-icon.svg
4Icon=click-icon.svg
4Path=/path/to/some/click/app
5Path=/path/to/some/click/app
tests/plugins/Unity/Launcher/click-icon.svg → tests/plugins/Unity/Launcher/applications/click-icon.svgrenamed

The content is the same.

tests/plugins/Unity/Launcher/no-name.desktop → tests/plugins/Unity/Launcher/applications/no-name.desktoprenamed+1
@@ -1,2 +1,3 @@
1[Desktop Entry]
1[Desktop Entry]
2+Type=Application
2Icon=no-name
3Icon=no-name
tests/plugins/Unity/Launcher/rel-icon.desktop → tests/plugins/Unity/Launcher/applications/rel-icon.desktoprenamed+1
@@ -1,3 +1,4 @@
1[Desktop Entry]
1[Desktop Entry]
2+Type=Application
2Name=Relative Icon
3Name=Relative Icon
3Icon=rel-icon.svg
4Icon=rel-icon.svg
tests/plugins/Unity/Launcher/rel-icon.svg → tests/plugins/Unity/Launcher/applications/rel-icon.svgrenamed

The content is the same.

tests/plugins/Unity/Launcher/launchermodeltest.cpp+19−22
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright 2013-2015 Canonical Ltd.
2+ * Copyright 2013-2016 Canonical Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License as published by
5 * it under the terms of the GNU Lesser General Public License as published by
@@ -12,9 +12,6 @@
12 *
12 *
13 * You should have received a copy of the GNU Lesser General Public License
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Michael Zanetti <michael.zanetti@canonical.com>
18 */
15 */
19
16
20// unity-api
17// unity-api
@@ -177,7 +174,7 @@ private Q_SLOTS:
177 appManager->addApplication(new MockApp("abs-icon"));
174 appManager->addApplication(new MockApp("abs-icon"));
178 QCOMPARE(launcherModel->rowCount(QModelIndex()), 1);
175 QCOMPARE(launcherModel->rowCount(QModelIndex()), 1);
179
176
180− appManager->addApplication(new MockApp("no-icon"));
177+ appManager->addApplication(new MockApp("rel-icon"));
181 QCOMPARE(launcherModel->rowCount(QModelIndex()), 2);
178 QCOMPARE(launcherModel->rowCount(QModelIndex()), 2);
182
179
183 launcherModel->m_settings->setStoredApplications(QStringList());
180 launcherModel->m_settings->setStoredApplications(QStringList());
@@ -199,6 +196,10 @@ private Q_SLOTS:
199 QString::fromUtf8(g_get_user_name()));
196 QString::fromUtf8(g_get_user_name()));
200 QVERIFY(removeReply.isValid());
197 QVERIFY(removeReply.isValid());
201 QCOMPARE(removeReply.value(), true);
198 QCOMPARE(removeReply.value(), true);
199+
200+ // Some tests move the directory, so lets move it back if so.
201+ // But this will usually fail.
202+ QFile::rename("applications.old", "applications");
202 }
203 }
203
204
204 void testMove() {
205 void testMove() {
@@ -331,7 +332,7 @@ private Q_SLOTS:
331
332
332 void testApplicationRunning() {
333 void testApplicationRunning() {
333 launcherModel->pin("abs-icon");
334 launcherModel->pin("abs-icon");
334− launcherModel->pin("no-icon");
335+ launcherModel->pin("rel-icon");
335
336
336 QCOMPARE(launcherModel->get(0)->running(), true);
337 QCOMPARE(launcherModel->get(0)->running(), true);
337 QCOMPARE(launcherModel->get(1)->running(), true);
338 QCOMPARE(launcherModel->get(1)->running(), true);
@@ -340,7 +341,7 @@ private Q_SLOTS:
340 QCOMPARE(launcherModel->get(0)->running(), false);
341 QCOMPARE(launcherModel->get(0)->running(), false);
341 QCOMPARE(launcherModel->get(1)->running(), true);
342 QCOMPARE(launcherModel->get(1)->running(), true);
342
343
343− appManager->stopApplication("no-icon");
344+ appManager->stopApplication("rel-icon");
344 QCOMPARE(launcherModel->get(0)->running(), false);
345 QCOMPARE(launcherModel->get(0)->running(), false);
345 QCOMPARE(launcherModel->get(1)->running(), false);
346 QCOMPARE(launcherModel->get(1)->running(), false);
346 }
347 }
@@ -355,7 +356,7 @@ private Q_SLOTS:
355 QCOMPARE(launcherModel->get(0)->focused(), true);
356 QCOMPARE(launcherModel->get(0)->focused(), true);
356 QCOMPARE(launcherModel->get(1)->focused(), false);
357 QCOMPARE(launcherModel->get(1)->focused(), false);
357
358
358− appManager->focusApplication("no-icon");
359+ appManager->focusApplication("rel-icon");
359 QCOMPARE(launcherModel->rowCount(QModelIndex()), 2);
360 QCOMPARE(launcherModel->rowCount(QModelIndex()), 2);
360 QCOMPARE(launcherModel->get(0)->focused(), false);
361 QCOMPARE(launcherModel->get(0)->focused(), false);
361 QCOMPARE(launcherModel->get(1)->focused(), true);
362 QCOMPARE(launcherModel->get(1)->focused(), true);
@@ -377,8 +378,8 @@ private Q_SLOTS:
377 QCOMPARE(launcherModel->rowCount(), 2);
378 QCOMPARE(launcherModel->rowCount(), 2);
378
379
379 // stop the second one keeping it pinned so that it doesn't go away
380 // stop the second one keeping it pinned so that it doesn't go away
380− launcherModel->pin("no-icon");
381+ launcherModel->pin("rel-icon");
381− appManager->stopApplication("no-icon");
382+ appManager->stopApplication("rel-icon");
382
383
383 // find the first Quit item, should be there
384 // find the first Quit item, should be there
384 QuickListModel *model = qobject_cast<QuickListModel*>(launcherModel->get(0)->quickList());
385 QuickListModel *model = qobject_cast<QuickListModel*>(launcherModel->get(0)->quickList());
@@ -407,7 +408,7 @@ private Q_SLOTS:
407 // first app should be gone...
408 // first app should be gone...
408 QCOMPARE(launcherModel->rowCount(QModelIndex()), 1);
409 QCOMPARE(launcherModel->rowCount(QModelIndex()), 1);
409 // ... the second app (now at index 0) should still be there, pinned and stopped
410 // ... the second app (now at index 0) should still be there, pinned and stopped
410− QCOMPARE(launcherModel->get(0)->appId(), QStringLiteral("no-icon"));
411+ QCOMPARE(launcherModel->get(0)->appId(), QStringLiteral("rel-icon"));
411 QCOMPARE(launcherModel->get(0)->pinned(), true);
412 QCOMPARE(launcherModel->get(0)->pinned(), true);
412 QCOMPARE(launcherModel->get(0)->running(), false);
413 QCOMPARE(launcherModel->get(0)->running(), false);
413 }
414 }
@@ -602,17 +603,16 @@ private Q_SLOTS:
602
603
603 // pin both apps
604 // pin both apps
604 launcherModel->pin("abs-icon");
605 launcherModel->pin("abs-icon");
605− launcherModel->pin("no-icon");
606+ launcherModel->pin("rel-icon");
606 // close both apps
607 // close both apps
607 appManager->removeApplication(0);
608 appManager->removeApplication(0);
608 appManager->removeApplication(0);
609 appManager->removeApplication(0);
609
610
610 // "delete" the .desktop files
611 // "delete" the .desktop files
611− QString oldCurrent = QDir::currentPath();
612 if (deleted) {
612 if (deleted) {
613 // In testing mode, the launcher searches the current dir for the sample .desktop file
613 // In testing mode, the launcher searches the current dir for the sample .desktop file
614− // We can make that fail by changing the current dir
614+ // We can make that fail by moving the applications dir
615− QDir::setCurrent("..");
615+ QFile::rename("applications", "applications.old");
616 }
616 }
617
617
618 // Call refresh
618 // Call refresh
@@ -623,9 +623,6 @@ private Q_SLOTS:
623 QCOMPARE(reply.isValid(), true);
623 QCOMPARE(reply.isValid(), true);
624
624
625 QCOMPARE(launcherModel->rowCount(), deleted ? 0 : 2);
625 QCOMPARE(launcherModel->rowCount(), deleted ? 0 : 2);
626−
627− // Restoring current dir
628− QDir::setCurrent(oldCurrent);
629 }
626 }
630
627
631 void testSettings() {
628 void testSettings() {
@@ -637,7 +634,7 @@ private Q_SLOTS:
637
634
638 // pin both apps
635 // pin both apps
639 launcherModel->pin("abs-icon");
636 launcherModel->pin("abs-icon");
640− launcherModel->pin("no-icon");
637+ launcherModel->pin("rel-icon");
641 QCOMPARE(spy.count(), 0);
638 QCOMPARE(spy.count(), 0);
642
639
643 // Now settings should have 2 apps
640 // Now settings should have 2 apps
@@ -659,9 +656,9 @@ private Q_SLOTS:
659 QCOMPARE(launcherModel->rowCount(), 1);
656 QCOMPARE(launcherModel->rowCount(), 1);
660
657
661 // Add them back but in reverse order
658 // Add them back but in reverse order
662− settings->simulateDConfChanged(QStringList() << "no-icon" << "abs-icon");
659+ settings->simulateDConfChanged(QStringList() << "rel-icon" << "abs-icon");
663 QCOMPARE(launcherModel->rowCount(), 2);
660 QCOMPARE(launcherModel->rowCount(), 2);
664− QCOMPARE(launcherModel->get(0)->appId(), QString("no-icon"));
661+ QCOMPARE(launcherModel->get(0)->appId(), QString("rel-icon"));
665 QCOMPARE(launcherModel->get(1)->appId(), QString("abs-icon"));
662 QCOMPARE(launcherModel->get(1)->appId(), QString("abs-icon"));
666 QCOMPARE(spy.count(), 2);
663 QCOMPARE(spy.count(), 2);
667 }
664 }
@@ -671,7 +668,7 @@ private Q_SLOTS:
671 QCOMPARE(launcherModel->rowCount(), getASConfig().count());
668 QCOMPARE(launcherModel->rowCount(), getASConfig().count());
672
669
673 int oldCount = launcherModel->rowCount();
670 int oldCount = launcherModel->rowCount();
674− appManager->addApplication(new MockApp("rel-icon"));
671+ appManager->addApplication(new MockApp("click-icon"));
675 QCOMPARE(launcherModel->rowCount(), oldCount + 1);
672 QCOMPARE(launcherModel->rowCount(), oldCount + 1);
676 QCOMPARE(launcherModel->rowCount(), getASConfig().count());
673 QCOMPARE(launcherModel->rowCount(), getASConfig().count());
677 }
674 }
tests/plugins/Unity/Launcher/no-icon.desktopdeleted−2
@@ -1,2 +0,0 @@
1−[Desktop Entry]
2−Name=No Icon
tests/qmltests/CMakeLists.txt+8−8
@@ -86,14 +86,14 @@ add_unity8_qmltest(Panel Panel)
86add_unity8_qmltest(Panel/Indicators IndicatorsLight)
86add_unity8_qmltest(Panel/Indicators IndicatorsLight)
87add_unity8_qmltest(Panel/Indicators MenuItemFactory)
87add_unity8_qmltest(Panel/Indicators MenuItemFactory)
88add_unity8_qmltest(Panel/Indicators MessageMenuItemFactory)
88add_unity8_qmltest(Panel/Indicators MessageMenuItemFactory)
89−add_unity8_qmltest(Stages ApplicationWindow)
89+add_unity8_qmltest(Stage ApplicationWindow)
90−add_unity8_qmltest(Stages DesktopStage)
90+add_unity8_qmltest(Stage DesktopStage)
91−add_unity8_qmltest(Stages PhoneStage)
91+add_unity8_qmltest(Stage PhoneStage)
92−add_unity8_qmltest(Stages SpreadDelegate)
92+add_unity8_qmltest(Stage SurfaceContainer)
93−add_unity8_qmltest(Stages SurfaceContainer)
94−add_unity8_qmltest(Stages TabletStage)
93+add_unity8_qmltest(Stage TabletStage)
95−add_unity8_qmltest(Stages WindowResizeArea)
94+add_unity8_qmltest(Stage WindowResizeArea)
96−add_unity8_qmltest(Stages Splash)
95+add_unity8_qmltest(Stage Splash)
96+add_unity8_qmltest(Stage DecoratedWindow)
97add_unity8_qmltest(Tutorial Tutorial)
97add_unity8_qmltest(Tutorial Tutorial)
98add_unity8_qmltest(Wizard Wizard ENVIRONMENT "OXIDE_NO_SANDBOX=1")
98add_unity8_qmltest(Wizard Wizard ENVIRONMENT "OXIDE_NO_SANDBOX=1")
99add_unity8_qmltest(utils/Unity/Test UnityTest)
99add_unity8_qmltest(utils/Unity/Test UnityTest)
tests/qmltests/Dash/Previews/tst_PreviewZoomableImage.qml+5
@@ -74,6 +74,11 @@ Rectangle {
74 waitForRendering(zoomableImage);
74 waitForRendering(zoomableImage);
75 overlay = findChild(zoomableImage.rootItem, "overlay");
75 overlay = findChild(zoomableImage.rootItem, "overlay");
76 waitForRendering(overlay);
76 waitForRendering(overlay);
77+
78+ // Make sure all the lazyImage transitions have finished
79+ for (var i in lazyImage.transitions) {
80+ tryCompare(lazyImage.transitions[i], "running", false);
81+ }
77 }
82 }
78
83
79 function cleanup() {
84 function cleanup() {
tests/qmltests/Panel/Indicators/tst_MenuItemFactory.qml+1−6
@@ -396,7 +396,7 @@ Item {
396
396
397 function test_create_appointmentMenu_data() {
397 function test_create_appointmentMenu_data() {
398 return [
398 return [
399− {label: "testLabel1", enabled: true, icon: "file:///testIcon1", color: Qt.rgba(0, 0, 0, 0),
399+ {label: "testLabel1", enabled: true, icon: "file:///testIcon1", color: Qt.rgba(1, 2, 3, 0),
400 time: new Date(2014, 04, 14), timeFormat: "%a %d %b %l:%M %p"},
400 time: new Date(2014, 04, 14), timeFormat: "%a %d %b %l:%M %p"},
401 {label: "testLabel2", enabled: false, icon: "file:///testIcon2", color: Qt.rgba(1, 0, 0, 0),
401 {label: "testLabel2", enabled: false, icon: "file:///testIcon2", color: Qt.rgba(1, 0, 0, 0),
402 time: new Date(2015, 11, 31), timeFormat: "%A" },
402 time: new Date(2015, 11, 31), timeFormat: "%A" },
@@ -594,9 +594,7 @@ Item {
594 // ModemInfoItem gets all it's data through the actions.
594 // ModemInfoItem gets all it's data through the actions.
595 return [
595 return [
596 {
596 {
597− label: "",
598 enabled: true,
597 enabled: true,
599− checked: false,
600 statusLabelAction: "action::statusLabel",
598 statusLabelAction: "action::statusLabel",
601 statusIconAction: "action::statusIcon",
599 statusIconAction: "action::statusIcon",
602 connectivityIconAction: "action::connectivityIcon",
600 connectivityIconAction: "action::connectivityIcon",
@@ -609,9 +607,7 @@ Item {
609
607
610 function test_create_modemInfoItem(data) {
608 function test_create_modemInfoItem(data) {
611 menuData.type = "com.canonical.indicator.network.modeminfoitem";
609 menuData.type = "com.canonical.indicator.network.modeminfoitem";
612− menuData.label = data.label;
613 menuData.sensitive = data.enabled;
610 menuData.sensitive = data.enabled;
614− menuData.isToggled = data.checked;
615 menuData.ext = {
611 menuData.ext = {
616 'xCanonicalModemStatusLabelAction': data.statusLabelAction,
612 'xCanonicalModemStatusLabelAction': data.statusLabelAction,
617 'xCanonicalModemStatusIconAction': data.statusIconAction,
613 'xCanonicalModemStatusIconAction': data.statusIconAction,
@@ -625,7 +621,6 @@ Item {
625 loader.sourceComponent = factory.load(menuData);
621 loader.sourceComponent = factory.load(menuData);
626 tryCompareFunction(function() { return loader.item != undefined; }, true);
622 tryCompareFunction(function() { return loader.item != undefined; }, true);
627 compare(loader.item.objectName, "modemInfoItem", "Should have created a modem info item.");
623 compare(loader.item.objectName, "modemInfoItem", "Should have created a modem info item.");
628− compare(loader.item.text, data.label, "Label does not match data");
629
624
630 compare(loader.item.statusLabelAction.name, data.statusLabelAction, "StatusLabel action incorrect");
625 compare(loader.item.statusLabelAction.name, data.statusLabelAction, "StatusLabel action incorrect");
631 compare(loader.item.statusIconAction.name, data.statusIconAction, "StatusIcon action incorrect");
626 compare(loader.item.statusIconAction.name, data.statusIconAction, "StatusIcon action incorrect");
tests/qmltests/Panel/tst_IndicatorPage.qml+1−1
@@ -36,7 +36,7 @@ Item {
36 menuObjectPath: "/com/canonical/indicator/test"
36 menuObjectPath: "/com/canonical/indicator/test"
37
37
38 factory {
38 factory {
39− _map: {
39+ _userMap: {
40 "default": {
40 "default": {
41 "com.canonical.indicator.test" : testMenu
41 "com.canonical.indicator.test" : testMenu
42 }
42 }
tests/qmltests/Stages/ApplicationCheckBox.qml → tests/qmltests/Stage/ApplicationCheckBox.qmlrenamed

The content is the same.

tests/qmltests/Stages/SizeHintField.qml → tests/qmltests/Stage/SizeHintField.qmlrenamed

The content is the same.

tests/qmltests/Stages/SurfaceManagerControls.qml → tests/qmltests/Stage/SurfaceManagerControls.qmlrenamed

The content is the same.

tests/qmltests/Stages/SurfaceManagerField.qml → tests/qmltests/Stage/SurfaceManagerField.qmlrenamed

The content is the same.

tests/qmltests/Stages/tst_ApplicationWindow.qml → tests/qmltests/Stage/tst_ApplicationWindow.qmlrenamed+1−1
@@ -19,7 +19,7 @@ import QtQuick.Layouts 1.1
19import QtTest 1.0
19import QtTest 1.0
20import Unity.Test 0.1 as UT
20import Unity.Test 0.1 as UT
21import ".."
21import ".."
22−import "../../../qml/Stages"
22+import "../../../qml/Stage"
23import Ubuntu.Components 1.3
23import Ubuntu.Components 1.3
24import Ubuntu.Components.ListItems 1.3 as ListItem
24import Ubuntu.Components.ListItems 1.3 as ListItem
25import Unity.Application 0.1
25import Unity.Application 0.1
tests/qmltests/Stage/tst_DecoratedWindow.qmlnew file+232
@@ -0,0 +1,232 @@
1+/*
2+ * Copyright 2014-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+import QtTest 1.0
19+import Unity.Test 0.1 as UT
20+import ".."
21+import "../../../qml/Components"
22+import "../../../qml/Stage"
23+import Ubuntu.Components 1.3
24+import Ubuntu.Components.ListItems 1.3 as ListItem
25+import Unity.Application 0.1
26+
27+Rectangle {
28+ color: "red"
29+ id: root
30+ width: fakeShell.shortestDimension + controls.width
31+ height: fakeShell.longestDimension
32+
33+ property QtObject fakeApplication: null
34+
35+ Item {
36+ id: fakeShell
37+
38+ readonly property real shortestDimension: units.gu(100)
39+ readonly property real longestDimension: units.gu(70)
40+
41+ width: landscape ? longestDimension : shortestDimension
42+ height: landscape ? shortestDimension : longestDimension
43+
44+ x: landscape ? (height - width) / 2 : 0
45+ y: landscape ? (width - height) / 2 : 0
46+
47+ property bool landscape: orientationAngle == 90 || orientationAngle == 270
48+ property int orientationAngle: shellOrientationAngleSelector.value
49+
50+ rotation: orientationAngle
51+
52+ Loader {
53+ id: loader
54+ property int windowedX: units.gu(1)
55+ property int windowedY: units.gu(1)
56+ property int windowedWidth: units.gu(50)
57+ property int windowedHeight: units.gu(40)
58+ x: windowedX
59+ y: windowedY
60+ width: item ? item.implicitWidth : 0
61+ height: item ? item.implicitHeight : 0
62+
63+ active: false
64+ property bool itemDestroyed: false
65+
66+ sourceComponent: DecoratedWindow {
67+ anchors.fill: parent
68+ application: fakeApplication
69+ requestedWidth: loader.windowedWidth
70+ requestedHeight: loader.windowedHeight
71+ surface: fakeApplication && fakeApplication.surfaceList.count > 0 ? fakeApplication.surfaceList.get(0) : null
72+
73+ Component.onDestruction: {
74+ loader.itemDestroyed = true;
75+ }
76+ Component.onCompleted: {
77+ loader.itemDestroyed = false;
78+ }
79+ }
80+
81+ Rectangle { anchors.fill: parent; color: "green"; opacity: 1 }
82+ }
83+ WindowResizeArea {
84+ target: loader
85+ borderThickness: units.gu(2)
86+ }
87+ }
88+
89+
90+ Rectangle {
91+ id: controls
92+ color: "white"
93+ width: units.gu(30)
94+ anchors {
95+ top: parent.top
96+ bottom: parent.bottom
97+ right: parent.right
98+ }
99+
100+ Column {
101+ anchors { left: parent.left; right: parent.right; top: parent.top; margins: units.gu(1) }
102+ spacing: units.gu(1)
103+ Button {
104+ id: loadWithWeatherApp
105+ text: "Load with ubuntu-weather-app"
106+ onClicked: { testCase.restartWithApp("ubuntu-weather-app"); }
107+ }
108+ Button {
109+ id: loadWithGalleryApp
110+ text: "Load with gallery-app"
111+ onClicked: { testCase.restartWithApp("gallery-app"); }
112+ }
113+ Button {
114+ text: "toggle has decoration"
115+ onClicked: loader.item.hasDecoration = !loader.item.hasDecoration
116+ }
117+ Button {
118+ text: "show/hide decoration"
119+ onClicked: loader.item.showDecoration = !loader.item.showDecoration
120+ }
121+ Label {
122+ text: "scale to preview progress"
123+ }
124+
125+ Slider {
126+ value: 0
127+ minimumValue: 0
128+ maximumValue: 1
129+ live: true
130+ onValueChanged: loader.item.scaleToPreviewProgress = value
131+ }
132+ ListItem.ItemSelector {
133+ id: shellOrientationAngleSelector
134+ anchors { left: parent.left; right: parent.right }
135+ text: "shellOrientationAngle"
136+ model: ["0", "90", "180", "270"]
137+ property int value: selectedIndex * 90
138+ }
139+ Button {
140+ text: "matchShellOrientation()"
141+ onClicked: { loader.item.matchShellOrientation(); }
142+ }
143+ Button {
144+ text: "animateToShellOrientation()"
145+ onClicked: { loader.item.animateToShellOrientation(); }
146+ }
147+ }
148+ }
149+
150+ UT.UnityTestCase {
151+ id: testCase
152+ name: "DecoratedWindow"
153+ when: windowShown
154+
155+ property Item decoratedWindow: loader.item
156+
157+ function init() {
158+ }
159+
160+ function cleanup() {
161+ unloadWindow();
162+ root.fakeApplication = null;
163+ killApps();
164+ }
165+
166+ function restartWithApp(appId) {
167+ if (loader.active) {
168+ unloadWindow();
169+ }
170+ if (root.fakeApplication) {
171+ ApplicationManager.stopApplication(root.fakeApplication.appId);
172+ }
173+
174+ root.fakeApplication = ApplicationManager.startApplication(appId);
175+ loader.active = true;
176+ tryCompare(loader, "status", Loader.Ready);
177+ }
178+
179+ function unloadWindow() {
180+ loader.active = false;
181+ tryCompare(loader, "status", Loader.Null);
182+ tryCompare(loader, "item", null);
183+ // Loader.status might be Loader.Null and Loader.item might be null but the Loader
184+ // item might still be alive. So if we set Loader.active back to true
185+ // again right now we will get the very same Shell instance back. So no reload
186+ // actually took place. Likely because Loader waits until the next event loop
187+ // iteration to do its work. So to ensure the reload, we will wait until the
188+ // Shell instance gets destroyed.
189+ tryCompare(loader, "itemDestroyed", true);
190+
191+ }
192+
193+ function test_keepsSceneTransformationWhenShellRotates_data() {
194+ return [
195+ {tag: "0", selectedIndex: 0},
196+ {tag: "90", selectedIndex: 1},
197+ {tag: "180", selectedIndex: 2},
198+ {tag: "270", selectedIndex: 3}
199+ ];
200+ }
201+ function test_keepsSceneTransformationWhenShellRotates(data) {
202+ loadWithGalleryApp.clicked();
203+
204+ // Wait until it reaches the state we are interested on.
205+ // It begins with "startingUp"
206+ tryCompare(decoratedWindow, "counterRotate", false);
207+ var oldWidth = decoratedWindow.width
208+ var oldHeight = decoratedWindow.height
209+ var oldX = decoratedWindow.x
210+ var oldY = decoratedWindow.y
211+
212+ shellOrientationAngleSelector.selectedIndex = data.selectedIndex;
213+
214+ // must keep same aspect ratio
215+ compare(decoratedWindow.width, oldWidth);
216+ compare(decoratedWindow.height, oldHeight);
217+
218+
219+ // and scene transformation must be the identity (ie, no rotation or translation)
220+ compare(decoratedWindow.x, oldX);
221+ compare(decoratedWindow.y, oldY);
222+ }
223+
224+ function test_showHighLight() {
225+ loadWithGalleryApp.clicked();
226+ var highlightRect = findChild(loader.item, "selectionHighlight")
227+ tryCompare(highlightRect, "visible", false)
228+ loader.item.showHighlight = true;
229+ tryCompare(highlightRect, "visible", true)
230+ }
231+ }
232+}
tests/qmltests/Stages/tst_DesktopStage.qml → tests/qmltests/Stage/tst_DesktopStage.qmlrenamed+45−71
@@ -24,14 +24,14 @@ import WindowManager 0.1
24import Utils 0.1
24import Utils 0.1
25
25
26import ".." // For EdgeBarrierControls
26import ".." // For EdgeBarrierControls
27−import "../../../qml/Stages"
27+import "../../../qml/Stage"
28import "../../../qml/Components"
28import "../../../qml/Components"
29import "../../../qml/Components/PanelState"
29import "../../../qml/Components/PanelState"
30
30
31Item {
31Item {
32 id: root
32 id: root
33− width: desktopStageLoader.width + controls.width
33+ width: stageLoader.width + controls.width
34− height: desktopStageLoader.height
34+ height: stageLoader.height
35
35
36 property var greeter: { fullyShown: true }
36 property var greeter: { fullyShown: true }
37
37
@@ -63,7 +63,7 @@ Item {
63 }
63 }
64
64
65 Loader {
65 Loader {
66− id: desktopStageLoader
66+ id: stageLoader
67 x: ((root.width - controls.width) - width) / 2
67 x: ((root.width - controls.width) - width) / 2
68 y: (root.height - height) / 2
68 y: (root.height - height) / 2
69 width: units.gu(160*0.9)
69 width: units.gu(160*0.9)
@@ -73,7 +73,7 @@ Item {
73
73
74 property bool itemDestroyed: false
74 property bool itemDestroyed: false
75 sourceComponent: Component {
75 sourceComponent: Component {
76− DesktopStage {
76+ Stage {
77 anchors.fill: parent
77 anchors.fill: parent
78 background: "/usr/share/backgrounds/warty-final-ubuntu.png"
78 background: "/usr/share/backgrounds/warty-final-ubuntu.png"
79 focus: true
79 focus: true
@@ -82,17 +82,19 @@ Item {
82 edgeBarrierControls.target = testCase.findChild(this, "edgeBarrierController");
82 edgeBarrierControls.target = testCase.findChild(this, "edgeBarrierController");
83 }
83 }
84 Component.onDestruction: {
84 Component.onDestruction: {
85− desktopStageLoader.itemDestroyed = true;
85+ stageLoader.itemDestroyed = true;
86 }
86 }
87 orientations: Orientations {}
87 orientations: Orientations {}
88 applicationManager: ApplicationManager
88 applicationManager: ApplicationManager
89 topLevelSurfaceList: topSurfaceList
89 topLevelSurfaceList: topSurfaceList
90+ interactive: true
91+ mode: "windowed"
90 }
92 }
91 }
93 }
92
94
93 MouseArea {
95 MouseArea {
94 id: clickThroughTester
96 id: clickThroughTester
95− anchors.fill: desktopStageLoader.item
97+ anchors.fill: stageLoader.item
96 acceptedButtons: Qt.AllButtons
98 acceptedButtons: Qt.AllButtons
97 hoverEnabled: true
99 hoverEnabled: true
98 }
100 }
@@ -130,7 +132,7 @@ Item {
130 id: edgeBarrierControls
132 id: edgeBarrierControls
131 text: "Drag here to pull out spread"
133 text: "Drag here to pull out spread"
132 backgroundColor: "blue"
134 backgroundColor: "blue"
133− onDragged: { desktopStageLoader.item.pushRightEdge(amount); }
135+ onDragged: { stageLoader.item.pushRightEdge(amount); }
134 }
136 }
135
137
136 Divider {}
138 Divider {}
@@ -157,7 +159,7 @@ Item {
157 name: "DesktopStage"
159 name: "DesktopStage"
158 when: windowShown
160 when: windowShown
159
161
160− property Item desktopStage: desktopStageLoader.status === Loader.Ready ? desktopStageLoader.item : null
162+ property Item stage: stageLoader.status === Loader.Ready ? stageLoader.item : null
161
163
162 function init() {
164 function init() {
163 // wait until unity8-dash is up and running.
165 // wait until unity8-dash is up and running.
@@ -173,29 +175,29 @@ Item {
173 }
175 }
174
176
175 function cleanup() {
177 function cleanup() {
176− desktopStageLoader.itemDestroyed = false;
178+ stageLoader.itemDestroyed = false;
177− desktopStageLoader.active = false;
179+ stageLoader.active = false;
178
180
179− tryCompare(desktopStageLoader, "status", Loader.Null);
181+ tryCompare(stageLoader, "status", Loader.Null);
180− tryCompare(desktopStageLoader, "item", null);
182+ tryCompare(stageLoader, "item", null);
181 // Loader.status might be Loader.Null and Loader.item might be null but the Loader
183 // Loader.status might be Loader.Null and Loader.item might be null but the Loader
182 // actually took place. Likely because Loader waits until the next event loop
184 // actually took place. Likely because Loader waits until the next event loop
183 // iteration to do its work. So to ensure the reload, we will wait until the
185 // iteration to do its work. So to ensure the reload, we will wait until the
184 // Shell instance gets destroyed.
186 // Shell instance gets destroyed.
185− tryCompare(desktopStageLoader, "itemDestroyed", true);
187+ tryCompare(stageLoader, "itemDestroyed", true);
186
188
187 killApps();
189 killApps();
188
190
189 root.resetGeometry();
191 root.resetGeometry();
190
192
191− desktopStageLoader.active = true;
193+ stageLoader.active = true;
192− tryCompare(desktopStageLoader, "status", Loader.Ready);
194+ tryCompare(stageLoader, "status", Loader.Ready);
193
195
194 mouseEaterSpy.clear();
196 mouseEaterSpy.clear();
195 }
197 }
196
198
197 function waitUntilAppSurfaceShowsUp(surfaceId) {
199 function waitUntilAppSurfaceShowsUp(surfaceId) {
198− var appDelegate = findChild(desktopStage, "appDelegate_" + surfaceId);
200+ var appDelegate = findChild(stage, "appDelegate_" + surfaceId);
199 verify(appDelegate);
201 verify(appDelegate);
200 var appWindow = findChild(appDelegate, "appWindow");
202 var appWindow = findChild(appDelegate, "appWindow");
201 verify(appWindow);
203 verify(appWindow);
@@ -213,7 +215,7 @@ Item {
213 if (app) {
215 if (app) {
214 for (var i = 0; i < topSurfaceList.count; i++) {
216 for (var i = 0; i < topSurfaceList.count; i++) {
215 if (topSurfaceList.applicationAt(i).appId === appId) {
217 if (topSurfaceList.applicationAt(i).appId === appId) {
216− var appRepeater = findChild(desktopStage, "appRepeater");
218+ var appRepeater = findChild(stage, "appRepeater");
217 verify(appRepeater);
219 verify(appRepeater);
218 return appRepeater.itemAt(i);
220 return appRepeater.itemAt(i);
219 }
221 }
@@ -226,7 +228,7 @@ Item {
226 waitUntilAppSurfaceShowsUp(surfaceId);
228 waitUntilAppSurfaceShowsUp(surfaceId);
227 compare(app.surfaceList.count, 1);
229 compare(app.surfaceList.count, 1);
228
230
229− return findChild(desktopStage, "appDelegate_" + surfaceId);
231+ return findChild(stage, "appDelegate_" + surfaceId);
230 } catch(err) {
232 } catch(err) {
231 throw new Error("startApplication("+appId+") called from line " + util.callerLine(1) + " failed!");
233 throw new Error("startApplication("+appId+") called from line " + util.callerLine(1) + " failed!");
232 }
234 }
@@ -324,7 +326,7 @@ Item {
324 }
326 }
325
327
326 function findDecoratedWindow(surfaceId) {
328 function findDecoratedWindow(surfaceId) {
327− var appDelegate = findChild(desktopStage, "appDelegate_" + surfaceId);
329+ var appDelegate = findChild(stage, "appDelegate_" + surfaceId);
328 if (!appDelegate) {
330 if (!appDelegate) {
329 console.warn("Could not find appDelegate for surfaceId="+surfaceId);
331 console.warn("Could not find appDelegate for surfaceId="+surfaceId);
330 return null;
332 return null;
@@ -333,7 +335,7 @@ Item {
333 }
335 }
334
336
335 function findWindowDecoration(surfaceId) {
337 function findWindowDecoration(surfaceId) {
336− var appDelegate = findChild(desktopStage, "appDelegate_" + surfaceId);
338+ var appDelegate = findChild(stage, "appDelegate_" + surfaceId);
337 if (!appDelegate) {
339 if (!appDelegate) {
338 console.warn("Could not find appDelegate for surfaceId="+surfaceId);
340 console.warn("Could not find appDelegate for surfaceId="+surfaceId);
339 return null;
341 return null;
@@ -465,8 +467,8 @@ Item {
465
467
466 mouseClick(dialerDelegate);
468 mouseClick(dialerDelegate);
467
469
468− var desktopStagePriv = findInvisibleChild(desktopStage, "DesktopStagePrivate");
470+ var stagePriv = findInvisibleChild(stage, "DesktopStagePrivate");
469− tryCompare(desktopStagePriv, "focusedAppDelegate", dialerDelegate);
471+ tryCompare(stagePriv, "focusedAppDelegate", dialerDelegate);
470
472
471 keyClick(Qt.Key_F4, Qt.AltModifier); // Alt+F4 shortcut to close
473 keyClick(Qt.Key_F4, Qt.AltModifier); // Alt+F4 shortcut to close
472
474
@@ -517,35 +519,6 @@ Item {
517 tryCompare(MirFocusController, "focusedSurface", null); // verify still no surface is focused
519 tryCompare(MirFocusController, "focusedSurface", null); // verify still no surface is focused
518 }
520 }
519
521
520− function test_oskDisplacesWindow_data() {
521− return [
522− {tag: "no need to displace", windowHeight: units.gu(10), windowY: units.gu(5), targetDisplacement: units.gu(5), oskEnabled: true},
523− {tag: "displace to top", windowHeight: units.gu(50), windowY: units.gu(10), targetDisplacement: PanelState.panelHeight, oskEnabled: true},
524− {tag: "displace to top", windowHeight: units.gu(50), windowY: units.gu(10), targetDisplacement: PanelState.panelHeight, oskEnabled: true},
525− {tag: "osk not on this screen", windowHeight: units.gu(40), windowY: units.gu(10), targetDisplacement: units.gu(10), oskEnabled: false},
526− ]
527− }
528−
529− function test_oskDisplacesWindow(data) {
530− desktopStageLoader.item.oskEnabled = data.oskEnabled
531− var dashAppDelegate = startApplication("unity8-dash");
532− var oldOSKState = SurfaceManager.inputMethodSurface.state;
533− SurfaceManager.inputMethodSurface.state = Mir.RestoredState;
534− verify(dashAppDelegate);
535− dashAppDelegate.requestedHeight = data.windowHeight;
536− dashAppDelegate.requestedY = data.windowY;
537− SurfaceManager.inputMethodSurface.setInputBounds(Qt.rect(0, 0, 0, 0));
538− var initialY = dashAppDelegate.y;
539− verify(initialY > PanelState.panelHeight);
540−
541− SurfaceManager.inputMethodSurface.setInputBounds(Qt.rect(0, root.height / 2, root.width, root.height / 2));
542− tryCompare(dashAppDelegate, "y", data.targetDisplacement);
543−
544− SurfaceManager.inputMethodSurface.setInputBounds(Qt.rect(0, 0, 0, 0));
545− tryCompare(dashAppDelegate, "y", initialY);
546− SurfaceManager.inputMethodSurface.state = oldOSKState;
547− }
548−
549 function test_minimizeApplicationHidesSurface() {
522 function test_minimizeApplicationHidesSurface() {
550 compare(topSurfaceList.applicationAt(0).appId, "unity8-dash");
523 compare(topSurfaceList.applicationAt(0).appId, "unity8-dash");
551 var dashSurface = topSurfaceList.surfaceAt(0);
524 var dashSurface = topSurfaceList.surfaceAt(0);
@@ -598,6 +571,8 @@ Item {
598 var gmailDelegate = startApplication("gmail-webapp");
571 var gmailDelegate = startApplication("gmail-webapp");
599 verify(gmailDelegate);
572 verify(gmailDelegate);
600
573
574+ wait(2000)
575+
601 var gmailMaximizeButton = findChild(gmailDelegate, "maximizeWindowButton");
576 var gmailMaximizeButton = findChild(gmailDelegate, "maximizeWindowButton");
602 verify(gmailMaximizeButton);
577 verify(gmailMaximizeButton);
603 mouseClick(gmailMaximizeButton);
578 mouseClick(gmailMaximizeButton);
@@ -610,6 +585,7 @@ Item {
610 tryCompare(mapApp.surfaceList.get(0), "visible", false);
585 tryCompare(mapApp.surfaceList.get(0), "visible", false);
611
586
612 ApplicationManager.stopApplication("gmail-webapp");
587 ApplicationManager.stopApplication("gmail-webapp");
588+ wait(2000)
613
589
614 tryCompare(mapApp.surfaceList.get(0), "visible", true);
590 tryCompare(mapApp.surfaceList.get(0), "visible", true);
615 tryCompare(dialerApp.surfaceList.get(0), "visible", true);
591 tryCompare(dialerApp.surfaceList.get(0), "visible", true);
@@ -709,7 +685,7 @@ Item {
709 tryCompare(overlay, "visible", data.result);
685 tryCompare(overlay, "visible", data.result);
710
686
711 if (data.result) { // if shown, try to hide it by clicking outside
687 if (data.result) { // if shown, try to hide it by clicking outside
712− mouseClick(desktopStage);
688+ mouseClick(stage);
713 tryCompare(overlay, "visible", false);
689 tryCompare(overlay, "visible", false);
714 }
690 }
715 }
691 }
@@ -768,24 +744,6 @@ Item {
768 tryCompareFunction(function(){return posBefore == posAfter;}, data.button !== Qt.LeftButton ? true : false);
744 tryCompareFunction(function(){return posBefore == posAfter;}, data.button !== Qt.LeftButton ? true : false);
769 }
745 }
770
746
771− function test_preventMouseEventsThruDesktopSpread() {
772− var spread = findChild(desktopStage, "spread");
773− verify(spread);
774− spread.show();
775− tryCompareFunction( function(){ return spread.ready }, true );
776−
777− mouseEaterSpy.signalName = "wheel";
778− mouseWheel(spread, spread.width/2, spread.height/2, 10, 10);
779− tryCompare(mouseEaterSpy, "count", 0);
780−
781− mouseEaterSpy.clear();
782− mouseEaterSpy.signalName = "clicked";
783− mouseClick(spread, spread.width/2, spread.height/2, Qt.RightButton);
784− tryCompare(mouseEaterSpy, "count", 0);
785−
786− spread.cancel();
787− }
788−
789 function test_eatWindowDecorationMouseEvents_data() {
747 function test_eatWindowDecorationMouseEvents_data() {
790 return [
748 return [
791 {tag: "left mouse click", signalName: "clicked", button: Qt.LeftButton },
749 {tag: "left mouse click", signalName: "clicked", button: Qt.LeftButton },
@@ -814,5 +772,21 @@ Item {
814
772
815 tryCompare(mouseEaterSpy, "count", 0);
773 tryCompare(mouseEaterSpy, "count", 0);
816 }
774 }
775+
776+ // regression test for https://bugs.launchpad.net/ubuntu/+source/unity8/+bug/1627281
777+ function test_doubleTapToMaximizeWindow() {
778+ var dialerAppDelegate = startApplication("dialer-app");
779+ verify(dialerAppDelegate);
780+ var decoration = findChild(dialerAppDelegate, "appWindowDecoration");
781+ verify(decoration);
782+
783+ // simulate a double tap, with a slight erroneous move in between those 2 taps
784+ tap(decoration);
785+ touchPress(decoration);
786+ touchMove(decoration, decoration.width/2, decoration.height/2 - 10)
787+ touchRelease(decoration);
788+
789+ tryCompare(dialerAppDelegate, "state", "maximized");
790+ }
817 }
791 }
818}
792}
tests/qmltests/Stages/tst_PhoneStage.qml → tests/qmltests/Stage/tst_PhoneStage.qmlrenamed+149−211
@@ -19,7 +19,7 @@ import QtTest 1.0
19import Unity.Test 0.1 as UT
19import Unity.Test 0.1 as UT
20import ".."
20import ".."
21import "../../../qml/Components"
21import "../../../qml/Components"
22−import "../../../qml/Stages"
22+import "../../../qml/Stage"
23import Ubuntu.Components 1.3
23import Ubuntu.Components 1.3
24import Unity.Application 0.1
24import Unity.Application 0.1
25import WindowManager 0.1
25import WindowManager 0.1
@@ -31,16 +31,16 @@ Item {
31
31
32 property var greeter: { fullyShown: true }
32 property var greeter: { fullyShown: true }
33
33
34− PhoneStage {
34+ Stage {
35− id: phoneStage
35+ id: stage
36 anchors { fill: parent; rightMargin: units.gu(30) }
36 anchors { fill: parent; rightMargin: units.gu(30) }
37 focus: true
37 focus: true
38 dragAreaWidth: units.gu(2)
38 dragAreaWidth: units.gu(2)
39− maximizedAppTopMargin: units.gu(3)
40 interactive: true
39 interactive: true
41 shellOrientation: Qt.PortraitOrientation
40 shellOrientation: Qt.PortraitOrientation
42 orientations: Orientations {}
41 orientations: Orientations {}
43 applicationManager: ApplicationManager
42 applicationManager: ApplicationManager
43+ mode: "staged"
44 topLevelSurfaceList: TopLevelSurfaceList {
44 topLevelSurfaceList: TopLevelSurfaceList {
45 id: topLevelSurfaceList
45 id: topLevelSurfaceList
46 applicationsModel: ApplicationManager
46 applicationsModel: ApplicationManager
@@ -66,9 +66,9 @@ Item {
66 id: edgeBarrierControls
66 id: edgeBarrierControls
67 text: "Drag here to pull out spread"
67 text: "Drag here to pull out spread"
68 backgroundColor: "blue"
68 backgroundColor: "blue"
69− onDragged: { phoneStage.pushRightEdge(amount); }
69+ onDragged: { stage.pushRightEdge(amount); }
70 Component.onCompleted: {
70 Component.onCompleted: {
71− edgeBarrierControls.target = testCase.findChild(phoneStage, "edgeBarrierController");
71+ edgeBarrierControls.target = testCase.findChild(stage, "edgeBarrierController");
72 }
72 }
73 }
73 }
74 Repeater {
74 Repeater {
@@ -84,11 +84,37 @@ Item {
84 name: "PhoneStage"
84 name: "PhoneStage"
85 when: windowShown
85 when: windowShown
86
86
87+ function init() {
88+ // wait until unity8-dash is up and running.
89+ // it's started automatically by ApplicationManager mock implementation
90+ tryCompare(ApplicationManager, "count", 1);
91+ var dashApp = ApplicationManager.findApplication("unity8-dash");
92+ verify(dashApp);
93+ tryCompare(dashApp, "state", ApplicationInfoInterface.Running);
94+ }
95+
96+ function cleanup() {
97+ ApplicationManager.requestFocusApplication("unity8-dash");
98+ tryCompare(ApplicationManager, "focusedApplicationId", "unity8-dash");
99+ tryCompare(stage, "state", "staged");
100+ waitForRendering(stage);
101+
102+ killApps();
103+ // wait for Stage to stabilize back into its initial state
104+ var appRepeater = findChild(stage, "appRepeater");
105+ tryCompare(appRepeater, "count", 1);
106+ tryCompare(appRepeater.itemAt(0), "x", 0);
107+
108+ stage.shellOrientationAngle = 0;
109+
110+ waitForRendering(stage)
111+ }
112+
87 function findAppWindowForSurfaceId(surfaceId) {
113 function findAppWindowForSurfaceId(surfaceId) {
88− var delegateObjectName = "spreadDelegate_" + surfaceId;
114+ var delegateObjectName = "appDelegate_" + surfaceId;
89− var spreadDelegate = findChild(phoneStage, delegateObjectName);
115+ var spreadDelegate = findChild(stage, delegateObjectName);
90 if (!spreadDelegate) {
116 if (!spreadDelegate) {
91− console.warn("Failed to find " + delegateObjectName + " in phoneStage ("+phoneStage+")");
117+ console.warn("Failed to find " + delegateObjectName + " in stage");
92 return null;
118 return null;
93 }
119 }
94 var appWindow = findChild(spreadDelegate, "appWindow");
120 var appWindow = findChild(spreadDelegate, "appWindow");
@@ -108,33 +134,34 @@ Item {
108 function addApps(count) {
134 function addApps(count) {
109 if (count == undefined) count = 1;
135 if (count == undefined) count = 1;
110 for (var i = 0; i < count; i++) {
136 for (var i = 0; i < count; i++) {
137+ var startingAppId = ApplicationManager.availableApplications[ApplicationManager.count];
111 var appSurfaceId = topLevelSurfaceList.nextId;
138 var appSurfaceId = topLevelSurfaceList.nextId;
112− var app = ApplicationManager.startApplication(ApplicationManager.availableApplications[ApplicationManager.count])
139+ var app = ApplicationManager.startApplication(startingAppId)
113 tryCompare(app, "state", ApplicationInfoInterface.Running)
140 tryCompare(app, "state", ApplicationInfoInterface.Running)
114− var spreadView = findChild(phoneStage, "spreadView");
115− tryCompare(spreadView, "contentX", -spreadView.shift);
116 waitUntilAppSurfaceShowsUp(appSurfaceId);
141 waitUntilAppSurfaceShowsUp(appSurfaceId);
117− waitForRendering(phoneStage)
142+ waitForRendering(stage)
143+ tryCompare(ApplicationManager, "focusedApplicationId", startingAppId)
118 }
144 }
119 }
145 }
120
146
121 function performEdgeSwipeToShowAppSpread() {
147 function performEdgeSwipeToShowAppSpread() {
122− var spreadView = findChild(phoneStage, "spreadView");
123−
124− // Keep it inside the PhoneStage otherwise the controls on the right side will
148+ // Keep it inside the Stage otherwise the controls on the right side will
125 // capture the press thus the "- 2" on startX.
149 // capture the press thus the "- 2" on startX.
126− var startX = phoneStage.width - 2;
150+ var startX = stage.width - 2;
127− var startY = phoneStage.height / 2;
151+ var startY = stage.height / 2;
128 var endY = startY;
152 var endY = startY;
129− var endX = phoneStage.width / 2;
153+ var endX = stage.width / 2;
130
154
131− touchFlick(phoneStage, startX, startY, endX, endY,
155+ touchFlick(stage, startX, startY, endX, endY,
132 true /* beginTouch */, true /* endTouch */, units.gu(10), 50);
156 true /* beginTouch */, true /* endTouch */, units.gu(10), 50);
133
157
134− tryCompare(spreadView, "phase", 2);
158+ tryCompare(stage, "state", "spread");
135− tryCompare(spreadView, "flicking", false);
159+ // Make sure all the transitions have finished
136− tryCompare(spreadView, "moving", false);
160+ var appRepeater = findChild(stage, "appRepeater");
161+ for (var i = 0; i < appRepeater.count; i++) {
162+ waitUntilTransitionsEnd(appRepeater.itemAt(i));
163+ }
137− waitForRendering(phoneStage);
164+ waitForRendering(stage);
138 }
165 }
139
166
140 function swipeSurfaceUpwards(surfaceId) {
167 function swipeSurfaceUpwards(surfaceId) {
@@ -163,7 +190,7 @@ Item {
163
190
164 function waitUntilAppDelegateStopsMoving(targetSurfaceId)
191 function waitUntilAppDelegateStopsMoving(targetSurfaceId)
165 {
192 {
166− var targetAppDelegate = findChild(phoneStage, "spreadDelegate_" + targetSurfaceId);
193+ var targetAppDelegate = findChild(stage, "appDelegate_" + targetSurfaceId);
167 verify(targetAppDelegate);
194 verify(targetAppDelegate);
168 var lastValue = undefined;
195 var lastValue = undefined;
169 do {
196 do {
@@ -172,79 +199,39 @@ Item {
172 } while (lastValue != targetAppDelegate.animatedProgress);
199 } while (lastValue != targetAppDelegate.animatedProgress);
173 }
200 }
174
201
175− function test_shortFlick() {
176− addApps(2)
177− var startX = phoneStage.width - units.gu(1);
178− var startY = phoneStage.height / 2;
179− var endX = startX - units.gu(4);
180− var endY = startY;
181−
182− var activeApp = ApplicationManager.get(0);
183− var inactiveApp = ApplicationManager.get(1);
184−
185− touchFlick(phoneStage, startX, startY, endX, endY,
186− true /* beginTouch */, true /* endTouch */, units.gu(10), 50);
187−
188− tryCompare(ApplicationManager, "focusedApplicationId", inactiveApp.appId)
189−
190− touchFlick(phoneStage, startX, startY, endX, endY,
191− true /* beginTouch */, true /* endTouch */, units.gu(10), 50);
192−
193− tryCompare(ApplicationManager, "focusedApplicationId", activeApp.appId)
194− }
195−
196 function test_enterSpread_data() {
202 function test_enterSpread_data() {
197 return [
203 return [
198− {tag: "<position1 (linear movement)", positionMarker: "positionMarker1", linear: true, offset: 0, endPhase: 0, targetPhase: 0, newFocusedIndex: 1 },
204+ {tag: "<breakPoint (trigger)", progress: .2, cancel: false, endState: "staged", newFocusedIndex: 1 },
199− {tag: "<position1 (non-linear movement)", positionMarker: "positionMarker1", linear: false, offset: 0, endPhase: 0, targetPhase: 0, newFocusedIndex: 0 },
205+ {tag: "<breakPoint (cancel)", progress: .2, cancel: true, endState: "staged", newFocusedIndex: 0 },
200− {tag: ">position1", positionMarker: "positionMarker1", linear: true, offset: +5, endPhase: 0, targetPhase: 0, newFocusedIndex: 1 },
206+ {tag: ">breakPoint (trigger)", progress: .5, cancel: false, endState: "spread", newFocusedIndex: 0 },
201− {tag: "<position2 (linear)", positionMarker: "positionMarker2", linear: true, offset: 0, endPhase: 0, targetPhase: 0, newFocusedIndex: 1 },
207+ {tag: ">breakPoint (cancel)", progress: .8, cancel: true, endState: "staged", newFocusedIndex: 0 },
202− {tag: "<position2 (non-linear)", positionMarker: "positionMarker2", linear: false, offset: 0, endPhase: 0, targetPhase: 0, newFocusedIndex: 1 },
203− {tag: ">position2", positionMarker: "positionMarker2", linear: true, offset: +5, endPhase: 1, targetPhase: 0, newFocusedIndex: 1 },
204− {tag: "<position3", positionMarker: "positionMarker3", linear: true, offset: 0, endPhase: 1, targetPhase: 0, newFocusedIndex: 1 },
205− {tag: ">position3", positionMarker: "positionMarker3", linear: true, offset: +5, endPhase: 1, targetPhase: 2, newFocusedIndex: 2 },
206 ];
208 ];
207 }
209 }
208
210
209 function test_enterSpread(data) {
211 function test_enterSpread(data) {
210 addApps(5)
212 addApps(5)
211
213
212− var spreadView = findChild(phoneStage, "spreadView");
213−
214− // Keep it inside the PhoneStage otherwise the controls on the right side will
214+ // Keep it inside the Stage otherwise the controls on the right side will
215 // capture the press thus the "- 2" on startX.
215 // capture the press thus the "- 2" on startX.
216− var startX = phoneStage.width - 2;
216+ var startX = stage.width - 2;
217− var startY = phoneStage.height / 2;
217+ var startY = stage.height / 2;
218 var endY = startY;
218 var endY = startY;
219− var endX = spreadView.width - (spreadView.width * spreadView[data.positionMarker]) - data.offset
219+ var endX = stage.width - (stage.width * data.progress) - stage.dragAreaWidth;
220− - phoneStage.dragAreaWidth;
221
220
222 var oldFocusedApp = ApplicationManager.get(0);
221 var oldFocusedApp = ApplicationManager.get(0);
223 var newFocusedApp = ApplicationManager.get(data.newFocusedIndex);
222 var newFocusedApp = ApplicationManager.get(data.newFocusedIndex);
224
223
225− touchFlick(phoneStage, startX, startY, endX, endY,
224+ touchFlick(stage, startX, startY, endX, endY,
226 true /* beginTouch */, false /* endTouch */, units.gu(10), 50);
225 true /* beginTouch */, false /* endTouch */, units.gu(10), 50);
227
226
228− tryCompare(spreadView, "phase", data.endPhase)
229−
230− if (!data.linear) {
227+ if (data.cancel) {
231− touchFlick(phoneStage, endX, endY, endX + units.gu(.5), endY,
228+ touchFlick(stage, endX, endY, endX + units.gu(5), endY,
232− false /* beginTouch */, false /* endTouch */, units.gu(10), 50);
229+ false /* beginTouch */, true /* endTouch */, units.gu(10), 50);
233− touchFlick(phoneStage, endY + units.gu(.5), endY, endX, endY,
230+ } else {
234− false /* beginTouch */, false /* endTouch */, units.gu(10), 50);
231+ touchRelease(stage, endX, endY); }
235− }
236−
237− touchRelease(phoneStage, endX, endY);
238−
239− tryCompare(spreadView, "phase", data.targetPhase)
240−
241− if (data.targetPhase == 2) {
242− var app2 = findChild(spreadView, "spreadDelegate_" + topLevelSurfaceList.idAt(2));
243− tryCompare(app2, "swipeToCloseEnabled", true);
244− mouseClick(app2, units.gu(1), units.gu(1));
245− }
246
232
233+ tryCompare(stage, "state", data.endState);
247− tryCompare(ApplicationManager, "focusedApplicationId", newFocusedApp.appId);
234+ tryCompare(ApplicationManager, "focusedApplicationId", data.endState == "spread" ? oldFocusedApp.appId : newFocusedApp.appId);
248 }
235 }
249
236
250 function test_selectAppFromSpread_data() {
237 function test_selectAppFromSpread_data() {
@@ -263,32 +250,26 @@ Item {
263 function test_selectAppFromSpread(data) {
250 function test_selectAppFromSpread(data) {
264 addApps(data.total)
251 addApps(data.total)
265
252
266− var spreadView = findChild(phoneStage, "spreadView");
267−
268 performEdgeSwipeToShowAppSpread();
253 performEdgeSwipeToShowAppSpread();
269
254
270− tryCompare(spreadView, "phase", 2);
271−
272− var tile = findChild(spreadView, "spreadDelegate_" + topLevelSurfaceList.idAt(data.index));
255+ var tile = findChild(stage, "appDelegate_" + topLevelSurfaceList.idAt(data.index));
273 var appId = ApplicationManager.get(data.index).appId;
256 var appId = ApplicationManager.get(data.index).appId;
274
257
275− if (tile.mapToItem(spreadView, 0, 0).x > spreadView.width) {
258+ if (tile.mapToItem(stage, 0, 0).x > stage.width - units.gu(3)) {
276 // Item is not visible... Need to flick the spread
259 // Item is not visible... Need to flick the spread
277− var startX = phoneStage.width - units.gu(1);
260+ var startX = stage.width - units.gu(1);
278− var startY = phoneStage.height / 2;
261+ var startY = stage.height / 2;
279 var endY = startY;
262 var endY = startY;
280 var endX = units.gu(2);
263 var endX = units.gu(2);
281− touchFlick(phoneStage, startX, startY, endX, endY, true, true, units.gu(10), 50)
264+ touchFlick(stage, startX, startY, endX, endY, true, true, units.gu(10), 50)
282− tryCompare(spreadView, "flicking", false);
283− tryCompare(spreadView, "moving", false);
284−// waitForRendering(phoneStage);
285 }
265 }
286
266
287 console.log("clicking app", data.index, "(", appId, ")")
267 console.log("clicking app", data.index, "(", appId, ")")
268+ var dragArea = findChild(tile, "dragArea");
288− tryCompare(tile, "swipeToCloseEnabled", true);
269+ tryCompare(dragArea, "closeable", true);
289− mouseClick(spreadView, tile.mapToItem(spreadView, 0, 0).x + units.gu(1), spreadView.height / 2)
270+ mouseClick(stage, tile.mapToItem(stage, 0, 0).x + units.gu(1), stage.height / 2)
290 tryCompare(ApplicationManager, "focusedApplicationId", appId);
271 tryCompare(ApplicationManager, "focusedApplicationId", appId);
291− tryCompare(spreadView, "phase", 0);
272+ tryCompare(stage, "state", "staged");
292 }
273 }
293
274
294 function test_select_data() {
275 function test_select_data() {
@@ -302,16 +283,22 @@ Item {
302 function test_select(data) {
283 function test_select(data) {
303 addApps(5);
284 addApps(5);
304
285
305− var spreadView = findChild(phoneStage, "spreadView");
306 var selectedApp = ApplicationManager.get(data.index);
286 var selectedApp = ApplicationManager.get(data.index);
287+ var appRepeater = findChild(stage, "appRepeater");
288+ var selectedAppDeleage = appRepeater.itemAt(data.index);
307
289
308 performEdgeSwipeToShowAppSpread();
290 performEdgeSwipeToShowAppSpread();
309
291
310− phoneStage.select(selectedApp.appId);
292+ print("tapping", selectedAppDeleage.appId, selectedAppDeleage.visible)
293+ if (selectedAppDeleage.x > stage.width - units.gu(5)) {
294+ touchFlick(stage, stage.width - units.gu(2), stage.height / 2, units.gu(2), stage.height / 2, true, true, units.gu(2), 10)
295+ }
296+
297+ tap(selectedAppDeleage, 1, 1);
311
298
312− tryCompare(spreadView, "contentX", -spreadView.shift);
299+ tryCompare(stage, "state", "staged");
313
300
314− compare(ApplicationManager.focusedApplicationId, selectedApp.appId);
301+ tryCompare(ApplicationManager, "focusedApplicationId", selectedApp.appId);
315 }
302 }
316
303
317 function test_backgroundClickCancelsSpread() {
304 function test_backgroundClickCancelsSpread() {
@@ -320,37 +307,14 @@ Item {
320 var focusedAppId = ApplicationManager.focusedApplicationId;
307 var focusedAppId = ApplicationManager.focusedApplicationId;
321
308
322 performEdgeSwipeToShowAppSpread();
309 performEdgeSwipeToShowAppSpread();
310+ tryCompare(stage, "state", "spread");
323
311
324− mouseClick(phoneStage, units.gu(1), units.gu(1));
312+ mouseClick(stage, units.gu(1), units.gu(1));
325
313
326− // Make sure the spread is in the idle position
314+ tryCompare(stage, "state", "staged");
327− var spreadView = findChild(phoneStage, "spreadView");
328− tryCompare(spreadView, "contentX", -spreadView.shift);
329
315
330 // Make sure the same app is still focused
316 // Make sure the same app is still focused
331− compare(focusedAppId, ApplicationManager.focusedApplicationId);
317+ tryCompare(ApplicationManager, "focusedApplicationId", focusedAppId);
332− }
333−
334− function init() {
335− // wait until unity8-dash is up and running.
336− // it's started automatically by ApplicationManager mock implementation
337− tryCompare(ApplicationManager, "count", 1);
338− var dashApp = ApplicationManager.findApplication("unity8-dash");
339− verify(dashApp);
340− tryCompare(dashApp, "state", ApplicationInfoInterface.Running);
341− }
342−
343− function cleanup() {
344− killApps();
345−
346− phoneStage.shellOrientationAngle = 0;
347− phoneStage.select(ApplicationManager.get(0).appId);
348−
349− // wait for PhoneStage to stabilize back into its initial state
350− var spreadView = findChild(phoneStage, "spreadView");
351− while (spreadView.phase !== 0 || spreadView.contentX !== -spreadView.shift || spreadView.selectedIndex != -1) {
352− wait(50);
353− }
354 }
318 }
355
319
356 function test_focusNewTopMostAppAfterFocusedOneClosesItself() {
320 function test_focusNewTopMostAppAfterFocusedOneClosesItself() {
@@ -370,60 +334,9 @@ Item {
370 tryCompare(firstApp, "focused", true);
334 tryCompare(firstApp, "focused", true);
371 }
335 }
372
336
373− function test_cantCloseWhileSnapping() {
374− addApps(2);
375−
376− performEdgeSwipeToShowAppSpread();
377−
378− var spreadView = findChild(phoneStage, "spreadView");
379− var selectedApp = ApplicationManager.get(2);
380−
381− performEdgeSwipeToShowAppSpread();
382−
383− var app0 = findChild(spreadView, "spreadDelegate_" + topLevelSurfaceList.idAt(0));
384− var app1 = findChild(spreadView, "spreadDelegate_" + topLevelSurfaceList.idAt(1));
385− var app2 = findChild(spreadView, "spreadDelegate_" + topLevelSurfaceList.idAt(2));
386−
387− var dragArea0 = findChild(app0, "dragArea");
388− var dragArea1 = findChild(app1, "dragArea");
389− var dragArea2 = findChild(app2, "dragArea");
390−
391− compare(dragArea0.enabled, true);
392− compare(dragArea1.enabled, true);
393− compare(dragArea2.enabled, true);
394−
395− phoneStage.select(selectedApp.appId);
396−
397− // Make sure all drag areas are disabled instantly. Don't use tryCompare here!
398− compare(dragArea0.enabled, false);
399− compare(dragArea1.enabled, false);
400− compare(dragArea2.enabled, false);
401−
402− tryCompare(spreadView, "contentX", -spreadView.shift)
403− }
404−
405− function test_cantAccessPhoneStageWhileRightEdgeGesture() {
406− var spreadView = findChild(phoneStage, "spreadView");
407− var eventEaterArea = findChild(phoneStage, "eventEaterArea")
408−
409− var startX = phoneStage.width - 2;
410− var startY = phoneStage.height / 2;
411− var endY = startY;
412− var endX = phoneStage.width / 2;
413−
414− touchFlick(phoneStage, startX, startY, endX, endY,
415− true /* beginTouch */, false /* endTouch */, units.gu(10), 50);
416−
417− compare(eventEaterArea.enabled, true);
418−
419− touchRelease(phoneStage, endX, endY);
420−
421− compare(eventEaterArea.enabled, false);
422− }
423−
424 function test_leftEdge_data() {
337 function test_leftEdge_data() {
425 return [
338 return [
426− { tag: "normal", inSpread: false, leftEdgeDragWidth: units.gu(5), shouldMoveApp: true },
339+ { tag: "normal", inSpread: false, leftEdgeDragWidth: units.gu(20), shouldMoveApp: true },
427 { tag: "inSpread", inSpread: true, leftEdgeDragWidth: units.gu(5), shouldMoveApp: false }
340 { tag: "inSpread", inSpread: true, leftEdgeDragWidth: units.gu(5), shouldMoveApp: false }
428 ]
341 ]
429 }
342 }
@@ -435,22 +348,24 @@ Item {
435 performEdgeSwipeToShowAppSpread();
348 performEdgeSwipeToShowAppSpread();
436 }
349 }
437
350
438− var focusedDelegate = findChild(phoneStage, "spreadDelegate_" + topLevelSurfaceList.idAt(0));
351+ var focusedDelegate = findChild(stage, "appDelegate_" + topLevelSurfaceList.idAt(0));
352+ var currentX = focusedDelegate.x;
353+
439− phoneStage.inverseProgress = data.leftEdgeDragWidth;
354+ stage.leftEdgeDragProgress = data.leftEdgeDragWidth;
440
355
441− tryCompare(focusedDelegate, "x", data.shouldMoveApp ? data.leftEdgeDragWidth : 0);
356+ tryCompare(focusedDelegate, "x", data.shouldMoveApp ? data.leftEdgeDragWidth : currentX);
442
357
443− phoneStage.inverseProgress = 0;
358+ stage.leftEdgeDragProgress = 0;
444
359
445− tryCompare(focusedDelegate, "x", 0);
360+ tryCompare(focusedDelegate, "x", currentX);
446 }
361 }
447
362
448 function test_focusedAppIsTheOnlyRunningApp() {
363 function test_focusedAppIsTheOnlyRunningApp() {
449 addApps(2);
364 addApps(2);
450
365
451− var delegateA = findChild(phoneStage, "spreadDelegate_" + topLevelSurfaceList.idAt(0));
366+ var delegateA = findChild(stage, "appDelegate_" + topLevelSurfaceList.idAt(0));
452 verify(delegateA);
367 verify(delegateA);
453− var delegateB = findChild(phoneStage, "spreadDelegate_" + topLevelSurfaceList.idAt(1));
368+ var delegateB = findChild(stage, "appDelegate_" + topLevelSurfaceList.idAt(1));
454 verify(delegateB);
369 verify(delegateB);
455
370
456 // A is focused and running, B is unfocused and suspended
371 // A is focused and running, B is unfocused and suspended
@@ -461,7 +376,7 @@ Item {
461
376
462 // Switch foreground/focused appp from A to B
377 // Switch foreground/focused appp from A to B
463 performEdgeSwipeToShowAppSpread();
378 performEdgeSwipeToShowAppSpread();
464− phoneStage.select(delegateB.application.appId);
379+ tap(delegateB, 1, 1);
465
380
466 // Now it's the other way round
381 // Now it's the other way round
467 // A is unfocused and suspended, B is focused and running
382 // A is unfocused and suspended, B is focused and running
@@ -474,15 +389,15 @@ Item {
474 function test_dashRemainsRunningIfStageIsToldSo() {
389 function test_dashRemainsRunningIfStageIsToldSo() {
475 addApps(1);
390 addApps(1);
476
391
477− var delegateDash = findChild(phoneStage, "spreadDelegate_" + topLevelSurfaceList.idAt(1));
392+ var delegateDash = findChild(stage, "appDelegate_" + topLevelSurfaceList.idAt(1));
478 verify(delegateDash);
393 verify(delegateDash);
479 compare(delegateDash.application.appId, "unity8-dash");
394 compare(delegateDash.application.appId, "unity8-dash");
480
395
481− var delegateOther = findChild(phoneStage, "spreadDelegate_" + topLevelSurfaceList.idAt(0));
396+ var delegateOther = findChild(stage, "appDelegate_" + topLevelSurfaceList.idAt(0));
482 verify(delegateOther);
397 verify(delegateOther);
483
398
484 performEdgeSwipeToShowAppSpread();
399 performEdgeSwipeToShowAppSpread();
485− phoneStage.select("unity8-dash");
400+ tap(delegateDash, 1, 1);
486
401
487 tryCompare(delegateDash, "focus", true);
402 tryCompare(delegateDash, "focus", true);
488 tryCompare(delegateDash.application, "requestedState", ApplicationInfoInterface.RequestedRunning);
403 tryCompare(delegateDash.application, "requestedState", ApplicationInfoInterface.RequestedRunning);
@@ -490,41 +405,40 @@ Item {
490 compare(delegateOther.application.requestedState, ApplicationInfoInterface.RequestedSuspended);
405 compare(delegateOther.application.requestedState, ApplicationInfoInterface.RequestedSuspended);
491
406
492 performEdgeSwipeToShowAppSpread();
407 performEdgeSwipeToShowAppSpread();
493− phoneStage.select(delegateOther.application.appId);
408+ tap(delegateOther, 1, 1);
494−
495 // The other app gets focused and running but dash is kept running despite being unfocused
409 // The other app gets focused and running but dash is kept running despite being unfocused
410+ tryCompare(delegateOther, "focus", true);
411+ tryCompare(delegateOther.application, "requestedState", ApplicationInfoInterface.RequestedRunning);
496 tryCompare(delegateDash, "focus", false);
412 tryCompare(delegateDash, "focus", false);
497 tryCompare(delegateDash.application, "requestedState", ApplicationInfoInterface.RequestedRunning);
413 tryCompare(delegateDash.application, "requestedState", ApplicationInfoInterface.RequestedRunning);
498− compare(delegateOther.focus, true);
499− compare(delegateOther.application.requestedState, ApplicationInfoInterface.RequestedRunning);
500 }
414 }
501
415
502 function test_foregroundAppIsSuspendedWhenStageIsSuspended() {
416 function test_foregroundAppIsSuspendedWhenStageIsSuspended() {
503 addApps(1);
417 addApps(1);
504
418
505− var delegate = findChild(phoneStage, "spreadDelegate_" + topLevelSurfaceList.idAt(0));
419+ var delegate = findChild(stage, "appDelegate_" + topLevelSurfaceList.idAt(0));
506 verify(delegate);
420 verify(delegate);
507
421
508 compare(delegate.focus, true);
422 compare(delegate.focus, true);
509 compare(delegate.application.requestedState, ApplicationInfoInterface.RequestedRunning);
423 compare(delegate.application.requestedState, ApplicationInfoInterface.RequestedRunning);
510
424
511− phoneStage.suspended = true;
425+ stage.suspended = true;
512
426
513 tryCompare(delegate.application, "requestedState", ApplicationInfoInterface.RequestedSuspended);
427 tryCompare(delegate.application, "requestedState", ApplicationInfoInterface.RequestedSuspended);
514
428
515− phoneStage.suspended = false;
429+ stage.suspended = false;
516
430
517 tryCompare(delegate.application, "requestedState", ApplicationInfoInterface.RequestedRunning);
431 tryCompare(delegate.application, "requestedState", ApplicationInfoInterface.RequestedRunning);
518 }
432 }
519
433
520 function test_mouseEdgePush() {
434 function test_mouseEdgePush() {
521− var spreadView = findChild(phoneStage, "spreadView")
522 addApps(1);
435 addApps(1);
523− mouseMove(phoneStage, phoneStage.width - 1, units.gu(10));
436+ mouseMove(stage, stage.width - 1, units.gu(10));
524 for (var i = 0; i < units.gu(10); i++) {
437 for (var i = 0; i < units.gu(10); i++) {
525− phoneStage.pushRightEdge(1);
438+ stage.pushRightEdge(1);
526 }
439 }
527− tryCompare(spreadView, "phase", 2);
440+ mouseMove(stage, stage.width - units.gu(5), units.gu(10));
441+ compare(stage.state, "spread");
528 }
442 }
529
443
530 function test_closeSurfaceOfMultiSurfaceApp() {
444 function test_closeSurfaceOfMultiSurfaceApp() {
@@ -539,19 +453,44 @@ Item {
539
453
540 performEdgeSwipeToShowAppSpread();
454 performEdgeSwipeToShowAppSpread();
541
455
542− var appDelegate = findChild(phoneStage, "spreadDelegate_" + surface1Id);
456+ var appDelegate = findChild(stage, "appDelegate_" + surface1Id);
543− verify(appDelegate);
457+ var dragArea = findChild(appDelegate, "dragArea")
544− tryCompare(appDelegate, "swipeToCloseEnabled", true);
458+ verify(dragArea);
459+ tryCompare(dragArea, "closeable", true);
545
460
546 compare(webbrowserApp.surfaceList.count, 2);
461 compare(webbrowserApp.surfaceList.count, 2);
547− compare(webbrowserApp.state, ApplicationInfoInterface.Running);
548
462
549 swipeSurfaceUpwards(surface1Id);
463 swipeSurfaceUpwards(surface1Id);
550
464
551 // Surface must eventually be gone
465 // Surface must eventually be gone
552 tryCompareFunction(function() { return topLevelSurfaceList.indexForId(surface1Id); }, -1);
466 tryCompareFunction(function() { return topLevelSurfaceList.indexForId(surface1Id); }, -1);
553 tryCompare(webbrowserApp.surfaceList, "count", 1);
467 tryCompare(webbrowserApp.surfaceList, "count", 1);
554− compare(webbrowserApp.state, ApplicationInfoInterface.Running);
468+ }
469+
470+ function test_swipeToClose_data() {
471+ return [
472+ { tag: "closeable", closeable: true },
473+ { tag: "not closeable", closeable: false }
474+ ]
475+ }
476+
477+ function test_swipeToClose(data) {
478+ var surface1Id = topLevelSurfaceList.nextId;
479+ var webbrowserApp = ApplicationManager.startApplication("webbrowser-app");
480+ waitUntilAppSurfaceShowsUp(surface1Id);
481+
482+ performEdgeSwipeToShowAppSpread();
483+
484+ var appDelegate = findChild(stage, "appDelegate_" + surface1Id);
485+ var dragArea = findChild(appDelegate, "dragArea")
486+ verify(dragArea);
487+ dragArea.closeable = data.closeable;
488+
489+ var oldCount = ApplicationManager.count;
490+
491+ swipeSurfaceUpwards(surface1Id);
492+
493+ tryCompare(ApplicationManager, "count", data.closeable ? oldCount - 1 : oldCount);
555 }
494 }
556
495
557 /*
496 /*
@@ -632,11 +571,10 @@ Item {
632
571
633 performEdgeSwipeToShowAppSpread();
572 performEdgeSwipeToShowAppSpread();
634
573
635− {
636− var appDelegate = findChild(phoneStage, "spreadDelegate_" + webbrowserSurfaceId);
574+ var appDelegate = findChild(stage, "appDelegate_" + webbrowserSurfaceId);
637− verify(appDelegate);
575+ var dragArea = findChild(appDelegate, "dragArea");
638− tryCompare(appDelegate, "swipeToCloseEnabled", true);
576+ verify(dragArea);
639− }
577+ tryCompare(dragArea, "closeable", true);
640
578
641 swipeSurfaceUpwards(webbrowserSurfaceId);
579 swipeSurfaceUpwards(webbrowserSurfaceId);
642
580
tests/qmltests/Stages/tst_Splash.qml → tests/qmltests/Stage/tst_Splash.qmlrenamed+1−1
@@ -18,7 +18,7 @@ import QtQuick 2.4
18import QtTest 1.0
18import QtTest 1.0
19import Unity.Test 0.1 as UT
19import Unity.Test 0.1 as UT
20import ".."
20import ".."
21−import "../../../qml/Stages"
21+import "../../../qml/Stage"
22import Ubuntu.Components 1.3
22import Ubuntu.Components 1.3
23import Unity.Application 0.1
23import Unity.Application 0.1
24
24
tests/qmltests/Stages/tst_SpreadDelegate.qml → tests/qmltests/Stage/tst_SpreadDelegate.qmlrenamed

The content is the same.

tests/qmltests/Stages/tst_SurfaceContainer.qml → tests/qmltests/Stage/tst_SurfaceContainer.qmlrenamed+2−2
@@ -20,7 +20,7 @@ import QtTest 1.0
20import Unity.Test 0.1 as UT
20import Unity.Test 0.1 as UT
21import Ubuntu.Components 1.3
21import Ubuntu.Components 1.3
22import Unity.Application 0.1
22import Unity.Application 0.1
23−import "../../../qml/Stages"
23+import "../../../qml/Stage"
24
24
25Rectangle {
25Rectangle {
26 color: "red"
26 color: "red"
@@ -87,7 +87,7 @@ Rectangle {
87 }
87 }
88 Row {
88 Row {
89 CheckBox {id: promptCheckbox; checked: false; activeFocusOnPress: false
89 CheckBox {id: promptCheckbox; checked: false; activeFocusOnPress: false
90− enabled: surfaceContainerLoader.item.surface === null }
90+ enabled: surfaceContainerLoader.item && surfaceContainerLoader.item.surface === null }
91 Label { text: "isPromptSurface" }
91 Label { text: "isPromptSurface" }
92 }
92 }
93
93
tests/qmltests/Stages/tst_TabletStage.qml → tests/qmltests/Stage/tst_TabletStage.qmlrenamed+107−241
@@ -24,53 +24,35 @@ import Utils 0.1
24import WindowManager 0.1
24import WindowManager 0.1
25
25
26import ".."
26import ".."
27−import "../../../qml/Stages"
27+import "../../../qml/Stage"
28import "../../../qml/Components"
28import "../../../qml/Components"
29
29
30Rectangle {
30Rectangle {
31 id: root
31 id: root
32 color: "grey"
32 color: "grey"
33− width: tabletStageLoader.width + controls.width
33+ width: units.gu(160*0.7)
34− height: tabletStageLoader.height
34+ height: units.gu(100*0.7)
35
35
36 property var greeter: { fullyShown: true }
36 property var greeter: { fullyShown: true }
37
37
38− TopLevelSurfaceList {
38+ Stage {
39− id: topSurfaceList
39+ id: stage
40− applicationsModel: ApplicationManager
40+ anchors { fill: parent; rightMargin: units.gu(30) }
41− }
41+ dragAreaWidth: units.gu(2)
42−
42+ interactive: true
43− Loader {
43+ shellOrientation: Qt.LandscapeOrientation
44− id: tabletStageLoader
44+ nativeWidth: width
45−
45+ nativeHeight: height
46− x: ((root.width - controls.width) - width) / 2
46+ orientations: Orientations {
47− y: (root.height - height) / 2
47+ native_: Qt.LandscapeOrientation
48− width: units.gu(160*0.7)
48+ primary: Qt.LandscapeOrientation
49− height: units.gu(100*0.7)
49+ }
50−
51 focus: true
50 focus: true
52−
51+ mode: "stagedWithSideStage"
53− property bool itemDestroyed: false
54− sourceComponent: Component {
55− TabletStage {
56− anchors.fill: parent
57− Component.onDestruction: {
58− tabletStageLoader.itemDestroyed = true;
59− }
60− dragAreaWidth: units.gu(2)
61− maximizedAppTopMargin: units.gu(3)
62− interactive: true
63− shellOrientation: Qt.LandscapeOrientation
64− nativeWidth: width
65− nativeHeight: height
66− orientations: Orientations {
67− native_: Qt.LandscapeOrientation
68− primary: Qt.LandscapeOrientation
69− }
70− focus: true
71− applicationManager: ApplicationManager
52+ applicationManager: ApplicationManager
72− topLevelSurfaceList: topSurfaceList
53+ topLevelSurfaceList: TopLevelSurfaceList {
73− }
54+ id: topLevelSurfaceList
55+ applicationsModel: ApplicationManager
74 }
56 }
75 }
57 }
76
58
@@ -84,7 +66,7 @@ Rectangle {
84 right: parent.right
66 right: parent.right
85 }
67 }
86
68
87− // don't let mouse clicks in the controls area disturb the TabletStage behind it
69+ // don't let mouse clicks in the controls area disturb the Stage behind it
88 MouseArea { anchors.fill: parent }
70 MouseArea { anchors.fill: parent }
89
71
90 Column {
72 Column {
@@ -95,15 +77,16 @@ Rectangle {
95 id: edgeBarrierControls
77 id: edgeBarrierControls
96 text: "Drag here to pull out spread"
78 text: "Drag here to pull out spread"
97 backgroundColor: "blue"
79 backgroundColor: "blue"
98− onDragged: { tabletStageLoader.item.pushRightEdge(amount); }
80+ onDragged: { stage.pushRightEdge(amount); }
99 Component.onCompleted: {
81 Component.onCompleted: {
100− edgeBarrierControls.target = testCase.findChild(tabletStageLoader, "edgeBarrierController");
82+ edgeBarrierControls.target = testCase.findChild(stage, "edgeBarrierController");
101 }
83 }
102 }
84 }
103
85
104 Button {
86 Button {
105 text: testCase.sideStage ? testCase.sideStage.shown ? "Hide Side-stage" : "Show Side-stage" : ""
87 text: testCase.sideStage ? testCase.sideStage.shown ? "Hide Side-stage" : "Show Side-stage" : ""
106 enabled: testCase.sideStage
88 enabled: testCase.sideStage
89+ activeFocusOnPress: false
107 onClicked: {
90 onClicked: {
108 if (testCase.sideStage.shown) testCase.sideStage.hide();
91 if (testCase.sideStage.shown) testCase.sideStage.hide();
109 else testCase.sideStage.show();
92 else testCase.sideStage.show();
@@ -140,46 +123,50 @@ Rectangle {
140 name: "TabletStage"
123 name: "TabletStage"
141 when: windowShown
124 when: windowShown
142
125
143− property Item tabletStage: tabletStageLoader.status === Loader.Ready ? tabletStageLoader.item : null
126+ readonly property alias topSurfaceList: stage.topLevelSurfaceList
144− property Item sideStage: tabletStage ? findChild(tabletStage, "sideStage") : null
127+ property Item sideStage: stage ? findChild(stage, "sideStage") : null
145
128
146 function init() {
129 function init() {
147 stageSaver.clear();
130 stageSaver.clear();
148− tabletStageLoader.active = true;
149− tryCompare(tabletStageLoader, "status", Loader.Ready);
150
131
151 tryCompare(topSurfaceList, "count", 1);
132 tryCompare(topSurfaceList, "count", 1);
152 compare(topSurfaceList.applicationAt(0).appId, "unity8-dash");
133 compare(topSurfaceList.applicationAt(0).appId, "unity8-dash");
153
134
154 // this is very strange, but sometimes the test starts without
135 // this is very strange, but sometimes the test starts without
155− // TabletStage components having finished loading themselves
136+ // Stage components having finished loading themselves
156 var appWindow = null
137 var appWindow = null
157 while (!appWindow) {
138 while (!appWindow) {
158 appWindow = findAppWindowForSurfaceId(topSurfaceList.idAt(0));
139 appWindow = findAppWindowForSurfaceId(topSurfaceList.idAt(0));
159 if (!appWindow) {
140 if (!appWindow) {
160− console.log("didn't find unity8-dash appWindow in " + tabletStage + ". Trying again...");
141+ console.log("didn't find unity8-dash appWindow in Stage. Trying again...");
161 wait(50);
142 wait(50);
162 }
143 }
163 }
144 }
164
145
165 waitUntilAppSurfaceShowsUp(topSurfaceList.idAt(0));
146 waitUntilAppSurfaceShowsUp(topSurfaceList.idAt(0));
166 sideStage.hideNow()
147 sideStage.hideNow()
148+ tryCompare(sideStage, "x", stage.width)
167 }
149 }
168
150
169 function cleanup() {
151 function cleanup() {
170− tabletStageLoader.itemDestroyed = false;
152+ ApplicationManager.requestFocusApplication("unity8-dash");
171− tabletStageLoader.active = false;
153+ tryCompare(ApplicationManager, "focusedApplicationId", "unity8-dash");
172−
154+ tryCompare(stage, "state", "stagedWithSideStage");
173− tryCompare(tabletStageLoader, "status", Loader.Null);
155+ waitForRendering(stage);
174− tryCompare(tabletStageLoader, "item", null);
175− // Loader.status might be Loader.Null and Loader.item might be null but the Loader
176− // actually took place. Likely because Loader waits until the next event loop
177− // iteration to do its work. So to ensure the reload, we will wait until the
178− // Shell instance gets destroyed.
179− tryCompare(tabletStageLoader, "itemDestroyed", true);
180
156
181 killApps();
157 killApps();
158+
159+ // wait for Stage to stabilize back into its initial state
160+ var appRepeater = findChild(stage, "appRepeater");
161+ tryCompare(appRepeater, "count", 1);
162+ tryCompare(appRepeater.itemAt(0), "x", 0);
163+
164+ sideStage.hideNow();
165+ tryCompare(sideStage, "x", stage.width)
166+ waitForRendering(stage)
167+
182 WindowStateStorage.clear();
168 WindowStateStorage.clear();
169+ wait(100)
183 }
170 }
184
171
185 function waitUntilAppSurfaceShowsUp(surfaceId) {
172 function waitUntilAppSurfaceShowsUp(surfaceId) {
@@ -191,7 +178,7 @@ Rectangle {
191 }
178 }
192
179
193 function findAppWindowForSurfaceId(surfaceId) {
180 function findAppWindowForSurfaceId(surfaceId) {
194− var spreadDelegate = findChild(tabletStage, "spreadDelegate_" + surfaceId);
181+ var spreadDelegate = findChild(stage, "appDelegate_" + surfaceId);
195 if (!spreadDelegate) {
182 if (!spreadDelegate) {
196 return null;
183 return null;
197 }
184 }
@@ -210,7 +197,7 @@ Rectangle {
210
197
211 function waitUntilAppDelegateStopsMoving(targetSurfaceId)
198 function waitUntilAppDelegateStopsMoving(targetSurfaceId)
212 {
199 {
213− var targetAppDelegate = findChild(tabletStage, "spreadDelegate_" + targetSurfaceId);
200+ var targetAppDelegate = findChild(stage, "appDelegate_" + targetSurfaceId);
214 verify(targetAppDelegate);
201 verify(targetAppDelegate);
215 var lastValue = undefined;
202 var lastValue = undefined;
216 do {
203 do {
@@ -220,15 +207,9 @@ Rectangle {
220 }
207 }
221
208
222 function performEdgeSwipeToShowAppSpread() {
209 function performEdgeSwipeToShowAppSpread() {
223− touchFlick(tabletStage,
210+ touchFlick(stage, stage.width - (stage.dragAreaWidth / 2), stage.height / 2, stage.x + 1, stage.height / 2);
224− tabletStage.width - (tabletStage.dragAreaWidth / 2), tabletStage.height / 2,
225− tabletStage.x + 1, tabletStage.height / 2);
226
211
227− var spreadView = findChild(tabletStage, "spreadView");
212+ tryCompare(stage, "state", "spread");
228− verify(spreadView);
229− tryCompare(spreadView, "phase", 2);
230− tryCompare(spreadView, "flicking", false);
231− tryCompare(spreadView, "moving", false);
232 }
213 }
233
214
234 function swipeSurfaceUpwards(surfaceId) {
215 function swipeSurfaceUpwards(surfaceId) {
@@ -244,17 +225,12 @@ Rectangle {
244
225
245 function dragToSideStage(surfaceId) {
226 function dragToSideStage(surfaceId) {
246 sideStage.showNow();
227 sideStage.showNow();
247− var targetAppDelegate = findChild(tabletStage, "spreadDelegate_" + surfaceId);
228+ var targetAppDelegate = findChild(stage, "appDelegate_" + surfaceId);
248
229
249− var pos = tabletStage.width - sideStage.width - (tabletStage.width - sideStage.width) / 2;
230+ var pos = stage.width - sideStage.width - (stage.width - sideStage.width) / 2;
250− var end_pos = tabletStage.width - sideStage.width / 2;
231+ var end_pos = stage.width - sideStage.width / 2;
251
232
252− multiTouchDragUntil([0,1,2],
233+ multiTouchDragUntil([0,1,2], stage, pos, stage.height / 2, units.gu(3), 0,
253− tabletStage,
254− pos,
255− tabletStage.height / 2,
256− units.gu(3),
257− 0,
258 function() {
234 function() {
259 pos += units.gu(3);
235 pos += units.gu(3);
260 return sideStage.shown && !sideStage.showAnimation.running &&
236 return sideStage.shown && !sideStage.showAnimation.running &&
@@ -265,16 +241,16 @@ Rectangle {
265
241
266 function dragToMainStage(surfaceId) {
242 function dragToMainStage(surfaceId) {
267 sideStage.showNow();
243 sideStage.showNow();
268− var targetAppDelegate = findChild(tabletStage, "spreadDelegate_" + surfaceId);
244+ var targetAppDelegate = findChild(stage, "appDelegate_" + surfaceId);
269 verify(targetAppDelegate);
245 verify(targetAppDelegate);
270
246
271− var pos = tabletStage.width - sideStage.width / 2;
247+ var pos = stage.width - sideStage.width / 2;
272− var end_pos = tabletStage.width - sideStage.width - (tabletStage.width - sideStage.width) / 2;
248+ var end_pos = stage.width - sideStage.width - (stage.width - sideStage.width) / 2;
273
249
274 multiTouchDragUntil([0,1,2],
250 multiTouchDragUntil([0,1,2],
275− tabletStage,
251+ stage,
276 pos,
252 pos,
277− tabletStage.height / 2,
253+ stage.height / 2,
278 -units.gu(3),
254 -units.gu(3),
279 0,
255 0,
280 function() {
256 function() {
@@ -290,7 +266,7 @@ Rectangle {
290 var webbrowserSurfaceId = topSurfaceList.nextId;
266 var webbrowserSurfaceId = topSurfaceList.nextId;
291 webbrowserCheckBox.checked = true;
267 webbrowserCheckBox.checked = true;
292 waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
268 waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
293− var webbrowserDelegate = findChild(tabletStage, "spreadDelegate_" + webbrowserSurfaceId);
269+ var webbrowserDelegate = findChild(stage, "appDelegate_" + webbrowserSurfaceId);
294 verify(webbrowserDelegate);
270 verify(webbrowserDelegate);
295 compare(webbrowserDelegate.stage, ApplicationInfoInterface.MainStage);
271 compare(webbrowserDelegate.stage, ApplicationInfoInterface.MainStage);
296 var webbrowserWindow = findAppWindowForSurfaceId(webbrowserSurfaceId);
272 var webbrowserWindow = findAppWindowForSurfaceId(webbrowserSurfaceId);
@@ -303,7 +279,7 @@ Rectangle {
303 waitUntilAppSurfaceShowsUp(dialerSurfaceId);
279 waitUntilAppSurfaceShowsUp(dialerSurfaceId);
304
280
305 var dialerApp = ApplicationManager.findApplication(dialerCheckBox.appId);
281 var dialerApp = ApplicationManager.findApplication(dialerCheckBox.appId);
306− var dialerDelegate = findChild(tabletStage, "spreadDelegate_" + dialerSurfaceId);
282+ var dialerDelegate = findChild(stage, "appDelegate_" + dialerSurfaceId);
307 verify(dialerDelegate);
283 verify(dialerDelegate);
308 compare(dialerDelegate.stage, ApplicationInfoInterface.SideStage);
284 compare(dialerDelegate.stage, ApplicationInfoInterface.SideStage);
309
285
@@ -336,17 +312,18 @@ Rectangle {
336
312
337 performEdgeSwipeToShowAppSpread();
313 performEdgeSwipeToShowAppSpread();
338
314
339− var appDelegate = findChild(tabletStage, "spreadDelegate_" + dialerSurfaceId);
315+ var appDelegate = findChild(stage, "appDelegate_" + dialerSurfaceId);
340− verify(appDelegate);
316+ var dragArea = findChild(appDelegate, "dragArea");
317+ verify(dragArea);
341 compare(appDelegate.stage, ApplicationInfoInterface.SideStage);
318 compare(appDelegate.stage, ApplicationInfoInterface.SideStage);
342− tryCompare(appDelegate, "swipeToCloseEnabled", true);
319+ tryCompare(dragArea, "closeable", true);
343
320
344 swipeSurfaceUpwards(dialerSurfaceId);
321 swipeSurfaceUpwards(dialerSurfaceId);
345
322
346 // Check that dialer-app has been closed
323 // Check that dialer-app has been closed
347
324
348 tryCompareFunction(function() {
325 tryCompareFunction(function() {
349− return findChild(tabletStage, "appWindow_" + dialerCheckBox.appId);
326+ return findChild(stage, "appWindow_" + dialerCheckBox.appId);
350 }, null);
327 }, null);
351
328
352 tryCompareFunction(function() {
329 tryCompareFunction(function() {
@@ -359,7 +336,7 @@ Rectangle {
359 webbrowserCheckBox.checked = true;
336 webbrowserCheckBox.checked = true;
360 waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
337 waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
361 var webbrowserApp = ApplicationManager.findApplication(webbrowserCheckBox.appId);
338 var webbrowserApp = ApplicationManager.findApplication(webbrowserCheckBox.appId);
362− var webbrowserDelegate = findChild(tabletStage, "spreadDelegate_" + webbrowserSurfaceId);
339+ var webbrowserDelegate = findChild(stage, "appDelegate_" + webbrowserSurfaceId);
363 compare(webbrowserDelegate.stage, ApplicationInfoInterface.MainStage);
340 compare(webbrowserDelegate.stage, ApplicationInfoInterface.MainStage);
364
341
365 tryCompare(webbrowserApp, "state", ApplicationInfoInterface.Running);
342 tryCompare(webbrowserApp, "state", ApplicationInfoInterface.Running);
@@ -368,7 +345,7 @@ Rectangle {
368 galleryCheckBox.checked = true;
345 galleryCheckBox.checked = true;
369 waitUntilAppSurfaceShowsUp(gallerySurfaceId);
346 waitUntilAppSurfaceShowsUp(gallerySurfaceId);
370 var galleryApp = ApplicationManager.findApplication(galleryCheckBox.appId);
347 var galleryApp = ApplicationManager.findApplication(galleryCheckBox.appId);
371− var galleryDelegate = findChild(tabletStage, "spreadDelegate_" + gallerySurfaceId);
348+ var galleryDelegate = findChild(stage, "appDelegate_" + gallerySurfaceId);
372 compare(galleryDelegate.stage, ApplicationInfoInterface.MainStage);
349 compare(galleryDelegate.stage, ApplicationInfoInterface.MainStage);
373
350
374 tryCompare(galleryApp, "state", ApplicationInfoInterface.Running);
351 tryCompare(galleryApp, "state", ApplicationInfoInterface.Running);
@@ -389,7 +366,7 @@ Rectangle {
389 WindowStateStorage.saveStage(facebookCheckBox.appId, ApplicationInfoInterface.SideStage)
366 WindowStateStorage.saveStage(facebookCheckBox.appId, ApplicationInfoInterface.SideStage)
390 WindowStateStorage.saveStage(dialerCheckBox.appId, ApplicationInfoInterface.SideStage)
367 WindowStateStorage.saveStage(dialerCheckBox.appId, ApplicationInfoInterface.SideStage)
391
368
392− var stagesPriv = findInvisibleChild(tabletStage, "stagesPriv");
369+ var stagesPriv = findInvisibleChild(stage, "DesktopStagePrivate");
393 verify(stagesPriv);
370 verify(stagesPriv);
394
371
395 // launch two main stage apps
372 // launch two main stage apps
@@ -398,7 +375,7 @@ Rectangle {
398 var webbrowserSurfaceId = topSurfaceList.nextId;
375 var webbrowserSurfaceId = topSurfaceList.nextId;
399 webbrowserCheckBox.checked = true;
376 webbrowserCheckBox.checked = true;
400 waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
377 waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
401− var webbrowserDelegate = findChild(tabletStage, "spreadDelegate_" + webbrowserSurfaceId);
378+ var webbrowserDelegate = findChild(stage, "appDelegate_" + webbrowserSurfaceId);
402 verify(webbrowserDelegate);
379 verify(webbrowserDelegate);
403 compare(webbrowserDelegate.stage, ApplicationInfoInterface.MainStage);
380 compare(webbrowserDelegate.stage, ApplicationInfoInterface.MainStage);
404 var webbrowserApp = ApplicationManager.findApplication(webbrowserCheckBox.appId);
381 var webbrowserApp = ApplicationManager.findApplication(webbrowserCheckBox.appId);
@@ -407,7 +384,7 @@ Rectangle {
407 galleryCheckBox.checked = true;
384 galleryCheckBox.checked = true;
408 waitUntilAppSurfaceShowsUp(gallerySurfaceId);
385 waitUntilAppSurfaceShowsUp(gallerySurfaceId);
409 var galleryApp = ApplicationManager.findApplication(galleryCheckBox.appId);
386 var galleryApp = ApplicationManager.findApplication(galleryCheckBox.appId);
410− var galleryDelegate = findChild(tabletStage, "spreadDelegate_" + gallerySurfaceId);
387+ var galleryDelegate = findChild(stage, "appDelegate_" + gallerySurfaceId);
411 compare(galleryDelegate.stage, ApplicationInfoInterface.MainStage);
388 compare(galleryDelegate.stage, ApplicationInfoInterface.MainStage);
412
389
413 compare(stagesPriv.mainStageAppId, galleryCheckBox.appId);
390 compare(stagesPriv.mainStageAppId, galleryCheckBox.appId);
@@ -419,14 +396,14 @@ Rectangle {
419 dialerCheckBox.checked = true;
396 dialerCheckBox.checked = true;
420 waitUntilAppSurfaceShowsUp(dialerSurfaceId);
397 waitUntilAppSurfaceShowsUp(dialerSurfaceId);
421 var dialerApp = ApplicationManager.findApplication(dialerCheckBox.appId);
398 var dialerApp = ApplicationManager.findApplication(dialerCheckBox.appId);
422− var dialerDelegate = findChild(tabletStage, "spreadDelegate_" + dialerSurfaceId);
399+ var dialerDelegate = findChild(stage, "appDelegate_" + dialerSurfaceId);
423 compare(dialerDelegate.stage, ApplicationInfoInterface.SideStage);
400 compare(dialerDelegate.stage, ApplicationInfoInterface.SideStage);
424
401
425 var facebookSurfaceId = topSurfaceList.nextId;
402 var facebookSurfaceId = topSurfaceList.nextId;
426 facebookCheckBox.checked = true;
403 facebookCheckBox.checked = true;
427 waitUntilAppSurfaceShowsUp(facebookSurfaceId);
404 waitUntilAppSurfaceShowsUp(facebookSurfaceId);
428 var facebookApp = ApplicationManager.findApplication(facebookCheckBox.appId);
405 var facebookApp = ApplicationManager.findApplication(facebookCheckBox.appId);
429− var facebookDelegate = findChild(tabletStage, "spreadDelegate_" + facebookSurfaceId);
406+ var facebookDelegate = findChild(stage, "appDelegate_" + facebookSurfaceId);
430 compare(facebookDelegate.stage, ApplicationInfoInterface.SideStage);
407 compare(facebookDelegate.stage, ApplicationInfoInterface.SideStage);
431
408
432 compare(stagesPriv.sideStageAppId, facebookCheckBox.appId);
409 compare(stagesPriv.sideStageAppId, facebookCheckBox.appId);
@@ -461,40 +438,31 @@ Rectangle {
461 webbrowserCheckBox.checked = true;
438 webbrowserCheckBox.checked = true;
462 waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
439 waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
463 var webbrowserApp = ApplicationManager.findApplication(webbrowserCheckBox.appId);
440 var webbrowserApp = ApplicationManager.findApplication(webbrowserCheckBox.appId);
464− var webbrowserDelegate = findChild(tabletStage, "spreadDelegate_" + webbrowserSurfaceId);
441+ var webbrowserDelegate = findChild(stage, "appDelegate_" + webbrowserSurfaceId);
465 compare(webbrowserDelegate.stage, ApplicationInfoInterface.MainStage);
442 compare(webbrowserDelegate.stage, ApplicationInfoInterface.MainStage);
466
443
467 var dialerSurfaceId = topSurfaceList.nextId;
444 var dialerSurfaceId = topSurfaceList.nextId;
468 dialerCheckBox.checked = true;
445 dialerCheckBox.checked = true;
469 waitUntilAppSurfaceShowsUp(dialerSurfaceId);
446 waitUntilAppSurfaceShowsUp(dialerSurfaceId);
470 var dialerApp = ApplicationManager.findApplication(dialerCheckBox.appId);
447 var dialerApp = ApplicationManager.findApplication(dialerCheckBox.appId);
471− var dialerDelegate = findChild(tabletStage, "spreadDelegate_" + dialerSurfaceId);
448+ var dialerDelegate = findChild(stage, "appDelegate_" + dialerSurfaceId);
472 compare(dialerDelegate.stage, ApplicationInfoInterface.SideStage);
449 compare(dialerDelegate.stage, ApplicationInfoInterface.SideStage);
473
450
474
451
475 compare(webbrowserApp.requestedState, ApplicationInfoInterface.RequestedRunning);
452 compare(webbrowserApp.requestedState, ApplicationInfoInterface.RequestedRunning);
476 compare(dialerApp.requestedState, ApplicationInfoInterface.RequestedRunning);
453 compare(dialerApp.requestedState, ApplicationInfoInterface.RequestedRunning);
477
454
478− tabletStage.suspended = true;
455+ stage.suspended = true;
479
456
480 tryCompare(webbrowserApp, "requestedState", ApplicationInfoInterface.RequestedSuspended);
457 tryCompare(webbrowserApp, "requestedState", ApplicationInfoInterface.RequestedSuspended);
481 tryCompare(dialerApp, "requestedState", ApplicationInfoInterface.RequestedSuspended);
458 tryCompare(dialerApp, "requestedState", ApplicationInfoInterface.RequestedSuspended);
482
459
483− tabletStage.suspended = false;
460+ stage.suspended = false;
484
461
485 tryCompare(webbrowserApp, "requestedState", ApplicationInfoInterface.RequestedRunning);
462 tryCompare(webbrowserApp, "requestedState", ApplicationInfoInterface.RequestedRunning);
486 tryCompare(dialerApp, "requestedState", ApplicationInfoInterface.RequestedRunning);
463 tryCompare(dialerApp, "requestedState", ApplicationInfoInterface.RequestedRunning);
487 }
464 }
488
465
489− function test_mouseEdgePush() {
490− var spreadView = findChild(tabletStageLoader, "spreadView")
491− mouseMove(tabletStageLoader, tabletStageLoader.width - 1, units.gu(10));
492− for (var i = 0; i < units.gu(10); i++) {
493− tabletStageLoader.item.pushRightEdge(1);
494− }
495− tryCompare(spreadView, "phase", 2);
496− }
497−
498 function test_threeFingerTapOpensSideStage_data() {
466 function test_threeFingerTapOpensSideStage_data() {
499 return [
467 return [
500 { tag: "1 finger", touchIds: [0], result: false },
468 { tag: "1 finger", touchIds: [0], result: false },
@@ -505,7 +473,7 @@ Rectangle {
505 }
473 }
506
474
507 function test_threeFingerTapOpensSideStage(data) {
475 function test_threeFingerTapOpensSideStage(data) {
508− multiTouchTap(data.touchIds, tabletStage, tabletStage.width / 2, tabletStage.height / 2);
476+ multiTouchTap(data.touchIds, stage, stage.width / 2, stage.height / 2);
509 wait(200);
477 wait(200);
510 tryCompare(sideStage, "shown", data.result);
478 tryCompare(sideStage, "shown", data.result);
511 }
479 }
@@ -523,18 +491,13 @@ Rectangle {
523 function test_threeFingerTapClosesSideStage(data) {
491 function test_threeFingerTapClosesSideStage(data) {
524 sideStage.showNow();
492 sideStage.showNow();
525
493
526− multiTouchTap(data.touchIds, tabletStage, tabletStage.width / 2, tabletStage.height / 2);
494+ multiTouchTap(data.touchIds, stage, stage.width / 2, stage.height / 2);
527 wait(200);
495 wait(200);
528 tryCompare(sideStage, "shown", data.result);
496 tryCompare(sideStage, "shown", data.result);
529 }
497 }
530
498
531 function test_threeFingerDragOpensSidestage() {
499 function test_threeFingerDragOpensSidestage() {
532− multiTouchDragUntil([0,1,2],
500+ multiTouchDragUntil([0,1,2], stage, stage.width / 4, stage.height / 4, units.gu(1), 0,
533− tabletStage,
534− tabletStage.width / 4,
535− tabletStage.height / 4,
536− units.gu(1),
537− 0,
538 function() { return sideStage.shown; });
501 function() { return sideStage.shown; });
539 }
502 }
540
503
@@ -546,7 +509,7 @@ Rectangle {
546 }
509 }
547
510
548 function test_applicationLoadsInDefaultStage(data) {
511 function test_applicationLoadsInDefaultStage(data) {
549− var stagesPriv = findInvisibleChild(tabletStage, "stagesPriv");
512+ var stagesPriv = findInvisibleChild(stage, "DesktopStagePrivate");
550 verify(stagesPriv);
513 verify(stagesPriv);
551
514
552 tryCompare(stagesPriv, "mainStageAppId", "unity8-dash");
515 tryCompare(stagesPriv, "mainStageAppId", "unity8-dash");
@@ -570,7 +533,7 @@ Rectangle {
570 function test_applicationLoadsInSavedStage(data) {
533 function test_applicationLoadsInSavedStage(data) {
571 WindowStateStorage.saveStage(webbrowserCheckBox.appId, data.stage)
534 WindowStateStorage.saveStage(webbrowserCheckBox.appId, data.stage)
572
535
573− var stagesPriv = findInvisibleChild(tabletStage, "stagesPriv");
536+ var stagesPriv = findInvisibleChild(stage, "DesktopStagePrivate");
574 verify(stagesPriv);
537 verify(stagesPriv);
575
538
576 tryCompare(stagesPriv, "mainStageAppId", "unity8-dash");
539 tryCompare(stagesPriv, "mainStageAppId", "unity8-dash");
@@ -595,7 +558,7 @@ Rectangle {
595 WindowStateStorage.saveStage(webbrowserCheckBox.appId, data.fromStage);
558 WindowStateStorage.saveStage(webbrowserCheckBox.appId, data.fromStage);
596 stageSaver.clear();
559 stageSaver.clear();
597
560
598− var stagesPriv = findInvisibleChild(tabletStage, "stagesPriv");
561+ var stagesPriv = findInvisibleChild(stage, "DesktopStagePrivate");
599 verify(stagesPriv);
562 verify(stagesPriv);
600
563
601 tryCompare(stagesPriv, "mainStageAppId", "unity8-dash");
564 tryCompare(stagesPriv, "mainStageAppId", "unity8-dash");
@@ -622,63 +585,37 @@ Rectangle {
622 webbrowserCheckBox.checked = true;
585 webbrowserCheckBox.checked = true;
623 waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
586 waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
624
587
625− var appDelegate = findChild(tabletStage, "spreadDelegate_" + webbrowserSurfaceId);
588+ var appDelegate = findChild(stage, "appDelegate_" + webbrowserSurfaceId);
626 verify(appDelegate);
589 verify(appDelegate);
590+ waitForRendering(stage);
627− compare(appDelegate.stage, ApplicationInfoInterface.MainStage);
591+ tryCompare(appDelegate, "stage", ApplicationInfoInterface.MainStage);
628
592
629 dragToSideStage(webbrowserSurfaceId);
593 dragToSideStage(webbrowserSurfaceId);
630
594
631− var spreadView = findChild(tabletStageLoader, "spreadView")
632− tryCompare(spreadView, "surfaceDragging", false);
633 tryCompare(appDelegate, "stage", ApplicationInfoInterface.SideStage);
595 tryCompare(appDelegate, "stage", ApplicationInfoInterface.SideStage);
634 }
596 }
635
597
636− function test_unloadSideStageByDraggingFromStageStage() {
598+ function test_unloadSideStageByDraggingFromSideStage() {
637 sideStage.showNow();
599 sideStage.showNow();
638 WindowStateStorage.saveStage(webbrowserCheckBox.appId, ApplicationInfoInterface.SideStage)
600 WindowStateStorage.saveStage(webbrowserCheckBox.appId, ApplicationInfoInterface.SideStage)
601+ // WindowStateStorage is async... Lets wait for it to be fully processed...
602+ tryCompareFunction(function() {
603+ return WindowStateStorage.getStage(webbrowserCheckBox.appId, ApplicationInfoInterface.MainStage) === ApplicationInfoInterface.SideStage
604+ }, true);
639 var webbrowserSurfaceId = topSurfaceList.nextId;
605 var webbrowserSurfaceId = topSurfaceList.nextId;
640 webbrowserCheckBox.checked = true;
606 webbrowserCheckBox.checked = true;
641 waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
607 waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
642
608
643− var appDelegate = findChild(tabletStage, "spreadDelegate_" + webbrowserSurfaceId);
609+ var appDelegate = findChild(stage, "appDelegate_" + webbrowserSurfaceId);
644 verify(appDelegate);
610 verify(appDelegate);
611+ waitForRendering(stage);
645− compare(appDelegate.stage, ApplicationInfoInterface.SideStage);
612+ tryCompare(appDelegate, "stage", ApplicationInfoInterface.SideStage);
646
613
647 dragToMainStage(webbrowserSurfaceId);
614 dragToMainStage(webbrowserSurfaceId);
648
615
649− var spreadView = findChild(tabletStageLoader, "spreadView")
650− tryCompare(spreadView, "surfaceDragging", false);
651 tryCompare(appDelegate, "stage", ApplicationInfoInterface.MainStage);
616 tryCompare(appDelegate, "stage", ApplicationInfoInterface.MainStage);
652 }
617 }
653
618
654− function test_closeSurfaceOfMultiSurfaceApp() {
655− var surface1Id = topSurfaceList.nextId;
656− webbrowserCheckBox.checked = true;
657− waitUntilAppSurfaceShowsUp(surface1Id);
658− var webbrowserApp = ApplicationManager.findApplication(webbrowserCheckBox.appId);
659−
660− var surface2Id = topSurfaceList.nextId;
661− verify(surface1Id !== surface2Id); // sanity checking
662− webbrowserCheckBox.createSurface();
663− waitUntilAppSurfaceShowsUp(surface2Id);
664−
665− performEdgeSwipeToShowAppSpread();
666−
667− var appDelegate = findChild(tabletStage, "spreadDelegate_" + surface1Id);
668− verify(appDelegate);
669− tryCompare(appDelegate, "swipeToCloseEnabled", true);
670−
671− compare(webbrowserApp.surfaceList.count, 2);
672− compare(webbrowserApp.state, ApplicationInfoInterface.Running);
673−
674− swipeSurfaceUpwards(surface1Id);
675−
676− // Surface must eventually be gone
677− tryCompareFunction(function() { return topSurfaceList.indexForId(surface1Id); }, -1);
678− tryCompare(webbrowserApp.surfaceList, "count", 1);
679− compare(webbrowserApp.state, ApplicationInfoInterface.Running);
680− }
681−
682 /*
619 /*
683 1- Suspended app gets killed behind the scenes, causing its surface to go zombie.
620 1- Suspended app gets killed behind the scenes, causing its surface to go zombie.
684 2- Surface gets screenshotted and removed. Its slot in the topSurfaceList remains,
621 2- Surface gets screenshotted and removed. Its slot in the topSurfaceList remains,
@@ -724,64 +661,12 @@ Rectangle {
724 compare(webbrowserApp.surfaceList.count, 1);
661 compare(webbrowserApp.surfaceList.count, 1);
725 }
662 }
726
663
727− /*
728− 1 - user suspends an application (ie, focus a surface from a different application)
729− 2 - That suspended application gets killed, causing its surface to go zombie
730− 3 - user goes to spread and closes that zombie surface. Actually, by that time
731− Tablet shell will be displaying a screenshot of it instead, so there's no
732− MirSurface whatsoever backing it up.
733− */
734− function test_closeZombieSurface()
735− {
736− compare(topSurfaceList.applicationAt(0).appId, "unity8-dash");
737− var dashSurfaceId = topSurfaceList.idAt(0);
738− var dashSurface = topSurfaceList.surfaceAt(0);
739−
740− var webbrowserSurfaceId = topSurfaceList.nextId;
741− webbrowserCheckBox.checked = true;
742− waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
743− var webbrowserApp = ApplicationManager.findApplication(webbrowserCheckBox.appId);
744−
745− switchToSurface(dashSurfaceId);
746−
747− tryCompare(MirFocusController, "focusedSurface", dashSurface);
748− tryCompare(webbrowserApp, "state", ApplicationInfoInterface.Suspended);
749−
750− compare(webbrowserApp.surfaceList.count, 1);
751−
752− // simulate the suspended app being killed by the out-of-memory daemon
753− webbrowserApp.surfaceList.get(0).setLive(false);
754−
755− // wait until the surface is gone
756− tryCompare(webbrowserApp.surfaceList, "count", 0);
757− compare(topSurfaceList.surfaceAt(topSurfaceList.indexForId(webbrowserSurfaceId)), null);
758−
759− performEdgeSwipeToShowAppSpread();
760−
761− {
762− var appDelegate = findChild(tabletStage, "spreadDelegate_" + webbrowserSurfaceId);
763− verify(appDelegate);
764− tryCompare(appDelegate, "swipeToCloseEnabled", true);
765− }
766−
767− swipeSurfaceUpwards(webbrowserSurfaceId);
768−
769− // webbrowser entry is nowhere to be seen
770− tryCompareFunction(function(){return topSurfaceList.indexForId(webbrowserSurfaceId);}, -1);
771−
772− // nor is its app
773− compare(ApplicationManager.findApplication(webbrowserCheckBox.appId), null);
774−
775− // only unity8-dash surface is left
776− compare(topSurfaceList.count, 1);
777− }
778−
779 function test_draggingSurfaceKeepsSurfaceFocus() {
664 function test_draggingSurfaceKeepsSurfaceFocus() {
780 var webbrowserSurfaceId = topSurfaceList.nextId;
665 var webbrowserSurfaceId = topSurfaceList.nextId;
781 webbrowserCheckBox.checked = true;
666 webbrowserCheckBox.checked = true;
782 waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
667 waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
783
668
784− var appDelegate = findChild(tabletStage, "spreadDelegate_" + webbrowserSurfaceId);
669+ var appDelegate = findChild(stage, "appDelegate_" + webbrowserSurfaceId);
785 verify(appDelegate);
670 verify(appDelegate);
786 compare(appDelegate.stage, ApplicationInfoInterface.MainStage);
671 compare(appDelegate.stage, ApplicationInfoInterface.MainStage);
787
672
@@ -789,9 +674,8 @@ Rectangle {
789
674
790 dragToSideStage(webbrowserSurfaceId);
675 dragToSideStage(webbrowserSurfaceId);
791
676
792− var spreadView = findChild(tabletStageLoader, "spreadView")
793− tryCompare(spreadView, "surfaceDragging", false);
794 tryCompare(appDelegate.surface, "activeFocus", true);
677 tryCompare(appDelegate.surface, "activeFocus", true);
678+ tryCompare(appDelegate, "stage", ApplicationInfoInterface.SideStage);
795 }
679 }
796
680
797 function test_dashDoesNotDragToSidestage() {
681 function test_dashDoesNotDragToSidestage() {
@@ -799,59 +683,41 @@ Rectangle {
799 compare(topSurfaceList.applicationAt(0).appId, "unity8-dash");
683 compare(topSurfaceList.applicationAt(0).appId, "unity8-dash");
800 var dashSurfaceId = topSurfaceList.idAt(0);
684 var dashSurfaceId = topSurfaceList.idAt(0);
801
685
802− var appDelegate = findChild(tabletStage, "spreadDelegate_" + dashSurfaceId);
686+ var appDelegate = findChild(stage, "appDelegate_" + dashSurfaceId);
803 verify(appDelegate);
687 verify(appDelegate);
804 compare(appDelegate.stage, ApplicationInfoInterface.MainStage);
688 compare(appDelegate.stage, ApplicationInfoInterface.MainStage);
805
689
806− var pos = tabletStage.width - sideStage.width - (tabletStage.width - sideStage.width) / 2;
690+ var pos = stage.width - sideStage.width - (stage.width - sideStage.width) / 2;
807− var end_pos = tabletStage.width - sideStage.width / 2;
691+ var end_pos = stage.width - sideStage.width / 2;
808
692
809− multiTouchDragUntil([0,1,2],
693+ multiTouchDragUntil([0,1,2], stage, pos, stage.height / 2, units.gu(3), 0,
810− tabletStage,
811− pos,
812− tabletStage.height / 2,
813− units.gu(3),
814− 0,
815 function() {
694 function() {
816 pos += units.gu(3);
695 pos += units.gu(3);
817 return sideStage.shown && !sideStage.showAnimation.running &&
696 return sideStage.shown && !sideStage.showAnimation.running &&
818 pos >= end_pos;
697 pos >= end_pos;
819 });
698 });
820
699
821− var spreadView = findChild(tabletStageLoader, "spreadView")
700+ waitForRendering(stage);
822− tryCompare(spreadView, "surfaceDragging", false);
823 tryCompare(appDelegate, "stage", ApplicationInfoInterface.MainStage);
701 tryCompare(appDelegate, "stage", ApplicationInfoInterface.MainStage);
824 }
702 }
825
703
826− function test_switchStageOnRotation() {
704+ function test_switchRestoreStageOnRotation() {
827 WindowStateStorage.saveStage(webbrowserCheckBox.appId, ApplicationInfoInterface.SideStage)
705 WindowStateStorage.saveStage(webbrowserCheckBox.appId, ApplicationInfoInterface.SideStage)
828 var webbrowserSurfaceId = topSurfaceList.nextId;
706 var webbrowserSurfaceId = topSurfaceList.nextId;
829 webbrowserCheckBox.checked = true;
707 webbrowserCheckBox.checked = true;
830 waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
708 waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
831
709
832− var appDelegate = findChild(tabletStage, "spreadDelegate_" + webbrowserSurfaceId);
710+ var appDelegate = findChild(stage, "appDelegate_" + webbrowserSurfaceId);
833 verify(appDelegate);
711 verify(appDelegate);
834 compare(appDelegate.stage, ApplicationInfoInterface.SideStage);
712 compare(appDelegate.stage, ApplicationInfoInterface.SideStage);
835
713
836− tabletStage.shellOrientation = Qt.PortraitOrientation;
837− tryCompare(appDelegate, "stage", ApplicationInfoInterface.MainStage);
838− }
839−
840− function test_restoreOriginalStageOnRotation() {
841− var webbrowserSurfaceId = topSurfaceList.nextId;
842− webbrowserCheckBox.checked = true;
843− waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
844−
845− var appDelegate = findChild(tabletStage, "spreadDelegate_" + webbrowserSurfaceId);
846− verify(appDelegate);
847−
848 dragToSideStage(webbrowserSurfaceId);
714 dragToSideStage(webbrowserSurfaceId);
849
715
850 // will be in sidestage now
716 // will be in sidestage now
851− tabletStage.shellOrientation = Qt.PortraitOrientation;
717+ stage.shellOrientation = Qt.PortraitOrientation;
852 tryCompare(appDelegate, "stage", ApplicationInfoInterface.MainStage);
718 tryCompare(appDelegate, "stage", ApplicationInfoInterface.MainStage);
853
719
854− tabletStage.shellOrientation = Qt.LandscapeOrientation;
720+ stage.shellOrientation = Qt.LandscapeOrientation;
855 tryCompare(appDelegate, "stage", ApplicationInfoInterface.SideStage);
721 tryCompare(appDelegate, "stage", ApplicationInfoInterface.SideStage);
856 }
722 }
857
723
@@ -860,25 +726,25 @@ Rectangle {
860 webbrowserCheckBox.checked = true;
726 webbrowserCheckBox.checked = true;
861 waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
727 waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
862
728
863− var appDelegate = findChild(tabletStage, "spreadDelegate_" + webbrowserSurfaceId);
729+ var appDelegate = findChild(stage, "appDelegate_" + webbrowserSurfaceId);
864 verify(appDelegate);
730 verify(appDelegate);
865
731
866 dragToSideStage(webbrowserSurfaceId);
732 dragToSideStage(webbrowserSurfaceId);
867 // will be in sidestage now
733 // will be in sidestage now
868− tabletStage.shellOrientation = Qt.PortraitOrientation;
734+ stage.shellOrientation = Qt.PortraitOrientation;
869 tryCompare(appDelegate, "stage", ApplicationInfoInterface.MainStage);
735 tryCompare(appDelegate, "stage", ApplicationInfoInterface.MainStage);
870
736
871 webbrowserCheckBox.checked = false;
737 webbrowserCheckBox.checked = false;
872 tryCompare(ApplicationManager, "count", 1);
738 tryCompare(ApplicationManager, "count", 1);
873
739
874 // back to landscape
740 // back to landscape
875− tabletStage.shellOrientation = Qt.LandscapeOrientation;
741+ stage.shellOrientation = Qt.LandscapeOrientation;
876
742
877 webbrowserSurfaceId = topSurfaceList.nextId;
743 webbrowserSurfaceId = topSurfaceList.nextId;
878 webbrowserCheckBox.checked = true;
744 webbrowserCheckBox.checked = true;
879 waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
745 waitUntilAppSurfaceShowsUp(webbrowserSurfaceId);
880
746
881− appDelegate = findChild(tabletStage, "spreadDelegate_" + webbrowserSurfaceId);
747+ appDelegate = findChild(stage, "appDelegate_" + webbrowserSurfaceId);
882 verify(appDelegate);
748 verify(appDelegate);
883 tryCompare(appDelegate, "stage", ApplicationInfoInterface.SideStage);
749 tryCompare(appDelegate, "stage", ApplicationInfoInterface.SideStage);
884 }
750 }
tests/qmltests/Stages/tst_WindowResizeArea.qml → tests/qmltests/Stage/tst_WindowResizeArea.qmlrenamed+40−36
@@ -20,7 +20,7 @@ import QtTest 1.0
20import Unity.Test 0.1
20import Unity.Test 0.1
21import ".."
21import ".."
22import "../../../qml/Components/PanelState"
22import "../../../qml/Components/PanelState"
23−import "../../../qml/Stages"
23+import "../../../qml/Stage"
24import Ubuntu.Components 1.3
24import Ubuntu.Components 1.3
25import Ubuntu.Components.ListItems 1.3 as ListItem
25import Ubuntu.Components.ListItems 1.3 as ListItem
26import Unity.Application 0.1
26import Unity.Application 0.1
@@ -34,7 +34,7 @@ Item {
34 Binding {
34 Binding {
35 target: PanelState
35 target: PanelState
36 property: "panelHeight"
36 property: "panelHeight"
37− value: units.gu(2)
37+ value: units.gu(3)
38 }
38 }
39
39
40 Component {
40 Component {
@@ -46,12 +46,16 @@ Item {
46 property alias resizeAreaMinHeight: windowResizeArea.minHeight
46 property alias resizeAreaMinHeight: windowResizeArea.minHeight
47 x: requestedX
47 x: requestedX
48 y: requestedY
48 y: requestedY
49− property real requestedX: units.gu(20)
49+ property real requestedX: windowedX
50− property real requestedY: units.gu(20)
50+ property real requestedY: windowedY
51 width: requestedWidth
51 width: requestedWidth
52 height: requestedHeight
52 height: requestedHeight
53− property real requestedWidth
53+ property real requestedWidth: windowedWidth
54− property real requestedHeight
54+ property real requestedHeight: windowedHeight
55+ property real windowedX: units.gu(20)
56+ property real windowedY: units.gu(20)
57+ property real windowedWidth
58+ property real windowedHeight
55 property real minimumWidth: 0
59 property real minimumWidth: 0
56 property real minimumHeight: 0
60 property real minimumHeight: 0
57 property real maximumWidth: 0
61 property real maximumWidth: 0
@@ -236,10 +240,10 @@ Item {
236 property var fakeWindow: windowLoader.item
240 property var fakeWindow: windowLoader.item
237
241
238 function init() {
242 function init() {
239− fakeWindow.requestedX = units.gu(20)
243+ fakeWindow.windowedX = units.gu(20)
240− fakeWindow.requestedY = units.gu(20)
244+ fakeWindow.windowedY = units.gu(20)
241− fakeWindow.requestedWidth = units.gu(20)
245+ fakeWindow.windowedWidth = units.gu(20)
242− fakeWindow.requestedHeight = units.gu(20)
246+ fakeWindow.windowedHeight = units.gu(20)
243 fakeWindow.resizeAreaMinWidth = units.gu(15);
247 fakeWindow.resizeAreaMinWidth = units.gu(15);
244 fakeWindow.resizeAreaMinHeight = units.gu(10);
248 fakeWindow.resizeAreaMinHeight = units.gu(10);
245 fakeWindow.minimumWidth = 0;
249 fakeWindow.minimumWidth = 0;
@@ -264,8 +268,8 @@ Item {
264 }
268 }
265
269
266 function test_resizeWindowRightBottom(data) {
270 function test_resizeWindowRightBottom(data) {
267− var initialWindowX = fakeWindow.requestedX;
271+ var initialWindowX = fakeWindow.windowedX;
268− var initialWindowY = fakeWindow.requestedY;
272+ var initialWindowY = fakeWindow.windowedY;
269 var initialWindowWidth = fakeWindow.width
273 var initialWindowWidth = fakeWindow.width
270 var initialWindowHeight = fakeWindow.height
274 var initialWindowHeight = fakeWindow.height
271
275
@@ -290,8 +294,8 @@ Item {
290 }
294 }
291
295
292 function test_resizeWindowLeftTop(data) {
296 function test_resizeWindowLeftTop(data) {
293− var initialWindowX = fakeWindow.requestedX;
297+ var initialWindowX = fakeWindow.windowedX;
294− var initialWindowY = fakeWindow.requestedY;
298+ var initialWindowY = fakeWindow.windowedY;
295 var initialWindowWidth = fakeWindow.width
299 var initialWindowWidth = fakeWindow.width
296 var initialWindowHeight = fakeWindow.height
300 var initialWindowHeight = fakeWindow.height
297
301
@@ -309,8 +313,8 @@ Item {
309 }
313 }
310
314
311 function test_saveRestoreSize() {
315 function test_saveRestoreSize() {
312− var initialWindowX = fakeWindow.requestedX;
316+ var initialWindowX = fakeWindow.windowedX;
313− var initialWindowY = fakeWindow.requestedY;
317+ var initialWindowY = fakeWindow.windowedY;
314 var initialWindowWidth = fakeWindow.width
318 var initialWindowWidth = fakeWindow.width
315 var initialWindowHeight = fakeWindow.height
319 var initialWindowHeight = fakeWindow.height
316
320
@@ -342,8 +346,8 @@ Item {
342 }
346 }
343
347
344 function test_resizeSmallerAndLarger(data) {
348 function test_resizeSmallerAndLarger(data) {
345− var initialWindowX = fakeWindow.requestedX;
349+ var initialWindowX = fakeWindow.windowedX;
346− var initialWindowY = fakeWindow.requestedY;
350+ var initialWindowY = fakeWindow.windowedY;
347 var initialWindowWidth = fakeWindow.width
351 var initialWindowWidth = fakeWindow.width
348 var initialWindowHeight = fakeWindow.height
352 var initialWindowHeight = fakeWindow.height
349
353
@@ -358,18 +362,18 @@ Item {
358 }
362 }
359
363
360 function test_saveRestoreMaximized() {
364 function test_saveRestoreMaximized() {
361− var initialWindowX = fakeWindow.requestedX;
365+ var initialWindowX = fakeWindow.windowedX;
362− var initialWindowY = fakeWindow.requestedY;
366+ var initialWindowY = fakeWindow.windowedY;
363
367
364 var moveDelta = units.gu(5);
368 var moveDelta = units.gu(5);
365
369
366− fakeWindow.requestedX = initialWindowX + moveDelta
370+ fakeWindow.windowedX = initialWindowX + moveDelta
367− fakeWindow.requestedY = initialWindowY + moveDelta
371+ fakeWindow.windowedY = initialWindowY + moveDelta
368
372
369 // Now change the state to maximized. The window should not keep updating the stored values
373 // Now change the state to maximized. The window should not keep updating the stored values
370 fakeWindow.maximize()
374 fakeWindow.maximize()
371− fakeWindow.requestedX = 31415 // 0 is too risky to pass the test even when broken
375+ fakeWindow.windowedX = 31415 // 0 is too risky to pass the test even when broken
372− fakeWindow.requestedY = 31415
376+ fakeWindow.windowedY = 31415
373
377
374 // This will destroy the window and recreate it
378 // This will destroy the window and recreate it
375 windowLoader.active = false;
379 windowLoader.active = false;
@@ -399,8 +403,8 @@ Item {
399 }
403 }
400
404
401 function test_restoreMovesIntoBounds(data) {
405 function test_restoreMovesIntoBounds(data) {
402− fakeWindow.requestedX = data.x;
406+ fakeWindow.windowedX = data.x;
403− fakeWindow.requestedY = data.y;
407+ fakeWindow.windowedY = data.y;
404 fakeWindow.width = data.w;
408 fakeWindow.width = data.w;
405 fakeWindow.height = data.h;
409 fakeWindow.height = data.h;
406 waitForRendering(root);
410 waitForRendering(root);
@@ -427,8 +431,8 @@ Item {
427 and height) increment value.
431 and height) increment value.
428 */
432 */
429 function test_sizeIncrement() {
433 function test_sizeIncrement() {
430− var initialWindowX = fakeWindow.requestedX;
434+ var initialWindowX = fakeWindow.windowedX;
431− var initialWindowY = fakeWindow.requestedY;
435+ var initialWindowY = fakeWindow.windowedY;
432 var initialWindowWidth = fakeWindow.width
436 var initialWindowWidth = fakeWindow.width
433 var initialWindowHeight = fakeWindow.height
437 var initialWindowHeight = fakeWindow.height
434
438
@@ -458,12 +462,12 @@ Item {
458 Tests that when dragging a window border you cannot make it bigger than its maximum size
462 Tests that when dragging a window border you cannot make it bigger than its maximum size
459 */
463 */
460 function test_maximumSize() {
464 function test_maximumSize() {
461− fakeWindow.requestedX = units.gu(1);
465+ fakeWindow.windowedX = units.gu(1);
462− fakeWindow.requestedY = units.gu(1);
466+ fakeWindow.windowedY = units.gu(1);
463 fakeWindow.resizeAreaMinWidth = 1; // so it does not interfere with anything
467 fakeWindow.resizeAreaMinWidth = 1; // so it does not interfere with anything
464 fakeWindow.resizeAreaMinHeight = 1; // so it does not interfere with anything
468 fakeWindow.resizeAreaMinHeight = 1; // so it does not interfere with anything
465− fakeWindow.requestedWidth = units.gu(10);
469+ fakeWindow.windowedWidth = units.gu(10);
466− fakeWindow.requestedHeight = units.gu(10);
470+ fakeWindow.windowedHeight = units.gu(10);
467
471
468 fakeWindow.maximumWidth = units.gu(20);
472 fakeWindow.maximumWidth = units.gu(20);
469 fakeWindow.maximumHeight = units.gu(20);
473 fakeWindow.maximumHeight = units.gu(20);
@@ -488,12 +492,12 @@ Item {
488 Tests that when dragging a window border you cannot make it smaller than its minimum size
492 Tests that when dragging a window border you cannot make it smaller than its minimum size
489 */
493 */
490 function test_minimumSize() {
494 function test_minimumSize() {
491− fakeWindow.requestedX = units.gu(1);
495+ fakeWindow.windowedX = units.gu(1);
492− fakeWindow.requestedY = units.gu(1);
496+ fakeWindow.windowedY = units.gu(1);
493 fakeWindow.resizeAreaMinWidth = 1; // so it does not interfere with anything
497 fakeWindow.resizeAreaMinWidth = 1; // so it does not interfere with anything
494 fakeWindow.resizeAreaMinHeight = 1; // so it does not interfere with anything
498 fakeWindow.resizeAreaMinHeight = 1; // so it does not interfere with anything
495− fakeWindow.requestedWidth = units.gu(20);
499+ fakeWindow.windowedWidth = units.gu(20);
496− fakeWindow.requestedHeight = units.gu(20);
500+ fakeWindow.windowedHeight = units.gu(20);
497
501
498 fakeWindow.minimumWidth = units.gu(10);
502 fakeWindow.minimumWidth = units.gu(10);
499 fakeWindow.minimumHeight = units.gu(10);
503 fakeWindow.minimumHeight = units.gu(10);
tests/qmltests/tst_OrientedShell.qml+38−198
@@ -29,7 +29,8 @@ import Utils 0.1
29
29
30import "../../qml"
30import "../../qml"
31import "../../qml/Components"
31import "../../qml/Components"
32−import "Stages"
32+import "../../qml/Components/PanelState"
33+import "Stage"
33
34
34Rectangle {
35Rectangle {
35 id: root
36 id: root
@@ -443,7 +444,7 @@ Rectangle {
443 SignalSpy { id: signalSpy2 }
444 SignalSpy { id: signalSpy2 }
444
445
445 Connections {
446 Connections {
446− id: spreadRepeaterConnections
447+ id: appRepeaterConnections
447 ignoreUnknownSignals : true
448 ignoreUnknownSignals : true
448 property var itemAddedCallback: null
449 property var itemAddedCallback: null
449 onItemAdded: {
450 onItemAdded: {
@@ -483,8 +484,8 @@ Rectangle {
483 while (keyboardsModel.count > 0)
484 while (keyboardsModel.count > 0)
484 MockInputDeviceBackend.removeDevice("/kbd" + (keyboardsModel.count - 1))
485 MockInputDeviceBackend.removeDevice("/kbd" + (keyboardsModel.count - 1))
485
486
486− spreadRepeaterConnections.target = null;
487+ appRepeaterConnections.target = null;
487− spreadRepeaterConnections.itemAddedCallback = null;
488+ appRepeaterConnections.itemAddedCallback = null;
488 signalSpy.target = null;
489 signalSpy.target = null;
489 signalSpy.signalName = "";
490 signalSpy.signalName = "";
490
491
@@ -511,7 +512,7 @@ Rectangle {
511
512
512 var primaryAppWindow = findAppWindowForSurfaceId(primarySurfaceId);
513 var primaryAppWindow = findAppWindowForSurfaceId(primarySurfaceId);
513 verify(primaryAppWindow)
514 verify(primaryAppWindow)
514− var primaryDelegate = findChild(shell, "spreadDelegate_" + primarySurfaceId);
515+ var primaryDelegate = findChild(shell, "appDelegate_" + primarySurfaceId);
515
516
516 compare(primaryDelegate.focus, true);
517 compare(primaryDelegate.focus, true);
517 compare(primaryApp.rotatesWindowContents, false);
518 compare(primaryApp.rotatesWindowContents, false);
@@ -559,7 +560,7 @@ Rectangle {
559 compare(ApplicationManager.focusedApplicationId, "primary-oriented-app");
560 compare(ApplicationManager.focusedApplicationId, "primary-oriented-app");
560 compare(primaryApp.rotatesWindowContents, false);
561 compare(primaryApp.rotatesWindowContents, false);
561 compare(primaryApp.supportedOrientations, Qt.PrimaryOrientation);
562 compare(primaryApp.supportedOrientations, Qt.PrimaryOrientation);
562− var primaryDelegate = findChild(shell, "spreadDelegate_" + primarySurfaceId);
563+ var primaryDelegate = findChild(shell, "appDelegate_" + primarySurfaceId);
563 compare(primaryDelegate.stage, ApplicationInfoInterface.MainStage);
564 compare(primaryDelegate.stage, ApplicationInfoInterface.MainStage);
564
565
565 tryCompareFunction(function(){return primaryApp.surfaceList.count > 0;}, true);
566 tryCompareFunction(function(){return primaryApp.surfaceList.count > 0;}, true);
@@ -736,7 +737,7 @@ Rectangle {
736 compare(musicApp.supportedOrientations, Qt.PortraitOrientation | Qt.LandscapeOrientation
737 compare(musicApp.supportedOrientations, Qt.PortraitOrientation | Qt.LandscapeOrientation
737 | Qt.InvertedPortraitOrientation | Qt.InvertedLandscapeOrientation);
738 | Qt.InvertedPortraitOrientation | Qt.InvertedLandscapeOrientation);
738 if (data.deviceName === "manta" || data.deviceName === "flo") {
739 if (data.deviceName === "manta" || data.deviceName === "flo") {
739− var musicDelegate = findChild(shell, "spreadDelegate_" + musicSurfaceId);
740+ var musicDelegate = findChild(shell, "appDelegate_" + musicSurfaceId);
740 compare(musicDelegate.stage, ApplicationInfoInterface.MainStage);
741 compare(musicDelegate.stage, ApplicationInfoInterface.MainStage);
741 }
742 }
742
743
@@ -873,9 +874,9 @@ Rectangle {
873 var greeter = findChild(shell, "greeter");
874 var greeter = findChild(shell, "greeter");
874 tryCompare(greeter, "animating", false);
875 tryCompare(greeter, "animating", false);
875
876
876− var twitterDelegate = findChild(shell, "spreadDelegate_" + topLevelSurfaceList.idAt(1));
877+ var twitterDelegate = findChild(shell, "appDelegate_" + topLevelSurfaceList.idAt(1));
877 compare(twitterDelegate.application.appId, "twitter-webapp");
878 compare(twitterDelegate.application.appId, "twitter-webapp");
878− twitterDelegate.clicked();
879+ tap(twitterDelegate, 1, 1);
879
880
880 // now it should finally follow the physical orientation
881 // now it should finally follow the physical orientation
881 tryCompare(shell, "transformRotationAngle", 90);
882 tryCompare(shell, "transformRotationAngle", 90);
@@ -894,24 +895,10 @@ Rectangle {
894 WindowStateStorage.saveStage("twitter-webapp", ApplicationInfoInterface.SideStage)
895 WindowStateStorage.saveStage("twitter-webapp", ApplicationInfoInterface.SideStage)
895 loadShell(data.deviceName);
896 loadShell(data.deviceName);
896
897
897− var twitterDelegate = null;
898−
899− verify(spreadRepeaterConnections.target);
900− spreadRepeaterConnections.itemAddedCallback = function(item) {
901− verify(item.application.appId, "twitter-webapp");
902− twitterDelegate = item;
903− signalSpy.target = findInvisibleChild(item, "orientationChangeAnimation");
904− verify(signalSpy.valid);
905− }
906−
907− signalSpy.clear();
908− signalSpy.target = null;
909− signalSpy.signalName = "runningChanged";
910−
911 var twitterSurfaceId = topLevelSurfaceList.nextId;
898 var twitterSurfaceId = topLevelSurfaceList.nextId;
912 var twitterApp = ApplicationManager.startApplication("twitter-webapp");
899 var twitterApp = ApplicationManager.startApplication("twitter-webapp");
913 verify(twitterApp);
900 verify(twitterApp);
914− var twitterDelegate = findChild(shell, "spreadDelegate_" + twitterSurfaceId);
901+ var twitterDelegate = findChild(shell, "appDelegate_" + twitterSurfaceId);
915 compare(twitterDelegate.stage, ApplicationInfoInterface.SideStage);
902 compare(twitterDelegate.stage, ApplicationInfoInterface.SideStage);
916
903
917 // ensure the mock twitter-webapp is as we expect
904 // ensure the mock twitter-webapp is as we expect
@@ -919,15 +906,11 @@ Rectangle {
919 compare(twitterApp.supportedOrientations, Qt.PortraitOrientation | Qt.LandscapeOrientation
906 compare(twitterApp.supportedOrientations, Qt.PortraitOrientation | Qt.LandscapeOrientation
920 | Qt.InvertedPortraitOrientation | Qt.InvertedLandscapeOrientation);
907 | Qt.InvertedPortraitOrientation | Qt.InvertedLandscapeOrientation);
921
908
922− // Wait until spreadRepeaterConnections hs caught the new SpreadDelegate and
923− // set up the signalSpy target accordingly.
924− tryCompareFunction(function(){ return signalSpy.target != null && signalSpy.valid; }, true);
925−
926 tryCompare(twitterDelegate, "orientationChangesEnabled", true);
909 tryCompare(twitterDelegate, "orientationChangesEnabled", true);
927
910
928− var appWindowWithShadow = findChild(twitterDelegate, "appWindowWithShadow");
911+ var decoratedWindow = findChild(twitterDelegate, "decoratedWindow");
929− verify(appWindowWithShadow);
912+ verify(decoratedWindow);
930− tryCompare(appWindowWithShadow, "state", "keepSceneRotation");
913+ tryCompare(decoratedWindow, "counterRotate", false);
931
914
932 // no reason for any rotation animation to have taken place
915 // no reason for any rotation animation to have taken place
933 compare(signalSpy.count, 0);
916 compare(signalSpy.count, 0);
@@ -943,8 +926,8 @@ Rectangle {
943 loadShell(data.deviceName);
926 loadShell(data.deviceName);
944
927
945 var dialerDelegate = null;
928 var dialerDelegate = null;
946− verify(spreadRepeaterConnections.target);
929+ verify(appRepeaterConnections.target);
947− spreadRepeaterConnections.itemAddedCallback = function(item) {
930+ appRepeaterConnections.itemAddedCallback = function(item) {
948 dialerDelegate = item;
931 dialerDelegate = item;
949 verify(item.application.appId, "dialer-app");
932 verify(item.application.appId, "dialer-app");
950 }
933 }
@@ -960,16 +943,12 @@ Rectangle {
960 tryCompareFunction(function(){ return dialerDelegate != null; }, true);
943 tryCompareFunction(function(){ return dialerDelegate != null; }, true);
961 tryCompare(dialerDelegate, "orientationChangesEnabled", true);
944 tryCompare(dialerDelegate, "orientationChangesEnabled", true);
962
945
963− var appWindowWithShadow = findChild(dialerDelegate, "appWindowWithShadow");
946+ var decoratedWindow = findChild(dialerDelegate, "decoratedWindow");
964− verify(appWindowWithShadow);
947+ verify(decoratedWindow);
965− tryCompare(appWindowWithShadow, "state", "keepSceneRotation");
948+ tryCompare(decoratedWindow, "counterRotate", false);
966
949
967 // app must have portrait aspect ratio
950 // app must have portrait aspect ratio
968− verify(appWindowWithShadow.width < appWindowWithShadow.height);
951+ verify(decoratedWindow.width < decoratedWindow.height);
969−
970− compare(appWindowWithShadow.rotation, 0);
971−
972− verifyAppWindowWithinSpreadDelegateBoundaries(dialerDelegate);
973
952
974 // shell should remain in its primery orientation as the app in the main stage
953 // shell should remain in its primery orientation as the app in the main stage
975 // is the one that dictates its orientation. In this case it's unity8-dash
954 // is the one that dictates its orientation. In this case it's unity8-dash
@@ -977,83 +956,6 @@ Rectangle {
977 compare(shell.orientation, orientedShell.orientations.primary);
956 compare(shell.orientation, orientedShell.orientations.primary);
978 }
957 }
979
958
980− function test_sideStageAppsRemainPortraitInSpread_data() {
981− return [
982− {tag: "manta", deviceName: "manta"},
983− {tag: "flo", deviceName: "flo"}
984− ];
985− }
986− function test_sideStageAppsRemainPortraitInSpread(data) {
987− loadShell(data.deviceName);
988−
989−
990− ////
991− // Launch dialer
992− var dialerDelegate = null;
993− verify(spreadRepeaterConnections.target);
994− spreadRepeaterConnections.itemAddedCallback = function(item) {
995− dialerDelegate = item;
996− verify(item.application.appId, "dialer-app");
997− }
998−
999− WindowStateStorage.saveStage("dialer-app", ApplicationInfoInterface.SideStage)
1000− var dialerApp = ApplicationManager.startApplication("dialer-app");
1001− verify(dialerApp);
1002−
1003− // ensure the mock dialer-app is as we expect
1004− compare(dialerApp.rotatesWindowContents, false);
1005− compare(dialerApp.supportedOrientations, Qt.PortraitOrientation | Qt.InvertedPortraitOrientation);
1006−
1007− tryCompareFunction(function(){ return dialerDelegate != null; }, true);
1008− waitUntilAppDelegateIsFullyInit(dialerDelegate);
1009−
1010−
1011− ////
1012− // Launch twitter
1013− var twitterDelegate = null;
1014− spreadRepeaterConnections.itemAddedCallback = function(item) {
1015− twitterDelegate = item;
1016− verify(item.application.appId, "twitter-webapp");
1017− }
1018−
1019− var twitterApp = ApplicationManager.startApplication("twitter-webapp");
1020− verify(twitterApp);
1021− twitterApp.stage = ApplicationInfoInterface.SideStage;
1022−
1023− // ensure the mock twitter-webapp is as we expect
1024− compare(twitterApp.rotatesWindowContents, false);
1025− compare(twitterApp.supportedOrientations, Qt.PortraitOrientation | Qt.LandscapeOrientation
1026− | Qt.InvertedPortraitOrientation | Qt.InvertedLandscapeOrientation);
1027−
1028− tryCompareFunction(function(){ return twitterDelegate != null; }, true);
1029− waitUntilAppDelegateIsFullyInit(twitterDelegate);
1030−
1031− ////
1032− // Edge swipe to show spread and check orientations
1033−
1034− performEdgeSwipeToShowAppSpread();
1035−
1036− {
1037− var appWindowWithShadow = findChild(dialerDelegate, "appWindowWithShadow");
1038− verify(appWindowWithShadow);
1039− tryCompare(appWindowWithShadow, "state", "keepSceneRotation");
1040− compare(appWindowWithShadow.width, dialerDelegate.width);
1041− compare(appWindowWithShadow.height, dialerDelegate.height);
1042− compare(appWindowWithShadow.rotation, 0);
1043− }
1044− {
1045− var appWindowWithShadow = findChild(twitterDelegate, "appWindowWithShadow");
1046− verify(appWindowWithShadow);
1047− tryCompare(appWindowWithShadow, "state", "keepSceneRotation");
1048− compare(appWindowWithShadow.width, twitterDelegate.width);
1049− compare(appWindowWithShadow.height, twitterDelegate.height);
1050− compare(appWindowWithShadow.rotation, 0);
1051− }
1052−
1053− verifyAppWindowWithinSpreadDelegateBoundaries(dialerDelegate);
1054− verifyAppWindowWithinSpreadDelegateBoundaries(twitterDelegate);
1055− }
1056−
1057 function test_launchedAppHasActiveFocus_data() {
959 function test_launchedAppHasActiveFocus_data() {
1058 return [
960 return [
1059 {tag: "mako", deviceName: "mako"},
961 {tag: "mako", deviceName: "mako"},
@@ -1449,11 +1351,10 @@ Rectangle {
1449 function waitUntilAppDelegateIsFullyInit(spreadDelegate) {
1351 function waitUntilAppDelegateIsFullyInit(spreadDelegate) {
1450 tryCompare(spreadDelegate, "orientationChangesEnabled", true);
1352 tryCompare(spreadDelegate, "orientationChangesEnabled", true);
1451
1353
1452− var appWindowWithShadow = findChild(spreadDelegate, "appWindowWithShadow");
1354+ var decoratedWindow = findChild(spreadDelegate, "decoratedWindow");
1453− verify(appWindowWithShadow);
1355+ tryCompare(decoratedWindow, "counterRotate", false);
1454− tryCompare(appWindowWithShadow, "state", "keepSceneRotation");
1455
1356
1456− var appWindowStates = findInvisibleChild(appWindowWithShadow, "applicationWindowStateGroup");
1357+ var appWindowStates = findInvisibleChild(decoratedWindow, "applicationWindowStateGroup");
1457 verify(appWindowStates);
1358 verify(appWindowStates);
1458 tryCompare(appWindowStates, "state", "surface");
1359 tryCompare(appWindowStates, "state", "surface");
1459 }
1360 }
@@ -1491,8 +1392,7 @@ Rectangle {
1491 }
1392 }
1492
1393
1493 function performLeftEdgeSwipeToSwitchToDash() {
1394 function performLeftEdgeSwipeToSwitchToDash() {
1494− var spreadView = findChild(shell, "spreadView");
1495− var swipeLength = spreadView.width * 0.7;
1395+ var swipeLength = shell.width * 0.7;
1496
1396
1497 var touchStartX = 1;
1397 var touchStartX = 1;
1498 var touchStartY = shell.height / 2;
1398 var touchStartY = shell.height / 2;
@@ -1507,35 +1407,13 @@ Rectangle {
1507 // swipe just enough to ensure an app switch action.
1407 // swipe just enough to ensure an app switch action.
1508 // If we swipe too much we will trigger the spread mode
1408 // If we swipe too much we will trigger the spread mode
1509 // and we don't want that.
1409 // and we don't want that.
1510− var spreadView = findChild(shell, "spreadView");
1511− verify(spreadView);
1512−
1513 verify(topLevelSurfaceList.count >= 2);
1410 verify(topLevelSurfaceList.count >= 2);
1514 var previousSurfaceId = topLevelSurfaceList.idAt(1);
1411 var previousSurfaceId = topLevelSurfaceList.idAt(1);
1515
1412
1516 var touchStartX = shell.width - 1;
1413 var touchStartX = shell.width - 1;
1517 var touchStartY = shell.height / 2;
1414 var touchStartY = shell.height / 2;
1518
1415
1519− var condition;
1520− if (applicationArguments.deviceName === "phone") {
1521− condition = function() {
1522− return spreadView.shiftedContentX > units.gu(2) &&
1523− spreadView.shiftedContentX < spreadView.positionMarker1 * spreadView.width;
1524− };
1525− } else {
1526− condition = function() {
1527− return spreadView.shiftedContentX > spreadView.width * spreadView.positionMarker1
1528− && spreadView.shiftedContentX < spreadView.width * spreadView.positionMarker2;
1529− };
1530− }
1531−
1532− touchDragUntil(shell,
1533− touchStartX, touchStartY,
1416+ touchFlick(shell, touchStartX, touchStartY, touchStartX - units.gu(8), touchStartY, units.gu(4), 10);
1534− -units.gu(1), 0,
1535− condition);
1536−
1537− // ensure the app switch animation has ended
1538− tryCompare(spreadView, "shiftedContentX", 0);
1539
1417
1540 tryCompareFunction(function(){ return topLevelSurfaceList.idAt(0); }, previousSurfaceId);
1418 tryCompareFunction(function(){ return topLevelSurfaceList.idAt(0); }, previousSurfaceId);
1541 }
1419 }
@@ -1546,11 +1424,9 @@ Rectangle {
1546 shell.width - 1, touchStartY,
1424 shell.width - 1, touchStartY,
1547 0, touchStartY);
1425 0, touchStartY);
1548
1426
1549− var spreadView = findChild(shell, "spreadView");
1427+ var stage = findChild(shell, "stage");
1550− verify(spreadView);
1428+ tryCompare(stage, "state", "spread");
1551− tryCompare(spreadView, "phase", 2);
1429+ waitForRendering(stage);
1552− tryCompare(spreadView, "flicking", false);
1553− tryCompare(spreadView, "moving", false);
1554 }
1430 }
1555
1431
1556 function showPowerDialog() {
1432 function showPowerDialog() {
@@ -1559,19 +1435,6 @@ Rectangle {
1559 dialogsPrivate.showPowerDialog();
1435 dialogsPrivate.showPowerDialog();
1560 }
1436 }
1561
1437
1562− function verifyAppWindowWithinSpreadDelegateBoundaries(spreadDelegate) {
1563− var appWindowWithShadow = findChild(spreadDelegate, "appWindowWithShadow");
1564− verify(appWindowWithShadow);
1565−
1566− var windowInDelegateCoords = appWindowWithShadow.mapToItem(spreadDelegate, 0, 0,
1567− appWindowWithShadow.width, appWindowWithShadow.height);
1568−
1569− compare(windowInDelegateCoords.x, 0);
1570− compare(windowInDelegateCoords.y, 0);
1571− compare(windowInDelegateCoords.width, spreadDelegate.width);
1572− compare(windowInDelegateCoords.height, spreadDelegate.height);
1573− }
1574−
1575 function swipeAwayGreeter() {
1438 function swipeAwayGreeter() {
1576 var greeter = findChild(shell, "greeter");
1439 var greeter = findChild(shell, "greeter");
1577 tryCompare(greeter, "fullyShown", true);
1440 tryCompare(greeter, "fullyShown", true);
@@ -1606,9 +1469,6 @@ Rectangle {
1606 topLevelSurfaceList = findInvisibleChild(shell, "topLevelSurfaceList");
1469 topLevelSurfaceList = findInvisibleChild(shell, "topLevelSurfaceList");
1607 verify(topLevelSurfaceList);
1470 verify(topLevelSurfaceList);
1608
1471
1609− var stageLoader = findChild(shell, "applicationsDisplayLoader");
1610− verify(stageLoader);
1611−
1612 tryCompare(shell, "waitingOnGreeter", false); // reset by greeter when ready
1472 tryCompare(shell, "waitingOnGreeter", false); // reset by greeter when ready
1613
1473
1614 waitUntilShellIsInOrientation(root.physicalOrientation0);
1474 waitUntilShellIsInOrientation(root.physicalOrientation0);
@@ -1617,9 +1477,9 @@ Rectangle {
1617
1477
1618 swipeAwayGreeter();
1478 swipeAwayGreeter();
1619
1479
1620− var spreadRepeater = findChild(stageLoader, "spreadRepeater");
1480+ var appRepeater = findChild(shell, "appRepeater");
1621− if (spreadRepeater) {
1481+ if (appRepeater) {
1622− spreadRepeaterConnections.target = spreadRepeater;
1482+ appRepeaterConnections.target = appRepeater;
1623 }
1483 }
1624 }
1484 }
1625
1485
@@ -1644,15 +1504,6 @@ Rectangle {
1644 return false;
1504 return false;
1645 }
1505 }
1646
1506
1647− var topMargin = 0.;
1648− if (!app.fullscreen) {
1649− var appsDisplayLoader = findChild(shell, "applicationsDisplayLoader");
1650− verify(appsDisplayLoader);
1651− verify(appsDisplayLoader.item);
1652− verify(appsDisplayLoader.item.maximizedAppTopMargin !== undefined);
1653− topMargin = appsDisplayLoader.item.maximizedAppTopMargin;
1654− }
1655−
1656 var surfaceItem = findSurfaceItem(item, surface);
1507 var surfaceItem = findSurfaceItem(item, surface);
1657 if (!surfaceItem) {
1508 if (!surfaceItem) {
1658 console.warn("no surfaceItem rendering app surface");
1509 console.warn("no surfaceItem rendering app surface");
@@ -1660,15 +1511,16 @@ Rectangle {
1660 }
1511 }
1661 var point = surfaceItem.mapToItem(orientedShell, 0, 0);
1512 var point = surfaceItem.mapToItem(orientedShell, 0, 0);
1662
1513
1514+ print("exptectedAngle", expectedAngle, point.x, point.y)
1663 switch (expectedAngle) {
1515 switch (expectedAngle) {
1664 case 0:
1516 case 0:
1665− return point.x === 0. && point.y === topMargin;
1517+ return point.x === 0 && point.y === PanelState.panelHeight;
1666 case 90:
1518 case 90:
1667− return point.x === orientedShell.width - topMargin && point.y === 0;
1519+ return point.x === orientedShell.width - PanelState.panelHeight && point.y === 0;
1668 case 180:
1520 case 180:
1669− return point.x === orientedShell.width && point.y === orientedShell.height - topMargin;
1521+ return point.x === orientedShell.width && point.y === orientedShell.height - PanelState.panelHeight;
1670 default: // 270
1522 default: // 270
1671− return point.x === topMargin && point.y === orientedShell.height;
1523+ return point.x === PanelState.panelHeight && point.y === orientedShell.height;
1672 }
1524 }
1673 }
1525 }
1674
1526
@@ -1690,24 +1542,12 @@ Rectangle {
1690 }
1542 }
1691
1543
1692 function swipeToCloseCurrentAppInSpread() {
1544 function swipeToCloseCurrentAppInSpread() {
1693− var spreadView = findChild(shell, "spreadView");
1694− verify(spreadView);
1695−
1696− var delegateToClose = findChild(spreadView, "spreadDelegate_" + topLevelSurfaceList.idAt(0));
1545+ var delegateToClose = findChild(shell, "appDelegate_" + topLevelSurfaceList.idAt(0));
1697 verify(delegateToClose);
1546 verify(delegateToClose);
1698
1547
1699− var appIdToClose = ApplicationManager.get(0).appId;;
1548+ var appIdToClose = ApplicationManager.get(0).appId;
1700 var appCountBefore = ApplicationManager.count;
1549 var appCountBefore = ApplicationManager.count;
1701
1550
1702− // ensure the current app is widely visible by swiping to the right,
1703− // which will move the app windows accordingly
1704− touchFlick(shell,
1705− shell.width * 0.25, shell.width / 2,
1706− shell.width, shell.width / 2);
1707−
1708− tryCompare(spreadView, "flicking", false);
1709− tryCompare(spreadView, "moving", false);
1710−
1711 // Swipe up close to its left edge, as it is the only area of it guaranteed to be exposed
1551 // Swipe up close to its left edge, as it is the only area of it guaranteed to be exposed
1712 // in the spread. Eg: its center could be covered by some other delegate.
1552 // in the spread. Eg: its center could be covered by some other delegate.
1713 touchFlick(delegateToClose,
1553 touchFlick(delegateToClose,
tests/qmltests/tst_Shell.qml+210−163

This diff is too big to show here.

tests/qmltests/tst_ShellWithPin.qml+9−11

This diff is too big to show here.