on xenial help sign in
merge el trunko
commit26b576143888a0ab8d4128f01b9f1c5b16f5b240 authorAndrea Cimitan <andrea.cimitan@gmail.com> dateFri 20 May 2016, 12:37 (10 years ago) parent172c2f00365d75
206 files changed+2374−1580
CMakeLists.txt+1−1 debian/changelog+54 debian/control+4−4 debian/unity8-private.install+1−1 plugins/CMakeLists.txt+1−1 plugins/Dash/CardCreator.js+44−1 plugins/Dash/CardSocialActions.qml+94 plugins/Dash/qmldir+1 plugins/ScreenGrabber/CMakeLists.txt−13 plugins/ScreenGrabber/qmldir−3 plugins/ScreenGrabber/screengrabber.cpp−115 plugins/ScreenGrabber/screengrabber.h−49 plugins/ScreenshotDirectory/CMakeLists.txt+9 plugins/ScreenGrabber/ScreenGrabber.qmltypes → plugins/ScreenshotDirectory/ScreenGrabber.qmltypes plugins/ScreenshotDirectory/ScreenshotDirectory.cpp+64 plugins/Utils/windowscreenshotprovider.h → plugins/ScreenshotDirectory/ScreenshotDirectory.h+17−9 plugins/ScreenGrabber/plugin.cpp → plugins/ScreenshotDirectory/plugin.cpp+5−7 plugins/ScreenGrabber/plugin.h → plugins/ScreenshotDirectory/plugin.h+5−7 plugins/ScreenshotDirectory/qmldir+2 plugins/Utils/CMakeLists.txt−1 plugins/Utils/plugin.cpp−8 plugins/Utils/plugin.h−1 plugins/Utils/windowscreenshotprovider.cpp−59 po/aa.po+6−6 po/am.po+6−6 po/ar.po+6−6 po/ast.po+43−35 po/az.po+6−6 po/be.po+6−6 po/bg.po+6−6 po/bn.po+6−6 po/br.po+6−6 po/bs.po+6−6 po/ca.po+6−6 po/ca@valencia.po+6−6 po/ce.po+6−6 po/ckb.po+6−6 po/cs.po+6−6 po/cy.po+6−6 po/da.po+6−6 po/de.po+12−10 po/el.po+6−6 po/en_AU.po+6−6 po/en_GB.po+9−9 po/eo.po+6−6 po/es.po+8−8 po/eu.po+6−6 po/fa.po+6−6 po/fi.po+6−6 po/fo.po+6−6 po/fr.po+11−11 po/ga.po+6−6 po/gd.po+8−8 po/gl.po+8−8 po/gv.po+6−6 po/he.po+6−6 po/hi.po+6−6 po/hr.po+73−10 po/hu.po+8−8 po/hy.po+6−6 po/ia.po+8−8 po/id.po+6−6 po/is.po+6−6 po/it.po+10−10 po/ja.po+6−6 po/km.po+6−6 po/kn.po+6−6 po/ko.po+6−6 po/ku.po+6−6 po/ky.po+6−6 po/lo.po+6−6 po/lt.po+6−6 po/lv.po+6−6 po/ml.po+6−6 po/mr.po+6−6 po/ms.po+6−6 po/my.po+6−6 po/nb.po+6−6 po/ne.po+6−6 po/nl.po+6−6 po/nn.po+6−6 po/oc.po+6−6 po/or.po+6−6 po/pa.po+6−6 po/pl.po+11−11 po/pt.po+8−8 po/pt_BR.po+6−6 po/ro.po+6−6 po/ru.po+6−6 po/shn.po+6−6 po/si.po+6−6 po/sk.po+55−10 po/sl.po+9−9 po/sq.po+6−6 po/sr.po+10−9 po/sv.po+6−6 po/sw.po+6−6 po/ta.po+6−6 po/te.po+6−6 po/th.po+6−6 po/tr.po+6−6 po/ug.po+6−6 po/uk.po+6−6 po/unity8.pot+4−4 po/ur.po+6−6 po/uz.po+6−6 po/vi.po+6−6 po/wo.po+6−6 po/xh.po+6−6 po/zh_CN.po+6−6 po/zh_HK.po+6−6 po/zh_TW.po+6−6 qml/Components/ScreenGrabber.qml → qml/Components/ItemGrabber.qml+27−17 qml/Components/WindowScreenshot.qml → qml/Components/ItemSnapshot.qml+13−3 qml/Components/NotificationAudio.qml+7−3 qml/Components/VirtualTouchPad.qml+1−1 qml/Dash/CardGrid.qml+1 qml/Dash/CardHorizontalList.qml+1 qml/Dash/CardTool.qml+23−7 qml/Dash/CardVerticalJournal.qml+1 qml/Dash/DashRenderer.qml+6 qml/Dash/Filters/FilterExpandableWidget.qml+96 qml/Dash/Filters/FilterWidget.qml+3 qml/Dash/Filters/FilterWidgetFactory.qml+2−1 qml/Dash/GenericScopeView.qml+9 qml/Dash/Previews/PreviewActionCombo.qml+1−1 qml/Dash/Previews/PreviewActions.qml+8−7 qml/Dash/Previews/PreviewIconActions.qml+15 qml/Dash/Previews/PreviewZoomableImage.qml+13−8 qml/DisabledScreenNotice.qml+4−4 qml/OrientedShell.qml+7−7 qml/Panel/IndicatorsMenu.qml+20−10 qml/Rotation/HalfLoopRotationAnimation.qml+2−1 qml/Rotation/ImmediateRotationAction.qml+11−22 qml/Rotation/NinetyRotationAnimation.qml+14−16 qml/Rotation/RotationStates.qml+25−5 qml/Rotation/UpdateShellTransformations.qml+42 qml/Shell.qml+11−5 qml/Stages/AbstractStage.qml+8−7 qml/Stages/ApplicationWindow.qml+31−1 qml/Stages/DesktopStage.qml+7 qml/Stages/PhoneStage.qml+2 qml/Stages/ShimStage.qml−1 qml/Stages/SurfaceContainer.qml+4−63 qml/Stages/TabletStage.qml+3 src/SecondaryWindow.cpp+9 src/ShellApplication.cpp+6 tests/mocks/Unity/Application/ApplicationInfo.cpp+8 tests/mocks/Unity/Application/ApplicationInfo.h+2 tests/mocks/Unity/Application/MirSurface.cpp+1−21 tests/mocks/Unity/Application/MirSurface.h−5 tests/mocks/Unity/Application/MirSurfaceListModel.cpp+28 tests/mocks/Unity/Application/MirSurfaceListModel.h+5 tests/mocks/Unity/CMakeLists.txt+3−1 tests/mocks/Unity/fake_categories.cpp+4−1 tests/mocks/Unity/fake_expandablefilterwidget.cpp+53 tests/mocks/Unity/fake_expandablefilterwidget.h+48 tests/mocks/Unity/fake_filters.cpp+19−8 tests/mocks/Unity/fake_filters.h+4−4 tests/mocks/Unity/fake_resultsmodel.cpp+2 tests/mocks/Unity/fake_scope.cpp+2 tests/mocks/Utils/CMakeLists.txt−1 tests/mocks/Utils/plugin.cpp−8 tests/mocks/Utils/plugin.h−1 tests/plugins/CMakeLists.txt−1 tests/plugins/Dash/cardcreator/1.res+1−1 tests/plugins/Dash/cardcreator/1.res.cardcreator+1−1 tests/plugins/Dash/cardcreator/10.res+1−1 tests/plugins/Dash/cardcreator/10.res.cardcreator+1−1 tests/plugins/Dash/cardcreator/11.res+1−1 tests/plugins/Dash/cardcreator/11.res.cardcreator+1−1 tests/plugins/Dash/cardcreator/12.res+139 tests/plugins/Dash/cardcreator/12.res.cardcreator+138 tests/plugins/Dash/cardcreator/12.tst+3 tests/plugins/Dash/cardcreator/2.res+1−1 tests/plugins/Dash/cardcreator/2.res.cardcreator+1−1 tests/plugins/Dash/cardcreator/3.res+1−1 tests/plugins/Dash/cardcreator/3.res.cardcreator+1−1 tests/plugins/Dash/cardcreator/4.res+1−1 tests/plugins/Dash/cardcreator/4.res.cardcreator+1−1 tests/plugins/Dash/cardcreator/5.res+1−1 tests/plugins/Dash/cardcreator/5.res.cardcreator+1−1 tests/plugins/Dash/cardcreator/6.res+1−1 tests/plugins/Dash/cardcreator/6.res.cardcreator+1−1 tests/plugins/Dash/cardcreator/7.res+1−1 tests/plugins/Dash/cardcreator/7.res.cardcreator+1−1 tests/plugins/Dash/cardcreator/8.res+1−1 tests/plugins/Dash/cardcreator/8.res.cardcreator+1−1 tests/plugins/Dash/cardcreator/9.res+1−1 tests/plugins/Dash/cardcreator/9.res.cardcreator+1−1 tests/plugins/ScreenGrabber/CMakeLists.txt−14 tests/plugins/ScreenGrabber/ScreenGrabberTest.cpp−77 tests/plugins/ScreenGrabber/grabber.qml−31 tests/plugins/Unity/Launcher/launchermodeltest.cpp+1 tests/qmltests/CMakeLists.txt+1 tests/qmltests/Dash/CardHelpers.js+9−7 tests/qmltests/Dash/Filters/tst_FilterExpandableWidget.qml+99 tests/qmltests/Dash/Filters/tst_FilterWidgetFactory.qml+2−1 tests/qmltests/Dash/Previews/tst_PreviewActions.qml+100−17 tests/qmltests/Dash/Previews/tst_PreviewIconActions.qml+14−4 tests/qmltests/Dash/Previews/tst_PreviewZoomableImage.qml+17 tests/qmltests/Dash/tst_Card.qml+38−3 tests/qmltests/Stages/ApplicationCheckBox.qml+33−3 tests/qmltests/Stages/RecursingChildSessionControl.qml−94 tests/qmltests/Stages/tst_ApplicationWindow.qml+89−23 tests/qmltests/Stages/tst_SurfaceContainer.qml+28−155
CMakeLists.txt+1−1
@@ -57,7 +57,7 @@ find_package(Qt5DBus 5.4 REQUIRED)
5757find_package(Qt5Concurrent 5.4 REQUIRED)
5858find_package(Qt5Sql 5.4 REQUIRED)
5959
60−pkg_check_modules(APPLICATION_API REQUIRED unity-shell-application=15)
60+pkg_check_modules(APPLICATION_API REQUIRED unity-shell-application=16)
6161pkg_check_modules(GEONAMES REQUIRED geonames>=0.2)
6262pkg_check_modules(GIO REQUIRED gio-2.0>=2.32)
6363pkg_check_modules(GLIB REQUIRED glib-2.0>=2.32)
debian/changelog+54
@@ -1,3 +1,57 @@
1+unity8 (8.12+16.04.20160518.1-0ubuntu1) xenial; urgency=medium
2+
3+ [ CI Train Bot ]
4+ * Resync trunk.
5+
6+ [ Daniel d'Andrada, Michał Sawicz ]
7+ * Move prompt surfaces from MirSurface to Application
8+
9+ -- Nick Dedekind <ci-train-bot@canonical.com> Wed, 18 May 2016 11:20:04 +0000
10+
11+unity8 (8.12+16.04.20160504.2-0ubuntu1) xenial; urgency=medium
12+
13+ [ Albert Astals Cid ]
14+ * Expandable Filter Widget
15+ * Pass the category correctly
16+
17+ [ Albert Astals Cid, CI Train Bot ]
18+ * Make the previewActions react to the actions model changing (LP:
19+ #1485887)
20+ * Reload Preview Zoomable Image source if it gets updated
21+ * Update the icon also to the original one if that's what the scope
22+ wants
23+
24+ [ Andrea Cimitan ]
25+ * Add social actions to cards
26+
27+ [ CI Train Bot ]
28+ * Resync trunk.
29+
30+ -- Pawel Stolowski <ci-train-bot@canonical.com> Wed, 04 May 2016 18:09:33 +0000
31+
32+unity8 (8.12+16.04.20160429.2-0ubuntu1) xenial; urgency=medium
33+
34+ [ CI Train Bot ]
35+ * Resync trunk.
36+
37+ [ Daniel d'Andrada ]
38+ * Ensure shell transformations use bindings as OrientedShell can get
39+ resized
40+ * Make shell rotation animation work on multimonitor scenarios.
41+ * Refactor screenshotting code and make it work in multimonitor
42+ scenarios
43+
44+ [ Gerry Boland, Nick Dedekind ]
45+ * Indicators: set menu height binding while fully open/closed, fixes
46+ dynamic grid unit bug.
47+
48+ [ Michael Zanetti ]
49+ * Call the dash sizing hack when units.gu changes
50+ * Temporary means to override GUs on the internal screen
51+ * reduce some paint layers.
52+
53+ -- Michał Sawicz <michal.sawicz@canonical.com> Fri, 29 Apr 2016 20:07:37 +0000
54+
155unity8 (8.12+16.04.20160427.3-0ubuntu1) xenial; urgency=medium
256
357 [ Albert Astals Cid ]
debian/control+4−4
@@ -30,7 +30,7 @@ Build-Depends: cmake,
3030 libqt5xmlpatterns5-dev,
3131 libsystemsettings-dev,
3232 libudev-dev,
33− libunity-api-dev (>= 7.110),
33+ libunity-api-dev (>= 7.112),
3434 libusermetricsoutput1-dev,
3535# Need those X11 libs touch emulation from mouse events in manual QML tests on a X11 desktop
3636 libx11-dev[!armhf],
@@ -133,10 +133,10 @@ Depends: qml-module-qtquick-layouts,
133133 qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 1.3.1845) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 1.3.1845),
134134 qtdeclarative5-unity-notifications-plugin (>= 0.1.2) | unity-notifications-impl,
135135 ubuntu-thumbnailer-impl-0,
136− unity-application-impl-15,
136+ unity-application-impl-16,
137137 unity-notifications-impl-3,
138138 unity-plugin-scopes | unity-scopes-impl,
139− unity-scopes-impl-11,
139+ unity-scopes-impl-12,
140140 unity8-fake-env | unity-application-impl,
141141 ${misc:Depends},
142142Breaks: unity8 (<< 7.86),
@@ -179,7 +179,7 @@ Pre-Depends: ${misc:Pre-Depends},
179179Depends: ${misc:Depends},
180180 ${shlibs:Depends},
181181Provides: unity-application-impl,
182− unity-application-impl-15,
182+ unity-application-impl-16,
183183Replaces: unity8-autopilot (<< 8.02+15.04.20150422-0ubuntu1)
184184Description: Fake environment for running Unity 8 shell
185185 Provides fake implementations of some QML modules used by Unity 8 shell
debian/unity8-private.install+1−1
@@ -8,7 +8,7 @@ usr/lib/*/unity8/qml/Greeter
88usr/lib/*/unity8/qml/IntegratedLightDM
99usr/lib/*/unity8/qml/Lights
1010usr/lib/*/unity8/qml/Powerd
11−usr/lib/*/unity8/qml/ScreenGrabber
11+usr/lib/*/unity8/qml/ScreenshotDirectory
1212usr/lib/*/unity8/qml/SessionBroadcast
1313usr/lib/*/unity8/qml/Ubuntu
1414usr/lib/*/unity8/qml/Unity
plugins/CMakeLists.txt+1−1
@@ -19,8 +19,8 @@ add_subdirectory(IntegratedLightDM)
1919add_subdirectory(Lights)
2020add_subdirectory(Dash)
2121add_subdirectory(Powerd)
22+add_subdirectory(ScreenshotDirectory)
2223add_subdirectory(SessionBroadcast)
23−add_subdirectory(ScreenGrabber)
2424add_subdirectory(Ubuntu)
2525add_subdirectory(UInput)
2626add_subdirectory(Unity)
plugins/Dash/CardCreator.js+44−1
@@ -351,6 +351,17 @@ var kAttributesRowCode = 'CardAttributes { \n\
351351 model: cardData && cardData["attributes"]; \n\
352352 }\n';
353353
354+// %1 is used as anchors of socialActionsRow
355+// %2 is used as color of socialActionsRow
356+var kSocialActionsRowCode = 'CardSocialActions { \n\
357+ id: socialActionsRow; \n\
358+ objectName: "socialActionsRow"; \n\
359+ anchors { %1 } \n\
360+ color: %2; \n\
361+ model: cardData && cardData["socialActions"]; \n\
362+ onClicked: root.action(actionId); \n\
363+ }\n';
364+
354365// %1 is used as top anchor of summary
355366// %2 is used as topMargin anchor of summary
356367// %3 is used as color of summary
@@ -437,9 +448,11 @@ function cardString(template, components, isCardTool) {
437448 var hasSubtitle = hasTitle && components["subtitle"] || false;
438449 var hasHeaderRow = hasMascot && hasTitle;
439450 var hasAttributes = hasTitle && components["attributes"] && components["attributes"]["field"] || false;
451+ var hasSocialActions = hasTitle && components["social-actions"] || false;
440452 var isAudio = template["quick-preview-type"] === "audio";
441453 var asynchronous = isCardTool ? "false" : "true";
442454
455+ code += 'signal action(var actionId);\n';
443456 if (isAudio) {
444457 // For now we only support audio cards with [optional] art, title, subtitle
445458 // in horizontal mode
@@ -841,6 +854,34 @@ function cardString(template, components, isCardTool) {
841854 code += kSummaryLabelCode.arg(summaryTopAnchor).arg(summaryTopMargin).arg(summaryColor);
842855 }
843856
857+ if (hasSocialActions) {
858+ var socialAnchors;
859+ var socialTopAnchor;
860+
861+ if (hasSummary) socialTopAnchor = 'summary.bottom;';
862+ else if (isHorizontal && hasArt) socialTopAnchor = 'artShapeHolder.bottom;';
863+ else if (headerAsOverlay && hasArt) socialTopAnchor = 'artShapeHolder.bottom;';
864+ else if (hasHeaderRow) socialTopAnchor = 'row.bottom;';
865+ else if (hasTitleContainer) socialTopAnchor = 'headerTitleContainer.bottom;';
866+ else if (hasMascot) socialTopAnchor = 'mascotImage.bottom;';
867+ else if (hasAttributes) socialTopAnchor = 'attributesRow.bottom;';
868+ else if (hasSubtitle) socialTopAnchor = 'subtitleLabel.bottom;';
869+ else if (hasTitle) socialTopAnchor = 'titleLabel.bottom;';
870+ else if (hasArt) socialTopAnchor = 'artShapeHolder.bottom;';
871+ else socialTopAnchor = 'parent.top';
872+
873+ socialAnchors = 'top: ' + socialTopAnchor + ' left: parent.left; right: parent.right; topMargin: units.gu(1);'
874+
875+ var socialColor;
876+ if (hasBackground) {
877+ socialColor = summaryColorWithBackground;
878+ } else {
879+ socialColor = 'root.scopeStyle ? root.scopeStyle.foreground : theme.palette.normal.baseText';
880+ }
881+
882+ code += kSocialActionsRowCode.arg(socialAnchors).arg(socialColor);
883+ }
884+
844885 var touchdownAnchors;
845886 if (hasBackground) {
846887 touchdownAnchors = 'fill: backgroundLoader';
@@ -852,7 +893,9 @@ function cardString(template, components, isCardTool) {
852893 code += kTouchdownCode.arg(touchdownAnchors);
853894
854895 var implicitHeight = 'implicitHeight: ';
855− if (hasSummary) {
896+ if (hasSocialActions) {
897+ implicitHeight += 'socialActionsRow.y + socialActionsRow.height + units.gu(1);\n';
898+ } else if (hasSummary) {
856899 implicitHeight += 'summary.y + summary.height + units.gu(1);\n';
857900 } else if (isAudio) {
858901 implicitHeight += 'audioButton.height;\n';
plugins/Dash/CardSocialActions.qmlnew file+94
@@ -0,0 +1,94 @@
1+/*
2+ * Copyright 2016 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+import QtQuick.Layouts 1.1
19+import Ubuntu.Components 1.3
20+
21+Column {
22+ id: socialActions
23+ spacing: units.gu(0.5)
24+
25+ property alias model: repeater.model
26+ property color color: theme.palette.normal.baseText
27+
28+ signal clicked(var actionId)
29+
30+ Rectangle {
31+ id: divider
32+ visible: repeater.count > 0
33+ anchors {
34+ left: parent.left;
35+ right: parent.right;
36+ leftMargin:units.dp(1);
37+ rightMargin: units.dp(1);
38+ }
39+ color: Qt.darker(theme.palette.normal.background, 1.12)
40+ height: visible ? units.dp(1) : 0
41+ }
42+
43+ Row {
44+ id: row
45+ anchors {
46+ left: parent.left
47+ right: parent.right
48+ leftMargin: units.gu(1)
49+ rightMargin: units.gu(1)
50+ }
51+ spacing: units.gu(2)
52+ readonly property int visibleItems: {
53+ if (width <= units.gu(12)) // small card
54+ return 2;
55+ else if (width <= units.gu(21)) // medium card
56+ return 3;
57+ else // large or horizontal card
58+ return 4;
59+ }
60+
61+ Repeater {
62+ id: repeater
63+ delegate: Loader {
64+ height: units.gu(2)
65+ active: index < row.visibleItems
66+ sourceComponent: AbstractButton {
67+ objectName: "delegate" + index
68+ height: units.gu(2)
69+ width: icon.width
70+ Icon {
71+ id: icon
72+ objectName: "icon"
73+
74+ readonly property url urlIcon: modelData && modelData["icon"] || ""
75+ readonly property url urlTemporaryIcon: "temporaryIcon" in modelData && modelData["temporaryIcon"] || ""
76+
77+ height: units.gu(2)
78+ // FIXME Workaround for bug https://bugs.launchpad.net/ubuntu/+source/ubuntu-ui-toolkit/+bug/1421293
79+ width: implicitWidth > 0 && implicitHeight > 0 ? (implicitWidth / implicitHeight * height) : implicitWidth
80+ source: urlIcon
81+ color: socialActions.color
82+
83+ onUrlIconChanged: {
84+ if (urlIcon) source = urlIcon
85+ }
86+ }
87+
88+ onClicked: socialActions.clicked(modelData["id"]);
89+ onPressedChanged: if (pressed && icon.urlTemporaryIcon != "") icon.source = icon.urlTemporaryIcon
90+ }
91+ }
92+ }
93+ }
94+}
plugins/Dash/qmldir+1
@@ -5,6 +5,7 @@ singleton CardCreatorCache 0.1 CardCreatorCache.qml
55singleton DashAudioPlayer 0.1 DashAudioPlayer.qml
66ScopeStyle 0.1 ScopeStyle.qml
77CardAttributes 0.1 CardAttributes.qml
8+CardSocialActions 0.1 CardSocialActions.qml
89CroppedImageMinimumSourceSize 0.1 CroppedImageMinimumSourceSize.qml
910AudioProgressBar 0.1 AudioProgressBar.qml
1011CardAudioProgress 0.1 CardAudioProgress.qml
plugins/ScreenGrabber/CMakeLists.txtdeleted−13
@@ -1,13 +0,0 @@
1−include_directories(
2− ${CMAKE_CURRENT_BINARY_DIR}
3−)
4−
5−set(SCREENGRABBERSOURCES
6− screengrabber.cpp
7− plugin.cpp
8−)
9−
10−add_library(ScreenGrabber-qml MODULE ${SCREENGRABBERSOURCES})
11−qt5_use_modules(ScreenGrabber-qml Qml Gui Quick Concurrent)
12−
13−add_unity8_plugin(ScreenGrabber 0.1 ScreenGrabber TARGETS ScreenGrabber-qml)
plugins/ScreenGrabber/qmldirdeleted−3
@@ -1,3 +0,0 @@
1−module ScreenGrabber
2−plugin ScreenGrabber-qml
3−typeinfo ScreenGrabber.qmltypes
plugins/ScreenGrabber/screengrabber.cppdeleted−115
@@ -1,115 +0,0 @@
1−/*
2− * Copyright (C) 2014-2015 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−#include "screengrabber.h"
18−
19−#include <QDir>
20−#include <QDateTime>
21−#include <QStandardPaths>
22−#include <QTemporaryDir>
23−#include <QtGui/QImage>
24−#include <QtGui/QGuiApplication>
25−#include <QtQuick/QQuickWindow>
26−
27−#include <QDebug>
28−
29−QString saveScreenshot(const QImage &screenshot, const QString &filename, const QString &format, int quality)
30−{
31− if (screenshot.save(filename, format.toLatin1().data(), quality)) {
32− return filename;
33− } else {
34− qWarning() << "ScreenGrabber: failed to save snapshot!";
35− }
36− return QString();
37−}
38−
39−ScreenGrabber::ScreenGrabber(QObject *parent)
40− : QObject(parent)
41−{
42− QObject::connect(&m_watcher,
43− &QFutureWatcher<QString>::finished,
44− this,
45− &ScreenGrabber::onScreenshotSaved);
46−
47− QDir screenshotsDir;
48− if (qEnvironmentVariableIsSet("UNITY_TESTING")) {
49− QTemporaryDir tDir;
50− tDir.setAutoRemove(false);
51− screenshotsDir = tDir.path();
52− } else {
53− screenshotsDir = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation);
54− }
55− screenshotsDir.mkpath(QStringLiteral("Screenshots"));
56− screenshotsDir.cd(QStringLiteral("Screenshots"));
57− if (screenshotsDir.exists()) {
58− fileNamePrefix = screenshotsDir.absolutePath();
59− fileNamePrefix.append("/screenshot");
60− } else {
61− qWarning() << "ScreenGrabber: failed to create directory at: " << screenshotsDir.absolutePath();
62− }
63−}
64−
65−void ScreenGrabber::captureAndSave(int angle)
66−{
67− if (fileNamePrefix.isEmpty())
68− {
69− qWarning() << "ScreenShotter: no directory to save screenshot";
70− return;
71− }
72−
73− const QWindowList windows = QGuiApplication::topLevelWindows();
74− if (windows.empty())
75− {
76− qWarning() << "ScreenShotter: no top level windows found!";
77− return;
78− }
79−
80− QQuickWindow *main_window = qobject_cast<QQuickWindow *>(windows[0]);
81− if (!main_window)
82− {
83− qWarning() << "ScreenShotter: can only take screenshots of QQuickWindows";
84− return;
85− }
86−
87− const QImage screenshot = main_window->grabWindow().transformed(QTransform().rotate(angle));
88− const QString filename = makeFileName();
89− qDebug() << "Saving screenshot to" << filename;
90− QFuture<QString> saveFuture(QtConcurrent::run(saveScreenshot, screenshot, filename, getFormat(), screenshotQuality));
91− m_watcher.setFuture(saveFuture);
92−}
93−
94−void ScreenGrabber::onScreenshotSaved()
95−{
96− const QString filename = m_watcher.future().result();
97− if (!filename.isEmpty()) {
98− Q_EMIT screenshotSaved(filename);
99− }
100−}
101−
102−QString ScreenGrabber::makeFileName() const
103−{
104− QString fileName(fileNamePrefix);
105− fileName.append(QDateTime::currentDateTime().toString(QStringLiteral("yyyyMMdd_hhmmsszzz")));
106− fileName.append(".");
107− fileName.append(getFormat());
108− return fileName;
109−}
110−
111−QString ScreenGrabber::getFormat() const
112−{
113− //TODO: This should be configurable (perhaps through gsettings?)
114− return QStringLiteral("png");
115−}
plugins/ScreenGrabber/screengrabber.hdeleted−49
@@ -1,49 +0,0 @@
1−/*
2− * Copyright (C) 2014-2015 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−#ifndef SNAPSHOTTER_H
18−#define SNAPSHOTTER_H
19−
20−#include <QObject>
21−#include <QString>
22−#include <QtConcurrent>
23−
24−class ScreenGrabber: public QObject
25−{
26− Q_OBJECT
27−
28−public:
29− explicit ScreenGrabber(QObject *parent = 0);
30− ~ScreenGrabber() = default;
31−
32−public Q_SLOTS:
33− void captureAndSave(int angle = 0);
34−
35−Q_SIGNALS:
36− void screenshotSaved(const QString &filename);
37−
38−private Q_SLOTS:
39− void onScreenshotSaved();
40−
41−private:
42− QString makeFileName() const;
43− QString getFormat() const;
44− QString fileNamePrefix;
45− int screenshotQuality = -1; // default quality for the format
46− QFutureWatcher<QString> m_watcher;
47−};
48−
49−#endif
plugins/ScreenshotDirectory/CMakeLists.txtnew file+9
@@ -0,0 +1,9 @@
1+set(PLUGIN_SOURCES
2+ ScreenshotDirectory.cpp
3+ plugin.cpp
4+)
5+
6+add_library(ScreenshotDirectory-qml MODULE ${PLUGIN_SOURCES})
7+qt5_use_modules(ScreenshotDirectory-qml Qml Gui Quick)
8+
9+add_unity8_plugin(ScreenshotDirectory 0.1 ScreenshotDirectory TARGETS ScreenshotDirectory-qml)
plugins/ScreenGrabber/ScreenGrabber.qmltypes → plugins/ScreenshotDirectory/ScreenGrabber.qmltypesrenamed

The content is the same.

plugins/ScreenshotDirectory/ScreenshotDirectory.cppnew file+64
@@ -0,0 +1,64 @@
1+/*
2+ * Copyright (C) 2014-2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#include "ScreenshotDirectory.h"
18+
19+#include <QDir>
20+#include <QDateTime>
21+#include <QStandardPaths>
22+#include <QTemporaryDir>
23+
24+#include <QDebug>
25+
26+ScreenshotDirectory::ScreenshotDirectory(QObject *parent)
27+ : QObject(parent)
28+{
29+ QDir screenshotsDir;
30+ if (qEnvironmentVariableIsSet("UNITY_TESTING")) {
31+ QTemporaryDir tDir;
32+ tDir.setAutoRemove(false);
33+ screenshotsDir = tDir.path();
34+ } else {
35+ screenshotsDir = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation);
36+ }
37+ screenshotsDir.mkpath(QStringLiteral("Screenshots"));
38+ screenshotsDir.cd(QStringLiteral("Screenshots"));
39+ if (screenshotsDir.exists()) {
40+ m_fileNamePrefix = screenshotsDir.absolutePath();
41+ m_fileNamePrefix.append("/screenshot");
42+ } else {
43+ qWarning() << "ScreenshotDirectory: failed to create directory at:" << screenshotsDir.absolutePath();
44+ }
45+}
46+
47+QString ScreenshotDirectory::makeFileName() const
48+{
49+ if (m_fileNamePrefix.isEmpty()) {
50+ return QString();
51+ }
52+
53+ QString fileName(m_fileNamePrefix);
54+ fileName.append(QDateTime::currentDateTime().toString(QStringLiteral("yyyyMMdd_hhmmsszzz")));
55+ fileName.append(".");
56+ fileName.append(format());
57+ return fileName;
58+}
59+
60+QString ScreenshotDirectory::format() const
61+{
62+ //TODO: This should be configurable (perhaps through gsettings?)
63+ return QStringLiteral("png");
64+}
plugins/Utils/windowscreenshotprovider.h → plugins/ScreenshotDirectory/ScreenshotDirectory.hrenamed+17−9
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2015 Canonical, Ltd.
2+ * Copyright (C) 2014-2016 Canonical, Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
@@ -14,18 +14,26 @@
1414 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1515 */
1616
17−#ifndef WINDOW_SCREENSHOT_PROVIDER_H_
18−#define WINDOW_SCREENSHOT_PROVIDER_H_
17+#ifndef SCREENSHOTDIRECTORY_H
18+#define SCREENSHOTDIRECTORY_H
1919
20−#include <QQuickImageProvider>
20+#include <QObject>
21+#include <QString>
2122
22−class WindowScreenshotProvider : public QQuickImageProvider
23+class ScreenshotDirectory: public QObject
2324{
25+ Q_OBJECT
26+
2427public:
25− WindowScreenshotProvider();
28+ explicit ScreenshotDirectory(QObject *parent = 0);
29+ ~ScreenshotDirectory() = default;
30+
31+public Q_SLOTS:
32+ QString makeFileName() const;
2633
27− // id is ignored for now
28− QImage requestImage(const QString &id, QSize *size, const QSize &requestedSize) override;
34+private:
35+ QString format() const;
36+ QString m_fileNamePrefix;
2937};
3038
31−#endif // WINDOW_SCREENSHOT_PROVIDER_H_
39+#endif // SCREENSHOTDIRECTORY_H
plugins/ScreenGrabber/plugin.cpp → plugins/ScreenshotDirectory/plugin.cpprenamed+5−7
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2014 Canonical, Ltd.
2+ * Copyright (C) 2014,2016 Canonical, Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
@@ -12,17 +12,15 @@
1212 *
1313 * You should have received a copy of the GNU General Public License
1414 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors: Alberto Aguirre <alberto.aguirre@canonical.com>
1715 */
1816
1917#include "plugin.h"
20−#include "screengrabber.h"
18+#include "ScreenshotDirectory.h"
2119
2220#include <QtQml/qqml.h>
2321
24−void ScreenGrabberPlugin::registerTypes(const char *uri)
22+void ScreenshotDirectoryPlugin::registerTypes(const char *uri)
2523{
26− Q_ASSERT(uri == QLatin1String("ScreenGrabber"));
27− qmlRegisterType<ScreenGrabber>(uri, 0, 1, "ScreenGrabber");
24+ Q_ASSERT(uri == QLatin1String("ScreenshotDirectory"));
25+ qmlRegisterType<ScreenshotDirectory>(uri, 0, 1, "ScreenshotDirectory");
2826}
plugins/ScreenGrabber/plugin.h → plugins/ScreenshotDirectory/plugin.hrenamed+5−7
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2014 Canonical, Ltd.
2+ * Copyright (C) 2014,2016 Canonical, Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
@@ -12,16 +12,14 @@
1212 *
1313 * You should have received a copy of the GNU General Public License
1414 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors: Alberto Aguirre <alberto.aguirre@canonical.com>
1715 */
1816
19−#ifndef SCREENGRABBER_PLUGIN_H
20−#define SCREENGRABBER_PLUGIN_H
17+#ifndef SCREENSHOTDIRECTORY_PLUGIN_H
18+#define SCREENSHOTDIRECTORY_PLUGIN_H
2119
2220#include <QtQml/QQmlExtensionPlugin>
2321
24−class ScreenGrabberPlugin : public QQmlExtensionPlugin
22+class ScreenshotDirectoryPlugin : public QQmlExtensionPlugin
2523{
2624 Q_OBJECT
2725 Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
@@ -30,4 +28,4 @@ public:
3028 void registerTypes(const char *uri) override;
3129};
3230
33−#endif // SCREENGRABBER_PLUGIN_H
31+#endif // SCREENSHOTDIRECTORY_PLUGIN_H
plugins/ScreenshotDirectory/qmldirnew file+2
@@ -0,0 +1,2 @@
1+module ScreenshotDirectory
2+plugin ScreenshotDirectory-qml
plugins/Utils/CMakeLists.txt−1
@@ -18,7 +18,6 @@ set(QMLPLUGIN_SRC
1818 Timer.cpp
1919 unitymenumodelpaths.cpp
2020 windowinputfilter.cpp
21− windowscreenshotprovider.cpp
2221 easingcurve.cpp
2322 windowstatestorage.cpp
2423 timezoneFormatter.cpp
plugins/Utils/plugin.cpp−8
@@ -31,7 +31,6 @@
3131#include "unitysortfilterproxymodelqml.h"
3232#include "unitymenumodelpaths.h"
3333#include "windowinputfilter.h"
34−#include "windowscreenshotprovider.h"
3534#include "windowstatestorage.h"
3635#include "constants.h"
3736#include "timezoneFormatter.h"
@@ -82,10 +81,3 @@ void UtilsPlugin::registerTypes(const char *uri)
8281 qmlRegisterType<DeviceConfigParser>(uri, 0, 1, "DeviceConfigParser");
8382 qmlRegisterSingletonType<GlobalFunctions>(uri, 0, 1, "Functions", createGlobalFunctions);
8483}
85−
86−void UtilsPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
87−{
88− QQmlExtensionPlugin::initializeEngine(engine, uri);
89−
90− engine->addImageProvider(QStringLiteral("window"), new WindowScreenshotProvider);
91−}
plugins/Utils/plugin.h−1
@@ -29,7 +29,6 @@ class UtilsPlugin : public QQmlExtensionPlugin
2929
3030public:
3131 void registerTypes(const char *uri) override;
32− void initializeEngine(QQmlEngine *engine, const char *uri) override;
3332};
3433
3534#endif
plugins/Utils/windowscreenshotprovider.cppdeleted−59
@@ -1,59 +0,0 @@
1−/*
2− * Copyright (C) 2015 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−#include "windowscreenshotprovider.h"
18−
19−#include <QGuiApplication>
20−#include <QQuickWindow>
21−
22−WindowScreenshotProvider::WindowScreenshotProvider()
23− : QQuickImageProvider(QQmlImageProviderBase::Image, 0)
24−{
25−}
26−
27−// A very simple implementation where we assume that there's only one window and that it's a
28−// QQuickWindow. Thus the id parameter is irrelevant.
29−//
30−// Idea: Make the id contain the objectName of the QQuickWindow once we care about a multi-display
31−// compositor?
32−// Strictly speaking that could be the actual QWindow::winId(), but that's mostly a
33−// meaningless arbitrary number.
34−QImage WindowScreenshotProvider::requestImage(const QString &id, QSize *size, const QSize &requestedSize)
35−{
36− Q_UNUSED(id);
37− Q_UNUSED(requestedSize);
38−
39− QWindowList windows = QGuiApplication::topLevelWindows();
40−
41− if (windows.count() != 1) {
42− size->rwidth() = 0;
43− size->rheight() = 0;
44− return QImage();
45− }
46−
47− QQuickWindow *quickWindow = qobject_cast<QQuickWindow *>(windows[0]);
48−
49− if (!quickWindow) {
50− size->rwidth() = 0;
51− size->rheight() = 0;
52− return QImage();
53− }
54−
55− QImage image = quickWindow->grabWindow();
56− size->rwidth() = image.width();
57− size->rheight() = image.height();
58− return image;
59−}
po/aa.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2016-02-12 10:18+0000\n"
1212"Last-Translator: Charif AYFARAH <ayfarah@ymail.com>\n"
1313"Language-Team: Afar <aa@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:36+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -186,15 +186,15 @@ msgstr ""
186186msgid "Reset"
187187msgstr ""
188188
189−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
189+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
190190msgid "Show less"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570
193+#: qml/Dash/GenericScopeView.qml:579
194194msgid "Show all"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:627
197+#: qml/Dash/GenericScopeView.qml:636
198198msgctxt "Label: Hint for dash search line edit"
199199msgid "Search"
200200msgstr "Goranto"
po/am.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2016-03-24 19:07+0000\n"
1212"Last-Translator: samson <Unknown>\n"
1313"Language-Team: Amharic <am@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:36+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -188,15 +188,15 @@ msgstr "የ እርስዎን ውጤቶች እንደገና ማጣሪያ"
188188msgid "Reset"
189189msgstr "እንደ ነበረ መመለሻ"
190190
191−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
191+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
192192msgid "Show less"
193193msgstr ""
194194
195−#: qml/Dash/GenericScopeView.qml:570
195+#: qml/Dash/GenericScopeView.qml:579
196196msgid "Show all"
197197msgstr ""
198198
199−#: qml/Dash/GenericScopeView.qml:627
199+#: qml/Dash/GenericScopeView.qml:636
200200msgctxt "Label: Hint for dash search line edit"
201201msgid "Search"
202202msgstr "መፈለጊያ"
po/ar.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-07-29 09:41+0000\n"
1212"Last-Translator: Ibrahim Saed <ibraheem5000@gmail.com>\n"
1313"Language-Team: Arabic <ar@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n % 100 >= "
1818"3 && n % 100 <= 10 ? 3 : n % 100 >= 11 && n % 100 <= 99 ? 4 : 5;\n"
19−"X-Launchpad-Export-Date: 2016-04-30 05:36+0000\n"
20−"X-Generator: Launchpad (build 17995)\n"
19+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
20+"X-Generator: Launchpad (build 18025)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -195,15 +195,15 @@ msgstr ""
195195msgid "Reset"
196196msgstr ""
197197
198−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
198+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
199199msgid "Show less"
200200msgstr ""
201201
202−#: qml/Dash/GenericScopeView.qml:570
202+#: qml/Dash/GenericScopeView.qml:579
203203msgid "Show all"
204204msgstr ""
205205
206−#: qml/Dash/GenericScopeView.qml:627
206+#: qml/Dash/GenericScopeView.qml:636
207207msgctxt "Label: Hint for dash search line edit"
208208msgid "Search"
209209msgstr "بحث"
po/ast.po+43−35
@@ -7,16 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
11−"PO-Revision-Date: 2016-04-17 16:57+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
11+"PO-Revision-Date: 2016-05-16 14:07+0000\n"
1212"Last-Translator: Xuacu Saturio <xuacusk8@gmail.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"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:36+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -140,7 +140,7 @@ msgstr "Apps que pueden tener datos sin guardar:"
140140msgctxt ""
141141"Re-dock means connect the device again to an external screen/mouse/keyboard"
142142msgid "Re-dock, save your work and close these apps to continue."
143−msgstr ""
143+msgstr "Reconeuta, guarda'l trabayu y zarra eses apps pa siguir."
144144
145145#: qml/Components/ModeSwitchWarningDialog.qml:63
146146msgid "Or force close now (unsaved data will be lost)."
@@ -183,28 +183,28 @@ msgstr "Amestar a favoritos"
183183
184184#: qml/Dash/FiltersPopover.qml:60
185185msgid "Refine your results"
186−msgstr ""
186+msgstr "Refina los resultaos"
187187
188188#: qml/Dash/FiltersPopover.qml:69
189189msgid "Reset"
190190msgstr "Reafitar"
191191
192−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
192+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
193193msgid "Show less"
194−msgstr ""
194+msgstr "Ver menos"
195195
196−#: qml/Dash/GenericScopeView.qml:570
196+#: qml/Dash/GenericScopeView.qml:579
197197msgid "Show all"
198−msgstr ""
198+msgstr "Ver too"
199199
200−#: qml/Dash/GenericScopeView.qml:627
200+#: qml/Dash/GenericScopeView.qml:636
201201msgctxt "Label: Hint for dash search line edit"
202202msgid "Search"
203203msgstr "Guetar"
204204
205205#: qml/Dash/PageHeaderExtraPanel.qml:55
206206msgid "Recent Searches"
207−msgstr ""
207+msgstr "Guetes recién"
208208
209209#: qml/Dash/PageHeaderExtraPanel.qml:66
210210msgid "Clear All"
@@ -264,6 +264,8 @@ msgid ""
264264"Your device is now connected to an external display. Use this screen as a "
265265"touch pad to interact with the pointer."
266266msgstr ""
267+"El preséu agora ta coneutáu con una pantalla esterna. Usa esta pantalla como "
268+"touch pad pa interactuar col punteru."
267269
268270#: qml/Greeter/CoverPage.qml:118
269271msgid "Unlock"
@@ -425,51 +427,53 @@ msgstr "Devolver llamada"
425427
426428#: qml/Stages/SideStage.qml:76
427429msgid "Drag using 3 fingers any application from one window to the other"
428−msgstr ""
430+msgstr "Abasnar cualquier aplicación d'una ventana a otra usando 3 deos"
429431
430432#: qml/Tutorial/TutorialBottom.qml:78
431433msgid "Swipe up to add a contact"
432−msgstr ""
434+msgstr "Eslizar p'amestar un contactu"
433435
434436#: qml/Tutorial/TutorialBottom.qml:80
435437msgid "Swipe up for favorite calculations"
436−msgstr ""
438+msgstr "Eslizar pa los cálculos favoritos"
437439
438440#: qml/Tutorial/TutorialBottom.qml:82
439441msgid "Swipe up for recent calls"
440−msgstr ""
442+msgstr "Eslizar pa llamaes recién"
441443
442444#: qml/Tutorial/TutorialBottom.qml:84
443445msgid "Swipe up to create a message"
444−msgstr ""
446+msgstr "Eslizar pa crear un mensaxe"
445447
446448#: qml/Tutorial/TutorialBottom.qml:85
447449msgid "Swipe up to manage the app"
448−msgstr ""
450+msgstr "Eslizar p'alministrar la app"
449451
450452#: qml/Tutorial/TutorialLeftLong.qml:47
451453msgid "Long swipe from the left edge to open the Today scope"
452−msgstr ""
454+msgstr "Eslizamientu llargu dende'l berbesu izquierdu pa ver el scope Güei"
453455
454456#: qml/Tutorial/TutorialLeft.qml:47
455457msgid "Swipe from the left edge to open the launcher"
456−msgstr ""
458+msgstr "Eslizar dende'l berbesu izquierdu p'abrir el llanzador"
457459
458460#: qml/Tutorial/TutorialRight.qml:55
459461msgid "Push your mouse against the right edge to view your open apps"
460−msgstr ""
462+msgstr "Emburria'l mur escontra'l berbesu drechu pa ver les apps abiertes"
461463
462464#: qml/Tutorial/TutorialRight.qml:56
463465msgid "Short or long swipe from the right edge to view your open apps"
464466msgstr ""
467+"Eslizamientu curtiu o llargu dende'l berbesu drechu pa ver les apps abiertes"
465468
466469#: qml/Tutorial/TutorialTop.qml:53
467470msgid "Swipe from the top right edge to open the notification bar"
468471msgstr ""
472+"Esliza dende'l berbesu superior drechu p'abrir la barra de notificaciones"
469473
470474#: qml/Tutorial/TutorialTop.qml:54
471475msgid "Swipe from the top edge to open the notification bar"
472−msgstr ""
476+msgstr "Esliza dende'l berbesu superior p'abrir la barra de notificaciones"
473477
474478#: qml/Wizard/Page.qml:54
475479msgctxt "Button: Go back one page in the Wizard"
@@ -512,35 +516,37 @@ msgstr "Saltar"
512516
513517#: qml/Wizard/Pages/40-location.qml:27
514518msgid "Location Services"
515−msgstr ""
519+msgstr "Servicios d'allugamientu"
516520
517521#: qml/Wizard/Pages/40-location.qml:83
518522msgid ""
519523"Use GPS, Wi-Fi hotspots and mobile network anonymously to detect location "
520524"(recommended)"
521525msgstr ""
526+"Usar GPS, puntos Wi-Fi y redes móviles de mou anónimu pa detectar "
527+"l'allugamientu (recomendao)"
522528
523529#: qml/Wizard/Pages/40-location.qml:105
524530#, qt-format
525531msgid "By selecting this option you agree to the Nokia HERE %1."
526−msgstr ""
532+msgstr "Seleicionando esta opción aceutes los %1 de Nokia HERE."
527533
528534#: qml/Wizard/Pages/40-location.qml:106
529535msgctxt "part of: Nokia HERE terms and conditions"
530536msgid "terms and conditions"
531−msgstr ""
537+msgstr "términos y condiciones"
532538
533539#: qml/Wizard/Pages/40-location.qml:160
534540msgid "GPS only"
535−msgstr ""
541+msgstr "Sólo GPS"
536542
537543#: qml/Wizard/Pages/40-location.qml:214
538544msgid "Don't use my location"
539−msgstr ""
545+msgstr "Nun usar l'allugamientu"
540546
541547#: qml/Wizard/Pages/40-location.qml:260
542548msgid "You can change it later in System Settings."
543−msgstr ""
549+msgstr "Pues camudalo sero na Configuración del Sistema."
544550
545551#: qml/Wizard/Pages/50-timezone.qml:29
546552msgid "Time Zone"
@@ -565,33 +571,35 @@ msgstr "Bloquiar pantalla"
565571#: qml/Wizard/Pages/70-passwd-type.qml:101
566572msgctxt "Label: Type of security method"
567573msgid "Create new password"
568−msgstr ""
574+msgstr "Crear contraseña nueva"
569575
570576#: qml/Wizard/Pages/70-passwd-type.qml:103
571577msgctxt "Label: Type of security method"
572578msgid "Create passcode (numbers only)"
573−msgstr ""
579+msgstr "Crear códigu d'accesu (sólo númberos)"
574580
575581#: qml/Wizard/Pages/70-passwd-type.qml:105
576582msgctxt "Label: Type of security method"
577583msgid "No lock code"
578−msgstr ""
584+msgstr "Ensin códigu de bloquéu"
579585
580586#: qml/Wizard/Pages/75-report-check.qml:26 qml/Wizard/Pages/here-terms.qml:108
581587msgid "Privacy Policy"
582−msgstr ""
588+msgstr "Política d'intimidá"
583589
584590#: qml/Wizard/Pages/75-report-check.qml:26
585591msgid "Help Us Improve"
586−msgstr ""
592+msgstr "Ayúdanos a meyorar"
587593
588594#: qml/Wizard/Pages/75-report-check.qml:59
589595msgid "Improve system performance by sending us crashes and error reports."
590596msgstr ""
597+"Ameyora'l rindimientu del sistema unviándonos los informes d'errores y "
598+"cuelgues."
591599
592600#: qml/Wizard/Pages/75-report-check.qml:60
593601msgid "Privacy policy"
594−msgstr ""
602+msgstr "Política d'intimidá"
595603
596604#: qml/Wizard/Pages/80-finished.qml:89
597605msgid "Welcome to Ubuntu"
@@ -599,7 +607,7 @@ msgstr "Bienveníu/a a Ubuntu"
599607
600608#: qml/Wizard/Pages/80-finished.qml:104
601609msgid "You are ready to use your device now"
602−msgstr ""
610+msgstr "Ya tas preparáu pa usar el preséu"
603611
604612#: qml/Wizard/Pages/80-finished.qml:124
605613msgid "Get Started"
po/az.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2014-09-03 16:39+0000\n"
1212"Last-Translator: Nicat Məmmədov <n1c4t97@gmail.com>\n"
1313"Language-Team: Azerbaijani <az@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:36+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -186,15 +186,15 @@ msgstr ""
186186msgid "Reset"
187187msgstr ""
188188
189−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
189+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
190190msgid "Show less"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570
193+#: qml/Dash/GenericScopeView.qml:579
194194msgid "Show all"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:627
197+#: qml/Dash/GenericScopeView.qml:636
198198msgctxt "Label: Hint for dash search line edit"
199199msgid "Search"
200200msgstr ""
po/be.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-12-13 13:12+0000\n"
1212"Last-Translator: Mikhail_SaTuRn <mikhail_saturn@tut.by>\n"
1313"Language-Team: Belarusian <be@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
19−"X-Launchpad-Export-Date: 2016-04-30 05:36+0000\n"
20−"X-Generator: Launchpad (build 17995)\n"
19+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
20+"X-Generator: Launchpad (build 18025)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -193,15 +193,15 @@ msgstr ""
193193msgid "Reset"
194194msgstr ""
195195
196−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
196+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
197197msgid "Show less"
198198msgstr ""
199199
200−#: qml/Dash/GenericScopeView.qml:570
200+#: qml/Dash/GenericScopeView.qml:579
201201msgid "Show all"
202202msgstr ""
203203
204−#: qml/Dash/GenericScopeView.qml:627
204+#: qml/Dash/GenericScopeView.qml:636
205205msgctxt "Label: Hint for dash search line edit"
206206msgid "Search"
207207msgstr "Пошук"
po/bg.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-04-12 14:43+0000\n"
1212"Last-Translator: George Karavasilev <kokoto-java@ubuntu.com>\n"
1313"Language-Team: Bulgarian <bg@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:36+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -188,15 +188,15 @@ msgstr ""
188188msgid "Reset"
189189msgstr ""
190190
191−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
191+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
192192msgid "Show less"
193193msgstr ""
194194
195−#: qml/Dash/GenericScopeView.qml:570
195+#: qml/Dash/GenericScopeView.qml:579
196196msgid "Show all"
197197msgstr ""
198198
199−#: qml/Dash/GenericScopeView.qml:627
199+#: qml/Dash/GenericScopeView.qml:636
200200msgctxt "Label: Hint for dash search line edit"
201201msgid "Search"
202202msgstr ""
po/bn.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-11-27 19:38+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Bengali <bn@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:36+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -188,15 +188,15 @@ msgstr ""
188188msgid "Reset"
189189msgstr ""
190190
191−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
191+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
192192msgid "Show less"
193193msgstr ""
194194
195−#: qml/Dash/GenericScopeView.qml:570
195+#: qml/Dash/GenericScopeView.qml:579
196196msgid "Show all"
197197msgstr ""
198198
199−#: qml/Dash/GenericScopeView.qml:627
199+#: qml/Dash/GenericScopeView.qml:636
200200msgctxt "Label: Hint for dash search line edit"
201201msgid "Search"
202202msgstr "খুঁজুন"
po/br.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2016-04-27 12:20+0000\n"
1212"Last-Translator: Fohanno Thierry <thierry.fohanno@ofis-bzh.org>\n"
1313"Language-Team: Breton <br@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:36+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -195,15 +195,15 @@ msgstr "Purañ ho tisoc'hoù"
195195msgid "Reset"
196196msgstr "Adderaouekaat"
197197
198−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
198+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
199199msgid "Show less"
200200msgstr ""
201201
202−#: qml/Dash/GenericScopeView.qml:570
202+#: qml/Dash/GenericScopeView.qml:579
203203msgid "Show all"
204204msgstr ""
205205
206−#: qml/Dash/GenericScopeView.qml:627
206+#: qml/Dash/GenericScopeView.qml:636
207207msgctxt "Label: Hint for dash search line edit"
208208msgid "Search"
209209msgstr "Klask"
po/bs.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-12-01 20:06+0000\n"
1212"Last-Translator: Kenan Gutić <Unknown>\n"
1313"Language-Team: Bosnian <bs@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-04-30 05:36+0000\n"
20−"X-Generator: Launchpad (build 17995)\n"
19+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
20+"X-Generator: Launchpad (build 18025)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -192,15 +192,15 @@ msgstr ""
192192msgid "Reset"
193193msgstr ""
194194
195−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
195+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
196196msgid "Show less"
197197msgstr ""
198198
199−#: qml/Dash/GenericScopeView.qml:570
199+#: qml/Dash/GenericScopeView.qml:579
200200msgid "Show all"
201201msgstr ""
202202
203−#: qml/Dash/GenericScopeView.qml:627
203+#: qml/Dash/GenericScopeView.qml:636
204204msgctxt "Label: Hint for dash search line edit"
205205msgid "Search"
206206msgstr "Pretraži"
po/ca.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-07-04 09:48+0000\n"
1212"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
1313"Language-Team: Catalan <ca@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:36+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -192,15 +192,15 @@ msgstr ""
192192msgid "Reset"
193193msgstr ""
194194
195−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
195+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
196196msgid "Show less"
197197msgstr ""
198198
199−#: qml/Dash/GenericScopeView.qml:570
199+#: qml/Dash/GenericScopeView.qml:579
200200msgid "Show all"
201201msgstr ""
202202
203−#: qml/Dash/GenericScopeView.qml:627
203+#: qml/Dash/GenericScopeView.qml:636
204204msgctxt "Label: Hint for dash search line edit"
205205msgid "Search"
206206msgstr "Cerca"
po/ca@valencia.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-02-22 15:22+0000\n"
1212"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
1313"Language-Team: Catalan <ca@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -192,15 +192,15 @@ msgstr ""
192192msgid "Reset"
193193msgstr ""
194194
195−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
195+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
196196msgid "Show less"
197197msgstr ""
198198
199−#: qml/Dash/GenericScopeView.qml:570
199+#: qml/Dash/GenericScopeView.qml:579
200200msgid "Show all"
201201msgstr ""
202202
203−#: qml/Dash/GenericScopeView.qml:627
203+#: qml/Dash/GenericScopeView.qml:636
204204msgctxt "Label: Hint for dash search line edit"
205205msgid "Search"
206206msgstr ""
po/ce.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-02-15 04:01+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Chechen <ce@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:36+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -186,15 +186,15 @@ msgstr ""
186186msgid "Reset"
187187msgstr ""
188188
189−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
189+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
190190msgid "Show less"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570
193+#: qml/Dash/GenericScopeView.qml:579
194194msgid "Show all"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:627
197+#: qml/Dash/GenericScopeView.qml:636
198198msgctxt "Label: Hint for dash search line edit"
199199msgid "Search"
200200msgstr ""
po/ckb.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\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"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -186,15 +186,15 @@ msgstr ""
186186msgid "Reset"
187187msgstr ""
188188
189−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
189+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
190190msgid "Show less"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570
193+#: qml/Dash/GenericScopeView.qml:579
194194msgid "Show all"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:627
197+#: qml/Dash/GenericScopeView.qml:636
198198msgctxt "Label: Hint for dash search line edit"
199199msgid "Search"
200200msgstr ""
po/cs.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-07-07 10:44+0000\n"
1212"Last-Translator: Vojtěch Daněk <vdanek@outlook.com>\n"
1313"Language-Team: Czech <cs@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:36+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020"Language: cs\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -192,15 +192,15 @@ msgstr ""
192192msgid "Reset"
193193msgstr ""
194194
195−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
195+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
196196msgid "Show less"
197197msgstr ""
198198
199−#: qml/Dash/GenericScopeView.qml:570
199+#: qml/Dash/GenericScopeView.qml:579
200200msgid "Show all"
201201msgstr ""
202202
203−#: qml/Dash/GenericScopeView.qml:627
203+#: qml/Dash/GenericScopeView.qml:636
204204msgctxt "Label: Hint for dash search line edit"
205205msgid "Search"
206206msgstr "Hledat"
po/cy.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-07-31 13:21+0000\n"
1212"Last-Translator: Owen Llywelyn <owen.llywelyn@gmail.com>\n"
1313"Language-Team: Welsh <cy@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=4; plural=n==1 ? 0 : n==2 ? 1 : (n != 8 && n != 11) ? "
1818"2 : 3;\n"
19−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
20−"X-Generator: Launchpad (build 17995)\n"
19+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
20+"X-Generator: Launchpad (build 18025)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -193,15 +193,15 @@ msgstr ""
193193msgid "Reset"
194194msgstr ""
195195
196−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
196+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
197197msgid "Show less"
198198msgstr ""
199199
200−#: qml/Dash/GenericScopeView.qml:570
200+#: qml/Dash/GenericScopeView.qml:579
201201msgid "Show all"
202202msgstr ""
203203
204−#: qml/Dash/GenericScopeView.qml:627
204+#: qml/Dash/GenericScopeView.qml:636
205205msgctxt "Label: Hint for dash search line edit"
206206msgid "Search"
207207msgstr "Chwilio"
po/da.po+6−6
@@ -8,7 +8,7 @@ msgid ""
88msgstr ""
99"Project-Id-Version: unity8\n"
1010"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
11+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1212"PO-Revision-Date: 2015-07-06 12:05+0000\n"
1313"Last-Translator: Folmer Fredslund <Unknown>\n"
1414"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Type: text/plain; charset=UTF-8\n"
1717"Content-Transfer-Encoding: 8bit\n"
1818"Plural-Forms: nplurals=2; plural=n != 1;\n"
19−"X-Launchpad-Export-Date: 2016-04-30 05:36+0000\n"
20−"X-Generator: Launchpad (build 17995)\n"
19+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
20+"X-Generator: Launchpad (build 18025)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -193,15 +193,15 @@ msgstr ""
193193msgid "Reset"
194194msgstr ""
195195
196−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
196+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
197197msgid "Show less"
198198msgstr ""
199199
200−#: qml/Dash/GenericScopeView.qml:570
200+#: qml/Dash/GenericScopeView.qml:579
201201msgid "Show all"
202202msgstr ""
203203
204−#: qml/Dash/GenericScopeView.qml:627
204+#: qml/Dash/GenericScopeView.qml:636
205205msgctxt "Label: Hint for dash search line edit"
206206msgid "Search"
207207msgstr "Søg"
po/de.po+12−10
@@ -7,16 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
11−"PO-Revision-Date: 2016-03-13 15:41+0000\n"
12−"Last-Translator: schuko24 <gerdsaenger@t-online.de>\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
11+"PO-Revision-Date: 2016-05-10 19:23+0000\n"
12+"Last-Translator: Torsten Franz <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"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -194,15 +194,15 @@ msgstr "Ergebnisse verfeinern"
194194msgid "Reset"
195195msgstr "Zurücksetzen"
196196
197−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
197+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
198198msgid "Show less"
199−msgstr ""
199+msgstr "Weniger anzeigen"
200200
201−#: qml/Dash/GenericScopeView.qml:570
201+#: qml/Dash/GenericScopeView.qml:579
202202msgid "Show all"
203−msgstr ""
203+msgstr "Alle anzeigen"
204204
205−#: qml/Dash/GenericScopeView.qml:627
205+#: qml/Dash/GenericScopeView.qml:636
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr "Suchen"
@@ -466,6 +466,8 @@ msgstr "Von der linken Kante wischen, um den Starter zu öffnen"
466466#: qml/Tutorial/TutorialRight.qml:55
467467msgid "Push your mouse against the right edge to view your open apps"
468468msgstr ""
469+"Bewegen Sie den Mauszeiger an die rechte Kante, um die geöffneten "
470+"Anwendungen zu sehen"
469471
470472#: qml/Tutorial/TutorialRight.qml:56
471473msgid "Short or long swipe from the right edge to view your open apps"
po/el.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2016-04-25 16:24+0000\n"
1212"Last-Translator: Aggelos Arnaoutis <angelosarn@hotmail.com>\n"
1313"Language-Team: Greek <el@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -194,15 +194,15 @@ msgstr "Βελτιώστε τα αποτελέσματά σας"
194194msgid "Reset"
195195msgstr "Επαναφορά"
196196
197−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
197+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
198198msgid "Show less"
199199msgstr ""
200200
201−#: qml/Dash/GenericScopeView.qml:570
201+#: qml/Dash/GenericScopeView.qml:579
202202msgid "Show all"
203203msgstr ""
204204
205−#: qml/Dash/GenericScopeView.qml:627
205+#: qml/Dash/GenericScopeView.qml:636
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr "Αναζήτηση"
po/en_AU.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2016-03-27 10:09+0000\n"
1212"Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
1313"Language-Team: English (Australia) <en_AU@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -188,15 +188,15 @@ msgstr "Refine your results"
188188msgid "Reset"
189189msgstr "Reset"
190190
191−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
191+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
192192msgid "Show less"
193193msgstr ""
194194
195−#: qml/Dash/GenericScopeView.qml:570
195+#: qml/Dash/GenericScopeView.qml:579
196196msgid "Show all"
197197msgstr ""
198198
199−#: qml/Dash/GenericScopeView.qml:627
199+#: qml/Dash/GenericScopeView.qml:636
200200msgctxt "Label: Hint for dash search line edit"
201201msgid "Search"
202202msgstr "Search"
po/en_GB.po+9−9
@@ -7,16 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
11−"PO-Revision-Date: 2016-04-29 10:35+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
11+"PO-Revision-Date: 2016-05-10 10:10+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"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -188,15 +188,15 @@ msgstr "Refine your results"
188188msgid "Reset"
189189msgstr "Reset"
190190
191−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
191+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
192192msgid "Show less"
193−msgstr ""
193+msgstr "Show less"
194194
195−#: qml/Dash/GenericScopeView.qml:570
195+#: qml/Dash/GenericScopeView.qml:579
196196msgid "Show all"
197−msgstr ""
197+msgstr "Show all"
198198
199−#: qml/Dash/GenericScopeView.qml:627
199+#: qml/Dash/GenericScopeView.qml:636
200200msgctxt "Label: Hint for dash search line edit"
201201msgid "Search"
202202msgstr "Search"
po/eo.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-06-06 23:37+0000\n"
1212"Last-Translator: Eliovir <Unknown>\n"
1313"Language-Team: Esperanto <eo@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:36+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -186,15 +186,15 @@ msgstr ""
186186msgid "Reset"
187187msgstr ""
188188
189−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
189+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
190190msgid "Show less"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570
193+#: qml/Dash/GenericScopeView.qml:579
194194msgid "Show all"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:627
197+#: qml/Dash/GenericScopeView.qml:636
198198msgctxt "Label: Hint for dash search line edit"
199199msgid "Search"
200200msgstr "Serĉi"
po/es.po+8−8
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2016-03-25 12:02+0000\n"
1212"Last-Translator: Adolfo Jayme <fitoschido@gmail.com>\n"
1313"Language-Team: Spanish <es@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -193,15 +193,15 @@ msgstr "Refinar resultados"
193193msgid "Reset"
194194msgstr "Restablecer"
195195
196−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
196+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
197197msgid "Show less"
198−msgstr ""
198+msgstr "Mostrar menos"
199199
200−#: qml/Dash/GenericScopeView.qml:570
200+#: qml/Dash/GenericScopeView.qml:579
201201msgid "Show all"
202−msgstr ""
202+msgstr "Mostrar todo"
203203
204−#: qml/Dash/GenericScopeView.qml:627
204+#: qml/Dash/GenericScopeView.qml:636
205205msgctxt "Label: Hint for dash search line edit"
206206msgid "Search"
207207msgstr "Búsqueda"
po/eu.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-07-13 23:29+0000\n"
1212"Last-Translator: Ibai Oihanguren Sala <Unknown>\n"
1313"Language-Team: Basque <eu@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:36+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -189,15 +189,15 @@ msgstr ""
189189msgid "Reset"
190190msgstr ""
191191
192−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
192+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
193193msgid "Show less"
194194msgstr ""
195195
196−#: qml/Dash/GenericScopeView.qml:570
196+#: qml/Dash/GenericScopeView.qml:579
197197msgid "Show all"
198198msgstr ""
199199
200−#: qml/Dash/GenericScopeView.qml:627
200+#: qml/Dash/GenericScopeView.qml:636
201201msgctxt "Label: Hint for dash search line edit"
202202msgid "Search"
203203msgstr "Bilatu"
po/fa.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2016-03-30 14:29+0000\n"
1212"Last-Translator: Danial Behzadi <dani.behzi@gmail.com>\n"
1313"Language-Team: Persian <fa@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -189,15 +189,15 @@ msgstr "نتایجتان را بهبود دهید"
189189msgid "Reset"
190190msgstr "بازنشانی"
191191
192−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
192+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
193193msgid "Show less"
194194msgstr ""
195195
196−#: qml/Dash/GenericScopeView.qml:570
196+#: qml/Dash/GenericScopeView.qml:579
197197msgid "Show all"
198198msgstr ""
199199
200−#: qml/Dash/GenericScopeView.qml:627
200+#: qml/Dash/GenericScopeView.qml:636
201201msgctxt "Label: Hint for dash search line edit"
202202msgid "Search"
203203msgstr "جست‌وجو"
po/fi.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-07-04 18:32+0000\n"
1212"Last-Translator: Jiri Grönroos <Unknown>\n"
1313"Language-Team: Finnish <fi@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -192,15 +192,15 @@ msgstr "Tarkenna tuloksia"
192192msgid "Reset"
193193msgstr "Palauta"
194194
195−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
195+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
196196msgid "Show less"
197197msgstr ""
198198
199−#: qml/Dash/GenericScopeView.qml:570
199+#: qml/Dash/GenericScopeView.qml:579
200200msgid "Show all"
201201msgstr ""
202202
203−#: qml/Dash/GenericScopeView.qml:627
203+#: qml/Dash/GenericScopeView.qml:636
204204msgctxt "Label: Hint for dash search line edit"
205205msgid "Search"
206206msgstr "Etsi"
po/fo.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\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"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:36+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -186,15 +186,15 @@ msgstr ""
186186msgid "Reset"
187187msgstr ""
188188
189−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
189+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
190190msgid "Show less"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570
193+#: qml/Dash/GenericScopeView.qml:579
194194msgid "Show all"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:627
197+#: qml/Dash/GenericScopeView.qml:636
198198msgctxt "Label: Hint for dash search line edit"
199199msgid "Search"
200200msgstr ""
po/fr.po+11−11
@@ -7,16 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
11−"PO-Revision-Date: 2016-05-01 09:09+0000\n"
12−"Last-Translator: Anne <anneonyme017@gmail.com>\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
11+"PO-Revision-Date: 2016-05-19 21:22+0000\n"
12+"Last-Translator: Ubuntu-QC-1 <Unknown>\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"
1717"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2016-05-02 05:45+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-20 05:37+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -37,13 +37,13 @@ msgstr "Détacher le raccourci"
3737
3838#: qml/Components/DelayedLockscreen.qml:49
3939msgid "Device Locked"
40−msgstr "Périphérique verrouillé"
40+msgstr "Appareil verrouillé"
4141
4242#: qml/Components/DelayedLockscreen.qml:64
4343msgid "You have been locked out due to too many failed passphrase attempts."
4444msgstr ""
45−"Vous avez été bloqué suite à un trop grand nombre de tentatives de saisie "
46−"d'une phrase de passe erronée."
45+"L'appareil a été verrouillé suite à un trop grand nombre de tentatives de "
46+"saisie d'une phrase de passe erronée."
4747
4848#: qml/Components/DelayedLockscreen.qml:65
4949msgid "You have been locked out due to too many failed passcode attempts."
@@ -196,15 +196,15 @@ msgstr "Affiner vos résultats"
196196msgid "Reset"
197197msgstr "Réinitialiser"
198198
199−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
199+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
200200msgid "Show less"
201201msgstr "Afficher plus"
202202
203−#: qml/Dash/GenericScopeView.qml:570
203+#: qml/Dash/GenericScopeView.qml:579
204204msgid "Show all"
205205msgstr "Tout afficher"
206206
207−#: qml/Dash/GenericScopeView.qml:627
207+#: qml/Dash/GenericScopeView.qml:636
208208msgctxt "Label: Hint for dash search line edit"
209209msgid "Search"
210210msgstr "Rechercher"
po/ga.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2016-01-25 11:33+0000\n"
1212"Last-Translator: Joshua Kiley <Unknown>\n"
1313"Language-Team: Irish <ga@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n==2 ? 1 : 2;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -187,15 +187,15 @@ msgstr ""
187187msgid "Reset"
188188msgstr ""
189189
190−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
190+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
191191msgid "Show less"
192192msgstr ""
193193
194−#: qml/Dash/GenericScopeView.qml:570
194+#: qml/Dash/GenericScopeView.qml:579
195195msgid "Show all"
196196msgstr ""
197197
198−#: qml/Dash/GenericScopeView.qml:627
198+#: qml/Dash/GenericScopeView.qml:636
199199msgctxt "Label: Hint for dash search line edit"
200200msgid "Search"
201201msgstr "Cuardach"
po/gd.po+8−8
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2016-04-08 18:34+0000\n"
1212"Last-Translator: Akerbeltz <fios@akerbeltz.org>\n"
1313"Language-Team: Fòram na Gàidhlig\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : "
1818"(n > 2 && n < 20) ? 2 : 3;\n"
19−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
20−"X-Generator: Launchpad (build 17995)\n"
19+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
20+"X-Generator: Launchpad (build 18025)\n"
2121"Language: gd\n"
2222
2323#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -198,15 +198,15 @@ msgstr "Cuir na toraidhean air gleus"
198198msgid "Reset"
199199msgstr "Ath-shuidhich"
200200
201−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
201+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
202202msgid "Show less"
203−msgstr ""
203+msgstr "Seall nas lugha dhiubh"
204204
205−#: qml/Dash/GenericScopeView.qml:570
205+#: qml/Dash/GenericScopeView.qml:579
206206msgid "Show all"
207−msgstr ""
207+msgstr "Seall na h-uile"
208208
209−#: qml/Dash/GenericScopeView.qml:627
209+#: qml/Dash/GenericScopeView.qml:636
210210msgctxt "Label: Hint for dash search line edit"
211211msgid "Search"
212212msgstr "Lorg"
po/gl.po+8−8
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2016-01-15 14:56+0000\n"
1212"Last-Translator: Marcos Lans <Unknown>\n"
1313"Language-Team: Galician <gl@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -188,15 +188,15 @@ msgstr "Afinar os resultados"
188188msgid "Reset"
189189msgstr "Restabelecer"
190190
191−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
191+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
192192msgid "Show less"
193−msgstr ""
193+msgstr "Mostrar menos"
194194
195−#: qml/Dash/GenericScopeView.qml:570
195+#: qml/Dash/GenericScopeView.qml:579
196196msgid "Show all"
197−msgstr ""
197+msgstr "Mostrar todo"
198198
199−#: qml/Dash/GenericScopeView.qml:627
199+#: qml/Dash/GenericScopeView.qml:636
200200msgctxt "Label: Hint for dash search line edit"
201201msgid "Search"
202202msgstr "Buscar"
po/gv.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-04-02 14:24+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Manx <gv@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : (n == 2 ? 1 : 2);\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -193,15 +193,15 @@ msgstr ""
193193msgid "Reset"
194194msgstr ""
195195
196−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
196+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
197197msgid "Show less"
198198msgstr ""
199199
200−#: qml/Dash/GenericScopeView.qml:570
200+#: qml/Dash/GenericScopeView.qml:579
201201msgid "Show all"
202202msgstr ""
203203
204−#: qml/Dash/GenericScopeView.qml:627
204+#: qml/Dash/GenericScopeView.qml:636
205205msgctxt "Label: Hint for dash search line edit"
206206msgid "Search"
207207msgstr ""
po/he.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-07-12 08:47+0000\n"
1212"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
1313"Language-Team: Hebrew <he@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -186,15 +186,15 @@ msgstr ""
186186msgid "Reset"
187187msgstr ""
188188
189−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
189+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
190190msgid "Show less"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570
193+#: qml/Dash/GenericScopeView.qml:579
194194msgid "Show all"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:627
197+#: qml/Dash/GenericScopeView.qml:636
198198msgctxt "Label: Hint for dash search line edit"
199199msgid "Search"
200200msgstr "חיפוש"
po/hi.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2014-01-15 01:49+0000\n"
1212"Last-Translator: Siddhanathan Shanmugam <Unknown>\n"
1313"Language-Team: Hindi <hi@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -186,15 +186,15 @@ msgstr ""
186186msgid "Reset"
187187msgstr ""
188188
189−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
189+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
190190msgid "Show less"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570
193+#: qml/Dash/GenericScopeView.qml:579
194194msgid "Show all"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:627
197+#: qml/Dash/GenericScopeView.qml:636
198198msgctxt "Label: Hint for dash search line edit"
199199msgid "Search"
200200msgstr ""
po/hr.po+73−10
@@ -7,17 +7,17 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
11−"PO-Revision-Date: 2013-06-27 04:14+0000\n"
12−"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
11+"PO-Revision-Date: 2016-05-04 17:52+0000\n"
12+"Last-Translator: gogo <trebelnik2@gmail.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"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
20−"X-Generator: Launchpad (build 17995)\n"
19+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
20+"X-Generator: Launchpad (build 18025)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -192,15 +192,15 @@ msgstr "Precizirajte svoje rezultate"
192192msgid "Reset"
193193msgstr "Ponovno postavi"
194194
195−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
195+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
196196msgid "Show less"
197−msgstr ""
197+msgstr "Prikaži manje"
198198
199−#: qml/Dash/GenericScopeView.qml:570
199+#: qml/Dash/GenericScopeView.qml:579
200200msgid "Show all"
201−msgstr ""
201+msgstr "Prikaži sve"
202202
203−#: qml/Dash/GenericScopeView.qml:627
203+#: qml/Dash/GenericScopeView.qml:636
204204msgctxt "Label: Hint for dash search line edit"
205205msgid "Search"
206206msgstr "Pretraži"
@@ -467,6 +467,7 @@ msgstr "Povucite od lijevog ruba za otvaranje pokretača"
467467#: qml/Tutorial/TutorialRight.qml:55
468468msgid "Push your mouse against the right edge to view your open apps"
469469msgstr ""
470+"Gurnite svoj miš uz desni rub kako bi vidjeli svoje otvorene aplikacije"
470471
471472#: qml/Tutorial/TutorialRight.qml:56
472473msgid "Short or long swipe from the right edge to view your open apps"
@@ -782,9 +783,36 @@ msgstr "Vrlo slaba lozinka"
782783#~ msgid "Search"
783784#~ msgstr "Pretraživanje"
784785
786+#~ msgid "Top edge"
787+#~ msgstr "Gornji rub"
788+
789+#~ msgid "Left edge"
790+#~ msgstr "Lijevi rub"
791+
792+#~ msgid "Well done"
793+#~ msgstr "Dobro obavljeno"
794+
795+#~ msgid "Right edge"
796+#~ msgstr "Desni rub"
797+
798+#~ msgid "Close"
799+#~ msgstr "Zatvori"
800+
801+#~ msgid "Power"
802+#~ msgstr "Energija"
803+
804+#~ msgid "Power off"
805+#~ msgstr "Isključivanje"
806+
807+#~ msgid "Skip intro"
808+#~ msgstr "Preskoči uvod"
809+
785810#~ msgid "See all"
786811#~ msgstr "Prikaži sve"
787812
813+#~ msgid "Settings"
814+#~ msgstr "Postavke"
815+
788816#~ msgid "See less"
789817#~ msgstr "Prikaži manje"
790818
@@ -1013,3 +1041,38 @@ msgstr "Vrlo slaba lozinka"
10131041#~ msgid "Hover your mouse on the right edge to view your open apps"
10141042#~ msgstr ""
10151043#~ "Lebdite svojim mišem po desnom rubu kako bi vidjeli otvorene aplikacije"
1044+
1045+#~ msgid "Please re-enter"
1046+#~ msgstr "Ponovno upišite"
1047+
1048+#~ msgid "Log out"
1049+#~ msgstr "Odjava"
1050+
1051+#~ msgid "Reboot"
1052+#~ msgstr "Ponovno pokretanje"
1053+
1054+#~ msgid "Shut down"
1055+#~ msgstr "Isključivanje"
1056+
1057+#~ msgid "Try swiping from the top edge to access the indicators"
1058+#~ msgstr "Za pristup indikatorima pokušajte povući s desnog ruba"
1059+
1060+#~ msgid "Try swiping from the right edge to unlock the phone"
1061+#~ msgstr "Za otključavanje telefona pokušajte povući s desnog ruba"
1062+
1063+#~ msgid "Swipe up again to close the settings screen"
1064+#~ msgstr "Za zatvaranje zaslona postavki povucite prema gore"
1065+
1066+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
1067+#~ msgstr ""
1068+#~ "Za otkrivanje pokretača brzog pristupa aplikacijama povucite s lijeve strane"
1069+
1070+#~ msgid ""
1071+#~ "You have now mastered the edge gestures and can start using the "
1072+#~ "phone<br><br>Tap on the screen to start"
1073+#~ msgstr ""
1074+#~ "Uspješno ste ovladali korištenjem rubova zaslona i možete započeti s "
1075+#~ "korištenjem telefona<br><br>Dotaknite zaslon kako bi započeli"
1076+
1077+#~ msgid "Store"
1078+#~ msgstr "Pohrana"
po/hu.po+8−8
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2016-03-24 09:19+0000\n"
1212"Last-Translator: Richard Somlói <ricsipontaz@gmail.com>\n"
1313"Language-Team: Hungarian <hu@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -190,15 +190,15 @@ msgstr "Találatok finomítása"
190190msgid "Reset"
191191msgstr "Alaphelyzetbe állítás"
192192
193−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
193+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
194194msgid "Show less"
195−msgstr ""
195+msgstr "Kevesebb"
196196
197−#: qml/Dash/GenericScopeView.qml:570
197+#: qml/Dash/GenericScopeView.qml:579
198198msgid "Show all"
199−msgstr ""
199+msgstr "Összes megjelenítése"
200200
201−#: qml/Dash/GenericScopeView.qml:627
201+#: qml/Dash/GenericScopeView.qml:636
202202msgctxt "Label: Hint for dash search line edit"
203203msgid "Search"
204204msgstr "Keresés"
po/hy.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2014-10-28 06:34+0000\n"
1212"Last-Translator: Vahan Harutyunyan <Unknown>\n"
1313"Language-Team: Armenian <hy@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:36+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -190,15 +190,15 @@ msgstr ""
190190msgid "Reset"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
193+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
194194msgid "Show less"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:570
197+#: qml/Dash/GenericScopeView.qml:579
198198msgid "Show all"
199199msgstr ""
200200
201−#: qml/Dash/GenericScopeView.qml:627
201+#: qml/Dash/GenericScopeView.qml:636
202202msgctxt "Label: Hint for dash search line edit"
203203msgid "Search"
204204msgstr ""
po/ia.po+8−8
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-08-25 19:31+0000\n"
1212"Last-Translator: karm <melo@carmu.com>\n"
1313"Language-Team: Interlingua <ia@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -190,15 +190,15 @@ msgstr "Poli tu resultatos"
190190msgid "Reset"
191191msgstr "Restabilir"
192192
193−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
193+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
194194msgid "Show less"
195−msgstr ""
195+msgstr "Monstrar minus"
196196
197−#: qml/Dash/GenericScopeView.qml:570
197+#: qml/Dash/GenericScopeView.qml:579
198198msgid "Show all"
199−msgstr ""
199+msgstr "Monstrar toto"
200200
201−#: qml/Dash/GenericScopeView.qml:627
201+#: qml/Dash/GenericScopeView.qml:636
202202msgctxt "Label: Hint for dash search line edit"
203203msgid "Search"
204204msgstr "Cerca"
po/id.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\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"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -189,15 +189,15 @@ msgstr ""
189189msgid "Reset"
190190msgstr ""
191191
192−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
192+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
193193msgid "Show less"
194194msgstr ""
195195
196−#: qml/Dash/GenericScopeView.qml:570
196+#: qml/Dash/GenericScopeView.qml:579
197197msgid "Show all"
198198msgstr ""
199199
200−#: qml/Dash/GenericScopeView.qml:627
200+#: qml/Dash/GenericScopeView.qml:636
201201msgctxt "Label: Hint for dash search line edit"
202202msgid "Search"
203203msgstr ""
po/is.po+6−6
@@ -9,7 +9,7 @@ msgid ""
99msgstr ""
1010"Project-Id-Version: po_unity8-is\n"
1111"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
12−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
12+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1313"PO-Revision-Date: 2014-11-13 09:32+0000\n"
1414"Last-Translator: Sveinn í Felli <sv1@fellsnet.is>\n"
1515"Language-Team: Icelandic <translation-team-is@lists.sourceforge.net>\n"
@@ -17,8 +17,8 @@ msgstr ""
1717"Content-Type: text/plain; charset=UTF-8\n"
1818"Content-Transfer-Encoding: 8bit\n"
1919"Plural-Forms: nplurals=2; plural=n != 1;\n"
20−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
21−"X-Generator: Launchpad (build 17995)\n"
20+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
21+"X-Generator: Launchpad (build 18025)\n"
2222"Language: is\n"
2323
2424#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -195,15 +195,15 @@ msgstr ""
195195msgid "Reset"
196196msgstr ""
197197
198−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
198+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
199199msgid "Show less"
200200msgstr ""
201201
202−#: qml/Dash/GenericScopeView.qml:570
202+#: qml/Dash/GenericScopeView.qml:579
203203msgid "Show all"
204204msgstr ""
205205
206−#: qml/Dash/GenericScopeView.qml:627
206+#: qml/Dash/GenericScopeView.qml:636
207207msgctxt "Label: Hint for dash search line edit"
208208msgid "Search"
209209msgstr ""
po/it.po+10−10
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2016-04-03 16:08+0000\n"
1212"Last-Translator: Milo Casagrande <milo.casagrande@gmail.com>\n"
1313"Language-Team: Italian <it@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -194,15 +194,15 @@ msgstr "Affina la ricerca"
194194msgid "Reset"
195195msgstr "Azzera"
196196
197−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
197+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
198198msgid "Show less"
199−msgstr ""
199+msgstr "Mostra di meno"
200200
201−#: qml/Dash/GenericScopeView.qml:570
201+#: qml/Dash/GenericScopeView.qml:579
202202msgid "Show all"
203−msgstr ""
203+msgstr "Mostra tutto"
204204
205−#: qml/Dash/GenericScopeView.qml:627
205+#: qml/Dash/GenericScopeView.qml:636
206206msgctxt "Label: Hint for dash search line edit"
207207msgid "Search"
208208msgstr "Cerca"
@@ -309,7 +309,7 @@ msgid ""
309309"If passcode is entered incorrectly, your phone will conduct a factory reset "
310310"and all personal data will be deleted."
311311msgstr ""
312−"Se verrà inserito una passcode errato, il telefono eseguirà un ripristino "
312+"Se verrà inserito un passcode errato, il telefono eseguirà un ripristino "
313313"delle impostazioni di fabbrica e tutti i dati personali verranno eliminati."
314314
315315#: qml/Greeter/NarrowView.qml:116
@@ -465,7 +465,7 @@ msgstr "Scorrere dal bordo sinistro per aprire il launcher"
465465
466466#: qml/Tutorial/TutorialRight.qml:55
467467msgid "Push your mouse against the right edge to view your open apps"
468−msgstr ""
468+msgstr "Spostare il mouse sul bordo destro per vedere le app aperte"
469469
470470#: qml/Tutorial/TutorialRight.qml:56
471471msgid "Short or long swipe from the right edge to view your open apps"
po/ja.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-10-05 10:05+0000\n"
1212"Last-Translator: Kentaro Kazuhama <Unknown>\n"
1313"Language-Team: Japanese <ja@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -185,15 +185,15 @@ msgstr ""
185185msgid "Reset"
186186msgstr ""
187187
188−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
188+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
189189msgid "Show less"
190190msgstr ""
191191
192−#: qml/Dash/GenericScopeView.qml:570
192+#: qml/Dash/GenericScopeView.qml:579
193193msgid "Show all"
194194msgstr ""
195195
196−#: qml/Dash/GenericScopeView.qml:627
196+#: qml/Dash/GenericScopeView.qml:636
197197msgctxt "Label: Hint for dash search line edit"
198198msgid "Search"
199199msgstr ""
po/km.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2014-08-20 02:48+0000\n"
1212"Last-Translator: Sophea Sok <sksophea@gmail.com>\n"
1313"Language-Team: Khmer <km@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -188,15 +188,15 @@ msgstr ""
188188msgid "Reset"
189189msgstr "កំណត់​ឡើង​វិញ​"
190190
191−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
191+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
192192msgid "Show less"
193193msgstr ""
194194
195−#: qml/Dash/GenericScopeView.qml:570
195+#: qml/Dash/GenericScopeView.qml:579
196196msgid "Show all"
197197msgstr ""
198198
199−#: qml/Dash/GenericScopeView.qml:627
199+#: qml/Dash/GenericScopeView.qml:636
200200msgctxt "Label: Hint for dash search line edit"
201201msgid "Search"
202202msgstr "ស្វែងរក"
po/kn.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\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"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -186,15 +186,15 @@ msgstr ""
186186msgid "Reset"
187187msgstr ""
188188
189−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
189+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
190190msgid "Show less"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570
193+#: qml/Dash/GenericScopeView.qml:579
194194msgid "Show all"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:627
197+#: qml/Dash/GenericScopeView.qml:636
198198msgctxt "Label: Hint for dash search line edit"
199199msgid "Search"
200200msgstr ""
po/ko.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2014-08-19 13:02+0000\n"
1212"Last-Translator: MinSik CHO <Unknown>\n"
1313"Language-Team: Korean <ko@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -185,15 +185,15 @@ msgstr ""
185185msgid "Reset"
186186msgstr ""
187187
188−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
188+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
189189msgid "Show less"
190190msgstr ""
191191
192−#: qml/Dash/GenericScopeView.qml:570
192+#: qml/Dash/GenericScopeView.qml:579
193193msgid "Show all"
194194msgstr ""
195195
196−#: qml/Dash/GenericScopeView.qml:627
196+#: qml/Dash/GenericScopeView.qml:636
197197msgctxt "Label: Hint for dash search line edit"
198198msgid "Search"
199199msgstr "검색"
po/ku.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2014-09-10 13:14+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Kurdish <ku@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -188,15 +188,15 @@ msgstr ""
188188msgid "Reset"
189189msgstr ""
190190
191−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
191+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
192192msgid "Show less"
193193msgstr ""
194194
195−#: qml/Dash/GenericScopeView.qml:570
195+#: qml/Dash/GenericScopeView.qml:579
196196msgid "Show all"
197197msgstr ""
198198
199−#: qml/Dash/GenericScopeView.qml:627
199+#: qml/Dash/GenericScopeView.qml:636
200200msgctxt "Label: Hint for dash search line edit"
201201msgid "Search"
202202msgstr ""
po/ky.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\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"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -186,15 +186,15 @@ msgstr ""
186186msgid "Reset"
187187msgstr ""
188188
189−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
189+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
190190msgid "Show less"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570
193+#: qml/Dash/GenericScopeView.qml:579
194194msgid "Show all"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:627
197+#: qml/Dash/GenericScopeView.qml:636
198198msgctxt "Label: Hint for dash search line edit"
199199msgid "Search"
200200msgstr ""
po/lo.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\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"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -186,15 +186,15 @@ msgstr ""
186186msgid "Reset"
187187msgstr ""
188188
189−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
189+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
190190msgid "Show less"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570
193+#: qml/Dash/GenericScopeView.qml:579
194194msgid "Show all"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:627
197+#: qml/Dash/GenericScopeView.qml:636
198198msgctxt "Label: Hint for dash search line edit"
199199msgid "Search"
200200msgstr ""
po/lt.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\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"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"(n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
20−"X-Generator: Launchpad (build 17995)\n"
19+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
20+"X-Generator: Launchpad (build 18025)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -187,15 +187,15 @@ msgstr ""
187187msgid "Reset"
188188msgstr ""
189189
190−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
190+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
191191msgid "Show less"
192192msgstr ""
193193
194−#: qml/Dash/GenericScopeView.qml:570
194+#: qml/Dash/GenericScopeView.qml:579
195195msgid "Show all"
196196msgstr ""
197197
198−#: qml/Dash/GenericScopeView.qml:627
198+#: qml/Dash/GenericScopeView.qml:636
199199msgctxt "Label: Hint for dash search line edit"
200200msgid "Search"
201201msgstr ""
po/lv.po+6−6
@@ -8,7 +8,7 @@ msgid ""
88msgstr ""
99"Project-Id-Version: unity\n"
1010"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
11+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1212"PO-Revision-Date: 2015-11-22 19:13+0000\n"
1313"Last-Translator: Klavs Anson <anson.klavs@gmail.com>\n"
1414"Language-Team: Latvian <lata-l10n@googlegroups.com>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Type: text/plain; charset=UTF-8\n"
1717"Content-Transfer-Encoding: 8bit\n"
1818"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
20−"X-Generator: Launchpad (build 17995)\n"
19+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
20+"X-Generator: Launchpad (build 18025)\n"
2121"Language: lv\n"
2222
2323#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -191,15 +191,15 @@ msgstr ""
191191msgid "Reset"
192192msgstr ""
193193
194−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
194+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
195195msgid "Show less"
196196msgstr ""
197197
198−#: qml/Dash/GenericScopeView.qml:570
198+#: qml/Dash/GenericScopeView.qml:579
199199msgid "Show all"
200200msgstr ""
201201
202−#: qml/Dash/GenericScopeView.qml:627
202+#: qml/Dash/GenericScopeView.qml:636
203203msgctxt "Label: Hint for dash search line edit"
204204msgid "Search"
205205msgstr "Meklēt"
po/ml.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2013-11-23 11:44+0000\n"
1212"Last-Translator: ST Alfas <Unknown>\n"
1313"Language-Team: Malayalam <ml@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -186,15 +186,15 @@ msgstr ""
186186msgid "Reset"
187187msgstr ""
188188
189−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
189+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
190190msgid "Show less"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570
193+#: qml/Dash/GenericScopeView.qml:579
194194msgid "Show all"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:627
197+#: qml/Dash/GenericScopeView.qml:636
198198msgctxt "Label: Hint for dash search line edit"
199199msgid "Search"
200200msgstr ""
po/mr.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\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"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -186,15 +186,15 @@ msgstr ""
186186msgid "Reset"
187187msgstr ""
188188
189−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
189+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
190190msgid "Show less"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570
193+#: qml/Dash/GenericScopeView.qml:579
194194msgid "Show all"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:627
197+#: qml/Dash/GenericScopeView.qml:636
198198msgctxt "Label: Hint for dash search line edit"
199199msgid "Search"
200200msgstr "शोध"
po/ms.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\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"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -188,15 +188,15 @@ msgstr ""
188188msgid "Reset"
189189msgstr ""
190190
191−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
191+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
192192msgid "Show less"
193193msgstr ""
194194
195−#: qml/Dash/GenericScopeView.qml:570
195+#: qml/Dash/GenericScopeView.qml:579
196196msgid "Show all"
197197msgstr ""
198198
199−#: qml/Dash/GenericScopeView.qml:627
199+#: qml/Dash/GenericScopeView.qml:636
200200msgctxt "Label: Hint for dash search line edit"
201201msgid "Search"
202202msgstr "Gelintar"
po/my.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\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"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:36+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -186,15 +186,15 @@ msgstr ""
186186msgid "Reset"
187187msgstr ""
188188
189−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
189+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
190190msgid "Show less"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570
193+#: qml/Dash/GenericScopeView.qml:579
194194msgid "Show all"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:627
197+#: qml/Dash/GenericScopeView.qml:636
198198msgctxt "Label: Hint for dash search line edit"
199199msgid "Search"
200200msgstr "ရှာဖွေရန်"
po/nb.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2016-03-29 08:56+0000\n"
1212"Last-Translator: Åka Sikrom <Unknown>\n"
1313"Language-Team: Norwegian Bokmal <nb@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -192,15 +192,15 @@ msgstr "Filtrer søketreff"
192192msgid "Reset"
193193msgstr "Tilbakestill"
194194
195−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
195+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
196196msgid "Show less"
197197msgstr ""
198198
199−#: qml/Dash/GenericScopeView.qml:570
199+#: qml/Dash/GenericScopeView.qml:579
200200msgid "Show all"
201201msgstr ""
202202
203−#: qml/Dash/GenericScopeView.qml:627
203+#: qml/Dash/GenericScopeView.qml:636
204204msgctxt "Label: Hint for dash search line edit"
205205msgid "Search"
206206msgstr "Søk"
po/ne.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-12-06 15:11+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Nepali <ne@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -186,15 +186,15 @@ msgstr ""
186186msgid "Reset"
187187msgstr ""
188188
189−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
189+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
190190msgid "Show less"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570
193+#: qml/Dash/GenericScopeView.qml:579
194194msgid "Show all"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:627
197+#: qml/Dash/GenericScopeView.qml:636
198198msgctxt "Label: Hint for dash search line edit"
199199msgid "Search"
200200msgstr ""
po/nl.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-07-07 07:14+0000\n"
1212"Last-Translator: Hannie Dumoleyn <Unknown>\n"
1313"Language-Team: Dutch <nl@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:36+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -195,15 +195,15 @@ msgstr "Resultaten verfijnen"
195195msgid "Reset"
196196msgstr "Herstellen"
197197
198−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
198+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
199199msgid "Show less"
200200msgstr ""
201201
202−#: qml/Dash/GenericScopeView.qml:570
202+#: qml/Dash/GenericScopeView.qml:579
203203msgid "Show all"
204204msgstr ""
205205
206−#: qml/Dash/GenericScopeView.qml:627
206+#: qml/Dash/GenericScopeView.qml:636
207207msgctxt "Label: Hint for dash search line edit"
208208msgid "Search"
209209msgstr "Zoeken"
po/nn.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-05-12 11:32+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Norwegian Nynorsk <nn@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -186,15 +186,15 @@ msgstr ""
186186msgid "Reset"
187187msgstr ""
188188
189−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
189+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
190190msgid "Show less"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570
193+#: qml/Dash/GenericScopeView.qml:579
194194msgid "Show all"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:627
197+#: qml/Dash/GenericScopeView.qml:636
198198msgctxt "Label: Hint for dash search line edit"
199199msgid "Search"
200200msgstr ""
po/oc.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-02-05 20:35+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Occitan (post 1500) <oc@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -195,15 +195,15 @@ msgstr "Afinar vòstres resultats"
195195msgid "Reset"
196196msgstr "Reïnicializar"
197197
198−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
198+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
199199msgid "Show less"
200200msgstr ""
201201
202−#: qml/Dash/GenericScopeView.qml:570
202+#: qml/Dash/GenericScopeView.qml:579
203203msgid "Show all"
204204msgstr ""
205205
206−#: qml/Dash/GenericScopeView.qml:627
206+#: qml/Dash/GenericScopeView.qml:636
207207msgctxt "Label: Hint for dash search line edit"
208208msgid "Search"
209209msgstr "Recercar"
po/or.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-03-21 05:28+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Oriya <or@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n!=1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -186,15 +186,15 @@ msgstr ""
186186msgid "Reset"
187187msgstr ""
188188
189−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
189+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
190190msgid "Show less"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570
193+#: qml/Dash/GenericScopeView.qml:579
194194msgid "Show all"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:627
197+#: qml/Dash/GenericScopeView.qml:636
198198msgctxt "Label: Hint for dash search line edit"
199199msgid "Search"
200200msgstr ""
po/pa.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-04-24 04:29+0000\n"
1212"Last-Translator: Gursharnjit_Singh <ubuntuser13@gmail.com>\n"
1313"Language-Team: Punjabi <pa@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -188,15 +188,15 @@ msgstr ""
188188msgid "Reset"
189189msgstr ""
190190
191−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
191+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
192192msgid "Show less"
193193msgstr ""
194194
195−#: qml/Dash/GenericScopeView.qml:570
195+#: qml/Dash/GenericScopeView.qml:579
196196msgid "Show all"
197197msgstr ""
198198
199−#: qml/Dash/GenericScopeView.qml:627
199+#: qml/Dash/GenericScopeView.qml:636
200200msgctxt "Label: Hint for dash search line edit"
201201msgid "Search"
202202msgstr "ਖੋਜ"
po/pl.po+11−11
@@ -7,17 +7,17 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
11−"PO-Revision-Date: 2016-03-28 20:45+0000\n"
12−"Last-Translator: Krzysztof Tataradziński <Unknown>\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
11+"PO-Revision-Date: 2016-05-05 13:36+0000\n"
12+"Last-Translator: dawidd6 <dawidd0811@gmail.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"
1717"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
1818"|| n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
20−"X-Generator: Launchpad (build 17995)\n"
19+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
20+"X-Generator: Launchpad (build 18025)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -189,15 +189,15 @@ msgstr "Przefiltruj wyniki"
189189msgid "Reset"
190190msgstr "Reset"
191191
192−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
192+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
193193msgid "Show less"
194−msgstr ""
194+msgstr "Pokaż mniej"
195195
196−#: qml/Dash/GenericScopeView.qml:570
196+#: qml/Dash/GenericScopeView.qml:579
197197msgid "Show all"
198−msgstr ""
198+msgstr "Pokaż wszystko"
199199
200−#: qml/Dash/GenericScopeView.qml:627
200+#: qml/Dash/GenericScopeView.qml:636
201201msgctxt "Label: Hint for dash search line edit"
202202msgid "Search"
203203msgstr "Szukaj"
@@ -463,7 +463,7 @@ msgstr "Przeciągnięcie od lewej krawędzi otwiera pasek uruchamiania"
463463
464464#: qml/Tutorial/TutorialRight.qml:55
465465msgid "Push your mouse against the right edge to view your open apps"
466−msgstr ""
466+msgstr "Poprowadź kursor poza prawą krawędź, aby wyświetlić otwarte programy"
467467
468468#: qml/Tutorial/TutorialRight.qml:56
469469msgid "Short or long swipe from the right edge to view your open apps"
po/pt.po+8−8
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2016-02-18 01:11+0000\n"
1212"Last-Translator: Ivo Xavier <ivoxavier.8@gmail.com>\n"
1313"Language-Team: Portuguese <pt@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -193,15 +193,15 @@ msgstr "Redefina os seus resultados"
193193msgid "Reset"
194194msgstr "Repor"
195195
196−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
196+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
197197msgid "Show less"
198−msgstr ""
198+msgstr "Mostrar menos"
199199
200−#: qml/Dash/GenericScopeView.qml:570
200+#: qml/Dash/GenericScopeView.qml:579
201201msgid "Show all"
202−msgstr ""
202+msgstr "Mostrar tudo"
203203
204−#: qml/Dash/GenericScopeView.qml:627
204+#: qml/Dash/GenericScopeView.qml:636
205205msgctxt "Label: Hint for dash search line edit"
206206msgid "Search"
207207msgstr "Procurar"
po/pt_BR.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-08-05 04:40+0000\n"
1212"Last-Translator: Julio Alexander Sieg <julio.sieg@gmail.com>\n"
1313"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -190,15 +190,15 @@ msgstr ""
190190msgid "Reset"
191191msgstr "Redefinir"
192192
193−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
193+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
194194msgid "Show less"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:570
197+#: qml/Dash/GenericScopeView.qml:579
198198msgid "Show all"
199199msgstr ""
200200
201−#: qml/Dash/GenericScopeView.qml:627
201+#: qml/Dash/GenericScopeView.qml:636
202202msgctxt "Label: Hint for dash search line edit"
203203msgid "Search"
204204msgstr "Pesquisar"
po/ro.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-07-06 17:47+0000\n"
1212"Last-Translator: Meriuță Cornel <meriutacornel@neacornel.eu>\n"
1313"Language-Team: Romanian <ro@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 "
1818"== 0) && (n != 0))) ? 2: 1));\n"
19−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
20−"X-Generator: Launchpad (build 17995)\n"
19+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
20+"X-Generator: Launchpad (build 18025)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -193,15 +193,15 @@ msgstr ""
193193msgid "Reset"
194194msgstr ""
195195
196−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
196+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
197197msgid "Show less"
198198msgstr ""
199199
200−#: qml/Dash/GenericScopeView.qml:570
200+#: qml/Dash/GenericScopeView.qml:579
201201msgid "Show all"
202202msgstr ""
203203
204−#: qml/Dash/GenericScopeView.qml:627
204+#: qml/Dash/GenericScopeView.qml:636
205205msgctxt "Label: Hint for dash search line edit"
206206msgid "Search"
207207msgstr "Căutare"
po/ru.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-07-06 05:33+0000\n"
1212"Last-Translator: ☠Jay ZDLin☠ <Unknown>\n"
1313"Language-Team: Russian <ru@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
20−"X-Generator: Launchpad (build 17995)\n"
19+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
20+"X-Generator: Launchpad (build 18025)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -192,15 +192,15 @@ msgstr ""
192192msgid "Reset"
193193msgstr "Сбросить"
194194
195−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
195+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
196196msgid "Show less"
197197msgstr ""
198198
199−#: qml/Dash/GenericScopeView.qml:570
199+#: qml/Dash/GenericScopeView.qml:579
200200msgid "Show all"
201201msgstr ""
202202
203−#: qml/Dash/GenericScopeView.qml:627
203+#: qml/Dash/GenericScopeView.qml:636
204204msgctxt "Label: Hint for dash search line edit"
205205msgid "Search"
206206msgstr "Поиск"
po/shn.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-11-10 12:09+0000\n"
1212"Last-Translator: Rockworld <sumoisrock@gmail.com>\n"
1313"Language-Team: Shan <shn@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=(n == 1) ? 0 : 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -186,15 +186,15 @@ msgstr ""
186186msgid "Reset"
187187msgstr ""
188188
189−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
189+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
190190msgid "Show less"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570
193+#: qml/Dash/GenericScopeView.qml:579
194194msgid "Show all"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:627
197+#: qml/Dash/GenericScopeView.qml:636
198198msgctxt "Label: Hint for dash search line edit"
199199msgid "Search"
200200msgstr ""
po/si.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\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"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -188,15 +188,15 @@ msgstr ""
188188msgid "Reset"
189189msgstr ""
190190
191−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
191+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
192192msgid "Show less"
193193msgstr ""
194194
195−#: qml/Dash/GenericScopeView.qml:570
195+#: qml/Dash/GenericScopeView.qml:579
196196msgid "Show all"
197197msgstr ""
198198
199−#: qml/Dash/GenericScopeView.qml:627
199+#: qml/Dash/GenericScopeView.qml:636
200200msgctxt "Label: Hint for dash search line edit"
201201msgid "Search"
202202msgstr ""
po/sk.po+55−10
@@ -7,16 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
11−"PO-Revision-Date: 2016-03-26 15:29+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
11+"PO-Revision-Date: 2016-05-02 10:43+0000\n"
1212"Last-Translator: P_E_T_O <Unknown>\n"
1313"Language-Team: Slovak <sk@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020"Language: sk\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -195,15 +195,15 @@ msgstr "Spresniť výsledky"
195195msgid "Reset"
196196msgstr "Resetovať"
197197
198−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
198+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
199199msgid "Show less"
200−msgstr ""
200+msgstr "Zobraziť menej"
201201
202−#: qml/Dash/GenericScopeView.qml:570
202+#: qml/Dash/GenericScopeView.qml:579
203203msgid "Show all"
204−msgstr ""
204+msgstr "Zobraziť všetko"
205205
206−#: qml/Dash/GenericScopeView.qml:627
206+#: qml/Dash/GenericScopeView.qml:636
207207msgctxt "Label: Hint for dash search line edit"
208208msgid "Search"
209209msgstr "Hľadať"
@@ -469,7 +469,7 @@ msgstr "Potiahnite od ľavého okraja pre otvorenie spúšťača"
469469
470470#: qml/Tutorial/TutorialRight.qml:55
471471msgid "Push your mouse against the right edge to view your open apps"
472−msgstr ""
472+msgstr "Potiahnuť myšou do pravého rohu pre zobrazenie otvorených aplikácií"
473473
474474#: qml/Tutorial/TutorialRight.qml:56
475475msgid "Short or long swipe from the right edge to view your open apps"
@@ -764,6 +764,30 @@ msgstr "Heslo je slabé"
764764msgid "Very weak password"
765765msgstr "Heslo je veľmi slabé"
766766
767+#~ msgid "Reboot"
768+#~ msgstr "Reštartovať"
769+
770+#~ msgid "Shut down"
771+#~ msgstr "Vypnúť"
772+
773+#~ msgid "Power"
774+#~ msgstr "Napájanie"
775+
776+#~ msgid "Power off"
777+#~ msgstr "Vypnúť"
778+
779+#~ msgid "Close"
780+#~ msgstr "Zatvoriť"
781+
782+#~ msgid "Well done"
783+#~ msgstr "Výborne"
784+
785+#~ msgid "Skip intro"
786+#~ msgstr "Preskočiť"
787+
788+#~ msgid "Right edge"
789+#~ msgstr "Pravý okraj"
790+
767791#~ msgctxt "Title: Reboot/Shut down dialog"
768792#~ msgid "Shut down"
769793#~ msgstr "Vypnúť"
@@ -951,3 +975,24 @@ msgstr "Heslo je veľmi slabé"
951975
952976#~ msgid "Hover your mouse on the right edge to view your open apps"
953977#~ msgstr "Prejdite myšou od pravého okraja pre zobrazenie otvorených aplikácií"
978+
979+#~ msgid "Log out"
980+#~ msgstr "Odhlásiť sa"
981+
982+#~ msgid "Try swiping from the top edge to access the indicators"
983+#~ msgstr "Potiahnite horný okraj pre prístup k indikátorom"
984+
985+#~ msgid "Top edge"
986+#~ msgstr "Horný okraj"
987+
988+#~ msgid "Try swiping from the right edge to unlock the phone"
989+#~ msgstr "Potiahnite od pravého okraja pre odomknutie telefónu"
990+
991+#~ msgid "Swipe up again to close the settings screen"
992+#~ msgstr "Potiahnite späť hore pre zatvorenie nastavení"
993+
994+#~ msgid "Left edge"
995+#~ msgstr "Ľavý okraj"
996+
997+#~ msgid "Swipe from the left to reveal the launcher for quick access to apps"
998+#~ msgstr "Potiahnite z ľavého okraja pre rýchly prístup k aplikáciam"
po/sl.po+9−9
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2016-01-31 18:34+0000\n"
1212"Last-Translator: Bernard Banko <Unknown>\n"
1313"Language-Team: Slovenian <sl@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || "
1818"n%100==4 ? 3 : 0);\n"
19−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
20−"X-Generator: Launchpad (build 17995)\n"
19+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
20+"X-Generator: Launchpad (build 18025)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -193,15 +193,15 @@ msgstr "Prečistite rezultate"
193193msgid "Reset"
194194msgstr "Ponastavi"
195195
196−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
196+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
197197msgid "Show less"
198−msgstr ""
198+msgstr "Pokaži manj"
199199
200−#: qml/Dash/GenericScopeView.qml:570
200+#: qml/Dash/GenericScopeView.qml:579
201201msgid "Show all"
202−msgstr ""
202+msgstr "Pokaži vse"
203203
204−#: qml/Dash/GenericScopeView.qml:627
204+#: qml/Dash/GenericScopeView.qml:636
205205msgctxt "Label: Hint for dash search line edit"
206206msgid "Search"
207207msgstr "Iskanje"
@@ -469,7 +469,7 @@ msgstr "Potegnite levi rob za prikaz zaganjalnika"
469469
470470#: qml/Tutorial/TutorialRight.qml:55
471471msgid "Push your mouse against the right edge to view your open apps"
472−msgstr ""
472+msgstr "Za prikaz odprtih programov potisnite kazalko proti desnemu robu."
473473
474474#: qml/Tutorial/TutorialRight.qml:56
475475msgid "Short or long swipe from the right edge to view your open apps"
po/sq.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2016-04-21 06:03+0000\n"
1212"Last-Translator: Indrit Bashkimi <indrit.bashkimi@gmail.com>\n"
1313"Language-Team: sq\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:36+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:49+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020"Language: sq\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -187,15 +187,15 @@ msgstr "Përmirëso rezultatet"
187187msgid "Reset"
188188msgstr "Rivendos"
189189
190−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
190+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
191191msgid "Show less"
192192msgstr ""
193193
194−#: qml/Dash/GenericScopeView.qml:570
194+#: qml/Dash/GenericScopeView.qml:579
195195msgid "Show all"
196196msgstr ""
197197
198−#: qml/Dash/GenericScopeView.qml:627
198+#: qml/Dash/GenericScopeView.qml:636
199199msgctxt "Label: Hint for dash search line edit"
200200msgid "Search"
201201msgstr "Kërko"
po/sr.po+10−9
@@ -8,8 +8,8 @@ msgid ""
88msgstr ""
99"Project-Id-Version: unity\n"
1010"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
11−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
12−"PO-Revision-Date: 2016-03-24 12:36+0000\n"
11+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
12+"PO-Revision-Date: 2016-05-04 19:50+0000\n"
1313"Last-Translator: Bojan Bogdanović <Unknown>\n"
1414"Language-Team: српски <xfce4@xfce4.org>\n"
1515"MIME-Version: 1.0\n"
@@ -17,8 +17,8 @@ msgstr ""
1717"Content-Transfer-Encoding: 8bit\n"
1818"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1919"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
20−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
21−"X-Generator: Launchpad (build 17995)\n"
20+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
21+"X-Generator: Launchpad (build 18025)\n"
2222"Language: sr\n"
2323
2424#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -192,15 +192,15 @@ msgstr "Пречистите Ваше резултате"
192192msgid "Reset"
193193msgstr "Ресетуј"
194194
195−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
195+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
196196msgid "Show less"
197−msgstr ""
197+msgstr "Прикажи мање"
198198
199−#: qml/Dash/GenericScopeView.qml:570
199+#: qml/Dash/GenericScopeView.qml:579
200200msgid "Show all"
201−msgstr ""
201+msgstr "Прикажи све"
202202
203−#: qml/Dash/GenericScopeView.qml:627
203+#: qml/Dash/GenericScopeView.qml:636
204204msgctxt "Label: Hint for dash search line edit"
205205msgid "Search"
206206msgstr "Претрага"
@@ -467,6 +467,7 @@ msgstr "Превуците са леве ивице да отворите пок
467467#: qml/Tutorial/TutorialRight.qml:55
468468msgid "Push your mouse against the right edge to view your open apps"
469469msgstr ""
470+"померите Вашег миша преко десне ивице да видите Ваше отворене програме"
470471
471472#: qml/Tutorial/TutorialRight.qml:56
472473msgid "Short or long swipe from the right edge to view your open apps"
po/sv.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2016-03-25 05:01+0000\n"
1212"Last-Translator: Josef Andersson <Unknown>\n"
1313"Language-Team: Swedish\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020"Language: sv\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -190,15 +190,15 @@ msgstr "Förfina dina resultat"
190190msgid "Reset"
191191msgstr "Återställ"
192192
193−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
193+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
194194msgid "Show less"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:570
197+#: qml/Dash/GenericScopeView.qml:579
198198msgid "Show all"
199199msgstr ""
200200
201−#: qml/Dash/GenericScopeView.qml:627
201+#: qml/Dash/GenericScopeView.qml:636
202202msgctxt "Label: Hint for dash search line edit"
203203msgid "Search"
204204msgstr "Sök"
po/sw.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-07-17 20:02+0000\n"
1212"Last-Translator: Valentine <mwangi_valentino@yahoo.com>\n"
1313"Language-Team: Swahili <sw@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -188,15 +188,15 @@ msgstr ""
188188msgid "Reset"
189189msgstr ""
190190
191−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
191+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
192192msgid "Show less"
193193msgstr ""
194194
195−#: qml/Dash/GenericScopeView.qml:570
195+#: qml/Dash/GenericScopeView.qml:579
196196msgid "Show all"
197197msgstr ""
198198
199−#: qml/Dash/GenericScopeView.qml:627
199+#: qml/Dash/GenericScopeView.qml:636
200200msgctxt "Label: Hint for dash search line edit"
201201msgid "Search"
202202msgstr "Tafuta"
po/ta.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\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"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020"Language: ta\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -187,15 +187,15 @@ msgstr ""
187187msgid "Reset"
188188msgstr ""
189189
190−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
190+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
191191msgid "Show less"
192192msgstr ""
193193
194−#: qml/Dash/GenericScopeView.qml:570
194+#: qml/Dash/GenericScopeView.qml:579
195195msgid "Show all"
196196msgstr ""
197197
198−#: qml/Dash/GenericScopeView.qml:627
198+#: qml/Dash/GenericScopeView.qml:636
199199msgctxt "Label: Hint for dash search line edit"
200200msgid "Search"
201201msgstr ""
po/te.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2014-07-19 10:04+0000\n"
1212"Last-Translator: Praveen Illa <mail2ipn@gmail.com>\n"
1313"Language-Team: Telugu <te@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -186,15 +186,15 @@ msgstr ""
186186msgid "Reset"
187187msgstr ""
188188
189−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
189+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
190190msgid "Show less"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570
193+#: qml/Dash/GenericScopeView.qml:579
194194msgid "Show all"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:627
197+#: qml/Dash/GenericScopeView.qml:636
198198msgctxt "Label: Hint for dash search line edit"
199199msgid "Search"
200200msgstr ""
po/th.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2014-10-02 04:55+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Thai <th@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -186,15 +186,15 @@ msgstr ""
186186msgid "Reset"
187187msgstr ""
188188
189−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
189+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
190190msgid "Show less"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570
193+#: qml/Dash/GenericScopeView.qml:579
194194msgid "Show all"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:627
197+#: qml/Dash/GenericScopeView.qml:636
198198msgctxt "Label: Hint for dash search line edit"
199199msgid "Search"
200200msgstr ""
po/tr.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-03-22 15:56+0000\n"
1212"Last-Translator: Arda Ünlü <aarda.uunlu@gmail.com>\n"
1313"Language-Team: Turkish <tr@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -186,15 +186,15 @@ msgstr ""
186186msgid "Reset"
187187msgstr ""
188188
189−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
189+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
190190msgid "Show less"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570
193+#: qml/Dash/GenericScopeView.qml:579
194194msgid "Show all"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:627
197+#: qml/Dash/GenericScopeView.qml:636
198198msgctxt "Label: Hint for dash search line edit"
199199msgid "Search"
200200msgstr "Ara"
po/ug.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-12-01 07:37+0000\n"
1212"Last-Translator: Eltikin <eltikinuyghur@hotmail.com>\n"
1313"Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -187,15 +187,15 @@ msgstr ""
187187msgid "Reset"
188188msgstr ""
189189
190−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
190+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
191191msgid "Show less"
192192msgstr ""
193193
194−#: qml/Dash/GenericScopeView.qml:570
194+#: qml/Dash/GenericScopeView.qml:579
195195msgid "Show all"
196196msgstr ""
197197
198−#: qml/Dash/GenericScopeView.qml:627
198+#: qml/Dash/GenericScopeView.qml:636
199199msgctxt "Label: Hint for dash search line edit"
200200msgid "Search"
201201msgstr "ئىزدە"
po/uk.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2016-04-01 17:32+0000\n"
1212"Last-Translator: Yuri Chornoivan <yurchor@gmail.com>\n"
1313"Language-Team: Ukrainian <uk@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
20−"X-Generator: Launchpad (build 17995)\n"
19+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
20+"X-Generator: Launchpad (build 18025)\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
2323msgid "Password: "
@@ -196,15 +196,15 @@ msgstr "Покращіть результати"
196196msgid "Reset"
197197msgstr "Скинути"
198198
199−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
199+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
200200msgid "Show less"
201201msgstr ""
202202
203−#: qml/Dash/GenericScopeView.qml:570
203+#: qml/Dash/GenericScopeView.qml:579
204204msgid "Show all"
205205msgstr ""
206206
207−#: qml/Dash/GenericScopeView.qml:627
207+#: qml/Dash/GenericScopeView.qml:636
208208msgctxt "Label: Hint for dash search line edit"
209209msgid "Search"
210210msgstr "Пошук"
po/unity8.pot+4−4
@@ -8,7 +8,7 @@ msgid ""
88msgstr ""
99"Project-Id-Version: unity8\n"
1010"Report-Msgid-Bugs-To: \n"
11−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
11+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1212"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1313"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1414"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -186,15 +186,15 @@ msgstr ""
186186msgid "Reset"
187187msgstr ""
188188
189−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
189+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
190190msgid "Show less"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570
193+#: qml/Dash/GenericScopeView.qml:579
194194msgid "Show all"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:627
197+#: qml/Dash/GenericScopeView.qml:636
198198msgctxt "Label: Hint for dash search line edit"
199199msgid "Search"
200200msgstr ""
po/ur.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-05-05 03:12+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Urdu <ur@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -186,15 +186,15 @@ msgstr ""
186186msgid "Reset"
187187msgstr ""
188188
189−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
189+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
190190msgid "Show less"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570
193+#: qml/Dash/GenericScopeView.qml:579
194194msgid "Show all"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:627
197+#: qml/Dash/GenericScopeView.qml:636
198198msgctxt "Label: Hint for dash search line edit"
199199msgid "Search"
200200msgstr ""
po/uz.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-07-04 16:03+0000\n"
1212"Last-Translator: Learner <muzaffar.habibullayev@yandex.ru>\n"
1313"Language-Team: Uzbek <uz@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -186,15 +186,15 @@ msgstr ""
186186msgid "Reset"
187187msgstr ""
188188
189−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
189+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
190190msgid "Show less"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570
193+#: qml/Dash/GenericScopeView.qml:579
194194msgid "Show all"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:627
197+#: qml/Dash/GenericScopeView.qml:636
198198msgctxt "Label: Hint for dash search line edit"
199199msgid "Search"
200200msgstr ""
po/vi.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\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"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -186,15 +186,15 @@ msgstr ""
186186msgid "Reset"
187187msgstr ""
188188
189−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
189+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
190190msgid "Show less"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570
193+#: qml/Dash/GenericScopeView.qml:579
194194msgid "Show all"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:627
197+#: qml/Dash/GenericScopeView.qml:636
198198msgctxt "Label: Hint for dash search line edit"
199199msgid "Search"
200200msgstr ""
po/wo.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2015-10-29 11:16+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Wolof <wo@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -186,15 +186,15 @@ msgstr ""
186186msgid "Reset"
187187msgstr ""
188188
189−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
189+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
190190msgid "Show less"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570
193+#: qml/Dash/GenericScopeView.qml:579
194194msgid "Show all"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:627
197+#: qml/Dash/GenericScopeView.qml:636
198198msgctxt "Label: Hint for dash search line edit"
199199msgid "Search"
200200msgstr "Seet"
po/xh.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\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"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -186,15 +186,15 @@ msgstr ""
186186msgid "Reset"
187187msgstr ""
188188
189−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
189+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
190190msgid "Show less"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570
193+#: qml/Dash/GenericScopeView.qml:579
194194msgid "Show all"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:627
197+#: qml/Dash/GenericScopeView.qml:636
198198msgctxt "Label: Hint for dash search line edit"
199199msgid "Search"
200200msgstr ""
po/zh_CN.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2016-04-13 06:27+0000\n"
1212"Last-Translator: YunQiang Su <wzssyqa@gmail.com>\n"
1313"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -187,15 +187,15 @@ msgstr "精进查找结果"
187187msgid "Reset"
188188msgstr "重置"
189189
190−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
190+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
191191msgid "Show less"
192192msgstr ""
193193
194−#: qml/Dash/GenericScopeView.qml:570
194+#: qml/Dash/GenericScopeView.qml:579
195195msgid "Show all"
196196msgstr ""
197197
198−#: qml/Dash/GenericScopeView.qml:627
198+#: qml/Dash/GenericScopeView.qml:636
199199msgctxt "Label: Hint for dash search line edit"
200200msgid "Search"
201201msgstr "搜索"
po/zh_HK.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2014-08-10 11:45+0000\n"
1212"Last-Translator: Daniel Cheung <daniel.2345@hotmail.com>\n"
1313"Language-Team: Chinese (Hong Kong) <zh_HK@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020
2121#: plugins/IntegratedLightDM/Greeter.cpp:112
2222msgid "Password: "
@@ -186,15 +186,15 @@ msgstr ""
186186msgid "Reset"
187187msgstr ""
188188
189−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
189+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
190190msgid "Show less"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570
193+#: qml/Dash/GenericScopeView.qml:579
194194msgid "Show all"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:627
197+#: qml/Dash/GenericScopeView.qml:636
198198msgctxt "Label: Hint for dash search line edit"
199199msgid "Search"
200200msgstr ""
po/zh_TW.po+6−6
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2016-04-27 15:01+0000\n"
10+"POT-Creation-Date: 2016-05-18 11:19+0000\n"
1111"PO-Revision-Date: 2016-02-24 04:40+0000\n"
1212"Last-Translator: Po-Hsu Lin <po-hsu.lin@canonical.com>\n"
1313"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2016-04-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 17995)\n"
18+"X-Launchpad-Export-Date: 2016-05-19 05:50+0000\n"
19+"X-Generator: Launchpad (build 18025)\n"
2020"Language: zh_TW\n"
2121
2222#: plugins/IntegratedLightDM/Greeter.cpp:112
@@ -186,15 +186,15 @@ msgstr "精細篩選結果"
186186msgid "Reset"
187187msgstr "重設"
188188
189−#: qml/Dash/GenericScopeView.qml:570 qml/Dash/GenericScopeView.qml:755
189+#: qml/Dash/GenericScopeView.qml:579 qml/Dash/GenericScopeView.qml:764
190190msgid "Show less"
191191msgstr ""
192192
193−#: qml/Dash/GenericScopeView.qml:570
193+#: qml/Dash/GenericScopeView.qml:579
194194msgid "Show all"
195195msgstr ""
196196
197−#: qml/Dash/GenericScopeView.qml:627
197+#: qml/Dash/GenericScopeView.qml:636
198198msgctxt "Label: Hint for dash search line edit"
199199msgid "Search"
200200msgstr "搜尋"
qml/Components/ScreenGrabber.qml → qml/Components/ItemGrabber.qmlrenamed+27−17
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2014-2015 Canonical, Ltd.
2+ * Copyright (C) 2014-2016 Canonical, Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
@@ -15,36 +15,31 @@
1515 */
1616
1717import QtQuick 2.4
18−import ScreenGrabber 0.1
19−import GlobalShortcut 1.0
18+import ScreenshotDirectory 0.1
2019
20+/*
21+ Captures an image of the given item and saves it in a screenshots directory.
22+ It also displays a flash visual effect and camera shutter sound, as feedback
23+ to the user to hint that a screenshot was taken.
24+ */
2125Rectangle {
2226 id: root
2327 visible: false
2428 color: "white"
25− anchors.fill: parent
2629 opacity: 0.0
2730
28− // to be set from outside
29− property int rotationAngle: 0
30−
31− ScreenGrabber {
32− id: screenGrabber
31+ ScreenshotDirectory {
32+ id: screenshotDirectory
3333 objectName: "screenGrabber"
3434 }
3535
36− GlobalShortcut {
37− id: screenshotShortcut
38− shortcut: Qt.Key_Print
39− onTriggered: capture()
40− }
41−
4236 NotificationAudio {
4337 id: shutterSound
4438 source: "/system/media/audio/ui/camera_click.ogg"
4539 }
4640
47− function capture() {
41+ function capture(item) {
42+ d.target = item;
4843 visible = true;
4944 shutterSound.stop();
5045 shutterSound.play();
@@ -62,13 +57,28 @@ Rectangle {
6257 }
6358 }
6459
60+ QtObject {
61+ id: d
62+ property Item target
63+ }
64+
6565 NumberAnimation on opacity {
6666 id: fadeOut
6767 from: 1.0
6868 to: 0.0
6969 onStopped: {
7070 if (visible) {
71− screenGrabber.captureAndSave(root.rotationAngle);
71+ d.target.grabToImage(function(result)
72+ {
73+ var fileName = screenshotDirectory.makeFileName();
74+ if (fileName.length === 0) {
75+ console.warn("ItemGrabber: No fileName to save image to");
76+ } else {
77+ console.log("ItemGrabber: Saving image to " + fileName);
78+ result.saveToFile(fileName);
79+ }
80+ });
81+
7282 visible = false;
7383 }
7484 }
qml/Components/WindowScreenshot.qml → qml/Components/ItemSnapshot.qmlrenamed+13−3
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2015 Canonical, Ltd.
2+ * Copyright (C) 2015-2016 Canonical, Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
@@ -19,9 +19,19 @@ import QtQuick 2.4
1919Item {
2020 id: root
2121
22+ property Item target
23+
24+ property bool ready: image.status === Image.Ready
25+
2226 function take() {
23− var timeNow = new Date().getTime();
24− image.source = "image://window/" + timeNow;
27+ if (!target) {
28+ console.warn("ItemSnapshot.take(): no target set");
29+ return;
30+ }
31+
32+ target.grabToImage(function(result) {
33+ image.source = result.url;
34+ });
2535 }
2636
2737 // Unload the image to free up memory
qml/Components/NotificationAudio.qml+7−3
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2015 Canonical, Ltd.
2+ * Copyright (C) 2015-2016 Canonical, Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
@@ -23,10 +23,14 @@ Item {
2323 readonly property var playbackState: priv.audio ? priv.audio.playbackState : 0
2424
2525 function play() {
26− priv.audio.play();
26+ if (priv.audio) {
27+ priv.audio.play();
28+ }
2729 }
2830 function stop() {
29− priv.audio.stop();
31+ if (priv.audio) {
32+ priv.audio.stop();
33+ }
3034 }
3135
3236 QtObject {
qml/Components/VirtualTouchPad.qml+1−1
@@ -31,7 +31,7 @@ Item {
3131 anchors.fill: parent
3232
3333 // FIXME: Once we have Qt DPR support, this should be Qt.styleHints.startDragDistance
34− readonly property int clickThreshold: units.gu(1.5)
34+ readonly property int clickThreshold: internalGu * 1.5
3535 property bool isClick: false
3636 property bool isDoubleClick: false
3737 property bool isDrag: false
qml/Dash/CardGrid.qml+1
@@ -78,6 +78,7 @@ DashRenderer {
7878 target: loader.item
7979 onClicked: root.clicked(index, result, loader.item, model)
8080 onPressAndHold: root.pressAndHold(index, result, model)
81+ onAction: root.action(index, result, actionId)
8182 }
8283 }
8384 }
qml/Dash/CardHorizontalList.qml+1
@@ -59,6 +59,7 @@ DashRenderer {
5959 target: loader.item
6060 onClicked: root.clicked(index, result, loader.item, model)
6161 onPressAndHold: root.pressAndHold(index, result, model)
62+ onAction: root.action(index, result, actionId)
6263 }
6364 }
6465 }
qml/Dash/CardTool.qml+23−7
@@ -162,7 +162,7 @@ Item {
162162 id: attributesModel
163163 property int numOfAttributes: 0
164164 property var model: []
165− property bool hasAttributes: {
165+ readonly property bool hasAttributes: {
166166 var attributes = components["attributes"];
167167 var hasAttributesFlag = (attributes != undefined) && (attributes["field"] != undefined);
168168
@@ -182,16 +182,31 @@ Item {
182182 }
183183 }
184184
185+ Item {
186+ id: socialActionsModel
187+ property var model: []
188+ readonly property bool hasActions: components["social-actions"] != undefined
189+
190+ onHasActionsChanged: {
191+ model = []
192+ if (hasActions) {
193+ model.push( {"id":"text", "icon":"image://theme/ok" } );
194+ }
195+ }
196+ }
197+
185198 Loader {
186199 id: cardLoader
187− readonly property var fields: ["art", "mascot", "title", "subtitle", "summary", "attributes"]
200+ readonly property var cfields: ["art", "mascot", "title", "subtitle", "summary", "attributes", "social-actions"]
201+ readonly property var dfields: ["art", "mascot", "title", "subtitle", "summary", "attributes", "socialActions"]
188202 readonly property var maxData: {
189203 "art": Qt.resolvedUrl("graphics/pixel.png"),
190204 "mascot": Qt.resolvedUrl("graphics/pixel.png"),
191205 "title": "—\n—",
192206 "subtitle": "—",
193207 "summary": "—\n—\n—\n—\n—",
194− "attributes": attributesModel.model
208+ "attributes": attributesModel.model,
209+ "socialActions": socialActionsModel.model
195210 }
196211 sourceComponent: CardCreatorCache.getCardComponent(cardTool.template, cardTool.components, true);
197212 onLoaded: {
@@ -206,13 +221,14 @@ Item {
206221 }
207222 function updateCardData() {
208223 var data = {};
209− for (var k in fields) {
210− var component = cardTool.components[fields[k]];
211− var key = fields[k];
224+ for (var k in cfields) {
225+ var ckey = cfields[k];
226+ var component = cardTool.components[ckey];
212227 if ((typeof component === "string" && component.length > 0) ||
213228 (typeof component === "object" && component !== null
214229 && typeof component["field"] === "string" && component["field"].length > 0)) {
215− data[key] = maxData[key];
230+ var dkey = dfields[k];
231+ data[dkey] = maxData[dkey];
216232 }
217233 }
218234 item.cardData = data;
qml/Dash/CardVerticalJournal.qml+1
@@ -78,6 +78,7 @@ DashRenderer {
7878 target: loader.item
7979 onClicked: root.clicked(index, result, loader.item, model)
8080 onPressAndHold: root.pressAndHold(index, result, model)
81+ onAction: root.action(index, result, actionId)
8182 }
8283 }
8384 }
qml/Dash/DashRenderer.qml+6
@@ -57,4 +57,10 @@ Item {
5757 /// @param result result model of the clicked item, used for activation
5858 /// @param itemModel model of the item
5959 signal pressAndHold(int index, var result, var itemModel)
60+
61+ /// Emitted when the user clicked on an item action
62+ /// @param index is the index of the clicked item
63+ /// @param result result model of the clicked item, used for activation
64+ /// @param actionId id of the clicked action
65+ signal action(int index, var result, var actionId)
6066}
qml/Dash/Filters/FilterExpandableWidget.qmlnew file+96
@@ -0,0 +1,96 @@
1+/*
2+ * Copyright (C) 2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+import Ubuntu.Components 1.3
19+import Ubuntu.Components.ListItems 1.3 as ListItems
20+
21+/*! Expandable Filter Widget. */
22+
23+FilterWidget {
24+ id: root
25+
26+ showsTitleOnItsOwn: true
27+
28+ implicitHeight: expandingItem.height
29+
30+ ListItems.Expandable {
31+ id: expandingItem
32+ objectName: "expandingItem"
33+
34+ expandedHeight: collapsedHeight + column.height
35+ anchors.left: parent.left
36+ anchors.right: parent.right
37+ showDivider: false
38+
39+ onClicked: {
40+ expanded = !expanded;
41+ forceActiveFocus();
42+ }
43+ __contentsMargins: 0
44+
45+ Item {
46+ id: titleHolder
47+ anchors.top: parent.top
48+ height: expandingItem.collapsedHeight
49+ anchors.left: parent.left
50+ anchors.right: parent.right
51+
52+ Label {
53+ anchors.left: parent.left
54+ anchors.leftMargin: units.gu(2)
55+ anchors.right: dropDown.left
56+ anchors.verticalCenter: parent.verticalCenter
57+ text: widgetData.title || ""
58+ }
59+
60+ Image {
61+ id: dropDown
62+ height: units.gu(3)
63+ fillMode: Image.PreserveAspectFit
64+ anchors.right: parent.right
65+ anchors.rightMargin: units.gu(2)
66+ anchors.verticalCenter: parent.verticalCenter
67+ source: expandingItem.expanded ? "image://theme/up" : "image://theme/down"
68+ }
69+ }
70+
71+ Column {
72+ id: column
73+ anchors.left: parent.left
74+ anchors.right: parent.right
75+ anchors.top: titleHolder.bottom
76+
77+ Repeater {
78+ id: repeater
79+ model: widgetData.filters
80+
81+ delegate: FilterWidgetFactory {
82+ width: parent.width
83+
84+ widgetId: id
85+ widgetType: type
86+ widgetData: filter
87+
88+ ListItems.ThinDivider {
89+ anchors.bottom: parent.bottom
90+ visible: index !== repeater.count - 1
91+ }
92+ }
93+ }
94+ }
95+ }
96+}
qml/Dash/Filters/FilterWidget.qml+3
@@ -25,5 +25,8 @@ Item {
2525 //! Variable used to contain widget's data
2626 property var widgetData: null
2727
28+ //! Does the widget show the title inside?
29+ property bool showsTitleOnItsOwn: false
30+
2831 objectName: widgetId
2932}
qml/Dash/Filters/FilterWidgetFactory.qml+2−1
@@ -35,7 +35,7 @@ Item {
3535
3636 Label {
3737 id: title
38− text: widgetData ? widgetData.title : ""
38+ text: widgetData && !(loader.item && loader.item.showsTitleOnItsOwn) ? widgetData.title : ""
3939 height: text != "" ? implicitHeight : 0
4040
4141 anchors {
@@ -68,6 +68,7 @@ Item {
6868 case Filters.OptionSelectorFilter: return "FilterOptionSelector.qml";
6969 case Filters.RangeInputFilter: return "FilterRangeInput.qml";
7070 case Filters.ValueSliderFilter: return "FilterValueSlider.qml";
71+ case Filters.ExpandableFilterWidget: return "FilterExpandableWidget.qml";
7172 default: return "";
7273 }
7374 }
qml/Dash/GenericScopeView.qml+9
@@ -360,6 +360,11 @@ FocusScope {
360360 scopeView.enableHeightBehaviorOnNextCreation = item.enableHeightBehaviorOnNextCreation;
361361 }
362362 }
363+ // FIXME: directly connecting to onUnitsChanged cause a compile error:
364+ // Cannot assign to non-existent property "onUnitsChanged"
365+ // Until the units object is reworked to properly do all we need, let's go through a intermediate property
366+ property int pxpgu: units.gu(1);
367+ onPxpguChanged: clickScopeSizingHacks();
363368
364369 function clickScopeSizingHacks() {
365370 if (scope && scope.id === "clickscope" &&
@@ -390,6 +395,10 @@ FocusScope {
390395 scopeView.itemPressedAndHeld(result, baseItem.category);
391396 }
392397
398+ onAction: { // (int index, var result, var actionId)
399+ scope.activateAction(result, baseItem.category, actionId);
400+ }
401+
393402 function categoryItemCount() {
394403 var categoryItemCount = -1;
395404 if (!rendererLoader.expanded && !seeAllLabel.visible && target.collapsedItemCount > 0) {
qml/Dash/Previews/PreviewActionCombo.qml+1−1
@@ -59,7 +59,7 @@ Item {
5959
6060 delegate: PreviewActionButton {
6161 data: modelData
62− width: implicitWidth < parent.width ? parent.width : implicitWidth
62+ width: implicitWidth < root.width ? root.width : implicitWidth
6363 onClicked: root.triggeredAction(modelData)
6464 strokeColor: moreButton.strokeColor
6565 }
qml/Dash/Previews/PreviewActions.qml+8−7
@@ -26,25 +26,26 @@ PreviewWidget {
2626 id: root
2727
2828 implicitHeight: row.height + units.gu(1)
29+ readonly property var actions: root.widgetData ? root.widgetData["actions"] : null
2930
3031 Row {
3132 id: row
32− readonly property var actions: root.widgetData ? root.widgetData["actions"] : null
3333 anchors.right: parent.right
3434
3535 spacing: units.gu(1)
3636
3737 Loader {
3838 id: loader
39− readonly property bool button: row.actions && row.actions.length == 2
40− readonly property bool combo: row.actions && row.actions.length > 2
39+ objectName: "loader"
40+ readonly property bool button: root.actions && root.actions.length == 2
41+ readonly property bool combo: root.actions && root.actions.length > 2
4142 source: button ? "PreviewActionButton.qml" : (combo ? "PreviewActionCombo.qml" : "")
4243 width: (root.width - units.gu(1)) / 2
4344 onLoaded: {
4445 if (button) {
45− item.data = row.actions[1];
46+ item.data = Qt.binding(function() { return root.actions[1]; });
4647 } else if (combo) {
47− item.model = row.actions.slice(1);
48+ item.model = Qt.binding(function() { return root.actions.slice(1); });
4849 }
4950 }
5051 Binding {
@@ -61,8 +62,8 @@ PreviewWidget {
6162 }
6263
6364 PreviewActionButton {
64− data: visible ? row.actions[0] : null
65− visible: row.actions && row.actions.length > 0
65+ data: visible ? root.actions[0] : null
66+ visible: root.actions && root.actions.length > 0
6667 onTriggeredAction: root.triggered(root.widgetId, actionData.id, actionData)
6768 width: (root.width - units.gu(1)) / 2
6869 color: root.scopeStyle ? root.scopeStyle.previewButtonColor : UbuntuColors.orange
qml/Dash/Previews/PreviewIconActions.qml+15
@@ -32,10 +32,20 @@ PreviewWidget {
3232 id: row
3333 readonly property var actions: root.widgetData ? root.widgetData["actions"] : null
3434 width: parent.width
35+ onActionsChanged: {
36+ // Rewire the source since it may have been unwired on onClicked
37+ // but the icon didn't change i.e. the scope updated the results
38+ // and the icon needs to go back to the one it was originally
39+ for (var i = 0; i < repeater.count; ++i) {
40+ var button = repeater.itemAt(i);
41+ button.updateIcon();
42+ }
43+ }
3544
3645 spacing: units.gu(2)
3746
3847 Repeater {
48+ id: repeater
3949 model: row.actions
4050
4151 AbstractButton {
@@ -43,6 +53,11 @@ PreviewWidget {
4353 height: label.height
4454 width: childrenRect.width
4555
56+ readonly property var iconUrl: modelData.icon;
57+ function updateIcon() {
58+ icon.source = iconUrl;
59+ }
60+
4661 Image {
4762 id: icon
4863 height: parent.height
qml/Dash/Previews/PreviewZoomableImage.qml+13−8
@@ -34,6 +34,8 @@ PreviewWidget {
3434
3535 property Item rootItem: QuickUtils.rootItem(root)
3636
37+ readonly property var imageUrl: widgetData["source"] || widgetData["fallback"] || ""
38+
3739 LazyImage {
3840 id: lazyImage
3941 objectName: "lazyImage"
@@ -42,7 +44,7 @@ PreviewWidget {
4244 right: parent.right
4345 }
4446 scaleTo: "width"
45− source: widgetData["source"] || widgetData["fallback"] || ""
47+ source: root.imageUrl
4648 asynchronous: true
4749 useUbuntuShape: false
4850 pressed: mouseArea.pressed
@@ -59,11 +61,12 @@ PreviewWidget {
5961
6062 Connections {
6163 target: lazyImage.sourceImage
62− // If modelData would change after failing to load it would not be
63− // reloaded since the source binding is destroyed by the source = fallback
64− // But at the moment the model never changes
6564 onStatusChanged: if (lazyImage.sourceImage.status === Image.Error) lazyImage.sourceImage.source = widgetData["fallback"];
6665 }
66+ Connections {
67+ target: root
68+ onImageUrlChanged: lazyImage.sourceImage.source = root.imageUrl;
69+ }
6770
6871 PreviewMediaToolbar {
6972 id: toolbar
@@ -86,12 +89,14 @@ PreviewWidget {
8689
8790 delegate: ZoomableImage {
8891 anchors.fill: parent
89− source: widgetData["source"] || widgetData["fallback"] || ""
92+ source: root.imageUrl
9093 zoomable: widgetData["zoomable"] ? widgetData["zoomable"] : false
91− // If modelData would change after failing to load it would not be
92− // reloaded since the source binding is destroyed by the source = fallback
93− // But at the moment the model never changes
9494 onStatusChanged: if (status === Image.Error) source = widgetData["fallback"];
95+
96+ Connections {
97+ target: root
98+ onImageUrlChanged: source = root.imageUrl;
99+ }
95100 }
96101 }
97102}
qml/DisabledScreenNotice.qml+4−4
@@ -96,19 +96,19 @@ Item {
9696
9797 Column {
9898 anchors.centerIn: parent
99− width: parent.width - units.gu(8)
100− spacing: units.gu(4)
99+ width: parent.width - (internalGu * 8)
100+ spacing: internalGu * 4
101101
102102 Label {
103103 id: text
104104 text: i18n.tr("Your device is now connected to an external display. Use this screen as a touch pad to interact with the pointer.")
105105 color: "white"
106106 width: parent.width
107− fontSize: "large"
107+ font.pixelSize: 2.5 * internalGu
108108 wrapMode: Text.Wrap
109109 }
110110 Icon {
111− height: units.gu(8)
111+ height: internalGu * 8
112112 width: height
113113 name: "input-touchpad-symbolic"
114114 color: "white"
qml/OrientedShell.qml+7−7
@@ -26,9 +26,8 @@ import "Rotation"
2626// Workaround https://bugs.launchpad.net/ubuntu/+source/unity8/+bug/1473471
2727import Ubuntu.Components 1.3
2828
29−Rectangle {
29+Item {
3030 id: root
31− color: "black"
3231
3332 implicitWidth: units.gu(40)
3433 implicitHeight: units.gu(71)
@@ -241,7 +240,7 @@ Rectangle {
241240 orientedShell: root
242241 shell: shell
243242 shellCover: shellCover
244− windowScreenshot: windowScreenshot
243+ shellSnapshot: shellSnapshot
245244 }
246245
247246 Shell {
@@ -291,8 +290,9 @@ Rectangle {
291290 visible: false
292291 }
293292
294− WindowScreenshot {
295− id: windowScreenshot
293+ ItemSnapshot {
294+ id: shellSnapshot
295+ target: shell
296296 visible: false
297297 width: root.width
298298 height: root.height
@@ -302,9 +302,9 @@ Rectangle {
302302 property real transformOriginY
303303
304304 transform: Rotation {
305− origin.x: windowScreenshot.transformOriginX; origin.y: windowScreenshot.transformOriginY;
305+ origin.x: shellSnapshot.transformOriginX; origin.y: shellSnapshot.transformOriginY;
306306 axis { x: 0; y: 0; z: 1 }
307− angle: windowScreenshot.transformRotationAngle
307+ angle: shellSnapshot.transformRotationAngle
308308 }
309309 }
310310}
qml/Panel/IndicatorsMenu.qml+20−10
@@ -43,18 +43,28 @@ Showable {
4343
4444 // TODO: Perhaps we need a animation standard for showing/hiding? Each showable seems to
4545 // use its own values. Need to ask design about this.
46− showAnimation: StandardAnimation {
47− property: "height"
48− to: openedHeight
49− duration: UbuntuAnimation.BriskDuration
50− easing.type: Easing.OutCubic
46+ showAnimation: SequentialAnimation {
47+ StandardAnimation {
48+ target: root
49+ property: "height"
50+ to: openedHeight
51+ duration: UbuntuAnimation.BriskDuration
52+ easing.type: Easing.OutCubic
53+ }
54+ // set binding in case units.gu changes while menu open, so height correctly adjusted to fit
55+ ScriptAction { script: root.height = Qt.binding( function(){ return root.openedHeight; } ) }
5156 }
5257
53− hideAnimation: StandardAnimation {
54− property: "height"
55− to: minimizedPanelHeight
56− duration: UbuntuAnimation.BriskDuration
57− easing.type: Easing.OutCubic
58+ hideAnimation: SequentialAnimation {
59+ StandardAnimation {
60+ target: root
61+ property: "height"
62+ to: minimizedPanelHeight
63+ duration: UbuntuAnimation.BriskDuration
64+ easing.type: Easing.OutCubic
65+ }
66+ // set binding in case units.gu changes while menu closed, so menu adjusts to fit
67+ ScriptAction { script: root.height = Qt.binding( function(){ return root.minimizedPanelHeight; } ) }
5868 }
5969
6070 height: minimizedPanelHeight
qml/Rotation/HalfLoopRotationAnimation.qml+2−1
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2015 Canonical, Ltd.
2+ * Copyright (C) 2015-2016 Canonical, Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
@@ -42,5 +42,6 @@ SequentialAnimation {
4242 from: root.fromAngle; to: root.toAngle
4343 duration: rotationDuration; easing.type: rotationEasing
4444 }
45+ UpdateShellTransformations { info: root.info; shell: root.shell }
4546 ScriptAction { script: { info.transitioning = false; } }
4647}
qml/Rotation/ImmediateRotationAction.qml+11−22
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2015 Canonical, Ltd.
2+ * Copyright (C) 2015-2016 Canonical, Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
@@ -16,30 +16,19 @@
1616
1717import QtQuick 2.4
1818
19−ScriptAction {
19+SequentialAnimation {
20+ id: root
2021 property var info
2122 property var shell
2223
23− script: {
24− info.transitioning = true;
25− shell.orientationAngle = info.requestedOrientationAngle;
26− shell.transformRotationAngle = info.requestedOrientationAngle;
24+ ScriptAction { script: {
25+ root.info.transitioning = true;
26+ } }
2727
28− // Making bindings as orientedShell's dimensions might wiggle during startup.
29− if (info.requestedOrientationAngle === 90 || info.requestedOrientationAngle === 270) {
30− shell.width = Qt.binding(function() { return orientedShell.height; });
31− shell.height = Qt.binding(function() { return orientedShell.width; });
32− } else {
33− shell.width = Qt.binding(function() { return orientedShell.width; });
34− shell.height = Qt.binding(function() { return orientedShell.height; });
35− }
28+ UpdateShellTransformations { info: root.info; shell: root.shell }
3629
37− shell.x = Qt.binding(function() { return (orientedShell.width - shell.width) / 2; });
38− shell.y = Qt.binding(function() { return (orientedShell.height - shell.height) / 2; });
39− shell.transformOriginX = Qt.binding(function() { return shell.width / 2; });
40− shell.transformOriginY = Qt.binding(function() { return shell.height / 2; });
41−
42− shell.updateFocusedAppOrientation();
43− info.transitioning = false;
44− }
30+ ScriptAction { script: {
31+ root.shell.updateFocusedAppOrientation();
32+ root.info.transitioning = false;
33+ } }
4534}
qml/Rotation/NinetyRotationAnimation.qml+14−16
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2015 Canonical, Ltd.
2+ * Copyright (C) 2015-2016 Canonical, Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
@@ -30,8 +30,7 @@ SequentialAnimation {
3030
3131 ScriptAction { script: {
3232 info.transitioning = true;
33− windowScreenshot.take();
34− windowScreenshot.visible = true;
33+
3534 shell.orientationAngle = root.toAngle;
3635 shell.x = 0;
3736 shell.width = flipShellDimensions ? orientedShell.height : orientedShell.width;
@@ -41,12 +40,10 @@ SequentialAnimation {
4140 shell.updateFocusedAppOrientation();
4241 shellCover.visible = true;
4342
44− windowScreenshot.transformOriginX = orientedShell.width / 2;
45− if (fromAngle == 180 || fromAngle == 270) {
46− windowScreenshot.transformOriginY = orientedShell.height - (orientedShell.width / 2);
47− } else {
48− windowScreenshot.transformOriginY = orientedShell.width / 2;
49− }
43+ shellSnapshot.transformOriginX = shell.transformOriginX;
44+ shellSnapshot.transformOriginY = shell.transformOriginY;
45+ shellSnapshot.transformRotationAngle = shell.transformRotationAngle;
46+ shellSnapshot.visible = true;
5047 } }
5148 ParallelAnimation {
5249 NumberAnimation {
@@ -66,24 +63,25 @@ SequentialAnimation {
6663 }
6764
6865 NumberAnimation {
69− target: windowScreenshot; property: "opacity"; from: 1; to: 0;
66+ target: shellSnapshot; property: "opacity"; from: 1; to: 0;
7067 duration: rotationDuration; easing.type: rotationEasing
7168 }
7269 RotationAnimation {
73− target: windowScreenshot; property: "transformRotationAngle";
74− from: 0; to: root.toAngle - root.fromAngle
70+ target: shellSnapshot; property: "transformRotationAngle";
71+ from: root.fromAngle; to: root.toAngle
7572 direction: RotationAnimation.Shortest
7673 duration: rotationDuration; easing.type: rotationEasing
7774 }
7875 NumberAnimation {
79− target: windowScreenshot; property: "y"
80− from: 0; to: root.toY - root.fromY
76+ target: shellSnapshot; property: "y"
77+ from: root.fromY; to: root.toY
8178 duration: rotationDuration; easing.type: rotationEasing
8279 }
8380 }
81+ UpdateShellTransformations { info: root.info; shell: root.shell }
8482 ScriptAction { script: {
85− windowScreenshot.visible = false;
86− windowScreenshot.discard();
83+ shellSnapshot.visible = false;
84+ shellSnapshot.discard();
8785 shellCover.visible = false;
8886 info.transitioning = false;
8987 } }
qml/Rotation/RotationStates.qml+25−5
@@ -1,5 +1,5 @@
11/*
2− * Copyright (C) 2015 Canonical, Ltd.
2+ * Copyright (C) 2015,2016 Canonical, Ltd.
33 *
44 * This program is free software; you can redistribute it and/or modify
55 * it under the terms of the GNU General Public License as published by
@@ -30,7 +30,7 @@ StateGroup {
3030 property Item orientedShell
3131 property Item shell
3232 property Item shellCover
33− property Item windowScreenshot
33+ property Item shellSnapshot
3434
3535 property int rotationDuration: 450
3636 property int rotationEasing: Easing.InOutCubic
@@ -88,12 +88,32 @@ StateGroup {
8888 }
8989
9090 var requestedState = d.requestedOrientationAngle.toString();
91− if (requestedState !== root.state) {
92− d.resolveAnimationType();
93− root.state = requestedState;
91+ if (requestedState === root.state) {
92+ return;
93+ }
94+
95+ d.resolveAnimationType();
96+
97+ var angleDiff = Math.abs(root.shell.orientationAngle - d.requestedOrientationAngle);
98+ var isNinetyRotationAnimation = angleDiff == 90 || angleDiff == 270;
99+ var needsShellSnapshot = d.animationType == d.fullAnimation && isNinetyRotationAnimation;
100+
101+ if (needsShellSnapshot && !shellSnapshotReady) {
102+ root.shellSnapshot.take();
103+ // try again once we have a shell snapshot ready for use. Snapshot taking is async.
104+ return;
105+ }
106+
107+ if (!needsShellSnapshot && shellSnapshotReady) {
108+ root.shellSnapshot.discard();
94109 }
110+
111+ root.state = requestedState;
95112 }
96113
114+ property bool shellSnapshotReady: root.shellSnapshot && root.shellSnapshot.ready
115+ onShellSnapshotReadyChanged: tryUpdateState();
116+
97117 property Connections shellConnections: Connections {
98118 target: root.orientedShell
99119 onOrientationChangesEnabledChanged: {
qml/Rotation/UpdateShellTransformations.qmlnew file+42
@@ -0,0 +1,42 @@
1+/*
2+ * Copyright (C) 2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+
19+ScriptAction {
20+ property var info
21+ property var shell
22+
23+ script: {
24+ shell.orientationAngle = info.requestedOrientationAngle;
25+ shell.transformRotationAngle = info.requestedOrientationAngle;
26+
27+ // They must all be bindings as orientedShell's size can change
28+
29+ if (info.requestedOrientationAngle === 90 || info.requestedOrientationAngle === 270) {
30+ shell.width = Qt.binding(function() { return orientedShell.height; });
31+ shell.height = Qt.binding(function() { return orientedShell.width; });
32+ } else {
33+ shell.width = Qt.binding(function() { return orientedShell.width; });
34+ shell.height = Qt.binding(function() { return orientedShell.height; });
35+ }
36+
37+ shell.x = Qt.binding(function() { return (orientedShell.width - shell.width) / 2; });
38+ shell.y = Qt.binding(function() { return (orientedShell.height - shell.height) / 2; });
39+ shell.transformOriginX = Qt.binding(function() { return shell.width / 2; });
40+ shell.transformOriginY = Qt.binding(function() { return shell.height / 2; });
41+ }
42+}
qml/Shell.qml+11−5
@@ -193,7 +193,7 @@ Item {
193193 onPowerKeyLongPressed: dialogs.showPowerDialog();
194194 onVolumeDownTriggered: volumeControl.volumeDown();
195195 onVolumeUpTriggered: volumeControl.volumeUp();
196− onScreenshotTriggered: screenGrabber.capture();
196+ onScreenshotTriggered: itemGrabber.capture(shell);
197197 }
198198
199199 GlobalShortcut {
@@ -705,16 +705,22 @@ Item {
705705 onShowHome: showHome()
706706 }
707707
708− ScreenGrabber {
709− id: screenGrabber
710− rotationAngle: -shell.orientationAngle
708+ ItemGrabber {
709+ id: itemGrabber
710+ anchors.fill: parent
711711 z: dialogs.z + 10
712+ GlobalShortcut { shortcut: Qt.Key_Print; onTriggered: itemGrabber.capture(shell) }
713+ Connections {
714+ target: applicationsDisplayLoader.item
715+ ignoreUnknownSignals: true
716+ onItemSnapshotRequested: itemGrabber.capture(item)
717+ }
712718 }
713719
714720 Cursor {
715721 id: cursor
716722 visible: shell.hasMouse
717− z: screenGrabber.z + 1
723+ z: itemGrabber.z + 1
718724
719725 onPushedLeftBoundary: {
720726 if (buttons === Qt.NoButton) {
qml/Stages/AbstractStage.qml+8−7
@@ -21,13 +21,6 @@ import GSettings 1.0
2121FocusScope {
2222 id: root
2323
24− property alias color: backRect.color
25− Rectangle {
26− id: backRect
27− color: "#060606"
28− anchors.fill: parent
29− }
30−
3124 // Controls to be set from outside
3225 property QtObject applicationManager
3326 property QtObject topLevelSurfaceList
@@ -49,6 +42,7 @@ FocusScope {
4942 property bool suspended
5043 // A Stage should paint a wallpaper etc over its full size but not use the margins for window placement
5144 property int leftMargin: 0
45+ property alias paintBackground: background.visible
5246
5347 // To be read from outside
5448 property var mainApp: null
@@ -60,6 +54,7 @@ FocusScope {
6054 | Qt.InvertedLandscapeOrientation
6155
6256 signal stageAboutToBeUnloaded
57+ signal itemSnapshotRequested(Item item)
6358
6459 // Shared code for use in stage implementations
6560 GSettings {
@@ -76,4 +71,10 @@ FocusScope {
7671 }
7772 return false;
7873 }
74+
75+ Rectangle {
76+ id: background
77+ color: "#060606"
78+ anchors.fill: parent
79+ }
7980}
qml/Stages/ApplicationWindow.qml+31−1
@@ -120,6 +120,17 @@ FocusScope {
120120 || (application.supportedOrientations & Qt.InvertedLandscapeOrientation))
121121
122122 property bool surfaceOldEnoughToBeResized: false
123+
124+ property var focusedSurface: {
125+ if (promptSurfacesRepeater.count == 0) {
126+ return surfaceContainer;
127+ } else {
128+ return promptSurfacesRepeater.itemAt(promptSurfacesRepeater.count - 1);
129+ }
130+ }
131+ onFocusedSurfaceChanged: {
132+ focusedSurface.focus = true;
133+ }
123134 }
124135
125136 Binding {
@@ -183,7 +194,26 @@ FocusScope {
183194 requestedWidth: root.requestedWidth
184195 requestedHeight: root.requestedHeight
185196 surfaceOrientationAngle: application && application.rotatesWindowContents ? root.surfaceOrientationAngle : 0
186− focus: true
197+ }
198+
199+ Repeater {
200+ id: promptSurfacesRepeater
201+ objectName: "promptSurfacesRepeater"
202+ // show only along with the top-most application surface
203+ model: {
204+ if (root.application && root.surface === root.application.surfaceList.first) {
205+ return root.application.promptSurfaceList;
206+ } else {
207+ return null;
208+ }
209+ }
210+ delegate: SurfaceContainer {
211+ interactive: index == (promptSurfacesRepeater.count - 1) && root.interactive
212+ surface: model.surface
213+ width: root.width
214+ height: root.height
215+ isPromptSurface: true
216+ }
187217 }
188218
189219 // SurfaceContainer size drives ApplicationWindow size
qml/Stages/DesktopStage.qml+7
@@ -26,6 +26,7 @@ import GlobalShortcut 1.0
2626AbstractStage {
2727 id: root
2828 anchors.fill: parent
29+ paintBackground: false
2930
3031 // functions to be called from outside
3132 function updateFocusedAppOrientation() { /* TODO */ }
@@ -94,6 +95,12 @@ AbstractStage {
9495 active: priv.focusedAppDelegate !== null
9596 }
9697
98+ GlobalShortcut {
99+ shortcut: Qt.AltModifier|Qt.Key_Print
100+ onTriggered: root.itemSnapshotRequested(priv.focusedAppDelegate)
101+ active: priv.focusedAppDelegate !== null
102+ }
103+
97104 Connections {
98105 target: root.topLevelSurfaceList
99106 onCountChanged: {
qml/Stages/PhoneStage.qml+2
@@ -31,6 +31,8 @@ AbstractStage {
3131 property real startScale: 1.1
3232 property real endScale: 0.7
3333
34+ paintBackground: spreadView.shiftedContentX !== 0
35+
3436 onBeingResizedChanged: {
3537 if (beingResized) {
3638 // Brace yourselves for impact!
qml/Stages/ShimStage.qml−1
@@ -21,7 +21,6 @@ AbstractStage {
2121 id: shimStage
2222
2323 anchors.fill: parent
24− color: UbuntuColors.lightAubergine
2524
2625 Text {
2726 id: greeterModeText
qml/Stages/SurfaceContainer.qml+4−63
@@ -33,7 +33,7 @@ FocusScope {
3333 property bool interactive
3434 property int surfaceOrientationAngle: 0
3535 property bool resizeSurface: true
36− property bool inPromptSession: false
36+ property bool isPromptSurface: false
3737
3838 onSurfaceChanged: {
3939 // Not a binding because animations might remove the surface from the surfaceItem
@@ -56,6 +56,8 @@ FocusScope {
5656 id: surfaceItem
5757 objectName: "surfaceItem"
5858
59+ focus: true
60+
5961 fillMode: MirSurfaceItem.PadOrCrop
6062 consumesInput: true
6163
@@ -122,59 +124,12 @@ FocusScope {
122124 when: root.requestedHeight < 0
123125 }
124126
125− Repeater {
126− id: childSurfacesRepeater
127− objectName: "childSurfacesRepeater"
128− model: root.surface ? root.surface.promptSurfaceList : null
129−
130− delegate: Loader {
131− objectName: "childDelegate" + index
132− anchors.fill: root
133−
134− // Only way to do recursive qml items.
135− source: Qt.resolvedUrl("SurfaceContainer.qml")
136−
137− z: index
138−
139− // Since a Loader is a FocusScope, propagate its focus to the loaded Item
140− Binding {
141− target: item; when: item
142− property: "focus"; value: focus
143− }
144−
145− Binding {
146− target: item; when: item
147− property: "interactive"; value: index == (childSurfacesRepeater.count - 1) && root.interactive
148− }
149−
150− Binding {
151− target: item; when: item
152− property: "surface"; value: model.surface
153− }
154−
155− Binding {
156− target: item; when: item
157− property: "width"; value: root.width
158− }
159−
160− Binding {
161− target: item; when: item
162− property: "height"; value: root.height
163− }
164−
165− Binding {
166− target: item; when: item
167− property: "inPromptSession"; value: true
168− }
169− }
170− }
171−
172127 Loader {
173128 id: animationsLoader
174129 objectName: "animationsLoader"
175130 active: root.surface
176131 source: {
177− if (root.inPromptSession) {
132+ if (root.isPromptSurface) {
178133 return "PromptSurfaceAnimations.qml";
179134 } else {
180135 // Let ApplicationWindow do the animations
@@ -194,18 +149,4 @@ FocusScope {
194149 value: root
195150 }
196151 }
197−
198− QtObject {
199− id: d
200− property var focusedChild: {
201− if (childSurfacesRepeater.count == 0) {
202− return surfaceItem;
203− } else {
204− return childSurfacesRepeater.itemAt(childSurfacesRepeater.count - 1);
205− }
206− }
207− onFocusedChildChanged: {
208− focusedChild.focus = true;
209− }
210− }
211152}
qml/Stages/TabletStage.qml+3
@@ -34,6 +34,8 @@ AbstractStage {
3434 property int stageFocusedSurface: priv.focusedAppDelegate ? priv.focusedAppDelegate.stage : ApplicationInfoInterface.MainStage
3535 // </tutorial-hacks>
3636
37+ paintBackground: spreadView.shiftedContentX !== 0
38+
3739 // Functions to be called from outside
3840 function updateFocusedAppOrientation() {
3941 var mainStageIndex = root.topLevelSurfaceList.indexForId(priv.mainStageItemId);
@@ -746,6 +748,7 @@ AbstractStage {
746748 surface: model.surface
747749 closeable: !isDash
748750 highlightShown: root.altTabPressed && priv.highlightIndex == zIndex
751+ dropShadow: spreadView.active || priv.focusedAppDelegateIsDislocated
749752
750753 readonly property bool wantsMainStage: stage == ApplicationInfoInterface.MainStage
751754
src/SecondaryWindow.cpp+9
@@ -19,9 +19,18 @@
1919// local
2020#include <paths.h>
2121
22+#include <QQmlContext>
23+
2224SecondaryWindow::SecondaryWindow(QQmlEngine *engine)
2325 : QQuickView(engine, nullptr)
2426{
27+ QByteArray pxpguEnv = qgetenv("GRID_UNIT_PX");
28+ bool ok;
29+ int pxpgu = pxpguEnv.toInt(&ok);
30+ if (!ok) {
31+ pxpgu = 8;
32+ }
33+ engine->rootContext()->setContextProperty("internalGu", pxpgu);
2534 setResizeMode(QQuickView::SizeRootObjectToView);
2635 setColor("black");
2736 setTitle(QStringLiteral("Unity8 Shell - Secondary Screen"));
src/ShellApplication.cpp+6
@@ -168,6 +168,9 @@ void ShellApplication::onScreenAdded(QScreen * /*screen*/)
168168 // Changing the QScreen where a QWindow is drawn makes it also lose focus (besides having
169169 // its backing QPlatformWindow recreated). So lets refocus it.
170170 m_shellView->requestActivate();
171+ // QWindow::destroy() is called when it changes between screens. We have to manually make it visible again
172+ // <dandrader> This bug is supposedly fixed in Qt 5.5.1, although I can still reproduce it there. :-/
173+ m_shellView->setVisible(true);
171174
172175 m_secondaryWindow = new SecondaryWindow(m_qmlEngine);
173176 m_secondaryWindow->setScreen(screens().at(0));
@@ -194,5 +197,8 @@ void ShellApplication::onScreenAboutToBeRemoved(QScreen *screen)
194197 // Changing the QScreen where a QWindow is drawn makes it also lose focus (besides having
195198 // its backing QPlatformWindow recreated). So lets refocus it.
196199 m_shellView->requestActivate();
200+ // QWindow::destroy() is called when it changes between screens. We have to manually make it visible again
201+ // <dandrader> This bug is supposedly fixed in Qt 5.5.1, although I can still reproduce it there. :-/
202+ m_shellView->setVisible(true);
197203 }
198204}
tests/mocks/Unity/Application/ApplicationInfo.cpp+8
@@ -194,6 +194,10 @@ void ApplicationInfo::setState(State value)
194194 MirSurface *surface = static_cast<MirSurface*>(m_surfaceList.get(i));
195195 surface->setLive(false);
196196 }
197+ for (int i = 0; i < m_promptSurfaceList.count(); ++i) {
198+ auto surface = static_cast<MirSurface*>(m_promptSurfaceList.get(i));
199+ surface->setLive(false);
200+ }
197201 }
198202
199203 m_state = value;
@@ -238,6 +242,10 @@ void ApplicationInfo::setManualSurfaceCreation(bool value)
238242 if (value != m_manualSurfaceCreation) {
239243 m_manualSurfaceCreation = value;
240244 Q_EMIT manualSurfaceCreationChanged(value);
245+
246+ if (m_manualSurfaceCreation && m_surfaceCreationTimer.isActive()) {
247+ m_surfaceCreationTimer.stop();
248+ }
241249 }
242250}
243251
tests/mocks/Unity/Application/ApplicationInfo.h+2
@@ -108,6 +108,7 @@ public:
108108 Q_INVOKABLE void setShellChrome(Mir::ShellChrome shellChrome);
109109
110110 MirSurfaceListInterface* surfaceList() override { return &m_surfaceList; }
111+ MirSurfaceListInterface* promptSurfaceList() override { return &m_promptSurfaceList; }
111112
112113 void setFocused(bool value);
113114
@@ -148,6 +149,7 @@ private:
148149 bool m_exemptFromLifecycle{false};
149150 QSize m_initialSurfaceSize;
150151 MirSurfaceListModel m_surfaceList;
152+ MirSurfaceListModel m_promptSurfaceList;
151153 int m_liveSurfaceCount{0};
152154 QTimer m_surfaceCreationTimer;
153155 QList<MirSurface*> m_closingSurfaces;
tests/mocks/Unity/Application/MirSurface.cpp+1−21
@@ -408,27 +408,6 @@ void MirSurface::close()
408408 }
409409}
410410
411−void MirSurface::createPromptSurface()
412−{
413− QStringList screenshotIds = {"gallery", "map", "facebook", "camera", "browser", "music", "twitter"};
414− int i = rand() % screenshotIds.count();
415−
416− QUrl screenshotUrl = QString("qrc:///Unity/Application/screenshots/%1@12.png")
417− .arg(screenshotIds[i]);
418−
419− auto surface = new MirSurface(QString("prompt foo"),
420− Mir::NormalType,
421− Mir::RestoredState,
422− screenshotUrl);
423−
424− m_promptSurfaceList.appendSurface(surface);
425−}
426−
427−MirSurfaceListInterface* MirSurface::promptSurfaceList()
428−{
429− return &m_promptSurfaceList;
430−}
431−
432411void MirSurface::requestFocus()
433412{
434413 DEBUG_MSG("");
@@ -485,6 +464,7 @@ void MirFocusController::setFocusedSurface(MirSurfaceInterface *surface)
485464
486465 if (m_focusedSurface) {
487466 Q_EMIT m_focusedSurface->focusedChanged(true);
467+ m_focusedSurface->raise();
488468 }
489469}
490470
tests/mocks/Unity/Application/MirSurface.h−5
@@ -107,8 +107,6 @@ public:
107107
108108 Q_INVOKABLE void close() override;
109109
110− unity::shell::application::MirSurfaceListInterface* promptSurfaceList() override;
111−
112110 Q_INVOKABLE void raise() override;
113111
114112 ////
@@ -130,8 +128,6 @@ public:
130128 Q_INVOKABLE void setWidthIncrement(int);
131129 Q_INVOKABLE void setHeightIncrement(int);
132130
133− Q_INVOKABLE void createPromptSurface();
134−
135131 /////
136132 // internal mock stuff
137133
@@ -199,7 +195,6 @@ private:
199195 QSize m_pendingResize;
200196
201197 Mir::ShellChrome m_shellChrome;
202− MirSurfaceListModel m_promptSurfaceList;
203198
204199 struct View {
205200 bool visible;
tests/mocks/Unity/Application/MirSurfaceListModel.cpp+28
@@ -67,6 +67,9 @@ void MirSurfaceListModel::appendSurface(MirSurface *surface)
6767 connectSurface(surface);
6868 endInsertRows();
6969 Q_EMIT countChanged();
70+ if (m_surfaceList.count() == 1) {
71+ Q_EMIT firstChanged();
72+ }
7073}
7174
7275void MirSurfaceListModel::connectSurface(MirSurface *surface)
@@ -83,6 +86,9 @@ void MirSurfaceListModel::removeSurface(MirSurface *surface)
8386 m_surfaceList.removeAt(i);
8487 endRemoveRows();
8588 Q_EMIT countChanged();
89+ if (m_surfaceList.count() == 0 || i == 0) {
90+ Q_EMIT firstChanged();
91+ }
8692 }
8793}
8894
@@ -100,6 +106,10 @@ void MirSurfaceListModel::moveSurface(int from, int to)
100106 m_surfaceList.move(from, to);
101107 endMoveRows();
102108 }
109+
110+ if ((from == 0 || to == 0) && m_surfaceList.count() > 1) {
111+ Q_EMIT firstChanged();
112+ }
103113}
104114
105115MirSurfaceInterface *MirSurfaceListModel::get(int index)
@@ -119,3 +129,21 @@ const MirSurfaceInterface *MirSurfaceListModel::get(int index) const
119129 return nullptr;
120130 }
121131}
132+
133+MirSurfaceInterface *MirSurfaceListModel::createSurface()
134+{
135+ QStringList screenshotIds = {"gallery", "map", "facebook", "camera", "browser", "music", "twitter"};
136+ int i = rand() % screenshotIds.count();
137+
138+ QUrl screenshotUrl = QString("qrc:///Unity/Application/screenshots/%1@12.png")
139+ .arg(screenshotIds[i]);
140+
141+ auto surface = new MirSurface(QString("prompt foo"),
142+ Mir::NormalType,
143+ Mir::RestoredState,
144+ screenshotUrl);
145+
146+ appendSurface(surface);
147+
148+ return surface;
149+}
tests/mocks/Unity/Application/MirSurfaceListModel.h+5
@@ -43,6 +43,11 @@ public:
4343
4444 bool contains(MirSurface *surface) const { return m_surfaceList.contains(surface); }
4545
46+ ////
47+ // API for tests
48+
49+ Q_INVOKABLE unity::shell::application::MirSurfaceInterface *createSurface();
50+
4651private:
4752 void raise(MirSurface *surface);
4853 void moveSurface(int from, int to);
tests/mocks/Unity/CMakeLists.txt+3−1
@@ -8,7 +8,7 @@ add_subdirectory(DashCommunicator)
88add_subdirectory(Screens)
99
1010pkg_search_module(GOBJECT gobject-2.0 REQUIRED)
11−pkg_check_modules(SCOPES_API REQUIRED unity-shell-scopes=11)
11+pkg_check_modules(SCOPES_API REQUIRED unity-shell-scopes=12)
1212
1313include_directories(
1414 ${CMAKE_CURRENT_BINARY_DIR}
@@ -34,6 +34,7 @@ set(UnityQML_SOURCES
3434 fake_optionselectoroptions.cpp
3535 fake_rangeinputfilter.cpp
3636 fake_valuesliderfilter.cpp
37+ fake_expandablefilterwidget.cpp
3738 fake_valueslidervalues.cpp
3839 fake_unity_plugin.cpp
3940 ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/CategoriesInterface.h
@@ -51,6 +52,7 @@ set(UnityQML_SOURCES
5152 ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/SettingsModelInterface.h
5253 ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/ValueSliderFilterInterface.h
5354 ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/ValueSliderValuesInterface.h
55+ ${SCOPES_API_INCLUDEDIR}/unity/shell/scopes/ExpandableFilterWidgetInterface.h
5456)
5557
5658# Workaround for gcc failure LP: #1417664
tests/mocks/Unity/fake_categories.cpp+4−1
@@ -88,7 +88,7 @@ Categories::data(const QModelIndex& index, int role) const
8888 }
8989 case RoleComponents:
9090 {
91− QVariantMap map, artMap, attributeMap;
91+ QVariantMap map, artMap, attributeMap, socialActionMap;
9292 if (index.row() % 2 != 0) {
9393 artMap["aspect-ratio"] = QString("1.%1").arg(index.row());
9494 } else {
@@ -99,6 +99,9 @@ Categories::data(const QModelIndex& index, int role) const
9999 map["title"] = "HOLA";
100100 map["subtitle"] = "HOLA";
101101 attributeMap["field"] = "attribute";
102+ socialActionMap["icon"] = "icon";
103+ socialActionMap["id"] = "socialHola";
104+ map["socialActions"] = socialActionMap;
102105 map["attributes"] = attributeMap;
103106 return map;
104107 }
tests/mocks/Unity/fake_expandablefilterwidget.cppnew file+53
@@ -0,0 +1,53 @@
1+/*
2+ * Copyright (C) 2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#include "fake_expandablefilterwidget.h"
18+
19+#include "fake_filters.h"
20+
21+FakeExpandbleFilterWidget::FakeExpandbleFilterWidget(const QString &id, const QString &tag, const QString &title, QObject* parent)
22+ : unity::shell::scopes::ExpandableFilterWidgetInterface(parent)
23+ , m_filterId(id)
24+ , m_filterTag(tag)
25+ , m_title(title)
26+{
27+ m_filters = new Filters(this);
28+}
29+
30+QString FakeExpandbleFilterWidget::filterId() const
31+{
32+ return m_filterId;
33+}
34+
35+QString FakeExpandbleFilterWidget::filterTag() const
36+{
37+ return m_filterTag;
38+}
39+
40+QString FakeExpandbleFilterWidget::title() const
41+{
42+ return m_title;
43+}
44+
45+unity::shell::scopes::FiltersInterface* FakeExpandbleFilterWidget::filters() const
46+{
47+ return m_filters;
48+}
49+
50+void FakeExpandbleFilterWidget::addFilter(unity::shell::scopes::FilterBaseInterface* f)
51+{
52+ m_filters->addFilter(f);
53+}
tests/mocks/Unity/fake_expandablefilterwidget.hnew file+48
@@ -0,0 +1,48 @@
1+/*
2+ * Copyright (C) 2016 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#ifndef FAKE_EXPANDABLEFILTERWIDGET_H
18+#define FAKE_EXPANDABLEFILTERWIDGET_H
19+
20+#include <unity/shell/scopes/ExpandableFilterWidgetInterface.h>
21+
22+class Filters;
23+
24+class FakeExpandbleFilterWidget : public unity::shell::scopes::ExpandableFilterWidgetInterface
25+{
26+ Q_OBJECT
27+
28+public:
29+ FakeExpandbleFilterWidget(const QString &id, const QString &tag, const QString &title, QObject* parent);
30+
31+ QString filterId() const override;
32+ QString filterTag() const override;
33+ QString title() const override;
34+
35+ unity::shell::scopes::FiltersInterface* filters() const override;
36+
37+ // mock API
38+ void addFilter(unity::shell::scopes::FilterBaseInterface* f);
39+
40+private:
41+ QString m_filterId;
42+ QString m_filterTag;
43+ QString m_title;
44+
45+ Filters *m_filters;
46+};
47+
48+#endif
tests/mocks/Unity/fake_filters.cpp+19−8
@@ -19,10 +19,14 @@
1919#include "fake_optionselectorfilter.h"
2020#include "fake_rangeinputfilter.h"
2121#include "fake_valuesliderfilter.h"
22−#include "fake_scope.h"
22+#include "fake_expandablefilterwidget.h"
2323
24−Filters::Filters(Scope* parent)
24+Filters::Filters(QObject* parent)
2525 : unity::shell::scopes::FiltersInterface(parent)
26+{
27+}
28+
29+void Filters::addFakeFilters()
2630{
2731 addFilter(new FakeOptionSelectorFilter("OSF1", "Tag1", "Which Cake you like More", false, QStringList() << "cheese" << "carrot" << "chocolate", this));
2832
@@ -41,6 +45,11 @@ Filters::Filters(Scope* parent)
4145 addFilter(vsf);
4246
4347 addFilter(new FakeOptionSelectorFilter("OSF2", "Tag2", "Which Countries have you been to?", true, QStringList() << "Germany" << "UK" << "New Zealand", this));
48+
49+ auto expandableFilter = new FakeExpandbleFilterWidget("EFW", "Tag5", "Advanced Settings", this);
50+ expandableFilter->addFilter(new FakeValueSliderFilter("VS2", "Tag6", 15, 10, 150, labels, this));
51+
52+ addFilter(expandableFilter);
4453}
4554
4655void Filters::addFilter(unity::shell::scopes::FilterBaseInterface *f)
@@ -58,9 +67,10 @@ void Filters::addFilter(unity::shell::scopes::FilterBaseInterface *f)
5867 }
5968 break;
6069
61− case FiltersInterface::ValueSliderFilter: {
62− // Not counting value slider as active in the mock
63− }
70+ case FiltersInterface::ExpandableFilterWidget:
71+ // Can't be active
72+ case FiltersInterface::ValueSliderFilter:
73+ // Not counting value as active in the mock
6474
6575 case Invalid:
6676 break;
@@ -113,9 +123,10 @@ int Filters::activeFiltersCount() const
113123 }
114124 break;
115125
116− case FiltersInterface::ValueSliderFilter: {
117− // Not counting value slider as active in the mock
118− }
126+ case FiltersInterface::ExpandableFilterWidget:
127+ // Can't be active
128+ case FiltersInterface::ValueSliderFilter:
129+ // Not counting value as active in the mock
119130
120131 case Invalid:
121132 break;
tests/mocks/Unity/fake_filters.h+4−4
@@ -20,25 +20,25 @@
2020#include <unity/shell/scopes/FiltersInterface.h>
2121#include <unity/shell/scopes/FilterBaseInterface.h>
2222
23−class Scope;
24−
2523class Filters : public unity::shell::scopes::FiltersInterface
2624{
2725 Q_OBJECT
2826
2927public:
30− Filters(Scope* parent);
28+ Filters(QObject* parent);
3129
3230 int rowCount(const QModelIndex &parent) const override;
3331 QVariant data(const QModelIndex &index, int role) const override;
3432
33+ // Mock API
3534 int activeFiltersCount() const;
35+ void addFakeFilters();
36+ void addFilter(unity::shell::scopes::FilterBaseInterface* f);
3637
3738Q_SIGNALS:
3839 void activeFiltersCountChanged();
3940
4041private:
41− void addFilter(unity::shell::scopes::FilterBaseInterface* f);
4242
4343 QVector<unity::shell::scopes::FilterBaseInterface*> m_filters;
4444};
tests/mocks/Unity/fake_resultsmodel.cpp+2
@@ -72,6 +72,8 @@ ResultsModel::data(const QModelIndex& index, int role) const
7272 case RoleUri:
7373 case RoleCategoryId:
7474 case RoleDndUri:
75+ case RoleAttributes:
76+ case RoleSocialActions:
7577 return QString();
7678 case RoleResult:
7779 return QString("Result.%1.%2").arg(m_categoryId).arg(index.row());
tests/mocks/Unity/fake_scope.cpp+2
@@ -49,6 +49,8 @@ Scope::Scope(QString const& id, QString const& name, bool favorite, Scopes* pare
4949 , m_filters(new Filters(this))
5050 , m_returnNullPreview(returnNullPreview)
5151{
52+ m_filters->addFakeFilters();
53+
5254 m_primaryNavigationFilter = new FakeOptionSelectorFilter("OSF3", "PFTag", "Which food you like More", false, QStringList() << "meat" << "vegetables", this);
5355 connect(m_filters, &Filters::activeFiltersCountChanged, this, &Scope::activeFiltersCountChanged);
5456}
tests/mocks/Utils/CMakeLists.txt−1
@@ -13,7 +13,6 @@ set(QMLPLUGIN_SRC
1313 ${CMAKE_SOURCE_DIR}/plugins/Utils/unitysortfilterproxymodelqml.cpp
1414 ${CMAKE_SOURCE_DIR}/plugins/Utils/unitymenumodelpaths.cpp
1515 ${CMAKE_SOURCE_DIR}/plugins/Utils/windowinputfilter.cpp
16− ${CMAKE_SOURCE_DIR}/plugins/Utils/windowscreenshotprovider.cpp
1716 ${CMAKE_SOURCE_DIR}/plugins/Utils/easingcurve.cpp
1817 ${CMAKE_SOURCE_DIR}/plugins/Utils/inputwatcher.cpp
1918 ${CMAKE_SOURCE_DIR}/plugins/Utils/timezoneFormatter.cpp
tests/mocks/Utils/plugin.cpp−8
@@ -33,7 +33,6 @@
3333#include <unitysortfilterproxymodelqml.h>
3434#include <unitymenumodelpaths.h>
3535#include <windowinputfilter.h>
36−#include <windowscreenshotprovider.h>
3736#include <easingcurve.h>
3837#include <timezoneFormatter.h>
3938#include <applicationsfiltermodel.h>
@@ -82,10 +81,3 @@ void FakeUtilsPlugin::registerTypes(const char *uri)
8281 qmlRegisterType<DeviceConfigParser>(uri, 0, 1, "DeviceConfigParser");
8382 qmlRegisterSingletonType<GlobalFunctions>(uri, 0, 1, "Functions", createGlobalFunctions);
8483}
85−
86−void FakeUtilsPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
87−{
88− QQmlExtensionPlugin::initializeEngine(engine, uri);
89−
90− engine->addImageProvider(QLatin1String("window"), new WindowScreenshotProvider);
91−}
tests/mocks/Utils/plugin.h−1
@@ -27,7 +27,6 @@ class FakeUtilsPlugin : public QQmlExtensionPlugin
2727
2828public:
2929 void registerTypes(const char *uri);
30− void initializeEngine(QQmlEngine *engine, const char *uri);
3130};
3231
3332#endif
tests/plugins/CMakeLists.txt−1
@@ -3,7 +3,6 @@ add_subdirectory(GlobalShortcut)
33add_subdirectory(Greeter)
44add_subdirectory(IntegratedLightDM)
55add_subdirectory(Dash)
6−add_subdirectory(ScreenGrabber)
76add_subdirectory(Ubuntu)
87add_subdirectory(Unity)
98add_subdirectory(Utils)
tests/plugins/Dash/cardcreator/1.res+1−1
@@ -11,7 +11,7 @@ AbstractButton {
1111 property bool showHeader: true;
1212 implicitWidth: childrenRect.width;
1313 enabled: true;
14−
14+signal action(var actionId);
1515readonly property size artShapeSize: artShapeLoader.item ? Qt.size(artShapeLoader.item.width, artShapeLoader.item.height) : Qt.size(-1, -1);
1616Item {
1717 id: artShapeHolder;
tests/plugins/Dash/cardcreator/1.res.cardcreator+1−1
@@ -10,7 +10,7 @@ AbstractButton {
1010 property bool showHeader: true;
1111 implicitWidth: childrenRect.width;
1212 enabled: true;
13−
13+signal action(var actionId);
1414readonly property size artShapeSize: artShapeLoader.item ? Qt.size(artShapeLoader.item.width, artShapeLoader.item.height) : Qt.size(-1, -1);
1515Item {
1616 id: artShapeHolder;
tests/plugins/Dash/cardcreator/10.res+1−1
@@ -11,7 +11,7 @@ AbstractButton {
1111 property bool showHeader: true;
1212 implicitWidth: childrenRect.width;
1313 enabled: true;
14−
14+signal action(var actionId);
1515Loader {
1616 id: backgroundLoader;
1717 objectName: "backgroundLoader";
tests/plugins/Dash/cardcreator/10.res.cardcreator+1−1
@@ -10,7 +10,7 @@ AbstractButton {
1010 property bool showHeader: true;
1111 implicitWidth: childrenRect.width;
1212 enabled: true;
13−
13+signal action(var actionId);
1414Loader {
1515 id: backgroundLoader;
1616 objectName: "backgroundLoader";
tests/plugins/Dash/cardcreator/11.res+1−1
@@ -11,7 +11,7 @@ AbstractButton {
1111 property bool showHeader: true;
1212 implicitWidth: childrenRect.width;
1313 enabled: true;
14−
14+signal action(var actionId);
1515Loader {
1616 id: backgroundLoader;
1717 objectName: "backgroundLoader";
tests/plugins/Dash/cardcreator/11.res.cardcreator+1−1
@@ -10,7 +10,7 @@ AbstractButton {
1010 property bool showHeader: true;
1111 implicitWidth: childrenRect.width;
1212 enabled: true;
13−
13+signal action(var actionId);
1414Loader {
1515 id: backgroundLoader;
1616 objectName: "backgroundLoader";
tests/plugins/Dash/cardcreator/12.resnew file+139
@@ -0,0 +1,139 @@
1+AbstractButton {
2+ id: root;
3+ property var cardData;
4+ property string artShapeStyle: "inset";
5+ property string backgroundShapeStyle: "inset";
6+ property real fontScale: 1.0;
7+ property var scopeStyle: null;
8+ property int fixedHeaderHeight: -1;
9+ property size fixedArtShapeSize: Qt.size(-1, -1);
10+ readonly property string title: cardData && cardData["title"] || "";
11+ property bool showHeader: true;
12+ implicitWidth: childrenRect.width;
13+ enabled: true;
14+signal action(var actionId);
15+readonly property size artShapeSize: artShapeLoader.item ? Qt.size(artShapeLoader.item.width, artShapeLoader.item.height) : Qt.size(-1, -1);
16+Item {
17+ id: artShapeHolder;
18+ height: root.fixedArtShapeSize.height > 0 ? root.fixedArtShapeSize.height : artShapeLoader.height;
19+ width: root.fixedArtShapeSize.width > 0 ? root.fixedArtShapeSize.width : artShapeLoader.width;
20+ anchors { horizontalCenter: parent.horizontalCenter; }
21+ Loader {
22+ id: artShapeLoader;
23+ objectName: "artShapeLoader";
24+ readonly property string cardArt: cardData && cardData["art"] || "";
25+ active: cardArt != "";
26+ asynchronous: true;
27+ visible: status == Loader.Ready;
28+ sourceComponent: Item {
29+ id: artShape;
30+ objectName: "artShape";
31+ visible: image.status == Image.Ready;
32+ readonly property alias image: artImage;
33+ Loader {
34+ anchors.fill: parent;
35+ visible: true;
36+ sourceComponent: root.artShapeStyle === "icon" ? artShapeIconComponent : artShapeShapeComponent;
37+ Component {
38+ id: artShapeShapeComponent;
39+ UbuntuShape {
40+ source: artImage;
41+ sourceFillMode: UbuntuShape.PreserveAspectCrop;
42+ radius: "medium";
43+ aspect: {
44+ switch (root.artShapeStyle) {
45+ case "inset": return UbuntuShape.Inset;
46+ case "shadow": return UbuntuShape.DropShadow;
47+ default:
48+ case "flat": return UbuntuShape.Flat;
49+ }
50+ }
51+ }
52+ }
53+ Component {
54+ id: artShapeIconComponent;
55+ ProportionalShape { source: artImage; aspect: UbuntuShape.DropShadow; }
56+ }
57+ }
58+ readonly property real fixedArtShapeSizeAspect: (root.fixedArtShapeSize.height > 0 && root.fixedArtShapeSize.width > 0) ? root.fixedArtShapeSize.width / root.fixedArtShapeSize.height : -1;
59+ readonly property real aspect: fixedArtShapeSizeAspect > 0 ? fixedArtShapeSizeAspect : 0.75;
60+ Component.onCompleted: { updateWidthHeightBindings(); }
61+ Connections { target: root; onFixedArtShapeSizeChanged: updateWidthHeightBindings(); }
62+ function updateWidthHeightBindings() {
63+ if (root.fixedArtShapeSize.height > 0 && root.fixedArtShapeSize.width > 0) {
64+ width = root.fixedArtShapeSize.width;
65+ height = root.fixedArtShapeSize.height;
66+ } else {
67+ width = Qt.binding(function() { return image.status !== Image.Ready ? 0 : image.width });
68+ height = Qt.binding(function() { return image.status !== Image.Ready ? 0 : image.height });
69+ }
70+ }
71+ CroppedImageMinimumSourceSize {
72+ id: artImage;
73+ objectName: "artImage";
74+ source: artShapeLoader.cardArt;
75+ asynchronous: true;
76+ visible: !true;
77+ width: root.width;
78+ height: width / artShape.aspect;
79+ }
80+ }
81+ }
82+ }
83+readonly property int headerHeight: titleLabel.height + subtitleLabel.height + subtitleLabel.anchors.topMargin;
84+Label {
85+ id: titleLabel;
86+ objectName: "titleLabel";
87+ anchors { right: parent.right;
88+ left: parent.left;
89+ top: artShapeHolder.bottom;
90+ topMargin: units.gu(1);
91+ }
92+ elide: Text.ElideRight;
93+ fontSize: "small";
94+ wrapMode: Text.Wrap;
95+ maximumLineCount: 2;
96+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
97+ color: root.scopeStyle ? root.scopeStyle.foreground : theme.palette.normal.baseText;
98+ visible: showHeader ;
99+ width: undefined;
100+ text: root.title;
101+ font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
102+ horizontalAlignment: Text.AlignLeft;
103+ }
104+Label {
105+ id: subtitleLabel;
106+ objectName: "subtitleLabel";
107+ anchors { left: titleLabel.left;
108+ leftMargin: titleLabel.leftMargin;
109+ right: titleLabel.right;
110+ top: titleLabel.bottom;
111+ }
112+ anchors.topMargin: units.dp(2);
113+ elide: Text.ElideRight;
114+ maximumLineCount: 1;
115+ fontSize: "x-small";
116+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
117+ color: root.scopeStyle ? root.scopeStyle.foreground : theme.palette.normal.baseText;
118+ visible: titleLabel.visible && titleLabel.text;
119+ text: cardData && cardData["subtitle"] || "";
120+ font.weight: Font.Light;
121+ }
122+CardSocialActions {
123+ id: socialActionsRow;
124+ objectName: "socialActionsRow";
125+ anchors { top: subtitleLabel.bottom; left: parent.left; right: parent.right; topMargin: units.gu(1); }
126+ color: root.scopeStyle ? root.scopeStyle.foreground : theme.palette.normal.baseText;
127+ model: cardData && cardData["socialActions"];
128+ onClicked: root.action(actionId);
129+}
130+UbuntuShape {
131+ id: touchdown;
132+ objectName: "touchdown";
133+ anchors { fill: artShapeHolder }
134+ visible: root.artShapeStyle != "shadow" && root.artShapeStyle != "icon" && root.pressed;
135+ radius: "medium";
136+ borderSource: "radius_pressed.sci"
137+}
138+implicitHeight: socialActionsRow.y + socialActionsRow.height + units.gu(1);
139+}
tests/plugins/Dash/cardcreator/12.res.cardcreatornew file+138
@@ -0,0 +1,138 @@
1+AbstractButton {
2+ id: root;
3+ property var cardData;
4+ property string artShapeStyle: "inset";
5+ property string backgroundShapeStyle: "inset";
6+ property real fontScale: 1.0;
7+ property var scopeStyle: null;
8+ property size fixedArtShapeSize: Qt.size(-1, -1);
9+ readonly property string title: cardData && cardData["title"] || "";
10+ property bool showHeader: true;
11+ implicitWidth: childrenRect.width;
12+ enabled: true;
13+signal action(var actionId);
14+readonly property size artShapeSize: artShapeLoader.item ? Qt.size(artShapeLoader.item.width, artShapeLoader.item.height) : Qt.size(-1, -1);
15+Item {
16+ id: artShapeHolder;
17+ height: root.fixedArtShapeSize.height > 0 ? root.fixedArtShapeSize.height : artShapeLoader.height;
18+ width: root.fixedArtShapeSize.width > 0 ? root.fixedArtShapeSize.width : artShapeLoader.width;
19+ anchors { horizontalCenter: parent.horizontalCenter; }
20+ Loader {
21+ id: artShapeLoader;
22+ objectName: "artShapeLoader";
23+ readonly property string cardArt: cardData && cardData["art"] || "";
24+ active: cardArt != "";
25+ asynchronous: false;
26+ visible: status == Loader.Ready;
27+ sourceComponent: Item {
28+ id: artShape;
29+ objectName: "artShape";
30+ visible: image.status == Image.Ready;
31+ readonly property alias image: artImage;
32+ Loader {
33+ anchors.fill: parent;
34+ visible: true;
35+ sourceComponent: root.artShapeStyle === "icon" ? artShapeIconComponent : artShapeShapeComponent;
36+ Component {
37+ id: artShapeShapeComponent;
38+ UbuntuShape {
39+ source: artImage;
40+ sourceFillMode: UbuntuShape.PreserveAspectCrop;
41+ radius: "medium";
42+ aspect: {
43+ switch (root.artShapeStyle) {
44+ case "inset": return UbuntuShape.Inset;
45+ case "shadow": return UbuntuShape.DropShadow;
46+ default:
47+ case "flat": return UbuntuShape.Flat;
48+ }
49+ }
50+ }
51+ }
52+ Component {
53+ id: artShapeIconComponent;
54+ ProportionalShape { source: artImage; aspect: UbuntuShape.DropShadow; }
55+ }
56+ }
57+ readonly property real fixedArtShapeSizeAspect: (root.fixedArtShapeSize.height > 0 && root.fixedArtShapeSize.width > 0) ? root.fixedArtShapeSize.width / root.fixedArtShapeSize.height : -1;
58+ readonly property real aspect: fixedArtShapeSizeAspect > 0 ? fixedArtShapeSizeAspect : 0.75;
59+ Component.onCompleted: { updateWidthHeightBindings(); }
60+ Connections { target: root; onFixedArtShapeSizeChanged: updateWidthHeightBindings(); }
61+ function updateWidthHeightBindings() {
62+ if (root.fixedArtShapeSize.height > 0 && root.fixedArtShapeSize.width > 0) {
63+ width = root.fixedArtShapeSize.width;
64+ height = root.fixedArtShapeSize.height;
65+ } else {
66+ width = Qt.binding(function() { return image.status !== Image.Ready ? 0 : image.width });
67+ height = Qt.binding(function() { return image.status !== Image.Ready ? 0 : image.height });
68+ }
69+ }
70+ CroppedImageMinimumSourceSize {
71+ id: artImage;
72+ objectName: "artImage";
73+ source: artShapeLoader.cardArt;
74+ asynchronous: false;
75+ visible: !true;
76+ width: root.width;
77+ height: width / artShape.aspect;
78+ }
79+ }
80+ }
81+ }
82+readonly property int headerHeight: titleLabel.height + subtitleLabel.height + subtitleLabel.anchors.topMargin;
83+Label {
84+ id: titleLabel;
85+ objectName: "titleLabel";
86+ anchors { right: parent.right;
87+ left: parent.left;
88+ top: artShapeHolder.bottom;
89+ topMargin: units.gu(1);
90+ }
91+ elide: Text.ElideRight;
92+ fontSize: "small";
93+ wrapMode: Text.Wrap;
94+ maximumLineCount: 2;
95+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
96+ color: root.scopeStyle ? root.scopeStyle.foreground : theme.palette.normal.baseText;
97+ visible: showHeader ;
98+ width: undefined;
99+ text: root.title;
100+ font.weight: cardData && cardData["subtitle"] ? Font.DemiBold : Font.Normal;
101+ horizontalAlignment: Text.AlignLeft;
102+ }
103+Label {
104+ id: subtitleLabel;
105+ objectName: "subtitleLabel";
106+ anchors { left: titleLabel.left;
107+ leftMargin: titleLabel.leftMargin;
108+ right: titleLabel.right;
109+ top: titleLabel.bottom;
110+ }
111+ anchors.topMargin: units.dp(2);
112+ elide: Text.ElideRight;
113+ maximumLineCount: 1;
114+ fontSize: "x-small";
115+ font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale);
116+ color: root.scopeStyle ? root.scopeStyle.foreground : theme.palette.normal.baseText;
117+ visible: titleLabel.visible && titleLabel.text;
118+ text: cardData && cardData["subtitle"] || "";
119+ font.weight: Font.Light;
120+ }
121+CardSocialActions {
122+ id: socialActionsRow;
123+ objectName: "socialActionsRow";
124+ anchors { top: subtitleLabel.bottom; left: parent.left; right: parent.right; topMargin: units.gu(1); }
125+ color: root.scopeStyle ? root.scopeStyle.foreground : theme.palette.normal.baseText;
126+ model: cardData && cardData["socialActions"];
127+ onClicked: root.action(actionId);
128+}
129+UbuntuShape {
130+ id: touchdown;
131+ objectName: "touchdown";
132+ anchors { fill: artShapeHolder }
133+ visible: root.artShapeStyle != "shadow" && root.artShapeStyle != "icon" && root.pressed;
134+ radius: "medium";
135+ borderSource: "radius_pressed.sci"
136+}
137+implicitHeight: socialActionsRow.y + socialActionsRow.height + units.gu(1);
138+}
tests/plugins/Dash/cardcreator/12.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":0.75,"field":"art"},"subtitle":{"field":"price"},"title":{"field":"title"},"attributes":{},"social-actions":{}}
3+result: 12.res
tests/plugins/Dash/cardcreator/2.res+1−1
@@ -11,7 +11,7 @@ AbstractButton {
1111 property bool showHeader: true;
1212 implicitWidth: childrenRect.width;
1313 enabled: true;
14−
14+signal action(var actionId);
1515Loader {
1616 id: backgroundLoader;
1717 objectName: "backgroundLoader";
tests/plugins/Dash/cardcreator/2.res.cardcreator+1−1
@@ -10,7 +10,7 @@ AbstractButton {
1010 property bool showHeader: true;
1111 implicitWidth: childrenRect.width;
1212 enabled: true;
13−
13+signal action(var actionId);
1414Loader {
1515 id: backgroundLoader;
1616 objectName: "backgroundLoader";
tests/plugins/Dash/cardcreator/3.res+1−1
@@ -11,7 +11,7 @@ AbstractButton {
1111 property bool showHeader: true;
1212 implicitWidth: childrenRect.width;
1313 enabled: true;
14−
14+signal action(var actionId);
1515readonly property size artShapeSize: artShapeLoader.item ? Qt.size(artShapeLoader.item.width, artShapeLoader.item.height) : Qt.size(-1, -1);
1616Item {
1717 id: artShapeHolder;
tests/plugins/Dash/cardcreator/3.res.cardcreator+1−1
@@ -10,7 +10,7 @@ AbstractButton {
1010 property bool showHeader: true;
1111 implicitWidth: childrenRect.width;
1212 enabled: true;
13−
13+signal action(var actionId);
1414readonly property size artShapeSize: artShapeLoader.item ? Qt.size(artShapeLoader.item.width, artShapeLoader.item.height) : Qt.size(-1, -1);
1515Item {
1616 id: artShapeHolder;
tests/plugins/Dash/cardcreator/4.res+1−1
@@ -11,7 +11,7 @@ AbstractButton {
1111 property bool showHeader: true;
1212 implicitWidth: childrenRect.width;
1313 enabled: true;
14−
14+signal action(var actionId);
1515readonly property size artShapeSize: Qt.size(-1, -1);
1616readonly property int headerHeight: row.height;
1717Row {
tests/plugins/Dash/cardcreator/4.res.cardcreator+1−1
@@ -10,7 +10,7 @@ AbstractButton {
1010 property bool showHeader: true;
1111 implicitWidth: childrenRect.width;
1212 enabled: true;
13−
13+signal action(var actionId);
1414readonly property size artShapeSize: Qt.size(-1, -1);
1515readonly property int headerHeight: row.height;
1616Row {
tests/plugins/Dash/cardcreator/5.res+1−1
@@ -11,7 +11,7 @@ AbstractButton {
1111 property bool showHeader: true;
1212 implicitWidth: childrenRect.width;
1313 enabled: false;
14−
14+signal action(var actionId);
1515readonly property size artShapeSize: artShapeLoader.item ? Qt.size(artShapeLoader.item.width, artShapeLoader.item.height) : Qt.size(-1, -1);
1616Item {
1717 id: artShapeHolder;
tests/plugins/Dash/cardcreator/5.res.cardcreator+1−1
@@ -10,7 +10,7 @@ AbstractButton {
1010 property bool showHeader: true;
1111 implicitWidth: childrenRect.width;
1212 enabled: false;
13−
13+signal action(var actionId);
1414readonly property size artShapeSize: artShapeLoader.item ? Qt.size(artShapeLoader.item.width, artShapeLoader.item.height) : Qt.size(-1, -1);
1515Item {
1616 id: artShapeHolder;
tests/plugins/Dash/cardcreator/6.res+1−1
@@ -11,7 +11,7 @@ AbstractButton {
1111 property bool showHeader: true;
1212 implicitWidth: childrenRect.width;
1313 enabled: true;
14−
14+signal action(var actionId);
1515Loader {
1616 id: backgroundLoader;
1717 objectName: "backgroundLoader";
tests/plugins/Dash/cardcreator/6.res.cardcreator+1−1
@@ -10,7 +10,7 @@ AbstractButton {
1010 property bool showHeader: true;
1111 implicitWidth: childrenRect.width;
1212 enabled: true;
13−
13+signal action(var actionId);
1414Loader {
1515 id: backgroundLoader;
1616 objectName: "backgroundLoader";
tests/plugins/Dash/cardcreator/7.res+1−1
@@ -11,7 +11,7 @@ AbstractButton {
1111 property bool showHeader: true;
1212 implicitWidth: childrenRect.width;
1313 enabled: true;
14−
14+signal action(var actionId);
1515Loader {
1616 id: backgroundLoader;
1717 objectName: "backgroundLoader";
tests/plugins/Dash/cardcreator/7.res.cardcreator+1−1
@@ -10,7 +10,7 @@ AbstractButton {
1010 property bool showHeader: true;
1111 implicitWidth: childrenRect.width;
1212 enabled: true;
13−
13+signal action(var actionId);
1414Loader {
1515 id: backgroundLoader;
1616 objectName: "backgroundLoader";
tests/plugins/Dash/cardcreator/8.res+1−1
@@ -11,7 +11,7 @@ AbstractButton {
1111 property bool showHeader: true;
1212 implicitWidth: childrenRect.width;
1313 enabled: true;
14−
14+signal action(var actionId);
1515Loader {
1616 id: backgroundLoader;
1717 objectName: "backgroundLoader";
tests/plugins/Dash/cardcreator/8.res.cardcreator+1−1
@@ -10,7 +10,7 @@ AbstractButton {
1010 property bool showHeader: true;
1111 implicitWidth: childrenRect.width;
1212 enabled: true;
13−
13+signal action(var actionId);
1414Loader {
1515 id: backgroundLoader;
1616 objectName: "backgroundLoader";
tests/plugins/Dash/cardcreator/9.res+1−1
@@ -11,7 +11,7 @@ AbstractButton {
1111 property bool showHeader: true;
1212 implicitWidth: childrenRect.width;
1313 enabled: true;
14−
14+signal action(var actionId);
1515readonly property size artShapeSize: Qt.size(-1, -1);
1616readonly property int headerHeight: titleLabel.height + subtitleLabel.height + subtitleLabel.anchors.topMargin + audioProgressBar.height + audioProgressBar.anchors.topMargin;
1717Label {
tests/plugins/Dash/cardcreator/9.res.cardcreator+1−1
@@ -10,7 +10,7 @@ AbstractButton {
1010 property bool showHeader: true;
1111 implicitWidth: childrenRect.width;
1212 enabled: true;
13−
13+signal action(var actionId);
1414readonly property size artShapeSize: Qt.size(-1, -1);
1515readonly property int headerHeight: titleLabel.height + subtitleLabel.height + subtitleLabel.anchors.topMargin + audioProgressBar.height + audioProgressBar.anchors.topMargin;
1616Label {
tests/plugins/ScreenGrabber/CMakeLists.txtdeleted−14
@@ -1,14 +0,0 @@
1−include_directories(
2− ${CMAKE_SOURCE_DIR}/plugins/ScreenGrabber
3− ${CMAKE_CURRENT_BINARY_DIR}
4− )
5−
6−add_definitions(
7− -DCURRENT_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}"
8− )
9−add_definitions(-DBUILT_PLUGINS_DIR="${CMAKE_BINARY_DIR}/plugins")
10−
11−add_executable(ScreenGrabberTestExec ScreenGrabberTest.cpp ${CMAKE_SOURCE_DIR}/plugins/ScreenGrabber/screengrabber.cpp)
12−qt5_use_modules(ScreenGrabberTestExec Test Quick Concurrent)
13−target_link_libraries(ScreenGrabberTestExec ${Qt5Quick_LIBRARIES} ScreenGrabber-qml)
14−add_unity8_uitest(ScreenGrabber ScreenGrabberTestExec DEPENDS ScreenGrabber-qml)
tests/plugins/ScreenGrabber/ScreenGrabberTest.cppdeleted−77
@@ -1,77 +0,0 @@
1−/*
2− * Copyright (C) 2015 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−#include "screengrabber.h"
18−
19−#include <QtTest>
20−#include <QtQuick/QQuickView>
21−#include <QtQuick/QQuickItem>
22−#include <QQmlEngine>
23−
24−class ScreenGrabberTest: public QObject
25−{
26− Q_OBJECT
27−
28−private Q_SLOTS:
29−
30− void initTestCase()
31− {
32− m_view = new QQuickView();
33− m_view->engine()->addImportPath(BUILT_PLUGINS_DIR);
34− m_view->setSource(QUrl::fromLocalFile(CURRENT_SOURCE_DIR "/grabber.qml"));
35− m_grabber = dynamic_cast<ScreenGrabber*>(m_view->rootObject()->property("grabber").value<QObject*>());
36− QVERIFY(m_grabber);
37− m_view->show();
38− QTest::qWaitForWindowExposed(m_view);
39− }
40−
41− void cleanupTestCase()
42− {
43− delete m_view;
44− m_view = nullptr;
45− QTRY_COMPARE(QThreadPool::globalInstance()->activeThreadCount(), 0);
46− }
47−
48− void testGrabScreenshot()
49− {
50− QSignalSpy grabberSpy(m_grabber, &ScreenGrabber::screenshotSaved);
51− m_grabber->captureAndSave();
52− QTRY_VERIFY(grabberSpy.count() == 1);
53− const QVariantList args = grabberSpy.takeFirst();
54− QVERIFY(args.count() == 1); // verify we got a non-empty filename where the screenshot has been saved
55− QVERIFY(!args.first().toString().isEmpty());
56− }
57−
58− void testRotatedScreenshot()
59− {
60− QSignalSpy grabberSpy(m_grabber, &ScreenGrabber::screenshotSaved);
61− m_grabber->captureAndSave(90); // rotate by 90°
62− QTRY_VERIFY(grabberSpy.count() == 1);
63− const QVariantList args = grabberSpy.takeFirst();
64− const QString filename = args.first().toString();
65− QVERIFY(!filename.isEmpty());
66− QImage img(filename);
67− QVERIFY(img.height() > img.width()); // verify that the image got rotated by 90° (height > width)
68− }
69−
70−private:
71− QQuickView *m_view;
72− ScreenGrabber *m_grabber = nullptr;
73−};
74−
75−QTEST_MAIN(ScreenGrabberTest)
76−
77−#include "ScreenGrabberTest.moc"
tests/plugins/ScreenGrabber/grabber.qmldeleted−31
@@ -1,31 +0,0 @@
1−/*
2− * Copyright 2015 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.4
18−import ScreenGrabber 0.1
19−
20−Rectangle {
21− property var grabber: screenGrabber
22−
23− width: 101 // width intentionally bigger than height to test rotation
24− height: 100
25− color: "green"
26−
27− ScreenGrabber {
28− id: screenGrabber
29− objectName: "screenGrabber"
30− }
31−}
tests/plugins/Unity/Launcher/launchermodeltest.cpp+1
@@ -67,6 +67,7 @@ public:
6767 QSize initialSurfaceSize() const override { return QSize(); }
6868 void setInitialSurfaceSize(const QSize &) override {}
6969 MirSurfaceListInterface* surfaceList() override { return nullptr; }
70+ MirSurfaceListInterface* promptSurfaceList() override { return nullptr; }
7071
7172 // Methods used for mocking (not in the interface)
7273 void setFocused(bool focused) { m_focused = focused; Q_EMIT focusedChanged(focused); }
tests/qmltests/CMakeLists.txt+1
@@ -59,6 +59,7 @@ add_unity8_qmltest(Dash/Filters FilterOptionSelector)
5959add_unity8_qmltest(Dash/Filters FilterRangeInput)
6060add_unity8_qmltest(Dash/Filters FilterValueSlider)
6161add_unity8_qmltest(Dash/Filters FilterWidgetFactory)
62+add_unity8_qmltest(Dash/Filters FilterExpandableWidget)
6263add_unity8_qmltest(Dash/ScopeSettings ScopeSettingBoolean)
6364add_unity8_qmltest(Dash/ScopeSettings ScopeSettingList)
6465add_unity8_qmltest(Dash/ScopeSettings ScopeSettingNumber)
tests/qmltests/Dash/CardHelpers.js+9−7
@@ -16,7 +16,8 @@
1616
1717.pragma library
1818
19−var components = ["title", "art", "subtitle", "mascot", "emblem", "summary", "attributes", "overlayColor", "quickPreviewData"]
19+var components = ["title", "art", "subtitle", "mascot", "emblem", "summary", "attributes", "social-actions", "overlayColor", "quickPreviewData"]
20+var dataKeys = ["title", "art", "subtitle", "mascot", "emblem", "summary", "attributes", "socialActions", "overlayColor", "quickPreviewData"]
2021
2122var defaultLayout = ' \
2223{ \
@@ -38,7 +39,8 @@ var defaultLayout = ' \
3839 "mascot": null, \
3940 "emblem": null, \
4041 "summary": null, \
41− "attributes": { "max-count": 2 } \
42+ "attributes": { "max-count": 2 }, \
43+ "social-actions": null \
4244 }, \
4345 "resources": {} \
4446}'
@@ -52,10 +54,10 @@ var fullMapping = ' \
5254 "emblem": "emblem", \
5355 "overlayColor": "overlayColor", \
5456 "summary": "summary", \
55− "attributes": "attributes" \
57+ "attributes": "attributes", \
58+ "social-actions": "socialActions" \
5659}'
5760
58−
5961function tryParse(json, errorLabel) {
6062 var o = undefined;
6163 if (errorLabel !== undefined) {
@@ -82,12 +84,12 @@ function mapData(json, layout, errorLabel) {
8284 for (var k in components) {
8385 try {
8486 if (typeof layout[components[k]] == "object") {
85− d[components[k]] = o[layout[components[k]]['field']];
87+ d[dataKeys[k]] = o[layout[components[k]]['field']];
8688 } else {
87− d[components[k]] = o[layout[components[k]]];
89+ d[dataKeys[k]] = o[layout[components[k]]];
8890 }
8991 } catch(err) {
90− d[components[k]] = undefined;
92+ d[dataKeys[k]] = undefined;
9193 }
9294 }
9395 }
tests/qmltests/Dash/Filters/tst_FilterExpandableWidget.qmlnew file+99
@@ -0,0 +1,99 @@
1+/*
2+ * Copyright 2016 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.4
18+import QtTest 1.0
19+import Ubuntu.Components 1.3
20+import "../../../../qml/Dash/Filters"
21+import Unity.Test 0.1 as UT
22+import Unity 0.2
23+
24+Rectangle {
25+ id: root
26+ width: units.gu(60)
27+ height: units.gu(80)
28+ color: theme.palette.selected.background
29+
30+ QtObject {
31+ id: widgetData1
32+
33+ property string title: "Expand me!"
34+ property ListModel filters: ListModel {
35+ dynamicRoles: true
36+ }
37+ }
38+
39+ QtObject {
40+ id: sliderObject
41+
42+ property string title
43+ property int value: 30
44+ property int minValue: 10
45+ property int maxValue: 150
46+
47+ property ListModel values: ListModel {
48+ ListElement {
49+ value: 10
50+ label: "10"
51+ }
52+ ListElement {
53+ value: 30
54+ label: "30"
55+ }
56+ ListElement {
57+ value: 100
58+ label: "100"
59+ }
60+ ListElement {
61+ value: 150
62+ label: "150"
63+ }
64+ }
65+ }
66+
67+ Component.onCompleted: {
68+ widgetData1.filters.append({"type": Filters.ValueSliderFilter, "filter": sliderObject, id: "trololo"});
69+ }
70+
71+ FilterWidgetFactory {
72+ id: factory
73+ widgetId: "testExpandableWidget"
74+ widgetType: Filters.ExpandableFilterWidget
75+ widgetData: widgetData1
76+ anchors {
77+ left: parent.left
78+ right: parent.right
79+ }
80+ height: implicitHeight
81+ clip: true
82+ }
83+
84+ UT.UnityTestCase {
85+ name: "FilterExpandableWidget"
86+ when: windowShown
87+
88+ function test_expandedChanges() {
89+ var expandingItem = findChild(factory, "expandingItem");
90+ verify(!expandingItem.expanded)
91+ compare(expandingItem.height, expandingItem.collapsedHeight)
92+ mouseClick(expandingItem);
93+ verify(expandingItem.expanded)
94+ tryCompare(expandingItem, "height", expandingItem.expandedHeight)
95+ verify(expandingItem.collapsedHeight < expandingItem.expandedHeight / 2);
96+ }
97+
98+ }
99+}
tests/qmltests/Dash/Filters/tst_FilterWidgetFactory.qml+2−1
@@ -43,7 +43,8 @@ Rectangle {
4343 return [
4444 { tag: "OptionSelector", type: Filters.OptionSelectorFilter, source: "FilterOptionSelector.qml" },
4545 { tag: "RangeInputFilter", type: Filters.RangeInputFilter, source: "FilterRangeInput.qml" },
46− { tag: "ValueSliderFilter", type: Filters.ValueSliderFilter, source: "FilterValueSlider.qml" }
46+ { tag: "ValueSliderFilter", type: Filters.ValueSliderFilter, source: "FilterValueSlider.qml" },
47+ { tag: "ExpandableFilter", type: Filters.ExpandableFilterWidget, source: "FilterExpandableWidget.qml" }
4748 ];
4849 }
4950
tests/qmltests/Dash/Previews/tst_PreviewActions.qml+100−17
@@ -26,17 +26,17 @@ Rectangle {
2626 width: units.gu(60)
2727 height: units.gu(80)
2828
29− property var actionDataOneAction: {
29+ readonly property var actionDataOneAction: {
3030 "actions": [{"label": "Some Label", "id": "someid"}]
3131 }
3232
33− property var actionDataTwoActions: {
33+ readonly property var actionDataTwoActions: {
3434 "actions": [{"label": "Some Label A", "id": "someid1"},
3535 {"label": "Some Label B", "id": "someid2"}
3636 ]
3737 }
3838
39− property var actionDataFiveActions: {
39+ readonly property var actionDataFiveActions: {
4040 "actions": [{"label": "Some Label C", "id": "someid3"},
4141 {"label": "Some Label D", "id": "someid4"},
4242 {"label": "Some Label E", "id": "someid5"},
@@ -45,6 +45,15 @@ Rectangle {
4545 ]
4646 }
4747
48+ property var actionModelActions: {
49+ "actions": [{"label": "Some Label H", "id": "someid8"},
50+ {"label": "Some Label I", "id": "someid9"},
51+ {"label": "Some Label J", "id": "someid10"},
52+ {"label": "Some Label K", "id": "someid11"},
53+ {"label": "Some Label L", "id": "someid12"}
54+ ]
55+ }
56+
4857 SignalSpy {
4958 id: spy
5059 signalName: "triggered"
@@ -88,26 +97,32 @@ Rectangle {
8897 onTriggered: console.log("triggered", widgetId, actionId);
8998 width: units.gu(60)
9099 }
100+
101+ PreviewActions {
102+ id: changeModelActions
103+ width: units.gu(60)
104+ }
105+
106+ PreviewActions {
107+ id: updateModelActions
108+ width: units.gu(60)
109+ }
91110 }
92111
93112 UT.UnityTestCase {
94113 name: "PreviewActionTest"
95114 when: windowShown
96115
97− function cleanup()
98− {
99− spy.clear();
100− }
101−
102116 function checkButtonPressSignal(target, id)
103117 {
104− var button = findChild(root, "button" + id);
118+ var button = findChild(target, "button" + id);
105119 verify(button != null);
106120 spy.target = target;
107121 mouseClick(button);
108122 compare(spy.count, 1);
109123 compare(spy.signalArguments[0][0], target.widgetId);
110124 compare(spy.signalArguments[0][1], id);
125+ spy.clear();
111126 }
112127
113128 function test_checkButtons_data() {
@@ -120,7 +135,7 @@ Rectangle {
120135 }
121136
122137 function test_checkButtons(data) {
123− checkButtonPressSignal(data.target, data.id, data.buttonNumber)
138+ checkButtonPressSignal(data.target, data.id)
124139 }
125140
126141 function test_comboButton_data() {
@@ -132,17 +147,85 @@ Rectangle {
132147 ]
133148 }
134149
135− function test_comboButton(data) {
136− var button = findChild(root, "moreLessButton");
137− var buttonColumn = findChild(root, "buttonColumn");
150+ function pressMoreButton(buttonGroup)
151+ {
152+ var button = findChild(buttonGroup, "moreLessButton");
153+ var buttonColumn = findChild(buttonGroup, "buttonColumn");
138154 verify(button != null);
139− var twoActionsY = twoActions.y
140155 mouseClick(button);
141− tryCompareFunction(function () { return twoActions.y <= twoActionsY; }, false);
142156 tryCompare(buttonColumn, "height", buttonColumn.implicitHeight);
143− checkButtonPressSignal(buttonAndCombo, data.id, data.buttonNumber);
144− mouseClick(button);
157+ }
158+
159+ function test_comboButton(data) {
160+ var twoActionsY = twoActions.y
161+ pressMoreButton(buttonAndCombo);
162+ tryCompareFunction(function () { return twoActions.y <= twoActionsY; }, false);
163+ checkButtonPressSignal(buttonAndCombo, data.id);
164+ mouseClick(findChild(buttonAndCombo, "moreLessButton"));
145165 tryCompare(twoActions, "y", twoActionsY);
146166 }
167+
168+ function test_modelChange() {
169+ changeModelActions.widgetData = actionDataOneAction;
170+ waitForRendering(changeModelActions);
171+ checkButtonPressSignal(changeModelActions, "someid");
172+
173+ changeModelActions.widgetData = actionDataTwoActions;
174+ waitForRendering(changeModelActions);
175+ checkButtonPressSignal(changeModelActions, "someid1");
176+ checkButtonPressSignal(changeModelActions, "someid2");
177+
178+ changeModelActions.widgetData = actionDataFiveActions;
179+ waitForRendering(changeModelActions);
180+ pressMoreButton(changeModelActions);
181+ checkButtonPressSignal(changeModelActions, "someid3");
182+ checkButtonPressSignal(changeModelActions, "someid4");
183+ checkButtonPressSignal(changeModelActions, "someid5");
184+ checkButtonPressSignal(changeModelActions, "someid6");
185+ }
186+
187+ function test_modelUpdate() {
188+ updateModelActions.widgetData = actionModelActions;
189+ waitForRendering(updateModelActions);
190+ pressMoreButton(updateModelActions);
191+ checkButtonPressSignal(updateModelActions, "someid8");
192+ checkButtonPressSignal(updateModelActions, "someid9");
193+ checkButtonPressSignal(updateModelActions, "someid10");
194+ checkButtonPressSignal(updateModelActions, "someid11");
195+ checkButtonPressSignal(updateModelActions, "someid12");
196+
197+ updateModelActions["actions"].pop();
198+ updateModelActions.actionsChanged();
199+
200+ // Check that some12 is gone
201+ verify(!findChild(updateModelActions, "buttonsomeid12"));
202+
203+ updateModelActions["actions"][3].id = "someidmoo";
204+ updateModelActions.actionsChanged();
205+ checkButtonPressSignal(updateModelActions, "someidmoo");
206+
207+ verify(findChild(updateModelActions, "moreLessButton"));
208+
209+ updateModelActions["actions"].pop();
210+ updateModelActions["actions"].pop();
211+ updateModelActions.actionsChanged();
212+
213+ // Check there is no more/less button anymore
214+ verify(!findChild(updateModelActions, "moreLessButton"));
215+
216+ updateModelActions["actions"][1].id = "someidbar";
217+ updateModelActions.actionsChanged();
218+ checkButtonPressSignal(updateModelActions, "someidbar");
219+
220+ updateModelActions["actions"].pop();
221+ updateModelActions.actionsChanged();
222+
223+ // Check the loader for the second button/combo is gone
224+ compare(findChild(updateModelActions, "loader").source, "");
225+
226+ updateModelActions["actions"][0].id = "someidlolar";
227+ updateModelActions.actionsChanged();
228+ checkButtonPressSignal(updateModelActions, "someidlolar");
229+ }
147230 }
148231}
tests/qmltests/Dash/Previews/tst_PreviewIconActions.qml+14−4
@@ -69,9 +69,12 @@ Rectangle {
6969 Timer {
7070 id: timer
7171 property int index: -1
72+ property bool changeIcon: true
7273 interval: 500
7374 onTriggered: {
74− actionDataActions.actions[index].icon = Qt.resolvedUrl("../../UnityLogo.png");
75+ if (changeIcon) {
76+ actionDataActions.actions[index].icon = Qt.resolvedUrl("../../UnityLogo.png");
77+ }
7578 preview.widgetDataChanged();
7679 index = -1;
7780 }
@@ -89,12 +92,14 @@ Rectangle {
8992
9093 function test_checkButtonWithTemporary_data() {
9194 return [
92− {tag: "with temporary", temporaryIcon: "emblem", index: 0},
93− {tag: "without temporary", temporaryIcon: undefined, index: 2},
95+ {tag: "with temporary change icon", temporaryIcon: "emblem", index: 0, changeIcon: true},
96+ {tag: "with temporary no change icon", temporaryIcon: "emblem", index: 1, changeIcon: false},
97+ {tag: "without temporary", temporaryIcon: undefined, index: 2, changeIcon: true},
9498 ];
9599 }
96100
97101 function test_checkButtonWithTemporary(data) {
102+ waitForRendering(preview);
98103 spy.target = preview;
99104
100105 var buttonId = actionDataActions.actions[data.index].id;
@@ -108,6 +113,7 @@ Rectangle {
108113
109114 compare(image.source, buttonIcon);
110115 compare(label.text, buttonLabel);
116+ timer.changeIcon = data.changeIcon;
111117 mouseClick(button);
112118 compare(spy.count, 1);
113119 compare(spy.signalArguments[0][1], buttonId);
@@ -119,7 +125,11 @@ Rectangle {
119125 tryCompareFunction(function() {
120126 var button = findChild(root, "button" + buttonId);
121127 var image = findChildsByType(button, "QQuickImage")[0];
122− return image.source && image.source.toString().indexOf("UnityLogo") > -1;
128+ if (data.changeIcon) {
129+ return image.source && image.source.toString().indexOf("UnityLogo") > -1;
130+ } else {
131+ return image.source && image.source == buttonIcon;
132+ }
123133 }, true);
124134 }
125135 }
tests/qmltests/Dash/Previews/tst_PreviewZoomableImage.qml+17
@@ -44,6 +44,11 @@ Rectangle {
4444 "fallback": "../../graphics/phone_background.jpg"
4545 }
4646
47+ property var widgetData4: {
48+ "source": "fadsasf",
49+ "fallback": "../../graphics/phone_background.jpg"
50+ }
51+
4752 Loader {
4853 id: loader
4954 width: parent.width
@@ -112,5 +117,17 @@ Rectangle {
112117 waitForRendering(lazyImage);
113118 tryCompare(lazyImage, "state", "ready");
114119 }
120+
121+ function test_fallback_then_source() {
122+ zoomableImage.widgetData = widgetData4;
123+ waitForRendering(zoomableImage);
124+ waitForRendering(lazyImage);
125+ tryCompare(lazyImage, "state", "ready");
126+ verify(lazyImage.sourceImage.source.toString().indexOf("phone_background") > -1);
127+ zoomableImage.widgetData["source"] = "../../graphics/tablet_background.jpg"
128+ zoomableImage.widgetDataChanged();
129+ tryCompare(lazyImage, "state", "ready");
130+ verify(lazyImage.sourceImage.source.toString().indexOf("tablet_background") > -1);
131+ }
115132 }
116133}
tests/qmltests/Dash/tst_Card.qml+38−3
@@ -36,6 +36,10 @@ Rectangle {
3636 "subtitle": "bar",
3737 "summary": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
3838 "attributes": [{"value":"text1","icon":"image://theme/ok"},{"value":"text2","icon":"image://theme/cancel"}],
39+ "socialActions": [{"id":"like","icon":"image://theme/ok","temporaryIcon":"image://theme/undo"},
40+ {"id":"share","icon":"image://theme/cancel"},
41+ {"id":"like","icon":"image://theme/ok","temporaryIcon":"image://theme/undo"},
42+ {"id":"share","icon":"image://theme/cancel"}],
3943 "quickPreviewData": {"uri": "/some/file", "duration": "14"}
4044 }'
4145
@@ -211,6 +215,11 @@ Rectangle {
211215 }
212216 }
213217
218+ SignalSpy {
219+ id: signalSpy
220+ signalName: "action"
221+ }
222+
214223 UT.UnityTestCase {
215224 id: testCase
216225 name: "Card"
@@ -274,9 +283,11 @@ Rectangle {
274283 { tag: "Wide", width: units.gu(18), index: 0 },
275284 { tag: "Horizontal", width: units.gu(38), index: 5 },
276285 // Make sure card ends with header when there's no summary
277− { tag: "NoSummary", height: function() { var cardToolRow = findChild(cardTool, "outerRow");
278− return cardToolRow.y + cardToolRow.height + units.gu(1) }, index: 6 },
279− { tag: "HorizontalNoSummary", height: function() { return headerRow.height + units.gu(2) }, card_layout: "horizontal", index: 6 },
286+ { tag: "NoSummary", height: function() { var socialActionsRow = findChild(cardTool, "socialActionsRow");
287+ return socialActionsRow.y + socialActionsRow.height + units.gu(1) }, index: 6 },
288+ { tag: "HorizontalNoSummary", height: function() { var socialActionsRow = findChild(cardTool, "socialActionsRow");
289+ return socialActionsRow.y + socialActionsRow.height + units.gu(1) },
290+ card_layout: "horizontal", index: 6 },
280291 ]
281292 }
282293
@@ -641,5 +652,29 @@ Rectangle {
641652 verify((card.width - titleToCard.x - titleToCard.width) === units.gu(1));
642653 }
643654 }
655+
656+ function test_action() {
657+ selector.selectedIndex = 0;
658+ waitForRendering(card);
659+
660+ signalSpy.target = card;
661+ var socialActionsRow = findChild(card, "socialActionsRow");
662+ var delegate0 = findChild(socialActionsRow, "delegate0");
663+ var icon0 = findChild(delegate0, "icon");
664+ var delegate1 = findChild(socialActionsRow, "delegate1");
665+ var icon1 = findChild(delegate1, "icon");
666+
667+ compare(icon0.source, "image://theme/ok");
668+ mouseClick(delegate0, delegate0.height / 2, delegate0.height / 2);
669+ tryCompare(signalSpy, "count", 1);
670+ compare(signalSpy.signalArguments[0][0], "like");
671+ compare(icon0.source, "image://theme/undo");
672+
673+ compare(icon1.source, "image://theme/cancel");
674+ mouseClick(delegate1, delegate1.height / 2, delegate1.height / 2);
675+ tryCompare(signalSpy, "count", 2);
676+ compare(signalSpy.signalArguments[1][0], "share");
677+ compare(icon1.source, "image://theme/cancel");
678+ }
644679 }
645680}
tests/qmltests/Stages/ApplicationCheckBox.qml+33−3
@@ -44,6 +44,7 @@ Column {
4444 d.bindGuard = false;
4545 }
4646
47+ // Application checkbox row
4748 RowLayout {
4849
4950 QtObject {
@@ -128,17 +129,47 @@ Column {
128129 visible: enabled
129130 Label {
130131 text: "➕"
131− color: "white"
132132 anchors.centerIn: parent
133133 }
134134 }
135135 }
136+
137+ // Prompts controls row
138+ RowLayout {
139+ anchors.left: root.left
140+ anchors.leftMargin: units.gu(2)
141+ visible: root.checked === true && d.application !== null && root.enabled
142+ spacing: units.gu(1)
143+ Label {
144+ property int promptCount: d.application ? d.application.promptSurfaceList.count : 0
145+ id: promptsLabel
146+ text: promptCount + " prompts"
147+ }
148+ MouseArea {
149+ width: height
150+ height: promptsLabel.height * 0.7
151+ anchors.verticalCenter: parent.verticalCenter
152+ onClicked: d.application.promptSurfaceList.createSurface()
153+ Label { text: "➕"; anchors.centerIn: parent }
154+ }
155+ MouseArea {
156+ width: height
157+ height: promptsLabel.height * 0.7
158+ anchors.verticalCenter: parent.verticalCenter
159+ onClicked: d.application.promptSurfaceList.get(d.application.promptSurfaceList.count - 1).close()
160+ enabled: d.application && d.application.promptSurfaceList.count > 0
161+ Label { text: "➖"; anchors.centerIn: parent; enabled: parent.enabled }
162+ }
163+ }
164+
165+ // Rows of application surfaces
136166 Repeater {
137167 model: d.application ? d.application.surfaceList : null
138168 RowLayout {
169+ anchors.left: root.left
170+ anchors.leftMargin: units.gu(2)
139171 spacing: units.gu(1)
140172 Label {
141− color: "white"
142173 text: "- " + model.surface.name
143174 }
144175 MouseArea {
@@ -150,7 +181,6 @@ Column {
150181 onClicked: model.surface.setLive(false);
151182 Label {
152183 text: "⛒"
153− color: "white"
154184 anchors.centerIn: parent
155185 }
156186 }
tests/qmltests/Stages/RecursingChildSessionControl.qmldeleted−94
@@ -1,94 +0,0 @@
1−/*
2− * Copyright 2014,2016 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.4
18−import QtQuick.Layouts 1.1
19−import Ubuntu.Components 1.3
20−import Unity.Application 0.1
21−
22−ColumnLayout {
23− id: root
24−
25− property var surface
26−
27− Column {
28− id: column
29− Layout.fillWidth: true
30− visible: repeater.count
31− spacing: units.gu(1)
32−
33− Repeater {
34− id: repeater
35− model: root.surface ? root.surface.promptSurfaceList : null
36− delegate: Rectangle {
37− border {
38− color: "black"
39− width: 1
40− }
41− anchors {
42− left: column.left
43− right: column.right
44− leftMargin: units.gu(1)
45− rightMargin: units.gu(1)
46− }
47− height: loader.height
48−
49− Rectangle {
50− anchors.fill: parent
51− color: Qt.rgba(Math.random(), Math.random(), Math.random(), 0.4 )
52− }
53−
54− Loader {
55− id: loader
56− visible: status == Loader.Ready
57− source: Qt.resolvedUrl("RecursingChildSessionControl.qml")
58−
59− anchors {
60− left: parent.left
61− right: parent.right
62− }
63−
64− onLoaded: {
65− item.surface = model.surface;
66− }
67− }
68− }
69− }
70− }
71−
72− ColumnLayout {
73− Layout.fillWidth: true
74− spacing: units.gu(1)
75−
76− RowLayout {
77− id: buttonLayout
78−
79− Button {
80− enabled: root.surface
81− activeFocusOnPress: false
82− text: "Remove"
83− onClicked: { root.surface.close(); }
84− }
85−
86− Button {
87− enabled: root.surface !== null
88− activeFocusOnPress: false
89− text: "Add Prompt Surface"
90− onClicked: { root.surface.createPromptSurface(); }
91− }
92− }
93− }
94−}
tests/qmltests/Stages/tst_ApplicationWindow.qml+89−23
@@ -33,7 +33,6 @@ Rectangle {
3333 Component.onCompleted: {
3434 root.fakeApplication = ApplicationManager.add("gallery-app");
3535 root.fakeApplication.manualSurfaceCreation = true;
36− root.fakeApplication.setState(ApplicationInfoInterface.Starting);
3736 applicationWindowLoader.item.application = root.fakeApplication;
3837 }
3938 property QtObject fakeApplication: null
@@ -78,7 +77,7 @@ Rectangle {
7877 Layout.fillWidth: true
7978
8079 CheckBox {
81− id: surfaceCheckbox;
80+ id: surfaceCheckbox
8281 checked: false;
8382 activeFocusOnPress: false
8483 onCheckedChanged: {
@@ -86,10 +85,8 @@ Rectangle {
8685 return;
8786
8887 if (checked) {
89− applicationWindowLoader.item.surface = SurfaceManager.createSurface("foo",
90− Mir.NormalType, Mir.MaximizedState, root.fakeApplication);
91−
92− root.fakeApplication.setState(ApplicationInfoInterface.Running);
88+ root.fakeApplication.createSurface();
89+ applicationWindowLoader.item.surface = root.fakeApplication.surfaceList.get(0);
9390 } else {
9491 if (applicationWindowLoader.item.surface) {
9592 applicationWindowLoader.item.surface.setLive(false);
@@ -103,22 +100,20 @@ Rectangle {
103100 }
104101 }
105102
106− Rectangle {
107− border {
108− color: "black"
109− width: 1
110− }
111− anchors {
112− left: parent.left
113− right: parent.right
103+ RowLayout {
104+ property var promptSurfaceList: root.fakeApplication ? root.fakeApplication.promptSurfaceList : null
105+ Button {
106+ enabled: parent.promptSurfaceList !== null && parent.promptSurfaceList.count > 0
107+ activeFocusOnPress: false
108+ text: "Remove"
109+ onClicked: { parent.promptSurfaceList.get(parent.promptSurfaceList.count - 1).close(); }
114110 }
115− Layout.preferredHeight: sessionControl.height
116111
117− RecursingChildSessionControl {
118− id: sessionControl
119− anchors { left: parent.left; right: parent.right; }
120−
121− surface: applicationWindowLoader.item ? applicationWindowLoader.item.surface : null
112+ Button {
113+ enabled: parent.promptSurfaceList !== null
114+ activeFocusOnPress: false
115+ text: "Add Prompt Surface"
116+ onClicked: { parent.promptSurfaceList.createSurface(); }
122117 }
123118 }
124119
@@ -244,19 +239,29 @@ Rectangle {
244239 // deleted, so you end up with two instances in memory.
245240 tryCompare(applicationWindowLoader, "itemDestroyed", true);
246241
247− setApplicationState(appStarting);
248242 surfaceCheckbox.checked = false;
249243
250− ApplicationManager.stopApplication("gallery-app");
244+ console.log("killApps() start");
245+ killApps();
246+ console.log("killApps() end");
247+
251248 root.fakeApplication = ApplicationManager.add("gallery-app");
252249 root.fakeApplication.manualSurfaceCreation = true;
253− root.fakeApplication.setState(ApplicationInfoInterface.Starting);
254250
255251 applicationWindowLoader.active = true;
256252
257253 applicationWindowLoader.item.application = root.fakeApplication;
258254 }
259255
256+ function waitUntilSurfaceContainerStopsAnimating(container) {
257+ var animationsLoader = findChild(container, "animationsLoader");
258+ verify(animationsLoader);
259+ tryCompare(animationsLoader, "status", Loader.Ready)
260+
261+ var animation = animationsLoader.item;
262+ waitUntilTransitionsEnd(animation);
263+ }
264+
260265 function test_showSplashUntilAppFullyInit_data() {
261266 return [
262267 {tag: "state=Running then create surface", swapInitOrder: false},
@@ -432,5 +437,66 @@ Rectangle {
432437 applicationWindow.interactive = true;
433438 compare(applicationWindow.surface.activeFocus, true);
434439 }
440+
441+ function test_promptSurfaceDestructionReturnsFocusToPreviousSurface() {
442+ surfaceCheckbox.checked = true;
443+ var promptSurfaces = testCase.findChild(applicationWindow, "promptSurfacesRepeater");
444+ var promptSurfaceList = root.fakeApplication.promptSurfaceList;
445+ compare(promptSurfaces.count, 0);
446+
447+ var i;
448+ // 3 surfaces should cover all edge cases
449+ for (i = 0; i < 3; i++) {
450+ promptSurfaceList.createSurface();
451+ compare(promptSurfaces.count, i+1);
452+ waitUntilSurfaceContainerStopsAnimating(promptSurfaces.itemAt(promptSurfaces.count - 1));
453+ }
454+
455+ for (i = 2; i >= 0; --i) {
456+ var promptSurface = promptSurfaceList.get(i);
457+ compare(promptSurface.activeFocus, true);
458+
459+ promptSurface.close();
460+ tryCompareFunction(function() { return promptSurfaces.count; }, i);
461+
462+ if (i > 0) {
463+ // active focus should have gone to the yongest remaining sibling
464+ var previousPromptSurface = promptSurfaceList.get(i-1);
465+ tryCompare(previousPromptSurface, "activeFocus", true);
466+ } else {
467+ // active focus should have gone to the application surface
468+ tryCompare(applicationWindow.surface, "activeFocus", true);
469+ }
470+ }
471+ }
472+
473+ function test_promptSurfaceAdjustsForParentSize() {
474+ var promptSurfaceList = root.fakeApplication.promptSurfaceList;
475+
476+ promptSurfaceList.createSurface();
477+
478+ var promptSurfaces = testCase.findChild(applicationWindow, "promptSurfacesRepeater");
479+
480+ var delegate = promptSurfaces.itemAt(0);
481+ waitUntilSurfaceContainerStopsAnimating(delegate);
482+
483+ var promptSurfaceContainer = findChild(delegate, "surfaceContainer");
484+
485+ tryCompareFunction(function() { return promptSurfaceContainer.height === applicationWindow.height; }, true);
486+ tryCompareFunction(function() { return promptSurfaceContainer.width === applicationWindow.width; }, true);
487+ tryCompareFunction(function() { return promptSurfaceContainer.x === 0; }, true);
488+ tryCompareFunction(function() { return promptSurfaceContainer.y === 0; }, true);
489+
490+ applicationWindow.anchors.margins = units.gu(2);
491+
492+ tryCompareFunction(function() { return promptSurfaceContainer.height === applicationWindow.height; }, true);
493+ tryCompareFunction(function() { return promptSurfaceContainer.width === applicationWindow.width; }, true);
494+ tryCompareFunction(function() { return promptSurfaceContainer.x === 0; }, true);
495+ tryCompareFunction(function() { return promptSurfaceContainer.y === 0; }, true);
496+
497+ // clean up
498+ delegate.surface.close();
499+ tryCompare(promptSurfaces, "count", 0);
500+ }
435501 }
436502}
tests/qmltests/Stages/tst_SurfaceContainer.qml+28−155
@@ -42,6 +42,7 @@ Rectangle {
4242 anchors.fill: parent
4343 focus: true
4444 interactive: interactiveCheckbox.checked
45+ isPromptSurface: promptCheckbox.checked
4546 Component.onDestruction: {
4647 surfaceContainerLoader.itemDestroyed = true;
4748 }
@@ -75,17 +76,19 @@ Rectangle {
7576 anchors { left: parent.left; right: parent.right; top: parent.top; margins: units.gu(1) }
7677 spacing: units.gu(1)
7778
78− RowLayout {
79− Layout.fillWidth: true
8079
81− Row {
82− CheckBox {id: fullscreenCheckbox; checked: true; activeFocusOnPress: false }
83− Label { text: "fullscreen" }
84− }
85− Row {
86− CheckBox {id: interactiveCheckbox; checked: true; activeFocusOnPress: false }
87− Label { text: "interactive" }
88− }
80+ Row {
81+ CheckBox {id: fullscreenCheckbox; checked: true; activeFocusOnPress: false }
82+ Label { text: "fullscreen" }
83+ }
84+ Row {
85+ CheckBox {id: interactiveCheckbox; checked: true; activeFocusOnPress: false }
86+ Label { text: "interactive" }
87+ }
88+ Row {
89+ CheckBox {id: promptCheckbox; checked: false; activeFocusOnPress: false
90+ enabled: surfaceContainerLoader.item.surface === null }
91+ Label { text: "isPromptSurface" }
8992 }
9093
9194 RowLayout {
@@ -102,10 +105,9 @@ Rectangle {
102105 if (checked) {
103106 var application = ApplicationManager.add("music-app");
104107 application.manualSurfaceCreation = true;
105− application.setState(ApplicationInfoInterface.Starting);
106108
107− surfaceContainerLoader.item.surface = SurfaceManager.createSurface("foo",
108− Mir.NormalType, Mir.MaximizedState, application.screenshot);
109+ application.createSurface();
110+ surfaceContainerLoader.item.surface = application.surfaceList.get(0);
109111
110112 application.setState(ApplicationInfoInterface.Running);
111113 } else {
@@ -123,22 +125,11 @@ Rectangle {
123125 }
124126 }
125127
126− Rectangle {
127− border {
128− color: "black"
129− width: 1
130− }
131− anchors {
132− left: parent.left
133− right: parent.right
134− }
135− Layout.preferredHeight: surfaceChildrenControl.height
136−
137− RecursingChildSessionControl {
138− id: surfaceChildrenControl
139− anchors { left: parent.left; right: parent.right; }
140−
141− surface: surfaceContainerLoader.item ? surfaceContainerLoader.item.surface : null
128+ Button {
129+ text: "Reload"
130+ enabled: !surfaceCheckbox.checked
131+ onClicked: {
132+ testCase.cleanup();
142133 }
143134 }
144135 }
@@ -164,6 +155,7 @@ Rectangle {
164155
165156 surfaceCheckbox.checked = false;
166157 interactiveCheckbox.checked = true;
158+ promptCheckbox.checked = false;
167159
168160 surfaceContainerLoader.active = true;
169161 tryCompare(surfaceContainerLoader, "status", Loader.Ready);
@@ -171,121 +163,6 @@ Rectangle {
171163
172164 when: windowShown
173165
174− function test_addChildSession_data() {
175− return [ { tag: "count=1", count: 1 },
176− { tag: "count=4", count: 4 } ];
177− }
178−
179− function test_addChildSession(data) {
180− surfaceCheckbox.checked = true;
181− var childSurfaces = testCase.findChild(surfaceContainer, "childSurfacesRepeater");
182− compare(childSurfaces.count, 0);
183−
184− var i;
185− for (i = 0; i < data.count; i++) {
186− surfaceContainer.surface.createPromptSurface();
187− compare(childSurfaces.count, i+1);
188− }
189−
190− for (i = data.count-1; i >= 0; i--) {
191− {
192− var childPromptSurface = surfaceContainer.surface.promptSurfaceList.get(i);
193− childPromptSurface.close();
194− }
195− tryCompareFunction(function() { return childSurfaces.count; }, i);
196− }
197− }
198−
199− function test_childSessionDestructionReturnsFocusToSiblingOrParent() {
200− surfaceCheckbox.checked = true;
201− var childSurfaces = testCase.findChild(surfaceContainer, "childSurfacesRepeater");
202− compare(childSurfaces.count, 0);
203−
204− var i;
205− // 3 surfaces should cover all edge cases
206− for (i = 0; i < 3; i++) {
207− surfaceContainer.surface.createPromptSurface();
208− compare(childSurfaces.count, i+1);
209− }
210−
211− for (i = 2; i >= 0; --i) {
212− var childPromptSurface = surfaceContainer.surface.promptSurfaceList.get(i);
213− compare(childPromptSurface.activeFocus, true);
214−
215− childPromptSurface.close();
216− tryCompareFunction(function() { return childSurfaces.count; }, i);
217−
218− if (i > 0) {
219− // active focus should have gone to the yongest remaining sibling
220− var previousSiblingSurface = surfaceContainer.surface.promptSurfaceList.get(i-1);
221− tryCompare(previousSiblingSurface, "activeFocus", true);
222− } else {
223− // active focus should have gone to the parent surface
224− tryCompare(surfaceContainer.surface, "activeFocus", true);
225− }
226− }
227− }
228−
229− function test_nestedChildSessions_data() {
230− return [ { tag: "depth=2", depth: 2 },
231− { tag: "depth=8", depth: 8 }
232− ];
233− }
234− function test_nestedChildSessions(data) {
235− surfaceCheckbox.checked = true;
236−
237− var i;
238− var container = surfaceContainer;
239− var surface = container.surface;
240− var surfaces = [surface];
241− var parent_childSurfaces = [null];
242− for (i = 0; i < data.depth; i++) {
243− surface.createPromptSurface();
244− var childSurfaces = testCase.findChild(container, "childSurfacesRepeater");
245− compare(childSurfaces.count, 1);
246−
247− var childDelegate = childSurfaces.itemAt(0);
248− container = findChild(childDelegate, "surfaceContainer");
249− {
250− var animationsLoader = findChild(container, "animationsLoader");
251− tryCompare(animationsLoader, "status", Loader.Ready);
252− waitUntilTransitionsEnd(animationsLoader.item);
253− }
254− surface = container.surface;
255−
256− surfaces.push(surface);
257− parent_childSurfaces.push(childSurfaces);
258− }
259−
260− for (i = surfaces.length-1; i >= 0; i--) {
261− surfaces[i].close();
262− if (parent_childSurfaces[i]) {
263− tryCompareFunction(function() { return parent_childSurfaces[i].count; }, 0);
264− }
265− }
266− }
267−
268− function test_childrenAdjustForParentSize() {
269− surfaceCheckbox.checked = true;
270−
271− surfaceContainer.surface.createPromptSurface();
272−
273− var delegate = findChild(surfaceContainer, "childDelegate0");
274− var childContainer = findChild(delegate, "surfaceContainer");
275−
276− tryCompareFunction(function() { return childContainer.height === surfaceContainer.height; }, true);
277− tryCompareFunction(function() { return childContainer.width === surfaceContainer.width; }, true);
278− tryCompareFunction(function() { return childContainer.x === 0; }, true);
279− tryCompareFunction(function() { return childContainer.y === 0; }, true);
280−
281− surfaceContainer.anchors.margins = units.gu(2);
282−
283− tryCompareFunction(function() { return childContainer.height === surfaceContainer.height; }, true);
284− tryCompareFunction(function() { return childContainer.width === surfaceContainer.width; }, true);
285− tryCompareFunction(function() { return childContainer.x === 0; }, true);
286− tryCompareFunction(function() { return childContainer.y === 0; }, true);
287− }
288−
289166 function isContainerAnimating(container) {
290167 var animationsLoader = findChild(container, "animationsLoader");
291168 if (!animationsLoader || animationsLoader.status != Loader.Ready) {
@@ -303,25 +180,21 @@ Rectangle {
303180 return false;
304181 }
305182
306− function test_childrenAnimate() {
183+ function test_promptSurfaceAnimates() {
184+ promptCheckbox.checked = true;
307185 surfaceCheckbox.checked = true;
308186
309− surfaceContainer.surface.createPromptSurface();
310−
311− var delegate = findChild(surfaceContainer, "childDelegate0");
312− var childContainer = findChild(delegate, "surfaceContainer");
313−
314187 // wait for animation to begin
315− tryCompareFunction(function() { return isContainerAnimating(childContainer); }, true);
188+ tryCompareFunction(function() { return isContainerAnimating(surfaceContainer); }, true);
316189 // wait for animation to end
317− tryCompareFunction(function() { return isContainerAnimating(childContainer); }, false);
190+ tryCompareFunction(function() { return isContainerAnimating(surfaceContainer); }, false);
318191
319− surfaceContainer.surface.promptSurfaceList.get(0).close();
192+ surfaceContainer.surface.close();
320193
321194 // wait for animation to begin
322− tryCompareFunction(function() { return isContainerAnimating(childContainer); }, true);
195+ tryCompareFunction(function() { return isContainerAnimating(surfaceContainer); }, true);
323196 // wait for animation to end
324− tryCompareFunction(function() { return isContainerAnimating(childContainer); }, false);
197+ tryCompareFunction(function() { return isContainerAnimating(surfaceContainer); }, false);
325198 }
326199
327200 function test_surfaceItemGetsNoTouchesWhenContainerNotInteractive() {