on xenial help sign in
Merge from trunk
7235aa8Michael Terry
debian/changelog+34
@@ -1,3 +1,37 @@
1+unity8 (8.00+14.10.20140729-0ubuntu1) utopic; urgency=medium
2+
3+ [ Gerry Boland ]
4+ [ Daniel d'Andrada ]
5+ * Re-architecture unity8 to use the QtMirCompositor library so that
6+ the Qt scenegraph renderer is used as the Mir compositor, and
7+ application surfaces are added to the QML scene as items.
8+
9+ [ Michael Zanetti ]
10+ * Port phone right-edge spread code to use QtCompositor
11+ * Add right-edge spread animation for tablet
12+
13+ [ Ubuntu daily release ]
14+ * New rebuild forced
15+
16+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Tue, 29 Jul 2014 15:07:32 +0000
17+
18+unity8 (7.90+14.10.20140725-0ubuntu1) utopic; urgency=low
19+
20+ [ CI bot ]
21+ * Resync trunk
22+
23+ [ Michał Sawicz ]
24+ * Fix the ap test for applications.
25+
26+ [ Albert Astals ]
27+ * Use deleteLater instead of a direct delete We are seeing a crash in
28+ QQuickWindowPrivate::polishItems because LVWPH is deleting items to
29+ polish from it's updatePolish which means the set in
30+ QQuickWindowPrivate::polishItems may end up with some yet-to-
31+ process-but-now-deleted items. Switching to deleteLater fixes this
32+
33+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Fri, 25 Jul 2014 10:47:34 +0000
34+
1unity8 (7.90+14.10.20140724.1-0ubuntu1) utopic; urgency=low
35unity8 (7.90+14.10.20140724.1-0ubuntu1) utopic; urgency=low
2
36
3 [ Michael Zanetti ]
37 [ Michael Zanetti ]
debian/control+1−2
@@ -25,7 +25,6 @@ Build-Depends: cmake,
25 libqmenumodel-dev (>= 0.2.8),
25 libqmenumodel-dev (>= 0.2.8),
26 libqt5xmlpatterns5-dev,
26 libqt5xmlpatterns5-dev,
27 libunity-api-dev (>= 7.85),
27 libunity-api-dev (>= 7.85),
28− libunity-mir-dev,
29 libusermetricsoutput1-dev,
28 libusermetricsoutput1-dev,
30 libxcb1-dev,
29 libxcb1-dev,
31 pkg-config,
30 pkg-config,
@@ -81,10 +80,10 @@ Provides: indicator-renderer,
81Depends: gsettings-desktop-schemas,
80Depends: gsettings-desktop-schemas,
82 libcap2-bin,
81 libcap2-bin,
83 libglib2.0-bin,
82 libglib2.0-bin,
84− libunity-mir1 (>= 0.4),
85 qmenumodel-qml (>= 0.2.8),
83 qmenumodel-qml (>= 0.2.8),
86 qml-module-qtquick-xmllistmodel,
84 qml-module-qtquick-xmllistmodel,
87 qtdeclarative5-gsettings1.0,
85 qtdeclarative5-gsettings1.0,
86+ qtdeclarative5-qtmir-plugin (>= 0.4),
88 qtdeclarative5-ubuntu-settings-components (>= 0.3),
87 qtdeclarative5-ubuntu-settings-components (>= 0.3),
89 qtdeclarative5-ubuntu-telephony0.1,
88 qtdeclarative5-ubuntu-telephony0.1,
90 unity-launcher-impl-3,
89 unity-launcher-impl-3,
plugins/Dash/listviewwithpageheader.cpp+1−1
@@ -656,7 +656,7 @@ void ListViewWithPageHeader::reallyReleaseItem(ListItem *listItem)
656 if (flags & QQmlDelegateModel::Destroyed) {
656 if (flags & QQmlDelegateModel::Destroyed) {
657 item->setParentItem(nullptr);
657 item->setParentItem(nullptr);
658 }
658 }
659− delete listItem->sectionItem();
659+ listItem->sectionItem()->deleteLater();
660 delete listItem;
660 delete listItem;
661}
661}
662
662
plugins/Utils/CMakeLists.txt+1
@@ -15,6 +15,7 @@ set(QMLPLUGIN_SRC
15 qsortfilterproxymodelqml.cpp
15 qsortfilterproxymodelqml.cpp
16 timeformatter.cpp
16 timeformatter.cpp
17 unitymenumodelpaths.cpp
17 unitymenumodelpaths.cpp
18+ windowkeysfilter.cpp
18 easingcurve.cpp
19 easingcurve.cpp
19 plugin.cpp
20 plugin.cpp
20 )
21 )
plugins/Utils/easingcurve.cpp+5−1
@@ -34,7 +34,11 @@ QEasingCurve::Type EasingCurve::type() const
34
34
35void EasingCurve::setType(const QEasingCurve::Type &type)
35void EasingCurve::setType(const QEasingCurve::Type &type)
36{
36{
37+ // FIXME: Working around bug https://bugreports.qt-project.org/browse/QTBUG-38686 here
38+ QEasingCurve newCurve;
37− m_easingCurve.setType(type);
39+ newCurve.setType(type);
40+ newCurve.setPeriod(m_easingCurve.period());
41+ m_easingCurve = newCurve;
38 Q_EMIT typeChanged();
42 Q_EMIT typeChanged();
39}
43}
40
44
plugins/Utils/plugin.cpp+2
@@ -30,6 +30,7 @@
30#include "qsortfilterproxymodelqml.h"
30#include "qsortfilterproxymodelqml.h"
31#include "timeformatter.h"
31#include "timeformatter.h"
32#include "unitymenumodelpaths.h"
32#include "unitymenumodelpaths.h"
33+#include "windowkeysfilter.h"
33#include "easingcurve.h"
34#include "easingcurve.h"
34
35
35void UtilsPlugin::registerTypes(const char *uri)
36void UtilsPlugin::registerTypes(const char *uri)
@@ -40,6 +41,7 @@ void UtilsPlugin::registerTypes(const char *uri)
40 qmlRegisterType<QSortFilterProxyModelQML>(uri, 0, 1, "SortFilterProxyModel");
41 qmlRegisterType<QSortFilterProxyModelQML>(uri, 0, 1, "SortFilterProxyModel");
41 qmlRegisterType<UnityMenuModelPaths>(uri, 0, 1, "UnityMenuModelPaths");
42 qmlRegisterType<UnityMenuModelPaths>(uri, 0, 1, "UnityMenuModelPaths");
42 qmlRegisterType<TimeFormatter>(uri, 0, 1, "TimeFormatter");
43 qmlRegisterType<TimeFormatter>(uri, 0, 1, "TimeFormatter");
44+ qmlRegisterType<WindowKeysFilter>(uri, 0, 1, "WindowKeysFilter");
43 qmlRegisterType<GDateTimeFormatter>(uri, 0, 1, "GDateTimeFormatter");
45 qmlRegisterType<GDateTimeFormatter>(uri, 0, 1, "GDateTimeFormatter");
44 qmlRegisterType<EasingCurve>(uri, 0, 1, "EasingCurve");
46 qmlRegisterType<EasingCurve>(uri, 0, 1, "EasingCurve");
45}
47}
plugins/Utils/windowkeysfilter.cppnew file+57
@@ -0,0 +1,57 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ *
16+ * Author: Daniel d'Andrada <daniel.dandrada@canonical.com>
17+ */
18+
19+#include "windowkeysfilter.h"
20+
21+#include <QQuickWindow>
22+
23+WindowKeysFilter::WindowKeysFilter(QQuickItem *parent)
24+ : QQuickItem(parent)
25+{
26+ connect(this, &QQuickItem::windowChanged,
27+ this, &WindowKeysFilter::setupFilterOnWindow);
28+}
29+
30+bool WindowKeysFilter::eventFilter(QObject *watched, QEvent *event)
31+{
32+ Q_ASSERT(!m_filteredWindow.isNull());
33+ Q_ASSERT(watched == static_cast<QObject*>(m_filteredWindow.data()));
34+
35+ if (event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease) {
36+ // Let QML see this event and decide if it does not want it
37+ event->accept();
38+ QCoreApplication::sendEvent(this, event);
39+ return event->isAccepted();
40+ } else {
41+ // Not interested
42+ return false;
43+ }
44+}
45+
46+void WindowKeysFilter::setupFilterOnWindow(QQuickWindow *window)
47+{
48+ if (!m_filteredWindow.isNull()) {
49+ m_filteredWindow->removeEventFilter(this);
50+ m_filteredWindow.clear();
51+ }
52+
53+ if (window) {
54+ window->installEventFilter(this);
55+ m_filteredWindow = window;
56+ }
57+}
plugins/Utils/windowkeysfilter.hnew file+51
@@ -0,0 +1,51 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ *
16+ * Author: Daniel d'Andrada <daniel.dandrada@canonical.com>
17+ */
18+
19+#ifndef UNITY_WINDOWKEYSFILTER_H
20+#define UNITY_WINDOWKEYSFILTER_H
21+
22+#include <QQuickItem>
23+#include <QPointer>
24+
25+/*
26+ Receives all key events that arrive in the QQuickWindow where this item is placed.
27+
28+ Rejected key events will be allowed to be processed normally by the QQuickWindow whereas
29+ accepted ones will be filtered out. Events are accepted by default, so make sure you reject
30+ the keys you're not interested in.
31+
32+ If more than one WindowKeysFilter exist in the same QML scene (and thus in the same QQuickWindow)
33+ they will be called in the order of creation, which can be tricky to assess. So the best practice
34+ is to have at most one WindowKeysFilter per QML scene.
35+ */
36+class WindowKeysFilter : public QQuickItem
37+{
38+ Q_OBJECT
39+public:
40+ WindowKeysFilter(QQuickItem *parent = 0);
41+
42+ bool eventFilter(QObject *watched, QEvent *event);
43+
44+private Q_SLOTS:
45+ void setupFilterOnWindow(QQuickWindow *window);
46+
47+private:
48+ QPointer<QQuickWindow> m_filteredWindow;
49+};
50+
51+#endif // UNITY_WINDOWKEYSFILTER_H
po/am.po+23−15
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11−"PO-Revision-Date: 2014-07-20 18:16+0000\n"
11+"PO-Revision-Date: 2014-07-27 01:25+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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-21 07:05+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-28 06:44+0000\n"
18−"X-Generator: Launchpad (build 17114)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -28,7 +28,7 @@ msgstr "አቋራጭ መለያያ"
28
28
29#: qml/Components/EdgeDemoOverlay.qml:151
29#: qml/Components/EdgeDemoOverlay.qml:151
30msgid "Skip intro"
30msgid "Skip intro"
31−msgstr ""
31+msgstr "መግቢያውን መዝለያ"
32
32
33#: qml/Components/EdgeDemo.qml:113
33#: qml/Components/EdgeDemo.qml:113
34msgid "Right edge"
34msgid "Right edge"
@@ -80,10 +80,6 @@ msgstr "የ ድንገተኛ ጥሪ"
80msgid "OK"
80msgid "OK"
81msgstr "እሺ"
81msgstr "እሺ"
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr "በቅርብ የፈለጉዋቸው"
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr "ጨርሷል"
105msgid "See more"
101msgid "See more"
106msgstr "ተጨማሪ መመልከቻ"
102msgstr "ተጨማሪ መመልከቻ"
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr "አነስተኛ መመልከቻ"
106msgstr "አነስተኛ መመልከቻ"
111
107
@@ -113,6 +109,10 @@ msgstr "አነስተኛ መመልከቻ"
113msgid "Recent"
109msgid "Recent"
114msgstr "የቅርብ ጊዜ"
110msgstr "የቅርብ ጊዜ"
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr "ሁሉንም መመልከቻ"
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr "ተጨማሪ..."
118msgstr "ተጨማሪ..."
@@ -121,15 +121,15 @@ msgstr "ተጨማሪ..."
121msgid "Less..."
121msgid "Less..."
122msgstr "አነስተኛ..."
122msgstr "አነስተኛ..."
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr ""
126msgstr ""
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130−msgstr ""
130+msgstr "ግምገማ መጨመሪያ"
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr "መላኪያ"
134msgstr "መላኪያ"
135
135
@@ -165,9 +165,17 @@ msgstr "የመግቢያ ቃል ማሳያ"
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr ""
166msgstr ""
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr ""
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr "ስብሰባ"
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170−msgstr ""
178+msgstr "ወረፋ በመጠበቅ ላይ…"
171
179
172#: qml/Panel/Indicators/MenuItemFactory.qml:587
180#: qml/Panel/Indicators/MenuItemFactory.qml:587
173msgid "Downloading"
181msgid "Downloading"
po/ar.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11"PO-Revision-Date: 2014-05-22 08:22+0000\n"
11"PO-Revision-Date: 2014-05-22 08:22+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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:16+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -83,10 +83,6 @@ msgstr "مكالمة طوارئ"
83msgid "OK"
83msgid "OK"
84msgstr ""
84msgstr ""
85
85
86−#: qml/Components/PageHeader.qml:366
87−msgid "Recent searches"
88−msgstr "عمليات البحث الأخيرة"
89−
90#: qml/Components/PassphraseLockscreen.qml:60
86#: qml/Components/PassphraseLockscreen.qml:60
91#, qt-format
87#, qt-format
92msgid "Hello %1"
88msgid "Hello %1"
@@ -108,7 +104,7 @@ msgstr ""
108msgid "See more"
104msgid "See more"
109msgstr "شاهد المزيد"
105msgstr "شاهد المزيد"
110
106
111−#: qml/Components/SeeMore.qml:58
107+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
112msgid "See less"
108msgid "See less"
113msgstr "شاهد أقل"
109msgstr "شاهد أقل"
114
110
@@ -116,6 +112,10 @@ msgstr "شاهد أقل"
116msgid "Recent"
112msgid "Recent"
117msgstr "استُخدمت مؤخرًا"
113msgstr "استُخدمت مؤخرًا"
118
114
115+#: qml/Dash/GenericScopeView.qml:330
116+msgid "See all"
117+msgstr ""
118+
119#: qml/Dash/Previews/PreviewActionCombo.qml:34
119#: qml/Dash/Previews/PreviewActionCombo.qml:34
120msgid "More..."
120msgid "More..."
121msgstr "المزيد..."
121msgstr "المزيد..."
@@ -124,15 +124,15 @@ msgstr "المزيد..."
124msgid "Less..."
124msgid "Less..."
125msgstr "أقل..."
125msgstr "أقل..."
126
126
127−#: qml/Dash/Previews/PreviewRatingInput.qml:82
127+#: qml/Dash/Previews/PreviewRatingInput.qml:81
128msgid "Rate this"
128msgid "Rate this"
129msgstr "قيّم ذلك"
129msgstr "قيّم ذلك"
130
130
131−#: qml/Dash/Previews/PreviewRatingInput.qml:128
131+#: qml/Dash/Previews/PreviewRatingInput.qml:126
132msgid "Add a review"
132msgid "Add a review"
133msgstr "أضف تعليق"
133msgstr "أضف تعليق"
134
134
135−#: qml/Dash/Previews/PreviewRatingInput.qml:168
135+#: qml/Dash/Previews/PreviewRatingInput.qml:166
136msgid "Send"
136msgid "Send"
137msgstr "أرسل"
137msgstr "أرسل"
138
138
@@ -168,6 +168,14 @@ msgstr "عرض كلمة السر"
168msgid "Please enter SIM PIN"
168msgid "Please enter SIM PIN"
169msgstr "من فضلك أدخِل رقم التعريف الشخصي لبطاقة SIM"
169msgstr "من فضلك أدخِل رقم التعريف الشخصي لبطاقة SIM"
170
170
171+#: qml/Panel/ActiveCallHint.qml:77
172+msgid "Tap to return to call..."
173+msgstr ""
174+
175+#: qml/Panel/ActiveCallHint.qml:90
176+msgid "Conference"
177+msgstr ""
178+
171#: qml/Panel/Indicators/MenuItemFactory.qml:583
179#: qml/Panel/Indicators/MenuItemFactory.qml:583
172msgid "In queue…"
180msgid "In queue…"
173msgstr ""
181msgstr ""
po/ast.po+20−12
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11−"PO-Revision-Date: 2014-07-15 16:32+0000\n"
11+"PO-Revision-Date: 2014-07-25 16:51+0000\n"
12"Last-Translator: ivarela <ivarela@ubuntu.com>\n"
12"Last-Translator: ivarela <ivarela@ubuntu.com>\n"
13"Language-Team: Asturian <ast@li.org>\n"
13"Language-Team: Asturian <ast@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-16 07:27+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:16+0000\n"
18−"X-Generator: Launchpad (build 17112)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -84,10 +84,6 @@ msgstr "Llamada d'emerxencia"
84msgid "OK"
84msgid "OK"
85msgstr "Aceutar"
85msgstr "Aceutar"
86
86
87−#: qml/Components/PageHeader.qml:366
88−msgid "Recent searches"
89−msgstr "Busques recientes"
90−
91#: qml/Components/PassphraseLockscreen.qml:60
87#: qml/Components/PassphraseLockscreen.qml:60
92#, qt-format
88#, qt-format
93msgid "Hello %1"
89msgid "Hello %1"
@@ -109,7 +105,7 @@ msgstr "FECHO"
109msgid "See more"
105msgid "See more"
110msgstr "Ver más"
106msgstr "Ver más"
111
107
112−#: qml/Components/SeeMore.qml:58
108+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
113msgid "See less"
109msgid "See less"
114msgstr "Ver menos"
110msgstr "Ver menos"
115
111
@@ -117,6 +113,10 @@ msgstr "Ver menos"
117msgid "Recent"
113msgid "Recent"
118msgstr "Reciente"
114msgstr "Reciente"
119
115
116+#: qml/Dash/GenericScopeView.qml:330
117+msgid "See all"
118+msgstr "Ver too"
119+
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
121msgid "More..."
121msgid "More..."
122msgstr "Más…"
122msgstr "Más…"
@@ -125,15 +125,15 @@ msgstr "Más…"
125msgid "Less..."
125msgid "Less..."
126msgstr "Menos…"
126msgstr "Menos…"
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:82
128+#: qml/Dash/Previews/PreviewRatingInput.qml:81
129msgid "Rate this"
129msgid "Rate this"
130msgstr "Valorar esto"
130msgstr "Valorar esto"
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:128
132+#: qml/Dash/Previews/PreviewRatingInput.qml:126
133msgid "Add a review"
133msgid "Add a review"
134msgstr "Amestar una reseña"
134msgstr "Amestar una reseña"
135
135
136−#: qml/Dash/Previews/PreviewRatingInput.qml:168
136+#: qml/Dash/Previews/PreviewRatingInput.qml:166
137msgid "Send"
137msgid "Send"
138msgstr "Unviar"
138msgstr "Unviar"
139
139
@@ -169,6 +169,14 @@ msgstr "Amosar contraseña"
169msgid "Please enter SIM PIN"
169msgid "Please enter SIM PIN"
170msgstr "Escribi'l PIN de la SIM"
170msgstr "Escribi'l PIN de la SIM"
171
171
172+#: qml/Panel/ActiveCallHint.qml:77
173+msgid "Tap to return to call..."
174+msgstr "Tocar pa tornar a la llamada..."
175+
176+#: qml/Panel/ActiveCallHint.qml:90
177+msgid "Conference"
178+msgstr "Conferencia"
179+
172#: qml/Panel/Indicators/MenuItemFactory.qml:583
180#: qml/Panel/Indicators/MenuItemFactory.qml:583
173msgid "In queue…"
181msgid "In queue…"
174msgstr "N'espera…"
182msgstr "N'espera…"
po/az.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11"PO-Revision-Date: 2014-01-15 09:50+0000\n"
11"PO-Revision-Date: 2014-01-15 09:50+0000\n"
12"Last-Translator: Turan Mahmudov <turan.mahmudov@gmail.com>\n"
12"Last-Translator: Turan Mahmudov <turan.mahmudov@gmail.com>\n"
13"Language-Team: Azerbaijani <az@li.org>\n"
13"Language-Team: Azerbaijani <az@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:16+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -81,10 +81,6 @@ msgstr "Zərurət zəngi"
81msgid "OK"
81msgid "OK"
82msgstr ""
82msgstr ""
83
83
84−#: qml/Components/PageHeader.qml:366
85−msgid "Recent searches"
86−msgstr "Son axtarışlar"
87−
88#: qml/Components/PassphraseLockscreen.qml:60
84#: qml/Components/PassphraseLockscreen.qml:60
89#, qt-format
85#, qt-format
90msgid "Hello %1"
86msgid "Hello %1"
@@ -106,7 +102,7 @@ msgstr ""
106msgid "See more"
102msgid "See more"
107msgstr ""
103msgstr ""
108
104
109−#: qml/Components/SeeMore.qml:58
105+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
110msgid "See less"
106msgid "See less"
111msgstr ""
107msgstr ""
112
108
@@ -114,6 +110,10 @@ msgstr ""
114msgid "Recent"
110msgid "Recent"
115msgstr ""
111msgstr ""
116
112
113+#: qml/Dash/GenericScopeView.qml:330
114+msgid "See all"
115+msgstr ""
116+
117#: qml/Dash/Previews/PreviewActionCombo.qml:34
117#: qml/Dash/Previews/PreviewActionCombo.qml:34
118msgid "More..."
118msgid "More..."
119msgstr ""
119msgstr ""
@@ -122,15 +122,15 @@ msgstr ""
122msgid "Less..."
122msgid "Less..."
123msgstr ""
123msgstr ""
124
124
125−#: qml/Dash/Previews/PreviewRatingInput.qml:82
125+#: qml/Dash/Previews/PreviewRatingInput.qml:81
126msgid "Rate this"
126msgid "Rate this"
127msgstr "Qiymət ver"
127msgstr "Qiymət ver"
128
128
129−#: qml/Dash/Previews/PreviewRatingInput.qml:128
129+#: qml/Dash/Previews/PreviewRatingInput.qml:126
130msgid "Add a review"
130msgid "Add a review"
131msgstr "Rəy yaz"
131msgstr "Rəy yaz"
132
132
133−#: qml/Dash/Previews/PreviewRatingInput.qml:168
133+#: qml/Dash/Previews/PreviewRatingInput.qml:166
134msgid "Send"
134msgid "Send"
135msgstr "Göndər"
135msgstr "Göndər"
136
136
@@ -166,6 +166,14 @@ msgstr "Parolu göstər"
166msgid "Please enter SIM PIN"
166msgid "Please enter SIM PIN"
167msgstr ""
167msgstr ""
168
168
169+#: qml/Panel/ActiveCallHint.qml:77
170+msgid "Tap to return to call..."
171+msgstr ""
172+
173+#: qml/Panel/ActiveCallHint.qml:90
174+msgid "Conference"
175+msgstr ""
176+
169#: qml/Panel/Indicators/MenuItemFactory.qml:583
177#: qml/Panel/Indicators/MenuItemFactory.qml:583
170msgid "In queue…"
178msgid "In queue…"
171msgstr ""
179msgstr ""
po/bg.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11"PO-Revision-Date: 2014-04-01 14:08+0000\n"
11"PO-Revision-Date: 2014-04-01 14:08+0000\n"
12"Last-Translator: Atanas Kovachki <Unknown>\n"
12"Last-Translator: Atanas Kovachki <Unknown>\n"
13"Language-Team: Bulgarian <bg@li.org>\n"
13"Language-Team: Bulgarian <bg@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:16+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -87,10 +87,6 @@ msgstr "Спешно повикване"
87msgid "OK"
87msgid "OK"
88msgstr ""
88msgstr ""
89
89
90−#: qml/Components/PageHeader.qml:366
91−msgid "Recent searches"
92−msgstr "Последни търсения"
93−
94#: qml/Components/PassphraseLockscreen.qml:60
90#: qml/Components/PassphraseLockscreen.qml:60
95#, qt-format
91#, qt-format
96msgid "Hello %1"
92msgid "Hello %1"
@@ -112,7 +108,7 @@ msgstr ""
112msgid "See more"
108msgid "See more"
113msgstr ""
109msgstr ""
114
110
115−#: qml/Components/SeeMore.qml:58
111+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
116msgid "See less"
112msgid "See less"
117msgstr ""
113msgstr ""
118
114
@@ -120,6 +116,10 @@ msgstr ""
120msgid "Recent"
116msgid "Recent"
121msgstr "Последни"
117msgstr "Последни"
122
118
119+#: qml/Dash/GenericScopeView.qml:330
120+msgid "See all"
121+msgstr ""
122+
123#: qml/Dash/Previews/PreviewActionCombo.qml:34
123#: qml/Dash/Previews/PreviewActionCombo.qml:34
124msgid "More..."
124msgid "More..."
125msgstr ""
125msgstr ""
@@ -128,15 +128,15 @@ msgstr ""
128msgid "Less..."
128msgid "Less..."
129msgstr "По-малко..."
129msgstr "По-малко..."
130
130
131−#: qml/Dash/Previews/PreviewRatingInput.qml:82
131+#: qml/Dash/Previews/PreviewRatingInput.qml:81
132msgid "Rate this"
132msgid "Rate this"
133msgstr "Оценете това"
133msgstr "Оценете това"
134
134
135−#: qml/Dash/Previews/PreviewRatingInput.qml:128
135+#: qml/Dash/Previews/PreviewRatingInput.qml:126
136msgid "Add a review"
136msgid "Add a review"
137msgstr "Добави отзив"
137msgstr "Добави отзив"
138
138
139−#: qml/Dash/Previews/PreviewRatingInput.qml:168
139+#: qml/Dash/Previews/PreviewRatingInput.qml:166
140msgid "Send"
140msgid "Send"
141msgstr "Изпрати"
141msgstr "Изпрати"
142
142
@@ -172,6 +172,14 @@ msgstr "Покажи паролата"
172msgid "Please enter SIM PIN"
172msgid "Please enter SIM PIN"
173msgstr ""
173msgstr ""
174
174
175+#: qml/Panel/ActiveCallHint.qml:77
176+msgid "Tap to return to call..."
177+msgstr ""
178+
179+#: qml/Panel/ActiveCallHint.qml:90
180+msgid "Conference"
181+msgstr ""
182+
175#: qml/Panel/Indicators/MenuItemFactory.qml:583
183#: qml/Panel/Indicators/MenuItemFactory.qml:583
176msgid "In queue…"
184msgid "In queue…"
177msgstr ""
185msgstr ""
po/br.po+20−12
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11−"PO-Revision-Date: 2014-07-15 06:44+0000\n"
11+"PO-Revision-Date: 2014-07-28 06:44+0000\n"
12"Last-Translator: Fohanno Thierry <thierry.fohanno@ofis-bzh.org>\n"
12"Last-Translator: Fohanno Thierry <thierry.fohanno@ofis-bzh.org>\n"
13"Language-Team: Breton <br@li.org>\n"
13"Language-Team: Breton <br@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-16 07:27+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-29 06:54+0000\n"
18−"X-Generator: Launchpad (build 17112)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -87,10 +87,6 @@ msgstr "Pellgomzadenn vallus"
87msgid "OK"
87msgid "OK"
88msgstr "Mat eo"
88msgstr "Mat eo"
89
89
90−#: qml/Components/PageHeader.qml:366
91−msgid "Recent searches"
92−msgstr "Enklaskoù graet nevez zo"
93−
94#: qml/Components/PassphraseLockscreen.qml:60
90#: qml/Components/PassphraseLockscreen.qml:60
95#, qt-format
91#, qt-format
96msgid "Hello %1"
92msgid "Hello %1"
@@ -112,7 +108,7 @@ msgstr "ECHU"
112msgid "See more"
108msgid "See more"
113msgstr "Gwelet muioc'h"
109msgstr "Gwelet muioc'h"
114
110
115−#: qml/Components/SeeMore.qml:58
111+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
116msgid "See less"
112msgid "See less"
117msgstr "Gwelet nebeutoc'h"
113msgstr "Gwelet nebeutoc'h"
118
114
@@ -120,6 +116,10 @@ msgstr "Gwelet nebeutoc'h"
120msgid "Recent"
116msgid "Recent"
121msgstr "Nevez zo"
117msgstr "Nevez zo"
122
118
119+#: qml/Dash/GenericScopeView.qml:330
120+msgid "See all"
121+msgstr "Gwelet pep tra"
122+
123#: qml/Dash/Previews/PreviewActionCombo.qml:34
123#: qml/Dash/Previews/PreviewActionCombo.qml:34
124msgid "More..."
124msgid "More..."
125msgstr "Muioc'h..."
125msgstr "Muioc'h..."
@@ -128,15 +128,15 @@ msgstr "Muioc'h..."
128msgid "Less..."
128msgid "Less..."
129msgstr "Nebeutoc'h..."
129msgstr "Nebeutoc'h..."
130
130
131−#: qml/Dash/Previews/PreviewRatingInput.qml:82
131+#: qml/Dash/Previews/PreviewRatingInput.qml:81
132msgid "Rate this"
132msgid "Rate this"
133msgstr "Priziit an dra-mañ"
133msgstr "Priziit an dra-mañ"
134
134
135−#: qml/Dash/Previews/PreviewRatingInput.qml:128
135+#: qml/Dash/Previews/PreviewRatingInput.qml:126
136msgid "Add a review"
136msgid "Add a review"
137msgstr "Ouzhpennañ un ali"
137msgstr "Ouzhpennañ un ali"
138
138
139−#: qml/Dash/Previews/PreviewRatingInput.qml:168
139+#: qml/Dash/Previews/PreviewRatingInput.qml:166
140msgid "Send"
140msgid "Send"
141msgstr "Kas"
141msgstr "Kas"
142
142
@@ -172,6 +172,14 @@ msgstr "Diskouez ar ger-tremen"
172msgid "Please enter SIM PIN"
172msgid "Please enter SIM PIN"
173msgstr "Ebarzhit kod PIN ho kartenn SIM, mar plij"
173msgstr "Ebarzhit kod PIN ho kartenn SIM, mar plij"
174
174
175+#: qml/Panel/ActiveCallHint.qml:77
176+msgid "Tap to return to call..."
177+msgstr "Touchit evit distreiñ d'ar bellgomzadenn..."
178+
179+#: qml/Panel/ActiveCallHint.qml:90
180+msgid "Conference"
181+msgstr "Kendiviz"
182+
175#: qml/Panel/Indicators/MenuItemFactory.qml:583
183#: qml/Panel/Indicators/MenuItemFactory.qml:583
176msgid "In queue…"
184msgid "In queue…"
177msgstr "El lostennad..."
185msgstr "El lostennad..."
po/bs.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11"PO-Revision-Date: 2014-01-16 22:33+0000\n"
11"PO-Revision-Date: 2014-01-16 22:33+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Bosnian <bs@li.org>\n"
13"Language-Team: Bosnian <bs@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:16+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -80,10 +80,6 @@ msgstr ""
80msgid "OK"
80msgid "OK"
81msgstr ""
81msgstr ""
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr ""
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr ""
105msgid "See more"
101msgid "See more"
106msgstr ""
102msgstr ""
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr ""
106msgstr ""
111
107
@@ -113,6 +109,10 @@ msgstr ""
113msgid "Recent"
109msgid "Recent"
114msgstr ""
110msgstr ""
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr ""
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr ""
118msgstr ""
@@ -121,15 +121,15 @@ msgstr ""
121msgid "Less..."
121msgid "Less..."
122msgstr ""
122msgstr ""
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr ""
126msgstr ""
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130msgstr ""
130msgstr ""
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr ""
134msgstr ""
135
135
@@ -165,6 +165,14 @@ msgstr ""
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr ""
166msgstr ""
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr ""
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr ""
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170msgstr ""
178msgstr ""
po/ca.po+28−20
@@ -7,24 +7,24 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11−"PO-Revision-Date: 2014-06-13 07:47+0000\n"
11+"PO-Revision-Date: 2014-07-25 10:21+0000\n"
12"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
12"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
13"Language-Team: Catalan <ca@li.org>\n"
13"Language-Team: Catalan <ca@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:16+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
22msgid "Pin shortcut"
22msgid "Pin shortcut"
23−msgstr ""
23+msgstr "Enganxa la drecera"
24
24
25#: plugins/Unity/Launcher/launcheritem.cpp:73
25#: plugins/Unity/Launcher/launcheritem.cpp:73
26msgid "Unpin shortcut"
26msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "Desenganxa la drecera"
28
28
29#: qml/Components/EdgeDemoOverlay.qml:151
29#: qml/Components/EdgeDemoOverlay.qml:151
30msgid "Skip intro"
30msgid "Skip intro"
@@ -88,10 +88,6 @@ msgstr "Trucada d'emergència"
88msgid "OK"
88msgid "OK"
89msgstr "D'acord"
89msgstr "D'acord"
90
90
91−#: qml/Components/PageHeader.qml:366
92−msgid "Recent searches"
93−msgstr "Cerques recents"
94−
95#: qml/Components/PassphraseLockscreen.qml:60
91#: qml/Components/PassphraseLockscreen.qml:60
96#, qt-format
92#, qt-format
97msgid "Hello %1"
93msgid "Hello %1"
@@ -113,7 +109,7 @@ msgstr "Fet"
113msgid "See more"
109msgid "See more"
114msgstr "Mostra'n més"
110msgstr "Mostra'n més"
115
111
116−#: qml/Components/SeeMore.qml:58
112+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
117msgid "See less"
113msgid "See less"
118msgstr "Mostra'n menys"
114msgstr "Mostra'n menys"
119
115
@@ -121,6 +117,10 @@ msgstr "Mostra'n menys"
121msgid "Recent"
117msgid "Recent"
122msgstr "Recents"
118msgstr "Recents"
123
119
120+#: qml/Dash/GenericScopeView.qml:330
121+msgid "See all"
122+msgstr "Mostra-ho tot"
123+
124#: qml/Dash/Previews/PreviewActionCombo.qml:34
124#: qml/Dash/Previews/PreviewActionCombo.qml:34
125msgid "More..."
125msgid "More..."
126msgstr "Més..."
126msgstr "Més..."
@@ -129,15 +129,15 @@ msgstr "Més..."
129msgid "Less..."
129msgid "Less..."
130msgstr "Menys..."
130msgstr "Menys..."
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:82
132+#: qml/Dash/Previews/PreviewRatingInput.qml:81
133msgid "Rate this"
133msgid "Rate this"
134msgstr "Puntueu-ho"
134msgstr "Puntueu-ho"
135
135
136−#: qml/Dash/Previews/PreviewRatingInput.qml:128
136+#: qml/Dash/Previews/PreviewRatingInput.qml:126
137msgid "Add a review"
137msgid "Add a review"
138msgstr "Afegiu una ressenya"
138msgstr "Afegiu una ressenya"
139
139
140−#: qml/Dash/Previews/PreviewRatingInput.qml:168
140+#: qml/Dash/Previews/PreviewRatingInput.qml:166
141msgid "Send"
141msgid "Send"
142msgstr "Envia"
142msgstr "Envia"
143
143
@@ -173,29 +173,37 @@ msgstr "Mostra la contrasenya"
173msgid "Please enter SIM PIN"
173msgid "Please enter SIM PIN"
174msgstr "Introduïu el PIN de la targeta SIM"
174msgstr "Introduïu el PIN de la targeta SIM"
175
175
176+#: qml/Panel/ActiveCallHint.qml:77
177+msgid "Tap to return to call..."
178+msgstr "Feu un toc per tornar a la trucada..."
179+
180+#: qml/Panel/ActiveCallHint.qml:90
181+msgid "Conference"
182+msgstr "Conferència"
183+
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
184#: qml/Panel/Indicators/MenuItemFactory.qml:583
177msgid "In queue…"
185msgid "In queue…"
178−msgstr ""
186+msgstr "A la cua..."
179
187
180#: qml/Panel/Indicators/MenuItemFactory.qml:587
188#: qml/Panel/Indicators/MenuItemFactory.qml:587
181msgid "Downloading"
189msgid "Downloading"
182−msgstr ""
190+msgstr "S'està baixant"
183
191
184#: qml/Panel/Indicators/MenuItemFactory.qml:589
192#: qml/Panel/Indicators/MenuItemFactory.qml:589
185msgid "Paused, tap to resume"
193msgid "Paused, tap to resume"
186−msgstr ""
194+msgstr "En pausa, feu un toc per continuar"
187
195
188#: qml/Panel/Indicators/MenuItemFactory.qml:591
196#: qml/Panel/Indicators/MenuItemFactory.qml:591
189msgid "Canceled"
197msgid "Canceled"
190−msgstr ""
198+msgstr "S'ha cancel·lat"
191
199
192#: qml/Panel/Indicators/MenuItemFactory.qml:593
200#: qml/Panel/Indicators/MenuItemFactory.qml:593
193msgid "Finished"
201msgid "Finished"
194−msgstr ""
202+msgstr "S'ha finalitzat"
195
203
196#: qml/Panel/Indicators/MenuItemFactory.qml:595
204#: qml/Panel/Indicators/MenuItemFactory.qml:595
197msgid "Failed, tap to retry"
205msgid "Failed, tap to retry"
198−msgstr ""
206+msgstr "Ha fallat, feu un toc per tornar-ho a intentar"
199
207
200#: qml/Panel/SearchIndicator.qml:27
208#: qml/Panel/SearchIndicator.qml:27
201msgid "Search"
209msgid "Search"
po/ckb.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:17+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -80,10 +80,6 @@ msgstr "هێڵی فریاگوزاری"
80msgid "OK"
80msgid "OK"
81msgstr ""
81msgstr ""
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr "دوایین گەڕانەکان"
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr ""
105msgid "See more"
101msgid "See more"
106msgstr ""
102msgstr ""
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr ""
106msgstr ""
111
107
@@ -113,6 +109,10 @@ msgstr ""
113msgid "Recent"
109msgid "Recent"
114msgstr ""
110msgstr ""
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr ""
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr ""
118msgstr ""
@@ -121,15 +121,15 @@ msgstr ""
121msgid "Less..."
121msgid "Less..."
122msgstr ""
122msgstr ""
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr "پلە دابنی بۆی"
126msgstr "پلە دابنی بۆی"
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130msgstr "پێداچوونەوە زۆر بکە"
130msgstr "پێداچوونەوە زۆر بکە"
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr "ناردن"
134msgstr "ناردن"
135
135
@@ -165,6 +165,14 @@ msgstr "تێپەڕەوشە پیشان بدە"
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr ""
166msgstr ""
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr ""
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr ""
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170msgstr ""
178msgstr ""
po/cs.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11"PO-Revision-Date: 2014-01-08 10:11+0000\n"
11"PO-Revision-Date: 2014-01-08 10:11+0000\n"
12"Last-Translator: Tadeáš Pařík <tadeas.parik@gmail.com>\n"
12"Last-Translator: Tadeáš Pařík <tadeas.parik@gmail.com>\n"
13"Language-Team: Czech <cs@li.org>\n"
13"Language-Team: Czech <cs@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:16+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -80,10 +80,6 @@ msgstr "Tísňové volání"
80msgid "OK"
80msgid "OK"
81msgstr ""
81msgstr ""
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr "Poslední vyhledávání"
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr ""
105msgid "See more"
101msgid "See more"
106msgstr ""
102msgstr ""
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr ""
106msgstr ""
111
107
@@ -113,6 +109,10 @@ msgstr ""
113msgid "Recent"
109msgid "Recent"
114msgstr ""
110msgstr ""
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr ""
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr ""
118msgstr ""
@@ -121,15 +121,15 @@ msgstr ""
121msgid "Less..."
121msgid "Less..."
122msgstr ""
122msgstr ""
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr "Ohodnoťte to"
126msgstr "Ohodnoťte to"
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130msgstr "Přidat recenzi"
130msgstr "Přidat recenzi"
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr "Odeslat"
134msgstr "Odeslat"
135
135
@@ -165,6 +165,14 @@ msgstr "Zobrazit heslo"
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr ""
166msgstr ""
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr ""
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr ""
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170msgstr ""
178msgstr ""
po/da.po+22−14
@@ -8,15 +8,15 @@ 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: 2014-07-07 12:15+0100\n"
11+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
12−"PO-Revision-Date: 2014-07-22 15:46+0000\n"
12+"PO-Revision-Date: 2014-07-29 23:18+0000\n"
13−"Last-Translator: Kenneth Ramsussen <kentora@kentora.dk>\n"
13+"Last-Translator: Ask Hjorth Larsen <asklarsen@gmail.com>\n"
14"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
14"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
15"MIME-Version: 1.0\n"
15"MIME-Version: 1.0\n"
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−"X-Launchpad-Export-Date: 2014-07-23 07:01+0000\n"
18+"X-Launchpad-Export-Date: 2014-07-30 07:08+0000\n"
19−"X-Generator: Launchpad (build 17114)\n"
19+"X-Generator: Launchpad (build 17131)\n"
20
20
21#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:43
22#: plugins/Unity/Launcher/launcheritem.cpp:73
22#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -72,7 +72,7 @@ msgid ""
72"You have now mastered the edge gestures and can start using the "
72"You have now mastered the edge gestures and can start using the "
73"phone<br><br>Tap on the screen to start"
73"phone<br><br>Tap on the screen to start"
74msgstr ""
74msgstr ""
75−"Du mestrer nu kantgestusserne og kan begynde at bruge telefonen<br><br>Tryk "
75+"Du mestrer nu kantbevægelserne og kan begynde at bruge telefonen<br><br>Tryk "
76"på skærmen for at starte"
76"på skærmen for at starte"
77
77
78#: qml/Components/Lockscreen.qml:214
78#: qml/Components/Lockscreen.qml:214
@@ -83,10 +83,6 @@ msgstr "Nødopkald"
83msgid "OK"
83msgid "OK"
84msgstr "O.k."
84msgstr "O.k."
85
85
86−#: qml/Components/PageHeader.qml:366
87−msgid "Recent searches"
88−msgstr "Seneste søgninger"
89−
90#: qml/Components/PassphraseLockscreen.qml:60
86#: qml/Components/PassphraseLockscreen.qml:60
91#, qt-format
87#, qt-format
92msgid "Hello %1"
88msgid "Hello %1"
@@ -108,7 +104,7 @@ msgstr "FÆRDIG"
108msgid "See more"
104msgid "See more"
109msgstr "Vis mere"
105msgstr "Vis mere"
110
106
111−#: qml/Components/SeeMore.qml:58
107+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
112msgid "See less"
108msgid "See less"
113msgstr "Vis mindre"
109msgstr "Vis mindre"
114
110
@@ -116,6 +112,10 @@ msgstr "Vis mindre"
116msgid "Recent"
112msgid "Recent"
117msgstr "Seneste"
113msgstr "Seneste"
118
114
115+#: qml/Dash/GenericScopeView.qml:330
116+msgid "See all"
117+msgstr ""
118+
119#: qml/Dash/Previews/PreviewActionCombo.qml:34
119#: qml/Dash/Previews/PreviewActionCombo.qml:34
120msgid "More..."
120msgid "More..."
121msgstr "Mere..."
121msgstr "Mere..."
@@ -124,15 +124,15 @@ msgstr "Mere..."
124msgid "Less..."
124msgid "Less..."
125msgstr "Mindre..."
125msgstr "Mindre..."
126
126
127−#: qml/Dash/Previews/PreviewRatingInput.qml:82
127+#: qml/Dash/Previews/PreviewRatingInput.qml:81
128msgid "Rate this"
128msgid "Rate this"
129msgstr "Bedøm dette"
129msgstr "Bedøm dette"
130
130
131−#: qml/Dash/Previews/PreviewRatingInput.qml:128
131+#: qml/Dash/Previews/PreviewRatingInput.qml:126
132msgid "Add a review"
132msgid "Add a review"
133msgstr "Tilføj en forhåndsvisning"
133msgstr "Tilføj en forhåndsvisning"
134
134
135−#: qml/Dash/Previews/PreviewRatingInput.qml:168
135+#: qml/Dash/Previews/PreviewRatingInput.qml:166
136msgid "Send"
136msgid "Send"
137msgstr "Send"
137msgstr "Send"
138
138
@@ -168,6 +168,14 @@ msgstr "Vis adgangskode"
168msgid "Please enter SIM PIN"
168msgid "Please enter SIM PIN"
169msgstr "Indtast venligst PIN for SIM"
169msgstr "Indtast venligst PIN for SIM"
170
170
171+#: qml/Panel/ActiveCallHint.qml:77
172+msgid "Tap to return to call..."
173+msgstr ""
174+
175+#: qml/Panel/ActiveCallHint.qml:90
176+msgid "Conference"
177+msgstr "Konference"
178+
171#: qml/Panel/Indicators/MenuItemFactory.qml:583
179#: qml/Panel/Indicators/MenuItemFactory.qml:583
172msgid "In queue…"
180msgid "In queue…"
173msgstr "I kø…"
181msgstr "I kø…"
po/de.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11"PO-Revision-Date: 2014-07-15 13:20+0000\n"
11"PO-Revision-Date: 2014-07-15 13:20+0000\n"
12"Last-Translator: Phillip Sz <Unknown>\n"
12"Last-Translator: Phillip Sz <Unknown>\n"
13"Language-Team: German <de@li.org>\n"
13"Language-Team: German <de@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-16 07:27+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:16+0000\n"
18−"X-Generator: Launchpad (build 17112)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,10 +85,6 @@ msgstr "Notruf"
85msgid "OK"
85msgid "OK"
86msgstr "OK"
86msgstr "OK"
87
87
88−#: qml/Components/PageHeader.qml:366
89−msgid "Recent searches"
90−msgstr "Zuletzt verwendete Suchbegriffe"
91−
92#: qml/Components/PassphraseLockscreen.qml:60
88#: qml/Components/PassphraseLockscreen.qml:60
93#, qt-format
89#, qt-format
94msgid "Hello %1"
90msgid "Hello %1"
@@ -110,7 +106,7 @@ msgstr "ERLEDIGT"
110msgid "See more"
106msgid "See more"
111msgstr "Mehr ansehen"
107msgstr "Mehr ansehen"
112
108
113−#: qml/Components/SeeMore.qml:58
109+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
114msgid "See less"
110msgid "See less"
115msgstr "Weniger ansehen"
111msgstr "Weniger ansehen"
116
112
@@ -118,6 +114,10 @@ msgstr "Weniger ansehen"
118msgid "Recent"
114msgid "Recent"
119msgstr "Kürzlich"
115msgstr "Kürzlich"
120
116
117+#: qml/Dash/GenericScopeView.qml:330
118+msgid "See all"
119+msgstr ""
120+
121#: qml/Dash/Previews/PreviewActionCombo.qml:34
121#: qml/Dash/Previews/PreviewActionCombo.qml:34
122msgid "More..."
122msgid "More..."
123msgstr "Mehr …"
123msgstr "Mehr …"
@@ -126,15 +126,15 @@ msgstr "Mehr …"
126msgid "Less..."
126msgid "Less..."
127msgstr "Weniger …"
127msgstr "Weniger …"
128
128
129−#: qml/Dash/Previews/PreviewRatingInput.qml:82
129+#: qml/Dash/Previews/PreviewRatingInput.qml:81
130msgid "Rate this"
130msgid "Rate this"
131msgstr "Bewerten"
131msgstr "Bewerten"
132
132
133−#: qml/Dash/Previews/PreviewRatingInput.qml:128
133+#: qml/Dash/Previews/PreviewRatingInput.qml:126
134msgid "Add a review"
134msgid "Add a review"
135msgstr "Bewertung hinzufügen"
135msgstr "Bewertung hinzufügen"
136
136
137−#: qml/Dash/Previews/PreviewRatingInput.qml:168
137+#: qml/Dash/Previews/PreviewRatingInput.qml:166
138msgid "Send"
138msgid "Send"
139msgstr "Senden"
139msgstr "Senden"
140
140
@@ -170,6 +170,14 @@ msgstr "Passwort anzeigen"
170msgid "Please enter SIM PIN"
170msgid "Please enter SIM PIN"
171msgstr "Bitte die PIN der SIM eingeben"
171msgstr "Bitte die PIN der SIM eingeben"
172
172
173+#: qml/Panel/ActiveCallHint.qml:77
174+msgid "Tap to return to call..."
175+msgstr ""
176+
177+#: qml/Panel/ActiveCallHint.qml:90
178+msgid "Conference"
179+msgstr ""
180+
173#: qml/Panel/Indicators/MenuItemFactory.qml:583
181#: qml/Panel/Indicators/MenuItemFactory.qml:583
174msgid "In queue…"
182msgid "In queue…"
175msgstr "In Warteschlange …"
183msgstr "In Warteschlange …"
po/el.po+34−26
@@ -7,24 +7,24 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11−"PO-Revision-Date: 2014-02-26 09:58+0000\n"
11+"PO-Revision-Date: 2014-07-28 16:06+0000\n"
12−"Last-Translator: j3lc <x_nikos@yahoo.gr>\n"
12+"Last-Translator: Chris Taklis (aka Kailor) <ctaklis@gmail.com>\n"
13"Language-Team: Greek <el@li.org>\n"
13"Language-Team: Greek <el@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-29 06:54+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
22msgid "Pin shortcut"
22msgid "Pin shortcut"
23−msgstr ""
23+msgstr "Καρφίτσωμα συντόμευσης"
24
24
25#: plugins/Unity/Launcher/launcheritem.cpp:73
25#: plugins/Unity/Launcher/launcheritem.cpp:73
26msgid "Unpin shortcut"
26msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "Ξεκαρφίτσωμα συντόμευσης"
28
28
29#: qml/Components/EdgeDemoOverlay.qml:151
29#: qml/Components/EdgeDemoOverlay.qml:151
30msgid "Skip intro"
30msgid "Skip intro"
@@ -82,11 +82,7 @@ msgstr "Κλήση έκτακτης ανάγκης"
82
82
83#: qml/Components/Lockscreen.qml:231
83#: qml/Components/Lockscreen.qml:231
84msgid "OK"
84msgid "OK"
85−msgstr ""
85+msgstr "OK"
86−
87−#: qml/Components/PageHeader.qml:366
88−msgid "Recent searches"
89−msgstr "Πρόσφατες αναζητήσεις"
90
86
91#: qml/Components/PassphraseLockscreen.qml:60
87#: qml/Components/PassphraseLockscreen.qml:60
92#, qt-format
88#, qt-format
@@ -99,47 +95,51 @@ msgstr "Γεια σας"
99
95
100#: qml/Components/PinLockscreen.qml:198
96#: qml/Components/PinLockscreen.qml:198
101msgid "CANCEL"
97msgid "CANCEL"
102−msgstr ""
98+msgstr "ΑΚΥΡΩΣΗ"
103
99
104#: qml/Components/PinLockscreen.qml:216
100#: qml/Components/PinLockscreen.qml:216
105msgid "DONE"
101msgid "DONE"
106−msgstr ""
102+msgstr "ΟΛΟΚΛΗΡΩΣΗ"
107
103
108#: qml/Components/SeeMore.qml:35
104#: qml/Components/SeeMore.qml:35
109msgid "See more"
105msgid "See more"
110msgstr "Περρισότερα"
106msgstr "Περρισότερα"
111
107
112−#: qml/Components/SeeMore.qml:58
108+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
113msgid "See less"
109msgid "See less"
114msgstr "Λιγότερα"
110msgstr "Λιγότερα"
115
111
116#: qml/Dash/DashApps.qml:37
112#: qml/Dash/DashApps.qml:37
117msgid "Recent"
113msgid "Recent"
118−msgstr ""
114+msgstr "Πρόσφατα"
115+
116+#: qml/Dash/GenericScopeView.qml:330
117+msgid "See all"
118+msgstr "Εμφάνιση όλων"
119
119
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
121msgid "More..."
121msgid "More..."
122−msgstr ""
122+msgstr "Περισσότερα..."
123
123
124#: qml/Dash/Previews/PreviewActionCombo.qml:34
124#: qml/Dash/Previews/PreviewActionCombo.qml:34
125msgid "Less..."
125msgid "Less..."
126−msgstr ""
126+msgstr "Λιγότερα..."
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:82
128+#: qml/Dash/Previews/PreviewRatingInput.qml:81
129msgid "Rate this"
129msgid "Rate this"
130msgstr "Βαθμολογήστε το"
130msgstr "Βαθμολογήστε το"
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:128
132+#: qml/Dash/Previews/PreviewRatingInput.qml:126
133msgid "Add a review"
133msgid "Add a review"
134msgstr "Προσθέστε την αξιολόγησή σας"
134msgstr "Προσθέστε την αξιολόγησή σας"
135
135
136−#: qml/Dash/Previews/PreviewRatingInput.qml:168
136+#: qml/Dash/Previews/PreviewRatingInput.qml:166
137msgid "Send"
137msgid "Send"
138msgstr "Αποστολή"
138msgstr "Αποστολή"
139
139
140#: qml/Greeter/Greeter.qml:157
140#: qml/Greeter/Greeter.qml:157
141msgid "Swipe to unlock"
141msgid "Swipe to unlock"
142−msgstr ""
142+msgstr "Σύρετε για να ξεκλειδώσετε"
143
143
144#: qml/Hud/HudParametrizedActionsPage.qml:132
144#: qml/Hud/HudParametrizedActionsPage.qml:132
145msgid "Confirm"
145msgid "Confirm"
@@ -169,25 +169,33 @@ msgstr "Εμφάνιση κωδικού"
169msgid "Please enter SIM PIN"
169msgid "Please enter SIM PIN"
170msgstr "Παρακαλώ εισάγετε το PIN της κάρτας SIM"
170msgstr "Παρακαλώ εισάγετε το PIN της κάρτας SIM"
171
171
172+#: qml/Panel/ActiveCallHint.qml:77
173+msgid "Tap to return to call..."
174+msgstr ""
175+
176+#: qml/Panel/ActiveCallHint.qml:90
177+msgid "Conference"
178+msgstr "Συνδιάσκεψη"
179+
172#: qml/Panel/Indicators/MenuItemFactory.qml:583
180#: qml/Panel/Indicators/MenuItemFactory.qml:583
173msgid "In queue…"
181msgid "In queue…"
174msgstr ""
182msgstr ""
175
183
176#: qml/Panel/Indicators/MenuItemFactory.qml:587
184#: qml/Panel/Indicators/MenuItemFactory.qml:587
177msgid "Downloading"
185msgid "Downloading"
178−msgstr ""
186+msgstr "Λήψη σε εξέλιξη"
179
187
180#: qml/Panel/Indicators/MenuItemFactory.qml:589
188#: qml/Panel/Indicators/MenuItemFactory.qml:589
181msgid "Paused, tap to resume"
189msgid "Paused, tap to resume"
182−msgstr ""
190+msgstr "Σταματημένο, αγγίξτε για συνέχιση"
183
191
184#: qml/Panel/Indicators/MenuItemFactory.qml:591
192#: qml/Panel/Indicators/MenuItemFactory.qml:591
185msgid "Canceled"
193msgid "Canceled"
186−msgstr ""
194+msgstr "Ακυρώθηκε"
187
195
188#: qml/Panel/Indicators/MenuItemFactory.qml:593
196#: qml/Panel/Indicators/MenuItemFactory.qml:593
189msgid "Finished"
197msgid "Finished"
190−msgstr ""
198+msgstr "Ολοκληρώθηκε"
191
199
192#: qml/Panel/Indicators/MenuItemFactory.qml:595
200#: qml/Panel/Indicators/MenuItemFactory.qml:595
193msgid "Failed, tap to retry"
201msgid "Failed, tap to retry"
po/en_AU.po+20−12
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11−"PO-Revision-Date: 2014-07-18 10:38+0000\n"
11+"PO-Revision-Date: 2014-07-27 12:14+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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-19 06:19+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-28 06:44+0000\n"
18−"X-Generator: Launchpad (build 17114)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -82,10 +82,6 @@ msgstr "Emergency Call"
82msgid "OK"
82msgid "OK"
83msgstr "OK"
83msgstr "OK"
84
84
85−#: qml/Components/PageHeader.qml:366
86−msgid "Recent searches"
87−msgstr "Recent searches"
88−
89#: qml/Components/PassphraseLockscreen.qml:60
85#: qml/Components/PassphraseLockscreen.qml:60
90#, qt-format
86#, qt-format
91msgid "Hello %1"
87msgid "Hello %1"
@@ -107,7 +103,7 @@ msgstr "DONE"
107msgid "See more"
103msgid "See more"
108msgstr "See more"
104msgstr "See more"
109
105
110−#: qml/Components/SeeMore.qml:58
106+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
111msgid "See less"
107msgid "See less"
112msgstr "See less"
108msgstr "See less"
113
109
@@ -115,6 +111,10 @@ msgstr "See less"
115msgid "Recent"
111msgid "Recent"
116msgstr "Recent"
112msgstr "Recent"
117
113
114+#: qml/Dash/GenericScopeView.qml:330
115+msgid "See all"
116+msgstr "See all"
117+
118#: qml/Dash/Previews/PreviewActionCombo.qml:34
118#: qml/Dash/Previews/PreviewActionCombo.qml:34
119msgid "More..."
119msgid "More..."
120msgstr "More..."
120msgstr "More..."
@@ -123,15 +123,15 @@ msgstr "More..."
123msgid "Less..."
123msgid "Less..."
124msgstr "Less..."
124msgstr "Less..."
125
125
126−#: qml/Dash/Previews/PreviewRatingInput.qml:82
126+#: qml/Dash/Previews/PreviewRatingInput.qml:81
127msgid "Rate this"
127msgid "Rate this"
128msgstr "Rate this"
128msgstr "Rate this"
129
129
130−#: qml/Dash/Previews/PreviewRatingInput.qml:128
130+#: qml/Dash/Previews/PreviewRatingInput.qml:126
131msgid "Add a review"
131msgid "Add a review"
132msgstr "Add a review"
132msgstr "Add a review"
133
133
134−#: qml/Dash/Previews/PreviewRatingInput.qml:168
134+#: qml/Dash/Previews/PreviewRatingInput.qml:166
135msgid "Send"
135msgid "Send"
136msgstr "Send"
136msgstr "Send"
137
137
@@ -167,6 +167,14 @@ msgstr "Show password"
167msgid "Please enter SIM PIN"
167msgid "Please enter SIM PIN"
168msgstr "Please enter SIM PIN"
168msgstr "Please enter SIM PIN"
169
169
170+#: qml/Panel/ActiveCallHint.qml:77
171+msgid "Tap to return to call..."
172+msgstr "Tap to return to call..."
173+
174+#: qml/Panel/ActiveCallHint.qml:90
175+msgid "Conference"
176+msgstr "Conference"
177+
170#: qml/Panel/Indicators/MenuItemFactory.qml:583
178#: qml/Panel/Indicators/MenuItemFactory.qml:583
171msgid "In queue…"
179msgid "In queue…"
172msgstr "In queue…"
180msgstr "In queue…"
po/en_GB.po+20−12
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11−"PO-Revision-Date: 2014-07-10 10:59+0000\n"
11+"PO-Revision-Date: 2014-07-27 14:09+0000\n"
12"Last-Translator: Alan Pope ㋛ <alan@ubuntu.com>\n"
12"Last-Translator: Alan Pope ㋛ <alan@ubuntu.com>\n"
13"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
13"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-11 06:15+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-28 06:44+0000\n"
18−"X-Generator: Launchpad (build 17111)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -82,10 +82,6 @@ msgstr "Emergency Call"
82msgid "OK"
82msgid "OK"
83msgstr "OK"
83msgstr "OK"
84
84
85−#: qml/Components/PageHeader.qml:366
86−msgid "Recent searches"
87−msgstr "Recent searches"
88−
89#: qml/Components/PassphraseLockscreen.qml:60
85#: qml/Components/PassphraseLockscreen.qml:60
90#, qt-format
86#, qt-format
91msgid "Hello %1"
87msgid "Hello %1"
@@ -107,7 +103,7 @@ msgstr "DONE"
107msgid "See more"
103msgid "See more"
108msgstr "See more"
104msgstr "See more"
109
105
110−#: qml/Components/SeeMore.qml:58
106+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
111msgid "See less"
107msgid "See less"
112msgstr "See less"
108msgstr "See less"
113
109
@@ -115,6 +111,10 @@ msgstr "See less"
115msgid "Recent"
111msgid "Recent"
116msgstr "Recent"
112msgstr "Recent"
117
113
114+#: qml/Dash/GenericScopeView.qml:330
115+msgid "See all"
116+msgstr "See all"
117+
118#: qml/Dash/Previews/PreviewActionCombo.qml:34
118#: qml/Dash/Previews/PreviewActionCombo.qml:34
119msgid "More..."
119msgid "More..."
120msgstr "More..."
120msgstr "More..."
@@ -123,15 +123,15 @@ msgstr "More..."
123msgid "Less..."
123msgid "Less..."
124msgstr "Less..."
124msgstr "Less..."
125
125
126−#: qml/Dash/Previews/PreviewRatingInput.qml:82
126+#: qml/Dash/Previews/PreviewRatingInput.qml:81
127msgid "Rate this"
127msgid "Rate this"
128msgstr "Rate this"
128msgstr "Rate this"
129
129
130−#: qml/Dash/Previews/PreviewRatingInput.qml:128
130+#: qml/Dash/Previews/PreviewRatingInput.qml:126
131msgid "Add a review"
131msgid "Add a review"
132msgstr "Add a review"
132msgstr "Add a review"
133
133
134−#: qml/Dash/Previews/PreviewRatingInput.qml:168
134+#: qml/Dash/Previews/PreviewRatingInput.qml:166
135msgid "Send"
135msgid "Send"
136msgstr "Send"
136msgstr "Send"
137
137
@@ -167,6 +167,14 @@ msgstr "Show password"
167msgid "Please enter SIM PIN"
167msgid "Please enter SIM PIN"
168msgstr "Please enter SIM PIN"
168msgstr "Please enter SIM PIN"
169
169
170+#: qml/Panel/ActiveCallHint.qml:77
171+msgid "Tap to return to call..."
172+msgstr "Tap to return to call..."
173+
174+#: qml/Panel/ActiveCallHint.qml:90
175+msgid "Conference"
176+msgstr "Conference"
177+
170#: qml/Panel/Indicators/MenuItemFactory.qml:583
178#: qml/Panel/Indicators/MenuItemFactory.qml:583
171msgid "In queue…"
179msgid "In queue…"
172msgstr "In queue…"
180msgstr "In queue…"
po/eo.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\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: Esperanto <eo@li.org>\n"
13"Language-Team: Esperanto <eo@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:16+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -80,10 +80,6 @@ msgstr ""
80msgid "OK"
80msgid "OK"
81msgstr ""
81msgstr ""
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr ""
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr ""
105msgid "See more"
101msgid "See more"
106msgstr ""
102msgstr ""
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr ""
106msgstr ""
111
107
@@ -113,6 +109,10 @@ msgstr ""
113msgid "Recent"
109msgid "Recent"
114msgstr ""
110msgstr ""
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr ""
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr ""
118msgstr ""
@@ -121,15 +121,15 @@ msgstr ""
121msgid "Less..."
121msgid "Less..."
122msgstr ""
122msgstr ""
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr ""
126msgstr ""
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130msgstr ""
130msgstr ""
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr ""
134msgstr ""
135
135
@@ -165,6 +165,14 @@ msgstr ""
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr ""
166msgstr ""
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr ""
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr ""
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170msgstr ""
178msgstr ""
po/es.po+21−13
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11−"PO-Revision-Date: 2014-07-12 05:24+0000\n"
11+"PO-Revision-Date: 2014-07-26 06:22+0000\n"
12−"Last-Translator: Adolfo Jayme <fitoschido@gmail.com>\n"
12+"Last-Translator: Paco Molinero <paco@byasl.com>\n"
13"Language-Team: Spanish <es@li.org>\n"
13"Language-Team: Spanish <es@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-13 06:33+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-27 06:35+0000\n"
18−"X-Generator: Launchpad (build 17111)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,10 +85,6 @@ msgstr "Llamada de emergencia"
85msgid "OK"
85msgid "OK"
86msgstr "Aceptar"
86msgstr "Aceptar"
87
87
88−#: qml/Components/PageHeader.qml:366
89−msgid "Recent searches"
90−msgstr "Búsquedas recientes"
91−
92#: qml/Components/PassphraseLockscreen.qml:60
88#: qml/Components/PassphraseLockscreen.qml:60
93#, qt-format
89#, qt-format
94msgid "Hello %1"
90msgid "Hello %1"
@@ -110,7 +106,7 @@ msgstr "HECHO"
110msgid "See more"
106msgid "See more"
111msgstr "Ver más"
107msgstr "Ver más"
112
108
113−#: qml/Components/SeeMore.qml:58
109+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
114msgid "See less"
110msgid "See less"
115msgstr "Ver menos"
111msgstr "Ver menos"
116
112
@@ -118,6 +114,10 @@ msgstr "Ver menos"
118msgid "Recent"
114msgid "Recent"
119msgstr "Recientes"
115msgstr "Recientes"
120
116
117+#: qml/Dash/GenericScopeView.qml:330
118+msgid "See all"
119+msgstr "Ver todo"
120+
121#: qml/Dash/Previews/PreviewActionCombo.qml:34
121#: qml/Dash/Previews/PreviewActionCombo.qml:34
122msgid "More..."
122msgid "More..."
123msgstr "Más…"
123msgstr "Más…"
@@ -126,15 +126,15 @@ msgstr "Más…"
126msgid "Less..."
126msgid "Less..."
127msgstr "Menos…"
127msgstr "Menos…"
128
128
129−#: qml/Dash/Previews/PreviewRatingInput.qml:82
129+#: qml/Dash/Previews/PreviewRatingInput.qml:81
130msgid "Rate this"
130msgid "Rate this"
131msgstr "Valorar esto"
131msgstr "Valorar esto"
132
132
133−#: qml/Dash/Previews/PreviewRatingInput.qml:128
133+#: qml/Dash/Previews/PreviewRatingInput.qml:126
134msgid "Add a review"
134msgid "Add a review"
135msgstr "Añadir una reseña"
135msgstr "Añadir una reseña"
136
136
137−#: qml/Dash/Previews/PreviewRatingInput.qml:168
137+#: qml/Dash/Previews/PreviewRatingInput.qml:166
138msgid "Send"
138msgid "Send"
139msgstr "Enviar"
139msgstr "Enviar"
140
140
@@ -170,6 +170,14 @@ msgstr "Mostrar contraseña"
170msgid "Please enter SIM PIN"
170msgid "Please enter SIM PIN"
171msgstr "Escriba el PIN de la SIM"
171msgstr "Escriba el PIN de la SIM"
172
172
173+#: qml/Panel/ActiveCallHint.qml:77
174+msgid "Tap to return to call..."
175+msgstr "Toque para volver a llamar..."
176+
177+#: qml/Panel/ActiveCallHint.qml:90
178+msgid "Conference"
179+msgstr "Conferencia"
180+
173#: qml/Panel/Indicators/MenuItemFactory.qml:583
181#: qml/Panel/Indicators/MenuItemFactory.qml:583
174msgid "In queue…"
182msgid "In queue…"
175msgstr "En espera…"
183msgstr "En espera…"
po/eu.po+20−12
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11−"PO-Revision-Date: 2014-07-16 18:11+0000\n"
11+"PO-Revision-Date: 2014-07-25 12:38+0000\n"
12"Last-Translator: Ibai Oihanguren Sala <Unknown>\n"
12"Last-Translator: Ibai Oihanguren Sala <Unknown>\n"
13"Language-Team: Basque <eu@li.org>\n"
13"Language-Team: Basque <eu@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-17 06:38+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:16+0000\n"
18−"X-Generator: Launchpad (build 17114)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -84,10 +84,6 @@ msgstr "Larrialdi-deia"
84msgid "OK"
84msgid "OK"
85msgstr "Ados"
85msgstr "Ados"
86
86
87−#: qml/Components/PageHeader.qml:366
88−msgid "Recent searches"
89−msgstr "Azken bilaketak"
90−
91#: qml/Components/PassphraseLockscreen.qml:60
87#: qml/Components/PassphraseLockscreen.qml:60
92#, qt-format
88#, qt-format
93msgid "Hello %1"
89msgid "Hello %1"
@@ -109,7 +105,7 @@ msgstr "EGINDA"
109msgid "See more"
105msgid "See more"
110msgstr "Ikusi gehiago"
106msgstr "Ikusi gehiago"
111
107
112−#: qml/Components/SeeMore.qml:58
108+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
113msgid "See less"
109msgid "See less"
114msgstr "Ikusi gutxiago"
110msgstr "Ikusi gutxiago"
115
111
@@ -117,6 +113,10 @@ msgstr "Ikusi gutxiago"
117msgid "Recent"
113msgid "Recent"
118msgstr "Azkenak"
114msgstr "Azkenak"
119
115
116+#: qml/Dash/GenericScopeView.qml:330
117+msgid "See all"
118+msgstr "Ikusi guztiak"
119+
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
121msgid "More..."
121msgid "More..."
122msgstr "Gehiago..."
122msgstr "Gehiago..."
@@ -125,15 +125,15 @@ msgstr "Gehiago..."
125msgid "Less..."
125msgid "Less..."
126msgstr "Gutxiago..."
126msgstr "Gutxiago..."
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:82
128+#: qml/Dash/Previews/PreviewRatingInput.qml:81
129msgid "Rate this"
129msgid "Rate this"
130msgstr "Puntuatu hau"
130msgstr "Puntuatu hau"
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:128
132+#: qml/Dash/Previews/PreviewRatingInput.qml:126
133msgid "Add a review"
133msgid "Add a review"
134msgstr "Gehitu kritika"
134msgstr "Gehitu kritika"
135
135
136−#: qml/Dash/Previews/PreviewRatingInput.qml:168
136+#: qml/Dash/Previews/PreviewRatingInput.qml:166
137msgid "Send"
137msgid "Send"
138msgstr "Bidali"
138msgstr "Bidali"
139
139
@@ -169,6 +169,14 @@ msgstr "Erakutsi pasahitza"
169msgid "Please enter SIM PIN"
169msgid "Please enter SIM PIN"
170msgstr "Sartu SIMaren PINa"
170msgstr "Sartu SIMaren PINa"
171
171
172+#: qml/Panel/ActiveCallHint.qml:77
173+msgid "Tap to return to call..."
174+msgstr "Sakatu deia itzultzeko..."
175+
176+#: qml/Panel/ActiveCallHint.qml:90
177+msgid "Conference"
178+msgstr "Konferentzia"
179+
172#: qml/Panel/Indicators/MenuItemFactory.qml:583
180#: qml/Panel/Indicators/MenuItemFactory.qml:583
173msgid "In queue…"
181msgid "In queue…"
174msgstr "Ilaran..."
182msgstr "Ilaran..."
po/fa.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11"PO-Revision-Date: 2013-10-31 19:02+0000\n"
11"PO-Revision-Date: 2013-10-31 19:02+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:17+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -80,10 +80,6 @@ msgstr ""
80msgid "OK"
80msgid "OK"
81msgstr ""
81msgstr ""
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr ""
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr ""
105msgid "See more"
101msgid "See more"
106msgstr ""
102msgstr ""
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr ""
106msgstr ""
111
107
@@ -113,6 +109,10 @@ msgstr ""
113msgid "Recent"
109msgid "Recent"
114msgstr ""
110msgstr ""
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr ""
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr ""
118msgstr ""
@@ -121,15 +121,15 @@ msgstr ""
121msgid "Less..."
121msgid "Less..."
122msgstr ""
122msgstr ""
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr ""
126msgstr ""
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130msgstr ""
130msgstr ""
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr ""
134msgstr ""
135
135
@@ -165,6 +165,14 @@ msgstr ""
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr ""
166msgstr ""
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr ""
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr ""
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170msgstr ""
178msgstr ""
po/fi.po+20−12
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11−"PO-Revision-Date: 2014-07-09 17:26+0000\n"
11+"PO-Revision-Date: 2014-07-25 16:07+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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-10 07:29+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:16+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -82,10 +82,6 @@ msgstr "Hätäpuhelu"
82msgid "OK"
82msgid "OK"
83msgstr "OK"
83msgstr "OK"
84
84
85−#: qml/Components/PageHeader.qml:366
86−msgid "Recent searches"
87−msgstr "Viimeisimmät haut"
88−
89#: qml/Components/PassphraseLockscreen.qml:60
85#: qml/Components/PassphraseLockscreen.qml:60
90#, qt-format
86#, qt-format
91msgid "Hello %1"
87msgid "Hello %1"
@@ -107,7 +103,7 @@ msgstr "VALMIS"
107msgid "See more"
103msgid "See more"
108msgstr "Näytä lisää"
104msgstr "Näytä lisää"
109
105
110−#: qml/Components/SeeMore.qml:58
106+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
111msgid "See less"
107msgid "See less"
112msgstr "Näytä vähemmän"
108msgstr "Näytä vähemmän"
113
109
@@ -115,6 +111,10 @@ msgstr "Näytä vähemmän"
115msgid "Recent"
111msgid "Recent"
116msgstr "Viimeisimmät"
112msgstr "Viimeisimmät"
117
113
114+#: qml/Dash/GenericScopeView.qml:330
115+msgid "See all"
116+msgstr "Näytä kaikki"
117+
118#: qml/Dash/Previews/PreviewActionCombo.qml:34
118#: qml/Dash/Previews/PreviewActionCombo.qml:34
119msgid "More..."
119msgid "More..."
120msgstr "Lisää..."
120msgstr "Lisää..."
@@ -123,15 +123,15 @@ msgstr "Lisää..."
123msgid "Less..."
123msgid "Less..."
124msgstr "Vähemmän..."
124msgstr "Vähemmän..."
125
125
126−#: qml/Dash/Previews/PreviewRatingInput.qml:82
126+#: qml/Dash/Previews/PreviewRatingInput.qml:81
127msgid "Rate this"
127msgid "Rate this"
128msgstr "Arvioi tämä"
128msgstr "Arvioi tämä"
129
129
130−#: qml/Dash/Previews/PreviewRatingInput.qml:128
130+#: qml/Dash/Previews/PreviewRatingInput.qml:126
131msgid "Add a review"
131msgid "Add a review"
132msgstr "Lisää arvostelu"
132msgstr "Lisää arvostelu"
133
133
134−#: qml/Dash/Previews/PreviewRatingInput.qml:168
134+#: qml/Dash/Previews/PreviewRatingInput.qml:166
135msgid "Send"
135msgid "Send"
136msgstr "Lähetä"
136msgstr "Lähetä"
137
137
@@ -167,6 +167,14 @@ msgstr "Näytä salasana"
167msgid "Please enter SIM PIN"
167msgid "Please enter SIM PIN"
168msgstr "Anna SIM-kortin PIN-koodi"
168msgstr "Anna SIM-kortin PIN-koodi"
169
169
170+#: qml/Panel/ActiveCallHint.qml:77
171+msgid "Tap to return to call..."
172+msgstr "Napauta palataksesi puheluun..."
173+
174+#: qml/Panel/ActiveCallHint.qml:90
175+msgid "Conference"
176+msgstr "Ryhmäpuhelu"
177+
170#: qml/Panel/Indicators/MenuItemFactory.qml:583
178#: qml/Panel/Indicators/MenuItemFactory.qml:583
171msgid "In queue…"
179msgid "In queue…"
172msgstr "Jonossa…"
180msgstr "Jonossa…"
po/fo.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11"PO-Revision-Date: 2014-01-14 20:08+0000\n"
11"PO-Revision-Date: 2014-01-14 20:08+0000\n"
12"Last-Translator: Jógvan Olsen <jeggy@jebster.net>\n"
12"Last-Translator: Jógvan Olsen <jeggy@jebster.net>\n"
13"Language-Team: Faroese <fo@li.org>\n"
13"Language-Team: Faroese <fo@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:16+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -80,10 +80,6 @@ msgstr ""
80msgid "OK"
80msgid "OK"
81msgstr ""
81msgstr ""
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr ""
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr ""
105msgid "See more"
101msgid "See more"
106msgstr ""
102msgstr ""
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr ""
106msgstr ""
111
107
@@ -113,6 +109,10 @@ msgstr ""
113msgid "Recent"
109msgid "Recent"
114msgstr ""
110msgstr ""
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr ""
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr ""
118msgstr ""
@@ -121,15 +121,15 @@ msgstr ""
121msgid "Less..."
121msgid "Less..."
122msgstr ""
122msgstr ""
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr ""
126msgstr ""
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130msgstr ""
130msgstr ""
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr ""
134msgstr ""
135
135
@@ -165,6 +165,14 @@ msgstr ""
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr ""
166msgstr ""
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr ""
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr ""
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170msgstr ""
178msgstr ""
po/fr.po+21−13
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11−"PO-Revision-Date: 2014-07-18 18:31+0000\n"
11+"PO-Revision-Date: 2014-07-26 20:52+0000\n"
12−"Last-Translator: Nicolas Delvaux <Unknown>\n"
12+"Last-Translator: Anne <anneonyme017@gmail.com>\n"
13"Language-Team: French <fr@li.org>\n"
13"Language-Team: French <fr@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-19 06:19+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-27 06:35+0000\n"
18−"X-Generator: Launchpad (build 17114)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -89,10 +89,6 @@ msgstr "Appel d'urgence"
89msgid "OK"
89msgid "OK"
90msgstr "OK"
90msgstr "OK"
91
91
92−#: qml/Components/PageHeader.qml:366
93−msgid "Recent searches"
94−msgstr "Recherches récentes"
95−
96#: qml/Components/PassphraseLockscreen.qml:60
92#: qml/Components/PassphraseLockscreen.qml:60
97#, qt-format
93#, qt-format
98msgid "Hello %1"
94msgid "Hello %1"
@@ -114,7 +110,7 @@ msgstr "VALIDER"
114msgid "See more"
110msgid "See more"
115msgstr "Voir plus"
111msgstr "Voir plus"
116
112
117−#: qml/Components/SeeMore.qml:58
113+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
118msgid "See less"
114msgid "See less"
119msgstr "Voir moins"
115msgstr "Voir moins"
120
116
@@ -122,6 +118,10 @@ msgstr "Voir moins"
122msgid "Recent"
118msgid "Recent"
123msgstr "Récent"
119msgstr "Récent"
124
120
121+#: qml/Dash/GenericScopeView.qml:330
122+msgid "See all"
123+msgstr "Tout voir"
124+
125#: qml/Dash/Previews/PreviewActionCombo.qml:34
125#: qml/Dash/Previews/PreviewActionCombo.qml:34
126msgid "More..."
126msgid "More..."
127msgstr "Plus..."
127msgstr "Plus..."
@@ -130,15 +130,15 @@ msgstr "Plus..."
130msgid "Less..."
130msgid "Less..."
131msgstr "Moins..."
131msgstr "Moins..."
132
132
133−#: qml/Dash/Previews/PreviewRatingInput.qml:82
133+#: qml/Dash/Previews/PreviewRatingInput.qml:81
134msgid "Rate this"
134msgid "Rate this"
135msgstr "Evaluez ceci"
135msgstr "Evaluez ceci"
136
136
137−#: qml/Dash/Previews/PreviewRatingInput.qml:128
137+#: qml/Dash/Previews/PreviewRatingInput.qml:126
138msgid "Add a review"
138msgid "Add a review"
139msgstr "Ajouter un avis"
139msgstr "Ajouter un avis"
140
140
141−#: qml/Dash/Previews/PreviewRatingInput.qml:168
141+#: qml/Dash/Previews/PreviewRatingInput.qml:166
142msgid "Send"
142msgid "Send"
143msgstr "Envoyer"
143msgstr "Envoyer"
144
144
@@ -174,6 +174,14 @@ msgstr "Afficher le mot de passe"
174msgid "Please enter SIM PIN"
174msgid "Please enter SIM PIN"
175msgstr "Entrez le code PIN"
175msgstr "Entrez le code PIN"
176
176
177+#: qml/Panel/ActiveCallHint.qml:77
178+msgid "Tap to return to call..."
179+msgstr "Appuyez pour revenir à l'appel…"
180+
181+#: qml/Panel/ActiveCallHint.qml:90
182+msgid "Conference"
183+msgstr "Conférence"
184+
177#: qml/Panel/Indicators/MenuItemFactory.qml:583
185#: qml/Panel/Indicators/MenuItemFactory.qml:583
178msgid "In queue…"
186msgid "In queue…"
179msgstr "Dans la file d'attente..."
187msgstr "Dans la file d'attente..."
po/gd.po+20−12
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11−"PO-Revision-Date: 2014-07-24 22:26+0000\n"
11+"PO-Revision-Date: 2014-07-25 22:02+0000\n"
12"Last-Translator: GunChleoc <Unknown>\n"
12"Last-Translator: GunChleoc <Unknown>\n"
13"Language-Team: Fòram na Gàidhlig http://www.foramnagaidhlig.net\n"
13"Language-Team: Fòram na Gàidhlig http://www.foramnagaidhlig.net\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-25 07:54+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:16+0000\n"
18−"X-Generator: Launchpad (build 17114)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19"Language: gd\n"
19"Language: gd\n"
20
20
21#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:43
@@ -89,10 +89,6 @@ msgstr "Gairm èiginn"
89msgid "OK"
89msgid "OK"
90msgstr "Ceart ma-thà"
90msgstr "Ceart ma-thà"
91
91
92−#: qml/Components/PageHeader.qml:366
93−msgid "Recent searches"
94−msgstr "Na lorg thu o chionn goirid"
95−
96#: qml/Components/PassphraseLockscreen.qml:60
92#: qml/Components/PassphraseLockscreen.qml:60
97#, qt-format
93#, qt-format
98msgid "Hello %1"
94msgid "Hello %1"
@@ -114,7 +110,7 @@ msgstr "DÈANTA"
114msgid "See more"
110msgid "See more"
115msgstr "Seall barrachd"
111msgstr "Seall barrachd"
116
112
117−#: qml/Components/SeeMore.qml:58
113+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
118msgid "See less"
114msgid "See less"
119msgstr "Seall nas lugha"
115msgstr "Seall nas lugha"
120
116
@@ -122,6 +118,10 @@ msgstr "Seall nas lugha"
122msgid "Recent"
118msgid "Recent"
123msgstr "O chionn goirid"
119msgstr "O chionn goirid"
124
120
121+#: qml/Dash/GenericScopeView.qml:330
122+msgid "See all"
123+msgstr "Seall na h-uile"
124+
125#: qml/Dash/Previews/PreviewActionCombo.qml:34
125#: qml/Dash/Previews/PreviewActionCombo.qml:34
126msgid "More..."
126msgid "More..."
127msgstr "Barrachd..."
127msgstr "Barrachd..."
@@ -130,15 +130,15 @@ msgstr "Barrachd..."
130msgid "Less..."
130msgid "Less..."
131msgstr "Nas lugha..."
131msgstr "Nas lugha..."
132
132
133−#: qml/Dash/Previews/PreviewRatingInput.qml:82
133+#: qml/Dash/Previews/PreviewRatingInput.qml:81
134msgid "Rate this"
134msgid "Rate this"
135msgstr "Rangaich seo"
135msgstr "Rangaich seo"
136
136
137−#: qml/Dash/Previews/PreviewRatingInput.qml:128
137+#: qml/Dash/Previews/PreviewRatingInput.qml:126
138msgid "Add a review"
138msgid "Add a review"
139msgstr "Cuir lèirmheas ris"
139msgstr "Cuir lèirmheas ris"
140
140
141−#: qml/Dash/Previews/PreviewRatingInput.qml:168
141+#: qml/Dash/Previews/PreviewRatingInput.qml:166
142msgid "Send"
142msgid "Send"
143msgstr "Cuir"
143msgstr "Cuir"
144
144
@@ -174,6 +174,14 @@ msgstr "Seall am facal-faire"
174msgid "Please enter SIM PIN"
174msgid "Please enter SIM PIN"
175msgstr "Cuir a-steach SIM PIN"
175msgstr "Cuir a-steach SIM PIN"
176
176
177+#: qml/Panel/ActiveCallHint.qml:77
178+msgid "Tap to return to call..."
179+msgstr "Gnog gus tilleadh dhan ghairm..."
180+
181+#: qml/Panel/ActiveCallHint.qml:90
182+msgid "Conference"
183+msgstr "Gairm co-labhairt"
184+
177#: qml/Panel/Indicators/MenuItemFactory.qml:583
185#: qml/Panel/Indicators/MenuItemFactory.qml:583
178msgid "In queue…"
186msgid "In queue…"
179msgstr "Air a' chiudha…"
187msgstr "Air a' chiudha…"
po/gl.po+20−12
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11−"PO-Revision-Date: 2014-07-21 16:08+0000\n"
11+"PO-Revision-Date: 2014-07-25 17:22+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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-22 07:17+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:16+0000\n"
18−"X-Generator: Launchpad (build 17114)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -84,10 +84,6 @@ msgstr "Chamada de emerxencia"
84msgid "OK"
84msgid "OK"
85msgstr "Aceptar"
85msgstr "Aceptar"
86
86
87−#: qml/Components/PageHeader.qml:366
88−msgid "Recent searches"
89−msgstr "Buscas recentes"
90−
91#: qml/Components/PassphraseLockscreen.qml:60
87#: qml/Components/PassphraseLockscreen.qml:60
92#, qt-format
88#, qt-format
93msgid "Hello %1"
89msgid "Hello %1"
@@ -109,7 +105,7 @@ msgstr "FEITO"
109msgid "See more"
105msgid "See more"
110msgstr "Ver máis"
106msgstr "Ver máis"
111
107
112−#: qml/Components/SeeMore.qml:58
108+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
113msgid "See less"
109msgid "See less"
114msgstr "Ver menos"
110msgstr "Ver menos"
115
111
@@ -117,6 +113,10 @@ msgstr "Ver menos"
117msgid "Recent"
113msgid "Recent"
118msgstr "Recentes"
114msgstr "Recentes"
119
115
116+#: qml/Dash/GenericScopeView.qml:330
117+msgid "See all"
118+msgstr "Ver todo"
119+
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
121msgid "More..."
121msgid "More..."
122msgstr "Máis…"
122msgstr "Máis…"
@@ -125,15 +125,15 @@ msgstr "Máis…"
125msgid "Less..."
125msgid "Less..."
126msgstr "Menos..."
126msgstr "Menos..."
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:82
128+#: qml/Dash/Previews/PreviewRatingInput.qml:81
129msgid "Rate this"
129msgid "Rate this"
130msgstr "Valore isto"
130msgstr "Valore isto"
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:128
132+#: qml/Dash/Previews/PreviewRatingInput.qml:126
133msgid "Add a review"
133msgid "Add a review"
134msgstr "Engadir unha opinión"
134msgstr "Engadir unha opinión"
135
135
136−#: qml/Dash/Previews/PreviewRatingInput.qml:168
136+#: qml/Dash/Previews/PreviewRatingInput.qml:166
137msgid "Send"
137msgid "Send"
138msgstr "Enviar"
138msgstr "Enviar"
139
139
@@ -169,6 +169,14 @@ msgstr "Mostrar contrasinal"
169msgid "Please enter SIM PIN"
169msgid "Please enter SIM PIN"
170msgstr "Introduza o PIN da SIM"
170msgstr "Introduza o PIN da SIM"
171
171
172+#: qml/Panel/ActiveCallHint.qml:77
173+msgid "Tap to return to call..."
174+msgstr "Toque para volver a chamar..."
175+
176+#: qml/Panel/ActiveCallHint.qml:90
177+msgid "Conference"
178+msgstr "Conferencia"
179+
172#: qml/Panel/Indicators/MenuItemFactory.qml:583
180#: qml/Panel/Indicators/MenuItemFactory.qml:583
173msgid "In queue…"
181msgid "In queue…"
174msgstr "Na cola..."
182msgstr "Na cola..."
po/he.po+20−12
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11−"PO-Revision-Date: 2014-07-15 13:20+0000\n"
11+"PO-Revision-Date: 2014-07-25 16:26+0000\n"
12"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
12"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
13"Language-Team: Hebrew <he@li.org>\n"
13"Language-Team: Hebrew <he@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-16 07:27+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:16+0000\n"
18−"X-Generator: Launchpad (build 17112)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -82,10 +82,6 @@ msgstr "שיחת חירום"
82msgid "OK"
82msgid "OK"
83msgstr "אישור"
83msgstr "אישור"
84
84
85−#: qml/Components/PageHeader.qml:366
86−msgid "Recent searches"
87−msgstr "חיפושים אחרונים"
88−
89#: qml/Components/PassphraseLockscreen.qml:60
85#: qml/Components/PassphraseLockscreen.qml:60
90#, qt-format
86#, qt-format
91msgid "Hello %1"
87msgid "Hello %1"
@@ -107,7 +103,7 @@ msgstr "בוצע"
107msgid "See more"
103msgid "See more"
108msgstr "לראות עוד"
104msgstr "לראות עוד"
109
105
110−#: qml/Components/SeeMore.qml:58
106+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
111msgid "See less"
107msgid "See less"
112msgstr "לראות פחות"
108msgstr "לראות פחות"
113
109
@@ -115,6 +111,10 @@ msgstr "לראות פחות"
115msgid "Recent"
111msgid "Recent"
116msgstr "בשימוש לאחרונה"
112msgstr "בשימוש לאחרונה"
117
113
114+#: qml/Dash/GenericScopeView.qml:330
115+msgid "See all"
116+msgstr "להציג הכול"
117+
118#: qml/Dash/Previews/PreviewActionCombo.qml:34
118#: qml/Dash/Previews/PreviewActionCombo.qml:34
119msgid "More..."
119msgid "More..."
120msgstr "עוד…"
120msgstr "עוד…"
@@ -123,15 +123,15 @@ msgstr "עוד…"
123msgid "Less..."
123msgid "Less..."
124msgstr "פחות…"
124msgstr "פחות…"
125
125
126−#: qml/Dash/Previews/PreviewRatingInput.qml:82
126+#: qml/Dash/Previews/PreviewRatingInput.qml:81
127msgid "Rate this"
127msgid "Rate this"
128msgstr "דירוג היישום"
128msgstr "דירוג היישום"
129
129
130−#: qml/Dash/Previews/PreviewRatingInput.qml:128
130+#: qml/Dash/Previews/PreviewRatingInput.qml:126
131msgid "Add a review"
131msgid "Add a review"
132msgstr "הוספת סקירה"
132msgstr "הוספת סקירה"
133
133
134−#: qml/Dash/Previews/PreviewRatingInput.qml:168
134+#: qml/Dash/Previews/PreviewRatingInput.qml:166
135msgid "Send"
135msgid "Send"
136msgstr "שליחה"
136msgstr "שליחה"
137
137
@@ -167,6 +167,14 @@ msgstr "הצגת הססמה"
167msgid "Please enter SIM PIN"
167msgid "Please enter SIM PIN"
168msgstr "נא להזין את קוד ה־<U+200F>SIM"
168msgstr "נא להזין את קוד ה־<U+200F>SIM"
169
169
170+#: qml/Panel/ActiveCallHint.qml:77
171+msgid "Tap to return to call..."
172+msgstr "יש לגעת כדי להחזיר שיחה…"
173+
174+#: qml/Panel/ActiveCallHint.qml:90
175+msgid "Conference"
176+msgstr "ועידה"
177+
170#: qml/Panel/Indicators/MenuItemFactory.qml:583
178#: qml/Panel/Indicators/MenuItemFactory.qml:583
171msgid "In queue…"
179msgid "In queue…"
172msgstr "בתור…"
180msgstr "בתור…"
po/hi.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\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 S. <Unknown>\n"
12"Last-Translator: Siddhanathan S. <Unknown>\n"
13"Language-Team: Hindi <hi@li.org>\n"
13"Language-Team: Hindi <hi@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:16+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -80,10 +80,6 @@ msgstr "आपातकालीन कॉल"
80msgid "OK"
80msgid "OK"
81msgstr ""
81msgstr ""
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr "पिछले खोजों"
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr ""
105msgid "See more"
101msgid "See more"
106msgstr ""
102msgstr ""
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr ""
106msgstr ""
111
107
@@ -113,6 +109,10 @@ msgstr ""
113msgid "Recent"
109msgid "Recent"
114msgstr ""
110msgstr ""
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr ""
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr ""
118msgstr ""
@@ -121,15 +121,15 @@ msgstr ""
121msgid "Less..."
121msgid "Less..."
122msgstr ""
122msgstr ""
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr ""
126msgstr ""
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130msgstr "समीक्षा दे"
130msgstr "समीक्षा दे"
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr "भेजें"
134msgstr "भेजें"
135
135
@@ -165,6 +165,14 @@ msgstr ""
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr ""
166msgstr ""
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr ""
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr ""
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170msgstr ""
178msgstr ""
po/hr.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11"PO-Revision-Date: 2013-06-27 04:14+0000\n"
11"PO-Revision-Date: 2013-06-27 04:14+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: Croatian <hr@li.org>\n"
13"Language-Team: Croatian <hr@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:17+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -80,10 +80,6 @@ msgstr ""
80msgid "OK"
80msgid "OK"
81msgstr ""
81msgstr ""
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr "Nedavne pretrage"
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr ""
105msgid "See more"
101msgid "See more"
106msgstr ""
102msgstr ""
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr ""
106msgstr ""
111
107
@@ -113,6 +109,10 @@ msgstr ""
113msgid "Recent"
109msgid "Recent"
114msgstr ""
110msgstr ""
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr ""
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr ""
118msgstr ""
@@ -121,15 +121,15 @@ msgstr ""
121msgid "Less..."
121msgid "Less..."
122msgstr ""
122msgstr ""
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr ""
126msgstr ""
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130msgstr ""
130msgstr ""
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr ""
134msgstr ""
135
135
@@ -165,6 +165,14 @@ msgstr ""
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr ""
166msgstr ""
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr ""
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr ""
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170msgstr ""
178msgstr ""
po/hu.po+21−13
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11−"PO-Revision-Date: 2014-07-24 08:19+0000\n"
11+"PO-Revision-Date: 2014-07-27 15:04+0000\n"
12−"Last-Translator: Gabor Kelemen <kelemeng@openscope.org>\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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-25 07:54+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-28 06:44+0000\n"
18−"X-Generator: Launchpad (build 17114)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -84,10 +84,6 @@ msgstr "Vészhívás"
84msgid "OK"
84msgid "OK"
85msgstr "OK"
85msgstr "OK"
86
86
87−#: qml/Components/PageHeader.qml:366
88−msgid "Recent searches"
89−msgstr "Legutóbbi keresések"
90−
91#: qml/Components/PassphraseLockscreen.qml:60
87#: qml/Components/PassphraseLockscreen.qml:60
92#, qt-format
88#, qt-format
93msgid "Hello %1"
89msgid "Hello %1"
@@ -109,7 +105,7 @@ msgstr "KÉSZ"
109msgid "See more"
105msgid "See more"
110msgstr "Több"
106msgstr "Több"
111
107
112−#: qml/Components/SeeMore.qml:58
108+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
113msgid "See less"
109msgid "See less"
114msgstr "Kevesebb"
110msgstr "Kevesebb"
115
111
@@ -117,6 +113,10 @@ msgstr "Kevesebb"
117msgid "Recent"
113msgid "Recent"
118msgstr "Legutóbbi"
114msgstr "Legutóbbi"
119
115
116+#: qml/Dash/GenericScopeView.qml:330
117+msgid "See all"
118+msgstr "Összes megtekintése"
119+
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
121msgid "More..."
121msgid "More..."
122msgstr "Több…"
122msgstr "Több…"
@@ -125,15 +125,15 @@ msgstr "Több…"
125msgid "Less..."
125msgid "Less..."
126msgstr "Kevesebb…"
126msgstr "Kevesebb…"
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:82
128+#: qml/Dash/Previews/PreviewRatingInput.qml:81
129msgid "Rate this"
129msgid "Rate this"
130msgstr "Osztályzás"
130msgstr "Osztályzás"
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:128
132+#: qml/Dash/Previews/PreviewRatingInput.qml:126
133msgid "Add a review"
133msgid "Add a review"
134msgstr "Értékelés hozzáadása"
134msgstr "Értékelés hozzáadása"
135
135
136−#: qml/Dash/Previews/PreviewRatingInput.qml:168
136+#: qml/Dash/Previews/PreviewRatingInput.qml:166
137msgid "Send"
137msgid "Send"
138msgstr "Küldés"
138msgstr "Küldés"
139
139
@@ -169,6 +169,14 @@ msgstr "Jelszó megjelenítése"
169msgid "Please enter SIM PIN"
169msgid "Please enter SIM PIN"
170msgstr "Adja meg a SIM PIN kódját"
170msgstr "Adja meg a SIM PIN kódját"
171
171
172+#: qml/Panel/ActiveCallHint.qml:77
173+msgid "Tap to return to call..."
174+msgstr "Érintse meg, hogy visszatérjen a híváshoz..."
175+
176+#: qml/Panel/ActiveCallHint.qml:90
177+msgid "Conference"
178+msgstr "Konferencia"
179+
172#: qml/Panel/Indicators/MenuItemFactory.qml:583
180#: qml/Panel/Indicators/MenuItemFactory.qml:583
173msgid "In queue…"
181msgid "In queue…"
174msgstr "Sorban…"
182msgstr "Sorban…"
po/hy.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11"PO-Revision-Date: 2013-06-27 04:43+0000\n"
11"PO-Revision-Date: 2013-06-27 04:43+0000\n"
12"Last-Translator: iAbaS <sosabazyan@yandex.ru>\n"
12"Last-Translator: iAbaS <sosabazyan@yandex.ru>\n"
13"Language-Team: Armenian <hy@li.org>\n"
13"Language-Team: Armenian <hy@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:16+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -80,10 +80,6 @@ msgstr ""
80msgid "OK"
80msgid "OK"
81msgstr ""
81msgstr ""
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr "Վերջին որոնումներ"
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr ""
105msgid "See more"
101msgid "See more"
106msgstr ""
102msgstr ""
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr ""
106msgstr ""
111
107
@@ -113,6 +109,10 @@ msgstr ""
113msgid "Recent"
109msgid "Recent"
114msgstr ""
110msgstr ""
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr ""
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr ""
118msgstr ""
@@ -121,15 +121,15 @@ msgstr ""
121msgid "Less..."
121msgid "Less..."
122msgstr ""
122msgstr ""
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr ""
126msgstr ""
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130msgstr ""
130msgstr ""
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr ""
134msgstr ""
135
135
@@ -165,6 +165,14 @@ msgstr ""
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr ""
166msgstr ""
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr ""
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr ""
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170msgstr ""
178msgstr ""
po/id.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:16+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -80,10 +80,6 @@ msgstr ""
80msgid "OK"
80msgid "OK"
81msgstr ""
81msgstr ""
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr ""
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr ""
105msgid "See more"
101msgid "See more"
106msgstr ""
102msgstr ""
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr ""
106msgstr ""
111
107
@@ -113,6 +109,10 @@ msgstr ""
113msgid "Recent"
109msgid "Recent"
114msgstr ""
110msgstr ""
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr ""
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr ""
118msgstr ""
@@ -121,15 +121,15 @@ msgstr ""
121msgid "Less..."
121msgid "Less..."
122msgstr ""
122msgstr ""
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr ""
126msgstr ""
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130msgstr ""
130msgstr ""
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr ""
134msgstr ""
135
135
@@ -165,6 +165,14 @@ msgstr ""
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr ""
166msgstr ""
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr ""
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr ""
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170msgstr ""
178msgstr ""
po/is.po+19−11
@@ -9,15 +9,15 @@ 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: 2014-07-07 12:15+0100\n"
12+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
13"PO-Revision-Date: 2014-07-23 05:57+0000\n"
13"PO-Revision-Date: 2014-07-23 05:57+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"
16"MIME-Version: 1.0\n"
16"MIME-Version: 1.0\n"
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−"X-Launchpad-Export-Date: 2014-07-24 06:32+0000\n"
19+"X-Launchpad-Export-Date: 2014-07-26 07:16+0000\n"
20−"X-Generator: Launchpad (build 17114)\n"
20+"X-Generator: Launchpad (build 17131)\n"
21"Language: is\n"
21"Language: is\n"
22
22
23#: plugins/Unity/Launcher/launcheritem.cpp:43
23#: plugins/Unity/Launcher/launcheritem.cpp:43
@@ -86,10 +86,6 @@ msgstr "Neyðarsímtal"
86msgid "OK"
86msgid "OK"
87msgstr "Í lagi"
87msgstr "Í lagi"
88
88
89−#: qml/Components/PageHeader.qml:366
90−msgid "Recent searches"
91−msgstr "Nýlegar leitir"
92−
93#: qml/Components/PassphraseLockscreen.qml:60
89#: qml/Components/PassphraseLockscreen.qml:60
94#, qt-format
90#, qt-format
95msgid "Hello %1"
91msgid "Hello %1"
@@ -111,7 +107,7 @@ msgstr "BÚIÐ"
111msgid "See more"
107msgid "See more"
112msgstr "Sjá meira"
108msgstr "Sjá meira"
113
109
114−#: qml/Components/SeeMore.qml:58
110+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
115msgid "See less"
111msgid "See less"
116msgstr "Sjá minna"
112msgstr "Sjá minna"
117
113
@@ -119,6 +115,10 @@ msgstr "Sjá minna"
119msgid "Recent"
115msgid "Recent"
120msgstr "Nýlegt"
116msgstr "Nýlegt"
121
117
118+#: qml/Dash/GenericScopeView.qml:330
119+msgid "See all"
120+msgstr ""
121+
122#: qml/Dash/Previews/PreviewActionCombo.qml:34
122#: qml/Dash/Previews/PreviewActionCombo.qml:34
123msgid "More..."
123msgid "More..."
124msgstr "Meira..."
124msgstr "Meira..."
@@ -127,15 +127,15 @@ msgstr "Meira..."
127msgid "Less..."
127msgid "Less..."
128msgstr "Minna..."
128msgstr "Minna..."
129
129
130−#: qml/Dash/Previews/PreviewRatingInput.qml:82
130+#: qml/Dash/Previews/PreviewRatingInput.qml:81
131msgid "Rate this"
131msgid "Rate this"
132msgstr "Gefa þessu einkunn"
132msgstr "Gefa þessu einkunn"
133
133
134−#: qml/Dash/Previews/PreviewRatingInput.qml:128
134+#: qml/Dash/Previews/PreviewRatingInput.qml:126
135msgid "Add a review"
135msgid "Add a review"
136msgstr "Gefa umsögn"
136msgstr "Gefa umsögn"
137
137
138−#: qml/Dash/Previews/PreviewRatingInput.qml:168
138+#: qml/Dash/Previews/PreviewRatingInput.qml:166
139msgid "Send"
139msgid "Send"
140msgstr "Senda"
140msgstr "Senda"
141
141
@@ -171,6 +171,14 @@ msgstr "Birta lykilorð"
171msgid "Please enter SIM PIN"
171msgid "Please enter SIM PIN"
172msgstr "Settu inn PIN fyrir SIM"
172msgstr "Settu inn PIN fyrir SIM"
173
173
174+#: qml/Panel/ActiveCallHint.qml:77
175+msgid "Tap to return to call..."
176+msgstr ""
177+
178+#: qml/Panel/ActiveCallHint.qml:90
179+msgid "Conference"
180+msgstr ""
181+
174#: qml/Panel/Indicators/MenuItemFactory.qml:583
182#: qml/Panel/Indicators/MenuItemFactory.qml:583
175msgid "In queue…"
183msgid "In queue…"
176msgstr "Í biðröð..."
184msgstr "Í biðröð..."
po/it.po+20−12
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11−"PO-Revision-Date: 2014-07-09 07:07+0000\n"
11+"PO-Revision-Date: 2014-07-25 16:09+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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-10 07:29+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:16+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -87,10 +87,6 @@ msgstr "Chiamata di emergenza"
87msgid "OK"
87msgid "OK"
88msgstr "OK"
88msgstr "OK"
89
89
90−#: qml/Components/PageHeader.qml:366
91−msgid "Recent searches"
92−msgstr "Ricerche recenti"
93−
94#: qml/Components/PassphraseLockscreen.qml:60
90#: qml/Components/PassphraseLockscreen.qml:60
95#, qt-format
91#, qt-format
96msgid "Hello %1"
92msgid "Hello %1"
@@ -112,7 +108,7 @@ msgstr "Fatto"
112msgid "See more"
108msgid "See more"
113msgstr "Mostra di più"
109msgstr "Mostra di più"
114
110
115−#: qml/Components/SeeMore.qml:58
111+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
116msgid "See less"
112msgid "See less"
117msgstr "Mostra meno"
113msgstr "Mostra meno"
118
114
@@ -120,6 +116,10 @@ msgstr "Mostra meno"
120msgid "Recent"
116msgid "Recent"
121msgstr "Recenti"
117msgstr "Recenti"
122
118
119+#: qml/Dash/GenericScopeView.qml:330
120+msgid "See all"
121+msgstr "Mostra tutto"
122+
123#: qml/Dash/Previews/PreviewActionCombo.qml:34
123#: qml/Dash/Previews/PreviewActionCombo.qml:34
124msgid "More..."
124msgid "More..."
125msgstr "Altro..."
125msgstr "Altro..."
@@ -128,15 +128,15 @@ msgstr "Altro..."
128msgid "Less..."
128msgid "Less..."
129msgstr "Meno..."
129msgstr "Meno..."
130
130
131−#: qml/Dash/Previews/PreviewRatingInput.qml:82
131+#: qml/Dash/Previews/PreviewRatingInput.qml:81
132msgid "Rate this"
132msgid "Rate this"
133msgstr "Valuta"
133msgstr "Valuta"
134
134
135−#: qml/Dash/Previews/PreviewRatingInput.qml:128
135+#: qml/Dash/Previews/PreviewRatingInput.qml:126
136msgid "Add a review"
136msgid "Add a review"
137msgstr "Aggiungi una recensione"
137msgstr "Aggiungi una recensione"
138
138
139−#: qml/Dash/Previews/PreviewRatingInput.qml:168
139+#: qml/Dash/Previews/PreviewRatingInput.qml:166
140msgid "Send"
140msgid "Send"
141msgstr "Invia"
141msgstr "Invia"
142
142
@@ -172,6 +172,14 @@ msgstr "Mostra password"
172msgid "Please enter SIM PIN"
172msgid "Please enter SIM PIN"
173msgstr "Inserire il codice PIN"
173msgstr "Inserire il codice PIN"
174
174
175+#: qml/Panel/ActiveCallHint.qml:77
176+msgid "Tap to return to call..."
177+msgstr "Tocca per tornare alla chiamata..."
178+
179+#: qml/Panel/ActiveCallHint.qml:90
180+msgid "Conference"
181+msgstr "Conferenza"
182+
175#: qml/Panel/Indicators/MenuItemFactory.qml:583
183#: qml/Panel/Indicators/MenuItemFactory.qml:583
176msgid "In queue…"
184msgid "In queue…"
177msgstr "In coda..."
185msgstr "In coda..."
po/ja.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11"PO-Revision-Date: 2014-01-18 07:01+0000\n"
11"PO-Revision-Date: 2014-01-18 07:01+0000\n"
12"Last-Translator: Shushi Kurose <md81bird@hitaki.net>\n"
12"Last-Translator: Shushi Kurose <md81bird@hitaki.net>\n"
13"Language-Team: Japanese <ja@li.org>\n"
13"Language-Team: Japanese <ja@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:16+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -80,10 +80,6 @@ msgstr ""
80msgid "OK"
80msgid "OK"
81msgstr ""
81msgstr ""
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr "最近の検索"
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr ""
105msgid "See more"
101msgid "See more"
106msgstr ""
102msgstr ""
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr ""
106msgstr ""
111
107
@@ -113,6 +109,10 @@ msgstr ""
113msgid "Recent"
109msgid "Recent"
114msgstr ""
110msgstr ""
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr ""
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr ""
118msgstr ""
@@ -121,15 +121,15 @@ msgstr ""
121msgid "Less..."
121msgid "Less..."
122msgstr ""
122msgstr ""
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr ""
126msgstr ""
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130msgstr ""
130msgstr ""
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr "送信"
134msgstr "送信"
135
135
@@ -165,6 +165,14 @@ msgstr "パスワードを表示"
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr ""
166msgstr ""
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr ""
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr ""
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170msgstr ""
178msgstr ""
po/km.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11"PO-Revision-Date: 2014-07-16 01:37+0000\n"
11"PO-Revision-Date: 2014-07-16 01:37+0000\n"
12"Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>\n"
12"Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>\n"
13"Language-Team: Khmer <km@li.org>\n"
13"Language-Team: Khmer <km@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-17 06:38+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:16+0000\n"
18−"X-Generator: Launchpad (build 17114)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -84,10 +84,6 @@ msgstr "ការ​ហៅ​ពេល​អាសន្ន"
84msgid "OK"
84msgid "OK"
85msgstr "យល់ព្រម"
85msgstr "យល់ព្រម"
86
86
87−#: qml/Components/PageHeader.qml:366
88−msgid "Recent searches"
89−msgstr "ការ​ស្វែងរក​ថ្មី"
90−
91#: qml/Components/PassphraseLockscreen.qml:60
87#: qml/Components/PassphraseLockscreen.qml:60
92#, qt-format
88#, qt-format
93msgid "Hello %1"
89msgid "Hello %1"
@@ -109,7 +105,7 @@ msgstr "រួចរាល់"
109msgid "See more"
105msgid "See more"
110msgstr "មើល​ច្រើន​ទៀត"
106msgstr "មើល​ច្រើន​ទៀត"
111
107
112−#: qml/Components/SeeMore.qml:58
108+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
113msgid "See less"
109msgid "See less"
114msgstr "មើល​តិច​ជាង"
110msgstr "មើល​តិច​ជាង"
115
111
@@ -117,6 +113,10 @@ msgstr "មើល​តិច​ជាង"
117msgid "Recent"
113msgid "Recent"
118msgstr "បច្ចុប្បន្ន"
114msgstr "បច្ចុប្បន្ន"
119
115
116+#: qml/Dash/GenericScopeView.qml:330
117+msgid "See all"
118+msgstr ""
119+
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
121msgid "More..."
121msgid "More..."
122msgstr "ច្រើនជាង​..."
122msgstr "ច្រើនជាង​..."
@@ -125,15 +125,15 @@ msgstr "ច្រើនជាង​..."
125msgid "Less..."
125msgid "Less..."
126msgstr "តិច​ជាង..."
126msgstr "តិច​ជាង..."
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:82
128+#: qml/Dash/Previews/PreviewRatingInput.qml:81
129msgid "Rate this"
129msgid "Rate this"
130msgstr "វាយតម្លៃ​វា"
130msgstr "វាយតម្លៃ​វា"
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:128
132+#: qml/Dash/Previews/PreviewRatingInput.qml:126
133msgid "Add a review"
133msgid "Add a review"
134msgstr "បន្ថែម​ការ​ពិនិត្យ"
134msgstr "បន្ថែម​ការ​ពិនិត្យ"
135
135
136−#: qml/Dash/Previews/PreviewRatingInput.qml:168
136+#: qml/Dash/Previews/PreviewRatingInput.qml:166
137msgid "Send"
137msgid "Send"
138msgstr "ផ្ញើ"
138msgstr "ផ្ញើ"
139
139
@@ -169,6 +169,14 @@ msgstr "បង្ហាញ​ពាក្យ​សម្ងាត់"
169msgid "Please enter SIM PIN"
169msgid "Please enter SIM PIN"
170msgstr "បញ្ចូល​កូដ PIN របស់​ស៊ីមកាត"
170msgstr "បញ្ចូល​កូដ PIN របស់​ស៊ីមកាត"
171
171
172+#: qml/Panel/ActiveCallHint.qml:77
173+msgid "Tap to return to call..."
174+msgstr ""
175+
176+#: qml/Panel/ActiveCallHint.qml:90
177+msgid "Conference"
178+msgstr ""
179+
172#: qml/Panel/Indicators/MenuItemFactory.qml:583
180#: qml/Panel/Indicators/MenuItemFactory.qml:583
173msgid "In queue…"
181msgid "In queue…"
174msgstr "ក្នុងជួរ…"
182msgstr "ក្នុងជួរ…"
po/kn.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:16+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -80,10 +80,6 @@ msgstr ""
80msgid "OK"
80msgid "OK"
81msgstr ""
81msgstr ""
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr "ಇತ್ತೀಚಿನ ಹುಡುಕಾಟಗಳು"
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr ""
105msgid "See more"
101msgid "See more"
106msgstr ""
102msgstr ""
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr ""
106msgstr ""
111
107
@@ -113,6 +109,10 @@ msgstr ""
113msgid "Recent"
109msgid "Recent"
114msgstr ""
110msgstr ""
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr ""
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr ""
118msgstr ""
@@ -121,15 +121,15 @@ msgstr ""
121msgid "Less..."
121msgid "Less..."
122msgstr ""
122msgstr ""
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr ""
126msgstr ""
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130msgstr ""
130msgstr ""
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr ""
134msgstr ""
135
135
@@ -165,6 +165,14 @@ msgstr ""
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr ""
166msgstr ""
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr ""
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr ""
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170msgstr ""
178msgstr ""
po/ko.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11"PO-Revision-Date: 2014-07-17 03:56+0000\n"
11"PO-Revision-Date: 2014-07-17 03:56+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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-18 05:28+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:16+0000\n"
18−"X-Generator: Launchpad (build 17114)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -82,10 +82,6 @@ msgstr "긴급 통화"
82msgid "OK"
82msgid "OK"
83msgstr "확인"
83msgstr "확인"
84
84
85−#: qml/Components/PageHeader.qml:366
86−msgid "Recent searches"
87−msgstr "최근 검색"
88−
89#: qml/Components/PassphraseLockscreen.qml:60
85#: qml/Components/PassphraseLockscreen.qml:60
90#, qt-format
86#, qt-format
91msgid "Hello %1"
87msgid "Hello %1"
@@ -107,7 +103,7 @@ msgstr "완료"
107msgid "See more"
103msgid "See more"
108msgstr "더 보기"
104msgstr "더 보기"
109
105
110−#: qml/Components/SeeMore.qml:58
106+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
111msgid "See less"
107msgid "See less"
112msgstr "간단히 표시하기"
108msgstr "간단히 표시하기"
113
109
@@ -115,6 +111,10 @@ msgstr "간단히 표시하기"
115msgid "Recent"
111msgid "Recent"
116msgstr "최근"
112msgstr "최근"
117
113
114+#: qml/Dash/GenericScopeView.qml:330
115+msgid "See all"
116+msgstr ""
117+
118#: qml/Dash/Previews/PreviewActionCombo.qml:34
118#: qml/Dash/Previews/PreviewActionCombo.qml:34
119msgid "More..."
119msgid "More..."
120msgstr "더 보기..."
120msgstr "더 보기..."
@@ -123,15 +123,15 @@ msgstr "더 보기..."
123msgid "Less..."
123msgid "Less..."
124msgstr "간단하게..."
124msgstr "간단하게..."
125
125
126−#: qml/Dash/Previews/PreviewRatingInput.qml:82
126+#: qml/Dash/Previews/PreviewRatingInput.qml:81
127msgid "Rate this"
127msgid "Rate this"
128msgstr "이 애플리케이션 평가하기"
128msgstr "이 애플리케이션 평가하기"
129
129
130−#: qml/Dash/Previews/PreviewRatingInput.qml:128
130+#: qml/Dash/Previews/PreviewRatingInput.qml:126
131msgid "Add a review"
131msgid "Add a review"
132msgstr "평가 제출하기"
132msgstr "평가 제출하기"
133
133
134−#: qml/Dash/Previews/PreviewRatingInput.qml:168
134+#: qml/Dash/Previews/PreviewRatingInput.qml:166
135msgid "Send"
135msgid "Send"
136msgstr "보내기"
136msgstr "보내기"
137
137
@@ -167,6 +167,14 @@ msgstr "비밀 번호 보기"
167msgid "Please enter SIM PIN"
167msgid "Please enter SIM PIN"
168msgstr "심카드의 PIN 번호를 입력하세요."
168msgstr "심카드의 PIN 번호를 입력하세요."
169
169
170+#: qml/Panel/ActiveCallHint.qml:77
171+msgid "Tap to return to call..."
172+msgstr ""
173+
174+#: qml/Panel/ActiveCallHint.qml:90
175+msgid "Conference"
176+msgstr ""
177+
170#: qml/Panel/Indicators/MenuItemFactory.qml:583
178#: qml/Panel/Indicators/MenuItemFactory.qml:583
171msgid "In queue…"
179msgid "In queue…"
172msgstr "재생 중..."
180msgstr "재생 중..."
po/ky.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:16+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -80,10 +80,6 @@ msgstr ""
80msgid "OK"
80msgid "OK"
81msgstr ""
81msgstr ""
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr "Соңку издөөлөр"
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr ""
105msgid "See more"
101msgid "See more"
106msgstr ""
102msgstr ""
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr ""
106msgstr ""
111
107
@@ -113,6 +109,10 @@ msgstr ""
113msgid "Recent"
109msgid "Recent"
114msgstr ""
110msgstr ""
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr ""
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr ""
118msgstr ""
@@ -121,15 +121,15 @@ msgstr ""
121msgid "Less..."
121msgid "Less..."
122msgstr ""
122msgstr ""
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr ""
126msgstr ""
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130msgstr ""
130msgstr ""
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr ""
134msgstr ""
135
135
@@ -165,6 +165,14 @@ msgstr ""
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr ""
166msgstr ""
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr ""
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr ""
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170msgstr ""
178msgstr ""
po/lo.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:16+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -80,10 +80,6 @@ msgstr ""
80msgid "OK"
80msgid "OK"
81msgstr ""
81msgstr ""
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr ""
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr ""
105msgid "See more"
101msgid "See more"
106msgstr ""
102msgstr ""
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr ""
106msgstr ""
111
107
@@ -113,6 +109,10 @@ msgstr ""
113msgid "Recent"
109msgid "Recent"
114msgstr ""
110msgstr ""
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr ""
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr ""
118msgstr ""
@@ -121,15 +121,15 @@ msgstr ""
121msgid "Less..."
121msgid "Less..."
122msgstr ""
122msgstr ""
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr ""
126msgstr ""
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130msgstr ""
130msgstr ""
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr "ສົ່ງ"
134msgstr "ສົ່ງ"
135
135
@@ -165,6 +165,14 @@ msgstr ""
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr ""
166msgstr ""
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr ""
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr ""
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170msgstr ""
178msgstr ""
po/lt.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:17+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -83,10 +83,6 @@ msgstr "Pagalbos skambutis"
83msgid "OK"
83msgid "OK"
84msgstr ""
84msgstr ""
85
85
86−#: qml/Components/PageHeader.qml:366
87−msgid "Recent searches"
88−msgstr "Paskiausios paieškos"
89−
90#: qml/Components/PassphraseLockscreen.qml:60
86#: qml/Components/PassphraseLockscreen.qml:60
91#, qt-format
87#, qt-format
92msgid "Hello %1"
88msgid "Hello %1"
@@ -108,7 +104,7 @@ msgstr ""
108msgid "See more"
104msgid "See more"
109msgstr ""
105msgstr ""
110
106
111−#: qml/Components/SeeMore.qml:58
107+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
112msgid "See less"
108msgid "See less"
113msgstr ""
109msgstr ""
114
110
@@ -116,6 +112,10 @@ msgstr ""
116msgid "Recent"
112msgid "Recent"
117msgstr "Paskiausieji"
113msgstr "Paskiausieji"
118
114
115+#: qml/Dash/GenericScopeView.qml:330
116+msgid "See all"
117+msgstr ""
118+
119#: qml/Dash/Previews/PreviewActionCombo.qml:34
119#: qml/Dash/Previews/PreviewActionCombo.qml:34
120msgid "More..."
120msgid "More..."
121msgstr "Daugiau..."
121msgstr "Daugiau..."
@@ -124,15 +124,15 @@ msgstr "Daugiau..."
124msgid "Less..."
124msgid "Less..."
125msgstr "Mažiau..."
125msgstr "Mažiau..."
126
126
127−#: qml/Dash/Previews/PreviewRatingInput.qml:82
127+#: qml/Dash/Previews/PreviewRatingInput.qml:81
128msgid "Rate this"
128msgid "Rate this"
129msgstr "Įvertinkite tai"
129msgstr "Įvertinkite tai"
130
130
131−#: qml/Dash/Previews/PreviewRatingInput.qml:128
131+#: qml/Dash/Previews/PreviewRatingInput.qml:126
132msgid "Add a review"
132msgid "Add a review"
133msgstr "Pridėkite apžvalgą"
133msgstr "Pridėkite apžvalgą"
134
134
135−#: qml/Dash/Previews/PreviewRatingInput.qml:168
135+#: qml/Dash/Previews/PreviewRatingInput.qml:166
136msgid "Send"
136msgid "Send"
137msgstr "Siųsti"
137msgstr "Siųsti"
138
138
@@ -168,6 +168,14 @@ msgstr "Rodyti slaptažodį"
168msgid "Please enter SIM PIN"
168msgid "Please enter SIM PIN"
169msgstr "Įveskite SIM kortelės PIN kodą"
169msgstr "Įveskite SIM kortelės PIN kodą"
170
170
171+#: qml/Panel/ActiveCallHint.qml:77
172+msgid "Tap to return to call..."
173+msgstr ""
174+
175+#: qml/Panel/ActiveCallHint.qml:90
176+msgid "Conference"
177+msgstr ""
178+
171#: qml/Panel/Indicators/MenuItemFactory.qml:583
179#: qml/Panel/Indicators/MenuItemFactory.qml:583
172msgid "In queue…"
180msgid "In queue…"
173msgstr ""
181msgstr ""
po/lv.po+23−15
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11−"PO-Revision-Date: 2014-07-15 12:13+0000\n"
11+"PO-Revision-Date: 2014-07-26 16:21+0000\n"
12"Last-Translator: Jānis-Marks Gailis <jm-gailis@fai-vianet.fr>\n"
12"Last-Translator: Jānis-Marks Gailis <jm-gailis@fai-vianet.fr>\n"
13"Language-Team: Latvian <lv@li.org>\n"
13"Language-Team: Latvian <lv@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-16 07:27+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-27 06:35+0000\n"
18−"X-Generator: Launchpad (build 17112)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -80,10 +80,6 @@ msgstr "Neatliekamās Palīdzības zvans"
80msgid "OK"
80msgid "OK"
81msgstr "LABI"
81msgstr "LABI"
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr "Nesen veiktās meklēšanas"
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr "IZDARĪTS"
105msgid "See more"
101msgid "See more"
106msgstr "Redzēt vairāk"
102msgstr "Redzēt vairāk"
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr "Redzēt mazāk"
106msgstr "Redzēt mazāk"
111
107
@@ -113,6 +109,10 @@ msgstr "Redzēt mazāk"
113msgid "Recent"
109msgid "Recent"
114msgstr "Nesens"
110msgstr "Nesens"
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr "Skatīt visus"
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr "Vairāk..."
118msgstr "Vairāk..."
@@ -121,15 +121,15 @@ msgstr "Vairāk..."
121msgid "Less..."
121msgid "Less..."
122msgstr "Mazāk..."
122msgstr "Mazāk..."
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr "Novērtēt šo"
126msgstr "Novērtēt šo"
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130msgstr "Komentēt"
130msgstr "Komentēt"
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr "Sūtīt"
134msgstr "Sūtīt"
135
135
@@ -165,13 +165,21 @@ msgstr "Rādīt paroli"
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr "Lūdzu ievadiet SIM PIN"
166msgstr "Lūdzu ievadiet SIM PIN"
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr ""
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr "Konference"
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170msgstr ""
178msgstr ""
171
179
172#: qml/Panel/Indicators/MenuItemFactory.qml:587
180#: qml/Panel/Indicators/MenuItemFactory.qml:587
173msgid "Downloading"
181msgid "Downloading"
174−msgstr ""
182+msgstr "Lejupielādē"
175
183
176#: qml/Panel/Indicators/MenuItemFactory.qml:589
184#: qml/Panel/Indicators/MenuItemFactory.qml:589
177msgid "Paused, tap to resume"
185msgid "Paused, tap to resume"
@@ -179,11 +187,11 @@ msgstr ""
179
187
180#: qml/Panel/Indicators/MenuItemFactory.qml:591
188#: qml/Panel/Indicators/MenuItemFactory.qml:591
181msgid "Canceled"
189msgid "Canceled"
182−msgstr ""
190+msgstr "Atcelts"
183
191
184#: qml/Panel/Indicators/MenuItemFactory.qml:593
192#: qml/Panel/Indicators/MenuItemFactory.qml:593
185msgid "Finished"
193msgid "Finished"
186−msgstr ""
194+msgstr "Pabeigts"
187
195
188#: qml/Panel/Indicators/MenuItemFactory.qml:595
196#: qml/Panel/Indicators/MenuItemFactory.qml:595
189msgid "Failed, tap to retry"
197msgid "Failed, tap to retry"
po/ml.po+20−12
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\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: Stym alfaZ <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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:17+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -82,10 +82,6 @@ msgstr "അടിയന്തിര വിളി"
82msgid "OK"
82msgid "OK"
83msgstr ""
83msgstr ""
84
84
85−#: qml/Components/PageHeader.qml:366
86−msgid "Recent searches"
87−msgstr "സമീപകാല തിരയലുകള്‍"
88−
89#: qml/Components/PassphraseLockscreen.qml:60
85#: qml/Components/PassphraseLockscreen.qml:60
90#, qt-format
86#, qt-format
91msgid "Hello %1"
87msgid "Hello %1"
@@ -107,7 +103,7 @@ msgstr ""
107msgid "See more"
103msgid "See more"
108msgstr ""
104msgstr ""
109
105
110−#: qml/Components/SeeMore.qml:58
106+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
111msgid "See less"
107msgid "See less"
112msgstr ""
108msgstr ""
113
109
@@ -115,6 +111,10 @@ msgstr ""
115msgid "Recent"
111msgid "Recent"
116msgstr ""
112msgstr ""
117
113
114+#: qml/Dash/GenericScopeView.qml:330
115+msgid "See all"
116+msgstr ""
117+
118#: qml/Dash/Previews/PreviewActionCombo.qml:34
118#: qml/Dash/Previews/PreviewActionCombo.qml:34
119msgid "More..."
119msgid "More..."
120msgstr ""
120msgstr ""
@@ -123,15 +123,15 @@ msgstr ""
123msgid "Less..."
123msgid "Less..."
124msgstr ""
124msgstr ""
125
125
126−#: qml/Dash/Previews/PreviewRatingInput.qml:82
126+#: qml/Dash/Previews/PreviewRatingInput.qml:81
127msgid "Rate this"
127msgid "Rate this"
128msgstr "ഇത് അവലോകനം ചെയ്യുക"
128msgstr "ഇത് അവലോകനം ചെയ്യുക"
129
129
130−#: qml/Dash/Previews/PreviewRatingInput.qml:128
130+#: qml/Dash/Previews/PreviewRatingInput.qml:126
131msgid "Add a review"
131msgid "Add a review"
132msgstr "ഒരു അവലോകനം ചേര്‍ക്കുക"
132msgstr "ഒരു അവലോകനം ചേര്‍ക്കുക"
133
133
134−#: qml/Dash/Previews/PreviewRatingInput.qml:168
134+#: qml/Dash/Previews/PreviewRatingInput.qml:166
135msgid "Send"
135msgid "Send"
136msgstr "അയയ്‌ക്കുക"
136msgstr "അയയ്‌ക്കുക"
137
137
@@ -167,6 +167,14 @@ msgstr "രഹസ്യവാക്ക് കാണിക്കുക"
167msgid "Please enter SIM PIN"
167msgid "Please enter SIM PIN"
168msgstr ""
168msgstr ""
169
169
170+#: qml/Panel/ActiveCallHint.qml:77
171+msgid "Tap to return to call..."
172+msgstr ""
173+
174+#: qml/Panel/ActiveCallHint.qml:90
175+msgid "Conference"
176+msgstr ""
177+
170#: qml/Panel/Indicators/MenuItemFactory.qml:583
178#: qml/Panel/Indicators/MenuItemFactory.qml:583
171msgid "In queue…"
179msgid "In queue…"
172msgstr ""
180msgstr ""
po/mr.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:17+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -80,10 +80,6 @@ msgstr ""
80msgid "OK"
80msgid "OK"
81msgstr ""
81msgstr ""
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr ""
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr ""
105msgid "See more"
101msgid "See more"
106msgstr ""
102msgstr ""
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr ""
106msgstr ""
111
107
@@ -113,6 +109,10 @@ msgstr ""
113msgid "Recent"
109msgid "Recent"
114msgstr ""
110msgstr ""
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr ""
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr ""
118msgstr ""
@@ -121,15 +121,15 @@ msgstr ""
121msgid "Less..."
121msgid "Less..."
122msgstr ""
122msgstr ""
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr ""
126msgstr ""
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130msgstr ""
130msgstr ""
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr ""
134msgstr ""
135
135
@@ -165,6 +165,14 @@ msgstr ""
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr ""
166msgstr ""
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr ""
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr ""
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170msgstr ""
178msgstr ""
po/ms.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11"PO-Revision-Date: 2014-01-17 09:05+0000\n"
11"PO-Revision-Date: 2014-01-17 09:05+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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:17+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -80,10 +80,6 @@ msgstr "panggilan Kecemasan"
80msgid "OK"
80msgid "OK"
81msgstr ""
81msgstr ""
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr "Gelintar baru-baru ini"
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr ""
105msgid "See more"
101msgid "See more"
106msgstr ""
102msgstr ""
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr ""
106msgstr ""
111
107
@@ -113,6 +109,10 @@ msgstr ""
113msgid "Recent"
109msgid "Recent"
114msgstr ""
110msgstr ""
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr ""
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr ""
118msgstr ""
@@ -121,15 +121,15 @@ msgstr ""
121msgid "Less..."
121msgid "Less..."
122msgstr ""
122msgstr ""
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr "Kadar ini"
126msgstr "Kadar ini"
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130msgstr "Tambah ulasan"
130msgstr "Tambah ulasan"
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr "Hantar"
134msgstr "Hantar"
135
135
@@ -165,6 +165,14 @@ msgstr "Tunjuk kata laluan"
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr ""
166msgstr ""
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr ""
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr ""
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170msgstr ""
178msgstr ""
po/my.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:16+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -80,10 +80,6 @@ msgstr "အရေးပေါ်ခေါ်မည်"
80msgid "OK"
80msgid "OK"
81msgstr ""
81msgstr ""
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr "မကြာသေးခင်က ရှာဖွေခြင်း"
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr ""
105msgid "See more"
101msgid "See more"
106msgstr ""
102msgstr ""
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr ""
106msgstr ""
111
107
@@ -113,6 +109,10 @@ msgstr ""
113msgid "Recent"
109msgid "Recent"
114msgstr ""
110msgstr ""
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr ""
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr ""
118msgstr ""
@@ -121,15 +121,15 @@ msgstr ""
121msgid "Less..."
121msgid "Less..."
122msgstr ""
122msgstr ""
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr "ဒီဟာကိုအမှတ်ပေးမည်"
126msgstr "ဒီဟာကိုအမှတ်ပေးမည်"
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130msgstr ""
130msgstr ""
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr "ပို့မည်"
134msgstr "ပို့မည်"
135
135
@@ -165,6 +165,14 @@ msgstr "စကားဝှက်ကိုပြ"
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr ""
166msgstr ""
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr ""
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr ""
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170msgstr ""
178msgstr ""
po/nb.po+20−12
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11−"PO-Revision-Date: 2014-07-11 07:01+0000\n"
11+"PO-Revision-Date: 2014-07-26 12:05+0000\n"
12"Last-Translator: Åka Sikrom <Unknown>\n"
12"Last-Translator: Åka Sikrom <Unknown>\n"
13"Language-Team: Norwegian Bokmal <nb@li.org>\n"
13"Language-Team: Norwegian Bokmal <nb@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-12 06:58+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-27 06:35+0000\n"
18−"X-Generator: Launchpad (build 17111)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -82,10 +82,6 @@ msgstr "Nødanrop"
82msgid "OK"
82msgid "OK"
83msgstr "OK"
83msgstr "OK"
84
84
85−#: qml/Components/PageHeader.qml:366
86−msgid "Recent searches"
87−msgstr "Nylige søk"
88−
89#: qml/Components/PassphraseLockscreen.qml:60
85#: qml/Components/PassphraseLockscreen.qml:60
90#, qt-format
86#, qt-format
91msgid "Hello %1"
87msgid "Hello %1"
@@ -107,7 +103,7 @@ msgstr "FERDIG"
107msgid "See more"
103msgid "See more"
108msgstr "Vis mer"
104msgstr "Vis mer"
109
105
110−#: qml/Components/SeeMore.qml:58
106+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
111msgid "See less"
107msgid "See less"
112msgstr "Vis mindre"
108msgstr "Vis mindre"
113
109
@@ -115,6 +111,10 @@ msgstr "Vis mindre"
115msgid "Recent"
111msgid "Recent"
116msgstr "Nylig"
112msgstr "Nylig"
117
113
114+#: qml/Dash/GenericScopeView.qml:330
115+msgid "See all"
116+msgstr "Vis alt"
117+
118#: qml/Dash/Previews/PreviewActionCombo.qml:34
118#: qml/Dash/Previews/PreviewActionCombo.qml:34
119msgid "More..."
119msgid "More..."
120msgstr "Mer …"
120msgstr "Mer …"
@@ -123,15 +123,15 @@ msgstr "Mer …"
123msgid "Less..."
123msgid "Less..."
124msgstr "Mindre …"
124msgstr "Mindre …"
125
125
126−#: qml/Dash/Previews/PreviewRatingInput.qml:82
126+#: qml/Dash/Previews/PreviewRatingInput.qml:81
127msgid "Rate this"
127msgid "Rate this"
128msgstr "Vurder dette"
128msgstr "Vurder dette"
129
129
130−#: qml/Dash/Previews/PreviewRatingInput.qml:128
130+#: qml/Dash/Previews/PreviewRatingInput.qml:126
131msgid "Add a review"
131msgid "Add a review"
132msgstr "Skriv en anmeldelse"
132msgstr "Skriv en anmeldelse"
133
133
134−#: qml/Dash/Previews/PreviewRatingInput.qml:168
134+#: qml/Dash/Previews/PreviewRatingInput.qml:166
135msgid "Send"
135msgid "Send"
136msgstr "Send"
136msgstr "Send"
137
137
@@ -167,6 +167,14 @@ msgstr "Vis passord"
167msgid "Please enter SIM PIN"
167msgid "Please enter SIM PIN"
168msgstr "Skriv inn PIN-koden til SIM-kortet"
168msgstr "Skriv inn PIN-koden til SIM-kortet"
169
169
170+#: qml/Panel/ActiveCallHint.qml:77
171+msgid "Tap to return to call..."
172+msgstr "Trykk for å gå tilbake til anrop …"
173+
174+#: qml/Panel/ActiveCallHint.qml:90
175+msgid "Conference"
176+msgstr "Konferanse"
177+
170#: qml/Panel/Indicators/MenuItemFactory.qml:583
178#: qml/Panel/Indicators/MenuItemFactory.qml:583
171msgid "In queue…"
179msgid "In queue…"
172msgstr "I kø …"
180msgstr "I kø …"
po/nl.po+21−13
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11−"PO-Revision-Date: 2014-07-20 17:25+0000\n"
11+"PO-Revision-Date: 2014-07-27 19:12+0000\n"
12−"Last-Translator: Hannie Dumoleyn <Unknown>\n"
12+"Last-Translator: rob <linuxned@gmail.com>\n"
13"Language-Team: Dutch <nl@li.org>\n"
13"Language-Team: Dutch <nl@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-21 07:05+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-28 06:44+0000\n"
18−"X-Generator: Launchpad (build 17114)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -82,10 +82,6 @@ msgstr "Noodoproep"
82msgid "OK"
82msgid "OK"
83msgstr "Ok"
83msgstr "Ok"
84
84
85−#: qml/Components/PageHeader.qml:366
86−msgid "Recent searches"
87−msgstr "Recente zoekopdrachten"
88−
89#: qml/Components/PassphraseLockscreen.qml:60
85#: qml/Components/PassphraseLockscreen.qml:60
90#, qt-format
86#, qt-format
91msgid "Hello %1"
87msgid "Hello %1"
@@ -107,7 +103,7 @@ msgstr "KLAAR"
107msgid "See more"
103msgid "See more"
108msgstr "Meer zien"
104msgstr "Meer zien"
109
105
110−#: qml/Components/SeeMore.qml:58
106+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
111msgid "See less"
107msgid "See less"
112msgstr "Minder zien"
108msgstr "Minder zien"
113
109
@@ -115,6 +111,10 @@ msgstr "Minder zien"
115msgid "Recent"
111msgid "Recent"
116msgstr "Recent"
112msgstr "Recent"
117
113
114+#: qml/Dash/GenericScopeView.qml:330
115+msgid "See all"
116+msgstr "Alles zien"
117+
118#: qml/Dash/Previews/PreviewActionCombo.qml:34
118#: qml/Dash/Previews/PreviewActionCombo.qml:34
119msgid "More..."
119msgid "More..."
120msgstr "Meer…"
120msgstr "Meer…"
@@ -123,15 +123,15 @@ msgstr "Meer…"
123msgid "Less..."
123msgid "Less..."
124msgstr "Minder…"
124msgstr "Minder…"
125
125
126−#: qml/Dash/Previews/PreviewRatingInput.qml:82
126+#: qml/Dash/Previews/PreviewRatingInput.qml:81
127msgid "Rate this"
127msgid "Rate this"
128msgstr "Beoordeel dit"
128msgstr "Beoordeel dit"
129
129
130−#: qml/Dash/Previews/PreviewRatingInput.qml:128
130+#: qml/Dash/Previews/PreviewRatingInput.qml:126
131msgid "Add a review"
131msgid "Add a review"
132msgstr "Voeg recensie toe"
132msgstr "Voeg recensie toe"
133
133
134−#: qml/Dash/Previews/PreviewRatingInput.qml:168
134+#: qml/Dash/Previews/PreviewRatingInput.qml:166
135msgid "Send"
135msgid "Send"
136msgstr "Versturen"
136msgstr "Versturen"
137
137
@@ -167,6 +167,14 @@ msgstr "Wachtwoord tonen"
167msgid "Please enter SIM PIN"
167msgid "Please enter SIM PIN"
168msgstr "Voer SIM-pincode in"
168msgstr "Voer SIM-pincode in"
169
169
170+#: qml/Panel/ActiveCallHint.qml:77
171+msgid "Tap to return to call..."
172+msgstr "Tik om terug te keren naar gesprek…"
173+
174+#: qml/Panel/ActiveCallHint.qml:90
175+msgid "Conference"
176+msgstr "Groepsgesprek"
177+
170#: qml/Panel/Indicators/MenuItemFactory.qml:583
178#: qml/Panel/Indicators/MenuItemFactory.qml:583
171msgid "In queue…"
179msgid "In queue…"
172msgstr "In wachtrij…"
180msgstr "In wachtrij…"
po/pl.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11"PO-Revision-Date: 2014-07-19 14:10+0000\n"
11"PO-Revision-Date: 2014-07-19 14:10+0000\n"
12"Last-Translator: GTriderXC <gtriderxc@yahoo.com>\n"
12"Last-Translator: GTriderXC <gtriderxc@yahoo.com>\n"
13"Language-Team: Polish <pl@li.org>\n"
13"Language-Team: Polish <pl@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-20 06:18+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:17+0000\n"
18−"X-Generator: Launchpad (build 17114)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -84,10 +84,6 @@ msgstr "Telefon ratunkowy"
84msgid "OK"
84msgid "OK"
85msgstr "OK"
85msgstr "OK"
86
86
87−#: qml/Components/PageHeader.qml:366
88−msgid "Recent searches"
89−msgstr "Ostatnie wyszukiwania"
90−
91#: qml/Components/PassphraseLockscreen.qml:60
87#: qml/Components/PassphraseLockscreen.qml:60
92#, qt-format
88#, qt-format
93msgid "Hello %1"
89msgid "Hello %1"
@@ -109,7 +105,7 @@ msgstr "ZROBIONE"
109msgid "See more"
105msgid "See more"
110msgstr "Zobacz więcej"
106msgstr "Zobacz więcej"
111
107
112−#: qml/Components/SeeMore.qml:58
108+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
113msgid "See less"
109msgid "See less"
114msgstr "Zobacz mniej"
110msgstr "Zobacz mniej"
115
111
@@ -117,6 +113,10 @@ msgstr "Zobacz mniej"
117msgid "Recent"
113msgid "Recent"
118msgstr "Ostatnio używane"
114msgstr "Ostatnio używane"
119
115
116+#: qml/Dash/GenericScopeView.qml:330
117+msgid "See all"
118+msgstr ""
119+
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
121msgid "More..."
121msgid "More..."
122msgstr "Więcej..."
122msgstr "Więcej..."
@@ -125,15 +125,15 @@ msgstr "Więcej..."
125msgid "Less..."
125msgid "Less..."
126msgstr "Mniej..."
126msgstr "Mniej..."
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:82
128+#: qml/Dash/Previews/PreviewRatingInput.qml:81
129msgid "Rate this"
129msgid "Rate this"
130msgstr "Oceń to"
130msgstr "Oceń to"
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:128
132+#: qml/Dash/Previews/PreviewRatingInput.qml:126
133msgid "Add a review"
133msgid "Add a review"
134msgstr "Dodaj recenzję"
134msgstr "Dodaj recenzję"
135
135
136−#: qml/Dash/Previews/PreviewRatingInput.qml:168
136+#: qml/Dash/Previews/PreviewRatingInput.qml:166
137msgid "Send"
137msgid "Send"
138msgstr "Wyślij"
138msgstr "Wyślij"
139
139
@@ -169,6 +169,14 @@ msgstr "Wyświetl hasło"
169msgid "Please enter SIM PIN"
169msgid "Please enter SIM PIN"
170msgstr "Wprowadź kod PIN karty SIM"
170msgstr "Wprowadź kod PIN karty SIM"
171
171
172+#: qml/Panel/ActiveCallHint.qml:77
173+msgid "Tap to return to call..."
174+msgstr ""
175+
176+#: qml/Panel/ActiveCallHint.qml:90
177+msgid "Conference"
178+msgstr ""
179+
172#: qml/Panel/Indicators/MenuItemFactory.qml:583
180#: qml/Panel/Indicators/MenuItemFactory.qml:583
173msgid "In queue…"
181msgid "In queue…"
174msgstr "W kolejce..."
182msgstr "W kolejce..."
po/pt.po+21−13
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11−"PO-Revision-Date: 2014-07-18 22:56+0000\n"
11+"PO-Revision-Date: 2014-07-25 12:04+0000\n"
12−"Last-Translator: Hugo Cardoso <hugocardoso94@gmail.com>\n"
12+"Last-Translator: Ivo Xavier <ivofernandes12@gmail.com>\n"
13"Language-Team: Portuguese <pt@li.org>\n"
13"Language-Team: Portuguese <pt@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-19 06:19+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:17+0000\n"
18−"X-Generator: Launchpad (build 17114)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -83,10 +83,6 @@ msgstr "Chamada de emergência"
83msgid "OK"
83msgid "OK"
84msgstr "OK"
84msgstr "OK"
85
85
86−#: qml/Components/PageHeader.qml:366
87−msgid "Recent searches"
88−msgstr "Pesquisas recentes"
89−
90#: qml/Components/PassphraseLockscreen.qml:60
86#: qml/Components/PassphraseLockscreen.qml:60
91#, qt-format
87#, qt-format
92msgid "Hello %1"
88msgid "Hello %1"
@@ -108,7 +104,7 @@ msgstr "FEITO"
108msgid "See more"
104msgid "See more"
109msgstr "Ver mais"
105msgstr "Ver mais"
110
106
111−#: qml/Components/SeeMore.qml:58
107+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
112msgid "See less"
108msgid "See less"
113msgstr "Ver menos"
109msgstr "Ver menos"
114
110
@@ -116,6 +112,10 @@ msgstr "Ver menos"
116msgid "Recent"
112msgid "Recent"
117msgstr "Recentes"
113msgstr "Recentes"
118
114
115+#: qml/Dash/GenericScopeView.qml:330
116+msgid "See all"
117+msgstr "Ver todos"
118+
119#: qml/Dash/Previews/PreviewActionCombo.qml:34
119#: qml/Dash/Previews/PreviewActionCombo.qml:34
120msgid "More..."
120msgid "More..."
121msgstr "Mais..."
121msgstr "Mais..."
@@ -124,15 +124,15 @@ msgstr "Mais..."
124msgid "Less..."
124msgid "Less..."
125msgstr "Menos..."
125msgstr "Menos..."
126
126
127−#: qml/Dash/Previews/PreviewRatingInput.qml:82
127+#: qml/Dash/Previews/PreviewRatingInput.qml:81
128msgid "Rate this"
128msgid "Rate this"
129msgstr "Classifique isto"
129msgstr "Classifique isto"
130
130
131−#: qml/Dash/Previews/PreviewRatingInput.qml:128
131+#: qml/Dash/Previews/PreviewRatingInput.qml:126
132msgid "Add a review"
132msgid "Add a review"
133msgstr "Adicione uma crítica"
133msgstr "Adicione uma crítica"
134
134
135−#: qml/Dash/Previews/PreviewRatingInput.qml:168
135+#: qml/Dash/Previews/PreviewRatingInput.qml:166
136msgid "Send"
136msgid "Send"
137msgstr "Enviar"
137msgstr "Enviar"
138
138
@@ -168,6 +168,14 @@ msgstr "Mostrar palavra-passe"
168msgid "Please enter SIM PIN"
168msgid "Please enter SIM PIN"
169msgstr "Por favor insira o PIN"
169msgstr "Por favor insira o PIN"
170
170
171+#: qml/Panel/ActiveCallHint.qml:77
172+msgid "Tap to return to call..."
173+msgstr "Tocar para ligar de volta..."
174+
175+#: qml/Panel/ActiveCallHint.qml:90
176+msgid "Conference"
177+msgstr "Conferência"
178+
171#: qml/Panel/Indicators/MenuItemFactory.qml:583
179#: qml/Panel/Indicators/MenuItemFactory.qml:583
172msgid "In queue…"
180msgid "In queue…"
173msgstr "Em fila..."
181msgstr "Em fila..."
po/pt_BR.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11"PO-Revision-Date: 2014-07-17 05:46+0000\n"
11"PO-Revision-Date: 2014-07-17 05:46+0000\n"
12"Last-Translator: Tiago Hillebrandt <tiagohillebrandt@gmail.com>\n"
12"Last-Translator: Tiago Hillebrandt <tiagohillebrandt@gmail.com>\n"
13"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
13"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-18 05:28+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:17+0000\n"
18−"X-Generator: Launchpad (build 17114)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -84,10 +84,6 @@ msgstr "Chamada de emergência"
84msgid "OK"
84msgid "OK"
85msgstr "OK"
85msgstr "OK"
86
86
87−#: qml/Components/PageHeader.qml:366
88−msgid "Recent searches"
89−msgstr "Pesquisas recentes"
90−
91#: qml/Components/PassphraseLockscreen.qml:60
87#: qml/Components/PassphraseLockscreen.qml:60
92#, qt-format
88#, qt-format
93msgid "Hello %1"
89msgid "Hello %1"
@@ -109,7 +105,7 @@ msgstr ""
109msgid "See more"
105msgid "See more"
110msgstr "Ver mais"
106msgstr "Ver mais"
111
107
112−#: qml/Components/SeeMore.qml:58
108+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
113msgid "See less"
109msgid "See less"
114msgstr "Ver menos"
110msgstr "Ver menos"
115
111
@@ -117,6 +113,10 @@ msgstr "Ver menos"
117msgid "Recent"
113msgid "Recent"
118msgstr "Recentes"
114msgstr "Recentes"
119
115
116+#: qml/Dash/GenericScopeView.qml:330
117+msgid "See all"
118+msgstr ""
119+
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
121msgid "More..."
121msgid "More..."
122msgstr "Mais..."
122msgstr "Mais..."
@@ -125,15 +125,15 @@ msgstr "Mais..."
125msgid "Less..."
125msgid "Less..."
126msgstr "Menos..."
126msgstr "Menos..."
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:82
128+#: qml/Dash/Previews/PreviewRatingInput.qml:81
129msgid "Rate this"
129msgid "Rate this"
130msgstr "Avaliar isto"
130msgstr "Avaliar isto"
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:128
132+#: qml/Dash/Previews/PreviewRatingInput.qml:126
133msgid "Add a review"
133msgid "Add a review"
134msgstr "Adicionar uma análise"
134msgstr "Adicionar uma análise"
135
135
136−#: qml/Dash/Previews/PreviewRatingInput.qml:168
136+#: qml/Dash/Previews/PreviewRatingInput.qml:166
137msgid "Send"
137msgid "Send"
138msgstr "Enviar"
138msgstr "Enviar"
139
139
@@ -169,6 +169,14 @@ msgstr "Exibir senha"
169msgid "Please enter SIM PIN"
169msgid "Please enter SIM PIN"
170msgstr "Por favor, digite o PIN do cartão SIM"
170msgstr "Por favor, digite o PIN do cartão SIM"
171
171
172+#: qml/Panel/ActiveCallHint.qml:77
173+msgid "Tap to return to call..."
174+msgstr ""
175+
176+#: qml/Panel/ActiveCallHint.qml:90
177+msgid "Conference"
178+msgstr ""
179+
172#: qml/Panel/Indicators/MenuItemFactory.qml:583
180#: qml/Panel/Indicators/MenuItemFactory.qml:583
173msgid "In queue…"
181msgid "In queue…"
174msgstr ""
182msgstr ""
po/ro.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11"PO-Revision-Date: 2013-06-27 07:53+0000\n"
11"PO-Revision-Date: 2013-06-27 07:53+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: Romanian <ro@li.org>\n"
13"Language-Team: Romanian <ro@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:17+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -80,10 +80,6 @@ msgstr ""
80msgid "OK"
80msgid "OK"
81msgstr ""
81msgstr ""
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr "Căutări recente"
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr ""
105msgid "See more"
101msgid "See more"
106msgstr ""
102msgstr ""
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr ""
106msgstr ""
111
107
@@ -113,6 +109,10 @@ msgstr ""
113msgid "Recent"
109msgid "Recent"
114msgstr ""
110msgstr ""
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr ""
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr ""
118msgstr ""
@@ -121,15 +121,15 @@ msgstr ""
121msgid "Less..."
121msgid "Less..."
122msgstr ""
122msgstr ""
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr ""
126msgstr ""
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130msgstr ""
130msgstr ""
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr ""
134msgstr ""
135
135
@@ -165,6 +165,14 @@ msgstr ""
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr ""
166msgstr ""
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr ""
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr ""
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170msgstr ""
178msgstr ""
po/ru.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11"PO-Revision-Date: 2014-05-15 12:57+0000\n"
11"PO-Revision-Date: 2014-05-15 12:57+0000\n"
12"Last-Translator: Zonov Roman <Unknown>\n"
12"Last-Translator: Zonov Roman <Unknown>\n"
13"Language-Team: Russian <ru@li.org>\n"
13"Language-Team: Russian <ru@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:17+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -87,10 +87,6 @@ msgstr "Экстренный вызов"
87msgid "OK"
87msgid "OK"
88msgstr ""
88msgstr ""
89
89
90−#: qml/Components/PageHeader.qml:366
91−msgid "Recent searches"
92−msgstr "Последние поисковые запросы"
93−
94#: qml/Components/PassphraseLockscreen.qml:60
90#: qml/Components/PassphraseLockscreen.qml:60
95#, qt-format
91#, qt-format
96msgid "Hello %1"
92msgid "Hello %1"
@@ -112,7 +108,7 @@ msgstr ""
112msgid "See more"
108msgid "See more"
113msgstr "Подробнее"
109msgstr "Подробнее"
114
110
115−#: qml/Components/SeeMore.qml:58
111+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
116msgid "See less"
112msgid "See less"
117msgstr "Вкратце"
113msgstr "Вкратце"
118
114
@@ -120,6 +116,10 @@ msgstr "Вкратце"
120msgid "Recent"
116msgid "Recent"
121msgstr "Недавние"
117msgstr "Недавние"
122
118
119+#: qml/Dash/GenericScopeView.qml:330
120+msgid "See all"
121+msgstr ""
122+
123#: qml/Dash/Previews/PreviewActionCombo.qml:34
123#: qml/Dash/Previews/PreviewActionCombo.qml:34
124msgid "More..."
124msgid "More..."
125msgstr "Ещё..."
125msgstr "Ещё..."
@@ -128,15 +128,15 @@ msgstr "Ещё..."
128msgid "Less..."
128msgid "Less..."
129msgstr "Меньше..."
129msgstr "Меньше..."
130
130
131−#: qml/Dash/Previews/PreviewRatingInput.qml:82
131+#: qml/Dash/Previews/PreviewRatingInput.qml:81
132msgid "Rate this"
132msgid "Rate this"
133msgstr "Оцените это"
133msgstr "Оцените это"
134
134
135−#: qml/Dash/Previews/PreviewRatingInput.qml:128
135+#: qml/Dash/Previews/PreviewRatingInput.qml:126
136msgid "Add a review"
136msgid "Add a review"
137msgstr "Добавьте отзыв"
137msgstr "Добавьте отзыв"
138
138
139−#: qml/Dash/Previews/PreviewRatingInput.qml:168
139+#: qml/Dash/Previews/PreviewRatingInput.qml:166
140msgid "Send"
140msgid "Send"
141msgstr "Отправить"
141msgstr "Отправить"
142
142
@@ -172,6 +172,14 @@ msgstr "Показать пароль"
172msgid "Please enter SIM PIN"
172msgid "Please enter SIM PIN"
173msgstr "Введите PIN код"
173msgstr "Введите PIN код"
174
174
175+#: qml/Panel/ActiveCallHint.qml:77
176+msgid "Tap to return to call..."
177+msgstr ""
178+
179+#: qml/Panel/ActiveCallHint.qml:90
180+msgid "Conference"
181+msgstr ""
182+
175#: qml/Panel/Indicators/MenuItemFactory.qml:583
183#: qml/Panel/Indicators/MenuItemFactory.qml:583
176msgid "In queue…"
184msgid "In queue…"
177msgstr ""
185msgstr ""
po/shn.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11"PO-Revision-Date: 2013-10-07 11:46+0000\n"
11"PO-Revision-Date: 2013-10-07 11:46+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Shan <shn@li.org>\n"
13"Language-Team: Shan <shn@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:17+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -80,10 +80,6 @@ msgstr ""
80msgid "OK"
80msgid "OK"
81msgstr ""
81msgstr ""
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr ""
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr ""
105msgid "See more"
101msgid "See more"
106msgstr ""
102msgstr ""
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr ""
106msgstr ""
111
107
@@ -113,6 +109,10 @@ msgstr ""
113msgid "Recent"
109msgid "Recent"
114msgstr ""
110msgstr ""
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr ""
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr ""
118msgstr ""
@@ -121,15 +121,15 @@ msgstr ""
121msgid "Less..."
121msgid "Less..."
122msgstr ""
122msgstr ""
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr ""
126msgstr ""
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130msgstr ""
130msgstr ""
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr ""
134msgstr ""
135
135
@@ -165,6 +165,14 @@ msgstr ""
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr ""
166msgstr ""
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr ""
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr ""
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170msgstr ""
178msgstr ""
po/si.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:17+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -80,10 +80,6 @@ msgstr ""
80msgid "OK"
80msgid "OK"
81msgstr ""
81msgstr ""
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr ""
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr ""
105msgid "See more"
101msgid "See more"
106msgstr ""
102msgstr ""
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr ""
106msgstr ""
111
107
@@ -113,6 +109,10 @@ msgstr ""
113msgid "Recent"
109msgid "Recent"
114msgstr ""
110msgstr ""
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr ""
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr ""
118msgstr ""
@@ -121,15 +121,15 @@ msgstr ""
121msgid "Less..."
121msgid "Less..."
122msgstr ""
122msgstr ""
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr ""
126msgstr ""
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130msgstr ""
130msgstr ""
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr ""
134msgstr ""
135
135
@@ -165,6 +165,14 @@ msgstr ""
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr ""
166msgstr ""
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr ""
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr ""
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170msgstr ""
178msgstr ""
po/sl.po+20−12
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11−"PO-Revision-Date: 2014-07-24 09:01+0000\n"
11+"PO-Revision-Date: 2014-07-28 12:32+0000\n"
12"Last-Translator: Damir Jerovšek <Unknown>\n"
12"Last-Translator: Damir Jerovšek <Unknown>\n"
13"Language-Team: Slovenian <sl@li.org>\n"
13"Language-Team: Slovenian <sl@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-25 07:54+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-29 06:54+0000\n"
18−"X-Generator: Launchpad (build 17114)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -84,10 +84,6 @@ msgstr "Klic v sili"
84msgid "OK"
84msgid "OK"
85msgstr "V REDU"
85msgstr "V REDU"
86
86
87−#: qml/Components/PageHeader.qml:366
88−msgid "Recent searches"
89−msgstr "Nedavna iskanja"
90−
91#: qml/Components/PassphraseLockscreen.qml:60
87#: qml/Components/PassphraseLockscreen.qml:60
92#, qt-format
88#, qt-format
93msgid "Hello %1"
89msgid "Hello %1"
@@ -109,7 +105,7 @@ msgstr "KONČANO"
109msgid "See more"
105msgid "See more"
110msgstr "Pokaži več"
106msgstr "Pokaži več"
111
107
112−#: qml/Components/SeeMore.qml:58
108+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
113msgid "See less"
109msgid "See less"
114msgstr "Pokaži manj"
110msgstr "Pokaži manj"
115
111
@@ -117,6 +113,10 @@ msgstr "Pokaži manj"
117msgid "Recent"
113msgid "Recent"
118msgstr "Nedavno"
114msgstr "Nedavno"
119
115
116+#: qml/Dash/GenericScopeView.qml:330
117+msgid "See all"
118+msgstr ""
119+
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
120#: qml/Dash/Previews/PreviewActionCombo.qml:34
121msgid "More..."
121msgid "More..."
122msgstr "Več ..."
122msgstr "Več ..."
@@ -125,15 +125,15 @@ msgstr "Več ..."
125msgid "Less..."
125msgid "Less..."
126msgstr "Manj ..."
126msgstr "Manj ..."
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:82
128+#: qml/Dash/Previews/PreviewRatingInput.qml:81
129msgid "Rate this"
129msgid "Rate this"
130msgstr "Ocenite"
130msgstr "Ocenite"
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:128
132+#: qml/Dash/Previews/PreviewRatingInput.qml:126
133msgid "Add a review"
133msgid "Add a review"
134msgstr "Dodaj oceno"
134msgstr "Dodaj oceno"
135
135
136−#: qml/Dash/Previews/PreviewRatingInput.qml:168
136+#: qml/Dash/Previews/PreviewRatingInput.qml:166
137msgid "Send"
137msgid "Send"
138msgstr "Pošlji"
138msgstr "Pošlji"
139
139
@@ -169,6 +169,14 @@ msgstr "Pokaži geslo"
169msgid "Please enter SIM PIN"
169msgid "Please enter SIM PIN"
170msgstr "Vnesite PIN kartice SIM"
170msgstr "Vnesite PIN kartice SIM"
171
171
172+#: qml/Panel/ActiveCallHint.qml:77
173+msgid "Tap to return to call..."
174+msgstr "Tapnite za vrnitev v klic ..."
175+
176+#: qml/Panel/ActiveCallHint.qml:90
177+msgid "Conference"
178+msgstr "Konferenca"
179+
172#: qml/Panel/Indicators/MenuItemFactory.qml:583
180#: qml/Panel/Indicators/MenuItemFactory.qml:583
173msgid "In queue…"
181msgid "In queue…"
174msgstr "V vrsti ..."
182msgstr "V vrsti ..."
po/sq.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11"PO-Revision-Date: 2014-01-15 13:51+0000\n"
11"PO-Revision-Date: 2014-01-15 13:51+0000\n"
12"Last-Translator: Besmir Zanaj <besmirzanaj@gmail.com>\n"
12"Last-Translator: Besmir Zanaj <besmirzanaj@gmail.com>\n"
13"Language-Team: Albanian <sq@li.org>\n"
13"Language-Team: Albanian <sq@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:16+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -81,10 +81,6 @@ msgstr ""
81msgid "OK"
81msgid "OK"
82msgstr ""
82msgstr ""
83
83
84−#: qml/Components/PageHeader.qml:366
85−msgid "Recent searches"
86−msgstr ""
87−
88#: qml/Components/PassphraseLockscreen.qml:60
84#: qml/Components/PassphraseLockscreen.qml:60
89#, qt-format
85#, qt-format
90msgid "Hello %1"
86msgid "Hello %1"
@@ -106,7 +102,7 @@ msgstr ""
106msgid "See more"
102msgid "See more"
107msgstr ""
103msgstr ""
108
104
109−#: qml/Components/SeeMore.qml:58
105+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
110msgid "See less"
106msgid "See less"
111msgstr ""
107msgstr ""
112
108
@@ -114,6 +110,10 @@ msgstr ""
114msgid "Recent"
110msgid "Recent"
115msgstr ""
111msgstr ""
116
112
113+#: qml/Dash/GenericScopeView.qml:330
114+msgid "See all"
115+msgstr ""
116+
117#: qml/Dash/Previews/PreviewActionCombo.qml:34
117#: qml/Dash/Previews/PreviewActionCombo.qml:34
118msgid "More..."
118msgid "More..."
119msgstr ""
119msgstr ""
@@ -122,15 +122,15 @@ msgstr ""
122msgid "Less..."
122msgid "Less..."
123msgstr ""
123msgstr ""
124
124
125−#: qml/Dash/Previews/PreviewRatingInput.qml:82
125+#: qml/Dash/Previews/PreviewRatingInput.qml:81
126msgid "Rate this"
126msgid "Rate this"
127msgstr "Vlerësoje këtë"
127msgstr "Vlerësoje këtë"
128
128
129−#: qml/Dash/Previews/PreviewRatingInput.qml:128
129+#: qml/Dash/Previews/PreviewRatingInput.qml:126
130msgid "Add a review"
130msgid "Add a review"
131msgstr "Shto një rishikim"
131msgstr "Shto një rishikim"
132
132
133−#: qml/Dash/Previews/PreviewRatingInput.qml:168
133+#: qml/Dash/Previews/PreviewRatingInput.qml:166
134msgid "Send"
134msgid "Send"
135msgstr ""
135msgstr ""
136
136
@@ -166,6 +166,14 @@ msgstr ""
166msgid "Please enter SIM PIN"
166msgid "Please enter SIM PIN"
167msgstr ""
167msgstr ""
168
168
169+#: qml/Panel/ActiveCallHint.qml:77
170+msgid "Tap to return to call..."
171+msgstr ""
172+
173+#: qml/Panel/ActiveCallHint.qml:90
174+msgid "Conference"
175+msgstr ""
176+
169#: qml/Panel/Indicators/MenuItemFactory.qml:583
177#: qml/Panel/Indicators/MenuItemFactory.qml:583
170msgid "In queue…"
178msgid "In queue…"
171msgstr ""
179msgstr ""
po/sr.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11"PO-Revision-Date: 2013-06-27 09:19+0000\n"
11"PO-Revision-Date: 2013-06-27 09:19+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: Serbian <sr@li.org>\n"
13"Language-Team: Serbian <sr@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:17+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -80,10 +80,6 @@ msgstr ""
80msgid "OK"
80msgid "OK"
81msgstr ""
81msgstr ""
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr "Скорашње претраге"
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr ""
105msgid "See more"
101msgid "See more"
106msgstr ""
102msgstr ""
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr ""
106msgstr ""
111
107
@@ -113,6 +109,10 @@ msgstr ""
113msgid "Recent"
109msgid "Recent"
114msgstr ""
110msgstr ""
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr ""
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr ""
118msgstr ""
@@ -121,15 +121,15 @@ msgstr ""
121msgid "Less..."
121msgid "Less..."
122msgstr ""
122msgstr ""
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr ""
126msgstr ""
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130msgstr ""
130msgstr ""
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr ""
134msgstr ""
135
135
@@ -165,6 +165,14 @@ msgstr ""
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr ""
166msgstr ""
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr ""
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr ""
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170msgstr ""
178msgstr ""
po/sv.po+20−12
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11−"PO-Revision-Date: 2014-07-24 13:56+0000\n"
11+"PO-Revision-Date: 2014-07-25 14:27+0000\n"
12"Last-Translator: Josef Andersson <Unknown>\n"
12"Last-Translator: Josef Andersson <Unknown>\n"
13"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
13"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-25 07:54+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:17+0000\n"
18−"X-Generator: Launchpad (build 17114)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19"Language: sv\n"
19"Language: sv\n"
20
20
21#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:43
@@ -83,10 +83,6 @@ msgstr "Nödsamtal"
83msgid "OK"
83msgid "OK"
84msgstr "Ok"
84msgstr "Ok"
85
85
86−#: qml/Components/PageHeader.qml:366
87−msgid "Recent searches"
88−msgstr "Senaste sökningar"
89−
90#: qml/Components/PassphraseLockscreen.qml:60
86#: qml/Components/PassphraseLockscreen.qml:60
91#, qt-format
87#, qt-format
92msgid "Hello %1"
88msgid "Hello %1"
@@ -108,7 +104,7 @@ msgstr "KLAR"
108msgid "See more"
104msgid "See more"
109msgstr "Se mer"
105msgstr "Se mer"
110
106
111−#: qml/Components/SeeMore.qml:58
107+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
112msgid "See less"
108msgid "See less"
113msgstr "Se mindre"
109msgstr "Se mindre"
114
110
@@ -116,6 +112,10 @@ msgstr "Se mindre"
116msgid "Recent"
112msgid "Recent"
117msgstr "Senaste"
113msgstr "Senaste"
118
114
115+#: qml/Dash/GenericScopeView.qml:330
116+msgid "See all"
117+msgstr "Visa alla"
118+
119#: qml/Dash/Previews/PreviewActionCombo.qml:34
119#: qml/Dash/Previews/PreviewActionCombo.qml:34
120msgid "More..."
120msgid "More..."
121msgstr "Mer…"
121msgstr "Mer…"
@@ -124,15 +124,15 @@ msgstr "Mer…"
124msgid "Less..."
124msgid "Less..."
125msgstr "Mindre…"
125msgstr "Mindre…"
126
126
127−#: qml/Dash/Previews/PreviewRatingInput.qml:82
127+#: qml/Dash/Previews/PreviewRatingInput.qml:81
128msgid "Rate this"
128msgid "Rate this"
129msgstr "Betygsätt detta"
129msgstr "Betygsätt detta"
130
130
131−#: qml/Dash/Previews/PreviewRatingInput.qml:128
131+#: qml/Dash/Previews/PreviewRatingInput.qml:126
132msgid "Add a review"
132msgid "Add a review"
133msgstr "Lägg till en recension"
133msgstr "Lägg till en recension"
134
134
135−#: qml/Dash/Previews/PreviewRatingInput.qml:168
135+#: qml/Dash/Previews/PreviewRatingInput.qml:166
136msgid "Send"
136msgid "Send"
137msgstr "Skicka"
137msgstr "Skicka"
138
138
@@ -168,6 +168,14 @@ msgstr "Visa lösenord"
168msgid "Please enter SIM PIN"
168msgid "Please enter SIM PIN"
169msgstr "Ange SIM PIN-kod"
169msgstr "Ange SIM PIN-kod"
170
170
171+#: qml/Panel/ActiveCallHint.qml:77
172+msgid "Tap to return to call..."
173+msgstr "Tryck för att återgå till samtal..."
174+
175+#: qml/Panel/ActiveCallHint.qml:90
176+msgid "Conference"
177+msgstr "Konferens"
178+
171#: qml/Panel/Indicators/MenuItemFactory.qml:583
179#: qml/Panel/Indicators/MenuItemFactory.qml:583
172msgid "In queue…"
180msgid "In queue…"
173msgstr "I kö…"
181msgstr "I kö…"
po/sw.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11"PO-Revision-Date: 2014-01-14 19:28+0000\n"
11"PO-Revision-Date: 2014-01-14 19:28+0000\n"
12"Last-Translator: Damas <Unknown>\n"
12"Last-Translator: Damas <Unknown>\n"
13"Language-Team: Swahili <sw@li.org>\n"
13"Language-Team: Swahili <sw@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:17+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -80,10 +80,6 @@ msgstr ""
80msgid "OK"
80msgid "OK"
81msgstr ""
81msgstr ""
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr ""
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr ""
105msgid "See more"
101msgid "See more"
106msgstr ""
102msgstr ""
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr ""
106msgstr ""
111
107
@@ -113,6 +109,10 @@ msgstr ""
113msgid "Recent"
109msgid "Recent"
114msgstr ""
110msgstr ""
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr ""
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr ""
118msgstr ""
@@ -121,15 +121,15 @@ msgstr ""
121msgid "Less..."
121msgid "Less..."
122msgstr ""
122msgstr ""
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr ""
126msgstr ""
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130msgstr ""
130msgstr ""
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr "Tuma"
134msgstr "Tuma"
135
135
@@ -165,6 +165,14 @@ msgstr ""
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr ""
166msgstr ""
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr ""
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr ""
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170msgstr ""
178msgstr ""
po/ta.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:17+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19"Language: ta\n"
19"Language: ta\n"
20
20
21#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:43
@@ -83,10 +83,6 @@ msgstr "அவசர அழைப்பு"
83msgid "OK"
83msgid "OK"
84msgstr ""
84msgstr ""
85
85
86−#: qml/Components/PageHeader.qml:366
87−msgid "Recent searches"
88−msgstr "கடையாக தேடப்பட்டவைகள்"
89−
90#: qml/Components/PassphraseLockscreen.qml:60
86#: qml/Components/PassphraseLockscreen.qml:60
91#, qt-format
87#, qt-format
92msgid "Hello %1"
88msgid "Hello %1"
@@ -108,7 +104,7 @@ msgstr ""
108msgid "See more"
104msgid "See more"
109msgstr ""
105msgstr ""
110
106
111−#: qml/Components/SeeMore.qml:58
107+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
112msgid "See less"
108msgid "See less"
113msgstr ""
109msgstr ""
114
110
@@ -116,6 +112,10 @@ msgstr ""
116msgid "Recent"
112msgid "Recent"
117msgstr ""
113msgstr ""
118
114
115+#: qml/Dash/GenericScopeView.qml:330
116+msgid "See all"
117+msgstr ""
118+
119#: qml/Dash/Previews/PreviewActionCombo.qml:34
119#: qml/Dash/Previews/PreviewActionCombo.qml:34
120msgid "More..."
120msgid "More..."
121msgstr ""
121msgstr ""
@@ -124,15 +124,15 @@ msgstr ""
124msgid "Less..."
124msgid "Less..."
125msgstr ""
125msgstr ""
126
126
127−#: qml/Dash/Previews/PreviewRatingInput.qml:82
127+#: qml/Dash/Previews/PreviewRatingInput.qml:81
128msgid "Rate this"
128msgid "Rate this"
129msgstr "இதை மதிப்பிடு"
129msgstr "இதை மதிப்பிடு"
130
130
131−#: qml/Dash/Previews/PreviewRatingInput.qml:128
131+#: qml/Dash/Previews/PreviewRatingInput.qml:126
132msgid "Add a review"
132msgid "Add a review"
133msgstr "ஒரு பரிசீலனையை சேர்"
133msgstr "ஒரு பரிசீலனையை சேர்"
134
134
135−#: qml/Dash/Previews/PreviewRatingInput.qml:168
135+#: qml/Dash/Previews/PreviewRatingInput.qml:166
136msgid "Send"
136msgid "Send"
137msgstr "அனுப்பு"
137msgstr "அனுப்பு"
138
138
@@ -168,6 +168,14 @@ msgstr ""
168msgid "Please enter SIM PIN"
168msgid "Please enter SIM PIN"
169msgstr ""
169msgstr ""
170
170
171+#: qml/Panel/ActiveCallHint.qml:77
172+msgid "Tap to return to call..."
173+msgstr ""
174+
175+#: qml/Panel/ActiveCallHint.qml:90
176+msgid "Conference"
177+msgstr ""
178+
171#: qml/Panel/Indicators/MenuItemFactory.qml:583
179#: qml/Panel/Indicators/MenuItemFactory.qml:583
172msgid "In queue…"
180msgid "In queue…"
173msgstr ""
181msgstr ""
po/te.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-20 06:18+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:17+0000\n"
18−"X-Generator: Launchpad (build 17114)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -80,10 +80,6 @@ msgstr "అత్యవసర పిలుపు"
80msgid "OK"
80msgid "OK"
81msgstr "సరే"
81msgstr "సరే"
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr "ఇటీవలి వెతుకులాటలు"
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr "పూర్తయ్యింది"
105msgid "See more"
101msgid "See more"
106msgstr "మరింత చూడండి"
102msgstr "మరింత చూడండి"
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr ""
106msgstr ""
111
107
@@ -113,6 +109,10 @@ msgstr ""
113msgid "Recent"
109msgid "Recent"
114msgstr "ఇటీవలివి"
110msgstr "ఇటీవలివి"
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr ""
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr "మరిన్ని..."
118msgstr "మరిన్ని..."
@@ -121,15 +121,15 @@ msgstr "మరిన్ని..."
121msgid "Less..."
121msgid "Less..."
122msgstr ""
122msgstr ""
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr ""
126msgstr ""
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130msgstr "ఒక సమీక్షను వ్రాయండి"
130msgstr "ఒక సమీక్షను వ్రాయండి"
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr "పంపు"
134msgstr "పంపు"
135
135
@@ -165,6 +165,14 @@ msgstr "సంకేతపదాన్ని చూపించు"
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr "దయచేసి సిమ్ పిన్ ఇవ్వండి"
166msgstr "దయచేసి సిమ్ పిన్ ఇవ్వండి"
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr ""
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr ""
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170msgstr ""
178msgstr ""
po/tr.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11"PO-Revision-Date: 2014-07-16 17:58+0000\n"
11"PO-Revision-Date: 2014-07-16 17:58+0000\n"
12"Last-Translator: Volkan Gezer <Unknown>\n"
12"Last-Translator: Volkan Gezer <Unknown>\n"
13"Language-Team: Turkish <tr@li.org>\n"
13"Language-Team: Turkish <tr@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-17 06:38+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:17+0000\n"
18−"X-Generator: Launchpad (build 17114)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -83,10 +83,6 @@ msgstr "Acil Arama"
83msgid "OK"
83msgid "OK"
84msgstr "Tamam"
84msgstr "Tamam"
85
85
86−#: qml/Components/PageHeader.qml:366
87−msgid "Recent searches"
88−msgstr "Son aramalar"
89−
90#: qml/Components/PassphraseLockscreen.qml:60
86#: qml/Components/PassphraseLockscreen.qml:60
91#, qt-format
87#, qt-format
92msgid "Hello %1"
88msgid "Hello %1"
@@ -108,7 +104,7 @@ msgstr "BİTTİ"
108msgid "See more"
104msgid "See more"
109msgstr "Daha fazlası"
105msgstr "Daha fazlası"
110
106
111−#: qml/Components/SeeMore.qml:58
107+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
112msgid "See less"
108msgid "See less"
113msgstr "Daha azını gör"
109msgstr "Daha azını gör"
114
110
@@ -116,6 +112,10 @@ msgstr "Daha azını gör"
116msgid "Recent"
112msgid "Recent"
117msgstr "En son"
113msgstr "En son"
118
114
115+#: qml/Dash/GenericScopeView.qml:330
116+msgid "See all"
117+msgstr ""
118+
119#: qml/Dash/Previews/PreviewActionCombo.qml:34
119#: qml/Dash/Previews/PreviewActionCombo.qml:34
120msgid "More..."
120msgid "More..."
121msgstr "Daha fazlası..."
121msgstr "Daha fazlası..."
@@ -124,15 +124,15 @@ msgstr "Daha fazlası..."
124msgid "Less..."
124msgid "Less..."
125msgstr "Daha az.."
125msgstr "Daha az.."
126
126
127−#: qml/Dash/Previews/PreviewRatingInput.qml:82
127+#: qml/Dash/Previews/PreviewRatingInput.qml:81
128msgid "Rate this"
128msgid "Rate this"
129msgstr "Oyla"
129msgstr "Oyla"
130
130
131−#: qml/Dash/Previews/PreviewRatingInput.qml:128
131+#: qml/Dash/Previews/PreviewRatingInput.qml:126
132msgid "Add a review"
132msgid "Add a review"
133msgstr "Bir inceleme ekle"
133msgstr "Bir inceleme ekle"
134
134
135−#: qml/Dash/Previews/PreviewRatingInput.qml:168
135+#: qml/Dash/Previews/PreviewRatingInput.qml:166
136msgid "Send"
136msgid "Send"
137msgstr "Gönder"
137msgstr "Gönder"
138
138
@@ -168,6 +168,14 @@ msgstr "Parolayı göster"
168msgid "Please enter SIM PIN"
168msgid "Please enter SIM PIN"
169msgstr "Lütfen SIM PIN'inizi girin"
169msgstr "Lütfen SIM PIN'inizi girin"
170
170
171+#: qml/Panel/ActiveCallHint.qml:77
172+msgid "Tap to return to call..."
173+msgstr ""
174+
175+#: qml/Panel/ActiveCallHint.qml:90
176+msgid "Conference"
177+msgstr ""
178+
171#: qml/Panel/Indicators/MenuItemFactory.qml:583
179#: qml/Panel/Indicators/MenuItemFactory.qml:583
172msgid "In queue…"
180msgid "In queue…"
173msgstr "Beklemede..."
181msgstr "Beklemede..."
po/ug.po+20−12
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11−"PO-Revision-Date: 2014-07-21 02:30+0000\n"
11+"PO-Revision-Date: 2014-07-29 04:06+0000\n"
12"Last-Translator: Gheyret T.Kenji <Unknown>\n"
12"Last-Translator: Gheyret T.Kenji <Unknown>\n"
13"Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
13"Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-22 07:17+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-30 07:08+0000\n"
18−"X-Generator: Launchpad (build 17114)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -82,10 +82,6 @@ msgstr "جىددىي تېلېفون"
82msgid "OK"
82msgid "OK"
83msgstr "تامام"
83msgstr "تامام"
84
84
85−#: qml/Components/PageHeader.qml:366
86−msgid "Recent searches"
87−msgstr "يېقىنقى ئىزدەشلەر"
88−
89#: qml/Components/PassphraseLockscreen.qml:60
85#: qml/Components/PassphraseLockscreen.qml:60
90#, qt-format
86#, qt-format
91msgid "Hello %1"
87msgid "Hello %1"
@@ -107,7 +103,7 @@ msgstr "تامام"
107msgid "See more"
103msgid "See more"
108msgstr "جىقراق كۆرۈش"
104msgstr "جىقراق كۆرۈش"
109
105
110−#: qml/Components/SeeMore.qml:58
106+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
111msgid "See less"
107msgid "See less"
112msgstr "ئازراق كۆرۈش"
108msgstr "ئازراق كۆرۈش"
113
109
@@ -115,6 +111,10 @@ msgstr "ئازراق كۆرۈش"
115msgid "Recent"
111msgid "Recent"
116msgstr "يېقىنقى"
112msgstr "يېقىنقى"
117
113
114+#: qml/Dash/GenericScopeView.qml:330
115+msgid "See all"
116+msgstr "ھەممىنى كۆرۈش…"
117+
118#: qml/Dash/Previews/PreviewActionCombo.qml:34
118#: qml/Dash/Previews/PreviewActionCombo.qml:34
119msgid "More..."
119msgid "More..."
120msgstr "تېخىمۇ كۆپ…"
120msgstr "تېخىمۇ كۆپ…"
@@ -123,15 +123,15 @@ msgstr "تېخىمۇ كۆپ…"
123msgid "Less..."
123msgid "Less..."
124msgstr "ئازراق..."
124msgstr "ئازراق..."
125
125
126−#: qml/Dash/Previews/PreviewRatingInput.qml:82
126+#: qml/Dash/Previews/PreviewRatingInput.qml:81
127msgid "Rate this"
127msgid "Rate this"
128msgstr "بۇنى باھالاڭ"
128msgstr "بۇنى باھالاڭ"
129
129
130−#: qml/Dash/Previews/PreviewRatingInput.qml:128
130+#: qml/Dash/Previews/PreviewRatingInput.qml:126
131msgid "Add a review"
131msgid "Add a review"
132msgstr "باھا قوشۇش"
132msgstr "باھا قوشۇش"
133
133
134−#: qml/Dash/Previews/PreviewRatingInput.qml:168
134+#: qml/Dash/Previews/PreviewRatingInput.qml:166
135msgid "Send"
135msgid "Send"
136msgstr "ئەۋەت"
136msgstr "ئەۋەت"
137
137
@@ -167,6 +167,14 @@ msgstr "ئىم كۆرسەت"
167msgid "Please enter SIM PIN"
167msgid "Please enter SIM PIN"
168msgstr "سىم(SIM) كارتىڭىزنىڭ PIN نومۇرىنى كىرگۈزۈڭ"
168msgstr "سىم(SIM) كارتىڭىزنىڭ PIN نومۇرىنى كىرگۈزۈڭ"
169
169
170+#: qml/Panel/ActiveCallHint.qml:77
171+msgid "Tap to return to call..."
172+msgstr "سۆزلىشىشكە قايتىش ئۈچۈن چېكىڭ…"
173+
174+#: qml/Panel/ActiveCallHint.qml:90
175+msgid "Conference"
176+msgstr "يىغىن"
177+
170#: qml/Panel/Indicators/MenuItemFactory.qml:583
178#: qml/Panel/Indicators/MenuItemFactory.qml:583
171msgid "In queue…"
179msgid "In queue…"
172msgstr "قاتاردا…"
180msgstr "قاتاردا…"
po/uk.po+20−12
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11−"PO-Revision-Date: 2014-07-13 17:03+0000\n"
11+"PO-Revision-Date: 2014-07-29 07:53+0000\n"
12"Last-Translator: Yuri Chornoivan <yurchor@gmail.com>\n"
12"Last-Translator: Yuri Chornoivan <yurchor@gmail.com>\n"
13"Language-Team: Ukrainian <uk@li.org>\n"
13"Language-Team: Ukrainian <uk@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-14 07:10+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-30 07:08+0000\n"
18−"X-Generator: Launchpad (build 17111)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -85,10 +85,6 @@ msgstr "Терміновий виклик"
85msgid "OK"
85msgid "OK"
86msgstr "Гаразд"
86msgstr "Гаразд"
87
87
88−#: qml/Components/PageHeader.qml:366
89−msgid "Recent searches"
90−msgstr "Нещодавні пошуки"
91−
92#: qml/Components/PassphraseLockscreen.qml:60
88#: qml/Components/PassphraseLockscreen.qml:60
93#, qt-format
89#, qt-format
94msgid "Hello %1"
90msgid "Hello %1"
@@ -110,7 +106,7 @@ msgstr "Виконано"
110msgid "See more"
106msgid "See more"
111msgstr "Докладніше"
107msgstr "Докладніше"
112
108
113−#: qml/Components/SeeMore.qml:58
109+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
114msgid "See less"
110msgid "See less"
115msgstr "Стисліше"
111msgstr "Стисліше"
116
112
@@ -118,6 +114,10 @@ msgstr "Стисліше"
118msgid "Recent"
114msgid "Recent"
119msgstr "Нещодавні"
115msgstr "Нещодавні"
120
116
117+#: qml/Dash/GenericScopeView.qml:330
118+msgid "See all"
119+msgstr "Детальніше"
120+
121#: qml/Dash/Previews/PreviewActionCombo.qml:34
121#: qml/Dash/Previews/PreviewActionCombo.qml:34
122msgid "More..."
122msgid "More..."
123msgstr "Більше…"
123msgstr "Більше…"
@@ -126,15 +126,15 @@ msgstr "Більше…"
126msgid "Less..."
126msgid "Less..."
127msgstr "Менше..."
127msgstr "Менше..."
128
128
129−#: qml/Dash/Previews/PreviewRatingInput.qml:82
129+#: qml/Dash/Previews/PreviewRatingInput.qml:81
130msgid "Rate this"
130msgid "Rate this"
131msgstr "Оцінити"
131msgstr "Оцінити"
132
132
133−#: qml/Dash/Previews/PreviewRatingInput.qml:128
133+#: qml/Dash/Previews/PreviewRatingInput.qml:126
134msgid "Add a review"
134msgid "Add a review"
135msgstr "Додати рецензію"
135msgstr "Додати рецензію"
136
136
137−#: qml/Dash/Previews/PreviewRatingInput.qml:168
137+#: qml/Dash/Previews/PreviewRatingInput.qml:166
138msgid "Send"
138msgid "Send"
139msgstr "Надіслати"
139msgstr "Надіслати"
140
140
@@ -170,6 +170,14 @@ msgstr "Показати пароль"
170msgid "Please enter SIM PIN"
170msgid "Please enter SIM PIN"
171msgstr "Введіть PIN-код SIM-картки"
171msgstr "Введіть PIN-код SIM-картки"
172
172
173+#: qml/Panel/ActiveCallHint.qml:77
174+msgid "Tap to return to call..."
175+msgstr "Торкніться, щоб повернутися до дзвінка…"
176+
177+#: qml/Panel/ActiveCallHint.qml:90
178+msgid "Conference"
179+msgstr "Конференція"
180+
173#: qml/Panel/Indicators/MenuItemFactory.qml:583
181#: qml/Panel/Indicators/MenuItemFactory.qml:583
174msgid "In queue…"
182msgid "In queue…"
175msgstr "У черзі…"
183msgstr "У черзі…"
po/vi.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:17+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -80,10 +80,6 @@ msgstr ""
80msgid "OK"
80msgid "OK"
81msgstr ""
81msgstr ""
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr ""
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr ""
105msgid "See more"
101msgid "See more"
106msgstr ""
102msgstr ""
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr ""
106msgstr ""
111
107
@@ -113,6 +109,10 @@ msgstr ""
113msgid "Recent"
109msgid "Recent"
114msgstr ""
110msgstr ""
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr ""
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr ""
118msgstr ""
@@ -121,15 +121,15 @@ msgstr ""
121msgid "Less..."
121msgid "Less..."
122msgstr ""
122msgstr ""
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr ""
126msgstr ""
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130msgstr ""
130msgstr ""
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr ""
134msgstr ""
135
135
@@ -165,6 +165,14 @@ msgstr ""
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr ""
166msgstr ""
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr ""
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr ""
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170msgstr ""
178msgstr ""
po/xh.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:17+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -80,10 +80,6 @@ msgstr ""
80msgid "OK"
80msgid "OK"
81msgstr ""
81msgstr ""
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr ""
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr ""
105msgid "See more"
101msgid "See more"
106msgstr ""
102msgstr ""
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr ""
106msgstr ""
111
107
@@ -113,6 +109,10 @@ msgstr ""
113msgid "Recent"
109msgid "Recent"
114msgstr ""
110msgstr ""
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr ""
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr ""
118msgstr ""
@@ -121,15 +121,15 @@ msgstr ""
121msgid "Less..."
121msgid "Less..."
122msgstr ""
122msgstr ""
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr ""
126msgstr ""
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130msgstr ""
130msgstr ""
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr ""
134msgstr ""
135
135
@@ -165,6 +165,14 @@ msgstr ""
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr ""
166msgstr ""
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr ""
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr ""
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170msgstr ""
178msgstr ""
po/zh_CN.po+29−21
@@ -7,24 +7,24 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11−"PO-Revision-Date: 2014-06-12 08:55+0000\n"
11+"PO-Revision-Date: 2014-07-29 02:48+0000\n"
12−"Last-Translator: Shengjing Zhu <Unknown>\n"
12+"Last-Translator: Luo Lei <luolei@ubuntukylin.com>\n"
13"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
13"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-30 07:08+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
22msgid "Pin shortcut"
22msgid "Pin shortcut"
23−msgstr ""
23+msgstr "固定快捷方式"
24
24
25#: plugins/Unity/Launcher/launcheritem.cpp:73
25#: plugins/Unity/Launcher/launcheritem.cpp:73
26msgid "Unpin shortcut"
26msgid "Unpin shortcut"
27−msgstr ""
27+msgstr "取消固定快捷方式"
28
28
29#: qml/Components/EdgeDemoOverlay.qml:151
29#: qml/Components/EdgeDemoOverlay.qml:151
30msgid "Skip intro"
30msgid "Skip intro"
@@ -80,10 +80,6 @@ msgstr "紧急电话"
80msgid "OK"
80msgid "OK"
81msgstr "确定"
81msgstr "确定"
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr "近期搜索"
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr "完成"
105msgid "See more"
101msgid "See more"
106msgstr "了解更多"
102msgstr "了解更多"
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr "显示更少"
106msgstr "显示更少"
111
107
@@ -113,6 +109,10 @@ msgstr "显示更少"
113msgid "Recent"
109msgid "Recent"
114msgstr "最近使用过的"
110msgstr "最近使用过的"
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr "查看全部"
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr "更多..."
118msgstr "更多..."
@@ -121,15 +121,15 @@ msgstr "更多..."
121msgid "Less..."
121msgid "Less..."
122msgstr "更少..."
122msgstr "更少..."
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr "评分"
126msgstr "评分"
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130msgstr "添加评论"
130msgstr "添加评论"
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr "发送"
134msgstr "发送"
135
135
@@ -165,29 +165,37 @@ msgstr "显示密码"
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr "请输入 SIM PIN"
166msgstr "请输入 SIM PIN"
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr "点击回到通话..."
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr "会议"
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170−msgstr ""
178+msgstr "排队中..."
171
179
172#: qml/Panel/Indicators/MenuItemFactory.qml:587
180#: qml/Panel/Indicators/MenuItemFactory.qml:587
173msgid "Downloading"
181msgid "Downloading"
174−msgstr ""
182+msgstr "正在下载"
175
183
176#: qml/Panel/Indicators/MenuItemFactory.qml:589
184#: qml/Panel/Indicators/MenuItemFactory.qml:589
177msgid "Paused, tap to resume"
185msgid "Paused, tap to resume"
178−msgstr ""
186+msgstr "已暂停,点击继续"
179
187
180#: qml/Panel/Indicators/MenuItemFactory.qml:591
188#: qml/Panel/Indicators/MenuItemFactory.qml:591
181msgid "Canceled"
189msgid "Canceled"
182−msgstr ""
190+msgstr "已取消"
183
191
184#: qml/Panel/Indicators/MenuItemFactory.qml:593
192#: qml/Panel/Indicators/MenuItemFactory.qml:593
185msgid "Finished"
193msgid "Finished"
186−msgstr ""
194+msgstr "已完成"
187
195
188#: qml/Panel/Indicators/MenuItemFactory.qml:595
196#: qml/Panel/Indicators/MenuItemFactory.qml:595
189msgid "Failed, tap to retry"
197msgid "Failed, tap to retry"
190−msgstr ""
198+msgstr "下载失败,请点击重试"
191
199
192#: qml/Panel/SearchIndicator.qml:27
200#: qml/Panel/SearchIndicator.qml:27
193msgid "Search"
201msgid "Search"
po/zh_HK.po+19−11
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11"PO-Revision-Date: 2014-01-25 13:32+0000\n"
11"PO-Revision-Date: 2014-01-25 13:32+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"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-26 07:17+0000\n"
18−"X-Generator: Launchpad (build 17100)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -80,10 +80,6 @@ msgstr "緊急電話"
80msgid "OK"
80msgid "OK"
81msgstr ""
81msgstr ""
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr "最近的搜尋"
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr ""
105msgid "See more"
101msgid "See more"
106msgstr ""
102msgstr ""
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr ""
106msgstr ""
111
107
@@ -113,6 +109,10 @@ msgstr ""
113msgid "Recent"
109msgid "Recent"
114msgstr ""
110msgstr ""
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr ""
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr ""
118msgstr ""
@@ -121,15 +121,15 @@ msgstr ""
121msgid "Less..."
121msgid "Less..."
122msgstr ""
122msgstr ""
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr "評價"
126msgstr "評價"
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130msgstr "新增評論"
130msgstr "新增評論"
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr "傳送"
134msgstr "傳送"
135
135
@@ -165,6 +165,14 @@ msgstr "顯示密碼"
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr ""
166msgstr ""
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr ""
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr ""
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170msgstr ""
178msgstr ""
po/zh_TW.po+21−13
@@ -7,15 +7,15 @@ 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: 2014-07-07 12:15+0100\n"
10+"POT-Creation-Date: 2014-07-11 14:59+0200\n"
11−"PO-Revision-Date: 2014-07-18 10:14+0000\n"
11+"PO-Revision-Date: 2014-07-26 16:21+0000\n"
12−"Last-Translator: Henry Yang <henry9846@hotmail.com>\n"
12+"Last-Translator: Cheng-Chia Tseng <pswo10680@gmail.com>\n"
13"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
13"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-19 06:19+0000\n"
17+"X-Launchpad-Export-Date: 2014-07-27 06:35+0000\n"
18−"X-Generator: Launchpad (build 17114)\n"
18+"X-Generator: Launchpad (build 17131)\n"
19
19
20#: plugins/Unity/Launcher/launcheritem.cpp:43
20#: plugins/Unity/Launcher/launcheritem.cpp:43
21#: plugins/Unity/Launcher/launcheritem.cpp:73
21#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -80,10 +80,6 @@ msgstr "緊急通話"
80msgid "OK"
80msgid "OK"
81msgstr "確定"
81msgstr "確定"
82
82
83−#: qml/Components/PageHeader.qml:366
84−msgid "Recent searches"
85−msgstr "最近搜尋"
86−
87#: qml/Components/PassphraseLockscreen.qml:60
83#: qml/Components/PassphraseLockscreen.qml:60
88#, qt-format
84#, qt-format
89msgid "Hello %1"
85msgid "Hello %1"
@@ -105,7 +101,7 @@ msgstr "完成"
105msgid "See more"
101msgid "See more"
106msgstr "查看更多"
102msgstr "查看更多"
107
103
108−#: qml/Components/SeeMore.qml:58
104+#: qml/Components/SeeMore.qml:58 qml/Dash/GenericScopeView.qml:330
109msgid "See less"
105msgid "See less"
110msgstr "縮減查看"
106msgstr "縮減查看"
111
107
@@ -113,6 +109,10 @@ msgstr "縮減查看"
113msgid "Recent"
109msgid "Recent"
114msgstr "最近"
110msgstr "最近"
115
111
112+#: qml/Dash/GenericScopeView.qml:330
113+msgid "See all"
114+msgstr "查看全部"
115+
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
116#: qml/Dash/Previews/PreviewActionCombo.qml:34
117msgid "More..."
117msgid "More..."
118msgstr "更多…"
118msgstr "更多…"
@@ -121,15 +121,15 @@ msgstr "更多…"
121msgid "Less..."
121msgid "Less..."
122msgstr "縮減…"
122msgstr "縮減…"
123
123
124−#: qml/Dash/Previews/PreviewRatingInput.qml:82
124+#: qml/Dash/Previews/PreviewRatingInput.qml:81
125msgid "Rate this"
125msgid "Rate this"
126msgstr "給予評等"
126msgstr "給予評等"
127
127
128−#: qml/Dash/Previews/PreviewRatingInput.qml:128
128+#: qml/Dash/Previews/PreviewRatingInput.qml:126
129msgid "Add a review"
129msgid "Add a review"
130msgstr "新增評論"
130msgstr "新增評論"
131
131
132−#: qml/Dash/Previews/PreviewRatingInput.qml:168
132+#: qml/Dash/Previews/PreviewRatingInput.qml:166
133msgid "Send"
133msgid "Send"
134msgstr "發送"
134msgstr "發送"
135
135
@@ -165,6 +165,14 @@ msgstr "顯示密碼"
165msgid "Please enter SIM PIN"
165msgid "Please enter SIM PIN"
166msgstr "請輸入 SIM 卡 PIN 碼"
166msgstr "請輸入 SIM 卡 PIN 碼"
167
167
168+#: qml/Panel/ActiveCallHint.qml:77
169+msgid "Tap to return to call..."
170+msgstr "輕觸可返回通話…"
171+
172+#: qml/Panel/ActiveCallHint.qml:90
173+msgid "Conference"
174+msgstr "會議"
175+
168#: qml/Panel/Indicators/MenuItemFactory.qml:583
176#: qml/Panel/Indicators/MenuItemFactory.qml:583
169msgid "In queue…"
177msgid "In queue…"
170msgstr "佇列中…"
178msgstr "佇列中…"
qml/Components/Dialogs.qmlnew file+217
@@ -0,0 +1,217 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.0
18+
19+import Unity.Application 0.1
20+import Unity.Session 0.1
21+import Ubuntu.Components 0.1
22+import Ubuntu.Components.Popups 0.1
23+
24+Item {
25+ id: root
26+
27+ function onPowerKeyPressed() {
28+ if (!powerKeyTimer.running) {
29+ powerKeyTimer.start();
30+ }
31+ }
32+
33+ function onPowerKeyReleased() {
34+ powerKeyTimer.stop();
35+ }
36+
37+ signal powerOffClicked();
38+
39+ QtObject {
40+ id: d // private stuff
41+
42+ property bool dialogShown: false
43+
44+ function showPowerDialog() {
45+ if (!d.dialogShown) {
46+ d.dialogShown = true;
47+ PopupUtils.open(powerDialog, root, {"z": root.z});
48+ }
49+ }
50+ }
51+
52+ Timer {
53+ id: powerKeyTimer
54+ interval: 2000
55+ repeat: false
56+ triggeredOnStart: false
57+
58+ onTriggered: {
59+ d.showPowerDialog();
60+ }
61+ }
62+
63+ Component {
64+ id: logoutDialog
65+ Dialog {
66+ id: dialogueLogout
67+ title: "Logout"
68+ text: "Are you sure that you want to logout?"
69+ Button {
70+ text: "Cancel"
71+ onClicked: {
72+ PopupUtils.close(dialogueLogout);
73+ d.dialogShown = false;
74+ }
75+ }
76+ Button {
77+ text: "Yes"
78+ onClicked: {
79+ DBusUnitySessionService.Logout();
80+ PopupUtils.close(dialogueLogout);
81+ d.dialogShown = false;
82+ }
83+ }
84+ }
85+ }
86+
87+ Component {
88+ id: shutdownDialog
89+ Dialog {
90+ id: dialogueShutdown
91+ title: "Shutdown"
92+ text: "Are you sure that you want to shutdown?"
93+ Button {
94+ text: "Cancel"
95+ onClicked: {
96+ PopupUtils.close(dialogueShutdown);
97+ d.dialogShown = false;
98+ }
99+ }
100+ Button {
101+ text: "Yes"
102+ onClicked: {
103+ dBusUnitySessionServiceConnection.closeAllApps();
104+ DBusUnitySessionService.Shutdown();
105+ PopupUtils.close(dialogueShutdown);
106+ d.dialogShown = false;
107+ }
108+ }
109+ }
110+ }
111+
112+ Component {
113+ id: rebootDialog
114+ Dialog {
115+ id: dialogueReboot
116+ title: "Reboot"
117+ text: "Are you sure that you want to reboot?"
118+ Button {
119+ text: "Cancel"
120+ onClicked: {
121+ PopupUtils.close(dialogueReboot)
122+ d.dialogShown = false;
123+ }
124+ }
125+ Button {
126+ text: "Yes"
127+ onClicked: {
128+ dBusUnitySessionServiceConnection.closeAllApps();
129+ DBusUnitySessionService.Reboot();
130+ PopupUtils.close(dialogueReboot);
131+ d.dialogShown = false;
132+ }
133+ }
134+ }
135+ }
136+
137+ Component {
138+ id: powerDialog
139+ Dialog {
140+ id: dialoguePower
141+ title: "Power"
142+ text: i18n.tr("Are you sure you would like to turn power off?")
143+ Button {
144+ text: i18n.tr("Power off")
145+ onClicked: {
146+ dBusUnitySessionServiceConnection.closeAllApps();
147+ PopupUtils.close(dialoguePower);
148+ d.dialogShown = false;
149+ root.powerOffClicked();
150+ }
151+ }
152+ Button {
153+ text: i18n.tr("Restart")
154+ onClicked: {
155+ dBusUnitySessionServiceConnection.closeAllApps();
156+ DBusUnitySessionService.Reboot();
157+ PopupUtils.close(dialoguePower);
158+ d.dialogShown = false;
159+ }
160+ }
161+ Button {
162+ text: i18n.tr("Cancel")
163+ onClicked: {
164+ PopupUtils.close(dialoguePower);
165+ d.dialogShown = false;
166+ }
167+ }
168+ }
169+ }
170+
171+
172+ Connections {
173+ id: dBusUnitySessionServiceConnection
174+ objectName: "dBusUnitySessionServiceConnection"
175+ target: DBusUnitySessionService
176+
177+ function closeAllApps() {
178+ while (true) {
179+ var app = ApplicationManager.get(0);
180+ if (app === null) {
181+ break;
182+ }
183+ ApplicationManager.stopApplication(app.appId);
184+ }
185+ }
186+
187+ onLogoutRequested: {
188+ // Display a dialog to ask the user to confirm.
189+ if (!d.dialogShown) {
190+ d.dialogShown = true;
191+ PopupUtils.open(logoutDialog, root, {"z": root.z});
192+ }
193+ }
194+
195+ onShutdownRequested: {
196+ // Display a dialog to ask the user to confirm.
197+ if (!d.dialogShown) {
198+ d.dialogShown = true;
199+ PopupUtils.open(shutdownDialog, root, {"z": root.z});
200+ }
201+ }
202+
203+ onRebootRequested: {
204+ // Display a dialog to ask the user to confirm.
205+ if (!d.dialogShown) {
206+ d.dialogShown = true;
207+ PopupUtils.open(rebootDialog, root, {"z": root.z});
208+ }
209+ }
210+
211+ onLogoutReady: {
212+ closeAllApps();
213+ Qt.quit();
214+ }
215+ }
216+
217+}
qml/Components/DraggingArea.qml+4
@@ -117,4 +117,8 @@ MouseArea {
117 dragging = false
117 dragging = false
118 __pressedPosition = Qt.point(mouse.x, mouse.y)
118 __pressedPosition = Qt.point(mouse.x, mouse.y)
119 }
119 }
120+
121+ onCanceled: {
122+ dragging = false
123+ }
120}
124}
qml/Components/InputMethod.qmlnew file+79
@@ -0,0 +1,79 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.0
18+import Unity.Application 0.1
19+import Ubuntu.Components 0.1
20+
21+Item {
22+ id: root
23+
24+ property var surface: null
25+
26+ property int transitionDuration: UbuntuAnimation.FastDuration
27+
28+ state: {
29+ if (surface && surface.state != MirSurfaceItem.Minimized) {
30+ return "shown";
31+ } else {
32+ return "hidden";
33+ }
34+ }
35+
36+ states: [
37+ State {
38+ name: "shown"
39+ PropertyChanges {
40+ target: root
41+ visible: true
42+ y: 0
43+ }
44+ },
45+ State {
46+ name: "hidden"
47+ PropertyChanges {
48+ target: root
49+ visible: false
50+ // half-way down because the vkb occupies only the lower half of the surface
51+ // TODO: consider keyboard rotation
52+ y: root.parent.height / 2.0
53+ }
54+ }
55+ ]
56+
57+ transitions: [
58+ Transition {
59+ from: "*"; to: "*"
60+ PropertyAction { property: "visible"; value: true }
61+ UbuntuNumberAnimation { property: "y"; duration: transitionDuration }
62+ }
63+ ]
64+
65+ onSurfaceChanged: {
66+ if (surface) {
67+ surface.parent = root;
68+ surface.anchors.fill = root;
69+ }
70+ }
71+
72+ Component.onDestruction: {
73+ if (surface) {
74+ surface.parent = null;
75+ surface.release();
76+ surface = null;
77+ }
78+ }
79+}
qml/Components/PageHeader.qml+3−1
@@ -117,7 +117,7 @@ Item {
117 Flickable {
117 Flickable {
118 id: headerContainer
118 id: headerContainer
119 objectName: "headerContainer"
119 objectName: "headerContainer"
120− clip: true
120+ clip: openSearchAnimation.running
121 anchors { left: parent.left; top: parent.top; right: parent.right }
121 anchors { left: parent.left; top: parent.top; right: parent.right }
122 height: units.gu(6.5)
122 height: units.gu(6.5)
123 contentHeight: headersColumn.height
123 contentHeight: headersColumn.height
@@ -155,6 +155,7 @@ Item {
155 anchors { left: parent.left; right: parent.right }
155 anchors { left: parent.left; right: parent.right }
156 height: headerContainer.height
156 height: headerContainer.height
157 contentHeight: height
157 contentHeight: height
158+ opacity: headerContainer.clip || headerContainer.showSearch ? 1 : 0 // setting visible false cause column to relayout
158 separatorSource: ""
159 separatorSource: ""
159 // Required to keep PageHeadStyle noise down as it expects the Page's properties around.
160 // Required to keep PageHeadStyle noise down as it expects the Page's properties around.
160 property var styledItem: searchHeader
161 property var styledItem: searchHeader
@@ -229,6 +230,7 @@ Item {
229 anchors { left: parent.left; right: parent.right }
230 anchors { left: parent.left; right: parent.right }
230 height: headerContainer.height
231 height: headerContainer.height
231 contentHeight: height
232 contentHeight: height
233+ opacity: headerContainer.clip || !headerContainer.showSearch ? 1 : 0 // setting visible false cause column to relayout
232 separatorSource: ""
234 separatorSource: ""
233 textColor: root.scopeStyle ? root.scopeStyle.headerForeground : "grey"
235 textColor: root.scopeStyle ? root.scopeStyle.headerForeground : "grey"
234 property var styledItem: header
236 property var styledItem: header
qml/Dash/Apps/RunningApplicationTile.qml+42−34
@@ -29,11 +29,8 @@ AbstractButton {
29 signal requestedActivationMode()
29 signal requestedActivationMode()
30 signal requestedTerminationMode()
30 signal requestedTerminationMode()
31
31
32− // Was: childrenRect.height
32+ width: thumbnail.width
33− // To avoid "binding loop" warning
34− height: shapedApplicationImage.height + labelContainer.height
33+ height: thumbnail.height + labelContainer.height
35−
36− width: shapedApplicationImage.width <= units.gu(11) ? units.gu(11) : height
37
34
38 property bool terminationModeEnabled: false
35 property bool terminationModeEnabled: false
39
36
@@ -50,42 +47,53 @@ AbstractButton {
50 }
47 }
51 }
48 }
52
49
50+ Item {
51+ id: thumbnail
52+
53+ width: shapedApplicationImage.width
54+ height: shapedApplicationImage.height
55+
53− UbuntuShape {
56+ UbuntuShape {
54− id: shapedApplicationImage
57+ id: shapedApplicationImage
55− anchors { top: parent.top; horizontalCenter: parent.horizontalCenter }
58+ x: 0
56−
59+ y: 0
57− height: units.gu(17)
60+ height: applicationImage.height
58− width: applicationImage.width
61+ width: applicationImage.width
59− radius: "medium"
62+ radius: "medium"
60−
63+
61− image: Image {
64+ image: Image {
62− id: applicationImage
65+ id: applicationImage
63− source: application.screenshot
66+ source: application.screenshot
64− // height : width = ss.height : ss.width
67+ // height : width = ss.height : ss.width
65− height: shapedApplicationImage.height
68+
69+ property bool isLandscape: sourceSize.width > sourceSize.height
70+ property real maxDimension: units.gu(17)
71+
72+ width: isLandscape ? Math.min(sourceSize.width, maxDimension) : height * (sourceSize.width / sourceSize.height)
73+ height: isLandscape ? width * (sourceSize.height / sourceSize.width) : Math.min(sourceSize.height, maxDimension)
66− fillMode: Image.PreserveAspectCrop
74+ fillMode: Image.Stretch
67− width: Math.min(height, height * sourceSize.width / sourceSize.height)
68− }
75+ }
69
76
70− }
77+ }
71
78
72− UbuntuShape {
79+ UbuntuShape {
73− id: borderPressed
80+ id: borderPressed
74
81
75− anchors.fill: shapedApplicationImage
82+ anchors.fill: shapedApplicationImage
76− radius: "medium"
83+ radius: "medium"
77− borderSource: "radius_pressed.sci"
84+ borderSource: "radius_pressed.sci"
78− opacity: root.pressed ? 1.0 : 0.0
85+ opacity: root.pressed ? 1.0 : 0.0
79− Behavior on opacity { NumberAnimation { duration: 200; easing.type: Easing.OutQuint } }
86+ Behavior on opacity { NumberAnimation { duration: 200; easing.type: Easing.OutQuint } }
87+ }
80 }
88 }
81
89
82 // FIXME: label code duplicated with Tile
90 // FIXME: label code duplicated with Tile
83 Item {
91 Item {
84 id: labelContainer
92 id: labelContainer
85 anchors {
93 anchors {
86− left: parent.left
94+ left: thumbnail.left
87− right: parent.right
95+ right: thumbnail.right
88− top: shapedApplicationImage.bottom
96+ top: thumbnail.bottom
89 }
97 }
90 height: units.gu(2)
98 height: units.gu(2)
91
99
@@ -110,9 +118,9 @@ AbstractButton {
110 CloseIcon {
118 CloseIcon {
111 objectName: "closeIcon " + model.name
119 objectName: "closeIcon " + model.name
112 anchors {
120 anchors {
113− left: shapedApplicationImage.left
121+ left: thumbnail.left
114 leftMargin: -units.gu(1)
122 leftMargin: -units.gu(1)
115− top: parent.top
123+ top: thumbnail.top
116 topMargin: -units.gu(1)
124 topMargin: -units.gu(1)
117 }
125 }
118 height: units.gu(6)
126 height: units.gu(6)
qml/Dash/DashContent.qml+4
@@ -121,6 +121,10 @@ Item {
121 Loader {
121 Loader {
122 width: ListView.view.width
122 width: ListView.view.width
123 height: ListView.view.height
123 height: ListView.view.height
124+ opacity: { // hide delegate if offscreen
125+ var xPositionRelativetoView = ListView.view.contentX - x
126+ return (xPositionRelativetoView > -width && xPositionRelativetoView < width) ? 1 : 0
127+ }
124 asynchronous: true
128 asynchronous: true
125 // TODO This if will eventually go away since we're killing DashApps.qml
129 // TODO This if will eventually go away since we're killing DashApps.qml
126 // once we move app closing to the spread
130 // once we move app closing to the spread
qml/Dash/graphics/phone/screenshots/vkb_portrait.pngnew file

Binary file not shown.

qml/Launcher/Launcher.qml+1−1
@@ -181,7 +181,7 @@ Item {
181 bottom: parent.bottom
181 bottom: parent.bottom
182 }
182 }
183 x: -width
183 x: -width
184− opacity: (x == -width && dragArea.status === DirectionalDragArea.WaitingForTouch) ? 0 : 1
184+ visible: x > -width || dragArea.status === DirectionalDragArea.Undecided
185 model: LauncherModel
185 model: LauncherModel
186
186
187 property bool animate: true
187 property bool animate: true
qml/Panel/Indicators.qml+3
@@ -37,6 +37,7 @@ Showable {
37 readonly property int lockThreshold: openedHeight / 2
37 readonly property int lockThreshold: openedHeight / 2
38 property bool fullyOpened: height == openedHeight
38 property bool fullyOpened: height == openedHeight
39 property bool partiallyOpened: height > panelHeight && !fullyOpened
39 property bool partiallyOpened: height > panelHeight && !fullyOpened
40+ property bool fullyClosed: height <= panelHeight
40 property bool contentEnabled: true
41 property bool contentEnabled: true
41 property bool initalizeItem: true
42 property bool initalizeItem: true
42 readonly property alias content: menuContent
43 readonly property alias content: menuContent
@@ -187,6 +188,7 @@ Showable {
187 bottom: handle.top
188 bottom: handle.top
188 }
189 }
189 indicatorsModel: visibleIndicators.model
190 indicatorsModel: visibleIndicators.model
191+ visible: indicators.partiallyOpened || indicators.fullyOpened
190 clip: !indicators.fullyOpened
192 clip: !indicators.fullyOpened
191 activeHeader: indicators.state == "hint" || indicators.state == "reveal"
193 activeHeader: indicators.state == "hint" || indicators.state == "reveal"
192 enabled: contentEnabled
194 enabled: contentEnabled
@@ -219,6 +221,7 @@ Showable {
219 }
221 }
220 height: Math.max(Math.min(handleImage.height, indicators.height - handleImage.height), 0)
222 height: Math.max(Math.min(handleImage.height, indicators.height - handleImage.height), 0)
221 clip: height < handleImage.height
223 clip: height < handleImage.height
224+ visible: menuContent.visible
222
225
223 BorderImage {
226 BorderImage {
224 id: handleImage
227 id: handleImage
qml/Shell.qml+156−378
@@ -19,9 +19,9 @@ import AccountsService 0.1
19import GSettings 1.0
19import GSettings 1.0
20import Unity.Application 0.1
20import Unity.Application 0.1
21import Ubuntu.Components 0.1
21import Ubuntu.Components 0.1
22−import Ubuntu.Components.Popups 0.1
23import Ubuntu.Gestures 0.1
22import Ubuntu.Gestures 0.1
24import Unity.Launcher 0.1
23import Unity.Launcher 0.1
24+import Utils 0.1
25import LightDM 0.1 as LightDM
25import LightDM 0.1 as LightDM
26import Powerd 0.1
26import Powerd 0.1
27import SessionBroadcast 0.1
27import SessionBroadcast 0.1
@@ -31,10 +31,11 @@ import "Launcher"
31import "Panel"
31import "Panel"
32import "Components"
32import "Components"
33import "Notifications"
33import "Notifications"
34+import "Stages"
34import Unity.Notifications 1.0 as NotificationBackend
35import Unity.Notifications 1.0 as NotificationBackend
35import Unity.Session 0.1
36import Unity.Session 0.1
36
37
37−FocusScope {
38+Item {
38 id: shell
39 id: shell
39
40
40 // this is only here to select the width / height of the window if not running fullscreen
41 // this is only here to select the width / height of the window if not running fullscreen
@@ -47,7 +48,7 @@ FocusScope {
47 property url background
48 property url background
48 readonly property real panelHeight: panel.panelHeight
49 readonly property real panelHeight: panel.panelHeight
49
50
50− property bool dashShown: dash.shown
51+ property bool dashShown: dash.shown && dash.available && underlay.visible
51 property bool locked: LightDM.Greeter.active && !LightDM.Greeter.promptless
52 property bool locked: LightDM.Greeter.active && !LightDM.Greeter.promptless
52
53
53 property bool sideStageEnabled: shell.width >= units.gu(100)
54 property bool sideStageEnabled: shell.width >= units.gu(100)
@@ -56,14 +57,10 @@ FocusScope {
56 function activateApplication(appId) {
57 function activateApplication(appId) {
57 if (ApplicationManager.findApplication(appId)) {
58 if (ApplicationManager.findApplication(appId)) {
58 ApplicationManager.requestFocusApplication(appId);
59 ApplicationManager.requestFocusApplication(appId);
59− stages.show(true);
60− if (stages.locked && ApplicationManager.focusedApplicationId == appId) {
61− applicationsDisplayLoader.item.select(appId);
62− }
63 } else {
60 } else {
64 var execFlags = shell.sideStageEnabled ? ApplicationManager.NoFlag : ApplicationManager.ForceMainStage;
61 var execFlags = shell.sideStageEnabled ? ApplicationManager.NoFlag : ApplicationManager.ForceMainStage;
65 ApplicationManager.startApplication(appId, execFlags);
62 ApplicationManager.startApplication(appId, execFlags);
66− stages.show(false);
63+ stages.show();
67 }
64 }
68 }
65 }
69
66
@@ -90,82 +87,74 @@ FocusScope {
90 id: volumeControl
87 id: volumeControl
91 }
88 }
92
89
90+ WindowKeysFilter {
91+ // Handle but do not filter out volume keys
93− Keys.onVolumeUpPressed: volumeControl.volumeUp()
92+ Keys.onVolumeUpPressed: { volumeControl.volumeUp(); event.accepted = false; }
94− Keys.onVolumeDownPressed: volumeControl.volumeDown()
93+ Keys.onVolumeDownPressed: { volumeControl.volumeDown(); event.accepted = false; }
95
94
96− Item {
95+ Keys.onPressed: {
97− id: underlayClipper
96+ if (event.key == Qt.Key_PowerOff || event.key == Qt.Key_PowerDown) {
98− anchors.fill: parent
97+ dialogs.onPowerKeyPressed();
99− anchors.rightMargin: stages.overlayWidth
98+ event.accepted = true;
100− clip: stages.overlayMode && !stages.painting
99+ } else {
100+ event.accepted = false;
101+ }
102+ }
101
103
102− InputFilterArea {
104+ Keys.onReleased: {
103− anchors.fill: parent
105+ if (event.key == Qt.Key_PowerOff || event.key == Qt.Key_PowerDown) {
104− blockInput: parent.clip
106+ dialogs.onPowerKeyReleased();
107+ event.accepted = true;
108+ } else {
109+ event.accepted = false;
110+ }
105 }
111 }
112+ }
106
113
107− Item {
114+ Item {
108− id: underlay
115+ id: underlay
109− objectName: "underlay"
116+ objectName: "underlay"
110− anchors.fill: parent
117+ anchors.fill: parent
111− anchors.rightMargin: -parent.anchors.rightMargin
112
118
113− // Whether the underlay is fully covered by opaque UI elements.
119+ // Whether the underlay is fully covered by opaque UI elements.
114− property bool fullyCovered: panel.indicators.fullyOpened && shell.width <= panel.indicators.width
120+ property bool fullyCovered: (panel.indicators.fullyOpened && shell.width <= panel.indicatorsMenuWidth)
121+ || stages.fullyShown || greeterWrapper.fullyShown
122+ visible: !fullyCovered
115
123
116− // Whether the user should see the topmost application surface (if there's one at all).
124+ Image {
117− readonly property bool applicationSurfaceShouldBeSeen: stages.shown && !stages.painting && !stages.overlayMode
125+ anchors.fill: dash
126+ source: shell.width > shell.height ? "Dash/graphics/paper_landscape.png" : "Dash/graphics/paper_portrait.png"
127+ fillMode: Image.PreserveAspectCrop
128+ horizontalAlignment: Image.AlignRight
129+ verticalAlignment: Image.AlignTop
130+ }
118
131
119− // NB! Application surfaces are stacked behind the shell one. So they can only be seen by the user
132+ Dash {
120− // through the translucent parts of the shell surface.
133+ id: dash
121− visible: !fullyCovered && !applicationSurfaceShouldBeSeen
134+ objectName: "dash"
122
135
123− Rectangle {
136+ available: !LightDM.Greeter.active
124− anchors.fill: parent
137+ hides: [stages, launcher, panel.indicators]
125− color: "black"
138+ shown: disappearingAnimationProgress !== 1.0 && greeterWrapper.showProgress !== 1.0 &&
126− opacity: dash.disappearingAnimationProgress
139+ !(panel.indicators.fullyOpened && !sideStageEnabled)
127− }
140+ enabled: disappearingAnimationProgress === 0.0 && greeterWrapper.showProgress === 0.0 && edgeDemo.dashEnabled
128
141
129− Image {
142+ anchors {
130− anchors.fill: dash
143+ fill: parent
131− source: shell.width > shell.height ? "Dash/graphics/paper_landscape.png" : "Dash/graphics/paper_portrait.png"
144+ topMargin: panel.panelHeight
132− fillMode: Image.PreserveAspectCrop
133− horizontalAlignment: Image.AlignRight
134− verticalAlignment: Image.AlignTop
135 }
145 }
136
146
137− Dash {
147+ contentScale: 1.0 - 0.2 * disappearingAnimationProgress
138− id: dash
148+ opacity: 1.0 - disappearingAnimationProgress
139− objectName: "dash"
149+ property real disappearingAnimationProgress: stages.showProgress
140
150
141− available: !LightDM.Greeter.active
142− hides: [stages, launcher, panel.indicators]
143− shown: disappearingAnimationProgress !== 1.0 && greeterWrapper.showProgress !== 1.0
144− enabled: disappearingAnimationProgress === 0.0 && greeterWrapper.showProgress === 0.0 && edgeDemo.dashEnabled
145−
146− anchors {
147− fill: parent
148− topMargin: panel.panelHeight
149− }
150−
151− contentScale: 1.0 - 0.2 * disappearingAnimationProgress
152− opacity: 1.0 - disappearingAnimationProgress
153− property real disappearingAnimationProgress: {
154− if (stages.overlayMode) {
155− return 0;
156− } else {
157− return stages.showProgress
158− }
159− }
160−
161− // FIXME: only necessary because stages.showProgress is not animated
151+ // FIXME: only necessary because stages.showProgress is not animated
162− Behavior on disappearingAnimationProgress { SmoothedAnimation { velocity: 5 }}
152+ Behavior on disappearingAnimationProgress { SmoothedAnimation { velocity: 5 }}
163− }
164 }
153 }
165 }
154 }
166
155
167 EdgeDragArea {
156 EdgeDragArea {
168− id: stagesDragHandle
157+ id: stagesDragArea
169 direction: Direction.Leftwards
158 direction: Direction.Leftwards
170
159
171 anchors { top: parent.top; right: parent.right; bottom: parent.bottom }
160 anchors { top: parent.top; right: parent.right; bottom: parent.bottom }
@@ -175,20 +164,20 @@ FocusScope {
175
164
176 onTouchXChanged: {
165 onTouchXChanged: {
177 if (status == DirectionalDragArea.Recognized) {
166 if (status == DirectionalDragArea.Recognized) {
178− if (ApplicationManager.count == 0) {
167+ if (ApplicationManager.empty) {
179− progress = Math.max(stages.width - stagesDragHandle.width + touchX, stages.width * .3)
168+ progress = Math.max(stages.width - stagesDragArea.width + touchX, stages.width * .3);
180 } else {
169 } else {
181− progress = stages.width - stagesDragHandle.width + touchX
170+ progress = stages.width - stagesDragArea.width + touchX;
182 }
171 }
183 }
172 }
184 }
173 }
185
174
186 onDraggingChanged: {
175 onDraggingChanged: {
187 if (!dragging) {
176 if (!dragging) {
188− if (ApplicationManager.count > 0 && progress < stages.width - units.gu(10)) {
177+ if (!ApplicationManager.empty && progress < stages.width - units.gu(10)) {
189− stages.show(true)
178+ stages.show();
190 }
179 }
191− stagesDragHandle.progress = stages.width;
180+ stagesDragArea.progress = Qt.binding(function () { return stages.width; });
192 }
181 }
193 }
182 }
194 }
183 }
@@ -199,253 +188,93 @@ FocusScope {
199 width: parent.width
188 width: parent.width
200 height: parent.height
189 height: parent.height
201
190
191+ visible: !fullyHidden && !ApplicationManager.empty
192+
202 x: {
193 x: {
203 if (shown) {
194 if (shown) {
204− if (overlayMode || locked || greeter.fakeActiveForApp !== "") {
195+ if (locked || greeter.fakeActiveForApp !== "") {
205 return 0;
196 return 0;
206 }
197 }
207− return launcher.progress
198+ return launcher.progress;
208 } else {
199 } else {
209− return stagesDragHandle.progress
200+ return stagesDragArea.progress
210 }
201 }
211 }
202 }
212−
213 Behavior on x { SmoothedAnimation { velocity: 600; duration: UbuntuAnimation.FastDuration } }
203 Behavior on x { SmoothedAnimation { velocity: 600; duration: UbuntuAnimation.FastDuration } }
214
204
215 property bool shown: false
205 property bool shown: false
206+ onShownChanged: {
207+ if (shown) {
208+ if (ApplicationManager.count > 0) {
209+ ApplicationManager.focusApplication(ApplicationManager.get(0).appId);
210+ }
211+ } else {
212+ if (ApplicationManager.focusedApplicationId) {
213+ ApplicationManager.updateScreenshot(ApplicationManager.focusedApplicationId);
214+ ApplicationManager.unfocusCurrentApplication();
215+ }
216+ }
217+ }
216
218
219+ // Avoid a silent "divide by zero -> NaN" situation during init as shell.width will be
220+ // zero. That breaks the property binding and the function won't be reevaluated once
221+ // shell.width is set, with the NaN result staying there for good.
217− property real showProgress: overlayMode ? 0 : MathUtils.clamp(1 - x / shell.width, 0, 1)
222+ property real showProgress: shell.width ? MathUtils.clamp(1 - x / shell.width, 0, 1) : 0
218
223
219 property bool fullyShown: x == 0
224 property bool fullyShown: x == 0
220 property bool fullyHidden: x == width
225 property bool fullyHidden: x == width
221
226
222− property bool painting: applicationsDisplayLoader.item ? applicationsDisplayLoader.item.painting : false
223− property bool fullscreen: applicationsDisplayLoader.item ? applicationsDisplayLoader.item.fullscreen : false
224− property bool overlayMode: applicationsDisplayLoader.item ? applicationsDisplayLoader.item.overlayMode : false
225− property int overlayWidth: applicationsDisplayLoader.item ? applicationsDisplayLoader.item.overlayWidth : false
226 property bool locked: applicationsDisplayLoader.item ? applicationsDisplayLoader.item.locked : false
227 property bool locked: applicationsDisplayLoader.item ? applicationsDisplayLoader.item.locked : false
227
228
229+ // It might technically not be fullyShown but visually it just looks so.
230+ property bool roughlyFullyShown: x >= 0 && x <= units.gu(1)
231+
228− function show(focusApp) {
232+ function show() {
229 shown = true;
233 shown = true;
230− panel.indicators.hide();
231− edgeDemo.stopDemo();
232− greeter.hide();
233− if (!ApplicationManager.focusedApplicationId && ApplicationManager.count > 0 && focusApp) {
234− ApplicationManager.focusApplication(ApplicationManager.get(0).appId);
235− }
236 }
234 }
237
235
238 function hide() {
236 function hide() {
239 shown = false;
237 shown = false;
240− if (ApplicationManager.focusedApplicationId) {
241− ApplicationManager.unfocusCurrentApplication();
242− }
243 }
238 }
244
239
245 Connections {
240 Connections {
246 target: ApplicationManager
241 target: ApplicationManager
247−
248 onFocusRequested: {
242 onFocusRequested: {
249 if (greeter.fakeActiveForApp !== "" && greeter.fakeActiveForApp !== appId) {
243 if (greeter.fakeActiveForApp !== "" && greeter.fakeActiveForApp !== appId) {
250 lockscreen.show();
244 lockscreen.show();
251 }
245 }
252 greeter.hide();
246 greeter.hide();
253− stages.show(true);
247+ stages.show();
254 }
248 }
255
249
256 onFocusedApplicationIdChanged: {
250 onFocusedApplicationIdChanged: {
257 if (greeter.fakeActiveForApp !== "" && greeter.fakeActiveForApp !== ApplicationManager.focusedApplicationId) {
251 if (greeter.fakeActiveForApp !== "" && greeter.fakeActiveForApp !== ApplicationManager.focusedApplicationId) {
258 lockscreen.show();
252 lockscreen.show();
259 }
253 }
260− if (ApplicationManager.focusedApplicationId.length > 0) {
254+ panel.indicators.hide();
261− stages.show(false);
262− } else {
263− if (!stages.overlayMode) {
264− stages.hide();
265− }
266− }
267 }
255 }
268
256
269 onApplicationAdded: {
257 onApplicationAdded: {
270− stages.show(false);
258+ if (greeter.shown) {
271− }
259+ greeter.hide();
272−
273− onApplicationRemoved: {
274− if (ApplicationManager.focusedApplicationId.length == 0) {
275− stages.hide();
276− }
277− }
278− }
279−
280− property bool dialogShown: false
281−
282− Component {
283− id: logoutDialog
284− Dialog {
285− id: dialogueLogout
286− title: "Logout"
287− text: "Are you sure that you want to logout?"
288− Button {
289− text: "Cancel"
290− onClicked: {
291− PopupUtils.close(dialogueLogout);
292− stages.dialogShown = false;
293− }
294− }
295− Button {
296− text: "Yes"
297− onClicked: {
298− DBusUnitySessionService.Logout();
299− PopupUtils.close(dialogueLogout);
300− stages.dialogShown = false;
301− }
302− }
303− }
304− }
305−
306− Component {
307− id: shutdownDialog
308− Dialog {
309− id: dialogueShutdown
310− title: "Shutdown"
311− text: "Are you sure that you want to shutdown?"
312− Button {
313− text: "Cancel"
314− onClicked: {
315− PopupUtils.close(dialogueShutdown);
316− stages.dialogShown = false;
317− }
318− }
319− Button {
320− text: "Yes"
321− onClicked: {
322− dBusUnitySessionServiceConnection.closeAllApps();
323− DBusUnitySessionService.Shutdown();
324− PopupUtils.close(dialogueShutdown);
325− stages.dialogShown = false;
326− }
327− }
328− }
329− }
330−
331− Component {
332− id: rebootDialog
333− Dialog {
334− id: dialogueReboot
335− title: "Reboot"
336− text: "Are you sure that you want to reboot?"
337− Button {
338− text: "Cancel"
339− onClicked: {
340− PopupUtils.close(dialogueReboot)
341− stages.dialogShown = false;
342− }
343− }
344− Button {
345− text: "Yes"
346− onClicked: {
347− dBusUnitySessionServiceConnection.closeAllApps();
348− DBusUnitySessionService.Reboot();
349− PopupUtils.close(dialogueReboot);
350− stages.dialogShown = false;
351− }
352− }
353− }
354− }
355−
356− Component {
357− id: powerDialog
358− Dialog {
359− id: dialoguePower
360− title: "Power"
361− text: i18n.tr("Are you sure you would like to turn power off?")
362− Button {
363− text: i18n.tr("Power off")
364− onClicked: {
365− dBusUnitySessionServiceConnection.closeAllApps();
366− PopupUtils.close(dialoguePower);
367− stages.dialogShown = false;
368− shutdownFadeOutRectangle.enabled = true;
369− shutdownFadeOutRectangle.visible = true;
370− shutdownFadeOut.start();
371− }
372− }
373− Button {
374− text: i18n.tr("Restart")
375− onClicked: {
376− dBusUnitySessionServiceConnection.closeAllApps();
377− DBusUnitySessionService.Reboot();
378− PopupUtils.close(dialoguePower);
379− stages.dialogShown = false;
380− }
381− }
382− Button {
383− text: i18n.tr("Cancel")
384− onClicked: {
385− PopupUtils.close(dialoguePower);
386− stages.dialogShown = false;
387− }
388− }
389− }
390− }
391−
392− function showPowerDialog() {
393− if (!stages.dialogShown) {
394− stages.dialogShown = true;
395− PopupUtils.open(powerDialog);
396− }
397− }
398−
399− Connections {
400− id: dBusUnitySessionServiceConnection
401− objectName: "dBusUnitySessionServiceConnection"
402− target: DBusUnitySessionService
403−
404− function closeAllApps() {
405− while (true) {
406− var app = ApplicationManager.get(0);
407− if (app === null) {
408− break;
409− }
410− ApplicationManager.stopApplication(app.appId);
411 }
260 }
412− }
413−
414− onLogoutRequested: {
415− // Display a dialog to ask the user to confirm.
416− if (!stages.dialogShown) {
261+ if (!stages.shown) {
417− stages.dialogShown = true;
262+ stages.show();
418− PopupUtils.open(logoutDialog);
419 }
263 }
420 }
264 }
421
265
422− onShutdownRequested: {
266+ onEmptyChanged: {
423− // Display a dialog to ask the user to confirm.
267+ if (ApplicationManager.empty) {
424− if (!stages.dialogShown) {
268+ stages.hide();
425− stages.dialogShown = true;
426− PopupUtils.open(shutdownDialog);
427− }
428− }
429−
430− onRebootRequested: {
431− // Display a dialog to ask the user to confirm.
432− if (!stages.dialogShown) {
433− stages.dialogShown = true;
434− PopupUtils.open(rebootDialog);
435 }
269 }
436 }
270 }
437−
438− onLogoutReady: {
439− closeAllApps();
440− Qt.quit();
441− }
442 }
271 }
443
272
444 Loader {
273 Loader {
445 id: applicationsDisplayLoader
274 id: applicationsDisplayLoader
446 anchors.fill: parent
275 anchors.fill: parent
447
276
448− source: shell.sideStageEnabled ? "Stages/StageWithSideStage.qml" : "Stages/PhoneStage.qml"
277+ source: shell.sideStageEnabled ? "Stages/TabletStage.qml" : "Stages/PhoneStage.qml"
449
278
450 Binding {
279 Binding {
451 target: applicationsDisplayLoader.item
280 target: applicationsDisplayLoader.item
@@ -454,18 +283,20 @@ FocusScope {
454 }
283 }
455 Binding {
284 Binding {
456 target: applicationsDisplayLoader.item
285 target: applicationsDisplayLoader.item
457− property: "moving"
286+ property: "dragAreaWidth"
458− value: !stages.fullyShown
287+ value: shell.edgeSize
459 }
288 }
460 Binding {
289 Binding {
461 target: applicationsDisplayLoader.item
290 target: applicationsDisplayLoader.item
462− property: "shown"
291+ property: "maximizedAppTopMargin"
463− value: stages.shown
292+ // Not just using panel.panelHeight as that changes depending on the focused app.
293+ value: panel.indicators.panelHeight
464 }
294 }
465 Binding {
295 Binding {
466 target: applicationsDisplayLoader.item
296 target: applicationsDisplayLoader.item
467− property: "dragAreaWidth"
297+ property: "interactive"
468− value: shell.edgeSize
298+ value: stages.roughlyFullyShown && !greeter.shown && !lockscreen.shown
299+ && panel.indicators.fullyClosed
469 }
300 }
470 Binding {
301 Binding {
471 target: applicationsDisplayLoader.item
302 target: applicationsDisplayLoader.item
@@ -475,6 +306,33 @@ FocusScope {
475 }
306 }
476 }
307 }
477
308
309+ InputMethod {
310+ id: inputMethod
311+ objectName: "inputMethod"
312+ anchors { fill: parent; topMargin: panel.panelHeight }
313+ z: notifications.useModal || panel.indicators.shown ? overlay.z + 1 : overlay.z - 1
314+ }
315+
316+ Connections {
317+ target: SurfaceManager
318+ onSurfaceCreated: {
319+ if (surface.type == MirSurfaceItem.InputMethod) {
320+ inputMethod.surface = surface;
321+ }
322+ }
323+
324+ onSurfaceDestroyed: {
325+ if (inputMethod.surface == surface) {
326+ inputMethod.surface = null;
327+ surface.parent = null;
328+ }
329+ if (!surface.parent) {
330+ // there's no one displaying it. delete it right away
331+ surface.release();
332+ }
333+ }
334+ }
335+
478 Lockscreen {
336 Lockscreen {
479 id: lockscreen
337 id: lockscreen
480 objectName: "lockscreen"
338 objectName: "lockscreen"
@@ -487,7 +345,7 @@ FocusScope {
487 showAnimation: StandardAnimation { property: "opacity"; to: 1 }
345 showAnimation: StandardAnimation { property: "opacity"; to: 1 }
488 hideAnimation: StandardAnimation { property: "opacity"; to: 0 }
346 hideAnimation: StandardAnimation { property: "opacity"; to: 0 }
489 y: panel.panelHeight
347 y: panel.panelHeight
490− x: required ? 0 : - width
348+ visible: required
491 width: parent.width
349 width: parent.width
492 height: parent.height - panel.panelHeight
350 height: parent.height - panel.panelHeight
493 background: shell.background
351 background: shell.background
@@ -574,6 +432,7 @@ FocusScope {
574 StandardAnimation {}
432 StandardAnimation {}
575 }
433 }
576
434
435+ property bool fullyShown: showProgress === 1.0
577 readonly property real showProgress: MathUtils.clamp((1 - x/width) + greeter.showProgress - 1, 0, 1)
436 readonly property real showProgress: MathUtils.clamp((1 - x/width) + greeter.showProgress - 1, 0, 1)
578 onShowProgressChanged: if (LightDM.Greeter.promptless && showProgress === 0) greeter.login()
437 onShowProgressChanged: if (LightDM.Greeter.promptless && showProgress === 0) greeter.login()
579
438
@@ -640,12 +499,6 @@ FocusScope {
640 }
499 }
641 }
500 }
642
501
643− InputFilterArea {
644− anchors.fill: parent
645− blockInput: ApplicationManager.focusedApplicationId.length === 0 || greeter.shown || lockscreen.shown || launcher.shown
646− || panel.indicators.shown
647− }
648−
649 Connections {
502 Connections {
650 id: powerConnection
503 id: powerConnection
651 target: Powerd
504 target: Powerd
@@ -688,7 +541,7 @@ FocusScope {
688 return;
541 return;
689 }
542 }
690
543
691− if (stages.shown && !stages.overlayMode && !stages.locked) {
544+ if (!stages.locked) {
692 stages.hide();
545 stages.hide();
693 launcher.fadeOut();
546 launcher.fadeOut();
694 } else {
547 } else {
@@ -703,6 +556,7 @@ FocusScope {
703
556
704 Item {
557 Item {
705 id: overlay
558 id: overlay
559+ z: 10
706
560
707 anchors.fill: parent
561 anchors.fill: parent
708
562
@@ -717,29 +571,13 @@ FocusScope {
717 width: parent.width > units.gu(60) ? units.gu(40) : parent.width
571 width: parent.width > units.gu(60) ? units.gu(40) : parent.width
718 panelHeight: units.gu(3)
572 panelHeight: units.gu(3)
719 }
573 }
720− property string focusedAppId: ApplicationManager.focusedApplicationId
721− property var focusedApplication: ApplicationManager.findApplication(focusedAppId)
722− fullscreenMode: (focusedApplication && stages.fullscreen && !LightDM.Greeter.active) || greeter.fakeActiveForApp !== ""
723
574
724− InputFilterArea {
575+ property bool topmostApplicationIsFullscreen:
725− anchors {
576+ ApplicationManager.focusedApplicationId &&
726− top: parent.top
577+ ApplicationManager.findApplication(ApplicationManager.focusedApplicationId).fullscreen
727− left: parent.left
728− right: parent.right
729− }
730− height: (panel.fullscreenMode) ? shell.edgeSize : panel.panelHeight
731− blockInput: true
732− }
733− }
734
578
735− InputFilterArea {
579+ fullscreenMode: (stages.roughlyFullyShown && topmostApplicationIsFullscreen
736− blockInput: launcher.shown
580+ && !LightDM.Greeter.active) || greeter.fakeActiveForApp !== ""
737− anchors {
738− top: parent.top
739− bottom: parent.bottom
740− left: parent.left
741− }
742− width: launcher.width
743 }
581 }
744
582
745 Launcher {
583 Launcher {
@@ -782,11 +620,6 @@ FocusScope {
782 MouseArea {
620 MouseArea {
783 anchors.fill: parent
621 anchors.fill: parent
784 }
622 }
785−
786− InputFilterArea {
787− anchors.fill: parent
788− blockInput: modalNotificationBackground.visible
789− }
790 }
623 }
791
624
792 Notifications {
625 Notifications {
@@ -812,36 +645,7 @@ FocusScope {
812 PropertyChanges { target: notifications; width: units.gu(38) }
645 PropertyChanges { target: notifications; width: units.gu(38) }
813 }
646 }
814 ]
647 ]
815−
816− InputFilterArea {
817− anchors { left: parent.left; right: parent.right }
818− height: parent.contentHeight
819− blockInput: height > 0
820− }
821− }
822− }
823−
824− focus: true
825− onFocusChanged: if (!focus) forceActiveFocus();
826−
827− InputFilterArea {
828− anchors {
829− top: parent.top
830− bottom: parent.bottom
831− left: parent.left
832− }
833− width: shell.edgeSize
834− blockInput: true
835− }
836−
837− InputFilterArea {
838− anchors {
839− top: parent.top
840− bottom: parent.bottom
841− right: parent.right
842 }
648 }
843− width: shell.edgeSize
844− blockInput: true
845 }
649 }
846
650
847 Binding {
651 Binding {
@@ -850,24 +654,22 @@ FocusScope {
850 value: "unity8"
654 value: "unity8"
851 }
655 }
852
656
853− OSKController {
657+ Dialogs {
854− anchors.topMargin: panel.panelHeight
658+ id: dialogs
855− anchors.fill: parent // as needs to know the geometry of the shell
659+ anchors.fill: parent
856− }
660+ z: overlay.z + 10
857−
661+ onPowerOffClicked: {
858− //FIXME: This should be handled in the input stack, keyboard shouldnt propagate
662+ shutdownFadeOutRectangle.enabled = true;
859− MouseArea {
663+ shutdownFadeOutRectangle.visible = true;
860− anchors.bottom: parent.bottom
664+ shutdownFadeOut.start();
861− anchors.left: parent.left
665+ }
862− anchors.right: parent.right
863− height: ApplicationManager.keyboardVisible ? ApplicationManager.keyboardHeight : 0
864−
865− enabled: ApplicationManager.keyboardVisible
866 }
666 }
867
667
868 Label {
668 Label {
669+ id: alphaDisclaimerLabel
869 anchors.centerIn: parent
670 anchors.centerIn: parent
870 visible: ApplicationManager.fake ? ApplicationManager.fake : false
671 visible: ApplicationManager.fake ? ApplicationManager.fake : false
672+ z: dialogs.z + 10
871 text: "EARLY ALPHA\nNOT READY FOR USE"
673 text: "EARLY ALPHA\nNOT READY FOR USE"
872 color: "lightgrey"
674 color: "lightgrey"
873 opacity: 0.2
675 opacity: 0.2
@@ -881,6 +683,7 @@ FocusScope {
881
683
882 EdgeDemo {
684 EdgeDemo {
883 id: edgeDemo
685 id: edgeDemo
686+ z: alphaDisclaimerLabel.z + 10
884 greeter: greeter
687 greeter: greeter
885 launcher: launcher
688 launcher: launcher
886 dash: dash
689 dash: dash
@@ -893,35 +696,9 @@ FocusScope {
893 onShowHome: showHome()
696 onShowHome: showHome()
894 }
697 }
895
698
896− Keys.onPressed: {
897− if (event.key == Qt.Key_PowerOff || event.key == Qt.Key_PowerDown) {
898− if (!powerKeyTimer.running) {
899− powerKeyTimer.start();
900− }
901− event.accepted = true;
902− }
903− }
904−
905− Keys.onReleased: {
906− if (event.key == Qt.Key_PowerOff || event.key == Qt.Key_PowerDown) {
907− powerKeyTimer.stop();
908− event.accepted = true;
909− }
910− }
911−
912− Timer {
913− id: powerKeyTimer
914− interval: 2000
915− repeat: false
916− triggeredOnStart: false
917−
918− onTriggered: {
919− stages.showPowerDialog();
920− }
921− }
922−
923 Rectangle {
699 Rectangle {
924 id: shutdownFadeOutRectangle
700 id: shutdownFadeOutRectangle
701+ z: edgeDemo.z + 10
925 enabled: false
702 enabled: false
926 visible: false
703 visible: false
927 color: "black"
704 color: "black"
@@ -938,4 +715,5 @@ FocusScope {
938 }
715 }
939 }
716 }
940 }
717 }
718+
941}
719}
qml/Stages/Animations/BaseSurfaceAnimation.qmlnew file+93
@@ -0,0 +1,93 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.0
18+
19+/* This is the base case for surface animations, used when adding/removing * child surfaces.
20+ * The class is meant to be overridden and changes/animations provided for state changes.
21+ * NB. It is important to release the surface at the end of the "out" animation.
22+ *
23+ * Example - Simple fade in/out
24+ *
25+ * BaseSurfaceAnimation {
26+ * outChanges: [ PropertyChanges { target: animation.surface; opacity: 0.0 } ]
27+ * outAnimations: [
28+ SequentialAnimation {
29+ * NumberAnimation { target: animation.surface; property: "opacity"; duration: 300 }
30+ * ScriptAction { script: { if (animation.parent.removing) animation.surface.release(); } }
31+ * }
32+ * ]
33+ *
34+ * inChanges: [ PropertyChanges { target: animation.surface; opacity: 1.0 } ]
35+ * inAnimations: [ NumberAnimation { target: animation.surface; property: "opacity"; duration: 300 } ]
36+ * }
37+ */
38+Item {
39+ id: base
40+ property Item surface: null
41+
42+ // changes applied when state changes to "in"
43+ property list<QtObject> outChanges
44+ // transition animations when changing state to "in"
45+ property list<QtObject> outAnimations
46+
47+ // changes applied when state changes to "out"
48+ property list<QtObject> inChanges
49+ // transition animations when changing state to "out"
50+ property list<QtObject> inAnimations
51+
52+ function start() {
53+ // "prep" state forces outChanges without transition animations.
54+ state = "prep"
55+ state = "in";
56+ }
57+ function end() {
58+ state = "out";
59+ }
60+
61+ states: [
62+ State {
63+ name: "baseAnimation"
64+ PropertyChanges { target: base.surface; anchors.fill: undefined }
65+ },
66+
67+ State {
68+ name: "prep"
69+ extend: "baseAnimation"
70+ changes: outChanges
71+ },
72+ State {
73+ name: "out"
74+ extend: "prep"
75+ },
76+ State {
77+ name: "in"
78+ extend: "baseAnimation"
79+ changes: inChanges
80+ }
81+ ]
82+
83+ transitions: [
84+ Transition {
85+ to: "out"
86+ animations: outAnimations
87+ },
88+ Transition {
89+ to: "in"
90+ animations: inAnimations
91+ }
92+ ]
93+}
qml/Stages/Animations/DarkenAndFadeInAnimation.qmlnew file+48
@@ -0,0 +1,48 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.0
18+import Ubuntu.Components 1.1
19+
20+BaseSurfaceAnimation {
21+ id: animation
22+
23+ property Rectangle darkenItem: Rectangle {
24+ parent: animation.surface.parent
25+ anchors.fill: parent
26+ color: Qt.rgba(0,0,0,0.0)
27+ }
28+
29+ outChanges: [ PropertyChanges { target: animation.surface; opacity: 0.0 } ]
30+ outAnimations: [
31+ SequentialAnimation {
32+ UbuntuNumberAnimation { target: animation.surface; property: "opacity"; duration: UbuntuAnimation.FastDuration }
33+ ColorAnimation { target: darkenItem; duration: UbuntuAnimation.FastDuration }
34+ ScriptAction { script: { if (animation.parent.removing) animation.surface.release(); } }
35+ }
36+ ]
37+
38+ inChanges: [
39+ PropertyChanges { target: darkenItem; color: Qt.rgba(0,0,0,0.7) },
40+ PropertyChanges { target: animation.surface; opacity: 1.0 }
41+ ]
42+ inAnimations: [
43+ SequentialAnimation {
44+ ColorAnimation { target: darkenItem; duration: UbuntuAnimation.FastDuration }
45+ UbuntuNumberAnimation { target: animation.surface; property: "opacity"; duration: UbuntuAnimation.FastDuration }
46+ }
47+ ]
48+}
qml/Stages/Animations/SwipeFromBottomAnimation.qmlnew file+48
@@ -0,0 +1,48 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.0
18+
19+BaseSurfaceAnimation {
20+ id: animation
21+
22+ outChanges: [ AnchorChanges { target: animation.surface; anchors.top: animation.parent.bottom } ]
23+ outAnimations: [
24+ SequentialAnimation {
25+ PropertyAction { target: animation.parent; property: "clip"; value: true }
26+ AnchorAnimation { easing.type: Easing.InOutQuad; duration: 400 }
27+ PropertyAction { target: animation.surface; property: "visible"; value: !animation.parent.removing }
28+ PropertyAction { target: animation.parent; property: "clip"; value: false }
29+ ScriptAction { script: { if (animation.parent.removing) animation.surface.release(); } }
30+ }
31+ ]
32+
33+ inChanges: [
34+ AnchorChanges {
35+ target: animation.surface;
36+ anchors.top: animation.parent.top
37+ anchors.right: undefined
38+ anchors.bottom: undefined
39+ anchors.left: undefined
40+ } ]
41+ inAnimations: [
42+ SequentialAnimation {
43+ PropertyAction { target: animation.parent; property: "clip"; value: true }
44+ AnchorAnimation { easing.type: Easing.InOutQuad; duration: 400 }
45+ PropertyAction { target: animation.parent; property: "clip"; value: false }
46+ }
47+ ]
48+}
qml/Stages/Animations/SwipeUpAnimation.qmlnew file+49
@@ -0,0 +1,49 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.0
18+
19+BaseSurfaceAnimation {
20+ id: animation
21+
22+ outAnimations: [
23+ SequentialAnimation {
24+ PropertyAction { target: animation.parent; property: "clip"; value: true }
25+ PropertyAction { target: animation.surface; property: "visible"; value: true }
26+ AnchorAnimation { easing.type: Easing.InOutQuad; duration: 400 }
27+ PropertyAction { target: animation.parent; property: "clip"; value: false }
28+ ScriptAction { script: { if (animation.parent.removing) animation.surface.release(); } }
29+ }
30+ ]
31+
32+ inChanges: [
33+ AnchorChanges {
34+ target: animation.surface;
35+ anchors.top: undefined
36+ anchors.right: undefined
37+ anchors.bottom: animation.parent.top
38+ anchors.left: undefined
39+ }
40+ ]
41+ inAnimations: [
42+ SequentialAnimation {
43+ PropertyAction { target: animation.parent; property: "clip"; value: true }
44+ AnchorAnimation { easing.type: Easing.InOutQuad; duration: 400 }
45+ PropertyAction { target: animation.surface; property: "visible"; value: false}
46+ PropertyAction { target: animation.parent; property: "clip"; value: false }
47+ }
48+ ]
49+}
qml/Stages/PhoneStage.qml+171−263
@@ -18,7 +18,6 @@ import QtQuick 2.0
18import Ubuntu.Components 0.1
18import Ubuntu.Components 0.1
19import Ubuntu.Gestures 0.1
19import Ubuntu.Gestures 0.1
20import Unity.Application 0.1
20import Unity.Application 0.1
21−import LightDM 0.1 as LightDM
22import Utils 0.1
21import Utils 0.1
23import "../Components"
22import "../Components"
24
23
@@ -26,88 +25,51 @@ Item {
26 id: root
25 id: root
27
26
28 // Controls to be set from outside
27 // Controls to be set from outside
29− property bool shown: false
30− property bool moving: false
31 property int dragAreaWidth
28 property int dragAreaWidth
29+ property real maximizedAppTopMargin
30+ property bool interactive
31+ property bool spreadEnabled: true // If false, animations and right edge will be disabled
32
32
33 // State information propagated to the outside
33 // State information propagated to the outside
34− readonly property bool painting: mainScreenshotImage.visible || fadeInScreenshotImage.visible || appSplash.visible || spreadView.visible
35− property bool fullscreen: priv.focusedApplication ? priv.focusedApplication.fullscreen : false
36− property bool locked: spreadView.visible
34+ readonly property bool locked: spreadView.phase == 2
37− property bool spreadEnabled: true
38−
39− // Not used for PhoneStage, only useful for SideStage and similar
40− property bool overlayMode: false
41− property int overlayWidth: 0
42
35
43 function select(appId) {
36 function select(appId) {
44− spreadView.snapTo(priv.indexOf(appId))
37+ spreadView.snapTo(priv.indexOf(appId));
45 }
38 }
46
39
47− onMovingChanged: {
40+ onWidthChanged: {
48− if (moving) {
41+ spreadView.selectedIndex = -1;
49− if (ApplicationManager.focusedApplicationId) {
42+ spreadView.phase = 0;
50− priv.requestNewScreenshot();
43+ spreadView.contentX = -spreadView.shift;
51− } else {
52− mainScreenshotImage.anchors.leftMargin = 0;
53− mainScreenshotImage.source = ApplicationManager.get(0).screenshot;
54− mainScreenshotImage.visible = true;
55− }
56− } else {
57− mainScreenshotImage.visible = false;
58− }
59 }
44 }
60
45
61 Connections {
46 Connections {
62 target: ApplicationManager
47 target: ApplicationManager
63
48
64 onFocusRequested: {
49 onFocusRequested: {
65− if (spreadView.visible) {
50+ if (spreadView.phase > 0) {
66 spreadView.snapTo(priv.indexOf(appId));
51 spreadView.snapTo(priv.indexOf(appId));
67 } else {
52 } else {
68 priv.switchToApp(appId);
53 priv.switchToApp(appId);
69 }
54 }
70 }
55 }
71
56
72− onFocusedApplicationIdChanged: {
57+ onApplicationAdded: {
58+ if (spreadView.phase == 2) {
73− if (ApplicationManager.focusedApplicationId.length > 0) {
59+ spreadView.snapTo(ApplicationManager.count - 1);
74− if (priv.secondApplicationStarting || priv.applicationStarting) {
75− appSplashTimer.restart();
76− } else {
77− var application = priv.focusedApplication;
78− root.fullscreen = application.fullscreen;
79− mainScreenshotImage.source = application.screenshot;
80− }
81 } else {
60 } else {
82− spreadView.selectedIndex = -1;
83 spreadView.phase = 0;
61 spreadView.phase = 0;
84 spreadView.contentX = -spreadView.shift;
62 spreadView.contentX = -spreadView.shift;
85− }
63+ priv.switchToApp(appId);
86− }
87−
88− onApplicationAdded: {
89− if (!priv.focusedApplication) {
90− mainScreenshotImage.source = "";
91− mainScreenshotImage.visible = false;
92− priv.applicationStarting = true;
93− } else {
94− mainScreenshotImage.source = "";
95− priv.newFocusedAppId = appId;
96− priv.secondApplicationStarting = true;
97− priv.requestNewScreenshot();
98− }
99−
100− if (spreadView.visible) {
101− spreadView.snapTo(0);
102 }
64 }
103 }
65 }
104
66
105 onApplicationRemoved: {
67 onApplicationRemoved: {
106− if (ApplicationManager.count == 0) {
68+ // Unless we're closing the app ourselves in the spread,
107− mainScreenshotImage.source = ""
69+ // lets make sure the spread doesn't mess up by the changing app list.
108− mainScreenshotImage.visible = false;
70+ if (spreadView.closingIndex == -1) {
109− } else {
71+ spreadView.phase = 0;
110− mainScreenshotImage.source = ApplicationManager.get(0).screenshot;
72+ spreadView.contentX = -spreadView.shift;
111 }
73 }
112 }
74 }
113 }
75 }
@@ -117,46 +79,11 @@ Item {
117
79
118 property string focusedAppId: ApplicationManager.focusedApplicationId
80 property string focusedAppId: ApplicationManager.focusedApplicationId
119 property var focusedApplication: ApplicationManager.findApplication(focusedAppId)
81 property var focusedApplication: ApplicationManager.findApplication(focusedAppId)
120− property url focusedScreenshot: focusedApplication ? focusedApplication.screenshot : ""
121−
122− property bool waitingForScreenshot: false
123−
124− property bool applicationStarting: false
125− property bool secondApplicationStarting: false
126−
127− property string newFocusedAppId
128−
129− onFocusedScreenshotChanged: {
130− if (root.moving && priv.waitingForScreenshot) {
131− mainScreenshotImage.anchors.leftMargin = 0;
132− mainScreenshotImage.source = priv.focusedScreenshot
133− mainScreenshotImage.visible = true;
134− } else if (priv.secondApplicationStarting && priv.waitingForScreenshot) {
135− applicationSwitchingAnimation.start();
136− if (LightDM.Greeter.active && !LightDM.Greeter.promptless) {
137− // When greeter is up, no fancy animations, since user may
138− // glimpse an app they shouldn't
139− applicationSwitchingAnimation.complete();
140− }
141− }
142− waitingForScreenshot = false;
143− }
144−
145− function requestNewScreenshot() {
146− waitingForScreenshot = true;
147− ApplicationManager.updateScreenshot(focusedAppId);
148− }
149
82
150 function switchToApp(appId) {
83 function switchToApp(appId) {
151 if (priv.focusedAppId) {
84 if (priv.focusedAppId) {
152− priv.newFocusedAppId = appId;
85+ spreadView.focusChanging = true;
153− root.fullscreen = ApplicationManager.findApplication(appId).fullscreen;
86+ ApplicationManager.focusApplication(appId);
154− applicationSwitchingAnimation.start();
155− if (LightDM.Greeter.active && !LightDM.Greeter.promptless) {
156− // When greeter is up, no fancy animations, since user may
157− // glimpse an app they shouldn't
158− applicationSwitchingAnimation.complete();
159− }
160 } else {
87 } else {
161 ApplicationManager.focusApplication(appId);
88 ApplicationManager.focusApplication(appId);
162 }
89 }
@@ -173,158 +100,6 @@ Item {
173
100
174 }
101 }
175
102
176− // FIXME: the signal connections seems to get lost.
177− Connections {
178− target: priv.focusedApplication
179− onScreenshotChanged: priv.focusedScreenshot = priv.focusedApplication.screenshot
180− }
181− Binding {
182− target: root
183− property: "fullscreen"
184− value: priv.focusedApplication ? priv.focusedApplication.fullscreen : false
185− }
186−
187− Timer {
188− id: appSplashTimer
189− // FIXME: We really need to show something meaningful in the app surface instead of guessing
190− // when it might be ready
191− interval: 500
192− repeat: false
193− onTriggered: {
194− priv.applicationStarting = false;
195− priv.secondApplicationStarting = false;
196− }
197− }
198−
199− SequentialAnimation {
200− id: applicationSwitchingAnimation
201− // setup
202− PropertyAction { target: mainScreenshotImage; property: "anchors.leftMargin"; value: 0 }
203− PropertyAction { target: mainScreenshotImage; property: "source"; value: priv.focusedScreenshot }
204− PropertyAction { targets: [mainScreenshotImage, fadeInScreenshotImage]; property: "visible"; value: true }
205− PropertyAction { target: fadeInScreenshotImage; property: "source"; value: {
206− var newFocusedApp = ApplicationManager.findApplication(priv.newFocusedAppId);
207− return newFocusedApp ? newFocusedApp.screenshot : "" }
208− }
209− PropertyAction { target: fadeInScreenshotImage; property: "opacity"; value: 0 }
210− PropertyAction { target: fadeInScreenshotImage; property: "scale"; value: .8 }
211−
212−
213− // The actual animation
214− ParallelAnimation {
215− UbuntuNumberAnimation { target: mainScreenshotImage; property: "anchors.leftMargin"; to: root.width; duration: UbuntuAnimation.SlowDuration }
216− UbuntuNumberAnimation { target: fadeInScreenshotImage; properties: "opacity,scale"; to: 1; duration: UbuntuAnimation.SlowDuration }
217− }
218−
219− // restore stuff
220− ScriptAction { script: ApplicationManager.focusApplication(priv.newFocusedAppId); }
221− PropertyAction { target: fadeInScreenshotImage; property: "visible"; value: false }
222− PropertyAction { target: mainScreenshotImage; property: "visible"; value: false }
223− }
224−
225− // FIXME: Drop this and make the imageprovider show a splashscreen instead
226− Rectangle {
227− id: appSplash2
228− anchors.fill: parent
229− color: "black"
230− visible: priv.secondApplicationStarting
231− }
232− Image {
233− id: fadeInScreenshotImage
234− anchors { left: parent.left; bottom: parent.bottom }
235− width: parent.width
236− scale: .7
237− visible: false
238− }
239−
240− Rectangle {
241− id: appSplash
242− anchors.fill: parent
243− color: "black"
244− visible: priv.applicationStarting
245−
246− WaitingDots {
247− }
248− }
249− Image {
250− id: mainScreenshotImage
251− anchors { left: parent.left; bottom: parent.bottom }
252− width: parent.width
253− visible: false
254− }
255−
256− EdgeDragArea {
257− id: spreadDragArea
258− direction: Direction.Leftwards
259− enabled: ApplicationManager.count > 1 && spreadView.phase != 2 && root.spreadEnabled
260−
261− anchors { top: parent.top; right: parent.right; bottom: parent.bottom }
262− width: root.dragAreaWidth
263−
264− // Sitting at the right edge of the screen, this EdgeDragArea directly controls the spreadView when
265− // attachedToView is true. When the finger movement passes positionMarker3 we detach it from the
266− // spreadView and make the spreadView snap to positionMarker4.
267− property bool attachedToView: true
268−
269− property var gesturePoints: new Array()
270−
271− onTouchXChanged: {
272− if (!dragging && !priv.waitingForScreenshot) {
273− // Initial touch. Let's update the screenshot and reset the spreadView to the starting position.
274− priv.requestNewScreenshot();
275− spreadView.phase = 0;
276− spreadView.contentX = -spreadView.shift;
277− }
278− if (dragging && attachedToView) {
279− // Gesture recognized. Let's move the spreadView with the finger
280− spreadView.contentX = -touchX - spreadView.shift;
281− }
282− if (attachedToView && spreadView.shiftedContentX >= spreadView.width * spreadView.positionMarker3) {
283− // We passed positionMarker3. Detach from spreadView and snap it.
284− attachedToView = false;
285− spreadView.snap();
286− }
287− gesturePoints.push(touchX);
288− }
289−
290− onStatusChanged: {
291− if (status == DirectionalDragArea.Recognized) {
292− attachedToView = true;
293− }
294− }
295−
296− onDraggingChanged: {
297− if (dragging) {
298− // Gesture recognized. Start recording this gesture
299− gesturePoints = [];
300− return;
301− }
302−
303− // Ok. The user released. Find out if it was a one-way movement.
304− var oneWayFlick = true;
305− var smallestX = spreadDragArea.width;
306− for (var i = 0; i < gesturePoints.length; i++) {
307− if (gesturePoints[i] >= smallestX) {
308− oneWayFlick = false;
309− break;
310− }
311− smallestX = gesturePoints[i];
312− }
313− gesturePoints = [];
314−
315− if (oneWayFlick && spreadView.shiftedContentX > units.gu(2) &&
316− spreadView.shiftedContentX < spreadView.positionMarker1 * spreadView.width) {
317− // If it was a short one-way movement, do the Alt+Tab switch
318− // no matter if we didn't cross positionMarker1 yet.
319− spreadView.snapTo(1);
320− } else if (!dragging && attachedToView) {
321− // otherwise snap to the closest snap position we can find
322− // (might be back to start, to app 1 or to spread)
323− spreadView.snap();
324− }
325− }
326− }
327−
328 Rectangle {
103 Rectangle {
329 id: coverFlipBackground
104 id: coverFlipBackground
330 anchors.fill: parent
105 anchors.fill: parent
@@ -332,16 +107,12 @@ Item {
332 visible: spreadView.visible
107 visible: spreadView.visible
333 }
108 }
334
109
335− InputFilterArea {
336− anchors.fill: root
337− blockInput: spreadView.visible
338− }
339
110
340 Flickable {
111 Flickable {
341 id: spreadView
112 id: spreadView
342 objectName: "spreadView"
113 objectName: "spreadView"
343 anchors.fill: parent
114 anchors.fill: parent
344− visible: spreadDragArea.status == DirectionalDragArea.Recognized || phase > 1 || snapAnimation.running
115+ interactive: (spreadDragArea.status == DirectionalDragArea.Recognized || phase > 1) && draggedIndex == -1
345 contentWidth: spreadRow.width - shift
116 contentWidth: spreadRow.width - shift
346 contentX: -shift
117 contentX: -shift
347
118
@@ -350,8 +121,8 @@ Item {
350 // that, the beginning of the gesture starts with a negative value for contentX
121 // that, the beginning of the gesture starts with a negative value for contentX
351 // so the flickable wants to pull it into the view already. "shift" tunes the
122 // so the flickable wants to pull it into the view already. "shift" tunes the
352 // distance where to "lock" the content.
123 // distance where to "lock" the content.
353− property real shift: width / 2
124+ readonly property real shift: width / 2
354− property real shiftedContentX: contentX + shift
125+ readonly property real shiftedContentX: contentX + shift
355
126
356 property int tileDistance: width / 4
127 property int tileDistance: width / 4
357
128
@@ -375,6 +146,10 @@ Item {
375 property int phase: 0
146 property int phase: 0
376
147
377 property int selectedIndex: -1
148 property int selectedIndex: -1
149+ property int draggedIndex: -1
150+ property int closingIndex: -1
151+
152+ property bool focusChanging: false
378
153
379 onShiftedContentXChanged: {
154 onShiftedContentXChanged: {
380 switch (phase) {
155 switch (phase) {
@@ -398,9 +173,9 @@ Item {
398 snapAnimation.targetContentX = -shift;
173 snapAnimation.targetContentX = -shift;
399 snapAnimation.start();
174 snapAnimation.start();
400 } else if (shiftedContentX < positionMarker2 * width) {
175 } else if (shiftedContentX < positionMarker2 * width) {
401− snapTo(1)
176+ snapTo(1);
402 } else if (shiftedContentX < positionMarker3 * width) {
177 } else if (shiftedContentX < positionMarker3 * width) {
403− snapTo(1)
178+ snapTo(1);
404 } else if (phase < 2){
179 } else if (phase < 2){
405 // Add 1 pixel to make sure we definitely hit positionMarker4 even with rounding errors of the animation.
180 // Add 1 pixel to make sure we definitely hit positionMarker4 even with rounding errors of the animation.
406 snapAnimation.targetContentX = width * positionMarker4 + 1 - shift;
181 snapAnimation.targetContentX = width * positionMarker4 + 1 - shift;
@@ -408,9 +183,18 @@ Item {
408 }
183 }
409 }
184 }
410 function snapTo(index) {
185 function snapTo(index) {
186+ if (ApplicationManager.count <= index) {
187+ // In case we're trying to snap to some non existing app, lets snap back to the first one
188+ index = 0;
189+ }
411 spreadView.selectedIndex = index;
190 spreadView.selectedIndex = index;
412− root.fullscreen = ApplicationManager.get(index).fullscreen;
191+ // If we're not in full spread mode yet, always unwind to start pos
192+ // otherwise unwind up to progress 0 of the selected index
193+ if (spreadView.phase < 2) {
194+ snapAnimation.targetContentX = -shift;
195+ } else {
413− snapAnimation.targetContentX = -shift;
196+ snapAnimation.targetContentX = -shift + index * spreadView.tileDistance;
197+ }
414 snapAnimation.start();
198 snapAnimation.start();
415 }
199 }
416
200
@@ -429,7 +213,8 @@ Item {
429 script: {
213 script: {
430 if (spreadView.selectedIndex >= 0) {
214 if (spreadView.selectedIndex >= 0) {
431 ApplicationManager.focusApplication(ApplicationManager.get(spreadView.selectedIndex).appId);
215 ApplicationManager.focusApplication(ApplicationManager.get(spreadView.selectedIndex).appId);
216+
432− spreadView.selectedIndex = -1
217+ spreadView.selectedIndex = -1;
433 spreadView.phase = 0;
218 spreadView.phase = 0;
434 spreadView.contentX = -spreadView.shift;
219 spreadView.contentX = -spreadView.shift;
435 }
220 }
@@ -443,6 +228,15 @@ Item {
443 // tileDistance * app count (with a minimum of 3 apps, in order to also allow moving 1 and 2 apps a bit)
228 // tileDistance * app count (with a minimum of 3 apps, in order to also allow moving 1 and 2 apps a bit)
444 // + some constant value (still scales with the screen width) which looks good and somewhat fills the screen
229 // + some constant value (still scales with the screen width) which looks good and somewhat fills the screen
445 width: Math.max(3, ApplicationManager.count) * spreadView.tileDistance + (spreadView.width - spreadView.tileDistance) * 1.5
230 width: Math.max(3, ApplicationManager.count) * spreadView.tileDistance + (spreadView.width - spreadView.tileDistance) * 1.5
231+ Behavior on width {
232+ enabled: spreadView.closingIndex >= 0
233+ UbuntuNumberAnimation {}
234+ }
235+ onWidthChanged: {
236+ if (spreadView.closingIndex >= 0) {
237+ spreadView.contentX = Math.min(spreadView.contentX, width - spreadView.width - spreadView.shift);
238+ }
239+ }
446
240
447 x: spreadView.contentX
241 x: spreadView.contentX
448
242
@@ -462,18 +256,55 @@ Item {
462 height: spreadView.height
256 height: spreadView.height
463 selected: spreadView.selectedIndex == index
257 selected: spreadView.selectedIndex == index
464 otherSelected: spreadView.selectedIndex >= 0 && !selected
258 otherSelected: spreadView.selectedIndex >= 0 && !selected
259+ interactive: !spreadView.interactive && spreadView.phase === 0
260+ && spreadView.shiftedContentX === 0 && root.interactive && index === 0
261+ swipeToCloseEnabled: spreadView.interactive
262+ maximizedAppTopMargin: root.maximizedAppTopMargin
263+ dropShadow: spreadView.shiftedContentX > 0 || spreadDragArea.status == DirectionalDragArea.Undecided
465
264
466− z: index
265+ z: behavioredIndex
467 x: index == 0 ? 0 : spreadView.width + (index - 1) * spreadView.tileDistance
266 x: index == 0 ? 0 : spreadView.width + (index - 1) * spreadView.tileDistance
267+ property real behavioredIndex: index
268+ Behavior on behavioredIndex {
269+ enabled: spreadView.closingIndex >= 0
270+ UbuntuNumberAnimation {
271+ onRunningChanged: {
272+ if (!running) {
273+ spreadView.closingIndex = -1;
274+ }
275+ }
276+ }
277+ }
278+
279+ Behavior on x {
280+ enabled: spreadView.focusChanging && index == 0 && root.spreadEnabled
281+ UbuntuNumberAnimation {
282+ duration: UbuntuAnimation.FastDuration
283+ onRunningChanged: {
284+ if (!running) {
285+ spreadView.focusChanging = false;
286+ }
287+ }
288+ }
289+ }
468
290
469 // Each tile has a different progress value running from 0 to 1.
291 // Each tile has a different progress value running from 0 to 1.
470− // A progress value of 0 means the tile is at the right edge. 1 means the tile has reched the left edge.
292+ // 0: means the tile is at the right edge.
293+ // 1: means the tile has finished the main animation towards the left edge.
294+ // >1: after the main animation has finished, tiles will continue to move very slowly to the left
471 progress: {
295 progress: {
472− var tileProgress = (spreadView.shiftedContentX - index * spreadView.tileDistance) / spreadView.width;
296+ var tileProgress = (spreadView.shiftedContentX - behavioredIndex * spreadView.tileDistance) / spreadView.width;
473 // Tile 1 needs to move directly from the beginning...
297 // Tile 1 needs to move directly from the beginning...
474− if (index == 1 && spreadView.phase < 2) {
298+ if (behavioredIndex == 1 && spreadView.phase < 2) {
475 tileProgress += spreadView.tileDistance / spreadView.width;
299 tileProgress += spreadView.tileDistance / spreadView.width;
476 }
300 }
301+ // Limiting progress to ~0 and 1.7 to avoid binding calculations when tiles are not
302+ // visible.
303+ // < 0 : The tile is outside the screen on the right
304+ // > 1.7: The tile is *very* close to the left edge and covered by other tiles now.
305+ // Using 0.0001 to differentiate when a tile should still be visible (==0)
306+ // or we can hide it (< 0)
307+ tileProgress = Math.max(-0.0001, Math.min(1.7, tileProgress));
477 return tileProgress;
308 return tileProgress;
478 }
309 }
479
310
@@ -493,7 +324,7 @@ Item {
493
324
494 EasingCurve {
325 EasingCurve {
495 id: snappingCurve
326 id: snappingCurve
496− type: EasingCurve.OutQuad
327+ type: EasingCurve.Linear
497 period: 0.05
328 period: 0.05
498 progress: appDelegate.progress - spreadView.positionMarker1
329 progress: appDelegate.progress - spreadView.positionMarker1
499 }
330 }
@@ -507,7 +338,84 @@ Item {
507 }
338 }
508 }
339 }
509 }
340 }
341+
342+ onClosed: {
343+ spreadView.draggedIndex = -1;
344+ spreadView.closingIndex = index;
345+ ApplicationManager.stopApplication(ApplicationManager.get(index).appId);
346+ }
347+ }
348+ }
349+ }
350+ }
351+
352+ EdgeDragArea {
353+ id: spreadDragArea
354+ direction: Direction.Leftwards
355+ enabled: spreadView.phase != 2 && root.spreadEnabled
356+
357+ anchors { top: parent.top; right: parent.right; bottom: parent.bottom }
358+ width: root.dragAreaWidth
359+
360+ // Sitting at the right edge of the screen, this EdgeDragArea directly controls the spreadView when
361+ // attachedToView is true. When the finger movement passes positionMarker3 we detach it from the
362+ // spreadView and make the spreadView snap to positionMarker4.
363+ property bool attachedToView: true
364+
365+ property var gesturePoints: new Array()
366+
367+ onTouchXChanged: {
368+ if (!dragging) {
369+ // Initial touch. Let's reset the spreadView to the starting position.
370+ spreadView.phase = 0;
371+ spreadView.contentX = -spreadView.shift;
372+ }
373+ if (dragging && attachedToView) {
374+ // Gesture recognized. Let's move the spreadView with the finger
375+ spreadView.contentX = -touchX + spreadDragArea.width - spreadView.shift;
376+ }
377+ if (attachedToView && spreadView.shiftedContentX >= spreadView.width * spreadView.positionMarker3) {
378+ // We passed positionMarker3. Detach from spreadView and snap it.
379+ attachedToView = false;
380+ spreadView.snap();
381+ }
382+ gesturePoints.push(touchX);
383+ }
384+
385+ onStatusChanged: {
386+ if (status == DirectionalDragArea.Recognized) {
387+ attachedToView = true;
388+ }
389+ }
390+
391+ onDraggingChanged: {
392+ if (dragging) {
393+ // Gesture recognized. Start recording this gesture
394+ gesturePoints = [];
395+ return;
396+ }
397+
398+ // Ok. The user released. Find out if it was a one-way movement.
399+ var oneWayFlick = true;
400+ var smallestX = spreadDragArea.width;
401+ for (var i = 0; i < gesturePoints.length; i++) {
402+ if (gesturePoints[i] >= smallestX) {
403+ oneWayFlick = false;
404+ break;
510 }
405 }
406+ smallestX = gesturePoints[i];
407+ }
408+ gesturePoints = [];
409+
410+ if (oneWayFlick && spreadView.shiftedContentX > units.gu(2) &&
411+ spreadView.shiftedContentX < spreadView.positionMarker1 * spreadView.width) {
412+ // If it was a short one-way movement, do the Alt+Tab switch
413+ // no matter if we didn't cross positionMarker1 yet.
414+ spreadView.snapTo(1);
415+ } else if (!dragging && attachedToView) {
416+ // otherwise snap to the closest snap position we can find
417+ // (might be back to start, to app 1 or to spread)
418+ spreadView.snap();
511 }
419 }
512 }
420 }
513 }
421 }
qml/Stages/Splash.qmlnew file+68
@@ -0,0 +1,68 @@
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+
17+import QtQuick 2.0
18+import Ubuntu.Components 0.1
19+import "../Components"
20+
21+Rectangle {
22+ id: root
23+ color: "black"
24+
25+ property string name: ""
26+ property url image: ""
27+
28+ UbuntuShape {
29+ id: iconShape
30+ anchors.horizontalCenter: parent.horizontalCenter
31+ anchors.verticalCenter: parent.verticalCenter
32+ anchors.verticalCenterOffset: -units.gu(4)
33+ width: units.gu(8)
34+ height: units.gu(7.5)
35+
36+ radius: "medium"
37+ borderSource: "none"
38+
39+ image: Image {
40+ id: iconImage
41+ sourceSize.width: iconShape.width
42+ sourceSize.height: iconShape.height
43+ source: root.image
44+ fillMode: Image.PreserveAspectCrop
45+ }
46+ }
47+
48+ Label {
49+ text: root.name
50+ anchors.horizontalCenter: parent.horizontalCenter
51+ anchors.top: iconShape.bottom
52+ anchors.topMargin: units.gu(2)
53+ fontSize: "large"
54+ }
55+
56+ WaitingDots {
57+ visible: parent.visible
58+ anchors.horizontalCenter: parent.horizontalCenter
59+ anchors.bottom: parent.bottom
60+ anchors.bottomMargin: units.gu(12)
61+ }
62+
63+ MouseArea {
64+ anchors.fill: parent
65+ enabled: parent.visible
66+ // absorb all mouse events
67+ }
68+}
qml/Stages/SpreadDelegate.qml+187−23
@@ -17,39 +17,203 @@
17*/
17*/
18
18
19import QtQuick 2.0
19import QtQuick 2.0
20+import Unity.Application 0.1
21+import Ubuntu.Components 1.1
22+import "../Components"
20
23
21Item {
24Item {
22 id: root
25 id: root
23
26
27+ // to be set from outside
28+ property bool interactive: true
29+ property bool dropShadow: true
30+ property real maximizedAppTopMargin
31+ property alias swipeToCloseEnabled: dragArea.enabled
32+
33+ readonly property bool isFullscreen: surface !== null && surfaceContainer.surface.anchors.topMargin == 0
34+
24 signal clicked()
35 signal clicked()
36+ signal closed()
37+
38+ SurfaceContainer {
39+ id: surfaceContainer
40+ anchors.fill: parent
41+ surface: model.surface
42+ property bool appHasCreatedASurface: false
43+
44+ onSurfaceChanged: {
45+ if (surface) {
46+ if (!appHasCreatedASurface) {
47+ surface.visible = false; // hide until splash screen removed
48+ appHasCreatedASurface = true;
49+ }
50+ }
51+ }
52+
53+ function revealSurface() {
54+ surface.visible = true;
55+ splashLoader.source = "";
56+ }
57+
58+ Binding {
59+ target: surfaceContainer.surface
60+ property: "anchors.topMargin"
61+ value: {
62+ return surfaceContainer.surface.state === MirSurfaceItem.Fullscreen ? 0 : maximizedAppTopMargin;
63+ }
64+ }
25
65
26− property real topMarginProgress
66+ Binding {
67+ target: surface
68+ property: "enabled"
69+ value: root.interactive
70+ }
71+ Binding {
72+ target: surface
73+ property: "focus"
74+ value: root.interactive
75+ }
76+
77+ Timer { //FIXME - need to delay removing splash screen to allow surface resize to complete
78+ id: surfaceRevealDelay
79+ interval: 100
80+ onTriggered: surfaceContainer.revealSurface()
81+ }
82+
83+ Connections {
84+ target: surface
85+ // FIXME: I would rather not need to do this, but currently it doesn't get
86+ // active focus without it and I don't know why.
87+ onFocusChanged: forceSurfaceActiveFocusIfReady();
88+ onParentChanged: forceSurfaceActiveFocusIfReady();
89+ onEnabledChanged: forceSurfaceActiveFocusIfReady();
90+ function forceSurfaceActiveFocusIfReady() {
91+ if (surface.focus && surface.parent === surfaceContainer && surface.enabled) {
92+ surface.forceActiveFocus();
93+ }
94+ }
95+ }
96+
97+ BorderImage {
98+ id: dropShadowImage
99+ anchors {
100+ fill: parent
101+ leftMargin: -units.gu(2)
102+ rightMargin: -units.gu(2)
103+ bottomMargin: -units.gu(2)
104+ topMargin: -units.gu(2) + (root.isFullscreen ? 0 : maximizedAppTopMargin)
105+ }
106+ source: "graphics/dropshadow.png"
107+ border { left: 50; right: 50; top: 50; bottom: 50 }
108+ opacity: root.dropShadow ? .4 : 0
109+ Behavior on opacity { UbuntuNumberAnimation {} }
110+ }
27
111
28− QtObject {
112+ transform: Translate {
29− id: priv
113+ y: dragArea.distance
30− property real heightDifference: root.height - appImage.implicitHeight
114+ }
31 }
115 }
32
116
33− Image {
117+
34− id: dropShadow
118+ StateGroup {
35− anchors.fill: appImage
119+ id: appSurfaceState
36− anchors.margins: -units.gu(2)
120+ states: [
37− source: "graphics/dropshadow.png"
121+ State {
38− opacity: .4
122+ name: "noSurfaceYet"
123+ when: !surfaceContainer.appHasCreatedASurface
124+ StateChangeScript {
125+ script: { splashLoader.setSource("Splash.qml", { "name": model.name, "image": model.icon }); }
126+ }
127+ },
128+ State {
129+ name: "hasSurface"
130+ when: surfaceContainer.appHasCreatedASurface && (surfaceContainer.surface !== null)
131+ StateChangeScript { script: { surfaceRevealDelay.start(); } }
132+ },
133+ State {
134+ name: "surfaceLostButAppStillAlive"
135+ when: surfaceContainer.appHasCreatedASurface && (surfaceContainer.surface === null)
136+ // TODO - use app snapshot
137+ }
138+ ]
139+ state: "noSurfaceYet"
39 }
140 }
40− Image {
141+
41− id: appImage
142+ Loader {
143+ id: splashLoader
42− anchors {
144+ anchors.fill: surfaceContainer
43− left: parent.left;
44− bottom: parent.bottom;
45− top: parent.top;
46− topMargin: priv.heightDifference * Math.max(0, 1 - root.topMarginProgress)
47− }
48− source: model.screenshot
49− antialiasing: true
50 }
145 }
51− MouseArea {
146+
147+ DraggingArea {
148+ id: dragArea
52− anchors.fill: appImage
149+ anchors.fill: parent
150+
151+ property bool moving: false
152+ property real distance: 0
153+
154+ onMovingChanged: {
155+ spreadView.draggedIndex = moving ? index : -1
156+ }
157+
158+ onDragValueChanged: {
159+ if (!dragging) {
160+ return;
161+ }
162+ moving = moving || Math.abs(dragValue) > units.gu(1)
163+ if (moving) {
164+ distance = dragValue;
165+ }
166+ }
167+
168+ onClicked: {
169+ if (!moving) {
53− onClicked: root.clicked()
170+ root.clicked();
171+ }
172+ }
173+
174+ onDragEnd: {
175+ // velocity and distance values specified by design prototype
176+ if ((dragVelocity < -units.gu(40) && distance < -units.gu(8)) || distance < -root.height / 2) {
177+ animation.animate("up")
178+ } else if ((dragVelocity > units.gu(40) && distance > units.gu(8)) || distance > root.height / 2) {
179+ animation.animate("down")
180+ } else {
181+ animation.animate("center")
182+ }
183+ }
184+
185+ UbuntuNumberAnimation {
186+ id: animation
187+ target: dragArea
188+ property: "distance"
189+ property bool requestClose: false
190+
191+ function animate(direction) {
192+ animation.from = dragArea.distance;
193+ switch (direction) {
194+ case "up":
195+ animation.to = -root.height * 1.5;
196+ requestClose = true;
197+ break;
198+ case "down":
199+ animation.to = root.height * 1.5;
200+ requestClose = true;
201+ break;
202+ default:
203+ animation.to = 0
204+ }
205+ animation.start();
206+ }
207+
208+ onRunningChanged: {
209+ if (!running) {
210+ dragArea.moving = false;
211+ dragArea.distance = 0;
212+ if (requestClose) {
213+ root.closed();
214+ }
215+ }
216+ }
217+ }
54 }
218 }
55}
219}
qml/Stages/StageWithSideStage.qmldeleted−413
@@ -1,413 +0,0 @@
1−/*
2− * Copyright (C) 2014 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.0
18−import Ubuntu.Components 0.1
19−import "../Components"
20−import Unity.Application 0.1
21−import Ubuntu.Gestures 0.1
22−
23−Item {
24− id: root
25− objectName: "stages"
26− anchors.fill: parent
27−
28− // Controls to be set from outside
29− property bool shown: false
30− property bool moving: false
31− property int dragAreaWidth
32−
33− // State information propagated to the outside
34− readonly property bool painting: mainStageImage.visible || sideStageImage.visible || sideStageSnapAnimation.running
35− property bool fullscreen: priv.focusedApplication ? priv.focusedApplication.fullscreen : false
36− property bool overlayMode: (sideStageImage.shown && priv.mainStageAppId.length == 0) || priv.overlayOverride
37− || (priv.mainStageAppId.length == 0 && sideStageSnapAnimation.running)
38−
39− readonly property int overlayWidth: priv.overlayOverride ? 0 : priv.sideStageWidth
40−
41− onShownChanged: {
42− if (!shown) {
43− priv.mainStageAppId = "";
44− }
45− }
46−
47− onMovingChanged: {
48− if (moving) {
49− if (!priv.mainStageAppId && !priv.sideStageAppId) {
50− // Pulling in from the right, make the last used (topmost) app visible
51− var application = ApplicationManager.get(0);
52− if (application.stage == ApplicationInfoInterface.SideStage) {
53− sideStageImage.application = application;
54− sideStageImage.x = root.width - sideStageImage.width
55− sideStageImage.visible = true;
56− } else {
57− mainStageImage.application = application;
58− mainStageImage.visible = true;
59− }
60− } else {
61− priv.requestNewScreenshot(ApplicationInfoInterface.MainStage)
62− if (priv.focusedApplicationId == priv.sideStageAppId) {
63− priv.requestNewScreenshot(ApplicationInfoInterface.SideStage)
64− }
65− }
66− } else {
67− mainStageImage.visible = false;
68− sideStageImage.visible = false;
69− }
70− }
71−
72− QtObject {
73− id: priv
74−
75− property int sideStageWidth: units.gu(40)
76−
77−
78− property string sideStageAppId
79− property string mainStageAppId
80−
81−
82− property var sideStageApp: ApplicationManager.findApplication(sideStageAppId)
83− property var mainStageApp: ApplicationManager.findApplication(mainStageAppId)
84−
85− property string sideStageScreenshot: sideStageApp ? sideStageApp.screenshot : ""
86− property string mainStageScreenshot: mainStageApp ? mainStageApp.screenshot : ""
87−
88− property string focusedApplicationId: ApplicationManager.focusedApplicationId
89− property var focusedApplication: ApplicationManager.findApplication(focusedApplicationId)
90− property url focusedScreenshot: focusedApplication ? focusedApplication.screenshot : ""
91−
92− property bool waitingForMainScreenshot: false
93− property bool waitingForSideScreenshot: false
94− property bool waitingForScreenshots: waitingForMainScreenshot || waitingForSideScreenshot
95−
96− property string startingAppId: ""
97−
98− // Keep overlayMode even if there is no focused app (to allow pulling in the sidestage from the right)
99− property bool overlayOverride: false
100−
101− onFocusedApplicationChanged: {
102− if (focusedApplication) {
103− if (focusedApplication.stage == ApplicationInfoInterface.MainStage) {
104− mainStageAppId = focusedApplicationId;
105− priv.overlayOverride = false;
106− if (priv.startingAppId == focusedApplicationId && sideStageImage.shown) {
107− // There was already a sidestage app on top. bring it back!
108− ApplicationManager.focusApplication(priv.sideStageAppId)
109− priv.startingAppId = "";
110− }
111− } else if (focusedApplication.stage == ApplicationInfoInterface.SideStage) {
112− sideStageAppId = focusedApplicationId;
113− if (priv.startingAppId == focusedApplicationId && !sideStageImage.shown) {
114− sideStageImage.snapToApp(focusedApplication);
115− priv.startingAppId = "";
116− }
117− }
118− } else if (root.overlayMode){
119− sideStageImage.snapTo(root.width)
120− }
121− }
122−
123− onMainStageScreenshotChanged: {
124− waitingForMainScreenshot = false;
125− }
126−
127− onSideStageScreenshotChanged: {
128− waitingForSideScreenshot = false;
129− }
130−
131− onFocusedScreenshotChanged: {
132− waitingForSideScreenshot = false;
133− }
134−
135− onWaitingForScreenshotsChanged: {
136− if (waitingForScreenshots) {
137− return;
138− }
139−
140− if (root.moving) {
141− if (mainStageAppId) {
142− mainStageImage.application = mainStageApp
143− mainStageImage.visible = true;
144− }
145− if (sideStageAppId && focusedApplicationId == sideStageAppId) {
146− sideStageImage.application = sideStageApp;
147− sideStageImage.x = root.width - sideStageImage.width
148− sideStageImage.visible = true;
149− }
150− }
151− if (sideStageHandleMouseArea.pressed) {
152− if (sideStageAppId) {
153− sideStageImage.application = sideStageApp;
154− sideStageImage.x = root.width - sideStageImage.width
155− sideStageImage.visible = true;
156− }
157− if (mainStageAppId) {
158− mainStageImage.application = mainStageApp
159− mainStageImage.visible = true;
160− }
161− }
162− }
163−
164− function requestNewScreenshot(stage) {
165− if (stage == ApplicationInfoInterface.MainStage && mainStageAppId) {
166− waitingForMainScreenshot = true;
167− ApplicationManager.updateScreenshot(mainStageAppId);
168− } else if (stage == ApplicationInfoInterface.SideStage && sideStageAppId) {
169− waitingForSideScreenshot = true;
170− ApplicationManager.updateScreenshot(sideStageAppId);
171− }
172− }
173−
174− }
175− // FIXME: the signal connection seems to get lost with the fake application manager.
176− Connections {
177− target: priv.sideStageApp
178− onScreenshotChanged: priv.sideStageScreenshot = priv.sideStageApp.screenshot
179− }
180− Connections {
181− target: priv.mainStageApp
182− onScreenshotChanged: priv.mainStageScreenshot = priv.mainStageApp.screenshot
183− }
184−
185− Connections {
186− target: ApplicationManager
187−
188− onApplicationAdded: {
189− priv.startingAppId = appId;
190− splashScreenTimer.start();
191− var application = ApplicationManager.findApplication(appId)
192− if (application.stage == ApplicationInfoInterface.SideStage) {
193− sideStageSplash.visible = true;
194− } else if (application.stage == ApplicationInfoInterface.MainStage) {
195− mainStageSplash.visible = true;
196− }
197− }
198−
199− onFocusRequested: {
200− var application = ApplicationManager.findApplication(appId)
201− if (application.stage == ApplicationInfoInterface.SideStage) {
202− if (!root.shown) {
203− priv.mainStageAppId = "";
204− mainStageImage.application = null
205− }
206− if (sideStageImage.shown) {
207− sideStageImage.switchTo(application);
208− if (priv.mainStageAppId) {
209− mainStageImage.application = priv.mainStageApp;
210− mainStageImage.visible = true;
211− }
212− } else {
213− sideStageImage.application = application;
214− sideStageImage.snapToApp(application);
215− }
216− } else if (application.stage == ApplicationInfoInterface.MainStage) {
217− if (root.shown) {
218− if (sideStageImage.shown) {
219− sideStageImage.application = priv.sideStageApp;
220− sideStageImage.visible = true;
221− }
222− priv.mainStageAppId = application.appId;
223− mainStageImage.switchTo(application)
224− ApplicationManager.focusApplication(appId)
225− if (sideStageImage.shown) {
226− // There was already a focused SS app. Bring it back
227− ApplicationManager.focusApplication(priv.sideStageAppId)
228− }
229− } else {
230− if (sideStageImage.shown) {
231− sideStageImage.visible = false;
232− sideStageImage.x = root.width;
233− }
234−
235− mainStageImage.application = application;
236− ApplicationManager.focusApplication(appId)
237− }
238− }
239− }
240−
241− onApplicationRemoved: {
242− if (priv.mainStageAppId == appId) {
243− priv.mainStageAppId = "";
244− }
245− if (priv.sideStageAppId == appId) {
246− priv.sideStageAppId = "";
247− }
248− if (priv.sideStageAppId.length == 0) {
249− sideStageImage.shown = false;
250− priv.overlayOverride = false;
251− }
252− }
253−
254− }
255−
256− Timer {
257− id: splashScreenTimer
258− // FIXME: apart from removing this completely in the future and make the app surface paint
259− // meaningful stuff, also check for colin's stuff to land so we can shape 1.4 secs away from here
260− // https://code.launchpad.net/~cjwatson/upstart-app-launch/libclick-manifest/+merge/210520
261− // https://code.launchpad.net/~cjwatson/upstart-app-launch/libclick-pkgdir/+merge/209909
262− interval: 1700
263− repeat: false
264− onTriggered: {
265− mainStageSplash.visible = false;
266− sideStageSplash.visible = false;
267− }
268− }
269−
270− SwitchingApplicationImage {
271− id: mainStageImage
272− anchors.bottom: parent.bottom
273− width: parent.width
274− visible: false
275−
276− onSwitched: {
277− sideStageImage.visible = false;
278− }
279− }
280−
281− Rectangle {
282− id: mainStageSplash
283− anchors.fill: root
284− anchors.rightMargin: root.width - sideStageImage.x
285− color: "black"
286−
287− WaitingDots {
288− }
289− }
290−
291− SidestageHandle {
292− id: sideStageHandle
293− anchors { top: parent.top; right: sideStageImage.left; bottom: parent.bottom }
294− width: root.dragAreaWidth
295− visible: root.shown && priv.sideStageAppId && sideStageImage.x < root.width
296−
297− }
298− MouseArea {
299− id: sideStageHandleMouseArea
300− anchors { top: parent.top; right: parent.right; bottom: parent.bottom; rightMargin: sideStageImage.shown ? sideStageImage.width : 0}
301− width: root.dragAreaWidth
302− visible: priv.sideStageAppId
303−
304− property var dragPoints: new Array()
305−
306− onPressed: {
307− priv.requestNewScreenshot(ApplicationInfoInterface.SideStage)
308− if (priv.mainStageAppId) {
309− priv.requestNewScreenshot(ApplicationInfoInterface.MainStage)
310− }
311− }
312−
313− onMouseXChanged: {
314− dragPoints.push(mouseX)
315−
316− var dragPoint = root.width + mouseX;
317− if (sideStageImage.shown) {
318− dragPoint -= sideStageImage.width
319− }
320− sideStageImage.x = Math.max(root.width - sideStageImage.width, dragPoint)
321− }
322−
323− onReleased: {
324− var distance = 0;
325− var lastX = dragPoints[0];
326− var oneWayFlick = true;
327− for (var i = 0; i < dragPoints.length; ++i) {
328− if (dragPoints[i] < lastX) {
329− oneWayFlick = false;
330− }
331− distance += dragPoints[i] - lastX;
332− lastX = dragPoints[i];
333− }
334− dragPoints = [];
335−
336− if (oneWayFlick || distance > sideStageImage.width / 2) {
337− sideStageImage.snapTo(root.width)
338− } else {
339− sideStageImage.snapToApp(priv.sideStageApp)
340− }
341− }
342− }
343−
344− SwitchingApplicationImage {
345− id: sideStageImage
346− width: priv.sideStageWidth
347− height: root.height
348− x: root.width
349− anchors.bottom: parent.bottom
350− visible: true
351− property bool shown: false
352−
353− onSwitched: {
354− mainStageImage.visible = false;
355− ApplicationManager.focusApplication(application.appId)
356− }
357−
358− function snapTo(targetX) {
359− sideStageSnapAnimation.targetX = targetX
360− sideStageImage.visible = true;
361− if (priv.mainStageAppId) {
362− mainStageImage.application = priv.mainStageApp
363− mainStageImage.visible = true;
364− }
365− sideStageSnapAnimation.start();
366− }
367−
368− function snapToApp(application) {
369− sideStageImage.application = application
370− sideStageSnapAnimation.snapToId = application.appId;
371− snapTo(root.width - sideStageImage.width);
372− }
373−
374− SequentialAnimation {
375− id: sideStageSnapAnimation
376− property int targetX: root.width
377− property string snapToId
378−
379− UbuntuNumberAnimation { target: sideStageImage; property: "x"; to: sideStageSnapAnimation.targetX; duration: UbuntuAnimation.SlowDuration }
380− ScriptAction {
381− script: {
382− if (sideStageSnapAnimation.targetX == root.width) {
383− if (priv.mainStageAppId) {
384− ApplicationManager.focusApplication(priv.mainStageAppId)
385− } else {
386− priv.overlayOverride = true;
387− ApplicationManager.unfocusCurrentApplication();
388− }
389− sideStageImage.shown = false;
390− }
391− if (sideStageSnapAnimation.snapToId) {
392− ApplicationManager.focusApplication(sideStageSnapAnimation.snapToId)
393− sideStageSnapAnimation.snapToId = "";
394− sideStageImage.shown = true;
395− priv.overlayOverride = false;
396− }
397− sideStageImage.visible = false;
398− mainStageImage.visible = false;
399− }
400− }
401− }
402− }
403−
404− Rectangle {
405− id: sideStageSplash
406− anchors.fill: parent
407− anchors.leftMargin: sideStageImage.x
408− color: "black"
409−
410− WaitingDots {
411− }
412− }
413−}
qml/Stages/SurfaceContainer.qmlnew file+123
@@ -0,0 +1,123 @@
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+
17+import QtQuick 2.0
18+import "Animations"
19+
20+Item {
21+ id: container
22+ property Item surface: null
23+ property bool removing: false
24+
25+ onSurfaceChanged: {
26+ if (surface) {
27+ surface.parent = container;
28+ surface.z = 1;
29+ state = "initial"
30+ }
31+ }
32+
33+ Connections {
34+ target: surface
35+ onRemoved: {
36+ container.removing = true;
37+
38+ var childSurfaces = surface.childSurfaces;
39+ for (var i=0; i<childSurfaces.length; i++) {
40+ childSurfaces[i].removed();
41+ }
42+
43+ //if we don't have children, nothing will tell us to animate out, so do it.
44+ if (childSurfaces.length === 0) {
45+ animateOut();
46+ }
47+ // tell our parent to animate out.
48+ if (surface.parentSurface) {
49+ surface.parentSurface.parent.animateOut();
50+ }
51+ }
52+ }
53+
54+ Repeater {
55+ model: container.surface ? container.surface.childSurfaces : 0
56+
57+ delegate: Loader {
58+ z: 2
59+ anchors {
60+ fill: container
61+ topMargin: container.surface.anchors.topMargin
62+ rightMargin: container.surface.anchors.rightMargin
63+ bottomMargin: container.surface.anchors.bottomMargin
64+ leftMargin: container.surface.anchors.leftMargin
65+ }
66+
67+ // Only way to do recursive qml items.
68+ source: Qt.resolvedUrl("SurfaceContainer.qml")
69+ onLoaded: {
70+ item.surface = modelData;
71+ item.animateIn(swipeFromBottom);
72+ container.animateIn(swipeUp);
73+ }
74+ }
75+ }
76+
77+ function animateIn(component) {
78+ var animation = component.createObject(container, { "surface": container.surface });
79+ animation.start();
80+
81+ var tmp = d.animations;
82+ tmp.push(animation);
83+ d.animations = tmp;
84+ }
85+
86+ function animateOut() {
87+ if (d.animations.length > 0) {
88+ var tmp = d.animations;
89+ var popped = tmp.pop();
90+ popped.end();
91+ d.animations = tmp;
92+ } else {
93+ container.state = "initial";
94+ }
95+ }
96+
97+ QtObject {
98+ id: d
99+ property var animations: []
100+ property var currentAnimation: animations.length > 0 ? animations[animations.length-1] : undefined
101+ }
102+
103+ Component {
104+ id: swipeFromBottom
105+ SwipeFromBottomAnimation {}
106+ }
107+ Component {
108+ id: swipeUp
109+ SwipeUpAnimation {}
110+ }
111+ Component {
112+ id: darkenFade
113+ DarkenAndFadeInAnimation {}
114+ }
115+
116+ states: [
117+ State {
118+ name: "initial"
119+ PropertyChanges { target: surface; anchors.fill: container }
120+ }
121+ // TODO: more animations!
122+ ]
123+}
qml/Stages/SwitchingApplicationImage.qmldeleted−81
@@ -1,81 +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: Michael Zanetti <michael.zanetti@canonical.com>
17−*/
18−
19−import QtQuick 2.0
20−import Ubuntu.Components 0.1
21−
22−Rectangle {
23− id: root
24− implicitHeight: image.implicitHeight
25− implicitWidth: image.implicitWidth
26− color: "black"
27−
28− property var application
29−
30− signal switched()
31−
32− function switchTo(application) {
33− if (root.application == application) {
34− root.switched();
35− return;
36− }
37−
38− priv.newApplication = application
39− root.visible = true;
40− switchToAnimation.start()
41− }
42−
43− QtObject {
44− id: priv
45− property var newApplication
46− }
47−
48− Image {
49− id: newImage
50− anchors.bottom: parent.bottom
51− width: root.width
52− source: priv.newApplication ? priv.newApplication.screenshot : ""
53− }
54−
55− Image {
56− id: image
57− visible: true
58− source: root.application ? root.application.screenshot : ""
59− width: root.width
60− height: sourceSize.height
61− anchors.bottom: parent.bottom
62−
63− }
64−
65− SequentialAnimation {
66− id: switchToAnimation
67− ParallelAnimation {
68− UbuntuNumberAnimation { target: image; property: "x"; from: 0; to: root.width; duration: UbuntuAnimation.SlowDuration }
69− UbuntuNumberAnimation { target: newImage; property: "scale"; from: 0.7; to: 1; duration: UbuntuAnimation.SlowDuration }
70− }
71− ScriptAction {
72− script: {
73− image.x = 0
74− root.application = priv.newApplication
75− root.visible = false;
76− priv.newApplication = null
77− root.switched();
78− }
79− }
80− }
81−}
qml/Stages/TabletStage.qmlnew file+568
@@ -0,0 +1,568 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.0
18+import Ubuntu.Components 0.1
19+import Ubuntu.Gestures 0.1
20+import Unity.Application 0.1
21+import Utils 0.1
22+import "../Components"
23+
24+Item {
25+ id: root
26+ objectName: "stages"
27+ anchors.fill: parent
28+
29+ // Controls to be set from outside
30+ property bool shown: false
31+ property bool moving: false
32+ property int dragAreaWidth
33+ property real maximizedAppTopMargin
34+ property bool interactive
35+
36+ // State information propagated to the outside
37+ readonly property bool locked: spreadView.phase == 2
38+
39+ QtObject {
40+ id: priv
41+
42+ property string focusedAppId: ApplicationManager.focusedApplicationId
43+ property string oldFocusedAppId: ""
44+
45+ property string mainStageAppId
46+ property string sideStageAppId
47+
48+ // For convenience, keep properties of the first two apps in the model
49+ property string appId0
50+ property string appId1
51+
52+ onFocusedAppIdChanged: {
53+ if (priv.focusedAppId.length > 0) {
54+ var focusedApp = ApplicationManager.findApplication(focusedAppId);
55+ if (focusedApp.stage == ApplicationInfoInterface.SideStage) {
56+ priv.sideStageAppId = focusedAppId;
57+ } else {
58+ priv.mainStageAppId = focusedAppId;
59+ }
60+ }
61+
62+ appId0 = ApplicationManager.count >= 1 ? ApplicationManager.get(0).appId : "";
63+ appId1 = ApplicationManager.count > 1 ? ApplicationManager.get(1).appId : "";
64+ }
65+
66+ function indexOf(appId) {
67+ for (var i = 0; i < ApplicationManager.count; i++) {
68+ if (ApplicationManager.get(i).appId == appId) {
69+ return i;
70+ }
71+ }
72+ return -1;
73+ }
74+
75+ function evaluateOneWayFlick(gesturePoints) {
76+ // Need to have at least 3 points to recognize it as a flick
77+ if (gesturePoints.length < 3) {
78+ return false;
79+ }
80+ // Need to have a movement of at least 2 grid units to recognize it as a flick
81+ if (Math.abs(gesturePoints[gesturePoints.length - 1] - gesturePoints[0]) < units.gu(2)) {
82+ return false;
83+ }
84+
85+ var oneWayFlick = true;
86+ var smallestX = gesturePoints[0];
87+ var leftWards = gesturePoints[1] < gesturePoints[0];
88+ for (var i = 1; i < gesturePoints.length; i++) {
89+ if ((leftWards && gesturePoints[i] >= smallestX)
90+ || (!leftWards && gesturePoints[i] <= smallestX)) {
91+ oneWayFlick = false;
92+ break;
93+ }
94+ smallestX = gesturePoints[i];
95+ }
96+ return oneWayFlick;
97+ }
98+ }
99+
100+ Connections {
101+ target: ApplicationManager
102+ onFocusRequested: {
103+ if (spreadView.interactive) {
104+ spreadView.snapTo(priv.indexOf(appId));
105+ } else {
106+ ApplicationManager.focusApplication(appId);
107+ }
108+ }
109+
110+ onApplicationRemoved: {
111+ if (priv.mainStageAppId == appId) {
112+ priv.mainStageAppId = "";
113+ }
114+ if (priv.sideStageAppId == appId) {
115+ priv.sideStageAppId = "";
116+ }
117+ if (ApplicationManager.count == 0) {
118+ spreadView.phase = 0;
119+ spreadView.contentX = 0;
120+ }
121+ }
122+ }
123+
124+ Flickable {
125+ id: spreadView
126+ anchors.fill: parent
127+ contentWidth: spreadRow.width
128+ interactive: (spreadDragArea.status == DirectionalDragArea.Recognized || phase > 1) && draggedIndex == -1
129+
130+ property int tileDistance: units.gu(20)
131+ property int sideStageWidth: units.gu(40)
132+ property bool sideStageVisible: priv.sideStageAppId
133+
134+ // Phase of the animation:
135+ // 0: Starting from right edge, a new app (index 1) comes in from the right
136+ // 1: The app has reached the first snap position.
137+ // 2: The list is dragged further and snaps into the spread view when entering phase 2
138+ property int phase
139+
140+ readonly property int phase0Width: sideStageWidth
141+ readonly property int phase1Width: sideStageWidth
142+
143+ // Those markers mark the various positions in the spread (ratio to screen width from right to left):
144+ // 0 - 1: following finger, snap back to the beginning on release
145+ readonly property real positionMarker1: 0.2
146+ // 1 - 2: curved snapping movement, snap to nextInStack on release
147+ readonly property real positionMarker2: sideStageWidth / spreadView.width
148+ // 2 - 3: movement follows finger, snaps to phase 2 (full spread) on release
149+ readonly property real positionMarker3: 0.6
150+ // passing 3, we detach movement from the finger and snap to phase 2 (full spread)
151+ readonly property real positionMarker4: 0.8
152+
153+ readonly property int startSnapPosition: phase0Width * 0.5
154+ readonly property int endSnapPosition: phase0Width * 0.75
155+ readonly property real snapPosition: 0.75
156+
157+ property int selectedIndex: -1
158+ property int draggedIndex: -1
159+ property int closingIndex: -1
160+
161+ property bool sideStageDragging: sideStageDragHandle.dragging
162+ property real sideStageDragProgress: sideStageDragHandle.progress
163+
164+ onSideStageDragProgressChanged: {
165+ if (sideStageDragProgress == 1) {
166+ ApplicationManager.focusApplication(priv.mainStageAppId);
167+ priv.sideStageAppId = "";
168+ }
169+ }
170+
171+ property int nextInStack: {
172+ switch (state) {
173+ case "main":
174+ if (ApplicationManager.count > 1) {
175+ return 1;
176+ }
177+ return -1;
178+ case "mainAndOverlay":
179+ if (ApplicationManager.count <= 2) {
180+ return -1;
181+ }
182+ if (priv.appId0 == priv.mainStageAppId || priv.appId0 == priv.sideStageAppId) {
183+ if (priv.appId1 == priv.mainStageAppId || priv.appId1 == priv.sideStageAppId) {
184+ return 2;
185+ }
186+ return 1;
187+ }
188+ return 0;
189+ case "overlay":
190+ return 1;
191+ }
192+ print("Unhandled nextInStack case! This shouldn't happen any more when the Dash is an app!");
193+ return -1;
194+ }
195+ property int nextZInStack: indexToZIndex(nextInStack)
196+
197+ states: [
198+ State {
199+ name: "empty"
200+ },
201+ State {
202+ name: "main"
203+ },
204+ State { // Side Stage only in overlay mode
205+ name: "overlay"
206+ },
207+ State { // Main Stage and Side Stage in overlay mode
208+ name: "mainAndOverlay"
209+ },
210+ State { // Main Stage and Side Stage in split mode
211+ name: "mainAndSplit"
212+ }
213+ ]
214+ state: {
215+ if (priv.mainStageAppId && !priv.sideStageAppId) {
216+ return "main";
217+ }
218+ if (!priv.mainStageAppId && priv.sideStageAppId) {
219+ return "overlay";
220+ }
221+ if (priv.mainStageAppId && priv.sideStageAppId) {
222+ return "mainAndOverlay";
223+ }
224+ return "empty";
225+ }
226+
227+ onContentXChanged: {
228+ if (spreadView.phase == 0 && spreadView.contentX > spreadView.width * spreadView.positionMarker2) {
229+ spreadView.phase = 1;
230+ } else if (spreadView.phase == 1 && spreadView.contentX > spreadView.width * spreadView.positionMarker4) {
231+ spreadView.phase = 2;
232+ } else if (spreadView.phase == 1 && spreadView.contentX < spreadView.width * spreadView.positionMarker2) {
233+ spreadView.phase = 0;
234+ }
235+ }
236+
237+ function snap() {
238+ if (contentX < phase0Width) {
239+ snapAnimation.targetContentX = 0;
240+ snapAnimation.start();
241+ } else if (contentX < phase1Width) {
242+ snapTo(1);
243+ } else {
244+ // Add 1 pixel to make sure we definitely hit positionMarker4 even with rounding errors of the animation.
245+ snapAnimation.targetContentX = spreadView.width * spreadView.positionMarker4 + 1;
246+ snapAnimation.start();
247+ }
248+ }
249+ function snapTo(index) {
250+ spreadView.selectedIndex = index;
251+ snapAnimation.targetContentX = 0;
252+ snapAnimation.start();
253+ }
254+
255+ // We need to shuffle z ordering a bit in order to keep side stage apps above main stage apps.
256+ // We don't want to really reorder them in the model because that allows us to keep track
257+ // of the last focused order.
258+ function indexToZIndex(index) {
259+ var app = ApplicationManager.get(index);
260+ if (!app) {
261+ return index;
262+ }
263+
264+ var isActive = app.appId == priv.mainStageAppId || app.appId == priv.sideStageAppId;
265+ if (isActive && app.stage == ApplicationInfoInterface.MainStage) {
266+ // if this app is active, and its the MainStage, always put it to index 0
267+ return 0;
268+ }
269+ if (isActive && app.stage == ApplicationInfoInterface.SideStage) {
270+ if (!priv.mainStageAppId) {
271+ // Only have SS apps running. Put the active one at 0
272+ return 0;
273+ }
274+
275+ // Precondition now: There's an active MS app and this is SS app:
276+ if (spreadView.nextInStack >= 0 && ApplicationManager.get(spreadView.nextInStack).stage == ApplicationInfoInterface.MainStage) {
277+ // If the next app coming from the right is a MS app, we need to elevate this SS ap above it.
278+ // Put it to at least level 2, or higher if there's more apps coming in before this one.
279+ return Math.max(index, 2);
280+ } else {
281+ // if this is no next app to come in from the right, place this one at index 1, just on top the active MS app.
282+ return 1;
283+ }
284+ }
285+ if (index <= 2 && app.stage == ApplicationInfoInterface.MainStage && priv.sideStageAppId) {
286+ // Ok, this is an inactive MS app. If there's an active SS app around, we need to place this one
287+ // in between the active MS app and the active SS app, so that it comes in from there when dragging from the right.
288+ // If there's now active SS app, just leave it where it is.
289+ return priv.indexOf(priv.sideStageAppId) < index ? index - 1 : index;
290+ }
291+ if (index == spreadView.nextInStack && app.stage == ApplicationInfoInterface.SideStage) {
292+ // This is a SS app and the next one to come in from the right:
293+ if (priv.sideStageAppId && priv.mainStageAppId) {
294+ // If there's both, an active MS and an active SS app, put this one right on top of that
295+ return 2;
296+ }
297+ // Or if there's only one other active app, put it on top of that.
298+ // The case that there isn't any other active app is already handled above.
299+ return 1;
300+ }
301+ if (index == 2 && spreadView.nextInStack == 1 && priv.sideStageAppId) {
302+ // If its index 2 but not the next one to come in, it means
303+ // we've pulled another one down to index 2. Move this one up to 2 instead.
304+ return 3;
305+ }
306+ // don't touch all others... (mostly index > 3 + simple cases where the above doesn't shuffle much)
307+ return index;
308+ }
309+
310+ SequentialAnimation {
311+ id: snapAnimation
312+ property int targetContentX: 0
313+
314+ UbuntuNumberAnimation {
315+ target: spreadView
316+ property: "contentX"
317+ to: snapAnimation.targetContentX
318+ duration: UbuntuAnimation.FastDuration
319+ }
320+
321+ ScriptAction {
322+ script: {
323+ if (spreadView.selectedIndex >= 0) {
324+ var newIndex = spreadView.selectedIndex;
325+ spreadView.selectedIndex = -1;
326+ ApplicationManager.focusApplication(ApplicationManager.get(newIndex).appId);
327+ spreadView.phase = 0;
328+ spreadView.contentX = 0;
329+ }
330+ }
331+ }
332+ }
333+
334+ Rectangle {
335+ id: spreadRow
336+ color: "black"
337+ x: spreadView.contentX
338+ height: root.height
339+ width: spreadView.width + Math.max(spreadView.width, ApplicationManager.count * spreadView.tileDistance)
340+
341+ Rectangle {
342+ id: sideStageBackground
343+ color: "black"
344+ anchors.fill: parent
345+ anchors.leftMargin: spreadView.width - (1 - sideStageDragHandle.progress) * spreadView.sideStageWidth
346+ z: spreadView.indexToZIndex(priv.indexOf(priv.sideStageAppId))
347+ opacity: spreadView.phase == 0 ? 1 : 0
348+ Behavior on opacity { UbuntuNumberAnimation {} }
349+ }
350+
351+ Item {
352+ id: sideStageDragHandle
353+ anchors { top: parent.top; bottom: parent.bottom; left: parent.left; leftMargin: spreadView.width - spreadView.sideStageWidth - width }
354+ width: units.gu(2)
355+ z: sideStageBackground.z
356+ opacity: spreadView.phase <= 0 && spreadView.sideStageVisible ? 1 : 0
357+ property real progress: 0
358+ property bool dragging: false
359+
360+ Behavior on opacity { UbuntuNumberAnimation {} }
361+
362+ Connections {
363+ target: spreadView
364+ onSideStageVisibleChanged: {
365+ if (spreadView.sideStageVisible) {
366+ sideStageDragHandle.progress = 0;
367+ }
368+ }
369+ }
370+
371+ Image {
372+ anchors.centerIn: parent
373+ anchors.horizontalCenterOffset: parent.progress * spreadView.sideStageWidth - (width - parent.width) / 2
374+ width: sideStageDragHandleMouseArea.pressed ? parent.width * 2 : parent.width
375+ height: parent.height
376+ source: "graphics/sidestage_handle@20.png"
377+ Behavior on width { UbuntuNumberAnimation {} }
378+ }
379+
380+ MouseArea {
381+ id: sideStageDragHandleMouseArea
382+ anchors.fill: parent
383+ enabled: spreadView.contentX == 0
384+ property int startX
385+ property var gesturePoints: new Array()
386+
387+ onPressed: {
388+ gesturePoints = [];
389+ startX = mouseX;
390+ sideStageDragHandle.progress = 0;
391+ sideStageDragHandle.dragging = true;
392+ }
393+ onMouseXChanged: {
394+ if (priv.mainStageAppId) {
395+ sideStageDragHandle.progress = Math.max(0, (-startX + mouseX) / spreadView.sideStageWidth);
396+ }
397+ gesturePoints.push(mouseX);
398+ }
399+ onReleased: {
400+ if (priv.mainStageAppId) {
401+ var oneWayFlick = priv.evaluateOneWayFlick(gesturePoints);
402+ sideStageDragSnapAnimation.to = sideStageDragHandle.progress > 0.5 || oneWayFlick ? 1 : 0;
403+ sideStageDragSnapAnimation.start();
404+ } else {
405+ sideStageDragHandle.dragging = false;
406+ }
407+ }
408+ }
409+ UbuntuNumberAnimation {
410+ id: sideStageDragSnapAnimation
411+ target: sideStageDragHandle
412+ property: "progress"
413+
414+ onRunningChanged: {
415+ if (!running) {
416+ sideStageDragHandle.dragging = false;;
417+ }
418+ }
419+ }
420+ }
421+
422+ Repeater {
423+ id: spreadRepeater
424+ model: ApplicationManager
425+
426+ delegate: TransformedTabletSpreadDelegate {
427+ id: spreadTile
428+ height: spreadView.height
429+ width: model.stage == ApplicationInfoInterface.MainStage ? spreadView.width : spreadView.sideStageWidth
430+ x: spreadView.width
431+ z: spreadView.indexToZIndex(index)
432+ active: model.appId == priv.mainStageAppId || model.appId == priv.sideStageAppId
433+ zIndex: z
434+ selected: spreadView.selectedIndex == index
435+ otherSelected: spreadView.selectedIndex >= 0 && !selected
436+ isInSideStage: priv.sideStageAppId == model.appId
437+ interactive: !spreadView.interactive && spreadView.phase === 0 && root.interactive
438+ swipeToCloseEnabled: spreadView.interactive
439+ maximizedAppTopMargin: root.maximizedAppTopMargin
440+ dropShadow: spreadView.contentX > 0 || spreadDragArea.status == DirectionalDragArea.Undecided
441+
442+ property real behavioredZIndex: zIndex
443+ Behavior on behavioredZIndex {
444+ enabled: spreadView.closingIndex >= 0
445+ UbuntuNumberAnimation {}
446+ }
447+
448+ // This is required because none of the bindings are triggered in some cases:
449+ // When an app is closed, it might happen that ApplicationManager.get(nextInStack)
450+ // returns a different app even though the nextInStackIndex and all the related
451+ // bindings (index, mainStageApp, sideStageApp, etc) don't change. Let's force a
452+ // binding update in that case.
453+ Connections {
454+ target: ApplicationManager
455+ onApplicationRemoved: spreadTile.z = Qt.binding(function() {
456+ return spreadView.indexToZIndex(index);
457+ })
458+ }
459+
460+ progress: {
461+ var tileProgress = (spreadView.contentX - behavioredZIndex * spreadView.tileDistance) / spreadView.width;
462+ // Some tiles (nextInStack, active) need to move directly from the beginning, normalize progress to immediately start at 0
463+ if ((index == spreadView.nextInStack && spreadView.phase < 2) || (active && spreadView.phase < 1)) {
464+ tileProgress += behavioredZIndex * spreadView.tileDistance / spreadView.width;
465+ }
466+ return tileProgress;
467+ }
468+
469+ animatedProgress: {
470+ if (spreadView.phase == 0 && (spreadTile.active || spreadView.nextInStack == index)) {
471+ if (progress < spreadView.positionMarker1) {
472+ return progress;
473+ } else if (progress < spreadView.positionMarker1 + snappingCurve.period) {
474+ return spreadView.positionMarker1 + snappingCurve.value * 3;
475+ } else {
476+ return spreadView.positionMarker2;
477+ }
478+ }
479+ return progress;
480+ }
481+
482+ onClicked: {
483+ if (spreadView.phase == 2) {
484+ if (ApplicationManager.focusedApplicationId == ApplicationManager.get(index).appId) {
485+ spreadView.snapTo(index);
486+ } else {
487+ ApplicationManager.requestFocusApplication(ApplicationManager.get(index).appId);
488+ }
489+ }
490+ }
491+
492+ onClosed: {
493+ spreadView.draggedIndex = -1;
494+ spreadView.closingIndex = index;
495+ ApplicationManager.stopApplication(ApplicationManager.get(index).appId);
496+ }
497+
498+ EasingCurve {
499+ id: snappingCurve
500+ type: EasingCurve.Linear
501+ period: (spreadView.positionMarker2 - spreadView.positionMarker1) / 3
502+ progress: spreadTile.progress - spreadView.positionMarker1
503+ }
504+ }
505+ }
506+ }
507+ }
508+
509+ EdgeDragArea {
510+ id: spreadDragArea
511+ anchors { top: parent.top; right: parent.right; bottom: parent.bottom }
512+ width: root.dragAreaWidth
513+ direction: Direction.Leftwards
514+
515+ property bool attachedToView: false
516+ property var gesturePoints: new Array()
517+
518+ onTouchXChanged: {
519+ if (!dragging) {
520+ spreadView.phase = 0;
521+ spreadView.contentX = 0;
522+ }
523+
524+ if (attachedToView) {
525+ spreadView.contentX = -touchX + spreadDragArea.width;
526+ if (spreadView.contentX > spreadView.phase0Width + spreadView.phase1Width / 2) {
527+ attachedToView = false;
528+ spreadView.snap();
529+ }
530+ }
531+ gesturePoints.push(touchX);
532+ }
533+
534+ onStatusChanged: {
535+ if (status == DirectionalDragArea.Recognized) {
536+ attachedToView = true;
537+ }
538+ }
539+
540+ onDraggingChanged: {
541+ if (dragging) {
542+ // Gesture recognized. Start recording this gesture
543+ gesturePoints = [];
544+ return;
545+ }
546+
547+ // Ok. The user released. Find out if it was a one-way movement.
548+ var oneWayFlick = priv.evaluateOneWayFlick(gesturePoints);
549+ gesturePoints = [];
550+
551+ if (oneWayFlick && spreadView.contentX < spreadView.positionMarker1 * spreadView.width) {
552+ // If it was a short one-way movement, do the Alt+Tab switch
553+ // no matter if we didn't cross positionMarker1 yet.
554+ spreadView.snapTo(spreadView.nextInStack);
555+ } else if (!dragging && attachedToView) {
556+ if (spreadView.contentX < spreadView.width * spreadView.positionMarker1) {
557+ spreadView.snap();
558+ } else if (spreadView.contentX < spreadView.width * spreadView.positionMarker2) {
559+ spreadView.snapTo(spreadView.nextInStack);
560+ } else {
561+ // otherwise snap to the closest snap position we can find
562+ // (might be back to start, to app 1 or to spread)
563+ spreadView.snap();
564+ }
565+ }
566+ }
567+ }
568+}
qml/Stages/TransformedSpreadDelegate.qml+36−30
@@ -23,7 +23,9 @@ import Ubuntu.Components 0.1
23SpreadDelegate {
23SpreadDelegate {
24 id: root
24 id: root
25
25
26+ // Set this to true when this tile is selected in the spread. The animation will change to bring the tile to front.
26 property bool selected: false
27 property bool selected: false
28+ // Set this to true when another tile in the spread is selected. The animation will change to fade this tile out.
27 property bool otherSelected: false
29 property bool otherSelected: false
28
30
29 // The progress animates the tiles. A value > 0 makes it appear from the right edge. At 1 it reaches the end position.
31 // The progress animates the tiles. A value > 0 makes it appear from the right edge. At 1 it reaches the end position.
@@ -44,6 +46,9 @@ SpreadDelegate {
44 property real startDistance: units.gu(5)
46 property real startDistance: units.gu(5)
45 property real endDistance: units.gu(.5)
47 property real endDistance: units.gu(.5)
46
48
49+ // Hiding tiles when their progress is negative or reached the maximum
50+ visible: progress >= 0 && progress < 1.7
51+
47 onSelectedChanged: {
52 onSelectedChanged: {
48 if (selected) {
53 if (selected) {
49 priv.snapshot();
54 priv.snapshot();
@@ -106,16 +111,6 @@ SpreadDelegate {
106 selectedTopMarginProgress = topMarginProgress;
111 selectedTopMarginProgress = topMarginProgress;
107 }
112 }
108
113
109− // This calculates how much negative progress there can be if unwinding the spread completely
110− // the progress for each tile starts at 0 when it crosses the right edge, so the later a tile comes in,
111− // the bigger its negativeProgress can be.
112− property real negativeProgress: {
113− if (index == 1 && spreadView.phase < 2) {
114− return 0;
115− }
116− return -index * spreadView.tileDistance / spreadView.width;
117− }
118−
119 function linearAnimation(startProgress, endProgress, startValue, endValue, progress) {
114 function linearAnimation(startProgress, endProgress, startValue, endValue, progress) {
120 // progress : progressDiff = value : valueDiff => value = progress * valueDiff / progressDiff
115 // progress : progressDiff = value : valueDiff => value = progress * valueDiff / progressDiff
121 return (progress - startProgress) * (endValue - startValue) / (endProgress - startProgress) + startValue;
116 return (progress - startProgress) * (endValue - startValue) / (endProgress - startProgress) + startValue;
@@ -127,22 +122,20 @@ SpreadDelegate {
127 return helperEasingCurve.value * (endValue - startValue) + startValue;
122 return helperEasingCurve.value * (endValue - startValue) + startValue;
128 }
123 }
129
124
130− property real animatedEndDistance: linearAnimation(0, 2, root.endDistance, 0, root.progress)
131−
132 // The following blocks handle the animation of the tile in the spread.
125 // The following blocks handle the animation of the tile in the spread.
133 // At the beginning, each tile is attached at the right edge, outside the screen.
126 // At the beginning, each tile is attached at the right edge, outside the screen.
134 // The progress for each tile starts at 0 and it reaches its end position at a progress of 1.
127 // The progress for each tile starts at 0 and it reaches its end position at a progress of 1.
135− // The first phases are handled special for the first 2 tiles. as we do the alt-tab and snapping in there
128+ // The first phases are handled special for the first 2 tiles. as we do the alt-tab and snapping
136− // Once we reached phase 3, the animation is the same for all tiles.
129+ // in there. Once we reached phase 3, the animation is the same for all tiles.
137− // When a tile is selected, the animation state is snapshotted, and the spreadView is unwound (progress animates
130+ // When a tile is selected, the animation state is snapshotted, and the spreadView is unwound.
138− // back to negativeProgress). All tiles are kept in place and faded out to 0 opacity except
131+ // All tiles are kept in place and faded out to 0 opacity except
139 // the selected tile, which is animated from the snapshotted position to be fullscreen.
132 // the selected tile, which is animated from the snapshotted position to be fullscreen.
140
133
141− property real xTranslate: {
134+ readonly property real xTranslate: {
142 if (otherSelected) {
135 if (otherSelected) {
143 if (spreadView.phase < 2 && index == 0) {
136 if (spreadView.phase < 2 && index == 0) {
144− return linearAnimation(selectedProgress, negativeProgress,
137+ return linearAnimation(selectedProgress, 0, selectedXTranslate,
145− selectedXTranslate, selectedXTranslate - spreadView.tileDistance, root.progress);
138+ selectedXTranslate - spreadView.tileDistance, root.progress);
146 }
139 }
147
140
148 return selectedXTranslate;
141 return selectedXTranslate;
@@ -160,7 +153,7 @@ SpreadDelegate {
160 // Apply the same animation as with the rest but add spreadView.width to align it with the others.
153 // Apply the same animation as with the rest but add spreadView.width to align it with the others.
161 return -easingCurve.value * spreadView.width + spreadView.width;
154 return -easingCurve.value * spreadView.width + spreadView.width;
162 } else if (priv.isSelected) {
155 } else if (priv.isSelected) {
163− return linearAnimation(selectedProgress, negativeProgress, selectedXTranslate, 0, root.progress);
156+ return linearAnimation(selectedProgress, 0, selectedXTranslate, 0, root.progress);
164 }
157 }
165
158
166 case 1:
159 case 1:
@@ -177,23 +170,28 @@ SpreadDelegate {
177 if (priv.isSelected) {
170 if (priv.isSelected) {
178 // Distance to left edge
171 // Distance to left edge
179 var targetTranslate = -spreadView.width - ((index - 1) * root.startDistance);
172 var targetTranslate = -spreadView.width - ((index - 1) * root.startDistance);
180− return linearAnimation(selectedProgress, negativeProgress,
173+ return linearAnimation(selectedProgress, 0,
181 selectedXTranslate, targetTranslate, root.progress);
174 selectedXTranslate, targetTranslate, root.progress);
182 }
175 }
183
176
184 // Fix it at the right edge...
177 // Fix it at the right edge...
185 var rightEdgeOffset = -((index - 1) * root.startDistance);
178 var rightEdgeOffset = -((index - 1) * root.startDistance);
186 // ...and use our easing to move them to the left. Stop a bit earlier for each tile
179 // ...and use our easing to move them to the left. Stop a bit earlier for each tile
180+ var animatedEndDistance = linearAnimation(0, 2, root.endDistance, 0, root.progress);
187 return -easingCurve.value * spreadView.width + (index * animatedEndDistance) + rightEdgeOffset;
181 return -easingCurve.value * spreadView.width + (index * animatedEndDistance) + rightEdgeOffset;
188
182
189 }
183 }
190
184
191− property real angle: {
185+ readonly property real angle: {
186+ if (spreadView.focusChanging) {
187+ return 0;
188+ }
189+
192 if (priv.otherSelected) {
190 if (priv.otherSelected) {
193 return priv.selectedAngle;
191 return priv.selectedAngle;
194 }
192 }
195 if (priv.isSelected) {
193 if (priv.isSelected) {
196− return linearAnimation(selectedProgress, negativeProgress, selectedAngle, 0, root.progress);
194+ return linearAnimation(selectedProgress, 0, selectedAngle, 0, root.progress);
197 }
195 }
198 switch (index) {
196 switch (index) {
199 case 0:
197 case 0:
@@ -217,12 +215,15 @@ SpreadDelegate {
217 return root.startAngle - easingCurve.value * (root.startAngle - root.endAngle);
215 return root.startAngle - easingCurve.value * (root.startAngle - root.endAngle);
218 }
216 }
219
217
220− property real scale: {
218+ readonly property real scale: {
219+ if (spreadView.focusChanging) {
220+ return 1;
221+ }
221 if (priv.otherSelected) {
222 if (priv.otherSelected) {
222 return priv.selectedScale;
223 return priv.selectedScale;
223 }
224 }
224 if (priv.isSelected) {
225 if (priv.isSelected) {
225− return linearAnimation(selectedProgress, negativeProgress, selectedScale, 1, root.progress);
226+ return linearAnimation(selectedProgress, 0, selectedScale, 1, root.progress);
226 }
227 }
227
228
228 switch (index) {
229 switch (index) {
@@ -247,7 +248,7 @@ SpreadDelegate {
247 return root.startScale - easingCurve.value * (root.startScale - root.endScale);
248 return root.startScale - easingCurve.value * (root.startScale - root.endScale);
248 }
249 }
249
250
250− property real opacity: {
251+ readonly property real opacity: {
251 if (priv.otherSelected) {
252 if (priv.otherSelected) {
252 return linearAnimation (selectedProgress, Math.max(0, selectedProgress - .5),
253 return linearAnimation (selectedProgress, Math.max(0, selectedProgress - .5),
253 selectedOpacity, 0, root.progress);
254 selectedOpacity, 0, root.progress);
@@ -265,9 +266,9 @@ SpreadDelegate {
265 return 1;
266 return 1;
266 }
267 }
267
268
268− property real topMarginProgress: {
269+ readonly property real topMarginProgress: {
269 if (priv.isSelected) {
270 if (priv.isSelected) {
270− return linearAnimation(selectedProgress, negativeProgress, selectedTopMarginProgress, 0, root.progress);
271+ return linearAnimation(selectedProgress, 0, selectedTopMarginProgress, 0, root.progress);
271 }
272 }
272
273
273 switch (index) {
274 switch (index) {
@@ -290,6 +291,7 @@ SpreadDelegate {
290
291
291 return easingCurve.value;
292 return easingCurve.value;
292 }
293 }
294+
293 }
295 }
294
296
295 transform: [
297 transform: [
@@ -303,18 +305,22 @@ SpreadDelegate {
303 xScale: priv.scale
305 xScale: priv.scale
304 yScale: xScale
306 yScale: xScale
305 },
307 },
308+ Scale {
309+ origin { x: 0; y: (spreadView.height * priv.scale) + maximizedAppTopMargin * 3 }
310+ xScale: 1
311+ yScale: isFullscreen ? 1 - priv.topMarginProgress * maximizedAppTopMargin / spreadView.height : 1
312+ },
306 Translate {
313 Translate {
307 x: priv.xTranslate
314 x: priv.xTranslate
308 }
315 }
309 ]
316 ]
310 opacity: priv.opacity
317 opacity: priv.opacity
311− topMarginProgress: priv.topMarginProgress
312
318
313 EasingCurve {
319 EasingCurve {
314 id: easingCurve
320 id: easingCurve
315 type: EasingCurve.OutSine
321 type: EasingCurve.OutSine
316 period: 1 - spreadView.positionMarker2
322 period: 1 - spreadView.positionMarker2
317− progress: root.animatedProgress
323+ progress: root.progress
318 }
324 }
319
325
320 // This is used as a calculation helper to figure values for progress other than the current one
326 // This is used as a calculation helper to figure values for progress other than the current one
qml/Stages/TransformedTabletSpreadDelegate.qmlnew file+369
@@ -0,0 +1,369 @@
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: Michael Zanetti <michael.zanetti@canonical.com>
17+*/
18+
19+import QtQuick 2.0
20+import Utils 0.1
21+import Ubuntu.Components 0.1
22+import Unity.Application 0.1
23+
24+SpreadDelegate {
25+ id: root
26+
27+ // Set this to true when this tile is selected in the spread. The animation will change to bring the tile to front.
28+ property bool selected: false
29+ // Set this to true when another tile in the spread is selected. The animation will change to fade this tile out.
30+ property bool otherSelected: false
31+ // Set this to true when this tile a currently active on either the MS or the SS.
32+ property bool active: false
33+
34+ property int zIndex
35+ property real progress: 0
36+ property real animatedProgress: 0
37+
38+ property real startDistance: units.gu(5)
39+ property real endDistance: units.gu(.5)
40+
41+ property real startScale: 1.1
42+ property real endScale: 0.7
43+ property real dragStartScale: startScale + .2
44+
45+ property real startAngle: 15
46+ property real endAngle: 5
47+
48+ property bool isInSideStage: false
49+
50+ onSelectedChanged: {
51+ if (selected) {
52+ priv.snapshot();
53+ }
54+ priv.isSelected = selected;
55+ }
56+
57+ onOtherSelectedChanged: {
58+ if (otherSelected) {
59+ priv.snapshot();
60+ }
61+ priv.otherSelected = otherSelected;
62+ }
63+
64+ Connections {
65+ target: spreadView
66+
67+ onPhaseChanged: {
68+ if (spreadView.phase == 1) {
69+ var phase2Progress = spreadView.positionMarker4 - (root.zIndex * spreadView.tileDistance / spreadView.width);
70+ priv.phase2StartTranslate = priv.easingAnimation(0, 1, 0, -spreadView.width + (root.zIndex * root.endDistance), phase2Progress);
71+ priv.phase2StartScale = priv.easingAnimation(0, 1, root.startScale, root.endScale, phase2Progress);
72+ priv.phase2StartAngle = priv.easingAnimation(0, 1, root.startAngle, root.endAngle, phase2Progress);
73+ priv.phase2StartTopMarginProgress = priv.easingAnimation(0, 1, 0, 1, phase2Progress);
74+ }
75+ }
76+ }
77+
78+ // Required to be an item because we're using states on it.
79+ Item {
80+ id: priv
81+
82+ // true if this is the next tile on the stack that comes in when dragging from the right
83+ property bool nextInStack: spreadView.nextZInStack == zIndex
84+ // true if the next tile in the stack is the nextInStack one. This one will be moved a bit to the left
85+ property bool movedActive: spreadView.nextZInStack == zIndex + 1
86+ property real animatedEndDistance: linearAnimation(0, 2, root.endDistance, 0, root.progress)
87+
88+ property real phase2StartTranslate
89+ property real phase2StartScale
90+ property real phase2StartAngle
91+ property real phase2StartTopMarginProgress
92+
93+ property bool isSelected: false
94+ property bool otherSelected: false
95+ property real selectedProgress
96+ property real selectedXTranslate
97+ property real selectedAngle
98+ property real selectedScale
99+ property real selectedOpacity
100+ property real selectedTopMarginProgress
101+
102+ function snapshot() {
103+ selectedProgress = root.progress;
104+ selectedXTranslate = xTranslate;
105+ selectedAngle = angle;
106+ selectedScale = priv.scale;
107+ selectedOpacity = priv.opacityTransform;
108+ selectedTopMarginProgress = topMarginProgress;
109+ }
110+
111+ // This calculates how much negative progress there can be if unwinding the spread completely
112+ // the progress for each tile starts at 0 when it crosses the right edge, so the later a tile comes in,
113+ // the bigger its negativeProgress can be.
114+ property real negativeProgress: {
115+ if (nextInStack && spreadView.phase < 2) {
116+ return 0;
117+ }
118+ return -root.zIndex * spreadView.tileDistance / spreadView.width;
119+ }
120+
121+ function linearAnimation(startProgress, endProgress, startValue, endValue, progress) {
122+ // progress : progressDiff = value : valueDiff => value = progress * valueDiff / progressDiff
123+ return (progress - startProgress) * (endValue - startValue) / (endProgress - startProgress) + startValue;
124+ }
125+
126+ function easingAnimation(startProgress, endProgress, startValue, endValue, progress) {
127+ helperEasingCurve.progress = progress - startProgress;
128+ helperEasingCurve.period = endProgress - startProgress;
129+ return helperEasingCurve.value * (endValue - startValue) + startValue;
130+ }
131+
132+ property real xTranslate: {
133+ var newTranslate = 0;
134+
135+ if (otherSelected) {
136+ return priv.selectedXTranslate;
137+ }
138+
139+ if (isSelected) {
140+ if (model.stage == ApplicationInfoInterface.MainStage) {
141+ return linearAnimation(selectedProgress, negativeProgress, selectedXTranslate, -spreadView.width, root.progress);
142+ } else {
143+ return linearAnimation(selectedProgress, negativeProgress, selectedXTranslate, -spreadView.sideStageWidth, root.progress);
144+ }
145+ }
146+
147+ // The tile should move a bit to the left if a new one comes on top of it, but not for the Side Stage and not
148+ // when we're only dragging the side stage in on top of a main stage app
149+ var shouldMoveAway = spreadView.nextInStack >= 0 && priv.movedActive && model.stage === ApplicationInfoInterface.MainStage &&
150+ ApplicationManager.get(spreadView.nextInStack).stage === ApplicationInfoInterface.MainStage;
151+
152+ if (active) {
153+ newTranslate -= root.width
154+ // Only do the hide animation for active apps in the mainstage, and not if we only drag the ss in
155+ if (spreadView.phase == 0 && shouldMoveAway) {
156+ newTranslate += linearAnimation(0, spreadView.positionMarker2, 0, -units.gu(4), root.animatedProgress);
157+ }
158+ }
159+ if (nextInStack && spreadView.phase == 0) {
160+ if (model.stage == ApplicationInfoInterface.MainStage) {
161+ if (spreadView.sideStageVisible && root.progress > 0) {
162+ // Move it so it appears from behind the side stage immediately
163+ newTranslate += -spreadView.sideStageWidth;
164+ }
165+ }
166+
167+ if (model.stage == ApplicationInfoInterface.SideStage && !spreadView.sideStageVisible) {
168+ // This is when we only drag the side stage in, without rotation or snapping
169+ newTranslate = linearAnimation(0, spreadView.positionMarker2, 0, -spreadView.sideStageWidth, root.progress);
170+ } else {
171+ newTranslate += linearAnimation(0, spreadView.positionMarker2, 0, -spreadView.sideStageWidth * spreadView.snapPosition, root.animatedProgress);
172+ }
173+ }
174+
175+ if (spreadView.phase == 1) {
176+ if (nextInStack) {
177+ if (model.stage == ApplicationInfoInterface.MainStage) {
178+ var startValue = -spreadView.sideStageWidth * spreadView.snapPosition + (spreadView.sideStageVisible ? -spreadView.sideStageWidth : 0);
179+ newTranslate += linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4, startValue, priv.phase2StartTranslate, root.animatedProgress);
180+ } else {
181+ var endValue = -spreadView.width + spreadView.width * root.zIndex / 6;
182+ if (!spreadView.sideStageVisible) {
183+ newTranslate += linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4, -spreadView.sideStageWidth, priv.phase2StartTranslate, root.progress);
184+ } else {
185+ newTranslate += linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4, -spreadView.sideStageWidth * spreadView.snapPosition, priv.phase2StartTranslate, root.animatedProgress);
186+ }
187+ }
188+ } else if (root.active) {
189+ var startProgress = spreadView.positionMarker2 - (zIndex * spreadView.positionMarker2 / 2);
190+ var endProgress = spreadView.positionMarker4 - (zIndex * spreadView.tileDistance / spreadView.width);
191+ var startTranslate = -root.width + (shouldMoveAway ? -units.gu(4) : 0);
192+ newTranslate = linearAnimation(startProgress, endProgress, startTranslate, priv.phase2StartTranslate, root.progress);
193+ } else {
194+ var startProgress = spreadView.positionMarker2 - (zIndex * spreadView.positionMarker2 / 2);
195+ var endProgress = spreadView.positionMarker4 - (zIndex * spreadView.tileDistance / spreadView.width);
196+ newTranslate = linearAnimation(startProgress, endProgress, 0, priv.phase2StartTranslate, root.progress);
197+ }
198+ }
199+
200+ if (spreadView.phase == 2) {
201+ newTranslate = -easingCurve.value * (spreadView.width - root.zIndex * animatedEndDistance);
202+ }
203+
204+ return newTranslate;
205+ }
206+
207+ property real scale: {
208+ if (otherSelected) {
209+ return selectedScale;
210+ }
211+
212+ if (isSelected) {
213+ return linearAnimation(selectedProgress, negativeProgress, selectedScale, 1, root.progress);
214+ }
215+
216+ if (spreadView.phase == 0) {
217+ if (nextInStack) {
218+ if (model.stage == ApplicationInfoInterface.SideStage && !spreadView.sideStageVisible) {
219+ return 1;
220+ } else {
221+ var targetScale = root.dragStartScale - ((root.dragStartScale - 1) * spreadView.snapPosition);
222+ return linearAnimation(0, spreadView.positionMarker2, root.dragStartScale, targetScale, root.animatedProgress);
223+ }
224+ } else if (active) {
225+ return 1;
226+ } else {
227+ return linearAnimation(0, spreadView.positionMarker2, root.startScale, root.endScale, root.progress);
228+ }
229+ }
230+
231+ if (spreadView.phase == 1) {
232+ if (nextInStack) {
233+ var startScale = 1;
234+ if (model.stage !== ApplicationInfoInterface.SideStage || spreadView.sideStageVisible) {
235+ startScale = root.dragStartScale - ((root.dragStartScale - 1) * spreadView.snapPosition);
236+ }
237+ return linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4, startScale, priv.phase2StartScale, root.animatedProgress);
238+ }
239+ var startProgress = spreadView.positionMarker2 - (zIndex * spreadView.positionMarker2 / 2);
240+ var endProgress = spreadView.positionMarker4 - (zIndex * spreadView.tileDistance / spreadView.width);
241+ return linearAnimation(startProgress, endProgress, 1, priv.phase2StartScale, root.animatedProgress);
242+ }
243+
244+ if (spreadView.phase == 2) {
245+ return root.startScale - easingCurve.value * (root.startScale - root.endScale);
246+ }
247+
248+ return 1;
249+ }
250+
251+ property real angle: {
252+ if (otherSelected) {
253+ return selectedAngle;
254+ }
255+ if (isSelected) {
256+ return linearAnimation(selectedProgress, negativeProgress, selectedAngle, 0, root.progress);
257+ }
258+
259+ // The tile should rotate a bit when another one comes on top, but not when only dragging the side stage in
260+ var shouldMoveAway = spreadView.nextInStack >= 0 && movedActive &&
261+ (ApplicationManager.get(spreadView.nextInStack).stage === ApplicationInfoInterface.MainStage ||
262+ model.stage == ApplicationInfoInterface.SideStage);
263+
264+ if (spreadView.phase == 0) {
265+ if (nextInStack) {
266+ if (model.stage == ApplicationInfoInterface.SideStage && !spreadView.sideStageVisible) {
267+ return 0;
268+ } else {
269+ return linearAnimation(0, spreadView.positionMarker2, root.startAngle, root.startAngle * (1-spreadView.snapPosition), root.animatedProgress);
270+ }
271+ }
272+ if (shouldMoveAway) {
273+ return linearAnimation(0, spreadView.positionMarker2, 0, root.startAngle * (1-spreadView.snapPosition), root.animatedProgress);
274+ }
275+ }
276+ if (spreadView.phase == 1) {
277+ if (nextInStack) {
278+ if (model.stage == ApplicationInfoInterface.SideStage && !spreadView.sideStageVisible) {
279+ return linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4, 0, priv.phase2StartAngle, root.animatedProgress);
280+ } else {
281+ return linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4, root.startAngle * (1-spreadView.snapPosition), priv.phase2StartAngle, root.animatedProgress);
282+ }
283+ }
284+ var startProgress = spreadView.positionMarker2 - (zIndex * spreadView.positionMarker2 / 2);
285+ var endProgress = spreadView.positionMarker4 - (zIndex * spreadView.tileDistance / spreadView.width);
286+ var startAngle = shouldMoveAway ? root.startAngle * (1-spreadView.snapPosition) : 0;
287+ return linearAnimation(startProgress, endProgress, startAngle, priv.phase2StartAngle, root.progress);
288+ }
289+ if (spreadView.phase == 2) {
290+ return root.startAngle - easingCurve.value * (root.startAngle - root.endAngle);
291+ }
292+
293+ return 0;
294+ }
295+
296+ property real opacityTransform: {
297+ if (otherSelected && spreadView.phase == 2) {
298+ return linearAnimation(selectedProgress, negativeProgress, selectedOpacity, 0, root.progress);
299+ }
300+
301+ return 1;
302+ }
303+
304+ property real topMarginProgress: {
305+ if (priv.isSelected) {
306+ return linearAnimation(selectedProgress, negativeProgress, selectedTopMarginProgress, 0, root.progress);
307+ }
308+ switch (spreadView.phase) {
309+ case 0:
310+ return 0;
311+ case 1:
312+ return linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4,
313+ 0, priv.phase2StartTopMarginProgress, root.progress);
314+ }
315+ return 1;
316+ }
317+
318+ states: [
319+ State {
320+ name: "sideStageDragging"; when: spreadView.sideStageDragging && root.isInSideStage
321+ PropertyChanges { target: priv; xTranslate: -spreadView.sideStageWidth + spreadView.sideStageWidth * spreadView.sideStageDragProgress }
322+ }
323+ ]
324+ }
325+
326+ transform: [
327+ Rotation {
328+ origin { x: 0; y: spreadView.height / 2 }
329+ axis { x: 0; y: 1; z: 0 }
330+ angle: priv.angle
331+ },
332+ Scale {
333+ origin { x: 0; y: spreadView.height / 2 }
334+ xScale: priv.scale
335+ yScale: xScale
336+ },
337+ Scale {
338+ origin { x: 0; y: (spreadView.height * priv.scale) + maximizedAppTopMargin * 3 }
339+ xScale: 1
340+ yScale: isFullscreen ? 1 - priv.topMarginProgress * maximizedAppTopMargin / spreadView.height : 1
341+ },
342+ Translate {
343+ x: priv.xTranslate
344+ }
345+ ]
346+ opacity: priv.opacityTransform
347+
348+ UbuntuNumberAnimation {
349+ id: fadeBackInAnimation
350+ target: root
351+ property: "opacity"
352+ duration: UbuntuAnimation.SlowDuration
353+ from: 0
354+ to: 1
355+ }
356+
357+ EasingCurve {
358+ id: easingCurve
359+ type: EasingCurve.OutSine
360+ period: 1
361+ progress: root.progress
362+ }
363+
364+ EasingCurve {
365+ id: helperEasingCurve
366+ type: easingCurve.type
367+ period: easingCurve.period
368+ }
369+}
src/CMakeLists.txt−3
@@ -1,8 +1,5 @@
1−pkg_check_modules(UNITY-MIR REQUIRED unity-mir)
2−
3include_directories(
1include_directories(
4 ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
2 ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
5− ${UNITY-MIR_INCLUDE_DIRS}
6)
3)
7
4
8file(GLOB_RECURSE QML_FILES
5file(GLOB_RECURSE QML_FILES
src/main.cpp+14−89
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2012 Canonical, Ltd.
2+ * Copyright (C) 2012-2014 Canonical, Ltd.
3 *
3 *
4 * Authors:
4 * Authors:
5 * Gerry Boland <gerry.boland@canonical.com>
5 * Gerry Boland <gerry.boland@canonical.com>
@@ -23,12 +23,9 @@
23#include <QtGui/QGuiApplication>
23#include <QtGui/QGuiApplication>
24#include <QtQml/QQmlEngine>
24#include <QtQml/QQmlEngine>
25#include <QtQml/QQmlContext>
25#include <QtQml/QQmlContext>
26−#include <qpa/qplatformnativeinterface.h>
27#include <QLibrary>
26#include <QLibrary>
28#include <QDebug>
27#include <QDebug>
29#include <libintl.h>
28#include <libintl.h>
30−#include <dlfcn.h>
31−#include <csignal>
32
29
33// local
30// local
34#include <paths.h>
31#include <paths.h>
@@ -36,11 +33,13 @@
36#include "ApplicationArguments.h"
33#include "ApplicationArguments.h"
37#include "CachingNetworkManagerFactory.h"
34#include "CachingNetworkManagerFactory.h"
38
35
39−#include <unity-mir/qmirserver.h>
40−
41−int startShell(int argc, const char** argv, void* server)
36+int main(int argc, const char *argv[])
42{
37{
38+ bool isMirServer = false;
43− const bool isUbuntuMirServer = qgetenv("QT_QPA_PLATFORM") == "ubuntumirserver";
39+ if (qgetenv("QT_QPA_PLATFORM") == "ubuntumirclient") {
40+ setenv("QT_QPA_PLATFORM", "mirserver", 1 /* overwrite */);
41+ isMirServer = true;
42+ }
44
43
45 QGuiApplication::setApplicationName("unity8");
44 QGuiApplication::setApplicationName("unity8");
46 QGuiApplication *application;
45 QGuiApplication *application;
@@ -70,21 +69,7 @@ int startShell(int argc, const char** argv, void* server)
70Load the testability driver");
69Load the testability driver");
71 parser.addOption(testabilityOption);
70 parser.addOption(testabilityOption);
72
71
73− if (isUbuntuMirServer) {
74− QLibrary unityMir("unity-mir", 1);
75− unityMir.load();
76−
77− typedef QGuiApplication* (*createServerApplication_t)(int&, const char **, void*);
78− createServerApplication_t createQMirServerApplication = (createServerApplication_t) unityMir.resolve("createQMirServerApplication");
79− if (!createQMirServerApplication) {
80− qDebug() << "unable to resolve symbol: createQMirServerApplication";
81− return 4;
82− }
83−
84− application = createQMirServerApplication(argc, argv, server);
85− } else {
86− application = new QGuiApplication(argc, (char**)argv);
72+ application = new QGuiApplication(argc, (char**)argv);
87− }
88
73
89 // Treat args with single dashes the same as arguments with two dashes
74 // Treat args with single dashes the same as arguments with two dashes
90 // Ex: -fullscreen == --fullscreen
75 // Ex: -fullscreen == --fullscreen
@@ -100,8 +85,8 @@ Load the testability driver");
100 if (parser.isSet(windowGeometryOption) &&
85 if (parser.isSet(windowGeometryOption) &&
101 parser.value(windowGeometryOption).split('x').size() == 2)
86 parser.value(windowGeometryOption).split('x').size() == 2)
102 {
87 {
103− QStringList geom = parser.value(windowGeometryOption).split('x');
88+ QStringList geom = parser.value(windowGeometryOption).split('x');
104− qmlArgs.setSize(geom.at(0).toInt(), geom.at(1).toInt());
89+ qmlArgs.setSize(geom.at(0).toInt(), geom.at(1).toInt());
105 }
90 }
106
91
107 // The testability driver is only loaded by QApplication but not by QGuiApplication.
92 // The testability driver is only loaded by QApplication but not by QGuiApplication.
@@ -125,7 +110,8 @@ Load the testability driver");
125
110
126 QQuickView* view = new QQuickView();
111 QQuickView* view = new QQuickView();
127 view->setResizeMode(QQuickView::SizeRootObjectToView);
112 view->setResizeMode(QQuickView::SizeRootObjectToView);
113+ view->setColor("black");
128− view->setTitle("Qml Phone Shell");
114+ view->setTitle("Unity8 Shell");
129 view->engine()->setBaseUrl(QUrl::fromLocalFile(::qmlDirectory()));
115 view->engine()->setBaseUrl(QUrl::fromLocalFile(::qmlDirectory()));
130 view->rootContext()->setContextProperty("applicationArguments", &qmlArgs);
116 view->rootContext()->setContextProperty("applicationArguments", &qmlArgs);
131 view->rootContext()->setContextProperty("indicatorProfile", indicatorProfile);
117 view->rootContext()->setContextProperty("indicatorProfile", indicatorProfile);
@@ -141,18 +127,9 @@ Load the testability driver");
141 application->installNativeEventFilter(mouseTouchAdaptor);
127 application->installNativeEventFilter(mouseTouchAdaptor);
142 }
128 }
143
129
144− QPlatformNativeInterface* nativeInterface = QGuiApplication::platformNativeInterface();
145− /* Shell is declared as a system session so that it always receives all
146− input events.
147− FIXME: use the enum value corresponding to SYSTEM_SESSION_TYPE (= 1)
148− when it becomes available.
149− */
150− nativeInterface->setProperty("ubuntuSessionType", 1);
151− view->setProperty("role", 2); // INDICATOR_ACTOR_ROLE
152−
153 QUrl source(::qmlDirectory()+"Shell.qml");
130 QUrl source(::qmlDirectory()+"Shell.qml");
154 prependImportPaths(view->engine(), ::overrideImportPaths());
131 prependImportPaths(view->engine(), ::overrideImportPaths());
155− if (!isUbuntuMirServer) {
132+ if (!isMirServer) {
156 prependImportPaths(view->engine(), ::nonMirImportPaths());
133 prependImportPaths(view->engine(), ::nonMirImportPaths());
157 }
134 }
158 appendImportPaths(view->engine(), ::fallbackImportPaths());
135 appendImportPaths(view->engine(), ::fallbackImportPaths());
@@ -161,10 +138,9 @@ Load the testability driver");
161 view->engine()->setNetworkAccessManagerFactory(managerFactory);
138 view->engine()->setNetworkAccessManagerFactory(managerFactory);
162
139
163 view->setSource(source);
140 view->setSource(source);
164− view->setColor("transparent");
165 QObject::connect(view->engine(), SIGNAL(quit()), application, SLOT(quit()));
141 QObject::connect(view->engine(), SIGNAL(quit()), application, SLOT(quit()));
166
142
167− if (qgetenv("QT_QPA_PLATFORM") == "ubuntu" || isUbuntuMirServer || parser.isSet(fullscreenOption)) {
143+ if (isMirServer || parser.isSet(fullscreenOption)) {
168 view->showFullScreen();
144 view->showFullScreen();
169 } else {
145 } else {
170 view->show();
146 view->show();
@@ -178,54 +154,3 @@ Load the testability driver");
178
154
179 return result;
155 return result;
180}
156}
181−
182−int main(int argc, const char *argv[])
183−{
184− /* Workaround Qt platform integration plugin not advertising itself
185− as having the following capabilities:
186− - QPlatformIntegration::ThreadedOpenGL
187− - QPlatformIntegration::BufferQueueingOpenGL
188− */
189− setenv("QML_FORCE_THREADED_RENDERER", "1", 1);
190− setenv("QML_FIXED_ANIMATION_STEP", "1", 1);
191−
192− // For ubuntumirserver/ubuntumirclient
193− if (qgetenv("QT_QPA_PLATFORM").startsWith("ubuntumir")) {
194− setenv("QT_QPA_PLATFORM", "ubuntumirserver", 1);
195−
196− // If we use unity-mir directly, we automatically link to the Mir-server
197− // platform-api bindings, which result in unexpected behaviour when
198− // running the non-Mir scenario.
199− QLibrary unityMir("unity-mir", 1);
200− unityMir.load();
201− if (!unityMir.isLoaded()) {
202− qDebug() << "Library unity-mir not found/loaded";
203− return 1;
204− }
205−
206− typedef QMirServer* (*createServer_t)(int, const char **);
207− createServer_t createQMirServer = (createServer_t) unityMir.resolve("createQMirServer");
208− if (!createQMirServer) {
209− qDebug() << "unable to resolve symbol: createQMirServer";
210− return 2;
211− }
212−
213− QMirServer* mirServer = createQMirServer(argc, argv);
214−
215− typedef int (*runWithClient_t)(QMirServer*, std::function<int(int, const char**, void*)>);
216− runWithClient_t runWithClient = (runWithClient_t) unityMir.resolve("runQMirServerWithClient");
217− if (!runWithClient) {
218− qDebug() << "unable to resolve symbol: runWithClient";
219− return 3;
220− }
221−
222− return runWithClient(mirServer, startShell);
223− } else {
224− if (!qgetenv("UNITY_MIR_EMITS_SIGSTOP").isEmpty()) {
225− // Emit SIGSTOP as expected by upstart, under Mir it's unity-mir that will raise it.
226− // see http://upstart.ubuntu.com/cookbook/#expect-stop
227− raise(SIGSTOP);
228− }
229− return startShell(argc, argv, nullptr);
230− }
231−}
tests/autopilot/unity8/shell/emulators/dash.py+2−2
@@ -199,12 +199,12 @@ class DashApps(GenericScopeView):
199
199
200 """
200 """
201 category_element = self._get_category_element(category)
201 category_element = self._get_category_element(category)
202+ see_all = category_element.select_single(objectName='seeAll')
202 application_cards = category_element.select_many('AbstractButton')
203 application_cards = category_element.select_many('AbstractButton')
203
204
204 application_cards = sorted(
205 application_cards = sorted(
205 (card for card in application_cards
206 (card for card in application_cards
206− if card.globalRect.y
207+ if card.globalRect.y < see_all.globalRect.y),
207− < category_element.globalRect.y + category_element.height),
208 key=lambda card: (card.globalRect.y, card.globalRect.x))
208 key=lambda card: (card.globalRect.y, card.globalRect.x))
209
209
210 result = []
210 result = []
tests/mocks/Unity/Application/Application.qmltypes−2
@@ -102,8 +102,6 @@ Module {
102 "ForceMainStage": 1
102 "ForceMainStage": 1
103 }
103 }
104 }
104 }
105− Property { name: "keyboardHeight"; type: "int"; isReadonly: true }
106− Property { name: "keyboardVisible"; type: "bool"; isReadonly: true }
107 Property { name: "sideStageWidth"; type: "int"; isReadonly: true }
105 Property { name: "sideStageWidth"; type: "int"; isReadonly: true }
108 Property { name: "stageHint"; type: "StageHint"; isReadonly: true }
106 Property { name: "stageHint"; type: "StageHint"; isReadonly: true }
109 Property { name: "formFactorHint"; type: "FormFactorHint"; isReadonly: true }
107 Property { name: "formFactorHint"; type: "FormFactorHint"; isReadonly: true }
tests/mocks/Unity/Application/ApplicationDBusAdaptor.cppnew file+75
@@ -0,0 +1,75 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#include "ApplicationInfo.h"
18+#include "ApplicationDBusAdaptor.h"
19+#include "ApplicationManager.h"
20+#include "SurfaceManager.h"
21+#include "MirSurfaceItem.h"
22+
23+quint32 nextId = 0;
24+
25+ApplicationDBusAdaptor::ApplicationDBusAdaptor(ApplicationManager* applicationManager)
26+ : QDBusAbstractAdaptor(applicationManager)
27+ , m_applicationManager(applicationManager)
28+{
29+}
30+
31+MirSurfaceItem* topSurface(MirSurfaceItem* surface)
32+{
33+ if (!surface)
34+ return nullptr;
35+
36+ MirSurfaceItem* child = NULL;
37+ Q_FOREACH (MirSurfaceItem *childSurface, surface->childSurfaceList()) {
38+ child = topSurface(childSurface);
39+ if (child) {
40+ break;
41+ }
42+ }
43+ return child ? child : surface;
44+}
45+
46+quint32 ApplicationDBusAdaptor::addChildSurface(const QString &appId, const QString &surfaceImage)
47+{
48+ qDebug() << "ApplicationDBusAdaptor::addChildSurface - " << appId;
49+
50+ ApplicationInfo* application = m_applicationManager->findApplication(appId);
51+ if (!application) {
52+ qDebug() << "ApplicationDBusAdaptor::addChildSurface - No application found for " << appId;
53+ return 0;
54+ }
55+ quint32 surfaceId = ++nextId;
56+ MirSurfaceItem* surface = new MirSurfaceItem(QString("ChildSurface%1").arg(surfaceId),
57+ MirSurfaceItem::Normal,
58+ MirSurfaceItem::Maximized,
59+ QUrl(surfaceImage));
60+ m_childItems[surfaceId] = surface;
61+ surface->setParentSurface(topSurface(application->surface()));
62+ return surfaceId;
63+}
64+
65+void ApplicationDBusAdaptor::removeChildSurface(int surfaceId)
66+{
67+ qDebug() << "ApplicationDBusAdaptor::removeChildSurface - " << surfaceId;
68+
69+ if (!m_childItems.contains(surfaceId)) {
70+ qDebug() << "ApplicationDBusAdaptor::removeChildSurface - No added surface for " << surfaceId;
71+ return;
72+ }
73+ MirSurfaceItem* surface = m_childItems.take(surfaceId);
74+ Q_EMIT surface->removed();
75+}
tests/mocks/Unity/Application/ApplicationDBusAdaptor.hnew file+43
@@ -0,0 +1,43 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#ifndef APPLICATIONDBUSADAPTOR_H
18+#define APPLICATIONDBUSADAPTOR_H
19+
20+#include <QtDBus/QtDBus>
21+
22+class ApplicationManager;
23+class SurfaceManager;
24+class MirSurfaceItem;
25+
26+class ApplicationDBusAdaptor : public QDBusAbstractAdaptor
27+{
28+ Q_OBJECT
29+ Q_CLASSINFO("D-Bus Interface", "com.canonical.Unity8.Mocks.Application")
30+public:
31+ ApplicationDBusAdaptor(ApplicationManager* applicationManager);
32+
33+public Q_SLOTS:
34+ quint32 addChildSurface(const QString& appId, const QString& surfaceImage);
35+ void removeChildSurface(int surfaceId);
36+
37+private:
38+ ApplicationManager* m_applicationManager;
39+
40+ QHash<quint32, MirSurfaceItem*> m_childItems;
41+};
42+
43+#endif // APPLICATIONDBUSADAPTOR_H
tests/mocks/Unity/Application/ApplicationInfo.cpp+69−21
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013-2014 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
@@ -15,6 +15,8 @@
15 */
15 */
16
16
17#include "ApplicationInfo.h"
17#include "ApplicationInfo.h"
18+#include "MirSurfaceItem.h"
19+#include "SurfaceManager.h"
18
20
19#include <QGuiApplication>
21#include <QGuiApplication>
20#include <QQuickItem>
22#include <QQuickItem>
@@ -24,29 +26,39 @@
24
26
25ApplicationInfo::ApplicationInfo(const QString &appId, QObject *parent)
27ApplicationInfo::ApplicationInfo(const QString &appId, QObject *parent)
26 : ApplicationInfoInterface(appId, parent)
28 : ApplicationInfoInterface(appId, parent)
27− ,m_appId(appId)
29+ , m_appId(appId)
28− ,m_stage(MainStage)
30+ , m_stage(MainStage)
29− ,m_state(Starting)
31+ , m_state(Starting)
30− ,m_focused(false)
32+ , m_focused(false)
31− ,m_fullscreen(false)
33+ , m_fullscreen(false)
32− ,m_windowItem(0)
34+ , m_windowItem(0)
33− ,m_windowComponent(0)
35+ , m_windowComponent(0)
34− ,m_parentItem(0)
36+ , m_parentItem(0)
37+ , m_surface(0)
35{
38{
36− QTimer::singleShot(300, this, SLOT(setRunning()));
39+ connect(this, &ApplicationInfo::stateChanged, this, &ApplicationInfo::onStateChanged);
37}
40}
38
41
39ApplicationInfo::ApplicationInfo(QObject *parent)
42ApplicationInfo::ApplicationInfo(QObject *parent)
40 : ApplicationInfoInterface(QString(), parent)
43 : ApplicationInfoInterface(QString(), parent)
41− ,m_stage(MainStage)
44+ , m_stage(MainStage)
42− ,m_state(Starting)
45+ , m_state(Starting)
43− ,m_focused(false)
46+ , m_focused(false)
44− ,m_fullscreen(false)
47+ , m_fullscreen(false)
45− ,m_windowItem(0)
48+ , m_windowItem(0)
46− ,m_windowComponent(0)
49+ , m_windowComponent(0)
47− ,m_parentItem(0)
50+ , m_parentItem(0)
51+ , m_surface(0)
48{
52{
49− QTimer::singleShot(300, this, SLOT(setRunning()));
53+ connect(this, &ApplicationInfo::stateChanged, this, &ApplicationInfo::onStateChanged);
54+}
55+
56+ApplicationInfo::~ApplicationInfo()
57+{
58+ if (m_surface) {
59+ Q_EMIT SurfaceManager::singleton()->surfaceDestroyed(m_surface);
60+ m_surface->deleteLater();
61+ }
50}
62}
51
63
52void ApplicationInfo::onWindowComponentStatusChanged(QQmlComponent::Status status)
64void ApplicationInfo::onWindowComponentStatusChanged(QQmlComponent::Status status)
@@ -55,10 +67,46 @@ void ApplicationInfo::onWindowComponentStatusChanged(QQmlComponent::Status statu
55 doCreateWindowItem();
67 doCreateWindowItem();
56}
68}
57
69
58−void ApplicationInfo::setRunning()
70+void ApplicationInfo::onStateChanged(State state)
71+{
72+ if (state == ApplicationInfo::Running) {
73+ QTimer::singleShot(1000, this, SLOT(createSurface()));
74+ } else if (state == ApplicationInfo::Stopped) {
75+ setSurface(nullptr);
76+ }
77+}
78+
79+void ApplicationInfo::createSurface()
59{
80{
60− m_state = Running;
81+ if (m_surface || state() == ApplicationInfo::Stopped) return;
61− Q_EMIT stateChanged();
82+
83+ setSurface(new MirSurfaceItem(name(),
84+ MirSurfaceItem::Normal,
85+ fullscreen() ? MirSurfaceItem::Fullscreen : MirSurfaceItem::Maximized,
86+ screenshot()));
87+}
88+
89+void ApplicationInfo::setSurface(MirSurfaceItem* surface)
90+{
91+ if (m_surface == surface)
92+ return;
93+
94+ if (m_surface) {
95+ m_surface->setApplication(nullptr);
96+ m_surface->setParent(nullptr);
97+ SurfaceManager::singleton()->unregisterSurface(m_surface);
98+ }
99+
100+ m_surface = surface;
101+
102+ if (m_surface) {
103+ m_surface->setApplication(this);
104+ m_surface->setParent(this);
105+ SurfaceManager::singleton()->registerSurface(m_surface);
106+ }
107+
108+ Q_EMIT surfaceChanged(m_surface);
109+ SurfaceManager::singleton()->registerSurface(m_surface);
62}
110}
63
111
64void ApplicationInfo::createWindowComponent()
112void ApplicationInfo::createWindowComponent()
tests/mocks/Unity/Application/ApplicationInfo.h+21−8
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013-2014 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
@@ -21,6 +21,7 @@
21#include <QQmlComponent>
21#include <QQmlComponent>
22
22
23class QQuickItem;
23class QQuickItem;
24+class MirSurfaceItem;
24
25
25// unity-api
26// unity-api
26#include <unity/shell/application/ApplicationInfoInterface.h>
27#include <unity/shell/application/ApplicationInfoInterface.h>
@@ -36,6 +37,7 @@ class ApplicationInfo : public ApplicationInfoInterface {
36
37
37 Q_PROPERTY(bool fullscreen READ fullscreen WRITE setFullscreen NOTIFY fullscreenChanged)
38 Q_PROPERTY(bool fullscreen READ fullscreen WRITE setFullscreen NOTIFY fullscreenChanged)
38 Q_PROPERTY(Stage stage READ stage WRITE setStage NOTIFY stageChanged)
39 Q_PROPERTY(Stage stage READ stage WRITE setStage NOTIFY stageChanged)
40+ Q_PROPERTY(MirSurfaceItem* surface READ surface NOTIFY surfaceChanged)
39
41
40 // Only exists in this fake implementation
42 // Only exists in this fake implementation
41
43
@@ -45,9 +47,10 @@ class ApplicationInfo : public ApplicationInfoInterface {
45 // QML component used to represent the application window
47 // QML component used to represent the application window
46 Q_PROPERTY(QString windowQml READ windowQml WRITE setWindowQml NOTIFY windowQmlChanged)
48 Q_PROPERTY(QString windowQml READ windowQml WRITE setWindowQml NOTIFY windowQmlChanged)
47
49
48− public:
50+public:
49 ApplicationInfo(QObject *parent = NULL);
51 ApplicationInfo(QObject *parent = NULL);
50 ApplicationInfo(const QString &appId, QObject *parent = NULL);
52 ApplicationInfo(const QString &appId, QObject *parent = NULL);
53+ ~ApplicationInfo();
51
54
52 #define IMPLEMENT_PROPERTY(name, Name, type) \
55 #define IMPLEMENT_PROPERTY(name, Name, type) \
53 public: \
56 public: \
@@ -56,11 +59,11 @@ class ApplicationInfo : public ApplicationInfoInterface {
56 { \
59 { \
57 if (m_##name != value) { \
60 if (m_##name != value) { \
58 m_##name = value; \
61 m_##name = value; \
59− Q_EMIT name##Changed(); \
62+ Q_EMIT name##Changed(value); \
60 } \
63 } \
61 } \
64 } \
62 Q_SIGNALS: \
65 Q_SIGNALS: \
63− void name##Changed(); \
66+ void name##Changed(const type&); \
64 private: \
67 private: \
65 type m_##name;
68 type m_##name;
66
69
@@ -78,21 +81,31 @@ class ApplicationInfo : public ApplicationInfoInterface {
78
81
79 #undef IMPLEMENT_PROPERTY
82 #undef IMPLEMENT_PROPERTY
80
83
84+public:
85+ void setSurface(MirSurfaceItem* surface);
86+ MirSurfaceItem* surface() const { return m_surface; }
87+
88+Q_SIGNALS:
89+ void surfaceChanged(MirSurfaceItem*);
90+
81− public:
91+public:
82 void showWindow(QQuickItem *parent);
92 void showWindow(QQuickItem *parent);
83 void hideWindow();
93 void hideWindow();
84
94
85− private Q_SLOTS:
95+private Q_SLOTS:
86 void onWindowComponentStatusChanged(QQmlComponent::Status status);
96 void onWindowComponentStatusChanged(QQmlComponent::Status status);
87− void setRunning();
97+ void onStateChanged(State state);
98+
99+ void createSurface();
88
100
89− private:
101+private:
90 void createWindowItem();
102 void createWindowItem();
91 void doCreateWindowItem();
103 void doCreateWindowItem();
92 void createWindowComponent();
104 void createWindowComponent();
93 QQuickItem *m_windowItem;
105 QQuickItem *m_windowItem;
94 QQmlComponent *m_windowComponent;
106 QQmlComponent *m_windowComponent;
95 QQuickItem *m_parentItem;
107 QQuickItem *m_parentItem;
108+ MirSurfaceItem* m_surface;
96};
109};
97
110
98Q_DECLARE_METATYPE(ApplicationInfo*)
111Q_DECLARE_METATYPE(ApplicationInfo*)
tests/mocks/Unity/Application/ApplicationManager.cpp+60−31
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013-2014 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
@@ -15,7 +15,9 @@
15 */
15 */
16
16
17#include "ApplicationManager.h"
17#include "ApplicationManager.h"
18+#include "ApplicationDBusAdaptor.h"
18#include "ApplicationInfo.h"
19#include "ApplicationInfo.h"
20+#include "MirSurfaceItem.h"
19
21
20#include <paths.h>
22#include <paths.h>
21
23
@@ -26,6 +28,22 @@
26#include <QQmlComponent>
28#include <QQmlComponent>
27#include <QTimer>
29#include <QTimer>
28#include <QDateTime>
30#include <QDateTime>
31+#include <QtDBus/QtDBus>
32+
33+ApplicationManager *ApplicationManager::the_application_manager = nullptr;
34+
35+ApplicationManager *ApplicationManager::singleton()
36+{
37+ if (!the_application_manager) {
38+ the_application_manager = new ApplicationManager();
39+ new ApplicationDBusAdaptor(the_application_manager);
40+
41+ QDBusConnection connection = QDBusConnection::sessionBus();
42+ connection.registerService("com.canonical.Unity8");
43+ connection.registerObject("/com/canonical/Unity8/Mocks", the_application_manager);
44+ }
45+ return the_application_manager;
46+}
29
47
30ApplicationManager::ApplicationManager(QObject *parent)
48ApplicationManager::ApplicationManager(QObject *parent)
31 : ApplicationManagerInterface(parent)
49 : ApplicationManagerInterface(parent)
@@ -36,6 +54,9 @@ ApplicationManager::ApplicationManager(QObject *parent)
36 , m_sideStage(0)
54 , m_sideStage(0)
37 , m_rightMargin(0)
55 , m_rightMargin(0)
38{
56{
57+ m_roleNames.insert(RoleSurface, "surface");
58+ m_roleNames.insert(RoleFullscreen, "fullscreen");
59+
39 buildListOfAvailableApplications();
60 buildListOfAvailableApplications();
40}
61}
41
62
@@ -69,6 +90,10 @@ QVariant ApplicationManager::data(const QModelIndex& index, int role) const {
69 return app->focused();
90 return app->focused();
70 case RoleScreenshot:
91 case RoleScreenshot:
71 return app->screenshot();
92 return app->screenshot();
93+ case RoleSurface:
94+ return QVariant::fromValue(app->surface());
95+ case RoleFullscreen:
96+ return app->fullscreen();
72 default:
97 default:
73 return QVariant();
98 return QVariant();
74 }
99 }
@@ -89,6 +114,17 @@ ApplicationInfo *ApplicationManager::findApplication(const QString &appId) const
89 return nullptr;
114 return nullptr;
90}
115}
91
116
117+QModelIndex ApplicationManager::findIndex(ApplicationInfo* application)
118+{
119+ for (int i = 0; i < m_runningApplications.size(); ++i) {
120+ if (m_runningApplications.at(i) == application) {
121+ return index(i);
122+ }
123+ }
124+
125+ return QModelIndex();
126+}
127+
92void ApplicationManager::add(ApplicationInfo *application) {
128void ApplicationManager::add(ApplicationInfo *application) {
93 if (!application) {
129 if (!application) {
94 return;
130 return;
@@ -99,7 +135,14 @@ void ApplicationManager::add(ApplicationInfo *application) {
99 endInsertRows();
135 endInsertRows();
100 Q_EMIT applicationAdded(application->appId());
136 Q_EMIT applicationAdded(application->appId());
101 Q_EMIT countChanged();
137 Q_EMIT countChanged();
138+ if (count() == 1) Q_EMIT emptyChanged(isEmpty()); // was empty but not anymore
102 Q_EMIT focusRequested(application->appId());
139 Q_EMIT focusRequested(application->appId());
140+
141+ connect(application, &ApplicationInfo::surfaceChanged, this, [application, this]() {
142+ QModelIndex appIndex = findIndex(application);
143+ if (!appIndex.isValid()) return;
144+ Q_EMIT dataChanged(appIndex, appIndex, QVector<int>() << ApplicationManager::RoleSurface);
145+ });
103}
146}
104
147
105void ApplicationManager::remove(ApplicationInfo *application) {
148void ApplicationManager::remove(ApplicationInfo *application) {
@@ -110,7 +153,9 @@ void ApplicationManager::remove(ApplicationInfo *application) {
110 endRemoveRows();
153 endRemoveRows();
111 Q_EMIT applicationRemoved(application->appId());
154 Q_EMIT applicationRemoved(application->appId());
112 Q_EMIT countChanged();
155 Q_EMIT countChanged();
156+ if (isEmpty()) Q_EMIT emptyChanged(isEmpty());
113 }
157 }
158+ disconnect(application, &ApplicationInfo::surfaceChanged, this, 0);
114}
159}
115
160
116void ApplicationManager::move(int from, int to) {
161void ApplicationManager::move(int from, int to) {
@@ -127,16 +172,6 @@ void ApplicationManager::move(int from, int to) {
127 }
172 }
128}
173}
129
174
130−int ApplicationManager::keyboardHeight() const
131−{
132− return 0;
133−}
134−
135−bool ApplicationManager::keyboardVisible() const
136−{
137− return false;
138−}
139−
140int ApplicationManager::sideStageWidth() const
175int ApplicationManager::sideStageWidth() const
141{
176{
142 return 0;
177 return 0;
@@ -180,8 +215,7 @@ ApplicationInfo* ApplicationManager::startApplication(const QString &appId,
180 application->setStage(ApplicationInfo::MainStage);
215 application->setStage(ApplicationInfo::MainStage);
181 }
216 }
182 add(application);
217 add(application);
183−
218+ application->setState(ApplicationInfo::Running);
184− QMetaObject::invokeMethod(this, "focusApplication", Qt::QueuedConnection, Q_ARG(QString, appId));
185
219
186 return application;
220 return application;
187}
221}
@@ -195,6 +229,7 @@ bool ApplicationManager::stopApplication(const QString &appId)
195 if (application->appId() == focusedApplicationId()) {
229 if (application->appId() == focusedApplicationId()) {
196 unfocusCurrentApplication();
230 unfocusCurrentApplication();
197 }
231 }
232+ application->setState(ApplicationInfo::Stopped);
198 remove(application);
233 remove(application);
199 return true;
234 return true;
200}
235}
@@ -215,7 +250,6 @@ bool ApplicationManager::updateScreenshot(const QString &appId)
215 return false;
250 return false;
216 }
251 }
217
252
218− application->setScreenshot(QString("image://application/%1/%2").arg(appId).arg(QDateTime::currentMSecsSinceEpoch()));
219 QModelIndex appIndex = index(idx);
253 QModelIndex appIndex = index(idx);
220 Q_EMIT dataChanged(appIndex, appIndex, QVector<int>() << RoleScreenshot);
254 Q_EMIT dataChanged(appIndex, appIndex, QVector<int>() << RoleScreenshot);
221 return true;
255 return true;
@@ -261,6 +295,7 @@ bool ApplicationManager::focusApplication(const QString &appId)
261 if (app->focused() && app->stage() == ApplicationInfo::MainStage) {
295 if (app->focused() && app->stage() == ApplicationInfo::MainStage) {
262 app->setFocused(false);
296 app->setFocused(false);
263 app->hideWindow();
297 app->hideWindow();
298+ app->setState(ApplicationInfo::Suspended);
264 }
299 }
265 }
300 }
266
301
@@ -268,6 +303,7 @@ bool ApplicationManager::focusApplication(const QString &appId)
268 application->setFocused(true);
303 application->setFocused(true);
269 if (!m_mainStage)
304 if (!m_mainStage)
270 createMainStage();
305 createMainStage();
306+ application->setState(ApplicationInfo::Running);
271 application->showWindow(m_mainStage);
307 application->showWindow(m_mainStage);
272 m_mainStage->setZ(-1000);
308 m_mainStage->setZ(-1000);
273 if (m_sideStage)
309 if (m_sideStage)
@@ -278,6 +314,7 @@ bool ApplicationManager::focusApplication(const QString &appId)
278 if (app->focused() && app->stage() == ApplicationInfo::SideStage) {
314 if (app->focused() && app->stage() == ApplicationInfo::SideStage) {
279 app->setFocused(false);
315 app->setFocused(false);
280 app->hideWindow();
316 app->hideWindow();
317+ app->setState(ApplicationInfo::Suspended);
281 }
318 }
282 }
319 }
283
320
@@ -285,6 +322,7 @@ bool ApplicationManager::focusApplication(const QString &appId)
285 application->setFocused(true);
322 application->setFocused(true);
286 if (!m_sideStage)
323 if (!m_sideStage)
287 createSideStage();
324 createSideStage();
325+ application->setState(ApplicationInfo::Running);
288 application->showWindow(m_sideStage);
326 application->showWindow(m_sideStage);
289 m_sideStage->setZ(-1000);
327 m_sideStage->setZ(-1000);
290 if (m_mainStage)
328 if (m_mainStage)
@@ -354,6 +392,9 @@ void ApplicationManager::generateQmlStrings(ApplicationInfo *application)
354 "}").arg(qmlDirectory())
392 "}").arg(qmlDirectory())
355 .arg(application->icon().toString());
393 .arg(application->icon().toString());
356 application->setImageQml(imageQml);
394 application->setImageQml(imageQml);
395+
396+ application->setScreenshot(QString("file://%1/Dash/graphics/phone/screenshots/%2@12.png").arg(qmlDirectory())
397+ .arg(application->icon().toString()));
357}
398}
358
399
359void ApplicationManager::buildListOfAvailableApplications()
400void ApplicationManager::buildListOfAvailableApplications()
@@ -365,7 +406,6 @@ void ApplicationManager::buildListOfAvailableApplications()
365 application->setName("Dialer");
406 application->setName("Dialer");
366 application->setIcon(QUrl("dialer"));
407 application->setIcon(QUrl("dialer"));
367 application->setStage(ApplicationInfo::SideStage);
408 application->setStage(ApplicationInfo::SideStage);
368− application->setScreenshot(QString("image://application/%1/%2").arg(application->appId()).arg(QDateTime::currentMSecsSinceEpoch()));
369 generateQmlStrings(application);
409 generateQmlStrings(application);
370 m_availableApplications.append(application);
410 m_availableApplications.append(application);
371
411
@@ -374,7 +414,6 @@ void ApplicationManager::buildListOfAvailableApplications()
374 application->setName("Camera");
414 application->setName("Camera");
375 application->setIcon(QUrl("camera"));
415 application->setIcon(QUrl("camera"));
376 application->setFullscreen(true);
416 application->setFullscreen(true);
377− application->setScreenshot(QString("image://application/%1/%2").arg(application->appId()).arg(QDateTime::currentMSecsSinceEpoch()));
378 generateQmlStrings(application);
417 generateQmlStrings(application);
379 m_availableApplications.append(application);
418 m_availableApplications.append(application);
380
419
@@ -382,7 +421,6 @@ void ApplicationManager::buildListOfAvailableApplications()
382 application->setAppId("gallery-app");
421 application->setAppId("gallery-app");
383 application->setName("Gallery");
422 application->setName("Gallery");
384 application->setIcon(QUrl("gallery"));
423 application->setIcon(QUrl("gallery"));
385− application->setScreenshot(QString("image://application/%1/%2").arg(application->appId()).arg(QDateTime::currentMSecsSinceEpoch()));
386 generateQmlStrings(application);
424 generateQmlStrings(application);
387 m_availableApplications.append(application);
425 m_availableApplications.append(application);
388
426
@@ -391,7 +429,6 @@ void ApplicationManager::buildListOfAvailableApplications()
391 application->setName("Facebook");
429 application->setName("Facebook");
392 application->setIcon(QUrl("facebook"));
430 application->setIcon(QUrl("facebook"));
393 application->setStage(ApplicationInfo::SideStage);
431 application->setStage(ApplicationInfo::SideStage);
394− application->setScreenshot(QString("image://application/%1/%2").arg(application->appId()).arg(QDateTime::currentMSecsSinceEpoch()));
395 generateQmlStrings(application);
432 generateQmlStrings(application);
396 m_availableApplications.append(application);
433 m_availableApplications.append(application);
397
434
@@ -400,7 +437,6 @@ void ApplicationManager::buildListOfAvailableApplications()
400 application->setFullscreen(true);
437 application->setFullscreen(true);
401 application->setName("Browser");
438 application->setName("Browser");
402 application->setIcon(QUrl("browser"));
439 application->setIcon(QUrl("browser"));
403− application->setScreenshot(QString("image://application/%1/%2").arg(application->appId()).arg(QDateTime::currentMSecsSinceEpoch()));
404 generateQmlStrings(application);
440 generateQmlStrings(application);
405 m_availableApplications.append(application);
441 m_availableApplications.append(application);
406
442
@@ -409,7 +445,6 @@ void ApplicationManager::buildListOfAvailableApplications()
409 application->setName("Twitter");
445 application->setName("Twitter");
410 application->setIcon(QUrl("twitter"));
446 application->setIcon(QUrl("twitter"));
411 application->setStage(ApplicationInfo::SideStage);
447 application->setStage(ApplicationInfo::SideStage);
412− application->setScreenshot(QString("image://application/%1/%2").arg(application->appId()).arg(QDateTime::currentMSecsSinceEpoch()));
413 generateQmlStrings(application);
448 generateQmlStrings(application);
414 m_availableApplications.append(application);
449 m_availableApplications.append(application);
415
450
@@ -417,7 +452,6 @@ void ApplicationManager::buildListOfAvailableApplications()
417 application->setAppId("gmail-webapp");
452 application->setAppId("gmail-webapp");
418 application->setName("GMail");
453 application->setName("GMail");
419 application->setIcon(QUrl("gmail"));
454 application->setIcon(QUrl("gmail"));
420− application->setScreenshot(QString("image://application/%1/%2").arg(application->appId()).arg(QDateTime::currentMSecsSinceEpoch()));
421 m_availableApplications.append(application);
455 m_availableApplications.append(application);
422
456
423 application = new ApplicationInfo(this);
457 application = new ApplicationInfo(this);
@@ -425,7 +459,6 @@ void ApplicationManager::buildListOfAvailableApplications()
425 application->setName("Weather");
459 application->setName("Weather");
426 application->setIcon(QUrl("weather"));
460 application->setIcon(QUrl("weather"));
427 application->setStage(ApplicationInfo::SideStage);
461 application->setStage(ApplicationInfo::SideStage);
428− application->setScreenshot(QString("image://application/%1/%2").arg(application->appId()).arg(QDateTime::currentMSecsSinceEpoch()));
429 generateQmlStrings(application);
462 generateQmlStrings(application);
430 m_availableApplications.append(application);
463 m_availableApplications.append(application);
431
464
@@ -434,7 +467,6 @@ void ApplicationManager::buildListOfAvailableApplications()
434 application->setName("Notepad");
467 application->setName("Notepad");
435 application->setIcon(QUrl("notepad"));
468 application->setIcon(QUrl("notepad"));
436 application->setStage(ApplicationInfo::SideStage);
469 application->setStage(ApplicationInfo::SideStage);
437− application->setScreenshot(QString("image://application/%1/%2").arg(application->appId()).arg(QDateTime::currentMSecsSinceEpoch()));
438 m_availableApplications.append(application);
470 m_availableApplications.append(application);
439
471
440 application = new ApplicationInfo(this);
472 application = new ApplicationInfo(this);
@@ -442,7 +474,6 @@ void ApplicationManager::buildListOfAvailableApplications()
442 application->setName("Calendar");
474 application->setName("Calendar");
443 application->setIcon(QUrl("calendar"));
475 application->setIcon(QUrl("calendar"));
444 application->setStage(ApplicationInfo::SideStage);
476 application->setStage(ApplicationInfo::SideStage);
445− application->setScreenshot(QString("image://application/%1/%2").arg(application->appId()).arg(QDateTime::currentMSecsSinceEpoch()));
446 m_availableApplications.append(application);
477 m_availableApplications.append(application);
447
478
448 application = new ApplicationInfo(this);
479 application = new ApplicationInfo(this);
@@ -450,21 +481,18 @@ void ApplicationManager::buildListOfAvailableApplications()
450 application->setName("Media Player");
481 application->setName("Media Player");
451 application->setIcon(QUrl("mediaplayer-app"));
482 application->setIcon(QUrl("mediaplayer-app"));
452 application->setFullscreen(true);
483 application->setFullscreen(true);
453− application->setScreenshot(QString("image://application/%1/%2").arg(application->appId()).arg(QDateTime::currentMSecsSinceEpoch()));
454 m_availableApplications.append(application);
484 m_availableApplications.append(application);
455
485
456 application = new ApplicationInfo(this);
486 application = new ApplicationInfo(this);
457 application->setAppId("evernote");
487 application->setAppId("evernote");
458 application->setName("Evernote");
488 application->setName("Evernote");
459 application->setIcon(QUrl("evernote"));
489 application->setIcon(QUrl("evernote"));
460− application->setScreenshot(QString("image://application/%1/%2").arg(application->appId()).arg(QDateTime::currentMSecsSinceEpoch()));
461 m_availableApplications.append(application);
490 m_availableApplications.append(application);
462
491
463 application = new ApplicationInfo(this);
492 application = new ApplicationInfo(this);
464 application->setAppId("map");
493 application->setAppId("map");
465 application->setName("Map");
494 application->setName("Map");
466 application->setIcon(QUrl("map"));
495 application->setIcon(QUrl("map"));
467− application->setScreenshot(QString("image://application/%1/%2").arg(application->appId()).arg(QDateTime::currentMSecsSinceEpoch()));
468 generateQmlStrings(application);
496 generateQmlStrings(application);
469 m_availableApplications.append(application);
497 m_availableApplications.append(application);
470
498
@@ -472,28 +500,24 @@ void ApplicationManager::buildListOfAvailableApplications()
472 application->setAppId("pinterest");
500 application->setAppId("pinterest");
473 application->setName("Pinterest");
501 application->setName("Pinterest");
474 application->setIcon(QUrl("pinterest"));
502 application->setIcon(QUrl("pinterest"));
475− application->setScreenshot(QString("image://application/%1/%2").arg(application->appId()).arg(QDateTime::currentMSecsSinceEpoch()));
476 m_availableApplications.append(application);
503 m_availableApplications.append(application);
477
504
478 application = new ApplicationInfo(this);
505 application = new ApplicationInfo(this);
479 application->setAppId("soundcloud");
506 application->setAppId("soundcloud");
480 application->setName("SoundCloud");
507 application->setName("SoundCloud");
481 application->setIcon(QUrl("soundcloud"));
508 application->setIcon(QUrl("soundcloud"));
482− application->setScreenshot(QString("image://application/%1/%2").arg(application->appId()).arg(QDateTime::currentMSecsSinceEpoch()));
483 m_availableApplications.append(application);
509 m_availableApplications.append(application);
484
510
485 application = new ApplicationInfo(this);
511 application = new ApplicationInfo(this);
486 application->setAppId("wikipedia");
512 application->setAppId("wikipedia");
487 application->setName("Wikipedia");
513 application->setName("Wikipedia");
488 application->setIcon(QUrl("wikipedia"));
514 application->setIcon(QUrl("wikipedia"));
489− application->setScreenshot(QString("image://application/%1/%2").arg(application->appId()).arg(QDateTime::currentMSecsSinceEpoch()));
490 m_availableApplications.append(application);
515 m_availableApplications.append(application);
491
516
492 application = new ApplicationInfo(this);
517 application = new ApplicationInfo(this);
493 application->setAppId("youtube");
518 application->setAppId("youtube");
494 application->setName("YouTube");
519 application->setName("YouTube");
495 application->setIcon(QUrl("youtube"));
520 application->setIcon(QUrl("youtube"));
496− application->setScreenshot(QString("image://application/%1/%2").arg(application->appId()).arg(QDateTime::currentMSecsSinceEpoch()));
497 m_availableApplications.append(application);
521 m_availableApplications.append(application);
498}
522}
499
523
@@ -590,3 +614,8 @@ void ApplicationManager::setRightMargin(int rightMargin)
590 generateQmlStrings(app);
614 generateQmlStrings(app);
591 }
615 }
592}
616}
617+
618+bool ApplicationManager::isEmpty() const
619+{
620+ return m_runningApplications.isEmpty();
621+}
tests/mocks/Unity/Application/ApplicationManager.h+15−9
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013-2014 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
@@ -36,8 +36,7 @@ class ApplicationManager : public ApplicationManagerInterface {
36 Q_ENUMS(FavoriteApplication)
36 Q_ENUMS(FavoriteApplication)
37 Q_FLAGS(ExecFlags)
37 Q_FLAGS(ExecFlags)
38
38
39− Q_PROPERTY(int keyboardHeight READ keyboardHeight NOTIFY keyboardHeightChanged)
39+ Q_PROPERTY(bool empty READ isEmpty NOTIFY emptyChanged)
40− Q_PROPERTY(bool keyboardVisible READ keyboardVisible NOTIFY keyboardVisibleChanged)
41
40
42 Q_PROPERTY(int sideStageWidth READ sideStageWidth)
41 Q_PROPERTY(int sideStageWidth READ sideStageWidth)
43 Q_PROPERTY(StageHint stageHint READ stageHint)
42 Q_PROPERTY(StageHint stageHint READ stageHint)
@@ -53,6 +52,12 @@ class ApplicationManager : public ApplicationManagerInterface {
53 ApplicationManager(QObject *parent = NULL);
52 ApplicationManager(QObject *parent = NULL);
54 virtual ~ApplicationManager();
53 virtual ~ApplicationManager();
55
54
55+ static ApplicationManager *singleton();
56+
57+ enum MoreRoles {
58+ RoleSurface = RoleScreenshot+1,
59+ RoleFullscreen,
60+ };
56 enum Role {
61 enum Role {
57 Dash, Default, Indicators, Notifications, Greeter, Launcher, OnScreenKeyboard,
62 Dash, Default, Indicators, Notifications, Greeter, Launcher, OnScreenKeyboard,
58 ShutdownDialog
63 ShutdownDialog
@@ -74,8 +79,6 @@ class ApplicationManager : public ApplicationManagerInterface {
74 };
79 };
75 Q_DECLARE_FLAGS(ExecFlags, Flag)
80 Q_DECLARE_FLAGS(ExecFlags, Flag)
76
81
77− int keyboardHeight() const;
78− bool keyboardVisible() const;
79 int sideStageWidth() const;
82 int sideStageWidth() const;
80 StageHint stageHint() const;
83 StageHint stageHint() const;
81 FormFactorHint formFactorHint() const;
84 FormFactorHint formFactorHint() const;
@@ -108,11 +111,14 @@ class ApplicationManager : public ApplicationManagerInterface {
108 int rightMargin() const;
111 int rightMargin() const;
109 void setRightMargin(int rightMargin);
112 void setRightMargin(int rightMargin);
110
113
114+ QModelIndex findIndex(ApplicationInfo* application);
115+
116+ bool isEmpty() const;
117+
111 Q_SIGNALS:
118 Q_SIGNALS:
112− void keyboardHeightChanged();
113− void keyboardVisibleChanged();
114 void focusRequested(FavoriteApplication favoriteApplication);
119 void focusRequested(FavoriteApplication favoriteApplication);
115 void focusRequested(const QString &appId);
120 void focusRequested(const QString &appId);
121+ void emptyChanged(bool empty);
116
122
117 private:
123 private:
118 void add(ApplicationInfo *application);
124 void add(ApplicationInfo *application);
@@ -124,8 +130,6 @@ class ApplicationManager : public ApplicationManagerInterface {
124 void createMainStage();
130 void createMainStage();
125 void createSideStageComponent();
131 void createSideStageComponent();
126 void createSideStage();
132 void createSideStage();
127− int m_keyboardHeight;
128− bool m_keyboardVisible;
129 bool m_suspended;
133 bool m_suspended;
130 QList<ApplicationInfo*> m_runningApplications;
134 QList<ApplicationInfo*> m_runningApplications;
131 QList<ApplicationInfo*> m_availableApplications;
135 QList<ApplicationInfo*> m_availableApplications;
@@ -135,6 +139,8 @@ class ApplicationManager : public ApplicationManagerInterface {
135 QQuickItem *m_sideStage;
139 QQuickItem *m_sideStage;
136
140
137 int m_rightMargin;
141 int m_rightMargin;
142+
143+ static ApplicationManager *the_application_manager;
138};
144};
139
145
140Q_DECLARE_OPERATORS_FOR_FLAGS(ApplicationManager::ExecFlags)
146Q_DECLARE_OPERATORS_FOR_FLAGS(ApplicationManager::ExecFlags)
tests/mocks/Unity/Application/CMakeLists.txt+6−2
@@ -2,10 +2,14 @@ pkg_check_modules(APPLICATION_API REQUIRED unity-shell-application)
2
2
3set(FakeUnityApplicationQml_SOURCES
3set(FakeUnityApplicationQml_SOURCES
4 plugin.cpp
4 plugin.cpp
5+ ApplicationDBusAdaptor.cpp
5 ApplicationInfo.cpp
6 ApplicationInfo.cpp
6 ApplicationImage.cpp
7 ApplicationImage.cpp
7 ApplicationManager.cpp
8 ApplicationManager.cpp
8 ApplicationScreenshotProvider.cpp
9 ApplicationScreenshotProvider.cpp
10+ MirSurfaceItem.cpp
11+ SurfaceManager.cpp
12+ VirtualKeyboard.cpp
9 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationInfoInterface.h
13 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationInfoInterface.h
10 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationManagerInterface.h
14 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationManagerInterface.h
11)
15)
@@ -15,8 +19,8 @@ add_library(FakeUnityApplicationQml MODULE ${FakeUnityApplicationQml_SOURCES})
15add_library(NonMirUnityApplicationQml MODULE ${FakeUnityApplicationQml_SOURCES})
19add_library(NonMirUnityApplicationQml MODULE ${FakeUnityApplicationQml_SOURCES})
16set_target_properties(NonMirUnityApplicationQml PROPERTIES OUTPUT_NAME FakeUnityApplicationQml)
20set_target_properties(NonMirUnityApplicationQml PROPERTIES OUTPUT_NAME FakeUnityApplicationQml)
17
21
18−qt5_use_modules(FakeUnityApplicationQml Core Quick)
22+qt5_use_modules(FakeUnityApplicationQml Core Quick DBus)
19−qt5_use_modules(NonMirUnityApplicationQml Core Quick)
23+qt5_use_modules(NonMirUnityApplicationQml Core Quick DBus)
20
24
21add_unity8_mock(Unity.Application 0.1 Unity/Application PREFIX mocks TARGETS FakeUnityApplicationQml)
25add_unity8_mock(Unity.Application 0.1 Unity/Application PREFIX mocks TARGETS FakeUnityApplicationQml)
22add_unity8_mock(Unity.Application 0.1 Unity/Application
26add_unity8_mock(Unity.Application 0.1 Unity/Application
tests/mocks/Unity/Application/MirSurfaceItem.cppnew file+172
@@ -0,0 +1,172 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#include "MirSurfaceItem.h"
18+#include "ApplicationInfo.h"
19+
20+#include <QPainter>
21+#include <QQmlEngine>
22+
23+MirSurfaceItem::MirSurfaceItem(const QString& name,
24+ MirSurfaceItem::Type type,
25+ MirSurfaceItem::State state,
26+ const QUrl& screenshot,
27+ QQuickItem *parent)
28+ : QQuickPaintedItem(parent)
29+ , m_application(nullptr)
30+ , m_name(name)
31+ , m_type(type)
32+ , m_state(state)
33+ , m_img(screenshot.isLocalFile() ? screenshot.toLocalFile() : screenshot.toString())
34+ , m_parentSurface(nullptr)
35+ , m_haveInputMethod(false)
36+{
37+ QQmlEngine::setObjectOwnership(this, QQmlEngine::CppOwnership);
38+
39+ // The virtual keyboard (input method) has a big transparent area so that
40+ // content behind it show through
41+ setFillColor(Qt::transparent);
42+
43+ connect(this, &QQuickItem::focusChanged,
44+ this, &MirSurfaceItem::onFocusChanged);
45+}
46+
47+MirSurfaceItem::~MirSurfaceItem()
48+{
49+ QList<MirSurfaceItem*> children(m_children);
50+ for (MirSurfaceItem* child : children) {
51+ child->setParentSurface(nullptr);
52+ }
53+ if (m_parentSurface)
54+ m_parentSurface->removeChildSurface(this);
55+
56+ if (m_application)
57+ m_application->setSurface(nullptr);
58+}
59+
60+void MirSurfaceItem::paint(QPainter * painter)
61+{
62+ if (!m_img.isNull()) {
63+ painter->drawImage(contentsBoundingRect(), m_img, QRect(QPoint(0,0), m_img.size()));
64+ }
65+}
66+
67+void MirSurfaceItem::release()
68+{
69+ QList<MirSurfaceItem*> children(m_children);
70+ for (MirSurfaceItem* child : children) {
71+ child->release();
72+ }
73+ if (m_parentSurface) {
74+ m_parentSurface->removeChildSurface(this);
75+ }
76+
77+ if (m_application) {
78+ m_application->setSurface(nullptr);
79+ }
80+ if (!parent()) {
81+ deleteLater();
82+ }
83+}
84+
85+void MirSurfaceItem::setApplication(ApplicationInfo* application)
86+{
87+ m_application = application;
88+}
89+
90+void MirSurfaceItem::setParentSurface(MirSurfaceItem* surface)
91+{
92+ if (m_parentSurface == surface || surface == this)
93+ return;
94+
95+ if (m_parentSurface) {
96+ m_parentSurface->removeChildSurface(this);
97+ }
98+
99+ m_parentSurface = surface;
100+
101+ if (m_parentSurface) {
102+ m_parentSurface->addChildSurface(this);
103+ }
104+ Q_EMIT parentSurfaceChanged(surface);
105+}
106+
107+void MirSurfaceItem::removeChildSurface(MirSurfaceItem* surface)
108+{
109+ if (m_children.contains(surface)) {
110+ m_children.removeOne(surface);
111+ Q_EMIT childSurfacesChanged();
112+ }
113+}
114+
115+void MirSurfaceItem::addChildSurface(MirSurfaceItem* surface)
116+{
117+ m_children.append(surface);
118+ Q_EMIT childSurfacesChanged();
119+}
120+
121+QList<MirSurfaceItem*> MirSurfaceItem::childSurfaceList()
122+{
123+ return m_children;
124+}
125+
126+QQmlListProperty<MirSurfaceItem> MirSurfaceItem::childSurfaces()
127+{
128+ return QQmlListProperty<MirSurfaceItem>(this,
129+ 0,
130+ MirSurfaceItem::childSurfaceCount,
131+ MirSurfaceItem::childSurfaceAt);
132+}
133+
134+int MirSurfaceItem::childSurfaceCount(QQmlListProperty<MirSurfaceItem> *prop)
135+{
136+ MirSurfaceItem *p = qobject_cast<MirSurfaceItem*>(prop->object);
137+ return p->m_children.count();
138+}
139+
140+MirSurfaceItem* MirSurfaceItem::childSurfaceAt(QQmlListProperty<MirSurfaceItem> *prop, int index)
141+{
142+ MirSurfaceItem *p = qobject_cast<MirSurfaceItem*>(prop->object);
143+
144+ if (index < 0 || index >= p->m_children.count())
145+ return nullptr;
146+ return p->m_children[index];
147+}
148+
149+
150+void MirSurfaceItem::touchEvent(QTouchEvent * event)
151+{
152+ if (event->type() == QEvent::TouchBegin && hasFocus()) {
153+ Q_EMIT inputMethodRequested();
154+ m_haveInputMethod = true;
155+ }
156+}
157+
158+void MirSurfaceItem::onFocusChanged()
159+{
160+ if (!hasFocus() && m_haveInputMethod) {
161+ Q_EMIT inputMethodDismissed();
162+ m_haveInputMethod = false;
163+ }
164+}
165+
166+void MirSurfaceItem::setState(MirSurfaceItem::State newState)
167+{
168+ if (newState != m_state) {
169+ m_state = newState;
170+ Q_EMIT stateChanged(newState);
171+ }
172+}
tests/mocks/Unity/Application/MirSurfaceItem.hnew file+121
@@ -0,0 +1,121 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#ifndef MIRSURFACEITEM_H
18+#define MIRSURFACEITEM_H
19+
20+#include <QQuickPaintedItem>
21+#include <QImage>
22+
23+class ApplicationInfo;
24+
25+class MirSurfaceItem : public QQuickPaintedItem
26+{
27+ Q_OBJECT
28+ Q_ENUMS(Type)
29+ Q_ENUMS(State)
30+
31+ Q_PROPERTY(Type type READ type NOTIFY typeChanged)
32+ Q_PROPERTY(State state READ state NOTIFY stateChanged)
33+ Q_PROPERTY(QString name READ name NOTIFY nameChanged)
34+ Q_PROPERTY(MirSurfaceItem* parentSurface READ parentSurface NOTIFY parentSurfaceChanged)
35+ Q_PROPERTY(QQmlListProperty<MirSurfaceItem> childSurfaces READ childSurfaces NOTIFY childSurfacesChanged DESIGNABLE false)
36+
37+public:
38+ enum Type {
39+ Normal,
40+ Utility,
41+ Dialog,
42+ Overlay,
43+ Freestyle,
44+ Popover,
45+ InputMethod,
46+ };
47+
48+ enum State {
49+ Unknown,
50+ Restored,
51+ Minimized,
52+ Maximized,
53+ VertMaximized,
54+ /* SemiMaximized, */
55+ Fullscreen,
56+ };
57+
58+ explicit MirSurfaceItem(const QString& name,
59+ Type type,
60+ State state,
61+ const QUrl& screenshot,
62+ QQuickItem *parent = 0);
63+ ~MirSurfaceItem();
64+
65+ //getters
66+ ApplicationInfo* application() const { return m_application; }
67+ Type type() const { return m_type; }
68+ State state() const { return m_state; }
69+ QString name() const { return m_name; }
70+ MirSurfaceItem* parentSurface() const { return m_parentSurface; }
71+ QList<MirSurfaceItem*> childSurfaceList();
72+
73+ void setApplication(ApplicationInfo* item);
74+ void setParentSurface(MirSurfaceItem* item);
75+
76+ Q_INVOKABLE void setState(State newState);
77+ Q_INVOKABLE void release();
78+
79+ void paint(QPainter * painter) override;
80+ void touchEvent(QTouchEvent * event) override;
81+
82+Q_SIGNALS:
83+ void typeChanged(Type);
84+ void stateChanged(State);
85+ void nameChanged(QString);
86+ void parentSurfaceChanged(MirSurfaceItem*);
87+ void childSurfacesChanged();
88+
89+ void removed();
90+
91+ void inputMethodRequested();
92+ void inputMethodDismissed();
93+
94+private Q_SLOTS:
95+ void onFocusChanged();
96+
97+protected:
98+ const QImage &screenshotImage() { return m_img; }
99+
100+private:
101+ void addChildSurface(MirSurfaceItem* surface);
102+ void removeChildSurface(MirSurfaceItem* surface);
103+
104+ QQmlListProperty<MirSurfaceItem> childSurfaces();
105+ static int childSurfaceCount(QQmlListProperty<MirSurfaceItem> *prop);
106+ static MirSurfaceItem* childSurfaceAt(QQmlListProperty<MirSurfaceItem> *prop, int index);
107+
108+ ApplicationInfo* m_application;
109+ const QString m_name;
110+ const Type m_type;
111+ State m_state;
112+ const QImage m_img;
113+
114+ MirSurfaceItem* m_parentSurface;
115+ QList<MirSurfaceItem*> m_children;
116+ bool m_haveInputMethod;
117+};
118+
119+Q_DECLARE_METATYPE(MirSurfaceItem*)
120+
121+#endif // MIRSURFACEITEM_H
tests/mocks/Unity/Application/SurfaceManager.cppnew file+73
@@ -0,0 +1,73 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#include "SurfaceManager.h"
18+
19+#include "MirSurfaceItem.h"
20+#include "VirtualKeyboard.h"
21+
22+
23+SurfaceManager *SurfaceManager::the_surface_manager = nullptr;
24+
25+SurfaceManager *SurfaceManager::singleton()
26+{
27+ if (!the_surface_manager) {
28+ the_surface_manager = new SurfaceManager();
29+ }
30+ return the_surface_manager;
31+}
32+
33+SurfaceManager::SurfaceManager(QObject *parent) :
34+ QObject(parent)
35+ , m_virtualKeyboard(nullptr)
36+{
37+}
38+
39+void SurfaceManager::registerSurface(MirSurfaceItem *surface)
40+{
41+ connect(surface, &MirSurfaceItem::inputMethodRequested,
42+ this, &SurfaceManager::showInputMethod);
43+ connect(surface, &MirSurfaceItem::inputMethodDismissed,
44+ this, &SurfaceManager::hideInputMethod);
45+ Q_EMIT surfaceCreated(surface);
46+}
47+
48+void SurfaceManager::unregisterSurface(MirSurfaceItem *surface)
49+{
50+ disconnect(surface, 0, this, 0);
51+ Q_EMIT surfaceDestroyed(surface);
52+}
53+
54+void SurfaceManager::showInputMethod()
55+{
56+ inputMethodSurface()->setState(MirSurfaceItem::Restored);
57+}
58+
59+void SurfaceManager::hideInputMethod()
60+{
61+ if (m_virtualKeyboard) {
62+ m_virtualKeyboard->setState(MirSurfaceItem::Minimized);
63+ }
64+}
65+
66+MirSurfaceItem *SurfaceManager::inputMethodSurface()
67+{
68+ if (!m_virtualKeyboard) {
69+ m_virtualKeyboard = new VirtualKeyboard(MirSurfaceItem::Minimized);
70+ Q_EMIT surfaceCreated(m_virtualKeyboard);
71+ }
72+ return m_virtualKeyboard;
73+}
tests/mocks/Unity/Application/SurfaceManager.hnew file+54
@@ -0,0 +1,54 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#ifndef SURFACEMANAGER_H
18+#define SURFACEMANAGER_H
19+
20+#include <QObject>
21+
22+class MirSurfaceItem;
23+class VirtualKeyboard;
24+
25+class SurfaceManager : public QObject
26+{
27+ Q_OBJECT
28+public:
29+ explicit SurfaceManager(QObject *parent = 0);
30+
31+ static SurfaceManager *singleton();
32+
33+ // Internal mock use
34+ void registerSurface(MirSurfaceItem *surface);
35+ void unregisterSurface(MirSurfaceItem *surface);
36+
37+ // To be used in the tests
38+ Q_INVOKABLE MirSurfaceItem *inputMethodSurface();
39+
40+Q_SIGNALS:
41+ void countChanged();
42+ void surfaceCreated(MirSurfaceItem *surface);
43+ void surfaceDestroyed(MirSurfaceItem *surface);
44+
45+private Q_SLOTS:
46+ void showInputMethod();
47+ void hideInputMethod();
48+
49+private:
50+ static SurfaceManager *the_surface_manager;
51+ VirtualKeyboard *m_virtualKeyboard;
52+};
53+
54+#endif // SURFACEMANAGER_H
tests/mocks/Unity/Application/VirtualKeyboard.cppnew file+55
@@ -0,0 +1,55 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#include "VirtualKeyboard.h"
18+
19+#include <paths.h>
20+
21+VirtualKeyboard::VirtualKeyboard(State state, QQuickItem *parent)
22+ : MirSurfaceItem("input-method",
23+ MirSurfaceItem::InputMethod,
24+ state,
25+ QString("file://%1/Dash/graphics/phone/screenshots/vkb_portrait.png").arg(qmlDirectory()),
26+ parent)
27+{
28+}
29+
30+void VirtualKeyboard::touchEvent(QTouchEvent *event)
31+{
32+ if (event->type() == QEvent::TouchBegin && !hasTouchInsideKeyboard(event)) {
33+ event->ignore();
34+ }
35+}
36+
37+bool VirtualKeyboard::hasTouchInsideKeyboard(QTouchEvent *event)
38+{
39+ const QList<QTouchEvent::TouchPoint> &touchPoints = event->touchPoints();
40+ for (int i = 0; i < touchPoints.count(); ++i) {
41+ QPoint pos = touchPoints.at(i).pos().toPoint();
42+
43+ // Map to image coords
44+ int imageX = (int)( ( ((qreal)pos.x()) / width() ) * ((qreal)screenshotImage().size().width()) );
45+ int imageY = (int)( ( ((qreal)pos.y()) / height() ) * ((qreal)screenshotImage().size().height()) );
46+
47+ QRgb pixelHit = screenshotImage().pixel(imageX, imageY);
48+
49+ // The keyboard depicted in the image is in its opaque part.
50+ if (qAlpha(pixelHit) != 0) {
51+ return true;
52+ }
53+ }
54+ return false;
55+}
qml/Stages/SidestageHandle.qml → tests/mocks/Unity/Application/VirtualKeyboard.hrenamed+19−6
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2014 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
@@ -14,9 +14,22 @@
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 */
15 */
16
16
17−import QtQuick 2.0
17+#ifndef VIRTUALKEYBOARD_H
18−import Ubuntu.Components 0.1
18+#define VIRTUALKEYBOARD_H
19
19
20−BorderImage {
20+#include "MirSurfaceItem.h"
21− source: "graphics/sidestage_handle.sci"
21+
22+class VirtualKeyboard : public MirSurfaceItem
23+{
24+ Q_OBJECT
25+public:
26+ VirtualKeyboard(State state,
27+ QQuickItem *parent = 0);
28+
29+ void touchEvent(QTouchEvent * event) override;
30+
31+private:
32+ bool hasTouchInsideKeyboard(QTouchEvent *event);
22−}
33+};
34+
35+#endif // VIRTUALKEYBOARD_H
tests/mocks/Unity/Application/plugin.cpp+16−9
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2013 Canonical, Ltd.
2+ * Copyright (C) 2013-2014 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
@@ -19,29 +19,37 @@
19#include "ApplicationImage.h"
19#include "ApplicationImage.h"
20#include "ApplicationManager.h"
20#include "ApplicationManager.h"
21#include "ApplicationScreenshotProvider.h"
21#include "ApplicationScreenshotProvider.h"
22+#include "MirSurfaceItem.h"
23+#include "SurfaceManager.h"
22
24
23#include <qqml.h>
25#include <qqml.h>
24#include <QQmlEngine>
26#include <QQmlEngine>
25
27
26−ApplicationManager *s_appManager = 0;
27−
28static QObject* applicationManagerSingleton(QQmlEngine* engine, QJSEngine* scriptEngine) {
28static QObject* applicationManagerSingleton(QQmlEngine* engine, QJSEngine* scriptEngine) {
29 Q_UNUSED(engine);
29 Q_UNUSED(engine);
30 Q_UNUSED(scriptEngine);
30 Q_UNUSED(scriptEngine);
31− if (!s_appManager) {
32− s_appManager = new ApplicationManager();
31+ return ApplicationManager::singleton();
33− }
32+}
34− return s_appManager;
33+
34+static QObject* surfaceManagerSingleton(QQmlEngine* engine, QJSEngine* scriptEngine) {
35+ Q_UNUSED(engine);
36+ Q_UNUSED(scriptEngine);
37+ return SurfaceManager::singleton();
35}
38}
36
39
37void FakeUnityApplicationQmlPlugin::registerTypes(const char *uri)
40void FakeUnityApplicationQmlPlugin::registerTypes(const char *uri)
38{
41{
42+ qRegisterMetaType<MirSurfaceItem*>("MirSurfaceItem*");
43+
39 qmlRegisterUncreatableType<unity::shell::application::ApplicationManagerInterface>(uri, 0, 1, "ApplicationManagerInterface", "Abstract interface. Cannot be created in QML");
44 qmlRegisterUncreatableType<unity::shell::application::ApplicationManagerInterface>(uri, 0, 1, "ApplicationManagerInterface", "Abstract interface. Cannot be created in QML");
40 qmlRegisterSingletonType<ApplicationManager>(uri, 0, 1, "ApplicationManager", applicationManagerSingleton);
45 qmlRegisterSingletonType<ApplicationManager>(uri, 0, 1, "ApplicationManager", applicationManagerSingleton);
46+ qmlRegisterSingletonType<SurfaceManager>(uri, 0, 1, "SurfaceManager", surfaceManagerSingleton);
41
47
42 qmlRegisterUncreatableType<unity::shell::application::ApplicationInfoInterface>(uri, 0, 1, "ApplicationInfoInterface", "Abstract interface. Cannot be created in QML");
48 qmlRegisterUncreatableType<unity::shell::application::ApplicationInfoInterface>(uri, 0, 1, "ApplicationInfoInterface", "Abstract interface. Cannot be created in QML");
43 qmlRegisterType<ApplicationInfo>(uri, 0, 1, "ApplicationInfo");
49 qmlRegisterType<ApplicationInfo>(uri, 0, 1, "ApplicationInfo");
44
50
51+ qmlRegisterUncreatableType<MirSurfaceItem>(uri, 0, 1, "MirSurfaceItem", "MirSurfaceItem can't be instantiated from QML");
52+
45 qmlRegisterType<ApplicationImage>(uri, 0, 1, "ApplicationImage");
53 qmlRegisterType<ApplicationImage>(uri, 0, 1, "ApplicationImage");
46}
54}
47
55
@@ -49,6 +57,5 @@ void FakeUnityApplicationQmlPlugin::initializeEngine(QQmlEngine *engine, const c
49{
57{
50 QQmlExtensionPlugin::initializeEngine(engine, uri);
58 QQmlExtensionPlugin::initializeEngine(engine, uri);
51
59
52− ApplicationManager* appManager = static_cast<ApplicationManager*>(applicationManagerSingleton(engine, NULL));
53− engine->addImageProvider(QLatin1String("application"), new ApplicationScreenshotProvider(appManager));
60+ engine->addImageProvider(QLatin1String("application"), new ApplicationScreenshotProvider(ApplicationManager::singleton()));
54}
61}
tests/qmltests/Dash/Apps/tst_RunningApplicationsGrid.qml+23−2
@@ -19,10 +19,11 @@ import QtTest 1.0
19import "../../../../qml/Dash/Apps"
19import "../../../../qml/Dash/Apps"
20import Unity.Test 0.1 as UT
20import Unity.Test 0.1 as UT
21import Unity.Application 0.1
21import Unity.Application 0.1
22+import Ubuntu.Components 1.1
22
23
23// Using Rectangle to have an opaque surface because AppManager paints app surfaces behind it.
24// Using Rectangle to have an opaque surface because AppManager paints app surfaces behind it.
24Rectangle {
25Rectangle {
25− width: units.gu(50)
26+ width: units.gu(70)
26 height: units.gu(40)
27 height: units.gu(40)
27
28
28 function resetRunningApplications() {
29 function resetRunningApplications() {
@@ -41,10 +42,30 @@ Rectangle {
41 // The component under test
42 // The component under test
42 RunningApplicationsGrid {
43 RunningApplicationsGrid {
43 id: runningApplicationsGrid
44 id: runningApplicationsGrid
45+ orientationAngle: orientationAngleSelector.selectedIndex * 90
46+ anchors.left: parent.left
47+ anchors.right: controlPanel.left
44− anchors.fill: parent
48+ anchors.top: parent.top
49+ anchors.bottom: parent.bottom
45 model: ApplicationManager
50 model: ApplicationManager
46 }
51 }
47
52
53+ Rectangle {
54+ id: controlPanel
55+ anchors.right: parent.right
56+ anchors.top: parent.top
57+ anchors.bottom: parent.bottom
58+ width: units.gu(20)
59+ color: "black"
60+
61+ OptionSelector {
62+ id: orientationAngleSelector
63+ model: ["0","90","180","270"]
64+ text: "Orientation Angle"
65+ width: parent.width
66+ }
67+ }
68+
48 UT.UnityTestCase {
69 UT.UnityTestCase {
49 name: "RunningApplicationsGrid"
70 name: "RunningApplicationsGrid"
50 when: windowShown
71 when: windowShown
tests/qmltests/Launcher/tst_Launcher.qml+11−2
@@ -94,9 +94,16 @@ Item {
94 name: "Launcher"
94 name: "Launcher"
95 when: windowShown && initTestCase.completed
95 when: windowShown && initTestCase.completed
96
96
97+ function cleanup() {
98+ mouseClick(root, root.width / 2, root.height / 2);
99+ revealer.waitUntilLauncherDisappears();
100+ }
101+
97 // Drag from the left edge of the screen rightwards and check that the launcher
102 // Drag from the left edge of the screen rightwards and check that the launcher
98 // appears (as if being dragged by the finger/pointer)
103 // appears (as if being dragged by the finger/pointer)
99 function test_dragLeftEdgeToRevealLauncherAndTapCenterToDismiss() {
104 function test_dragLeftEdgeToRevealLauncherAndTapCenterToDismiss() {
105+ revealer.waitUntilLauncherDisappears();
106+
100 var panel = findChild(launcher, "launcherPanel")
107 var panel = findChild(launcher, "launcherPanel")
101 verify(panel != undefined)
108 verify(panel != undefined)
102
109
@@ -117,10 +124,9 @@ Item {
117 corresponding desktop file. E.g. clicking on phone icon should yield
124 corresponding desktop file. E.g. clicking on phone icon should yield
118 launcherApplicationSelected("[...]dialer-app.desktop") */
125 launcherApplicationSelected("[...]dialer-app.desktop") */
119 function test_clickingOnAppIconCausesSignalEmission() {
126 function test_clickingOnAppIconCausesSignalEmission() {
127+ revealer.dragLauncherIntoView();
120 launcher.lastSelectedApplication = ""
128 launcher.lastSelectedApplication = ""
121
129
122− revealer.dragLauncherIntoView()
123−
124 var listView = findChild(launcher, "launcherListView");
130 var listView = findChild(launcher, "launcherListView");
125 listView.positionViewAtEnd();
131 listView.positionViewAtEnd();
126
132
@@ -184,6 +190,7 @@ Item {
184 }
190 }
185
191
186 function test_countEmblems() {
192 function test_countEmblems() {
193+ revealer.dragLauncherIntoView();
187 var launcherListView = findChild(launcher, "launcherListView");
194 var launcherListView = findChild(launcher, "launcherListView");
188 for (var i = 0; i < launcherListView.count; ++i) {
195 for (var i = 0; i < launcherListView.count; ++i) {
189 var delegate = findChild(launcherListView, "launcherDelegate" + i)
196 var delegate = findChild(launcherListView, "launcherDelegate" + i)
@@ -192,6 +199,7 @@ Item {
192 }
199 }
193
200
194 function test_progressOverlays() {
201 function test_progressOverlays() {
202+ revealer.dragLauncherIntoView();
195 var launcherListView = findChild(launcher, "launcherListView");
203 var launcherListView = findChild(launcher, "launcherListView");
196 for (var i = 0; i < launcherListView.count; ++i) {
204 for (var i = 0; i < launcherListView.count; ++i) {
197 var delegate = findChild(launcherListView, "launcherDelegate" + i)
205 var delegate = findChild(launcherListView, "launcherDelegate" + i)
@@ -200,6 +208,7 @@ Item {
200 }
208 }
201
209
202 function test_focusedHighlight() {
210 function test_focusedHighlight() {
211+ revealer.dragLauncherIntoView();
203 var launcherListView = findChild(launcher, "launcherListView");
212 var launcherListView = findChild(launcher, "launcherListView");
204 for (var i = 0; i < launcherListView.count; ++i) {
213 for (var i = 0; i < launcherListView.count; ++i) {
205 var delegate = findChild(launcherListView, "launcherDelegate" + i)
214 var delegate = findChild(launcherListView, "launcherDelegate" + i)
tests/qmltests/Panel/tst_ActiveCallHint.qml+1
@@ -95,6 +95,7 @@ Item {
95 function test_activeHint(data) {
95 function test_activeHint(data) {
96 if (data.dialer) {
96 if (data.dialer) {
97 var application = ApplicationManager.startApplication("dialer-app");
97 var application = ApplicationManager.startApplication("dialer-app");
98+ ApplicationManager.focusApplication("dialer-app");
98 tryCompare(ApplicationManager, "focusedApplicationId", "dialer-app");
99 tryCompare(ApplicationManager, "focusedApplicationId", "dialer-app");
99 tryCompare(application, "state", ApplicationInfo.Running);
100 tryCompare(application, "state", ApplicationInfo.Running);
100
101
tests/qmltests/Stages/tst_PhoneStage.qml+9−56
@@ -33,7 +33,6 @@ Item {
33 PhoneStage {
33 PhoneStage {
34 id: phoneStage
34 id: phoneStage
35 anchors { fill: parent; rightMargin: units.gu(30) }
35 anchors { fill: parent; rightMargin: units.gu(30) }
36− shown: true
37 dragAreaWidth: units.gu(2)
36 dragAreaWidth: units.gu(2)
38 }
37 }
39
38
@@ -45,7 +44,6 @@ Item {
45
44
46 Rectangle {
45 Rectangle {
47 anchors { fill: parent; leftMargin: phoneStage.width }
46 anchors { fill: parent; leftMargin: phoneStage.width }
48−// color: "blue"
49
47
50 Column {
48 Column {
51 anchors { left: parent.left; right: parent.right; top: parent.top; margins: units.gu(1) }
49 anchors { left: parent.left; right: parent.right; top: parent.top; margins: units.gu(1) }
@@ -59,7 +57,10 @@ Item {
59 }
57 }
60 Button {
58 Button {
61 anchors { left: parent.left; right: parent.right }
59 anchors { left: parent.left; right: parent.right }
62− text: "Add App"
60+ text: "Remove App"
61+ onClicked: {
62+ ApplicationManager.stopApplication(ApplicationManager.get(0).appId)
63+ }
63 }
64 }
64 }
65 }
65 }
66 }
@@ -74,11 +75,8 @@ Item {
74 for (var i = 0; i < count; i++) {
75 for (var i = 0; i < count; i++) {
75 var app = ApplicationManager.startApplication(ApplicationManager.availableApplications()[ApplicationManager.count])
76 var app = ApplicationManager.startApplication(ApplicationManager.availableApplications()[ApplicationManager.count])
76 tryCompare(app, "state", ApplicationInfoInterface.Running)
77 tryCompare(app, "state", ApplicationInfoInterface.Running)
77− // Fixme: Right now there is a timeout in the PhoneStage that displays a white splash
78+ var spreadView = findChild(phoneStage, "spreadView");
78− // screen rectangle when an app starts. This is because we don't yet have a way of
79+ tryCompare(spreadView, "contentX", -spreadView.shift);
79− // knowing when an app has finished launching. That workaround and this wait() should
80− // go away at some point and the app's state only changing to Running when ready for real.
81−// wait(1000)
82 waitForRendering(phoneStage)
80 waitForRendering(phoneStage)
83 }
81 }
84 }
82 }
@@ -114,8 +112,6 @@ Item {
114 true /* beginTouch */, true /* endTouch */, units.gu(10), 50);
112 true /* beginTouch */, true /* endTouch */, units.gu(10), 50);
115
113
116 tryCompare(ApplicationManager, "focusedApplicationId", activeApp.appId)
114 tryCompare(ApplicationManager, "focusedApplicationId", activeApp.appId)
117−
118− tryCompare(phoneStage, "painting", false);
119 }
115 }
120
116
121 function test_enterSpread_data() {
117 function test_enterSpread_data() {
@@ -139,7 +135,7 @@ Item {
139 var startX = phoneStage.width;
135 var startX = phoneStage.width;
140 var startY = phoneStage.height / 2;
136 var startY = phoneStage.height / 2;
141 var endY = startY;
137 var endY = startY;
142− var endX = spreadView.width - (spreadView.width * spreadView[data.positionMarker]) - data.offset - phoneStage.dragAreaWidth;
138+ var endX = spreadView.width - (spreadView.width * spreadView[data.positionMarker]) - data.offset;
143
139
144 var oldFocusedApp = ApplicationManager.get(0);
140 var oldFocusedApp = ApplicationManager.get(0);
145 var newFocusedApp = ApplicationManager.get(data.newFocusedIndex);
141 var newFocusedApp = ApplicationManager.get(data.newFocusedIndex);
@@ -165,7 +161,6 @@ Item {
165 mouseClick(app2, units.gu(1), units.gu(1));
161 mouseClick(app2, units.gu(1), units.gu(1));
166 }
162 }
167
163
168− tryCompare(phoneStage, "painting", false);
169 tryCompare(ApplicationManager, "focusedApplicationId", newFocusedApp.appId);
164 tryCompare(ApplicationManager, "focusedApplicationId", newFocusedApp.appId);
170 }
165 }
171
166
@@ -212,16 +207,6 @@ Item {
212 tryCompare(spreadView, "phase", 0);
207 tryCompare(spreadView, "phase", 0);
213 }
208 }
214
209
215− function test_animateAppStartup() {
216− compare(phoneStage.painting, false);
217− addApps(2);
218− tryCompare(phoneStage, "painting", true);
219− tryCompare(phoneStage, "painting", false);
220− addApps(1);
221− tryCompare(phoneStage, "painting", true);
222− tryCompare(phoneStage, "painting", false);
223− }
224−
225 function test_select_data() {
210 function test_select_data() {
226 return [
211 return [
227 { tag: "0", index: 0 },
212 { tag: "0", index: 0 },
@@ -240,41 +225,9 @@ Item {
240
225
241 phoneStage.select(selectedApp.appId);
226 phoneStage.select(selectedApp.appId);
242
227
243− tryCompare(phoneStage, "painting", false);
228+ tryCompare(spreadView, "contentX", -spreadView.shift);
244− compare(ApplicationManager.focusedApplicationId, selectedApp.appId);
245− }
246
229
247− function test_fullscreenMode() {
230+ compare(ApplicationManager.focusedApplicationId, selectedApp.appId);
248− var fullscreenApp = null;
249− var normalApp = null;
250−
251− for (var i = 0; i < 5; i++) {
252− addApps(1);
253− var newApp = ApplicationManager.get(0);
254− tryCompare(phoneStage, "fullscreen", newApp.fullscreen);
255− if (newApp.fullscreen && fullscreenApp == null) {
256− fullscreenApp = newApp;
257− } else if (!newApp.fullscreen && normalApp == null){
258− normalApp = newApp;
259− }
260− }
261− verify(fullscreenApp != null); // Can't continue the test without having a fullscreen app
262− verify(normalApp != null); // Can't continue the test without having a non-fullscreen app
263−
264− // Select a normal app
265− goToSpread();
266− phoneStage.select(normalApp.appId);
267− tryCompare(phoneStage, "fullscreen", false);
268−
269− // Select a fullscreen app
270− goToSpread();
271− phoneStage.select(fullscreenApp.appId);
272− tryCompare(phoneStage, "fullscreen", true);
273−
274− // Select a normal app
275− goToSpread();
276− phoneStage.select(normalApp.appId);
277− tryCompare(phoneStage, "fullscreen", false);
278 }
231 }
279
232
280 function cleanup() {
233 function cleanup() {
tests/qmltests/tst_Shell.qml+108−7
@@ -236,6 +236,7 @@ Item {
236
236
237 // wait until the animation has finished
237 // wait until the animation has finished
238 tryCompare(greeter, "showProgress", 0);
238 tryCompare(greeter, "showProgress", 0);
239+ waitForRendering(greeter);
239 }
240 }
240
241
241 /*
242 /*
@@ -358,6 +359,58 @@ Item {
358 verify(itemIsOnScreen(runningApplicationsGrid));
359 verify(itemIsOnScreen(runningApplicationsGrid));
359 }
360 }
360
361
362+ function test_showInputMethod() {
363+ var item = findChild(shell, "inputMethod");
364+ var surface = SurfaceManager.inputMethodSurface();
365+
366+ surface.setState(MirSurfaceItem.Minimized);
367+ tryCompare(item, "visible", false);
368+
369+ surface.setState(MirSurfaceItem.Restored);
370+ tryCompare(item, "visible", true);
371+
372+ surface.setState(MirSurfaceItem.Minimized);
373+ tryCompare(item, "visible", false);
374+
375+ surface.setState(MirSurfaceItem.Maximized);
376+ tryCompare(item, "visible", true);
377+
378+ surface.setState(MirSurfaceItem.Minimized);
379+ tryCompare(item, "visible", false);
380+ }
381+
382+ function test_surfaceLosesFocusWhilePanelIsOpen() {
383+ var app = ApplicationManager.startApplication("dialer-app");
384+ // wait until the app is fully loaded (ie, real surface replaces splash screen)
385+ tryCompareFunction(function() { return app.surface != null }, true);
386+
387+ tryCompare(app.surface, "focus", true);
388+
389+ // Drag the indicators panel half-open
390+ var touchX = shell.width / 2;
391+ var indicators = findChild(shell, "indicators");
392+ touchFlick(indicators,
393+ touchX /* fromX */, indicators.panelHeight * 0.5 /* fromY */,
394+ touchX /* toX */, shell.height * 0.5 /* toY */,
395+ true /* beginTouch */, false /* endTouch */);
396+ verify(indicators.partiallyOpened);
397+
398+ tryCompare(app.surface, "focus", false);
399+
400+ // And finish getting it open
401+ touchFlick(indicators,
402+ touchX /* fromX */, shell.height * 0.5 /* fromY */,
403+ touchX /* toX */, shell.height * 0.9 /* toY */,
404+ false /* beginTouch */, true /* endTouch */);
405+ tryCompare(indicators, "fullyOpened", true);
406+
407+ tryCompare(app.surface, "focus", false);
408+
409+ dragToCloseIndicatorsPanel();
410+
411+ tryCompare(app.surface, "focus", true);
412+ }
413+
361 // Wait for the whole UI to settle down
414 // Wait for the whole UI to settle down
362 function waitForUIToSettle() {
415 function waitForUIToSettle() {
363 waitUntilApplicationWindowIsFullyHidden();
416 waitUntilApplicationWindowIsFullyHidden();
@@ -365,6 +418,18 @@ Item {
365 tryCompare(dashContentList, "moving", false);
418 tryCompare(dashContentList, "moving", false);
366 }
419 }
367
420
421+ function dragToCloseIndicatorsPanel() {
422+ var indicators = findChild(shell, "indicators");
423+
424+ var touchStartX = shell.width / 2;
425+ var touchStartY = shell.height - (indicators.panelHeight * 0.5);
426+ touchFlick(shell,
427+ touchStartX, touchStartY,
428+ touchStartX, shell.height * 0.1);
429+
430+ tryCompare(indicators, "fullyClosed", true);
431+ }
432+
368 function dragLauncherIntoView() {
433 function dragLauncherIntoView() {
369 var launcherPanel = findChild(shell, "launcherPanel");
434 var launcherPanel = findChild(shell, "launcherPanel");
370 verify(launcherPanel.x = - launcherPanel.width);
435 verify(launcherPanel.x = - launcherPanel.width);
@@ -489,7 +554,7 @@ Item {
489 {tag: "under greeter", greeter: true, app: false, launcher: false, indicators: false, expectedShown: false},
554 {tag: "under greeter", greeter: true, app: false, launcher: false, indicators: false, expectedShown: false},
490 {tag: "under app", greeter: false, app: true, launcher: false, indicators: false, expectedShown: false},
555 {tag: "under app", greeter: false, app: true, launcher: false, indicators: false, expectedShown: false},
491 {tag: "under launcher", greeter: false, app: false, launcher: true, indicators: false, expectedShown: true},
556 {tag: "under launcher", greeter: false, app: false, launcher: true, indicators: false, expectedShown: true},
492− {tag: "under indicators", greeter: false, app: false, launcher: false, indicators: true, expectedShown: true},
557+ {tag: "under indicators", greeter: false, app: false, launcher: false, indicators: true, expectedShown: false},
493 ]
558 ]
494 }
559 }
495
560
@@ -519,16 +584,39 @@ Item {
519 }
584 }
520
585
521 function test_focusRequestedHidesGreeter() {
586 function test_focusRequestedHidesGreeter() {
522− var greeter = findChild(shell, "greeter")
587+ var greeter = findChild(shell, "greeter");
523
588
524− greeter.show()
589+ var app = ApplicationManager.startApplication("dialer-app");
525− tryCompare(greeter, "showProgress", 1)
590+ // wait until the app is fully loaded (ie, real surface replaces splash screen)
591+ tryCompareFunction(function() { return app.surface != null }, true);
526
592
593+ // Minimize the application we just launched
594+ swipeFromLeftEdge(units.gu(27));
595+
596+ // Wait for the whole UI to settle down
597+ waitUntilApplicationWindowIsFullyHidden();
598+
599+ greeter.show();
600+ tryCompare(greeter, "showProgress", 1);
601+
602+ // The main point of this test
527− ApplicationManager.focusRequested("notes-app")
603+ ApplicationManager.requestFocusApplication("dialer-app");
528− tryCompare(greeter, "showProgress", 0)
604+ tryCompare(greeter, "showProgress", 0);
529− waitUntilApplicationWindowIsFullyVisible()
605+ waitForRendering(greeter);
530 }
606 }
531
607
608+ function test_focusRequestedHidesIndicators() {
609+ var indicators = findChild(shell, "indicators");
610+
611+ showIndicators();
612+
613+ ApplicationManager.startApplication("camera-app");
614+ tryCompare(ApplicationManager, "count", 1);
615+
616+ tryCompare(indicators, "fullyClosed", true);
617+ }
618+
619+
532 function test_showGreeterDBusCall() {
620 function test_showGreeterDBusCall() {
533 var greeter = findChild(shell, "greeter")
621 var greeter = findChild(shell, "greeter")
534 tryCompare(greeter, "showProgress", 0)
622 tryCompare(greeter, "showProgress", 0)
@@ -547,5 +635,18 @@ Item {
547 swipeAwayGreeter()
635 swipeAwayGreeter()
548 tryCompare(sessionSpy, "count", 1)
636 tryCompare(sessionSpy, "count", 1)
549 }
637 }
638+
639+ function test_fullscreen() {
640+ var panel = findChild(shell, "panel");
641+ compare(panel.fullscreenMode, false);
642+ ApplicationManager.startApplication("camera-app");
643+ tryCompare(panel, "fullscreenMode", true);
644+ ApplicationManager.startApplication("gallery-app");
645+ tryCompare(panel, "fullscreenMode", false);
646+ ApplicationManager.requestFocusApplication("camera-app");
647+ tryCompare(panel, "fullscreenMode", true);
648+ ApplicationManager.requestFocusApplication("gallery-app");
649+ tryCompare(panel, "fullscreenMode", false);
650+ }
550 }
651 }
551}
652}