on xenial help sign in
Merged with trunk.
commit91b4bd63c11fb01c591cca4cc235ad25c621ca48 authorLeo Arias <leo.arias@canonical.com> dateThu 10 Jul 2014, 08:19 (12 years ago) parent1ff9280d0b53b9
182 files changed+4853−1953
build.sh+1 debian/changelog+47 debian/control+5−4 doc/CMakeLists.txt+2 plugins/Dash/CardCreator.js+7−4 plugins/Dash/ScopeStyle.qml+87 plugins/Dash/qmldir+1 plugins/Ubuntu/Gestures/DirectionalDragArea.cpp+1 plugins/Ubuntu/Gestures/DirectionalDragArea.h+1 plugins/Unity/Launcher/launchermodel.cpp+3−1 po/am.po+33−9 po/ar.po+33−9 po/ast.po+33−9 po/az.po+33−9 po/bg.po+33−9 po/br.po+33−9 po/bs.po+31−7 po/ca.po+33−9 po/ckb.po+33−9 po/cs.po+33−9 po/da.po+31−7 po/de.po+33−9 po/el.po+33−9 po/en_AU.po+31−7 po/en_GB.po+33−9 po/eo.po+31−7 po/es.po+33−9 po/eu.po+33−9 po/fa.po+31−7 po/fi.po+34−10 po/fo.po+31−7 po/fr.po+35−11 po/gd.po+33−9 po/gl.po+34−10 po/he.po+33−9 po/hi.po+31−7 po/hr.po+31−7 po/hu.po+33−9 po/hy.po+31−7 po/id.po+31−7 po/is.po+31−7 po/it.po+34−10 po/ja.po+33−9 po/km.po+33−9 po/kn.po+31−7 po/ko.po+31−7 po/ky.po+31−7 po/lo.po+31−7 po/lt.po+33−9 po/lv.po+34−10 po/ml.po+33−9 po/mr.po+31−7 po/ms.po+33−9 po/my.po+33−9 po/nb.po+33−9 po/nl.po+33−9 po/pl.po+33−9 po/pt.po+31−7 po/pt_BR.po+33−9 po/ro.po+31−7 po/ru.po+33−9 po/shn.po+31−7 po/si.po+31−7 po/sl.po+33−9 po/sq.po+31−7 po/sr.po+31−7 po/sv.po+31−7 po/sw.po+32−8 po/ta.po+31−7 po/te.po+31−7 po/tr.po+33−9 po/ug.po+34−10 po/uk.po+33−9 po/vi.po+31−7 po/xh.po+31−7 po/zh_CN.po+33−9 po/zh_HK.po+33−9 po/zh_TW.po+32−8 qml/Components/BaseCarouselDelegate.qml+19 qml/Components/Carousel.qml+5−14 qml/Components/ListItems/Header.qml+1 qml/Components/PageHeader.qml+221−313 qml/Components/PageHeaderLabel.qml−41 qml/Components/SearchHistoryModel.qml → qml/Components/SearchHistoryModel/SearchHistoryModel.qml+1 qml/Components/SearchHistoryModel/qmldir+1 qml/Components/graphics/headerback@27.png qml/Dash/CardCarousel.qml+7−4 qml/Dash/CardFilterGrid.qml+1 qml/Dash/CardVerticalJournal.qml+2−1 qml/Dash/Dash.qml+14−15 qml/Dash/DashContent.qml+7−84 qml/Dash/DashDepartments.qml+8−7 qml/Dash/DashDepartmentsList.qml+19−17 qml/Dash/DashRenderer.qml+5−4 qml/Dash/GenericScopeView.qml+57−29 qml/Dash/PreviewListView.qml+8−22 qml/Dash/Previews/Preview.qml+4 qml/Dash/Previews/PreviewAudioPlayback.qml+3−3 qml/Dash/Previews/PreviewHeader.qml+1−1 qml/Dash/Previews/PreviewRatingDisplay.qml+3−4 qml/Dash/Previews/PreviewRatingInput.qml+2−4 qml/Dash/Previews/PreviewTextSummary.qml+2−4 qml/Dash/Previews/PreviewWidget.qml+3 qml/Dash/Previews/PreviewWidgetFactory.qml+4 qml/Dash/ScopeItem.qml−106 qml/Dash/graphics/icon_listview_clear@20.png qml/Dash/graphics/phone/screenshots/phone@12.png → qml/Dash/graphics/phone/screenshots/dialer@12.png qml/Dash/graphics/tick@30.png qml/Hud/HudParametrizedActionsPage.qml+2−2 qml/Launcher/Launcher.qml+33−3 qml/Launcher/LauncherDelegate.qml+35−13 qml/Launcher/LauncherPanel.qml+19−15 qml/Launcher/graphics/divider-line.png qml/Launcher/graphics/highlight@18.png qml/Launcher/graphics/home@18.png qml/Launcher/graphics/icon-top-highlight.png qml/Launcher/graphics/launcher_bg@30.png qml/Launcher/graphics/launcher_bg@30.sci−5 qml/Launcher/graphics/non-selected@18.png qml/Launcher/graphics/non-selected@18.sci−5 qml/Launcher/graphics/selected@18.png qml/Launcher/graphics/selected@18.sci−5 qml/Launcher/graphics/triangle@18.png qml/Panel/ActiveCallHint.qml+206 qml/Panel/IndicatorRow.qml+1−1 qml/Panel/Indicators.qml+22−36 qml/Panel/Panel.qml+131−90 qml/ScopeTool.qml−1 qml/Shell.qml+14−15 qml/graphics/applicationIcons/phone-app@18.png → qml/graphics/applicationIcons/dialer-app@18.png tests/autopilot/unity8/shell/emulators/dash.py+29−26 tests/autopilot/unity8/shell/emulators/main_window.py−5 tests/autopilot/unity8/shell/tests/test_emulators.py−1 tests/autopilot/unity8/shell/tests/test_notifications.py+4−4 tests/mocks/Ubuntu/CMakeLists.txt+1 tests/mocks/Ubuntu/Telephony/CMakeLists.txt+22 tests/mocks/Ubuntu/Telephony/ContactWatcherData.cpp+43 tests/mocks/Ubuntu/Telephony/ContactWatcherData.h+46 tests/mocks/Ubuntu/Telephony/MockCallEntry.cpp+66 tests/mocks/Ubuntu/Telephony/MockCallEntry.h+57 tests/mocks/Ubuntu/Telephony/MockCallManager.cpp+80 tests/mocks/Ubuntu/Telephony/MockCallManager.h+60 tests/mocks/Ubuntu/Telephony/MockContactWatcher.cpp+50 tests/mocks/Ubuntu/Telephony/MockContactWatcher.h+49 tests/mocks/Ubuntu/Telephony/MockTelepathyHelper.cpp+35 tests/mocks/Ubuntu/Telephony/MockTelepathyHelper.h+36 tests/mocks/Ubuntu/Telephony/plugin.cpp+52 tests/mocks/Ubuntu/Telephony/plugin.h+37 tests/mocks/Ubuntu/Telephony/qmldir+2 tests/mocks/Unity/Application/ApplicationManager.cpp+3−3 tests/mocks/Unity/CMakeLists.txt+1−1 tests/mocks/Unity/Launcher/MockLauncherModel.cpp+7−2 tests/mocks/Unity/fake_categories.cpp+4 tests/mocks/Unity/fake_scope.cpp+58−19 tests/mocks/Unity/fake_scope.h+2 tests/mocks/Unity/fake_unity_plugin.cpp+1 tests/plugins/Dash/CMakeLists.txt+2 tests/plugins/Dash/cardcreator/1.res+3−2 tests/plugins/Dash/cardcreator/2.res+5−5 tests/plugins/Dash/cardcreator/3.res+6−4 tests/plugins/Dash/cardcreator/4.res+4−3 tests/plugins/Dash/cardcreator/5.res+3−2 tests/plugins/Dash/cardcreator/6.res+66 tests/plugins/Dash/cardcreator/6.tst+3 tests/plugins/Dash/tst_ScopeStyle.qml+151 tests/plugins/Unity/Launcher/launchermodeltest.cpp+9 tests/qmltests/CMakeLists.txt+2−1 tests/qmltests/Components/tst_Carousel.qml+48−2 tests/qmltests/Components/tst_PageHeaderLabel.qml → tests/qmltests/Components/tst_PageHeader.qml+90−54 tests/qmltests/Components/tst_PageHeader/logo-ubuntu-orange.svg+60 tests/qmltests/Dash/Apps/tst_RunningApplicationsGrid.qml+2−2 tests/qmltests/Dash/Previews/tst_Preview.qml+2−2 tests/qmltests/Dash/Previews/tst_PreviewRatingDisplay.qml+13 tests/qmltests/Dash/tst_Dash.qml−39 tests/qmltests/Dash/tst_DashContent.qml+4−152 tests/qmltests/Dash/tst_GenericScopeView.qml+98−45 tests/qmltests/Launcher/tst_Launcher.qml+2−2 tests/qmltests/Notifications/tst_VisualSnapDecisionsQueue.qml+1−1 tests/qmltests/Panel/tst_ActiveCallHint.qml+165 tests/qmltests/Panel/tst_Indicators.qml+10−21 tests/qmltests/Panel/tst_Panel.qml+147−82 tests/qmltests/tst_Shell.qml+1−37
build.sh+1
@@ -48,6 +48,7 @@ install_dependencies() {
4848 qtdeclarative5-gsettings1.0 \
4949 qtdeclarative5-ubuntu-ui-toolkit-plugin \
5050 qtdeclarative5-ubuntu-settings-components \
51+ qtdeclarative5-ubuntu-telephony0.1 \
5152 qtdeclarative5-ubuntu-thumbnailer0.1 \
5253 unity-notifications-impl \
5354 ubuntu-mobile-icons \
debian/changelog+47
@@ -1,3 +1,50 @@
1+unity8 (7.90+14.10.20140709.2-0ubuntu1) utopic; urgency=low
2+
3+ [ Michal Hruby ]
4+ * Fix FTBFS when using latest unity-api.
5+
6+ [ Michał Sawicz ]
7+ * Refactor carousel item activation.
8+ * Refactor ScopeItem into GenericScopeView.
9+ * Add initial support for scope customizations.
10+ * Make rating stars in PreviewReviewDisplay.qml non-interactive. (LP:
11+ #1337508)
12+
13+ [ Nick Dedekind ]
14+ * Added active call hint A hint is displayed in the indicator panel
15+ when an call is active on the Telephony Serivce
16+
17+ [ Albert Astals ]
18+ * We need to boostrap height also when we have 1 item ^_^ (LP:
19+ #1337408)
20+ * Add initial support for scope customizations.
21+ * CardCreator: Give a correct implicitHeight if we only have art The
22+ hasSubtitle change is really unrelated and not needed here, just
23+ sneaking it in to not create yet another review. (LP: #1330899)
24+ * Fake Scopes Plugin: Register PreviewModelInterface
25+
26+ [ Michael Zanetti ]
27+ * make the launcher's drag'n'drop indicator more prominent (LP:
28+ #1332042)
29+ * make launcher items live having them non-live is not really required
30+ and reveals an issue in combination with UbuntuShape (LP: #1302761)
31+ * Fade out launcher in place instead of moving it to the left on long
32+ left edge swipes. (LP: #1332096)
33+ * update launcher icon glow as requested by design (LP: #1336725)
34+ * update header in dash to use the new header from the SDK (LP:
35+ #1335491)
36+ * fix testPreview with larger GRID_UNIT_PX values
37+ * clip the corner of pinned icons in the launcher as per new design
38+ * update launcher background according to latest design (LP: #1336314)
39+ * Update Launcher's home button design according to new spec. (LP:
40+ #1329331)
41+
42+ [ CI bot ]
43+ * make launcher items live having them non-live is not really required
44+ and reveals an issue in combination with UbuntuShape (LP: #1302761)
45+
46+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Wed, 09 Jul 2014 19:46:11 +0000
47+
148unity8 (7.90+14.10.20140707-0ubuntu1) utopic; urgency=low
249
350 [ Nick Dedekind ]
debian/control+5−4
@@ -19,7 +19,7 @@ Build-Depends: cmake,
1919 libpulse-dev,
2020 libqmenumodel-dev (>= 0.2.7),
2121 libqt5xmlpatterns5-dev,
22− libunity-api-dev (>= 7.83),
22+ libunity-api-dev (>= 7.85),
2323 libunity-mir-dev,
2424 libusermetricsoutput1-dev,
2525 libxcb1-dev,
@@ -40,7 +40,7 @@ Build-Depends: cmake,
4040 qtdeclarative5-private-dev (>= 5.2.1),
4141 qtdeclarative5-qtmultimedia-plugin,
4242 qtdeclarative5-ubuntu-settings-components (>= 0.3),
43− qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 0.1.48) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 0.1.48),
43+ qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 0.1.49) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 0.1.49),
4444 ttf-ubuntu-font-family,
4545Standards-Version: 3.9.4
4646Homepage: http://launchpad.net/unity
@@ -53,7 +53,7 @@ Vcs-Browser: https://bazaar.launchpad.net/~unity-team/unity8/trunk
5353Package: indicators-client
5454Architecture: amd64 armhf i386
5555Depends: qmenumodel-qml (>= 0.2.7),
56− qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 0.1.48) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 0.1.48),
56+ qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 0.1.49) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 0.1.49),
5757 unity8 (= ${binary:Version}),
5858 ${misc:Depends},
5959 ${shlibs:Depends},
@@ -81,6 +81,7 @@ Depends: gsettings-desktop-schemas,
8181 qml-module-qtquick-xmllistmodel,
8282 qtdeclarative5-gsettings1.0,
8383 qtdeclarative5-ubuntu-settings-components (>= 0.3),
84+ qtdeclarative5-ubuntu-telephony0.1,
8485 unity-launcher-impl-3,
8586 unity8-common (= ${source:Version}),
8687 unity8-private (= ${binary:Version}),
@@ -101,7 +102,7 @@ Description: Unity 8 shell
101102Package: unity8-common
102103Architecture: all
103104Depends: qtdeclarative5-ubuntu-thumbnailer0.1 | ubuntu-thumbnailer-impl,
104− qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 0.1.48) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 0.1.48),
105+ qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 0.1.49) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 0.1.49),
105106 qtdeclarative5-unity-notifications-plugin | unity-notifications-impl,
106107 ubuntu-thumbnailer-impl-0,
107108 unity-application-impl-2,
doc/CMakeLists.txt+2
@@ -15,6 +15,8 @@ else()
1515 ${CMAKE_SOURCE_DIR}/src/*.cpp
1616 ${CMAKE_SOURCE_DIR}/plugins/*.h
1717 ${CMAKE_SOURCE_DIR}/plugins/*.cpp
18+ ${CMAKE_SOURCE_DIR}/plugins/*.qml
19+ ${CMAKE_SOURCE_DIR}/plugins/*.js
1820 ${CMAKE_SOURCE_DIR}/qml/*.qml
1921 ${CMAKE_SOURCE_DIR}/qml/*.js
2022 ${CMAKE_SOURCE_DIR}/tests/autopilot/*.py
plugins/Dash/CardCreator.js+7−4
@@ -289,6 +289,7 @@ function cardString(template, components) {
289289 property var cardData; \n\
290290 property var artShapeBorderSource: undefined; \n\
291291 property real fontScale: 1.0; \n\
292+ property var scopeStyle: null; \n\
292293 property int headerAlignment: Text.AlignLeft; \n\
293294 property int fixedHeaderHeight: -1; \n\
294295 property size fixedArtShapeSize: Qt.size(-1, -1); \n\
@@ -305,7 +306,7 @@ function cardString(template, components) {
305306 var hasTitle = components["title"] || false;
306307 var hasMascot = components["mascot"] || false;
307308 var headerAsOverlay = hasArt && template && template["overlay"] === true && (hasTitle || hasMascot);
308− var hasSubtitle = components["subtitle"] || false;
309+ var hasSubtitle = hasTitle && components["subtitle"] || false;
309310 var hasHeaderRow = hasMascot && hasTitle;
310311
311312 if (hasBackground) {
@@ -407,7 +408,7 @@ function cardString(template, components) {
407408 mascotCode = kMascotImageCode.arg(anchors).arg(mascotImageVisible);
408409 }
409410
410− var summaryColorWithBackground = 'backgroundLoader.active && backgroundLoader.item && backgroundLoader.item.luminance < 0.7 ? "white" : "grey"';
411+ var summaryColorWithBackground = 'backgroundLoader.active && backgroundLoader.item && backgroundLoader.item.luminance < 0.7 ? "white" : (root.scopeStyle ? root.scopeStyle.foreground : "grey")';
411412
412413 var titleSubtitleCode = "";
413414 if (hasTitle) {
@@ -419,7 +420,7 @@ function cardString(template, components) {
419420 } else if (hasBackground) {
420421 color = summaryColorWithBackground;
421422 } else {
422− color = '"grey"';
423+ color = 'root.scopeStyle ? root.scopeStyle.foreground : "grey"';
423424 }
424425
425426 var titleAnchors;
@@ -495,7 +496,7 @@ function cardString(template, components) {
495496 if (hasBackground) {
496497 color = summaryColorWithBackground;
497498 } else {
498− color = '"grey"';
499+ color = 'root.scopeStyle ? root.scopeStyle.foreground : "grey"';
499500 }
500501
501502 var summaryTopMargin = (hasMascot || hasSubtitle ? 'anchors.margins' : '0');
@@ -513,6 +514,8 @@ function cardString(template, components) {
513514 code += 'implicitHeight: subtitleLabel.y + subtitleLabel.height + units.gu(1);\n';
514515 } else if (hasTitle) {
515516 code += 'implicitHeight: titleLabel.y + titleLabel.height + units.gu(1);\n';
517+ } else if (hasArt) {
518+ code += 'implicitHeight: artShapeHolder.height;\n';
516519 }
517520 // Close the AbstractButton
518521 code += '}\n';
plugins/Dash/ScopeStyle.qmlnew file+87
@@ -0,0 +1,87 @@
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 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.2
18+
19+/*! \brief Helper for processing scope customization options.
20+
21+ It will take the customizations object passed by the scope and
22+ process it to provide the scope UI with data such as colors or
23+ image paths.
24+ */
25+
26+QtObject {
27+ /// Style object passed from the scope
28+ property var style: Object()
29+
30+ /*! \brief Calculate luminance of the passed color
31+
32+ \note If not fully opaque, luminance is dependant on blending.
33+ */
34+ function luminance(color) {
35+ return 0.2126 * color.r + 0.7152 * color.g + 0.0722 * color.b;
36+ }
37+
38+ /// Color used for text and symbolic icons
39+ readonly property color foreground: "foreground-color" in style ? style["foreground-color"] : d.defaultDark
40+
41+ /// Color used for the overall background
42+ readonly property color background: "background-color" in style ? style["background-color"] : "transparent"
43+
44+ /*! \brief Luminance threshold for switching between fore and background color
45+
46+ \note If background colour is not fully opaque, it's not taken into account.
47+ */
48+ readonly property real threshold: background.a !== 1.0 ? d.foregroundLuminance : (d.foregroundLuminance + d.backgroundLuminance) / 2
49+
50+ /*! \brief The lighter of foreground and background colors
51+
52+ \note If background color is not fully opaque, it's not taken into account
53+ and defaults to the theme-provided light color.
54+ */
55+ readonly property color light: {
56+ if (background.a !== 1.0) return d.foregroundLuminance > d.defaultLightLuminance ? foreground : d.defaultLight;
57+ return d.foregroundLuminance > d.backgroundLuminance ? foreground : background;
58+ }
59+
60+ /*! \brief The darker of foreground and background colors
61+
62+ \note If background color is not fully opaque, it's not taken into account
63+ and defaults to the theme-provided dark color.
64+ */
65+ readonly property color dark: {
66+ if (background.a !== 1.0) return d.foregroundLuminance < d.defaultDarkLuminance ? foreground : d.defaultDark;
67+ return d.foregroundLuminance < d.backgroundLuminance ? foreground : background;
68+ }
69+
70+ /// Source of the logo image for the header
71+ readonly property url headerLogo: "logo" in d.headerStyle ? d.headerStyle["logo"] : ""
72+
73+ //! @cond
74+ property var d: QtObject {
75+ readonly property real foregroundLuminance: luminance(foreground)
76+ readonly property real backgroundLuminance: luminance(background)
77+
78+ // FIXME: should be taken from the theme
79+ readonly property color defaultLight: "white"
80+ readonly property color defaultDark: "grey"
81+ readonly property real defaultLightLuminance: luminance(defaultLight)
82+ readonly property real defaultDarkLuminance: luminance(defaultDark)
83+
84+ readonly property var headerStyle: "page-header" in style ? style["page-header"] : { }
85+ }
86+ //! @endcond
87+}
plugins/Dash/qmldir+1
@@ -2,3 +2,4 @@ module Dash
22plugin Dash-qml
33typeinfo Dash.qmltypes
44singleton CardCreatorCache 0.1 CardCreatorCache.qml
5+ScopeStyle 0.1 ScopeStyle.qml
plugins/Ubuntu/Gestures/DirectionalDragArea.cpp+1
@@ -378,6 +378,7 @@ void DirectionalDragArea::touchEvent_undecided(QTouchEvent *event)
378378 // touch has ended before recognition concluded
379379 DDA_DEBUG("Touch has ended before recognition concluded");
380380 setStatus(WaitingForTouch);
381+ Q_EMIT tapped();
381382 return;
382383 }
383384
plugins/Ubuntu/Gestures/DirectionalDragArea.h+1
@@ -212,6 +212,7 @@ Q_SIGNALS:
212212 void touchYChanged(qreal value);
213213 void touchSceneXChanged(qreal value);
214214 void touchSceneYChanged(qreal value);
215+ void tapped();
215216
216217protected:
217218 virtual void touchEvent(QTouchEvent *event);
plugins/Unity/Launcher/launchermodel.cpp+3−1
@@ -128,7 +128,7 @@ void LauncherModel::pin(const QString &appId, int index)
128128 if (index == -1 || index == currentIndex) {
129129 m_list.at(currentIndex)->setPinned(true);
130130 QModelIndex modelIndex = this->index(currentIndex);
131− Q_EMIT dataChanged(modelIndex, modelIndex);
131+ Q_EMIT dataChanged(modelIndex, modelIndex, QVector<int>() << RolePinned);
132132 } else {
133133 move(currentIndex, index);
134134 // move() will store the list to the backend itself, so just exit at this point.
@@ -159,6 +159,8 @@ void LauncherModel::requestRemove(const QString &appId)
159159
160160 if (m_appManager->findApplication(appId)) {
161161 m_list.at(index)->setPinned(false);
162+ QModelIndex modelIndex = this->index(index);
163+ Q_EMIT dataChanged(modelIndex, modelIndex, QVector<int>() << RolePinned);
162164 return;
163165 }
164166
po/am.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-01-18 19:28+0000\n"
1212"Last-Translator: samson <Unknown>\n"
1313"Language-Team: Amharic <am@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "ማስነሻው ላይ መቆለፊያ"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "ከማስነሻው ላይ ማላቀቂያ"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -80,7 +80,7 @@ msgstr ""
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr ""
8686
@@ -165,11 +165,35 @@ msgstr "የመግቢያ ቃል ማሳያ"
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr "መፈለጊያ"
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr "እባክዎን ያስገቡ %1"
po/ar.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-05-22 08:22+0000\n"
1212"Last-Translator: Ibrahim Saed <ibraheem5000@gmail.com>\n"
1313"Language-Team: Arabic <ar@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "ثبّت في الشريط"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "فُك التثبيت من الشريط"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -83,7 +83,7 @@ msgstr "مكالمة طوارئ"
8383msgid "OK"
8484msgstr ""
8585
86−#: qml/Components/PageHeader.qml:365
86+#: qml/Components/PageHeader.qml:366
8787msgid "Recent searches"
8888msgstr "عمليات البحث الأخيرة"
8989
@@ -168,11 +168,35 @@ msgstr "عرض كلمة السر"
168168msgid "Please enter SIM PIN"
169169msgstr "من فضلك أدخِل رقم التعريف الشخصي لبطاقة SIM"
170170
171+#: qml/Panel/Indicators/MenuItemFactory.qml:583
172+msgid "In queue…"
173+msgstr ""
174+
175+#: qml/Panel/Indicators/MenuItemFactory.qml:587
176+msgid "Downloading"
177+msgstr ""
178+
179+#: qml/Panel/Indicators/MenuItemFactory.qml:589
180+msgid "Paused, tap to resume"
181+msgstr ""
182+
183+#: qml/Panel/Indicators/MenuItemFactory.qml:591
184+msgid "Canceled"
185+msgstr ""
186+
187+#: qml/Panel/Indicators/MenuItemFactory.qml:593
188+msgid "Finished"
189+msgstr ""
190+
191+#: qml/Panel/Indicators/MenuItemFactory.qml:595
192+msgid "Failed, tap to retry"
193+msgstr ""
194+
171195#: qml/Panel/SearchIndicator.qml:27
172196msgid "Search"
173197msgstr "ابحث"
174198
175−#: qml/Shell.qml:334
199+#: qml/Shell.qml:359
176200#, qt-format
177201msgid "Please enter %1"
178202msgstr "من فضلك أدخِل %1"
po/ast.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-07-04 15:29+0000\n"
1212"Last-Translator: ivarela <ivarela@ubuntu.com>\n"
1313"Language-Team: Asturian <ast@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-05 05:59+0000\n"
18−"X-Generator: Launchpad (build 17086)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "Caltener nel Llanzador"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "Nun caltener nel llanzador"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -84,7 +84,7 @@ msgstr "Llamada d'emerxencia"
8484msgid "OK"
8585msgstr "Aceutar"
8686
87−#: qml/Components/PageHeader.qml:365
87+#: qml/Components/PageHeader.qml:366
8888msgid "Recent searches"
8989msgstr "Busques recientes"
9090
@@ -169,11 +169,35 @@ msgstr "Amosar contraseña"
169169msgid "Please enter SIM PIN"
170170msgstr "Escribi'l PIN de la SIM"
171171
172+#: qml/Panel/Indicators/MenuItemFactory.qml:583
173+msgid "In queue…"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:587
177+msgid "Downloading"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:589
181+msgid "Paused, tap to resume"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:591
185+msgid "Canceled"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:593
189+msgid "Finished"
190+msgstr ""
191+
192+#: qml/Panel/Indicators/MenuItemFactory.qml:595
193+msgid "Failed, tap to retry"
194+msgstr ""
195+
172196#: qml/Panel/SearchIndicator.qml:27
173197msgid "Search"
174198msgstr "Guetar"
175199
176−#: qml/Shell.qml:334
200+#: qml/Shell.qml:359
177201#, qt-format
178202msgid "Please enter %1"
179203msgstr "Introduz %1"
po/az.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-01-15 09:50+0000\n"
1212"Last-Translator: Turan Mahmudov <turan.mahmudov@gmail.com>\n"
1313"Language-Team: Azerbaijani <az@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "Panelə Bərkit"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "Paneldən Qaldır"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -81,7 +81,7 @@ msgstr "Zərurət zəngi"
8181msgid "OK"
8282msgstr ""
8383
84−#: qml/Components/PageHeader.qml:365
84+#: qml/Components/PageHeader.qml:366
8585msgid "Recent searches"
8686msgstr "Son axtarışlar"
8787
@@ -166,11 +166,35 @@ msgstr "Parolu göstər"
166166msgid "Please enter SIM PIN"
167167msgstr ""
168168
169+#: qml/Panel/Indicators/MenuItemFactory.qml:583
170+msgid "In queue…"
171+msgstr ""
172+
173+#: qml/Panel/Indicators/MenuItemFactory.qml:587
174+msgid "Downloading"
175+msgstr ""
176+
177+#: qml/Panel/Indicators/MenuItemFactory.qml:589
178+msgid "Paused, tap to resume"
179+msgstr ""
180+
181+#: qml/Panel/Indicators/MenuItemFactory.qml:591
182+msgid "Canceled"
183+msgstr ""
184+
185+#: qml/Panel/Indicators/MenuItemFactory.qml:593
186+msgid "Finished"
187+msgstr ""
188+
189+#: qml/Panel/Indicators/MenuItemFactory.qml:595
190+msgid "Failed, tap to retry"
191+msgstr ""
192+
169193#: qml/Panel/SearchIndicator.qml:27
170194msgid "Search"
171195msgstr "Axtar"
172196
173−#: qml/Shell.qml:334
197+#: qml/Shell.qml:359
174198#, qt-format
175199msgid "Please enter %1"
176200msgstr "Xahiş edirik daxil edin: %1"
po/bg.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-04-01 14:08+0000\n"
1212"Last-Translator: Atanas Kovachki <Unknown>\n"
1313"Language-Team: Bulgarian <bg@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "Заключване към панела"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "Отключи от панела за стартиране"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -87,7 +87,7 @@ msgstr "Спешно повикване"
8787msgid "OK"
8888msgstr ""
8989
90−#: qml/Components/PageHeader.qml:365
90+#: qml/Components/PageHeader.qml:366
9191msgid "Recent searches"
9292msgstr "Последни търсения"
9393
@@ -172,11 +172,35 @@ msgstr "Покажи паролата"
172172msgid "Please enter SIM PIN"
173173msgstr ""
174174
175+#: qml/Panel/Indicators/MenuItemFactory.qml:583
176+msgid "In queue…"
177+msgstr ""
178+
179+#: qml/Panel/Indicators/MenuItemFactory.qml:587
180+msgid "Downloading"
181+msgstr ""
182+
183+#: qml/Panel/Indicators/MenuItemFactory.qml:589
184+msgid "Paused, tap to resume"
185+msgstr ""
186+
187+#: qml/Panel/Indicators/MenuItemFactory.qml:591
188+msgid "Canceled"
189+msgstr ""
190+
191+#: qml/Panel/Indicators/MenuItemFactory.qml:593
192+msgid "Finished"
193+msgstr ""
194+
195+#: qml/Panel/Indicators/MenuItemFactory.qml:595
196+msgid "Failed, tap to retry"
197+msgstr ""
198+
175199#: qml/Panel/SearchIndicator.qml:27
176200msgid "Search"
177201msgstr "Търсене"
178202
179−#: qml/Shell.qml:334
203+#: qml/Shell.qml:359
180204#, qt-format
181205msgid "Please enter %1"
182206msgstr "Моля, въведете %1"
po/br.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-06-16 11:41+0000\n"
1212"Last-Translator: Fohanno Thierry <thierry.fohanno@ofis-bzh.org>\n"
1313"Language-Team: Breton <br@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "Stagañ ouzh al lañser"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "Distagañ diouzh al lañser"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -87,7 +87,7 @@ msgstr "Pellgomzadenn vallus"
8787msgid "OK"
8888msgstr "Mat eo"
8989
90−#: qml/Components/PageHeader.qml:365
90+#: qml/Components/PageHeader.qml:366
9191msgid "Recent searches"
9292msgstr "Enklaskoù graet nevez zo"
9393
@@ -172,11 +172,35 @@ msgstr "Diskouez ar ger-tremen"
172172msgid "Please enter SIM PIN"
173173msgstr "Ebarzhit kod PIN ho kartenn SIM, mar plij"
174174
175+#: qml/Panel/Indicators/MenuItemFactory.qml:583
176+msgid "In queue…"
177+msgstr ""
178+
179+#: qml/Panel/Indicators/MenuItemFactory.qml:587
180+msgid "Downloading"
181+msgstr ""
182+
183+#: qml/Panel/Indicators/MenuItemFactory.qml:589
184+msgid "Paused, tap to resume"
185+msgstr ""
186+
187+#: qml/Panel/Indicators/MenuItemFactory.qml:591
188+msgid "Canceled"
189+msgstr ""
190+
191+#: qml/Panel/Indicators/MenuItemFactory.qml:593
192+msgid "Finished"
193+msgstr ""
194+
195+#: qml/Panel/Indicators/MenuItemFactory.qml:595
196+msgid "Failed, tap to retry"
197+msgstr ""
198+
175199#: qml/Panel/SearchIndicator.qml:27
176200msgid "Search"
177201msgstr "Klask"
178202
179−#: qml/Shell.qml:334
203+#: qml/Shell.qml:359
180204#, qt-format
181205msgid "Please enter %1"
182206msgstr "Ebarzhit %1, mar plij"
po/bs.po+31−7
@@ -7,23 +7,23 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-01-16 22:33+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Bosnian <bs@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
22+msgid "Pin shortcut"
2323msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
26+msgid "Unpin shortcut"
2727msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
@@ -80,7 +80,7 @@ msgstr ""
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr ""
8686
@@ -165,11 +165,35 @@ msgstr ""
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr ""
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr ""
po/ca.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-06-13 07:47+0000\n"
1212"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
1313"Language-Team: Catalan <ca@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "Mantén-la al llançador"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "No la mantinguis al llançador"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -88,7 +88,7 @@ msgstr "Trucada d'emergència"
8888msgid "OK"
8989msgstr "D'acord"
9090
91−#: qml/Components/PageHeader.qml:365
91+#: qml/Components/PageHeader.qml:366
9292msgid "Recent searches"
9393msgstr "Cerques recents"
9494
@@ -173,11 +173,35 @@ msgstr "Mostra la contrasenya"
173173msgid "Please enter SIM PIN"
174174msgstr "Introduïu el PIN de la targeta SIM"
175175
176+#: qml/Panel/Indicators/MenuItemFactory.qml:583
177+msgid "In queue…"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:587
181+msgid "Downloading"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:589
185+msgid "Paused, tap to resume"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:591
189+msgid "Canceled"
190+msgstr ""
191+
192+#: qml/Panel/Indicators/MenuItemFactory.qml:593
193+msgid "Finished"
194+msgstr ""
195+
196+#: qml/Panel/Indicators/MenuItemFactory.qml:595
197+msgid "Failed, tap to retry"
198+msgstr ""
199+
176200#: qml/Panel/SearchIndicator.qml:27
177201msgid "Search"
178202msgstr "Cerca"
179203
180−#: qml/Shell.qml:334
204+#: qml/Shell.qml:359
181205#, qt-format
182206msgid "Please enter %1"
183207msgstr "Introduïu %1"
po/ckb.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-01-21 11:05+0000\n"
1212"Last-Translator: Aras <aras.noori@gmail.com>\n"
1313"Language-Team: Kurdish (Sorani) <ckb@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "چەسباندن بە لانچرەوە"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "ھەڵکەندن لە لانچر"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -80,7 +80,7 @@ msgstr "هێڵی فریاگوزاری"
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr "دوایین گەڕانەکان"
8686
@@ -165,11 +165,35 @@ msgstr "تێپەڕەوشە پیشان بدە"
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr "گەڕان"
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr "تکایە %1 بنووسە"
po/cs.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-01-08 10:11+0000\n"
1212"Last-Translator: Tadeáš Pařík <tadeas.parik@gmail.com>\n"
1313"Language-Team: Czech <cs@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "Přidat do Launcheru"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "Odebrat z Launcheru"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -80,7 +80,7 @@ msgstr "Tísňové volání"
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr "Poslední vyhledávání"
8686
@@ -165,11 +165,35 @@ msgstr "Zobrazit heslo"
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr "Hledat"
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr "Zadejte prosím %1"
po/da.po+31−7
@@ -7,23 +7,23 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-01-14 20:16+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Danish <da@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
22+msgid "Pin shortcut"
2323msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
26+msgid "Unpin shortcut"
2727msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
@@ -80,7 +80,7 @@ msgstr ""
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr ""
8686
@@ -165,11 +165,35 @@ msgstr ""
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr ""
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr ""
po/de.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-06-06 19:34+0000\n"
1212"Last-Translator: Phillip Sz <Unknown>\n"
1313"Language-Team: German <de@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "Im Starter sperren"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "Aus dem Starter entsperren"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -85,7 +85,7 @@ msgstr "Notruf"
8585msgid "OK"
8686msgstr ""
8787
88−#: qml/Components/PageHeader.qml:365
88+#: qml/Components/PageHeader.qml:366
8989msgid "Recent searches"
9090msgstr "Zuletzt verwendete Suchbegriffe"
9191
@@ -170,11 +170,35 @@ msgstr "Passwort anzeigen"
170170msgid "Please enter SIM PIN"
171171msgstr "Bitte die PIN der SIM eingeben"
172172
173+#: qml/Panel/Indicators/MenuItemFactory.qml:583
174+msgid "In queue…"
175+msgstr ""
176+
177+#: qml/Panel/Indicators/MenuItemFactory.qml:587
178+msgid "Downloading"
179+msgstr ""
180+
181+#: qml/Panel/Indicators/MenuItemFactory.qml:589
182+msgid "Paused, tap to resume"
183+msgstr ""
184+
185+#: qml/Panel/Indicators/MenuItemFactory.qml:591
186+msgid "Canceled"
187+msgstr ""
188+
189+#: qml/Panel/Indicators/MenuItemFactory.qml:593
190+msgid "Finished"
191+msgstr ""
192+
193+#: qml/Panel/Indicators/MenuItemFactory.qml:595
194+msgid "Failed, tap to retry"
195+msgstr ""
196+
173197#: qml/Panel/SearchIndicator.qml:27
174198msgid "Search"
175199msgstr "Suchen"
176200
177−#: qml/Shell.qml:334
201+#: qml/Shell.qml:359
178202#, qt-format
179203msgid "Please enter %1"
180204msgstr "Bitte geben Sie %1 ein"
po/el.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-02-26 09:58+0000\n"
1212"Last-Translator: j3lc <x_nikos@yahoo.gr>\n"
1313"Language-Team: Greek <el@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "Διατήρηση στον εκκινητή"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "Απομάκρυνση από τον εκκινητή"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -84,7 +84,7 @@ msgstr "Κλήση έκτακτης ανάγκης"
8484msgid "OK"
8585msgstr ""
8686
87−#: qml/Components/PageHeader.qml:365
87+#: qml/Components/PageHeader.qml:366
8888msgid "Recent searches"
8989msgstr "Πρόσφατες αναζητήσεις"
9090
@@ -169,11 +169,35 @@ msgstr "Εμφάνιση κωδικού"
169169msgid "Please enter SIM PIN"
170170msgstr "Παρακαλώ εισάγετε το PIN της κάρτας SIM"
171171
172+#: qml/Panel/Indicators/MenuItemFactory.qml:583
173+msgid "In queue…"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:587
177+msgid "Downloading"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:589
181+msgid "Paused, tap to resume"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:591
185+msgid "Canceled"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:593
189+msgid "Finished"
190+msgstr ""
191+
192+#: qml/Panel/Indicators/MenuItemFactory.qml:595
193+msgid "Failed, tap to retry"
194+msgstr ""
195+
172196#: qml/Panel/SearchIndicator.qml:27
173197msgid "Search"
174198msgstr "Αναζήτηση"
175199
176−#: qml/Shell.qml:334
200+#: qml/Shell.qml:359
177201#, qt-format
178202msgid "Please enter %1"
179203msgstr "Πληκτρολογήστε %1"
po/en_AU.po+31−7
@@ -7,23 +7,23 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2013-09-28 07:46+0000\n"
1212"Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
1313"Language-Team: English (Australia) <en_AU@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
22+msgid "Pin shortcut"
2323msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
26+msgid "Unpin shortcut"
2727msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
@@ -80,7 +80,7 @@ msgstr "Emergency Call"
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr "Recent searches"
8686
@@ -165,11 +165,35 @@ msgstr ""
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr "Search"
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr "Please enter %1"
po/en_GB.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-03-07 13:27+0000\n"
1212"Last-Translator: Andi Chandler <Unknown>\n"
1313"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "Lock to Launcher"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "Unlock from Launcher"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -82,7 +82,7 @@ msgstr "Emergency Call"
8282msgid "OK"
8383msgstr ""
8484
85−#: qml/Components/PageHeader.qml:365
85+#: qml/Components/PageHeader.qml:366
8686msgid "Recent searches"
8787msgstr "Recent searches"
8888
@@ -167,11 +167,35 @@ msgstr "Show password"
167167msgid "Please enter SIM PIN"
168168msgstr "Please enter SIM PIN"
169169
170+#: qml/Panel/Indicators/MenuItemFactory.qml:583
171+msgid "In queue…"
172+msgstr ""
173+
174+#: qml/Panel/Indicators/MenuItemFactory.qml:587
175+msgid "Downloading"
176+msgstr ""
177+
178+#: qml/Panel/Indicators/MenuItemFactory.qml:589
179+msgid "Paused, tap to resume"
180+msgstr ""
181+
182+#: qml/Panel/Indicators/MenuItemFactory.qml:591
183+msgid "Canceled"
184+msgstr ""
185+
186+#: qml/Panel/Indicators/MenuItemFactory.qml:593
187+msgid "Finished"
188+msgstr ""
189+
190+#: qml/Panel/Indicators/MenuItemFactory.qml:595
191+msgid "Failed, tap to retry"
192+msgstr ""
193+
170194#: qml/Panel/SearchIndicator.qml:27
171195msgid "Search"
172196msgstr "Search"
173197
174−#: qml/Shell.qml:334
198+#: qml/Shell.qml:359
175199#, qt-format
176200msgid "Please enter %1"
177201msgstr "Please enter %1"
po/eo.po+31−7
@@ -7,23 +7,23 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2013-06-26 22:35+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Esperanto <eo@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
22+msgid "Pin shortcut"
2323msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
26+msgid "Unpin shortcut"
2727msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
@@ -80,7 +80,7 @@ msgstr ""
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr ""
8686
@@ -165,11 +165,35 @@ msgstr ""
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr ""
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr ""
po/es.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-06-26 03:08+0000\n"
1212"Last-Translator: Adolfo Jayme <fitoschido@gmail.com>\n"
1313"Language-Team: Spanish <es@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-27 07:13+0000\n"
18−"X-Generator: Launchpad (build 17077)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "Fijar al lanzador"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "Quitar del lanzador"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -85,7 +85,7 @@ msgstr "Llamada de emergencia"
8585msgid "OK"
8686msgstr "Aceptar"
8787
88−#: qml/Components/PageHeader.qml:365
88+#: qml/Components/PageHeader.qml:366
8989msgid "Recent searches"
9090msgstr "Búsquedas recientes"
9191
@@ -170,11 +170,35 @@ msgstr "Mostrar contraseña"
170170msgid "Please enter SIM PIN"
171171msgstr "Escriba el PIN de la SIM"
172172
173+#: qml/Panel/Indicators/MenuItemFactory.qml:583
174+msgid "In queue…"
175+msgstr ""
176+
177+#: qml/Panel/Indicators/MenuItemFactory.qml:587
178+msgid "Downloading"
179+msgstr ""
180+
181+#: qml/Panel/Indicators/MenuItemFactory.qml:589
182+msgid "Paused, tap to resume"
183+msgstr ""
184+
185+#: qml/Panel/Indicators/MenuItemFactory.qml:591
186+msgid "Canceled"
187+msgstr ""
188+
189+#: qml/Panel/Indicators/MenuItemFactory.qml:593
190+msgid "Finished"
191+msgstr ""
192+
193+#: qml/Panel/Indicators/MenuItemFactory.qml:595
194+msgid "Failed, tap to retry"
195+msgstr ""
196+
173197#: qml/Panel/SearchIndicator.qml:27
174198msgid "Search"
175199msgstr "Buscar"
176200
177−#: qml/Shell.qml:334
201+#: qml/Shell.qml:359
178202#, qt-format
179203msgid "Please enter %1"
180204msgstr "Introduzca %1"
po/eu.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-03-30 12:44+0000\n"
1212"Last-Translator: Ibai Oihanguren Sala <Unknown>\n"
1313"Language-Team: Basque <eu@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "Lotu abiarazlera"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "Askatu abiarazletik"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -84,7 +84,7 @@ msgstr "Larrialdi-deia"
8484msgid "OK"
8585msgstr ""
8686
87−#: qml/Components/PageHeader.qml:365
87+#: qml/Components/PageHeader.qml:366
8888msgid "Recent searches"
8989msgstr "Azken bilaketak"
9090
@@ -169,11 +169,35 @@ msgstr "Erakutsi pasahitza"
169169msgid "Please enter SIM PIN"
170170msgstr "Sartu SIMaren PINa"
171171
172+#: qml/Panel/Indicators/MenuItemFactory.qml:583
173+msgid "In queue…"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:587
177+msgid "Downloading"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:589
181+msgid "Paused, tap to resume"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:591
185+msgid "Canceled"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:593
189+msgid "Finished"
190+msgstr ""
191+
192+#: qml/Panel/Indicators/MenuItemFactory.qml:595
193+msgid "Failed, tap to retry"
194+msgstr ""
195+
172196#: qml/Panel/SearchIndicator.qml:27
173197msgid "Search"
174198msgstr "Bilatu"
175199
176−#: qml/Shell.qml:334
200+#: qml/Shell.qml:359
177201#, qt-format
178202msgid "Please enter %1"
179203msgstr "Sartu %1"
po/fa.po+31−7
@@ -7,23 +7,23 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2013-10-31 19:02+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Persian <fa@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
22+msgid "Pin shortcut"
2323msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
26+msgid "Unpin shortcut"
2727msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
@@ -80,7 +80,7 @@ msgstr ""
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr ""
8686
@@ -165,11 +165,35 @@ msgstr ""
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr ""
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr ""
po/fi.po+34−10
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11−"PO-Revision-Date: 2014-06-14 10:23+0000\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11+"PO-Revision-Date: 2014-07-09 17:26+0000\n"
1212"Last-Translator: Jiri Grönroos <Unknown>\n"
1313"Language-Team: Finnish <fi@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-10 07:29+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "Kiinnitä käynnistimeen"
22+msgid "Pin shortcut"
23+msgstr "Kiinnitä pikakuvake"
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "Poista käynnistimestä"
26+msgid "Unpin shortcut"
27+msgstr "Poista pikakuvakkeen kiinnitys"
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -82,7 +82,7 @@ msgstr "Hätäpuhelu"
8282msgid "OK"
8383msgstr "OK"
8484
85−#: qml/Components/PageHeader.qml:365
85+#: qml/Components/PageHeader.qml:366
8686msgid "Recent searches"
8787msgstr "Viimeisimmät haut"
8888
@@ -167,11 +167,35 @@ msgstr "Näytä salasana"
167167msgid "Please enter SIM PIN"
168168msgstr "Anna SIM-kortin PIN-koodi"
169169
170+#: qml/Panel/Indicators/MenuItemFactory.qml:583
171+msgid "In queue…"
172+msgstr "Jonossa…"
173+
174+#: qml/Panel/Indicators/MenuItemFactory.qml:587
175+msgid "Downloading"
176+msgstr "Ladataan"
177+
178+#: qml/Panel/Indicators/MenuItemFactory.qml:589
179+msgid "Paused, tap to resume"
180+msgstr "Keskeytetty, napauta palauttaaksesi"
181+
182+#: qml/Panel/Indicators/MenuItemFactory.qml:591
183+msgid "Canceled"
184+msgstr "Peruttu"
185+
186+#: qml/Panel/Indicators/MenuItemFactory.qml:593
187+msgid "Finished"
188+msgstr "Valmistunut"
189+
190+#: qml/Panel/Indicators/MenuItemFactory.qml:595
191+msgid "Failed, tap to retry"
192+msgstr "Epäonnistunut, napauta yrittääksesi uudelleen"
193+
170194#: qml/Panel/SearchIndicator.qml:27
171195msgid "Search"
172196msgstr "Hae"
173197
174−#: qml/Shell.qml:334
198+#: qml/Shell.qml:359
175199#, qt-format
176200msgid "Please enter %1"
177201msgstr "Kirjoita %1"
po/fo.po+31−7
@@ -7,23 +7,23 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-01-14 20:08+0000\n"
1212"Last-Translator: Jógvan Olsen <jeggy@jebster.net>\n"
1313"Language-Team: Faroese <fo@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
22+msgid "Pin shortcut"
2323msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
26+msgid "Unpin shortcut"
2727msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
@@ -80,7 +80,7 @@ msgstr ""
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr ""
8686
@@ -165,11 +165,35 @@ msgstr ""
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr "Leita"
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr ""
po/fr.po+35−11
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11−"PO-Revision-Date: 2014-06-08 20:45+0000\n"
12−"Last-Translator: Pierre Slamich <pierre.slamich@gmail.com>\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11+"PO-Revision-Date: 2014-07-09 17:53+0000\n"
12+"Last-Translator: Sébastien Maes <nautilussebastien@gmail.com>\n"
1313"Language-Team: French <fr@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-10 07:29+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "Conserver dans le lanceur"
22+msgid "Pin shortcut"
23+msgstr "Épingler le raccourci"
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "Retirer du lanceur"
26+msgid "Unpin shortcut"
27+msgstr "Détacher le raccourci"
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -89,7 +89,7 @@ msgstr "Appel d'urgence"
8989msgid "OK"
9090msgstr "OK"
9191
92−#: qml/Components/PageHeader.qml:365
92+#: qml/Components/PageHeader.qml:366
9393msgid "Recent searches"
9494msgstr "Recherches récentes"
9595
@@ -174,11 +174,35 @@ msgstr "Afficher le mot de passe"
174174msgid "Please enter SIM PIN"
175175msgstr "Veuillez entrer le code PIN de votre carte SIM"
176176
177+#: qml/Panel/Indicators/MenuItemFactory.qml:583
178+msgid "In queue…"
179+msgstr ""
180+
181+#: qml/Panel/Indicators/MenuItemFactory.qml:587
182+msgid "Downloading"
183+msgstr ""
184+
185+#: qml/Panel/Indicators/MenuItemFactory.qml:589
186+msgid "Paused, tap to resume"
187+msgstr "En pause, appuyez pour reprendre"
188+
189+#: qml/Panel/Indicators/MenuItemFactory.qml:591
190+msgid "Canceled"
191+msgstr ""
192+
193+#: qml/Panel/Indicators/MenuItemFactory.qml:593
194+msgid "Finished"
195+msgstr ""
196+
197+#: qml/Panel/Indicators/MenuItemFactory.qml:595
198+msgid "Failed, tap to retry"
199+msgstr "Échec, appuyez pour réessayer"
200+
177201#: qml/Panel/SearchIndicator.qml:27
178202msgid "Search"
179203msgstr "Rechercher"
180204
181−#: qml/Shell.qml:334
205+#: qml/Shell.qml:359
182206#, qt-format
183207msgid "Please enter %1"
184208msgstr "Veuillez saisir %1"
po/gd.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-05-17 21:08+0000\n"
1212"Last-Translator: Akerbeltz <fios@akerbeltz.org>\n"
1313"Language-Team: Gaelic; Scottish <gd@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "Glais ris an lòinsear"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "Dealaich on lòinsear"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -88,7 +88,7 @@ msgstr "Gairm èiginn"
8888msgid "OK"
8989msgstr ""
9090
91−#: qml/Components/PageHeader.qml:365
91+#: qml/Components/PageHeader.qml:366
9292msgid "Recent searches"
9393msgstr "Na lorg thu o chionn goirid"
9494
@@ -173,11 +173,35 @@ msgstr "Seall am facal-faire"
173173msgid "Please enter SIM PIN"
174174msgstr "Cuir a-steach SIM PIN"
175175
176+#: qml/Panel/Indicators/MenuItemFactory.qml:583
177+msgid "In queue…"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:587
181+msgid "Downloading"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:589
185+msgid "Paused, tap to resume"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:591
189+msgid "Canceled"
190+msgstr ""
191+
192+#: qml/Panel/Indicators/MenuItemFactory.qml:593
193+msgid "Finished"
194+msgstr ""
195+
196+#: qml/Panel/Indicators/MenuItemFactory.qml:595
197+msgid "Failed, tap to retry"
198+msgstr ""
199+
176200#: qml/Panel/SearchIndicator.qml:27
177201msgid "Search"
178202msgstr "Lorg"
179203
180−#: qml/Shell.qml:334
204+#: qml/Shell.qml:359
181205#, qt-format
182206msgid "Please enter %1"
183207msgstr "Cuir a-steach %1"
po/gl.po+34−10
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11−"PO-Revision-Date: 2014-07-06 15:53+0000\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11+"PO-Revision-Date: 2014-07-09 12:17+0000\n"
1212"Last-Translator: Marcos Lans <Unknown>\n"
1313"Language-Team: Galician <gl@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-07-07 06:08+0000\n"
18−"X-Generator: Launchpad (build 17086)\n"
17+"X-Launchpad-Export-Date: 2014-07-10 07:29+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "Manter no Iniciador"
22+msgid "Pin shortcut"
23+msgstr "Pegar o atallo"
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "Non manter no Iniciador"
26+msgid "Unpin shortcut"
27+msgstr "Despegar o atallo"
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -84,7 +84,7 @@ msgstr "Chamada de emerxencia"
8484msgid "OK"
8585msgstr "Aceptar"
8686
87−#: qml/Components/PageHeader.qml:365
87+#: qml/Components/PageHeader.qml:366
8888msgid "Recent searches"
8989msgstr "Buscas recentes"
9090
@@ -169,11 +169,35 @@ msgstr "Mostrar contrasinal"
169169msgid "Please enter SIM PIN"
170170msgstr "Introduza o PIN da SIM"
171171
172+#: qml/Panel/Indicators/MenuItemFactory.qml:583
173+msgid "In queue…"
174+msgstr "Na cola..."
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:587
177+msgid "Downloading"
178+msgstr "Descargando"
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:589
181+msgid "Paused, tap to resume"
182+msgstr "Detido, toque para continuar"
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:591
185+msgid "Canceled"
186+msgstr "Cancelado"
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:593
189+msgid "Finished"
190+msgstr "Rematado"
191+
192+#: qml/Panel/Indicators/MenuItemFactory.qml:595
193+msgid "Failed, tap to retry"
194+msgstr "Fallou, toque para reintentar"
195+
172196#: qml/Panel/SearchIndicator.qml:27
173197msgid "Search"
174198msgstr "Buscar"
175199
176−#: qml/Shell.qml:334
200+#: qml/Shell.qml:359
177201#, qt-format
178202msgid "Please enter %1"
179203msgstr "Introduza %1"
po/he.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-06-09 07:49+0000\n"
1212"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
1313"Language-Team: Hebrew <he@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "נעילה למשגר"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "הפרדה מהמשגר"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -82,7 +82,7 @@ msgstr "שיחת חירום"
8282msgid "OK"
8383msgstr "אישור"
8484
85−#: qml/Components/PageHeader.qml:365
85+#: qml/Components/PageHeader.qml:366
8686msgid "Recent searches"
8787msgstr "חיפושים אחרונים"
8888
@@ -167,11 +167,35 @@ msgstr "הצגת הססמה"
167167msgid "Please enter SIM PIN"
168168msgstr "נא להזין את קוד ה־<U+200F>SIM"
169169
170+#: qml/Panel/Indicators/MenuItemFactory.qml:583
171+msgid "In queue…"
172+msgstr ""
173+
174+#: qml/Panel/Indicators/MenuItemFactory.qml:587
175+msgid "Downloading"
176+msgstr ""
177+
178+#: qml/Panel/Indicators/MenuItemFactory.qml:589
179+msgid "Paused, tap to resume"
180+msgstr ""
181+
182+#: qml/Panel/Indicators/MenuItemFactory.qml:591
183+msgid "Canceled"
184+msgstr ""
185+
186+#: qml/Panel/Indicators/MenuItemFactory.qml:593
187+msgid "Finished"
188+msgstr ""
189+
190+#: qml/Panel/Indicators/MenuItemFactory.qml:595
191+msgid "Failed, tap to retry"
192+msgstr ""
193+
170194#: qml/Panel/SearchIndicator.qml:27
171195msgid "Search"
172196msgstr "חיפוש"
173197
174−#: qml/Shell.qml:334
198+#: qml/Shell.qml:359
175199#, qt-format
176200msgid "Please enter %1"
177201msgstr "נא להזין %1"
po/hi.po+31−7
@@ -7,23 +7,23 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-01-15 01:49+0000\n"
1212"Last-Translator: Siddhanathan S. <Unknown>\n"
1313"Language-Team: Hindi <hi@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
22+msgid "Pin shortcut"
2323msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
26+msgid "Unpin shortcut"
2727msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
@@ -80,7 +80,7 @@ msgstr "आपातकालीन कॉल"
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr "पिछले खोजों"
8686
@@ -165,11 +165,35 @@ msgstr ""
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr "खोजें"
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr ""
po/hr.po+31−7
@@ -7,23 +7,23 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2013-06-27 04:14+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Croatian <hr@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
22+msgid "Pin shortcut"
2323msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
26+msgid "Unpin shortcut"
2727msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
@@ -80,7 +80,7 @@ msgstr ""
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr "Nedavne pretrage"
8686
@@ -165,11 +165,35 @@ msgstr ""
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr "Pretraživanje"
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr ""
po/hu.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-01-14 23:02+0000\n"
1212"Last-Translator: Kristóf Kiszel <Unknown>\n"
1313"Language-Team: Hungarian <hu@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "Indítóban tartás"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "Eltávolítás az Indítóból"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -82,7 +82,7 @@ msgstr "Vészhívás"
8282msgid "OK"
8383msgstr ""
8484
85−#: qml/Components/PageHeader.qml:365
85+#: qml/Components/PageHeader.qml:366
8686msgid "Recent searches"
8787msgstr "Legutóbbi keresések"
8888
@@ -167,11 +167,35 @@ msgstr "Jelszó megjelenítése"
167167msgid "Please enter SIM PIN"
168168msgstr ""
169169
170+#: qml/Panel/Indicators/MenuItemFactory.qml:583
171+msgid "In queue…"
172+msgstr ""
173+
174+#: qml/Panel/Indicators/MenuItemFactory.qml:587
175+msgid "Downloading"
176+msgstr ""
177+
178+#: qml/Panel/Indicators/MenuItemFactory.qml:589
179+msgid "Paused, tap to resume"
180+msgstr ""
181+
182+#: qml/Panel/Indicators/MenuItemFactory.qml:591
183+msgid "Canceled"
184+msgstr ""
185+
186+#: qml/Panel/Indicators/MenuItemFactory.qml:593
187+msgid "Finished"
188+msgstr ""
189+
190+#: qml/Panel/Indicators/MenuItemFactory.qml:595
191+msgid "Failed, tap to retry"
192+msgstr ""
193+
170194#: qml/Panel/SearchIndicator.qml:27
171195msgid "Search"
172196msgstr "Keresés"
173197
174−#: qml/Shell.qml:334
198+#: qml/Shell.qml:359
175199#, qt-format
176200msgid "Please enter %1"
177201msgstr "Adja meg a következőt: %1"
po/hy.po+31−7
@@ -7,23 +7,23 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2013-06-27 04:43+0000\n"
1212"Last-Translator: iAbaS <sosabazyan@yandex.ru>\n"
1313"Language-Team: Armenian <hy@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
22+msgid "Pin shortcut"
2323msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
26+msgid "Unpin shortcut"
2727msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
@@ -80,7 +80,7 @@ msgstr ""
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr "Վերջին որոնումներ"
8686
@@ -165,11 +165,35 @@ msgstr ""
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr "Որոնում"
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr ""
po/id.po+31−7
@@ -7,23 +7,23 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2013-06-26 22:35+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Indonesian <id@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
22+msgid "Pin shortcut"
2323msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
26+msgid "Unpin shortcut"
2727msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
@@ -80,7 +80,7 @@ msgstr ""
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr ""
8686
@@ -165,11 +165,35 @@ msgstr ""
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr ""
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr ""
po/is.po+31−7
@@ -7,23 +7,23 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2013-09-18 16:22+0000\n"
1212"Last-Translator: Andri Thorlacius <Unknown>\n"
1313"Language-Team: Icelandic <is@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
22+msgid "Pin shortcut"
2323msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
26+msgid "Unpin shortcut"
2727msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
@@ -81,7 +81,7 @@ msgstr "Neyðarsímtal"
8181msgid "OK"
8282msgstr ""
8383
84−#: qml/Components/PageHeader.qml:365
84+#: qml/Components/PageHeader.qml:366
8585msgid "Recent searches"
8686msgstr "Nýlegar leitir"
8787
@@ -166,11 +166,35 @@ msgstr ""
166166msgid "Please enter SIM PIN"
167167msgstr ""
168168
169+#: qml/Panel/Indicators/MenuItemFactory.qml:583
170+msgid "In queue…"
171+msgstr ""
172+
173+#: qml/Panel/Indicators/MenuItemFactory.qml:587
174+msgid "Downloading"
175+msgstr ""
176+
177+#: qml/Panel/Indicators/MenuItemFactory.qml:589
178+msgid "Paused, tap to resume"
179+msgstr ""
180+
181+#: qml/Panel/Indicators/MenuItemFactory.qml:591
182+msgid "Canceled"
183+msgstr ""
184+
185+#: qml/Panel/Indicators/MenuItemFactory.qml:593
186+msgid "Finished"
187+msgstr ""
188+
189+#: qml/Panel/Indicators/MenuItemFactory.qml:595
190+msgid "Failed, tap to retry"
191+msgstr ""
192+
169193#: qml/Panel/SearchIndicator.qml:27
170194msgid "Search"
171195msgstr "Leita"
172196
173−#: qml/Shell.qml:334
197+#: qml/Shell.qml:359
174198#, qt-format
175199msgid "Please enter %1"
176200msgstr ""
po/it.po+34−10
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11−"PO-Revision-Date: 2014-06-10 12:08+0000\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11+"PO-Revision-Date: 2014-07-09 07:07+0000\n"
1212"Last-Translator: Claudio Arseni <claudio.arseni@gmail.com>\n"
1313"Language-Team: Italian <it@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-10 07:29+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "Blocca nel Launcher"
22+msgid "Pin shortcut"
23+msgstr "Blocca scorciatoia"
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "Sblocca dal Launcher"
26+msgid "Unpin shortcut"
27+msgstr "Sblocca scorciatoia"
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -87,7 +87,7 @@ msgstr "Chiamata di emergenza"
8787msgid "OK"
8888msgstr "OK"
8989
90−#: qml/Components/PageHeader.qml:365
90+#: qml/Components/PageHeader.qml:366
9191msgid "Recent searches"
9292msgstr "Ricerche recenti"
9393
@@ -172,11 +172,35 @@ msgstr "Mostra password"
172172msgid "Please enter SIM PIN"
173173msgstr "Inserire il codice PIN"
174174
175+#: qml/Panel/Indicators/MenuItemFactory.qml:583
176+msgid "In queue…"
177+msgstr "In coda..."
178+
179+#: qml/Panel/Indicators/MenuItemFactory.qml:587
180+msgid "Downloading"
181+msgstr "Scaricamento in corso"
182+
183+#: qml/Panel/Indicators/MenuItemFactory.qml:589
184+msgid "Paused, tap to resume"
185+msgstr "In pausa. Tocca per riprendere"
186+
187+#: qml/Panel/Indicators/MenuItemFactory.qml:591
188+msgid "Canceled"
189+msgstr "Annullato"
190+
191+#: qml/Panel/Indicators/MenuItemFactory.qml:593
192+msgid "Finished"
193+msgstr "Completato"
194+
195+#: qml/Panel/Indicators/MenuItemFactory.qml:595
196+msgid "Failed, tap to retry"
197+msgstr "Non riuscito. Tocca per riprovare"
198+
175199#: qml/Panel/SearchIndicator.qml:27
176200msgid "Search"
177201msgstr "Cerca"
178202
179−#: qml/Shell.qml:334
203+#: qml/Shell.qml:359
180204#, qt-format
181205msgid "Please enter %1"
182206msgstr "Inserire %1"
po/ja.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-01-18 07:01+0000\n"
1212"Last-Translator: Shushi Kurose <md81bird@hitaki.net>\n"
1313"Language-Team: Japanese <ja@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "Launcherに登録"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "Launcherへの登録を解除"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -80,7 +80,7 @@ msgstr ""
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr "最近の検索"
8686
@@ -165,11 +165,35 @@ msgstr "パスワードを表示"
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr "検索"
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr ""
po/km.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-05-19 01:42+0000\n"
1212"Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>\n"
1313"Language-Team: Khmer <km@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "ចាក់​សោ​​ទៅ​កម្មវិធី​ចាប់ផ្ដើម"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "ដោះសោ​ពី​កម្មវិធី​ចាប់ផ្ដើម"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -84,7 +84,7 @@ msgstr "ការ​ហៅ​ពេល​អាសន្ន"
8484msgid "OK"
8585msgstr ""
8686
87−#: qml/Components/PageHeader.qml:365
87+#: qml/Components/PageHeader.qml:366
8888msgid "Recent searches"
8989msgstr "ការ​ស្វែងរក​ថ្មី"
9090
@@ -169,11 +169,35 @@ msgstr "បង្ហាញ​ពាក្យ​សម្ងាត់"
169169msgid "Please enter SIM PIN"
170170msgstr "បញ្ចូល​កូដ PIN របស់​ស៊ីមកាត"
171171
172+#: qml/Panel/Indicators/MenuItemFactory.qml:583
173+msgid "In queue…"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:587
177+msgid "Downloading"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:589
181+msgid "Paused, tap to resume"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:591
185+msgid "Canceled"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:593
189+msgid "Finished"
190+msgstr ""
191+
192+#: qml/Panel/Indicators/MenuItemFactory.qml:595
193+msgid "Failed, tap to retry"
194+msgstr ""
195+
172196#: qml/Panel/SearchIndicator.qml:27
173197msgid "Search"
174198msgstr "ស្វែង​រក"
175199
176−#: qml/Shell.qml:334
200+#: qml/Shell.qml:359
177201#, qt-format
178202msgid "Please enter %1"
179203msgstr "សូម​បញ្ចូល %1"
po/kn.po+31−7
@@ -7,23 +7,23 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2013-06-27 05:43+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Kannada <kn@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
22+msgid "Pin shortcut"
2323msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
26+msgid "Unpin shortcut"
2727msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
@@ -80,7 +80,7 @@ msgstr ""
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr "ಇತ್ತೀಚಿನ ಹುಡುಕಾಟಗಳು"
8686
@@ -165,11 +165,35 @@ msgstr ""
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr "ಹುಡುಕು"
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr ""
po/ko.po+31−7
@@ -7,23 +7,23 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2013-10-10 07:04+0000\n"
1212"Last-Translator: Kim Boram <boramism@gmail.com>\n"
1313"Language-Team: Korean <ko@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
22+msgid "Pin shortcut"
2323msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
26+msgid "Unpin shortcut"
2727msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
@@ -80,7 +80,7 @@ msgstr ""
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr "최근 검색"
8686
@@ -165,11 +165,35 @@ msgstr ""
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr "검색"
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr ""
po/ky.po+31−7
@@ -7,23 +7,23 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2013-06-27 06:17+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Kirghiz <ky@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
22+msgid "Pin shortcut"
2323msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
26+msgid "Unpin shortcut"
2727msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
@@ -80,7 +80,7 @@ msgstr ""
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr "Соңку издөөлөр"
8686
@@ -165,11 +165,35 @@ msgstr ""
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr "Издөө"
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr ""
po/lo.po+31−7
@@ -7,23 +7,23 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2013-10-02 10:00+0000\n"
1212"Last-Translator: Anousak <anousak@gmail.com>\n"
1313"Language-Team: Lao <lo@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
22+msgid "Pin shortcut"
2323msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
26+msgid "Unpin shortcut"
2727msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
@@ -80,7 +80,7 @@ msgstr ""
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr ""
8686
@@ -165,11 +165,35 @@ msgstr ""
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr "ຊອກຫາ"
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr "ກະລູນາປ້ອນ %1"
po/lt.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-05-19 17:15+0000\n"
1212"Last-Translator: Mantas Kriaučiūnas <mantas@akl.lt>\n"
1313"Language-Team: Lithuanian <lt@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "Palikti mygtukų juostoje"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "Nelaikyti mygtukų juostoje"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -83,7 +83,7 @@ msgstr "Pagalbos skambutis"
8383msgid "OK"
8484msgstr ""
8585
86−#: qml/Components/PageHeader.qml:365
86+#: qml/Components/PageHeader.qml:366
8787msgid "Recent searches"
8888msgstr "Paskiausios paieškos"
8989
@@ -168,11 +168,35 @@ msgstr "Rodyti slaptažodį"
168168msgid "Please enter SIM PIN"
169169msgstr "Įveskite SIM kortelės PIN kodą"
170170
171+#: qml/Panel/Indicators/MenuItemFactory.qml:583
172+msgid "In queue…"
173+msgstr ""
174+
175+#: qml/Panel/Indicators/MenuItemFactory.qml:587
176+msgid "Downloading"
177+msgstr ""
178+
179+#: qml/Panel/Indicators/MenuItemFactory.qml:589
180+msgid "Paused, tap to resume"
181+msgstr ""
182+
183+#: qml/Panel/Indicators/MenuItemFactory.qml:591
184+msgid "Canceled"
185+msgstr ""
186+
187+#: qml/Panel/Indicators/MenuItemFactory.qml:593
188+msgid "Finished"
189+msgstr ""
190+
191+#: qml/Panel/Indicators/MenuItemFactory.qml:595
192+msgid "Failed, tap to retry"
193+msgstr ""
194+
171195#: qml/Panel/SearchIndicator.qml:27
172196msgid "Search"
173197msgstr "Paieška"
174198
175−#: qml/Shell.qml:334
199+#: qml/Shell.qml:359
176200#, qt-format
177201msgid "Please enter %1"
178202msgstr "Prašom įvesti %1"
po/lv.po+34−10
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-05-31 14:54+0000\n"
12−"Last-Translator: Jānis-Marks Gailis <jeanmarc.gailis@gmail.com>\n"
12+"Last-Translator: Jānis-Marks Gailis <jm-gailis@fai-vianet.fr>\n"
1313"Language-Team: Latvian <lv@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "Pieslēgt palaidējam"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "Atslēgt no palaidēja"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -80,7 +80,7 @@ msgstr "Neatliekamās Palīdzības zvans"
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr "Nesen veiktās meklēšanas"
8686
@@ -165,11 +165,35 @@ msgstr "Rādīt paroli"
165165msgid "Please enter SIM PIN"
166166msgstr "Lūdzu ievadiet SIM PIN"
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr "Meklēt"
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr "Lūdzu ievadiet %1"
po/ml.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2013-11-23 11:44+0000\n"
1212"Last-Translator: Stym alfaZ <Unknown>\n"
1313"Language-Team: Malayalam <ml@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "വിക്ഷേപികയില്‍ സ്ഥിരപ്പെടുത്തുക"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "വിക്ഷേപികാ സ്ഥിരപ്പെടുത്തല്‍ ഒഴിവാക്കുക"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -82,7 +82,7 @@ msgstr "അടിയന്തിര വിളി"
8282msgid "OK"
8383msgstr ""
8484
85−#: qml/Components/PageHeader.qml:365
85+#: qml/Components/PageHeader.qml:366
8686msgid "Recent searches"
8787msgstr "സമീപകാല തിരയലുകള്‍"
8888
@@ -167,11 +167,35 @@ msgstr "രഹസ്യവാക്ക് കാണിക്കുക"
167167msgid "Please enter SIM PIN"
168168msgstr ""
169169
170+#: qml/Panel/Indicators/MenuItemFactory.qml:583
171+msgid "In queue…"
172+msgstr ""
173+
174+#: qml/Panel/Indicators/MenuItemFactory.qml:587
175+msgid "Downloading"
176+msgstr ""
177+
178+#: qml/Panel/Indicators/MenuItemFactory.qml:589
179+msgid "Paused, tap to resume"
180+msgstr ""
181+
182+#: qml/Panel/Indicators/MenuItemFactory.qml:591
183+msgid "Canceled"
184+msgstr ""
185+
186+#: qml/Panel/Indicators/MenuItemFactory.qml:593
187+msgid "Finished"
188+msgstr ""
189+
190+#: qml/Panel/Indicators/MenuItemFactory.qml:595
191+msgid "Failed, tap to retry"
192+msgstr ""
193+
170194#: qml/Panel/SearchIndicator.qml:27
171195msgid "Search"
172196msgstr "തിരയുക"
173197
174−#: qml/Shell.qml:334
198+#: qml/Shell.qml:359
175199#, qt-format
176200msgid "Please enter %1"
177201msgstr "ദയവായി %1 നല്‍കുക"
po/mr.po+31−7
@@ -7,23 +7,23 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-01-14 19:54+0000\n"
1212"Last-Translator: Rohan Deshmukh <Unknown>\n"
1313"Language-Team: Marathi <mr@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
22+msgid "Pin shortcut"
2323msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
26+msgid "Unpin shortcut"
2727msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
@@ -80,7 +80,7 @@ msgstr ""
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr ""
8686
@@ -165,11 +165,35 @@ msgstr ""
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr ""
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr ""
po/ms.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-01-17 09:05+0000\n"
1212"Last-Translator: abuyop <Unknown>\n"
1313"Language-Team: Malay <ms@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "Kunci ke Pelancar"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "Tanggalkan dari Pelancar"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -80,7 +80,7 @@ msgstr "panggilan Kecemasan"
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr "Gelintar baru-baru ini"
8686
@@ -165,11 +165,35 @@ msgstr "Tunjuk kata laluan"
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr "Gelintar"
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr "Sila masukkan %1"
po/my.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2013-12-12 11:12+0000\n"
1212"Last-Translator: Pyae Sone <Unknown>\n"
1313"Language-Team: Burmese <my@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "Launcher တွင်ထားမည်"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "Launcher မှဖြုတ်မည်"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -80,7 +80,7 @@ msgstr "အရေးပေါ်ခေါ်မည်"
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr "မကြာသေးခင်က ရှာဖွေခြင်း"
8686
@@ -165,11 +165,35 @@ msgstr "စကားဝှက်ကိုပြ"
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr "ရှာဖွေ"
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr "%1ကိုရိုက်ထည့်ပါ"
po/nb.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-06-11 06:36+0000\n"
1212"Last-Translator: Åka Sikrom <Unknown>\n"
1313"Language-Team: Norwegian Bokmal <nb@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "Lås til oppstarter"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "Lås opp fra oppstarter"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -82,7 +82,7 @@ msgstr "Nødanrop"
8282msgid "OK"
8383msgstr "OK"
8484
85−#: qml/Components/PageHeader.qml:365
85+#: qml/Components/PageHeader.qml:366
8686msgid "Recent searches"
8787msgstr "Nylige søk"
8888
@@ -167,11 +167,35 @@ msgstr "Vis passord"
167167msgid "Please enter SIM PIN"
168168msgstr "Skriv inn PIN-koden til SIM-kortet"
169169
170+#: qml/Panel/Indicators/MenuItemFactory.qml:583
171+msgid "In queue…"
172+msgstr ""
173+
174+#: qml/Panel/Indicators/MenuItemFactory.qml:587
175+msgid "Downloading"
176+msgstr ""
177+
178+#: qml/Panel/Indicators/MenuItemFactory.qml:589
179+msgid "Paused, tap to resume"
180+msgstr ""
181+
182+#: qml/Panel/Indicators/MenuItemFactory.qml:591
183+msgid "Canceled"
184+msgstr ""
185+
186+#: qml/Panel/Indicators/MenuItemFactory.qml:593
187+msgid "Finished"
188+msgstr ""
189+
190+#: qml/Panel/Indicators/MenuItemFactory.qml:595
191+msgid "Failed, tap to retry"
192+msgstr ""
193+
170194#: qml/Panel/SearchIndicator.qml:27
171195msgid "Search"
172196msgstr "Søk"
173197
174−#: qml/Shell.qml:334
198+#: qml/Shell.qml:359
175199#, qt-format
176200msgid "Please enter %1"
177201msgstr "Skriv inn %1"
po/nl.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-01-15 16:42+0000\n"
1212"Last-Translator: Hannie Dumoleyn <Unknown>\n"
1313"Language-Team: Dutch <nl@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "In Starter vastzetten"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "Uit Starter verwijderen"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -80,7 +80,7 @@ msgstr "Noodoproep"
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr "Recente zoekopdrachten"
8686
@@ -165,11 +165,35 @@ msgstr "Wachtwoord tonen"
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr "Zoeken"
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr "Voer %1 in"
po/pl.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-05-27 15:20+0000\n"
1212"Last-Translator: GTriderXC <gtriderxc@yahoo.com>\n"
1313"Language-Team: Polish <pl@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "Dodaj do panelu uruchamiania"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "Usuń z panelu uruchamiania"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -84,7 +84,7 @@ msgstr "Telefon ratunkowy"
8484msgid "OK"
8585msgstr ""
8686
87−#: qml/Components/PageHeader.qml:365
87+#: qml/Components/PageHeader.qml:366
8888msgid "Recent searches"
8989msgstr "Ostatnie wyszukiwania"
9090
@@ -169,11 +169,35 @@ msgstr "Wyświetl hasło"
169169msgid "Please enter SIM PIN"
170170msgstr "Wprowadź kod PIN karty SIM"
171171
172+#: qml/Panel/Indicators/MenuItemFactory.qml:583
173+msgid "In queue…"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:587
177+msgid "Downloading"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:589
181+msgid "Paused, tap to resume"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:591
185+msgid "Canceled"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:593
189+msgid "Finished"
190+msgstr ""
191+
192+#: qml/Panel/Indicators/MenuItemFactory.qml:595
193+msgid "Failed, tap to retry"
194+msgstr ""
195+
172196#: qml/Panel/SearchIndicator.qml:27
173197msgid "Search"
174198msgstr "Szukaj"
175199
176−#: qml/Shell.qml:334
200+#: qml/Shell.qml:359
177201#, qt-format
178202msgid "Please enter %1"
179203msgstr "Wprowadź %1"
po/pt.po+31−7
@@ -7,23 +7,23 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-01-14 19:18+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Portuguese <pt@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
22+msgid "Pin shortcut"
2323msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
26+msgid "Unpin shortcut"
2727msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
@@ -80,7 +80,7 @@ msgstr ""
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr ""
8686
@@ -165,11 +165,35 @@ msgstr ""
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr ""
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr ""
po/pt_BR.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-05-15 14:31+0000\n"
1212"Last-Translator: Rafael Neri <Unknown>\n"
1313"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "Bloquear no lançador"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "Desbloquear do lançador"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -84,7 +84,7 @@ msgstr "Chamada de emergência"
8484msgid "OK"
8585msgstr ""
8686
87−#: qml/Components/PageHeader.qml:365
87+#: qml/Components/PageHeader.qml:366
8888msgid "Recent searches"
8989msgstr "Pesquisas recentes"
9090
@@ -169,11 +169,35 @@ msgstr "Exibir senha"
169169msgid "Please enter SIM PIN"
170170msgstr "Por favor, digite o PIN do cartão SIM"
171171
172+#: qml/Panel/Indicators/MenuItemFactory.qml:583
173+msgid "In queue…"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:587
177+msgid "Downloading"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:589
181+msgid "Paused, tap to resume"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:591
185+msgid "Canceled"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:593
189+msgid "Finished"
190+msgstr ""
191+
192+#: qml/Panel/Indicators/MenuItemFactory.qml:595
193+msgid "Failed, tap to retry"
194+msgstr ""
195+
172196#: qml/Panel/SearchIndicator.qml:27
173197msgid "Search"
174198msgstr "Pesquisar"
175199
176−#: qml/Shell.qml:334
200+#: qml/Shell.qml:359
177201#, qt-format
178202msgid "Please enter %1"
179203msgstr "Por favor, digite %1"
po/ro.po+31−7
@@ -7,23 +7,23 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2013-06-27 07:53+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Romanian <ro@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
22+msgid "Pin shortcut"
2323msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
26+msgid "Unpin shortcut"
2727msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
@@ -80,7 +80,7 @@ msgstr ""
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr "Căutări recente"
8686
@@ -165,11 +165,35 @@ msgstr ""
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr "Căutare"
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr ""
po/ru.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-05-15 12:57+0000\n"
1212"Last-Translator: Zonov Roman <Unknown>\n"
1313"Language-Team: Russian <ru@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "Закрепить на панели"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "Убрать с панели"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -87,7 +87,7 @@ msgstr "Экстренный вызов"
8787msgid "OK"
8888msgstr ""
8989
90−#: qml/Components/PageHeader.qml:365
90+#: qml/Components/PageHeader.qml:366
9191msgid "Recent searches"
9292msgstr "Последние поисковые запросы"
9393
@@ -172,11 +172,35 @@ msgstr "Показать пароль"
172172msgid "Please enter SIM PIN"
173173msgstr "Введите PIN код"
174174
175+#: qml/Panel/Indicators/MenuItemFactory.qml:583
176+msgid "In queue…"
177+msgstr ""
178+
179+#: qml/Panel/Indicators/MenuItemFactory.qml:587
180+msgid "Downloading"
181+msgstr ""
182+
183+#: qml/Panel/Indicators/MenuItemFactory.qml:589
184+msgid "Paused, tap to resume"
185+msgstr ""
186+
187+#: qml/Panel/Indicators/MenuItemFactory.qml:591
188+msgid "Canceled"
189+msgstr ""
190+
191+#: qml/Panel/Indicators/MenuItemFactory.qml:593
192+msgid "Finished"
193+msgstr ""
194+
195+#: qml/Panel/Indicators/MenuItemFactory.qml:595
196+msgid "Failed, tap to retry"
197+msgstr ""
198+
175199#: qml/Panel/SearchIndicator.qml:27
176200msgid "Search"
177201msgstr "Поиск"
178202
179−#: qml/Shell.qml:334
203+#: qml/Shell.qml:359
180204#, qt-format
181205msgid "Please enter %1"
182206msgstr "Пожалуйста, введите %1"
po/shn.po+31−7
@@ -7,23 +7,23 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2013-10-07 11:46+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Shan <shn@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
22+msgid "Pin shortcut"
2323msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
26+msgid "Unpin shortcut"
2727msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
@@ -80,7 +80,7 @@ msgstr ""
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr ""
8686
@@ -165,11 +165,35 @@ msgstr ""
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr ""
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr ""
po/si.po+31−7
@@ -7,23 +7,23 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2013-06-26 22:36+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Sinhalese <si@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
22+msgid "Pin shortcut"
2323msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
26+msgid "Unpin shortcut"
2727msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
@@ -80,7 +80,7 @@ msgstr ""
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr ""
8686
@@ -165,11 +165,35 @@ msgstr ""
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr ""
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr ""
po/sl.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-06-23 09:29+0000\n"
1212"Last-Translator: Damir Jerovšek <Unknown>\n"
1313"Language-Team: Slovenian <sl@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-24 06:33+0000\n"
18−"X-Generator: Launchpad (build 17065)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "Zakleni na zaganjalnik"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "Odkleni z zaganjalnika"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -84,7 +84,7 @@ msgstr "Klic v sili"
8484msgid "OK"
8585msgstr "V REDU"
8686
87−#: qml/Components/PageHeader.qml:365
87+#: qml/Components/PageHeader.qml:366
8888msgid "Recent searches"
8989msgstr "Nedavna iskanja"
9090
@@ -169,11 +169,35 @@ msgstr "Pokaži geslo"
169169msgid "Please enter SIM PIN"
170170msgstr "Vnesite PIN kartice SIM"
171171
172+#: qml/Panel/Indicators/MenuItemFactory.qml:583
173+msgid "In queue…"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:587
177+msgid "Downloading"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:589
181+msgid "Paused, tap to resume"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:591
185+msgid "Canceled"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:593
189+msgid "Finished"
190+msgstr ""
191+
192+#: qml/Panel/Indicators/MenuItemFactory.qml:595
193+msgid "Failed, tap to retry"
194+msgstr ""
195+
172196#: qml/Panel/SearchIndicator.qml:27
173197msgid "Search"
174198msgstr "Iskanje"
175199
176−#: qml/Shell.qml:334
200+#: qml/Shell.qml:359
177201#, qt-format
178202msgid "Please enter %1"
179203msgstr "Vnesite %1"
po/sq.po+31−7
@@ -7,23 +7,23 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-01-15 13:51+0000\n"
1212"Last-Translator: Besmir Zanaj <besmirzanaj@gmail.com>\n"
1313"Language-Team: Albanian <sq@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:50+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:36+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
22+msgid "Pin shortcut"
2323msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
26+msgid "Unpin shortcut"
2727msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
@@ -81,7 +81,7 @@ msgstr ""
8181msgid "OK"
8282msgstr ""
8383
84−#: qml/Components/PageHeader.qml:365
84+#: qml/Components/PageHeader.qml:366
8585msgid "Recent searches"
8686msgstr ""
8787
@@ -166,11 +166,35 @@ msgstr ""
166166msgid "Please enter SIM PIN"
167167msgstr ""
168168
169+#: qml/Panel/Indicators/MenuItemFactory.qml:583
170+msgid "In queue…"
171+msgstr ""
172+
173+#: qml/Panel/Indicators/MenuItemFactory.qml:587
174+msgid "Downloading"
175+msgstr ""
176+
177+#: qml/Panel/Indicators/MenuItemFactory.qml:589
178+msgid "Paused, tap to resume"
179+msgstr ""
180+
181+#: qml/Panel/Indicators/MenuItemFactory.qml:591
182+msgid "Canceled"
183+msgstr ""
184+
185+#: qml/Panel/Indicators/MenuItemFactory.qml:593
186+msgid "Finished"
187+msgstr ""
188+
189+#: qml/Panel/Indicators/MenuItemFactory.qml:595
190+msgid "Failed, tap to retry"
191+msgstr ""
192+
169193#: qml/Panel/SearchIndicator.qml:27
170194msgid "Search"
171195msgstr ""
172196
173−#: qml/Shell.qml:334
197+#: qml/Shell.qml:359
174198#, qt-format
175199msgid "Please enter %1"
176200msgstr ""
po/sr.po+31−7
@@ -7,23 +7,23 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2013-06-27 09:19+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Serbian <sr@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
22+msgid "Pin shortcut"
2323msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
26+msgid "Unpin shortcut"
2727msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
@@ -80,7 +80,7 @@ msgstr ""
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr "Скорашње претраге"
8686
@@ -165,11 +165,35 @@ msgstr ""
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr "Претрага"
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr ""
po/sv.po+31−7
@@ -7,23 +7,23 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-06-07 19:14+0000\n"
1212"Last-Translator: mikasjoman <Unknown>\n"
1313"Language-Team: Swedish <sv@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
22+msgid "Pin shortcut"
2323msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
26+msgid "Unpin shortcut"
2727msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
@@ -80,7 +80,7 @@ msgstr "Nödsamtal"
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr ""
8686
@@ -165,11 +165,35 @@ msgstr "Visa lösenord"
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr "Sök"
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr "Vänligen fyll i %1"
po/sw.po+32−8
@@ -7,23 +7,23 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-01-14 19:28+0000\n"
12−"Last-Translator: Damas Mlabwa <Unknown>\n"
12+"Last-Translator: Damas <Unknown>\n"
1313"Language-Team: Swahili <sw@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
22+msgid "Pin shortcut"
2323msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
26+msgid "Unpin shortcut"
2727msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
@@ -80,7 +80,7 @@ msgstr ""
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr ""
8686
@@ -165,11 +165,35 @@ msgstr ""
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr "Tafuta"
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr ""
po/ta.po+31−7
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2013-10-24 11:36+0000\n"
1212"Last-Translator: Arun Kumar - அருண் குமார் <thangam.arunx@gmail.com>\n"
1313"Language-Team: Ubuntu Tamil Team/Free Tamil Computing/Thamizha\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919"Language: ta\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
23−msgid "Lock to Launcher"
23+msgid "Pin shortcut"
2424msgstr ""
2525
2626#: plugins/Unity/Launcher/launcheritem.cpp:73
27−msgid "Unlock from Launcher"
27+msgid "Unpin shortcut"
2828msgstr ""
2929
3030#: qml/Components/EdgeDemoOverlay.qml:151
@@ -83,7 +83,7 @@ msgstr "அவசர அழைப்பு"
8383msgid "OK"
8484msgstr ""
8585
86−#: qml/Components/PageHeader.qml:365
86+#: qml/Components/PageHeader.qml:366
8787msgid "Recent searches"
8888msgstr "கடையாக தேடப்பட்டவைகள்"
8989
@@ -168,11 +168,35 @@ msgstr ""
168168msgid "Please enter SIM PIN"
169169msgstr ""
170170
171+#: qml/Panel/Indicators/MenuItemFactory.qml:583
172+msgid "In queue…"
173+msgstr ""
174+
175+#: qml/Panel/Indicators/MenuItemFactory.qml:587
176+msgid "Downloading"
177+msgstr ""
178+
179+#: qml/Panel/Indicators/MenuItemFactory.qml:589
180+msgid "Paused, tap to resume"
181+msgstr ""
182+
183+#: qml/Panel/Indicators/MenuItemFactory.qml:591
184+msgid "Canceled"
185+msgstr ""
186+
187+#: qml/Panel/Indicators/MenuItemFactory.qml:593
188+msgid "Finished"
189+msgstr ""
190+
191+#: qml/Panel/Indicators/MenuItemFactory.qml:595
192+msgid "Failed, tap to retry"
193+msgstr ""
194+
171195#: qml/Panel/SearchIndicator.qml:27
172196msgid "Search"
173197msgstr "தெடு"
174198
175−#: qml/Shell.qml:334
199+#: qml/Shell.qml:359
176200#, qt-format
177201msgid "Please enter %1"
178202msgstr "தயவுச்செய்து %1 உள்ளிடு"
po/te.po+31−7
@@ -7,23 +7,23 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2013-06-27 09:57+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Telugu <te@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
22+msgid "Pin shortcut"
2323msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
26+msgid "Unpin shortcut"
2727msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
@@ -80,7 +80,7 @@ msgstr ""
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr ""
8686
@@ -165,11 +165,35 @@ msgstr ""
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr ""
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr ""
po/tr.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-05-19 12:52+0000\n"
1212"Last-Translator: Volkan Gezer <Unknown>\n"
1313"Language-Team: Turkish <tr@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "Başlatıcıya Sabitle"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "Başlatıcıdan Ayır"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -83,7 +83,7 @@ msgstr "Acil Arama"
8383msgid "OK"
8484msgstr ""
8585
86−#: qml/Components/PageHeader.qml:365
86+#: qml/Components/PageHeader.qml:366
8787msgid "Recent searches"
8888msgstr "Son aramalar"
8989
@@ -168,11 +168,35 @@ msgstr "Parolayı göster"
168168msgid "Please enter SIM PIN"
169169msgstr "Lütfen SIM PIN'inizi girin"
170170
171+#: qml/Panel/Indicators/MenuItemFactory.qml:583
172+msgid "In queue…"
173+msgstr ""
174+
175+#: qml/Panel/Indicators/MenuItemFactory.qml:587
176+msgid "Downloading"
177+msgstr ""
178+
179+#: qml/Panel/Indicators/MenuItemFactory.qml:589
180+msgid "Paused, tap to resume"
181+msgstr ""
182+
183+#: qml/Panel/Indicators/MenuItemFactory.qml:591
184+msgid "Canceled"
185+msgstr ""
186+
187+#: qml/Panel/Indicators/MenuItemFactory.qml:593
188+msgid "Finished"
189+msgstr ""
190+
191+#: qml/Panel/Indicators/MenuItemFactory.qml:595
192+msgid "Failed, tap to retry"
193+msgstr ""
194+
171195#: qml/Panel/SearchIndicator.qml:27
172196msgid "Search"
173197msgstr "Ara"
174198
175−#: qml/Shell.qml:334
199+#: qml/Shell.qml:359
176200#, qt-format
177201msgid "Please enter %1"
178202msgstr "Lütfen %1 girin"
po/ug.po+34−10
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
11−"PO-Revision-Date: 2014-06-13 21:07+0000\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
11+"PO-Revision-Date: 2014-07-09 23:27+0000\n"
1212"Last-Translator: Gheyret T.Kenji <Unknown>\n"
1313"Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-10 07:29+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "ئىجراچىغا سولىۋەت"
22+msgid "Pin shortcut"
23+msgstr "تېزلەتمىنى قوي"
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "ئىجراچىدىن چىقار"
26+msgid "Unpin shortcut"
27+msgstr "تېزلەتمىنى ئېلىۋەت"
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -82,7 +82,7 @@ msgstr "جىددىي تېلېفون"
8282msgid "OK"
8383msgstr "تامام"
8484
85−#: qml/Components/PageHeader.qml:365
85+#: qml/Components/PageHeader.qml:366
8686msgid "Recent searches"
8787msgstr "يېقىنقى ئىزدەشلەر"
8888
@@ -167,11 +167,35 @@ msgstr "ئىم كۆرسەت"
167167msgid "Please enter SIM PIN"
168168msgstr "سىم(SIM) كارتىڭىزنىڭ PIN نومۇرىنى كىرگۈزۈڭ"
169169
170+#: qml/Panel/Indicators/MenuItemFactory.qml:583
171+msgid "In queue…"
172+msgstr ""
173+
174+#: qml/Panel/Indicators/MenuItemFactory.qml:587
175+msgid "Downloading"
176+msgstr "چۈشۈرۈۋاتىدۇ"
177+
178+#: qml/Panel/Indicators/MenuItemFactory.qml:589
179+msgid "Paused, tap to resume"
180+msgstr ""
181+
182+#: qml/Panel/Indicators/MenuItemFactory.qml:591
183+msgid "Canceled"
184+msgstr "قالدۇرۇۋېتىلدى"
185+
186+#: qml/Panel/Indicators/MenuItemFactory.qml:593
187+msgid "Finished"
188+msgstr "تاماملاندى"
189+
190+#: qml/Panel/Indicators/MenuItemFactory.qml:595
191+msgid "Failed, tap to retry"
192+msgstr "مەغلۇپ بولدى، چېكىپ قايتا سىناڭ"
193+
170194#: qml/Panel/SearchIndicator.qml:27
171195msgid "Search"
172196msgstr "ئىزدە"
173197
174−#: qml/Shell.qml:334
198+#: qml/Shell.qml:359
175199#, qt-format
176200msgid "Please enter %1"
177201msgstr "%1 نى كىرگۈزۈڭ"
po/uk.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-06-08 19:09+0000\n"
1212"Last-Translator: Yuri Chornoivan <yurchor@gmail.com>\n"
1313"Language-Team: Ukrainian <uk@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "Зафіксувати на панелі запуску"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "Від’єднати від панелі запуску"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -85,7 +85,7 @@ msgstr "Терміновий виклик"
8585msgid "OK"
8686msgstr "Гаразд"
8787
88−#: qml/Components/PageHeader.qml:365
88+#: qml/Components/PageHeader.qml:366
8989msgid "Recent searches"
9090msgstr "Нещодавні пошуки"
9191
@@ -170,11 +170,35 @@ msgstr "Показати пароль"
170170msgid "Please enter SIM PIN"
171171msgstr "Введіть PIN-код SIM-картки"
172172
173+#: qml/Panel/Indicators/MenuItemFactory.qml:583
174+msgid "In queue…"
175+msgstr ""
176+
177+#: qml/Panel/Indicators/MenuItemFactory.qml:587
178+msgid "Downloading"
179+msgstr ""
180+
181+#: qml/Panel/Indicators/MenuItemFactory.qml:589
182+msgid "Paused, tap to resume"
183+msgstr ""
184+
185+#: qml/Panel/Indicators/MenuItemFactory.qml:591
186+msgid "Canceled"
187+msgstr ""
188+
189+#: qml/Panel/Indicators/MenuItemFactory.qml:593
190+msgid "Finished"
191+msgstr ""
192+
193+#: qml/Panel/Indicators/MenuItemFactory.qml:595
194+msgid "Failed, tap to retry"
195+msgstr ""
196+
173197#: qml/Panel/SearchIndicator.qml:27
174198msgid "Search"
175199msgstr "Пошук"
176200
177−#: qml/Shell.qml:334
201+#: qml/Shell.qml:359
178202#, qt-format
179203msgid "Please enter %1"
180204msgstr "Будь ласка, введіть %1"
po/vi.po+31−7
@@ -7,23 +7,23 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-01-15 01:19+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Vietnamese <vi@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
22+msgid "Pin shortcut"
2323msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
26+msgid "Unpin shortcut"
2727msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
@@ -80,7 +80,7 @@ msgstr ""
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr ""
8686
@@ -165,11 +165,35 @@ msgstr ""
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr ""
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr ""
po/xh.po+31−7
@@ -7,23 +7,23 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2013-09-28 13:20+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Xhosa <xh@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
22+msgid "Pin shortcut"
2323msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
26+msgid "Unpin shortcut"
2727msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
@@ -80,7 +80,7 @@ msgstr ""
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr ""
8686
@@ -165,11 +165,35 @@ msgstr ""
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr ""
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr ""
po/zh_CN.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-06-12 08:55+0000\n"
1212"Last-Translator: Shengjing Zhu <Unknown>\n"
1313"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "固定到启动器"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "从启动器移除"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -80,7 +80,7 @@ msgstr "紧急电话"
8080msgid "OK"
8181msgstr "确定"
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr "近期搜索"
8686
@@ -165,11 +165,35 @@ msgstr "显示密码"
165165msgid "Please enter SIM PIN"
166166msgstr "请输入 SIM PIN"
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr "搜索"
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr "请输入 %1"
po/zh_HK.po+33−9
@@ -7,24 +7,24 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-01-25 13:32+0000\n"
1212"Last-Translator: Daniel Cheung <daniel.2345@hotmail.com>\n"
1313"Language-Team: Chinese (Hong Kong) <zh_HK@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "鎖定至啟動器"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
27−msgstr "從啟動器解除鎖定"
26+msgid "Unpin shortcut"
27+msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
3030msgid "Skip intro"
@@ -80,7 +80,7 @@ msgstr "緊急電話"
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr "最近的搜尋"
8686
@@ -165,11 +165,35 @@ msgstr "顯示密碼"
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr "搜尋"
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr "請輸入 %1"
po/zh_TW.po+32−8
@@ -7,23 +7,23 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2014-06-13 09:55+0200\n"
10+"POT-Creation-Date: 2014-07-07 12:15+0100\n"
1111"PO-Revision-Date: 2014-01-16 06:04+0000\n"
1212"Last-Translator: Henry Yang <henry9846@hotmail.com>\n"
1313"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-06-17 06:51+0000\n"
18−"X-Generator: Launchpad (build 17045)\n"
17+"X-Launchpad-Export-Date: 2014-07-09 06:37+0000\n"
18+"X-Generator: Launchpad (build 17100)\n"
1919
2020#: plugins/Unity/Launcher/launcheritem.cpp:43
2121#: plugins/Unity/Launcher/launcheritem.cpp:73
22−msgid "Lock to Launcher"
23−msgstr "鎖定至啟動欄"
22+msgid "Pin shortcut"
23+msgstr ""
2424
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
26−msgid "Unlock from Launcher"
26+msgid "Unpin shortcut"
2727msgstr ""
2828
2929#: qml/Components/EdgeDemoOverlay.qml:151
@@ -80,7 +80,7 @@ msgstr "緊急連絡"
8080msgid "OK"
8181msgstr ""
8282
83−#: qml/Components/PageHeader.qml:365
83+#: qml/Components/PageHeader.qml:366
8484msgid "Recent searches"
8585msgstr "最近搜尋"
8686
@@ -165,11 +165,35 @@ msgstr "顯示密碼"
165165msgid "Please enter SIM PIN"
166166msgstr ""
167167
168+#: qml/Panel/Indicators/MenuItemFactory.qml:583
169+msgid "In queue…"
170+msgstr ""
171+
172+#: qml/Panel/Indicators/MenuItemFactory.qml:587
173+msgid "Downloading"
174+msgstr ""
175+
176+#: qml/Panel/Indicators/MenuItemFactory.qml:589
177+msgid "Paused, tap to resume"
178+msgstr ""
179+
180+#: qml/Panel/Indicators/MenuItemFactory.qml:591
181+msgid "Canceled"
182+msgstr ""
183+
184+#: qml/Panel/Indicators/MenuItemFactory.qml:593
185+msgid "Finished"
186+msgstr ""
187+
188+#: qml/Panel/Indicators/MenuItemFactory.qml:595
189+msgid "Failed, tap to retry"
190+msgstr ""
191+
168192#: qml/Panel/SearchIndicator.qml:27
169193msgid "Search"
170194msgstr "搜尋"
171195
172−#: qml/Shell.qml:334
196+#: qml/Shell.qml:359
173197#, qt-format
174198msgid "Please enter %1"
175199msgstr ""
qml/Components/BaseCarouselDelegate.qml+19
@@ -17,7 +17,26 @@
1717import QtQuick 2.0
1818import Ubuntu.Components 0.1
1919
20+/*!
21+ \brief Base delegate for use with the Carousel component
22+
23+ Use this as the base of your component in a Carousel, the properties
24+ will get updated and signals emitted accordingly.
25+*/
26+
2027Item {
28+ /// True if this item is currently "focused" in the carousel.
2129 property bool explicitlyScaled
30+
31+ /// Model index for this delegate.
32+ property int index
33+
34+ /// Model data for this delegate.
2235 property var model
36+
37+ /// Will be emitted when the item is tapped.
38+ signal clicked
39+
40+ /// Will be emitted when the item is long-pressed.
41+ signal pressAndHold
2342}
qml/Components/Carousel.qml+5−14
@@ -52,16 +52,6 @@ Item {
5252 /// exposes the distance to the next row (only one row in carousel, so it's the topMargins)
5353 readonly property alias verticalSpacing: listView.verticalMargin
5454
55− /// Emitted when the user clicked on an item
56− /// @param index is the index of the clicked item
57− /// @param itemY is y of the clicked delegate
58− signal clicked(int index, real itemY)
59−
60− /// Emitted when the user pressed and held on an item
61− /// @param index is the index of the held item
62− /// @param itemY is y of the held delegate
63− signal pressAndHold(int index, real itemY)
64−
6555 implicitHeight: listView.tileHeight * selectedItemScaleFactor
6656 opacity: listView.highlightIndex === -1 ? 1 : 0.6
6757
@@ -167,7 +157,7 @@ Item {
167157 /* We're clicking the selected item and
168158 we're in the neighbourhood of radius 1 pixel from it.
169159 Let's emit the clicked signal. */
170− carousel.clicked(index, delegateItem.y)
160+ delegateItem.clicked()
171161 return
172162 }
173163
@@ -185,7 +175,7 @@ Item {
185175 /* We're pressAndHold the selected item and
186176 we're in the neighbourhood of radius 1 pixel from it.
187177 Let's emit the pressAndHold signal. */
188− carousel.pressAndHold(index, delegateItem.y);
178+ delegateItem.pressAndHold();
189179 return;
190180 }
191181
@@ -316,8 +306,9 @@ Item {
316306 }
317307
318308 onLoaded: {
319− item.explicitlyScaled = Qt.binding(function() { return explicitlyScaled; })
320− item.model = Qt.binding(function() { return model; })
309+ item.explicitlyScaled = Qt.binding(function() { return explicitlyScaled; });
310+ item.index = Qt.binding(function() { return index; });
311+ item.model = Qt.binding(function() { return model; });
321312 }
322313
323314 MouseArea {
qml/Components/ListItems/Header.qml+1
@@ -24,6 +24,7 @@ Item {
2424 \qmlproperty string text
2525 */
2626 property alias text: label.text
27+ property alias textColor: label.color
2728 property alias image: image.source
2829
2930 signal clicked(variant mouse)
qml/Components/PageHeader.qml+221−313
@@ -14,386 +14,294 @@
1414 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1515 */
1616
17−import QtQuick 2.0
18−import Ubuntu.Components 0.1
19−import Ubuntu.Components.Popups 0.1
20−import Ubuntu.Components.ListItems 0.1 as ListItem
21−import Unity 0.2
17+import QtQuick 2.2
18+import Ubuntu.Components 1.1
19+import Ubuntu.Components.Themes.Ambiance 1.1
20+import Ubuntu.Components.Popups 1.0
21+import Ubuntu.Components.ListItems 1.0
22+import "SearchHistoryModel"
2223
2324Item {
2425 id: root
26+ objectName: "pageHeader"
27+ implicitHeight: headerContainer.height + units.gu(2) + bottomContainer.height
28+
29+ property bool showBackButton: false
30+ property string title
31+
2532 property bool searchEntryEnabled: false
26− property alias searchQuery: searchField.text
27− property ListModel searchHistory
28− property var scope: null
29− property alias childItem: itemContainer.children
33+ property ListModel searchHistory: SearchHistoryModel
34+ property alias searchQuery: searchTextField.text
35+ property bool searchInProgress: false
36+
3037 property alias bottomItem: bottomContainer.children
31− property alias showBackButton: backButton.visible
3238
33− signal backClicked
39+ // TODO We should use foreground for the icons
40+ // of the toolbar but unfortunately Action does not have
41+ // the keyColor property as Icon does :-/
42+ property var scopeStyle: null
3443
35− height: header.height + units.gu(2) + bottomContainer.height
36− implicitHeight: header.height + units.gu(2) + bottomContainer.height
44+ signal backClicked()
45+
46+ onScopeStyleChanged: refreshLogo()
3747
3848 function triggerSearch() {
39− if (searchEntryEnabled) searchField.forceActiveFocus()
49+ if (searchEntryEnabled) {
50+ headerContainer.showSearch = true;
51+ searchTextField.forceActiveFocus();
52+ }
4053 }
4154
42− function resetSearch() {
43− if (!searchHistory) return;
44−
45− searchHistory.addQuery(searchField.text);
46− unfocus();
47− searchField.text = "";
55+ function resetSearch(keepFocus) {
56+ if (searchHistory) {
57+ searchHistory.addQuery(searchTextField.text);
58+ }
59+ if (!keepFocus) {
60+ unfocus();
61+ }
62+ searchTextField.text = "";
63+ if (headerContainer.popover != null) {
64+ PopupUtils.close(headerContainer.popover);
65+ }
4866 }
4967
5068 function unfocus() {
51− searchField.focus = false;
69+ searchTextField.focus = false;
70+ if (!searchTextField.text) {
71+ headerContainer.showSearch = false;
72+ }
5273 }
5374
54− Connections {
55− target: greeter
56− onShownChanged: if (shown) resetSearch()
75+ function openSearchHistory() {
76+ if (openSearchAnimation.running) {
77+ openSearchAnimation.openSearchHistory = true;
78+ } else if (root.searchHistory.count > 0 && headerContainer.popover == null) {
79+ headerContainer.popover = PopupUtils.open(popoverComponent, searchTextField,
80+ {
81+ "contentWidth": searchTextField.width,
82+ "edgeMargins": units.gu(1)
83+ }
84+ );
85+ }
5786 }
5887
59− Flickable {
60− id: header
61− anchors {
62− left: parent.left
63− right: parent.right
64− top: parent.top
88+ function refreshLogo() {
89+ if (scopeStyle ? scopeStyle.headerLogo != "" : false) {
90+ header.contents = imageComponent.createObject();
91+ } else if (header.contents) {
92+ header.contents.destroy();
93+ header.contents = null;
6594 }
66− height: units.gu(6.5)
67−
68− interactive: false
69− contentHeight: headerContainer.height
70− clip: true
71−
72− contentY: searchField.activeFocus || searchField.text != "" ? searchContainer.y : headerContainer.y
95+ }
7396
74− Behavior on contentY { NumberAnimation { duration: 200; easing.type: Easing.OutQuad } }
97+ Connections {
98+ target: root.scopeStyle
99+ onHeaderLogoChanged: root.refreshLogo()
100+ }
75101
76− AbstractButton {
77− id: backButton
78− objectName: root.objectName + "_backButton"
79− visible: false
80− height: header.height
81− y: header.contentY
82− anchors {
83− left: parent.left
84− leftMargin: visible ? units.gu(2) : 0
102+ InverseMouseArea {
103+ anchors { fill: parent; margins: units.gu(1); bottomMargin: units.gu(3) + bottomContainer.height }
104+ visible: headerContainer.showSearch
105+ onPressed: {
106+ if (headerContainer.popover) {
107+ PopupUtils.close(headerContainer.popover);
85108 }
86− width: visible ? image.width + units.gu(2) : 0
87− onClicked: root.backClicked();
88− Image {
89− id: image
90− anchors.centerIn: parent
91− source: "graphics/headerback.png"
109+ if (!searchTextField.text) {
110+ headerContainer.showSearch = false;
92111 }
112+ searchTextField.focus = false;
113+ mouse.accepted = false;
93114 }
115+ }
94116
95− // FIXME this could potentially be simplified to avoid all the containers
96− Item {
97− id: headerContainer
98−
99− anchors {
100− left: backButton.right
101− right: parent.right
102− }
103− height: childrenRect.height
104−
105− Item {
106− id: itemContainer
107−
108− width: searchContainer.narrowMode ? header.width : header.width - searchContainer.width
109− height: header.height
110− }
111−
112− Item {
113− id: searchContainer
114− objectName: "searchContainer"
115−
116− visible: searchEntryEnabled
117− property bool popoverShouldOpen: false
118− property bool popoverShouldClose: false
119−
120− property bool narrowMode: parent.width < units.gu(80)
121−
122− property bool active: searchField.text != "" || searchField.activeFocus
123− property var popover: null
117+ Flickable {
118+ id: headerContainer
119+ objectName: "headerContainer"
120+ clip: true
121+ anchors { left: parent.left; top: parent.top; right: parent.right }
122+ height: units.gu(6.5)
123+ contentHeight: headersColumn.height
124+ interactive: false
125+ contentY: showSearch ? 0 : height
124126
125− anchors.right: headerContainer.right
126− height: header.height
127+ property bool showSearch: false
128+ property var popover: null
127129
128− state:
129− if (active && narrowMode) "narrowActive"
130− else if (!active && narrowMode) "narrowInactive"
131− else if (active && !narrowMode) "active"
132− else if (!active && !narrowMode) "inactive"
130+ Behavior on contentY {
131+ UbuntuNumberAnimation {
132+ id: openSearchAnimation
133+ property bool openSearchHistory: false
133134
134− onStateChanged: {
135− if (state == "active" || state == "narrowActive") {
136− popoverShouldOpen = true;
137− popoverShouldClose = false;
138− } else {
139− popoverShouldOpen = false;
140− popoverShouldClose = true;
135+ onRunningChanged: {
136+ if (!running && openSearchAnimation.openSearchHistory) {
137+ openSearchAnimation.openSearchHistory = false;
138+ root.openSearchHistory();
141139 }
142140 }
141+ }
142+ }
143143
144− function openPopover() {
145− if (searchHistory.count > 0) {
146− searchContainer.popover = PopupUtils.open(popoverComponent, pointerPositioner,
147− {
148− "contentWidth": searchField.width,
149− "edgeMargins": units.gu(1)
150− }
151− )
144+ Column {
145+ id: headersColumn
146+ anchors { left: parent.left; right: parent.right }
147+
148+ PageHeadStyle {
149+ id: searchHeader
150+ anchors { left: parent.left; right: parent.right }
151+ height: headerContainer.height
152+ contentHeight: height
153+ separatorSource: ""
154+ // Required to keep PageHeadStyle noise down as it expects the Page's properties around.
155+ property var styledItem: searchHeader
156+ property string title
157+ property var config: PageHeadConfiguration {
158+ backAction: Action {
159+ iconName: "back"
160+ onTriggered: {
161+ root.resetSearch();
162+ headerContainer.showSearch = false;
163+ }
152164 }
153− popoverShouldOpen = false;
154− popoverShouldClose = false;
155165 }
156−
157− function closePopover() {
158− if (searchContainer.popover) {
159− PopupUtils.close(searchContainer.popover);
160− searchContainer.popover = null;
166+ property var contents: TextField {
167+ id: searchTextField
168+ objectName: "searchTextField"
169+ hasClearButton: false
170+ anchors {
171+ fill: parent
172+ leftMargin: units.gu(1)
173+ topMargin: units.gu(1)
174+ bottomMargin: units.gu(1)
175+ rightMargin: root.width > units.gu(60) ? root.width - units.gu(40) : units.gu(1)
161176 }
162− popoverShouldOpen = false;
163− popoverShouldClose = false;
164− }
165−
166− onActiveFocusChanged: if (!activeFocus) { searchHistory.addQuery(searchField.text) }
167−
168− TextField {
169− id: searchField
170−
171− anchors.fill: parent
172− anchors.margins: units.gu(1)
173177
174− inputMethodHints: Qt.ImhNoPredictiveText
175− hasClearButton: false
178+ secondaryItem: AbstractButton {
179+ height: searchTextField.height
180+ width: height
181+ enabled: searchTextField.text.length > 0
176182
177− primaryItem: AbstractButton {
178− enabled: searchField.text != "" && !searchIndicator.running
179− onClicked: {
180− if (searchField.text != "") {
181− searchHistory.addQuery(searchField.text)
182− searchField.text = ""
183+ Image {
184+ objectName: "clearIcon"
185+ anchors.fill: parent
186+ anchors.margins: units.gu(.75)
187+ source: "image://theme/clear"
188+ opacity: searchTextField.text.length > 0 && !searchActivityIndicator.running
189+ visible: opacity > 0
190+ Behavior on opacity {
191+ UbuntuNumberAnimation { duration: UbuntuAnimation.FastDuration }
183192 }
184193 }
185− height: parent.height
186− width: height
187194
188195 ActivityIndicator {
189− id: searchIndicator
196+ id: searchActivityIndicator
190197 objectName: "searchIndicator"
191−
192− anchors {
193− verticalCenter: parent.verticalCenter
194− left: parent.left
195− leftMargin: units.gu(0.5)
196− }
197−
198− running: opacity > 0
199− }
200−
201− Image {
202− id: primaryImage
203− objectName: "primaryImage"
204− anchors {
205− verticalCenter: parent.verticalCenter
206− left: parent.left
207− leftMargin: units.gu(0.5)
198+ anchors.fill: parent
199+ anchors.margins: units.gu(.75)
200+ running: root.searchInProgress
201+ opacity: running ? 1 : 0
202+ Behavior on opacity {
203+ UbuntuNumberAnimation { duration: UbuntuAnimation.FastDuration }
208204 }
209− width: units.gu(3)
210− height: units.gu(3)
211− visible: opacity > 0
212205 }
213206
214− Item {
215− id: pointerPositioner
216− anchors.left: parent.right
217− anchors.leftMargin: units.gu(0.5)
218− anchors.top: parent.bottom
207+ onClicked: {
208+ root.resetSearch(true);
209+ root.openSearchHistory();
219210 }
220211 }
221212
222− onTextChanged: {
223− if (text != "") searchContainer.closePopover()
224− else if (text == "" && activeFocus) searchContainer.openPopover()
225− }
226−
227213 onActiveFocusChanged: {
228− if (!activeFocus) searchContainer.closePopover()
214+ if (activeFocus) {
215+ root.openSearchHistory();
216+ }
229217 }
218+ }
219+ }
230220
231− states: [
232− State {
233− name: "searching"
234− when: scope && scope.searchInProgress
235− PropertyChanges { target: searchIndicator; running: true; opacity: 1 }
236− PropertyChanges { target: primaryImage; opacity: 0 }
237− },
238− State {
239− name: "idle"
240− when: !scope || !scope.searchInProgress
241− PropertyChanges { target: searchIndicator; opacity: 0 }
242− PropertyChanges { target: primaryImage; opacity: 1 }
221+ PageHeadStyle {
222+ id: header
223+ objectName: "innerPageHeader"
224+ anchors { left: parent.left; right: parent.right }
225+ height: headerContainer.height
226+ contentHeight: height
227+ separatorSource: ""
228+ textColor: root.scopeStyle ? root.scopeStyle.foreground : "grey"
229+ property var styledItem: header
230+ property string title: root.title
231+ property var config: PageHeadConfiguration {
232+ backAction: Action {
233+ iconName: "back"
234+ visible: root.showBackButton
235+ onTriggered: {
236+ root.backClicked();
243237 }
244− ]
238+ }
245239
246− transitions: [
247− Transition {
248− to: "searching"
249− reversible: true
250− SequentialAnimation {
251− NumberAnimation { target: primaryImage; property: "opacity"; duration: UbuntuAnimation.FastDuration; easing.type: Easing.Linear }
252− NumberAnimation { target: searchIndicator; property: "opacity"; duration: UbuntuAnimation.FastDuration; easing.type: Easing.Linear }
240+ actions: [
241+ Action {
242+ iconName: "search"
243+ visible: root.searchEntryEnabled
244+ onTriggered: {
245+ headerContainer.showSearch = true;
246+ searchTextField.forceActiveFocus();
253247 }
254248 }
255249 ]
256250 }
257251
258− states: [
259− State {
260− name: "wide"
261− AnchorChanges { target: itemContainer; anchors.top: headerContainer.top }
262− AnchorChanges { target: searchContainer; anchors.left: undefined; anchors.top: itemContainer.top }
263− },
264− State {
265− name: "narrow"
266− PropertyChanges { target: searchField; highlighted: true }
267− AnchorChanges { target: itemContainer; anchors.top: searchContainer.bottom }
268− AnchorChanges { target: searchContainer; anchors.left: headerContainer.left; anchors.top: headerContainer.top }
269− },
270− State {
271− name: "active"
272− extend: "wide"
273− PropertyChanges { target: searchContainer; width: units.gu(40) }
274− PropertyChanges { target: primaryImage; source: searchField.text ? "../Dash/graphics/icon_clear.png" : "../Dash/graphics/icon_search_active.png" }
275− PropertyChanges { target: searchField; highlighted: true }
276− },
277− State {
278− name: "inactive"
279− extend: "wide"
280− PropertyChanges { target: searchContainer; width: units.gu(25) }
281− PropertyChanges { target: primaryImage; source: "../Dash/graphics/icon_search_inactive.png" }
282− PropertyChanges { target: searchField; highlighted: false }
283− },
284− State {
285− name: "narrowActive"
286− extend: "narrow"
287− PropertyChanges { target: header; contentY: 0 }
288− PropertyChanges { target: primaryImage; source: searchField.text ? "../Dash/graphics/icon_clear.png" : "../Dash/graphics/icon_search_active.png" }
289− },
290− State {
291− name: "narrowInactive"
292− extend: "narrow"
293− PropertyChanges { target: header; contentY: header.height }
294− PropertyChanges { target: primaryImage; source: searchField.text ? "../Dash/graphics/icon_clear.png" : "../Dash/graphics/icon_search_active.png" }
295− }
296− ]
297−
298− transitions: [
299− Transition {
300− to: "active"
301− SequentialAnimation {
302− ParallelAnimation {
303− NumberAnimation { targets: [searchContainer, searchField]; property: "width"; duration: 200; easing.type: Easing.InOutQuad }
304− PropertyAction { target: primaryImage; property: "source" }
305− AnchorAnimation { targets: [searchContainer, itemContainer]; duration: 200; easing.type: Easing.InOutQuad }
306− }
307− ScriptAction { script: if (searchContainer.popoverShouldOpen) { searchContainer.openPopover(); } }
308− }
309− },
310− Transition {
311− to: "inactive"
312− ScriptAction { script: if (searchContainer.popoverShouldClose) { searchContainer.closePopover(); } }
313− NumberAnimation { targets: [searchContainer, searchField] ; property: "width"; duration: 200; easing.type: Easing.InOutQuad }
314− AnchorAnimation { targets: [searchContainer, itemContainer]; duration: 200; easing.type: Easing.InOutQuad }
315− },
316− Transition {
317− to: "narrowActive"
318− SequentialAnimation {
319− ParallelAnimation {
320− NumberAnimation { targets: [searchContainer, searchField] ; property: "width"; duration: 200; easing.type: Easing.OutQuad }
321− AnchorAnimation { targets: [searchContainer, itemContainer]; duration: 200; easing.type: Easing.InOutQuad }
322− }
323− ScriptAction { script: if (searchContainer.popoverShouldOpen) { searchContainer.openPopover(); } }
324− }
325− },
326− Transition {
327− to: "narrowInactive"
328− ScriptAction { script: if (searchContainer.popoverShouldClose) { searchContainer.closePopover(); } }
329− NumberAnimation { targets: [searchContainer, searchField] ; property: "width"; duration: 200; easing.type: Easing.OutQuad }
330− AnchorAnimation { targets: [searchContainer, itemContainer]; duration: 200; easing.type: Easing.InOutQuad }
331− }
332− ]
252+ property var contents: null
253+ Component.onCompleted: root.refreshLogo()
333254
334255 Component {
335− id: popoverComponent
336− Popover {
337− id: popover
338−
339− // FIXME: this should go into the first item below, but enable: false
340− // prevents mouse events propagation
341− AbstractButton {
342− anchors {
343− top: parent.top
344− right: parent.right
345− }
346− height: units.gu(6)
347− width: height
348−
349− onClicked: searchContainer.closePopover()
256+ id: imageComponent
350257
351− Image {
352− anchors.centerIn: parent
353− width: units.gu(2)
354− height: units.gu(2)
355− source: "../Dash/graphics/icon_listview_clear.png"
356− }
258+ Item {
259+ anchors { fill: parent; topMargin: units.gu(1); bottomMargin: units.gu(1) }
260+ clip: true
261+ Image {
262+ objectName: "titleImage"
263+ anchors.fill: parent
264+ source: root.scopeStyle ? root.scopeStyle.headerLogo : ""
265+ fillMode: Image.PreserveAspectFit
266+ horizontalAlignment: Image.AlignLeft
267+ sourceSize.height: height
357268 }
269+ }
270+ }
271+ }
272+ }
273+ }
358274
359− Column {
360− anchors {
361− top: parent.top
362− left: parent.left
363− right: parent.right
364− }
365−
366− ListItem.Standard { enabled: false; text: i18n.tr("Recent searches") }
275+ Component {
276+ id: popoverComponent
277+ Popover {
278+ id: popover
279+ autoClose: false
367280
368− Repeater {
369− id: recentSearches
370− model: searchHistory
281+ Component.onDestruction: {
282+ headerContainer.popover = null;
283+ }
371284
372− delegate: ListItem.Standard {
373− showDivider: index < recentSearches.count - 1
374− text: query
375− onClicked: {
376− searchHistory.addQuery(text)
377− searchField.text = text
378− }
379− }
380− }
381− }
382− }
285+ Column {
286+ anchors {
287+ top: parent.top
288+ left: parent.left
289+ right: parent.right
383290 }
384291
385− InverseMouseArea {
386− enabled: searchField.activeFocus
292+ Repeater {
293+ id: recentSearches
294+ model: searchHistory
387295
388− anchors {
389− top: parent.top
390− left: parent.left
391− right: parent.right
296+ delegate: Standard {
297+ showDivider: index < recentSearches.count - 1
298+ text: query
299+ onClicked: {
300+ searchHistory.addQuery(text);
301+ searchTextField.text = text;
302+ PopupUtils.close(popover);
303+ }
392304 }
393−
394− height: searchContainer.popover ? parent.height + searchContainer.popover.contentHeight + units.gu(2) : parent.height
395−
396− onPressed: searchField.focus = false
397305 }
398306 }
399307 }
@@ -402,7 +310,7 @@ Item {
402310 BorderImage {
403311 id: bottomBorder
404312 anchors {
405− top: header.bottom
313+ top: headerContainer.bottom
406314 left: parent.left
407315 right: parent.right
408316 bottom: bottomContainer.top
qml/Components/PageHeaderLabel.qmldeleted−41
@@ -1,41 +0,0 @@
1−/*
2− * Copyright (C) 2013 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−
20−PageHeader {
21− property alias text: label.text
22−
23− childItem: Label {
24− id: label
25− anchors {
26− left: parent.left
27− leftMargin: units.gu(2)
28− right: parent.right
29− verticalCenter: parent.verticalCenter
30− }
31−
32− color: Theme.palette.selected.backgroundText
33− opacity: 0.8
34− font.family: "Ubuntu"
35− font.weight: Font.Light
36− fontSize: "x-large"
37− elide: Text.ElideRight
38− style: Text.Raised
39− styleColor: "black"
40− }
41−}
qml/Components/SearchHistoryModel.qml → qml/Components/SearchHistoryModel/SearchHistoryModel.qmlrenamed+1
@@ -14,6 +14,7 @@
1414 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1515 */
1616
17+pragma Singleton
1718import QtQuick 2.0
1819
1920// TODO sanitize input, move to persistent storage
qml/Components/SearchHistoryModel/qmldirnew file+1
@@ -0,0 +1 @@
1+singleton SearchHistoryModel 1.0 SearchHistoryModel.qml
qml/Components/graphics/headerback@27.pngdeleted

Binary file not shown.

qml/Dash/CardCarousel.qml+7−4
@@ -40,9 +40,6 @@ DashRenderer {
4040 cacheBuffer: 1404 // 18px * 13gu * 6
4141 model: cardCarousel.model
4242
43− onClicked: cardCarousel.clicked(index, null)
44− onPressAndHold: cardCarousel.pressAndHold(index)
45−
4643 property real fontScale: 1 / selectedItemScaleFactor
4744 property real headerHeight: cardTool.headerHeight / selectedItemScaleFactor
4845
@@ -51,11 +48,16 @@ DashRenderer {
5148
5249 property bool explicitlyScaled
5350 property var model
51+ property int index
5452 enabled: false
5553
54+ objectName: "carouselDelegate" + index
55+
56+ function clicked() { cardCarousel.clicked(index, model.result) }
57+ function pressAndHold() { cardCarousel.pressAndHold(index, model.result) }
58+
5659 sourceComponent: cardTool.cardComponent
5760 onLoaded: {
58− item.objectName = "carouselDelegate" + index;
5961 item.fixedHeaderHeight = Qt.binding(function() { return carousel.headerHeight; });
6062 item.height = Qt.binding(function() { return cardTool.cardHeight; });
6163 item.cardData = Qt.binding(function() { return model; });
@@ -64,6 +66,7 @@ DashRenderer {
6466 item.fontScale = Qt.binding(function() { return carousel.fontScale; });
6567 item.showHeader = Qt.binding(function() { return loader.explicitlyScaled; });
6668 item.artShapeBorderSource = "none";
69+ item.scopeStyle = cardCarousel.scopeStyle;
6770 }
6871
6972 BorderImage {
qml/Dash/CardFilterGrid.qml+1
@@ -58,6 +58,7 @@ DashRenderer {
5858 item.template = Qt.binding(function() { return cardTool.template; });
5959 item.components = Qt.binding(function() { return cardTool.components; });
6060 item.headerAlignment = Qt.binding(function() { return cardTool.headerAlignment; });
61+ item.scopeStyle = genericFilterGrid.scopeStyle;
6162 }
6263 Connections {
6364 target: loader.item
qml/Dash/CardVerticalJournal.qml+2−1
@@ -31,7 +31,7 @@ DashRenderer {
3131 // is special by the fact that it doesn't know how to calculate its implicit height unless we give it
3232 // enough height that it can start creating its children so we make sure it has enough height for that
3333 // in case the model is non empty
34− readonly property double minHeight: root.model.count > 1 ? cardVerticalJournal.rowSpacing + 1 : 0
34+ readonly property double minHeight: root.model.count >= 1 ? cardVerticalJournal.rowSpacing + 1 : 0
3535 height: filtered ? Math.max(collapsedHeight, minHeight) : uncollapsedHeight
3636
3737 Behavior on height {
@@ -75,6 +75,7 @@ DashRenderer {
7575 item.template = Qt.binding(function() { return cardTool.template; });
7676 item.components = Qt.binding(function() { return cardTool.components; });
7777 item.headerAlignment = Qt.binding(function() { return cardTool.headerAlignment; });
78+ item.scopeStyle = root.scopeStyle;
7879 }
7980 Connections {
8081 target: loader.item
qml/Dash/Dash.qml+14−15
@@ -26,9 +26,6 @@ Showable {
2626
2727 visible: shown
2828
29− property ListModel searchHistory: SearchHistoryModel {}
30− property bool searchable: !dashContent.previewOpen && !scopeItem.previewOpen
31−
3229 property string showScopeOnLoaded: "clickscope"
3330 property real contentScale: 1.0
3431
@@ -76,7 +73,6 @@ Showable {
7673 height: parent.height
7774 model: filteredScopes
7875 scopes: scopes
79− searchHistory: dash.searchHistory
8076 visible: x != -width
8177 onGotoScope: {
8278 dash.setCurrentScope(scopeId, true, false);
@@ -105,26 +101,29 @@ Showable {
105101 }
106102 }
107103
108− ScopeItem {
104+ GenericScopeView {
109105 id: scopeItem
110106 anchors.left: dashContent.right
111107 width: parent.width
112108 height: parent.height
113− searchHistory: dash.searchHistory
114109 scale: dash.contentScale
115110 clip: scale != 1.0
116111 visible: scope != null
117− onBack: {
112+ hasBackAction: true
113+ isCurrent: visible
114+ onBackClicked: {
118115 closeOverlayScope();
119− }
120− onGotoScope: {
121− // TODO
122− console.log("gotoScope from an openScope scope is not implemented");
123− }
124− onOpenScope: {
125− // TODO
126− console.log("openScope from an openScope scope is not implemented");
116+ closePreview();
127117 }
128118
119+ Connections {
120+ target: scopeItem.scope
121+ onGotoScope: {
122+ dashContent.gotoScope(scopeId);
123+ }
124+ onOpenScope: {
125+ dashContent.openScope(scope);
126+ }
127+ }
129128 }
130129}
qml/Dash/DashContent.qml+7−84
@@ -26,13 +26,11 @@ Item {
2626 property var model: null
2727 property var scopes: null
2828 readonly property alias currentIndex: dashContentList.currentIndex
29− property alias previewOpen: previewListView.open
30−
31− property ListModel searchHistory
3229
3330 signal scopeLoaded(string scopeId)
3431 signal gotoScope(string scopeId)
3532 signal openScope(var scope)
33+ signal closePreview()
3634
3735 // If we set the current scope index before the scopes have been added,
3836 // then we need to wait until the loaded signals gets emitted from the scopes
@@ -82,23 +80,16 @@ Item {
8280 dashContentList.currentItem.theScope.closeScope(scope)
8381 }
8482
85− function closePreview() {
86− previewListView.open = false;
87− }
88−
8983 Item {
9084 id: dashContentListHolder
9185
92− x: previewListView.open ? -width : 0
93− Behavior on x { UbuntuNumberAnimation { } }
94− width: parent.width
95− height: parent.height
86+ anchors.fill: parent
9687
9788 ListView {
9889 id: dashContentList
9990 objectName: "dashContentList"
10091
101− interactive: dashContent.scopes.loaded && !previewListView.open && currentItem && !currentItem.moving
92+ interactive: dashContent.scopes.loaded && currentItem && !currentItem.moving
10293
10394 anchors.fill: parent
10495 model: dashContent.model
@@ -147,11 +138,8 @@ Item {
147138
148139 onLoaded: {
149140 item.objectName = scope.id
150− item.pageHeader = dashPageHeader;
151− item.previewListView = previewListView;
152141 item.scope = Qt.binding(function() { return scope })
153142 item.isCurrent = Qt.binding(function() { return visible && ListView.isCurrentItem })
154− item.tabBarHeight = Qt.binding(function() { return dashPageHeader.implicitHeight; })
155143 dashContent.scopeLoaded(item.scope.id)
156144 }
157145 Connections {
@@ -164,78 +152,13 @@ Item {
164152 dashContent.openScope(scope);
165153 }
166154 }
167−
168− Component.onDestruction: active = false
169− }
170− }
171−
172− PageHeader {
173− id: dashPageHeader
174− objectName: "pageHeader"
175− width: parent.width
176− searchEntryEnabled: true
177− searchHistory: dashContent.searchHistory
178− scope: dashContentList.currentItem && dashContentList.currentItem.theScope
179−
180− childItem: TabBar {
181− id: tabBar
182− objectName: "tabbar"
183− height: units.gu(6.5)
184− width: parent.width
185− style: DashContentTabBarStyle {}
186−
187− SortFilterProxyModel {
188− id: tabBarModel
189−
190− model: dashContentList.model
191−
192− property int selectedIndex: -1
193− onSelectedIndexChanged: {
194− if (dashContentList.currentIndex == -1 && tabBar.selectedIndex != -1) {
195− // TODO This together with the Timer below
196− // are a workaround for the first tab sometimes not showing the text.
197− // But Tabs are going away in the future so not sure if makes
198− // sense invetigating what's the problem at this stage
199− selectionModeTimer.restart();
200− }
201− dashContentList.currentIndex = selectedIndex;
202− }
203− }
204−
205− model: tabBarModel.count > 0 ? tabBarModel : null
206−
207− Connections {
208− target: dashContentList
209− onCurrentIndexChanged: {
210− tabBarModel.selectedIndex = dashContentList.currentIndex
155+ Connections {
156+ target: dashContent
157+ onClosePreview: if (item) item.closePreview()
211158 }
212− }
213159
214− Timer {
215− id: selectionModeTimer
216− interval: 1
217− onTriggered: tabBar.selectionMode = false
160+ Component.onDestruction: active = false
218161 }
219− }
220−
221− bottomItem: DashDepartments {
222− scope: dashContentList.currentItem ? dashContentList.currentItem.theScope : null
223− width: parent.width <= units.gu(60) ? parent.width : units.gu(40)
224− anchors.right: parent.right
225− windowHeight: dashContent.height
226− windowWidth: dashContent.width
227− }
228162 }
229163 }
230−
231− PreviewListView {
232− id: previewListView
233− objectName: "dashContentPreviewList"
234− visible: x != width
235− scope: dashContentList.currentItem ? dashContentList.currentItem.theScope : null
236− pageHeader: dashPageHeader
237− width: parent.width
238− height: parent.height
239− anchors.left: dashContentListHolder.right
240− }
241164}
qml/Dash/DashDepartments.qml+8−7
@@ -29,6 +29,7 @@ AbstractButton {
2929
3030 property alias windowWidth: blackRect.width
3131 property alias windowHeight: blackRect.height
32+ property var scopeStyle: null
3233
3334 // Are we drilling down the tree or up?
3435 property bool isGoingBack: false
@@ -78,18 +79,17 @@ AbstractButton {
7879 anchors.margins: units.gu(2)
7980 verticalAlignment: Text.AlignVCenter
8081 text: root.currentDepartment ? root.currentDepartment.label : ""
81− color: "gray" // TODO remove once we're a separate app
82+ color: root.scopeStyle ? root.scopeStyle.foreground : "grey"
8283 }
8384
84− Image {
85+ Icon {
8586 anchors.verticalCenter: parent.verticalCenter
8687 anchors.right: parent.right
8788 anchors.rightMargin: units.gu(2)
88− rotation: showList ? 180 : 0
89− source: "image://theme/dropdown-menu"
90− sourceSize.height: parent.height - units.gu(2)
91− sourceSize.width: units.gu(2)
92− fillMode: Image.PreserveAspectFit
89+ name: showList ? "up" : "down"
90+ height: units.gu(2)
91+ width: height
92+ color: root.scopeStyle ? root.scopeStyle.foreground : "grey"
9393 }
9494
9595 // departmentListView is outside root
@@ -124,6 +124,7 @@ AbstractButton {
124124 objectName: "department" + index
125125 visible: height != 0
126126 width: departmentListView.width
127+ scopeStyle: root.scopeStyle
127128 property real desiredHeight: {
128129 if (root.showList) {
129130 if (department && department.loaded && x == departmentListView.contentX)
qml/Dash/DashDepartmentsList.qml+19−17
@@ -21,15 +21,17 @@ Item {
2121 id: root
2222 property var department: null
2323 property var currentDepartment: null
24+ property var scopeStyle: null
2425 signal enterDepartment(var newDepartmentId, bool hasChildren)
2526 signal goBackToParentClicked()
2627 signal allDepartmentClicked()
2728
2829 readonly property int itemHeight: units.gu(5)
30+ readonly property color foregroundColor: root.scopeStyle ? root.scopeStyle.foreground : "grey"
2931 implicitHeight: flickable.contentHeight
3032
3133 Rectangle {
32− color: "white"
34+ color: !root.scopeStyle || Qt.colorEqual(root.scopeStyle.background, "transparent") ? "white" : root.scopeStyle.background
3335 anchors.fill: parent
3436 }
3537
@@ -71,17 +73,17 @@ Item {
7173
7274 onClicked: root.goBackToParentClicked();
7375
74− Image {
76+ Icon {
7577 id: backImage
7678 anchors {
7779 verticalCenter: parent.verticalCenter
7880 left: parent.left
7981 leftMargin: units.gu(2)
8082 }
81− source: "image://theme/back"
82− sourceSize.height: parent.height - units.gu(3)
83− sourceSize.width: units.gu(3)
84− fillMode: Image.PreserveAspectFit
83+ name: "back"
84+ height: units.gu(2)
85+ width: height
86+ color: root.foregroundColor
8587 }
8688
8789 Label {
@@ -91,7 +93,7 @@ Item {
9193 leftMargin: units.gu(0.5)
9294 }
9395 text: department ? department.parentLabel : ""
94− color: "gray" // TODO remove once we're a separate app
96+ color: root.foregroundColor
9597 }
9698
9799 Rectangle {
@@ -102,7 +104,7 @@ Item {
102104 leftMargin: units.gu(2)
103105 rightMargin: units.gu(2)
104106 }
105− color: "gray"
107+ color: root.foregroundColor
106108 opacity: 0.2
107109 height: units.dp(1)
108110 }
@@ -123,7 +125,7 @@ Item {
123125 }
124126 text: department ? (department.allLabel != "" ? department.allLabel : department.label) : ""
125127 font.bold: true
126− color: "gray" // TODO remove once we're a separate app
128+ color: root.foregroundColor
127129 }
128130
129131 Rectangle {
@@ -134,7 +136,7 @@ Item {
134136 leftMargin: units.gu(2)
135137 rightMargin: units.gu(2)
136138 }
137− color: "gray"
139+ color: root.foregroundColor
138140 opacity: 0.2
139141 height: units.dp(1)
140142 }
@@ -159,19 +161,19 @@ Item {
159161 leftMargin: units.gu(2)
160162 }
161163 text: label
162− color: "gray" // TODO remove once we're a separate app
164+ color: root.foregroundColor
163165 }
164166
165− Image {
167+ Icon {
166168 anchors {
167169 verticalCenter: parent.verticalCenter
168170 right: parent.right
169171 rightMargin: units.gu(2)
170172 }
171− source: hasChildren ? "image://theme/chevron" : "graphics/tick.png"
172− sourceSize.height: parent.height - units.gu(3)
173− sourceSize.width: units.gu(3)
174− fillMode: Image.PreserveAspectFit
173+ height: units.gu(2)
174+ width: height
175+ name: hasChildren ? "go-next" : "tick"
176+ color: root.foregroundColor
175177 visible: hasChildren || isActive
176178 }
177179
@@ -183,7 +185,7 @@ Item {
183185 leftMargin: units.gu(2)
184186 rightMargin: units.gu(2)
185187 }
186− color: "gray"
188+ color: root.foregroundColor
187189 opacity: 0.1
188190 height: units.dp(1)
189191 visible: index != department.count - 1
qml/Dash/DashRenderer.qml+5−4
@@ -36,10 +36,11 @@ Item {
3636 // The model to renderer
3737 property var model
3838
39− /*!
40− \brief CardTool component.
41− */
42− property var cardTool: undefined
39+ /// CardTool component.
40+ property var cardTool: null
41+
42+ /// ScopeStyle component.
43+ property var scopeStyle: null
4344
4445 /// Emitted when the user clicked on an item
4546 /// @param index is the index of the clicked item
qml/Dash/GenericScopeView.qml+57−29
@@ -19,6 +19,7 @@ import Ubuntu.Components 0.1
1919import Utils 0.1
2020import Unity 0.2
2121import Unity.Application 0.1
22+import Dash 0.1
2223import "../Components"
2324import "../Components/ListItems" as ListItems
2425
@@ -29,13 +30,16 @@ FocusScope {
2930 property SortFilterProxyModel categories: categoryFilter
3031 property bool isCurrent: false
3132 property alias moving: categoryView.moving
32− property int tabBarHeight: 0
33− property PageHeader pageHeader: null
34− property Item previewListView: null
35−
33+ property bool hasBackAction: false
3634 property bool enableHeightBehaviorOnNextCreation: false
3735 property var categoryView: categoryView
3836
37+ property var scopeStyle: ScopeStyle {
38+ style: scope ? scope.customizations : {}
39+ }
40+
41+ signal backClicked()
42+
3943 onScopeChanged: {
4044 if (scope) {
4145 scope.activateApplication.connect(activateApp);
@@ -54,6 +58,10 @@ FocusScope {
5458 categoryView.showHeader()
5559 }
5660
61+ function closePreview() {
62+ previewListView.open = false;
63+ }
64+
5765 Binding {
5866 target: scope
5967 property: "isActive"
@@ -88,33 +96,32 @@ FocusScope {
8896 when: isCurrent
8997 }
9098
91− Connections {
92− target: panel
93− onSearchClicked: if (isCurrent) {
94− pageHeader.triggerSearch()
95− categoryView.showHeader()
96− }
97− }
98−
9999 Connections {
100100 target: scopeView.scope
101101 onShowDash: previewListView.open = false;
102102 onHideDash: previewListView.open = false;
103103 }
104104
105+ Rectangle {
106+ anchors.fill: parent
107+ color: scopeView.scopeStyle ? scopeView.scopeStyle.background : "transparent"
108+ visible: color != "transparent"
109+ }
110+
105111 ScopeListView {
106112 id: categoryView
107113 objectName: "categoryListView"
108− anchors.fill: parent
114+
115+ x: previewListView.open ? -width : 0
116+ Behavior on x { UbuntuNumberAnimation { } }
117+ width: parent.width
118+ height: parent.height
119+
109120 model: scopeView.categories
110121 forceNoClip: previewListView.open
111122
112123 property string expandedCategoryId: ""
113124
114− onContentYChanged: pageHeader.positionRealHeader();
115− onOriginYChanged: pageHeader.positionRealHeader();
116− onContentHeightChanged: pageHeader.positionRealHeader();
117−
118125 delegate: ListItems.Base {
119126 id: baseItem
120127 objectName: "dashCategory" + category
@@ -168,6 +175,7 @@ FocusScope {
168175 item.model = Qt.binding(function() { return results })
169176 }
170177 item.objectName = Qt.binding(function() { return categoryId })
178+ item.scopeStyle = scopeView.scopeStyle;
171179 if (item.expandable) {
172180 var shouldFilter = categoryId != categoryView.expandedCategoryId;
173181 item.setFilter(shouldFilter, false /*animate*/);
@@ -307,6 +315,7 @@ FocusScope {
307315 property var delegate: categoryView.item(delegateIndex)
308316 width: categoryView.width
309317 text: section
318+ textColor: scopeStyle ? scopeStyle.foreground : "grey"
310319 image: {
311320 if (delegate && delegate.expandable)
312321 return delegate.filtered ? "graphics/header_handlearrow.png" : "graphics/header_handlearrow2.png"
@@ -319,20 +328,39 @@ FocusScope {
319328 categoryView.expandedCategoryId = "";
320329 }
321330 }
322− pageHeader: Item {
323− implicitHeight: scopeView.tabBarHeight
324− onHeightChanged: {
325− if (scopeView.pageHeader && scopeView.isCurrent) {
326− scopeView.pageHeader.height = height;
327− }
328− }
329− onYChanged: positionRealHeader();
330331
331− function positionRealHeader() {
332− if (scopeView.pageHeader && scopeView.isCurrent) {
333− scopeView.pageHeader.y = y + parent.y;
334− }
332+ pageHeader: PageHeader {
333+ id: pageHeader
334+ objectName: "scopePageHeader"
335+ width: parent.width
336+ title: scopeView.scope ? scopeView.scope.name : ""
337+ showBackButton: scopeView.hasBackAction
338+ searchEntryEnabled: true
339+ searchInProgress: scopeView.scope ? scopeView.scope.searchInProgress : false
340+ scopeStyle: scopeView.scopeStyle
341+
342+ bottomItem: DashDepartments {
343+ scope: scopeView.scope
344+ width: parent.width <= units.gu(60) ? parent.width : units.gu(40)
345+ anchors.right: parent.right
346+ windowHeight: scopeView.height
347+ windowWidth: scopeView.width
348+ scopeStyle: scopeView.scopeStyle
335349 }
350+
351+ onBackClicked: scopeView.backClicked()
336352 }
337353 }
354+
355+ PreviewListView {
356+ id: previewListView
357+ objectName: "previewListView"
358+ visible: x != width
359+ scope: scopeView.scope
360+ scopeStyle: scopeView.scopeStyle
361+ width: parent.width
362+ height: parent.height
363+ anchors.left: categoryView.right
364+ }
365+
338366}
qml/Dash/PreviewListView.qml+8−22
@@ -24,7 +24,7 @@ Item {
2424 id: root
2525
2626 property var scope: null
27− property var pageHeader: null
27+ property var scopeStyle: null
2828
2929 property alias open: previewListView.open
3030 property alias model: previewListView.model
@@ -34,34 +34,19 @@ Item {
3434
3535 PageHeader {
3636 id: header
37− objectName: root.objectName + "_pageHeader"
37+ objectName: "pageHeader"
3838 width: parent.width
39− searchEntryEnabled: false
40− scope: root.scope
41− height: units.gu(8.5)
39+ title: scope ? scope.name : ""
4240 showBackButton: true
43− onBackClicked: root.open = false
41+ searchEntryEnabled: false
42+ scopeStyle: root.scopeStyle
4443
45− childItem: Label {
46− id: label
47− anchors {
48− left: parent.left
49− right: parent.right
50− verticalCenter: parent.verticalCenter
51− }
52− text: scope ? scope.name : ""
53− // TODO Saviq: These should come from updated Ubuntu Palette.
54− color: "#888888"
55− font.family: "Ubuntu"
56− font.weight: Font.Light
57− fontSize: "x-large"
58− elide: Text.ElideRight
59− }
44+ onBackClicked: root.open = false
6045 }
6146
6247 ListView {
6348 id: previewListView
64− objectName: root.objectName + "_listView"
49+ objectName: "listView"
6550 anchors {
6651 top: header.bottom
6752 bottom: parent.bottom
@@ -118,6 +103,7 @@ Item {
118103 var previewStack = root.scope.preview(result);
119104 return previewStack.getPreviewModel(0);
120105 }
106+ scopeStyle: root.scopeStyle
121107 }
122108
123109 MouseArea {
qml/Dash/Previews/Preview.qml+4
@@ -36,6 +36,9 @@ Item {
3636 //! \brief Should be set to true if this preview is currently displayed.
3737 property bool isCurrent: false
3838
39+ //! \brief The ScopeStyle component.
40+ property var scopeStyle: null
41+
3942 clip: true
4043
4144 Binding {
@@ -77,6 +80,7 @@ Item {
7780 widgetType: model.type
7881 widgetData: model.properties
7982 isCurrentPreview: root.isCurrent
83+ scopeStyle: root.scopeStyle
8084 anchors {
8185 left: parent.left
8286 right: parent.right
qml/Dash/Previews/PreviewAudioPlayback.qml+3−3
@@ -139,7 +139,7 @@ PreviewWidget {
139139 objectName: "trackTitleLabel"
140140 anchors { top: parent.top; left: parent.left; right: parent.right }
141141 opacity: 0.9
142− color: "grey"//Theme.palette.selected.backgroundText // TODO karni: Use updated Palette.
142+ color: scopeStyle ? scopeStyle.foreground : "grey"
143143 fontSize: "small"
144144 horizontalAlignment: Text.AlignLeft
145145 text: modelData["title"]
@@ -152,7 +152,7 @@ PreviewWidget {
152152 anchors { top: trackTitleLabel.bottom; left: parent.left; right: parent.right }
153153 visible: text !== ""
154154 opacity: 0.9
155− color: "grey"//Theme.palette.selected.backgroundText // TODO karni: Use updated Palette.
155+ color: scopeStyle ? scopeStyle.foreground : "grey"
156156 font.weight: Font.Light
157157 fontSize: "small"
158158 horizontalAlignment: Text.AlignLeft
@@ -193,7 +193,7 @@ PreviewWidget {
193193 anchors.verticalCenter: parent.verticalCenter
194194 width: parent.column3Width
195195 opacity: 0.9
196− color: "grey"//Theme.palette.selected.backgroundText // TODO karni: Use updated Palette.
196+ color: scopeStyle ? scopeStyle.foreground : "grey"
197197 fontSize: "small"
198198 horizontalAlignment: Text.AlignRight
199199 text: audio.lengthToString(modelData["length"])
qml/Dash/Previews/PreviewHeader.qml+1−1
@@ -35,7 +35,7 @@ PreviewWidget {
3535 readonly property url mascot: root.widgetData["mascot"] || ""
3636 readonly property string title: root.widgetData["title"] || ""
3737 readonly property string subtitle: root.widgetData["subtitle"] || ""
38− readonly property color fontColor: "grey"
38+ readonly property color fontColor: root.scopeStyle ? root.scopeStyle.foreground : "grey"
3939
4040 implicitHeight: row.height + row.margins * 2
4141 width: parent.width
qml/Dash/Previews/PreviewRatingDisplay.qml+3−4
@@ -61,6 +61,7 @@ PreviewWidget {
6161 size: 5
6262 value: modelData["rating"] || -1
6363 visible: value >= 0
64+ interactive: false
6465
6566 property var urlIconEmpty: widgetData["rating-icon-empty"]
6667 property var urlIconFull: widgetData["rating-icon-full"]
@@ -71,8 +72,7 @@ PreviewWidget {
7172 id: authorLabel
7273 objectName: "authorLabel"
7374 anchors { left: parent.left; right: parent.right }
74− // TODO cimi: Yet another fix requiring Palette update.
75− color: "grey" //Theme.palette.selected.backgroundText
75+ color: scopeStyle ? scopeStyle.foreground : "grey"
7676 opacity: .8
7777 text: modelData["author"] || ""
7878 visible: text !== ""
@@ -83,8 +83,7 @@ PreviewWidget {
8383 id: reviewLabel
8484 objectName: "reviewLabel"
8585 anchors { left: parent.left; right: parent.right }
86− // TODO cimi: Yet another fix requiring Palette update.
87− color: "grey" //Theme.palette.selected.backgroundText
86+ color: scopeStyle ? scopeStyle.foreground : "grey"
8887 opacity: .8
8988 text: modelData["review"] || ""
9089 visible: text !== ""
qml/Dash/Previews/PreviewRatingInput.qml+2−4
@@ -76,8 +76,7 @@ PreviewWidget {
7676 verticalCenter: parent.verticalCenter
7777 left: parent.left
7878 }
79− // TODO cimi: Yet another fix requiring Palette update.
80− color: "grey" //Theme.palette.selected.backgroundText
79+ color: root.scopeStyle ? root.scopeStyle.foreground : "grey"
8180 opacity: .8
8281 text: widgetData["rating-label"] || i18n.tr("Rate this")
8382 }
@@ -122,8 +121,7 @@ PreviewWidget {
122121 left: parent.left
123122 right: parent.right
124123 }
125− // TODO cimi: Yet another fix requiring Palette update.
126− color: "grey" //Theme.palette.selected.backgroundText
124+ color: root.scopeStyle ? root.scopeStyle.foreground : "grey"
127125 opacity: .8
128126 text: widgetData["review-label"] || i18n.tr("Add a review")
129127 }
qml/Dash/Previews/PreviewTextSummary.qml+2−4
@@ -39,8 +39,7 @@ PreviewWidget {
3939 }
4040 height: visible ? implicitHeight : 0
4141 fontSize: "large"
42− // TODO karni: Yet another fix requiring Palette update.
43− color: "grey" //Theme.palette.selected.backgroundText
42+ color: root.scopeStyle ? root.scopeStyle.foreground : "grey"
4443 visible: text !== ""
4544 opacity: .8
4645 text: widgetData["title"] || ""
@@ -62,8 +61,7 @@ PreviewWidget {
6261 clip: true
6362 fontSize: "small"
6463 lineHeight: 1.2
65− // TODO karni: Yet another fix requiring Palette update.
66− color: "grey" //Theme.palette.selected.backgroundText
64+ color: root.scopeStyle ? root.scopeStyle.foreground : "grey"
6765 opacity: .8
6866 text: widgetData["text"]
6967 wrapMode: Text.Wrap
qml/Dash/Previews/PreviewWidget.qml+3
@@ -28,6 +28,9 @@ Item {
2828 //! Variable used to contain widget's data
2929 property var widgetData
3030
31+ //! The ScopeStyle component.
32+ property var scopeStyle: null
33+
3134 /*! \brief This signal should be emitted when a preview action was triggered.
3235 *
3336 * \param widgetId, actionId Respective identifiers from widgetData.
qml/Dash/Previews/PreviewWidgetFactory.qml+4
@@ -31,6 +31,9 @@ Loader {
3131 //! Widget data, forwarded to the widget as is.
3232 property var widgetData: null
3333
34+ //! The ScopeStyle component.
35+ property var scopeStyle: null
36+
3437 //! Set to true if the parent preview is displayed.
3538 property bool isCurrentPreview: false
3639
@@ -62,6 +65,7 @@ Loader {
6265 item.widgetId = Qt.binding(function() { return root.widgetId } )
6366 item.widgetData = Qt.binding(function() { return root.widgetData } )
6467 item.isCurrentPreview = Qt.binding(function() { return root.isCurrentPreview } )
68+ if (item.hasOwnProperty("scopeStyle")) item.scopeStyle = root.scopeStyle;
6569 }
6670
6771 Connections {
qml/Dash/ScopeItem.qmldeleted−106
@@ -1,106 +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 Unity 0.2
20−import "../Components"
21−
22−Item {
23− id: root
24−
25− property alias scope: scopeView.scope
26− property alias previewOpen: previewListView.open
27−
28− property ListModel searchHistory
29−
30− signal back
31− signal gotoScope(string scopeId)
32− signal openScope(var scope)
33−
34− // TODO see how much code we can share
35− // between here and other Dash parts, it's starting to have
36− // too much duplicated code with the DashDepartments, etc
37−
38− Item {
39− id: scopeViewHolder
40−
41− x: previewListView.open ? -width : 0
42− Behavior on x { UbuntuNumberAnimation { } }
43− width: parent.width
44− height: parent.height
45−
46− GenericScopeView {
47− id: scopeView
48− width: parent.width
49− height: parent.height
50− isCurrent: scope != null
51− tabBarHeight: scopeItemPageHeader.implicitHeight
52− pageHeader: scopeItemPageHeader
53− previewListView: previewListView
54−
55− Connections {
56− target: scopeView.isCurrent ? scope : null
57− onGotoScope: root.gotoScope(scopeId);
58− onOpenScope: root.openScope(scope);
59− }
60− }
61−
62− PageHeader {
63− id: scopeItemPageHeader
64− width: parent.width
65− searchEntryEnabled: true
66− searchHistory: root.searchHistory
67− scope: root.scope
68− height: units.gu(8.5)
69− showBackButton: true
70− onBackClicked: root.back();
71−
72− childItem: Label {
73− id: label
74− anchors {
75− left: parent.left
76− right: parent.right
77− verticalCenter: parent.verticalCenter
78− }
79− text: scope ? scope.name : ""
80− color: "#888888"
81− font.family: "Ubuntu"
82− font.weight: Font.Light
83− fontSize: "x-large"
84− elide: Text.ElideRight
85− }
86−
87− bottomItem: DashDepartments {
88− scope: root.scope
89− width: parent.width <= units.gu(60) ? parent.width : units.gu(40)
90− anchors.right: parent.right
91− windowHeight: root.height
92− windowWidth: root.width
93− }
94− }
95− }
96−
97− PreviewListView {
98− id: previewListView
99− visible: x != width
100− pageHeader: scopeItemPageHeader
101− scope: root.scope
102− width: parent.width
103− height: parent.height
104− anchors.left: scopeViewHolder.right
105− }
106−}
qml/Dash/graphics/icon_listview_clear@20.pngdeleted

Binary file not shown.

qml/Dash/graphics/phone/screenshots/phone@12.png → qml/Dash/graphics/phone/screenshots/dialer@12.pngrenamed

Binary file not shown.

qml/Dash/graphics/tick@30.pngdeleted

Binary file not shown.

qml/Hud/HudParametrizedActionsPage.qml+2−2
@@ -19,7 +19,7 @@ import Ubuntu.Components 0.1
1919import "../Components"
2020
2121Item {
22− property alias header: header.text
22+ property alias header: header.title
2323 signal backPressed
2424 signal confirmPressed
2525 signal valuesUpdated
@@ -89,7 +89,7 @@ Item {
8989 anchors.left: parent.left
9090 anchors.right: parent.right
9191
92− PageHeaderLabel {
92+ PageHeader {
9393 id: header
9494 anchors.top: parent.top
9595 anchors.left: parent.left
qml/Launcher/Launcher.qml+33−3
@@ -55,6 +55,10 @@ Item {
5555 switchToNextState("")
5656 }
5757
58+ function fadeOut() {
59+ fadeOutAnimation.start();
60+ }
61+
5862 function switchToNextState(state) {
5963 animateTimer.nextState = state
6064 animateTimer.start();
@@ -99,6 +103,31 @@ Item {
99103 }
100104 }
101105
106+ SequentialAnimation {
107+ id: fadeOutAnimation
108+ ScriptAction {
109+ script: {
110+ panel.layer.enabled = true
111+ }
112+ }
113+ UbuntuNumberAnimation {
114+ target: panel
115+ property: "opacity"
116+ easing.type: Easing.InQuad
117+ to: 0
118+ }
119+ ScriptAction {
120+ script: {
121+ panel.layer.enabled = false
122+ panel.animate = false;
123+ root.state = "";
124+ panel.x = -panel.width
125+ panel.opacity = 1;
126+ panel.animate = true;
127+ }
128+ }
129+ }
130+
102131 MouseArea {
103132 id: launcherDragArea
104133 enabled: root.state == "visible"
@@ -173,9 +202,9 @@ Item {
173202 }
174203
175204 Behavior on x {
205+ enabled: !dragArea.dragging && !launcherDragArea.drag.active && panel.animate;
176206 NumberAnimation {
177− // Disabling animation when dragging
178− duration: dragArea.dragging || launcherDragArea.drag.active ? 0 : 300;
207+ duration: 300
179208 easing.type: Easing.OutCubic
180209 }
181210 }
@@ -215,9 +244,10 @@ Item {
215244 onDraggingChanged: {
216245 if (!dragging) {
217246 if (distance > panel.width / 2) {
218− root.switchToNextState("visible")
219247 if (distance > minimizeDistance) {
220248 root.dash()
249+ } else {
250+ root.switchToNextState("visible")
221251 }
222252 } else {
223253 root.switchToNextState("")
qml/Launcher/LauncherDelegate.qml+35−13
@@ -23,10 +23,10 @@ Item {
2323 property string iconName
2424 property int count: -1
2525 property int progress: -1
26− property bool highlighted: false
2726 property bool itemFocused: false
2827 property real maxAngle: 0
2928 property bool inverted: false
29+ property bool clipCorner: false
3030
3131 readonly property int effectiveHeight: Math.cos(angle * Math.PI / 180) * itemHeight
3232 readonly property real foldedHeight: Math.cos(maxAngle * Math.PI / 180) * itemHeight
@@ -40,12 +40,6 @@ Item {
4040 property real itemOpacity: 1
4141 property real brightness: 0
4242
43− onIconNameChanged: shaderEffectSource.scheduleUpdate();
44− onCountChanged: shaderEffectSource.scheduleUpdate();
45− onProgressChanged: shaderEffectSource.scheduleUpdate();
46− onHighlightedChanged: shaderEffectSource.scheduleUpdate();
47− onItemFocusedChanged: shaderEffectSource.scheduleUpdate();
48−
4943 Item {
5044 id: iconItem
5145 width: parent.itemWidth + units.gu(1)
@@ -69,12 +63,11 @@ Item {
6963 }
7064
7165 BorderImage {
72− id: overlayHighlight
66+ id: itemGlow
7367 anchors.centerIn: iconItem
74− rotation: inverted ? 180 : 0
75− source: root.highlighted ? "graphics/selected.sci" : "graphics/non-selected.sci"
76− width: root.itemWidth + units.gu(0.5)
77− height: root.itemHeight + units.gu(0.5)
68+ source: "graphics/icon-top-highlight.png"
69+ width: root.itemWidth - units.gu(1)
70+ height: root.itemHeight - units.gu(1)
7871 }
7972
8073 BorderImage {
@@ -151,6 +144,24 @@ Item {
151144 }
152145 }
153146
147+ Item {
148+ id: clipper
149+ anchors.centerIn: parent
150+ width: iconItem.width
151+ height: iconItem.height
152+ Rectangle {
153+ anchors {
154+ fill: parent
155+ topMargin: -units.gu(2)
156+ leftMargin: -units.gu(2)
157+ rightMargin: -units.gu(2)
158+ bottomMargin: units.gu(1.2)
159+ }
160+ color: "red"
161+ rotation: root.rotation + 45
162+ }
163+ }
164+
154165 ShaderEffect {
155166 id: transformEffect
156167 anchors.centerIn: parent
@@ -160,13 +171,18 @@ Item {
160171 property real itemOpacity: root.itemOpacity
161172 property real brightness: Math.max(-1, root.brightness)
162173 property real angle: root.angle
174+ property bool clipCorner: root.clipCorner
163175 rotation: root.inverted ? 180 : 0
164176
165177 property variant source: ShaderEffectSource {
166178 id: shaderEffectSource
167179 sourceItem: iconItem
168180 hideSource: true
169− live: false
181+ }
182+
183+ property var mask: ShaderEffectSource {
184+ sourceItem: clipper
185+ hideSource: true
170186 }
171187
172188 transform: [
@@ -203,13 +219,19 @@ Item {
203219 fragmentShader: "
204220 varying highp vec2 qt_TexCoord0;
205221 uniform sampler2D source;
222+ uniform sampler2D mask;
206223 uniform lowp float brightness;
207224 uniform lowp float itemOpacity;
225+ uniform bool clipCorner;
208226 void main(void)
209227 {
210228 highp vec4 sourceColor = texture2D(source, qt_TexCoord0);
229+ highp vec4 maskColor = texture2D(mask, qt_TexCoord0);
211230 sourceColor.rgb = mix(sourceColor.rgb, vec3(step(0.0, brightness)), abs(brightness));
212231 sourceColor *= itemOpacity;
232+ if (clipCorner) {
233+ sourceColor *= maskColor.a;
234+ }
213235 gl_FragColor = sourceColor;
214236 }"
215237 }
qml/Launcher/LauncherPanel.qml+19−15
@@ -22,8 +22,9 @@ import Ubuntu.Components.Popups 0.1
2222import "../Components/ListItems"
2323import "../Components/"
2424
25−Item {
25+Rectangle {
2626 id: root
27+ color: "#B2000000"
2728
2829 rotation: inverted ? 180 : 0
2930
@@ -37,27 +38,18 @@ Item {
3738 signal applicationSelected(string appId)
3839 signal showDashHome()
3940
40− BorderImage {
41− id: background
42− source: "graphics/launcher_bg.sci"
43− anchors.fill: parent
44− anchors.rightMargin: root.inverted ? 0 : -units.gu(1)
45− anchors.leftMargin: root.inverted ? -units.gu(1) : 0
46− rotation: root.rotation
47− }
48−
4941 Column {
5042 id: mainColumn
5143 anchors {
5244 fill: parent
5345 }
5446
55− MouseArea {
56− id: dashItem
47+ Rectangle {
5748 width: parent.width
5849 height: units.gu(7)
59− onClicked: root.showDashHome()
50+ color: UbuntuColors.orange
6051 z: 1
52+
6153 Image {
6254 objectName: "dashItem"
6355 width: units.gu(5)
@@ -66,7 +58,13 @@ Item {
6658 source: "graphics/home.png"
6759 rotation: root.rotation
6860 }
61+ MouseArea {
62+ id: dashItem
63+ anchors.fill: parent
64+ onClicked: root.showDashHome()
65+ }
6966 }
67+
7068 ThinDivider {
7169 anchors {
7270 left: parent.left
@@ -155,6 +153,7 @@ Item {
155153 iconName: model.icon
156154 count: model.count
157155 progress: model.progress
156+ clipCorner: model.pinned
158157 itemFocused: model.focused
159158 inverted: root.inverted
160159 z: -Math.abs(offset)
@@ -167,6 +166,7 @@ Item {
167166 anchors.centerIn: parent
168167 width: parent.width + mainColumn.anchors.leftMargin + mainColumn.anchors.rightMargin
169168 opacity: 0
169+ source: "graphics/divider-line.png"
170170 }
171171
172172 states: [
@@ -246,7 +246,7 @@ Item {
246246 Transition {
247247 from: "dragging"
248248 to: "*"
249− NumberAnimation { target: dropIndicator; properties: "opacity"; duration: UbuntuAnimation.FastDuration }
249+ NumberAnimation { target: dropIndicator; properties: "opacity"; duration: UbuntuAnimation.SnapDuration }
250250 NumberAnimation { properties: "itemOpacity"; duration: UbuntuAnimation.BriskDuration }
251251 SequentialAnimation {
252252 ScriptAction { script: if (index == launcherListView.count-1) launcherListView.flick(0, -launcherListView.clickFlickSpeed); }
@@ -464,6 +464,10 @@ Item {
464464 width: itemWidth
465465 rotation: root.rotation
466466 itemOpacity: 0.9
467+ clipCorner: dndArea.draggedIndex > -1 &&
468+ LauncherModel.get(dndArea.draggedIndex).pinned &&
469+ !dndArea.preDragging &&
470+ !dndArea.dragging
467471
468472 function flatten() {
469473 fakeDragItemAnimation.start();
@@ -522,11 +526,11 @@ Item {
522526 color: "#221e1c"
523527 width: units.gu(30)
524528 height: quickListColumn.height
529+ visible: quickListShape.visible
525530 anchors {
526531 left: root.inverted ? undefined : parent.right
527532 right: root.inverted ? parent.left : undefined
528533 margins: units.gu(1)
529−
530534 }
531535 y: itemCenter - (height / 2) + offset
532536 rotation: root.rotation
qml/Launcher/graphics/divider-line.pngnew file

Binary file not shown.

qml/Launcher/graphics/highlight@18.pngdeleted

Binary file not shown.

qml/Launcher/graphics/home@18.png

Binary file not shown.

qml/Launcher/graphics/icon-top-highlight.pngnew file

Binary file not shown.

qml/Launcher/graphics/launcher_bg@30.pngdeleted

Binary file not shown.

qml/Launcher/graphics/launcher_bg@30.scideleted−5
@@ -1,5 +0,0 @@
1−border.left: 4
2−border.top: 4
3−border.bottom: 4
4−border.right: 66
5−source: launcher_bg@30.png
qml/Launcher/graphics/non-selected@18.pngdeleted

Binary file not shown.

qml/Launcher/graphics/non-selected@18.scideleted−5
@@ -1,5 +0,0 @@
1−border.left: 54
2−border.top: 60
3−border.bottom: 60
4−border.right: 54
5−source: non-selected@18.png
qml/Launcher/graphics/selected@18.pngdeleted

Binary file not shown.

qml/Launcher/graphics/selected@18.scideleted−5
@@ -1,5 +0,0 @@
1−border.left: 54
2−border.top: 60
3−border.bottom: 60
4−border.right: 54
5−source: selected@18.png
qml/Launcher/graphics/triangle@18.pngdeleted

Binary file not shown.

qml/Panel/ActiveCallHint.qmlnew file+206
@@ -0,0 +1,206 @@
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.Telephony 0.1 as Telephony
19+import Ubuntu.Components 0.1
20+import Unity.Application 0.1
21+import "../Components"
22+
23+Item {
24+ id: callHint
25+
26+ readonly property bool active: {
27+ var application = ApplicationManager.findApplication("dialer-app");
28+
29+ if (callManager.callIndicatorVisible) {
30+ // at the moment, callIndicatorVisible is only "valid" if dialer is in focus.
31+ if (application && ApplicationManager.focusedApplicationId === "dialer-app") {
32+ // Don't show if application is still starting; might get a fleeting true/false.
33+ return application.state !== ApplicationInfoInterface.Starting;
34+ }
35+ }
36+ if (ApplicationManager.focusedApplicationId !== "dialer-app") {
37+ if (application) {
38+ // Don't show if application is still starting; might get a fleeting true/false.
39+ return application.state !== ApplicationInfoInterface.Starting && callManager.hasCalls;
40+ }
41+ return callManager.hasCalls;
42+ }
43+ return false;
44+ }
45+ readonly property QtObject contactWatcher: _contactWatcher
46+ property int labelSwitchInterval: 6000
47+ implicitWidth: row.x + row.width
48+
49+ Component.onCompleted: {
50+ telepathyHelper.registerChannelObserver("unity8");
51+ }
52+
53+ function showLiveCall() {
54+ Qt.openUrlExternally("dialer:///?view=liveCall");
55+ }
56+
57+ Component {
58+ id: contactColumn
59+
60+ Column {
61+ id: column
62+ objectName: "contactColumn"
63+
64+ anchors.left: parent.left
65+
66+ Component.onCompleted: {
67+ if (index === 0) {
68+ labelPathView.column1 = column;
69+ } else {
70+ labelPathView.column2 = column;
71+ }
72+ }
73+
74+ Label {
75+ height: callHint.height
76+ verticalAlignment: Text.AlignVCenter
77+ text: i18n.tr("Tap to return to call...");
78+ }
79+
80+ Label {
81+ objectName: "contactLabel"
82+ height: callHint.height
83+ verticalAlignment: Text.AlignVCenter
84+ width: Math.max(contentWidth, 1)
85+
86+ text: {
87+ if (!d.activeCall) {
88+ return "";
89+ } else if (d.activeCall.isConference) {
90+ return i18n.tr("Conference");
91+ } else {
92+ return contactWatcher.alias !== "" ? contactWatcher.alias : contactWatcher.phoneNumber;
93+ }
94+ }
95+ }
96+ }
97+ }
98+
99+ Row {
100+ id: row
101+ anchors {
102+ top: parent.top
103+ bottom: parent.bottom
104+ left: parent.left
105+ leftMargin: units.gu(1)
106+ }
107+ spacing: units.gu(1)
108+
109+ Label {
110+ id: time
111+ objectName: "timeLabel"
112+
113+ anchors {
114+ top: parent.top
115+ bottom: parent.bottom
116+ }
117+ verticalAlignment: Text.AlignVCenter
118+ horizontalAlignment: Text.AlignRight
119+ text: {
120+ var m = Math.round(d.callTime/60);
121+ var ss = d.callTime % 60;
122+ if (ss >= 10) {
123+ return m + ":" + ss;
124+ } else {
125+ return m + ":0" + ss;
126+ }
127+ }
128+ }
129+
130+ PathView {
131+ id: labelPathView
132+ objectName: "labelPathView"
133+
134+ anchors {
135+ top: parent.top
136+ bottom: parent.bottom
137+ }
138+ width: column1 && column2 ? Math.max(column1.width, column1.width) : 0
139+ clip: true
140+
141+ property Column column1
142+ property Column column2
143+ property int columnHeight: column1 ? column1.height : 0
144+
145+ delegate: contactColumn
146+ model: 2
147+ offset: 0
148+ interactive: false
149+
150+ path: Path {
151+ startY: -labelPathView.columnHeight / 2
152+ PathLine {
153+ y: labelPathView.columnHeight * 1.5
154+ }
155+ }
156+
157+ Behavior on offset {
158+ id: offsetBehaviour
159+ SmoothedAnimation {
160+ id: offsetAnimation
161+ // ensure we go faster than the label switch
162+ duration: labelSwitchInterval/8
163+ velocity: 0.75
164+ easing.type: Easing.InOutQuad
165+ }
166+ }
167+ }
168+ }
169+
170+ Timer {
171+ id: alternateLabelTimer
172+ running: callHint.active
173+ interval: labelPathView.offset % 1.0 !== 0 ? labelSwitchInterval : labelSwitchInterval/4
174+ repeat: true
175+
176+ onRunningChanged: {
177+ if (running) {
178+ offsetBehaviour.enabled = false;
179+ labelPathView.offset = 0;
180+ offsetBehaviour.enabled = true;
181+ }
182+ }
183+
184+ onTriggered: {
185+ labelPathView.offset = labelPathView.offset + 0.5;
186+ }
187+ }
188+
189+ Telephony.ContactWatcher {
190+ id: _contactWatcher
191+ objectName: "contactWatcher"
192+ phoneNumber: d.activeCall ? d.activeCall.phoneNumber : ""
193+ }
194+
195+ QtObject {
196+ id: d
197+
198+ property QtObject activeCall: {
199+ if (callManager.foregroundCall) {
200+ return callManager.foregroundCall;
201+ }
202+ return callManager.backgroundCall;
203+ }
204+ property int callTime: activeCall ? activeCall.elapsedTime : 0
205+ }
206+}
qml/Panel/IndicatorRow.qml+1−1
@@ -36,7 +36,7 @@ Item {
3636
3737 function setDefaultItem() {
3838 // The leftmost indicator
39− setCurrentItem(0);
39+ setCurrentItemIndex(0);
4040 }
4141
4242 function setCurrentItemIndex(index) {
qml/Panel/Indicators.qml+22−36
@@ -28,7 +28,6 @@ Showable {
2828
2929 property real openedHeight: units.gu(71)
3030 property int panelHeight: units.gu(3)
31− property bool pinnedMode: true //should be set true if indicators menu can cover whole screen
3231 property alias overFlowWidth: indicatorRow.overFlowWidth
3332 property alias showAll: indicatorRow.showAll
3433 // TODO: This should be sourced by device type (eg "desktop", "tablet", "phone"...)
@@ -38,26 +37,20 @@ Showable {
3837 readonly property int lockThreshold: openedHeight / 2
3938 property bool fullyOpened: height == openedHeight
4039 property bool partiallyOpened: height > panelHeight && !fullyOpened
41− property real visualBottom: Math.max(y+height, y+indicatorRow.y+indicatorRow.height)
4240 property bool contentEnabled: true
4341 property bool initalizeItem: true
4442 readonly property alias content: menuContent
4543 property real unitProgress: (height - panelHeight) / (openedHeight - panelHeight)
44+ property bool enableHint: true
45+ property real showHintBottomMargin: 0
46+
47+ signal showTapped(point position)
4648
4749 // TODO: Perhaps we need a animation standard for showing/hiding? Each showable seems to
4850 // use its own values. Need to ask design about this.
4951 showAnimation: StandardAnimation {
5052 property: "height"
51− duration: 350
5253 to: openedHeight
53− easing.type: Easing.OutCubic
54−
55− // Re-size if we've changed the openHeight while shown.
56− onToChanged: {
57− if (indicators.shown) {
58− indicators.show();
59− }
60− }
6154 }
6255
6356 hideAnimation: StandardAnimation {
@@ -67,16 +60,24 @@ Showable {
6760 easing.type: Easing.OutCubic
6861 }
6962
63+ onOpenedHeightChanged: {
64+ if (showAnimation.running) {
65+ showAnimation.restart();
66+ } else if (indicators.shown) {
67+ height = openedHeight;
68+ }
69+ }
70+
7071 height: panelHeight
71− onHeightChanged: updateRevealProgressState(indicators.height - panelHeight, true)
72+ onHeightChanged: updateRevealProgressState(indicators.height - panelHeight - showHintBottomMargin, true)
7273
7374 function updateRevealProgressState(revealProgress, enableRelease) {
7475 if (!showAnimation.running && !hideAnimation.running) {
7576 if (revealProgress === 0) {
7677 indicators.state = "initial";
77− } else if (revealProgress > 0 && revealProgress <= hintValue) {
78+ } else if (enableHint && revealProgress > 0 && revealProgress <= hintValue) {
7879 indicators.state = "hint";
79− } else if (revealProgress > hintValue && revealProgress < lockThreshold) {
80+ } else if ((!enableHint || revealProgress > hintValue) && revealProgress < lockThreshold) {
8081 indicators.state = "reveal";
8182 } else if (revealProgress >= lockThreshold && lockThreshold > 0) {
8283 indicators.state = "locked";
@@ -171,17 +172,6 @@ Showable {
171172 }
172173 }
173174
174− VerticalThinDivider {
175− anchors {
176− top: indicators.top
177− topMargin: panelHeight
178− bottom: handle.bottom
179− right: indicators.left
180− }
181− width: units.dp(2)
182− source: "graphics/VerticalDivider.png"
183− }
184−
185175 VisibleIndicators {
186176 id: visibleIndicators
187177 }
@@ -245,10 +235,6 @@ Showable {
245235 }
246236 }
247237
248− PanelBackground {
249− anchors.fill: indicatorRow
250− }
251−
252238 IndicatorRow {
253239 id: indicatorRow
254240 objectName: "indicatorRow"
@@ -356,24 +342,27 @@ Showable {
356342 id: showDragHandle
357343 anchors.bottom: parent.bottom
358344 // go beyond parent so that it stays reachable, at the top of the screen.
359− anchors.bottomMargin: pinnedMode ? 0 : -panelHeight
345+ anchors.bottomMargin: showHintBottomMargin
360346 anchors.left: parent.left
361347 anchors.right: parent.right
362348 height: panelHeight
363349 direction: Direction.Downwards
364350 enabled: !indicators.shown && indicators.available
365− hintDisplacement: pinnedMode ? indicators.hintValue : 0
351+ hintDisplacement: enableHint ? indicators.hintValue : 0
366352 autoCompleteDragThreshold: maxTotalDragDistance / 2
367353 stretch: true
368354 maxTotalDragDistance: openedHeight - panelHeight
369− distanceThreshold: pinnedMode ? 0 : units.gu(3)
355+ distanceThreshold: panelHeight
370356
371357 onStatusChanged: {
372358 if (status === DirectionalDragArea.Recognized) {
373359 menuContent.activateContent();
374360 }
375361 }
362+
363+ onTapped: showTapped(Qt.point(touchSceneX, touchSceneY));
376364 }
365+
377366 DragHandle {
378367 id: hideDragHandle
379368 anchors.fill: handle
@@ -396,10 +385,6 @@ Showable {
396385 },
397386 State {
398387 name: "hint"
399− PropertyChanges {
400− target: indicatorRow;
401− y: pinnedMode ? 0 : panelHeight
402− }
403388 StateChangeScript {
404389 script: {
405390 if (d.activeDragHandle) {
@@ -432,5 +417,6 @@ Showable {
432417 Component.onCompleted: initialise();
433418 function initialise() {
434419 visibleIndicators.load(profile);
420+ indicatorRow.setDefaultItem();
435421 }
436422}
qml/Panel/Panel.qml+131−90
@@ -16,27 +16,23 @@
1616
1717import QtQuick 2.0
1818import Ubuntu.Components 0.1
19+import Unity.Application 0.1
1920import "../Components"
21+import "../Components/ListItems"
2022
2123Item {
2224 id: root
23− readonly property real panelHeight: units.gu(3) + units.dp(2)
24− property real indicatorsMenuWidth: width
25− property alias indicators: indicatorsMenu
25+ readonly property real panelHeight: indicatorArea.y + d.indicatorHeight
26+ property alias indicators: __indicators
27+ property alias callHint: __callHint
2628 property bool fullscreenMode: false
27− property bool searchVisible: true
28−
29− readonly property real separatorLineHeight: leftSeparatorLine.height
30− readonly property real __panelMinusSeparatorLineHeight: panelHeight - separatorLineHeight
31−
32− signal searchClicked
3329
3430 function hideIndicatorMenu(delay) {
3531 if (delay !== undefined) {
3632 hideTimer.interval = delay;
3733 hideTimer.start();
3834 } else {
39− indicatorsMenu.hide();
35+ indicators.hide();
4036 }
4137 }
4238
@@ -44,129 +40,174 @@ Item {
4440 id: hideTimer
4541 running: false
4642 onTriggered: {
47− indicatorsMenu.hide();
43+ indicators.hide();
4844 }
4945 }
5046
5147 Connections {
52− target: indicatorsMenu
48+ target: indicators
5349 onShownChanged: hideTimer.stop()
5450 }
5551
56− PanelBackground {
57− id: panelBackground
58− anchors {
59− left: parent.left
60− right: parent.right
61− }
62− height: __panelMinusSeparatorLineHeight
63− y: 0
64−
65− Behavior on y { StandardAnimation { duration: 500 } }
66− }
67−
68− PanelSeparatorLine {
69− id: leftSeparatorLine
70− anchors {
71− top: panelBackground.bottom
72− left: parent.left
73− right: indicatorsMenu.left
74− }
75− saturation: 1 - indicatorsMenu.unitProgress
76− }
77−
7852 Rectangle {
7953 id: darkenedArea
8054 property real darkenedOpacity: 0.6
8155 anchors {
56+ top: parent.top
57+ topMargin: panelHeight
8258 left: parent.left
8359 right: parent.right
84− top: panelBackground.bottom
8560 bottom: parent.bottom
8661 }
8762 color: "black"
88− opacity: indicatorsMenu.unitProgress * darkenedOpacity
63+ opacity: indicators.unitProgress * darkenedOpacity
64+
8965 MouseArea {
9066 anchors.fill: parent
91− enabled: indicatorsMenu.shown
92− onClicked: if (indicatorsMenu.fullyOpened) indicatorsMenu.hide();
67+ enabled: indicators.shown
68+ onClicked: if (indicators.fullyOpened) indicators.hide();
9369 }
9470 }
9571
96− Indicators {
97− id: indicatorsMenu
98− objectName: "indicators"
99−
100− anchors.right: parent.right
101− y: panelBackground.y
102− width: root.indicatorsMenuWidth
103− shown: false
104− panelHeight: __panelMinusSeparatorLineHeight
105− openedHeight: parent.height + (pinnedMode ? 0 : root.panelHeight)
106− pinnedMode: !fullscreenMode
107− overFlowWidth: search.state=="hidden" ? parent.width : parent.width - search.width
108− }
72+ Item {
73+ id: indicatorArea
74+ objectName: "indicatorArea"
10975
110− PanelSeparatorLine {
111− id: indicatorsSeparatorLine
112− visible: true
113− anchors {
114− left: indicatorsMenu.left
115− right: indicatorsMenu.right
76+ anchors.fill: parent
77+
78+ Behavior on anchors.topMargin { StandardAnimation {} }
79+
80+ BorderImage {
81+ id: dropShadow
82+ anchors {
83+ fill: indicators
84+ leftMargin: -units.gu(1)
85+ bottomMargin: -units.gu(1)
86+ }
87+ visible: indicators.height > indicators.panelHeight
88+ source: "graphics/rectangular_dropshadow.sci"
11689 }
117− y: indicatorsMenu.visualBottom
118− }
11990
120− BorderImage {
121− id: dropShadow
122− anchors {
123− top: indicators.top
124− bottom: indicatorsSeparatorLine.bottom
125− left: indicators.left
126− right: indicators.right
127− margins: -units.gu(1)
91+ VerticalThinDivider {
92+ id: indicatorDividor
93+ anchors {
94+ top: indicators.top
95+ bottom: indicators.bottom
96+ right: indicators.left
97+
98+ topMargin: indicatorArea.anchors.topMargin + indicators.panelHeight
99+ }
100+
101+ width: units.dp(2)
102+ source: "graphics/VerticalDivider.png"
103+ }
104+
105+ Rectangle {
106+ id: indicatorAreaBackground
107+ color: callHint.visible ? "green" : "black"
108+ anchors {
109+ top: parent.top
110+ left: parent.left
111+ right: parent.right
112+ }
113+ height: indicators.panelHeight
114+
115+ Behavior on color { ColorAnimation { duration: UbuntuAnimation.FastDuration } }
116+ }
117+
118+ PanelSeparatorLine {
119+ id: nonIndicatorAreaSeparatorLine
120+ anchors {
121+ top: indicatorAreaBackground.bottom
122+ left: parent.left
123+ right: indicators.left
124+ }
125+ saturation: 1 - indicators.unitProgress
126+ }
127+
128+ MouseArea {
129+ anchors {
130+ top: parent.top
131+ left: parent.left
132+ right: indicators.left
133+ }
134+ height: indicators.panelHeight
135+ enabled: callHint.visible
136+ onClicked: callHint.showLiveCall()
128137 }
129− visible: indicatorsMenu.height > indicatorsMenu.panelHeight
130− source: "graphics/rectangular_dropshadow.sci"
131− }
132138
133− SearchIndicator {
134− id: search
135− objectName: "search"
136− enabled: root.searchVisible
139+ Indicators {
140+ id: __indicators
141+ objectName: "indicators"
137142
138− state: {
139− if (parent.width < indicatorsMenu.width + width) {
140− if (indicatorsMenu.state != "initial") {
141− return "hidden";
143+ anchors {
144+ top: parent.top
145+ right: parent.right
146+ }
147+
148+ width: root.width
149+ shown: false
150+ panelHeight: units.gu(3)
151+ openedHeight: root.height
152+ overFlowWidth: {
153+ if (callHint.visible) {
154+ return Math.max(root.width - (callHint.width + units.gu(2)), 0)
142155 }
156+ return root.width
143157 }
144− if (root.searchVisible && !indicatorsMenu.showAll) {
145− return "visible";
158+
159+ enableHint: !callHint.active && !fullscreenMode
160+ showHintBottomMargin: fullscreenMode ? -panelHeight : 0
161+
162+ onShowTapped: {
163+ if (callHint.active) {
164+ callHint.showLiveCall();
165+ }
146166 }
167+ }
147168
148− return "hidden";
169+ ActiveCallHint {
170+ id: __callHint
171+ anchors {
172+ top: parent.top
173+ left: parent.left
174+ }
175+ height: indicators.panelHeight
176+ visible: active && indicators.state == "initial"
149177 }
150178
151− height: __panelMinusSeparatorLineHeight
152− anchors {
153− top: panelBackground.top
154− left: panelBackground.left
179+ PanelSeparatorLine {
180+ id: indicatorsSeparatorLine
181+ visible: true
182+ anchors {
183+ top: indicators.bottom
184+ left: indicatorDividor.left
185+ right: indicators.right
186+ }
155187 }
188+ }
156189
157− onClicked: root.searchClicked()
190+ QtObject {
191+ id: d
192+ readonly property real indicatorHeight: indicators.panelHeight + indicatorsSeparatorLine.height
158193 }
159194
160195 states: [
161196 State {
162− name: "in" //fully opaque and visible at top edge of screen
197+ name: "onscreen" //fully opaque and visible at top edge of screen
163198 when: !fullscreenMode
164− PropertyChanges { target: panelBackground; y: 0 }
199+ PropertyChanges {
200+ target: indicatorArea;
201+ anchors.topMargin: 0
202+ }
165203 },
166204 State {
167− name: "out" //pushed off screen
205+ name: "offscreen" //pushed off screen
168206 when: fullscreenMode
169− PropertyChanges { target: panelBackground; y: -panelHeight }
207+ PropertyChanges {
208+ target: indicatorArea;
209+ anchors.topMargin: indicators.state === "initial" ? -d.indicatorHeight : 0
210+ }
170211 }
171212 ]
172213}
qml/ScopeTool.qml−1
@@ -73,7 +73,6 @@ Rectangle {
7373 id: dashContent
7474
7575 model: filteredScopes
76− searchHistory: SearchHistoryModel { }
7776 property var scope: scopes.getScope(currentIndex)
7877
7978 anchors {
qml/Shell.qml+14−15
@@ -109,7 +109,7 @@ FocusScope {
109109 anchors.rightMargin: -parent.anchors.rightMargin
110110
111111 // Whether the underlay is fully covered by opaque UI elements.
112− property bool fullyCovered: panel.indicators.fullyOpened && shell.width <= panel.indicatorsMenuWidth
112+ property bool fullyCovered: panel.indicators.fullyOpened && shell.width <= panel.indicators.width
113113
114114 // Whether the user should see the topmost application surface (if there's one at all).
115115 readonly property bool applicationSurfaceShouldBeSeen: stages.shown && !stages.painting && !stages.overlayMode
@@ -484,16 +484,16 @@ FocusScope {
484484 Panel {
485485 id: panel
486486 anchors.fill: parent //because this draws indicator menus
487− indicatorsMenuWidth: parent.width > units.gu(60) ? units.gu(40) : parent.width
488487 indicators {
489488 hides: [launcher]
490489 available: edgeDemo.panelEnabled
491490 contentEnabled: edgeDemo.panelContentEnabled
491+ width: parent.width > units.gu(60) ? units.gu(40) : parent.width
492+ panelHeight: units.gu(3)
492493 }
493494 property string focusedAppId: ApplicationManager.focusedApplicationId
494495 property var focusedApplication: ApplicationManager.findApplication(focusedAppId)
495496 fullscreenMode: focusedApplication && stages.fullscreen && !greeter.shown && !lockscreen.shown
496− searchVisible: !greeter.shown && !lockscreen.shown && dash.shown && dash.searchable
497497
498498 InputFilterArea {
499499 anchors {
@@ -534,15 +534,16 @@ FocusScope {
534534 showHome()
535535 }
536536 onDash: {
537− if (stages.shown && !stages.overlayMode) {
538− if (!stages.locked) {
539− stages.hide();
540− launcher.hide();
541− }
537+ if (stages.shown && !stages.overlayMode && !stages.locked) {
538+ stages.hide();
539+ launcher.fadeOut();
540+ } else {
541+ launcher.switchToNextState("visible");
542542 }
543+
543544 if (greeter.shown) {
544545 greeter.hideRight();
545− launcher.hide();
546+ launcher.fadeOut();
546547 }
547548 }
548549 onDashSwipeChanged: if (dashSwipe && stages.shown) dash.setCurrentScope("clickscope", false, true)
@@ -581,12 +582,10 @@ FocusScope {
581582 model: NotificationBackend.Model
582583 margin: units.gu(1)
583584
584− anchors {
585− top: parent.top
586− right: parent.right
587− bottom: parent.bottom
588− topMargin: panel.panelHeight
589− }
585+ y: panel.panelHeight
586+ width: parent.width
587+ height: parent.height - panel.panelHeight
588+
590589 states: [
591590 State {
592591 name: "narrow"
qml/graphics/applicationIcons/phone-app@18.png → qml/graphics/applicationIcons/dialer-app@18.pngrenamed

Binary file not shown.

tests/autopilot/unity8/shell/emulators/dash.py+29−26
@@ -108,44 +108,47 @@ class Dash(emulators.UnityEmulatorBase):
108108 @autopilot_logging.log_action(logger.info)
109109 def _scroll_to_left_scope(self):
110110 original_index = self.dash_content_list.currentIndex
111− # Scroll on the border of the page header, because some scopes have
112− # contents that can be scrolled horizontally.
113− page_header = self._get_page_header()
114− border = page_header.select_single('QQuickBorderImage')
115− start_x = border.width / 3
116− stop_x = border.width / 3 * 2
117− start_y = stop_y = border.globalRect.y + border.height / 2
111+ dashContent = self.select_single(objectName="dashContent")
112+ start_x = dashContent.width / 3
113+ stop_x = dashContent.width / 3 * 2
114+ start_y = stop_y = dashContent.globalRect.y + 1
118115 self.pointing_device.drag(start_x, start_y, stop_x, stop_y)
119116 self.dash_content_list.currentIndex.wait_for(original_index - 1)
120117
121− def _get_page_header(self):
122− return self.select_single('PageHeader', objectName='pageHeader')
123−
124118 @autopilot_logging.log_action(logger.info)
125119 def _scroll_to_right_scope(self):
126120 original_index = self.dash_content_list.currentIndex
127− # Scroll on the border of the page header, because some scopes have
128− # contents that can be scrolled horizontally.
129− page_header = self._get_page_header()
130− border = page_header.select_single('QQuickBorderImage')
131− start_x = border.width / 3 * 2
132− stop_x = border.width / 3
133− start_y = stop_y = border.globalRect.y + border.height / 2
121+ dashContent = self.select_single(objectName="dashContent")
122+ start_x = dashContent.width / 3 * 2
123+ stop_x = dashContent.width / 3
124+ start_y = stop_y = dashContent.globalRect.y + 1
134125 self.pointing_device.drag(start_x, start_y, stop_x, stop_y)
135126 self.dash_content_list.currentIndex.wait_for(original_index + 1)
136127
137128 def enter_search_query(self, query):
129+ current_header = self._get_current_page_header()
130+ self.pointing_device.move(current_header.globalRect.x +
131+ current_header.width - current_header.height / 2,
132+ current_header.globalRect.y +
133+ current_header.height / 2)
134+ self.pointing_device.click()
135+ headerContainer = current_header.select_single(objectName="headerContainer")
136+ headerContainer.contentY.wait_for(0)
138137 search_text_field = self._get_search_text_field()
139138 search_text_field.write(query)
140− search_text_field.state.wait_for('idle')
139+ current_header.select_single(objectName="searchIndicator").running.wait_for(False)
141140
142141 def _get_search_text_field(self):
143− page_header = self._get_page_header()
144− search_container = page_header.select_single(
145− 'QQuickItem', objectName='searchContainer')
146− search_container.state.wait_for(
147− MatchesAny(Equals('narrowActive'), Equals('active')))
148− return search_container.select_single(toolkit_emulators.TextField)
142+ page_header = self._get_current_page_header()
143+ return page_header.select_single(objectName='searchTextField')
144+
145+ def _get_current_page_header(self):
146+ dashContentList = self.select_single(objectName="dashContentList")
147+ all_headers = dashContentList.select_many("QQuickLoader")
148+ for i in all_headers:
149+ if i.isCurrent:
150+ return i.select_single(objectName="scopePageHeader")
151+ return None
149152
150153
151154class GenericScopeView(emulators.UnityEmulatorBase):
@@ -166,8 +169,8 @@ class GenericScopeView(emulators.UnityEmulatorBase):
166169 # Some categories do not show previews, like recent apps.
167170 # --elopio - 2014-1-14
168171 self.pointing_device.click_object(icon)
169− preview_list = self.get_root_instance().wait_select_single(
170− 'PreviewListView', objectName='dashContentPreviewList')
172+ preview_list = self.wait_select_single(
173+ 'PreviewListView', objectName='previewListView')
171174 preview_list.x.wait_for(0)
172175 return preview_list.select_single(
173176 Preview, objectName='preview{}'.format(preview_list.currentIndex))
tests/autopilot/unity8/shell/emulators/main_window.py−5
@@ -130,13 +130,8 @@ class QQuickView(emulators.UnityEmulatorBase):
130130
131131 @autopilot_logging.log_action(logger.info)
132132 def search(self, query):
133− search_indicator = self._get_search_indicator()
134− self.pointing_device.click_object(search_indicator)
135133 self.get_dash().enter_search_query(query)
136134
137− def _get_search_indicator(self):
138− return self.select_single('SearchIndicator', objectName='search')
139−
140135 @autopilot_logging.log_action(logger.info)
141136 def show_dash_from_launcher(self):
142137 """Open the dash clicking the dash icon on the launcher."""
tests/autopilot/unity8/shell/tests/test_emulators.py−1
@@ -50,7 +50,6 @@ class MainWindowTestCase(tests.UnityTestCase):
5050 self.main_window.search('Test')
5151 text_field = self.main_window.get_dash()._get_search_text_field()
5252 self.assertEqual(text_field.text, 'Test')
53− self.assertEqual(text_field.state, 'idle')
5453
5554
5655class DashBaseTestCase(tests.UnityTestCase):
tests/autopilot/unity8/shell/tests/test_notifications.py+4−4
@@ -137,7 +137,7 @@ class InteractiveNotificationBase(NotificationsBase):
137137 ("x-canonical-switch-to-application", "true"),
138138 (
139139 "x-canonical-secondary-icon",
140− self._get_icon_path('applicationIcons/phone-app.png')
140+ self._get_icon_path('applicationIcons/dialer-app.png')
141141 )
142142 ]
143143
@@ -172,7 +172,7 @@ class InteractiveNotificationBase(NotificationsBase):
172172 hints = [
173173 (
174174 "x-canonical-secondary-icon",
175− self._get_icon_path('applicationIcons/phone-app.png')
175+ self._get_icon_path('applicationIcons/dialer-app.png')
176176 ),
177177 ("x-canonical-snap-decisions", "true"),
178178 ]
@@ -438,7 +438,7 @@ class EphemeralNotificationsTests(NotificationsBase):
438438 hints = [
439439 (
440440 "x-canonical-secondary-icon",
441− self._get_icon_path('applicationIcons/phone-app.png')
441+ self._get_icon_path('applicationIcons/dialer-app.png')
442442 )
443443 ]
444444
@@ -681,7 +681,7 @@ class EphemeralNotificationsTests(NotificationsBase):
681681 body = 'This bubble uses the icon-title-body layout with a ' \
682682 'secondary icon.'
683683 icon_path = self._get_icon_path('avatars/anna_olsson.png')
684− hint_icon = self._get_icon_path('applicationIcons/phone-app.png')
684+ hint_icon = self._get_icon_path('applicationIcons/dialer-app.png')
685685
686686 notification = shell.create_ephemeral_notification(
687687 summary,
tests/mocks/Ubuntu/CMakeLists.txt+1
@@ -1,3 +1,4 @@
11add_subdirectory(DownloadDaemonListener)
22add_subdirectory(Payments)
3+add_subdirectory(Telephony)
34add_subdirectory(Thumbnailer)
tests/mocks/Ubuntu/Telephony/CMakeLists.txtnew file+22
@@ -0,0 +1,22 @@
1+set(FakeUbuntuTelephonyQml_SOURCES
2+ plugin.cpp
3+ ContactWatcherData.cpp
4+ MockCallEntry.cpp
5+ MockCallManager.cpp
6+ MockContactWatcher.cpp
7+ MockTelepathyHelper.cpp
8+)
9+
10+add_library(FakeUbuntuTelephonyQml MODULE ${FakeUbuntuTelephonyQml_SOURCES})
11+
12+qt5_use_modules(FakeUbuntuTelephonyQml Core Quick)
13+
14+# copy files into build directory for shadow builds
15+add_custom_target(UbuntuTelephonyQmlDirFile ALL
16+ COMMAND cp "${CMAKE_CURRENT_SOURCE_DIR}/qmldir" ${CMAKE_CURRENT_BINARY_DIR}
17+ DEPENDS qmldir
18+)
19+
20+install(TARGETS FakeUbuntuTelephonyQml
21+ DESTINATION ${SHELL_INSTALL_QML}/mocks/Ubuntu/Telephony
22+ )
tests/mocks/Ubuntu/Telephony/ContactWatcherData.cppnew 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+ * Authored by: Nick Dedekind <nick.dedekind@canonical.com
17+ */
18+
19+#include "ContactWatcherData.h"
20+
21+ContactWatcherData::ContactWatcherData(QObject *parent)
22+ : QObject(parent)
23+{
24+}
25+
26+ContactWatcherData *ContactWatcherData::instance()
27+{
28+ static ContactWatcherData* contactData = new ContactWatcherData();
29+ return contactData;
30+}
31+
32+QVariant ContactWatcherData::contactData() const
33+{
34+ return m_data;
35+}
36+
37+void ContactWatcherData::setContactData(const QVariant& contactData)
38+{
39+ if(m_data != contactData){
40+ m_data = contactData;
41+ Q_EMIT contactDataChanged();
42+ }
43+}
tests/mocks/Ubuntu/Telephony/ContactWatcherData.hnew file+46
@@ -0,0 +1,46 @@
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+ * Authored by: Nick Dedekind <nick.dedekind@canonical.com
17+ */
18+
19+#ifndef CONTACTWATCHERDATA_H
20+#define CONTACTWATCHERDATA_H
21+
22+#include <QObject>
23+#include <QVariant>
24+
25+class ContactWatcherData : public QObject
26+{
27+ Q_OBJECT
28+ Q_DISABLE_COPY(ContactWatcherData)
29+ Q_PROPERTY(QVariant contactData READ contactData WRITE setContactData NOTIFY contactDataChanged)
30+
31+public:
32+ ContactWatcherData(QObject *parent = 0);
33+
34+ static ContactWatcherData *instance();
35+
36+ QVariant contactData() const;
37+ void setContactData(const QVariant& contactData);
38+
39+Q_SIGNALS:
40+ void contactDataChanged();
41+
42+private:
43+ QVariant m_data;
44+};
45+
46+#endif // CONTACTWATCHERDATA_H
tests/mocks/Ubuntu/Telephony/MockCallEntry.cppnew file+66
@@ -0,0 +1,66 @@
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+ * Authored by: Nick Dedekind <nick.dedekind@canonical.com
17+ */
18+
19+#include "MockCallEntry.h"
20+
21+MockCallEntry::MockCallEntry(QObject *parent)
22+ : QObject(parent)
23+ , m_conference(false)
24+ , m_elapsed(0)
25+{
26+ startTimer(1000);
27+}
28+
29+QString MockCallEntry::phoneNumber() const
30+{
31+ return m_phoneNumber;
32+}
33+
34+void MockCallEntry::setPhoneNumber(const QString& phoneNumber)
35+{
36+ if(m_phoneNumber != phoneNumber){
37+ m_phoneNumber = phoneNumber;
38+ Q_EMIT phoneNumberChanged();
39+ }
40+}
41+
42+bool MockCallEntry::isConference() const
43+{
44+ return m_conference;
45+}
46+
47+void MockCallEntry::setIsConference(bool isConference)
48+{
49+ if(m_conference != isConference){
50+ m_conference = isConference;
51+ Q_EMIT isConferenceChanged();
52+ }
53+}
54+
55+int MockCallEntry::elapsedTime() const
56+{
57+ return m_elapsed;
58+}
59+
60+void MockCallEntry::timerEvent(QTimerEvent * event)
61+{
62+ Q_UNUSED(event);
63+
64+ m_elapsed++;
65+ Q_EMIT elapsedTimeChanged();
66+}
tests/mocks/Ubuntu/Telephony/MockCallEntry.hnew 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+ * Authored by: Nick Dedekind <nick.dedekind@canonical.com
17+ */
18+
19+#ifndef MOCKCALLENTRY_H
20+#define MOCKCALLENTRY_H
21+
22+#include <QObject>
23+
24+class MockCallEntry : public QObject
25+{
26+ Q_OBJECT
27+ Q_DISABLE_COPY(MockCallEntry)
28+
29+ Q_PROPERTY(QString phoneNumber READ phoneNumber WRITE setPhoneNumber NOTIFY phoneNumberChanged)
30+ Q_PROPERTY(bool isConference READ isConference WRITE setIsConference NOTIFY isConferenceChanged)
31+ Q_PROPERTY(int elapsedTime READ elapsedTime NOTIFY elapsedTimeChanged)
32+
33+public:
34+ MockCallEntry(QObject *parent = 0);
35+
36+ QString phoneNumber() const;
37+ bool isConference() const;
38+ int elapsedTime() const;
39+
40+ void setPhoneNumber(const QString& phoneNumber);
41+ void setIsConference(bool isConference);
42+
43+Q_SIGNALS:
44+ void phoneNumberChanged();
45+ void isConferenceChanged();
46+ void elapsedTimeChanged();
47+
48+protected:
49+ void timerEvent(QTimerEvent * event);
50+
51+private:
52+ QString m_phoneNumber;
53+ bool m_conference;
54+ int m_elapsed;
55+};
56+
57+#endif // MOCKCALLENTRY_H
tests/mocks/Ubuntu/Telephony/MockCallManager.cppnew file+80
@@ -0,0 +1,80 @@
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+ * Authored by: Nick Dedekind <nick.dedekind@canonical.com
17+ */
18+
19+#include "MockCallManager.h"
20+
21+MockCallManager::MockCallManager(QObject *parent)
22+ : QObject(parent)
23+ , m_foregroundCall(nullptr)
24+ , m_backgroundCall(nullptr)
25+ , m_callIndicatorVisible(false)
26+{
27+}
28+
29+MockCallManager *MockCallManager::instance()
30+{
31+ static MockCallManager* manager = new MockCallManager();
32+ return manager;
33+}
34+
35+QObject* MockCallManager::foregroundCall() const
36+{
37+ return m_foregroundCall;
38+}
39+
40+void MockCallManager::setForegroundCall(QObject* foregroundCall)
41+{
42+ if(m_foregroundCall != foregroundCall){
43+ m_foregroundCall = foregroundCall;
44+ Q_EMIT foregroundCallChanged();
45+ Q_EMIT hasCallsChanged();
46+ }
47+}
48+
49+QObject* MockCallManager::backgroundCall() const
50+{
51+ return m_backgroundCall;
52+}
53+
54+void MockCallManager::setBackgroundCall(QObject* backgroundCall)
55+{
56+ if(m_backgroundCall != backgroundCall){
57+ m_backgroundCall = backgroundCall;
58+ Q_EMIT backgroundCallChanged();
59+ Q_EMIT hasCallsChanged();
60+ }
61+}
62+
63+bool MockCallManager::hasCalls() const
64+{
65+ return m_foregroundCall || m_backgroundCall;
66+}
67+
68+
69+bool MockCallManager::callIndicatorVisible() const
70+{
71+ return m_callIndicatorVisible;
72+}
73+
74+void MockCallManager::setCallIndicatorVisible(bool callIndicatorVisible)
75+{
76+ if(m_callIndicatorVisible != callIndicatorVisible){
77+ m_callIndicatorVisible = callIndicatorVisible;
78+ Q_EMIT callIndicatorVisibleChanged();
79+ }
80+}
tests/mocks/Ubuntu/Telephony/MockCallManager.hnew file+60
@@ -0,0 +1,60 @@
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+ * Authored by: Nick Dedekind <nick.dedekind@canonical.com
17+ */
18+
19+#ifndef MOCKCALLMANAGER_H
20+#define MOCKCALLMANAGER_H
21+
22+#include <QObject>
23+
24+class MockCallManager : public QObject
25+{
26+ Q_OBJECT
27+ Q_DISABLE_COPY(MockCallManager)
28+
29+ Q_PROPERTY(QObject *foregroundCall READ foregroundCall WRITE setForegroundCall NOTIFY foregroundCallChanged)
30+ Q_PROPERTY(QObject *backgroundCall READ backgroundCall WRITE setBackgroundCall NOTIFY backgroundCallChanged)
31+ Q_PROPERTY(bool hasCalls READ hasCalls NOTIFY hasCallsChanged)
32+ Q_PROPERTY(bool callIndicatorVisible READ callIndicatorVisible WRITE setCallIndicatorVisible NOTIFY callIndicatorVisibleChanged)
33+
34+public:
35+ explicit MockCallManager(QObject *parent = 0);
36+
37+ static MockCallManager *instance();
38+
39+ QObject* foregroundCall() const;
40+ QObject* backgroundCall() const;
41+ bool hasCalls() const;
42+ bool callIndicatorVisible() const;
43+
44+ void setForegroundCall(QObject* foregroundCall);
45+ void setBackgroundCall(QObject* backgroundCall);
46+ void setCallIndicatorVisible(bool callIndicatorVisible);
47+
48+Q_SIGNALS:
49+ void foregroundCallChanged();
50+ void backgroundCallChanged();
51+ void hasCallsChanged();
52+ void callIndicatorVisibleChanged();
53+
54+private:
55+ QObject* m_foregroundCall;
56+ QObject* m_backgroundCall;
57+ bool m_callIndicatorVisible;
58+};
59+
60+#endif // MOCKCALLMANAGER_H
tests/mocks/Ubuntu/Telephony/MockContactWatcher.cppnew file+50
@@ -0,0 +1,50 @@
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+ * Authored by: Nick Dedekind <nick.dedekind@canonical.com
17+ */
18+
19+#include "MockContactWatcher.h"
20+#include "ContactWatcherData.h"
21+
22+MockContactWatcher::MockContactWatcher(QObject *parent)
23+ : QObject(parent)
24+{
25+ connect(ContactWatcherData::instance(), &ContactWatcherData::contactDataChanged,
26+ this, &MockContactWatcher::aliasChanged);
27+}
28+
29+QString MockContactWatcher::phoneNumber() const
30+{
31+ return m_phoneNumber;
32+}
33+
34+void MockContactWatcher::setPhoneNumber(const QString& phoneNumber)
35+{
36+ if(m_phoneNumber != phoneNumber){
37+ m_phoneNumber = phoneNumber;
38+ Q_EMIT phoneNumberChanged();
39+ Q_EMIT aliasChanged();
40+ }
41+}
42+
43+QString MockContactWatcher::alias() const
44+{
45+ QVariantMap data = ContactWatcherData::instance()->contactData().toMap();
46+ if (data.contains(m_phoneNumber)) {
47+ return data[m_phoneNumber].toMap()["alias"].toString();
48+ }
49+ return "";
50+}
tests/mocks/Ubuntu/Telephony/MockContactWatcher.hnew 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+ * Authored by: Nick Dedekind <nick.dedekind@canonical.com
17+ */
18+
19+#ifndef MOCKCONTACTWATCHER_H
20+#define MOCKCONTACTWATCHER_H
21+
22+#include <QObject>
23+#include <QVariant>
24+
25+class MockContactWatcher : public QObject
26+{
27+ Q_OBJECT
28+ Q_DISABLE_COPY(MockContactWatcher)
29+
30+ Q_PROPERTY(QString phoneNumber READ phoneNumber WRITE setPhoneNumber NOTIFY phoneNumberChanged)
31+ Q_PROPERTY(QString alias READ alias NOTIFY aliasChanged)
32+
33+public:
34+ MockContactWatcher(QObject *parent = 0);
35+
36+ QString phoneNumber() const;
37+ QString alias() const;
38+
39+ void setPhoneNumber(const QString& phoneNumber);
40+
41+Q_SIGNALS:
42+ void phoneNumberChanged();
43+ void aliasChanged();
44+
45+private:
46+ QString m_phoneNumber;
47+};
48+
49+#endif // MOCKCONTACTWATCHER_H
tests/mocks/Ubuntu/Telephony/MockTelepathyHelper.cppnew file+35
@@ -0,0 +1,35 @@
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+ * Authored by: Nick Dedekind <nick.dedekind@canonical.com
17+ */
18+
19+#include "MockTelepathyHelper.h"
20+
21+MockTelepathyHelper::MockTelepathyHelper(QObject *parent)
22+ : QObject(parent)
23+{
24+}
25+
26+MockTelepathyHelper *MockTelepathyHelper::instance()
27+{
28+ static MockTelepathyHelper* helper = new MockTelepathyHelper();
29+ return helper;
30+}
31+
32+void MockTelepathyHelper::registerChannelObserver(const QString& name)
33+{
34+ Q_UNUSED(name);
35+}
tests/mocks/Ubuntu/Telephony/MockTelepathyHelper.hnew file+36
@@ -0,0 +1,36 @@
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+ * Authored by: Nick Dedekind <nick.dedekind@canonical.com
17+ */
18+
19+#ifndef MOCKTELEPATHYHELPER_H
20+#define MOCKTELEPATHYHELPER_H
21+
22+#include <QObject>
23+
24+class MockTelepathyHelper : public QObject
25+{
26+ Q_OBJECT
27+ Q_DISABLE_COPY(MockTelepathyHelper)
28+public:
29+ MockTelepathyHelper(QObject *parent = 0);
30+
31+ static MockTelepathyHelper *instance();
32+
33+ Q_INVOKABLE void registerChannelObserver(const QString& name);
34+};
35+
36+#endif // MOCKCONTACTWATCHER_H
tests/mocks/Ubuntu/Telephony/plugin.cppnew file+52
@@ -0,0 +1,52 @@
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+ * Authored by: Nick Dedekind <nick.dedekind@canonical.com
17+ */
18+
19+#include "plugin.h"
20+#include "MockCallEntry.h"
21+#include "MockCallManager.h"
22+#include "MockContactWatcher.h"
23+#include "MockTelepathyHelper.h"
24+#include "ContactWatcherData.h"
25+
26+#include <QtQml/QQmlContext>
27+#include <QtQml/QQmlEngine>
28+#include <qqml.h>
29+
30+void FakeUbuntuTelephonyQmlPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
31+{
32+ Q_ASSERT(engine);
33+
34+ Q_UNUSED(uri);
35+
36+ mRootContext = engine->rootContext();
37+ Q_ASSERT(mRootContext);
38+
39+ mRootContext->setContextProperty("telepathyHelper", MockTelepathyHelper::instance());
40+ mRootContext->setContextProperty("callManager", MockCallManager::instance());
41+ mRootContext->setContextProperty("contactWactherData", ContactWatcherData::instance());
42+}
43+
44+void FakeUbuntuTelephonyQmlPlugin::registerTypes(const char *uri)
45+{
46+ // @uri Telephony
47+ qmlRegisterUncreatableType<MockTelepathyHelper>(uri, 0, 1, "TelepathyHelper", "This is a singleton helper class");
48+ qmlRegisterUncreatableType<MockCallManager>(uri, 0, 1, "CallManager", "This is a singleton manager class");
49+ qmlRegisterUncreatableType<ContactWatcherData>(uri, 0, 1, "ContactWatcherData", "This is a singleton data class");
50+ qmlRegisterType<MockCallEntry>(uri, 0, 1, "CallEntry");
51+ qmlRegisterType<MockContactWatcher>(uri, 0, 1, "ContactWatcher");
52+}
tests/mocks/Ubuntu/Telephony/plugin.hnew file+37
@@ -0,0 +1,37 @@
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+ * Authored by: Nick Dedekind <nick.dedekind@canonical.com
17+ */
18+
19+#ifndef PLUGIN_H
20+#define PLUGIN_H
21+
22+#include <QQmlContext>
23+#include <QQmlExtensionPlugin>
24+
25+class FakeUbuntuTelephonyQmlPlugin : public QQmlExtensionPlugin
26+{
27+ Q_OBJECT
28+ Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
29+public:
30+ void initializeEngine(QQmlEngine *engine, const char *uri);
31+ void registerTypes(const char *uri);
32+
33+private:
34+ QQmlContext *mRootContext;
35+};
36+
37+#endif
tests/mocks/Ubuntu/Telephony/qmldirnew file+2
@@ -0,0 +1,2 @@
1+module Ubuntu.Telephony
2+plugin FakeUbuntuTelephonyQml
tests/mocks/Unity/Application/ApplicationManager.cpp+3−3
@@ -361,9 +361,9 @@ void ApplicationManager::buildListOfAvailableApplications()
361361 ApplicationInfo *application;
362362
363363 application = new ApplicationInfo(this);
364− application->setAppId("phone-app");
365− application->setName("Phone");
366− application->setIcon(QUrl("phone"));
364+ application->setAppId("dialer-app");
365+ application->setName("Dialer");
366+ application->setIcon(QUrl("dialer"));
367367 application->setStage(ApplicationInfo::SideStage);
368368 application->setScreenshot(QString("image://application/%1/%2").arg(application->appId()).arg(QDateTime::currentMSecsSinceEpoch()));
369369 generateQmlStrings(application);
tests/mocks/Unity/CMakeLists.txt+1−1
@@ -6,7 +6,7 @@ add_subdirectory(Notifications)
66pkg_search_module(DEE dee-1.0 REQUIRED)
77pkg_search_module(GOBJECT gobject-2.0 REQUIRED)
88pkg_search_module(DEEQT libdee-qt5 REQUIRED)
9−pkg_check_modules(SCOPES_API REQUIRED unity-shell-scopes=1)
9+pkg_check_modules(SCOPES_API REQUIRED unity-shell-scopes=2)
1010
1111include_directories(
1212 ${CMAKE_CURRENT_BINARY_DIR}
tests/mocks/Unity/Launcher/MockLauncherModel.cpp+7−2
@@ -22,12 +22,14 @@
2222
2323MockLauncherModel::MockLauncherModel(QObject* parent): LauncherModelInterface(parent)
2424{
25− MockLauncherItem *item = new MockLauncherItem("phone-app", "/usr/share/applications/phone-app.desktop", "Phone", "phone-app", this);
25+ MockLauncherItem *item = new MockLauncherItem("dialer-app", "/usr/share/applications/dialer-app.desktop", "Dialer", "dialer-app", this);
2626 item->setProgress(0);
27− m_list.append(item);
27+ item->setPinned(true);
2828 item->setFocused(true);
29+ m_list.append(item);
2930 item = new MockLauncherItem("camera-app", "/usr/share/applications/camera-app.desktop", "Camera", "camera", this);
3031 item->setProgress(10);
32+ item->setPinned(true);
3133 m_list.append(item);
3234 item = new MockLauncherItem("gallery-app", "/usr/share/applications/gallery-app.desktop", "Gallery", "gallery", this);
3335 item->setProgress(50);
@@ -40,6 +42,7 @@ MockLauncherModel::MockLauncherModel(QObject* parent): LauncherModelInterface(pa
4042 m_list.append(item);
4143 item = new MockLauncherItem("twitter-webapp", "/usr/share/applications/twitter-webapp.desktop", "Twitter", "twitter", this);
4244 item->setCount(12);
45+ item->setPinned(true);
4346 m_list.append(item);
4447 item = new MockLauncherItem("gmail-webapp", "/usr/share/applications/gmail-webapp.desktop", "GMail", "gmail", this);
4548 item->setCount(123);
@@ -51,8 +54,10 @@ MockLauncherModel::MockLauncherModel(QObject* parent): LauncherModelInterface(pa
5154 item->setProgress(50);
5255 item->setCount(5);
5356 item->setFocused(true);
57+ item->setPinned(true);
5458 m_list.append(item);
5559 item = new MockLauncherItem("calendar-app", "/usr/share/applications/calendar-app.desktop","Calendar", "calendar", this);
60+ item->setPinned(true);
5661 m_list.append(item);
5762}
5863
tests/mocks/Unity/fake_categories.cpp+4
@@ -116,6 +116,8 @@ Categories::data(const QModelIndex& index, int role) const
116116 map["title"] = "HOLA";
117117 return map;
118118 }
119+ case RoleHeaderLink:
120+ return QString();
119121 case RoleResults:
120122 return QVariant();
121123 case RoleCount:
@@ -163,6 +165,8 @@ Categories::data(const QModelIndex& index, int role) const
163165 map["subtitle"] = "HOLA";
164166 return map;
165167 }
168+ case RoleHeaderLink:
169+ return QString();
166170 case RoleResults:
167171 return QVariant::fromValue(resultsModel);
168172 case RoleCount:
tests/mocks/Unity/fake_scope.cpp+58−19
@@ -14,6 +14,8 @@
1414 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1515 */
1616
17+#include <QUrl>
18+
1719#include "fake_scope.h"
1820#include "fake_department.h"
1921#include "fake_resultsmodel.h"
@@ -35,87 +37,110 @@ Scope::Scope(QString const& id, QString const& name, bool visible, QObject* pare
3537{
3638}
3739
38−QString Scope::id() const {
40+QString Scope::id() const
41+{
3942 return m_id;
4043}
4144
42−QString Scope::name() const {
45+QString Scope::name() const
46+{
4347 return m_name;
4448}
4549
46−QString Scope::searchQuery() const {
50+QString Scope::searchQuery() const
51+{
4752 return m_searchQuery;
4853}
4954
50−QString Scope::iconHint() const {
55+QString Scope::iconHint() const
56+{
5157 return m_iconHint;
5258}
5359
54−QString Scope::description() const {
60+QString Scope::description() const
61+{
5562 return m_description;
5663}
5764
58−QString Scope::searchHint() const {
65+QString Scope::searchHint() const
66+{
5967 return QString("");
6068}
6169
62−QString Scope::shortcut() const {
70+QString Scope::shortcut() const
71+{
6372 return QString("");
6473}
6574
66−bool Scope::searchInProgress() const {
75+bool Scope::searchInProgress() const
76+{
6777 return m_searching;
6878}
6979
70−unity::shell::scopes::CategoriesInterface* Scope::categories() const {
80+unity::shell::scopes::CategoriesInterface* Scope::categories() const
81+{
7182 return m_categories;
7283}
7384
74−QString Scope::noResultsHint() const {
85+unity::shell::scopes::SettingsModelInterface* Scope::settings() const
86+{
87+ return nullptr;
88+}
89+
90+QString Scope::noResultsHint() const
91+{
7592 return m_noResultsHint;
7693}
7794
78−QString Scope::formFactor() const {
95+QString Scope::formFactor() const
96+{
7997 return m_formFactor;
8098}
8199
82−bool Scope::visible() const {
100+bool Scope::visible() const
101+{
83102 return m_visible;
84103}
85104
86−bool Scope::isActive() const {
105+bool Scope::isActive() const
106+{
87107 return m_isActive;
88108}
89109
90−void Scope::setSearchQuery(const QString &str) {
110+void Scope::setSearchQuery(const QString &str)
111+{
91112 if (str != m_searchQuery) {
92113 m_searchQuery = str;
93114 Q_EMIT searchQueryChanged();
94115 }
95116}
96117
97−void Scope::setFormFactor(const QString &str) {
118+void Scope::setFormFactor(const QString &str)
119+{
98120 if (str != m_formFactor) {
99121 m_formFactor = str;
100122 Q_EMIT formFactorChanged();
101123 }
102124}
103125
104−void Scope::setActive(const bool active) {
126+void Scope::setActive(const bool active)
127+{
105128 if (active != m_isActive) {
106129 m_isActive = active;
107130 Q_EMIT isActiveChanged();
108131 }
109132}
110133
111−void Scope::setSearchInProgress(const bool inProg) {
134+void Scope::setSearchInProgress(const bool inProg)
135+{
112136 if (inProg != m_searching) {
113137 m_searching = inProg;
114138 Q_EMIT searchInProgressChanged();
115139 }
116140}
117141
118−void Scope::setNoResultsHint(const QString& str) {
142+void Scope::setNoResultsHint(const QString& str)
143+{
119144 if (str != m_noResultsHint) {
120145 m_noResultsHint = str;
121146 Q_EMIT noResultsHintChanged();
@@ -157,7 +182,16 @@ bool Scope::hasDepartments() const
157182
158183QVariantMap Scope::customizations() const
159184{
160− return QVariantMap();
185+ QVariantMap m;
186+ if (m_id == "clickscope") {
187+ m["background-color"] = "red";
188+ m["foreground-color"] = "blue";
189+ } else if (m_id == "MockScope5") {
190+ QVariantMap pageHeader;
191+ pageHeader["logo"] = QUrl("../../../tests/qmltests/Components/tst_PageHeader/logo-ubuntu-orange.svg");
192+ m["page-header"] = pageHeader;
193+ }
194+ return m;
161195}
162196
163197unity::shell::scopes::DepartmentInterface* Scope::getDepartment(const QString& id)
@@ -182,3 +216,8 @@ void Scope::loadDepartment(const QString& id)
182216 m_currentDeparment = id;
183217 Q_EMIT currentDepartmentIdChanged();
184218}
219+
220+void Scope::performQuery(const QString& query)
221+{
222+ Q_UNUSED(query);
223+}
tests/mocks/Unity/fake_scope.h+2
@@ -46,6 +46,7 @@ public:
4646 QString noResultsHint() const override;
4747 QString formFactor() const override;
4848 bool isActive() const override;
49+ unity::shell::scopes::SettingsModelInterface* settings() const override;
4950
5051 /* setters */
5152 void setSearchQuery(const QString& search_query) override;
@@ -63,6 +64,7 @@ public:
6364 bool hasDepartments() const override;
6465 Q_INVOKABLE unity::shell::scopes::DepartmentInterface* getDepartment(const QString& id) override;
6566 Q_INVOKABLE void loadDepartment(const QString& id) override;
67+ Q_INVOKABLE void performQuery(const QString& query) override;
6668
6769 QVariantMap customizations() const override;
6870
tests/mocks/Unity/fake_unity_plugin.cpp+1
@@ -45,6 +45,7 @@ void FakeUnityPlugin::registerTypes(const char *uri)
4545 qmlRegisterUncreatableType<unity::shell::scopes::ScopeInterface>(uri, 0, 2, "Scope", "Can't create Scope object in QML.");
4646 qmlRegisterUncreatableType<unity::shell::scopes::DepartmentInterface>(uri, 0, 2, "Department", "Can't create Department object in QML.");
4747 qmlRegisterUncreatableType<unity::shell::scopes::CategoriesInterface>(uri, 0, 2, "Categories", "Can't create Categories object in QML.");
48+ qmlRegisterUncreatableType<unity::shell::scopes::PreviewModelInterface>(uri, 0, 2, "PreviewModel", "Can't create new PreviewModel in QML. Get them from PreviewStack instance.");
4849 qmlRegisterUncreatableType<ResultsModel>(uri, 0, 2, "ResultsModel", "Can't create ResultsModel object in QML.");
4950 qmlRegisterType<PreviewModel>(uri, 0, 2, "FakePreviewModel");
5051 qmlRegisterUncreatableType<PreviewWidgetModel>(uri, 0, 2, "PreviewWidgetModel", "Can't create new PreviewWidgetModel in QML. Get them from PreviewModel instance.");
tests/plugins/Dash/CMakeLists.txt+2
@@ -76,4 +76,6 @@ add_binary_qml_test(CardCreator "" "Dash-qml")
7676# plain qml test
7777set(qmltest_DEFAULT_TARGETS qmluitests)
7878set(qmltest_DEFAULT_NO_ADD_TEST TRUE)
79+set(qmltest_DEFAULT_PROPERTIES ENVIRONMENT "LC_ALL=C")
80+add_qml_test(. ScopeStyle IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins)
7981add_qml_test(. ListViewWithPageHeaderQML IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins)
tests/plugins/Dash/cardcreator/1.res+3−2
@@ -5,7 +5,8 @@ AbstractButton {
55 property var cardData;
66 property var artShapeBorderSource: undefined;
77 property real fontScale: 1.0;
8− property int headerAlignment: Text.AlignLeft;
8+ property var scopeStyle: null;
9+ property int headerAlignment: Text.AlignLeft;
910 property int fixedHeaderHeight: -1;
1011 property size fixedArtShapeSize: Qt.size(-1, -1);
1112 readonly property string title: cardData && cardData["title"] || "";
@@ -75,7 +76,7 @@ leftMargin: units.gu(1);
7576 wrapMode: Text.Wrap;
7677 maximumLineCount: 2;
7778 font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
78− color: "grey";
79+ color: root.scopeStyle ? root.scopeStyle.foreground : "grey";
7980 visible: showHeader ;
8081 text: root.title;
8182 font.weight: components && components["subtitle"] ? Font.DemiBold : Font.Normal;
tests/plugins/Dash/cardcreator/2.res+5−5
@@ -5,7 +5,8 @@ AbstractButton {
55 property var cardData;
66 property var artShapeBorderSource: undefined;
77 property real fontScale: 1.0;
8− property int headerAlignment: Text.AlignLeft;
8+ property var scopeStyle: null;
9+ property int headerAlignment: Text.AlignLeft;
910 property int fixedHeaderHeight: -1;
1011 property size fixedArtShapeSize: Qt.size(-1, -1);
1112 readonly property string title: cardData && cardData["title"] || "";
@@ -78,8 +79,7 @@ Column {
7879 anchors.verticalCenter: parent.verticalCenter;
7980 spacing: units.dp(2);
8081 width: parent.width - x;
81− data: [
82−Label {
82+ data: [ Label {
8383 id: titleLabel;
8484 objectName: "titleLabel";
8585 anchors { left: parent.left; right: parent.right }
@@ -88,7 +88,7 @@ Label {
8888 wrapMode: Text.Wrap;
8989 maximumLineCount: 2;
9090 font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
91− color: backgroundLoader.active && backgroundLoader.item && backgroundLoader.item.luminance < 0.7 ? "white" : "grey";
91+ color: backgroundLoader.active && backgroundLoader.item && backgroundLoader.item.luminance < 0.7 ? "white" : (root.scopeStyle ? root.scopeStyle.foreground : "grey");
9292 visible: showHeader ;
9393 text: root.title;
9494 font.weight: components && components["subtitle"] ? Font.DemiBold : Font.Normal;
@@ -103,7 +103,7 @@ Label {
103103 elide: Text.ElideRight;
104104 fontSize: "small";
105105 font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
106− color: backgroundLoader.active && backgroundLoader.item && backgroundLoader.item.luminance < 0.7 ? "white" : "grey";
106+ color: backgroundLoader.active && backgroundLoader.item && backgroundLoader.item.luminance < 0.7 ? "white" : (root.scopeStyle ? root.scopeStyle.foreground : "grey");
107107 visible: titleLabel.visible && titleLabel.text;
108108 text: cardData && cardData["subtitle"] || "";
109109 font.weight: Font.Light;
tests/plugins/Dash/cardcreator/3.res+6−4
@@ -5,7 +5,8 @@ AbstractButton {
55 property var cardData;
66 property var artShapeBorderSource: undefined;
77 property real fontScale: 1.0;
8− property int headerAlignment: Text.AlignLeft;
8+ property var scopeStyle: null;
9+ property int headerAlignment: Text.AlignLeft;
910 property int fixedHeaderHeight: -1;
1011 property size fixedArtShapeSize: Qt.size(-1, -1);
1112 readonly property string title: cardData && cardData["title"] || "";
@@ -75,7 +76,7 @@ leftMargin: units.gu(1);
7576 wrapMode: Text.Wrap;
7677 maximumLineCount: 2;
7778 font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
78− color: "grey";
79+ color: root.scopeStyle ? root.scopeStyle.foreground : "grey";
7980 visible: showHeader ;
8081 text: root.title;
8182 font.weight: components && components["subtitle"] ? Font.DemiBold : Font.Normal;
@@ -88,11 +89,12 @@ Label {
8889 leftMargin: titleLabel.leftMargin;
8990 right: titleLabel.right;
9091 top: titleLabel.bottom;
91− topMargin: units.dp(2); }
92+ topMargin: units.dp(2);
93+ }
9294 elide: Text.ElideRight;
9395 fontSize: "small";
9496 font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
95− color: "grey";
97+ color: root.scopeStyle ? root.scopeStyle.foreground : "grey";
9698 visible: titleLabel.visible && titleLabel.text;
9799 text: cardData && cardData["subtitle"] || "";
98100 font.weight: Font.Light;
tests/plugins/Dash/cardcreator/4.res+4−3
@@ -5,7 +5,8 @@ AbstractButton {
55 property var cardData;
66 property var artShapeBorderSource: undefined;
77 property real fontScale: 1.0;
8− property int headerAlignment: Text.AlignLeft;
8+ property var scopeStyle: null;
9+ property int headerAlignment: Text.AlignLeft;
910 property int fixedHeaderHeight: -1;
1011 property size fixedArtShapeSize: Qt.size(-1, -1);
1112 readonly property string title: cardData && cardData["title"] || "";
@@ -68,7 +69,7 @@ data: [ Label {
6869 wrapMode: Text.Wrap;
6970 maximumLineCount: 2;
7071 font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
71− color: "grey";
72+ color: root.scopeStyle ? root.scopeStyle.foreground : "grey";
7273 visible: showHeader ;
7374 text: root.title;
7475 font.weight: components && components["subtitle"] ? Font.DemiBold : Font.Normal;
@@ -83,7 +84,7 @@ Label {
8384 elide: Text.ElideRight;
8485 fontSize: "small";
8586 font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
86− color: "grey";
87+ color: root.scopeStyle ? root.scopeStyle.foreground : "grey";
8788 visible: titleLabel.visible && titleLabel.text;
8889 text: cardData && cardData["subtitle"] || "";
8990 font.weight: Font.Light;
tests/plugins/Dash/cardcreator/5.res+3−2
@@ -4,8 +4,9 @@ AbstractButton {
44 property var components;
55 property var cardData;
66 property var artShapeBorderSource: undefined;
7− property real fontScale: 1.0;
8− property int headerAlignment: Text.AlignLeft;
7+ property real fontScale: 1.0;
8+ property var scopeStyle: null;
9+ property int headerAlignment: Text.AlignLeft;
910 property int fixedHeaderHeight: -1;
1011 property size fixedArtShapeSize: Qt.size(-1, -1);
1112 readonly property string title: cardData && cardData["title"] || "";
tests/plugins/Dash/cardcreator/6.resnew file+66
@@ -0,0 +1,66 @@
1+AbstractButton {
2+ id: root;
3+ property var template;
4+ property var components;
5+ property var cardData;
6+ property var artShapeBorderSource: undefined;
7+ property real fontScale: 1.0;
8+ property int headerAlignment: Text.AlignLeft;
9+ property int fixedHeaderHeight: -1;
10+ property size fixedArtShapeSize: Qt.size(-1, -1);
11+ readonly property string title: cardData && cardData["title"] || "";
12+ property bool asynchronous: true;
13+ property bool showHeader: true;
14+ implicitWidth: childrenRect.width;
15+onArtShapeBorderSourceChanged: { if (artShapeBorderSource !== undefined && artShapeLoader.item) artShapeLoader.item.borderSource = artShapeBorderSource; }
16+readonly property size artShapeSize: artShapeLoader.item ? Qt.size(artShapeLoader.item.width, artShapeLoader.item.height) : Qt.size(-1, -1);
17+Item {
18+ id: artShapeHolder;
19+ height: root.fixedArtShapeSize.height > 0 ? root.fixedArtShapeSize.height : artShapeLoader.height;
20+ width: root.fixedArtShapeSize.width > 0 ? root.fixedArtShapeSize.width : artShapeLoader.width;
21+ anchors { horizontalCenter: parent.horizontalCenter; }
22+ Loader {
23+ id: artShapeLoader;
24+ objectName: "artShapeLoader";
25+ active: cardData && cardData["art"] || false;
26+ asynchronous: root.asynchronous;
27+ visible: status == Loader.Ready;
28+ sourceComponent: UbuntuShape {
29+ id: artShape;
30+ objectName: "artShape";
31+ radius: "medium";
32+ visible: image.status == Image.Ready;
33+ readonly property real fixedArtShapeSizeAspect: (root.fixedArtShapeSize.height > 0 && root.fixedArtShapeSize.width > 0) ? root.fixedArtShapeSize.width / root.fixedArtShapeSize.height : -1;
34+ readonly property real aspect: fixedArtShapeSizeAspect > 0 ? fixedArtShapeSizeAspect : components !== undefined ? components["art"]["aspect-ratio"] : 1;
35+ readonly property bool aspectSmallerThanImageAspect: aspect < image.aspect;
36+ Component.onCompleted: { updateWidthHeightBindings(); if (artShapeBorderSource !== undefined) borderSource = artShapeBorderSource; }
37+ onAspectSmallerThanImageAspectChanged: updateWidthHeightBindings();
38+ Connections { target: root; onFixedArtShapeSizeChanged: updateWidthHeightBindings(); }
39+ function updateWidthHeightBindings() {
40+ if (root.fixedArtShapeSize.height > 0 && root.fixedArtShapeSize.width > 0) {
41+ width = root.fixedArtShapeSize.width;
42+ height = root.fixedArtShapeSize.height;
43+ } else if (aspectSmallerThanImageAspect) {
44+ width = Qt.binding(function() { return !visible ? 0 : image.width });
45+ height = Qt.binding(function() { return !visible ? 0 : image.fillMode === Image.PreserveAspectCrop ? image.height : width / image.aspect });
46+ } else {
47+ width = Qt.binding(function() { return !visible ? 0 : image.fillMode === Image.PreserveAspectCrop ? image.width : height * image.aspect });
48+ height = Qt.binding(function() { return !visible ? 0 : image.height });
49+ }
50+ }
51+ image: Image {
52+ objectName: "artImage";
53+ source: cardData && cardData["art"] || "";
54+ cache: true;
55+ asynchronous: root.asynchronous;
56+ fillMode: components && components["art"]["fill-mode"] === "fit" ? Image.PreserveAspectFit: Image.PreserveAspectCrop;
57+ readonly property real aspect: implicitWidth / implicitHeight;
58+ width: root.width;
59+ height: width / artShape.aspect;
60+ }
61+ }
62+ }
63+ }
64+readonly property int headerHeight: 0;
65+implicitHeight: artShapeHolder.height;
66+}
tests/plugins/Dash/cardcreator/6.tstnew file+3
@@ -0,0 +1,3 @@
1+template: {"card-layout":"vertical","card-size":"small","category-layout":"grid","collapsed-rows":2}
2+components: {"art":{"aspect-ratio":1.6,"field":"art","fill-mode":"fit"}}
3+result: 6.res
tests/plugins/Dash/tst_ScopeStyle.qmlnew file+151
@@ -0,0 +1,151 @@
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.2
18+import QtTest 1.0
19+import Dash 0.1
20+import Ubuntu.Components 1.1
21+
22+Rectangle {
23+ width: units.gu(40)
24+ height: units.gu(71)
25+
26+ ScopeStyle {
27+ id: tool
28+ }
29+
30+ TestCase {
31+ id: testCase
32+ name: "ScopeStyle"
33+ when: windowShown
34+
35+ property color color
36+ property var styles: [
37+ {},
38+ { "foreground-color": "red", "background-color": "black", "page-header": { "logo": "/foo/bar" } },
39+ { "foreground-color": "green", "background-color": "white" },
40+ { "foreground-color": "blue", "background-color": "darkgrey" },
41+ ]
42+
43+ function cleanup() {
44+ testCase.color = "transparent";
45+ }
46+
47+ function test_luminance_data() {
48+ return [
49+ { tag: "#F00", luminance: 0.2126 },
50+ { tag: "#0F0", luminance: 0.7152 },
51+ { tag: "#00F", luminance: 0.0722 },
52+ { tag: "white", luminance: 1.0 },
53+ { tag: "black", luminance: 0.0 },
54+ { tag: "lightgrey", luminance: 0.8275 },
55+ { tag: "grey", luminance: 0.5020 },
56+ { tag: "darkgrey", luminance: 0.6627 },
57+ ];
58+ }
59+
60+ function test_luminance(data) {
61+ testCase.color = data.tag;
62+ compare(tool.luminance(testCase.color).toFixed(4), data.luminance.toFixed(4));
63+ }
64+
65+ function test_foreground_data() {
66+ return [
67+ { tag: "default", index: 0, foreground: "grey" },
68+ { tag: "red on black", index: 1, foreground: "red" },
69+ { tag: "green on white", index: 2, foreground: "green" },
70+ { tag: "blue on darkgrey", index: 3, foreground: "blue" },
71+ ];
72+ }
73+
74+ function test_foreground(data) {
75+ tool.style = testCase.styles[data.index];
76+ verify(Qt.colorEqual(tool.foreground, data.foreground),
77+ "Foreground color not equal: %1 != %2".arg(tool.foreground).arg(data.foreground));
78+ }
79+
80+ function test_background_data() {
81+ return [
82+ { tag: "default", index: 0, background: "transparent" },
83+ { tag: "red on black", index: 1, background: "black" },
84+ { tag: "green on white", index: 2, background: "white" },
85+ { tag: "blue on darkgrey", index: 3, background: "darkgrey" },
86+ ];
87+ }
88+
89+ function test_background(data) {
90+ tool.style = testCase.styles[data.index];
91+ verify(Qt.colorEqual(tool.background, data.background),
92+ "Background color not equal: %1 != %2".arg(tool.background).arg(data.background));
93+ }
94+
95+ function test_threshold_data() {
96+ return [
97+ { tag: "default", index: 0, threshold: 0.5020 },
98+ { tag: "red on black", index: 1, threshold: 0.1063 },
99+ { tag: "green on white", index: 2, threshold: 0.6795 },
100+ { tag: "blue on darkgrey", index: 3, threshold: 0.3675 },
101+ ];
102+ }
103+
104+ function test_threshold(data) {
105+ tool.style = testCase.styles[data.index];
106+ compare(tool.threshold.toFixed(4), data.threshold.toFixed(4), "Luminance threshold was incorrect.");
107+ }
108+
109+ function test_light_data() {
110+ return [
111+ { tag: "default", index: 0, light: "white" },
112+ { tag: "red on black", index: 1, light: "red" },
113+ { tag: "green on white", index: 2, light: "white" },
114+ { tag: "blue on darkgrey", index: 3, light: "darkgrey" },
115+ ];
116+ }
117+
118+ function test_light(data) {
119+ tool.style = testCase.styles[data.index];
120+ verify(Qt.colorEqual(tool.light, data.light),
121+ "Light color not equal: %1 != %2".arg(tool.light).arg(data.light));
122+ }
123+
124+ function test_dark_data() {
125+ return [
126+ { tag: "default", index: 0, dark: "grey" },
127+ { tag: "red on black", index: 1, dark: "black" },
128+ { tag: "green on white", index: 2, dark: "green" },
129+ { tag: "blue on darkgrey", index: 3, dark: "blue" },
130+ ];
131+ }
132+
133+ function test_dark(data) {
134+ tool.style = testCase.styles[data.index];
135+ verify(Qt.colorEqual(tool.dark, data.dark),
136+ "Dark color not equal: %1 != %2".arg(tool.dark).arg(data.dark));
137+ }
138+
139+ function test_headerLogo_data() {
140+ return [
141+ { tag: "default", index: 0, headerLogo: "" },
142+ { tag: "with logo", index: 1, headerLogo: "file:///foo/bar" },
143+ ];
144+ }
145+
146+ function test_headerLogo(data) {
147+ tool.style = testCase.styles[data.index];
148+ compare(tool.headerLogo, data.headerLogo, "Header logo was incorrect.");
149+ }
150+ }
151+}
tests/plugins/Unity/Launcher/launchermodeltest.cpp+9
@@ -156,11 +156,20 @@ private Q_SLOTS:
156156 }
157157
158158 void testPinning() {
159+ QSignalSpy spy(launcherModel, SIGNAL(dataChanged(QModelIndex,QModelIndex,QVector<int>)));
159160 QCOMPARE(launcherModel->get(0)->pinned(), false);
160161 QCOMPARE(launcherModel->get(1)->pinned(), false);
161162 launcherModel->pin(launcherModel->get(0)->appId());
162163 QCOMPARE(launcherModel->get(0)->pinned(), true);
163164 QCOMPARE(launcherModel->get(1)->pinned(), false);
165+ QCOMPARE(spy.count(), 1);
166+ QCOMPARE(spy.at(0).at(2).value<QVector<int>>().first(), (int)LauncherModelInterface::RolePinned);
167+
168+ launcherModel->requestRemove(launcherModel->get(0)->appId());
169+ QCOMPARE(launcherModel->get(0)->pinned(), false);
170+ QCOMPARE(launcherModel->get(1)->pinned(), false);
171+ QCOMPARE(spy.count(), 2);
172+ QCOMPARE(spy.at(1).at(2).value<QVector<int>>().first(), (int)LauncherModelInterface::RolePinned);
164173 }
165174
166175 void testRemove_data() {
tests/qmltests/CMakeLists.txt+2−1
@@ -32,7 +32,7 @@ add_qml_test(Components ResponsiveGridView)
3232add_qml_test(Components ResponsiveVerticalJournal IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/plugins)
3333add_qml_test(Components SeeMore)
3434add_qml_test(Components Showable)
35−add_qml_test(Components PageHeaderLabel)
35+add_qml_test(Components PageHeader)
3636add_qml_test(Components ZoomableImage)
3737add_qml_test(Dash Dash)
3838add_qml_test(Dash DashContent)
@@ -64,6 +64,7 @@ add_qml_test(Hud Result)
6464add_qml_test(Launcher Launcher)
6565add_qml_test(Notifications Notifications)
6666add_qml_test(Notifications VisualSnapDecisionsQueue)
67+add_qml_test(Panel ActiveCallHint)
6768add_qml_test(Panel IndicatorRow)
6869add_qml_test(Panel Indicators)
6970add_qml_test(Panel MenuContent)
tests/qmltests/Components/tst_Carousel.qml+48−2
@@ -27,12 +27,13 @@ Item {
2727 Carousel {
2828 anchors.fill: parent
2929 id: carousel
30− model: 40
3130
3231 property int createdDelegates: 0
3332 property int destroyedDelegates: 0
3433
3534 itemComponent: BaseCarouselDelegate {
35+ objectName: "carouselDelegate" + index
36+
3637 Rectangle {
3738 anchors.fill: parent
3839 border.color: "black"
@@ -42,6 +43,11 @@ Item {
4243 }
4344 }
4445 }
46+
47+ SignalSpy {
48+ id: spy
49+ }
50+
4551 UT.UnityTestCase {
4652 id: root
4753 name: "Carousel"
@@ -51,6 +57,8 @@ Item {
5157 property int itemCount
5258 property real tileWidth
5359
60+ property Item listView: findChild(carousel, "listView")
61+
5462 property real contentWidth: itemCount * tileWidth
5563 // following variables are copied from Carousel.qml
5664 // I'm not using the variables directly from there, as then tileWidth and others would be affected as well
@@ -60,11 +68,25 @@ Item {
6068 property real kGapEnd: kMiddleIndex * (1 - gapToEndPhase / gapToMiddlePhase)
6169 property real kXBeginningEnd: 1 / tileWidth + kMiddleIndex / gapToMiddlePhase
6270
71+ function init() {
72+ carousel.model = 40;
73+ waitForRendering(carousel)
74+ listView.positionViewAtBeginning();
75+ }
76+
77+ function cleanup() {
78+ carousel.model = 0;
79+ carousel.createdDelegates = 0;
80+ carousel.destroyedDelegates = 0;
81+ spy.target = null;
82+ spy.signalName = "";
83+ }
84+
6385 // This test needs to run first since it tests a corner case condition
6486 // to where the carousel is just being created
6587 // That is why it has a 1 in the name
6688 function test_1onlyNeededItemsCreated() {
67− tryCompare(carousel, "createdDelegates", 10);
89+ tryCompare(carousel, "createdDelegates", 9);
6890 compare(carousel.destroyedDelegates, 0);
6991 }
7092
@@ -243,5 +265,29 @@ Item {
243265 var x = carouselList.getXFromContinuousIndex(carousel.model - 1);
244266 verify(Math.abs(x - carouselList.contentX) < 1);
245267 }
268+
269+ function test_activate() {
270+ var carouselList = findChild(carousel, "listView");
271+ tryCompareFunction(function() { return findChild(carouselList, "carouselDelegate3") ? true : false; }, true);
272+ var carouselItem = findChild(carousel, "carouselDelegate3")
273+ verify(carouselItem, "Could not find delegate");
274+
275+ spy.signalName = "clicked";
276+ spy.target = carouselItem;
277+ mouseClick(carouselItem, carouselItem.width / 2, carouselItem.height / 2);
278+ tryCompare(carouselList, "moving", false);
279+ tryCompare(carouselItem, "explicitlyScaled", true);
280+ mouseClick(carouselItem, carouselItem.width / 2, carouselItem.height / 2);
281+ spy.wait();
282+
283+ spy.signalName = "pressAndHold";
284+ spy.target = carouselItem;
285+ mouseClick(carouselItem, carouselItem.width / 2, carouselItem.height / 2);
286+ tryCompare(carouselList, "moving", false);
287+ tryCompare(carouselItem, "explicitlyScaled", true);
288+ mousePress(carouselItem, carouselItem.width / 2, carouselItem.height / 2);
289+ spy.wait();
290+ mouseRelease(carouselItem, carouselItem.width / 2, carouselItem.height / 2);
291+ }
246292 }
247293}
tests/qmltests/Components/tst_PageHeaderLabel.qml → tests/qmltests/Components/tst_PageHeader.qmlrenamed+90−54
@@ -23,13 +23,10 @@ import Unity 0.2
2323import Unity.Test 0.1 as UT
2424
2525Item {
26+ id: root
2627 width: units.gu(110)
2728 height: units.gu(30)
2829
29− MockScope {
30− id: scopeMock
31− }
32−
3330 UT.UnityTestCase {
3431 name: "PageHeaderLabelTest"
3532 when: windowShown
@@ -82,33 +79,6 @@ Item {
8279 compare(searchQuery, "", "Reset search did not reset searchQuery correctly.")
8380 }
8481
85− function test_move_search_by_width()
86− {
87− searchEnabled = true
88− pageHeader.resetSearch()
89−
90− var searchContainer = findChild(pageHeader, "searchContainer")
91−
92− parent.width = units.gu(40)
93−
94− verify(searchContainer !== undefined)
95− verify(searchContainer.y <= 0)
96−
97− pageHeader.triggerSearch()
98− verify(searchContainer.y >= 0)
99−
100− pageHeader.resetSearch()
101− verify(searchContainer.y <= 0)
102−
103− parent.width = units.gu(110)
104− verify(searchContainer.y >= 0)
105−
106− pageHeader.triggerSearch()
107− tryCompare(searchContainer, "narrowMode", false)
108− tryCompare(searchContainer, "state", "active")
109− tryCompare(searchContainer, "width", units.gu(40))
110− }
111−
11282 function test_history() {
11383 pageHeader.searchHistory.clear()
11484 compare(pageHeader.searchHistory.count, 0)
@@ -144,21 +114,41 @@ Item {
144114
145115 function test_search_indicator() {
146116 var searchIndicator = findChild(pageHeader, "searchIndicator")
147− var primaryImage = findChild(pageHeader, "primaryImage")
117+ var clearIcon = findChild(pageHeader, "clearIcon")
148118
149119 pageHeader.triggerSearch()
150120
151− scopeMock.setSearchInProgress(false);
121+ tryCompare(clearIcon, "visible", false)
122+ pageHeader.searchQuery = "ubuntu"
123+ tryCompare(clearIcon, "visible", true)
124+
125+ pageHeader.searchInProgress = false
152126 compare(searchIndicator.running, false, "Search indicator is running.")
153− tryCompare(primaryImage, "visible", true)
127+ tryCompare(clearIcon, "visible", true)
154128
155− scopeMock.setSearchInProgress(true);
129+ pageHeader.searchInProgress = true
156130 compare(searchIndicator.running, true, "Search indicator isn't running.")
157− tryCompare(primaryImage, "visible", false)
131+ tryCompare(clearIcon, "visible", false)
132+
133+ pageHeader.searchInProgress = false;
134+ compare(searchIndicator.running, false, "Search indicator is running.")
135+ tryCompare(clearIcon, "visible", true)
136+ }
137+
138+ function test_titleImage() {
139+
140+ var titleImage = findChild(pageHeader, "titleImage");
141+ verify(titleImage == null);
142+
143+ showImageCheckBox.checked = true;
144+
145+ titleImage = findChild(pageHeader, "titleImage");
146+ verify(titleImage !== null);
147+ compare(titleImage.source, pageHeader.titleImageSource);
148+
158149 }
159150
160151 function cleanup() {
161− scopeMock.setSearchInProgress(false);
162152 pageHeader.resetSearch();
163153 }
164154
@@ -171,14 +161,21 @@ Item {
171161
172162 pageHeader.triggerSearch();
173163
174− var searchContainer = findChild(pageHeader, "searchContainer");
175− verify(searchContainer !== undefined, "searchContainer != undefined");
176− tryCompareFunction(function() { return searchContainer.popover !== null; }, true);
164+ var headerContainer = findChild(pageHeader, "headerContainer");
165+ verify(headerContainer !== null, "headerContainer != null");
166+ tryCompareFunction(function() { return headerContainer.popover !== null; }, true);
177167
178− tryCompare(searchContainer.popover, "visible", true);
168+ tryCompare(headerContainer.popover, "visible", true);
179169 }
180170
181− function test_resetSearch_onPopupClose() {
171+ function test_tap_outside_closes_popup_data() {
172+ return [
173+ { tag: "with search text", searchText: "foobar", hideSearch: false },
174+ { tag: "without search text", searchText: "", hideSearch: true }
175+ ];
176+ }
177+
178+ function test_tap_outside_closes_popup(data) {
182179 searchEnabled = true;
183180 pageHeader.searchHistory.clear();
184181
@@ -187,16 +184,19 @@ Item {
187184
188185 pageHeader.triggerSearch();
189186
190− var searchContainer = findChild(pageHeader, "searchContainer");
191− verify(searchContainer !== undefined, "searchContainer != undefined");
192− tryCompareFunction(function() { return searchContainer.popover !== null; }, true);
193− compare(searchContainer.popover.visible, true);
187+ var headerContainer = findChild(pageHeader, "headerContainer");
188+ verify(headerContainer !== null, "headerContainer != null");
189+ tryCompareFunction(function() { return headerContainer.popover !== null; }, true);
190+ compare(headerContainer.popover.visible, true);
191+
192+ pageHeader.searchQuery = data.searchText;
194193
195− pageHeader.searchQuery = "test";
196− tryCompareFunction( function() { return (searchContainer.popover===null || !searchContainer.popover.visible) }, true);
194+ mouseClick(root, root.width / 2, root.height - 1);
195+
196+ tryCompare(headerContainer, "showSearch", !data.hideSearch);
197+ tryCompareFunction(function() { return headerContainer.popover === null; }, true);
197198
198199 pageHeader.resetSearch();
199− compare((searchContainer.popover===null || !searchContainer.popover.visible), true);
200200 }
201201 }
202202
@@ -204,18 +204,24 @@ Item {
204204 anchors.fill: parent
205205 spacing: units.gu(1)
206206
207− PageHeaderLabel {
207+ PageHeader {
208208 id: pageHeader
209209 anchors {
210210 left: parent.left
211211 right: parent.right
212212 }
213213
214− scope: scopeMock
215−
216214 searchEntryEnabled: true
217− searchHistory: SearchHistoryModel {}
218− text: "%^$%^%^&%^&%^$%GHR%"
215+ title: "%^$%^%^&%^&%^$%GHR%"
216+ scopeStyle: QtObject {
217+ readonly property color foreground: "grey"
218+ readonly property url headerLogo: showImageCheckBox.checked ? pageHeader.titleImageSource : ""
219+ }
220+ showBackButton: showBackButtonCheckBox.checked
221+
222+ property string titleImageSource: Qt.resolvedUrl("tst_PageHeader/logo-ubuntu-orange.svg")
223+ property date lastBackClicked
224+ onBackClicked: lastBackClicked = new Date()
219225 }
220226
221227 Row {
@@ -251,5 +257,35 @@ Item {
251257 anchors.verticalCenter: parent.verticalCenter
252258 }
253259 }
260+
261+ Row {
262+ spacing: units.gu(1)
263+ anchors {
264+ left: parent.left
265+ right: parent.right
266+ }
267+ CheckBox {
268+ id: showBackButtonCheckBox
269+ }
270+ Label {
271+ text: "Back button enabled (Last clicked: " + Qt.formatTime(pageHeader.lastBackClicked, "hh:mm:ss") + ")"
272+ anchors.verticalCenter: parent.verticalCenter
273+ }
274+ }
275+
276+ Row {
277+ spacing: units.gu(1)
278+ anchors {
279+ left: parent.left
280+ right: parent.right
281+ }
282+ CheckBox {
283+ id: showImageCheckBox
284+ }
285+ Label {
286+ text: "Show image instead of title"
287+ anchors.verticalCenter: parent.verticalCenter
288+ }
289+ }
254290 }
255291}
tests/qmltests/Components/tst_PageHeader/logo-ubuntu-orange.svgnew file+60
@@ -0,0 +1,60 @@
1+<?xml version="1.0" encoding="utf-8"?>
2+<!-- Generator: Adobe Illustrator 17.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5+ width="107px" height="25px" viewBox="0 0 107 25" enable-background="new 0 0 107 25" xml:space="preserve">
6+<g id="BK">
7+</g>
8+<g id="Comp">
9+ <circle fill="#DD4814" cx="100.596" cy="7.374" r="6.403"/>
10+ <path fill="#FFFFFF" d="M96.6,6.605c-0.424,0-0.768,0.344-0.768,0.77c0,0.423,0.344,0.768,0.768,0.768
11+ c0.425,0,0.772-0.345,0.772-0.768C97.371,6.949,97.025,6.605,96.6,6.605z M102.094,10.103c-0.365,0.211-0.492,0.682-0.282,1.047
12+ c0.214,0.372,0.685,0.497,1.051,0.284c0.369-0.21,0.496-0.682,0.281-1.05C102.932,10.014,102.462,9.889,102.094,10.103z
13+ M98.272,7.375c0-0.76,0.378-1.434,0.956-1.839l-0.562-0.944c-0.675,0.451-1.176,1.138-1.384,1.943
14+ c0.246,0.2,0.398,0.501,0.398,0.84c0,0.337-0.152,0.639-0.398,0.838c0.208,0.805,0.709,1.492,1.384,1.941l0.562-0.941
15+ C98.65,8.807,98.272,8.134,98.272,7.375z M100.518,5.125c1.177,0,2.14,0.902,2.24,2.052l1.098-0.019
16+ c-0.055-0.846-0.425-1.61-0.994-2.166c-0.295,0.108-0.634,0.093-0.925-0.078c-0.292-0.168-0.473-0.452-0.524-0.761
17+ c-0.285-0.077-0.584-0.12-0.895-0.12c-0.53,0-1.032,0.125-1.48,0.345l0.535,0.958C99.86,5.201,100.182,5.125,100.518,5.125z
18+ M100.518,9.622c-0.336,0-0.658-0.076-0.945-0.21l-0.535,0.958c0.447,0.221,0.95,0.344,1.48,0.344c0.312,0,0.61-0.039,0.895-0.119
19+ c0.051-0.311,0.232-0.596,0.524-0.763c0.294-0.168,0.63-0.186,0.925-0.073c0.569-0.562,0.938-1.323,0.994-2.17l-1.098-0.015
20+ C102.658,8.721,101.695,9.622,100.518,9.622z M102.094,4.646c0.368,0.213,0.838,0.088,1.051-0.282
21+ c0.214-0.367,0.087-0.839-0.281-1.052c-0.366-0.211-0.837-0.085-1.051,0.283C101.601,3.962,101.728,4.433,102.094,4.646z"/>
22+ <path fill="#DD4814" d="M12.807,24.177c-0.649,0.162-1.509,0.337-2.577,0.518c-1.068,0.184-2.304,0.276-3.704,0.276
23+ c-1.222,0-2.247-0.179-3.082-0.535c-0.833-0.355-1.503-0.858-2.01-1.509c-0.509-0.65-0.875-1.419-1.098-2.302
24+ C0.11,19.739,0,18.76,0,17.68V8.778h2.835v8.293c0,1.932,0.304,3.315,0.916,4.147c0.61,0.834,1.636,1.249,3.079,1.249
25+ c0.304,0,0.62-0.01,0.945-0.031c0.326-0.02,0.632-0.045,0.914-0.075C8.974,22.33,9.234,22.3,9.468,22.27
26+ c0.234-0.032,0.401-0.065,0.504-0.108V8.778h2.835V24.177L12.807,24.177z"/>
27+ <path fill="#DD4814" d="M19.728,9.478c0.347-0.222,0.871-0.458,1.572-0.7c0.7-0.243,1.507-0.367,2.424-0.367
28+ c1.137,0,2.148,0.205,3.033,0.609c0.886,0.406,1.632,0.977,2.243,1.709c0.607,0.731,1.069,1.605,1.385,2.622
29+ c0.317,1.016,0.474,2.135,0.474,3.355c0,1.279-0.187,2.433-0.565,3.461c-0.377,1.025-0.909,1.894-1.6,2.605
30+ c-0.692,0.714-1.524,1.26-2.502,1.647C25.219,24.807,24.121,25,22.899,25c-1.321,0-2.49-0.093-3.506-0.276
31+ c-1.016-0.183-1.849-0.367-2.501-0.549V1.46l2.837-0.488L19.728,9.478L19.728,9.478z M19.728,22.162
32+ c0.285,0.084,0.686,0.159,1.206,0.23c0.517,0.073,1.161,0.107,1.935,0.107c1.523,0,2.746-0.504,3.659-1.509
33+ c0.915-1.007,1.373-2.435,1.373-4.284c0-0.813-0.081-1.575-0.245-2.288c-0.163-0.712-0.428-1.326-0.793-1.845
34+ c-0.366-0.519-0.839-0.923-1.416-1.219c-0.582-0.297-1.278-0.444-2.09-0.444c-0.774,0-1.484,0.133-2.135,0.395
35+ c-0.651,0.267-1.149,0.541-1.495,0.825v10.032H19.728z"/>
36+ <path fill="#DD4814" d="M46.684,24.177c-0.651,0.162-1.509,0.337-2.576,0.518c-1.067,0.184-2.303,0.276-3.707,0.276
37+ c-1.219,0-2.246-0.179-3.079-0.535c-0.833-0.355-1.504-0.858-2.011-1.509c-0.511-0.65-0.875-1.419-1.098-2.302
38+ c-0.224-0.886-0.335-1.865-0.335-2.944V8.778h2.835v8.293c0,1.932,0.304,3.315,0.914,4.147c0.611,0.834,1.636,1.249,3.08,1.249
39+ c0.305,0,0.622-0.01,0.947-0.031c0.325-0.02,0.629-0.045,0.915-0.075c0.284-0.032,0.544-0.062,0.779-0.092
40+ c0.232-0.032,0.4-0.065,0.503-0.108V8.778h2.835v15.399H46.684z"/>
41+ <path fill="#DD4814" d="M50.769,9.236c0.651-0.164,1.514-0.335,2.593-0.521c1.077-0.18,2.316-0.272,3.719-0.272
42+ c1.263,0,2.308,0.178,3.142,0.533c0.834,0.356,1.499,0.853,1.997,1.494c0.498,0.64,0.849,1.408,1.053,2.3
43+ c0.202,0.898,0.304,1.882,0.304,2.959v8.905h-2.836V16.34c0-0.977-0.067-1.809-0.198-2.501c-0.132-0.693-0.351-1.249-0.656-1.676
44+ c-0.303-0.429-0.712-0.738-1.221-0.93c-0.506-0.197-1.139-0.292-1.888-0.292c-0.306,0-0.622,0.012-0.944,0.032
45+ c-0.326,0.021-0.637,0.046-0.931,0.076c-0.298,0.03-0.56,0.067-0.794,0.107c-0.235,0.041-0.402,0.072-0.503,0.091v13.386h-2.837
46+ L50.769,9.236L50.769,9.236z"/>
47+ <path fill="#DD4814" d="M70.132,8.778h6.008v2.378h-6.008v7.319c0,0.792,0.062,1.45,0.185,1.966
48+ c0.121,0.52,0.304,0.927,0.548,1.221c0.244,0.292,0.549,0.501,0.914,0.625c0.367,0.122,0.794,0.182,1.28,0.182
49+ c0.874,0,1.565-0.096,2.076-0.29c0.507-0.193,0.853-0.329,1.035-0.412l0.609,2.32c-0.283,0.142-0.787,0.324-1.508,0.547
50+ c-0.722,0.225-1.539,0.338-2.454,0.338c-1.078,0-1.968-0.137-2.669-0.413c-0.701-0.275-1.265-0.685-1.692-1.234
51+ c-0.427-0.548-0.727-1.224-0.898-2.027c-0.175-0.805-0.26-1.734-0.26-2.79V4.356l2.833-0.489v4.911H70.132z"/>
52+ <path fill="#DD4814" d="M91.57,24.177c-0.653,0.162-1.51,0.337-2.579,0.518c-1.067,0.184-2.3,0.276-3.701,0.276
53+ c-1.222,0-2.247-0.179-3.081-0.535c-0.836-0.355-1.506-0.858-2.013-1.509c-0.509-0.65-0.873-1.419-1.1-2.302
54+ c-0.221-0.886-0.335-1.865-0.335-2.944V8.778h2.838v8.293c0,1.932,0.305,3.315,0.914,4.147c0.609,0.834,1.637,1.249,3.081,1.249
55+ c0.304,0,0.618-0.01,0.945-0.031c0.323-0.02,0.629-0.045,0.914-0.075c0.284-0.032,0.546-0.062,0.777-0.092
56+ c0.234-0.032,0.403-0.065,0.505-0.108V8.778h2.837v15.399H91.57z"/>
57+</g>
58+<g id="Grid" display="none">
59+</g>
60+</svg>
tests/qmltests/Dash/Apps/tst_RunningApplicationsGrid.qml+2−2
@@ -30,7 +30,7 @@ Rectangle {
3030 ApplicationManager.stopApplication(ApplicationManager.get(0).appId)
3131 }
3232
33− ApplicationManager.startApplication("phone-app");
33+ ApplicationManager.startApplication("dialer-app");
3434 ApplicationManager.startApplication("webbrowser-app");
3535 }
3636
@@ -70,7 +70,7 @@ Rectangle {
7070 verify(browserTile != undefined)
7171 browserTile.onPressAndHold.connect(onBrowserLongPressed)
7272
73− phoneTile = findChild(runningApplicationsGrid, "runningAppTile Phone")
73+ phoneTile = findChild(runningApplicationsGrid, "runningAppTile Dialer")
7474 verify(phoneTile != undefined)
7575 phoneTile.onPressAndHold.connect(onPhoneLongPressed)
7676
tests/qmltests/Dash/Previews/tst_Preview.qml+2−2
@@ -73,8 +73,8 @@ Rectangle {
7373
7474 function test_containOnFocus() {
7575 waitForRendering(preview);
76− tryCompareFunction(function () { return findChild(preview, "widget-9") != null }, true);
77− var widget = findChild(preview, "widget-9");
76+ tryCompareFunction(function () { return findChild(preview, "widget-10") != null }, true);
77+ var widget = findChild(preview, "widget-10");
7878
7979 var bottomLeft = preview.mapFromItem(widget, 0, widget.height);
8080 verify(bottomLeft.y > preview.height);
tests/qmltests/Dash/Previews/tst_PreviewRatingDisplay.qml+13
@@ -108,5 +108,18 @@ Rectangle {
108108 }
109109 }
110110 }
111+
112+ function test_non_interactive() {
113+ previewRatingDisplay.widgetData = reviewsModel1;
114+
115+ var reviewItem = findChild(previewRatingDisplay, "reviewItem1");
116+ var rating = findChild(reviewItem, "rating");
117+
118+ compare(rating.value, reviewsModel1["reviews"][1]["rating"]);
119+
120+ // Tap on first star
121+ mouseClick(rating, 0, 0);
122+ compare(rating.value, reviewsModel1["reviews"][1]["rating"]);
123+ }
111124 }
112125}
tests/qmltests/Dash/tst_Dash.qml−39
@@ -70,24 +70,6 @@ Item {
7070 ]
7171 }
7272
73− function test_set_current_scope_data() {
74− return get_scope_data()
75− }
76−
77− function test_set_current_scope(data) {
78− // wait for scopes to load
79− tryCompare(scopes, "loaded", true);
80−
81− var tabbar = findChild(dash, "tabbar");
82− verify(tabbar != undefined)
83− var dashContent = findChild(dash, "dashContent");
84− var current_index = dashContent.currentIndex;
85−
86− dash.setCurrentScope(data.tag, true /* animate */, false /* reset */);
87− compare(dashContent.currentIndex, data.shouldBeVisible ? data.visualIndex : current_index);
88− compare(tabbar.selectedIndex, data.shouldBeVisible ? data.visualIndex : current_index);
89− }
90−
9173 function test_show_scope_on_load_data() {
9274 return get_scope_data()
9375 }
@@ -109,26 +91,5 @@ Item {
10991 verify(dashContentList != undefined);
11092 tryCompare(dashContentList, "currentIndex", data.visualIndex);
11193 }
112−
113− function test_dash_bar_set_index_connection_data() {
114− return get_scope_data()
115− }
116−
117− function test_dash_bar_set_index_connection(data) {
118− if (data.shouldBeVisible == false) {
119− console.log("Not testing " + data.tag + ": not visible");
120− return;
121− }
122− // wait for scopes to load
123− tryCompare(scopes, "loaded", true);
124−
125− var tabbar = findChild(dash, "tabbar");
126− verify(tabbar != undefined)
127− var dashContent = findChild(dash, "dashContent");
128− var current_index = dashContent.currentIndex;
129−
130− tabbar.model.selectedIndex = data.visualIndex;
131− compare(dashContent.currentIndex, data.shouldBeVisible ? data.visualIndex : current_index);
132− }
13394 }
13495}
tests/qmltests/Dash/tst_DashContent.qml+4−152
@@ -47,8 +47,6 @@ Item {
4747 model: scopesModel
4848 }
4949 scopes : scopesModel
50−
51− searchHistory: SearchHistoryModel {}
5250 }
5351
5452 SignalSpy {
@@ -194,8 +192,9 @@ Item {
194192 function test_scope_mapping(data) {
195193 dashContent.setCurrentScopeAtIndex(data.index, true, false);
196194 tryCompareFunction(get_current_item_object_name, data.objectName)
197− var pageHeader = findChild(dashContent, "pageHeader");
198− compare(pageHeader.scope, scopesModel.getScope(data.index));
195+ var scopeView = findChild(dashContent, data.objectName);
196+ var pageHeader = findChild(scopeView, "innerPageHeader");
197+ compare(pageHeader.title, scopesModel.getScope(data.index).name);
199198 }
200199
201200 function test_is_active_data() {
@@ -217,67 +216,6 @@ Item {
217216 tryCompare(scopesModel.getScope(2), "isActive", data.active2);
218217 }
219218
220− function doFindMusicButton(parent) {
221− for (var i = 0; i < parent.children.length; i++) {
222− var c = parent.children[i];
223− if (UT.Util.isInstanceOf(c, "AbstractButton") && parent.x >= 0) {
224− for (var ii = 0; ii < c.children.length; ii++) {
225− var cc = c.children[ii];
226− if (UT.Util.isInstanceOf(cc, "Label") && cc.text == "Music") {
227− return c;
228− }
229− }
230− }
231− var r = doFindMusicButton(c);
232− if (r !== undefined) {
233− return r;
234− }
235− }
236− return undefined;
237− }
238−
239− function findMusicButton() {
240− // We need to find a AbstractButton that has a Label child
241− // with text Music and it's parent x is >= 0
242− var tabbar = findChild(dashContent, "tabbar");
243− return doFindMusicButton(tabbar);
244− }
245−
246− function test_tabBar_index_change() {
247− tryCompare(scopesModel, "loaded", true);
248− var tabbar = findChild(dashContent, "tabbar");
249−
250− tryCompare(dashContent, "currentIndex", 0);
251− tryCompare(tabbar, "selectedIndex", 0);
252− tryCompare(tabbar, "selectionMode", false);
253−
254− mouseClick(tabbar, units.gu(5), units.gu(5))
255−
256− tryCompare(tabbar, "selectionMode", true);
257− tryCompare(tabbar, "selectedIndex", 0);
258− tryCompare(dashContent, "currentIndex", 0);
259−
260− var button;
261− tryCompareFunction(function() { button = findMusicButton(); return button != undefined; }, true);
262− waitForRendering(button);
263−
264− tryCompareFunction(function() { return button.opacity > 0; }, true);
265− mouseClick(button, button.width / 2, button.height / 2)
266−
267− tryCompare(tabbar, "selectionMode", false);
268− tryCompare(tabbar, "selectedIndex", 1);
269− tryCompare(dashContent, "currentIndex", 1);
270− }
271−
272− function test_tabBar_listens_to_index_change() {
273− var tabbar = findChild(dashContent, "tabbar");
274− tryCompare(dashContent, "currentIndex", 0);
275− compare(tabbar.selectedIndex, 0);
276− var dashContentList = findChild(dashContent, "dashContentList");
277− dashContentList.currentIndex = 1;
278− compare(tabbar.selectedIndex, 1);
279− }
280−
281219 function checkFlickMovingAndNotInteractive()
282220 {
283221 var dashContentList = findChild(dashContent, "dashContentList");
@@ -300,93 +238,6 @@ Item {
300238 tryCompareFunction(checkFlickMovingAndNotInteractive, true);
301239 }
302240
303− function openPreview() {
304− tryCompareFunction(function() {
305− var filterGrid = findChild(dashContent, "0");
306− if (filterGrid != null) {
307− var tile = findChild(filterGrid, "delegate0");
308− return tile != null;
309− }
310− return false;
311− },
312− true);
313− var tile = findChild(findChild(dashContent, "0"), "delegate0");
314− mouseClick(tile, tile.width / 2, tile.height / 2);
315− var previewListView = findChild(dashContent, "dashContentPreviewList");
316− tryCompare(previewListView, "open", true);
317− tryCompare(previewListView, "x", 0);
318− }
319−
320− function closePreview() {
321− var closePreviewMouseArea = findChild(dashContent, "dashContentPreviewList_pageHeader_backButton");
322− mouseClick(closePreviewMouseArea, closePreviewMouseArea.width / 2, closePreviewMouseArea.height / 2);
323−
324− var previewListView = findChild(dashContent, "dashContentPreviewList");
325− tryCompare(previewListView, "open", false);
326− }
327−
328− function test_previewOpenClose() {
329− var previewListView = findChild(dashContent, "dashContentPreviewList");
330− tryCompare(previewListView, "open", false);
331−
332− var categoryListView = findChild(dashContent, "categoryListView");
333− categoryListView.positionAtBeginning();
334−
335− openPreview();
336− closePreview();
337− }
338−
339− function test_showPreviewCarousel() {
340− tryCompareFunction(function() {
341− var scope = findChild(dashContent, "MockScope1 loader");
342− if (scope != null) {
343− var dashCategory1 = findChild(scope, "dashCategory1");
344− if (dashCategory1 != null) {
345− var tile = findChild(dashCategory1, "carouselDelegate1");
346− return tile != null;
347− }
348− }
349− return false;
350− },
351− true);
352−
353− var previewListView = findChild(dashContent, "dashContentPreviewList");
354− tryCompare(previewListView, "open", false);
355−
356− var scope = findChild(dashContent, "MockScope1 loader");
357− var dashCategory1 = findChild(scope, "dashCategory1");
358− var tile = findChild(dashCategory1, "carouselDelegate1");
359− mouseClick(tile, tile.width / 2, tile.height / 2);
360− tryCompare(previewListView, "open", true);
361− tryCompare(previewListView, "x", 0);
362−
363− closePreview();
364− }
365−
366− function test_previewCycle() {
367− var categoryListView = findChild(dashContent, "categoryListView");
368− categoryListView.positionAtBeginning();
369−
370− var previewListView = findChild(dashContent, "dashContentPreviewList");
371− tryCompare(previewListView, "open", false);
372− var previewListViewList = findChild(dashContent, "dashContentPreviewList_listView");
373−
374− openPreview();
375−
376− // flick to the next previews
377− tryCompare(previewListView, "count", 15);
378− for (var i = 1; i < previewListView.count; ++i) {
379− mouseFlick(previewListView, previewListView.width - units.gu(1),
380− previewListView.height / 2,
381− units.gu(2),
382− previewListView.height / 2);
383− tryCompare(previewListViewList, "moving", false);
384− tryCompare(previewListView.currentItem, "objectName", "previewItem" + i);
385−
386− }
387− closePreview();
388− }
389−
390241 function test_carouselAspectRatio() {
391242 tryCompareFunction(function() {
392243 var scope = findChild(dashContent, "MockScope1 loader");
@@ -461,6 +312,7 @@ Item {
461312 compare(allButton.visible, true);
462313 compare(backButton.visible, true);
463314
315+ waitForRendering(departmentListView);
464316 mouseClick(allButton, 0, 0);
465317 compare(dashDepartments.showList, false);
466318 tryCompare(dashDepartments.currentDepartment, "departmentId", "middle2");
tests/qmltests/Dash/tst_GenericScopeView.qml+98−45
@@ -37,10 +37,6 @@ Item {
3737
3838 Scopes {
3939 id: scopes
40−
41− onLoadedChanged: {
42− genericScopeView.scope = scopes.getScope(2)
43− }
4440 }
4541
4642 property Item applicationManager: Item {
@@ -48,24 +44,17 @@ Item {
4844 signal mainStageFocusedApplicationChanged()
4945 }
5046
51− PageHeaderLabel {
52− id: testPageHeader
53− searchHistory: SearchHistoryModel {}
54− text: genericScopeView.scope ? genericScopeView.scope.name : ""
55− width: parent.width
56− }
57−
5847 GenericScopeView {
5948 id: genericScopeView
6049 anchors.fill: parent
61− previewListView: previewListView
62− pageHeader: testPageHeader
63− tabBarHeight: testPageHeader.implicitHeight
6450
6551 UT.UnityTestCase {
52+ id: testCase
6653 name: "GenericScopeView"
6754 when: scopes.loaded && windowShown
6855
56+ property Item previewListView: findChild(genericScopeView, "previewListView")
57+
6958 function init() {
7059 genericScopeView.scope = scopes.getScope(2)
7160 shell.width = units.gu(120)
@@ -73,37 +62,28 @@ Item {
7362 tryCompare(genericScopeView.categoryView, "contentY", 0)
7463 }
7564
76− function test_isCurrent() {
77− genericScopeView.isCurrent = true
78− testPageHeader.searchQuery = "test"
79− previewListView.open = true
80− genericScopeView.isCurrent = false
81− tryCompare(testPageHeader, "searchQuery", "")
82− tryCompare(previewListView, "open", false);
83− }
84−
8565 function test_isActive() {
8666 tryCompare(genericScopeView.scope, "isActive", false)
8767 genericScopeView.isCurrent = true
8868 tryCompare(genericScopeView.scope, "isActive", true)
89− previewListView.open = true
69+ testCase.previewListView.open = true
9070 tryCompare(genericScopeView.scope, "isActive", false)
91− previewListView.open = false
71+ testCase.previewListView.open = false
9272 tryCompare(genericScopeView.scope, "isActive", true)
9373 genericScopeView.isCurrent = false
9474 tryCompare(genericScopeView.scope, "isActive", false)
9575 }
9676
9777 function test_showDash() {
98− previewListView.open = true;
78+ testCase.previewListView.open = true;
9979 scopes.getScope(2).showDash();
100− tryCompare(previewListView, "open", false);
80+ tryCompare(testCase.previewListView, "open", false);
10181 }
10282
10383 function test_hideDash() {
104− previewListView.open = true;
84+ testCase.previewListView.open = true;
10585 scopes.getScope(2).hideDash();
106− tryCompare(previewListView, "open", false);
86+ tryCompare(testCase.previewListView, "open", false);
10787 }
10888
10989 function test_searchQuery() {
@@ -170,14 +150,6 @@ Item {
170150
171151 categoryListView.positionAtBeginning();
172152
173− // wait for the header0 to be on its position
174− tryCompareFunction(
175− function() {
176− var header0 = findChild(genericScopeView, "dashSectionHeader0")
177− return header0.y == testPageHeader.height;
178− },
179− true);
180−
181153 var header0 = findChild(genericScopeView, "dashSectionHeader0")
182154 var category0 = findChild(genericScopeView, "dashCategory0")
183155 mouseClick(header0, header0.width / 2, header0.height / 2);
@@ -204,14 +176,95 @@ Item {
204176 mouseClick(header0, header0.width / 2, header0.height / 2);
205177 tryCompare(category, "filtered", true);
206178 }
207− }
208− }
209179
210− PreviewListView {
211− id: previewListView
212− anchors.fill: parent
213− visible: false
214− pageHeader: testPageHeader
215− scope: genericScopeView.scope
180+ function openPreview() {
181+ tryCompareFunction(function() {
182+ var filterGrid = findChild(genericScopeView, "0");
183+ if (filterGrid != null) {
184+ var tile = findChild(filterGrid, "delegate0");
185+ return tile != null;
186+ }
187+ return false;
188+ },
189+ true);
190+ var tile = findChild(findChild(genericScopeView, "0"), "delegate0");
191+ mouseClick(tile, tile.width / 2, tile.height / 2);
192+ tryCompare(testCase.previewListView, "open", true);
193+ tryCompare(testCase.previewListView, "x", 0);
194+ }
195+
196+ function closePreview() {
197+ var closePreviewMouseArea = findChild(genericScopeView, "innerPageHeader");
198+ mouseClick(closePreviewMouseArea, units.gu(2), units.gu(2));
199+
200+ tryCompare(testCase.previewListView, "open", false);
201+ }
202+
203+ function test_previewOpenClose() {
204+ tryCompare(testCase.previewListView, "open", false);
205+
206+ var categoryListView = findChild(genericScopeView, "categoryListView");
207+ categoryListView.positionAtBeginning();
208+
209+ openPreview();
210+ closePreview();
211+ }
212+
213+ function test_showPreviewCarousel() {
214+ tryCompareFunction(function() {
215+ var dashCategory1 = findChild(genericScopeView, "dashCategory1");
216+ if (dashCategory1 != null) {
217+ var tile = findChild(dashCategory1, "carouselDelegate1");
218+ return tile != null;
219+ }
220+ return false;
221+ },
222+ true);
223+
224+ tryCompare(testCase.previewListView, "open", false);
225+
226+ var dashCategory1 = findChild(genericScopeView, "dashCategory1");
227+ var tile = findChild(dashCategory1, "carouselDelegate1");
228+ mouseClick(tile, tile.width / 2, tile.height / 2);
229+ tryCompare(tile, "explicitlyScaled", true);
230+ mouseClick(tile, tile.width / 2, tile.height / 2);
231+ tryCompare(testCase.previewListView, "open", true);
232+ tryCompare(testCase.previewListView, "x", 0);
233+
234+ closePreview();
235+ }
236+
237+ function test_previewCycle() {
238+ var categoryListView = findChild(genericScopeView, "categoryListView");
239+ categoryListView.positionAtBeginning();
240+
241+ tryCompare(testCase.previewListView, "open", false);
242+ var previewListViewList = findChild(previewListView, "listView");
243+
244+ openPreview();
245+
246+ // flick to the next previews
247+ tryCompare(testCase.previewListView, "count", 15);
248+ for (var i = 1; i < testCase.previewListView.count; ++i) {
249+ mouseFlick(testCase.previewListView, testCase.previewListView.width - units.gu(1),
250+ testCase.previewListView.height / 2,
251+ units.gu(2),
252+ testCase.previewListView.height / 2);
253+ tryCompare(previewListViewList, "moving", false);
254+ tryCompare(testCase.previewListView.currentItem, "objectName", "previewItem" + i);
255+
256+ }
257+ closePreview();
258+ }
259+
260+ function test_haeder_logo() {
261+ genericScopeView.scope = scopes.getScope(3);
262+
263+ var image = findChild(genericScopeView, "titleImage");
264+ verify(image, "Could not find the title image");
265+ compare(image.source, Qt.resolvedUrl("../Components/tst_PageHeader/logo-ubuntu-orange.svg"), "Title image has the wrong source");
266+
267+ }
268+ }
216269 }
217270}
tests/qmltests/Launcher/tst_Launcher.qml+2−2
@@ -115,7 +115,7 @@ Item {
115115 /* If I click on the icon of an application on the launcher
116116 Launcher::launcherApplicationSelected signal should be emitted with the
117117 corresponding desktop file. E.g. clicking on phone icon should yield
118− launcherApplicationSelected("[...]phone-app.desktop") */
118+ launcherApplicationSelected("[...]dialer-app.desktop") */
119119 function test_clickingOnAppIconCausesSignalEmission() {
120120 launcher.lastSelectedApplication = ""
121121
@@ -131,7 +131,7 @@ Item {
131131 mouseClick(appIcon, appIcon.width/2, appIcon.height/2)
132132
133133 tryCompare(launcher, "lastSelectedApplication",
134− "phone-app")
134+ "dialer-app")
135135
136136 // Tapping on an application icon also dismisses the launcher
137137 revealer.waitUntilLauncherDisappears()
tests/qmltests/Notifications/tst_VisualSnapDecisionsQueue.qml+1−1
@@ -67,7 +67,7 @@ Row {
6767 summary: "Incoming call",
6868 body: "Frank Zappa\n+44 (0)7736 027340",
6969 icon: "../graphics/avatars/funky.png",
70− secondaryIcon: "../graphics/applicationIcons/phone-app.png",
70+ secondaryIcon: "../graphics/applicationIcons/dialer-app.png",
7171 actions: [{ id: "pickup_id", label: "Pick up"},
7272 { id: "decline_1_id", label: "Decline"},
7373 { id: "decline_2_id", label: "Can't talk now, what's up?"},
tests/qmltests/Panel/tst_ActiveCallHint.qmlnew file+165
@@ -0,0 +1,165 @@
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 General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.0
18+import QtTest 1.0
19+import Unity.Test 0.1 as UT
20+import Ubuntu.Telephony 0.1 as Telephony
21+import Unity.Application 0.1
22+import ".."
23+import "../../../qml/Panel"
24+
25+Item {
26+ width: units.gu(40)
27+ height: units.gu(20)
28+
29+ Telephony.CallEntry {
30+ id: call1
31+ phoneNumber: "+447812221111"
32+ }
33+
34+ Telephony.CallEntry {
35+ id: call2
36+ phoneNumber: "+447812221112"
37+ }
38+
39+ Telephony.CallEntry {
40+ id: call3
41+ phoneNumber: "+447812221113"
42+ }
43+
44+ ActiveCallHint {
45+ id: callHint
46+ anchors {
47+ top: parent.top
48+ left:parent.left
49+ right:parent.right
50+ }
51+ height: units.gu(3)
52+ labelSwitchInterval: 2000
53+ }
54+
55+ Component.onCompleted: {
56+ contactWactherData.contactData = {
57+ "+447812221113": {
58+ "alias": "Bob's Uncle"
59+ }
60+ };
61+ callManager.foregroundCall = call3;
62+ }
63+
64+ UT.UnityTestCase {
65+ name: "ActiveCallHint"
66+ when: windowShown
67+
68+ function init() {
69+ callManager.foregroundCall = null;
70+ callManager.backgroundCall = null;
71+ callHint.labelSwitchInterval = 300;
72+
73+ ApplicationManager.stopApplication("dialer-app");
74+ }
75+
76+ function test_activeHint_data() {
77+ return [
78+ { tag: "noCall-callNotVisible", dialer: false, call: null, visible: false, expected: false },
79+ { tag: "noCall-callVisible", dialer: false, call: null, visible: true, expected: false },
80+ { tag: "hasCall-callNotVisible", dialer: false, call: call1, visible: false, expected: true },
81+ { tag: "hasCall-callVisible", dialer: false, call: call1, visible: true, expected: true },
82+
83+ { tag: "dialerNotFocused-noCall-callNotVisible", dialer: true, focused: false, call: null, visible: false, expected: false },
84+ { tag: "dialerNotFocused-noCall-callVisible", dialer: true, focused: false, call: null, visible: true, expected: false },
85+ { tag: "dialerNotFocused-hasCall-callNotVisible", dialer: true, focused: false, call: call1, visible: false, expected: true },
86+ { tag: "dialerNotFocused-hasCall-callVisible", dialer: true, focused: false, call: call1, visible: true, expected: true },
87+
88+ { tag: "dialerFocused-noCall-callNotVisible", dialer: true, focused: true, call: null, visible: false, expected: false },
89+ { tag: "dialerFocused-noCall-callVisible", dialer: true, focused: true, call: null, visible: true, expected: true },
90+ { tag: "dialerFocused-hasCall-callNotVisible", dialer: true, focused: true, call: call1, visible: false, expected: false },
91+ { tag: "dialerFocused-hasCall-callVisible", dialer: true, focused: true, call: call1, visible: true, expected: true },
92+ ];
93+ }
94+
95+ function test_activeHint(data) {
96+ if (data.dialer) {
97+ var application = ApplicationManager.startApplication("dialer-app");
98+ tryCompare(ApplicationManager, "focusedApplicationId", "dialer-app");
99+ tryCompare(application, "state", ApplicationInfo.Running);
100+
101+ if (!data.focused) { ApplicationManager.unfocusCurrentApplication(); }
102+ }
103+ callManager.foregroundCall = data.call;
104+ callManager.callIndicatorVisible = data.visible;
105+
106+ compare(callHint.active, data.expected, "Call hint should be active when callIndicatorVisible=true");
107+ }
108+
109+ function test_currentCall_data() {
110+ return [
111+ { tag: "empty", foreground: null, background: null, active: false, label: "" },
112+ { tag: "foreground", foreground: call1, background: null, active: true, label: "+447812221111" },
113+ { tag: "background", foreground: null, background: call2, active: true, label: "+447812221112" },
114+ { tag: "multiple", foreground: call1, background: call2, active: true, label: "+447812221111" },
115+ ];
116+ }
117+
118+ function test_currentCall(data) {
119+ callManager.foregroundCall = data.foreground;
120+ callManager.backgroundCall = data.background;
121+
122+ var contactLabel = findChild(callHint, "contactLabel");
123+ verify(contactLabel !== null);
124+
125+ compare(contactLabel.text, data.label, "Contact label does not match call");
126+ }
127+
128+ function test_changeContactData() {
129+ callManager.backgroundCall = call3;
130+
131+ var contactLabel = findChild(callHint, "contactLabel");
132+ verify(contactLabel !== null);
133+
134+ contactWactherData.contactData = { "+447812221113": { "alias": "Bob's Uncle" } };
135+ compare(contactLabel.text, "Bob's Uncle", "Contact label does not match call");
136+
137+ contactWactherData.contactData = { "+447812221113": { "alias": "Freddy" } };
138+ compare(contactLabel.text, "Freddy", "Contact label does not match call");
139+ }
140+
141+ function test_timeLapse() {
142+ callManager.backgroundCall = call3;
143+
144+ var timeLabel = findChild(callHint, "timeLabel");
145+ verify(timeLabel !== null);
146+
147+ var currentLabel = timeLabel.text;
148+ tryCompareFunction(function() { return timeLabel.text !== currentLabel }, true);
149+ currentLabel = timeLabel.text;
150+ tryCompareFunction(function() { return timeLabel.text !== currentLabel }, true);
151+ }
152+
153+ function test_displayedLabelChangesOverTime() {
154+ callManager.backgroundCall = call3;
155+
156+ var labelPathView = findChild(callHint, "labelPathView");
157+ verify(labelPathView !== null);
158+
159+ var currentOffset = labelPathView.offset
160+ tryCompareFunction(function() { return labelPathView.offset !== currentOffset }, true);
161+ currentOffset = labelPathView.offset
162+ tryCompareFunction(function() { return labelPathView.offset !== currentOffset }, true);
163+ }
164+ }
165+}
tests/qmltests/Panel/tst_Indicators.qml+10−21
@@ -17,6 +17,7 @@
1717import QtQuick 2.0
1818import QtTest 1.0
1919import Unity.Test 0.1 as UT
20+import Ubuntu.Components 0.1 as UC
2021import ".."
2122import "../../../qml/Panel"
2223import "../../../qml/Components"
@@ -45,13 +46,12 @@ Item {
4546 shown: false
4647 profile: "test1"
4748
48− openedHeight: parent.height - click_me.height
49+ openedHeight: parent.height - button.height
4950 }
5051
51− // Just a rect for clicking to open the indicators.
52− Rectangle {
53− id: click_me
54− color: "red"
52+ UC.Button {
53+ id: button
54+ text: indicators.shown ? "Hide" : "Show"
5555 anchors {
5656 bottom: shell.bottom
5757 left: parent.left
@@ -59,22 +59,11 @@ Item {
5959 }
6060 height: 50
6161
62− Text {
63− text: "Click Me"
64− horizontalAlignment: Text.AlignHCenter
65− verticalAlignment: Text.AlignVCenter
66− anchors.fill: parent
67−
68− MouseArea {
69− anchors.fill: parent
70−
71− onClicked: {
72− if (!indicators.shown) {
73− indicators.show();
74− } else {
75− indicators.hide();
76− }
77− }
62+ onClicked: {
63+ if (!indicators.shown) {
64+ indicators.show();
65+ } else {
66+ indicators.hide();
7867 }
7968 }
8069 }
tests/qmltests/Panel/tst_Panel.qml+147−82
@@ -17,6 +17,8 @@
1717import QtQuick 2.0
1818import QtTest 1.0
1919import Unity.Test 0.1 as UT
20+import Ubuntu.Components 0.1 as UC
21+import Ubuntu.Telephony 0.1 as Telephony
2022import ".."
2123import "../../../qml/Panel"
2224
@@ -30,42 +32,104 @@ Item {
3032 width: units.gu(40)
3133 height: units.gu(80)
3234
33− property bool searchClicked: false
34−
35− Connections {
36− target: panel
37− onSearchClicked: searchClicked = true
38− }
39−
4035 Panel {
4136 id: panel
42− anchors.fill: parent
37+ anchors {
38+ left: parent.left
39+ right: parent.right
40+ }
41+ height: parent.height - row.height
42+ fullscreenMode: false
4343
4444 indicators {
4545 profile: "test1"
46+ panelHeight: units.gu(5)
47+ }
48+ callHint {
49+ height: units.gu(4)
4650 }
51+
52+ property real panelAndSeparatorHeight: panel.indicators.panelHeight + units.dp(2)
53+ }
54+
55+
56+ Row {
57+ id: row
58+ anchors {
59+ bottom: shell.bottom
60+ left: parent.left
61+ right: parent.right
62+ }
63+ height: 50
64+
65+ UC.Button {
66+ text: panel.indicators.shown ? "Hide" : "Show"
67+ anchors {
68+ top: parent.top
69+ bottom: parent.bottom
70+ }
71+ width: parent.width/3
72+
73+ onClicked: {
74+ if (panel.indicators.shown) {
75+ panel.indicators.hide();
76+ } else {
77+ panel.indicators.show();
78+ }
79+ }
80+ }
81+
82+ UC.Button {
83+ text: panel.fullscreenMode ? "Maximize" : "FullScreen"
84+ anchors {
85+ top: parent.top
86+ bottom: parent.bottom
87+ }
88+ width: parent.width/3
89+
90+ onClicked: panel.fullscreenMode = !panel.fullscreenMode
91+ }
92+
93+ UC.Button {
94+ text: callManager.hasCalls ? "Called" : "No Calls"
95+ anchors {
96+ top: parent.top
97+ bottom: parent.bottom
98+ }
99+ width: parent.width/3
100+
101+ onClicked: {
102+ if (callManager.foregroundCall) {
103+ callManager.foregroundCall = null;
104+ } else {
105+ callManager.foregroundCall = phoneCall;
106+ }
107+ }
108+ }
109+ }
110+
111+ Telephony.CallEntry {
112+ id: phoneCall
113+ phoneNumber: "+447812221111"
47114 }
48115
49116 UT.UnityTestCase {
50117 name: "Panel"
51118 when: windowShown
52119
53− function get_window_data() {
54− return [
55− {tag: "pinned", fullscreenFlag: false, alreadyOpen: false },
56− {tag: "fullscreen", fullscreenFlag: true, alreadyOpen: false },
57− {tag: "pinned-alreadyOpen", fullscreenFlag: false, alreadyOpen: true },
58− {tag: "fullscreen-alreadyOpen", fullscreenFlag: true, alreadyOpen: true }
59− ];
60− }
61−
62120 function init() {
63121 panel.indicators.initialise();
122+ panel.fullscreenMode = false;
64123
65− searchClicked = false;
66124 panel.indicators.hide();
125+ // Wait for animation to complete
67126 tryCompare(panel.indicators.hideAnimation, "running", false);
68− tryCompare(panel.indicators, "state", "initial");
127+ callManager.foregroundCall = null;
128+
129+ // Wait for the indicators to get into position.
130+ // (switches between normal and fullscreen modes are animated)
131+ var indicatorArea = findChild(panel, "indicatorArea");
132+ tryCompare(indicatorArea, "y", 0);
69133 }
70134
71135 function get_indicator_item(index) {
@@ -88,46 +152,59 @@ Item {
88152 // Pressing on the indicator panel should activate the indicator hints
89153 // and expose a portion of the conent.
90154 function test_hint() {
91− panel.fullscreenMode = false;
92− // Wait for the indicators to get into position.
93− // (switches between normal and fullscreen modes are animated)
94− tryCompare(panel.indicators, "y", 0);
95−
96155 var indicatorItemCoord = get_indicator_item_position(0);
97156
98− touchPress(panel, indicatorItemCoord.x, panel.panelHeight / 2);
157+ touchPress(panel, indicatorItemCoord.x, panel.indicators.panelHeight / 2);
99158
100159 // hint animation should be run, meaning that indicators will move downwards
101160 // by hintValue pixels without any drag taking place
102− tryCompare(panel.indicators, "height",
103− panel.indicators.panelHeight + panel.indicators.hintValue);
161+ tryCompareFunction(function() { return panel.indicators.height },
162+ panel.indicators.panelHeight + panel.indicators.hintValue);
104163 tryCompare(panel.indicators, "partiallyOpened", true);
105164 tryCompare(panel.indicators, "fullyOpened", false);
106165
107− touchRelease(panel, indicatorItemCoord.x, panel.panelHeight/2);
166+ touchRelease(panel, indicatorItemCoord.x, panel.indicators.panelHeight/2);
108167 }
109168
110169 // Pressing on the top edge of the screen should have no effect if the panel
111− // is hidden (!pinned), which is the case when a fullscreen app is being shown
170+ // is hidden (fullscreen), which is the case when a fullscreen app is being shown
112171 function test_noHintOnFullscreenMode() {
113172 panel.fullscreenMode = true;
114173 // Wait for the indicators to get into position.
115174 // (switches between normal and fullscreen modes are animated)
116− tryCompare(panel.indicators, "y", -panel.panelHeight);
175+ var indicatorArea = findChild(panel, "indicatorArea");
176+ tryCompare(indicatorArea, "y", -panel.panelHeight);
117177
118178 var indicatorItemCoord = get_indicator_item_position(0);
119179
120− touchPress(panel, indicatorItemCoord.x, panel.panelHeight / 2);
180+ touchPress(panel, indicatorItemCoord.x, panel.indicators.panelHeight / 2);
181+
182+ // Give some time for a hint animation to change things, if any
183+ wait(500);
184+
185+ // no hint animation when fullscreen
186+ compare(panel.indicators.partiallyOpened, false,
187+ "Indicator should not be partially opened when panel is pressed in" +
188+ " fullscreenmode");
189+ compare(panel.indicators.fullyOpened, false, "Indicator should not be partially" +
190+ " opened when panel is pressed in fullscreenmode");
191+
192+ touchRelease(panel, indicatorItemCoord.x, panel.panelHeight/2);
193+ }
194+
195+ // Pressing on the top edge of the indicator should have no effect if the panel
196+ // has an active call
197+ function test_noHintOnActiveCall() {
198+ callManager.foregroundCall = phoneCall;
199+
200+ var indicatorItemCoord = get_indicator_item_position(0);
201+
202+ touchPress(panel, indicatorItemCoord.x, panel.callHint.height + panel.indicators.panelHeight / 2);
121203
122204 // Give some time for a hint animation to change things, if any
123205 wait(500);
124206
125207 // no hint animation when fullscreen
126− compare(panel.indicators.y, -panel.panelHeight);
127− var indicatorRow = findChild(panel.indicators, "indicatorRow");
128− verify(indicatorRow !== null);
129− compare(indicatorRow.y, 0);
130− compare(panel.indicators.height, panel.indicators.panelHeight);
131208 compare(panel.indicators.partiallyOpened, false,
132209 "Indicator should not be partially opened when panel is pressed in" +
133210 " fullscreenmode");
@@ -137,34 +214,47 @@ Item {
137214 touchRelease(panel, indicatorItemCoord.x, panel.panelHeight/2);
138215 }
139216
140− function test_drag_show_data() { return get_window_data(); }
217+ function test_drag_show_data() {
218+ return [
219+ { tag: "pinned", fullscreenFlag: false, alreadyOpen: false, call: null,
220+ indicatorY: 0 },
221+ { tag: "fullscreen", fullscreenFlag: true, alreadyOpen: false, call: null,
222+ indicatorY: -panel.panelAndSeparatorHeight },
223+ { tag: "pinned-alreadyOpen", fullscreenFlag: false, alreadyOpen: true, call: null,
224+ indicatorY: 0 },
225+ { tag: "fullscreen-alreadyOpen", fullscreenFlag: true, alreadyOpen: true, call: null,
226+ indicatorY: 0 },
227+ { tag: "pinned-callActive", fullscreenFlag: false, alreadyOpen: false, call: phoneCall,
228+ indicatorY: 0},
229+ { tag: "fullscreen-callActive", fullscreenFlag: true, alreadyOpen: false, call: phoneCall,
230+ indicatorY: -panel.panelAndSeparatorHeight }
231+ ];
232+ }
141233
142234 // Dragging from a indicator item in the panel will gradually expose the
143235 // indicators, first by running the hint animation, then after dragging down will
144236 // expose more of the panel, binding it to the selected indicator and opening it's menu.
145237 function test_drag_show(data) {
146238 panel.fullscreenMode = data.fullscreenFlag;
239+ callManager.foregroundCall = data.call;
240+
147241 if (data.alreadyOpen) {
148242 panel.indicators.show();
149243 tryCompare(panel.indicators, "fullyOpened", true);
150244 }
151245
152− var indicatorRow = findChild(panel.indicators, "indicatorRow");
246+ var indicatorRow = findChild(panel.indicators, "indicatorRow");
153247 verify(indicatorRow !== null);
154248
155249 var menuContent = findChild(panel.indicators, "menuContent");
156− verify(indicatorRow !== null);
250+ verify(menuContent !== null);
157251
158− var menuContent = findChild(panel.indicators, "menuContent");
159− verify(indicatorRow !== null);
252+ var indicatorArea = findChild(panel, "indicatorArea");
253+ verify(indicatorArea !== null);
160254
161255 // Wait for the indicators to get into position.
162256 // (switches between normal and fullscreen modes are animated)
163− if (data.fullscreenFlag) {
164− tryCompare(panel.indicators, "y", -panel.panelHeight);
165− } else {
166− tryCompare(panel.indicators, "y", 0);
167− }
257+ tryCompareFunction(function() { return indicatorArea.y }, data.indicatorY);
168258
169259 // do this for each indicator item
170260 for (var i = 0; i < indicatorRow.row.count; i++) {
@@ -178,12 +268,12 @@ Item {
178268 var indicatorItemCoord = get_indicator_item_position(i);
179269
180270 touchPress(panel,
181− indicatorItemCoord.x, panel.panelHeight / 2);
271+ indicatorItemCoord.x, panel.indicators.panelHeight / 2);
182272
183273 // 1) Drag the mouse down
184274 touchFlick(panel,
185− indicatorItemCoord.x, panel.panelHeight / 2,
186− indicatorItemCoord.x, panel.height * 0.8,
275+ indicatorItemCoord.x, panel.indicators.panelHeight / 2,
276+ indicatorItemCoord.x, panel.height,
187277 false /* beginTouch */, false /* endTouch */);
188278
189279 // Indicators height should follow the drag, and therefore increase accordingly.
@@ -192,7 +282,7 @@ Item {
192282 function() {return panel.indicators.height >= panel.height * 0.5},
193283 true);
194284
195− touchRelease(panel, indicatorItemCoord.x, panel.height * 0.8);
285+ touchRelease(panel, indicatorItemCoord.x, panel.height);
196286
197287 compare(indicatorRow.currentItem, indicatorItem,
198288 "Incorrect item activated at position " + i);
@@ -200,43 +290,18 @@ Item {
200290
201291 // init for next indicatorItem
202292 if (!data.alreadyOpen) {
203− init();
293+ panel.indicators.hide();
294+ tryCompare(panel.indicators.hideAnimation, "running", false);
295+ tryCompare(panel.indicators, "state", "initial");
204296 }
205297 }
206298 }
207299
208− function test_search_click_when_visible() {
209− panel.fullscreenMode = false;
210− panel.searchVisible = true;
211−
212− var searchIndicator = findChild(panel, "search");
213− verify(searchIndicator !== null);
214−
215− tap(searchIndicator, 1, 1);
216−
217− compare(searchClicked, true,
218− "Tapping search indicator while it was enabled did not emit searchClicked signal");
219− }
220−
221− function test_search_click_when_not_visible() {
222− panel.fullscreenMode = false;
223− panel.searchVisible = false;
224−
225− var searchIndicator = findChild(panel, "search");
226− verify(searchIndicator !== null);
227−
228− tap(searchIndicator, 1, 1);
229−
230− compare(searchClicked, false,
231− "Tapping search indicator while it was not visible emitted searchClicked signal");
232− }
233−
234300 // Test the vertical velocity check when flicking the indicators open at an angle.
235301 // If the vertical velocity is above a specific point, we shouldnt change active indicators
236302 // if the x position changes
237303 function test_vertical_velocity_detector() {
238304 panel.fullscreenMode = false;
239− panel.searchVisible = false;
240305
241306 var indicatorRow = findChild(panel.indicators, "indicatorRow");
242307 verify(indicatorRow !== null);
@@ -249,19 +314,19 @@ Item {
249314 var indicatorItemCoordNext = get_indicator_item_position(indicatorRow.row.count - 1);
250315
251316 touchPress(panel,
252− indicatorItemCoordFirst.x, panel.panelHeight / 2);
317+ indicatorItemCoordFirst.x, panel.indicators.panelHeight / 2);
253318
254319 // 1) Drag the mouse down to hint a bit
255320 touchFlick(panel,
256− indicatorItemCoordFirst.x, panel.panelHeight / 2,
257− indicatorItemCoordFirst.x, panel.panelHeight * 2,
321+ indicatorItemCoordFirst.x, panel.indicators.panelHeight / 2,
322+ indicatorItemCoordFirst.x, panel.indicators.panelHeight * 2,
258323 false /* beginTouch */, false /* endTouch */);
259324
260325 tryCompare(indicatorRow, "currentItem", indicatorItemFirst)
261326
262327 // 1) Flick mouse down to bottom
263328 touchFlick(panel,
264− indicatorItemCoordFirst.x, panel.panelHeight * 2,
329+ indicatorItemCoordFirst.x, panel.indicators.panelHeight * 2,
265330 indicatorItemCoordNext.x, panel.height,
266331 false /* beginTouch */, true /* endTouch */,
267332 units.gu(10) /* speed */, 30 /* iterations */); // more samples needed for accurate velocity
tests/qmltests/tst_Shell.qml+1−37
@@ -104,7 +104,7 @@ Item {
104104 killApps(ApplicationManager);
105105
106106 var dashContent = findChild(shell, "dashContent");
107− dashContent.previewOpen = false;
107+ dashContent.closePreview();
108108
109109 var dashHome = findChild(shell, "clickscope loader");
110110 swipeUntilScopeViewIsReached(dashHome);
@@ -510,42 +510,6 @@ Item {
510510 tryCompare(dash, "shown", data.expectedShown);
511511 }
512512
513− function test_searchIndicatorHidesOnAppFocus() {
514− var searchIndicator = findChild(shell, "container")
515− tryCompare(searchIndicator, "opacity", 1)
516− dragLauncherIntoView();
517−
518− // Launch an app from the launcher
519− tapOnAppIconInLauncher();
520− waitUntilApplicationWindowIsFullyVisible();
521−
522− tryCompare(searchIndicator, "opacity", 0);
523− }
524−
525− function test_searchIndicatorHidesOnGreeterShown() {
526− var searchIndicator = findChild(shell, "container")
527− var greeter = findChild(shell, "greeter");
528−
529− tryCompare(searchIndicator, "opacity", 1)
530−
531− greeter.show()
532− tryCompare(greeter, "shown", true)
533− tryCompare(searchIndicator, "opacity", 0)
534− }
535−
536− function test_searchIndicatorHideOnPreviewShown() {
537− var searchIndicator = findChild(shell, "container");
538− var dashContent = findChild(shell, "dashContent");
539−
540− verify(dashContent != null);
541−
542− tryCompare(searchIndicator, "opacity", 1);
543−
544− dashContent.previewOpen = true;
545−
546− tryCompare(searchIndicator, "opacity", 0);
547− }
548−
549513 function test_focusRequestedHidesGreeter() {
550514 var greeter = findChild(shell, "greeter")
551515