on xenial help sign in
Merge trunk
commit31c9689b2e910a2c1f19834e29a52d8b7fc635e0 authorMichal Hruby <michal.mhr@gmail.com> dateThu 21 Nov 2013, 19:41 (13 years ago) parent77bc4869b2a564
114 files changed+1727−1295
Components/Carousel.qml+4−6 Components/PageHeader.qml+26−7 Components/Time.js−49 Dash/Apps/AppInfo.qml−89 Dash/Apps/ApplicationsFilterGrid.qml−64 Dash/Apps/DashPluginFilterGrid.qml+2−2 Dash/Dash.qml+3 Dash/DashApps.qml+3 Dash/DashContent.qml+2−1 Dash/Generic/GenericFilterGrid.qml+4−4 Dash/Generic/WeatherFilterGrid.qml+2−2 Dash/GenericScopeView.qml+64−11 Dash/Music/MusicFilterGrid.qml+2−2 Dash/ScopeView.qml−65 Dash/Video/VideoFilterGrid.qml+2−2 Dash/Video/VideoInfo.qml−84 Greeter/Greeter.qml+2−5 Greeter/Lockscreen.qml+6−18 Greeter/PassphraseLockscreen.qml+1 Greeter/PinLockscreen.qml+1 Launcher/LauncherDelegate.qml+1 Launcher/LauncherPanel.qml+1−1 Panel/Indicators.qml+36−8 Panel/Indicators/client/IndicatorsTree.qml+2−3 Shell.qml+12−3 data/unity8.conf+20 plugins/AccountsService/plugin.cpp+1−1 plugins/ListViewWithPageHeader/listviewwithpageheader.cpp+32−6 plugins/ListViewWithPageHeader/listviewwithpageheader.h+5 plugins/SessionBroadcast/plugin.cpp+1−1 plugins/Unity/Indicators/indicator.cpp+8−16 plugins/Unity/Indicators/indicator.h+1−1 plugins/Unity/Indicators/indicatorsmanager.cpp+3−1 plugins/Unity/Indicators/qml/IndicatorBase.qml+3−4 plugins/Unity/Launcher/launcheritem.cpp+4−2 plugins/Utils/albumartprovider.cpp+10−7 po/ar.po+19−10 po/ast.po+17−8 po/az.po+17−8 po/bg.po+17−8 po/ca.po+17−8 po/cs.po+17−8 po/de.po+17−8 po/el.po+17−8 po/en_AU.po+17−8 po/en_GB.po+17−8 po/eo.po+17−8 po/es.po+19−10 po/fa.po+17−8 po/fi.po+18−9 po/fo.po+17−8 po/fr.po+17−8 po/gd.po+17−8 po/gl.po+17−8 po/he.po+22−11 po/hr.po+17−8 po/hu.po+17−8 po/hy.po+17−8 po/id.po+17−8 po/is.po+17−8 po/it.po+17−8 po/ja.po+17−8 po/km.po+19−10 po/kn.po+17−8 po/ko.po+17−8 po/ky.po+17−8 po/lo.po+17−8 po/lv.po+17−8 po/my.po+17−8 po/nb.po+17−8 po/nl.po+17−8 po/pl.po+17−8 po/pt_BR.po+17−8 po/ro.po+17−8 po/ru.po+17−8 po/shn.po+17−8 po/si.po+17−8 po/sl.po+17−8 po/sr.po+17−8 po/sv.po+17−8 po/ta.po+17−8 po/te.po+17−8 po/tr.po+17−8 po/ug.po+17−8 po/uk.po+17−8 po/unity8.pot+15−6 po/xh.po+17−8 po/zh_CN.po+17−8 po/zh_TW.po+17−8 tests/autopilot/unity8/process_helpers.py+65−38 tests/autopilot/unity8/shell/emulators/main_window.py−6 tests/autopilot/unity8/shell/tests/__init__.py+8−21 tests/autopilot/unity8/shell/tests/test_hud.py+11−10 tests/autopilot/unity8/shell/tests/test_notifications.py+25−30 tests/mocks/AccountsService/plugin.cpp+1−1 tests/mocks/QMenuModel/plugin.cpp+1−1 tests/mocks/Unity/iconutils.cpp+10−10 tests/plugins/ListViewWithPageHeader/CMakeLists.txt+7 tests/plugins/ListViewWithPageHeader/listviewwithpageheadertest.cpp+39 tests/plugins/ListViewWithPageHeader/listviewwithpageheadertestsection.cpp+81−1 tests/plugins/ListViewWithPageHeader/tst_listviewwithpageheaderqml.qml+138 tests/plugins/Unity/Indicators/indicatorsmanagertest.cpp+1−3 tests/qmltests/CMakeLists.txt−2 tests/qmltests/Components/tst_PageHeader.qml+44−3 tests/qmltests/Components/tst_TimeLocal.qml−117 tests/qmltests/Dash/qml/FakeScopeView.qml+3−69 tests/qmltests/Dash/tst_Dash.qml+5−1 tests/qmltests/Dash/tst_DashContent.qml+28−8 tests/qmltests/Dash/tst_FilterGrids.qml+1−2 tests/qmltests/Dash/tst_GenericScopeView.qml+24−2 tests/qmltests/Dash/tst_ScopeView.qml−52 tests/qmltests/Greeter/tst_Lockscreen.qml+45−17 tests/qmltests/Panel/tst_Panel.qml+13−4 tests/utils/modules/Unity/Test/UnityTestCase.qml+2
Components/Carousel.qml+4−6
@@ -54,15 +54,13 @@ Item {
5454
5555 /// Emitted when the user clicked on an item
5656 /// @param index is the index of the clicked item
57− /// @param model is the model of all the items in the carousel
5857 /// @param itemY is y of the clicked delegate
59− signal clicked(int index, var model, real itemY)
58+ signal clicked(int index, real itemY)
6059
6160 /// Emitted when the user pressed and held on an item
6261 /// @param index is the index of the held item
63− /// @param model is the model of all the items in the carousel
6462 /// @param itemY is y of the held delegate
65− signal pressAndHold(int index, var model, real itemY)
63+ signal pressAndHold(int index, real itemY)
6664
6765 implicitHeight: listView.tileHeight * selectedItemScaleFactor
6866
@@ -163,7 +161,7 @@ Item {
163161 /* We're clicking the selected item and
164162 we're in the neighbourhood of radius 1 pixel from it.
165163 Let's emit the clicked signal. */
166− carousel.clicked(index, listView.model, delegateItem.y)
164+ carousel.clicked(index, delegateItem.y)
167165 return
168166 }
169167
@@ -187,7 +185,7 @@ Item {
187185 /* We're pressAndHold the selected item and
188186 we're in the neighbourhood of radius 1 pixel from it.
189187 Let's emit the pressAndHold signal. */
190− carousel.pressAndHold(index, listView.model, delegateItem.y);
188+ carousel.pressAndHold(index, delegateItem.y);
191189 return;
192190 }
193191
Components/PageHeader.qml+26−7
@@ -30,7 +30,7 @@ Item {
3030
3131 property bool searchEntryEnabled: false
3232 property alias searchQuery: searchField.text
33− property ListModel searchHistory: SearchHistoryModel {}
33+ property ListModel searchHistory
3434 property Scope scope
3535
3636 height: units.gu(8.5)
@@ -44,8 +44,8 @@ Item {
4444 if (!searchHistory) return;
4545
4646 searchHistory.addQuery(searchField.text);
47+ unfocus();
4748 searchField.text = "";
48− searchField.focus = false;
4949 }
5050
5151 function unfocus() {
@@ -112,6 +112,8 @@ Item {
112112 objectName: "searchContainer"
113113
114114 visible: searchEntryEnabled
115+ property bool popoverShouldOpen: false
116+ property bool popoverShouldClose: false
115117
116118 property bool narrowMode: parent.width < label.contentWidth + units.gu(50)
117119
@@ -127,6 +129,16 @@ Item {
127129 else if (active && !narrowMode) "active"
128130 else if (!active && !narrowMode) "inactive"
129131
132+ onStateChanged: {
133+ if (state == "active" || state == "narrowActive") {
134+ popoverShouldOpen = true;
135+ popoverShouldClose = false;
136+ } else {
137+ popoverShouldOpen = false;
138+ popoverShouldClose = true;
139+ }
140+ }
141+
130142 function openPopover() {
131143 if (searchHistory.count > 0) {
132144 searchContainer.popover = PopupUtils.open(popoverComponent, searchField,
@@ -137,10 +149,17 @@ Item {
137149 }
138150 )
139151 }
152+ popoverShouldOpen = false;
153+ popoverShouldClose = false;
140154 }
141155
142156 function closePopover() {
143− if (searchContainer.popover) PopupUtils.close(searchContainer.popover)
157+ if (searchContainer.popover) {
158+ PopupUtils.close(searchContainer.popover);
159+ searchContainer.popover = null;
160+ }
161+ popoverShouldOpen = false;
162+ popoverShouldClose = false;
144163 }
145164
146165 onActiveFocusChanged: if (!activeFocus) { searchHistory.addQuery(searchField.text) }
@@ -283,12 +302,12 @@ Item {
283302 PropertyAction { target: primaryImage; property: "source" }
284303 AnchorAnimation { targets: [searchContainer, textContainer]; duration: 200; easing.type: Easing.InOutQuad }
285304 }
286− ScriptAction { script: searchContainer.openPopover() }
305+ ScriptAction { script: if (searchContainer.popoverShouldOpen) { searchContainer.openPopover(); } }
287306 }
288307 },
289308 Transition {
290309 to: "inactive"
291− ScriptAction { script: searchContainer.closePopover() }
310+ ScriptAction { script: if (searchContainer.popoverShouldClose) { searchContainer.closePopover(); } }
292311 NumberAnimation { targets: [searchContainer, searchField] ; property: "width"; duration: 200; easing.type: Easing.InOutQuad }
293312 AnchorAnimation { targets: [searchContainer, textContainer]; duration: 200; easing.type: Easing.InOutQuad }
294313 },
@@ -299,12 +318,12 @@ Item {
299318 NumberAnimation { targets: [searchContainer, searchField] ; property: "width"; duration: 200; easing.type: Easing.OutQuad }
300319 AnchorAnimation { targets: [searchContainer, textContainer]; duration: 200; easing.type: Easing.InOutQuad }
301320 }
302− ScriptAction { script: searchContainer.openPopover() }
321+ ScriptAction { script: if (searchContainer.popoverShouldOpen) { searchContainer.openPopover(); } }
303322 }
304323 },
305324 Transition {
306325 to: "narrowInactive"
307− ScriptAction { script: searchContainer.closePopover() }
326+ ScriptAction { script: if (searchContainer.popoverShouldClose) { searchContainer.closePopover(); } }
308327 NumberAnimation { targets: [searchContainer, searchField] ; property: "width"; duration: 200; easing.type: Easing.OutQuad }
309328 AnchorAnimation { targets: [searchContainer, textContainer]; duration: 200; easing.type: Easing.InOutQuad }
310329 }
Components/Time.jsdeleted−49
@@ -1,49 +0,0 @@
1−/*
2− * Copyright (C) 2013 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−.pragma library
18−
19−var factors = [
20− [ 1000, "a second ago", "in a second", "%1 seconds ago", "in %1 seconds" ],
21− [ 60, "a minute ago", "in a minute", "%1 minutes ago", "in %1 minutes" ],
22− [ 60, "an hour ago", "in an hour", "%1 hours ago", "in %1 hours" ],
23− [ 24, "yesterday", "tomorrow", "%1 days ago", "in %1 days" ],
24− [ 7, "a week ago", "in a week", "about %1 weeks ago", "in about %1 weeks" ],
25− [ 4.35, "a month ago", "in a month", "%1 months ago", "in %1 months" ], // == 365.25 days / 12 months / 7 days
26− [ 12, "a year ago", "in a year", "%1 years ago", "in %1 years" ]
27−]
28−
29−function readableFromNow(date, now) {
30− var then = new Date(date);
31− if (isNaN(then)) return "";
32− if (now === undefined) {
33− now = new Date();
34− } else if (isNaN(now)) throw "now is NaN";
35− var diff = Math.abs(now - then);
36− if (diff < 1000) return "just now";
37−
38− var future = now < then;
39− var humanDiff;
40− for (var k in factors) {
41− diff /= factors[k][0];
42− if (Math.floor(diff) == 1) {
43− humanDiff = factors[k][future ? 2 : 1];
44− } else if (Math.floor(diff) > 1) {
45− humanDiff = factors[k][future ? 4 : 3].arg(Math.round(diff));
46− } else break;
47− }
48− return humanDiff;
49−}
Dash/Apps/AppInfo.qmldeleted−89
@@ -1,89 +0,0 @@
1−/*
2− * Copyright (C) 2013 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.0
18−import Ubuntu.Components 0.1
19−import "../../Components"
20−
21−Row {
22− id: root
23− property alias icon: image.source
24− property alias appName: appNameLabel.text
25− property alias rating: ratingStars.rating
26− property int rated: 0
27− property int reviews: 0
28−
29− spacing: units.gu(2)
30−
31− UbuntuShape {
32− id: imageShape
33− width: units.gu(6)
34− height: units.gu(6)
35− image: Image {
36− id: image
37− sourceSize { width: imageShape.width; height: imageShape.height }
38− asynchronous: true
39− fillMode: Image.PreserveAspectFit
40− }
41− }
42−
43− Column {
44− spacing: units.gu(1)
45−
46− Label {
47− id: appNameLabel
48− fontSize: "large"
49− color: "white"
50− style: Text.Raised
51− styleColor: "black"
52− opacity: .9
53− }
54−
55− Row {
56− visible: root.rating >= 0
57− spacing: units.gu(1)
58−
59− RatingStars {
60− id: ratingStars
61− maximumRating: 10
62− }
63−
64− Label {
65− id: ratedLabel
66− objectName: "ratedLabel"
67− fontSize: "medium"
68− color: "white"
69− style: Text.Raised
70− styleColor: "black"
71− opacity: .6
72− //TRANSLATORS: Number of persons who rated this app
73− text: i18n.tr("(%1)").arg(root.rated)
74− }
75−
76− Label {
77− id: reviewsLabel
78− objectName: "reviewsLabel"
79− fontSize: "medium"
80− color: "white"
81− style: Text.Raised
82− styleColor: "black"
83− opacity: .6
84− //TRANSLATORS: Number of persons who wrote reviews for this app
85− text: i18n.tr("%1 review", "%1 reviews", root.reviews).arg(root.reviews)
86− }
87− }
88− }
89−}
Dash/Apps/ApplicationsFilterGrid.qmldeleted−64
@@ -1,64 +0,0 @@
1−/*
2− * Copyright (C) 2013 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.0
18−import "../../Components"
19−import "../../Applications"
20−
21−FilterGrid {
22− id: filtergrid
23−
24− filter: false
25− minimumHorizontalSpacing: units.gu(0.5)
26− maximumNumberOfColumns: 6
27− delegateWidth: units.gu(11)
28− delegateHeight: units.gu(9.5)
29− verticalSpacing: units.gu(2)
30−
31− signal clicked(int index, var model, real itemY)
32− signal pressAndHold(int index, var model, real itemY)
33−
34− delegate: Tile {
35− id: tile
36− objectName: "delegate" + index
37− Application {
38− id: application
39− desktopFile: model.dndUri ? stripProtocol(model.dndUri) : model.desktopFile // FIXME: this is temporary
40−
41− function stripProtocol(uri) {
42− var chunks = uri.split('file://')
43− return chunks[chunks.length-1]
44− }
45− }
46−
47− property string icon: model.icon ? model.icon : "../../graphics/applicationIcons/" + application.icon + ".png" // FIXME: this is temporary
48−
49− width: filtergrid.cellWidth
50− height: filtergrid.cellHeight
51− text: model.title ? model.title : application.name // FIXME: this is temporary
52− imageWidth: units.gu(8)
53− imageHeight: units.gu(7.5)
54− source: icon
55−
56− onClicked: {
57− filtergrid.clicked(index, filtergrid.model, tile.y)
58− }
59−
60− onPressAndHold: {
61− filtergrid.pressAndHold(index, filtergrid.model, tile.y)
62− }
63− }
64−}
Dash/Apps/DashPluginFilterGrid.qml+2−2
@@ -37,11 +37,11 @@ GenericFilterGrid {
3737 }
3838
3939 onClicked: {
40− filtergrid.clicked(index, filtergrid.model, tile.y)
40+ filtergrid.clicked(index, tile.y)
4141 }
4242
4343 onPressAndHold: {
44− filtergrid.pressAndHold(index, filtergrid.model, tile.y)
44+ filtergrid.pressAndHold(index, tile.y)
4545 }
4646 }
4747}
Dash/Dash.qml+3
@@ -26,6 +26,8 @@ Showable {
2626
2727 visible: shown
2828
29+ property ListModel searchHistory: SearchHistoryModel {}
30+
2931 property alias contentProgress: dashContent.contentProgress
3032 property string showScopeOnLoaded: "home.scope"
3133 property real contentScale: 1.0
@@ -63,6 +65,7 @@ Showable {
6365 anchors.fill: parent
6466 model: filteredScopes
6567 scopes: scopes
68+ searchHistory: dash.searchHistory
6669 onMovementStarted: dashbar.startNavigation()
6770 onMovementEnded: dashbar.stopNavigation()
6871 onContentFlickStarted: dashbar.finishNavigation()
Dash/DashApps.qml+3
@@ -30,6 +30,9 @@ GenericScopeView {
3030 property var mainStageApplicationsModel: shell.applicationManager.mainStageApplications
3131 property var sideStageApplicationModel: shell.applicationManager.sideStageApplications
3232
33+ //FIXME an alias to itself shouldn't be required. More than likely a Qt bug. Try removing with newer Qt.
34+ property alias searchHistory: scopeView.searchHistory
35+
3336 ListModel {
3437 id: dummyVisibilityModifier
3538
Dash/DashContent.qml+2−1
@@ -27,6 +27,7 @@ Item {
2727 property alias currentIndex: dashContentList.currentIndex
2828
2929 property ScopeDelegateMapper scopeMapper : ScopeDelegateMapper {}
30+ property ListModel searchHistory
3031
3132 signal movementStarted()
3233 signal movementEnded()
@@ -127,7 +128,7 @@ Item {
127128 onLoaded: {
128129 item.scope = Qt.binding(function() { return scope })
129130 item.isCurrent = Qt.binding(function() { return visible && ListView.isCurrentItem })
130− item.searchHistory = Qt.binding(function() { return shell.searchHistory })
131+ item.searchHistory = Qt.binding(function() { return dashContent.searchHistory })
131132 dashContentList.movementStarted.connect(item.movementStarted)
132133 dashContent.positionedAtBeginning.connect(item.positionedAtBeginning)
133134 dashContent.scopeLoaded(item.scope.id)
Dash/Generic/GenericFilterGrid.qml+4−4
@@ -28,8 +28,8 @@ FilterGrid {
2828 property int iconWidth: units.gu(8)
2929 property int iconHeight: units.gu(7.5)
3030
31− signal clicked(int index, var model, real itemY)
32− signal pressAndHold(int index, var model, real itemY)
31+ signal clicked(int index, real itemY)
32+ signal pressAndHold(int index, real itemY)
3333
3434 delegate: Tile {
3535 id: tile
@@ -42,11 +42,11 @@ FilterGrid {
4242 source: model.icon
4343
4444 onClicked: {
45− filtergrid.clicked(index, filtergrid.model, tile.y)
45+ filtergrid.clicked(index, tile.y)
4646 }
4747
4848 onPressAndHold: {
49− filtergrid.pressAndHold(index, filtergrid.model, tile.y)
49+ filtergrid.pressAndHold(index, tile.y)
5050 }
5151 }
5252}
Dash/Generic/WeatherFilterGrid.qml+2−2
@@ -37,11 +37,11 @@ GenericFilterGrid {
3737 style: FlatTileStyle {}
3838
3939 onClicked: {
40− filtergrid.clicked(index, filtergrid.model, tile.y)
40+ filtergrid.clicked(index, tile.y)
4141 }
4242
4343 onPressAndHold: {
44− filtergrid.pressAndHold(index, filtergrid.model, tile.y)
44+ filtergrid.pressAndHold(index, tile.y)
4545 }
4646 }
4747}
Dash/GenericScopeView.qml+64−11
@@ -16,15 +16,60 @@
1616
1717import QtQuick 2.0
1818import Ubuntu.Components 0.1
19+import Utils 0.1
20+import Unity 0.1
1921import "../Components"
2022import "../Components/ListItems" as ListItems
2123
22−ScopeView {
24+FocusScope {
2325 id: scopeView
26+
27+ property Scope scope
28+ property SortFilterProxyModel categories: categoryFilter
29+ property bool isCurrent
30+ property ListModel searchHistory
31+ property alias moving: categoryView.moving
32+
33+ signal endReached
34+ signal movementStarted
35+ signal positionedAtBeginning
36+
2437 readonly property alias previewShown: previewListView.onScreen
2538 property bool enableHeightBehaviorOnNextCreation: false
2639
27− moving: categoryView.moving
40+ // FIXME delay the search so that daemons have time to settle, note that
41+ // removing this will break ScopeView::test_changeScope
42+ onScopeChanged: {
43+ if (scope) {
44+ timer.restart();
45+ scope.activateApplication.connect(activateApp);
46+ }
47+ }
48+
49+ function activateApp(desktopFilePath) {
50+ shell.activateApplication(desktopFilePath);
51+ }
52+
53+ Binding {
54+ target: scope
55+ property: "isActive"
56+ value: isCurrent
57+ }
58+
59+ Timer {
60+ id: timer
61+ interval: 2000
62+ onTriggered: scope.searchQuery = ""
63+ }
64+
65+ SortFilterProxyModel {
66+ id: categoryFilter
67+ model: scope ? scope.categories : null
68+ dynamicSortFilter: true
69+ filterRole: Categories.RoleCount
70+ filterRegExp: /^0$/
71+ invertMatch: true
72+ }
2873
2974 onIsCurrentChanged: {
3075 pageHeader.resetSearch();
@@ -130,14 +175,14 @@ ScopeView {
130175 target: rendererLoader.item
131176 onClicked: {
132177 // Prepare the preview in case activate() triggers a preview only
133− effect.positionPx = mapToItem(categoryView, 0, itemY).y
178+ effect.positionPx = Math.max(mapToItem(categoryView, 0, itemY).y, pageHeader.height + categoryView.stickyHeaderHeight);
134179 previewListView.categoryId = categoryId
135180 previewListView.categoryDelegate = rendererLoader.item
136− previewListView.model = model;
181+ previewListView.model = target.model;
137182 previewListView.init = true;
138183 previewListView.currentIndex = index;
139184
140− var item = model.get(index);
185+ var item = target.model.get(index);
141186
142187 if ((scopeView.scope.id == "applications.scope" && categoryId == "installed")
143188 || (scopeView.scope.id == "home.scope" && categoryId == "applications.scope")) {
@@ -151,15 +196,15 @@ ScopeView {
151196 }
152197 }
153198 onPressAndHold: {
154− effect.positionPx = mapToItem(categoryView, 0, itemY).y
199+ effect.positionPx = Math.max(mapToItem(categoryView, 0, itemY).y, pageHeader.height + categoryView.stickyHeaderHeight);
155200 previewListView.categoryId = categoryId
156201 previewListView.categoryDelegate = rendererLoader.item
157− previewListView.model = model;
202+ previewListView.model = target.model;
158203 previewListView.init = true;
159204 previewListView.currentIndex = index;
160205 previewListView.open = true
161206
162− var item = model.get(index)
207+ var item = target.model.get(index)
163208 scopeView.scope.preview( item.uri, item.icon, item.category, 0, item.mimetype, item.title,
164209 item.comment, item.dndUri, item.metadata)
165210 }
@@ -248,6 +293,7 @@ ScopeView {
248293 text: scopeView.scope.name
249294 searchEntryEnabled: true
250295 scope: scopeView.scope
296+ searchHistory: scopeView.searchHistory
251297 }
252298 }
253299
@@ -393,12 +439,19 @@ ScopeView {
393439
394440 if (!init && model !== undefined) {
395441 var item = model.get(currentIndex)
396− scopeView.scope.preview( item.uri, item.icon, item.category, 0, item.mimetype, item.title, item.comment, item.dndUri, item.metadata)
442+ scopeView.scope.preview(item.uri, item.icon, item.category, 0, item.mimetype, item.title, item.comment, item.dndUri, item.metadata)
397443 }
398444
399445 var itemY = categoryView.contentItem.mapFromItem(categoryDelegate.currentItem).y;
446+
447+ // Find new contentY and effect.postionPx
400448 var newContentY = itemY - effect.positionPx - categoryDelegate.verticalSpacing;
401− var effectAdjust = effect.positionPx;
449+
450+ // Make sure the item is not covered by a header. Move the effect split down if necessary
451+ var headerHeight = pageHeader.height + categoryView.stickyHeaderHeight;
452+ var effectAdjust = Math.max(effect.positionPx, headerHeight);
453+
454+ // Make sure we don't overscroll the listview. If yes, adjust effect position
402455 if (newContentY < 0) {
403456 effectAdjust += newContentY;
404457 newContentY = 0;
@@ -409,7 +462,7 @@ ScopeView {
409462 }
410463
411464 effect.positionPx = effectAdjust;
412− categoryView.contentY = newContentY - categoryView.originY;
465+ categoryView.contentY = newContentY;
413466 }
414467
415468 property bool open: false
Dash/Music/MusicFilterGrid.qml+2−2
@@ -44,11 +44,11 @@ GenericFilterGrid {
4444 }
4545
4646 onClicked: {
47− filtergrid.clicked(index, filtergrid.model, tile.y)
47+ filtergrid.clicked(index, tile.y)
4848 }
4949
5050 onPressAndHold: {
51− filtergrid.pressAndHold(index, filtergrid.model, tile.y)
51+ filtergrid.pressAndHold(index, tile.y)
5252 }
5353 }
5454}
Dash/ScopeView.qmldeleted−65
@@ -1,65 +0,0 @@
1−/*
2− * Copyright (C) 2013 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.0
18−import Utils 0.1
19−import Unity 0.1
20−
21−FocusScope {
22− property Scope scope
23− property SortFilterProxyModel categories: categoryFilter
24− property bool isCurrent
25− property ListModel searchHistory
26− property bool moving: false
27−
28− signal endReached
29− signal movementStarted
30− signal positionedAtBeginning
31−
32− // FIXME delay the search so that daemons have time to settle, note that
33− // removing this will break ScopeView::test_changeScope
34− onScopeChanged: {
35− if (scope) {
36− timer.restart();
37− scope.activateApplication.connect(activateApp);
38− }
39− }
40−
41− function activateApp(desktopFilePath) {
42− shell.activateApplication(desktopFilePath);
43− }
44−
45− Binding {
46− target: scope
47− property: "isActive"
48− value: isCurrent
49− }
50−
51− Timer {
52− id: timer
53− interval: 2000
54− onTriggered: scope.searchQuery = ""
55− }
56−
57− SortFilterProxyModel {
58− id: categoryFilter
59− model: scope ? scope.categories : null
60− dynamicSortFilter: true
61− filterRole: Categories.RoleCount
62− filterRegExp: /^0$/
63− invertMatch: true
64− }
65−}
Dash/Video/VideoFilterGrid.qml+2−2
@@ -42,11 +42,11 @@ GenericFilterGrid {
4242 style: VideoTileStyle {}
4343
4444 onClicked: {
45− filtergrid.clicked(index, filtergrid.model, tile.y)
45+ filtergrid.clicked(index, tile.y)
4646 }
4747
4848 onPressAndHold: {
49− filtergrid.pressAndHold(index, filtergrid.model, tile.y)
49+ filtergrid.pressAndHold(index, tile.y)
5050 }
5151 }
5252}
Dash/Video/VideoInfo.qmldeleted−84
@@ -1,84 +0,0 @@
1−/*
2− * Copyright (C) 2013 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.0
18−import QtQuick.XmlListModel 2.0
19−
20−Item {
21− id: info
22− property string source
23−
24− property bool ready: nfo.status == XmlListModel.Ready || nfoTV.status == XmlListModel.Ready
25− property bool isMovie: true
26− property variant video: null
27− property variant tvShow: null
28−
29− function getActors() {
30− var c = []
31− if (video.actor1) c.push(video.actor1)
32− if (video.actor2) c.push(video.actor2)
33− if (video.actor3) c.push(video.actor3)
34− return c
35− }
36−
37− onSourceChanged: isMovie = true
38−
39− XmlListModel {
40− id: nfo
41− source: info.source
42− query: (isMovie) ? "/movie" : "/episodedetails"
43−
44− XmlRole { name: "title"; query: "title/string()" }
45− XmlRole { name: "year"; query: "year/number()" }
46− XmlRole { name: "runtime"; query: "runtime/number()" }
47− XmlRole { name: "rating"; query: "rating/number()" }
48− XmlRole { name: "plot"; query: "plot/string()" }
49− XmlRole { name: "director"; query: "director[1]/string()" }
50− XmlRole { name: "actor1"; query: "actor[1]/name/string()" }
51− XmlRole { name: "actor2"; query: "actor[2]/name/string()" }
52− XmlRole { name: "actor3"; query: "actor[3]/name/string()" }
53− XmlRole { name: "author"; query: "author[1]/string()" }
54− XmlRole { name: "season"; query: "season/number()" }
55− XmlRole { name: "episode"; query: "episode/number()" }
56−
57− XmlRole { name: "rentPrice"; query: "rent_price/string()" }
58− XmlRole { name: "buyPrice"; query: "buy_price/string()" }
59− XmlRole { name: "expires"; query: "expires/string()" }
60−
61− onStatusChanged: if (status == XmlListModel.Ready) {
62− if (count > 0) info.video = nfo.get(0)
63− else info.isMovie = false
64− } else if (status == XmlListModel.Error) info.isMovie = false
65− }
66−
67− XmlListModel {
68− id: nfoTV
69− source: (nfo.isMovie) ? "" : info.source.substring(0, info.source.lastIndexOf("/") + 1) + "tvshow.nfo"
70− query: "/tvshow"
71−
72− XmlRole { name: "title"; query: "title/string()" }
73−
74− onStatusChanged: if (status == XmlListModel.Ready) {
75− if (count > 0) info.tvShow = nfoTV.get(0)
76− } else if (status == XmlListModel.Error) {
77− // Search for tvshow.nfo in the directory above this one to cater
78− // for directory layout Show/Season
79− var path = info.source.split("/")
80− path.splice(-2, 2, "tvshow.nfo")
81− source = path.join("/")
82− }
83− }
84−}
Greeter/Greeter.qml+2−5
@@ -89,7 +89,7 @@ Showable {
8989 when: teasingTimer.running
9090 PropertyChanges {
9191 target: greeter
92− x: -units.gu(2)
92+ x: -dragHandle.hintDisplacement
9393 }
9494 }
9595 ]
@@ -113,10 +113,7 @@ Showable {
113113 anchors.bottom: parent.bottom
114114 anchors.right: parent.right
115115
116− // no need for requiring a directional drag since we are covering the screen
117− // anyway (i.e., no change user could be trying to interact with some other
118− // UI element)
119− distanceThreshold: 0
116+ hintDisplacement: units.gu(2)
120117
121118 enabled: greeter.narrowMode || !greeter.locked
122119
Greeter/Lockscreen.qml+6−18
@@ -17,7 +17,6 @@
1717import QtQuick 2.0
1818import Ubuntu.Components 0.1
1919import "../Components"
20−import LightDM 0.1 as LightDM
2120
2221Showable {
2322 id: root
@@ -37,7 +36,7 @@ Showable {
3736
3837 property url background: ""
3938
40− signal unlocked()
39+ signal entered(string passphrase)
4140 signal cancel()
4241 signal emergencyCall()
4342
@@ -53,6 +52,10 @@ Showable {
5352 pinPadLoader.resetting = false;
5453 }
5554
55+ function clear(showAnimation) {
56+ pinPadLoader.item.clear(showAnimation);
57+ }
58+
5659 Rectangle {
5760 // In case background fails to load or is undefined
5861 id: backgroundBackup
@@ -92,7 +95,7 @@ Showable {
9295 target: pinPadLoader.item
9396
9497 onEntered: {
95− LightDM.Greeter.respond(passphrase);
98+ root.entered(passphrase);
9699 }
97100
98101 onCancel: {
@@ -150,19 +153,4 @@ Showable {
150153 anchors.horizontalCenter: parent.horizontalCenter
151154 }
152155 }
153−
154− Connections {
155− target: LightDM.Greeter
156−
157− onAuthenticationComplete: {
158− if (LightDM.Greeter.promptless) {
159− return;
160− }
161− if (LightDM.Greeter.authenticated) {
162− root.unlocked();
163− } else {
164− pinPadLoader.item.clear(true);
165− }
166− }
167− }
168156}
Greeter/PassphraseLockscreen.qml+1
@@ -82,6 +82,7 @@ Item {
8282
8383 WrongPasswordAnimation {
8484 id: wrongPasswordAnimation
85+ objectName: "wrongPasswordAnimation"
8586 target: pinentryField
8687 }
8788}
Greeter/PinLockscreen.qml+1
@@ -210,6 +210,7 @@ Column {
210210
211211 WrongPasswordAnimation {
212212 id: wrongPasswordAnimation
213+ objectName: "wrongPasswordAnimation"
213214 target: pinentryField
214215 }
215216}
Launcher/LauncherDelegate.qml+1
@@ -57,6 +57,7 @@ Item {
5757 anchors.fill: parent
5858 anchors.margins: units.gu(1)
5959 radius: "medium"
60+ borderSource: "none"
6061
6162 image: Image {
6263 id: iconImage
Launcher/LauncherPanel.qml+1−1
@@ -367,7 +367,7 @@ Item {
367367 var yOffset = draggedIndex > 0 ? (mouseY + launcherListView.realContentY) % (draggedIndex * launcherListView.realItemHeight) : mouseY + launcherListView.realContentY
368368
369369 fakeDragItem.iconName = launcherListView.model.get(draggedIndex).icon
370− fakeDragItem.x = 0
370+ fakeDragItem.x = units.gu(0.5)
371371 fakeDragItem.y = mouseY - yOffset + launcherListView.anchors.topMargin + launcherListView.topMargin
372372 fakeDragItem.angle = selectedItem.angle * (root.inverted ? -1 : 1)
373373 fakeDragItem.offset = selectedItem.offset * (root.inverted ? -1 : 1)
Panel/Indicators.qml+36−8
@@ -37,6 +37,7 @@ Showable {
3737 property bool partiallyOpened: height > panelHeight && !fullyOpened
3838 property real visualBottom: Math.max(y+height, y+indicatorRow.y+indicatorRow.height)
3939 property bool contentEnabled: true
40+ property bool initalizeItem: true
4041 readonly property alias content: menuContent
4142
4243 // TODO: Perhaps we need a animation standard for showing/hiding? Each showable seems to
@@ -63,14 +64,13 @@ Showable {
6364 }
6465
6566 height: panelHeight
67+ onHeightChanged: updateRevealProgressState(indicators.height - panelHeight, true)
6668
67− onHeightChanged: {
68− // need to use handle.get_height(). As the handle height depends on indicators.height changes (but this is called first!)
69− var revealProgress = indicators.height - panelHeight
69+ function updateRevealProgressState(revealProgress, enableRelease) {
7070 if (!showAnimation.running && !hideAnimation.running) {
71− if (revealProgress == 0) {
71+ if (revealProgress === 0) {
7272 indicators.state = "initial";
73− } else if (revealProgress <= hintValue) {
73+ } else if (revealProgress > 0 && revealProgress <= hintValue) {
7474 indicators.state = "hint";
7575 } else if (revealProgress > hintValue && revealProgress < lockThreshold) {
7676 indicators.state = "reveal";
@@ -79,7 +79,7 @@ Showable {
7979 }
8080 }
8181
82− if (revealProgress == 0) {
82+ if (enableRelease && revealProgress === 0) {
8383 menuContent.releaseContent();
8484 }
8585 }
@@ -106,7 +106,7 @@ Showable {
106106 Vertical velocity check. Don't change the indicator if we're moving too quickly.
107107 */
108108 var verticalSpeed = Math.abs(yVelocityCalculator.calculate());
109− if (verticalSpeed >= 0.05 && indicatorRow.currentItem!=null) {
109+ if (verticalSpeed >= 0.05 && !initalizeItem) {
110110 return;
111111 }
112112
@@ -146,6 +146,7 @@ Showable {
146146 } else if (!currentItem) {
147147 indicatorRow.setDefaultItem();
148148 }
149+ initalizeItem = indicatorRow.currentItem == null;
149150 }
150151
151152 // eater
@@ -281,6 +282,33 @@ Showable {
281282 enableIndexChangeSignal = oldActive;
282283 }
283284 }
285+
286+ EdgeDragArea {
287+ id: rowDragArea
288+ anchors.fill: indicatorRow
289+ direction: Direction.Downwards
290+ maxSilenceTime: 2000
291+ distanceThreshold: 0
292+
293+ enabled: fullyOpened
294+ onDraggingChanged: {
295+ if (dragging) {
296+ initalizeItem = true;
297+ updateRevealProgressState(Math.max(touchSceneY - panelHeight, hintValue), false);
298+ indicators.calculateCurrentItem(touchX, false);
299+ } else {
300+ indicators.state = "commit";
301+ }
302+ }
303+
304+ onTouchXChanged: {
305+ indicators.calculateCurrentItem(touchX, true);
306+ }
307+ onTouchSceneYChanged: {
308+ updateRevealProgressState(Math.max(touchSceneY - panelHeight, hintValue), false);
309+ yVelocityCalculator.trackedPosition = touchSceneY;
310+ }
311+ }
284312 }
285313
286314 Connections {
@@ -297,7 +325,7 @@ Showable {
297325 onRunningChanged: {
298326 if (hideAnimation.running) {
299327 indicators.state = "initial";
300− indicatorRow.currentItem = null;
328+ initalizeItem = true;
301329 }
302330 }
303331 }
Panel/Indicators/client/IndicatorsTree.qml+2−3
@@ -29,10 +29,9 @@ Page {
2929
3030 property string busName: unityModel.busName
3131 property string actionsObjectPath
32− property var menuObjectPaths: undefined
33− readonly property string device: "phone"
32+ property string menuObjectPath
3433
35− property string deviceMenuObjectPath: menuObjectPaths.hasOwnProperty(device) ? menuObjectPaths[device] : ""
34+ property string deviceMenuObjectPath: menuObjectPath
3635
3736 function start() {
3837 }
Shell.qml+12−3
@@ -61,8 +61,6 @@ FocusScope {
6161 }
6262 }
6363
64− property ListModel searchHistory: SearchHistoryModel {}
65−
6664 property var applicationManager: ApplicationManagerWrapper {}
6765
6866 Binding {
@@ -416,7 +414,7 @@ FocusScope {
416414 height: parent.height - panel.panelHeight
417415 background: shell.background
418416
419− onUnlocked: lockscreen.hide()
417+ onEntered: LightDM.Greeter.respond(passphrase);
420418 onCancel: greeter.show()
421419
422420 Component.onCompleted: {
@@ -442,6 +440,17 @@ FocusScope {
442440 lockscreen.show();
443441 }
444442 }
443+
444+ onAuthenticationComplete: {
445+ if (LightDM.Greeter.promptless) {
446+ return;
447+ }
448+ if (LightDM.Greeter.authenticated) {
449+ lockscreen.hide();
450+ } else {
451+ lockscreen.clear(true);
452+ }
453+ }
445454 }
446455
447456 Greeter {
data/unity8.conf+20
@@ -6,4 +6,24 @@ stop on desktop-end
66
77respawn
88
9+pre-start script
10+ if [ -n "$MIR_SOCKET" ]; then
11+ if [ -z "$UNITY_MIR_SOCKET" ]; then
12+ # Save original value of MIR_SOCKET in case we are restarted,
13+ # as we modify the variable for future jobs, including ourself.
14+ UNITY_MIR_SOCKET=$MIR_SOCKET
15+ initctl set-env --global UNITY_MIR_SOCKET=$UNITY_MIR_SOCKET
16+ fi
17+
18+ # Point unity8 at unity-system-compositor
19+ MIR_SERVER_FILE=$XDG_RUNTIME_DIR/mir_socket
20+ initctl set-env MIR_SERVER_FILE=$MIR_SERVER_FILE
21+ initctl set-env MIR_SERVER_HOST_SOCKET=$UNITY_MIR_SOCKET
22+
23+ # Point all future jobs in this session to our Mir socket instead of
24+ # unity-system-compositor's socket.
25+ initctl set-env --global MIR_SOCKET=$MIR_SERVER_FILE
26+ fi
27+end script
28+
929exec ${BINARY:-unity8} $ARGS
plugins/AccountsService/plugin.cpp+1−1
@@ -20,7 +20,7 @@
2020#include "AccountsService.h"
2121
2222#include <QDBusMetaType>
23−#include <QtQml>
23+#include <QtQml/qqml.h>
2424
2525static QObject *service_provider(QQmlEngine *engine, QJSEngine *scriptEngine)
2626{
plugins/ListViewWithPageHeader/listviewwithpageheader.cpp+32−6
@@ -155,6 +155,7 @@ ListViewWithPageHeader::ListViewWithPageHeader()
155155 , m_topSectionItem(nullptr)
156156 , m_forceNoClip(false)
157157 , m_inLayout(false)
158+ , m_inContentHeightKeepHeaderShown(false)
158159{
159160 m_clipItem = new QQuickItem(contentItem());
160161// m_clipItem = new QQuickRectangle(contentItem());
@@ -286,10 +287,12 @@ void ListViewWithPageHeader::setSectionDelegate(QQmlComponent *delegate)
286287 m_topSectionItem = getSectionItem(QString());
287288 m_topSectionItem->setZ(3);
288289 QQuickItemPrivate::get(m_topSectionItem)->setCulled(true);
290+ connect(m_topSectionItem, SIGNAL(heightChanged()), SIGNAL(stickyHeaderHeightChanged()));
289291
290292 // TODO create sections for existing items
291293
292294 Q_EMIT sectionDelegateChanged();
295+ Q_EMIT stickyHeaderHeightChanged();
293296 }
294297}
295298
@@ -325,6 +328,11 @@ void ListViewWithPageHeader::setForceNoClip(bool noClip)
325328 }
326329}
327330
331+int ListViewWithPageHeader::stickyHeaderHeight() const
332+{
333+ return m_topSectionItem ? m_topSectionItem->height() : 0;
334+}
335+
328336void ListViewWithPageHeader::positionAtBeginning()
329337{
330338 if (m_delegateModel->count() <= 0)
@@ -471,12 +479,18 @@ void ListViewWithPageHeader::componentComplete()
471479
472480void ListViewWithPageHeader::viewportMoved(Qt::Orientations orient)
473481{
482+ // Check we are not being taken down and don't paint anything
483+ // TODO Check if we still need this in 5.2
484+ // For reproduction just inifnite loop testDash or testDashContent
485+ if (!QQmlEngine::contextForObject(this)->parentContext())
486+ return;
487+
474488 QQuickFlickable::viewportMoved(orient);
475489// qDebug() << "ListViewWithPageHeader::viewportMoved" << contentY();
476490 qreal diff = m_previousContentY - contentY();
477491 const bool showHeaderAnimationRunning = m_contentYAnimation->isRunning() && contentYAnimationType == ContentYAnimationShowHeader;
478492 if (m_headerItem) {
479− auto oldHeaderItemShownHeight = m_headerItemShownHeight;
493+ const auto oldHeaderItemShownHeight = m_headerItemShownHeight;
480494 if (contentY() < -m_minYExtent) {
481495 // Stick the header item to the top when dragging down
482496 m_headerItem->setY(contentY());
@@ -491,10 +505,10 @@ void ListViewWithPageHeader::viewportMoved(Qt::Orientations orient)
491505 const bool notShownByItsOwn = contentY() + diff >= m_headerItem->y() + m_headerItem->height();
492506 const bool maximizeVisibleAreaRunning = m_contentYAnimation->isRunning() && contentYAnimationType == ContentYAnimationMaximizeVisibleArea;
493507
494− if (!scrolledUp && contentY() == -m_minYExtent) {
508+ if (!scrolledUp && (contentY() == -m_minYExtent || (m_headerItemShownHeight == 0 && m_previousContentY == m_headerItem->y()))) {
495509 m_headerItemShownHeight = 0;
496− m_headerItem->setY(contentY());
497− } else if ((scrolledUp && notRebounding && notShownByItsOwn && !maximizeVisibleAreaRunning) || (m_headerItemShownHeight > 0)) {
510+ m_headerItem->setY(-m_minYExtent);
511+ } else if ((scrolledUp && notRebounding && notShownByItsOwn && !maximizeVisibleAreaRunning) || (m_headerItemShownHeight > 0) || m_inContentHeightKeepHeaderShown) {
498512 if (maximizeVisibleAreaRunning && diff > 0) // If we are maximizing and the header was shown, make sure we hide it
499513 m_headerItemShownHeight -= diff;
500514 else
@@ -847,6 +861,11 @@ void ListViewWithPageHeader::itemCreated(int modelIndex, QObject *object)
847861 }
848862#endif
849863// qDebug() << "ListViewWithPageHeader::itemCreated" << modelIndex << item;
864+ // Check we are not being taken down and don't paint anything
865+ // TODO Check if we still need this in 5.2
866+ // For reproduction just inifnite loop testDash or testDashContent
867+ if (!QQmlEngine::contextForObject(this)->parentContext())
868+ return;
850869
851870 item->setParentItem(m_clipItem);
852871 QQmlContext *context = QQmlEngine::contextForObject(item)->parentContext();
@@ -980,7 +999,6 @@ void ListViewWithPageHeader::onModelUpdated(const QQmlChangeSet &changeSet, bool
980999 if (growUp) {
9811000 ListItem *firstItem = m_visibleItems.first();
9821001 firstItem->setY(firstItem->y() - item->height());
983− adjustMinYExtent();
9841002 }
9851003 // Adding an item may break a "same section" chain, so check
9861004 // if we need adding a new section item
@@ -991,7 +1009,6 @@ void ListViewWithPageHeader::onModelUpdated(const QQmlChangeSet &changeSet, bool
9911009 if (growUp && nextItem->m_sectionItem) {
9921010 ListItem *firstItem = m_visibleItems.first();
9931011 firstItem->setY(firstItem->y() - nextItem->m_sectionItem->height());
994− adjustMinYExtent();
9951012 }
9961013 }
9971014 }
@@ -1000,6 +1017,7 @@ void ListViewWithPageHeader::onModelUpdated(const QQmlChangeSet &changeSet, bool
10001017 ListItem *firstItem = m_visibleItems.first();
10011018 firstItem->setY(oldFirstValidIndexPos);
10021019 }
1020+ adjustMinYExtent();
10031021 } else if (insert.index <= m_firstVisibleIndex) {
10041022 m_firstVisibleIndex += insert.count;
10051023 }
@@ -1228,6 +1246,12 @@ void ListViewWithPageHeader::layout()
12281246
12291247void ListViewWithPageHeader::updatePolish()
12301248{
1249+ // Check we are not being taken down and don't paint anything
1250+ // TODO Check if we still need this in 5.2
1251+ // For reproduction just inifnite loop testDash or testDashContent
1252+ if (!QQmlEngine::contextForObject(this)->parentContext())
1253+ return;
1254+
12311255 Q_FOREACH(ListItem *item, m_itemsToRelease)
12321256 reallyReleaseItem(item);
12331257 m_itemsToRelease.clear();
@@ -1267,7 +1291,9 @@ void ListViewWithPageHeader::updatePolish()
12671291
12681292 m_contentHeightDirty = false;
12691293 adjustMinYExtent();
1294+ m_inContentHeightKeepHeaderShown = m_headerItem && m_headerItem->y() == contentY();
12701295 setContentHeight(contentHeight);
1296+ m_inContentHeightKeepHeaderShown = false;
12711297 }
12721298}
12731299
plugins/ListViewWithPageHeader/listviewwithpageheader.h+5
@@ -60,6 +60,7 @@ class ListViewWithPageHeader : public QQuickFlickable, public QQuickItemChangeLi
6060 Q_PROPERTY(QQmlComponent *sectionDelegate READ sectionDelegate WRITE setSectionDelegate NOTIFY sectionDelegateChanged)
6161 Q_PROPERTY(QString sectionProperty READ sectionProperty WRITE setSectionProperty NOTIFY sectionPropertyChanged)
6262 Q_PROPERTY(bool forceNoClip READ forceNoClip WRITE setForceNoClip NOTIFY forceNoClipChanged)
63+ Q_PROPERTY(int stickyHeaderHeight READ stickyHeaderHeight NOTIFY stickyHeaderHeightChanged)
6364
6465 friend class ListViewWithPageHeaderTest;
6566 friend class ListViewWithPageHeaderTestSection;
@@ -87,6 +88,8 @@ public:
8788 bool forceNoClip() const;
8889 void setForceNoClip(bool noClip);
8990
91+ int stickyHeaderHeight() const;
92+
9093 Q_INVOKABLE void positionAtBeginning();
9194 Q_INVOKABLE void showHeader();
9295 Q_INVOKABLE QQuickItem *item(int modelIndex) const;
@@ -104,6 +107,7 @@ Q_SIGNALS:
104107 void sectionDelegateChanged();
105108 void sectionPropertyChanged();
106109 void forceNoClipChanged();
110+ void stickyHeaderHeightChanged();
107111
108112protected:
109113 void componentComplete();
@@ -202,6 +206,7 @@ private:
202206
203207 bool m_forceNoClip;
204208 bool m_inLayout;
209+ bool m_inContentHeightKeepHeaderShown;
205210
206211 // Qt 5.0 doesn't like releasing the items just after itemCreated
207212 // so we delay the releasing until the next updatePolish
plugins/SessionBroadcast/plugin.cpp+1−1
@@ -19,7 +19,7 @@
1919#include "plugin.h"
2020#include "SessionBroadcast.h"
2121
22−#include <QtQml>
22+#include <QtQml/qqml.h>
2323
2424static QObject *broadcast_provider(QQmlEngine *engine, QJSEngine *scriptEngine)
2525{
plugins/Unity/Indicators/indicator.cpp+8−16
@@ -31,32 +31,24 @@ Indicator::~Indicator()
3131{
3232}
3333
34−void Indicator::init(const QString& busName, const QSettings& settings)
34+void Indicator::init(const QString &profile, const QString& busName, const QSettings& settings)
3535{
3636 setId(settings.value("Indicator Service/Name").toString());
37− setPosition(settings.value("Indicator Service/Position", QVariant::fromValue(0)).toInt());
3837
39− QString actionObjectPath = settings.value("Indicator Service/ObjectPath").toString();
40−
41− QVariantMap mapMenuObjectPaths;
42− Q_FOREACH(const QString& childGroup, settings.childGroups())
43− {
44− if (childGroup == "Indicator Service")
45− continue;
38+ QVariant pos = settings.value(profile + "/Position");
39+ if (!pos.isValid())
40+ pos = settings.value("Indicator Service/Position", QVariant::fromValue(0));
41+ setPosition(pos.toInt());
4642
47− QString menuPath = childGroup+"/ObjectPath";
48− if (settings.contains(menuPath))
49− {
50− mapMenuObjectPaths[childGroup] = settings.value(menuPath).toString();
51− }
52− }
43+ QString actionObjectPath = settings.value("Indicator Service/ObjectPath").toString();
44+ QString menuObjectPath = settings.value(profile + "/ObjectPath").toString();
5345
5446 QVariantMap properties;
5547 properties.clear();
5648 properties.insert("busType", 1);
5749 properties.insert("busName", busName);
5850 properties.insert("actionsObjectPath", actionObjectPath);
59− properties.insert("menuObjectPaths", mapMenuObjectPaths);
51+ properties.insert("menuObjectPath", menuObjectPath);
6052 setIndicatorProperties(properties);
6153}
6254
plugins/Unity/Indicators/indicator.h+1−1
@@ -35,7 +35,7 @@ public:
3535 Indicator(QObject *parent = 0);
3636 virtual ~Indicator();
3737
38− void init(const QString& busName, const QSettings& settings);
38+ void init(const QString &profile, const QString& busName, const QSettings& settings);
3939
4040 QString identifier() const;
4141 int position() const;
plugins/Unity/Indicators/indicatorsmanager.cpp+3−1
@@ -26,6 +26,8 @@
2626
2727#include "paths.h"
2828
29+const QString profile = "phone";
30+
2931
3032class IndicatorsManager::IndicatorData
3133{
@@ -298,7 +300,7 @@ Indicator::Ptr IndicatorsManager::indicator(const QString& indicator_name)
298300 Indicator::Ptr new_indicator(new Indicator(this));
299301 data->m_indicator = new_indicator;
300302 QSettings settings(data->m_fileInfo.absoluteFilePath(), QSettings::IniFormat, this);
301− new_indicator->init(data->m_fileInfo.fileName(), settings);
303+ new_indicator->init(profile, data->m_fileInfo.fileName(), settings);
302304 return new_indicator;
303305}
304306
plugins/Unity/Indicators/qml/IndicatorBase.qml+3−4
@@ -24,16 +24,15 @@ import Unity.Indicators 0.1 as Indicators
2424Item {
2525 id: indicatorItem
2626
27− enabled: menuObjectPaths.hasOwnProperty(device)
27+ enabled: menuObjectPath != ""
2828
2929 //const
3030 property string busName
3131 property string actionsObjectPath
32− property var menuObjectPaths: undefined
33− readonly property string device: "phone"
32+ property string menuObjectPath
3433 property string rootMenuType: "com.canonical.indicator.root"
3534
36− property string deviceMenuObjectPath: menuObjectPaths.hasOwnProperty(device) ? menuObjectPaths[device] : ""
35+ property string deviceMenuObjectPath: menuObjectPath
3736
3837 property alias menuModel: cachedModel.model
3938
plugins/Unity/Launcher/launcheritem.cpp+4−2
@@ -20,6 +20,8 @@
2020#include "launcheritem.h"
2121#include "quicklistmodel.h"
2222
23+#include <libintl.h>
24+
2325LauncherItem::LauncherItem(const QString &appId, const QString &name, const QString &icon, QObject *parent) :
2426 LauncherItemInterface(parent),
2527 m_appId(appId),
@@ -38,7 +40,7 @@ LauncherItem::LauncherItem(const QString &appId, const QString &name, const QStr
3840 m_quickList->appendAction(nameAction);
3941 QuickListEntry pinningAction;
4042 pinningAction.setActionId("pin_item");
41− pinningAction.setText("Pin to Launcher");
43+ pinningAction.setText(gettext("Lock to Launcher"));
4244 m_quickList->appendAction(pinningAction);
4345}
4446
@@ -68,7 +70,7 @@ void LauncherItem::setPinned(bool pinned)
6870 m_pinned = pinned;
6971 QuickListEntry entry;
7072 entry.setActionId("pin_item");
71− entry.setText(pinned ? "Remove from Launcher": "Pin to Launcher");
73+ entry.setText(pinned ? gettext("Unlock from Launcher") : gettext("Lock to Launcher"));
7274 m_quickList->updateAction(entry);
7375 Q_EMIT pinnedChanged(pinned);
7476 }
plugins/Utils/albumartprovider.cpp+10−7
@@ -32,6 +32,7 @@
3232#include <QByteArray>
3333#include <QImage>
3434#include <QUrl>
35+#include <QUrlQuery>
3536
3637using namespace std;
3738
@@ -65,6 +66,9 @@ AlbumArtProvider::~AlbumArtProvider()
6566std::string AlbumArtProvider::get_lastfm_url(const albuminfo &ai) {
6667 QString artist = QString::fromStdString(ai.artist);
6768 QString album = QString::fromStdString(ai.album);
69+ // audioscrobbler wants it without any / (as it would break the URL)
70+ artist.remove('/');
71+ album.remove('/');
6872
6973 /// @todo: this is the old API which will probably get axed at some point in the future
7074 /// The new 2.0 API requires an API key, but supports JSON output, etc, so switching
@@ -200,21 +204,20 @@ std::string AlbumArtProvider::get_image(const std::string &artist, const std::st
200204QImage AlbumArtProvider::requestImage(const QString &id, QSize *realSize, const QSize &requestedSize) {
201205 Q_UNUSED(requestedSize)
202206
203− const QStringList parts = id.split("/");
204− if (parts.size() != 2) {
207+ QUrlQuery query(id);
208+ if (!query.hasQueryItem(QStringLiteral("artist")) || !query.hasQueryItem(QStringLiteral("album"))) {
205209 qWarning() << "Invalid albumart uri:" << id;
206210 return QImage(QString::fromStdString(DEFAULT_ALBUM_ART));
207211 }
208− const std::string artist = QUrl::fromPercentEncoding(parts[0].toUtf8()).toStdString();
209− const std::string album = QUrl::fromPercentEncoding(parts[1].toUtf8()).toStdString();
212+ const QString artist = query.queryItemValue(QStringLiteral("artist"), QUrl::FullyEncoded);
213+ const QString album = query.queryItemValue(QStringLiteral("album"), QUrl::FullyEncoded);
210214
211215 std::string tgt_path;
212216 try {
213− tgt_path = get_image(artist, album);
217+ tgt_path = get_image(artist.toStdString(), album.toStdString());
214218 if(!tgt_path.empty()) {
215− QString tgt(tgt_path.c_str());
216219 QImage image;
217− image.load(tgt);
220+ image.load(QString::fromStdString(tgt_path));
218221 // FIXME: Rescale to requested size preserving aspect.
219222 *realSize = image.size();
220223 return image;
po/ar.po+19−10
@@ -7,8 +7,8 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-11-05 17:53+0100\n"
11−"PO-Revision-Date: 2013-10-20 19:41+0000\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
11+"PO-Revision-Date: 2013-11-15 12:29+0000\n"
1212"Last-Translator: Ibrahim Saed <ibraheem5000@gmail.com>\n"
1313"Language-Team: Arabic <ar@li.org>\n"
1414"MIME-Version: 1.0\n"
@@ -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: 2013-11-08 06:37+0000\n"
20−"X-Generator: Launchpad (build 16820)\n"
19+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
20+"X-Generator: Launchpad (build 16831)\n"
2121
2222#: Applications/applications.js:23
2323msgid "Phone"
@@ -87,7 +87,7 @@ msgstr "ويكيبيديا"
8787msgid "YouTube"
8888msgstr "يوتيوب"
8989
90−#: Components/EdgeDemoOverlay.qml:149
90+#: Components/EdgeDemoOverlay.qml:151
9191msgid "Skip intro"
9292msgstr "تخطي المقدمة"
9393
@@ -136,7 +136,7 @@ msgstr ""
136136"لقد أتقنت الآن إيماءات الحواف ويمكنك البدء باستخدام الهاتف<br><br>انقر في أي "
137137"مكان للبدء"
138138
139−#: Components/PageHeader.qml:341
139+#: Components/PageHeader.qml:345
140140msgid "Recent searches"
141141msgstr "عمليات البحث الأخيرة"
142142
@@ -160,7 +160,7 @@ msgstr[3] "%1 تعليقات"
160160msgstr[4] "%1 تعليقا"
161161msgstr[5] "%1 تعليق"
162162
163−#: Dash/Apps/AppPreview.qml:126
163+#: Dash/Apps/AppPreview.qml:135
164164msgid "Rate this"
165165msgstr "قيّم ذلك"
166166
@@ -180,7 +180,7 @@ msgstr "أرسل"
180180msgid "Comments:"
181181msgstr "التعليقات:"
182182
183−#: Greeter/Lockscreen.qml:142
183+#: Greeter/Lockscreen.qml:146
184184msgid "Emergency Call"
185185msgstr "مكالمة طوارئ"
186186
@@ -215,12 +215,21 @@ msgstr "تتكلم الآن..."
215215
216216#: Notifications/NotificationMenuItemFactory.qml:89
217217msgid "Show password"
218−msgstr ""
218+msgstr "عرض كلمة السر"
219219
220220#: Panel/SearchIndicator.qml:27
221221msgid "Search"
222222msgstr "ابحث"
223223
224+#: plugins/Unity/Launcher/launcheritem.cpp:43
225+#: plugins/Unity/Launcher/launcheritem.cpp:73
226+msgid "Lock to Launcher"
227+msgstr ""
228+
229+#: plugins/Unity/Launcher/launcheritem.cpp:73
230+msgid "Unlock from Launcher"
231+msgstr ""
232+
224233#: plugins/Unity/scope.cpp:408
225234msgid "Sorry, there is nothing that matches your search."
226235msgstr "عذراً، لا يوجد ما يطابق بحثك."
@@ -229,7 +238,7 @@ msgstr "عذراً، لا يوجد ما يطابق بحثك."
229238msgid "All"
230239msgstr "الكل"
231240
232−#: Shell.qml:438
241+#: Shell.qml:441
233242#, qt-format
234243msgid "Please enter %1"
235244msgstr "من فضلك أدخِل %1"
po/ast.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-10-03 14:02+0000\n"
1212"Last-Translator: ivarela <ivarela@ubuntu.com>\n"
1313"Language-Team: Asturian <ast@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: 2013-11-08 06:37+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "Wikipedia"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr "Omitir la intro"
9292
@@ -136,7 +136,7 @@ msgstr ""
136136"Agora domines los xestos de berbesos y pues usar el teléfonu<br><br>Toca la "
137137"pantalla pa entamar"
138138
139−#: Components/PageHeader.qml:341
139+#: Components/PageHeader.qml:345
140140msgid "Recent searches"
141141msgstr "Busques recientes"
142142
@@ -156,7 +156,7 @@ msgid_plural "%1 reviews"
156156msgstr[0] "%1 reseña"
157157msgstr[1] "%1 reseñes"
158158
159−#: Dash/Apps/AppPreview.qml:126
159+#: Dash/Apps/AppPreview.qml:135
160160msgid "Rate this"
161161msgstr "Valorar esto"
162162
@@ -176,7 +176,7 @@ msgstr "Unviar"
176176msgid "Comments:"
177177msgstr "Comentarios:"
178178
179−#: Greeter/Lockscreen.qml:142
179+#: Greeter/Lockscreen.qml:146
180180msgid "Emergency Call"
181181msgstr "Llamada d'emerxencia"
182182
@@ -217,6 +217,15 @@ msgstr ""
217217msgid "Search"
218218msgstr "Guetar"
219219
220+#: plugins/Unity/Launcher/launcheritem.cpp:43
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Lock to Launcher"
223+msgstr ""
224+
225+#: plugins/Unity/Launcher/launcheritem.cpp:73
226+msgid "Unlock from Launcher"
227+msgstr ""
228+
220229#: plugins/Unity/scope.cpp:408
221230msgid "Sorry, there is nothing that matches your search."
222231msgstr "Sentímoslo, nun hai res que concase cola gueta"
@@ -225,7 +234,7 @@ msgstr "Sentímoslo, nun hai res que concase cola gueta"
225234msgid "All"
226235msgstr "Too"
227236
228−#: Shell.qml:438
237+#: Shell.qml:441
229238#, qt-format
230239msgid "Please enter %1"
231240msgstr "Introduz %1"
po/az.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-06-26 23:48+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.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: 2013-11-08 06:37+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr "Son axtarışlar"
138138
@@ -152,7 +152,7 @@ msgid_plural "%1 reviews"
152152msgstr[0] ""
153153msgstr[1] ""
154154
155−#: Dash/Apps/AppPreview.qml:126
155+#: Dash/Apps/AppPreview.qml:135
156156msgid "Rate this"
157157msgstr ""
158158
@@ -172,7 +172,7 @@ msgstr ""
172172msgid "Comments:"
173173msgstr ""
174174
175−#: Greeter/Lockscreen.qml:142
175+#: Greeter/Lockscreen.qml:146
176176msgid "Emergency Call"
177177msgstr ""
178178
@@ -213,6 +213,15 @@ msgstr ""
213213msgid "Search"
214214msgstr "Axtar"
215215
216+#: plugins/Unity/Launcher/launcheritem.cpp:43
217+#: plugins/Unity/Launcher/launcheritem.cpp:73
218+msgid "Lock to Launcher"
219+msgstr ""
220+
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Unlock from Launcher"
223+msgstr ""
224+
216225#: plugins/Unity/scope.cpp:408
217226msgid "Sorry, there is nothing that matches your search."
218227msgstr "Bağışlayın, amma axtarışınıza heç bir nəticə uyğun gəlmir."
@@ -221,7 +230,7 @@ msgstr "Bağışlayın, amma axtarışınıza heç bir nəticə uyğun gəlmir."
221230msgid "All"
222231msgstr ""
223232
224−#: Shell.qml:438
233+#: Shell.qml:441
225234#, qt-format
226235msgid "Please enter %1"
227236msgstr ""
po/bg.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-06-27 00:06+0000\n"
1212"Last-Translator: Miroslav E. Hadzhiev (Хаджиев) "
1313"<miroslav.hadzhiev@gmail.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=2; plural=n != 1;\n"
19−"X-Launchpad-Export-Date: 2013-11-08 06:37+0000\n"
20−"X-Generator: Launchpad (build 16820)\n"
19+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
20+"X-Generator: Launchpad (build 16831)\n"
2121
2222#: Applications/applications.js:23
2323msgid "Phone"
@@ -87,7 +87,7 @@ msgstr "Уикипедия"
8787msgid "YouTube"
8888msgstr "YouTube"
8989
90−#: Components/EdgeDemoOverlay.qml:149
90+#: Components/EdgeDemoOverlay.qml:151
9191msgid "Skip intro"
9292msgstr ""
9393
@@ -133,7 +133,7 @@ msgid ""
133133"phone<br><br>Tap anywhere to start"
134134msgstr ""
135135
136−#: Components/PageHeader.qml:341
136+#: Components/PageHeader.qml:345
137137msgid "Recent searches"
138138msgstr "Скорошни търсения"
139139
@@ -153,7 +153,7 @@ msgid_plural "%1 reviews"
153153msgstr[0] ""
154154msgstr[1] ""
155155
156−#: Dash/Apps/AppPreview.qml:126
156+#: Dash/Apps/AppPreview.qml:135
157157msgid "Rate this"
158158msgstr ""
159159
@@ -173,7 +173,7 @@ msgstr ""
173173msgid "Comments:"
174174msgstr ""
175175
176−#: Greeter/Lockscreen.qml:142
176+#: Greeter/Lockscreen.qml:146
177177msgid "Emergency Call"
178178msgstr ""
179179
@@ -214,6 +214,15 @@ msgstr ""
214214msgid "Search"
215215msgstr "Търсене"
216216
217+#: plugins/Unity/Launcher/launcheritem.cpp:43
218+#: plugins/Unity/Launcher/launcheritem.cpp:73
219+msgid "Lock to Launcher"
220+msgstr ""
221+
222+#: plugins/Unity/Launcher/launcheritem.cpp:73
223+msgid "Unlock from Launcher"
224+msgstr ""
225+
217226#: plugins/Unity/scope.cpp:408
218227msgid "Sorry, there is nothing that matches your search."
219228msgstr "Съжаляваме, няма нищо, което да отговаря на вашето търсене."
@@ -222,7 +231,7 @@ msgstr "Съжаляваме, няма нищо, което да отговар
222231msgid "All"
223232msgstr ""
224233
225−#: Shell.qml:438
234+#: Shell.qml:441
226235#, qt-format
227236msgid "Please enter %1"
228237msgstr ""
po/ca.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-09-28 07:38+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: 2013-11-08 06:37+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "Viquipèdia"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr "Omet la introducció"
9292
@@ -138,7 +138,7 @@ msgid ""
138138"phone<br><br>Tap anywhere to start"
139139msgstr ""
140140
141−#: Components/PageHeader.qml:341
141+#: Components/PageHeader.qml:345
142142msgid "Recent searches"
143143msgstr "Cerques recents"
144144
@@ -158,7 +158,7 @@ msgid_plural "%1 reviews"
158158msgstr[0] "%1 ressenya"
159159msgstr[1] "%1 ressenyes"
160160
161−#: Dash/Apps/AppPreview.qml:126
161+#: Dash/Apps/AppPreview.qml:135
162162msgid "Rate this"
163163msgstr ""
164164
@@ -178,7 +178,7 @@ msgstr "Envia"
178178msgid "Comments:"
179179msgstr "Comentaris:"
180180
181−#: Greeter/Lockscreen.qml:142
181+#: Greeter/Lockscreen.qml:146
182182msgid "Emergency Call"
183183msgstr "Trucada d'emergència"
184184
@@ -219,6 +219,15 @@ msgstr ""
219219msgid "Search"
220220msgstr "Cerca"
221221
222+#: plugins/Unity/Launcher/launcheritem.cpp:43
223+#: plugins/Unity/Launcher/launcheritem.cpp:73
224+msgid "Lock to Launcher"
225+msgstr ""
226+
227+#: plugins/Unity/Launcher/launcheritem.cpp:73
228+msgid "Unlock from Launcher"
229+msgstr ""
230+
222231#: plugins/Unity/scope.cpp:408
223232msgid "Sorry, there is nothing that matches your search."
224233msgstr "No hi ha res que coincideixi amb la cerca"
@@ -227,7 +236,7 @@ msgstr "No hi ha res que coincideixi amb la cerca"
227236msgid "All"
228237msgstr ""
229238
230−#: Shell.qml:438
239+#: Shell.qml:441
231240#, qt-format
232241msgid "Please enter %1"
233242msgstr "Introduïu %1"
po/cs.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-10-08 08:09+0000\n"
1212"Last-Translator: Tadeáš Pařík <tadeas.parik@gmail.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: 2013-11-08 06:37+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "Wikipedie"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr "Přeskočit intro"
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr "Poslední vyhledávání"
138138
@@ -153,7 +153,7 @@ msgstr[0] "%1 recenze"
153153msgstr[1] "%1 recenze"
154154msgstr[2] "%1 recenzí"
155155
156−#: Dash/Apps/AppPreview.qml:126
156+#: Dash/Apps/AppPreview.qml:135
157157msgid "Rate this"
158158msgstr "Ohodnoťte to"
159159
@@ -173,7 +173,7 @@ msgstr "Odeslat"
173173msgid "Comments:"
174174msgstr "Komentáře:"
175175
176−#: Greeter/Lockscreen.qml:142
176+#: Greeter/Lockscreen.qml:146
177177msgid "Emergency Call"
178178msgstr "Tísňové volání"
179179
@@ -214,6 +214,15 @@ msgstr ""
214214msgid "Search"
215215msgstr "Hledat"
216216
217+#: plugins/Unity/Launcher/launcheritem.cpp:43
218+#: plugins/Unity/Launcher/launcheritem.cpp:73
219+msgid "Lock to Launcher"
220+msgstr ""
221+
222+#: plugins/Unity/Launcher/launcheritem.cpp:73
223+msgid "Unlock from Launcher"
224+msgstr ""
225+
217226#: plugins/Unity/scope.cpp:408
218227msgid "Sorry, there is nothing that matches your search."
219228msgstr "Je nám líto, ale nic neodpovídá zadání"
@@ -222,7 +231,7 @@ msgstr "Je nám líto, ale nic neodpovídá zadání"
222231msgid "All"
223232msgstr "Vše"
224233
225−#: Shell.qml:438
234+#: Shell.qml:441
226235#, qt-format
227236msgid "Please enter %1"
228237msgstr "Zadejte prosím %1"
po/de.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-10-18 12:26+0000\n"
1212"Last-Translator: Phillip Sz <Unknown>\n"
1313"Language-Team: German <de@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: 2013-11-08 06:37+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "Wikipedia"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr "Überspringe Einführung"
9292
@@ -136,7 +136,7 @@ msgstr ""
136136"Sie haben nun die Einführung abgeschlossen und können Ihr Gerät nun "
137137"verwenden<br><br>Antippen um zu starten"
138138
139−#: Components/PageHeader.qml:341
139+#: Components/PageHeader.qml:345
140140msgid "Recent searches"
141141msgstr "Letzte Suchbegriffe"
142142
@@ -156,7 +156,7 @@ msgid_plural "%1 reviews"
156156msgstr[0] "%1 Bewertung"
157157msgstr[1] "%1 Bewertungen"
158158
159−#: Dash/Apps/AppPreview.qml:126
159+#: Dash/Apps/AppPreview.qml:135
160160msgid "Rate this"
161161msgstr "Bewerten"
162162
@@ -176,7 +176,7 @@ msgstr "Senden"
176176msgid "Comments:"
177177msgstr "Kommentare:"
178178
179−#: Greeter/Lockscreen.qml:142
179+#: Greeter/Lockscreen.qml:146
180180msgid "Emergency Call"
181181msgstr "Notruf"
182182
@@ -217,6 +217,15 @@ msgstr ""
217217msgid "Search"
218218msgstr "Suchen"
219219
220+#: plugins/Unity/Launcher/launcheritem.cpp:43
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Lock to Launcher"
223+msgstr ""
224+
225+#: plugins/Unity/Launcher/launcheritem.cpp:73
226+msgid "Unlock from Launcher"
227+msgstr ""
228+
220229#: plugins/Unity/scope.cpp:408
221230msgid "Sorry, there is nothing that matches your search."
222231msgstr "Entschuldigung, es wurden keine Treffer erzielt."
@@ -225,7 +234,7 @@ msgstr "Entschuldigung, es wurden keine Treffer erzielt."
225234msgid "All"
226235msgstr "Alle"
227236
228−#: Shell.qml:438
237+#: Shell.qml:441
229238#, qt-format
230239msgid "Please enter %1"
231240msgstr "Bitte geben Sie %1 ein"
po/el.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-06-27 00:53+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.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: 2013-11-08 06:37+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr "Πρόσφατες αναζητήσεις"
138138
@@ -152,7 +152,7 @@ msgid_plural "%1 reviews"
152152msgstr[0] ""
153153msgstr[1] ""
154154
155−#: Dash/Apps/AppPreview.qml:126
155+#: Dash/Apps/AppPreview.qml:135
156156msgid "Rate this"
157157msgstr ""
158158
@@ -172,7 +172,7 @@ msgstr ""
172172msgid "Comments:"
173173msgstr ""
174174
175−#: Greeter/Lockscreen.qml:142
175+#: Greeter/Lockscreen.qml:146
176176msgid "Emergency Call"
177177msgstr ""
178178
@@ -213,6 +213,15 @@ msgstr ""
213213msgid "Search"
214214msgstr "Αναζήτηση"
215215
216+#: plugins/Unity/Launcher/launcheritem.cpp:43
217+#: plugins/Unity/Launcher/launcheritem.cpp:73
218+msgid "Lock to Launcher"
219+msgstr ""
220+
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Unlock from Launcher"
223+msgstr ""
224+
216225#: plugins/Unity/scope.cpp:408
217226msgid "Sorry, there is nothing that matches your search."
218227msgstr "Λυπούμαστε, δεν υπάρχει τίποτα που να ταιριάζει στην αναζήτησή σας."
@@ -221,7 +230,7 @@ msgstr "Λυπούμαστε, δεν υπάρχει τίποτα που να τ
221230msgid "All"
222231msgstr ""
223232
224−#: Shell.qml:438
233+#: Shell.qml:441
225234#, qt-format
226235msgid "Please enter %1"
227236msgstr ""
po/en_AU.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-09-28 07:46+0000\n"
1212"Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
1313"Language-Team: English (Australia) <en_AU@li.org>\n"
@@ -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: 2013-11-08 06:38+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "Wikipedia"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr "Skip intro"
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr "Recent searches"
138138
@@ -152,7 +152,7 @@ msgid_plural "%1 reviews"
152152msgstr[0] "%1 review"
153153msgstr[1] "%1 reviews"
154154
155−#: Dash/Apps/AppPreview.qml:126
155+#: Dash/Apps/AppPreview.qml:135
156156msgid "Rate this"
157157msgstr "Rate this"
158158
@@ -172,7 +172,7 @@ msgstr "Send"
172172msgid "Comments:"
173173msgstr "Comments:"
174174
175−#: Greeter/Lockscreen.qml:142
175+#: Greeter/Lockscreen.qml:146
176176msgid "Emergency Call"
177177msgstr "Emergency Call"
178178
@@ -213,6 +213,15 @@ msgstr ""
213213msgid "Search"
214214msgstr "Search"
215215
216+#: plugins/Unity/Launcher/launcheritem.cpp:43
217+#: plugins/Unity/Launcher/launcheritem.cpp:73
218+msgid "Lock to Launcher"
219+msgstr ""
220+
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Unlock from Launcher"
223+msgstr ""
224+
216225#: plugins/Unity/scope.cpp:408
217226msgid "Sorry, there is nothing that matches your search."
218227msgstr "Sorry, there is nothing that matches your search."
@@ -221,7 +230,7 @@ msgstr "Sorry, there is nothing that matches your search."
221230msgid "All"
222231msgstr ""
223232
224−#: Shell.qml:438
233+#: Shell.qml:441
225234#, qt-format
226235msgid "Please enter %1"
227236msgstr "Please enter %1"
po/en_GB.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-06-27 08:53+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: English (United Kingdom) <en_GB@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: 2013-11-08 06:38+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "Wikipedia"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr "Recent searches"
138138
@@ -152,7 +152,7 @@ msgid_plural "%1 reviews"
152152msgstr[0] ""
153153msgstr[1] ""
154154
155−#: Dash/Apps/AppPreview.qml:126
155+#: Dash/Apps/AppPreview.qml:135
156156msgid "Rate this"
157157msgstr ""
158158
@@ -172,7 +172,7 @@ msgstr ""
172172msgid "Comments:"
173173msgstr ""
174174
175−#: Greeter/Lockscreen.qml:142
175+#: Greeter/Lockscreen.qml:146
176176msgid "Emergency Call"
177177msgstr ""
178178
@@ -213,6 +213,15 @@ msgstr ""
213213msgid "Search"
214214msgstr "Search"
215215
216+#: plugins/Unity/Launcher/launcheritem.cpp:43
217+#: plugins/Unity/Launcher/launcheritem.cpp:73
218+msgid "Lock to Launcher"
219+msgstr ""
220+
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Unlock from Launcher"
223+msgstr ""
224+
216225#: plugins/Unity/scope.cpp:408
217226msgid "Sorry, there is nothing that matches your search."
218227msgstr "Sorry, there is nothing that matches your search."
@@ -221,7 +230,7 @@ msgstr "Sorry, there is nothing that matches your search."
221230msgid "All"
222231msgstr ""
223232
224−#: Shell.qml:438
233+#: Shell.qml:441
225234#, qt-format
226235msgid "Please enter %1"
227236msgstr "Please enter %1"
po/eo.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-06-26 22:35+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Esperanto <eo@li.org>\n"
@@ -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: 2013-11-08 06:37+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr ""
138138
@@ -152,7 +152,7 @@ msgid_plural "%1 reviews"
152152msgstr[0] ""
153153msgstr[1] ""
154154
155−#: Dash/Apps/AppPreview.qml:126
155+#: Dash/Apps/AppPreview.qml:135
156156msgid "Rate this"
157157msgstr ""
158158
@@ -172,7 +172,7 @@ msgstr ""
172172msgid "Comments:"
173173msgstr ""
174174
175−#: Greeter/Lockscreen.qml:142
175+#: Greeter/Lockscreen.qml:146
176176msgid "Emergency Call"
177177msgstr ""
178178
@@ -213,6 +213,15 @@ msgstr ""
213213msgid "Search"
214214msgstr ""
215215
216+#: plugins/Unity/Launcher/launcheritem.cpp:43
217+#: plugins/Unity/Launcher/launcheritem.cpp:73
218+msgid "Lock to Launcher"
219+msgstr ""
220+
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Unlock from Launcher"
223+msgstr ""
224+
216225#: plugins/Unity/scope.cpp:408
217226msgid "Sorry, there is nothing that matches your search."
218227msgstr ""
@@ -221,7 +230,7 @@ msgstr ""
221230msgid "All"
222231msgstr ""
223232
224−#: Shell.qml:438
233+#: Shell.qml:441
225234#, qt-format
226235msgid "Please enter %1"
227236msgstr ""
po/es.po+19−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: 2013-11-05 17:53+0100\n"
11−"PO-Revision-Date: 2013-10-02 04:59+0000\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
11+"PO-Revision-Date: 2013-11-20 08:46+0000\n"
1212"Last-Translator: Adolfo Jayme Barrientos <fitoschido@gmail.com>\n"
1313"Language-Team: Spanish <es@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-11-08 06:38+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-21 06:43+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "Wikipedia"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr "Omitir la introducción"
9292
@@ -136,7 +136,7 @@ msgstr ""
136136"Ahora domina los gestos de bordes y puede usar el teléfono<br><br>Toque la "
137137"pantalla para comenzar"
138138
139−#: Components/PageHeader.qml:341
139+#: Components/PageHeader.qml:345
140140msgid "Recent searches"
141141msgstr "Búsquedas recientes"
142142
@@ -156,7 +156,7 @@ msgid_plural "%1 reviews"
156156msgstr[0] "%1 reseña"
157157msgstr[1] "%1 reseñas"
158158
159−#: Dash/Apps/AppPreview.qml:126
159+#: Dash/Apps/AppPreview.qml:135
160160msgid "Rate this"
161161msgstr "Valorar esto"
162162
@@ -176,7 +176,7 @@ msgstr "Enviar"
176176msgid "Comments:"
177177msgstr "Comentarios:"
178178
179−#: Greeter/Lockscreen.qml:142
179+#: Greeter/Lockscreen.qml:146
180180msgid "Emergency Call"
181181msgstr "Llamada de emergencia"
182182
@@ -211,12 +211,21 @@ msgstr "Hablando…"
211211
212212#: Notifications/NotificationMenuItemFactory.qml:89
213213msgid "Show password"
214−msgstr ""
214+msgstr "Mostrar contraseña"
215215
216216#: Panel/SearchIndicator.qml:27
217217msgid "Search"
218218msgstr "Buscar"
219219
220+#: plugins/Unity/Launcher/launcheritem.cpp:43
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Lock to Launcher"
223+msgstr "Mantener en el lanzador"
224+
225+#: plugins/Unity/Launcher/launcheritem.cpp:73
226+msgid "Unlock from Launcher"
227+msgstr "No mantener en el lanzador"
228+
220229#: plugins/Unity/scope.cpp:408
221230msgid "Sorry, there is nothing that matches your search."
222231msgstr "No hay nada que coincida con su búsqueda."
@@ -225,7 +234,7 @@ msgstr "No hay nada que coincida con su búsqueda."
225234msgid "All"
226235msgstr "Todo"
227236
228−#: Shell.qml:438
237+#: Shell.qml:441
229238#, qt-format
230239msgid "Please enter %1"
231240msgstr "Introduzca %1"
po/fa.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-10-31 19:02+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Persian <fa@li.org>\n"
@@ -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: 2013-11-08 06:37+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr ""
138138
@@ -152,7 +152,7 @@ msgid_plural "%1 reviews"
152152msgstr[0] ""
153153msgstr[1] ""
154154
155−#: Dash/Apps/AppPreview.qml:126
155+#: Dash/Apps/AppPreview.qml:135
156156msgid "Rate this"
157157msgstr ""
158158
@@ -172,7 +172,7 @@ msgstr ""
172172msgid "Comments:"
173173msgstr ""
174174
175−#: Greeter/Lockscreen.qml:142
175+#: Greeter/Lockscreen.qml:146
176176msgid "Emergency Call"
177177msgstr ""
178178
@@ -213,6 +213,15 @@ msgstr ""
213213msgid "Search"
214214msgstr ""
215215
216+#: plugins/Unity/Launcher/launcheritem.cpp:43
217+#: plugins/Unity/Launcher/launcheritem.cpp:73
218+msgid "Lock to Launcher"
219+msgstr ""
220+
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Unlock from Launcher"
223+msgstr ""
224+
216225#: plugins/Unity/scope.cpp:408
217226msgid "Sorry, there is nothing that matches your search."
218227msgstr ""
@@ -221,7 +230,7 @@ msgstr ""
221230msgid "All"
222231msgstr ""
223232
224−#: Shell.qml:438
233+#: Shell.qml:441
225234#, qt-format
226235msgid "Please enter %1"
227236msgstr ""
po/fi.po+18−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: 2013-11-05 17:53+0100\n"
11−"PO-Revision-Date: 2013-11-11 14:07+0000\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
11+"PO-Revision-Date: 2013-11-20 08:09+0000\n"
1212"Last-Translator: Jiri Grönroos <Unknown>\n"
1313"Language-Team: Finnish <fi@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-11-12 06:38+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-21 06:43+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "Wikipedia"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr "Ohita esittely"
9292
@@ -134,7 +134,7 @@ msgstr ""
134134"Hallitset nyt reunaeleet, joten voit aloittaa puhelimen "
135135"käytön<br><br>Napauta missä tahansa aloittaaksesi"
136136
137−#: Components/PageHeader.qml:341
137+#: Components/PageHeader.qml:345
138138msgid "Recent searches"
139139msgstr "Viimeisimmät haut"
140140
@@ -154,7 +154,7 @@ msgid_plural "%1 reviews"
154154msgstr[0] "%1 arvostelu"
155155msgstr[1] "%1 arvostelua"
156156
157−#: Dash/Apps/AppPreview.qml:126
157+#: Dash/Apps/AppPreview.qml:135
158158msgid "Rate this"
159159msgstr "Arvioi tämä"
160160
@@ -174,7 +174,7 @@ msgstr "Lähetä"
174174msgid "Comments:"
175175msgstr "Kommentit:"
176176
177−#: Greeter/Lockscreen.qml:142
177+#: Greeter/Lockscreen.qml:146
178178msgid "Emergency Call"
179179msgstr "Hätäpuhelu"
180180
@@ -215,6 +215,15 @@ msgstr "Näytä salasana"
215215msgid "Search"
216216msgstr "Hae"
217217
218+#: plugins/Unity/Launcher/launcheritem.cpp:43
219+#: plugins/Unity/Launcher/launcheritem.cpp:73
220+msgid "Lock to Launcher"
221+msgstr "Kiinnitä käynnistimeen"
222+
223+#: plugins/Unity/Launcher/launcheritem.cpp:73
224+msgid "Unlock from Launcher"
225+msgstr "Poista käynnistimestä"
226+
218227#: plugins/Unity/scope.cpp:408
219228msgid "Sorry, there is nothing that matches your search."
220229msgstr "Hakuun täsmääviä tuloksia ei löydy."
@@ -223,7 +232,7 @@ msgstr "Hakuun täsmääviä tuloksia ei löydy."
223232msgid "All"
224233msgstr "Kaikki"
225234
226−#: Shell.qml:438
235+#: Shell.qml:441
227236#, qt-format
228237msgid "Please enter %1"
229238msgstr "Kirjoita %1"
po/fo.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-10-01 15:13+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: 2013-11-08 06:37+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr ""
138138
@@ -152,7 +152,7 @@ msgid_plural "%1 reviews"
152152msgstr[0] ""
153153msgstr[1] ""
154154
155−#: Dash/Apps/AppPreview.qml:126
155+#: Dash/Apps/AppPreview.qml:135
156156msgid "Rate this"
157157msgstr ""
158158
@@ -172,7 +172,7 @@ msgstr ""
172172msgid "Comments:"
173173msgstr ""
174174
175−#: Greeter/Lockscreen.qml:142
175+#: Greeter/Lockscreen.qml:146
176176msgid "Emergency Call"
177177msgstr ""
178178
@@ -213,6 +213,15 @@ msgstr ""
213213msgid "Search"
214214msgstr "Leita"
215215
216+#: plugins/Unity/Launcher/launcheritem.cpp:43
217+#: plugins/Unity/Launcher/launcheritem.cpp:73
218+msgid "Lock to Launcher"
219+msgstr ""
220+
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Unlock from Launcher"
223+msgstr ""
224+
216225#: plugins/Unity/scope.cpp:408
217226msgid "Sorry, there is nothing that matches your search."
218227msgstr "Tíanverri er tað einki sum hóskar til tína leiting."
@@ -221,7 +230,7 @@ msgstr "Tíanverri er tað einki sum hóskar til tína leiting."
221230msgid "All"
222231msgstr ""
223232
224−#: Shell.qml:438
233+#: Shell.qml:441
225234#, qt-format
226235msgid "Please enter %1"
227236msgstr ""
po/fr.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-06-27 03:21+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: French <fr@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: 2013-11-08 06:37+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr ""
138138
@@ -152,7 +152,7 @@ msgid_plural "%1 reviews"
152152msgstr[0] ""
153153msgstr[1] ""
154154
155−#: Dash/Apps/AppPreview.qml:126
155+#: Dash/Apps/AppPreview.qml:135
156156msgid "Rate this"
157157msgstr ""
158158
@@ -172,7 +172,7 @@ msgstr ""
172172msgid "Comments:"
173173msgstr ""
174174
175−#: Greeter/Lockscreen.qml:142
175+#: Greeter/Lockscreen.qml:146
176176msgid "Emergency Call"
177177msgstr ""
178178
@@ -213,6 +213,15 @@ msgstr ""
213213msgid "Search"
214214msgstr ""
215215
216+#: plugins/Unity/Launcher/launcheritem.cpp:43
217+#: plugins/Unity/Launcher/launcheritem.cpp:73
218+msgid "Lock to Launcher"
219+msgstr ""
220+
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Unlock from Launcher"
223+msgstr ""
224+
216225#: plugins/Unity/scope.cpp:408
217226msgid "Sorry, there is nothing that matches your search."
218227msgstr ""
@@ -221,7 +230,7 @@ msgstr ""
221230msgid "All"
222231msgstr ""
223232
224−#: Shell.qml:438
233+#: Shell.qml:441
225234#, qt-format
226235msgid "Please enter %1"
227236msgstr ""
po/gd.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-09-30 10:34+0000\n"
1212"Last-Translator: Akerbeltz <fios@akerbeltz.org>\n"
1313"Language-Team: Gaelic; Scottish <gd@li.org>\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: 2013-11-08 06:37+0000\n"
20−"X-Generator: Launchpad (build 16820)\n"
19+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
20+"X-Generator: Launchpad (build 16831)\n"
2121
2222#: Applications/applications.js:23
2323msgid "Phone"
@@ -87,7 +87,7 @@ msgstr "An Uicipeid"
8787msgid "YouTube"
8888msgstr "YouTube"
8989
90−#: Components/EdgeDemoOverlay.qml:149
90+#: Components/EdgeDemoOverlay.qml:151
9191msgid "Skip intro"
9292msgstr "Gearr leum thairis air an ro-ràdh"
9393
@@ -139,7 +139,7 @@ msgid ""
139139"phone<br><br>Tap anywhere to start"
140140msgstr ""
141141
142−#: Components/PageHeader.qml:341
142+#: Components/PageHeader.qml:345
143143msgid "Recent searches"
144144msgstr "Na lorg thu o chionn goirid"
145145
@@ -161,7 +161,7 @@ msgstr[1] "%1 lèirmheas"
161161msgstr[2] "%1 lèirmheasan"
162162msgstr[3] "%1 lèirmheas"
163163
164−#: Dash/Apps/AppPreview.qml:126
164+#: Dash/Apps/AppPreview.qml:135
165165msgid "Rate this"
166166msgstr "Rangaich seo"
167167
@@ -181,7 +181,7 @@ msgstr "Cuir"
181181msgid "Comments:"
182182msgstr "Beachdan"
183183
184−#: Greeter/Lockscreen.qml:142
184+#: Greeter/Lockscreen.qml:146
185185msgid "Emergency Call"
186186msgstr "Gairm èiginn"
187187
@@ -222,6 +222,15 @@ msgstr ""
222222msgid "Search"
223223msgstr "Lorg"
224224
225+#: plugins/Unity/Launcher/launcheritem.cpp:43
226+#: plugins/Unity/Launcher/launcheritem.cpp:73
227+msgid "Lock to Launcher"
228+msgstr ""
229+
230+#: plugins/Unity/Launcher/launcheritem.cpp:73
231+msgid "Unlock from Launcher"
232+msgstr ""
233+
225234#: plugins/Unity/scope.cpp:408
226235msgid "Sorry, there is nothing that matches your search."
227236msgstr "Tha sinn duilich ach chan eil dad a' freagairt ris na lorg thu."
@@ -230,7 +239,7 @@ msgstr "Tha sinn duilich ach chan eil dad a' freagairt ris na lorg thu."
230239msgid "All"
231240msgstr ""
232241
233−#: Shell.qml:438
242+#: Shell.qml:441
234243#, qt-format
235244msgid "Please enter %1"
236245msgstr "Cuir a-steach %1"
po/gl.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-10-03 18:49+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: 2013-11-08 06:37+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "Wikipedia"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr "Saltar introdución"
9292
@@ -134,7 +134,7 @@ msgstr ""
134134"Xa domina os xestos desde os bordos e pode comezar a usar o "
135135"móbil<br><br>Toque en calquera sitio para comezar"
136136
137−#: Components/PageHeader.qml:341
137+#: Components/PageHeader.qml:345
138138msgid "Recent searches"
139139msgstr "Buscas recentes"
140140
@@ -154,7 +154,7 @@ msgid_plural "%1 reviews"
154154msgstr[0] "%1 opinión"
155155msgstr[1] "%1 opinións"
156156
157−#: Dash/Apps/AppPreview.qml:126
157+#: Dash/Apps/AppPreview.qml:135
158158msgid "Rate this"
159159msgstr "Valore isto"
160160
@@ -174,7 +174,7 @@ msgstr "Enviar"
174174msgid "Comments:"
175175msgstr "Comentarios:"
176176
177−#: Greeter/Lockscreen.qml:142
177+#: Greeter/Lockscreen.qml:146
178178msgid "Emergency Call"
179179msgstr "Chamada de emerxencia"
180180
@@ -215,6 +215,15 @@ msgstr ""
215215msgid "Search"
216216msgstr "Buscar"
217217
218+#: plugins/Unity/Launcher/launcheritem.cpp:43
219+#: plugins/Unity/Launcher/launcheritem.cpp:73
220+msgid "Lock to Launcher"
221+msgstr ""
222+
223+#: plugins/Unity/Launcher/launcheritem.cpp:73
224+msgid "Unlock from Launcher"
225+msgstr ""
226+
218227#: plugins/Unity/scope.cpp:408
219228msgid "Sorry, there is nothing that matches your search."
220229msgstr "Sentímolo, non hai nada que coincida con esta busca."
@@ -223,7 +232,7 @@ msgstr "Sentímolo, non hai nada que coincida con esta busca."
223232msgid "All"
224233msgstr "Todo"
225234
226−#: Shell.qml:438
235+#: Shell.qml:441
227236#, qt-format
228237msgid "Please enter %1"
229238msgstr "Introduza %1"
po/he.po+22−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: 2013-11-05 17:53+0100\n"
11−"PO-Revision-Date: 2013-10-01 09:19+0000\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
11+"PO-Revision-Date: 2013-11-20 08:30+0000\n"
1212"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
1313"Language-Team: Hebrew <he@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-11-08 06:37+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-21 06:43+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "ויקיפדיה"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr "לדלג על הפתיחה"
9292
@@ -131,8 +131,10 @@ msgid ""
131131"You have now mastered the edge gestures and can start using the "
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134+"עתה מכשסיימת את ההשתלמות לשימוש במחוות קצה יש לך את הכלים להשתמש "
135+"בטלפון<br><br>ניתן לגעת במקום כלשהו במסך כדי להתחיל"
134136
135−#: Components/PageHeader.qml:341
137+#: Components/PageHeader.qml:345
136138msgid "Recent searches"
137139msgstr "חיפושים אחרונים"
138140
@@ -152,7 +154,7 @@ msgid_plural "%1 reviews"
152154msgstr[0] "סקירה %1"
153155msgstr[1] "%1 סקירות"
154156
155−#: Dash/Apps/AppPreview.qml:126
157+#: Dash/Apps/AppPreview.qml:135
156158msgid "Rate this"
157159msgstr "דירוג היישום"
158160
@@ -172,7 +174,7 @@ msgstr "שליחה"
172174msgid "Comments:"
173175msgstr "הערות:"
174176
175−#: Greeter/Lockscreen.qml:142
177+#: Greeter/Lockscreen.qml:146
176178msgid "Emergency Call"
177179msgstr "שיחת חירום"
178180
@@ -207,21 +209,30 @@ msgstr "הדיבור מושמע…"
207209
208210#: Notifications/NotificationMenuItemFactory.qml:89
209211msgid "Show password"
210−msgstr ""
212+msgstr "הצגת הססמה"
211213
212214#: Panel/SearchIndicator.qml:27
213215msgid "Search"
214216msgstr "חיפוש"
215217
218+#: plugins/Unity/Launcher/launcheritem.cpp:43
219+#: plugins/Unity/Launcher/launcheritem.cpp:73
220+msgid "Lock to Launcher"
221+msgstr "נעילה למשגר"
222+
223+#: plugins/Unity/Launcher/launcheritem.cpp:73
224+msgid "Unlock from Launcher"
225+msgstr "הפרדה מהמשגר"
226+
216227#: plugins/Unity/scope.cpp:408
217228msgid "Sorry, there is nothing that matches your search."
218229msgstr "שום דבר אינו תואם לחיפוש שלך, עמך הסליחה."
219230
220231#: plugins/Unity/showallfilteroption.cpp:41
221232msgid "All"
222−msgstr ""
233+msgstr "הכול"
223234
224−#: Shell.qml:438
235+#: Shell.qml:441
225236#, qt-format
226237msgid "Please enter %1"
227238msgstr "נא להזין %1"
po/hr.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-06-27 04:14+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Croatian <hr@li.org>\n"
@@ -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: 2013-11-08 06:38+0000\n"
20−"X-Generator: Launchpad (build 16820)\n"
19+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
20+"X-Generator: Launchpad (build 16831)\n"
2121
2222#: Applications/applications.js:23
2323msgid "Phone"
@@ -87,7 +87,7 @@ msgstr ""
8787msgid "YouTube"
8888msgstr ""
8989
90−#: Components/EdgeDemoOverlay.qml:149
90+#: Components/EdgeDemoOverlay.qml:151
9191msgid "Skip intro"
9292msgstr ""
9393
@@ -133,7 +133,7 @@ msgid ""
133133"phone<br><br>Tap anywhere to start"
134134msgstr ""
135135
136−#: Components/PageHeader.qml:341
136+#: Components/PageHeader.qml:345
137137msgid "Recent searches"
138138msgstr "Nedavne pretrage"
139139
@@ -153,7 +153,7 @@ msgid_plural "%1 reviews"
153153msgstr[0] ""
154154msgstr[1] ""
155155
156−#: Dash/Apps/AppPreview.qml:126
156+#: Dash/Apps/AppPreview.qml:135
157157msgid "Rate this"
158158msgstr ""
159159
@@ -173,7 +173,7 @@ msgstr ""
173173msgid "Comments:"
174174msgstr ""
175175
176−#: Greeter/Lockscreen.qml:142
176+#: Greeter/Lockscreen.qml:146
177177msgid "Emergency Call"
178178msgstr ""
179179
@@ -214,6 +214,15 @@ msgstr ""
214214msgid "Search"
215215msgstr "Pretraživanje"
216216
217+#: plugins/Unity/Launcher/launcheritem.cpp:43
218+#: plugins/Unity/Launcher/launcheritem.cpp:73
219+msgid "Lock to Launcher"
220+msgstr ""
221+
222+#: plugins/Unity/Launcher/launcheritem.cpp:73
223+msgid "Unlock from Launcher"
224+msgstr ""
225+
217226#: plugins/Unity/scope.cpp:408
218227msgid "Sorry, there is nothing that matches your search."
219228msgstr "Nažalost, ne postoji ništa što odgovara vašoj pretrazi."
@@ -222,7 +231,7 @@ msgstr "Nažalost, ne postoji ništa što odgovara vašoj pretrazi."
222231msgid "All"
223232msgstr ""
224233
225−#: Shell.qml:438
234+#: Shell.qml:441
226235#, qt-format
227236msgid "Please enter %1"
228237msgstr ""
po/hu.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-06-27 04:28+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.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: 2013-11-08 06:37+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr "Legutóbbi keresések"
138138
@@ -152,7 +152,7 @@ msgid_plural "%1 reviews"
152152msgstr[0] ""
153153msgstr[1] ""
154154
155−#: Dash/Apps/AppPreview.qml:126
155+#: Dash/Apps/AppPreview.qml:135
156156msgid "Rate this"
157157msgstr ""
158158
@@ -172,7 +172,7 @@ msgstr ""
172172msgid "Comments:"
173173msgstr ""
174174
175−#: Greeter/Lockscreen.qml:142
175+#: Greeter/Lockscreen.qml:146
176176msgid "Emergency Call"
177177msgstr ""
178178
@@ -213,6 +213,15 @@ msgstr ""
213213msgid "Search"
214214msgstr "Keresés"
215215
216+#: plugins/Unity/Launcher/launcheritem.cpp:43
217+#: plugins/Unity/Launcher/launcheritem.cpp:73
218+msgid "Lock to Launcher"
219+msgstr ""
220+
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Unlock from Launcher"
223+msgstr ""
224+
216225#: plugins/Unity/scope.cpp:408
217226msgid "Sorry, there is nothing that matches your search."
218227msgstr "Elnézést, nincs találat a keresésre."
@@ -221,7 +230,7 @@ msgstr "Elnézést, nincs találat a keresésre."
221230msgid "All"
222231msgstr ""
223232
224−#: Shell.qml:438
233+#: Shell.qml:441
225234#, qt-format
226235msgid "Please enter %1"
227236msgstr ""
po/hy.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-06-27 04:43+0000\n"
1212"Last-Translator: iAbaS <sosabazyan@yandex.ru>\n"
1313"Language-Team: Armenian <hy@li.org>\n"
@@ -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: 2013-11-08 06:37+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr "Վերջին որոնումներ"
138138
@@ -152,7 +152,7 @@ msgid_plural "%1 reviews"
152152msgstr[0] ""
153153msgstr[1] ""
154154
155−#: Dash/Apps/AppPreview.qml:126
155+#: Dash/Apps/AppPreview.qml:135
156156msgid "Rate this"
157157msgstr ""
158158
@@ -172,7 +172,7 @@ msgstr ""
172172msgid "Comments:"
173173msgstr ""
174174
175−#: Greeter/Lockscreen.qml:142
175+#: Greeter/Lockscreen.qml:146
176176msgid "Emergency Call"
177177msgstr ""
178178
@@ -213,6 +213,15 @@ msgstr ""
213213msgid "Search"
214214msgstr "Որոնում"
215215
216+#: plugins/Unity/Launcher/launcheritem.cpp:43
217+#: plugins/Unity/Launcher/launcheritem.cpp:73
218+msgid "Lock to Launcher"
219+msgstr ""
220+
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Unlock from Launcher"
223+msgstr ""
224+
216225#: plugins/Unity/scope.cpp:408
217226msgid "Sorry, there is nothing that matches your search."
218227msgstr "Կներերք, բայց Ձեր հարցումով ոչինչ չկար"
@@ -221,7 +230,7 @@ msgstr "Կներերք, բայց Ձեր հարցումով ոչինչ չկար"
221230msgid "All"
222231msgstr ""
223232
224−#: Shell.qml:438
233+#: Shell.qml:441
225234#, qt-format
226235msgid "Please enter %1"
227236msgstr ""
po/id.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-06-26 22:35+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Indonesian <id@li.org>\n"
@@ -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: 2013-11-08 06:37+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr ""
138138
@@ -152,7 +152,7 @@ msgid_plural "%1 reviews"
152152msgstr[0] ""
153153msgstr[1] ""
154154
155−#: Dash/Apps/AppPreview.qml:126
155+#: Dash/Apps/AppPreview.qml:135
156156msgid "Rate this"
157157msgstr ""
158158
@@ -172,7 +172,7 @@ msgstr ""
172172msgid "Comments:"
173173msgstr ""
174174
175−#: Greeter/Lockscreen.qml:142
175+#: Greeter/Lockscreen.qml:146
176176msgid "Emergency Call"
177177msgstr ""
178178
@@ -213,6 +213,15 @@ msgstr ""
213213msgid "Search"
214214msgstr ""
215215
216+#: plugins/Unity/Launcher/launcheritem.cpp:43
217+#: plugins/Unity/Launcher/launcheritem.cpp:73
218+msgid "Lock to Launcher"
219+msgstr ""
220+
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Unlock from Launcher"
223+msgstr ""
224+
216225#: plugins/Unity/scope.cpp:408
217226msgid "Sorry, there is nothing that matches your search."
218227msgstr ""
@@ -221,7 +230,7 @@ msgstr ""
221230msgid "All"
222231msgstr ""
223232
224−#: Shell.qml:438
233+#: Shell.qml:441
225234#, qt-format
226235msgid "Please enter %1"
227236msgstr ""
po/is.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-09-18 16:22+0000\n"
1212"Last-Translator: Andri Thorlacius <Unknown>\n"
1313"Language-Team: Icelandic <is@li.org>\n"
@@ -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: 2013-11-08 06:37+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "Wikipedia"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr "Hoppa yfir kynningu"
9292
@@ -133,7 +133,7 @@ msgid ""
133133"phone<br><br>Tap anywhere to start"
134134msgstr ""
135135
136−#: Components/PageHeader.qml:341
136+#: Components/PageHeader.qml:345
137137msgid "Recent searches"
138138msgstr "Nýlegar leitir"
139139
@@ -153,7 +153,7 @@ msgid_plural "%1 reviews"
153153msgstr[0] "%1 ummæli"
154154msgstr[1] "%1 ummæli"
155155
156−#: Dash/Apps/AppPreview.qml:126
156+#: Dash/Apps/AppPreview.qml:135
157157msgid "Rate this"
158158msgstr "Gefa þessu einkunn"
159159
@@ -173,7 +173,7 @@ msgstr "Senda"
173173msgid "Comments:"
174174msgstr "Athugasemdir:"
175175
176−#: Greeter/Lockscreen.qml:142
176+#: Greeter/Lockscreen.qml:146
177177msgid "Emergency Call"
178178msgstr "Neyðarsímtal"
179179
@@ -214,6 +214,15 @@ msgstr ""
214214msgid "Search"
215215msgstr "Leita"
216216
217+#: plugins/Unity/Launcher/launcheritem.cpp:43
218+#: plugins/Unity/Launcher/launcheritem.cpp:73
219+msgid "Lock to Launcher"
220+msgstr ""
221+
222+#: plugins/Unity/Launcher/launcheritem.cpp:73
223+msgid "Unlock from Launcher"
224+msgstr ""
225+
217226#: plugins/Unity/scope.cpp:408
218227msgid "Sorry, there is nothing that matches your search."
219228msgstr "Því miður, það var ekkert sem passaði við leitarorðið þitt."
@@ -222,7 +231,7 @@ msgstr "Því miður, það var ekkert sem passaði við leitarorðið þitt."
222231msgid "All"
223232msgstr ""
224233
225−#: Shell.qml:438
234+#: Shell.qml:441
226235#, qt-format
227236msgid "Please enter %1"
228237msgstr ""
po/it.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-10-07 09:34+0000\n"
1212"Last-Translator: Claudio Arseni <claudio.arseni@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: 2013-11-08 06:37+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "Wikipedia"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr "Salta introduzione"
9292
@@ -139,7 +139,7 @@ msgstr ""
139139"I gesti sui bordi sono stati configurati ed è possibile iniziare a usare il "
140140"telefono<br><br>Toccare in un punto qualunque per iniziare"
141141
142−#: Components/PageHeader.qml:341
142+#: Components/PageHeader.qml:345
143143msgid "Recent searches"
144144msgstr "Ricerche recenti"
145145
@@ -159,7 +159,7 @@ msgid_plural "%1 reviews"
159159msgstr[0] "%1 recensione"
160160msgstr[1] "%1 recensioni"
161161
162−#: Dash/Apps/AppPreview.qml:126
162+#: Dash/Apps/AppPreview.qml:135
163163msgid "Rate this"
164164msgstr "Valuta"
165165
@@ -179,7 +179,7 @@ msgstr "Invia"
179179msgid "Comments:"
180180msgstr "Commenti:"
181181
182−#: Greeter/Lockscreen.qml:142
182+#: Greeter/Lockscreen.qml:146
183183msgid "Emergency Call"
184184msgstr "Chiamata di emergenza"
185185
@@ -220,6 +220,15 @@ msgstr ""
220220msgid "Search"
221221msgstr "Cerca"
222222
223+#: plugins/Unity/Launcher/launcheritem.cpp:43
224+#: plugins/Unity/Launcher/launcheritem.cpp:73
225+msgid "Lock to Launcher"
226+msgstr ""
227+
228+#: plugins/Unity/Launcher/launcheritem.cpp:73
229+msgid "Unlock from Launcher"
230+msgstr ""
231+
223232#: plugins/Unity/scope.cpp:408
224233msgid "Sorry, there is nothing that matches your search."
225234msgstr "Nessun risultato corrispondente alla ricerca."
@@ -228,7 +237,7 @@ msgstr "Nessun risultato corrispondente alla ricerca."
228237msgid "All"
229238msgstr "Tutto"
230239
231−#: Shell.qml:438
240+#: Shell.qml:441
232241#, qt-format
233242msgid "Please enter %1"
234243msgstr "Inserire %1"
po/ja.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-06-26 22:36+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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: 2013-11-08 06:37+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr ""
138138
@@ -152,7 +152,7 @@ msgid_plural "%1 reviews"
152152msgstr[0] ""
153153msgstr[1] ""
154154
155−#: Dash/Apps/AppPreview.qml:126
155+#: Dash/Apps/AppPreview.qml:135
156156msgid "Rate this"
157157msgstr ""
158158
@@ -172,7 +172,7 @@ msgstr ""
172172msgid "Comments:"
173173msgstr ""
174174
175−#: Greeter/Lockscreen.qml:142
175+#: Greeter/Lockscreen.qml:146
176176msgid "Emergency Call"
177177msgstr ""
178178
@@ -213,6 +213,15 @@ msgstr ""
213213msgid "Search"
214214msgstr ""
215215
216+#: plugins/Unity/Launcher/launcheritem.cpp:43
217+#: plugins/Unity/Launcher/launcheritem.cpp:73
218+msgid "Lock to Launcher"
219+msgstr ""
220+
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Unlock from Launcher"
223+msgstr ""
224+
216225#: plugins/Unity/scope.cpp:408
217226msgid "Sorry, there is nothing that matches your search."
218227msgstr ""
@@ -221,7 +230,7 @@ msgstr ""
221230msgid "All"
222231msgstr ""
223232
224−#: Shell.qml:438
233+#: Shell.qml:441
225234#, qt-format
226235msgid "Please enter %1"
227236msgstr ""
po/km.po+19−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: 2013-11-05 17:53+0100\n"
11−"PO-Revision-Date: 2013-10-11 08:49+0000\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
11+"PO-Revision-Date: 2013-11-20 07:34+0000\n"
1212"Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>\n"
1313"Language-Team: Khmer <km@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2013-11-08 06:37+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-21 06:43+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "វីគីភីឌៀ"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr "រំលង​ការ​ណែនាំ"
9292
@@ -137,7 +137,7 @@ msgstr ""
137137"និង​អាច​ចាប់ផ្ដើម​ប្រើ​ទូរស័ព្ទ​បាន<br><br>ប៉ះ​កន្លែង​ណា​មួយ​ "
138138"ដើម្បី​ចាប់ផ្ដើម"
139139
140−#: Components/PageHeader.qml:341
140+#: Components/PageHeader.qml:345
141141msgid "Recent searches"
142142msgstr "ការ​ស្វែងរក​ថ្មី"
143143
@@ -156,7 +156,7 @@ msgid "%1 review"
156156msgid_plural "%1 reviews"
157157msgstr[0] "ពិនិត្យ​មើល %1"
158158
159−#: Dash/Apps/AppPreview.qml:126
159+#: Dash/Apps/AppPreview.qml:135
160160msgid "Rate this"
161161msgstr "វាយតម្លៃ​វា"
162162
@@ -176,7 +176,7 @@ msgstr "ផ្ញើ"
176176msgid "Comments:"
177177msgstr "មតិយោបល់៖"
178178
179−#: Greeter/Lockscreen.qml:142
179+#: Greeter/Lockscreen.qml:146
180180msgid "Emergency Call"
181181msgstr "ការ​ហៅ​ពេល​អាសន្ន"
182182
@@ -211,12 +211,21 @@ msgstr "កំពុង​និយាយ..."
211211
212212#: Notifications/NotificationMenuItemFactory.qml:89
213213msgid "Show password"
214−msgstr ""
214+msgstr "បង្ហាញ​ពាក្យ​សម្ងាត់"
215215
216216#: Panel/SearchIndicator.qml:27
217217msgid "Search"
218218msgstr "ស្វែង​រក"
219219
220+#: plugins/Unity/Launcher/launcheritem.cpp:43
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Lock to Launcher"
223+msgstr "ចាក់​សោ​​ទៅ​កម្មវិធី​ចាប់ផ្ដើម"
224+
225+#: plugins/Unity/Launcher/launcheritem.cpp:73
226+msgid "Unlock from Launcher"
227+msgstr "ដោះសោ​ពី​កម្មវិធី​ចាប់ផ្ដើម"
228+
220229#: plugins/Unity/scope.cpp:408
221230msgid "Sorry, there is nothing that matches your search."
222231msgstr "សូម​ទោស មិនមាន​ពាក្យ​ដែល​អ្នក​ស្វែងរក​ទេ​។"
@@ -225,7 +234,7 @@ msgstr "សូម​ទោស មិនមាន​ពាក្យ​ដែល
225234msgid "All"
226235msgstr "ទាំង​អស់"
227236
228−#: Shell.qml:438
237+#: Shell.qml:441
229238#, qt-format
230239msgid "Please enter %1"
231240msgstr "សូម​បញ្ចូល %1"
po/kn.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-06-27 05:43+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Kannada <kn@li.org>\n"
@@ -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: 2013-11-08 06:37+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr "ಇತ್ತೀಚಿನ ಹುಡುಕಾಟಗಳು"
138138
@@ -152,7 +152,7 @@ msgid_plural "%1 reviews"
152152msgstr[0] ""
153153msgstr[1] ""
154154
155−#: Dash/Apps/AppPreview.qml:126
155+#: Dash/Apps/AppPreview.qml:135
156156msgid "Rate this"
157157msgstr ""
158158
@@ -172,7 +172,7 @@ msgstr ""
172172msgid "Comments:"
173173msgstr ""
174174
175−#: Greeter/Lockscreen.qml:142
175+#: Greeter/Lockscreen.qml:146
176176msgid "Emergency Call"
177177msgstr ""
178178
@@ -213,6 +213,15 @@ msgstr ""
213213msgid "Search"
214214msgstr "ಹುಡುಕು"
215215
216+#: plugins/Unity/Launcher/launcheritem.cpp:43
217+#: plugins/Unity/Launcher/launcheritem.cpp:73
218+msgid "Lock to Launcher"
219+msgstr ""
220+
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Unlock from Launcher"
223+msgstr ""
224+
216225#: plugins/Unity/scope.cpp:408
217226msgid "Sorry, there is nothing that matches your search."
218227msgstr "ಕ್ಷಮಿಸಿ ನಿಮ್ಮ ಶೋಧನೆಗೆ ಸರಿಯಾದ ಹೊಂದಾಣಿಕೆಗಳು ದೊರಕುತ್ತಿಲ್ಲ"
@@ -221,7 +230,7 @@ msgstr "ಕ್ಷಮಿಸಿ ನಿಮ್ಮ ಶೋಧನೆಗೆ ಸರಿಯ
221230msgid "All"
222231msgstr ""
223232
224−#: Shell.qml:438
233+#: Shell.qml:441
225234#, qt-format
226235msgid "Please enter %1"
227236msgstr ""
po/ko.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-10-10 07:04+0000\n"
1212"Last-Translator: Kim Boram <boramism@gmail.com>\n"
1313"Language-Team: Korean <ko@li.org>\n"
@@ -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: 2013-11-08 06:37+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "위키백과"
8686msgid "YouTube"
8787msgstr "유튜브"
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr "도입부 건너뛰기"
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr "최근 검색"
138138
@@ -152,7 +152,7 @@ msgid_plural "%1 reviews"
152152msgstr[0] ""
153153msgstr[1] ""
154154
155−#: Dash/Apps/AppPreview.qml:126
155+#: Dash/Apps/AppPreview.qml:135
156156msgid "Rate this"
157157msgstr ""
158158
@@ -172,7 +172,7 @@ msgstr ""
172172msgid "Comments:"
173173msgstr ""
174174
175−#: Greeter/Lockscreen.qml:142
175+#: Greeter/Lockscreen.qml:146
176176msgid "Emergency Call"
177177msgstr ""
178178
@@ -213,6 +213,15 @@ msgstr ""
213213msgid "Search"
214214msgstr "검색"
215215
216+#: plugins/Unity/Launcher/launcheritem.cpp:43
217+#: plugins/Unity/Launcher/launcheritem.cpp:73
218+msgid "Lock to Launcher"
219+msgstr ""
220+
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Unlock from Launcher"
223+msgstr ""
224+
216225#: plugins/Unity/scope.cpp:408
217226msgid "Sorry, there is nothing that matches your search."
218227msgstr ""
@@ -221,7 +230,7 @@ msgstr ""
221230msgid "All"
222231msgstr ""
223232
224−#: Shell.qml:438
233+#: Shell.qml:441
225234#, qt-format
226235msgid "Please enter %1"
227236msgstr ""
po/ky.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-06-27 06:17+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Kirghiz <ky@li.org>\n"
@@ -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: 2013-11-08 06:37+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr "Соңку издөөлөр"
138138
@@ -152,7 +152,7 @@ msgid_plural "%1 reviews"
152152msgstr[0] ""
153153msgstr[1] ""
154154
155−#: Dash/Apps/AppPreview.qml:126
155+#: Dash/Apps/AppPreview.qml:135
156156msgid "Rate this"
157157msgstr ""
158158
@@ -172,7 +172,7 @@ msgstr ""
172172msgid "Comments:"
173173msgstr ""
174174
175−#: Greeter/Lockscreen.qml:142
175+#: Greeter/Lockscreen.qml:146
176176msgid "Emergency Call"
177177msgstr ""
178178
@@ -213,6 +213,15 @@ msgstr ""
213213msgid "Search"
214214msgstr "Издөө"
215215
216+#: plugins/Unity/Launcher/launcheritem.cpp:43
217+#: plugins/Unity/Launcher/launcheritem.cpp:73
218+msgid "Lock to Launcher"
219+msgstr ""
220+
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Unlock from Launcher"
223+msgstr ""
224+
216225#: plugins/Unity/scope.cpp:408
217226msgid "Sorry, there is nothing that matches your search."
218227msgstr "Тилекке каршы, сиздин издөөңүзгө эч нерсе дал келген жок."
@@ -221,7 +230,7 @@ msgstr "Тилекке каршы, сиздин издөөңүзгө эч нер
221230msgid "All"
222231msgstr ""
223232
224−#: Shell.qml:438
233+#: Shell.qml:441
225234#, qt-format
226235msgid "Please enter %1"
227236msgstr ""
po/lo.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-10-02 10:00+0000\n"
1212"Last-Translator: Anousak <anousak@gmail.com>\n"
1313"Language-Team: Lao <lo@li.org>\n"
@@ -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: 2013-11-08 06:37+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr "ິYouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr ""
138138
@@ -152,7 +152,7 @@ msgid_plural "%1 reviews"
152152msgstr[0] ""
153153msgstr[1] ""
154154
155−#: Dash/Apps/AppPreview.qml:126
155+#: Dash/Apps/AppPreview.qml:135
156156msgid "Rate this"
157157msgstr ""
158158
@@ -172,7 +172,7 @@ msgstr "ສົ່ງ"
172172msgid "Comments:"
173173msgstr "ຄໍ່ເຫັນ"
174174
175−#: Greeter/Lockscreen.qml:142
175+#: Greeter/Lockscreen.qml:146
176176msgid "Emergency Call"
177177msgstr ""
178178
@@ -213,6 +213,15 @@ msgstr ""
213213msgid "Search"
214214msgstr "ຊອກຫາ"
215215
216+#: plugins/Unity/Launcher/launcheritem.cpp:43
217+#: plugins/Unity/Launcher/launcheritem.cpp:73
218+msgid "Lock to Launcher"
219+msgstr ""
220+
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Unlock from Launcher"
223+msgstr ""
224+
216225#: plugins/Unity/scope.cpp:408
217226msgid "Sorry, there is nothing that matches your search."
218227msgstr ""
@@ -221,7 +230,7 @@ msgstr ""
221230msgid "All"
222231msgstr "ທັງໝົດ"
223232
224−#: Shell.qml:438
233+#: Shell.qml:441
225234#, qt-format
226235msgid "Please enter %1"
227236msgstr "ກະລູນາປ້ອນ %1"
po/lv.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-09-28 16:29+0000\n"
1212"Last-Translator: Jānis-Marks Gailis <jeanmarc.gailis@gmail.com>\n"
1313"Language-Team: Latvian <lv@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%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n"
18−"X-Launchpad-Export-Date: 2013-11-08 06:37+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "Vikipēdija"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr "Nesen veiktās meklēšanas"
138138
@@ -152,7 +152,7 @@ msgid_plural "%1 reviews"
152152msgstr[0] ""
153153msgstr[1] ""
154154
155−#: Dash/Apps/AppPreview.qml:126
155+#: Dash/Apps/AppPreview.qml:135
156156msgid "Rate this"
157157msgstr ""
158158
@@ -172,7 +172,7 @@ msgstr ""
172172msgid "Comments:"
173173msgstr ""
174174
175−#: Greeter/Lockscreen.qml:142
175+#: Greeter/Lockscreen.qml:146
176176msgid "Emergency Call"
177177msgstr ""
178178
@@ -213,6 +213,15 @@ msgstr ""
213213msgid "Search"
214214msgstr "Meklēt"
215215
216+#: plugins/Unity/Launcher/launcheritem.cpp:43
217+#: plugins/Unity/Launcher/launcheritem.cpp:73
218+msgid "Lock to Launcher"
219+msgstr ""
220+
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Unlock from Launcher"
223+msgstr ""
224+
216225#: plugins/Unity/scope.cpp:408
217226msgid "Sorry, there is nothing that matches your search."
218227msgstr "Diemžēl nekas neatbilst jūsu meklētajam."
@@ -221,7 +230,7 @@ msgstr "Diemžēl nekas neatbilst jūsu meklētajam."
221230msgid "All"
222231msgstr ""
223232
224−#: Shell.qml:438
233+#: Shell.qml:441
225234#, qt-format
226235msgid "Please enter %1"
227236msgstr ""
po/my.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-10-09 11:35+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: 2013-11-08 06:37+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "ဝီကီပီဒီးယား"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr "မိတ်ဆက်ကိုကျော်မည်"
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr "မကြာသေးခင်က ရှာဖွေခြင်း"
138138
@@ -152,7 +152,7 @@ msgid_plural "%1 reviews"
152152msgstr[0] ""
153153msgstr[1] ""
154154
155−#: Dash/Apps/AppPreview.qml:126
155+#: Dash/Apps/AppPreview.qml:135
156156msgid "Rate this"
157157msgstr "ဒီဟာကိုအမှတ်ပေးမည်"
158158
@@ -172,7 +172,7 @@ msgstr "ပို့မည်"
172172msgid "Comments:"
173173msgstr "မှတ်ချက်များ-"
174174
175−#: Greeter/Lockscreen.qml:142
175+#: Greeter/Lockscreen.qml:146
176176msgid "Emergency Call"
177177msgstr ""
178178
@@ -213,6 +213,15 @@ msgstr ""
213213msgid "Search"
214214msgstr "ရှာဖွေ"
215215
216+#: plugins/Unity/Launcher/launcheritem.cpp:43
217+#: plugins/Unity/Launcher/launcheritem.cpp:73
218+msgid "Lock to Launcher"
219+msgstr ""
220+
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Unlock from Launcher"
223+msgstr ""
224+
216225#: plugins/Unity/scope.cpp:408
217226msgid "Sorry, there is nothing that matches your search."
218227msgstr "ဆောရီး၊ သင်၏ရှာဖွေမူနှင့်တူညီတာဘာမှမရှိပါ။"
@@ -221,7 +230,7 @@ msgstr "ဆောရီး၊ သင်၏ရှာဖွေမူနှင့
221230msgid "All"
222231msgstr ""
223232
224−#: Shell.qml:438
233+#: Shell.qml:441
225234#, qt-format
226235msgid "Please enter %1"
227236msgstr ""
po/nb.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-06-27 07:02+0000\n"
1212"Last-Translator: Joakim Langvand <jlangvand@gmail.com>\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: 2013-11-08 06:37+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr "Siste søk"
138138
@@ -152,7 +152,7 @@ msgid_plural "%1 reviews"
152152msgstr[0] ""
153153msgstr[1] ""
154154
155−#: Dash/Apps/AppPreview.qml:126
155+#: Dash/Apps/AppPreview.qml:135
156156msgid "Rate this"
157157msgstr ""
158158
@@ -172,7 +172,7 @@ msgstr ""
172172msgid "Comments:"
173173msgstr ""
174174
175−#: Greeter/Lockscreen.qml:142
175+#: Greeter/Lockscreen.qml:146
176176msgid "Emergency Call"
177177msgstr ""
178178
@@ -213,6 +213,15 @@ msgstr ""
213213msgid "Search"
214214msgstr "Søk"
215215
216+#: plugins/Unity/Launcher/launcheritem.cpp:43
217+#: plugins/Unity/Launcher/launcheritem.cpp:73
218+msgid "Lock to Launcher"
219+msgstr ""
220+
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Unlock from Launcher"
223+msgstr ""
224+
216225#: plugins/Unity/scope.cpp:408
217226msgid "Sorry, there is nothing that matches your search."
218227msgstr "Søket ga ingen treff."
@@ -221,7 +230,7 @@ msgstr "Søket ga ingen treff."
221230msgid "All"
222231msgstr ""
223232
224−#: Shell.qml:438
233+#: Shell.qml:441
225234#, qt-format
226235msgid "Please enter %1"
227236msgstr ""
po/nl.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-06-27 07:19+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\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: 2013-11-08 06:37+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr "Recente zoekopdrachten"
138138
@@ -152,7 +152,7 @@ msgid_plural "%1 reviews"
152152msgstr[0] ""
153153msgstr[1] ""
154154
155−#: Dash/Apps/AppPreview.qml:126
155+#: Dash/Apps/AppPreview.qml:135
156156msgid "Rate this"
157157msgstr ""
158158
@@ -172,7 +172,7 @@ msgstr ""
172172msgid "Comments:"
173173msgstr ""
174174
175−#: Greeter/Lockscreen.qml:142
175+#: Greeter/Lockscreen.qml:146
176176msgid "Emergency Call"
177177msgstr ""
178178
@@ -213,6 +213,15 @@ msgstr ""
213213msgid "Search"
214214msgstr "Zoeken"
215215
216+#: plugins/Unity/Launcher/launcheritem.cpp:43
217+#: plugins/Unity/Launcher/launcheritem.cpp:73
218+msgid "Lock to Launcher"
219+msgstr ""
220+
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Unlock from Launcher"
223+msgstr ""
224+
216225#: plugins/Unity/scope.cpp:408
217226msgid "Sorry, there is nothing that matches your search."
218227msgstr "Er is helaas niets dat met uw zoekopdracht overeenkomt."
@@ -221,7 +230,7 @@ msgstr "Er is helaas niets dat met uw zoekopdracht overeenkomt."
221230msgid "All"
222231msgstr ""
223232
224−#: Shell.qml:438
233+#: Shell.qml:441
225234#, qt-format
226235msgid "Please enter %1"
227236msgstr ""
po/pl.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-10-13 13:44+0000\n"
1212"Last-Translator: GTriderXC <gtriderxc@yahoo.com>\n"
1313"Language-Team: Polish <pl@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
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: 2013-11-08 06:38+0000\n"
20−"X-Generator: Launchpad (build 16820)\n"
19+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
20+"X-Generator: Launchpad (build 16831)\n"
2121
2222#: Applications/applications.js:23
2323msgid "Phone"
@@ -87,7 +87,7 @@ msgstr "Wikipedia"
8787msgid "YouTube"
8888msgstr "YouTube"
8989
90−#: Components/EdgeDemoOverlay.qml:149
90+#: Components/EdgeDemoOverlay.qml:151
9191msgid "Skip intro"
9292msgstr "Pomiń intro"
9393
@@ -137,7 +137,7 @@ msgstr ""
137137"Polecenia aktywatorów krawędzi ekranu zostały opanowane<br><br>Dotknij "
138138"gdziekolwiek aby kontynuować"
139139
140−#: Components/PageHeader.qml:341
140+#: Components/PageHeader.qml:345
141141msgid "Recent searches"
142142msgstr "Ostatnie wyszukiwania"
143143
@@ -158,7 +158,7 @@ msgstr[0] "%1 opinia"
158158msgstr[1] "%1 opinie"
159159msgstr[2] "%1 opinii"
160160
161−#: Dash/Apps/AppPreview.qml:126
161+#: Dash/Apps/AppPreview.qml:135
162162msgid "Rate this"
163163msgstr "Oceń to"
164164
@@ -178,7 +178,7 @@ msgstr "Wyślij"
178178msgid "Comments:"
179179msgstr "Komentarze:"
180180
181−#: Greeter/Lockscreen.qml:142
181+#: Greeter/Lockscreen.qml:146
182182msgid "Emergency Call"
183183msgstr "Telefon ratunkowy"
184184
@@ -219,6 +219,15 @@ msgstr ""
219219msgid "Search"
220220msgstr "Szukaj"
221221
222+#: plugins/Unity/Launcher/launcheritem.cpp:43
223+#: plugins/Unity/Launcher/launcheritem.cpp:73
224+msgid "Lock to Launcher"
225+msgstr ""
226+
227+#: plugins/Unity/Launcher/launcheritem.cpp:73
228+msgid "Unlock from Launcher"
229+msgstr ""
230+
222231#: plugins/Unity/scope.cpp:408
223232msgid "Sorry, there is nothing that matches your search."
224233msgstr "Nie znaleziono pasujących wyników."
@@ -227,7 +236,7 @@ msgstr "Nie znaleziono pasujących wyników."
227236msgid "All"
228237msgstr "Wszystko"
229238
230−#: Shell.qml:438
239+#: Shell.qml:441
231240#, qt-format
232241msgid "Please enter %1"
233242msgstr "Wprowadź %1"
po/pt_BR.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-10-01 13:05+0000\n"
1212"Last-Translator: Rafael Neri <Unknown>\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: 2013-11-08 06:38+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "Wikipédia"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr "Pular introdução"
9292
@@ -134,7 +134,7 @@ msgid ""
134134"phone<br><br>Tap anywhere to start"
135135msgstr ""
136136
137−#: Components/PageHeader.qml:341
137+#: Components/PageHeader.qml:345
138138msgid "Recent searches"
139139msgstr "Pesquisas recentes"
140140
@@ -154,7 +154,7 @@ msgid_plural "%1 reviews"
154154msgstr[0] "%1 análise"
155155msgstr[1] "%1 análises"
156156
157−#: Dash/Apps/AppPreview.qml:126
157+#: Dash/Apps/AppPreview.qml:135
158158msgid "Rate this"
159159msgstr "Avaliar isto"
160160
@@ -174,7 +174,7 @@ msgstr "Enviar"
174174msgid "Comments:"
175175msgstr "Comentários:"
176176
177−#: Greeter/Lockscreen.qml:142
177+#: Greeter/Lockscreen.qml:146
178178msgid "Emergency Call"
179179msgstr "Chamada de emergência"
180180
@@ -215,6 +215,15 @@ msgstr ""
215215msgid "Search"
216216msgstr "Pesquisar"
217217
218+#: plugins/Unity/Launcher/launcheritem.cpp:43
219+#: plugins/Unity/Launcher/launcheritem.cpp:73
220+msgid "Lock to Launcher"
221+msgstr ""
222+
223+#: plugins/Unity/Launcher/launcheritem.cpp:73
224+msgid "Unlock from Launcher"
225+msgstr ""
226+
218227#: plugins/Unity/scope.cpp:408
219228msgid "Sorry, there is nothing that matches your search."
220229msgstr "Desculpe, não há nada que corresponda à sua pesquisa."
@@ -223,7 +232,7 @@ msgstr "Desculpe, não há nada que corresponda à sua pesquisa."
223232msgid "All"
224233msgstr ""
225234
226−#: Shell.qml:438
235+#: Shell.qml:441
227236#, qt-format
228237msgid "Please enter %1"
229238msgstr "Por favor, digite %1"
po/ro.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-06-27 07:53+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Romanian <ro@li.org>\n"
@@ -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: 2013-11-08 06:38+0000\n"
20−"X-Generator: Launchpad (build 16820)\n"
19+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
20+"X-Generator: Launchpad (build 16831)\n"
2121
2222#: Applications/applications.js:23
2323msgid "Phone"
@@ -87,7 +87,7 @@ msgstr ""
8787msgid "YouTube"
8888msgstr ""
8989
90−#: Components/EdgeDemoOverlay.qml:149
90+#: Components/EdgeDemoOverlay.qml:151
9191msgid "Skip intro"
9292msgstr ""
9393
@@ -133,7 +133,7 @@ msgid ""
133133"phone<br><br>Tap anywhere to start"
134134msgstr ""
135135
136−#: Components/PageHeader.qml:341
136+#: Components/PageHeader.qml:345
137137msgid "Recent searches"
138138msgstr "Căutări recente"
139139
@@ -153,7 +153,7 @@ msgid_plural "%1 reviews"
153153msgstr[0] ""
154154msgstr[1] ""
155155
156−#: Dash/Apps/AppPreview.qml:126
156+#: Dash/Apps/AppPreview.qml:135
157157msgid "Rate this"
158158msgstr ""
159159
@@ -173,7 +173,7 @@ msgstr ""
173173msgid "Comments:"
174174msgstr ""
175175
176−#: Greeter/Lockscreen.qml:142
176+#: Greeter/Lockscreen.qml:146
177177msgid "Emergency Call"
178178msgstr ""
179179
@@ -214,6 +214,15 @@ msgstr ""
214214msgid "Search"
215215msgstr "Căutare"
216216
217+#: plugins/Unity/Launcher/launcheritem.cpp:43
218+#: plugins/Unity/Launcher/launcheritem.cpp:73
219+msgid "Lock to Launcher"
220+msgstr ""
221+
222+#: plugins/Unity/Launcher/launcheritem.cpp:73
223+msgid "Unlock from Launcher"
224+msgstr ""
225+
217226#: plugins/Unity/scope.cpp:408
218227msgid "Sorry, there is nothing that matches your search."
219228msgstr ""
@@ -223,7 +232,7 @@ msgstr ""
223232msgid "All"
224233msgstr ""
225234
226−#: Shell.qml:438
235+#: Shell.qml:441
227236#, qt-format
228237msgid "Please enter %1"
229238msgstr ""
po/ru.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-10-01 05:55+0000\n"
1212"Last-Translator: Zonov Roman <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: 2013-11-08 06:38+0000\n"
20−"X-Generator: Launchpad (build 16820)\n"
19+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
20+"X-Generator: Launchpad (build 16831)\n"
2121
2222#: Applications/applications.js:23
2323msgid "Phone"
@@ -87,7 +87,7 @@ msgstr "Википедия"
8787msgid "YouTube"
8888msgstr "YouTube"
8989
90−#: Components/EdgeDemoOverlay.qml:149
90+#: Components/EdgeDemoOverlay.qml:151
9191msgid "Skip intro"
9292msgstr "Пропустить обучение"
9393
@@ -138,7 +138,7 @@ msgid ""
138138"phone<br><br>Tap anywhere to start"
139139msgstr ""
140140
141−#: Components/PageHeader.qml:341
141+#: Components/PageHeader.qml:345
142142msgid "Recent searches"
143143msgstr "Последние поисковые запросы"
144144
@@ -157,7 +157,7 @@ msgid "%1 review"
157157msgid_plural "%1 reviews"
158158msgstr[0] "%1 отзыв"
159159
160−#: Dash/Apps/AppPreview.qml:126
160+#: Dash/Apps/AppPreview.qml:135
161161msgid "Rate this"
162162msgstr "Оцените это"
163163
@@ -177,7 +177,7 @@ msgstr "Отправить"
177177msgid "Comments:"
178178msgstr "Комментарии:"
179179
180−#: Greeter/Lockscreen.qml:142
180+#: Greeter/Lockscreen.qml:146
181181msgid "Emergency Call"
182182msgstr "Экстренный вызов"
183183
@@ -218,6 +218,15 @@ msgstr ""
218218msgid "Search"
219219msgstr "Поиск"
220220
221+#: plugins/Unity/Launcher/launcheritem.cpp:43
222+#: plugins/Unity/Launcher/launcheritem.cpp:73
223+msgid "Lock to Launcher"
224+msgstr ""
225+
226+#: plugins/Unity/Launcher/launcheritem.cpp:73
227+msgid "Unlock from Launcher"
228+msgstr ""
229+
221230#: plugins/Unity/scope.cpp:408
222231msgid "Sorry, there is nothing that matches your search."
223232msgstr "Извините, поиск не дал результатов."
@@ -226,7 +235,7 @@ msgstr "Извините, поиск не дал результатов."
226235msgid "All"
227236msgstr ""
228237
229−#: Shell.qml:438
238+#: Shell.qml:441
230239#, qt-format
231240msgid "Please enter %1"
232241msgstr "Пожалуйста, введите %1"
po/shn.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-10-07 11:46+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Shan <shn@li.org>\n"
@@ -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: 2013-11-08 06:38+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr ""
138138
@@ -152,7 +152,7 @@ msgid_plural "%1 reviews"
152152msgstr[0] ""
153153msgstr[1] ""
154154
155−#: Dash/Apps/AppPreview.qml:126
155+#: Dash/Apps/AppPreview.qml:135
156156msgid "Rate this"
157157msgstr ""
158158
@@ -172,7 +172,7 @@ msgstr ""
172172msgid "Comments:"
173173msgstr ""
174174
175−#: Greeter/Lockscreen.qml:142
175+#: Greeter/Lockscreen.qml:146
176176msgid "Emergency Call"
177177msgstr ""
178178
@@ -213,6 +213,15 @@ msgstr ""
213213msgid "Search"
214214msgstr ""
215215
216+#: plugins/Unity/Launcher/launcheritem.cpp:43
217+#: plugins/Unity/Launcher/launcheritem.cpp:73
218+msgid "Lock to Launcher"
219+msgstr ""
220+
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Unlock from Launcher"
223+msgstr ""
224+
216225#: plugins/Unity/scope.cpp:408
217226msgid "Sorry, there is nothing that matches your search."
218227msgstr ""
@@ -221,7 +230,7 @@ msgstr ""
221230msgid "All"
222231msgstr ""
223232
224−#: Shell.qml:438
233+#: Shell.qml:441
225234#, qt-format
226235msgid "Please enter %1"
227236msgstr ""
po/si.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-06-26 22:36+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Sinhalese <si@li.org>\n"
@@ -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: 2013-11-08 06:38+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr ""
138138
@@ -152,7 +152,7 @@ msgid_plural "%1 reviews"
152152msgstr[0] ""
153153msgstr[1] ""
154154
155−#: Dash/Apps/AppPreview.qml:126
155+#: Dash/Apps/AppPreview.qml:135
156156msgid "Rate this"
157157msgstr ""
158158
@@ -172,7 +172,7 @@ msgstr ""
172172msgid "Comments:"
173173msgstr ""
174174
175−#: Greeter/Lockscreen.qml:142
175+#: Greeter/Lockscreen.qml:146
176176msgid "Emergency Call"
177177msgstr ""
178178
@@ -213,6 +213,15 @@ msgstr ""
213213msgid "Search"
214214msgstr ""
215215
216+#: plugins/Unity/Launcher/launcheritem.cpp:43
217+#: plugins/Unity/Launcher/launcheritem.cpp:73
218+msgid "Lock to Launcher"
219+msgstr ""
220+
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Unlock from Launcher"
223+msgstr ""
224+
216225#: plugins/Unity/scope.cpp:408
217226msgid "Sorry, there is nothing that matches your search."
218227msgstr ""
@@ -221,7 +230,7 @@ msgstr ""
221230msgid "All"
222231msgstr ""
223232
224−#: Shell.qml:438
233+#: Shell.qml:441
225234#, qt-format
226235msgid "Please enter %1"
227236msgstr ""
po/sl.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-10-02 10:55+0000\n"
1212"Last-Translator: Damir Jerovšek <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: 2013-11-08 06:38+0000\n"
20−"X-Generator: Launchpad (build 16820)\n"
19+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
20+"X-Generator: Launchpad (build 16831)\n"
2121
2222#: Applications/applications.js:23
2323msgid "Phone"
@@ -87,7 +87,7 @@ msgstr "Wikipedija"
8787msgid "YouTube"
8888msgstr "YouTube"
8989
90−#: Components/EdgeDemoOverlay.qml:149
90+#: Components/EdgeDemoOverlay.qml:151
9191msgid "Skip intro"
9292msgstr "Preskoči uvod"
9393
@@ -137,7 +137,7 @@ msgstr ""
137137"Sedaj ste osvojili poteze robov ter lahko začnete uporabljati "
138138"telefon<br><br>Tapnite kjerkoli na začetek"
139139
140−#: Components/PageHeader.qml:341
140+#: Components/PageHeader.qml:345
141141msgid "Recent searches"
142142msgstr "Nedavna iskanja"
143143
@@ -159,7 +159,7 @@ msgstr[1] "%1 ocena"
159159msgstr[2] "%1 oceni"
160160msgstr[3] "%1 ocene"
161161
162−#: Dash/Apps/AppPreview.qml:126
162+#: Dash/Apps/AppPreview.qml:135
163163msgid "Rate this"
164164msgstr "Ocenite"
165165
@@ -179,7 +179,7 @@ msgstr "Pošlji"
179179msgid "Comments:"
180180msgstr "Opombe:"
181181
182−#: Greeter/Lockscreen.qml:142
182+#: Greeter/Lockscreen.qml:146
183183msgid "Emergency Call"
184184msgstr "Klic v sili"
185185
@@ -220,6 +220,15 @@ msgstr ""
220220msgid "Search"
221221msgstr "Iskanje"
222222
223+#: plugins/Unity/Launcher/launcheritem.cpp:43
224+#: plugins/Unity/Launcher/launcheritem.cpp:73
225+msgid "Lock to Launcher"
226+msgstr ""
227+
228+#: plugins/Unity/Launcher/launcheritem.cpp:73
229+msgid "Unlock from Launcher"
230+msgstr ""
231+
223232#: plugins/Unity/scope.cpp:408
224233msgid "Sorry, there is nothing that matches your search."
225234msgstr "Nič se ne ujema z vašim iskalnim nizom."
@@ -228,7 +237,7 @@ msgstr "Nič se ne ujema z vašim iskalnim nizom."
228237msgid "All"
229238msgstr "Vse"
230239
231−#: Shell.qml:438
240+#: Shell.qml:441
232241#, qt-format
233242msgid "Please enter %1"
234243msgstr "Vnesite %1"
po/sr.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-06-27 09:19+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Serbian <sr@li.org>\n"
@@ -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: 2013-11-08 06:38+0000\n"
20−"X-Generator: Launchpad (build 16820)\n"
19+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
20+"X-Generator: Launchpad (build 16831)\n"
2121
2222#: Applications/applications.js:23
2323msgid "Phone"
@@ -87,7 +87,7 @@ msgstr ""
8787msgid "YouTube"
8888msgstr ""
8989
90−#: Components/EdgeDemoOverlay.qml:149
90+#: Components/EdgeDemoOverlay.qml:151
9191msgid "Skip intro"
9292msgstr ""
9393
@@ -133,7 +133,7 @@ msgid ""
133133"phone<br><br>Tap anywhere to start"
134134msgstr ""
135135
136−#: Components/PageHeader.qml:341
136+#: Components/PageHeader.qml:345
137137msgid "Recent searches"
138138msgstr "Скорашње претраге"
139139
@@ -153,7 +153,7 @@ msgid_plural "%1 reviews"
153153msgstr[0] ""
154154msgstr[1] ""
155155
156−#: Dash/Apps/AppPreview.qml:126
156+#: Dash/Apps/AppPreview.qml:135
157157msgid "Rate this"
158158msgstr ""
159159
@@ -173,7 +173,7 @@ msgstr ""
173173msgid "Comments:"
174174msgstr ""
175175
176−#: Greeter/Lockscreen.qml:142
176+#: Greeter/Lockscreen.qml:146
177177msgid "Emergency Call"
178178msgstr ""
179179
@@ -214,6 +214,15 @@ msgstr ""
214214msgid "Search"
215215msgstr "Претрага"
216216
217+#: plugins/Unity/Launcher/launcheritem.cpp:43
218+#: plugins/Unity/Launcher/launcheritem.cpp:73
219+msgid "Lock to Launcher"
220+msgstr ""
221+
222+#: plugins/Unity/Launcher/launcheritem.cpp:73
223+msgid "Unlock from Launcher"
224+msgstr ""
225+
217226#: plugins/Unity/scope.cpp:408
218227msgid "Sorry, there is nothing that matches your search."
219228msgstr "Нажалост, претрага није наишла на икакво подударање."
@@ -222,7 +231,7 @@ msgstr "Нажалост, претрага није наишла на икакв
222231msgid "All"
223232msgstr ""
224233
225−#: Shell.qml:438
234+#: Shell.qml:441
226235#, qt-format
227236msgid "Please enter %1"
228237msgstr ""
po/sv.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-06-26 22:36+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Swedish <sv@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: 2013-11-08 06:38+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr ""
138138
@@ -152,7 +152,7 @@ msgid_plural "%1 reviews"
152152msgstr[0] ""
153153msgstr[1] ""
154154
155−#: Dash/Apps/AppPreview.qml:126
155+#: Dash/Apps/AppPreview.qml:135
156156msgid "Rate this"
157157msgstr ""
158158
@@ -172,7 +172,7 @@ msgstr ""
172172msgid "Comments:"
173173msgstr ""
174174
175−#: Greeter/Lockscreen.qml:142
175+#: Greeter/Lockscreen.qml:146
176176msgid "Emergency Call"
177177msgstr ""
178178
@@ -213,6 +213,15 @@ msgstr ""
213213msgid "Search"
214214msgstr ""
215215
216+#: plugins/Unity/Launcher/launcheritem.cpp:43
217+#: plugins/Unity/Launcher/launcheritem.cpp:73
218+msgid "Lock to Launcher"
219+msgstr ""
220+
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Unlock from Launcher"
223+msgstr ""
224+
216225#: plugins/Unity/scope.cpp:408
217226msgid "Sorry, there is nothing that matches your search."
218227msgstr ""
@@ -221,7 +230,7 @@ msgstr ""
221230msgid "All"
222231msgstr ""
223232
224−#: Shell.qml:438
233+#: Shell.qml:441
225234#, qt-format
226235msgid "Please enter %1"
227236msgstr ""
po/ta.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-10-24 11:36+0000\n"
1212"Last-Translator: Thangamani Arun - தங்கமணி அருண் <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: 2013-11-08 06:38+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020"Language: ta\n"
2121
2222#: Applications/applications.js:23
@@ -87,7 +87,7 @@ msgstr "விக்கிப்பீடியா"
8787msgid "YouTube"
8888msgstr "யூட்யுப்"
8989
90−#: Components/EdgeDemoOverlay.qml:149
90+#: Components/EdgeDemoOverlay.qml:151
9191msgid "Skip intro"
9292msgstr "அறிமுகத்தை தவிர்"
9393
@@ -138,7 +138,7 @@ msgstr ""
138138"பயன்படுத்த தொடங்கவும் <br> <br>தட்டுவதன் மூலம் எங்க வேண்டுமானாலும் "
139139"தொடங்கலாம்."
140140
141−#: Components/PageHeader.qml:341
141+#: Components/PageHeader.qml:345
142142msgid "Recent searches"
143143msgstr "கடையாக தேடப்பட்டவைகள்"
144144
@@ -158,7 +158,7 @@ msgid_plural "%1 reviews"
158158msgstr[0] "%1 பரிசீலனை"
159159msgstr[1] "%1 பரிசீலனைகள்"
160160
161−#: Dash/Apps/AppPreview.qml:126
161+#: Dash/Apps/AppPreview.qml:135
162162msgid "Rate this"
163163msgstr "இதை மதிப்பிடு"
164164
@@ -178,7 +178,7 @@ msgstr "அனுப்பு"
178178msgid "Comments:"
179179msgstr "கருத்துகள்:"
180180
181−#: Greeter/Lockscreen.qml:142
181+#: Greeter/Lockscreen.qml:146
182182msgid "Emergency Call"
183183msgstr "அவசர அழைப்பு"
184184
@@ -219,6 +219,15 @@ msgstr ""
219219msgid "Search"
220220msgstr "தெடு"
221221
222+#: plugins/Unity/Launcher/launcheritem.cpp:43
223+#: plugins/Unity/Launcher/launcheritem.cpp:73
224+msgid "Lock to Launcher"
225+msgstr ""
226+
227+#: plugins/Unity/Launcher/launcheritem.cpp:73
228+msgid "Unlock from Launcher"
229+msgstr ""
230+
222231#: plugins/Unity/scope.cpp:408
223232msgid "Sorry, there is nothing that matches your search."
224233msgstr "மன்னிக்கவும், உங்களுடைய தேடலுக்கு தகுந்த பொருத்தம் கிடைக்கவில்லை."
@@ -227,7 +236,7 @@ msgstr "மன்னிக்கவும், உங்களுடைய தே
227236msgid "All"
228237msgstr "அனைத்தும்"
229238
230−#: Shell.qml:438
239+#: Shell.qml:441
231240#, qt-format
232241msgid "Please enter %1"
233242msgstr "தயவுச்செய்து %1 உள்ளிடு"
po/te.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-06-27 09:57+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Telugu <te@li.org>\n"
@@ -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: 2013-11-08 06:38+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr ""
138138
@@ -152,7 +152,7 @@ msgid_plural "%1 reviews"
152152msgstr[0] ""
153153msgstr[1] ""
154154
155−#: Dash/Apps/AppPreview.qml:126
155+#: Dash/Apps/AppPreview.qml:135
156156msgid "Rate this"
157157msgstr ""
158158
@@ -172,7 +172,7 @@ msgstr ""
172172msgid "Comments:"
173173msgstr ""
174174
175−#: Greeter/Lockscreen.qml:142
175+#: Greeter/Lockscreen.qml:146
176176msgid "Emergency Call"
177177msgstr ""
178178
@@ -213,6 +213,15 @@ msgstr ""
213213msgid "Search"
214214msgstr ""
215215
216+#: plugins/Unity/Launcher/launcheritem.cpp:43
217+#: plugins/Unity/Launcher/launcheritem.cpp:73
218+msgid "Lock to Launcher"
219+msgstr ""
220+
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Unlock from Launcher"
223+msgstr ""
224+
216225#: plugins/Unity/scope.cpp:408
217226msgid "Sorry, there is nothing that matches your search."
218227msgstr ""
@@ -221,7 +230,7 @@ msgstr ""
221230msgid "All"
222231msgstr ""
223232
224−#: Shell.qml:438
233+#: Shell.qml:441
225234#, qt-format
226235msgid "Please enter %1"
227236msgstr ""
po/tr.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-10-01 13:21+0000\n"
1212"Last-Translator: Volkan Gezer <Unknown>\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: 2013-11-08 06:38+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "Vikipedi"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr "İntro'yu geç"
9292
@@ -133,7 +133,7 @@ msgid ""
133133"phone<br><br>Tap anywhere to start"
134134msgstr ""
135135
136−#: Components/PageHeader.qml:341
136+#: Components/PageHeader.qml:345
137137msgid "Recent searches"
138138msgstr "Son Arananlar"
139139
@@ -153,7 +153,7 @@ msgid_plural "%1 reviews"
153153msgstr[0] "%1 inceleme"
154154msgstr[1] "%1 inceleme"
155155
156−#: Dash/Apps/AppPreview.qml:126
156+#: Dash/Apps/AppPreview.qml:135
157157msgid "Rate this"
158158msgstr "Oyla"
159159
@@ -173,7 +173,7 @@ msgstr "Gönder"
173173msgid "Comments:"
174174msgstr "Yorumlar:"
175175
176−#: Greeter/Lockscreen.qml:142
176+#: Greeter/Lockscreen.qml:146
177177msgid "Emergency Call"
178178msgstr "Acil Arama"
179179
@@ -214,6 +214,15 @@ msgstr ""
214214msgid "Search"
215215msgstr "Ara"
216216
217+#: plugins/Unity/Launcher/launcheritem.cpp:43
218+#: plugins/Unity/Launcher/launcheritem.cpp:73
219+msgid "Lock to Launcher"
220+msgstr ""
221+
222+#: plugins/Unity/Launcher/launcheritem.cpp:73
223+msgid "Unlock from Launcher"
224+msgstr ""
225+
217226#: plugins/Unity/scope.cpp:408
218227msgid "Sorry, there is nothing that matches your search."
219228msgstr "Üzgünüz, aramanızla eşleşen hiçbir şey yok."
@@ -222,7 +231,7 @@ msgstr "Üzgünüz, aramanızla eşleşen hiçbir şey yok."
222231msgid "All"
223232msgstr ""
224233
225−#: Shell.qml:438
234+#: Shell.qml:441
226235#, qt-format
227236msgid "Please enter %1"
228237msgstr "Lütfen %1 girin"
po/ug.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-10-09 22:38+0000\n"
1212"Last-Translator: Gheyret T.Kenji <Unknown>\n"
1313"Language-Team: Uyghur <ug@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: 2013-11-08 06:38+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "ۋىكىپېدىيە"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr "يېقىنقى ئىزدەشلەر"
138138
@@ -151,7 +151,7 @@ msgid "%1 review"
151151msgid_plural "%1 reviews"
152152msgstr[0] "%1 باھا"
153153
154−#: Dash/Apps/AppPreview.qml:126
154+#: Dash/Apps/AppPreview.qml:135
155155msgid "Rate this"
156156msgstr ""
157157
@@ -171,7 +171,7 @@ msgstr "ئەۋەت"
171171msgid "Comments:"
172172msgstr "ئىنكاس:"
173173
174−#: Greeter/Lockscreen.qml:142
174+#: Greeter/Lockscreen.qml:146
175175msgid "Emergency Call"
176176msgstr ""
177177
@@ -212,6 +212,15 @@ msgstr ""
212212msgid "Search"
213213msgstr "ئىزدە"
214214
215+#: plugins/Unity/Launcher/launcheritem.cpp:43
216+#: plugins/Unity/Launcher/launcheritem.cpp:73
217+msgid "Lock to Launcher"
218+msgstr ""
219+
220+#: plugins/Unity/Launcher/launcheritem.cpp:73
221+msgid "Unlock from Launcher"
222+msgstr ""
223+
215224#: plugins/Unity/scope.cpp:408
216225msgid "Sorry, there is nothing that matches your search."
217226msgstr "كەچۈرۈڭ، ئىزدىگىنىڭىزگە ماس نەتىجە تېپىلمىدى."
@@ -220,7 +229,7 @@ msgstr "كەچۈرۈڭ، ئىزدىگىنىڭىزگە ماس نەتىجە تېپ
220229msgid "All"
221230msgstr "ھەممىسى"
222231
223−#: Shell.qml:438
232+#: Shell.qml:441
224233#, qt-format
225234msgid "Please enter %1"
226235msgstr "%1 نى كىرگۈزۈڭ"
po/uk.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-10-19 16:44+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: 2013-11-08 06:38+0000\n"
20−"X-Generator: Launchpad (build 16820)\n"
19+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
20+"X-Generator: Launchpad (build 16831)\n"
2121
2222#: Applications/applications.js:23
2323msgid "Phone"
@@ -87,7 +87,7 @@ msgstr "Вікіпедія"
8787msgid "YouTube"
8888msgstr "YouTube"
8989
90−#: Components/EdgeDemoOverlay.qml:149
90+#: Components/EdgeDemoOverlay.qml:151
9191msgid "Skip intro"
9292msgstr "Пропустити вступ"
9393
@@ -138,7 +138,7 @@ msgstr ""
138138"Тепер жести налаштовано, ви можете почати користуватися "
139139"телефоном.<br><br>Натисніть у довільному місці екрана."
140140
141−#: Components/PageHeader.qml:341
141+#: Components/PageHeader.qml:345
142142msgid "Recent searches"
143143msgstr "Нещодавні пошуки"
144144
@@ -159,7 +159,7 @@ msgstr[0] "%1 рецензія"
159159msgstr[1] "%1 рецензії"
160160msgstr[2] "%1 рецензій"
161161
162−#: Dash/Apps/AppPreview.qml:126
162+#: Dash/Apps/AppPreview.qml:135
163163msgid "Rate this"
164164msgstr "Оцінити"
165165
@@ -179,7 +179,7 @@ msgstr "Надіслати"
179179msgid "Comments:"
180180msgstr "Коментарі:"
181181
182−#: Greeter/Lockscreen.qml:142
182+#: Greeter/Lockscreen.qml:146
183183msgid "Emergency Call"
184184msgstr "Терміновий виклик"
185185
@@ -220,6 +220,15 @@ msgstr ""
220220msgid "Search"
221221msgstr "Пошук"
222222
223+#: plugins/Unity/Launcher/launcheritem.cpp:43
224+#: plugins/Unity/Launcher/launcheritem.cpp:73
225+msgid "Lock to Launcher"
226+msgstr ""
227+
228+#: plugins/Unity/Launcher/launcheritem.cpp:73
229+msgid "Unlock from Launcher"
230+msgstr ""
231+
223232#: plugins/Unity/scope.cpp:408
224233msgid "Sorry, there is nothing that matches your search."
225234msgstr "Вибачте, для вказаних вами ключових слів нічого не знайдено."
@@ -228,7 +237,7 @@ msgstr "Вибачте, для вказаних вами ключових слі
228237msgid "All"
229238msgstr "Усе"
230239
231−#: Shell.qml:438
240+#: Shell.qml:441
232241#, qt-format
233242msgid "Please enter %1"
234243msgstr "Будь ласка, введіть %1"
po/unity8.pot+15−6
@@ -8,7 +8,7 @@ msgid ""
88msgstr ""
99"Project-Id-Version: unity8\n"
1010"Report-Msgid-Bugs-To: \n"
11−"POT-Creation-Date: 2013-11-05 17:53+0100\n"
11+"POT-Creation-Date: 2013-11-12 16:10+0100\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"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr ""
138138
@@ -152,7 +152,7 @@ msgid_plural "%1 reviews"
152152msgstr[0] ""
153153msgstr[1] ""
154154
155−#: Dash/Apps/AppPreview.qml:126
155+#: Dash/Apps/AppPreview.qml:135
156156msgid "Rate this"
157157msgstr ""
158158
@@ -172,7 +172,7 @@ msgstr ""
172172msgid "Comments:"
173173msgstr ""
174174
175−#: Greeter/Lockscreen.qml:142
175+#: Greeter/Lockscreen.qml:146
176176msgid "Emergency Call"
177177msgstr ""
178178
@@ -213,6 +213,15 @@ msgstr ""
213213msgid "Search"
214214msgstr ""
215215
216+#: plugins/Unity/Launcher/launcheritem.cpp:43
217+#: plugins/Unity/Launcher/launcheritem.cpp:73
218+msgid "Lock to Launcher"
219+msgstr ""
220+
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Unlock from Launcher"
223+msgstr ""
224+
216225#: plugins/Unity/scope.cpp:408
217226msgid "Sorry, there is nothing that matches your search."
218227msgstr ""
@@ -221,7 +230,7 @@ msgstr ""
221230msgid "All"
222231msgstr ""
223232
224−#: Shell.qml:438
233+#: Shell.qml:441
225234#, qt-format
226235msgid "Please enter %1"
227236msgstr ""
po/xh.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-09-28 13:20+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Xhosa <xh@li.org>\n"
@@ -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: 2013-11-08 06:38+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr ""
138138
@@ -152,7 +152,7 @@ msgid_plural "%1 reviews"
152152msgstr[0] ""
153153msgstr[1] ""
154154
155−#: Dash/Apps/AppPreview.qml:126
155+#: Dash/Apps/AppPreview.qml:135
156156msgid "Rate this"
157157msgstr ""
158158
@@ -172,7 +172,7 @@ msgstr ""
172172msgid "Comments:"
173173msgstr ""
174174
175−#: Greeter/Lockscreen.qml:142
175+#: Greeter/Lockscreen.qml:146
176176msgid "Emergency Call"
177177msgstr ""
178178
@@ -213,6 +213,15 @@ msgstr ""
213213msgid "Search"
214214msgstr ""
215215
216+#: plugins/Unity/Launcher/launcheritem.cpp:43
217+#: plugins/Unity/Launcher/launcheritem.cpp:73
218+msgid "Lock to Launcher"
219+msgstr ""
220+
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Unlock from Launcher"
223+msgstr ""
224+
216225#: plugins/Unity/scope.cpp:408
217226msgid "Sorry, there is nothing that matches your search."
218227msgstr ""
@@ -221,7 +230,7 @@ msgstr ""
221230msgid "All"
222231msgstr ""
223232
224−#: Shell.qml:438
233+#: Shell.qml:441
225234#, qt-format
226235msgid "Please enter %1"
227236msgstr ""
po/zh_CN.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-10-09 13:51+0000\n"
1212"Last-Translator: Aron Xu <Unknown>\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: 2013-11-08 06:38+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "维基百科"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr "近期搜索"
138138
@@ -152,7 +152,7 @@ msgid_plural "%1 reviews"
152152msgstr[0] ""
153153msgstr[1] ""
154154
155−#: Dash/Apps/AppPreview.qml:126
155+#: Dash/Apps/AppPreview.qml:135
156156msgid "Rate this"
157157msgstr ""
158158
@@ -172,7 +172,7 @@ msgstr ""
172172msgid "Comments:"
173173msgstr ""
174174
175−#: Greeter/Lockscreen.qml:142
175+#: Greeter/Lockscreen.qml:146
176176msgid "Emergency Call"
177177msgstr ""
178178
@@ -213,6 +213,15 @@ msgstr ""
213213msgid "Search"
214214msgstr "搜索"
215215
216+#: plugins/Unity/Launcher/launcheritem.cpp:43
217+#: plugins/Unity/Launcher/launcheritem.cpp:73
218+msgid "Lock to Launcher"
219+msgstr ""
220+
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Unlock from Launcher"
223+msgstr ""
224+
216225#: plugins/Unity/scope.cpp:408
217226msgid "Sorry, there is nothing that matches your search."
218227msgstr "对不起,没有找到您想要的结果。"
@@ -221,7 +230,7 @@ msgstr "对不起,没有找到您想要的结果。"
221230msgid "All"
222231msgstr ""
223232
224−#: Shell.qml:438
233+#: Shell.qml:441
225234#, qt-format
226235msgid "Please enter %1"
227236msgstr ""
po/zh_TW.po+17−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: 2013-11-05 17:53+0100\n"
10+"POT-Creation-Date: 2013-11-12 16:10+0100\n"
1111"PO-Revision-Date: 2013-06-27 10:24+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@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: 2013-11-08 06:38+0000\n"
19−"X-Generator: Launchpad (build 16820)\n"
18+"X-Launchpad-Export-Date: 2013-11-19 05:59+0000\n"
19+"X-Generator: Launchpad (build 16831)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:149
89+#: Components/EdgeDemoOverlay.qml:151
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,7 +132,7 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:341
135+#: Components/PageHeader.qml:345
136136msgid "Recent searches"
137137msgstr "最近搜尋"
138138
@@ -152,7 +152,7 @@ msgid_plural "%1 reviews"
152152msgstr[0] ""
153153msgstr[1] ""
154154
155−#: Dash/Apps/AppPreview.qml:126
155+#: Dash/Apps/AppPreview.qml:135
156156msgid "Rate this"
157157msgstr ""
158158
@@ -172,7 +172,7 @@ msgstr ""
172172msgid "Comments:"
173173msgstr ""
174174
175−#: Greeter/Lockscreen.qml:142
175+#: Greeter/Lockscreen.qml:146
176176msgid "Emergency Call"
177177msgstr ""
178178
@@ -213,6 +213,15 @@ msgstr ""
213213msgid "Search"
214214msgstr "搜尋"
215215
216+#: plugins/Unity/Launcher/launcheritem.cpp:43
217+#: plugins/Unity/Launcher/launcheritem.cpp:73
218+msgid "Lock to Launcher"
219+msgstr ""
220+
221+#: plugins/Unity/Launcher/launcheritem.cpp:73
222+msgid "Unlock from Launcher"
223+msgstr ""
224+
216225#: plugins/Unity/scope.cpp:408
217226msgid "Sorry, there is nothing that matches your search."
218227msgstr "很抱歉,找不到符合您想搜尋的結果。"
@@ -221,7 +230,7 @@ msgstr "很抱歉,找不到符合您想搜尋的結果。"
221230msgid "All"
222231msgstr ""
223232
224−#: Shell.qml:438
233+#: Shell.qml:441
225234#, qt-format
226235msgid "Please enter %1"
227236msgstr ""
tests/autopilot/unity8/process_helpers.py+65−38
@@ -21,18 +21,25 @@ from autopilot.introspection import (
2121 get_proxy_object_for_existing_process,
2222 ProcessSearchError,
2323)
24+import logging
2425import subprocess
2526from unity8.shell.emulators import UnityEmulatorBase
2627from unity8.shell.emulators.main_window import MainWindow
2728
29+logger = logging.getLogger(__name__)
30+
2831
2932class CannotAccessUnity(Exception):
3033 pass
3134
3235
33−def unlock_unity():
36+def unlock_unity(unity_proxy_obj=None):
3437 """Helper function that attempts to unlock the unity greeter.
3538
39+ If unity_proxy_object is None create a proxy object by querying for the
40+ running unity process.
41+ Otherwise re-use the passed proxy object.
42+
3643 :raises RuntimeError: if the greeter attempts and fails to be unlocked.
3744
3845 :raises RuntimeWarning: when the greeter cannot be found because it is
@@ -43,30 +50,42 @@ def unlock_unity():
4350 upstart job cannot be found at all.
4451
4552 """
46− pid = _get_unity_pid()
47− try:
48− unity = get_proxy_object_for_existing_process(
49− pid=pid,
50− emulator_base=UnityEmulatorBase,
51− )
52− main_window = MainWindow(unity)
53−
54− greeter = main_window.get_greeter()
55− if greeter is None:
56− raise RuntimeWarning("Greeter appears to be already unlocked.")
57− greeter.swipe()
58− except ProcessSearchError as e:
59− raise CannotAccessUnity(
60− "Cannot introspect unity, make sure that it has been started "
61− "with testability. Perhaps use the function "
62− "'restart_unity_with_testability' this module provides."
63− "(%s)"
64− % str(e)
65− )
53+ if unity_proxy_obj is None:
54+ try:
55+ pid = _get_unity_pid()
56+ unity = _get_unity_proxy_object(pid)
57+ main_window = MainWindow(unity)
58+ except ProcessSearchError as e:
59+ raise CannotAccessUnity(
60+ "Cannot introspect unity, make sure that it has been started "
61+ "with testability. Perhaps use the function "
62+ "'restart_unity_with_testability' this module provides."
63+ "(%s)"
64+ % str(e)
65+ )
66+ else:
67+ main_window = MainWindow(unity_proxy_obj)
68+
69+ greeter = main_window.get_greeter()
70+ if greeter.created == False:
71+ raise RuntimeWarning("Greeter appears to be already unlocked.")
72+ greeter.swipe()
73+
74+
75+def restart_unity_with_testability(*args):
76+ """Restarts (or starts) unity with testability enabled.
77+
78+ Passes *args arguments to the launched process.
79+
80+ """
81+ args += ("QT_LOAD_TESTABILITY=1",)
82+ return restart_unity(*args)
83+
6684
85+def restart_unity(*args):
86+ """Restarts (or starts) unity8 using the provided arguments.
6787
68−def restart_unity_with_testability():
69− """Restarts (or just starts) unity8 with the testability driver loaded
88+ Passes *args arguments to the launched process.
7089
7190 :raises subprocess.CalledProcessError: if unable to stop or start the
7291 unity8 upstart job.
@@ -75,27 +94,28 @@ def restart_unity_with_testability():
7594 status = _get_unity_status()
7695 if "start/" in status:
7796 try:
78− print("Stopping unity.")
79− subprocess.check_call([
80− 'initctl',
81− 'stop',
82− 'unity8',
83− ])
97+ output = subprocess.check_output(['initctl', 'stop', 'unity8'])
98+ logger.info(output)
8499 except subprocess.CalledProcessError as e:
85− e.args += ("Failed to stop running instance of unity8", )
100+ e.args += (
101+ "Failed to stop running instance of unity8: %s" % e.output,
102+ )
86103 raise
87104
88105 try:
89− print("Starting unity with testability.")
90− subprocess.check_call([
91− 'initctl',
92− 'start',
93− 'unity8',
94− 'QT_LOAD_TESTABILITY=1',
95− ])
106+ command = ['initctl', 'start', 'unity8'] + list(args)
107+ output = subprocess.check_output(
108+ command,
109+ stderr=subprocess.STDOUT,
110+ universal_newlines=True,
111+ )
112+ logger.info(output)
113+ pid = _get_unity_pid()
96114 except subprocess.CalledProcessError as e:
97− e.args += ("Failed to start unity8 with testability ", )
115+ e.args += ("Failed to start unity8: %s" % e.output,)
98116 raise
117+ else:
118+ return _get_unity_proxy_object(pid)
99119
100120
101121def _get_unity_status():
@@ -114,3 +134,10 @@ def _get_unity_pid():
114134 if not "start/" in status:
115135 raise CannotAccessUnity("Unity is not in the running state.")
116136 return int(status.split()[-1])
137+
138+
139+def _get_unity_proxy_object(pid):
140+ return get_proxy_object_for_existing_process(
141+ pid=pid,
142+ emulator_base=UnityEmulatorBase,
143+ )
tests/autopilot/unity8/shell/emulators/main_window.py−6
@@ -67,12 +67,6 @@ class MainWindow(object):
6767 def get_dash(self):
6868 return self.app.select_single(Dash)
6969
70− def get_dash_home_applications_grid(self):
71− return self.app.select_single(
72− "ApplicationsFilterGrid",
73− objectName="dashHomeApplicationsGrid"
74− )
75−
7670 def get_bottombar(self):
7771 return self.app.select_single("Bottombar")
7872
tests/autopilot/unity8/shell/tests/__init__.py+8−21
@@ -28,7 +28,6 @@ from autopilot.platform import model
2828from autopilot.testcase import AutopilotTestCase
2929from autopilot.matchers import Eventually
3030from autopilot.input import Touch
31−from autopilot.introspection import get_proxy_object_for_existing_process
3231from autopilot.display import Display
3332import logging
3433import os.path
@@ -43,7 +42,7 @@ from unity8 import (
4342 get_default_extra_mock_libraries,
4443 get_data_dirs
4544)
46−from unity8.shell.emulators import UnityEmulatorBase
45+from unity8.process_helpers import restart_unity_with_testability
4746from unity8.shell.emulators.dash import Dash
4847from unity8.shell.emulators.main_window import MainWindow
4948
@@ -105,7 +104,7 @@ class UnityTestCase(AutopilotTestCase):
105104 ),
106105 "upstart")
107106 )
108− )
107+ )
109108 sys.exit(1)
110109
111110 if "start/" in output:
@@ -303,32 +302,20 @@ class UnityTestCase(AutopilotTestCase):
303302
304303 binary_arg = "BINARY=%s" % binary_path
305304 extra_args = "ARGS=%s" % " ".join(args)
306−
307− output = subprocess.check_output(
308− [
309− "/sbin/initctl",
310− "start",
311− "unity8",
312− binary_arg,
313− extra_args,
314− ] + ["%s=%s" % (k, v) for k, v in self._environment.iteritems()],
315− stderr=subprocess.STDOUT,
316− )
305+ env_args = ["%s=%s" % (k, v) for k, v in self._environment.iteritems()]
306+ all_args = [binary_arg, extra_args] + env_args
317307
318308 self.addCleanup(self._cleanup_launching_upstart_unity)
319309
320− pid = int(output.split()[-1])
321−
322− return get_proxy_object_for_existing_process(
323− pid=pid,
324− emulator_base=UnityEmulatorBase,
325− )
310+ return restart_unity_with_testability(*all_args)
326311
327312 def _cleanup_launching_upstart_unity(self):
328313 logger.info("Stopping unity")
329314 try:
330315 subprocess.check_output(
331− ["/sbin/initctl", "stop", "unity8"], stderr=subprocess.STDOUT)
316+ ["/sbin/initctl", "stop", "unity8"],
317+ stderr=subprocess.STDOUT
318+ )
332319 except subprocess.CalledProcessError:
333320 logger.warning("Appears unity was already stopped!")
334321
tests/autopilot/unity8/shell/tests/test_hud.py+11−10
@@ -19,6 +19,7 @@
1919
2020from __future__ import absolute_import
2121
22+from unity8.process_helpers import unlock_unity
2223from unity8.shell import with_lightdm_mock, DragMixin
2324from unity8.shell.tests import UnityTestCase, _get_device_emulation_scenarios
2425
@@ -38,8 +39,8 @@ class TestHud(UnityTestCase, DragMixin):
3839 The button must disappear when touching somewhere on the screen except the button itself.
3940
4041 """
41− self.launch_unity()
42− self.main_window.get_greeter().swipe()
42+ unity_proxy = self.launch_unity()
43+ unlock_unity(unity_proxy)
4344 window = self.main_window.get_qml_view()
4445 hud_show_button = self.main_window.get_hud_show_button()
4546 edge_drag_area = self.main_window.get_hud_edge_drag_area()
@@ -80,8 +81,8 @@ class TestHud(UnityTestCase, DragMixin):
8081 Test that the hud button stays on screen and tapping it opens the hud.
8182
8283 """
83− self.launch_unity()
84− self.main_window.get_greeter().swipe()
84+ unity_proxy = self.launch_unity()
85+ unlock_unity(unity_proxy)
8586 window = self.main_window.get_qml_view()
8687 hud_show_button = self.main_window.get_hud_show_button()
8788 hud = self.main_window.get_hud()
@@ -117,8 +118,8 @@ class TestHud(UnityTestCase, DragMixin):
117118
118119 def test_hide_hud_click(self):
119120 """Tapping the close button of the Hud must dismiss it."""
120− self.launch_unity()
121− self.main_window.get_greeter().swipe()
121+ unity_proxy = self.launch_unity()
122+ unlock_unity(unity_proxy)
122123 hud = self.main_window.get_hud()
123124
124125 self._launch_test_app_from_app_screen()
@@ -134,8 +135,8 @@ class TestHud(UnityTestCase, DragMixin):
134135 released downward.
135136
136137 """
137− self.launch_unity()
138− self.main_window.get_greeter().swipe()
138+ unity_proxy = self.launch_unity()
139+ unlock_unity(unity_proxy)
139140 window = self.main_window.get_qml_view()
140141 hud = self.main_window.get_hud()
141142
@@ -152,8 +153,8 @@ class TestHud(UnityTestCase, DragMixin):
152153
153154 def test_launcher_hides_hud(self):
154155 """Opening the Launcher while the Hud is active must close the Hud."""
155− self.launch_unity()
156− self.main_window.get_greeter().swipe()
156+ unity_proxy = self.launch_unity()
157+ unlock_unity(unity_proxy)
157158 hud = self.main_window.get_hud()
158159 launcher = self.main_window.get_launcher()
159160
tests/autopilot/unity8/shell/tests/test_notifications.py+25−30
@@ -21,6 +21,7 @@
2121
2222from __future__ import absolute_import
2323
24+from unity8.process_helpers import unlock_unity
2425from unity8.shell.tests import UnityTestCase, _get_device_emulation_scenarios
2526
2627from testtools.matchers import Equals, NotEquals
@@ -118,9 +119,8 @@ class InteractiveNotificationBase(NotificationsBase):
118119
119120 def test_interactive(self):
120121 """Interactive notification must react upon click on itself."""
121− self.launch_unity()
122− greeter = self.main_window.get_greeter()
123− greeter.swipe()
122+ unity_proxy = self.launch_unity()
123+ unlock_unity(unity_proxy)
124124
125125 notify_list = self._get_notifications_list()
126126
@@ -158,9 +158,8 @@ class InteractiveNotificationBase(NotificationsBase):
158158 def test_sd_incoming_call(self):
159159 """Rejecting a call should make notification expand and
160160 offer more options."""
161− self.launch_unity()
162− greeter = self.main_window.get_greeter()
163− greeter.swipe()
161+ unity_proxy = self.launch_unity()
162+ unlock_unity(unity_proxy)
164163
165164 notify_list = self._get_notifications_list()
166165
@@ -336,9 +335,8 @@ class EphemeralNotificationsTests(NotificationsBase):
336335
337336 def test_icon_summary_body(self):
338337 """Notification must display the expected summary and body text."""
339− self.launch_unity()
340− greeter = self.main_window.get_greeter()
341− greeter.swipe()
338+ unity_proxy = self.launch_unity()
339+ unlock_unity(unity_proxy)
342340
343341 notify_list = self._get_notifications_list()
344342
@@ -377,9 +375,8 @@ class EphemeralNotificationsTests(NotificationsBase):
377375 def test_icon_summary(self):
378376 """Notification must display the expected summary and secondary
379377 icon."""
380− self.launch_unity()
381− greeter = self.main_window.get_greeter()
382− greeter.swipe()
378+ unity_proxy = self.launch_unity()
379+ unlock_unity(unity_proxy)
383380
384381 notify_list = self._get_notifications_list()
385382
@@ -416,9 +413,8 @@ class EphemeralNotificationsTests(NotificationsBase):
416413 def test_urgency_order(self):
417414 """Notifications must be displayed in order according to their
418415 urgency."""
419− self.launch_unity()
420− greeter = self.main_window.get_greeter()
421− greeter.swipe()
416+ unity_proxy = self.launch_unity()
417+ unlock_unity(unity_proxy)
422418
423419 notify_list = self._get_notifications_list()
424420
@@ -504,9 +500,8 @@ class EphemeralNotificationsTests(NotificationsBase):
504500
505501 def test_summary_and_body(self):
506502 """Notification must display the expected summary- and body-text."""
507− self.launch_unity()
508− greeter = self.main_window.get_greeter()
509− greeter.swipe()
503+ unity_proxy = self.launch_unity()
504+ unlock_unity(unity_proxy)
510505
511506 notify_list = self._get_notifications_list()
512507
@@ -518,6 +513,7 @@ class EphemeralNotificationsTests(NotificationsBase):
518513
519514 notification = notify_list.wait_select_single(
520515 'Notification', objectName='notification1')
516+
521517 self._assert_notification(
522518 notification,
523519 summary,
@@ -529,9 +525,8 @@ class EphemeralNotificationsTests(NotificationsBase):
529525
530526 def test_summary_only(self):
531527 """Notification must display only the expected summary-text."""
532− self.launch_unity()
533− greeter = self.main_window.get_greeter()
534− greeter.swipe()
528+ unity_proxy = self.launch_unity()
529+ unlock_unity(unity_proxy)
535530
536531 notify_list = self._get_notifications_list()
537532
@@ -548,9 +543,8 @@ class EphemeralNotificationsTests(NotificationsBase):
548543 def test_update_notification_same_layout(self):
549544 """Notification must allow updating its contents while being
550545 displayed."""
551− self.launch_unity()
552− greeter = self.main_window.get_greeter()
553− greeter.swipe()
546+ unity_proxy = self.launch_unity()
547+ unlock_unity(unity_proxy)
554548
555549 notify_list = self._get_notifications_list()
556550
@@ -587,9 +581,8 @@ class EphemeralNotificationsTests(NotificationsBase):
587581 def test_update_notification_layout_change(self):
588582 """Notification must allow updating its contents and layout while
589583 being displayed."""
590− self.launch_unity()
591− greeter = self.main_window.get_greeter()
592− greeter.swipe()
584+ unity_proxy = self.launch_unity()
585+ unlock_unity(unity_proxy)
593586
594587 notify_list = self._get_notifications_list()
595588
@@ -612,6 +605,7 @@ class EphemeralNotificationsTests(NotificationsBase):
612605
613606 get_notification = lambda: notify_list.wait_select_single(
614607 'Notification', objectName='notification1')
608+
615609 self._assert_notification(
616610 get_notification(),
617611 summary,
@@ -633,9 +627,8 @@ class EphemeralNotificationsTests(NotificationsBase):
633627
634628 def test_append_hint(self):
635629 """Notification has to accumulate body-text using append-hint."""
636− self.launch_unity()
637− greeter = self.main_window.get_greeter()
638− greeter.swipe()
630+ unity_proxy = self.launch_unity()
631+ unlock_unity(unity_proxy)
639632
640633 notify_list = self._get_notifications_list()
641634
@@ -654,6 +647,7 @@ class EphemeralNotificationsTests(NotificationsBase):
654647
655648 get_notification = lambda: notify_list.wait_select_single(
656649 'Notification', objectName='notification1')
650+
657651 notification = get_notification()
658652 self._assert_notification(
659653 notification,
@@ -685,6 +679,7 @@ class EphemeralNotificationsTests(NotificationsBase):
685679 hints=[('x-canonical-append', 'true')]
686680 )
687681 notification.show()
682+
688683 get_notification = lambda: notify_list.wait_select_single(
689684 'Notification',
690685 objectName='notification1'
tests/mocks/AccountsService/plugin.cpp+1−1
@@ -20,7 +20,7 @@
2020#include "plugin.h"
2121#include "AccountsService.h"
2222
23−#include <QtQml>
23+#include <QtQml/qqml.h>
2424
2525static QObject *service_provider(QQmlEngine *engine, QJSEngine *scriptEngine)
2626{
tests/mocks/QMenuModel/plugin.cpp+1−1
@@ -20,7 +20,7 @@
2020#include "unitymenumodel.h"
2121#include "actionstateparser.h"
2222
23−#include <QtQml>
23+#include <QtQml/qqml.h>
2424
2525void QMenuModelPlugin::registerTypes(const char *uri)
2626{
tests/mocks/Unity/iconutils.cpp+10−10
@@ -17,11 +17,13 @@
1717 * Michal Hruby <michal.hruby@canonical.com>
1818 */
1919
20−#include <QStringList>
21−#include <QUrl>
20+#include "iconutils.h"
2221
2322#include <gio/gio.h>
24−#include "iconutils.h"
23+
24+#include <QStringList>
25+#include <QUrl>
26+#include <QUrlQuery>
2527
2628#define BASE_THEME_ICON_URI "image://theme/"
2729#define BASE_THUMBNAILER_URI "image://thumbnailer/"
@@ -104,13 +106,11 @@ QString uriToThumbnailerProviderString(QString const &uri, QString const &mimety
104106 if (contentHash.contains("content")) { // nested content in Home?
105107 contentHash = contentHash["content"].toHash();
106108 }
107− if (contentHash.contains("album") &&
108− contentHash.contains("artist")) {
109− const QString album = contentHash["album"].toString();
110− const QString artist = contentHash["artist"].toString();
111− thumbnailerUri.append(QUrl::toPercentEncoding(artist));
112− thumbnailerUri.append("/");
113− thumbnailerUri.append(QUrl::toPercentEncoding(album));
109+ if (contentHash.contains("album") && contentHash.contains("artist")) {
110+ QUrlQuery query;
111+ query.addQueryItem(QStringLiteral("artist"), contentHash["artist"].toString());
112+ query.addQueryItem(QStringLiteral("album"), contentHash["album"].toString());
113+ thumbnailerUri.append(query.toString());
114114 }
115115 }
116116 } else {
tests/plugins/ListViewWithPageHeader/CMakeLists.txt+7
@@ -1,3 +1,6 @@
1+# add_qml_test macro
2+include(QmlTest)
3+
14# There's no cmake var for v8 include path :-/
25# so create one
36LIST(GET Qt5Core_INCLUDE_DIRS 0 QtCoreDir0)
@@ -37,6 +40,10 @@ qt5_use_modules(listviewwithpageheadertestsectionexternalmodelExec Test Core Qml
3740target_link_libraries(listviewwithpageheadertestsectionexternalmodelExec ${Qt5Gui_LIBRARIES} ${Qt5Quick_LIBRARIES})
3841add_custom_target(testlistviewwithpageheadersectionexternalmodel ${CMAKE_CURRENT_BINARY_DIR}/listviewwithpageheadertestsectionexternalmodelExec -o ${CMAKE_BINARY_DIR}/testlistviewwithpageheadersectionexternalmodel.xml,xunitxml -o -,txt)
3942
43+set(qmltest_DEFAULT_NO_ADD_TEST TRUE)
44+add_qml_test(. listviewwithpageheaderqml IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins)
45+
4046add_dependencies(qmluitests testlistviewwithpageheader)
4147add_dependencies(qmluitests testlistviewwithpageheadersection)
4248add_dependencies(qmluitests testlistviewwithpageheadersectionexternalmodel)
49+add_dependencies(qmluitests testlistviewwithpageheaderqml)
tests/plugins/ListViewWithPageHeader/listviewwithpageheadertest.cpp+39
@@ -1589,6 +1589,28 @@ private Q_SLOTS:
15891589 QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
15901590 }
15911591
1592+ void testMaximizeVisibleAreaTopWithHalfPageHeaderUpDown()
1593+ {
1594+ testMaximizeVisibleAreaTopWithHalfPageHeader();
1595+
1596+ changeContentY(-60);
1597+ changeContentY(15);
1598+
1599+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 4);
1600+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1601+ verifyItem(0, -140., 150., false);
1602+ verifyItem(1, 10., 200., false);
1603+ verifyItem(2, 210, 350., false);
1604+ verifyItem(3, 560, 350., true);
1605+ QCOMPARE(lvwph->m_minYExtent, 0.);
1606+ QCOMPARE(lvwph->m_clipItem->y(), 190.);
1607+ QCOMPARE(lvwph->m_clipItem->clip(), true);
1608+ QCOMPARE(lvwph->m_headerItem->y(), 140.);
1609+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1610+ QCOMPARE(lvwph->contentY(), 155.);
1611+ QCOMPARE(lvwph->m_headerItemShownHeight, 35.);
1612+ }
1613+
15921614 void testMaximizeVisibleAreaBottomWithHalfPageHeader()
15931615 {
15941616 changeContentY(430);
@@ -1827,6 +1849,23 @@ private Q_SLOTS:
18271849 lvwph->positionAtBeginning();
18281850 }
18291851
1852+ void testHeaderPositionBug1240118()
1853+ {
1854+ scrollToBottom();
1855+ lvwph->showHeader();
1856+ QTRY_VERIFY(!lvwph->m_contentYAnimation->isRunning());
1857+ QTest::qWait(100); // Make sure stuff is stable
1858+ QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 100));
1859+ model->setProperty(3, "size", 10);
1860+ model->setProperty(4, "size", 10);
1861+ model->setProperty(5, "size", 10);
1862+ model->setProperty(6, "size", 10);
1863+#if (QT_VERSION > QT_VERSION_CHECK(5, 0, 3))
1864+ QTRY_COMPARE(lvwph->m_minYExtent, 210.);
1865+#endif
1866+ QTRY_COMPARE(lvwph->m_headerItem->y(), -lvwph->m_minYExtent);
1867+ }
1868+
18301869private:
18311870 QQuickView *view;
18321871 ListViewWithPageHeader *lvwph;
tests/plugins/ListViewWithPageHeader/listviewwithpageheadertestsection.cpp+81−1
@@ -1734,7 +1734,25 @@ private Q_SLOTS:
17341734 QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 50), Q_ARG(QVariant, "Agressive"));
17351735 QMetaObject::invokeMethod(model, "insertItem", Q_ARG(QVariant, 0), Q_ARG(QVariant, 50), Q_ARG(QVariant, "Agressive"));
17361736
1737− changeContentY(140);
1737+ changeContentY(5);
1738+
1739+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 5);
1740+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
1741+ verifyItem(0, 45., 90., false, "Agressive", false);
1742+ verifyItem(1, 135., 50., false, QString(), false);
1743+ verifyItem(2, 185., 150., false, QString(), false);
1744+ verifyItem(3, 335., 240., false, "Regular", false);
1745+ verifyItem(4, 575., 390., true, "Mild", true);
1746+ QCOMPARE(lvwph->m_minYExtent, 0.);
1747+ QCOMPARE(lvwph->m_clipItem->y(), 5.);
1748+ QCOMPARE(lvwph->m_clipItem->clip(), false);
1749+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
1750+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
1751+ QCOMPARE(lvwph->contentY(), 5.);
1752+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
1753+ QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
1754+
1755+ changeContentY(135);
17381756
17391757 QTRY_COMPARE(lvwph->m_visibleItems.count(), 5);
17401758 QCOMPARE(lvwph->m_firstVisibleIndex, 0);
@@ -2076,6 +2094,68 @@ private Q_SLOTS:
20762094 QCOMPARE(spy.count(), 0);
20772095 }
20782096
2097+ void testDownAndUp()
2098+ {
2099+ QMetaObject::invokeMethod(model, "removeItems", Q_ARG(QVariant, 1), Q_ARG(QVariant, 5));
2100+
2101+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 1);
2102+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
2103+ verifyItem(0, 50., 190., false, "Agressive", false);
2104+ QCOMPARE(lvwph->m_minYExtent, 0.);
2105+ QCOMPARE(lvwph->m_clipItem->y(), 0.);
2106+ QCOMPARE(lvwph->m_clipItem->clip(), false);
2107+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
2108+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
2109+ QCOMPARE(lvwph->contentY(), 0.);
2110+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
2111+ QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
2112+
2113+ QTest::qWait(1);
2114+
2115+ changeContentY(-15);
2116+
2117+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 1);
2118+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
2119+ verifyItem(0, 65., 190., false, "Agressive", false);
2120+ QCOMPARE(lvwph->m_minYExtent, 0.);
2121+ QCOMPARE(lvwph->m_clipItem->y(), -15.);
2122+ QCOMPARE(lvwph->m_clipItem->clip(), false);
2123+ QCOMPARE(lvwph->m_headerItem->y(), -15.);
2124+ QCOMPARE(lvwph->m_headerItem->height(), 65.);
2125+ QCOMPARE(lvwph->contentY(), -15.);
2126+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
2127+ QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
2128+
2129+ changeContentY(25);
2130+
2131+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 1);
2132+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
2133+ verifyItem(0, 40., 190., false, "Agressive", false);
2134+ QCOMPARE(lvwph->m_minYExtent, 0.);
2135+ QCOMPARE(lvwph->m_clipItem->y(), 10.);
2136+ QCOMPARE(lvwph->m_clipItem->clip(), false);
2137+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
2138+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
2139+ QCOMPARE(lvwph->contentY(), 10.);
2140+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
2141+ QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
2142+
2143+
2144+ QTest::mouseClick(view, Qt::LeftButton, Qt::NoModifier, QPoint(0, 0));
2145+
2146+ QTRY_COMPARE(lvwph->m_visibleItems.count(), 1);
2147+ QCOMPARE(lvwph->m_firstVisibleIndex, 0);
2148+ verifyItem(0, 50., 190., false, "Agressive", false);
2149+ QCOMPARE(lvwph->m_minYExtent, 0.);
2150+ QCOMPARE(lvwph->m_clipItem->y(), 0.);
2151+ QCOMPARE(lvwph->m_clipItem->clip(), false);
2152+ QCOMPARE(lvwph->m_headerItem->y(), 0.);
2153+ QCOMPARE(lvwph->m_headerItem->height(), 50.);
2154+ QCOMPARE(lvwph->contentY(), 0.);
2155+ QCOMPARE(lvwph->m_headerItemShownHeight, 0.);
2156+ QVERIFY(QQuickItemPrivate::get(lvwph->m_topSectionItem)->culled);
2157+ }
2158+
20792159private:
20802160 QQuickView *view;
20812161 ListViewWithPageHeader *lvwph;
tests/plugins/ListViewWithPageHeader/tst_listviewwithpageheaderqml.qmlnew file+138
@@ -0,0 +1,138 @@
1+/*
2+ * Copyright (C) 2013 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.0
18+import QtTest 1.0
19+import ListViewWithPageHeader 0.1
20+
21+Rectangle {
22+ width: 300
23+ height: 542
24+ color: "lightblue"
25+
26+ ListModel {
27+ id: model
28+
29+ function insertItem(index, size, type) {
30+ insert(index, { size: size, type: type });
31+ }
32+
33+ function removeItems(index, count) {
34+ remove(index, count);
35+ }
36+
37+ function moveItems(indexFrom, indexTo, count) {
38+ move(indexFrom, indexTo, count);
39+ }
40+
41+ ListElement { type: "Agressive"; size: 150 }
42+ ListElement { type: "Regular"; size: 200 }
43+ ListElement { type: "Mild"; size: 350 }
44+ ListElement { type: "Bold"; size: 350 }
45+ ListElement { type: "Bold"; size: 350 }
46+ ListElement { type: "Lazy"; size: 350 }
47+ }
48+
49+ ListViewWithPageHeader {
50+ id: listView
51+ width: parent.width
52+ anchors.top: parent.top
53+ anchors.bottom: parent.bottom
54+ model: model
55+ delegate: Rectangle {
56+ property bool timerDone: false
57+ width: parent.width - 20
58+ x: 10
59+ color: index % 2 == 0 ? "red" : "blue"
60+ height: size
61+ Text {
62+ text: index
63+ }
64+ }
65+
66+ pageHeader: Rectangle {
67+ color: "transparent"
68+ width: parent.width
69+ height: 50
70+ implicitHeight: 50
71+ Text {
72+ anchors.fill: parent
73+ text: "APPS"
74+ font.pixelSize: 40
75+ }
76+ }
77+
78+ sectionProperty: "type"
79+
80+ property int sectionHeaderHeight: 40
81+ sectionDelegate: Component {
82+ id: sectionHeaderComponent
83+ Rectangle {
84+ color: "green"
85+ height: listView.sectionHeaderHeight
86+ Text { text: section; font.pixelSize: 34 }
87+ anchors { left: parent.left; right: parent.right }
88+ }
89+ }
90+ }
91+
92+ Component {
93+ id: otherSectionHeaderComponent
94+ Rectangle {
95+ color: "green"
96+ height: 50
97+ Text { text: section; font.pixelSize: 34 }
98+ anchors { left: parent.left; right: parent.right }
99+ }
100+ }
101+
102+ SignalSpy {
103+ id: stickyHeaderHeigthSpy
104+ target: listView
105+ signalName: "stickyHeaderHeightChanged"
106+ }
107+
108+ TestCase {
109+ name: "ListViewWithPageHeaderTest"
110+ when: windowShown
111+
112+ function test_stickyHeaderHeightNewHeader() {
113+ stickyHeaderHeigthSpy.clear();
114+ compare(listView.stickyHeaderHeight, 40);
115+
116+ listView.sectionDelegate = otherSectionHeaderComponent;
117+ compare(listView.stickyHeaderHeight, 50);
118+ compare(stickyHeaderHeigthSpy.count, 1);
119+
120+ listView.sectionDelegate = sectionHeaderComponent;
121+ compare(listView.stickyHeaderHeight, 40);
122+ compare(stickyHeaderHeigthSpy.count, 2);
123+ }
124+
125+ function test_stickyHeaderHeightGrowingHeader() {
126+ stickyHeaderHeigthSpy.clear();
127+
128+ compare(listView.stickyHeaderHeight, 40);
129+
130+ listView.sectionHeaderHeight = 60;
131+ compare(listView.stickyHeaderHeight, 60);
132+ compare(stickyHeaderHeigthSpy.count, 1);
133+
134+ // Restore height for other tests
135+ listView.sectionHeaderHeight = 40;
136+ }
137+ }
138+}
tests/plugins/Unity/Indicators/indicatorsmanagertest.cpp+1−3
@@ -80,9 +80,7 @@ private Q_SLOTS:
8080 QCOMPARE(props["busName"].toString(), QString("com.canonical.indicator.fake1"));
8181 QCOMPARE(props["actionsObjectPath"].toString(), QString("/com/canonical/indicator/fake1"));
8282
83− QVariantMap objectPaths = props["menuObjectPaths"].toMap();
84− QCOMPARE(objectPaths["phone"].toString(), QString("/com/canonical/indicator/fake1/phone"));
85− QCOMPARE(objectPaths["desktop"].toString(), QString("/com/canonical/indicator/fake1/desktop"));
83+ QCOMPARE(props["menuObjectPath"].toString(), QString("/com/canonical/indicator/fake1/phone"));
8684 }
8785
8886 /*
tests/qmltests/CMakeLists.txt−2
@@ -15,7 +15,6 @@ add_qml_test(Components AnimationControllerWithSignals)
1515add_qml_test(Components Carousel)
1616add_qml_test(Components OpenEffect)
1717add_qml_test(Components RatingStars)
18−add_qml_test(Components TimeLocal)
1918add_qml_test(Panel IndicatorItem)
2019add_qml_test(utils/Unity/Test UnityTest)
2120
@@ -45,7 +44,6 @@ add_qml_test(Dash DashContent IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest
4544add_qml_test(Dash DashPreview)
4645add_qml_test(Dash GenericPreview)
4746add_qml_test(Dash GenericScopeView IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS})
48−add_qml_test(Dash ScopeView IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS})
4947add_qml_test(Dash FilterGrids IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/plugins ${CMAKE_CURRENT_SOURCE_DIR}/plugins
5048 ${CMAKE_BINARY_DIR}/tests/mocks)
5149add_qml_test(Dash/Apps RunningApplicationsGrid IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
tests/qmltests/Components/tst_PageHeader.qml+44−3
@@ -37,6 +37,10 @@ Item {
3737 property alias searchEnabled : pageHeader.searchEntryEnabled
3838 property alias searchQuery : pageHeader.searchQuery
3939
40+ function init() {
41+ searchEnabled = true;
42+ }
43+
4044 function test_search_disabled() {
4145 searchEnabled = false
4246 pageHeader.resetSearch()
@@ -151,12 +155,48 @@ Item {
151155 scopeMock.searchInProgress = true
152156 compare(searchIndicator.running, true, "Search indicator isn't running.")
153157 tryCompare(primaryImage, "visible", false)
154−
155− pageHeader.resetSearch()
156158 }
157159
158160 function cleanup() {
159− scopeMock.searchInProgress = false
161+ scopeMock.searchInProgress = false;
162+ pageHeader.resetSearch();
163+ }
164+
165+ function test_popover() {
166+ searchEnabled = true;
167+ pageHeader.searchHistory.clear();
168+
169+ pageHeader.searchHistory.addQuery("Search1");
170+ pageHeader.searchHistory.addQuery("Search2");
171+
172+ pageHeader.triggerSearch();
173+
174+ var searchContainer = findChild(pageHeader, "searchContainer");
175+ verify(searchContainer !== undefined, "searchContainer != undefined");
176+ tryCompareFunction(function() { return searchContainer.popover !== null; }, true);
177+
178+ tryCompare(searchContainer.popover, "visible", true);
179+ }
180+
181+ function test_resetSearch_onPopupClose() {
182+ searchEnabled = true;
183+ pageHeader.searchHistory.clear();
184+
185+ pageHeader.searchHistory.addQuery("Search1");
186+ pageHeader.searchHistory.addQuery("Search2");
187+
188+ pageHeader.triggerSearch();
189+
190+ var searchContainer = findChild(pageHeader, "searchContainer");
191+ verify(searchContainer !== undefined, "searchContainer != undefined");
192+ tryCompareFunction(function() { return searchContainer.popover !== null; }, true);
193+ compare(searchContainer.popover.visible, true);
194+
195+ pageHeader.searchQuery = "test";
196+ tryCompareFunction( function() { return (searchContainer.popover===null || !searchContainer.popover.visible) }, true);
197+
198+ pageHeader.resetSearch();
199+ compare((searchContainer.popover===null || !searchContainer.popover.visible), true);
160200 }
161201 }
162202
@@ -174,6 +214,7 @@ Item {
174214 scope: scopeMock
175215
176216 searchEntryEnabled: true
217+ searchHistory: SearchHistoryModel {}
177218 text: "%^$%^%^&%^&%^$%GHR%"
178219 }
179220
tests/qmltests/Components/tst_TimeLocal.qmldeleted−117
@@ -1,117 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.0
18−import QtTest 1.0
19−import "../../../Components/Time.js" as TimeLocal
20−
21−TestCase {
22− name: "TimeLocal"
23−
24− property var readableDate
25−
26− function test_readableFromNow_dateUndefined() {
27− readableDate = TimeLocal.readableFromNow()
28− compare(readableDate, "", "readable date should have been null")
29− }
30−
31− function test_readableFromNow_dateNaN() {
32− readableDate = TimeLocal.readableFromNow("this is a string, not a date")
33− compare(readableDate, "", "readable date should have been null")
34− }
35−
36− function test_readableFromNow_justNow() {
37− readableDate = TimeLocal.readableFromNow(new Date())
38− compare(readableDate, "just now", "readable date should have been now")
39− }
40−
41− function test_readableFromNow_nowNaN() {
42− var fail = false
43− try {
44− TimeLocal.readableFromNow(new Date(), "this is a string, not a date")
45− } catch (err) {
46− fail = true
47− } finally {
48− compare(fail, true, "readable date should have thrown an exception")
49− }
50− }
51−
52− function cycleTime(diff, previous, next, units, endIterator) {
53− var now = new Date()
54− var time = now.getTime()
55− readableDate = TimeLocal.readableFromNow(time - diff, now)
56− compare(readableDate, previous, "different time predicted")
57− readableDate = TimeLocal.readableFromNow(time + diff, now)
58− compare(readableDate, next, "different time predicted")
59− for (var i = 2; i < endIterator; i++) {
60− var tmpDiff = i * diff
61− readableDate = TimeLocal.readableFromNow(time - tmpDiff, now)
62− compare(readableDate, i + " " + units + " ago", "different time predicted")
63− readableDate = TimeLocal.readableFromNow(time + tmpDiff, now)
64− compare(readableDate, "in " + i + " " + units, "different time predicted")
65− }
66− }
67−
68− function test_readableFromNow_seconds() {
69− cycleTime(1000, "a second ago", "in a second", "seconds", 60)
70− }
71−
72− function test_readableFromNow_minutes() {
73− cycleTime(1000 * 60, "a minute ago", "in a minute", "minutes", 60)
74− }
75−
76− function test_readableFromNow_hours() {
77− cycleTime(1000 * 60 * 60, "an hour ago", "in an hour", "hours", 24)
78− }
79−
80− function test_readableFromNow_days() {
81− cycleTime(1000 * 60 * 60 * 24, "yesterday", "tomorrow", "days", 7)
82− }
83−
84− function test_readableFromNow_weeks() {
85− var now = new Date()
86− for (var i = 7; i < 30; i++) {
87− readableDate = TimeLocal.readableFromNow(now.getTime() - i * 1000 * 60 * 60 * 24, now)
88− if (i < 14)
89− compare(readableDate, "a week ago", "different time predicted")
90− else if (i < 18)
91− compare(readableDate, "about 2 weeks ago", "different time predicted")
92− else if (i < 25)
93− compare(readableDate, "about 3 weeks ago", "different time predicted")
94− else
95− compare(readableDate, "about 4 weeks ago", "different time predicted")
96− }
97− for (var i = 7; i < 30; i++) {
98− readableDate = TimeLocal.readableFromNow(now.getTime() + i * 1000 * 60 * 60 * 24, now)
99− if (i < 14)
100− compare(readableDate, "in a week", "different time predicted")
101− else if (i < 18)
102− compare(readableDate, "in about 2 weeks", "different time predicted")
103− else if (i < 25)
104− compare(readableDate, "in about 3 weeks", "different time predicted")
105− else
106− compare(readableDate, "in about 4 weeks", "different time predicted")
107− }
108− }
109−
110− function test_readableFromNow_months() {
111− cycleTime(1000 * 60 * 60 * 24 * 30.45, "a month ago", "in a month", "months", 12)
112− }
113−
114− function test_readableFromNow_years() {
115− cycleTime(1000 * 60 * 60 * 24 * 366, "a year ago", "in a year", "years", 5)
116− }
117−}
tests/qmltests/Dash/qml/FakeScopeView.qml+3−69
@@ -19,14 +19,13 @@ import Unity 0.1
1919
2020import "../../../../Dash"
2121
22−ScopeView {
22+GenericScopeView {
2323 id: fakeScopeView
2424
2525 property alias backColor : back.color
26− moving: listView.moving
2726
2827 onEndReached: {
29− if (shell != undefined && shell.scopeStatus != undefined) {
28+ if (scope != undefined && shell != undefined && shell.scopeStatus != undefined) {
3029 shell.scopeStatus[scope.id].endReached++;
3130 }
3231 }
@@ -45,71 +44,6 @@ ScopeView {
4544 id: back
4645 anchors.fill: parent
4746 color: "grey"
48− }
49−
50− function randomBg()
51− {
52− var hex1=new Array("4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F")
53− var bg="#"+hex1[Math.floor(Math.random()*hex1.length)]+
54− hex1[Math.floor(Math.random()*hex1.length)]+
55− hex1[Math.floor(Math.random()*hex1.length)]+
56− hex1[Math.floor(Math.random()*hex1.length)]+
57− hex1[Math.floor(Math.random()*hex1.length)]+
58− hex1[Math.floor(Math.random()*hex1.length)]
59− return bg
60− }
61−
62−
63− ListView {
64− id: listView
65− anchors.fill: parent
66− model: scope ? scope.categories : null
67− orientation: ListView.Vertical
68−
69− delegate: Column {
70− id: column
71− width: listView.width
72− height: childrenRect.height
73−
74− Rectangle {
75− width: listView.width
76− height: units.gu(3)
77− color: randomBg()
78−
79− Text {
80− text: name
81− font.family: "Ubuntu"
82− font.weight: Font.Bold
83− font.pixelSize: 20
84− anchors.horizontalCenter: parent.horizontalCenter
85− }
86− }
87− GridView {
88− id: resultsGrid
89− model: results
90− cellWidth: units.gu(10); cellHeight: units.gu(10)
91− height: childrenRect.height
92− width: listView.width
93− interactive: false
94−
95− delegate: Component {
96− id: resultDelegate
97− Item {
98− width: resultsGrid.cellWidth; height: resultsGrid.cellHeight
99− Column {
100− anchors.verticalCenter: parent.verticalCenter
101− anchors.horizontalCenter: parent.horizontalCenter
102− Image {
103− width: units.gu(5)
104− height: units.gu(5)
105− source: icon
106− anchors.horizontalCenter: parent.horizontalCenter
107− }
108− Text { text: title; anchors.horizontalCenter: parent.horizontalCenter }
109− }
110− }
111− }
112− }
113− }
47+ z: -1
11448 }
11549}
tests/qmltests/Dash/tst_Dash.qml+5−1
@@ -102,11 +102,15 @@ Item {
102102 console.log("Not testing " + data.tag + ": not visible");
103103 return;
104104 }
105+ var dashContentList = findChild(dash, "dashContentList");
106+
105107 dash.showScopeOnLoaded = data.tag
106108 scopes.clear();
109+ tryCompare(dashContentList, "count", 0);
107110 scopes.load();
111+ tryCompare(scopes, "loaded", true);
112+ tryCompare(dashContentList, "count", 4);
108113
109− var dashContentList = findChild(dash, "dashContentList");
110114 verify(dashContentList != undefined);
111115 tryCompare(dashContentList, "currentIndex", data.visualIndex);
112116 }
tests/qmltests/Dash/tst_DashContent.qml+28−8
@@ -26,7 +26,17 @@ Item {
2626 width: units.gu(40)
2727 height: units.gu(80)
2828
29− property ListModel searchHistory: ListModel {}
29+ Item {
30+ // Fake. Make a few components less noisy
31+ id: greeter
32+ signal shownChanged
33+ }
34+
35+ Item {
36+ // Fake. Make a few components less noisy
37+ id: panel
38+ signal searchClicked
39+ }
3040
3141 property var scopeStatus: {
3242 'MockScope1': { 'movementStarted': 0, 'positionedAtBeginning': 0 },
@@ -48,6 +58,7 @@ Item {
4858 scopes : scopesModel
4959
5060 scopeMapper : scopeDelegateMapper
61+ searchHistory: ListModel {}
5162 }
5263
5364 ScopeDelegateMapper {
@@ -111,10 +122,10 @@ Item {
111122 clear_scope_status();
112123 dashContent.visible = true;
113124
114− scopesModel.clear();
115− // wait for dash to empty scopes.
116125 var dashContentList = findChild(dashContent, "dashContentList");
117126 verify(dashContentList != undefined);
127+ scopesModel.clear();
128+ // wait for dash to empty scopes.
118129 tryCompare(dashContentList, "count", 0);
119130 }
120131
@@ -230,18 +241,27 @@ Item {
230241 tryCompare(scopesModel.get(2), "isActive", data.active2);
231242 }
232243
233− function test_hswipe_disabled_vswipe() {
244+ function checkFlickMovingAndNotInteractive()
245+ {
234246 var dashContentList = findChild(dashContent, "dashContentList");
235247
236− tryCompare(dashContentList, "interactive", true);
248+ if (dashContentList.currentItem.moving && !dashContentList.interactive)
249+ return true;
237250
238251 var startX = dashContentList.width/2;
239252 var startY = dashContentList.height/2;
240− touchFlick(dashContentList, startX, startY, startX, startY - units.gu(800));
253+ touchFlick(dashContentList, startX, startY, startX, startY - units.gu(40));
254+
255+ return dashContentList.currentItem.moving && !dashContentList.interactive;
256+ }
257+
241258
242− tryCompare(dashContentList.currentItem, "moving", true);
259+ function test_hswipe_disabled_vswipe() {
260+ var dashContentList = findChild(dashContent, "dashContentList");
261+
262+ tryCompare(dashContentList, "interactive", true);
243263
244− compare(dashContentList.interactive, false);
264+ tryCompareFunction(checkFlickMovingAndNotInteractive, true);
245265 }
246266 }
247267}
tests/qmltests/Dash/tst_FilterGrids.qml+1−2
@@ -108,8 +108,7 @@ Rectangle {
108108 function test_clicked_signal_data() {
109109 return [
110110 {tag: "VideoFilterGrid", component: "Video/VideoFilterGrid.qml"},
111− {tag: "MusicFilterGrid", component: "Music/MusicFilterGrid.qml"},
112− {tag: "ApplicationsFilterGrid", component: "Apps/ApplicationsFilterGrid.qml"}
111+ {tag: "MusicFilterGrid", component: "Music/MusicFilterGrid.qml"}
113112 ]
114113 }
115114
tests/qmltests/Dash/tst_GenericScopeView.qml+24−2
@@ -132,7 +132,23 @@ Item {
132132 tryCompare(previewListView, "open", false);
133133 }
134134
135− function test_previewCycleOne() {
135+ function test_hiddenPreviewOpen() {
136+ var categoryListView = findChild(genericScopeView, "categoryListView");
137+ categoryListView.positionAtBeginning();
138+ waitForRendering(categoryListView);
139+ categoryListView.flick(0, -units.gu(80));
140+ tryCompare(categoryListView.flicking, false);
141+
142+ var tile = findChild(genericScopeView, "delegate0");
143+ mouseClick(tile, tile.width / 2, tile.height - 1);
144+ var openEffect = findChild(genericScopeView, "openEffect");
145+ tryCompare(openEffect, "gap", 1);
146+
147+ var pageHeader = findChild(genericScopeView, "pageHeader");
148+ verify(openEffect.positionPx >= pageHeader.height + categoryListView.stickyHeaderHeight);
149+ }
150+
151+ function test_previewCycle() {
136152 var previewListView = findChild(genericScopeView, "previewListView");
137153 tryCompare(previewListView, "open", false);
138154
@@ -173,7 +189,6 @@ Item {
173189
174190 checkArrowPosition(i);
175191 }
176−
177192 closePreview();
178193 }
179194
@@ -190,6 +205,13 @@ Item {
190205
191206 closePreview();
192207 }
208+
209+ function test_changeScope() {
210+ genericScopeView.scope.searchQuery = "test"
211+ genericScopeView.scope = scopes.get(1)
212+ genericScopeView.scope = scopes.get(0)
213+ tryCompare(genericScopeView.scope, "searchQuery", "")
214+ }
193215 }
194216 }
195217}
tests/qmltests/Dash/tst_ScopeView.qmldeleted−52
@@ -1,52 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.0
18−import QtTest 1.0
19−import Unity 0.1
20−import ".."
21−import "../../../Dash"
22−import Ubuntu.Components 0.1
23−
24−Item {
25− width: units.gu(120)
26− height: units.gu(80)
27−
28− Scopes {
29− id: scopes
30− }
31−
32− ScopeView {
33− id: scopeView
34− anchors.fill: parent
35−
36− TestCase {
37− name: "ScopeView"
38− when: scopes.loaded
39−
40− function init() {
41− scopeView.scope = scopes.get(0)
42− }
43−
44− function test_changeScope() {
45− scopeView.scope.searchQuery = "test"
46− scopeView.scope = scopes.get(1)
47− scopeView.scope = scopes.get(0)
48− tryCompare(scopeView.scope, "searchQuery", "")
49− }
50− }
51− }
52−}
tests/qmltests/Greeter/tst_Lockscreen.qml+45−17
@@ -41,7 +41,7 @@ Rectangle {
4141 target: lockscreen
4242
4343 onEmergencyCall: emergencyCheckBox.checked = true
44− onUnlocked: unlockedCheckBox.checked = true
44+ onEntered: enteredLabel.text = passphrase
4545 }
4646
4747 Connections {
@@ -99,12 +99,11 @@ Rectangle {
9999 anchors.verticalCenter: parent.verticalCenter
100100 }
101101 Row {
102− CheckBox {
103− id: unlockedCheckBox
102+ Label {
103+ text: "Entered:"
104104 }
105105 Label {
106− text: "Unlocked signal"
107− anchors.verticalCenter: parent.verticalCenter
106+ id: enteredLabel
108107 }
109108 }
110109 Button {
@@ -176,16 +175,16 @@ Rectangle {
176175
177176 function test_unlock_data() {
178177 return [
179− {tag: "numeric", alphanumeric: false, username: "has-pin", password: "1234", unlockedSignal: true, pinLength: 4},
180− {tag: "alphanumeric", alphanumeric: true, username: "has-password", password: "password", unlockedSignal: true, pinLength: -1},
181− {tag: "numeric (wrong)", alphanumeric: false, username: "has-pin", password: "4321", unlockedSignal: false, pinLength: 4},
182− {tag: "alphanumeric (wrong)", alphanumeric: true, username: "has-password", password: "drowssap", unlockedSignal: false, pinLength: -1},
183− {tag: "flexible length", alphanumeric: false, username: "has-pin", password: "1234", unlockedSignal: true, pinLength: -1},
178+ {tag: "numeric", alphanumeric: false, username: "has-pin", password: "1234", pinLength: 4},
179+ {tag: "alphanumeric", alphanumeric: true, username: "has-password", password: "password", pinLength: -1},
180+ {tag: "numeric (wrong)", alphanumeric: false, username: "has-pin", password: "4321", pinLength: 4},
181+ {tag: "alphanumeric (wrong)", alphanumeric: true, username: "has-password", password: "drowssap", pinLength: -1},
182+ {tag: "flexible length", alphanumeric: false, username: "has-pin", password: "1234", pinLength: -1},
184183 ]
185184 }
186185
187186 function test_unlock(data) {
188− unlockedCheckBox.checked = false
187+ enteredLabel.text = ""
189188 pinLengthTextField.text = data.pinLength
190189 LightDM.Greeter.authenticate(data.username)
191190 waitForRendering(lockscreen)
@@ -206,14 +205,43 @@ Rectangle {
206205 mouseClick(pinPadButtonErase, units.gu(1), units.gu(1));
207206 }
208207 }
208+ tryCompare(enteredLabel, "text", data.password)
209+ }
210+
211+ function test_clear_data() {
212+ return [
213+ {tag: "animated PIN", animation: true, alphanumeric: false},
214+ {tag: "not animated PIN", animation: false, alphanumeric: false},
215+ {tag: "animated passphrase", animation: true, alphanumeric: true},
216+ {tag: "not animated passphrase", animation: false, alphanumeric: true}
217+ ];
218+ }
219+
220+ function test_clear(data) {
221+ pinPadCheckBox.checked = data.alphanumeric
222+ waitForRendering(lockscreen)
209223
210− tryCompare(unlockedCheckBox, "checked", data.unlockedSignal)
211− if (!data.unlockedSignal) {
212− // make sure the input is cleared on wrong input
213− tryCompareFunction(function() {return inputField.text.length == 0}, true)
224+ var inputField = findChild(lockscreen, "pinentryField")
225+ if (data.alphanumeric) {
226+ mouseClick(inputField, units.gu(1), units.gu(1))
227+ typeString("1")
214228 } else {
215− tryCompareFunction(function() {return inputField.text.length > 0}, true)
229+ var button = findChild(lockscreen, "pinPadButton1")
230+ mouseClick(button, units.gu(1), units.gu(1))
216231 }
232+
233+ var animation = findInvisibleChild(lockscreen, "wrongPasswordAnimation")
234+
235+ tryCompare(inputField, "text", "1")
236+
237+ lockscreen.clear(data.animation)
238+ tryCompare(inputField, "text", "")
239+
240+ wait(0) // Trigger event loop to make sure the animation would start running
241+ compare(animation.running, data.animation)
242+
243+ // wait for animation to finish to not disturb other tests
244+ tryCompare(animation, "running", false)
217245 }
218246
219247 function test_backspace_data() {
@@ -224,7 +252,7 @@ Rectangle {
224252 }
225253
226254 function test_backspace(data) {
227− LightDM.Greeter.authenticate("has-pin");
255+ pinPadCheckBox.checked = false
228256 pinLengthTextField.text = data.pinLength
229257 waitForRendering(lockscreen);
230258
tests/qmltests/Panel/tst_Panel.qml+13−4
@@ -48,9 +48,12 @@ Item {
4848
4949 function get_window_data() {
5050 return [
51− {tag: "pinned", fullscreenFlag: false },
52− {tag: "fullscreen", fullscreenFlag: true }
53− ]}
51+ {tag: "pinned", fullscreenFlag: false, alreadyOpen: false },
52+ {tag: "fullscreen", fullscreenFlag: true, alreadyOpen: false },
53+ {tag: "pinned-alreadyOpen", fullscreenFlag: false, alreadyOpen: true },
54+ {tag: "fullscreen-alreadyOpen", fullscreenFlag: true, alreadyOpen: true }
55+ ];
56+ }
5457
5558 function init() {
5659 searchClicked = false;
@@ -134,6 +137,10 @@ Item {
134137 // expose more of the panel, binding it to the selected indicator and opening it's menu.
135138 function test_drag_show(data) {
136139 panel.fullscreenMode = data.fullscreenFlag;
140+ if (data.alreadyOpen) {
141+ panel.indicators.show();
142+ tryCompare(panel.indicators, "fullyOpened", true);
143+ }
137144
138145 var indicatorRow = findChild(panel.indicators, "indicatorRow");
139146 verify(indicatorRow != undefined);
@@ -185,7 +192,9 @@ Item {
185192 compare(menuContent.currentMenuIndex, i, "Menu conetent should be enabled for item at position " + i);
186193
187194 // init for next indicatorItem
188− init();
195+ if (!data.alreadyOpen) {
196+ init();
197+ }
189198 }
190199 }
191200
tests/utils/modules/Unity/Test/UnityTestCase.qml+2
@@ -214,6 +214,8 @@ TestCase {
214214
215215 // speed is in pixels/second
216216 function touchFlick(item, x, y, toX, toY, beginTouch, endTouch, speed, iterations) {
217+ // Make sure the item is rendered
218+ waitForRendering(item);
217219
218220 // Default to true for beginTouch if not present
219221 beginTouch = (beginTouch !== undefined) ? beginTouch : true